diff --git a/build.sh b/build.sh index b60745111..6df27847e 100755 --- a/build.sh +++ b/build.sh @@ -93,7 +93,7 @@ mkdir $wp_plugin_dir rsync -axz --exclude='vendor/bin/phpc*' --exclude='vendor/squizlabs' --exclude='vendor/wimg' \ --exclude='vendor/respect/validation/.git' --exclude='vendor/symfony/polyfill-mbstring/.git' \ --exclude='vendor/respect/validation/docs' --exclude='vendor/respect/validation/tests' \ - --exclude='pdf-viewer/pdfjs-dist/web/compressed.tracemonkey-pldi-09.pdf' \ + --exclude='views/libs/pdf-viewer/pdfjs-dist/web/compressed.tracemonkey-pldi-09.pdf' \ --exclude='vendor/tecnickcom/tcpdf/fonts' \ --exclude='vendor/smalot/pdfparser/src/Smalot/PdfParser/Tests/' \ --exclude='vendor/tecnickcom/tcpdf/examples' \ diff --git a/src/classes/class-tainacan-embed.php b/src/classes/class-tainacan-embed.php index 9888c199f..acfd63196 100644 --- a/src/classes/class-tainacan-embed.php +++ b/src/classes/class-tainacan-embed.php @@ -77,7 +77,7 @@ class Embed { public function pdf_embed_handler($matches, $attr, $url, $rawattr) { global $TAINACAN_BASE_URL; - $viewer_url = $TAINACAN_BASE_URL . '/views/libs/pdf-viewer/pdf-viewer.html?file=' . $url; + $viewer_url = $TAINACAN_BASE_URL . '/views/libs/pdf-viewer/pdfjs-dist/web/viewer.html?file=' . $url; //$viewer_url = $TAINACAN_BASE_URL . '/assets/pdfjs-dist/web/viewer.html?file=' . $url; $defaults = array( diff --git a/src/views/libs/pdf-viewer/pdf-viewer.html b/src/views/libs/pdf-viewer/pdf-viewer.html deleted file mode 100644 index f5867fc45..000000000 --- a/src/views/libs/pdf-viewer/pdf-viewer.html +++ /dev/null @@ -1,359 +0,0 @@ - - - - - - - - - PDF.js viewer - - - - - - - - - - - - - - - - -
- -
-
-
- - - -
-
-
-
-
- - -
-
- -
- - - - -
-
-
-
- -
- -
- -
- -
- - -
-
- - - - - - - - - Current View - - -
- - -
-
-
- -
- -
- - - -
-
-
-
-
-
-
-
-
-
- - - - - - - - -
-
-
- - -
- - - -
-
- - - diff --git a/src/views/libs/pdf-viewer/pdf-viewer.js b/src/views/libs/pdf-viewer/pdf-viewer.js deleted file mode 100644 index 75c97bfa5..000000000 --- a/src/views/libs/pdf-viewer/pdf-viewer.js +++ /dev/null @@ -1,10189 +0,0 @@ -/* Copyright 2017 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. - */ - -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 33); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -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; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _pdfjsLib = __webpack_require__(1); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var CSS_UNITS = 96.0 / 72.0; -var DEFAULT_SCALE_VALUE = 'auto'; -var DEFAULT_SCALE = 1.0; -var MIN_SCALE = 0.25; -var MAX_SCALE = 10.0; -var UNKNOWN_SCALE = 0; -var MAX_AUTO_SCALE = 1.25; -var SCROLLBAR_PADDING = 40; -var VERTICAL_PADDING = 5; -var RendererType = { - CANVAS: 'canvas', - SVG: 'svg' -}; -function formatL10nValue(text, args) { - if (!args) { - return text; - } - return text.replace(/\{\{\s*(\w+)\s*\}\}/g, function (all, name) { - return name in args ? args[name] : '{{' + name + '}}'; - }); -} -var NullL10n = { - get: function get(property, args, fallback) { - return Promise.resolve(formatL10nValue(fallback, args)); - }, - translate: function translate(element) { - return Promise.resolve(); - } -}; -_pdfjsLib.PDFJS.disableFullscreen = _pdfjsLib.PDFJS.disableFullscreen === undefined ? false : _pdfjsLib.PDFJS.disableFullscreen; -_pdfjsLib.PDFJS.useOnlyCssZoom = _pdfjsLib.PDFJS.useOnlyCssZoom === undefined ? false : _pdfjsLib.PDFJS.useOnlyCssZoom; -_pdfjsLib.PDFJS.maxCanvasPixels = _pdfjsLib.PDFJS.maxCanvasPixels === undefined ? 16777216 : _pdfjsLib.PDFJS.maxCanvasPixels; -_pdfjsLib.PDFJS.disableHistory = _pdfjsLib.PDFJS.disableHistory === undefined ? false : _pdfjsLib.PDFJS.disableHistory; -_pdfjsLib.PDFJS.disableTextLayer = _pdfjsLib.PDFJS.disableTextLayer === undefined ? false : _pdfjsLib.PDFJS.disableTextLayer; -_pdfjsLib.PDFJS.ignoreCurrentPositionOnZoom = _pdfjsLib.PDFJS.ignoreCurrentPositionOnZoom === undefined ? false : _pdfjsLib.PDFJS.ignoreCurrentPositionOnZoom; -{ - _pdfjsLib.PDFJS.locale = _pdfjsLib.PDFJS.locale === undefined && typeof navigator !== 'undefined' ? navigator.language : _pdfjsLib.PDFJS.locale; -} -function getOutputScale(ctx) { - var devicePixelRatio = window.devicePixelRatio || 1; - var backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1; - var pixelRatio = devicePixelRatio / backingStoreRatio; - return { - sx: pixelRatio, - sy: pixelRatio, - scaled: pixelRatio !== 1 - }; -} -function scrollIntoView(element, spot) { - var skipOverflowHiddenElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var parent = element.offsetParent; - if (!parent) { - console.error('offsetParent is not set -- cannot scroll'); - return; - } - var offsetY = element.offsetTop + element.clientTop; - var offsetX = element.offsetLeft + element.clientLeft; - while (parent.clientHeight === parent.scrollHeight || skipOverflowHiddenElements && getComputedStyle(parent).overflow === 'hidden') { - if (parent.dataset._scaleY) { - offsetY /= parent.dataset._scaleY; - offsetX /= parent.dataset._scaleX; - } - offsetY += parent.offsetTop; - offsetX += parent.offsetLeft; - parent = parent.offsetParent; - if (!parent) { - return; - } - } - if (spot) { - if (spot.top !== undefined) { - offsetY += spot.top; - } - if (spot.left !== undefined) { - offsetX += spot.left; - parent.scrollLeft = offsetX; - } - } - parent.scrollTop = offsetY; -} -function watchScroll(viewAreaElement, callback) { - var debounceScroll = function debounceScroll(evt) { - if (rAF) { - return; - } - rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { - rAF = null; - var currentY = viewAreaElement.scrollTop; - var lastY = state.lastY; - if (currentY !== lastY) { - state.down = currentY > lastY; - } - state.lastY = currentY; - callback(state); - }); - }; - var state = { - down: true, - lastY: viewAreaElement.scrollTop, - _eventHandler: debounceScroll - }; - var rAF = null; - viewAreaElement.addEventListener('scroll', debounceScroll, true); - return state; -} -function parseQueryString(query) { - var parts = query.split('&'); - var params = Object.create(null); - for (var i = 0, ii = parts.length; i < ii; ++i) { - var param = parts[i].split('='); - var key = param[0].toLowerCase(); - var value = param.length > 1 ? param[1] : null; - params[decodeURIComponent(key)] = decodeURIComponent(value); - } - return params; -} -function binarySearchFirstItem(items, condition) { - var minIndex = 0; - var maxIndex = items.length - 1; - if (items.length === 0 || !condition(items[maxIndex])) { - return items.length; - } - if (condition(items[minIndex])) { - return minIndex; - } - while (minIndex < maxIndex) { - var currentIndex = minIndex + maxIndex >> 1; - var currentItem = items[currentIndex]; - if (condition(currentItem)) { - maxIndex = currentIndex; - } else { - minIndex = currentIndex + 1; - } - } - return minIndex; -} -function approximateFraction(x) { - if (Math.floor(x) === x) { - return [x, 1]; - } - var xinv = 1 / x; - var limit = 8; - if (xinv > limit) { - return [1, limit]; - } else if (Math.floor(xinv) === xinv) { - return [1, xinv]; - } - var x_ = x > 1 ? xinv : x; - var a = 0, - b = 1, - c = 1, - d = 1; - while (true) { - var p = a + c, - q = b + d; - if (q > limit) { - break; - } - if (x_ <= p / q) { - c = p; - d = q; - } else { - a = p; - b = q; - } - } - var result = void 0; - if (x_ - a / b < c / d - x_) { - result = x_ === x ? [a, b] : [b, a]; - } else { - result = x_ === x ? [c, d] : [d, c]; - } - return result; -} -function roundToDivide(x, div) { - var r = x % div; - return r === 0 ? x : Math.round(x - r + div); -} -function getVisibleElements(scrollEl, views) { - var sortByVisibility = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var top = scrollEl.scrollTop, - bottom = top + scrollEl.clientHeight; - var left = scrollEl.scrollLeft, - right = left + scrollEl.clientWidth; - function isElementBottomBelowViewTop(view) { - var element = view.div; - var elementBottom = element.offsetTop + element.clientTop + element.clientHeight; - return elementBottom > top; - } - var visible = [], - view = void 0, - element = void 0; - var currentHeight = void 0, - viewHeight = void 0, - hiddenHeight = void 0, - percentHeight = void 0; - var currentWidth = void 0, - viewWidth = void 0; - var firstVisibleElementInd = views.length === 0 ? 0 : binarySearchFirstItem(views, isElementBottomBelowViewTop); - for (var i = firstVisibleElementInd, ii = views.length; i < ii; i++) { - view = views[i]; - element = view.div; - currentHeight = element.offsetTop + element.clientTop; - viewHeight = element.clientHeight; - if (currentHeight > bottom) { - break; - } - currentWidth = element.offsetLeft + element.clientLeft; - viewWidth = element.clientWidth; - if (currentWidth + viewWidth < left || currentWidth > right) { - continue; - } - hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, currentHeight + viewHeight - bottom); - percentHeight = (viewHeight - hiddenHeight) * 100 / viewHeight | 0; - visible.push({ - id: view.id, - x: currentWidth, - y: currentHeight, - view: view, - percent: percentHeight - }); - } - var first = visible[0]; - var last = visible[visible.length - 1]; - if (sortByVisibility) { - visible.sort(function (a, b) { - var pc = a.percent - b.percent; - if (Math.abs(pc) > 0.001) { - return -pc; - } - return a.id - b.id; - }); - } - return { - first: first, - last: last, - views: visible - }; -} -function noContextMenuHandler(evt) { - evt.preventDefault(); -} -function isDataSchema(url) { - var i = 0, - ii = url.length; - while (i < ii && url[i].trim() === '') { - i++; - } - return url.substr(i, 5).toLowerCase() === 'data:'; -} -function getPDFFileNameFromURL(url) { - var defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'document.pdf'; - - if (isDataSchema(url)) { - console.warn('getPDFFileNameFromURL: ' + 'ignoring "data:" URL for performance reasons.'); - return defaultFilename; - } - var reURI = /^(?:(?:[^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; - var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i; - var splitURI = reURI.exec(url); - var suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]); - if (suggestedFilename) { - suggestedFilename = suggestedFilename[0]; - if (suggestedFilename.indexOf('%') !== -1) { - try { - suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0]; - } catch (ex) {} - } - } - return suggestedFilename || defaultFilename; -} -function normalizeWheelEventDelta(evt) { - var delta = Math.sqrt(evt.deltaX * evt.deltaX + evt.deltaY * evt.deltaY); - var angle = Math.atan2(evt.deltaY, evt.deltaX); - if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) { - delta = -delta; - } - var MOUSE_DOM_DELTA_PIXEL_MODE = 0; - var MOUSE_DOM_DELTA_LINE_MODE = 1; - var MOUSE_PIXELS_PER_LINE = 30; - var MOUSE_LINES_PER_PAGE = 30; - if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) { - delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; - } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) { - delta /= MOUSE_LINES_PER_PAGE; - } - return delta; -} -function cloneObj(obj) { - var result = Object.create(null); - for (var i in obj) { - if (Object.prototype.hasOwnProperty.call(obj, i)) { - result[i] = obj[i]; - } - } - return result; -} -var animationStarted = new Promise(function (resolve) { - window.requestAnimationFrame(resolve); -}); -var mozL10n = void 0; -var localized = Promise.resolve(); - -var EventBus = function () { - function EventBus() { - _classCallCheck(this, EventBus); - - this._listeners = Object.create(null); - } - - _createClass(EventBus, [{ - key: 'on', - value: function on(eventName, listener) { - var eventListeners = this._listeners[eventName]; - if (!eventListeners) { - eventListeners = []; - this._listeners[eventName] = eventListeners; - } - eventListeners.push(listener); - } - }, { - key: 'off', - value: function off(eventName, listener) { - var eventListeners = this._listeners[eventName]; - var i = void 0; - if (!eventListeners || (i = eventListeners.indexOf(listener)) < 0) { - return; - } - eventListeners.splice(i, 1); - } - }, { - key: 'dispatch', - value: function dispatch(eventName) { - var eventListeners = this._listeners[eventName]; - if (!eventListeners || eventListeners.length === 0) { - return; - } - var args = Array.prototype.slice.call(arguments, 1); - eventListeners.slice(0).forEach(function (listener) { - listener.apply(null, args); - }); - } - }]); - - return EventBus; -}(); - -function clamp(v, min, max) { - return Math.min(Math.max(v, min), max); -} - -var ProgressBar = function () { - function ProgressBar(id) { - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - height = _ref.height, - width = _ref.width, - units = _ref.units; - - _classCallCheck(this, ProgressBar); - - this.visible = true; - this.div = document.querySelector(id + ' .progress'); - this.bar = this.div.parentNode; - this.height = height || 100; - this.width = width || 100; - this.units = units || '%'; - this.div.style.height = this.height + this.units; - this.percent = 0; - } - - _createClass(ProgressBar, [{ - key: '_updateBar', - value: function _updateBar() { - if (this._indeterminate) { - this.div.classList.add('indeterminate'); - this.div.style.width = this.width + this.units; - return; - } - this.div.classList.remove('indeterminate'); - var progressSize = this.width * this._percent / 100; - this.div.style.width = progressSize + this.units; - } - }, { - key: 'setWidth', - value: function setWidth(viewer) { - if (!viewer) { - return; - } - var container = viewer.parentNode; - var scrollbarWidth = container.offsetWidth - viewer.offsetWidth; - if (scrollbarWidth > 0) { - this.bar.setAttribute('style', 'width: calc(100% - ' + scrollbarWidth + 'px);'); - } - } - }, { - key: 'hide', - value: function hide() { - if (!this.visible) { - return; - } - this.visible = false; - this.bar.classList.add('hidden'); - document.body.classList.remove('loadingInProgress'); - } - }, { - key: 'show', - value: function show() { - if (this.visible) { - return; - } - this.visible = true; - document.body.classList.add('loadingInProgress'); - this.bar.classList.remove('hidden'); - } - }, { - key: 'percent', - get: function get() { - return this._percent; - }, - set: function set(val) { - this._indeterminate = isNaN(val); - this._percent = clamp(val, 0, 100); - this._updateBar(); - } - }]); - - return ProgressBar; -}(); - -exports.CSS_UNITS = CSS_UNITS; -exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE; -exports.DEFAULT_SCALE = DEFAULT_SCALE; -exports.MIN_SCALE = MIN_SCALE; -exports.MAX_SCALE = MAX_SCALE; -exports.UNKNOWN_SCALE = UNKNOWN_SCALE; -exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE; -exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING; -exports.VERTICAL_PADDING = VERTICAL_PADDING; -exports.cloneObj = cloneObj; -exports.RendererType = RendererType; -exports.mozL10n = mozL10n; -exports.NullL10n = NullL10n; -exports.EventBus = EventBus; -exports.ProgressBar = ProgressBar; -exports.getPDFFileNameFromURL = getPDFFileNameFromURL; -exports.noContextMenuHandler = noContextMenuHandler; -exports.parseQueryString = parseQueryString; -exports.getVisibleElements = getVisibleElements; -exports.roundToDivide = roundToDivide; -exports.approximateFraction = approximateFraction; -exports.getOutputScale = getOutputScale; -exports.scrollIntoView = scrollIntoView; -exports.watchScroll = watchScroll; -exports.binarySearchFirstItem = binarySearchFirstItem; -exports.normalizeWheelEventDelta = normalizeWheelEventDelta; -exports.animationStarted = animationStarted; -exports.localized = localized; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var pdfjsLib; -if (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) { - pdfjsLib = window['pdfjs-dist/build/pdf']; -} else { - pdfjsLib = require('../build/pdf.js'); -} -module.exports = pdfjsLib; - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getGlobalEventBus = exports.attachDOMEventsToEventBus = undefined; - -var _ui_utils = __webpack_require__(0); - -function attachDOMEventsToEventBus(eventBus) { - eventBus.on('documentload', function () { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('documentload', true, true, {}); - window.dispatchEvent(event); - }); - eventBus.on('pagerendered', function (evt) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagerendered', true, true, { - pageNumber: evt.pageNumber, - cssTransform: evt.cssTransform - }); - evt.source.div.dispatchEvent(event); - }); - eventBus.on('textlayerrendered', function (evt) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('textlayerrendered', true, true, { pageNumber: evt.pageNumber }); - evt.source.textLayerDiv.dispatchEvent(event); - }); - eventBus.on('pagechange', function (evt) { - var event = document.createEvent('UIEvents'); - event.initUIEvent('pagechange', true, true, window, 0); - event.pageNumber = evt.pageNumber; - evt.source.container.dispatchEvent(event); - }); - eventBus.on('pagesinit', function (evt) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagesinit', true, true, null); - evt.source.container.dispatchEvent(event); - }); - eventBus.on('pagesloaded', function (evt) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagesloaded', true, true, { pagesCount: evt.pagesCount }); - evt.source.container.dispatchEvent(event); - }); - eventBus.on('scalechange', function (evt) { - var event = document.createEvent('UIEvents'); - event.initUIEvent('scalechange', true, true, window, 0); - event.scale = evt.scale; - event.presetValue = evt.presetValue; - evt.source.container.dispatchEvent(event); - }); - eventBus.on('updateviewarea', function (evt) { - var event = document.createEvent('UIEvents'); - event.initUIEvent('updateviewarea', true, true, window, 0); - event.location = evt.location; - evt.source.container.dispatchEvent(event); - }); - eventBus.on('find', function (evt) { - if (evt.source === window) { - return; - } - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('find' + evt.type, true, true, { - query: evt.query, - phraseSearch: evt.phraseSearch, - caseSensitive: evt.caseSensitive, - highlightAll: evt.highlightAll, - findPrevious: evt.findPrevious - }); - window.dispatchEvent(event); - }); - eventBus.on('attachmentsloaded', function (evt) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('attachmentsloaded', true, true, { attachmentsCount: evt.attachmentsCount }); - evt.source.container.dispatchEvent(event); - }); - eventBus.on('sidebarviewchanged', function (evt) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('sidebarviewchanged', true, true, { view: evt.view }); - evt.source.outerContainer.dispatchEvent(event); - }); - eventBus.on('pagemode', function (evt) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagemode', true, true, { mode: evt.mode }); - evt.source.pdfViewer.container.dispatchEvent(event); - }); - eventBus.on('namedaction', function (evt) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('namedaction', true, true, { action: evt.action }); - evt.source.pdfViewer.container.dispatchEvent(event); - }); - eventBus.on('presentationmodechanged', function (evt) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('presentationmodechanged', true, true, { - active: evt.active, - switchInProgress: evt.switchInProgress - }); - window.dispatchEvent(event); - }); - eventBus.on('outlineloaded', function (evt) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('outlineloaded', true, true, { outlineCount: evt.outlineCount }); - evt.source.container.dispatchEvent(event); - }); -} -var globalEventBus = null; -function getGlobalEventBus() { - if (globalEventBus) { - return globalEventBus; - } - globalEventBus = new _ui_utils.EventBus(); - attachDOMEventsToEventBus(globalEventBus); - return globalEventBus; -} -exports.attachDOMEventsToEventBus = attachDOMEventsToEventBus; -exports.getGlobalEventBus = getGlobalEventBus; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var CLEANUP_TIMEOUT = 30000; -var RenderingStates = { - INITIAL: 0, - RUNNING: 1, - PAUSED: 2, - FINISHED: 3 -}; - -var PDFRenderingQueue = function () { - function PDFRenderingQueue() { - _classCallCheck(this, PDFRenderingQueue); - - this.pdfViewer = null; - this.pdfThumbnailViewer = null; - this.onIdle = null; - this.highestPriorityPage = null; - this.idleTimeout = null; - this.printing = false; - this.isThumbnailViewEnabled = false; - } - - _createClass(PDFRenderingQueue, [{ - key: "setViewer", - value: function setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - } - }, { - key: "setThumbnailViewer", - value: function setThumbnailViewer(pdfThumbnailViewer) { - this.pdfThumbnailViewer = pdfThumbnailViewer; - } - }, { - key: "isHighestPriority", - value: function isHighestPriority(view) { - return this.highestPriorityPage === view.renderingId; - } - }, { - key: "renderHighestPriority", - value: function renderHighestPriority(currentlyVisiblePages) { - if (this.idleTimeout) { - clearTimeout(this.idleTimeout); - this.idleTimeout = null; - } - if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { - return; - } - if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) { - if (this.pdfThumbnailViewer.forceRendering()) { - return; - } - } - if (this.printing) { - return; - } - if (this.onIdle) { - this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); - } - } - }, { - key: "getHighestPriority", - value: function getHighestPriority(visible, views, scrolledDown) { - var visibleViews = visible.views; - var numVisible = visibleViews.length; - if (numVisible === 0) { - return false; - } - for (var i = 0; i < numVisible; ++i) { - var view = visibleViews[i].view; - if (!this.isViewFinished(view)) { - return view; - } - } - if (scrolledDown) { - var nextPageIndex = visible.last.id; - if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) { - return views[nextPageIndex]; - } - } else { - var previousPageIndex = visible.first.id - 2; - if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) { - return views[previousPageIndex]; - } - } - return null; - } - }, { - key: "isViewFinished", - value: function isViewFinished(view) { - return view.renderingState === RenderingStates.FINISHED; - } - }, { - key: "renderView", - value: function renderView(view) { - var _this = this; - - switch (view.renderingState) { - case RenderingStates.FINISHED: - return false; - case RenderingStates.PAUSED: - this.highestPriorityPage = view.renderingId; - view.resume(); - break; - case RenderingStates.RUNNING: - this.highestPriorityPage = view.renderingId; - break; - case RenderingStates.INITIAL: - this.highestPriorityPage = view.renderingId; - var continueRendering = function continueRendering() { - _this.renderHighestPriority(); - }; - view.draw().then(continueRendering, continueRendering); - break; - } - return true; - } - }]); - - return PDFRenderingQueue; -}(); - -exports.RenderingStates = RenderingStates; -exports.PDFRenderingQueue = PDFRenderingQueue; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFPrintServiceFactory = exports.DefaultExternalServices = exports.PDFViewerApplication = undefined; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _ui_utils = __webpack_require__(0); - -var _pdfjsLib = __webpack_require__(1); - -var _pdf_cursor_tools = __webpack_require__(6); - -var _pdf_rendering_queue = __webpack_require__(3); - -var _pdf_sidebar = __webpack_require__(24); - -var _pdf_viewer = __webpack_require__(27); - -var _dom_events = __webpack_require__(2); - -var _overlay_manager = __webpack_require__(15); - -var _password_prompt = __webpack_require__(16); - -var _pdf_attachment_viewer = __webpack_require__(17); - -var _pdf_document_properties = __webpack_require__(18); - -var _pdf_find_bar = __webpack_require__(19); - -var _pdf_find_controller = __webpack_require__(7); - -var _pdf_history = __webpack_require__(20); - -var _pdf_link_service = __webpack_require__(5); - -var _pdf_outline_viewer = __webpack_require__(21); - -var _pdf_presentation_mode = __webpack_require__(23); - -var _pdf_thumbnail_viewer = __webpack_require__(26); - -var _secondary_toolbar = __webpack_require__(29); - -var _toolbar = __webpack_require__(31); - -var _view_history = __webpack_require__(32); - -var DEFAULT_SCALE_DELTA = 1.1; -var DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; -function configure(PDFJS) { - PDFJS.imageResourcesPath = 'pdfjs-dist/web/images/'; - PDFJS.workerSrc = 'pdfjs-dist/build/pdf.worker.js'; - PDFJS.cMapUrl = 'pdfjs-dist/web/cmaps/'; - PDFJS.cMapPacked = true; -} -var DefaultExternalServices = { - updateFindControlState: function updateFindControlState(data) {}, - initPassiveLoading: function initPassiveLoading(callbacks) {}, - fallback: function fallback(data, callback) {}, - reportTelemetry: function reportTelemetry(data) {}, - createDownloadManager: function createDownloadManager() { - throw new Error('Not implemented: createDownloadManager'); - }, - createPreferences: function createPreferences() { - throw new Error('Not implemented: createPreferences'); - }, - createL10n: function createL10n() { - throw new Error('Not implemented: createL10n'); - }, - - supportsIntegratedFind: false, - supportsDocumentFonts: true, - supportsDocumentColors: true, - supportedMouseWheelZoomModifierKeys: { - ctrlKey: true, - metaKey: true - } -}; -var PDFViewerApplication = { - initialBookmark: document.location.hash.substring(1), - initialDestination: null, - initialized: false, - fellback: false, - appConfig: null, - pdfDocument: null, - pdfLoadingTask: null, - printService: null, - pdfViewer: null, - pdfThumbnailViewer: null, - pdfRenderingQueue: null, - pdfPresentationMode: null, - pdfDocumentProperties: null, - pdfLinkService: null, - pdfHistory: null, - pdfSidebar: null, - pdfOutlineViewer: null, - pdfAttachmentViewer: null, - pdfCursorTools: null, - store: null, - downloadManager: null, - overlayManager: null, - preferences: null, - toolbar: null, - secondaryToolbar: null, - eventBus: null, - l10n: null, - isInitialViewSet: false, - downloadComplete: false, - viewerPrefs: { - sidebarViewOnLoad: _pdf_sidebar.SidebarView.NONE, - pdfBugEnabled: false, - showPreviousViewOnLoad: true, - defaultZoomValue: '', - disablePageMode: false, - disablePageLabels: false, - renderer: 'canvas', - enhanceTextSelection: false, - renderInteractiveForms: false, - enablePrintAutoRotate: false - }, - isViewerEmbedded: window.parent !== window, - url: '', - baseUrl: '', - externalServices: DefaultExternalServices, - _boundEvents: {}, - initialize: function initialize(appConfig) { - var _this = this; - - this.preferences = this.externalServices.createPreferences(); - configure(_pdfjsLib.PDFJS); - this.appConfig = appConfig; - return this._readPreferences().then(function () { - return _this._initializeL10n(); - }).then(function () { - return _this._initializeViewerComponents(); - }).then(function () { - _this.bindEvents(); - _this.bindWindowEvents(); - var appContainer = appConfig.appContainer || document.documentElement; - _this.l10n.translate(appContainer).then(function () { - _this.eventBus.dispatch('localized'); - }); - if (_this.isViewerEmbedded && !_pdfjsLib.PDFJS.isExternalLinkTargetSet()) { - _pdfjsLib.PDFJS.externalLinkTarget = _pdfjsLib.PDFJS.LinkTarget.TOP; - } - _this.initialized = true; - }); - }, - _readPreferences: function _readPreferences() { - var preferences = this.preferences, - viewerPrefs = this.viewerPrefs; - - return Promise.all([preferences.get('enableWebGL').then(function resolved(value) { - _pdfjsLib.PDFJS.disableWebGL = !value; - }), preferences.get('sidebarViewOnLoad').then(function resolved(value) { - viewerPrefs['sidebarViewOnLoad'] = value; - }), preferences.get('pdfBugEnabled').then(function resolved(value) { - viewerPrefs['pdfBugEnabled'] = value; - }), preferences.get('showPreviousViewOnLoad').then(function resolved(value) { - viewerPrefs['showPreviousViewOnLoad'] = value; - }), preferences.get('defaultZoomValue').then(function resolved(value) { - viewerPrefs['defaultZoomValue'] = value; - }), preferences.get('enhanceTextSelection').then(function resolved(value) { - viewerPrefs['enhanceTextSelection'] = value; - }), preferences.get('disableTextLayer').then(function resolved(value) { - if (_pdfjsLib.PDFJS.disableTextLayer === true) { - return; - } - _pdfjsLib.PDFJS.disableTextLayer = value; - }), preferences.get('disableRange').then(function resolved(value) { - if (_pdfjsLib.PDFJS.disableRange === true) { - return; - } - _pdfjsLib.PDFJS.disableRange = value; - }), preferences.get('disableStream').then(function resolved(value) { - if (_pdfjsLib.PDFJS.disableStream === true) { - return; - } - _pdfjsLib.PDFJS.disableStream = value; - }), preferences.get('disableAutoFetch').then(function resolved(value) { - _pdfjsLib.PDFJS.disableAutoFetch = value; - }), preferences.get('disableFontFace').then(function resolved(value) { - if (_pdfjsLib.PDFJS.disableFontFace === true) { - return; - } - _pdfjsLib.PDFJS.disableFontFace = value; - }), preferences.get('useOnlyCssZoom').then(function resolved(value) { - _pdfjsLib.PDFJS.useOnlyCssZoom = value; - }), preferences.get('externalLinkTarget').then(function resolved(value) { - if (_pdfjsLib.PDFJS.isExternalLinkTargetSet()) { - return; - } - _pdfjsLib.PDFJS.externalLinkTarget = value; - }), preferences.get('renderer').then(function resolved(value) { - viewerPrefs['renderer'] = value; - }), preferences.get('renderInteractiveForms').then(function resolved(value) { - viewerPrefs['renderInteractiveForms'] = value; - }), preferences.get('disablePageMode').then(function resolved(value) { - viewerPrefs['disablePageMode'] = value; - }), preferences.get('disablePageLabels').then(function resolved(value) { - viewerPrefs['disablePageLabels'] = value; - }), preferences.get('enablePrintAutoRotate').then(function resolved(value) { - viewerPrefs['enablePrintAutoRotate'] = value; - })]).catch(function (reason) {}); - }, - _initializeL10n: function _initializeL10n() { - if (this.viewerPrefs['pdfBugEnabled']) { - var hash = document.location.hash.substring(1); - var hashParams = (0, _ui_utils.parseQueryString)(hash); - if ('locale' in hashParams) { - _pdfjsLib.PDFJS.locale = hashParams['locale']; - } - } - this.l10n = this.externalServices.createL10n(); - return this.l10n.getDirection().then(function (dir) { - document.getElementsByTagName('html')[0].dir = dir; - }); - }, - _initializeViewerComponents: function _initializeViewerComponents() { - var _this2 = this; - - var appConfig = this.appConfig; - return new Promise(function (resolve, reject) { - _this2.overlayManager = new _overlay_manager.OverlayManager(); - var eventBus = appConfig.eventBus || (0, _dom_events.getGlobalEventBus)(); - _this2.eventBus = eventBus; - var pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); - pdfRenderingQueue.onIdle = _this2.cleanup.bind(_this2); - _this2.pdfRenderingQueue = pdfRenderingQueue; - var pdfLinkService = new _pdf_link_service.PDFLinkService({ eventBus: eventBus }); - _this2.pdfLinkService = pdfLinkService; - var downloadManager = _this2.externalServices.createDownloadManager(); - _this2.downloadManager = downloadManager; - var container = appConfig.mainContainer; - var viewer = appConfig.viewerContainer; - _this2.pdfViewer = new _pdf_viewer.PDFViewer({ - container: container, - viewer: viewer, - eventBus: eventBus, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService, - downloadManager: downloadManager, - renderer: _this2.viewerPrefs['renderer'], - l10n: _this2.l10n, - enhanceTextSelection: _this2.viewerPrefs['enhanceTextSelection'], - renderInteractiveForms: _this2.viewerPrefs['renderInteractiveForms'], - enablePrintAutoRotate: _this2.viewerPrefs['enablePrintAutoRotate'] - }); - pdfRenderingQueue.setViewer(_this2.pdfViewer); - pdfLinkService.setViewer(_this2.pdfViewer); - var thumbnailContainer = appConfig.sidebar.thumbnailView; - _this2.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({ - container: thumbnailContainer, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService, - l10n: _this2.l10n - }); - pdfRenderingQueue.setThumbnailViewer(_this2.pdfThumbnailViewer); - _this2.pdfHistory = new _pdf_history.PDFHistory({ - linkService: pdfLinkService, - eventBus: eventBus - }); - pdfLinkService.setHistory(_this2.pdfHistory); - _this2.findController = new _pdf_find_controller.PDFFindController({ pdfViewer: _this2.pdfViewer }); - _this2.findController.onUpdateResultsCount = function (matchCount) { - if (_this2.supportsIntegratedFind) { - return; - } - _this2.findBar.updateResultsCount(matchCount); - }; - _this2.findController.onUpdateState = function (state, previous, matchCount) { - if (_this2.supportsIntegratedFind) { - _this2.externalServices.updateFindControlState({ - result: state, - findPrevious: previous - }); - } else { - _this2.findBar.updateUIState(state, previous, matchCount); - } - }; - _this2.pdfViewer.setFindController(_this2.findController); - var findBarConfig = Object.create(appConfig.findBar); - findBarConfig.findController = _this2.findController; - findBarConfig.eventBus = eventBus; - _this2.findBar = new _pdf_find_bar.PDFFindBar(findBarConfig, _this2.l10n); - _this2.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, _this2.overlayManager, _this2.l10n); - _this2.pdfCursorTools = new _pdf_cursor_tools.PDFCursorTools({ - container: container, - eventBus: eventBus, - preferences: _this2.preferences - }); - _this2.toolbar = new _toolbar.Toolbar(appConfig.toolbar, container, eventBus, _this2.l10n); - _this2.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus); - if (_this2.supportsFullscreen) { - _this2.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({ - container: container, - viewer: viewer, - pdfViewer: _this2.pdfViewer, - eventBus: eventBus, - contextMenuItems: appConfig.fullscreen - }); - } - _this2.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, _this2.overlayManager, _this2.l10n); - _this2.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({ - container: appConfig.sidebar.outlineView, - eventBus: eventBus, - linkService: pdfLinkService - }); - _this2.pdfAttachmentViewer = new _pdf_attachment_viewer.PDFAttachmentViewer({ - container: appConfig.sidebar.attachmentsView, - eventBus: eventBus, - downloadManager: downloadManager - }); - var sidebarConfig = Object.create(appConfig.sidebar); - sidebarConfig.pdfViewer = _this2.pdfViewer; - sidebarConfig.pdfThumbnailViewer = _this2.pdfThumbnailViewer; - sidebarConfig.pdfOutlineViewer = _this2.pdfOutlineViewer; - sidebarConfig.eventBus = eventBus; - _this2.pdfSidebar = new _pdf_sidebar.PDFSidebar(sidebarConfig, _this2.l10n); - _this2.pdfSidebar.onToggled = _this2.forceRendering.bind(_this2); - resolve(undefined); - }); - }, - run: function run(config) { - this.initialize(config).then(webViewerInitialized); - }, - zoomIn: function zoomIn(ticks) { - var newScale = this.pdfViewer.currentScale; - do { - newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.ceil(newScale * 10) / 10; - newScale = Math.min(_ui_utils.MAX_SCALE, newScale); - } while (--ticks > 0 && newScale < _ui_utils.MAX_SCALE); - this.pdfViewer.currentScaleValue = newScale; - }, - zoomOut: function zoomOut(ticks) { - var newScale = this.pdfViewer.currentScale; - do { - newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.floor(newScale * 10) / 10; - newScale = Math.max(_ui_utils.MIN_SCALE, newScale); - } while (--ticks > 0 && newScale > _ui_utils.MIN_SCALE); - this.pdfViewer.currentScaleValue = newScale; - }, - - get pagesCount() { - return this.pdfDocument ? this.pdfDocument.numPages : 0; - }, - get pageRotation() { - return this.pdfViewer.pagesRotation; - }, - set page(val) { - this.pdfViewer.currentPageNumber = val; - }, - get page() { - return this.pdfViewer.currentPageNumber; - }, - get printing() { - return !!this.printService; - }, - get supportsPrinting() { - return PDFPrintServiceFactory.instance.supportsPrinting; - }, - get supportsFullscreen() { - var support = void 0; - var doc = document.documentElement; - support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen || doc.msRequestFullscreen); - if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || document.webkitFullscreenEnabled === false || document.msFullscreenEnabled === false) { - support = false; - } - if (support && _pdfjsLib.PDFJS.disableFullscreen === true) { - support = false; - } - return (0, _pdfjsLib.shadow)(this, 'supportsFullscreen', support); - }, - get supportsIntegratedFind() { - return this.externalServices.supportsIntegratedFind; - }, - get supportsDocumentFonts() { - return this.externalServices.supportsDocumentFonts; - }, - get supportsDocumentColors() { - return this.externalServices.supportsDocumentColors; - }, - get loadingBar() { - var bar = new _ui_utils.ProgressBar('#loadingBar'); - return (0, _pdfjsLib.shadow)(this, 'loadingBar', bar); - }, - get supportedMouseWheelZoomModifierKeys() { - return this.externalServices.supportedMouseWheelZoomModifierKeys; - }, - initPassiveLoading: function initPassiveLoading() { - throw new Error('Not implemented: initPassiveLoading'); - }, - setTitleUsingUrl: function setTitleUsingUrl(url) { - this.url = url; - this.baseUrl = url.split('#')[0]; - var title = (0, _ui_utils.getPDFFileNameFromURL)(url, ''); - if (!title) { - try { - title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url; - } catch (ex) { - title = url; - } - } - this.setTitle(title); - }, - setTitle: function setTitle(title) { - if (this.isViewerEmbedded) { - return; - } - document.title = title; - }, - close: function close() { - var errorWrapper = this.appConfig.errorWrapper.container; - errorWrapper.setAttribute('hidden', 'true'); - if (!this.pdfLoadingTask) { - return Promise.resolve(); - } - var promise = this.pdfLoadingTask.destroy(); - this.pdfLoadingTask = null; - if (this.pdfDocument) { - this.pdfDocument = null; - this.pdfThumbnailViewer.setDocument(null); - this.pdfViewer.setDocument(null); - this.pdfLinkService.setDocument(null, null); - this.pdfDocumentProperties.setDocument(null, null); - } - this.store = null; - this.isInitialViewSet = false; - this.downloadComplete = false; - this.pdfSidebar.reset(); - this.pdfOutlineViewer.reset(); - this.pdfAttachmentViewer.reset(); - this.findController.reset(); - this.findBar.reset(); - this.toolbar.reset(); - this.secondaryToolbar.reset(); - if (typeof PDFBug !== 'undefined') { - PDFBug.cleanup(); - } - return promise; - }, - open: function open(file, args) { - var _this3 = this; - - if (arguments.length > 2 || typeof args === 'number') { - return Promise.reject(new Error('Call of open() with obsolete signature.')); - } - if (this.pdfLoadingTask) { - return this.close().then(function () { - _this3.preferences.reload(); - return _this3.open(file, args); - }); - } - var parameters = Object.create(null), - scale = void 0; - if (typeof file === 'string') { - this.setTitleUsingUrl(file); - parameters.url = file; - } else if (file && 'byteLength' in file) { - parameters.data = file; - } else if (file.url && file.originalUrl) { - this.setTitleUsingUrl(file.originalUrl); - parameters.url = file.url; - } - if (args) { - for (var prop in args) { - parameters[prop] = args[prop]; - } - if (args.scale) { - scale = args.scale; - } - if (args.length) { - this.pdfDocumentProperties.setFileSize(args.length); - } - } - var loadingTask = (0, _pdfjsLib.getDocument)(parameters); - this.pdfLoadingTask = loadingTask; - loadingTask.onPassword = function (updateCallback, reason) { - _this3.passwordPrompt.setUpdateCallback(updateCallback, reason); - _this3.passwordPrompt.open(); - }; - loadingTask.onProgress = function (_ref) { - var loaded = _ref.loaded, - total = _ref.total; - - _this3.progress(loaded / total); - }; - loadingTask.onUnsupportedFeature = this.fallback.bind(this); - return loadingTask.promise.then(function (pdfDocument) { - _this3.load(pdfDocument, scale); - }, function (exception) { - var message = exception && exception.message; - var loadingErrorMessage = void 0; - if (exception instanceof _pdfjsLib.InvalidPDFException) { - loadingErrorMessage = _this3.l10n.get('invalid_file_error', null, 'Invalid or corrupted PDF file.'); - } else if (exception instanceof _pdfjsLib.MissingPDFException) { - loadingErrorMessage = _this3.l10n.get('missing_file_error', null, 'Missing PDF file.'); - } else if (exception instanceof _pdfjsLib.UnexpectedResponseException) { - loadingErrorMessage = _this3.l10n.get('unexpected_response_error', null, 'Unexpected server response.'); - } else { - loadingErrorMessage = _this3.l10n.get('loading_error', null, 'An error occurred while loading the PDF.'); - } - return loadingErrorMessage.then(function (msg) { - _this3.error(msg, { message: message }); - throw new Error(msg); - }); - }); - }, - download: function download() { - var _this4 = this; - - function downloadByUrl() { - downloadManager.downloadUrl(url, filename); - } - var url = this.baseUrl; - var filename = (0, _ui_utils.getPDFFileNameFromURL)(this.url); - var downloadManager = this.downloadManager; - downloadManager.onerror = function (err) { - _this4.error('PDF failed to download: ' + err); - }; - if (!this.pdfDocument || !this.downloadComplete) { - downloadByUrl(); - return; - } - this.pdfDocument.getData().then(function (data) { - var blob = (0, _pdfjsLib.createBlob)(data, 'application/pdf'); - downloadManager.download(blob, url, filename); - }).catch(downloadByUrl); - }, - fallback: function fallback(featureId) {}, - error: function error(message, moreInfo) { - var moreInfoText = [this.l10n.get('error_version_info', { - version: _pdfjsLib.version || '?', - build: _pdfjsLib.build || '?' - }, 'PDF.js v{{version}} (build: {{build}})')]; - if (moreInfo) { - moreInfoText.push(this.l10n.get('error_message', { message: moreInfo.message }, 'Message: {{message}}')); - if (moreInfo.stack) { - moreInfoText.push(this.l10n.get('error_stack', { stack: moreInfo.stack }, 'Stack: {{stack}}')); - } else { - if (moreInfo.filename) { - moreInfoText.push(this.l10n.get('error_file', { file: moreInfo.filename }, 'File: {{file}}')); - } - if (moreInfo.lineNumber) { - moreInfoText.push(this.l10n.get('error_line', { line: moreInfo.lineNumber }, 'Line: {{line}}')); - } - } - } - var errorWrapperConfig = this.appConfig.errorWrapper; - var errorWrapper = errorWrapperConfig.container; - errorWrapper.removeAttribute('hidden'); - var errorMessage = errorWrapperConfig.errorMessage; - errorMessage.textContent = message; - var closeButton = errorWrapperConfig.closeButton; - closeButton.onclick = function () { - errorWrapper.setAttribute('hidden', 'true'); - }; - var errorMoreInfo = errorWrapperConfig.errorMoreInfo; - var moreInfoButton = errorWrapperConfig.moreInfoButton; - var lessInfoButton = errorWrapperConfig.lessInfoButton; - moreInfoButton.onclick = function () { - errorMoreInfo.removeAttribute('hidden'); - moreInfoButton.setAttribute('hidden', 'true'); - lessInfoButton.removeAttribute('hidden'); - errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px'; - }; - lessInfoButton.onclick = function () { - errorMoreInfo.setAttribute('hidden', 'true'); - moreInfoButton.removeAttribute('hidden'); - lessInfoButton.setAttribute('hidden', 'true'); - }; - moreInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; - lessInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; - closeButton.oncontextmenu = _ui_utils.noContextMenuHandler; - moreInfoButton.removeAttribute('hidden'); - lessInfoButton.setAttribute('hidden', 'true'); - Promise.all(moreInfoText).then(function (parts) { - errorMoreInfo.value = parts.join('\n'); - }); - }, - progress: function progress(level) { - var _this5 = this; - - if (this.downloadComplete) { - return; - } - var percent = Math.round(level * 100); - if (percent > this.loadingBar.percent || isNaN(percent)) { - this.loadingBar.percent = percent; - if (_pdfjsLib.PDFJS.disableAutoFetch && percent) { - if (this.disableAutoFetchLoadingBarTimeout) { - clearTimeout(this.disableAutoFetchLoadingBarTimeout); - this.disableAutoFetchLoadingBarTimeout = null; - } - this.loadingBar.show(); - this.disableAutoFetchLoadingBarTimeout = setTimeout(function () { - _this5.loadingBar.hide(); - _this5.disableAutoFetchLoadingBarTimeout = null; - }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT); - } - } - }, - load: function load(pdfDocument, scale) { - var _this6 = this; - - scale = scale || _ui_utils.UNKNOWN_SCALE; - this.pdfDocument = pdfDocument; - pdfDocument.getDownloadInfo().then(function () { - _this6.downloadComplete = true; - _this6.loadingBar.hide(); - firstPagePromise.then(function () { - _this6.eventBus.dispatch('documentload', { source: _this6 }); - }); - }); - var pageModePromise = pdfDocument.getPageMode().catch(function () {}); - this.toolbar.setPagesCount(pdfDocument.numPages, false); - this.secondaryToolbar.setPagesCount(pdfDocument.numPages); - var id = this.documentFingerprint = pdfDocument.fingerprint; - var store = this.store = new _view_history.ViewHistory(id); - var baseDocumentUrl = void 0; - baseDocumentUrl = null; - this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl); - this.pdfDocumentProperties.setDocument(pdfDocument, this.url); - var pdfViewer = this.pdfViewer; - pdfViewer.setDocument(pdfDocument); - var firstPagePromise = pdfViewer.firstPagePromise; - var pagesPromise = pdfViewer.pagesPromise; - var onePageRendered = pdfViewer.onePageRendered; - var pdfThumbnailViewer = this.pdfThumbnailViewer; - pdfThumbnailViewer.setDocument(pdfDocument); - firstPagePromise.then(function (pdfPage) { - _this6.loadingBar.setWidth(_this6.appConfig.viewerContainer); - if (!_pdfjsLib.PDFJS.disableHistory && !_this6.isViewerEmbedded) { - if (!_this6.viewerPrefs['showPreviousViewOnLoad']) { - _this6.pdfHistory.clearHistoryState(); - } - _this6.pdfHistory.initialize(_this6.documentFingerprint); - if (_this6.pdfHistory.initialDestination) { - _this6.initialDestination = _this6.pdfHistory.initialDestination; - } else if (_this6.pdfHistory.initialBookmark) { - _this6.initialBookmark = _this6.pdfHistory.initialBookmark; - } - } - var initialParams = { - destination: _this6.initialDestination, - bookmark: _this6.initialBookmark, - hash: null - }; - var storePromise = store.getMultiple({ - exists: false, - page: '1', - zoom: _ui_utils.DEFAULT_SCALE_VALUE, - scrollLeft: '0', - scrollTop: '0', - sidebarView: _pdf_sidebar.SidebarView.NONE - }).catch(function () {}); - Promise.all([storePromise, pageModePromise]).then(function (_ref2) { - var _ref3 = _slicedToArray(_ref2, 2), - _ref3$ = _ref3[0], - values = _ref3$ === undefined ? {} : _ref3$, - pageMode = _ref3[1]; - - var hash = _this6.viewerPrefs['defaultZoomValue'] ? 'zoom=' + _this6.viewerPrefs['defaultZoomValue'] : null; - var sidebarView = _this6.viewerPrefs['sidebarViewOnLoad']; - if (values.exists && _this6.viewerPrefs['showPreviousViewOnLoad']) { - hash = 'page=' + values.page + '&zoom=' + (_this6.viewerPrefs['defaultZoomValue'] || values.zoom) + ',' + values.scrollLeft + ',' + values.scrollTop; - sidebarView = sidebarView || values.sidebarView | 0; - } - if (pageMode && !_this6.viewerPrefs['disablePageMode']) { - sidebarView = sidebarView || apiPageModeToSidebarView(pageMode); - } - return { - hash: hash, - sidebarView: sidebarView - }; - }).then(function (_ref4) { - var hash = _ref4.hash, - sidebarView = _ref4.sidebarView; - - _this6.setInitialView(hash, { - sidebarView: sidebarView, - scale: scale - }); - initialParams.hash = hash; - if (!_this6.isViewerEmbedded) { - pdfViewer.focus(); - } - return pagesPromise; - }).then(function () { - if (!initialParams.destination && !initialParams.bookmark && !initialParams.hash) { - return; - } - if (pdfViewer.hasEqualPageSizes) { - return; - } - _this6.initialDestination = initialParams.destination; - _this6.initialBookmark = initialParams.bookmark; - pdfViewer.currentScaleValue = pdfViewer.currentScaleValue; - _this6.setInitialView(initialParams.hash); - }).then(function () { - pdfViewer.update(); - }); - }); - pdfDocument.getPageLabels().then(function (labels) { - if (!labels || _this6.viewerPrefs['disablePageLabels']) { - return; - } - var i = 0, - numLabels = labels.length; - if (numLabels !== _this6.pagesCount) { - console.error('The number of Page Labels does not match ' + 'the number of pages in the document.'); - return; - } - while (i < numLabels && labels[i] === (i + 1).toString()) { - i++; - } - if (i === numLabels) { - return; - } - pdfViewer.setPageLabels(labels); - pdfThumbnailViewer.setPageLabels(labels); - _this6.toolbar.setPagesCount(pdfDocument.numPages, true); - _this6.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); - }); - pagesPromise.then(function () { - if (!_this6.supportsPrinting) { - return; - } - pdfDocument.getJavaScript().then(function (javaScript) { - if (javaScript.length) { - console.warn('Warning: JavaScript is not supported'); - _this6.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript); - } - var regex = /\bprint\s*\(/; - for (var i = 0, ii = javaScript.length; i < ii; i++) { - var js = javaScript[i]; - if (js && regex.test(js)) { - setTimeout(function () { - window.print(); - }); - return; - } - } - }); - }); - Promise.all([onePageRendered, _ui_utils.animationStarted]).then(function () { - pdfDocument.getOutline().then(function (outline) { - _this6.pdfOutlineViewer.render({ outline: outline }); - }); - pdfDocument.getAttachments().then(function (attachments) { - _this6.pdfAttachmentViewer.render({ attachments: attachments }); - }); - }); - pdfDocument.getMetadata().then(function (_ref5) { - var info = _ref5.info, - metadata = _ref5.metadata; - - _this6.documentInfo = info; - _this6.metadata = metadata; - console.log('PDF ' + pdfDocument.fingerprint + ' [' + info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() + ' / ' + (info.Creator || '-').trim() + ']' + ' (PDF.js: ' + (_pdfjsLib.version || '-') + (!_pdfjsLib.PDFJS.disableWebGL ? ' [WebGL]' : '') + ')'); - var pdfTitle = void 0; - if (metadata && metadata.has('dc:title')) { - var title = metadata.get('dc:title'); - if (title !== 'Untitled') { - pdfTitle = title; - } - } - if (!pdfTitle && info && info['Title']) { - pdfTitle = info['Title']; - } - if (pdfTitle) { - _this6.setTitle(pdfTitle + ' - ' + document.title); - } - if (info.IsAcroFormPresent) { - console.warn('Warning: AcroForm/XFA is not supported'); - _this6.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms); - } - }); - }, - setInitialView: function setInitialView(storedHash) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$scale = options.scale, - scale = _options$scale === undefined ? 0 : _options$scale, - _options$sidebarView = options.sidebarView, - sidebarView = _options$sidebarView === undefined ? _pdf_sidebar.SidebarView.NONE : _options$sidebarView; - - this.isInitialViewSet = true; - this.pdfSidebar.setInitialView(sidebarView); - if (this.initialDestination) { - this.pdfLinkService.navigateTo(this.initialDestination); - this.initialDestination = null; - } else if (this.initialBookmark) { - this.pdfLinkService.setHash(this.initialBookmark); - this.pdfHistory.push({ hash: this.initialBookmark }, true); - this.initialBookmark = null; - } else if (storedHash) { - this.pdfLinkService.setHash(storedHash); - } else if (scale) { - this.pdfViewer.currentScaleValue = scale; - this.page = 1; - } - this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel); - this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber); - if (!this.pdfViewer.currentScaleValue) { - this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - } - }, - cleanup: function cleanup() { - if (!this.pdfDocument) { - return; - } - this.pdfViewer.cleanup(); - this.pdfThumbnailViewer.cleanup(); - if (this.pdfViewer.renderer !== _ui_utils.RendererType.SVG) { - this.pdfDocument.cleanup(); - } - }, - forceRendering: function forceRendering() { - this.pdfRenderingQueue.printing = this.printing; - this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible; - this.pdfRenderingQueue.renderHighestPriority(); - }, - beforePrint: function beforePrint() { - var _this7 = this; - - if (this.printService) { - return; - } - if (!this.supportsPrinting) { - this.l10n.get('printing_not_supported', null, 'Warning: Printing is not fully supported by ' + 'this browser.').then(function (printMessage) { - _this7.error(printMessage); - }); - return; - } - if (!this.pdfViewer.pageViewsReady) { - this.l10n.get('printing_not_ready', null, 'Warning: The PDF is not fully loaded for printing.').then(function (notReadyMessage) { - window.alert(notReadyMessage); - }); - return; - } - var pagesOverview = this.pdfViewer.getPagesOverview(); - var printContainer = this.appConfig.printContainer; - var printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, this.l10n); - this.printService = printService; - this.forceRendering(); - printService.layout(); - }, - - afterPrint: function pdfViewSetupAfterPrint() { - if (this.printService) { - this.printService.destroy(); - this.printService = null; - } - this.forceRendering(); - }, - rotatePages: function rotatePages(delta) { - if (!this.pdfDocument) { - return; - } - var pdfViewer = this.pdfViewer, - pdfThumbnailViewer = this.pdfThumbnailViewer; - - var pageNumber = pdfViewer.currentPageNumber; - var newRotation = (pdfViewer.pagesRotation + 360 + delta) % 360; - pdfViewer.pagesRotation = newRotation; - pdfThumbnailViewer.pagesRotation = newRotation; - this.forceRendering(); - pdfViewer.currentPageNumber = pageNumber; - }, - requestPresentationMode: function requestPresentationMode() { - if (!this.pdfPresentationMode) { - return; - } - this.pdfPresentationMode.request(); - }, - bindEvents: function bindEvents() { - var eventBus = this.eventBus, - _boundEvents = this._boundEvents; - - _boundEvents.beforePrint = this.beforePrint.bind(this); - _boundEvents.afterPrint = this.afterPrint.bind(this); - eventBus.on('resize', webViewerResize); - eventBus.on('hashchange', webViewerHashchange); - eventBus.on('beforeprint', _boundEvents.beforePrint); - eventBus.on('afterprint', _boundEvents.afterPrint); - eventBus.on('pagerendered', webViewerPageRendered); - eventBus.on('textlayerrendered', webViewerTextLayerRendered); - eventBus.on('updateviewarea', webViewerUpdateViewarea); - eventBus.on('pagechanging', webViewerPageChanging); - eventBus.on('scalechanging', webViewerScaleChanging); - eventBus.on('sidebarviewchanged', webViewerSidebarViewChanged); - eventBus.on('pagemode', webViewerPageMode); - eventBus.on('namedaction', webViewerNamedAction); - eventBus.on('presentationmodechanged', webViewerPresentationModeChanged); - eventBus.on('presentationmode', webViewerPresentationMode); - eventBus.on('openfile', webViewerOpenFile); - eventBus.on('print', webViewerPrint); - eventBus.on('download', webViewerDownload); - eventBus.on('firstpage', webViewerFirstPage); - eventBus.on('lastpage', webViewerLastPage); - eventBus.on('nextpage', webViewerNextPage); - eventBus.on('previouspage', webViewerPreviousPage); - eventBus.on('zoomin', webViewerZoomIn); - eventBus.on('zoomout', webViewerZoomOut); - eventBus.on('pagenumberchanged', webViewerPageNumberChanged); - eventBus.on('scalechanged', webViewerScaleChanged); - eventBus.on('rotatecw', webViewerRotateCw); - eventBus.on('rotateccw', webViewerRotateCcw); - eventBus.on('documentproperties', webViewerDocumentProperties); - eventBus.on('find', webViewerFind); - eventBus.on('findfromurlhash', webViewerFindFromUrlHash); - eventBus.on('fileinputchange', webViewerFileInputChange); - }, - bindWindowEvents: function bindWindowEvents() { - var eventBus = this.eventBus, - _boundEvents = this._boundEvents; - - _boundEvents.windowResize = function () { - eventBus.dispatch('resize'); - }; - _boundEvents.windowHashChange = function () { - eventBus.dispatch('hashchange', { hash: document.location.hash.substring(1) }); - }; - _boundEvents.windowBeforePrint = function () { - eventBus.dispatch('beforeprint'); - }; - _boundEvents.windowAfterPrint = function () { - eventBus.dispatch('afterprint'); - }; - window.addEventListener('wheel', webViewerWheel); - window.addEventListener('click', webViewerClick); - window.addEventListener('keydown', webViewerKeyDown); - window.addEventListener('resize', _boundEvents.windowResize); - window.addEventListener('hashchange', _boundEvents.windowHashChange); - window.addEventListener('beforeprint', _boundEvents.windowBeforePrint); - window.addEventListener('afterprint', _boundEvents.windowAfterPrint); - _boundEvents.windowChange = function (evt) { - var files = evt.target.files; - if (!files || files.length === 0) { - return; - } - eventBus.dispatch('fileinputchange', { fileInput: evt.target }); - }; - window.addEventListener('change', _boundEvents.windowChange); - }, - unbindEvents: function unbindEvents() { - var eventBus = this.eventBus, - _boundEvents = this._boundEvents; - - eventBus.off('resize', webViewerResize); - eventBus.off('hashchange', webViewerHashchange); - eventBus.off('beforeprint', _boundEvents.beforePrint); - eventBus.off('afterprint', _boundEvents.afterPrint); - eventBus.off('pagerendered', webViewerPageRendered); - eventBus.off('textlayerrendered', webViewerTextLayerRendered); - eventBus.off('updateviewarea', webViewerUpdateViewarea); - eventBus.off('pagechanging', webViewerPageChanging); - eventBus.off('scalechanging', webViewerScaleChanging); - eventBus.off('sidebarviewchanged', webViewerSidebarViewChanged); - eventBus.off('pagemode', webViewerPageMode); - eventBus.off('namedaction', webViewerNamedAction); - eventBus.off('presentationmodechanged', webViewerPresentationModeChanged); - eventBus.off('presentationmode', webViewerPresentationMode); - eventBus.off('openfile', webViewerOpenFile); - eventBus.off('print', webViewerPrint); - eventBus.off('download', webViewerDownload); - eventBus.off('firstpage', webViewerFirstPage); - eventBus.off('lastpage', webViewerLastPage); - eventBus.off('nextpage', webViewerNextPage); - eventBus.off('previouspage', webViewerPreviousPage); - eventBus.off('zoomin', webViewerZoomIn); - eventBus.off('zoomout', webViewerZoomOut); - eventBus.off('pagenumberchanged', webViewerPageNumberChanged); - eventBus.off('scalechanged', webViewerScaleChanged); - eventBus.off('rotatecw', webViewerRotateCw); - eventBus.off('rotateccw', webViewerRotateCcw); - eventBus.off('documentproperties', webViewerDocumentProperties); - eventBus.off('find', webViewerFind); - eventBus.off('findfromurlhash', webViewerFindFromUrlHash); - eventBus.off('fileinputchange', webViewerFileInputChange); - _boundEvents.beforePrint = null; - _boundEvents.afterPrint = null; - }, - unbindWindowEvents: function unbindWindowEvents() { - var _boundEvents = this._boundEvents; - - window.removeEventListener('wheel', webViewerWheel); - window.removeEventListener('click', webViewerClick); - window.removeEventListener('keydown', webViewerKeyDown); - window.removeEventListener('resize', _boundEvents.windowResize); - window.removeEventListener('hashchange', _boundEvents.windowHashChange); - window.removeEventListener('beforeprint', _boundEvents.windowBeforePrint); - window.removeEventListener('afterprint', _boundEvents.windowAfterPrint); - window.removeEventListener('change', _boundEvents.windowChange); - _boundEvents.windowChange = null; - _boundEvents.windowResize = null; - _boundEvents.windowHashChange = null; - _boundEvents.windowBeforePrint = null; - _boundEvents.windowAfterPrint = null; - } -}; -var validateViewerURL = void 0; -{ - validateViewerURL = function validateViewerURL(file) { - if (file === undefined) { - return; - } - if (window.self != window.top) { - // iframe - var viewerOrigin = window.location.hostname; - try { - // if parent is in a different domain, it will trigger an error - var parentOrigin = window.parent.location.hostname; - } catch (e) { - var message = 'parent origin does not match viewer\'s'; - PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while loading the PDF.').then(function (loadingErrorMessage) { - PDFViewerApplication.error(loadingErrorMessage, { message: message }); - }); - throw e; - } - } - - }; -} -function loadAndEnablePDFBug(enabledTabs) { - return new Promise(function (resolve, reject) { - var appConfig = PDFViewerApplication.appConfig; - var script = document.createElement('script'); - script.src = appConfig.debuggerScriptPath; - script.onload = function () { - PDFBug.enable(enabledTabs); - PDFBug.init({ - PDFJS: _pdfjsLib.PDFJS, - OPS: _pdfjsLib.OPS - }, appConfig.mainContainer); - resolve(); - }; - script.onerror = function () { - reject(new Error('Cannot load debugger at ' + script.src)); - }; - (document.getElementsByTagName('head')[0] || document.body).appendChild(script); - }); -} -function webViewerInitialized() { - var appConfig = PDFViewerApplication.appConfig; - var file = void 0; - var queryString = document.location.search.substring(1); - var params = (0, _ui_utils.parseQueryString)(queryString); - file = 'file' in params ? params.file : appConfig.defaultUrl; - validateViewerURL(file); - var waitForBeforeOpening = []; - var fileInput = document.createElement('input'); - fileInput.id = appConfig.openFileInputName; - fileInput.className = 'fileInput'; - fileInput.setAttribute('type', 'file'); - fileInput.oncontextmenu = _ui_utils.noContextMenuHandler; - document.body.appendChild(fileInput); - if (!window.File || !window.FileReader || !window.FileList || !window.Blob) { - appConfig.toolbar.openFile.setAttribute('hidden', 'true'); - appConfig.secondaryToolbar.openFileButton.setAttribute('hidden', 'true'); - } else { - fileInput.value = null; - } - if (PDFViewerApplication.viewerPrefs['pdfBugEnabled']) { - var hash = document.location.hash.substring(1); - var hashParams = (0, _ui_utils.parseQueryString)(hash); - if ('disableworker' in hashParams) { - _pdfjsLib.PDFJS.disableWorker = hashParams['disableworker'] === 'true'; - } - if ('disablerange' in hashParams) { - _pdfjsLib.PDFJS.disableRange = hashParams['disablerange'] === 'true'; - } - if ('disablestream' in hashParams) { - _pdfjsLib.PDFJS.disableStream = hashParams['disablestream'] === 'true'; - } - if ('disableautofetch' in hashParams) { - _pdfjsLib.PDFJS.disableAutoFetch = hashParams['disableautofetch'] === 'true'; - } - if ('disablefontface' in hashParams) { - _pdfjsLib.PDFJS.disableFontFace = hashParams['disablefontface'] === 'true'; - } - if ('disablehistory' in hashParams) { - _pdfjsLib.PDFJS.disableHistory = hashParams['disablehistory'] === 'true'; - } - if ('webgl' in hashParams) { - _pdfjsLib.PDFJS.disableWebGL = hashParams['webgl'] !== 'true'; - } - if ('useonlycsszoom' in hashParams) { - _pdfjsLib.PDFJS.useOnlyCssZoom = hashParams['useonlycsszoom'] === 'true'; - } - if ('verbosity' in hashParams) { - _pdfjsLib.PDFJS.verbosity = hashParams['verbosity'] | 0; - } - if ('ignorecurrentpositiononzoom' in hashParams) { - _pdfjsLib.PDFJS.ignoreCurrentPositionOnZoom = hashParams['ignorecurrentpositiononzoom'] === 'true'; - } - if ('textlayer' in hashParams) { - switch (hashParams['textlayer']) { - case 'off': - _pdfjsLib.PDFJS.disableTextLayer = true; - break; - case 'visible': - case 'shadow': - case 'hover': - var viewer = appConfig.viewerContainer; - viewer.classList.add('textLayer-' + hashParams['textlayer']); - break; - } - } - if ('pdfbug' in hashParams) { - _pdfjsLib.PDFJS.pdfBug = true; - var pdfBug = hashParams['pdfbug']; - var enabled = pdfBug.split(','); - waitForBeforeOpening.push(loadAndEnablePDFBug(enabled)); - } - } - if (!PDFViewerApplication.supportsPrinting) { - appConfig.toolbar.print.classList.add('hidden'); - appConfig.secondaryToolbar.printButton.classList.add('hidden'); - } - if (!PDFViewerApplication.supportsFullscreen) { - appConfig.toolbar.presentationModeButton.classList.add('hidden'); - appConfig.secondaryToolbar.presentationModeButton.classList.add('hidden'); - } - if (PDFViewerApplication.supportsIntegratedFind) { - appConfig.toolbar.viewFind.classList.add('hidden'); - } - appConfig.sidebar.mainContainer.addEventListener('transitionend', function (evt) { - if (evt.target === this) { - PDFViewerApplication.eventBus.dispatch('resize'); - } - }, true); - appConfig.sidebar.toggleButton.addEventListener('click', function () { - PDFViewerApplication.pdfSidebar.toggle(); - }); - Promise.all(waitForBeforeOpening).then(function () { - webViewerOpenFileViaURL(file); - }).catch(function (reason) { - PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while opening.').then(function (msg) { - PDFViewerApplication.error(msg, reason); - }); - }); -} -var webViewerOpenFileViaURL = void 0; -{ - webViewerOpenFileViaURL = function webViewerOpenFileViaURL(file) { - if (file && file.lastIndexOf('file:', 0) === 0) { - PDFViewerApplication.setTitleUsingUrl(file); - var xhr = new XMLHttpRequest(); - xhr.onload = function () { - PDFViewerApplication.open(new Uint8Array(xhr.response)); - }; - try { - xhr.open('GET', file); - xhr.responseType = 'arraybuffer'; - xhr.send(); - } catch (ex) { - PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while loading the PDF.').then(function (msg) { - PDFViewerApplication.error(msg, ex); - }); - } - return; - } - if (file) { - PDFViewerApplication.open(file); - } - }; -} -function webViewerPageRendered(evt) { - var pageNumber = evt.pageNumber; - var pageIndex = pageNumber - 1; - var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex); - if (pageNumber === PDFViewerApplication.page) { - PDFViewerApplication.toolbar.updateLoadingIndicatorState(false); - } - if (!pageView) { - return; - } - if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { - var thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } - if (_pdfjsLib.PDFJS.pdfBug && Stats.enabled && pageView.stats) { - Stats.add(pageNumber, pageView.stats); - } - if (pageView.error) { - PDFViewerApplication.l10n.get('rendering_error', null, 'An error occurred while rendering the page.').then(function (msg) { - PDFViewerApplication.error(msg, pageView.error); - }); - } -} -function webViewerTextLayerRendered(evt) {} -function webViewerPageMode(evt) { - var mode = evt.mode, - view = void 0; - switch (mode) { - case 'thumbs': - view = _pdf_sidebar.SidebarView.THUMBS; - break; - case 'bookmarks': - case 'outline': - view = _pdf_sidebar.SidebarView.OUTLINE; - break; - case 'attachments': - view = _pdf_sidebar.SidebarView.ATTACHMENTS; - break; - case 'none': - view = _pdf_sidebar.SidebarView.NONE; - break; - default: - console.error('Invalid "pagemode" hash parameter: ' + mode); - return; - } - PDFViewerApplication.pdfSidebar.switchView(view, true); -} -function webViewerNamedAction(evt) { - var action = evt.action; - switch (action) { - case 'GoToPage': - PDFViewerApplication.appConfig.toolbar.pageNumber.select(); - break; - case 'Find': - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.toggle(); - } - break; - } -} -function webViewerPresentationModeChanged(evt) { - var active = evt.active, - switchInProgress = evt.switchInProgress; - - PDFViewerApplication.pdfViewer.presentationModeState = switchInProgress ? _pdf_viewer.PresentationModeState.CHANGING : active ? _pdf_viewer.PresentationModeState.FULLSCREEN : _pdf_viewer.PresentationModeState.NORMAL; -} -function webViewerSidebarViewChanged(evt) { - PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = PDFViewerApplication.pdfSidebar.isThumbnailViewVisible; - var store = PDFViewerApplication.store; - if (store && PDFViewerApplication.isInitialViewSet) { - store.set('sidebarView', evt.view).catch(function () {}); - } -} -function webViewerUpdateViewarea(evt) { - var location = evt.location, - store = PDFViewerApplication.store; - if (store && PDFViewerApplication.isInitialViewSet) { - store.setMultiple({ - 'exists': true, - 'page': location.pageNumber, - 'zoom': location.scale, - 'scrollLeft': location.left, - 'scrollTop': location.top - }).catch(function () {}); - } - var href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); - PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href; - PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href; - PDFViewerApplication.pdfHistory.updateCurrentBookmark(location.pdfOpenParams, location.pageNumber); - var currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1); - var loading = currentPage.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED; - PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading); -} -function webViewerResize() { - var pdfDocument = PDFViewerApplication.pdfDocument, - pdfViewer = PDFViewerApplication.pdfViewer; - - if (!pdfDocument) { - return; - } - var currentScaleValue = pdfViewer.currentScaleValue; - if (currentScaleValue === 'auto' || currentScaleValue === 'page-fit' || currentScaleValue === 'page-width') { - pdfViewer.currentScaleValue = currentScaleValue; - } - pdfViewer.update(); -} -function webViewerHashchange(evt) { - if (PDFViewerApplication.pdfHistory.isHashChangeUnlocked) { - var hash = evt.hash; - if (!hash) { - return; - } - if (!PDFViewerApplication.isInitialViewSet) { - PDFViewerApplication.initialBookmark = hash; - } else { - PDFViewerApplication.pdfLinkService.setHash(hash); - } - } -} -var webViewerFileInputChange = void 0; -{ - webViewerFileInputChange = function webViewerFileInputChange(evt) { - var file = evt.fileInput.files[0]; - if (!_pdfjsLib.PDFJS.disableCreateObjectURL && URL.createObjectURL) { - PDFViewerApplication.open(URL.createObjectURL(file)); - } else { - var fileReader = new FileReader(); - fileReader.onload = function webViewerChangeFileReaderOnload(evt) { - var buffer = evt.target.result; - PDFViewerApplication.open(new Uint8Array(buffer)); - }; - fileReader.readAsArrayBuffer(file); - } - PDFViewerApplication.setTitleUsingUrl(file.name); - var appConfig = PDFViewerApplication.appConfig; - appConfig.toolbar.viewBookmark.setAttribute('hidden', 'true'); - appConfig.secondaryToolbar.viewBookmarkButton.setAttribute('hidden', 'true'); - appConfig.toolbar.download.setAttribute('hidden', 'true'); - appConfig.secondaryToolbar.downloadButton.setAttribute('hidden', 'true'); - }; -} -function webViewerPresentationMode() { - PDFViewerApplication.requestPresentationMode(); -} -function webViewerOpenFile() { - var openFileInputName = PDFViewerApplication.appConfig.openFileInputName; - document.getElementById(openFileInputName).click(); -} -function webViewerPrint() { - window.print(); -} -function webViewerDownload() { - PDFViewerApplication.download(); -} -function webViewerFirstPage() { - if (PDFViewerApplication.pdfDocument) { - PDFViewerApplication.page = 1; - } -} -function webViewerLastPage() { - if (PDFViewerApplication.pdfDocument) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - } -} -function webViewerNextPage() { - PDFViewerApplication.page++; -} -function webViewerPreviousPage() { - PDFViewerApplication.page--; -} -function webViewerZoomIn() { - PDFViewerApplication.zoomIn(); -} -function webViewerZoomOut() { - PDFViewerApplication.zoomOut(); -} -function webViewerPageNumberChanged(evt) { - var pdfViewer = PDFViewerApplication.pdfViewer; - pdfViewer.currentPageLabel = evt.value; - if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) { - PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); - } -} -function webViewerScaleChanged(evt) { - PDFViewerApplication.pdfViewer.currentScaleValue = evt.value; -} -function webViewerRotateCw() { - PDFViewerApplication.rotatePages(90); -} -function webViewerRotateCcw() { - PDFViewerApplication.rotatePages(-90); -} -function webViewerDocumentProperties() { - PDFViewerApplication.pdfDocumentProperties.open(); -} -function webViewerFind(evt) { - PDFViewerApplication.findController.executeCommand('find' + evt.type, { - query: evt.query, - phraseSearch: evt.phraseSearch, - caseSensitive: evt.caseSensitive, - highlightAll: evt.highlightAll, - findPrevious: evt.findPrevious - }); -} -function webViewerFindFromUrlHash(evt) { - PDFViewerApplication.findController.executeCommand('find', { - query: evt.query, - phraseSearch: evt.phraseSearch, - caseSensitive: false, - highlightAll: true, - findPrevious: false - }); -} -function webViewerScaleChanging(evt) { - PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale); - PDFViewerApplication.pdfViewer.update(); -} -function webViewerPageChanging(evt) { - var page = evt.pageNumber; - PDFViewerApplication.toolbar.setPageNumber(page, evt.pageLabel || null); - PDFViewerApplication.secondaryToolbar.setPageNumber(page); - if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { - PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page); - } - if (_pdfjsLib.PDFJS.pdfBug && Stats.enabled) { - var pageView = PDFViewerApplication.pdfViewer.getPageView(page - 1); - if (pageView.stats) { - Stats.add(page, pageView.stats); - } - } -} -var zoomDisabled = false, - zoomDisabledTimeout = void 0; -function webViewerWheel(evt) { - var pdfViewer = PDFViewerApplication.pdfViewer; - if (pdfViewer.isInPresentationMode) { - return; - } - if (evt.ctrlKey || evt.metaKey) { - var support = PDFViewerApplication.supportedMouseWheelZoomModifierKeys; - if (evt.ctrlKey && !support.ctrlKey || evt.metaKey && !support.metaKey) { - return; - } - evt.preventDefault(); - if (zoomDisabled) { - return; - } - var previousScale = pdfViewer.currentScale; - var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt); - var MOUSE_WHEEL_DELTA_PER_PAGE_SCALE = 3.0; - var ticks = delta * MOUSE_WHEEL_DELTA_PER_PAGE_SCALE; - if (ticks < 0) { - PDFViewerApplication.zoomOut(-ticks); - } else { - PDFViewerApplication.zoomIn(ticks); - } - var currentScale = pdfViewer.currentScale; - if (previousScale !== currentScale) { - var scaleCorrectionFactor = currentScale / previousScale - 1; - var rect = pdfViewer.container.getBoundingClientRect(); - var dx = evt.clientX - rect.left; - var dy = evt.clientY - rect.top; - pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor; - pdfViewer.container.scrollTop += dy * scaleCorrectionFactor; - } - } else { - zoomDisabled = true; - clearTimeout(zoomDisabledTimeout); - zoomDisabledTimeout = setTimeout(function () { - zoomDisabled = false; - }, 1000); - } -} -function webViewerClick(evt) { - if (!PDFViewerApplication.secondaryToolbar.isOpen) { - return; - } - var appConfig = PDFViewerApplication.appConfig; - if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton) { - PDFViewerApplication.secondaryToolbar.close(); - } -} -function webViewerKeyDown(evt) { - if (PDFViewerApplication.overlayManager.active) { - return; - } - var handled = false, - ensureViewerFocused = false; - var cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0); - var pdfViewer = PDFViewerApplication.pdfViewer; - var isViewerInPresentationMode = pdfViewer && pdfViewer.isInPresentationMode; - if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { - switch (evt.keyCode) { - case 70: - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.open(); - handled = true; - } - break; - case 71: - if (!PDFViewerApplication.supportsIntegratedFind) { - var findState = PDFViewerApplication.findController.state; - if (findState) { - PDFViewerApplication.findController.executeCommand('findagain', { - query: findState.query, - phraseSearch: findState.phraseSearch, - caseSensitive: findState.caseSensitive, - highlightAll: findState.highlightAll, - findPrevious: cmd === 5 || cmd === 12 - }); - } - handled = true; - } - break; - case 61: - case 107: - case 187: - case 171: - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomIn(); - } - handled = true; - break; - case 173: - case 109: - case 189: - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomOut(); - } - handled = true; - break; - case 48: - case 96: - if (!isViewerInPresentationMode) { - setTimeout(function () { - pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - }); - handled = false; - } - break; - case 38: - if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { - PDFViewerApplication.page = 1; - handled = true; - ensureViewerFocused = true; - } - break; - case 40: - if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - handled = true; - ensureViewerFocused = true; - } - break; - } - } - if (cmd === 1 || cmd === 8) { - switch (evt.keyCode) { - case 83: - PDFViewerApplication.download(); - handled = true; - break; - } - } - if (cmd === 3 || cmd === 10) { - switch (evt.keyCode) { - case 80: - PDFViewerApplication.requestPresentationMode(); - handled = true; - break; - case 71: - PDFViewerApplication.appConfig.toolbar.pageNumber.select(); - handled = true; - break; - } - } - if (handled) { - if (ensureViewerFocused && !isViewerInPresentationMode) { - pdfViewer.focus(); - } - evt.preventDefault(); - return; - } - var curElement = document.activeElement || document.querySelector(':focus'); - var curElementTagName = curElement && curElement.tagName.toUpperCase(); - if (curElementTagName === 'INPUT' || curElementTagName === 'TEXTAREA' || curElementTagName === 'SELECT') { - if (evt.keyCode !== 27) { - return; - } - } - if (cmd === 0) { - switch (evt.keyCode) { - case 38: - case 33: - case 8: - if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') { - break; - } - case 37: - if (pdfViewer.isHorizontalScrollbarEnabled) { - break; - } - case 75: - case 80: - if (PDFViewerApplication.page > 1) { - PDFViewerApplication.page--; - } - handled = true; - break; - case 27: - if (PDFViewerApplication.secondaryToolbar.isOpen) { - PDFViewerApplication.secondaryToolbar.close(); - handled = true; - } - if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar.opened) { - PDFViewerApplication.findBar.close(); - handled = true; - } - break; - case 40: - case 34: - case 32: - if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') { - break; - } - case 39: - if (pdfViewer.isHorizontalScrollbarEnabled) { - break; - } - case 74: - case 78: - if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) { - PDFViewerApplication.page++; - } - handled = true; - break; - case 36: - if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { - PDFViewerApplication.page = 1; - handled = true; - ensureViewerFocused = true; - } - break; - case 35: - if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - handled = true; - ensureViewerFocused = true; - } - break; - case 83: - PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.SELECT); - break; - case 72: - PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.HAND); - break; - case 82: - PDFViewerApplication.rotatePages(90); - break; - } - } - if (cmd === 4) { - switch (evt.keyCode) { - case 32: - if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') { - break; - } - if (PDFViewerApplication.page > 1) { - PDFViewerApplication.page--; - } - handled = true; - break; - case 82: - PDFViewerApplication.rotatePages(-90); - break; - } - } - if (!handled && !isViewerInPresentationMode) { - if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== 'BUTTON') { - ensureViewerFocused = true; - } - } - if (cmd === 2) { - switch (evt.keyCode) { - case 37: - if (isViewerInPresentationMode) { - PDFViewerApplication.pdfHistory.back(); - handled = true; - } - break; - case 39: - if (isViewerInPresentationMode) { - PDFViewerApplication.pdfHistory.forward(); - handled = true; - } - break; - } - } - if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { - pdfViewer.focus(); - } - if (handled) { - evt.preventDefault(); - } -} -function apiPageModeToSidebarView(mode) { - switch (mode) { - case 'UseNone': - return _pdf_sidebar.SidebarView.NONE; - case 'UseThumbs': - return _pdf_sidebar.SidebarView.THUMBS; - case 'UseOutlines': - return _pdf_sidebar.SidebarView.OUTLINE; - case 'UseAttachments': - return _pdf_sidebar.SidebarView.ATTACHMENTS; - case 'UseOC': - } - return _pdf_sidebar.SidebarView.NONE; -} -var PDFPrintServiceFactory = { - instance: { - supportsPrinting: false, - createPrintService: function createPrintService() { - throw new Error('Not implemented: createPrintService'); - } - } -}; -exports.PDFViewerApplication = PDFViewerApplication; -exports.DefaultExternalServices = DefaultExternalServices; -exports.PDFPrintServiceFactory = PDFPrintServiceFactory; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SimpleLinkService = exports.PDFLinkService = undefined; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _dom_events = __webpack_require__(2); - -var _ui_utils = __webpack_require__(0); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var PDFLinkService = function () { - function PDFLinkService() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - eventBus = _ref.eventBus; - - _classCallCheck(this, PDFLinkService); - - this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)(); - this.baseUrl = null; - this.pdfDocument = null; - this.pdfViewer = null; - this.pdfHistory = null; - this._pagesRefCache = null; - } - - _createClass(PDFLinkService, [{ - key: 'setDocument', - value: function setDocument(pdfDocument, baseUrl) { - this.baseUrl = baseUrl; - this.pdfDocument = pdfDocument; - this._pagesRefCache = Object.create(null); - } - }, { - key: 'setViewer', - value: function setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - } - }, { - key: 'setHistory', - value: function setHistory(pdfHistory) { - this.pdfHistory = pdfHistory; - } - }, { - key: 'navigateTo', - value: function navigateTo(dest) { - var _this = this; - - var goToDestination = function goToDestination(_ref2) { - var namedDest = _ref2.namedDest, - explicitDest = _ref2.explicitDest; - - var destRef = explicitDest[0], - pageNumber = void 0; - if (destRef instanceof Object) { - pageNumber = _this._cachedPageNumber(destRef); - if (pageNumber === null) { - _this.pdfDocument.getPageIndex(destRef).then(function (pageIndex) { - _this.cachePageRef(pageIndex + 1, destRef); - goToDestination({ - namedDest: namedDest, - explicitDest: explicitDest - }); - }).catch(function () { - console.error('PDFLinkService.navigateTo: "' + destRef + '" is not ' + ('a valid page reference, for dest="' + dest + '".')); - }); - return; - } - } else if ((destRef | 0) === destRef) { - pageNumber = destRef + 1; - } else { - console.error('PDFLinkService.navigateTo: "' + destRef + '" is not ' + ('a valid destination reference, for dest="' + dest + '".')); - return; - } - if (!pageNumber || pageNumber < 1 || pageNumber > _this.pagesCount) { - console.error('PDFLinkService.navigateTo: "' + pageNumber + '" is not ' + ('a valid page number, for dest="' + dest + '".')); - return; - } - _this.pdfViewer.scrollPageIntoView({ - pageNumber: pageNumber, - destArray: explicitDest - }); - if (_this.pdfHistory) { - _this.pdfHistory.push({ - dest: explicitDest, - hash: namedDest, - page: pageNumber - }); - } - }; - new Promise(function (resolve, reject) { - if (typeof dest === 'string') { - _this.pdfDocument.getDestination(dest).then(function (destArray) { - resolve({ - namedDest: dest, - explicitDest: destArray - }); - }); - return; - } - resolve({ - namedDest: '', - explicitDest: dest - }); - }).then(function (data) { - if (!(data.explicitDest instanceof Array)) { - console.error('PDFLinkService.navigateTo: "' + data.explicitDest + '" is' + (' not a valid destination array, for dest="' + dest + '".')); - return; - } - goToDestination(data); - }); - } - }, { - key: 'getDestinationHash', - value: function getDestinationHash(dest) { - if (typeof dest === 'string') { - return this.getAnchorUrl('#' + escape(dest)); - } - if (dest instanceof Array) { - var str = JSON.stringify(dest); - return this.getAnchorUrl('#' + escape(str)); - } - return this.getAnchorUrl(''); - } - }, { - key: 'getAnchorUrl', - value: function getAnchorUrl(anchor) { - return (this.baseUrl || '') + anchor; - } - }, { - key: 'setHash', - value: function setHash(hash) { - var pageNumber = void 0, - dest = void 0; - if (hash.indexOf('=') >= 0) { - var params = (0, _ui_utils.parseQueryString)(hash); - if ('search' in params) { - this.eventBus.dispatch('findfromurlhash', { - source: this, - query: params['search'].replace(/"/g, ''), - phraseSearch: params['phrase'] === 'true' - }); - } - if ('nameddest' in params) { - if (this.pdfHistory) { - this.pdfHistory.updateNextHashParam(params.nameddest); - } - this.navigateTo(params.nameddest); - return; - } - if ('page' in params) { - pageNumber = params.page | 0 || 1; - } - if ('zoom' in params) { - var zoomArgs = params.zoom.split(','); - var zoomArg = zoomArgs[0]; - var zoomArgNumber = parseFloat(zoomArg); - if (zoomArg.indexOf('Fit') === -1) { - dest = [null, { name: 'XYZ' }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg]; - } else { - if (zoomArg === 'Fit' || zoomArg === 'FitB') { - dest = [null, { name: zoomArg }]; - } else if (zoomArg === 'FitH' || zoomArg === 'FitBH' || zoomArg === 'FitV' || zoomArg === 'FitBV') { - dest = [null, { name: zoomArg }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null]; - } else if (zoomArg === 'FitR') { - if (zoomArgs.length !== 5) { - console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'); - } else { - dest = [null, { name: zoomArg }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0]; - } - } else { - console.error('PDFLinkService.setHash: "' + zoomArg + '" is not ' + 'a valid zoom value.'); - } - } - } - if (dest) { - this.pdfViewer.scrollPageIntoView({ - pageNumber: pageNumber || this.page, - destArray: dest, - allowNegativeOffset: true - }); - } else if (pageNumber) { - this.page = pageNumber; - } - if ('pagemode' in params) { - this.eventBus.dispatch('pagemode', { - source: this, - mode: params.pagemode - }); - } - } else { - if (/^\d+$/.test(hash) && hash <= this.pagesCount) { - console.warn('PDFLinkService_setHash: specifying a page number ' + 'directly after the hash symbol (#) is deprecated, ' + ('please use the "#page=' + hash + '" form instead.')); - this.page = hash | 0; - } - dest = unescape(hash); - try { - dest = JSON.parse(dest); - if (!(dest instanceof Array)) { - dest = dest.toString(); - } - } catch (ex) {} - if (typeof dest === 'string' || isValidExplicitDestination(dest)) { - if (this.pdfHistory) { - this.pdfHistory.updateNextHashParam(dest); - } - this.navigateTo(dest); - return; - } - console.error('PDFLinkService.setHash: "' + unescape(hash) + '" is not ' + 'a valid destination.'); - } - } - }, { - key: 'executeNamedAction', - value: function executeNamedAction(action) { - switch (action) { - case 'GoBack': - if (this.pdfHistory) { - this.pdfHistory.back(); - } - break; - case 'GoForward': - if (this.pdfHistory) { - this.pdfHistory.forward(); - } - break; - case 'NextPage': - if (this.page < this.pagesCount) { - this.page++; - } - break; - case 'PrevPage': - if (this.page > 1) { - this.page--; - } - break; - case 'LastPage': - this.page = this.pagesCount; - break; - case 'FirstPage': - this.page = 1; - break; - default: - break; - } - this.eventBus.dispatch('namedaction', { - source: this, - action: action - }); - } - }, { - key: 'onFileAttachmentAnnotation', - value: function onFileAttachmentAnnotation(_ref3) { - var id = _ref3.id, - filename = _ref3.filename, - content = _ref3.content; - - this.eventBus.dispatch('fileattachmentannotation', { - source: this, - id: id, - filename: filename, - content: content - }); - } - }, { - key: 'cachePageRef', - value: function cachePageRef(pageNum, pageRef) { - var refStr = pageRef.num + ' ' + pageRef.gen + ' R'; - this._pagesRefCache[refStr] = pageNum; - } - }, { - key: '_cachedPageNumber', - value: function _cachedPageNumber(pageRef) { - var refStr = pageRef.num + ' ' + pageRef.gen + ' R'; - return this._pagesRefCache && this._pagesRefCache[refStr] || null; - } - }, { - key: 'pagesCount', - get: function get() { - return this.pdfDocument ? this.pdfDocument.numPages : 0; - } - }, { - key: 'page', - get: function get() { - return this.pdfViewer.currentPageNumber; - }, - set: function set(value) { - this.pdfViewer.currentPageNumber = value; - } - }]); - - return PDFLinkService; -}(); - -function isValidExplicitDestination(dest) { - if (!(dest instanceof Array)) { - return false; - } - var destLength = dest.length, - allowNull = true; - if (destLength < 2) { - return false; - } - var page = dest[0]; - if (!((typeof page === 'undefined' ? 'undefined' : _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)) { - return false; - } - var zoom = dest[1]; - if (!((typeof zoom === 'undefined' ? 'undefined' : _typeof(zoom)) === 'object' && typeof zoom.name === 'string')) { - return false; - } - switch (zoom.name) { - case 'XYZ': - if (destLength !== 5) { - return false; - } - break; - case 'Fit': - case 'FitB': - return destLength === 2; - case 'FitH': - case 'FitBH': - case 'FitV': - case 'FitBV': - if (destLength !== 3) { - return false; - } - break; - case 'FitR': - if (destLength !== 6) { - return false; - } - allowNull = false; - break; - default: - return false; - } - for (var i = 2; i < destLength; i++) { - var param = dest[i]; - if (!(typeof param === 'number' || allowNull && param === null)) { - return false; - } - } - return true; -} - -var SimpleLinkService = function () { - function SimpleLinkService() { - _classCallCheck(this, SimpleLinkService); - } - - _createClass(SimpleLinkService, [{ - key: 'navigateTo', - value: function navigateTo(dest) {} - }, { - key: 'getDestinationHash', - value: function getDestinationHash(dest) { - return '#'; - } - }, { - key: 'getAnchorUrl', - value: function getAnchorUrl(hash) { - return '#'; - } - }, { - key: 'setHash', - value: function setHash(hash) {} - }, { - key: 'executeNamedAction', - value: function executeNamedAction(action) {} - }, { - key: 'onFileAttachmentAnnotation', - value: function onFileAttachmentAnnotation(_ref4) { - var id = _ref4.id, - filename = _ref4.filename, - content = _ref4.content; - } - }, { - key: 'cachePageRef', - value: function cachePageRef(pageNum, pageRef) {} - }, { - key: 'page', - get: function get() { - return 0; - }, - set: function set(value) {} - }]); - - return SimpleLinkService; -}(); - -exports.PDFLinkService = PDFLinkService; -exports.SimpleLinkService = SimpleLinkService; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFCursorTools = exports.CursorTool = undefined; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _grab_to_pan = __webpack_require__(14); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var CursorTool = { - SELECT: 0, - HAND: 1, - ZOOM: 2 -}; - -var PDFCursorTools = function () { - function PDFCursorTools(_ref) { - var _this = this; - - var container = _ref.container, - eventBus = _ref.eventBus, - preferences = _ref.preferences; - - _classCallCheck(this, PDFCursorTools); - - this.container = container; - this.eventBus = eventBus; - this.active = CursorTool.SELECT; - this.activeBeforePresentationMode = null; - this.handTool = new _grab_to_pan.GrabToPan({ element: this.container }); - this._addEventListeners(); - Promise.all([preferences.get('cursorToolOnLoad'), preferences.get('enableHandToolOnLoad')]).then(function (_ref2) { - var _ref3 = _slicedToArray(_ref2, 2), - cursorToolPref = _ref3[0], - handToolPref = _ref3[1]; - - if (handToolPref === true) { - preferences.set('enableHandToolOnLoad', false); - if (cursorToolPref === CursorTool.SELECT) { - cursorToolPref = CursorTool.HAND; - preferences.set('cursorToolOnLoad', cursorToolPref).catch(function () {}); - } - } - _this.switchTool(cursorToolPref); - }).catch(function () {}); - } - - _createClass(PDFCursorTools, [{ - key: 'switchTool', - value: function switchTool(tool) { - var _this2 = this; - - if (this.activeBeforePresentationMode !== null) { - return; - } - if (tool === this.active) { - return; - } - var disableActiveTool = function disableActiveTool() { - switch (_this2.active) { - case CursorTool.SELECT: - break; - case CursorTool.HAND: - _this2.handTool.deactivate(); - break; - case CursorTool.ZOOM: - } - }; - switch (tool) { - case CursorTool.SELECT: - disableActiveTool(); - break; - case CursorTool.HAND: - disableActiveTool(); - this.handTool.activate(); - break; - case CursorTool.ZOOM: - default: - console.error('switchTool: "' + tool + '" is an unsupported value.'); - return; - } - this.active = tool; - this._dispatchEvent(); - } - }, { - key: '_dispatchEvent', - value: function _dispatchEvent() { - this.eventBus.dispatch('cursortoolchanged', { - source: this, - tool: this.active - }); - } - }, { - key: '_addEventListeners', - value: function _addEventListeners() { - var _this3 = this; - - this.eventBus.on('switchcursortool', function (evt) { - _this3.switchTool(evt.tool); - }); - this.eventBus.on('presentationmodechanged', function (evt) { - if (evt.switchInProgress) { - return; - } - var previouslyActive = void 0; - if (evt.active) { - previouslyActive = _this3.active; - _this3.switchTool(CursorTool.SELECT); - _this3.activeBeforePresentationMode = previouslyActive; - } else { - previouslyActive = _this3.activeBeforePresentationMode; - _this3.activeBeforePresentationMode = null; - _this3.switchTool(previouslyActive); - } - }); - } - }, { - key: 'activeTool', - get: function get() { - return this.active; - } - }]); - - return PDFCursorTools; -}(); - -exports.CursorTool = CursorTool; -exports.PDFCursorTools = PDFCursorTools; - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFFindController = exports.FindState = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _pdfjsLib = __webpack_require__(1); - -var _ui_utils = __webpack_require__(0); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var FindState = { - FOUND: 0, - NOT_FOUND: 1, - WRAPPED: 2, - PENDING: 3 -}; -var FIND_SCROLL_OFFSET_TOP = -50; -var FIND_SCROLL_OFFSET_LEFT = -400; -var FIND_TIMEOUT = 250; -var CHARACTERS_TO_NORMALIZE = { - '\u2018': '\'', - '\u2019': '\'', - '\u201A': '\'', - '\u201B': '\'', - '\u201C': '"', - '\u201D': '"', - '\u201E': '"', - '\u201F': '"', - '\xBC': '1/4', - '\xBD': '1/2', - '\xBE': '3/4' -}; - -var PDFFindController = function () { - function PDFFindController(_ref) { - var pdfViewer = _ref.pdfViewer; - - _classCallCheck(this, PDFFindController); - - this.pdfViewer = pdfViewer; - this.onUpdateResultsCount = null; - this.onUpdateState = null; - this.reset(); - var replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(''); - this.normalizationRegex = new RegExp('[' + replace + ']', 'g'); - } - - _createClass(PDFFindController, [{ - key: 'reset', - value: function reset() { - var _this = this; - - this.startedTextExtraction = false; - this.extractTextPromises = []; - this.pendingFindMatches = Object.create(null); - this.active = false; - this.pageContents = []; - this.pageMatches = []; - this.pageMatchesLength = null; - this.matchCount = 0; - this.selected = { - pageIdx: -1, - matchIdx: -1 - }; - this.offset = { - pageIdx: null, - matchIdx: null - }; - this.pagesToSearch = null; - this.resumePageIdx = null; - this.state = null; - this.dirtyMatch = false; - this.findTimeout = null; - this._firstPagePromise = new Promise(function (resolve) { - _this.resolveFirstPage = resolve; - }); - } - }, { - key: 'normalize', - value: function normalize(text) { - return text.replace(this.normalizationRegex, function (ch) { - return CHARACTERS_TO_NORMALIZE[ch]; - }); - } - }, { - key: '_prepareMatches', - value: function _prepareMatches(matchesWithLength, matches, matchesLength) { - function isSubTerm(matchesWithLength, currentIndex) { - var currentElem = matchesWithLength[currentIndex]; - var nextElem = matchesWithLength[currentIndex + 1]; - if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) { - currentElem.skipped = true; - return true; - } - for (var i = currentIndex - 1; i >= 0; i--) { - var prevElem = matchesWithLength[i]; - if (prevElem.skipped) { - continue; - } - if (prevElem.match + prevElem.matchLength < currentElem.match) { - break; - } - if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) { - currentElem.skipped = true; - return true; - } - } - return false; - } - matchesWithLength.sort(function (a, b) { - return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match; - }); - for (var i = 0, len = matchesWithLength.length; i < len; i++) { - if (isSubTerm(matchesWithLength, i)) { - continue; - } - matches.push(matchesWithLength[i].match); - matchesLength.push(matchesWithLength[i].matchLength); - } - } - }, { - key: 'calcFindPhraseMatch', - value: function calcFindPhraseMatch(query, pageIndex, pageContent) { - var matches = []; - var queryLen = query.length; - var matchIdx = -queryLen; - while (true) { - matchIdx = pageContent.indexOf(query, matchIdx + queryLen); - if (matchIdx === -1) { - break; - } - matches.push(matchIdx); - } - this.pageMatches[pageIndex] = matches; - } - }, { - key: 'calcFindWordMatch', - value: function calcFindWordMatch(query, pageIndex, pageContent) { - var matchesWithLength = []; - var queryArray = query.match(/\S+/g); - for (var i = 0, len = queryArray.length; i < len; i++) { - var subquery = queryArray[i]; - var subqueryLen = subquery.length; - var matchIdx = -subqueryLen; - while (true) { - matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen); - if (matchIdx === -1) { - break; - } - matchesWithLength.push({ - match: matchIdx, - matchLength: subqueryLen, - skipped: false - }); - } - } - if (!this.pageMatchesLength) { - this.pageMatchesLength = []; - } - this.pageMatchesLength[pageIndex] = []; - this.pageMatches[pageIndex] = []; - this._prepareMatches(matchesWithLength, this.pageMatches[pageIndex], this.pageMatchesLength[pageIndex]); - } - }, { - key: 'calcFindMatch', - value: function calcFindMatch(pageIndex) { - var pageContent = this.normalize(this.pageContents[pageIndex]); - var query = this.normalize(this.state.query); - var caseSensitive = this.state.caseSensitive; - var phraseSearch = this.state.phraseSearch; - var queryLen = query.length; - if (queryLen === 0) { - return; - } - if (!caseSensitive) { - pageContent = pageContent.toLowerCase(); - query = query.toLowerCase(); - } - if (phraseSearch) { - this.calcFindPhraseMatch(query, pageIndex, pageContent); - } else { - this.calcFindWordMatch(query, pageIndex, pageContent); - } - this.updatePage(pageIndex); - if (this.resumePageIdx === pageIndex) { - this.resumePageIdx = null; - this.nextPageMatch(); - } - if (this.pageMatches[pageIndex].length > 0) { - this.matchCount += this.pageMatches[pageIndex].length; - this.updateUIResultsCount(); - } - } - }, { - key: 'extractText', - value: function extractText() { - var _this2 = this; - - if (this.startedTextExtraction) { - return; - } - this.startedTextExtraction = true; - this.pageContents.length = 0; - var promise = Promise.resolve(); - - var _loop = function _loop(i, ii) { - var extractTextCapability = (0, _pdfjsLib.createPromiseCapability)(); - _this2.extractTextPromises[i] = extractTextCapability.promise; - promise = promise.then(function () { - return _this2.pdfViewer.getPageTextContent(i).then(function (textContent) { - var textItems = textContent.items; - var strBuf = []; - for (var j = 0, jj = textItems.length; j < jj; j++) { - strBuf.push(textItems[j].str); - } - _this2.pageContents[i] = strBuf.join(''); - extractTextCapability.resolve(i); - }, function (reason) { - console.error('Unable to get page ' + (i + 1) + ' text content', reason); - _this2.pageContents[i] = ''; - extractTextCapability.resolve(i); - }); - }); - }; - - for (var i = 0, ii = this.pdfViewer.pagesCount; i < ii; i++) { - _loop(i, ii); - } - } - }, { - key: 'executeCommand', - value: function executeCommand(cmd, state) { - var _this3 = this; - - if (this.state === null || cmd !== 'findagain') { - this.dirtyMatch = true; - } - this.state = state; - this.updateUIState(FindState.PENDING); - this._firstPagePromise.then(function () { - _this3.extractText(); - clearTimeout(_this3.findTimeout); - if (cmd === 'find') { - _this3.findTimeout = setTimeout(_this3.nextMatch.bind(_this3), FIND_TIMEOUT); - } else { - _this3.nextMatch(); - } - }); - } - }, { - key: 'updatePage', - value: function updatePage(index) { - if (this.selected.pageIdx === index) { - this.pdfViewer.currentPageNumber = index + 1; - } - var page = this.pdfViewer.getPageView(index); - if (page.textLayer) { - page.textLayer.updateMatches(); - } - } - }, { - key: 'nextMatch', - value: function nextMatch() { - var _this4 = this; - - var previous = this.state.findPrevious; - var currentPageIndex = this.pdfViewer.currentPageNumber - 1; - var numPages = this.pdfViewer.pagesCount; - this.active = true; - if (this.dirtyMatch) { - this.dirtyMatch = false; - this.selected.pageIdx = this.selected.matchIdx = -1; - this.offset.pageIdx = currentPageIndex; - this.offset.matchIdx = null; - this.hadMatch = false; - this.resumePageIdx = null; - this.pageMatches = []; - this.matchCount = 0; - this.pageMatchesLength = null; - for (var i = 0; i < numPages; i++) { - this.updatePage(i); - if (!(i in this.pendingFindMatches)) { - this.pendingFindMatches[i] = true; - this.extractTextPromises[i].then(function (pageIdx) { - delete _this4.pendingFindMatches[pageIdx]; - _this4.calcFindMatch(pageIdx); - }); - } - } - } - if (this.state.query === '') { - this.updateUIState(FindState.FOUND); - return; - } - if (this.resumePageIdx) { - return; - } - var offset = this.offset; - this.pagesToSearch = numPages; - if (offset.matchIdx !== null) { - var numPageMatches = this.pageMatches[offset.pageIdx].length; - if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) { - this.hadMatch = true; - offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1; - this.updateMatch(true); - return; - } - this.advanceOffsetPage(previous); - } - this.nextPageMatch(); - } - }, { - key: 'matchesReady', - value: function matchesReady(matches) { - var offset = this.offset; - var numMatches = matches.length; - var previous = this.state.findPrevious; - if (numMatches) { - this.hadMatch = true; - offset.matchIdx = previous ? numMatches - 1 : 0; - this.updateMatch(true); - return true; - } - this.advanceOffsetPage(previous); - if (offset.wrapped) { - offset.matchIdx = null; - if (this.pagesToSearch < 0) { - this.updateMatch(false); - return true; - } - } - return false; - } - }, { - key: 'updateMatchPosition', - value: function updateMatchPosition(pageIndex, matchIndex, elements, beginIdx) { - if (this.selected.matchIdx === matchIndex && this.selected.pageIdx === pageIndex) { - var spot = { - top: FIND_SCROLL_OFFSET_TOP, - left: FIND_SCROLL_OFFSET_LEFT - }; - (0, _ui_utils.scrollIntoView)(elements[beginIdx], spot, true); - } - } - }, { - key: 'nextPageMatch', - value: function nextPageMatch() { - if (this.resumePageIdx !== null) { - console.error('There can only be one pending page.'); - } - var matches = null; - do { - var pageIdx = this.offset.pageIdx; - matches = this.pageMatches[pageIdx]; - if (!matches) { - this.resumePageIdx = pageIdx; - break; - } - } while (!this.matchesReady(matches)); - } - }, { - key: 'advanceOffsetPage', - value: function advanceOffsetPage(previous) { - var offset = this.offset; - var numPages = this.extractTextPromises.length; - offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1; - offset.matchIdx = null; - this.pagesToSearch--; - if (offset.pageIdx >= numPages || offset.pageIdx < 0) { - offset.pageIdx = previous ? numPages - 1 : 0; - offset.wrapped = true; - } - } - }, { - key: 'updateMatch', - value: function updateMatch() { - var found = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - var state = FindState.NOT_FOUND; - var wrapped = this.offset.wrapped; - this.offset.wrapped = false; - if (found) { - var previousPage = this.selected.pageIdx; - this.selected.pageIdx = this.offset.pageIdx; - this.selected.matchIdx = this.offset.matchIdx; - state = wrapped ? FindState.WRAPPED : FindState.FOUND; - if (previousPage !== -1 && previousPage !== this.selected.pageIdx) { - this.updatePage(previousPage); - } - } - this.updateUIState(state, this.state.findPrevious); - if (this.selected.pageIdx !== -1) { - this.updatePage(this.selected.pageIdx); - } - } - }, { - key: 'updateUIResultsCount', - value: function updateUIResultsCount() { - if (this.onUpdateResultsCount) { - this.onUpdateResultsCount(this.matchCount); - } - } - }, { - key: 'updateUIState', - value: function updateUIState(state, previous) { - if (this.onUpdateState) { - this.onUpdateState(state, previous, this.matchCount); - } - } - }]); - - return PDFFindController; -}(); - -exports.FindState = FindState; -exports.PDFFindController = PDFFindController; - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.GenericCom = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _app = __webpack_require__(4); - -var _preferences = __webpack_require__(28); - -var _download_manager = __webpack_require__(12); - -var _genericl10n = __webpack_require__(13); - -var _pdfjsLib = __webpack_require__(1); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -; -var GenericCom = {}; - -var GenericPreferences = function (_BasePreferences) { - _inherits(GenericPreferences, _BasePreferences); - - function GenericPreferences() { - _classCallCheck(this, GenericPreferences); - - return _possibleConstructorReturn(this, (GenericPreferences.__proto__ || Object.getPrototypeOf(GenericPreferences)).apply(this, arguments)); - } - - _createClass(GenericPreferences, [{ - key: '_writeToStorage', - value: function _writeToStorage(prefObj) { - return new Promise(function (resolve) { - localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj)); - resolve(); - }); - } - }, { - key: '_readFromStorage', - value: function _readFromStorage(prefObj) { - return new Promise(function (resolve) { - var readPrefs = JSON.parse(localStorage.getItem('pdfjs.preferences')); - resolve(readPrefs); - }); - } - }]); - - return GenericPreferences; -}(_preferences.BasePreferences); - -var GenericExternalServices = Object.create(_app.DefaultExternalServices); -GenericExternalServices.createDownloadManager = function () { - return new _download_manager.DownloadManager(); -}; -GenericExternalServices.createPreferences = function () { - return new GenericPreferences(); -}; -GenericExternalServices.createL10n = function () { - return new _genericl10n.GenericL10n(_pdfjsLib.PDFJS.locale); -}; -_app.PDFViewerApplication.externalServices = GenericExternalServices; -exports.GenericCom = GenericCom; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFPrintService = undefined; - -var _ui_utils = __webpack_require__(0); - -var _app = __webpack_require__(4); - -var _pdfjsLib = __webpack_require__(1); - -var activeService = null; -var overlayManager = null; -function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) { - var scratchCanvas = activeService.scratchCanvas; - var PRINT_RESOLUTION = 150; - var PRINT_UNITS = PRINT_RESOLUTION / 72.0; - scratchCanvas.width = Math.floor(size.width * PRINT_UNITS); - scratchCanvas.height = Math.floor(size.height * PRINT_UNITS); - var width = Math.floor(size.width * _ui_utils.CSS_UNITS) + 'px'; - var height = Math.floor(size.height * _ui_utils.CSS_UNITS) + 'px'; - var ctx = scratchCanvas.getContext('2d'); - ctx.save(); - ctx.fillStyle = 'rgb(255, 255, 255)'; - ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height); - ctx.restore(); - return pdfDocument.getPage(pageNumber).then(function (pdfPage) { - var renderContext = { - canvasContext: ctx, - transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0], - viewport: pdfPage.getViewport(1, size.rotation), - intent: 'print' - }; - return pdfPage.render(renderContext).promise; - }).then(function () { - return { - width: width, - height: height - }; - }); -} -function PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n) { - this.pdfDocument = pdfDocument; - this.pagesOverview = pagesOverview; - this.printContainer = printContainer; - this.l10n = l10n || _ui_utils.NullL10n; - this.currentPage = -1; - this.scratchCanvas = document.createElement('canvas'); -} -PDFPrintService.prototype = { - layout: function layout() { - this.throwIfInactive(); - var body = document.querySelector('body'); - body.setAttribute('data-pdfjsprinting', true); - var hasEqualPageSizes = this.pagesOverview.every(function (size) { - return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height; - }, this); - if (!hasEqualPageSizes) { - console.warn('Not all pages have the same size. The printed ' + 'result may be incorrect!'); - } - this.pageStyleSheet = document.createElement('style'); - var pageSize = this.pagesOverview[0]; - this.pageStyleSheet.textContent = '@supports ((size:A4) and (size:1pt 1pt)) {' + '@page { size: ' + pageSize.width + 'pt ' + pageSize.height + 'pt;}' + '}'; - body.appendChild(this.pageStyleSheet); - }, - destroy: function destroy() { - if (activeService !== this) { - return; - } - this.printContainer.textContent = ''; - if (this.pageStyleSheet && this.pageStyleSheet.parentNode) { - this.pageStyleSheet.parentNode.removeChild(this.pageStyleSheet); - this.pageStyleSheet = null; - } - this.scratchCanvas.width = this.scratchCanvas.height = 0; - this.scratchCanvas = null; - activeService = null; - ensureOverlay().then(function () { - if (overlayManager.active !== 'printServiceOverlay') { - return; - } - overlayManager.close('printServiceOverlay'); - }); - }, - renderPages: function renderPages() { - var _this = this; - - var pageCount = this.pagesOverview.length; - var renderNextPage = function renderNextPage(resolve, reject) { - _this.throwIfInactive(); - if (++_this.currentPage >= pageCount) { - renderProgress(pageCount, pageCount, _this.l10n); - resolve(); - return; - } - var index = _this.currentPage; - renderProgress(index, pageCount, _this.l10n); - renderPage(_this, _this.pdfDocument, index + 1, _this.pagesOverview[index]).then(_this.useRenderedPage.bind(_this)).then(function () { - renderNextPage(resolve, reject); - }, reject); - }; - return new Promise(renderNextPage); - }, - useRenderedPage: function useRenderedPage(printItem) { - this.throwIfInactive(); - var img = document.createElement('img'); - img.style.width = printItem.width; - img.style.height = printItem.height; - var scratchCanvas = this.scratchCanvas; - if ('toBlob' in scratchCanvas && !_pdfjsLib.PDFJS.disableCreateObjectURL) { - scratchCanvas.toBlob(function (blob) { - img.src = URL.createObjectURL(blob); - }); - } else { - img.src = scratchCanvas.toDataURL(); - } - var wrapper = document.createElement('div'); - wrapper.appendChild(img); - this.printContainer.appendChild(wrapper); - return new Promise(function (resolve, reject) { - img.onload = resolve; - img.onerror = reject; - }); - }, - performPrint: function performPrint() { - var _this2 = this; - - this.throwIfInactive(); - return new Promise(function (resolve) { - setTimeout(function () { - if (!_this2.active) { - resolve(); - return; - } - print.call(window); - setTimeout(resolve, 20); - }, 0); - }); - }, - - get active() { - return this === activeService; - }, - throwIfInactive: function throwIfInactive() { - if (!this.active) { - throw new Error('This print request was cancelled or completed.'); - } - } -}; -var print = window.print; -window.print = function print() { - if (activeService) { - console.warn('Ignored window.print() because of a pending print job.'); - return; - } - ensureOverlay().then(function () { - if (activeService) { - overlayManager.open('printServiceOverlay'); - } - }); - try { - dispatchEvent('beforeprint'); - } finally { - if (!activeService) { - console.error('Expected print service to be initialized.'); - ensureOverlay().then(function () { - if (overlayManager.active === 'printServiceOverlay') { - overlayManager.close('printServiceOverlay'); - } - }); - return; - } - var activeServiceOnEntry = activeService; - activeService.renderPages().then(function () { - return activeServiceOnEntry.performPrint(); - }).catch(function () {}).then(function () { - if (activeServiceOnEntry.active) { - abort(); - } - }); - } -}; -function dispatchEvent(eventType) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent(eventType, false, false, 'custom'); - window.dispatchEvent(event); -} -function abort() { - if (activeService) { - activeService.destroy(); - dispatchEvent('afterprint'); - } -} -function renderProgress(index, total, l10n) { - var progressContainer = document.getElementById('printServiceOverlay'); - var progress = Math.round(100 * index / total); - var progressBar = progressContainer.querySelector('progress'); - var progressPerc = progressContainer.querySelector('.relative-progress'); - progressBar.value = progress; - l10n.get('print_progress_percent', { progress: progress }, progress + '%').then(function (msg) { - progressPerc.textContent = msg; - }); -} -var hasAttachEvent = !!document.attachEvent; -window.addEventListener('keydown', function (event) { - if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) { - window.print(); - if (hasAttachEvent) { - return; - } - event.preventDefault(); - if (event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } else { - event.stopPropagation(); - } - return; - } -}, true); -if (hasAttachEvent) { - document.attachEvent('onkeydown', function (event) { - event = event || window.event; - if (event.keyCode === 80 && event.ctrlKey) { - event.keyCode = 0; - return false; - } - }); -} -if ('onbeforeprint' in window) { - var stopPropagationIfNeeded = function stopPropagationIfNeeded(event) { - if (event.detail !== 'custom' && event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } - }; - window.addEventListener('beforeprint', stopPropagationIfNeeded); - window.addEventListener('afterprint', stopPropagationIfNeeded); -} -var overlayPromise; -function ensureOverlay() { - if (!overlayPromise) { - overlayManager = _app.PDFViewerApplication.overlayManager; - if (!overlayManager) { - throw new Error('The overlay manager has not yet been initialized.'); - } - overlayPromise = overlayManager.register('printServiceOverlay', document.getElementById('printServiceOverlay'), abort, true); - document.getElementById('printCancel').onclick = abort; - } - return overlayPromise; -} -_app.PDFPrintServiceFactory.instance = { - supportsPrinting: true, - createPrintService: function createPrintService(pdfDocument, pagesOverview, printContainer, l10n) { - if (activeService) { - throw new Error('The print service is created and active.'); - } - activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n); - return activeService; - } -}; -exports.PDFPrintService = PDFPrintService; - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -document.webL10n = function (window, document, undefined) { - var gL10nData = {}; - var gTextData = ''; - var gTextProp = 'textContent'; - var gLanguage = ''; - var gMacros = {}; - var gReadyState = 'loading'; - var gAsyncResourceLoading = true; - function getL10nResourceLinks() { - return document.querySelectorAll('link[type="application/l10n"]'); - } - function getL10nDictionary() { - var script = document.querySelector('script[type="application/l10n"]'); - return script ? JSON.parse(script.innerHTML) : null; - } - function getTranslatableChildren(element) { - return element ? element.querySelectorAll('*[data-l10n-id]') : []; - } - function getL10nAttributes(element) { - if (!element) return {}; - var l10nId = element.getAttribute('data-l10n-id'); - var l10nArgs = element.getAttribute('data-l10n-args'); - var args = {}; - if (l10nArgs) { - try { - args = JSON.parse(l10nArgs); - } catch (e) { - console.warn('could not parse arguments for #' + l10nId); - } - } - return { - id: l10nId, - args: args - }; - } - function fireL10nReadyEvent(lang) { - var evtObject = document.createEvent('Event'); - evtObject.initEvent('localized', true, false); - evtObject.language = lang; - document.dispatchEvent(evtObject); - } - function xhrLoadText(url, onSuccess, onFailure) { - onSuccess = onSuccess || function _onSuccess(data) {}; - onFailure = onFailure || function _onFailure() {}; - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, gAsyncResourceLoading); - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=utf-8'); - } - xhr.onreadystatechange = function () { - if (xhr.readyState == 4) { - if (xhr.status == 200 || xhr.status === 0) { - onSuccess(xhr.responseText); - } else { - onFailure(); - } - } - }; - xhr.onerror = onFailure; - xhr.ontimeout = onFailure; - try { - xhr.send(null); - } catch (e) { - onFailure(); - } - } - function parseResource(href, lang, successCallback, failureCallback) { - var baseURL = href.replace(/[^\/]*$/, '') || './'; - function evalString(text) { - if (text.lastIndexOf('\\') < 0) return text; - return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'"); - } - function parseProperties(text, parsedPropertiesCallback) { - var dictionary = {}; - var reBlank = /^\s*|\s*$/; - var reComment = /^\s*#|^\s*$/; - var reSection = /^\s*\[(.*)\]\s*$/; - var reImport = /^\s*@import\s+url\((.*)\)\s*$/i; - var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; - function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) { - var entries = rawText.replace(reBlank, '').split(/[\r\n]+/); - var currentLang = '*'; - var genericLang = lang.split('-', 1)[0]; - var skipLang = false; - var match = ''; - function nextEntry() { - while (true) { - if (!entries.length) { - parsedRawLinesCallback(); - return; - } - var line = entries.shift(); - if (reComment.test(line)) continue; - if (extendedSyntax) { - match = reSection.exec(line); - if (match) { - currentLang = match[1].toLowerCase(); - skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang; - continue; - } else if (skipLang) { - continue; - } - match = reImport.exec(line); - if (match) { - loadImport(baseURL + match[1], nextEntry); - return; - } - } - var tmp = line.match(reSplit); - if (tmp && tmp.length == 3) { - dictionary[tmp[1]] = evalString(tmp[2]); - } - } - } - nextEntry(); - } - function loadImport(url, callback) { - xhrLoadText(url, function (content) { - parseRawLines(content, false, callback); - }, function () { - console.warn(url + ' not found.'); - callback(); - }); - } - parseRawLines(text, true, function () { - parsedPropertiesCallback(dictionary); - }); - } - xhrLoadText(href, function (response) { - gTextData += response; - parseProperties(response, function (data) { - for (var key in data) { - var id, - prop, - index = key.lastIndexOf('.'); - if (index > 0) { - id = key.substring(0, index); - prop = key.substr(index + 1); - } else { - id = key; - prop = gTextProp; - } - if (!gL10nData[id]) { - gL10nData[id] = {}; - } - gL10nData[id][prop] = data[key]; - } - if (successCallback) { - successCallback(); - } - }); - }, failureCallback); - } - function loadLocale(lang, callback) { - if (lang) { - lang = lang.toLowerCase(); - } - callback = callback || function _callback() {}; - clear(); - gLanguage = lang; - var langLinks = getL10nResourceLinks(); - var langCount = langLinks.length; - if (langCount === 0) { - var dict = getL10nDictionary(); - if (dict && dict.locales && dict.default_locale) { - console.log('using the embedded JSON directory, early way out'); - gL10nData = dict.locales[lang]; - if (!gL10nData) { - var defaultLocale = dict.default_locale.toLowerCase(); - for (var anyCaseLang in dict.locales) { - anyCaseLang = anyCaseLang.toLowerCase(); - if (anyCaseLang === lang) { - gL10nData = dict.locales[lang]; - break; - } else if (anyCaseLang === defaultLocale) { - gL10nData = dict.locales[defaultLocale]; - } - } - } - callback(); - } else { - console.log('no resource to load, early way out'); - } - fireL10nReadyEvent(lang); - gReadyState = 'complete'; - return; - } - var onResourceLoaded = null; - var gResourceCount = 0; - onResourceLoaded = function onResourceLoaded() { - gResourceCount++; - if (gResourceCount >= langCount) { - callback(); - fireL10nReadyEvent(lang); - gReadyState = 'complete'; - } - }; - function L10nResourceLink(link) { - var href = link.href; - this.load = function (lang, callback) { - parseResource(href, lang, callback, function () { - console.warn(href + ' not found.'); - console.warn('"' + lang + '" resource not found'); - gLanguage = ''; - callback(); - }); - }; - } - for (var i = 0; i < langCount; i++) { - var resource = new L10nResourceLink(langLinks[i]); - resource.load(lang, onResourceLoaded); - } - } - function clear() { - gL10nData = {}; - gTextData = ''; - gLanguage = ''; - } - function getPluralRules(lang) { - var locales2rules = { - 'af': 3, - 'ak': 4, - 'am': 4, - 'ar': 1, - 'asa': 3, - 'az': 0, - 'be': 11, - 'bem': 3, - 'bez': 3, - 'bg': 3, - 'bh': 4, - 'bm': 0, - 'bn': 3, - 'bo': 0, - 'br': 20, - 'brx': 3, - 'bs': 11, - 'ca': 3, - 'cgg': 3, - 'chr': 3, - 'cs': 12, - 'cy': 17, - 'da': 3, - 'de': 3, - 'dv': 3, - 'dz': 0, - 'ee': 3, - 'el': 3, - 'en': 3, - 'eo': 3, - 'es': 3, - 'et': 3, - 'eu': 3, - 'fa': 0, - 'ff': 5, - 'fi': 3, - 'fil': 4, - 'fo': 3, - 'fr': 5, - 'fur': 3, - 'fy': 3, - 'ga': 8, - 'gd': 24, - 'gl': 3, - 'gsw': 3, - 'gu': 3, - 'guw': 4, - 'gv': 23, - 'ha': 3, - 'haw': 3, - 'he': 2, - 'hi': 4, - 'hr': 11, - 'hu': 0, - 'id': 0, - 'ig': 0, - 'ii': 0, - 'is': 3, - 'it': 3, - 'iu': 7, - 'ja': 0, - 'jmc': 3, - 'jv': 0, - 'ka': 0, - 'kab': 5, - 'kaj': 3, - 'kcg': 3, - 'kde': 0, - 'kea': 0, - 'kk': 3, - 'kl': 3, - 'km': 0, - 'kn': 0, - 'ko': 0, - 'ksb': 3, - 'ksh': 21, - 'ku': 3, - 'kw': 7, - 'lag': 18, - 'lb': 3, - 'lg': 3, - 'ln': 4, - 'lo': 0, - 'lt': 10, - 'lv': 6, - 'mas': 3, - 'mg': 4, - 'mk': 16, - 'ml': 3, - 'mn': 3, - 'mo': 9, - 'mr': 3, - 'ms': 0, - 'mt': 15, - 'my': 0, - 'nah': 3, - 'naq': 7, - 'nb': 3, - 'nd': 3, - 'ne': 3, - 'nl': 3, - 'nn': 3, - 'no': 3, - 'nr': 3, - 'nso': 4, - 'ny': 3, - 'nyn': 3, - 'om': 3, - 'or': 3, - 'pa': 3, - 'pap': 3, - 'pl': 13, - 'ps': 3, - 'pt': 3, - 'rm': 3, - 'ro': 9, - 'rof': 3, - 'ru': 11, - 'rwk': 3, - 'sah': 0, - 'saq': 3, - 'se': 7, - 'seh': 3, - 'ses': 0, - 'sg': 0, - 'sh': 11, - 'shi': 19, - 'sk': 12, - 'sl': 14, - 'sma': 7, - 'smi': 7, - 'smj': 7, - 'smn': 7, - 'sms': 7, - 'sn': 3, - 'so': 3, - 'sq': 3, - 'sr': 11, - 'ss': 3, - 'ssy': 3, - 'st': 3, - 'sv': 3, - 'sw': 3, - 'syr': 3, - 'ta': 3, - 'te': 3, - 'teo': 3, - 'th': 0, - 'ti': 4, - 'tig': 3, - 'tk': 3, - 'tl': 4, - 'tn': 3, - 'to': 0, - 'tr': 0, - 'ts': 3, - 'tzm': 22, - 'uk': 11, - 'ur': 3, - 've': 3, - 'vi': 0, - 'vun': 3, - 'wa': 4, - 'wae': 3, - 'wo': 0, - 'xh': 3, - 'xog': 3, - 'yo': 0, - 'zh': 0, - 'zu': 3 - }; - function isIn(n, list) { - return list.indexOf(n) !== -1; - } - function isBetween(n, start, end) { - return start <= n && n <= end; - } - var pluralRules = { - '0': function _(n) { - return 'other'; - }, - '1': function _(n) { - if (isBetween(n % 100, 3, 10)) return 'few'; - if (n === 0) return 'zero'; - if (isBetween(n % 100, 11, 99)) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '2': function _(n) { - if (n !== 0 && n % 10 === 0) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '3': function _(n) { - if (n == 1) return 'one'; - return 'other'; - }, - '4': function _(n) { - if (isBetween(n, 0, 1)) return 'one'; - return 'other'; - }, - '5': function _(n) { - if (isBetween(n, 0, 2) && n != 2) return 'one'; - return 'other'; - }, - '6': function _(n) { - if (n === 0) return 'zero'; - if (n % 10 == 1 && n % 100 != 11) return 'one'; - return 'other'; - }, - '7': function _(n) { - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '8': function _(n) { - if (isBetween(n, 3, 6)) return 'few'; - if (isBetween(n, 7, 10)) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '9': function _(n) { - if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few'; - if (n == 1) return 'one'; - return 'other'; - }, - '10': function _(n) { - if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few'; - if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one'; - return 'other'; - }, - '11': function _(n) { - if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; - if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many'; - if (n % 10 == 1 && n % 100 != 11) return 'one'; - return 'other'; - }, - '12': function _(n) { - if (isBetween(n, 2, 4)) return 'few'; - if (n == 1) return 'one'; - return 'other'; - }, - '13': function _(n) { - if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; - if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many'; - if (n == 1) return 'one'; - return 'other'; - }, - '14': function _(n) { - if (isBetween(n % 100, 3, 4)) return 'few'; - if (n % 100 == 2) return 'two'; - if (n % 100 == 1) return 'one'; - return 'other'; - }, - '15': function _(n) { - if (n === 0 || isBetween(n % 100, 2, 10)) return 'few'; - if (isBetween(n % 100, 11, 19)) return 'many'; - if (n == 1) return 'one'; - return 'other'; - }, - '16': function _(n) { - if (n % 10 == 1 && n != 11) return 'one'; - return 'other'; - }, - '17': function _(n) { - if (n == 3) return 'few'; - if (n === 0) return 'zero'; - if (n == 6) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '18': function _(n) { - if (n === 0) return 'zero'; - if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one'; - return 'other'; - }, - '19': function _(n) { - if (isBetween(n, 2, 10)) return 'few'; - if (isBetween(n, 0, 1)) return 'one'; - return 'other'; - }, - '20': function _(n) { - if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few'; - if (n % 1000000 === 0 && n !== 0) return 'many'; - if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two'; - if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one'; - return 'other'; - }, - '21': function _(n) { - if (n === 0) return 'zero'; - if (n == 1) return 'one'; - return 'other'; - }, - '22': function _(n) { - if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one'; - return 'other'; - }, - '23': function _(n) { - if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one'; - return 'other'; - }, - '24': function _(n) { - if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few'; - if (isIn(n, [2, 12])) return 'two'; - if (isIn(n, [1, 11])) return 'one'; - return 'other'; - } - }; - var index = locales2rules[lang.replace(/-.*$/, '')]; - if (!(index in pluralRules)) { - console.warn('plural form unknown for [' + lang + ']'); - return function () { - return 'other'; - }; - } - return pluralRules[index]; - } - gMacros.plural = function (str, param, key, prop) { - var n = parseFloat(param); - if (isNaN(n)) return str; - if (prop != gTextProp) return str; - if (!gMacros._pluralRules) { - gMacros._pluralRules = getPluralRules(gLanguage); - } - var index = '[' + gMacros._pluralRules(n) + ']'; - if (n === 0 && key + '[zero]' in gL10nData) { - str = gL10nData[key + '[zero]'][prop]; - } else if (n == 1 && key + '[one]' in gL10nData) { - str = gL10nData[key + '[one]'][prop]; - } else if (n == 2 && key + '[two]' in gL10nData) { - str = gL10nData[key + '[two]'][prop]; - } else if (key + index in gL10nData) { - str = gL10nData[key + index][prop]; - } else if (key + '[other]' in gL10nData) { - str = gL10nData[key + '[other]'][prop]; - } - return str; - }; - function getL10nData(key, args, fallback) { - var data = gL10nData[key]; - if (!data) { - console.warn('#' + key + ' is undefined.'); - if (!fallback) { - return null; - } - data = fallback; - } - var rv = {}; - for (var prop in data) { - var str = data[prop]; - str = substIndexes(str, args, key, prop); - str = substArguments(str, args, key); - rv[prop] = str; - } - return rv; - } - function substIndexes(str, args, key, prop) { - var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/; - var reMatch = reIndex.exec(str); - if (!reMatch || !reMatch.length) return str; - var macroName = reMatch[1]; - var paramName = reMatch[2]; - var param; - if (args && paramName in args) { - param = args[paramName]; - } else if (paramName in gL10nData) { - param = gL10nData[paramName]; - } - if (macroName in gMacros) { - var macro = gMacros[macroName]; - str = macro(str, param, key, prop); - } - return str; - } - function substArguments(str, args, key) { - var reArgs = /\{\{\s*(.+?)\s*\}\}/g; - return str.replace(reArgs, function (matched_text, arg) { - if (args && arg in args) { - return args[arg]; - } - if (arg in gL10nData) { - return gL10nData[arg]; - } - console.log('argument {{' + arg + '}} for #' + key + ' is undefined.'); - return matched_text; - }); - } - function translateElement(element) { - var l10n = getL10nAttributes(element); - if (!l10n.id) return; - var data = getL10nData(l10n.id, l10n.args); - if (!data) { - console.warn('#' + l10n.id + ' is undefined.'); - return; - } - if (data[gTextProp]) { - if (getChildElementCount(element) === 0) { - element[gTextProp] = data[gTextProp]; - } else { - var children = element.childNodes; - var found = false; - for (var i = 0, l = children.length; i < l; i++) { - if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) { - if (found) { - children[i].nodeValue = ''; - } else { - children[i].nodeValue = data[gTextProp]; - found = true; - } - } - } - if (!found) { - var textNode = document.createTextNode(data[gTextProp]); - element.insertBefore(textNode, element.firstChild); - } - } - delete data[gTextProp]; - } - for (var k in data) { - element[k] = data[k]; - } - } - function getChildElementCount(element) { - if (element.children) { - return element.children.length; - } - if (typeof element.childElementCount !== 'undefined') { - return element.childElementCount; - } - var count = 0; - for (var i = 0; i < element.childNodes.length; i++) { - count += element.nodeType === 1 ? 1 : 0; - } - return count; - } - function translateFragment(element) { - element = element || document.documentElement; - var children = getTranslatableChildren(element); - var elementCount = children.length; - for (var i = 0; i < elementCount; i++) { - translateElement(children[i]); - } - translateElement(element); - } - return { - get: function get(key, args, fallbackString) { - var index = key.lastIndexOf('.'); - var prop = gTextProp; - if (index > 0) { - prop = key.substr(index + 1); - key = key.substring(0, index); - } - var fallback; - if (fallbackString) { - fallback = {}; - fallback[prop] = fallbackString; - } - var data = getL10nData(key, args, fallback); - if (data && prop in data) { - return data[prop]; - } - return '{{' + key + '}}'; - }, - getData: function getData() { - return gL10nData; - }, - getText: function getText() { - return gTextData; - }, - getLanguage: function getLanguage() { - return gLanguage; - }, - setLanguage: function setLanguage(lang, callback) { - loadLocale(lang, function () { - if (callback) callback(); - }); - }, - getDirection: function getDirection() { - var rtlList = ['ar', 'he', 'fa', 'ps', 'ur']; - var shortCode = gLanguage.split('-', 1)[0]; - return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr'; - }, - translate: translateFragment, - getReadyState: function getReadyState() { - return gReadyState; - }, - ready: function ready(callback) { - if (!callback) { - return; - } else if (gReadyState == 'complete' || gReadyState == 'interactive') { - window.setTimeout(function () { - callback(); - }); - } else if (document.addEventListener) { - document.addEventListener('localized', function once() { - document.removeEventListener('localized', once); - callback(); - }); - } - } - }; -}(window, document); - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _pdfjsLib = __webpack_require__(1); - -var _ui_utils = __webpack_require__(0); - -var _pdf_link_service = __webpack_require__(5); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var AnnotationLayerBuilder = function () { - function AnnotationLayerBuilder(_ref) { - var pageDiv = _ref.pageDiv, - pdfPage = _ref.pdfPage, - linkService = _ref.linkService, - downloadManager = _ref.downloadManager, - _ref$renderInteractiv = _ref.renderInteractiveForms, - renderInteractiveForms = _ref$renderInteractiv === undefined ? false : _ref$renderInteractiv, - _ref$l10n = _ref.l10n, - l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n; - - _classCallCheck(this, AnnotationLayerBuilder); - - this.pageDiv = pageDiv; - this.pdfPage = pdfPage; - this.linkService = linkService; - this.downloadManager = downloadManager; - this.renderInteractiveForms = renderInteractiveForms; - this.l10n = l10n; - this.div = null; - } - - _createClass(AnnotationLayerBuilder, [{ - key: 'render', - value: function render(viewport) { - var _this = this; - - var intent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'display'; - - this.pdfPage.getAnnotations({ intent: intent }).then(function (annotations) { - var parameters = { - viewport: viewport.clone({ dontFlip: true }), - div: _this.div, - annotations: annotations, - page: _this.pdfPage, - renderInteractiveForms: _this.renderInteractiveForms, - linkService: _this.linkService, - downloadManager: _this.downloadManager - }; - if (_this.div) { - _pdfjsLib.AnnotationLayer.update(parameters); - } else { - if (annotations.length === 0) { - return; - } - _this.div = document.createElement('div'); - _this.div.className = 'annotationLayer'; - _this.pageDiv.appendChild(_this.div); - parameters.div = _this.div; - _pdfjsLib.AnnotationLayer.render(parameters); - _this.l10n.translate(_this.div); - } - }); - } - }, { - key: 'hide', - value: function hide() { - if (!this.div) { - return; - } - this.div.setAttribute('hidden', 'true'); - } - }]); - - return AnnotationLayerBuilder; -}(); - -var DefaultAnnotationLayerFactory = function () { - function DefaultAnnotationLayerFactory() { - _classCallCheck(this, DefaultAnnotationLayerFactory); - } - - _createClass(DefaultAnnotationLayerFactory, [{ - key: 'createAnnotationLayerBuilder', - value: function createAnnotationLayerBuilder(pageDiv, pdfPage) { - var renderInteractiveForms = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var l10n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _ui_utils.NullL10n; - - return new AnnotationLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage, - renderInteractiveForms: renderInteractiveForms, - linkService: new _pdf_link_service.SimpleLinkService(), - l10n: l10n - }); - } - }]); - - return DefaultAnnotationLayerFactory; -}(); - -exports.AnnotationLayerBuilder = AnnotationLayerBuilder; -exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory; - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.DownloadManager = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _pdfjsLib = __webpack_require__(1); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -; -function _download(blobUrl, filename) { - var a = document.createElement('a'); - if (a.click) { - a.href = blobUrl; - a.target = '_parent'; - if ('download' in a) { - a.download = filename; - } - (document.body || document.documentElement).appendChild(a); - a.click(); - a.parentNode.removeChild(a); - } else { - if (window.top === window && blobUrl.split('#')[0] === window.location.href.split('#')[0]) { - var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&'; - blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&'); - } - window.open(blobUrl, '_parent'); - } -} - -var DownloadManager = function () { - function DownloadManager() { - _classCallCheck(this, DownloadManager); - } - - _createClass(DownloadManager, [{ - key: 'downloadUrl', - value: function downloadUrl(url, filename) { - if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, 'http://example.com')) { - return; - } - _download(url + '#pdfjs.action=download', filename); - } - }, { - key: 'downloadData', - value: function downloadData(data, filename, contentType) { - if (navigator.msSaveBlob) { - return navigator.msSaveBlob(new Blob([data], { type: contentType }), filename); - } - var blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, _pdfjsLib.PDFJS.disableCreateObjectURL); - _download(blobUrl, filename); - } - }, { - key: 'download', - value: function download(blob, url, filename) { - if (navigator.msSaveBlob) { - if (!navigator.msSaveBlob(blob, filename)) { - this.downloadUrl(url, filename); - } - return; - } - if (_pdfjsLib.PDFJS.disableCreateObjectURL) { - this.downloadUrl(url, filename); - return; - } - var blobUrl = URL.createObjectURL(blob); - _download(blobUrl, filename); - } - }]); - - return DownloadManager; -}(); - -exports.DownloadManager = DownloadManager; - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.GenericL10n = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -__webpack_require__(10); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var webL10n = document.webL10n; - -var GenericL10n = function () { - function GenericL10n(lang) { - _classCallCheck(this, GenericL10n); - - this._lang = lang; - this._ready = new Promise(function (resolve, reject) { - webL10n.setLanguage(lang, function () { - resolve(webL10n); - }); - }); - } - - _createClass(GenericL10n, [{ - key: 'getDirection', - value: function getDirection() { - return this._ready.then(function (l10n) { - return l10n.getDirection(); - }); - } - }, { - key: 'get', - value: function get(property, args, fallback) { - return this._ready.then(function (l10n) { - return l10n.get(property, args, fallback); - }); - } - }, { - key: 'translate', - value: function translate(element) { - return this._ready.then(function (l10n) { - return l10n.translate(element); - }); - } - }]); - - return GenericL10n; -}(); - -exports.GenericL10n = GenericL10n; - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -function GrabToPan(options) { - this.element = options.element; - this.document = options.element.ownerDocument; - if (typeof options.ignoreTarget === 'function') { - this.ignoreTarget = options.ignoreTarget; - } - this.onActiveChanged = options.onActiveChanged; - this.activate = this.activate.bind(this); - this.deactivate = this.deactivate.bind(this); - this.toggle = this.toggle.bind(this); - this._onmousedown = this._onmousedown.bind(this); - this._onmousemove = this._onmousemove.bind(this); - this._endPan = this._endPan.bind(this); - var overlay = this.overlay = document.createElement('div'); - overlay.className = 'grab-to-pan-grabbing'; -} -GrabToPan.prototype = { - CSS_CLASS_GRAB: 'grab-to-pan-grab', - activate: function GrabToPan_activate() { - if (!this.active) { - this.active = true; - this.element.addEventListener('mousedown', this._onmousedown, true); - this.element.classList.add(this.CSS_CLASS_GRAB); - if (this.onActiveChanged) { - this.onActiveChanged(true); - } - } - }, - deactivate: function GrabToPan_deactivate() { - if (this.active) { - this.active = false; - this.element.removeEventListener('mousedown', this._onmousedown, true); - this._endPan(); - this.element.classList.remove(this.CSS_CLASS_GRAB); - if (this.onActiveChanged) { - this.onActiveChanged(false); - } - } - }, - toggle: function GrabToPan_toggle() { - if (this.active) { - this.deactivate(); - } else { - this.activate(); - } - }, - ignoreTarget: function GrabToPan_ignoreTarget(node) { - return node[matchesSelector]('a[href], a[href] *, input, textarea, button, button *, select, option'); - }, - _onmousedown: function GrabToPan__onmousedown(event) { - if (event.button !== 0 || this.ignoreTarget(event.target)) { - return; - } - if (event.originalTarget) { - try { - event.originalTarget.tagName; - } catch (e) { - return; - } - } - this.scrollLeftStart = this.element.scrollLeft; - this.scrollTopStart = this.element.scrollTop; - this.clientXStart = event.clientX; - this.clientYStart = event.clientY; - this.document.addEventListener('mousemove', this._onmousemove, true); - this.document.addEventListener('mouseup', this._endPan, true); - this.element.addEventListener('scroll', this._endPan, true); - event.preventDefault(); - event.stopPropagation(); - var focusedElement = document.activeElement; - if (focusedElement && !focusedElement.contains(event.target)) { - focusedElement.blur(); - } - }, - _onmousemove: function GrabToPan__onmousemove(event) { - this.element.removeEventListener('scroll', this._endPan, true); - if (isLeftMouseReleased(event)) { - this._endPan(); - return; - } - var xDiff = event.clientX - this.clientXStart; - var yDiff = event.clientY - this.clientYStart; - var scrollTop = this.scrollTopStart - yDiff; - var scrollLeft = this.scrollLeftStart - xDiff; - if (this.element.scrollTo) { - this.element.scrollTo({ - top: scrollTop, - left: scrollLeft, - behavior: 'instant' - }); - } else { - this.element.scrollTop = scrollTop; - this.element.scrollLeft = scrollLeft; - } - if (!this.overlay.parentNode) { - document.body.appendChild(this.overlay); - } - }, - _endPan: function GrabToPan__endPan() { - this.element.removeEventListener('scroll', this._endPan, true); - this.document.removeEventListener('mousemove', this._onmousemove, true); - this.document.removeEventListener('mouseup', this._endPan, true); - this.overlay.remove(); - } -}; -var matchesSelector; -['webkitM', 'mozM', 'msM', 'oM', 'm'].some(function (prefix) { - var name = prefix + 'atches'; - if (name in document.documentElement) { - matchesSelector = name; - } - name += 'Selector'; - if (name in document.documentElement) { - matchesSelector = name; - } - return matchesSelector; -}); -var isNotIEorIsIE10plus = !document.documentMode || document.documentMode > 9; -var chrome = window.chrome; -var isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app); -var isSafari6plus = /Apple/.test(navigator.vendor) && /Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent); -function isLeftMouseReleased(event) { - if ('buttons' in event && isNotIEorIsIE10plus) { - return !(event.buttons & 1); - } - if (isChrome15OrOpera15plus || isSafari6plus) { - return event.which === 0; - } -} -exports.GrabToPan = GrabToPan; - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var OverlayManager = function () { - function OverlayManager() { - _classCallCheck(this, OverlayManager); - - this._overlays = {}; - this._active = null; - this._keyDownBound = this._keyDown.bind(this); - } - - _createClass(OverlayManager, [{ - key: 'register', - value: function register(name, element) { - var _this = this; - - var callerCloseMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var canForceClose = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - - return new Promise(function (resolve) { - var container = void 0; - if (!name || !element || !(container = element.parentNode)) { - throw new Error('Not enough parameters.'); - } else if (_this._overlays[name]) { - throw new Error('The overlay is already registered.'); - } - _this._overlays[name] = { - element: element, - container: container, - callerCloseMethod: callerCloseMethod, - canForceClose: canForceClose - }; - resolve(); - }); - } - }, { - key: 'unregister', - value: function unregister(name) { - var _this2 = this; - - return new Promise(function (resolve) { - if (!_this2._overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (_this2._active === name) { - throw new Error('The overlay cannot be removed while it is active.'); - } - delete _this2._overlays[name]; - resolve(); - }); - } - }, { - key: 'open', - value: function open(name) { - var _this3 = this; - - return new Promise(function (resolve) { - if (!_this3._overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (_this3._active) { - if (_this3._overlays[name].canForceClose) { - _this3._closeThroughCaller(); - } else if (_this3._active === name) { - throw new Error('The overlay is already active.'); - } else { - throw new Error('Another overlay is currently active.'); - } - } - _this3._active = name; - _this3._overlays[_this3._active].element.classList.remove('hidden'); - _this3._overlays[_this3._active].container.classList.remove('hidden'); - window.addEventListener('keydown', _this3._keyDownBound); - resolve(); - }); - } - }, { - key: 'close', - value: function close(name) { - var _this4 = this; - - return new Promise(function (resolve) { - if (!_this4._overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (!_this4._active) { - throw new Error('The overlay is currently not active.'); - } else if (_this4._active !== name) { - throw new Error('Another overlay is currently active.'); - } - _this4._overlays[_this4._active].container.classList.add('hidden'); - _this4._overlays[_this4._active].element.classList.add('hidden'); - _this4._active = null; - window.removeEventListener('keydown', _this4._keyDownBound); - resolve(); - }); - } - }, { - key: '_keyDown', - value: function _keyDown(evt) { - if (this._active && evt.keyCode === 27) { - this._closeThroughCaller(); - evt.preventDefault(); - } - } - }, { - key: '_closeThroughCaller', - value: function _closeThroughCaller() { - if (this._overlays[this._active].callerCloseMethod) { - this._overlays[this._active].callerCloseMethod(); - } - if (this._active) { - this.close(this._active); - } - } - }, { - key: 'active', - get: function get() { - return this._active; - } - }]); - - return OverlayManager; -}(); - -exports.OverlayManager = OverlayManager; - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PasswordPrompt = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _ui_utils = __webpack_require__(0); - -var _pdfjsLib = __webpack_require__(1); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var PasswordPrompt = function () { - function PasswordPrompt(options, overlayManager) { - var _this = this; - - var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n; - - _classCallCheck(this, PasswordPrompt); - - this.overlayName = options.overlayName; - this.container = options.container; - this.label = options.label; - this.input = options.input; - this.submitButton = options.submitButton; - this.cancelButton = options.cancelButton; - this.overlayManager = overlayManager; - this.l10n = l10n; - this.updateCallback = null; - this.reason = null; - this.submitButton.addEventListener('click', this.verify.bind(this)); - this.cancelButton.addEventListener('click', this.close.bind(this)); - this.input.addEventListener('keydown', function (e) { - if (e.keyCode === 13) { - _this.verify(); - } - }); - this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true); - } - - _createClass(PasswordPrompt, [{ - key: 'open', - value: function open() { - var _this2 = this; - - this.overlayManager.open(this.overlayName).then(function () { - _this2.input.focus(); - var promptString = void 0; - if (_this2.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD) { - promptString = _this2.l10n.get('password_invalid', null, 'Invalid password. Please try again.'); - } else { - promptString = _this2.l10n.get('password_label', null, 'Enter the password to open this PDF file.'); - } - promptString.then(function (msg) { - _this2.label.textContent = msg; - }); - }); - } - }, { - key: 'close', - value: function close() { - var _this3 = this; - - this.overlayManager.close(this.overlayName).then(function () { - _this3.input.value = ''; - }); - } - }, { - key: 'verify', - value: function verify() { - var password = this.input.value; - if (password && password.length > 0) { - this.close(); - return this.updateCallback(password); - } - } - }, { - key: 'setUpdateCallback', - value: function setUpdateCallback(updateCallback, reason) { - this.updateCallback = updateCallback; - this.reason = reason; - } - }]); - - return PasswordPrompt; -}(); - -exports.PasswordPrompt = PasswordPrompt; - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFAttachmentViewer = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _pdfjsLib = __webpack_require__(1); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var PDFAttachmentViewer = function () { - function PDFAttachmentViewer(_ref) { - var container = _ref.container, - eventBus = _ref.eventBus, - downloadManager = _ref.downloadManager; - - _classCallCheck(this, PDFAttachmentViewer); - - this.attachments = null; - this.container = container; - this.eventBus = eventBus; - this.downloadManager = downloadManager; - this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)(); - this.eventBus.on('fileattachmentannotation', this._appendAttachment.bind(this)); - } - - _createClass(PDFAttachmentViewer, [{ - key: 'reset', - value: function reset() { - var keepRenderedCapability = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - this.attachments = null; - this.container.textContent = ''; - if (!keepRenderedCapability) { - this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)(); - } - } - }, { - key: '_dispatchEvent', - value: function _dispatchEvent(attachmentsCount) { - this.eventBus.dispatch('attachmentsloaded', { - source: this, - attachmentsCount: attachmentsCount - }); - this._renderedCapability.resolve(); - } - }, { - key: '_bindPdfLink', - value: function _bindPdfLink(button, content, filename) { - if (_pdfjsLib.PDFJS.disableCreateObjectURL) { - throw new Error('bindPdfLink: ' + 'Unsupported "PDFJS.disableCreateObjectURL" value.'); - } - var blobUrl = void 0; - button.onclick = function () { - if (!blobUrl) { - blobUrl = (0, _pdfjsLib.createObjectURL)(content, 'application/pdf'); - } - var viewerUrl = void 0; - viewerUrl = '?file=' + encodeURIComponent(blobUrl + '#' + filename); - window.open(viewerUrl); - return false; - }; - } - }, { - key: '_bindLink', - value: function _bindLink(button, content, filename) { - var _this = this; - - button.onclick = function () { - _this.downloadManager.downloadData(content, filename, ''); - return false; - }; - } - }, { - key: 'render', - value: function render(_ref2) { - var attachments = _ref2.attachments, - _ref2$keepRenderedCap = _ref2.keepRenderedCapability, - keepRenderedCapability = _ref2$keepRenderedCap === undefined ? false : _ref2$keepRenderedCap; - - var attachmentsCount = 0; - if (this.attachments) { - this.reset(keepRenderedCapability === true); - } - this.attachments = attachments || null; - if (!attachments) { - this._dispatchEvent(attachmentsCount); - return; - } - var names = Object.keys(attachments).sort(function (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); - attachmentsCount = names.length; - for (var i = 0; i < attachmentsCount; i++) { - var item = attachments[names[i]]; - var filename = (0, _pdfjsLib.removeNullCharacters)((0, _pdfjsLib.getFilenameFromUrl)(item.filename)); - var div = document.createElement('div'); - div.className = 'attachmentsItem'; - var button = document.createElement('button'); - button.textContent = filename; - if (/\.pdf$/i.test(filename) && !_pdfjsLib.PDFJS.disableCreateObjectURL) { - this._bindPdfLink(button, item.content, filename); - } else { - this._bindLink(button, item.content, filename); - } - div.appendChild(button); - this.container.appendChild(div); - } - this._dispatchEvent(attachmentsCount); - } - }, { - key: '_appendAttachment', - value: function _appendAttachment(_ref3) { - var _this2 = this; - - var id = _ref3.id, - filename = _ref3.filename, - content = _ref3.content; - - this._renderedCapability.promise.then(function () { - var attachments = _this2.attachments; - if (!attachments) { - attachments = Object.create(null); - } else { - for (var name in attachments) { - if (id === name) { - return; - } - } - } - attachments[id] = { - filename: filename, - content: content - }; - _this2.render({ - attachments: attachments, - keepRenderedCapability: true - }); - }); - } - }]); - - return PDFAttachmentViewer; -}(); - -exports.PDFAttachmentViewer = PDFAttachmentViewer; - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFDocumentProperties = undefined; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _ui_utils = __webpack_require__(0); - -var _pdfjsLib = __webpack_require__(1); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var DEFAULT_FIELD_CONTENT = '-'; - -var PDFDocumentProperties = function () { - function PDFDocumentProperties(_ref, overlayManager) { - var overlayName = _ref.overlayName, - fields = _ref.fields, - container = _ref.container, - closeButton = _ref.closeButton; - var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n; - - _classCallCheck(this, PDFDocumentProperties); - - this.overlayName = overlayName; - this.fields = fields; - this.container = container; - this.overlayManager = overlayManager; - this.l10n = l10n; - this._reset(); - if (closeButton) { - closeButton.addEventListener('click', this.close.bind(this)); - } - this.overlayManager.register(this.overlayName, this.container, this.close.bind(this)); - } - - _createClass(PDFDocumentProperties, [{ - key: 'open', - value: function open() { - var _this = this; - - var freezeFieldData = function freezeFieldData(data) { - Object.defineProperty(_this, 'fieldData', { - value: Object.freeze(data), - writable: false, - enumerable: true, - configurable: true - }); - }; - Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(function () { - if (_this.fieldData) { - _this._updateUI(); - return; - } - _this.pdfDocument.getMetadata().then(function (_ref2) { - var info = _ref2.info, - metadata = _ref2.metadata; - - return Promise.all([info, metadata, _this._parseFileSize(_this.maybeFileSize), _this._parseDate(info.CreationDate), _this._parseDate(info.ModDate)]); - }).then(function (_ref3) { - var _ref4 = _slicedToArray(_ref3, 5), - info = _ref4[0], - metadata = _ref4[1], - fileSize = _ref4[2], - creationDate = _ref4[3], - modificationDate = _ref4[4]; - - freezeFieldData({ - 'fileName': (0, _ui_utils.getPDFFileNameFromURL)(_this.url), - 'fileSize': fileSize, - 'title': info.Title, - 'author': info.Author, - 'subject': info.Subject, - 'keywords': info.Keywords, - 'creationDate': creationDate, - 'modificationDate': modificationDate, - 'creator': info.Creator, - 'producer': info.Producer, - 'version': info.PDFFormatVersion, - 'pageCount': _this.pdfDocument.numPages - }); - _this._updateUI(); - return _this.pdfDocument.getDownloadInfo(); - }).then(function (_ref5) { - var length = _ref5.length; - - return _this._parseFileSize(length); - }).then(function (fileSize) { - var data = (0, _ui_utils.cloneObj)(_this.fieldData); - data['fileSize'] = fileSize; - freezeFieldData(data); - _this._updateUI(); - }); - }); - } - }, { - key: 'close', - value: function close() { - this.overlayManager.close(this.overlayName); - } - }, { - key: 'setDocument', - value: function setDocument(pdfDocument, url) { - if (this.pdfDocument) { - this._reset(); - this._updateUI(true); - } - if (!pdfDocument) { - return; - } - this.pdfDocument = pdfDocument; - this.url = url; - this._dataAvailableCapability.resolve(); - } - }, { - key: 'setFileSize', - value: function setFileSize(fileSize) { - if (typeof fileSize === 'number' && fileSize > 0) { - this.maybeFileSize = fileSize; - } - } - }, { - key: '_reset', - value: function _reset() { - this.pdfDocument = null; - this.url = null; - this.maybeFileSize = 0; - delete this.fieldData; - this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)(); - } - }, { - key: '_updateUI', - value: function _updateUI() { - var reset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (reset || !this.fieldData) { - for (var id in this.fields) { - this.fields[id].textContent = DEFAULT_FIELD_CONTENT; - } - return; - } - if (this.overlayManager.active !== this.overlayName) { - return; - } - for (var _id in this.fields) { - var content = this.fieldData[_id]; - this.fields[_id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT; - } - } - }, { - key: '_parseFileSize', - value: function _parseFileSize() { - var fileSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - - var kb = fileSize / 1024; - if (!kb) { - return Promise.resolve(undefined); - } else if (kb < 1024) { - return this.l10n.get('document_properties_kb', { - size_kb: (+kb.toPrecision(3)).toLocaleString(), - size_b: fileSize.toLocaleString() - }, '{{size_kb}} KB ({{size_b}} bytes)'); - } - return this.l10n.get('document_properties_mb', { - size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(), - size_b: fileSize.toLocaleString() - }, '{{size_mb}} MB ({{size_b}} bytes)'); - } - }, { - key: '_parseDate', - value: function _parseDate(inputDate) { - if (!inputDate) { - return; - } - var dateToParse = inputDate; - if (dateToParse.substring(0, 2) === 'D:') { - dateToParse = dateToParse.substring(2); - } - var year = parseInt(dateToParse.substring(0, 4), 10); - var month = parseInt(dateToParse.substring(4, 6), 10) - 1; - var day = parseInt(dateToParse.substring(6, 8), 10); - var hours = parseInt(dateToParse.substring(8, 10), 10); - var minutes = parseInt(dateToParse.substring(10, 12), 10); - var seconds = parseInt(dateToParse.substring(12, 14), 10); - var utRel = dateToParse.substring(14, 15); - var offsetHours = parseInt(dateToParse.substring(15, 17), 10); - var offsetMinutes = parseInt(dateToParse.substring(18, 20), 10); - if (utRel === '-') { - hours += offsetHours; - minutes += offsetMinutes; - } else if (utRel === '+') { - hours -= offsetHours; - minutes -= offsetMinutes; - } - var date = new Date(Date.UTC(year, month, day, hours, minutes, seconds)); - var dateString = date.toLocaleDateString(); - var timeString = date.toLocaleTimeString(); - return this.l10n.get('document_properties_date_string', { - date: dateString, - time: timeString - }, '{{date}}, {{time}}'); - } - }]); - - return PDFDocumentProperties; -}(); - -exports.PDFDocumentProperties = PDFDocumentProperties; - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFFindBar = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _pdf_find_controller = __webpack_require__(7); - -var _ui_utils = __webpack_require__(0); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var PDFFindBar = function () { - function PDFFindBar(options) { - var _this = this; - - var l10n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ui_utils.NullL10n; - - _classCallCheck(this, PDFFindBar); - - this.opened = false; - this.bar = options.bar || null; - this.toggleButton = options.toggleButton || null; - this.findField = options.findField || null; - this.highlightAll = options.highlightAllCheckbox || null; - this.caseSensitive = options.caseSensitiveCheckbox || null; - this.findMsg = options.findMsg || null; - this.findResultsCount = options.findResultsCount || null; - this.findStatusIcon = options.findStatusIcon || null; - this.findPreviousButton = options.findPreviousButton || null; - this.findNextButton = options.findNextButton || null; - this.findController = options.findController || null; - this.eventBus = options.eventBus; - this.l10n = l10n; - if (this.findController === null) { - throw new Error('PDFFindBar cannot be used without a ' + 'PDFFindController instance.'); - } - this.toggleButton.addEventListener('click', function () { - _this.toggle(); - }); - this.findField.addEventListener('input', function () { - _this.dispatchEvent(''); - }); - this.bar.addEventListener('keydown', function (e) { - switch (e.keyCode) { - case 13: - if (e.target === _this.findField) { - _this.dispatchEvent('again', e.shiftKey); - } - break; - case 27: - _this.close(); - break; - } - }); - this.findPreviousButton.addEventListener('click', function () { - _this.dispatchEvent('again', true); - }); - this.findNextButton.addEventListener('click', function () { - _this.dispatchEvent('again', false); - }); - this.highlightAll.addEventListener('click', function () { - _this.dispatchEvent('highlightallchange'); - }); - this.caseSensitive.addEventListener('click', function () { - _this.dispatchEvent('casesensitivitychange'); - }); - this.eventBus.on('resize', this._adjustWidth.bind(this)); - } - - _createClass(PDFFindBar, [{ - key: 'reset', - value: function reset() { - this.updateUIState(); - } - }, { - key: 'dispatchEvent', - value: function dispatchEvent(type, findPrev) { - this.eventBus.dispatch('find', { - source: this, - type: type, - query: this.findField.value, - caseSensitive: this.caseSensitive.checked, - phraseSearch: true, - highlightAll: this.highlightAll.checked, - findPrevious: findPrev - }); - } - }, { - key: 'updateUIState', - value: function updateUIState(state, previous, matchCount) { - var _this2 = this; - - var notFound = false; - var findMsg = ''; - var status = ''; - switch (state) { - case _pdf_find_controller.FindState.FOUND: - break; - case _pdf_find_controller.FindState.PENDING: - status = 'pending'; - break; - case _pdf_find_controller.FindState.NOT_FOUND: - findMsg = this.l10n.get('find_not_found', null, 'Phrase not found'); - notFound = true; - break; - case _pdf_find_controller.FindState.WRAPPED: - if (previous) { - findMsg = this.l10n.get('find_reached_top', null, 'Reached top of document, continued from bottom'); - } else { - findMsg = this.l10n.get('find_reached_bottom', null, 'Reached end of document, continued from top'); - } - break; - } - if (notFound) { - this.findField.classList.add('notFound'); - } else { - this.findField.classList.remove('notFound'); - } - this.findField.setAttribute('data-status', status); - Promise.resolve(findMsg).then(function (msg) { - _this2.findMsg.textContent = msg; - _this2._adjustWidth(); - }); - this.updateResultsCount(matchCount); - } - }, { - key: 'updateResultsCount', - value: function updateResultsCount(matchCount) { - if (!this.findResultsCount) { - return; - } - if (!matchCount) { - this.findResultsCount.classList.add('hidden'); - this.findResultsCount.textContent = ''; - } else { - this.findResultsCount.textContent = matchCount.toLocaleString(); - this.findResultsCount.classList.remove('hidden'); - } - this._adjustWidth(); - } - }, { - key: 'open', - value: function open() { - if (!this.opened) { - this.opened = true; - this.toggleButton.classList.add('toggled'); - this.bar.classList.remove('hidden'); - } - this.findField.select(); - this.findField.focus(); - this._adjustWidth(); - } - }, { - key: 'close', - value: function close() { - if (!this.opened) { - return; - } - this.opened = false; - this.toggleButton.classList.remove('toggled'); - this.bar.classList.add('hidden'); - this.findController.active = false; - } - }, { - key: 'toggle', - value: function toggle() { - if (this.opened) { - this.close(); - } else { - this.open(); - } - } - }, { - key: '_adjustWidth', - value: function _adjustWidth() { - if (!this.opened) { - return; - } - this.bar.classList.remove('wrapContainers'); - var findbarHeight = this.bar.clientHeight; - var inputContainerHeight = this.bar.firstElementChild.clientHeight; - if (findbarHeight > inputContainerHeight) { - this.bar.classList.add('wrapContainers'); - } - } - }]); - - return PDFFindBar; -}(); - -exports.PDFFindBar = PDFFindBar; - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFHistory = undefined; - -var _dom_events = __webpack_require__(2); - -function PDFHistory(options) { - this.linkService = options.linkService; - this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); - this.initialized = false; - this.initialDestination = null; - this.initialBookmark = null; -} -PDFHistory.prototype = { - initialize: function pdfHistoryInitialize(fingerprint) { - this.initialized = true; - this.reInitialized = false; - this.allowHashChange = true; - this.historyUnlocked = true; - this.isViewerInPresentationMode = false; - this.previousHash = window.location.hash.substring(1); - this.currentBookmark = ''; - this.currentPage = 0; - this.updatePreviousBookmark = false; - this.previousBookmark = ''; - this.previousPage = 0; - this.nextHashParam = ''; - this.fingerprint = fingerprint; - this.currentUid = this.uid = 0; - this.current = {}; - var state = window.history.state; - if (this._isStateObjectDefined(state)) { - if (state.target.dest) { - this.initialDestination = state.target.dest; - } else { - this.initialBookmark = state.target.hash; - } - this.currentUid = state.uid; - this.uid = state.uid + 1; - this.current = state.target; - } else { - if (state && state.fingerprint && this.fingerprint !== state.fingerprint) { - this.reInitialized = true; - } - this._pushOrReplaceState({ fingerprint: this.fingerprint }, true); - } - var self = this; - window.addEventListener('popstate', function pdfHistoryPopstate(evt) { - if (!self.historyUnlocked) { - return; - } - if (evt.state) { - self._goTo(evt.state); - return; - } - if (self.uid === 0) { - var previousParams = self.previousHash && self.currentBookmark && self.previousHash !== self.currentBookmark ? { - hash: self.currentBookmark, - page: self.currentPage - } : { page: 1 }; - replacePreviousHistoryState(previousParams, function () { - updateHistoryWithCurrentHash(); - }); - } else { - updateHistoryWithCurrentHash(); - } - }); - function updateHistoryWithCurrentHash() { - self.previousHash = window.location.hash.slice(1); - self._pushToHistory({ hash: self.previousHash }, false, true); - self._updatePreviousBookmark(); - } - function replacePreviousHistoryState(params, callback) { - self.historyUnlocked = false; - self.allowHashChange = false; - window.addEventListener('popstate', rewriteHistoryAfterBack); - history.back(); - function rewriteHistoryAfterBack() { - window.removeEventListener('popstate', rewriteHistoryAfterBack); - window.addEventListener('popstate', rewriteHistoryAfterForward); - self._pushToHistory(params, false, true); - history.forward(); - } - function rewriteHistoryAfterForward() { - window.removeEventListener('popstate', rewriteHistoryAfterForward); - self.allowHashChange = true; - self.historyUnlocked = true; - callback(); - } - } - function pdfHistoryBeforeUnload() { - var previousParams = self._getPreviousParams(null, true); - if (previousParams) { - var replacePrevious = !self.current.dest && self.current.hash !== self.previousHash; - self._pushToHistory(previousParams, false, replacePrevious); - self._updatePreviousBookmark(); - } - window.removeEventListener('beforeunload', pdfHistoryBeforeUnload); - } - window.addEventListener('beforeunload', pdfHistoryBeforeUnload); - window.addEventListener('pageshow', function pdfHistoryPageShow(evt) { - window.addEventListener('beforeunload', pdfHistoryBeforeUnload); - }); - self.eventBus.on('presentationmodechanged', function (e) { - self.isViewerInPresentationMode = e.active; - }); - }, - clearHistoryState: function pdfHistory_clearHistoryState() { - this._pushOrReplaceState(null, true); - }, - _isStateObjectDefined: function pdfHistory_isStateObjectDefined(state) { - return state && state.uid >= 0 && state.fingerprint && this.fingerprint === state.fingerprint && state.target && state.target.hash ? true : false; - }, - _pushOrReplaceState: function pdfHistory_pushOrReplaceState(stateObj, replace) { - if (replace) { - window.history.replaceState(stateObj, '', document.URL); - } else { - window.history.pushState(stateObj, '', document.URL); - } - }, - get isHashChangeUnlocked() { - if (!this.initialized) { - return true; - } - return this.allowHashChange; - }, - _updatePreviousBookmark: function pdfHistory_updatePreviousBookmark() { - if (this.updatePreviousBookmark && this.currentBookmark && this.currentPage) { - this.previousBookmark = this.currentBookmark; - this.previousPage = this.currentPage; - this.updatePreviousBookmark = false; - } - }, - updateCurrentBookmark: function pdfHistoryUpdateCurrentBookmark(bookmark, pageNum) { - if (this.initialized) { - this.currentBookmark = bookmark.substring(1); - this.currentPage = pageNum | 0; - this._updatePreviousBookmark(); - } - }, - updateNextHashParam: function pdfHistoryUpdateNextHashParam(param) { - if (this.initialized) { - this.nextHashParam = param; - } - }, - push: function pdfHistoryPush(params, isInitialBookmark) { - if (!(this.initialized && this.historyUnlocked)) { - return; - } - if (params.dest && !params.hash) { - params.hash = this.current.hash && this.current.dest && this.current.dest === params.dest ? this.current.hash : this.linkService.getDestinationHash(params.dest).split('#')[1]; - } - if (params.page) { - params.page |= 0; - } - if (isInitialBookmark) { - var target = window.history.state.target; - if (!target) { - this._pushToHistory(params, false); - this.previousHash = window.location.hash.substring(1); - } - this.updatePreviousBookmark = this.nextHashParam ? false : true; - if (target) { - this._updatePreviousBookmark(); - } - return; - } - if (this.nextHashParam) { - if (this.nextHashParam === params.hash) { - this.nextHashParam = null; - this.updatePreviousBookmark = true; - return; - } - this.nextHashParam = null; - } - if (params.hash) { - if (this.current.hash) { - if (this.current.hash !== params.hash) { - this._pushToHistory(params, true); - } else { - if (!this.current.page && params.page) { - this._pushToHistory(params, false, true); - } - this.updatePreviousBookmark = true; - } - } else { - this._pushToHistory(params, true); - } - } else if (this.current.page && params.page && this.current.page !== params.page) { - this._pushToHistory(params, true); - } - }, - _getPreviousParams: function pdfHistory_getPreviousParams(onlyCheckPage, beforeUnload) { - if (!(this.currentBookmark && this.currentPage)) { - return null; - } else if (this.updatePreviousBookmark) { - this.updatePreviousBookmark = false; - } - if (this.uid > 0 && !(this.previousBookmark && this.previousPage)) { - return null; - } - if (!this.current.dest && !onlyCheckPage || beforeUnload) { - if (this.previousBookmark === this.currentBookmark) { - return null; - } - } else if (this.current.page || onlyCheckPage) { - if (this.previousPage === this.currentPage) { - return null; - } - } else { - return null; - } - var params = { - hash: this.currentBookmark, - page: this.currentPage - }; - if (this.isViewerInPresentationMode) { - params.hash = null; - } - return params; - }, - _stateObj: function pdfHistory_stateObj(params) { - return { - fingerprint: this.fingerprint, - uid: this.uid, - target: params - }; - }, - _pushToHistory: function pdfHistory_pushToHistory(params, addPrevious, overwrite) { - if (!this.initialized) { - return; - } - if (!params.hash && params.page) { - params.hash = 'page=' + params.page; - } - if (addPrevious && !overwrite) { - var previousParams = this._getPreviousParams(); - if (previousParams) { - var replacePrevious = !this.current.dest && this.current.hash !== this.previousHash; - this._pushToHistory(previousParams, false, replacePrevious); - } - } - this._pushOrReplaceState(this._stateObj(params), overwrite || this.uid === 0); - this.currentUid = this.uid++; - this.current = params; - this.updatePreviousBookmark = true; - }, - _goTo: function pdfHistory_goTo(state) { - if (!(this.initialized && this.historyUnlocked && this._isStateObjectDefined(state))) { - return; - } - if (!this.reInitialized && state.uid < this.currentUid) { - var previousParams = this._getPreviousParams(true); - if (previousParams) { - this._pushToHistory(this.current, false); - this._pushToHistory(previousParams, false); - this.currentUid = state.uid; - window.history.back(); - return; - } - } - this.historyUnlocked = false; - if (state.target.dest) { - this.linkService.navigateTo(state.target.dest); - } else { - this.linkService.setHash(state.target.hash); - } - this.currentUid = state.uid; - if (state.uid > this.uid) { - this.uid = state.uid; - } - this.current = state.target; - this.updatePreviousBookmark = true; - var currentHash = window.location.hash.substring(1); - if (this.previousHash !== currentHash) { - this.allowHashChange = false; - } - this.previousHash = currentHash; - this.historyUnlocked = true; - }, - back: function pdfHistoryBack() { - this.go(-1); - }, - forward: function pdfHistoryForward() { - this.go(1); - }, - go: function pdfHistoryGo(direction) { - if (this.initialized && this.historyUnlocked) { - var state = window.history.state; - if (direction === -1 && state && state.uid > 0) { - window.history.back(); - } else if (direction === 1 && state && state.uid < this.uid - 1) { - window.history.forward(); - } - } - } -}; -exports.PDFHistory = PDFHistory; - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFOutlineViewer = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _pdfjsLib = __webpack_require__(1); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var DEFAULT_TITLE = '\u2013'; - -var PDFOutlineViewer = function () { - function PDFOutlineViewer(_ref) { - var container = _ref.container, - linkService = _ref.linkService, - eventBus = _ref.eventBus; - - _classCallCheck(this, PDFOutlineViewer); - - this.outline = null; - this.lastToggleIsShow = true; - this.container = container; - this.linkService = linkService; - this.eventBus = eventBus; - } - - _createClass(PDFOutlineViewer, [{ - key: 'reset', - value: function reset() { - this.outline = null; - this.lastToggleIsShow = true; - this.container.textContent = ''; - this.container.classList.remove('outlineWithDeepNesting'); - } - }, { - key: '_dispatchEvent', - value: function _dispatchEvent(outlineCount) { - this.eventBus.dispatch('outlineloaded', { - source: this, - outlineCount: outlineCount - }); - } - }, { - key: '_bindLink', - value: function _bindLink(element, item) { - var _this = this; - - if (item.url) { - (0, _pdfjsLib.addLinkAttributes)(element, { - url: item.url, - target: item.newWindow ? _pdfjsLib.PDFJS.LinkTarget.BLANK : undefined - }); - return; - } - var destination = item.dest; - element.href = this.linkService.getDestinationHash(destination); - element.onclick = function () { - if (destination) { - _this.linkService.navigateTo(destination); - } - return false; - }; - } - }, { - key: '_setStyles', - value: function _setStyles(element, item) { - var styleStr = ''; - if (item.bold) { - styleStr += 'font-weight: bold;'; - } - if (item.italic) { - styleStr += 'font-style: italic;'; - } - if (styleStr) { - element.setAttribute('style', styleStr); - } - } - }, { - key: '_addToggleButton', - value: function _addToggleButton(div) { - var _this2 = this; - - var toggler = document.createElement('div'); - toggler.className = 'outlineItemToggler'; - toggler.onclick = function (evt) { - evt.stopPropagation(); - toggler.classList.toggle('outlineItemsHidden'); - if (evt.shiftKey) { - var shouldShowAll = !toggler.classList.contains('outlineItemsHidden'); - _this2._toggleOutlineItem(div, shouldShowAll); - } - }; - div.insertBefore(toggler, div.firstChild); - } - }, { - key: '_toggleOutlineItem', - value: function _toggleOutlineItem(root, show) { - this.lastToggleIsShow = show; - var togglers = root.querySelectorAll('.outlineItemToggler'); - for (var i = 0, ii = togglers.length; i < ii; ++i) { - togglers[i].classList[show ? 'remove' : 'add']('outlineItemsHidden'); - } - } - }, { - key: 'toggleOutlineTree', - value: function toggleOutlineTree() { - if (!this.outline) { - return; - } - this._toggleOutlineItem(this.container, !this.lastToggleIsShow); - } - }, { - key: 'render', - value: function render(_ref2) { - var outline = _ref2.outline; - - var outlineCount = 0; - if (this.outline) { - this.reset(); - } - this.outline = outline || null; - if (!outline) { - this._dispatchEvent(outlineCount); - return; - } - var fragment = document.createDocumentFragment(); - var queue = [{ - parent: fragment, - items: this.outline - }]; - var hasAnyNesting = false; - while (queue.length > 0) { - var levelData = queue.shift(); - for (var i = 0, len = levelData.items.length; i < len; i++) { - var item = levelData.items[i]; - var div = document.createElement('div'); - div.className = 'outlineItem'; - var element = document.createElement('a'); - this._bindLink(element, item); - this._setStyles(element, item); - element.textContent = (0, _pdfjsLib.removeNullCharacters)(item.title) || DEFAULT_TITLE; - div.appendChild(element); - if (item.items.length > 0) { - hasAnyNesting = true; - this._addToggleButton(div); - var itemsDiv = document.createElement('div'); - itemsDiv.className = 'outlineItems'; - div.appendChild(itemsDiv); - queue.push({ - parent: itemsDiv, - items: item.items - }); - } - levelData.parent.appendChild(div); - outlineCount++; - } - } - if (hasAnyNesting) { - this.container.classList.add('outlineWithDeepNesting'); - } - this.container.appendChild(fragment); - this._dispatchEvent(outlineCount); - } - }]); - - return PDFOutlineViewer; -}(); - -exports.PDFOutlineViewer = PDFOutlineViewer; - -/***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFPageView = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _ui_utils = __webpack_require__(0); - -var _pdfjsLib = __webpack_require__(1); - -var _dom_events = __webpack_require__(2); - -var _pdf_rendering_queue = __webpack_require__(3); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var PDFPageView = function () { - function PDFPageView(options) { - _classCallCheck(this, PDFPageView); - - var container = options.container; - var defaultViewport = options.defaultViewport; - this.id = options.id; - this.renderingId = 'page' + this.id; - this.pdfPage = null; - this.pageLabel = null; - this.rotation = 0; - this.scale = options.scale || _ui_utils.DEFAULT_SCALE; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - this.hasRestrictedScaling = false; - this.enhanceTextSelection = options.enhanceTextSelection || false; - this.renderInteractiveForms = options.renderInteractiveForms || false; - this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); - this.renderingQueue = options.renderingQueue; - this.textLayerFactory = options.textLayerFactory; - this.annotationLayerFactory = options.annotationLayerFactory; - this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; - this.l10n = options.l10n || _ui_utils.NullL10n; - this.paintTask = null; - this.paintedViewportMap = new WeakMap(); - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - this.error = null; - this.onBeforeDraw = null; - this.onAfterDraw = null; - this.annotationLayer = null; - this.textLayer = null; - this.zoomLayer = null; - var div = document.createElement('div'); - div.className = 'page'; - div.style.width = Math.floor(this.viewport.width) + 'px'; - div.style.height = Math.floor(this.viewport.height) + 'px'; - div.setAttribute('data-page-number', this.id); - this.div = div; - container.appendChild(div); - } - - _createClass(PDFPageView, [{ - key: 'setPdfPage', - value: function setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport(this.scale * _ui_utils.CSS_UNITS, totalRotation); - this.stats = pdfPage.stats; - this.reset(); - } - }, { - key: 'destroy', - value: function destroy() { - this.reset(); - if (this.pdfPage) { - this.pdfPage.cleanup(); - this.pdfPage = null; - } - } - }, { - key: '_resetZoomLayer', - value: function _resetZoomLayer() { - var removeFromDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (!this.zoomLayer) { - return; - } - var zoomLayerCanvas = this.zoomLayer.firstChild; - this.paintedViewportMap.delete(zoomLayerCanvas); - zoomLayerCanvas.width = 0; - zoomLayerCanvas.height = 0; - if (removeFromDOM) { - this.zoomLayer.remove(); - } - this.zoomLayer = null; - } - }, { - key: 'reset', - value: function reset() { - var keepZoomLayer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var keepAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - this.cancelRendering(); - var div = this.div; - div.style.width = Math.floor(this.viewport.width) + 'px'; - div.style.height = Math.floor(this.viewport.height) + 'px'; - var childNodes = div.childNodes; - var currentZoomLayerNode = keepZoomLayer && this.zoomLayer || null; - var currentAnnotationNode = keepAnnotations && this.annotationLayer && this.annotationLayer.div || null; - for (var i = childNodes.length - 1; i >= 0; i--) { - var node = childNodes[i]; - if (currentZoomLayerNode === node || currentAnnotationNode === node) { - continue; - } - div.removeChild(node); - } - div.removeAttribute('data-loaded'); - if (currentAnnotationNode) { - this.annotationLayer.hide(); - } else { - this.annotationLayer = null; - } - if (!currentZoomLayerNode) { - if (this.canvas) { - this.paintedViewportMap.delete(this.canvas); - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - this._resetZoomLayer(); - } - if (this.svg) { - this.paintedViewportMap.delete(this.svg); - delete this.svg; - } - this.loadingIconDiv = document.createElement('div'); - this.loadingIconDiv.className = 'loadingIcon'; - div.appendChild(this.loadingIconDiv); - } - }, { - key: 'update', - value: function update(scale, rotation) { - this.scale = scale || this.scale; - if (typeof rotation !== 'undefined') { - this.rotation = rotation; - } - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: this.scale * _ui_utils.CSS_UNITS, - rotation: totalRotation - }); - if (this.svg) { - this.cssTransform(this.svg, true); - this.eventBus.dispatch('pagerendered', { - source: this, - pageNumber: this.id, - cssTransform: true - }); - return; - } - var isScalingRestricted = false; - if (this.canvas && _pdfjsLib.PDFJS.maxCanvasPixels > 0) { - var outputScale = this.outputScale; - if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > _pdfjsLib.PDFJS.maxCanvasPixels) { - isScalingRestricted = true; - } - } - if (this.canvas) { - if (_pdfjsLib.PDFJS.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) { - this.cssTransform(this.canvas, true); - this.eventBus.dispatch('pagerendered', { - source: this, - pageNumber: this.id, - cssTransform: true - }); - return; - } - if (!this.zoomLayer && !this.canvas.hasAttribute('hidden')) { - this.zoomLayer = this.canvas.parentNode; - this.zoomLayer.style.position = 'absolute'; - } - } - if (this.zoomLayer) { - this.cssTransform(this.zoomLayer.firstChild); - } - this.reset(true, true); - } - }, { - key: 'cancelRendering', - value: function cancelRendering() { - if (this.paintTask) { - this.paintTask.cancel(); - this.paintTask = null; - } - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - if (this.textLayer) { - this.textLayer.cancel(); - this.textLayer = null; - } - } - }, { - key: 'cssTransform', - value: function cssTransform(target) { - var redrawAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - var width = this.viewport.width; - var height = this.viewport.height; - var div = this.div; - target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + 'px'; - target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + 'px'; - var relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation; - var absRotation = Math.abs(relativeRotation); - var scaleX = 1, - scaleY = 1; - if (absRotation === 90 || absRotation === 270) { - scaleX = height / width; - scaleY = width / height; - } - var cssTransform = 'rotate(' + relativeRotation + 'deg) ' + 'scale(' + scaleX + ',' + scaleY + ')'; - _pdfjsLib.CustomStyle.setProp('transform', target, cssTransform); - if (this.textLayer) { - var textLayerViewport = this.textLayer.viewport; - var textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation; - var textAbsRotation = Math.abs(textRelativeRotation); - var scale = width / textLayerViewport.width; - if (textAbsRotation === 90 || textAbsRotation === 270) { - scale = width / textLayerViewport.height; - } - var textLayerDiv = this.textLayer.textLayerDiv; - var transX = void 0, - transY = void 0; - switch (textAbsRotation) { - case 0: - transX = transY = 0; - break; - case 90: - transX = 0; - transY = '-' + textLayerDiv.style.height; - break; - case 180: - transX = '-' + textLayerDiv.style.width; - transY = '-' + textLayerDiv.style.height; - break; - case 270: - transX = '-' + textLayerDiv.style.width; - transY = 0; - break; - default: - console.error('Bad rotation value.'); - break; - } - _pdfjsLib.CustomStyle.setProp('transform', textLayerDiv, 'rotate(' + textAbsRotation + 'deg) ' + 'scale(' + scale + ', ' + scale + ') ' + 'translate(' + transX + ', ' + transY + ')'); - _pdfjsLib.CustomStyle.setProp('transformOrigin', textLayerDiv, '0% 0%'); - } - if (redrawAnnotations && this.annotationLayer) { - this.annotationLayer.render(this.viewport, 'display'); - } - } - }, { - key: 'getPagePoint', - value: function getPagePoint(x, y) { - return this.viewport.convertToPdfPoint(x, y); - } - }, { - key: 'draw', - value: function draw() { - var _this = this; - - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { - console.error('Must be in new state before drawing'); - this.reset(); - } - if (!this.pdfPage) { - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - return Promise.reject(new Error('Page is not loaded')); - } - this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - var pdfPage = this.pdfPage; - var div = this.div; - var canvasWrapper = document.createElement('div'); - canvasWrapper.style.width = div.style.width; - canvasWrapper.style.height = div.style.height; - canvasWrapper.classList.add('canvasWrapper'); - if (this.annotationLayer && this.annotationLayer.div) { - div.insertBefore(canvasWrapper, this.annotationLayer.div); - } else { - div.appendChild(canvasWrapper); - } - var textLayer = null; - if (this.textLayerFactory) { - var textLayerDiv = document.createElement('div'); - textLayerDiv.className = 'textLayer'; - textLayerDiv.style.width = canvasWrapper.style.width; - textLayerDiv.style.height = canvasWrapper.style.height; - if (this.annotationLayer && this.annotationLayer.div) { - div.insertBefore(textLayerDiv, this.annotationLayer.div); - } else { - div.appendChild(textLayerDiv); - } - textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.enhanceTextSelection); - } - this.textLayer = textLayer; - var renderContinueCallback = null; - if (this.renderingQueue) { - renderContinueCallback = function renderContinueCallback(cont) { - if (!_this.renderingQueue.isHighestPriority(_this)) { - _this.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED; - _this.resume = function () { - _this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - cont(); - }; - return; - } - cont(); - }; - } - var finishPaintTask = function finishPaintTask(error) { - if (paintTask === _this.paintTask) { - _this.paintTask = null; - } - if (error === 'cancelled' || error instanceof _pdfjsLib.RenderingCancelledException) { - _this.error = null; - return Promise.resolve(undefined); - } - _this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - if (_this.loadingIconDiv) { - div.removeChild(_this.loadingIconDiv); - delete _this.loadingIconDiv; - } - _this._resetZoomLayer(true); - _this.error = error; - _this.stats = pdfPage.stats; - if (_this.onAfterDraw) { - _this.onAfterDraw(); - } - _this.eventBus.dispatch('pagerendered', { - source: _this, - pageNumber: _this.id, - cssTransform: false - }); - if (error) { - return Promise.reject(error); - } - return Promise.resolve(undefined); - }; - var paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper); - paintTask.onRenderContinue = renderContinueCallback; - this.paintTask = paintTask; - var resultPromise = paintTask.promise.then(function () { - return finishPaintTask(null).then(function () { - if (textLayer) { - var readableStream = pdfPage.streamTextContent({ normalizeWhitespace: true }); - textLayer.setTextContentStream(readableStream); - textLayer.render(); - } - }); - }, function (reason) { - return finishPaintTask(reason); - }); - if (this.annotationLayerFactory) { - if (!this.annotationLayer) { - this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, this.renderInteractiveForms, this.l10n); - } - this.annotationLayer.render(this.viewport, 'display'); - } - div.setAttribute('data-loaded', true); - if (this.onBeforeDraw) { - this.onBeforeDraw(); - } - return resultPromise; - } - }, { - key: 'paintOnCanvas', - value: function paintOnCanvas(canvasWrapper) { - var renderCapability = (0, _pdfjsLib.createPromiseCapability)(); - var result = { - promise: renderCapability.promise, - onRenderContinue: function onRenderContinue(cont) { - cont(); - }, - cancel: function cancel() { - renderTask.cancel(); - } - }; - var viewport = this.viewport; - var canvas = document.createElement('canvas'); - canvas.id = this.renderingId; - canvas.setAttribute('hidden', 'hidden'); - var isCanvasHidden = true; - var showCanvas = function showCanvas() { - if (isCanvasHidden) { - canvas.removeAttribute('hidden'); - isCanvasHidden = false; - } - }; - canvasWrapper.appendChild(canvas); - this.canvas = canvas; - canvas.mozOpaque = true; - var ctx = canvas.getContext('2d', { alpha: false }); - var outputScale = (0, _ui_utils.getOutputScale)(ctx); - this.outputScale = outputScale; - if (_pdfjsLib.PDFJS.useOnlyCssZoom) { - var actualSizeViewport = viewport.clone({ scale: _ui_utils.CSS_UNITS }); - outputScale.sx *= actualSizeViewport.width / viewport.width; - outputScale.sy *= actualSizeViewport.height / viewport.height; - outputScale.scaled = true; - } - if (_pdfjsLib.PDFJS.maxCanvasPixels > 0) { - var pixelsInViewport = viewport.width * viewport.height; - var maxScale = Math.sqrt(_pdfjsLib.PDFJS.maxCanvasPixels / pixelsInViewport); - if (outputScale.sx > maxScale || outputScale.sy > maxScale) { - outputScale.sx = maxScale; - outputScale.sy = maxScale; - outputScale.scaled = true; - this.hasRestrictedScaling = true; - } else { - this.hasRestrictedScaling = false; - } - } - var sfx = (0, _ui_utils.approximateFraction)(outputScale.sx); - var sfy = (0, _ui_utils.approximateFraction)(outputScale.sy); - canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]); - canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]); - canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + 'px'; - canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + 'px'; - this.paintedViewportMap.set(canvas, viewport); - var transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0]; - var renderContext = { - canvasContext: ctx, - transform: transform, - viewport: this.viewport, - renderInteractiveForms: this.renderInteractiveForms - }; - var renderTask = this.pdfPage.render(renderContext); - renderTask.onContinue = function (cont) { - showCanvas(); - if (result.onRenderContinue) { - result.onRenderContinue(cont); - } else { - cont(); - } - }; - renderTask.promise.then(function () { - showCanvas(); - renderCapability.resolve(undefined); - }, function (error) { - showCanvas(); - renderCapability.reject(error); - }); - return result; - } - }, { - key: 'paintOnSvg', - value: function paintOnSvg(wrapper) { - var _this2 = this; - - var cancelled = false; - var ensureNotCancelled = function ensureNotCancelled() { - if (cancelled) { - if (_pdfjsLib.PDFJS.pdfjsNext) { - throw new _pdfjsLib.RenderingCancelledException('Rendering cancelled, page ' + _this2.id, 'svg'); - } else { - throw 'cancelled'; - } - } - }; - var pdfPage = this.pdfPage; - var actualSizeViewport = this.viewport.clone({ scale: _ui_utils.CSS_UNITS }); - var promise = pdfPage.getOperatorList().then(function (opList) { - ensureNotCancelled(); - var svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs); - return svgGfx.getSVG(opList, actualSizeViewport).then(function (svg) { - ensureNotCancelled(); - _this2.svg = svg; - _this2.paintedViewportMap.set(svg, actualSizeViewport); - svg.style.width = wrapper.style.width; - svg.style.height = wrapper.style.height; - _this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - wrapper.appendChild(svg); - }); - }); - return { - promise: promise, - onRenderContinue: function onRenderContinue(cont) { - cont(); - }, - cancel: function cancel() { - cancelled = true; - } - }; - } - }, { - key: 'setPageLabel', - value: function setPageLabel(label) { - this.pageLabel = typeof label === 'string' ? label : null; - if (this.pageLabel !== null) { - this.div.setAttribute('data-page-label', this.pageLabel); - } else { - this.div.removeAttribute('data-page-label'); - } - } - }, { - key: 'width', - get: function get() { - return this.viewport.width; - } - }, { - key: 'height', - get: function get() { - return this.viewport.height; - } - }]); - - return PDFPageView; -}(); - -exports.PDFPageView = PDFPageView; - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFPresentationMode = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _ui_utils = __webpack_require__(0); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; -var DELAY_BEFORE_HIDING_CONTROLS = 3000; -var ACTIVE_SELECTOR = 'pdfPresentationMode'; -var CONTROLS_SELECTOR = 'pdfPresentationModeControls'; -var MOUSE_SCROLL_COOLDOWN_TIME = 50; -var PAGE_SWITCH_THRESHOLD = 0.1; -var SWIPE_MIN_DISTANCE_THRESHOLD = 50; -var SWIPE_ANGLE_THRESHOLD = Math.PI / 6; - -var PDFPresentationMode = function () { - function PDFPresentationMode(_ref) { - var _this = this; - - var container = _ref.container, - _ref$viewer = _ref.viewer, - viewer = _ref$viewer === undefined ? null : _ref$viewer, - pdfViewer = _ref.pdfViewer, - eventBus = _ref.eventBus, - _ref$contextMenuItems = _ref.contextMenuItems, - contextMenuItems = _ref$contextMenuItems === undefined ? null : _ref$contextMenuItems; - - _classCallCheck(this, PDFPresentationMode); - - this.container = container; - this.viewer = viewer || container.firstElementChild; - this.pdfViewer = pdfViewer; - this.eventBus = eventBus; - this.active = false; - this.args = null; - this.contextMenuOpen = false; - this.mouseScrollTimeStamp = 0; - this.mouseScrollDelta = 0; - this.touchSwipeState = null; - if (contextMenuItems) { - contextMenuItems.contextFirstPage.addEventListener('click', function () { - _this.contextMenuOpen = false; - _this.eventBus.dispatch('firstpage'); - }); - contextMenuItems.contextLastPage.addEventListener('click', function () { - _this.contextMenuOpen = false; - _this.eventBus.dispatch('lastpage'); - }); - contextMenuItems.contextPageRotateCw.addEventListener('click', function () { - _this.contextMenuOpen = false; - _this.eventBus.dispatch('rotatecw'); - }); - contextMenuItems.contextPageRotateCcw.addEventListener('click', function () { - _this.contextMenuOpen = false; - _this.eventBus.dispatch('rotateccw'); - }); - } - } - - _createClass(PDFPresentationMode, [{ - key: 'request', - value: function request() { - if (this.switchInProgress || this.active || !this.viewer.hasChildNodes()) { - return false; - } - this._addFullscreenChangeListeners(); - this._setSwitchInProgress(); - this._notifyStateChange(); - if (this.container.requestFullscreen) { - this.container.requestFullscreen(); - } else if (this.container.mozRequestFullScreen) { - this.container.mozRequestFullScreen(); - } else if (this.container.webkitRequestFullscreen) { - this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); - } else if (this.container.msRequestFullscreen) { - this.container.msRequestFullscreen(); - } else { - return false; - } - this.args = { - page: this.pdfViewer.currentPageNumber, - previousScale: this.pdfViewer.currentScaleValue - }; - return true; - } - }, { - key: '_mouseWheel', - value: function _mouseWheel(evt) { - if (!this.active) { - return; - } - evt.preventDefault(); - var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt); - var currentTime = new Date().getTime(); - var storedTime = this.mouseScrollTimeStamp; - if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) { - return; - } - if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) { - this._resetMouseScrollState(); - } - this.mouseScrollDelta += delta; - if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) { - var totalDelta = this.mouseScrollDelta; - this._resetMouseScrollState(); - var success = totalDelta > 0 ? this._goToPreviousPage() : this._goToNextPage(); - if (success) { - this.mouseScrollTimeStamp = currentTime; - } - } - } - }, { - key: '_goToPreviousPage', - value: function _goToPreviousPage() { - var page = this.pdfViewer.currentPageNumber; - if (page <= 1) { - return false; - } - this.pdfViewer.currentPageNumber = page - 1; - return true; - } - }, { - key: '_goToNextPage', - value: function _goToNextPage() { - var page = this.pdfViewer.currentPageNumber; - if (page >= this.pdfViewer.pagesCount) { - return false; - } - this.pdfViewer.currentPageNumber = page + 1; - return true; - } - }, { - key: '_notifyStateChange', - value: function _notifyStateChange() { - this.eventBus.dispatch('presentationmodechanged', { - source: this, - active: this.active, - switchInProgress: !!this.switchInProgress - }); - } - }, { - key: '_setSwitchInProgress', - value: function _setSwitchInProgress() { - var _this2 = this; - - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - } - this.switchInProgress = setTimeout(function () { - _this2._removeFullscreenChangeListeners(); - delete _this2.switchInProgress; - _this2._notifyStateChange(); - }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS); - } - }, { - key: '_resetSwitchInProgress', - value: function _resetSwitchInProgress() { - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - delete this.switchInProgress; - } - } - }, { - key: '_enter', - value: function _enter() { - var _this3 = this; - - this.active = true; - this._resetSwitchInProgress(); - this._notifyStateChange(); - this.container.classList.add(ACTIVE_SELECTOR); - setTimeout(function () { - _this3.pdfViewer.currentPageNumber = _this3.args.page; - _this3.pdfViewer.currentScaleValue = 'page-fit'; - }, 0); - this._addWindowListeners(); - this._showControls(); - this.contextMenuOpen = false; - this.container.setAttribute('contextmenu', 'viewerContextMenu'); - window.getSelection().removeAllRanges(); - } - }, { - key: '_exit', - value: function _exit() { - var _this4 = this; - - var page = this.pdfViewer.currentPageNumber; - this.container.classList.remove(ACTIVE_SELECTOR); - setTimeout(function () { - _this4.active = false; - _this4._removeFullscreenChangeListeners(); - _this4._notifyStateChange(); - _this4.pdfViewer.currentScaleValue = _this4.args.previousScale; - _this4.pdfViewer.currentPageNumber = page; - _this4.args = null; - }, 0); - this._removeWindowListeners(); - this._hideControls(); - this._resetMouseScrollState(); - this.container.removeAttribute('contextmenu'); - this.contextMenuOpen = false; - } - }, { - key: '_mouseDown', - value: function _mouseDown(evt) { - if (this.contextMenuOpen) { - this.contextMenuOpen = false; - evt.preventDefault(); - return; - } - if (evt.button === 0) { - var isInternalLink = evt.target.href && evt.target.classList.contains('internalLink'); - if (!isInternalLink) { - evt.preventDefault(); - if (evt.shiftKey) { - this._goToPreviousPage(); - } else { - this._goToNextPage(); - } - } - } - } - }, { - key: '_contextMenu', - value: function _contextMenu() { - this.contextMenuOpen = true; - } - }, { - key: '_showControls', - value: function _showControls() { - var _this5 = this; - - if (this.controlsTimeout) { - clearTimeout(this.controlsTimeout); - } else { - this.container.classList.add(CONTROLS_SELECTOR); - } - this.controlsTimeout = setTimeout(function () { - _this5.container.classList.remove(CONTROLS_SELECTOR); - delete _this5.controlsTimeout; - }, DELAY_BEFORE_HIDING_CONTROLS); - } - }, { - key: '_hideControls', - value: function _hideControls() { - if (!this.controlsTimeout) { - return; - } - clearTimeout(this.controlsTimeout); - this.container.classList.remove(CONTROLS_SELECTOR); - delete this.controlsTimeout; - } - }, { - key: '_resetMouseScrollState', - value: function _resetMouseScrollState() { - this.mouseScrollTimeStamp = 0; - this.mouseScrollDelta = 0; - } - }, { - key: '_touchSwipe', - value: function _touchSwipe(evt) { - if (!this.active) { - return; - } - if (evt.touches.length > 1) { - this.touchSwipeState = null; - return; - } - switch (evt.type) { - case 'touchstart': - this.touchSwipeState = { - startX: evt.touches[0].pageX, - startY: evt.touches[0].pageY, - endX: evt.touches[0].pageX, - endY: evt.touches[0].pageY - }; - break; - case 'touchmove': - if (this.touchSwipeState === null) { - return; - } - this.touchSwipeState.endX = evt.touches[0].pageX; - this.touchSwipeState.endY = evt.touches[0].pageY; - evt.preventDefault(); - break; - case 'touchend': - if (this.touchSwipeState === null) { - return; - } - var delta = 0; - var dx = this.touchSwipeState.endX - this.touchSwipeState.startX; - var dy = this.touchSwipeState.endY - this.touchSwipeState.startY; - var absAngle = Math.abs(Math.atan2(dy, dx)); - if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) { - delta = dx; - } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) { - delta = dy; - } - if (delta > 0) { - this._goToPreviousPage(); - } else if (delta < 0) { - this._goToNextPage(); - } - break; - } - } - }, { - key: '_addWindowListeners', - value: function _addWindowListeners() { - this.showControlsBind = this._showControls.bind(this); - this.mouseDownBind = this._mouseDown.bind(this); - this.mouseWheelBind = this._mouseWheel.bind(this); - this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this); - this.contextMenuBind = this._contextMenu.bind(this); - this.touchSwipeBind = this._touchSwipe.bind(this); - window.addEventListener('mousemove', this.showControlsBind); - window.addEventListener('mousedown', this.mouseDownBind); - window.addEventListener('wheel', this.mouseWheelBind); - window.addEventListener('keydown', this.resetMouseScrollStateBind); - window.addEventListener('contextmenu', this.contextMenuBind); - window.addEventListener('touchstart', this.touchSwipeBind); - window.addEventListener('touchmove', this.touchSwipeBind); - window.addEventListener('touchend', this.touchSwipeBind); - } - }, { - key: '_removeWindowListeners', - value: function _removeWindowListeners() { - window.removeEventListener('mousemove', this.showControlsBind); - window.removeEventListener('mousedown', this.mouseDownBind); - window.removeEventListener('wheel', this.mouseWheelBind); - window.removeEventListener('keydown', this.resetMouseScrollStateBind); - window.removeEventListener('contextmenu', this.contextMenuBind); - window.removeEventListener('touchstart', this.touchSwipeBind); - window.removeEventListener('touchmove', this.touchSwipeBind); - window.removeEventListener('touchend', this.touchSwipeBind); - delete this.showControlsBind; - delete this.mouseDownBind; - delete this.mouseWheelBind; - delete this.resetMouseScrollStateBind; - delete this.contextMenuBind; - delete this.touchSwipeBind; - } - }, { - key: '_fullscreenChange', - value: function _fullscreenChange() { - if (this.isFullscreen) { - this._enter(); - } else { - this._exit(); - } - } - }, { - key: '_addFullscreenChangeListeners', - value: function _addFullscreenChangeListeners() { - this.fullscreenChangeBind = this._fullscreenChange.bind(this); - window.addEventListener('fullscreenchange', this.fullscreenChangeBind); - window.addEventListener('mozfullscreenchange', this.fullscreenChangeBind); - window.addEventListener('webkitfullscreenchange', this.fullscreenChangeBind); - window.addEventListener('MSFullscreenChange', this.fullscreenChangeBind); - } - }, { - key: '_removeFullscreenChangeListeners', - value: function _removeFullscreenChangeListeners() { - window.removeEventListener('fullscreenchange', this.fullscreenChangeBind); - window.removeEventListener('mozfullscreenchange', this.fullscreenChangeBind); - window.removeEventListener('webkitfullscreenchange', this.fullscreenChangeBind); - window.removeEventListener('MSFullscreenChange', this.fullscreenChangeBind); - delete this.fullscreenChangeBind; - } - }, { - key: 'isFullscreen', - get: function get() { - return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msFullscreenElement); - } - }]); - - return PDFPresentationMode; -}(); - -exports.PDFPresentationMode = PDFPresentationMode; - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFSidebar = exports.SidebarView = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _ui_utils = __webpack_require__(0); - -var _pdf_rendering_queue = __webpack_require__(3); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var UI_NOTIFICATION_CLASS = 'pdfSidebarNotification'; -var SidebarView = { - NONE: 0, - THUMBS: 1, - OUTLINE: 2, - ATTACHMENTS: 3 -}; - -var PDFSidebar = function () { - function PDFSidebar(options) { - var l10n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ui_utils.NullL10n; - - _classCallCheck(this, PDFSidebar); - - this.isOpen = false; - this.active = SidebarView.THUMBS; - this.isInitialViewSet = false; - this.onToggled = null; - this.pdfViewer = options.pdfViewer; - this.pdfThumbnailViewer = options.pdfThumbnailViewer; - this.pdfOutlineViewer = options.pdfOutlineViewer; - this.mainContainer = options.mainContainer; - this.outerContainer = options.outerContainer; - this.eventBus = options.eventBus; - this.toggleButton = options.toggleButton; - this.thumbnailButton = options.thumbnailButton; - this.outlineButton = options.outlineButton; - this.attachmentsButton = options.attachmentsButton; - this.thumbnailView = options.thumbnailView; - this.outlineView = options.outlineView; - this.attachmentsView = options.attachmentsView; - this.disableNotification = options.disableNotification || false; - this.l10n = l10n; - this._addEventListeners(); - } - - _createClass(PDFSidebar, [{ - key: 'reset', - value: function reset() { - this.isInitialViewSet = false; - this._hideUINotification(null); - this.switchView(SidebarView.THUMBS); - this.outlineButton.disabled = false; - this.attachmentsButton.disabled = false; - } - }, { - key: 'setInitialView', - value: function setInitialView(view) { - if (this.isInitialViewSet) { - return; - } - this.isInitialViewSet = true; - if (this.isOpen && view === SidebarView.NONE) { - this._dispatchEvent(); - return; - } - var isViewPreserved = view === this.visibleView; - this.switchView(view, true); - if (isViewPreserved) { - this._dispatchEvent(); - } - } - }, { - key: 'switchView', - value: function switchView(view) { - var forceOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (view === SidebarView.NONE) { - this.close(); - return; - } - var isViewChanged = view !== this.active; - var shouldForceRendering = false; - switch (view) { - case SidebarView.THUMBS: - this.thumbnailButton.classList.add('toggled'); - this.outlineButton.classList.remove('toggled'); - this.attachmentsButton.classList.remove('toggled'); - this.thumbnailView.classList.remove('hidden'); - this.outlineView.classList.add('hidden'); - this.attachmentsView.classList.add('hidden'); - if (this.isOpen && isViewChanged) { - this._updateThumbnailViewer(); - shouldForceRendering = true; - } - break; - case SidebarView.OUTLINE: - if (this.outlineButton.disabled) { - return; - } - this.thumbnailButton.classList.remove('toggled'); - this.outlineButton.classList.add('toggled'); - this.attachmentsButton.classList.remove('toggled'); - this.thumbnailView.classList.add('hidden'); - this.outlineView.classList.remove('hidden'); - this.attachmentsView.classList.add('hidden'); - break; - case SidebarView.ATTACHMENTS: - if (this.attachmentsButton.disabled) { - return; - } - this.thumbnailButton.classList.remove('toggled'); - this.outlineButton.classList.remove('toggled'); - this.attachmentsButton.classList.add('toggled'); - this.thumbnailView.classList.add('hidden'); - this.outlineView.classList.add('hidden'); - this.attachmentsView.classList.remove('hidden'); - break; - default: - console.error('PDFSidebar_switchView: "' + view + '" is an unsupported value.'); - return; - } - this.active = view | 0; - if (forceOpen && !this.isOpen) { - this.open(); - return; - } - if (shouldForceRendering) { - this._forceRendering(); - } - if (isViewChanged) { - this._dispatchEvent(); - } - this._hideUINotification(this.active); - } - }, { - key: 'open', - value: function open() { - if (this.isOpen) { - return; - } - this.isOpen = true; - this.toggleButton.classList.add('toggled'); - this.outerContainer.classList.add('sidebarMoving'); - this.outerContainer.classList.add('sidebarOpen'); - if (this.active === SidebarView.THUMBS) { - this._updateThumbnailViewer(); - } - this._forceRendering(); - this._dispatchEvent(); - this._hideUINotification(this.active); - } - }, { - key: 'close', - value: function close() { - if (!this.isOpen) { - return; - } - this.isOpen = false; - this.toggleButton.classList.remove('toggled'); - this.outerContainer.classList.add('sidebarMoving'); - this.outerContainer.classList.remove('sidebarOpen'); - this._forceRendering(); - this._dispatchEvent(); - } - }, { - key: 'toggle', - value: function toggle() { - if (this.isOpen) { - this.close(); - } else { - this.open(); - } - } - }, { - key: '_dispatchEvent', - value: function _dispatchEvent() { - this.eventBus.dispatch('sidebarviewchanged', { - source: this, - view: this.visibleView - }); - } - }, { - key: '_forceRendering', - value: function _forceRendering() { - if (this.onToggled) { - this.onToggled(); - } else { - this.pdfViewer.forceRendering(); - this.pdfThumbnailViewer.forceRendering(); - } - } - }, { - key: '_updateThumbnailViewer', - value: function _updateThumbnailViewer() { - var pdfViewer = this.pdfViewer, - pdfThumbnailViewer = this.pdfThumbnailViewer; - - var pagesCount = pdfViewer.pagesCount; - for (var pageIndex = 0; pageIndex < pagesCount; pageIndex++) { - var pageView = pdfViewer.getPageView(pageIndex); - if (pageView && pageView.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) { - var thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } - } - pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber); - } - }, { - key: '_showUINotification', - value: function _showUINotification(view) { - var _this = this; - - if (this.disableNotification) { - return; - } - this.l10n.get('toggle_sidebar_notification.title', null, 'Toggle Sidebar (document contains outline/attachments)').then(function (msg) { - _this.toggleButton.title = msg; - }); - if (!this.isOpen) { - this.toggleButton.classList.add(UI_NOTIFICATION_CLASS); - } else if (view === this.active) { - return; - } - switch (view) { - case SidebarView.OUTLINE: - this.outlineButton.classList.add(UI_NOTIFICATION_CLASS); - break; - case SidebarView.ATTACHMENTS: - this.attachmentsButton.classList.add(UI_NOTIFICATION_CLASS); - break; - } - } - }, { - key: '_hideUINotification', - value: function _hideUINotification(view) { - var _this2 = this; - - if (this.disableNotification) { - return; - } - var removeNotification = function removeNotification(view) { - switch (view) { - case SidebarView.OUTLINE: - _this2.outlineButton.classList.remove(UI_NOTIFICATION_CLASS); - break; - case SidebarView.ATTACHMENTS: - _this2.attachmentsButton.classList.remove(UI_NOTIFICATION_CLASS); - break; - } - }; - if (!this.isOpen && view !== null) { - return; - } - this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS); - if (view !== null) { - removeNotification(view); - return; - } - for (view in SidebarView) { - removeNotification(SidebarView[view]); - } - this.l10n.get('toggle_sidebar.title', null, 'Toggle Sidebar').then(function (msg) { - _this2.toggleButton.title = msg; - }); - } - }, { - key: '_addEventListeners', - value: function _addEventListeners() { - var _this3 = this; - - this.mainContainer.addEventListener('transitionend', function (evt) { - if (evt.target === _this3.mainContainer) { - _this3.outerContainer.classList.remove('sidebarMoving'); - } - }); - this.thumbnailButton.addEventListener('click', function () { - _this3.switchView(SidebarView.THUMBS); - }); - this.outlineButton.addEventListener('click', function () { - _this3.switchView(SidebarView.OUTLINE); - }); - this.outlineButton.addEventListener('dblclick', function () { - _this3.pdfOutlineViewer.toggleOutlineTree(); - }); - this.attachmentsButton.addEventListener('click', function () { - _this3.switchView(SidebarView.ATTACHMENTS); - }); - this.eventBus.on('outlineloaded', function (evt) { - var outlineCount = evt.outlineCount; - _this3.outlineButton.disabled = !outlineCount; - if (outlineCount) { - _this3._showUINotification(SidebarView.OUTLINE); - } else if (_this3.active === SidebarView.OUTLINE) { - _this3.switchView(SidebarView.THUMBS); - } - }); - this.eventBus.on('attachmentsloaded', function (evt) { - var attachmentsCount = evt.attachmentsCount; - _this3.attachmentsButton.disabled = !attachmentsCount; - if (attachmentsCount) { - _this3._showUINotification(SidebarView.ATTACHMENTS); - } else if (_this3.active === SidebarView.ATTACHMENTS) { - _this3.switchView(SidebarView.THUMBS); - } - }); - this.eventBus.on('presentationmodechanged', function (evt) { - if (!evt.active && !evt.switchInProgress && _this3.isThumbnailViewVisible) { - _this3._updateThumbnailViewer(); - } - }); - } - }, { - key: 'visibleView', - get: function get() { - return this.isOpen ? this.active : SidebarView.NONE; - } - }, { - key: 'isThumbnailViewVisible', - get: function get() { - return this.isOpen && this.active === SidebarView.THUMBS; - } - }, { - key: 'isOutlineViewVisible', - get: function get() { - return this.isOpen && this.active === SidebarView.OUTLINE; - } - }, { - key: 'isAttachmentsViewVisible', - get: function get() { - return this.isOpen && this.active === SidebarView.ATTACHMENTS; - } - }]); - - return PDFSidebar; -}(); - -exports.SidebarView = SidebarView; -exports.PDFSidebar = PDFSidebar; - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFThumbnailView = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _pdfjsLib = __webpack_require__(1); - -var _ui_utils = __webpack_require__(0); - -var _pdf_rendering_queue = __webpack_require__(3); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var MAX_NUM_SCALING_STEPS = 3; -var THUMBNAIL_CANVAS_BORDER_WIDTH = 1; -var THUMBNAIL_WIDTH = 98; -var TempImageFactory = function TempImageFactoryClosure() { - var tempCanvasCache = null; - return { - getCanvas: function getCanvas(width, height) { - var tempCanvas = tempCanvasCache; - if (!tempCanvas) { - tempCanvas = document.createElement('canvas'); - tempCanvasCache = tempCanvas; - } - tempCanvas.width = width; - tempCanvas.height = height; - tempCanvas.mozOpaque = true; - var ctx = tempCanvas.getContext('2d', { alpha: false }); - ctx.save(); - ctx.fillStyle = 'rgb(255, 255, 255)'; - ctx.fillRect(0, 0, width, height); - ctx.restore(); - return tempCanvas; - }, - destroyCanvas: function destroyCanvas() { - var tempCanvas = tempCanvasCache; - if (tempCanvas) { - tempCanvas.width = 0; - tempCanvas.height = 0; - } - tempCanvasCache = null; - } - }; -}(); - -var PDFThumbnailView = function () { - function PDFThumbnailView(_ref) { - var container = _ref.container, - id = _ref.id, - defaultViewport = _ref.defaultViewport, - linkService = _ref.linkService, - renderingQueue = _ref.renderingQueue, - _ref$disableCanvasToI = _ref.disableCanvasToImageConversion, - disableCanvasToImageConversion = _ref$disableCanvasToI === undefined ? false : _ref$disableCanvasToI, - _ref$l10n = _ref.l10n, - l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n; - - _classCallCheck(this, PDFThumbnailView); - - this.id = id; - this.renderingId = 'thumbnail' + id; - this.pageLabel = null; - this.pdfPage = null; - this.rotation = 0; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - this.linkService = linkService; - this.renderingQueue = renderingQueue; - this.renderTask = null; - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - this.disableCanvasToImageConversion = disableCanvasToImageConversion; - this.pageWidth = this.viewport.width; - this.pageHeight = this.viewport.height; - this.pageRatio = this.pageWidth / this.pageHeight; - this.canvasWidth = THUMBNAIL_WIDTH; - this.canvasHeight = this.canvasWidth / this.pageRatio | 0; - this.scale = this.canvasWidth / this.pageWidth; - this.l10n = l10n; - var anchor = document.createElement('a'); - anchor.href = linkService.getAnchorUrl('#page=' + id); - this.l10n.get('thumb_page_title', { page: id }, 'Page {{page}}').then(function (msg) { - anchor.title = msg; - }); - anchor.onclick = function () { - linkService.page = id; - return false; - }; - this.anchor = anchor; - var div = document.createElement('div'); - div.className = 'thumbnail'; - div.setAttribute('data-page-number', this.id); - this.div = div; - if (id === 1) { - div.classList.add('selected'); - } - var ring = document.createElement('div'); - ring.className = 'thumbnailSelectionRing'; - var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + 'px'; - ring.style.height = this.canvasHeight + borderAdjustment + 'px'; - this.ring = ring; - div.appendChild(ring); - anchor.appendChild(div); - container.appendChild(anchor); - } - - _createClass(PDFThumbnailView, [{ - key: 'setPdfPage', - value: function setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport(1, totalRotation); - this.reset(); - } - }, { - key: 'reset', - value: function reset() { - this.cancelRendering(); - this.pageWidth = this.viewport.width; - this.pageHeight = this.viewport.height; - this.pageRatio = this.pageWidth / this.pageHeight; - this.canvasHeight = this.canvasWidth / this.pageRatio | 0; - this.scale = this.canvasWidth / this.pageWidth; - this.div.removeAttribute('data-loaded'); - var ring = this.ring; - var childNodes = ring.childNodes; - for (var i = childNodes.length - 1; i >= 0; i--) { - ring.removeChild(childNodes[i]); - } - var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + 'px'; - ring.style.height = this.canvasHeight + borderAdjustment + 'px'; - if (this.canvas) { - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - if (this.image) { - this.image.removeAttribute('src'); - delete this.image; - } - } - }, { - key: 'update', - value: function update(rotation) { - if (typeof rotation !== 'undefined') { - this.rotation = rotation; - } - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: 1, - rotation: totalRotation - }); - this.reset(); - } - }, { - key: 'cancelRendering', - value: function cancelRendering() { - if (this.renderTask) { - this.renderTask.cancel(); - this.renderTask = null; - } - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - } - }, { - key: '_getPageDrawContext', - value: function _getPageDrawContext() { - var noCtxScale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - var canvas = document.createElement('canvas'); - this.canvas = canvas; - canvas.mozOpaque = true; - var ctx = canvas.getContext('2d', { alpha: false }); - var outputScale = (0, _ui_utils.getOutputScale)(ctx); - canvas.width = this.canvasWidth * outputScale.sx | 0; - canvas.height = this.canvasHeight * outputScale.sy | 0; - canvas.style.width = this.canvasWidth + 'px'; - canvas.style.height = this.canvasHeight + 'px'; - if (!noCtxScale && outputScale.scaled) { - ctx.scale(outputScale.sx, outputScale.sy); - } - return ctx; - } - }, { - key: '_convertCanvasToImage', - value: function _convertCanvasToImage() { - var _this = this; - - if (!this.canvas) { - return; - } - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - return; - } - var id = this.renderingId; - var className = 'thumbnailImage'; - if (this.disableCanvasToImageConversion) { - this.canvas.id = id; - this.canvas.className = className; - this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function (msg) { - _this.canvas.setAttribute('aria-label', msg); - }); - this.div.setAttribute('data-loaded', true); - this.ring.appendChild(this.canvas); - return; - } - var image = document.createElement('img'); - image.id = id; - image.className = className; - this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function (msg) { - image.setAttribute('aria-label', msg); - }); - image.style.width = this.canvasWidth + 'px'; - image.style.height = this.canvasHeight + 'px'; - image.src = this.canvas.toDataURL(); - this.image = image; - this.div.setAttribute('data-loaded', true); - this.ring.appendChild(image); - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - }, { - key: 'draw', - value: function draw() { - var _this2 = this; - - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { - console.error('Must be in new state before drawing'); - return Promise.resolve(undefined); - } - this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - var renderCapability = (0, _pdfjsLib.createPromiseCapability)(); - var finishRenderTask = function finishRenderTask(error) { - if (renderTask === _this2.renderTask) { - _this2.renderTask = null; - } - if (error === 'cancelled' || error instanceof _pdfjsLib.RenderingCancelledException) { - renderCapability.resolve(undefined); - return; - } - _this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - _this2._convertCanvasToImage(); - if (!error) { - renderCapability.resolve(undefined); - } else { - renderCapability.reject(error); - } - }; - var ctx = this._getPageDrawContext(); - var drawViewport = this.viewport.clone({ scale: this.scale }); - var renderContinueCallback = function renderContinueCallback(cont) { - if (!_this2.renderingQueue.isHighestPriority(_this2)) { - _this2.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED; - _this2.resume = function () { - _this2.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - cont(); - }; - return; - } - cont(); - }; - var renderContext = { - canvasContext: ctx, - viewport: drawViewport - }; - var renderTask = this.renderTask = this.pdfPage.render(renderContext); - renderTask.onContinue = renderContinueCallback; - renderTask.promise.then(function () { - finishRenderTask(null); - }, function (error) { - finishRenderTask(error); - }); - return renderCapability.promise; - } - }, { - key: 'setImage', - value: function setImage(pageView) { - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { - return; - } - var img = pageView.canvas; - if (!img) { - return; - } - if (!this.pdfPage) { - this.setPdfPage(pageView.pdfPage); - } - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - var ctx = this._getPageDrawContext(true); - var canvas = ctx.canvas; - if (img.width <= 2 * canvas.width) { - ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height); - this._convertCanvasToImage(); - return; - } - var reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS; - var reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS; - var reducedImage = TempImageFactory.getCanvas(reducedWidth, reducedHeight); - var reducedImageCtx = reducedImage.getContext('2d'); - while (reducedWidth > img.width || reducedHeight > img.height) { - reducedWidth >>= 1; - reducedHeight >>= 1; - } - reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight); - while (reducedWidth > 2 * canvas.width) { - reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1); - reducedWidth >>= 1; - reducedHeight >>= 1; - } - ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height); - this._convertCanvasToImage(); - } - }, { - key: 'setPageLabel', - value: function setPageLabel(label) { - var _this3 = this; - - this.pageLabel = typeof label === 'string' ? label : null; - this.l10n.get('thumb_page_title', { page: this.pageId }, 'Page {{page}}').then(function (msg) { - _this3.anchor.title = msg; - }); - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - return; - } - this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function (ariaLabel) { - if (_this3.image) { - _this3.image.setAttribute('aria-label', ariaLabel); - } else if (_this3.disableCanvasToImageConversion && _this3.canvas) { - _this3.canvas.setAttribute('aria-label', ariaLabel); - } - }); - } - }, { - key: 'pageId', - get: function get() { - return this.pageLabel !== null ? this.pageLabel : this.id; - } - }], [{ - key: 'cleanup', - value: function cleanup() { - TempImageFactory.destroyCanvas(); - } - }]); - - return PDFThumbnailView; -}(); - -exports.PDFThumbnailView = PDFThumbnailView; - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFThumbnailViewer = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _ui_utils = __webpack_require__(0); - -var _pdf_thumbnail_view = __webpack_require__(25); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var THUMBNAIL_SCROLL_MARGIN = -19; - -var PDFThumbnailViewer = function () { - function PDFThumbnailViewer(_ref) { - var container = _ref.container, - linkService = _ref.linkService, - renderingQueue = _ref.renderingQueue, - _ref$l10n = _ref.l10n, - l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n; - - _classCallCheck(this, PDFThumbnailViewer); - - this.container = container; - this.linkService = linkService; - this.renderingQueue = renderingQueue; - this.l10n = l10n; - this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this)); - this._resetView(); - } - - _createClass(PDFThumbnailViewer, [{ - key: '_scrollUpdated', - value: function _scrollUpdated() { - this.renderingQueue.renderHighestPriority(); - } - }, { - key: 'getThumbnail', - value: function getThumbnail(index) { - return this._thumbnails[index]; - } - }, { - key: '_getVisibleThumbs', - value: function _getVisibleThumbs() { - return (0, _ui_utils.getVisibleElements)(this.container, this._thumbnails); - } - }, { - key: 'scrollThumbnailIntoView', - value: function scrollThumbnailIntoView(page) { - var selected = document.querySelector('.thumbnail.selected'); - if (selected) { - selected.classList.remove('selected'); - } - var thumbnail = document.querySelector('div.thumbnail[data-page-number="' + page + '"]'); - if (thumbnail) { - thumbnail.classList.add('selected'); - } - var visibleThumbs = this._getVisibleThumbs(); - var numVisibleThumbs = visibleThumbs.views.length; - if (numVisibleThumbs > 0) { - var first = visibleThumbs.first.id; - var last = numVisibleThumbs > 1 ? visibleThumbs.last.id : first; - if (page <= first || page >= last) { - (0, _ui_utils.scrollIntoView)(thumbnail, { top: THUMBNAIL_SCROLL_MARGIN }); - } - } - } - }, { - key: 'cleanup', - value: function cleanup() { - _pdf_thumbnail_view.PDFThumbnailView.cleanup(); - } - }, { - key: '_resetView', - value: function _resetView() { - this._thumbnails = []; - this._pageLabels = null; - this._pagesRotation = 0; - this._pagesRequests = []; - this.container.textContent = ''; - } - }, { - key: 'setDocument', - value: function setDocument(pdfDocument) { - var _this = this; - - if (this.pdfDocument) { - this._cancelRendering(); - this._resetView(); - } - this.pdfDocument = pdfDocument; - if (!pdfDocument) { - return; - } - pdfDocument.getPage(1).then(function (firstPage) { - var pagesCount = pdfDocument.numPages; - var viewport = firstPage.getViewport(1.0); - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - var thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({ - container: _this.container, - id: pageNum, - defaultViewport: viewport.clone(), - linkService: _this.linkService, - renderingQueue: _this.renderingQueue, - disableCanvasToImageConversion: false, - l10n: _this.l10n - }); - _this._thumbnails.push(thumbnail); - } - }).catch(function (reason) { - console.error('Unable to initialize thumbnail viewer', reason); - }); - } - }, { - key: '_cancelRendering', - value: function _cancelRendering() { - for (var i = 0, ii = this._thumbnails.length; i < ii; i++) { - if (this._thumbnails[i]) { - this._thumbnails[i].cancelRendering(); - } - } - } - }, { - key: 'setPageLabels', - value: function setPageLabels(labels) { - if (!this.pdfDocument) { - return; - } - if (!labels) { - this._pageLabels = null; - } else if (!(labels instanceof Array && this.pdfDocument.numPages === labels.length)) { - this._pageLabels = null; - console.error('PDFThumbnailViewer_setPageLabels: Invalid page labels.'); - } else { - this._pageLabels = labels; - } - for (var i = 0, ii = this._thumbnails.length; i < ii; i++) { - var label = this._pageLabels && this._pageLabels[i]; - this._thumbnails[i].setPageLabel(label); - } - } - }, { - key: '_ensurePdfPageLoaded', - value: function _ensurePdfPageLoaded(thumbView) { - var _this2 = this; - - if (thumbView.pdfPage) { - return Promise.resolve(thumbView.pdfPage); - } - var pageNumber = thumbView.id; - if (this._pagesRequests[pageNumber]) { - return this._pagesRequests[pageNumber]; - } - var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) { - thumbView.setPdfPage(pdfPage); - _this2._pagesRequests[pageNumber] = null; - return pdfPage; - }).catch(function (reason) { - console.error('Unable to get page for thumb view', reason); - _this2._pagesRequests[pageNumber] = null; - }); - this._pagesRequests[pageNumber] = promise; - return promise; - } - }, { - key: 'forceRendering', - value: function forceRendering() { - var _this3 = this; - - var visibleThumbs = this._getVisibleThumbs(); - var thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, this.scroll.down); - if (thumbView) { - this._ensurePdfPageLoaded(thumbView).then(function () { - _this3.renderingQueue.renderView(thumbView); - }); - return true; - } - return false; - } - }, { - key: 'pagesRotation', - get: function get() { - return this._pagesRotation; - }, - set: function set(rotation) { - if (!(typeof rotation === 'number' && rotation % 90 === 0)) { - throw new Error('Invalid thumbnails rotation angle.'); - } - if (!this.pdfDocument) { - return; - } - this._pagesRotation = rotation; - for (var i = 0, ii = this._thumbnails.length; i < ii; i++) { - this._thumbnails[i].update(rotation); - } - } - }]); - - return PDFThumbnailViewer; -}(); - -exports.PDFThumbnailViewer = PDFThumbnailViewer; - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFViewer = exports.PresentationModeState = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _pdfjsLib = __webpack_require__(1); - -var _ui_utils = __webpack_require__(0); - -var _pdf_rendering_queue = __webpack_require__(3); - -var _annotation_layer_builder = __webpack_require__(11); - -var _dom_events = __webpack_require__(2); - -var _pdf_page_view = __webpack_require__(22); - -var _pdf_link_service = __webpack_require__(5); - -var _text_layer_builder = __webpack_require__(30); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var PresentationModeState = { - UNKNOWN: 0, - NORMAL: 1, - CHANGING: 2, - FULLSCREEN: 3 -}; -var DEFAULT_CACHE_SIZE = 10; -function PDFPageViewBuffer(size) { - var data = []; - this.push = function cachePush(view) { - var i = data.indexOf(view); - if (i >= 0) { - data.splice(i, 1); - } - data.push(view); - if (data.length > size) { - data.shift().destroy(); - } - }; - this.resize = function (newSize) { - size = newSize; - while (data.length > size) { - data.shift().destroy(); - } - }; -} -function isSameScale(oldScale, newScale) { - if (newScale === oldScale) { - return true; - } - if (Math.abs(newScale - oldScale) < 1e-15) { - return true; - } - return false; -} -function isPortraitOrientation(size) { - return size.width <= size.height; -} - -var PDFViewer = function () { - function PDFViewer(options) { - _classCallCheck(this, PDFViewer); - - this.container = options.container; - this.viewer = options.viewer || options.container.firstElementChild; - this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); - this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService(); - this.downloadManager = options.downloadManager || null; - this.removePageBorders = options.removePageBorders || false; - this.enhanceTextSelection = options.enhanceTextSelection || false; - this.renderInteractiveForms = options.renderInteractiveForms || false; - this.enablePrintAutoRotate = options.enablePrintAutoRotate || false; - this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; - this.l10n = options.l10n || _ui_utils.NullL10n; - this.defaultRenderingQueue = !options.renderingQueue; - if (this.defaultRenderingQueue) { - this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); - this.renderingQueue.setViewer(this); - } else { - this.renderingQueue = options.renderingQueue; - } - this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this)); - this.presentationModeState = PresentationModeState.UNKNOWN; - this._resetView(); - if (this.removePageBorders) { - this.viewer.classList.add('removePageBorders'); - } - } - - _createClass(PDFViewer, [{ - key: 'getPageView', - value: function getPageView(index) { - return this._pages[index]; - } - }, { - key: '_setCurrentPageNumber', - value: function _setCurrentPageNumber(val) { - var resetCurrentPageView = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (this._currentPageNumber === val) { - if (resetCurrentPageView) { - this._resetCurrentPageView(); - } - return; - } - if (!(0 < val && val <= this.pagesCount)) { - console.error('PDFViewer._setCurrentPageNumber: "' + val + '" is out of bounds.'); - return; - } - var arg = { - source: this, - pageNumber: val, - pageLabel: this._pageLabels && this._pageLabels[val - 1] - }; - this._currentPageNumber = val; - this.eventBus.dispatch('pagechanging', arg); - this.eventBus.dispatch('pagechange', arg); - if (resetCurrentPageView) { - this._resetCurrentPageView(); - } - } - }, { - key: 'setDocument', - value: function setDocument(pdfDocument) { - var _this = this; - - if (this.pdfDocument) { - this._cancelRendering(); - this._resetView(); - } - this.pdfDocument = pdfDocument; - if (!pdfDocument) { - return; - } - var pagesCount = pdfDocument.numPages; - var pagesCapability = (0, _pdfjsLib.createPromiseCapability)(); - this.pagesPromise = pagesCapability.promise; - pagesCapability.promise.then(function () { - _this._pageViewsReady = true; - _this.eventBus.dispatch('pagesloaded', { - source: _this, - pagesCount: pagesCount - }); - }); - var isOnePageRenderedResolved = false; - var onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)(); - this.onePageRendered = onePageRenderedCapability.promise; - var bindOnAfterAndBeforeDraw = function bindOnAfterAndBeforeDraw(pageView) { - pageView.onBeforeDraw = function () { - _this._buffer.push(pageView); - }; - pageView.onAfterDraw = function () { - if (!isOnePageRenderedResolved) { - isOnePageRenderedResolved = true; - onePageRenderedCapability.resolve(); - } - }; - }; - var firstPagePromise = pdfDocument.getPage(1); - this.firstPagePromise = firstPagePromise; - firstPagePromise.then(function (pdfPage) { - var scale = _this.currentScale; - var viewport = pdfPage.getViewport(scale * _ui_utils.CSS_UNITS); - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - var textLayerFactory = null; - if (!_pdfjsLib.PDFJS.disableTextLayer) { - textLayerFactory = _this; - } - var pageView = new _pdf_page_view.PDFPageView({ - container: _this.viewer, - eventBus: _this.eventBus, - id: pageNum, - scale: scale, - defaultViewport: viewport.clone(), - renderingQueue: _this.renderingQueue, - textLayerFactory: textLayerFactory, - annotationLayerFactory: _this, - enhanceTextSelection: _this.enhanceTextSelection, - renderInteractiveForms: _this.renderInteractiveForms, - renderer: _this.renderer, - l10n: _this.l10n - }); - bindOnAfterAndBeforeDraw(pageView); - _this._pages.push(pageView); - } - onePageRenderedCapability.promise.then(function () { - if (_pdfjsLib.PDFJS.disableAutoFetch) { - pagesCapability.resolve(); - return; - } - var getPagesLeft = pagesCount; - - var _loop = function _loop(_pageNum) { - pdfDocument.getPage(_pageNum).then(function (pdfPage) { - var pageView = _this._pages[_pageNum - 1]; - if (!pageView.pdfPage) { - pageView.setPdfPage(pdfPage); - } - _this.linkService.cachePageRef(_pageNum, pdfPage.ref); - if (--getPagesLeft === 0) { - pagesCapability.resolve(); - } - }, function (reason) { - console.error('Unable to get page ' + _pageNum + ' to initialize viewer', reason); - if (--getPagesLeft === 0) { - pagesCapability.resolve(); - } - }); - }; - - for (var _pageNum = 1; _pageNum <= pagesCount; ++_pageNum) { - _loop(_pageNum); - } - }); - _this.eventBus.dispatch('pagesinit', { source: _this }); - if (_this.defaultRenderingQueue) { - _this.update(); - } - if (_this.findController) { - _this.findController.resolveFirstPage(); - } - }).catch(function (reason) { - console.error('Unable to initialize viewer', reason); - }); - } - }, { - key: 'setPageLabels', - value: function setPageLabels(labels) { - if (!this.pdfDocument) { - return; - } - if (!labels) { - this._pageLabels = null; - } else if (!(labels instanceof Array && this.pdfDocument.numPages === labels.length)) { - this._pageLabels = null; - console.error('PDFViewer.setPageLabels: Invalid page labels.'); - } else { - this._pageLabels = labels; - } - for (var i = 0, ii = this._pages.length; i < ii; i++) { - var pageView = this._pages[i]; - var label = this._pageLabels && this._pageLabels[i]; - pageView.setPageLabel(label); - } - } - }, { - key: '_resetView', - value: function _resetView() { - this._pages = []; - this._currentPageNumber = 1; - this._currentScale = _ui_utils.UNKNOWN_SCALE; - this._currentScaleValue = null; - this._pageLabels = null; - this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); - this._location = null; - this._pagesRotation = 0; - this._pagesRequests = []; - this._pageViewsReady = false; - this.viewer.textContent = ''; - } - }, { - key: '_scrollUpdate', - value: function _scrollUpdate() { - if (this.pagesCount === 0) { - return; - } - this.update(); - } - }, { - key: '_setScaleDispatchEvent', - value: function _setScaleDispatchEvent(newScale, newValue) { - var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var arg = { - source: this, - scale: newScale, - presetValue: preset ? newValue : undefined - }; - this.eventBus.dispatch('scalechanging', arg); - this.eventBus.dispatch('scalechange', arg); - } - }, { - key: '_setScaleUpdatePages', - value: function _setScaleUpdatePages(newScale, newValue) { - var noScroll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var preset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - - this._currentScaleValue = newValue.toString(); - if (isSameScale(this._currentScale, newScale)) { - if (preset) { - this._setScaleDispatchEvent(newScale, newValue, true); - } - return; - } - for (var i = 0, ii = this._pages.length; i < ii; i++) { - this._pages[i].update(newScale); - } - this._currentScale = newScale; - if (!noScroll) { - var page = this._currentPageNumber, - dest = void 0; - if (this._location && !_pdfjsLib.PDFJS.ignoreCurrentPositionOnZoom && !(this.isInPresentationMode || this.isChangingPresentationMode)) { - page = this._location.pageNumber; - dest = [null, { name: 'XYZ' }, this._location.left, this._location.top, null]; - } - this.scrollPageIntoView({ - pageNumber: page, - destArray: dest, - allowNegativeOffset: true - }); - } - this._setScaleDispatchEvent(newScale, newValue, preset); - if (this.defaultRenderingQueue) { - this.update(); - } - } - }, { - key: '_setScale', - value: function _setScale(value) { - var noScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - var scale = parseFloat(value); - if (scale > 0) { - this._setScaleUpdatePages(scale, value, noScroll, false); - } else { - var currentPage = this._pages[this._currentPageNumber - 1]; - if (!currentPage) { - return; - } - var hPadding = this.isInPresentationMode || this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING; - var vPadding = this.isInPresentationMode || this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING; - var pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale; - var pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale; - switch (value) { - case 'page-actual': - scale = 1; - break; - case 'page-width': - scale = pageWidthScale; - break; - case 'page-height': - scale = pageHeightScale; - break; - case 'page-fit': - scale = Math.min(pageWidthScale, pageHeightScale); - break; - case 'auto': - var isLandscape = currentPage.width > currentPage.height; - var horizontalScale = isLandscape ? Math.min(pageHeightScale, pageWidthScale) : pageWidthScale; - scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale); - break; - default: - console.error('PDFViewer._setScale: "' + value + '" is an unknown zoom value.'); - return; - } - this._setScaleUpdatePages(scale, value, noScroll, true); - } - } - }, { - key: '_resetCurrentPageView', - value: function _resetCurrentPageView() { - if (this.isInPresentationMode) { - this._setScale(this._currentScaleValue, true); - } - var pageView = this._pages[this._currentPageNumber - 1]; - (0, _ui_utils.scrollIntoView)(pageView.div); - } - }, { - key: 'scrollPageIntoView', - value: function scrollPageIntoView(params) { - if (!this.pdfDocument) { - return; - } - if (arguments.length > 1 || typeof params === 'number') { - console.warn('Call of scrollPageIntoView() with obsolete signature.'); - var paramObj = {}; - if (typeof params === 'number') { - paramObj.pageNumber = params; - } - if (arguments[1] instanceof Array) { - paramObj.destArray = arguments[1]; - } - params = paramObj; - } - var pageNumber = params.pageNumber || 0; - var dest = params.destArray || null; - var allowNegativeOffset = params.allowNegativeOffset || false; - if (this.isInPresentationMode || !dest) { - this._setCurrentPageNumber(pageNumber, true); - return; - } - var pageView = this._pages[pageNumber - 1]; - if (!pageView) { - console.error('PDFViewer.scrollPageIntoView: Invalid "pageNumber" parameter.'); - return; - } - var x = 0, - y = 0; - var width = 0, - height = 0, - widthScale = void 0, - heightScale = void 0; - var changeOrientation = pageView.rotation % 180 === 0 ? false : true; - var pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS; - var pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS; - var scale = 0; - switch (dest[1].name) { - case 'XYZ': - x = dest[2]; - y = dest[3]; - scale = dest[4]; - x = x !== null ? x : 0; - y = y !== null ? y : pageHeight; - break; - case 'Fit': - case 'FitB': - scale = 'page-fit'; - break; - case 'FitH': - case 'FitBH': - y = dest[2]; - scale = 'page-width'; - if (y === null && this._location) { - x = this._location.left; - y = this._location.top; - } - break; - case 'FitV': - case 'FitBV': - x = dest[2]; - width = pageWidth; - height = pageHeight; - scale = 'page-height'; - break; - case 'FitR': - x = dest[2]; - y = dest[3]; - width = dest[4] - x; - height = dest[5] - y; - var hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING; - var vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING; - widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS; - heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS; - scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); - break; - default: - console.error('PDFViewer.scrollPageIntoView: "' + dest[1].name + '" ' + 'is not a valid destination type.'); - return; - } - if (scale && scale !== this._currentScale) { - this.currentScaleValue = scale; - } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) { - this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - } - if (scale === 'page-fit' && !dest[4]) { - (0, _ui_utils.scrollIntoView)(pageView.div); - return; - } - var boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)]; - var left = Math.min(boundingRect[0][0], boundingRect[1][0]); - var top = Math.min(boundingRect[0][1], boundingRect[1][1]); - if (!allowNegativeOffset) { - left = Math.max(left, 0); - top = Math.max(top, 0); - } - (0, _ui_utils.scrollIntoView)(pageView.div, { - left: left, - top: top - }); - } - }, { - key: '_updateLocation', - value: function _updateLocation(firstPage) { - var currentScale = this._currentScale; - var currentScaleValue = this._currentScaleValue; - var normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue; - var pageNumber = firstPage.id; - var pdfOpenParams = '#page=' + pageNumber; - pdfOpenParams += '&zoom=' + normalizedScaleValue; - var currentPageView = this._pages[pageNumber - 1]; - var container = this.container; - var topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y); - var intLeft = Math.round(topLeft[0]); - var intTop = Math.round(topLeft[1]); - pdfOpenParams += ',' + intLeft + ',' + intTop; - this._location = { - pageNumber: pageNumber, - scale: normalizedScaleValue, - top: intTop, - left: intLeft, - pdfOpenParams: pdfOpenParams - }; - } - }, { - key: 'update', - value: function update() { - var visible = this._getVisiblePages(); - var visiblePages = visible.views; - if (visiblePages.length === 0) { - return; - } - var suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * visiblePages.length + 1); - this._buffer.resize(suggestedCacheSize); - this.renderingQueue.renderHighestPriority(visible); - var currentId = this._currentPageNumber; - var firstPage = visible.first; - var stillFullyVisible = false; - for (var i = 0, ii = visiblePages.length; i < ii; ++i) { - var page = visiblePages[i]; - if (page.percent < 100) { - break; - } - if (page.id === currentId) { - stillFullyVisible = true; - break; - } - } - if (!stillFullyVisible) { - currentId = visiblePages[0].id; - } - if (!this.isInPresentationMode) { - this._setCurrentPageNumber(currentId); - } - this._updateLocation(firstPage); - this.eventBus.dispatch('updateviewarea', { - source: this, - location: this._location - }); - } - }, { - key: 'containsElement', - value: function containsElement(element) { - return this.container.contains(element); - } - }, { - key: 'focus', - value: function focus() { - this.container.focus(); - } - }, { - key: '_getVisiblePages', - value: function _getVisiblePages() { - if (!this.isInPresentationMode) { - return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true); - } - var visible = []; - var currentPage = this._pages[this._currentPageNumber - 1]; - visible.push({ - id: currentPage.id, - view: currentPage - }); - return { - first: currentPage, - last: currentPage, - views: visible - }; - } - }, { - key: 'cleanup', - value: function cleanup() { - for (var i = 0, ii = this._pages.length; i < ii; i++) { - if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - this._pages[i].reset(); - } - } - } - }, { - key: '_cancelRendering', - value: function _cancelRendering() { - for (var i = 0, ii = this._pages.length; i < ii; i++) { - if (this._pages[i]) { - this._pages[i].cancelRendering(); - } - } - } - }, { - key: '_ensurePdfPageLoaded', - value: function _ensurePdfPageLoaded(pageView) { - var _this2 = this; - - if (pageView.pdfPage) { - return Promise.resolve(pageView.pdfPage); - } - var pageNumber = pageView.id; - if (this._pagesRequests[pageNumber]) { - return this._pagesRequests[pageNumber]; - } - var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) { - if (!pageView.pdfPage) { - pageView.setPdfPage(pdfPage); - } - _this2._pagesRequests[pageNumber] = null; - return pdfPage; - }).catch(function (reason) { - console.error('Unable to get page for page view', reason); - _this2._pagesRequests[pageNumber] = null; - }); - this._pagesRequests[pageNumber] = promise; - return promise; - } - }, { - key: 'forceRendering', - value: function forceRendering(currentlyVisiblePages) { - var _this3 = this; - - var visiblePages = currentlyVisiblePages || this._getVisiblePages(); - var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, this.scroll.down); - if (pageView) { - this._ensurePdfPageLoaded(pageView).then(function () { - _this3.renderingQueue.renderView(pageView); - }); - return true; - } - return false; - } - }, { - key: 'getPageTextContent', - value: function getPageTextContent(pageIndex) { - return this.pdfDocument.getPage(pageIndex + 1).then(function (page) { - return page.getTextContent({ normalizeWhitespace: true }); - }); - } - }, { - key: 'createTextLayerBuilder', - value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) { - var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - - return new _text_layer_builder.TextLayerBuilder({ - textLayerDiv: textLayerDiv, - eventBus: this.eventBus, - pageIndex: pageIndex, - viewport: viewport, - findController: this.isInPresentationMode ? null : this.findController, - enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection - }); - } - }, { - key: 'createAnnotationLayerBuilder', - value: function createAnnotationLayerBuilder(pageDiv, pdfPage) { - var renderInteractiveForms = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var l10n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _ui_utils.NullL10n; - - return new _annotation_layer_builder.AnnotationLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage, - renderInteractiveForms: renderInteractiveForms, - linkService: this.linkService, - downloadManager: this.downloadManager, - l10n: l10n - }); - } - }, { - key: 'setFindController', - value: function setFindController(findController) { - this.findController = findController; - } - }, { - key: 'getPagesOverview', - value: function getPagesOverview() { - var pagesOverview = this._pages.map(function (pageView) { - var viewport = pageView.pdfPage.getViewport(1); - return { - width: viewport.width, - height: viewport.height, - rotation: viewport.rotation - }; - }); - if (!this.enablePrintAutoRotate) { - return pagesOverview; - } - var isFirstPagePortrait = isPortraitOrientation(pagesOverview[0]); - return pagesOverview.map(function (size) { - if (isFirstPagePortrait === isPortraitOrientation(size)) { - return size; - } - return { - width: size.height, - height: size.width, - rotation: (size.rotation + 90) % 360 - }; - }); - } - }, { - key: 'pagesCount', - get: function get() { - return this._pages.length; - } - }, { - key: 'pageViewsReady', - get: function get() { - return this._pageViewsReady; - } - }, { - key: 'currentPageNumber', - get: function get() { - return this._currentPageNumber; - }, - set: function set(val) { - if ((val | 0) !== val) { - throw new Error('Invalid page number.'); - } - if (!this.pdfDocument) { - return; - } - this._setCurrentPageNumber(val, true); - } - }, { - key: 'currentPageLabel', - get: function get() { - return this._pageLabels && this._pageLabels[this._currentPageNumber - 1]; - }, - set: function set(val) { - var pageNumber = val | 0; - if (this._pageLabels) { - var i = this._pageLabels.indexOf(val); - if (i >= 0) { - pageNumber = i + 1; - } - } - this.currentPageNumber = pageNumber; - } - }, { - key: 'currentScale', - get: function get() { - return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE; - }, - set: function set(val) { - if (isNaN(val)) { - throw new Error('Invalid numeric scale'); - } - if (!this.pdfDocument) { - return; - } - this._setScale(val, false); - } - }, { - key: 'currentScaleValue', - get: function get() { - return this._currentScaleValue; - }, - set: function set(val) { - if (!this.pdfDocument) { - return; - } - this._setScale(val, false); - } - }, { - key: 'pagesRotation', - get: function get() { - return this._pagesRotation; - }, - set: function set(rotation) { - if (!(typeof rotation === 'number' && rotation % 90 === 0)) { - throw new Error('Invalid pages rotation angle.'); - } - if (!this.pdfDocument) { - return; - } - this._pagesRotation = rotation; - for (var i = 0, ii = this._pages.length; i < ii; i++) { - var pageView = this._pages[i]; - pageView.update(pageView.scale, rotation); - } - this._setScale(this._currentScaleValue, true); - if (this.defaultRenderingQueue) { - this.update(); - } - } - }, { - key: 'isInPresentationMode', - get: function get() { - return this.presentationModeState === PresentationModeState.FULLSCREEN; - } - }, { - key: 'isChangingPresentationMode', - get: function get() { - return this.presentationModeState === PresentationModeState.CHANGING; - } - }, { - key: 'isHorizontalScrollbarEnabled', - get: function get() { - return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth; - } - }, { - key: 'hasEqualPageSizes', - get: function get() { - var firstPageView = this._pages[0]; - for (var i = 1, ii = this._pages.length; i < ii; ++i) { - var pageView = this._pages[i]; - if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) { - return false; - } - } - return true; - } - }]); - - return PDFViewer; -}(); - -exports.PresentationModeState = PresentationModeState; -exports.PDFViewer = PDFViewer; - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.BasePreferences = undefined; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _ui_utils = __webpack_require__(0); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var defaultPreferences = null; -function getDefaultPreferences() { - if (!defaultPreferences) { - defaultPreferences = Promise.resolve({ - "showPreviousViewOnLoad": true, - "defaultZoomValue": "", - "sidebarViewOnLoad": 0, - "enableHandToolOnLoad": false, - "cursorToolOnLoad": 0, - "enableWebGL": false, - "pdfBugEnabled": false, - "disableRange": false, - "disableStream": false, - "disableAutoFetch": false, - "disableFontFace": false, - "disableTextLayer": false, - "useOnlyCssZoom": false, - "externalLinkTarget": 0, - "enhanceTextSelection": false, - "renderer": "canvas", - "renderInteractiveForms": false, - "enablePrintAutoRotate": false, - "disablePageMode": false, - "disablePageLabels": false - }); - } - return defaultPreferences; -} - -var BasePreferences = function () { - function BasePreferences() { - var _this = this; - - _classCallCheck(this, BasePreferences); - - if (this.constructor === BasePreferences) { - throw new Error('Cannot initialize BasePreferences.'); - } - this.prefs = null; - this._initializedPromise = getDefaultPreferences().then(function (defaults) { - Object.defineProperty(_this, 'defaults', { - value: Object.freeze(defaults), - writable: false, - enumerable: true, - configurable: false - }); - _this.prefs = (0, _ui_utils.cloneObj)(defaults); - return _this._readFromStorage(defaults); - }).then(function (prefObj) { - if (prefObj) { - _this.prefs = prefObj; - } - }); - } - - _createClass(BasePreferences, [{ - key: "_writeToStorage", - value: function _writeToStorage(prefObj) { - return Promise.reject(new Error('Not implemented: _writeToStorage')); - } - }, { - key: "_readFromStorage", - value: function _readFromStorage(prefObj) { - return Promise.reject(new Error('Not implemented: _readFromStorage')); - } - }, { - key: "reset", - value: function reset() { - var _this2 = this; - - return this._initializedPromise.then(function () { - _this2.prefs = (0, _ui_utils.cloneObj)(_this2.defaults); - return _this2._writeToStorage(_this2.defaults); - }); - } - }, { - key: "reload", - value: function reload() { - var _this3 = this; - - return this._initializedPromise.then(function () { - return _this3._readFromStorage(_this3.defaults); - }).then(function (prefObj) { - if (prefObj) { - _this3.prefs = prefObj; - } - }); - } - }, { - key: "set", - value: function set(name, value) { - var _this4 = this; - - return this._initializedPromise.then(function () { - if (_this4.defaults[name] === undefined) { - throw new Error("Set preference: \"" + name + "\" is undefined."); - } else if (value === undefined) { - throw new Error('Set preference: no value is specified.'); - } - var valueType = typeof value === "undefined" ? "undefined" : _typeof(value); - var defaultType = _typeof(_this4.defaults[name]); - if (valueType !== defaultType) { - if (valueType === 'number' && defaultType === 'string') { - value = value.toString(); - } else { - throw new Error("Set preference: \"" + value + "\" is a " + valueType + ", " + ("expected a " + defaultType + ".")); - } - } else { - if (valueType === 'number' && (value | 0) !== value) { - throw new Error("Set preference: \"" + value + "\" must be an integer."); - } - } - _this4.prefs[name] = value; - return _this4._writeToStorage(_this4.prefs); - }); - } - }, { - key: "get", - value: function get(name) { - var _this5 = this; - - return this._initializedPromise.then(function () { - var defaultValue = _this5.defaults[name]; - if (defaultValue === undefined) { - throw new Error("Get preference: \"" + name + "\" is undefined."); - } else { - var prefValue = _this5.prefs[name]; - if (prefValue !== undefined) { - return prefValue; - } - } - return defaultValue; - }); - } - }]); - - return BasePreferences; -}(); - -exports.BasePreferences = BasePreferences; - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SecondaryToolbar = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _pdf_cursor_tools = __webpack_require__(6); - -var _ui_utils = __webpack_require__(0); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var SecondaryToolbar = function () { - function SecondaryToolbar(options, mainContainer, eventBus) { - _classCallCheck(this, SecondaryToolbar); - - this.toolbar = options.toolbar; - this.toggleButton = options.toggleButton; - this.toolbarButtonContainer = options.toolbarButtonContainer; - this.buttons = [{ - element: options.presentationModeButton, - eventName: 'presentationmode', - close: true - }, { - element: options.openFileButton, - eventName: 'openfile', - close: true - }, { - element: options.printButton, - eventName: 'print', - close: true - }, { - element: options.downloadButton, - eventName: 'download', - close: true - }, { - element: options.viewBookmarkButton, - eventName: null, - close: true - }, { - element: options.firstPageButton, - eventName: 'firstpage', - close: true - }, { - element: options.lastPageButton, - eventName: 'lastpage', - close: true - }, { - element: options.pageRotateCwButton, - eventName: 'rotatecw', - close: false - }, { - element: options.pageRotateCcwButton, - eventName: 'rotateccw', - close: false - }, { - element: options.cursorSelectToolButton, - eventName: 'switchcursortool', - eventDetails: { tool: _pdf_cursor_tools.CursorTool.SELECT }, - close: true - }, { - element: options.cursorHandToolButton, - eventName: 'switchcursortool', - eventDetails: { tool: _pdf_cursor_tools.CursorTool.HAND }, - close: true - }, { - element: options.documentPropertiesButton, - eventName: 'documentproperties', - close: true - }]; - this.items = { - firstPage: options.firstPageButton, - lastPage: options.lastPageButton, - pageRotateCw: options.pageRotateCwButton, - pageRotateCcw: options.pageRotateCcwButton - }; - this.mainContainer = mainContainer; - this.eventBus = eventBus; - this.opened = false; - this.containerHeight = null; - this.previousContainerHeight = null; - this.reset(); - this._bindClickListeners(); - this._bindCursorToolsListener(options); - this.eventBus.on('resize', this._setMaxHeight.bind(this)); - } - - _createClass(SecondaryToolbar, [{ - key: 'setPageNumber', - value: function setPageNumber(pageNumber) { - this.pageNumber = pageNumber; - this._updateUIState(); - } - }, { - key: 'setPagesCount', - value: function setPagesCount(pagesCount) { - this.pagesCount = pagesCount; - this._updateUIState(); - } - }, { - key: 'reset', - value: function reset() { - this.pageNumber = 0; - this.pagesCount = 0; - this._updateUIState(); - } - }, { - key: '_updateUIState', - value: function _updateUIState() { - this.items.firstPage.disabled = this.pageNumber <= 1; - this.items.lastPage.disabled = this.pageNumber >= this.pagesCount; - this.items.pageRotateCw.disabled = this.pagesCount === 0; - this.items.pageRotateCcw.disabled = this.pagesCount === 0; - } - }, { - key: '_bindClickListeners', - value: function _bindClickListeners() { - var _this = this; - - this.toggleButton.addEventListener('click', this.toggle.bind(this)); - - var _loop = function _loop(button) { - var _buttons$button = _this.buttons[button], - element = _buttons$button.element, - eventName = _buttons$button.eventName, - close = _buttons$button.close, - eventDetails = _buttons$button.eventDetails; - - element.addEventListener('click', function (evt) { - if (eventName !== null) { - var details = { source: _this }; - for (var property in eventDetails) { - details[property] = eventDetails[property]; - } - _this.eventBus.dispatch(eventName, details); - } - if (close) { - _this.close(); - } - }); - }; - - for (var button in this.buttons) { - _loop(button); - } - } - }, { - key: '_bindCursorToolsListener', - value: function _bindCursorToolsListener(buttons) { - this.eventBus.on('cursortoolchanged', function (evt) { - buttons.cursorSelectToolButton.classList.remove('toggled'); - buttons.cursorHandToolButton.classList.remove('toggled'); - switch (evt.tool) { - case _pdf_cursor_tools.CursorTool.SELECT: - buttons.cursorSelectToolButton.classList.add('toggled'); - break; - case _pdf_cursor_tools.CursorTool.HAND: - buttons.cursorHandToolButton.classList.add('toggled'); - break; - } - }); - } - }, { - key: 'open', - value: function open() { - if (this.opened) { - return; - } - this.opened = true; - this._setMaxHeight(); - this.toggleButton.classList.add('toggled'); - this.toolbar.classList.remove('hidden'); - } - }, { - key: 'close', - value: function close() { - if (!this.opened) { - return; - } - this.opened = false; - this.toolbar.classList.add('hidden'); - this.toggleButton.classList.remove('toggled'); - } - }, { - key: 'toggle', - value: function toggle() { - if (this.opened) { - this.close(); - } else { - this.open(); - } - } - }, { - key: '_setMaxHeight', - value: function _setMaxHeight() { - if (!this.opened) { - return; - } - this.containerHeight = this.mainContainer.clientHeight; - if (this.containerHeight === this.previousContainerHeight) { - return; - } - this.toolbarButtonContainer.setAttribute('style', 'max-height: ' + (this.containerHeight - _ui_utils.SCROLLBAR_PADDING) + 'px;'); - this.previousContainerHeight = this.containerHeight; - } - }, { - key: 'isOpen', - get: function get() { - return this.opened; - } - }]); - - return SecondaryToolbar; -}(); - -exports.SecondaryToolbar = SecondaryToolbar; - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.DefaultTextLayerFactory = exports.TextLayerBuilder = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _dom_events = __webpack_require__(2); - -var _pdfjsLib = __webpack_require__(1); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var EXPAND_DIVS_TIMEOUT = 300; - -var TextLayerBuilder = function () { - function TextLayerBuilder(_ref) { - var textLayerDiv = _ref.textLayerDiv, - eventBus = _ref.eventBus, - pageIndex = _ref.pageIndex, - viewport = _ref.viewport, - _ref$findController = _ref.findController, - findController = _ref$findController === undefined ? null : _ref$findController, - _ref$enhanceTextSelec = _ref.enhanceTextSelection, - enhanceTextSelection = _ref$enhanceTextSelec === undefined ? false : _ref$enhanceTextSelec; - - _classCallCheck(this, TextLayerBuilder); - - this.textLayerDiv = textLayerDiv; - this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)(); - this.textContent = null; - this.textContentItemsStr = []; - this.textContentStream = null; - this.renderingDone = false; - this.pageIdx = pageIndex; - this.pageNumber = this.pageIdx + 1; - this.matches = []; - this.viewport = viewport; - this.textDivs = []; - this.findController = findController; - this.textLayerRenderTask = null; - this.enhanceTextSelection = enhanceTextSelection; - this._bindMouse(); - } - - _createClass(TextLayerBuilder, [{ - key: '_finishRendering', - value: function _finishRendering() { - this.renderingDone = true; - if (!this.enhanceTextSelection) { - var endOfContent = document.createElement('div'); - endOfContent.className = 'endOfContent'; - this.textLayerDiv.appendChild(endOfContent); - } - this.eventBus.dispatch('textlayerrendered', { - source: this, - pageNumber: this.pageNumber, - numTextDivs: this.textDivs.length - }); - } - }, { - key: 'render', - value: function render() { - var _this = this; - - var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - - if (!(this.textContent || this.textContentStream) || this.renderingDone) { - return; - } - this.cancel(); - this.textDivs = []; - var textLayerFrag = document.createDocumentFragment(); - this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({ - textContent: this.textContent, - textContentStream: this.textContentStream, - container: textLayerFrag, - viewport: this.viewport, - textDivs: this.textDivs, - textContentItemsStr: this.textContentItemsStr, - timeout: timeout, - enhanceTextSelection: this.enhanceTextSelection - }); - this.textLayerRenderTask.promise.then(function () { - _this.textLayerDiv.appendChild(textLayerFrag); - _this._finishRendering(); - _this.updateMatches(); - }, function (reason) {}); - } - }, { - key: 'cancel', - value: function cancel() { - if (this.textLayerRenderTask) { - this.textLayerRenderTask.cancel(); - this.textLayerRenderTask = null; - } - } - }, { - key: 'setTextContentStream', - value: function setTextContentStream(readableStream) { - this.cancel(); - this.textContentStream = readableStream; - } - }, { - key: 'setTextContent', - value: function setTextContent(textContent) { - this.cancel(); - this.textContent = textContent; - } - }, { - key: 'convertMatches', - value: function convertMatches(matches, matchesLength) { - var i = 0; - var iIndex = 0; - var textContentItemsStr = this.textContentItemsStr; - var end = textContentItemsStr.length - 1; - var queryLen = this.findController === null ? 0 : this.findController.state.query.length; - var ret = []; - if (!matches) { - return ret; - } - for (var m = 0, len = matches.length; m < len; m++) { - var matchIdx = matches[m]; - while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) { - iIndex += textContentItemsStr[i].length; - i++; - } - if (i === textContentItemsStr.length) { - console.error('Could not find a matching mapping'); - } - var match = { - begin: { - divIdx: i, - offset: matchIdx - iIndex - } - }; - if (matchesLength) { - matchIdx += matchesLength[m]; - } else { - matchIdx += queryLen; - } - while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) { - iIndex += textContentItemsStr[i].length; - i++; - } - match.end = { - divIdx: i, - offset: matchIdx - iIndex - }; - ret.push(match); - } - return ret; - } - }, { - key: 'renderMatches', - value: function renderMatches(matches) { - if (matches.length === 0) { - return; - } - var textContentItemsStr = this.textContentItemsStr; - var textDivs = this.textDivs; - var prevEnd = null; - var pageIdx = this.pageIdx; - var isSelectedPage = this.findController === null ? false : pageIdx === this.findController.selected.pageIdx; - var selectedMatchIdx = this.findController === null ? -1 : this.findController.selected.matchIdx; - var highlightAll = this.findController === null ? false : this.findController.state.highlightAll; - var infinity = { - divIdx: -1, - offset: undefined - }; - function beginText(begin, className) { - var divIdx = begin.divIdx; - textDivs[divIdx].textContent = ''; - appendTextToDiv(divIdx, 0, begin.offset, className); - } - function appendTextToDiv(divIdx, fromOffset, toOffset, className) { - var div = textDivs[divIdx]; - var content = textContentItemsStr[divIdx].substring(fromOffset, toOffset); - var node = document.createTextNode(content); - if (className) { - var span = document.createElement('span'); - span.className = className; - span.appendChild(node); - div.appendChild(span); - return; - } - div.appendChild(node); - } - var i0 = selectedMatchIdx, - i1 = i0 + 1; - if (highlightAll) { - i0 = 0; - i1 = matches.length; - } else if (!isSelectedPage) { - return; - } - for (var i = i0; i < i1; i++) { - var match = matches[i]; - var begin = match.begin; - var end = match.end; - var isSelected = isSelectedPage && i === selectedMatchIdx; - var highlightSuffix = isSelected ? ' selected' : ''; - if (this.findController) { - this.findController.updateMatchPosition(pageIdx, i, textDivs, begin.divIdx); - } - if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { - if (prevEnd !== null) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - beginText(begin); - } else { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); - } - if (begin.divIdx === end.divIdx) { - appendTextToDiv(begin.divIdx, begin.offset, end.offset, 'highlight' + highlightSuffix); - } else { - appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, 'highlight begin' + highlightSuffix); - for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { - textDivs[n0].className = 'highlight middle' + highlightSuffix; - } - beginText(end, 'highlight end' + highlightSuffix); - } - prevEnd = end; - } - if (prevEnd) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - } - }, { - key: 'updateMatches', - value: function updateMatches() { - if (!this.renderingDone) { - return; - } - var matches = this.matches; - var textDivs = this.textDivs; - var textContentItemsStr = this.textContentItemsStr; - var clearedUntilDivIdx = -1; - for (var i = 0, len = matches.length; i < len; i++) { - var match = matches[i]; - var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); - for (var n = begin, end = match.end.divIdx; n <= end; n++) { - var div = textDivs[n]; - div.textContent = textContentItemsStr[n]; - div.className = ''; - } - clearedUntilDivIdx = match.end.divIdx + 1; - } - if (this.findController === null || !this.findController.active) { - return; - } - var pageMatches = void 0, - pageMatchesLength = void 0; - if (this.findController !== null) { - pageMatches = this.findController.pageMatches[this.pageIdx] || null; - pageMatchesLength = this.findController.pageMatchesLength ? this.findController.pageMatchesLength[this.pageIdx] || null : null; - } - this.matches = this.convertMatches(pageMatches, pageMatchesLength); - this.renderMatches(this.matches); - } - }, { - key: '_bindMouse', - value: function _bindMouse() { - var _this2 = this; - - var div = this.textLayerDiv; - var expandDivsTimer = null; - div.addEventListener('mousedown', function (evt) { - if (_this2.enhanceTextSelection && _this2.textLayerRenderTask) { - _this2.textLayerRenderTask.expandTextDivs(true); - if (expandDivsTimer) { - clearTimeout(expandDivsTimer); - expandDivsTimer = null; - } - return; - } - var end = div.querySelector('.endOfContent'); - if (!end) { - return; - } - var adjustTop = evt.target !== div; - adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue('-moz-user-select') !== 'none'; - if (adjustTop) { - var divBounds = div.getBoundingClientRect(); - var r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height); - end.style.top = (r * 100).toFixed(2) + '%'; - } - end.classList.add('active'); - }); - div.addEventListener('mouseup', function () { - if (_this2.enhanceTextSelection && _this2.textLayerRenderTask) { - expandDivsTimer = setTimeout(function () { - if (_this2.textLayerRenderTask) { - _this2.textLayerRenderTask.expandTextDivs(false); - } - expandDivsTimer = null; - }, EXPAND_DIVS_TIMEOUT); - return; - } - var end = div.querySelector('.endOfContent'); - if (!end) { - return; - } - end.style.top = ''; - end.classList.remove('active'); - }); - } - }]); - - return TextLayerBuilder; -}(); - -var DefaultTextLayerFactory = function () { - function DefaultTextLayerFactory() { - _classCallCheck(this, DefaultTextLayerFactory); - } - - _createClass(DefaultTextLayerFactory, [{ - key: 'createTextLayerBuilder', - value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) { - var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - - return new TextLayerBuilder({ - textLayerDiv: textLayerDiv, - pageIndex: pageIndex, - viewport: viewport, - enhanceTextSelection: enhanceTextSelection - }); - } - }]); - - return DefaultTextLayerFactory; -}(); - -exports.TextLayerBuilder = TextLayerBuilder; -exports.DefaultTextLayerFactory = DefaultTextLayerFactory; - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Toolbar = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _ui_utils = __webpack_require__(0); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading'; -var SCALE_SELECT_CONTAINER_PADDING = 8; -var SCALE_SELECT_PADDING = 22; - -var Toolbar = function () { - function Toolbar(options, mainContainer, eventBus) { - var l10n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _ui_utils.NullL10n; - - _classCallCheck(this, Toolbar); - - this.toolbar = options.container; - this.mainContainer = mainContainer; - this.eventBus = eventBus; - this.l10n = l10n; - this.items = options; - this._wasLocalized = false; - this.reset(); - this._bindListeners(); - } - - _createClass(Toolbar, [{ - key: 'setPageNumber', - value: function setPageNumber(pageNumber, pageLabel) { - this.pageNumber = pageNumber; - this.pageLabel = pageLabel; - this._updateUIState(false); - } - }, { - key: 'setPagesCount', - value: function setPagesCount(pagesCount, hasPageLabels) { - this.pagesCount = pagesCount; - this.hasPageLabels = hasPageLabels; - this._updateUIState(true); - } - }, { - key: 'setPageScale', - value: function setPageScale(pageScaleValue, pageScale) { - this.pageScaleValue = pageScaleValue; - this.pageScale = pageScale; - this._updateUIState(false); - } - }, { - key: 'reset', - value: function reset() { - this.pageNumber = 0; - this.pageLabel = null; - this.hasPageLabels = false; - this.pagesCount = 0; - this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - this.pageScale = _ui_utils.DEFAULT_SCALE; - this._updateUIState(true); - } - }, { - key: '_bindListeners', - value: function _bindListeners() { - var _this = this; - - var eventBus = this.eventBus, - items = this.items; - - var self = this; - items.previous.addEventListener('click', function () { - eventBus.dispatch('previouspage'); - }); - items.next.addEventListener('click', function () { - eventBus.dispatch('nextpage'); - }); - items.zoomIn.addEventListener('click', function () { - eventBus.dispatch('zoomin'); - }); - items.zoomOut.addEventListener('click', function () { - eventBus.dispatch('zoomout'); - }); - items.pageNumber.addEventListener('click', function () { - this.select(); - }); - items.pageNumber.addEventListener('change', function () { - eventBus.dispatch('pagenumberchanged', { - source: self, - value: this.value - }); - }); - items.scaleSelect.addEventListener('change', function () { - if (this.value === 'custom') { - return; - } - eventBus.dispatch('scalechanged', { - source: self, - value: this.value - }); - }); - items.presentationModeButton.addEventListener('click', function () { - eventBus.dispatch('presentationmode'); - }); - items.openFile.addEventListener('click', function () { - eventBus.dispatch('openfile'); - }); - items.print.addEventListener('click', function () { - eventBus.dispatch('print'); - }); - items.download.addEventListener('click', function () { - eventBus.dispatch('download'); - }); - items.scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler; - eventBus.on('localized', function () { - _this._localized(); - }); - } - }, { - key: '_localized', - value: function _localized() { - this._wasLocalized = true; - this._adjustScaleWidth(); - this._updateUIState(true); - } - }, { - key: '_updateUIState', - value: function _updateUIState() { - var resetNumPages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (!this._wasLocalized) { - return; - } - var pageNumber = this.pageNumber, - pagesCount = this.pagesCount, - items = this.items; - - var scaleValue = (this.pageScaleValue || this.pageScale).toString(); - var scale = this.pageScale; - if (resetNumPages) { - if (this.hasPageLabels) { - items.pageNumber.type = 'text'; - } else { - items.pageNumber.type = 'number'; - this.l10n.get('of_pages', { pagesCount: pagesCount }, 'of {{pagesCount}}').then(function (msg) { - items.numPages.textContent = msg; - }); - } - items.pageNumber.max = pagesCount; - } - if (this.hasPageLabels) { - items.pageNumber.value = this.pageLabel; - this.l10n.get('page_of_pages', { - pageNumber: pageNumber, - pagesCount: pagesCount - }, '({{pageNumber}} of {{pagesCount}})').then(function (msg) { - items.numPages.textContent = msg; - }); - } else { - items.pageNumber.value = pageNumber; - } - items.previous.disabled = pageNumber <= 1; - items.next.disabled = pageNumber >= pagesCount; - items.zoomOut.disabled = scale <= _ui_utils.MIN_SCALE; - items.zoomIn.disabled = scale >= _ui_utils.MAX_SCALE; - var customScale = Math.round(scale * 10000) / 100; - this.l10n.get('page_scale_percent', { scale: customScale }, '{{scale}}%').then(function (msg) { - var options = items.scaleSelect.options; - var predefinedValueFound = false; - for (var i = 0, ii = options.length; i < ii; i++) { - var option = options[i]; - if (option.value !== scaleValue) { - option.selected = false; - continue; - } - option.selected = true; - predefinedValueFound = true; - } - if (!predefinedValueFound) { - items.customScaleOption.textContent = msg; - items.customScaleOption.selected = true; - } - }); - } - }, { - key: 'updateLoadingIndicatorState', - value: function updateLoadingIndicatorState() { - var loading = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - var pageNumberInput = this.items.pageNumber; - if (loading) { - pageNumberInput.classList.add(PAGE_NUMBER_LOADING_INDICATOR); - } else { - pageNumberInput.classList.remove(PAGE_NUMBER_LOADING_INDICATOR); - } - } - }, { - key: '_adjustScaleWidth', - value: function _adjustScaleWidth() { - var container = this.items.scaleSelectContainer; - var select = this.items.scaleSelect; - _ui_utils.animationStarted.then(function () { - if (container.clientWidth === 0) { - container.setAttribute('style', 'display: inherit;'); - } - if (container.clientWidth > 0) { - select.setAttribute('style', 'min-width: inherit;'); - var width = select.clientWidth + SCALE_SELECT_CONTAINER_PADDING; - select.setAttribute('style', 'min-width: ' + (width + SCALE_SELECT_PADDING) + 'px;'); - container.setAttribute('style', 'min-width: ' + width + 'px; ' + 'max-width: ' + width + 'px;'); - } - }); - } - }]); - - return Toolbar; -}(); - -exports.Toolbar = Toolbar; - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; - -var ViewHistory = function () { - function ViewHistory(fingerprint) { - var _this = this; - - var cacheSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_VIEW_HISTORY_CACHE_SIZE; - - _classCallCheck(this, ViewHistory); - - this.fingerprint = fingerprint; - this.cacheSize = cacheSize; - this._initializedPromise = this._readFromStorage().then(function (databaseStr) { - var database = JSON.parse(databaseStr || '{}'); - if (!('files' in database)) { - database.files = []; - } - if (database.files.length >= _this.cacheSize) { - database.files.shift(); - } - var index = void 0; - for (var i = 0, length = database.files.length; i < length; i++) { - var branch = database.files[i]; - if (branch.fingerprint === _this.fingerprint) { - index = i; - break; - } - } - if (typeof index !== 'number') { - index = database.files.push({ fingerprint: _this.fingerprint }) - 1; - } - _this.file = database.files[index]; - _this.database = database; - }); - } - - _createClass(ViewHistory, [{ - key: '_writeToStorage', - value: function _writeToStorage() { - var _this2 = this; - - return new Promise(function (resolve) { - var databaseStr = JSON.stringify(_this2.database); - localStorage.setItem('pdfjs.history', databaseStr); - resolve(); - }); - } - }, { - key: '_readFromStorage', - value: function _readFromStorage() { - return new Promise(function (resolve) { - var value = localStorage.getItem('pdfjs.history'); - if (!value) { - var databaseStr = localStorage.getItem('database'); - if (databaseStr) { - try { - var database = JSON.parse(databaseStr); - if (typeof database.files[0].fingerprint === 'string') { - localStorage.setItem('pdfjs.history', databaseStr); - localStorage.removeItem('database'); - value = databaseStr; - } - } catch (ex) {} - } - } - resolve(value); - }); - } - }, { - key: 'set', - value: function set(name, val) { - var _this3 = this; - - return this._initializedPromise.then(function () { - _this3.file[name] = val; - return _this3._writeToStorage(); - }); - } - }, { - key: 'setMultiple', - value: function setMultiple(properties) { - var _this4 = this; - - return this._initializedPromise.then(function () { - for (var name in properties) { - _this4.file[name] = properties[name]; - } - return _this4._writeToStorage(); - }); - } - }, { - key: 'get', - value: function get(name, defaultValue) { - var _this5 = this; - - return this._initializedPromise.then(function () { - var val = _this5.file[name]; - return val !== undefined ? val : defaultValue; - }); - } - }, { - key: 'getMultiple', - value: function getMultiple(properties) { - var _this6 = this; - - return this._initializedPromise.then(function () { - var values = Object.create(null); - for (var name in properties) { - var val = _this6.file[name]; - values[name] = val !== undefined ? val : properties[name]; - } - return values; - }); - } - }]); - - return ViewHistory; -}(); - -exports.ViewHistory = ViewHistory; - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf'; -; -var pdfjsWebApp = void 0; -{ - pdfjsWebApp = __webpack_require__(4); -} -; -{ - __webpack_require__(8); -} -; -{ - __webpack_require__(9); -} -function getViewerConfiguration() { - return { - appContainer: document.body, - mainContainer: document.getElementById('viewerContainer'), - viewerContainer: document.getElementById('viewer'), - eventBus: null, - toolbar: { - container: document.getElementById('toolbarViewer'), - numPages: document.getElementById('numPages'), - pageNumber: document.getElementById('pageNumber'), - scaleSelectContainer: document.getElementById('scaleSelectContainer'), - scaleSelect: document.getElementById('scaleSelect'), - customScaleOption: document.getElementById('customScaleOption'), - previous: document.getElementById('previous'), - next: document.getElementById('next'), - zoomIn: document.getElementById('zoomIn'), - zoomOut: document.getElementById('zoomOut'), - viewFind: document.getElementById('viewFind'), - openFile: document.getElementById('openFile'), - print: document.getElementById('print'), - presentationModeButton: document.getElementById('presentationMode'), - download: document.getElementById('download'), - viewBookmark: document.getElementById('viewBookmark') - }, - secondaryToolbar: { - toolbar: document.getElementById('secondaryToolbar'), - toggleButton: document.getElementById('secondaryToolbarToggle'), - toolbarButtonContainer: document.getElementById('secondaryToolbarButtonContainer'), - presentationModeButton: document.getElementById('secondaryPresentationMode'), - openFileButton: document.getElementById('secondaryOpenFile'), - printButton: document.getElementById('secondaryPrint'), - downloadButton: document.getElementById('secondaryDownload'), - viewBookmarkButton: document.getElementById('secondaryViewBookmark'), - firstPageButton: document.getElementById('firstPage'), - lastPageButton: document.getElementById('lastPage'), - pageRotateCwButton: document.getElementById('pageRotateCw'), - pageRotateCcwButton: document.getElementById('pageRotateCcw'), - cursorSelectToolButton: document.getElementById('cursorSelectTool'), - cursorHandToolButton: document.getElementById('cursorHandTool'), - documentPropertiesButton: document.getElementById('documentProperties') - }, - fullscreen: { - contextFirstPage: document.getElementById('contextFirstPage'), - contextLastPage: document.getElementById('contextLastPage'), - contextPageRotateCw: document.getElementById('contextPageRotateCw'), - contextPageRotateCcw: document.getElementById('contextPageRotateCcw') - }, - sidebar: { - mainContainer: document.getElementById('mainContainer'), - outerContainer: document.getElementById('outerContainer'), - toggleButton: document.getElementById('sidebarToggle'), - thumbnailButton: document.getElementById('viewThumbnail'), - outlineButton: document.getElementById('viewOutline'), - attachmentsButton: document.getElementById('viewAttachments'), - thumbnailView: document.getElementById('thumbnailView'), - outlineView: document.getElementById('outlineView'), - attachmentsView: document.getElementById('attachmentsView') - }, - findBar: { - bar: document.getElementById('findbar'), - toggleButton: document.getElementById('viewFind'), - findField: document.getElementById('findInput'), - highlightAllCheckbox: document.getElementById('findHighlightAll'), - caseSensitiveCheckbox: document.getElementById('findMatchCase'), - findMsg: document.getElementById('findMsg'), - findResultsCount: document.getElementById('findResultsCount'), - findStatusIcon: document.getElementById('findStatusIcon'), - findPreviousButton: document.getElementById('findPrevious'), - findNextButton: document.getElementById('findNext') - }, - passwordOverlay: { - overlayName: 'passwordOverlay', - container: document.getElementById('passwordOverlay'), - label: document.getElementById('passwordText'), - input: document.getElementById('password'), - submitButton: document.getElementById('passwordSubmit'), - cancelButton: document.getElementById('passwordCancel') - }, - documentProperties: { - overlayName: 'documentPropertiesOverlay', - container: document.getElementById('documentPropertiesOverlay'), - closeButton: document.getElementById('documentPropertiesClose'), - fields: { - 'fileName': document.getElementById('fileNameField'), - 'fileSize': document.getElementById('fileSizeField'), - 'title': document.getElementById('titleField'), - 'author': document.getElementById('authorField'), - 'subject': document.getElementById('subjectField'), - 'keywords': document.getElementById('keywordsField'), - 'creationDate': document.getElementById('creationDateField'), - 'modificationDate': document.getElementById('modificationDateField'), - 'creator': document.getElementById('creatorField'), - 'producer': document.getElementById('producerField'), - 'version': document.getElementById('versionField'), - 'pageCount': document.getElementById('pageCountField') - } - }, - errorWrapper: { - container: document.getElementById('errorWrapper'), - errorMessage: document.getElementById('errorMessage'), - closeButton: document.getElementById('errorClose'), - errorMoreInfo: document.getElementById('errorMoreInfo'), - moreInfoButton: document.getElementById('errorShowMore'), - lessInfoButton: document.getElementById('errorShowLess') - }, - printContainer: document.getElementById('printContainer'), - openFileInputName: 'fileInput', - debuggerScriptPath: './debugger.js', - defaultUrl: DEFAULT_URL - }; -} -function webViewerLoad() { - var config = getViewerConfiguration(); - window.PDFViewerApplication = pdfjsWebApp.PDFViewerApplication; - pdfjsWebApp.PDFViewerApplication.run(config); -} -if (document.readyState === 'interactive' || document.readyState === 'complete') { - webViewerLoad(); -} else { - document.addEventListener('DOMContentLoaded', webViewerLoad, true); -} - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/src/views/libs/pdf-viewer/pdfjs-dist/build/pdf.js b/src/views/libs/pdf-viewer/pdfjs-dist/build/pdf.js index d5dcfbee8..38c3c9b5d 100644 --- a/src/views/libs/pdf-viewer/pdfjs-dist/build/pdf.js +++ b/src/views/libs/pdf-viewer/pdfjs-dist/build/pdf.js @@ -1,4 +1,8 @@ -/* Copyright 2017 Mozilla Foundation +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2022 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -11,6 +15,9 @@ * 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 */ (function webpackUniversalModuleDefinition(root, factory) { @@ -21,102 +28,82 @@ else if(typeof exports === 'object') exports["pdfjs-dist/build/pdf"] = factory(); else - root["pdfjs-dist/build/pdf"] = root.pdfjsDistBuildPdf = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __w_pdfjs_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __w_pdfjs_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __w_pdfjs_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __w_pdfjs_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __w_pdfjs_require__.d = function(exports, name, getter) { -/******/ if(!__w_pdfjs_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __w_pdfjs_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __w_pdfjs_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __w_pdfjs_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 15); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; + root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory(); +})(this, () => { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -Object.defineProperty(exports, "__esModule", { + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.loadJpegStream = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isNodeJS = exports.isSpace = exports.isString = exports.isNum = exports.isInt = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.isArray = exports.info = exports.globalScope = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.StatTimer = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VERBOSITY_LEVELS = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined; +})); +exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; +exports.arrayByteLength = arrayByteLength; +exports.arraysToBytes = arraysToBytes; +exports.assert = assert; +exports.bytesToString = bytesToString; +exports.createPromiseCapability = createPromiseCapability; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.escapeString = escapeString; +exports.getModificationDate = getModificationDate; +exports.getVerbosityLevel = getVerbosityLevel; +exports.info = info; +exports.isArrayBuffer = isArrayBuffer; +exports.isArrayEqual = isArrayEqual; +exports.isAscii = isAscii; +exports.objectFromMap = objectFromMap; +exports.objectSize = objectSize; +exports.setVerbosityLevel = setVerbosityLevel; +exports.shadow = shadow; +exports.string32 = string32; +exports.stringToBytes = stringToBytes; +exports.stringToPDFString = stringToPDFString; +exports.stringToUTF16BEString = stringToUTF16BEString; +exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; +exports.utf8StringToString = utf8StringToString; +exports.warn = warn; -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; +__w_pdfjs_require__(2); -__w_pdfjs_require__(16); - -var _streams_polyfill = __w_pdfjs_require__(17); - -var globalScope = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : undefined; -var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; -var NativeImageDecoding = { - NONE: 'none', - DECODE: 'decode', - DISPLAY: 'display' +const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +exports.IDENTITY_MATRIX = IDENTITY_MATRIX; +const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + ANNOTATIONS_FORMS: 0x10, + ANNOTATIONS_STORAGE: 0x20, + ANNOTATIONS_DISABLE: 0x40, + OPLIST: 0x100 }; -var TextRenderingMode = { +exports.RenderingIntentFlag = RenderingIntentFlag; +const AnnotationMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_FORMS: 2, + ENABLE_STORAGE: 3 +}; +exports.AnnotationMode = AnnotationMode; +const PermissionFlag = { + PRINT: 0x04, + MODIFY_CONTENTS: 0x08, + COPY: 0x10, + MODIFY_ANNOTATIONS: 0x20, + FILL_INTERACTIVE_FORMS: 0x100, + COPY_FOR_ACCESSIBILITY: 0x200, + ASSEMBLE: 0x400, + PRINT_HIGH_QUALITY: 0x800 +}; +exports.PermissionFlag = PermissionFlag; +const TextRenderingMode = { FILL: 0, STROKE: 1, FILL_STROKE: 2, @@ -128,12 +115,14 @@ var TextRenderingMode = { FILL_STROKE_MASK: 3, ADD_TO_PATH_FLAG: 4 }; -var ImageKind = { +exports.TextRenderingMode = TextRenderingMode; +const ImageKind = { GRAYSCALE_1BPP: 1, RGB_24BPP: 2, RGBA_32BPP: 3 }; -var AnnotationType = { +exports.ImageKind = ImageKind; +const AnnotationType = { TEXT: 1, LINK: 2, FREETEXT: 3, @@ -161,7 +150,31 @@ var AnnotationType = { THREED: 25, REDACT: 26 }; -var AnnotationFlag = { +exports.AnnotationType = AnnotationType; +const AnnotationStateModelType = { + MARKED: "Marked", + REVIEW: "Review" +}; +exports.AnnotationStateModelType = AnnotationStateModelType; +const AnnotationMarkedState = { + MARKED: "Marked", + UNMARKED: "Unmarked" +}; +exports.AnnotationMarkedState = AnnotationMarkedState; +const AnnotationReviewState = { + ACCEPTED: "Accepted", + REJECTED: "Rejected", + CANCELLED: "Cancelled", + COMPLETED: "Completed", + NONE: "None" +}; +exports.AnnotationReviewState = AnnotationReviewState; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +exports.AnnotationReplyType = AnnotationReplyType; +const AnnotationFlag = { INVISIBLE: 0x01, HIDDEN: 0x02, PRINT: 0x04, @@ -173,7 +186,8 @@ var AnnotationFlag = { TOGGLENOVIEW: 0x100, LOCKEDCONTENTS: 0x200 }; -var AnnotationFieldFlag = { +exports.AnnotationFlag = AnnotationFlag; +const AnnotationFieldFlag = { READONLY: 0x0000001, REQUIRED: 0x0000002, NOEXPORT: 0x0000004, @@ -194,49 +208,86 @@ var AnnotationFieldFlag = { RADIOSINUNISON: 0x2000000, COMMITONSELCHANGE: 0x4000000 }; -var AnnotationBorderStyleType = { +exports.AnnotationFieldFlag = AnnotationFieldFlag; +const AnnotationBorderStyleType = { SOLID: 1, DASHED: 2, BEVELED: 3, INSET: 4, UNDERLINE: 5 }; -var StreamType = { - UNKNOWN: 0, - FLATE: 1, - LZW: 2, - DCT: 3, - JPX: 4, - JBIG: 5, - A85: 6, - AHX: 7, - CCF: 8, - RL: 9 +exports.AnnotationBorderStyleType = AnnotationBorderStyleType; +const AnnotationActionEventType = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate" }; -var FontType = { - UNKNOWN: 0, - TYPE1: 1, - TYPE1C: 2, - CIDFONTTYPE0: 3, - CIDFONTTYPE0C: 4, - TRUETYPE: 5, - CIDFONTTYPE2: 6, - TYPE3: 7, - OPENTYPE: 8, - TYPE0: 9, - MMTYPE1: 10 +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" }; -var VERBOSITY_LEVELS = { - errors: 0, - warnings: 1, - infos: 5 +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" }; -var CMapCompressionType = { +exports.PageActionEventType = PageActionEventType; +const StreamType = { + UNKNOWN: "UNKNOWN", + FLATE: "FLATE", + LZW: "LZW", + DCT: "DCT", + JPX: "JPX", + JBIG: "JBIG", + A85: "A85", + AHX: "AHX", + CCF: "CCF", + RLX: "RLX" +}; +exports.StreamType = StreamType; +const FontType = { + UNKNOWN: "UNKNOWN", + TYPE1: "TYPE1", + TYPE1STANDARD: "TYPE1STANDARD", + TYPE1C: "TYPE1C", + CIDFONTTYPE0: "CIDFONTTYPE0", + CIDFONTTYPE0C: "CIDFONTTYPE0C", + TRUETYPE: "TRUETYPE", + CIDFONTTYPE2: "CIDFONTTYPE2", + TYPE3: "TYPE3", + OPENTYPE: "OPENTYPE", + TYPE0: "TYPE0", + MMTYPE1: "MMTYPE1" +}; +exports.FontType = FontType; +const VerbosityLevel = { + ERRORS: 0, + WARNINGS: 1, + INFOS: 5 +}; +exports.VerbosityLevel = VerbosityLevel; +const CMapCompressionType = { NONE: 0, BINARY: 1, STREAM: 2 }; -var OPS = { +exports.CMapCompressionType = CMapCompressionType; +const OPS = { dependency: 1, setLineWidth: 2, setLineCap: 3, @@ -329,466 +380,3273 @@ var OPS = { paintSolidColorImageMask: 90, constructPath: 91 }; -var verbosity = VERBOSITY_LEVELS.warnings; +exports.OPS = OPS; +const UNSUPPORTED_FEATURES = { + unknown: "unknown", + forms: "forms", + javaScript: "javaScript", + signatures: "signatures", + smask: "smask", + shadingPattern: "shadingPattern", + font: "font", + errorTilingPattern: "errorTilingPattern", + errorExtGState: "errorExtGState", + errorXObject: "errorXObject", + errorFontLoadType3: "errorFontLoadType3", + errorFontState: "errorFontState", + errorFontMissing: "errorFontMissing", + errorFontTranslate: "errorFontTranslate", + errorColorSpace: "errorColorSpace", + errorOperatorList: "errorOperatorList", + errorFontToUnicode: "errorFontToUnicode", + errorFontLoadNative: "errorFontLoadNative", + errorFontBuildPath: "errorFontBuildPath", + errorFontGetPath: "errorFontGetPath", + errorMarkedContent: "errorMarkedContent", + errorContentSubStream: "errorContentSubStream" +}; +exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; +const PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +exports.PasswordResponses = PasswordResponses; +let verbosity = VerbosityLevel.WARNINGS; + function setVerbosityLevel(level) { - verbosity = level; + if (Number.isInteger(level)) { + verbosity = level; + } } + function getVerbosityLevel() { return verbosity; } + function info(msg) { - if (verbosity >= VERBOSITY_LEVELS.infos) { - console.log('Info: ' + msg); + if (verbosity >= VerbosityLevel.INFOS) { + console.log(`Info: ${msg}`); } } + function warn(msg) { - if (verbosity >= VERBOSITY_LEVELS.warnings) { - console.log('Warning: ' + msg); + if (verbosity >= VerbosityLevel.WARNINGS) { + console.log(`Warning: ${msg}`); } } -function deprecated(details) { - console.log('Deprecated API usage: ' + details); -} + function unreachable(msg) { throw new Error(msg); } + function assert(cond, msg) { if (!cond) { unreachable(msg); } } -var UNSUPPORTED_FEATURES = { - unknown: 'unknown', - forms: 'forms', - javaScript: 'javaScript', - smask: 'smask', - shadingPattern: 'shadingPattern', - font: 'font' -}; -function isSameOrigin(baseUrl, otherUrl) { - try { - var base = new URL(baseUrl); - if (!base.origin || base.origin === 'null') { - return false; - } - } catch (e) { - return false; - } - var other = new URL(otherUrl, base); - return base.origin === other.origin; -} -function isValidProtocol(url) { + +function _isValidProtocol(url) { if (!url) { return false; } + switch (url.protocol) { - case 'http:': - case 'https:': - case 'ftp:': - case 'mailto:': - case 'tel:': + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": return true; + default: return false; } } -function createValidAbsoluteUrl(url, baseUrl) { + +function createValidAbsoluteUrl(url, baseUrl = null, options = null) { if (!url) { return null; } + try { - var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); - if (isValidProtocol(absoluteUrl)) { + if (options && typeof url === "string") { + if (options.addDefaultProtocol && url.startsWith("www.")) { + const dots = url.match(/\./g); + + if (dots && dots.length >= 2) { + url = `http://${url}`; + } + } + + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch (ex) {} + } + } + + const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); + + if (_isValidProtocol(absoluteUrl)) { return absoluteUrl; } } catch (ex) {} + return null; } + function shadow(obj, prop, value) { Object.defineProperty(obj, prop, { - value: value, + value, enumerable: true, configurable: true, writable: false }); return value; } -function getLookupTableFactory(initializer) { - var lookup; - return function () { - if (initializer) { - lookup = Object.create(null); - initializer(lookup); - initializer = null; + +const BaseException = function BaseExceptionClosure() { + function BaseException(message, name) { + if (this.constructor === BaseException) { + unreachable("Cannot initialize BaseException."); } - return lookup; - }; -} -var PasswordResponses = { - NEED_PASSWORD: 1, - INCORRECT_PASSWORD: 2 -}; -var PasswordException = function PasswordExceptionClosure() { - function PasswordException(msg, code) { - this.name = 'PasswordException'; - this.message = msg; + + this.message = message; + this.name = name; + } + + BaseException.prototype = new Error(); + BaseException.constructor = BaseException; + return BaseException; +}(); + +exports.BaseException = BaseException; + +class PasswordException extends BaseException { + constructor(msg, code) { + super(msg, "PasswordException"); this.code = code; } - PasswordException.prototype = new Error(); - PasswordException.constructor = PasswordException; - return PasswordException; -}(); -var UnknownErrorException = function UnknownErrorExceptionClosure() { - function UnknownErrorException(msg, details) { - this.name = 'UnknownErrorException'; - this.message = msg; + +} + +exports.PasswordException = PasswordException; + +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg, "UnknownErrorException"); this.details = details; } - UnknownErrorException.prototype = new Error(); - UnknownErrorException.constructor = UnknownErrorException; - return UnknownErrorException; -}(); -var InvalidPDFException = function InvalidPDFExceptionClosure() { - function InvalidPDFException(msg) { - this.name = 'InvalidPDFException'; - this.message = msg; + +} + +exports.UnknownErrorException = UnknownErrorException; + +class InvalidPDFException extends BaseException { + constructor(msg) { + super(msg, "InvalidPDFException"); } - InvalidPDFException.prototype = new Error(); - InvalidPDFException.constructor = InvalidPDFException; - return InvalidPDFException; -}(); -var MissingPDFException = function MissingPDFExceptionClosure() { - function MissingPDFException(msg) { - this.name = 'MissingPDFException'; - this.message = msg; + +} + +exports.InvalidPDFException = InvalidPDFException; + +class MissingPDFException extends BaseException { + constructor(msg) { + super(msg, "MissingPDFException"); } - MissingPDFException.prototype = new Error(); - MissingPDFException.constructor = MissingPDFException; - return MissingPDFException; -}(); -var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() { - function UnexpectedResponseException(msg, status) { - this.name = 'UnexpectedResponseException'; - this.message = msg; + +} + +exports.MissingPDFException = MissingPDFException; + +class UnexpectedResponseException extends BaseException { + constructor(msg, status) { + super(msg, "UnexpectedResponseException"); this.status = status; } - UnexpectedResponseException.prototype = new Error(); - UnexpectedResponseException.constructor = UnexpectedResponseException; - return UnexpectedResponseException; -}(); -var NotImplementedException = function NotImplementedExceptionClosure() { - function NotImplementedException(msg) { - this.message = msg; - } - NotImplementedException.prototype = new Error(); - NotImplementedException.prototype.name = 'NotImplementedException'; - NotImplementedException.constructor = NotImplementedException; - return NotImplementedException; -}(); -var MissingDataException = function MissingDataExceptionClosure() { - function MissingDataException(begin, end) { - this.begin = begin; - this.end = end; - this.message = 'Missing data [' + begin + ', ' + end + ')'; - } - MissingDataException.prototype = new Error(); - MissingDataException.prototype.name = 'MissingDataException'; - MissingDataException.constructor = MissingDataException; - return MissingDataException; -}(); -var XRefParseException = function XRefParseExceptionClosure() { - function XRefParseException(msg) { - this.message = msg; - } - XRefParseException.prototype = new Error(); - XRefParseException.prototype.name = 'XRefParseException'; - XRefParseException.constructor = XRefParseException; - return XRefParseException; -}(); -var FormatError = function FormatErrorClosure() { - function FormatError(msg) { - this.message = msg; - } - FormatError.prototype = new Error(); - FormatError.prototype.name = 'FormatError'; - FormatError.constructor = FormatError; - return FormatError; -}(); -var AbortException = function AbortExceptionClosure() { - function AbortException(msg) { - this.name = 'AbortException'; - this.message = msg; - } - AbortException.prototype = new Error(); - AbortException.constructor = AbortException; - return AbortException; -}(); -var NullCharactersRegExp = /\x00/g; -function removeNullCharacters(str) { - if (typeof str !== 'string') { - warn('The argument for removeNullCharacters must be a string.'); - return str; - } - return str.replace(NullCharactersRegExp, ''); + } + +exports.UnexpectedResponseException = UnexpectedResponseException; + +class FormatError extends BaseException { + constructor(msg) { + super(msg, "FormatError"); + } + +} + +exports.FormatError = FormatError; + +class AbortException extends BaseException { + constructor(msg) { + super(msg, "AbortException"); + } + +} + +exports.AbortException = AbortException; + function bytesToString(bytes) { - assert(bytes !== null && (typeof bytes === 'undefined' ? 'undefined' : _typeof(bytes)) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString'); - var length = bytes.length; - var MAX_ARGUMENT_COUNT = 8192; + if (typeof bytes !== "object" || bytes === null || bytes.length === undefined) { + unreachable("Invalid argument for bytesToString"); + } + + const length = bytes.length; + const MAX_ARGUMENT_COUNT = 8192; + if (length < MAX_ARGUMENT_COUNT) { return String.fromCharCode.apply(null, bytes); } - var strBuf = []; - for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) { - var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); - var chunk = bytes.subarray(i, chunkEnd); + + const strBuf = []; + + for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) { + const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); + const chunk = bytes.subarray(i, chunkEnd); strBuf.push(String.fromCharCode.apply(null, chunk)); } - return strBuf.join(''); + + return strBuf.join(""); } + function stringToBytes(str) { - assert(typeof str === 'string', 'Invalid argument for stringToBytes'); - var length = str.length; - var bytes = new Uint8Array(length); - for (var i = 0; i < length; ++i) { - bytes[i] = str.charCodeAt(i) & 0xFF; + if (typeof str !== "string") { + unreachable("Invalid argument for stringToBytes"); } + + const length = str.length; + const bytes = new Uint8Array(length); + + for (let i = 0; i < length; ++i) { + bytes[i] = str.charCodeAt(i) & 0xff; + } + return bytes; } + function arrayByteLength(arr) { if (arr.length !== undefined) { return arr.length; } - assert(arr.byteLength !== undefined); - return arr.byteLength; + + if (arr.byteLength !== undefined) { + return arr.byteLength; + } + + unreachable("Invalid argument for arrayByteLength"); } + function arraysToBytes(arr) { - if (arr.length === 1 && arr[0] instanceof Uint8Array) { + const length = arr.length; + + if (length === 1 && arr[0] instanceof Uint8Array) { return arr[0]; } - var resultLength = 0; - var i, - ii = arr.length; - var item, itemLength; - for (i = 0; i < ii; i++) { - item = arr[i]; - itemLength = arrayByteLength(item); - resultLength += itemLength; + + let resultLength = 0; + + for (let i = 0; i < length; i++) { + resultLength += arrayByteLength(arr[i]); } - var pos = 0; - var data = new Uint8Array(resultLength); - for (i = 0; i < ii; i++) { - item = arr[i]; + + let pos = 0; + const data = new Uint8Array(resultLength); + + for (let i = 0; i < length; i++) { + let item = arr[i]; + if (!(item instanceof Uint8Array)) { - if (typeof item === 'string') { + if (typeof item === "string") { item = stringToBytes(item); } else { item = new Uint8Array(item); } } - itemLength = item.byteLength; + + const itemLength = item.byteLength; data.set(item, pos); pos += itemLength; } + return data; } + function string32(value) { return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); } -function log2(x) { - var n = 1, - i = 0; - while (x > n) { - n <<= 1; - i++; + +function objectSize(obj) { + return Object.keys(obj).length; +} + +function objectFromMap(map) { + const obj = Object.create(null); + + for (const [key, value] of map) { + obj[key] = value; } - return i; -} -function readInt8(data, start) { - return data[start] << 24 >> 24; -} -function readUint16(data, offset) { - return data[offset] << 8 | data[offset + 1]; -} -function readUint32(data, offset) { - return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; + + return obj; } + function isLittleEndian() { - var buffer8 = new Uint8Array(4); + const buffer8 = new Uint8Array(4); buffer8[0] = 1; - var view32 = new Uint32Array(buffer8.buffer, 0, 1); + const view32 = new Uint32Array(buffer8.buffer, 0, 1); return view32[0] === 1; } + function isEvalSupported() { try { - new Function(''); + new Function(""); return true; } catch (e) { return false; } } -var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; -var Util = function UtilClosure() { - function Util() {} - var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')']; - Util.makeCssRgb = function Util_makeCssRgb(r, g, b) { - rgbBuf[1] = r; - rgbBuf[3] = g; - rgbBuf[5] = b; - return rgbBuf.join(''); - }; - Util.transform = function Util_transform(m1, m2) { + +class FeatureTest { + static get isLittleEndian() { + return shadow(this, "isLittleEndian", isLittleEndian()); + } + + static get isEvalSupported() { + return shadow(this, "isEvalSupported", isEvalSupported()); + } + + static get isOffscreenCanvasSupported() { + return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined"); + } + +} + +exports.FeatureTest = FeatureTest; +const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); + +class Util { + static makeHexColor(r, g, b) { + return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; + } + + static scaleMinMax(transform, minMax) { + let temp; + + if (transform[0]) { + if (transform[0] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[0]; + minMax[1] *= transform[0]; + + if (transform[3] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[3]; + minMax[3] *= transform[3]; + } else { + temp = minMax[0]; + minMax[0] = minMax[2]; + minMax[2] = temp; + temp = minMax[1]; + minMax[1] = minMax[3]; + minMax[3] = temp; + + if (transform[1] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[1]; + minMax[3] *= transform[1]; + + if (transform[2] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[2]; + minMax[1] *= transform[2]; + } + + minMax[0] += transform[4]; + minMax[1] += transform[4]; + minMax[2] += transform[5]; + minMax[3] += transform[5]; + } + + static transform(m1, m2) { return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; - }; - Util.applyTransform = function Util_applyTransform(p, m) { - var xt = p[0] * m[0] + p[1] * m[2] + m[4]; - var yt = p[0] * m[1] + p[1] * m[3] + m[5]; + } + + static applyTransform(p, m) { + const xt = p[0] * m[0] + p[1] * m[2] + m[4]; + const yt = p[0] * m[1] + p[1] * m[3] + m[5]; return [xt, yt]; - }; - Util.applyInverseTransform = function Util_applyInverseTransform(p, m) { - var d = m[0] * m[3] - m[1] * m[2]; - var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; - var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; + } + + static applyInverseTransform(p, m) { + const d = m[0] * m[3] - m[1] * m[2]; + const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; return [xt, yt]; - }; - Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) { - var p1 = Util.applyTransform(r, m); - var p2 = Util.applyTransform(r.slice(2, 4), m); - var p3 = Util.applyTransform([r[0], r[3]], m); - var p4 = Util.applyTransform([r[2], r[1]], m); + } + + static getAxialAlignedBoundingBox(r, m) { + const p1 = Util.applyTransform(r, m); + const p2 = Util.applyTransform(r.slice(2, 4), m); + const p3 = Util.applyTransform([r[0], r[3]], m); + const p4 = Util.applyTransform([r[2], r[1]], m); return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])]; - }; - Util.inverseTransform = function Util_inverseTransform(m) { - var d = m[0] * m[3] - m[1] * m[2]; + } + + static inverseTransform(m) { + const d = m[0] * m[3] - m[1] * m[2]; return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; - }; - Util.apply3dTransform = function Util_apply3dTransform(m, v) { + } + + static apply3dTransform(m, v) { return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]]; - }; - Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) { - var transpose = [m[0], m[2], m[1], m[3]]; - var a = m[0] * transpose[0] + m[1] * transpose[2]; - var b = m[0] * transpose[1] + m[1] * transpose[3]; - var c = m[2] * transpose[0] + m[3] * transpose[2]; - var d = m[2] * transpose[1] + m[3] * transpose[3]; - var first = (a + d) / 2; - var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2; - var sx = first + second || 1; - var sy = first - second || 1; + } + + static singularValueDecompose2dScale(m) { + const transpose = [m[0], m[2], m[1], m[3]]; + const a = m[0] * transpose[0] + m[1] * transpose[2]; + const b = m[0] * transpose[1] + m[1] * transpose[3]; + const c = m[2] * transpose[0] + m[3] * transpose[2]; + const d = m[2] * transpose[1] + m[3] * transpose[3]; + const first = (a + d) / 2; + const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2; + const sx = first + second || 1; + const sy = first - second || 1; return [Math.sqrt(sx), Math.sqrt(sy)]; - }; - Util.normalizeRect = function Util_normalizeRect(rect) { - var r = rect.slice(0); + } + + static normalizeRect(rect) { + const r = rect.slice(0); + if (rect[0] > rect[2]) { r[0] = rect[2]; r[2] = rect[0]; } + if (rect[1] > rect[3]) { r[1] = rect[3]; r[3] = rect[1]; } + return r; - }; - Util.intersect = function Util_intersect(rect1, rect2) { - function compare(a, b) { - return a - b; - } - var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare), - orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare), - result = []; - rect1 = Util.normalizeRect(rect1); - rect2 = Util.normalizeRect(rect2); - if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) { - result[0] = orderedX[1]; - result[2] = orderedX[2]; - } else { - return false; - } - if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) { - result[1] = orderedY[1]; - result[3] = orderedY[2]; - } else { - return false; - } - return result; - }; - Util.sign = function Util_sign(num) { - return num < 0 ? -1 : 1; - }; - var ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']; - Util.toRoman = function Util_toRoman(number, lowerCase) { - assert(isInt(number) && number > 0, 'The number should be a positive integer.'); - var pos, - romanBuf = []; - while (number >= 1000) { - number -= 1000; - romanBuf.push('M'); - } - pos = number / 100 | 0; - number %= 100; - romanBuf.push(ROMAN_NUMBER_MAP[pos]); - pos = number / 10 | 0; - number %= 10; - romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]); - romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); - var romanStr = romanBuf.join(''); - return lowerCase ? romanStr.toLowerCase() : romanStr; - }; - Util.appendToArray = function Util_appendToArray(arr1, arr2) { - Array.prototype.push.apply(arr1, arr2); - }; - Util.prependToArray = function Util_prependToArray(arr1, arr2) { - Array.prototype.unshift.apply(arr1, arr2); - }; - Util.extendObj = function extendObj(obj1, obj2) { - for (var key in obj2) { - obj1[key] = obj2[key]; - } - }; - Util.getInheritableProperty = function Util_getInheritableProperty(dict, name, getArray) { - while (dict && !dict.has(name)) { - dict = dict.get('Parent'); - } - if (!dict) { + } + + static intersect(rect1, rect2) { + const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2])); + const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2])); + + if (xLow > xHigh) { return null; } - return getArray ? dict.getArray(name) : dict.get(name); - }; - Util.inherit = function Util_inherit(sub, base, prototype) { - sub.prototype = Object.create(base.prototype); - sub.prototype.constructor = sub; - for (var prop in prototype) { - sub.prototype[prop] = prototype[prop]; + + const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3])); + const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3])); + + if (yLow > yHigh) { + return null; } - }; - Util.loadScript = function Util_loadScript(src, callback) { - var script = document.createElement('script'); - var loaded = false; - script.setAttribute('src', src); - if (callback) { - script.onload = function () { - if (!loaded) { - callback(); + + return [xLow, yLow, xHigh, yHigh]; + } + + static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) { + const tvalues = [], + bounds = [[], []]; + let a, b, c, t, t1, t2, b2ac, sqrtb2ac; + + for (let i = 0; i < 2; ++i) { + if (i === 0) { + b = 6 * x0 - 12 * x1 + 6 * x2; + a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3; + c = 3 * x1 - 3 * x0; + } else { + b = 6 * y0 - 12 * y1 + 6 * y2; + a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3; + c = 3 * y1 - 3 * y0; + } + + if (Math.abs(a) < 1e-12) { + if (Math.abs(b) < 1e-12) { + continue; } - loaded = true; - }; + + t = -c / b; + + if (0 < t && t < 1) { + tvalues.push(t); + } + + continue; + } + + b2ac = b * b - 4 * c * a; + sqrtb2ac = Math.sqrt(b2ac); + + if (b2ac < 0) { + continue; + } + + t1 = (-b + sqrtb2ac) / (2 * a); + + if (0 < t1 && t1 < 1) { + tvalues.push(t1); + } + + t2 = (-b - sqrtb2ac) / (2 * a); + + if (0 < t2 && t2 < 1) { + tvalues.push(t2); + } } - document.getElementsByTagName('head')[0].appendChild(script); + + let j = tvalues.length, + mt; + const jlen = j; + + while (j--) { + t = tvalues[j]; + mt = 1 - t; + bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3; + bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3; + } + + bounds[0][jlen] = x0; + bounds[1][jlen] = y0; + bounds[0][jlen + 1] = x3; + bounds[1][jlen + 1] = y3; + bounds[0].length = bounds[1].length = jlen + 2; + return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])]; + } + +} + +exports.Util = Util; +const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]; + +function stringToPDFString(str) { + if (str[0] >= "\xEF") { + let encoding; + + if (str[0] === "\xFE" && str[1] === "\xFF") { + encoding = "utf-16be"; + } else if (str[0] === "\xFF" && str[1] === "\xFE") { + encoding = "utf-16le"; + } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") { + encoding = "utf-8"; + } + + if (encoding) { + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = stringToBytes(str); + return decoder.decode(buffer); + } catch (ex) { + warn(`stringToPDFString: "${ex}".`); + } + } + } + + const strBuf = []; + + for (let i = 0, ii = str.length; i < ii; i++) { + const code = PDFStringTranslateTable[str.charCodeAt(i)]; + strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + } + + return strBuf.join(""); +} + +function escapeString(str) { + return str.replace(/([()\\\n\r])/g, match => { + if (match === "\n") { + return "\\n"; + } else if (match === "\r") { + return "\\r"; + } + + return `\\${match}`; + }); +} + +function isAscii(str) { + return /^[\x00-\x7F]*$/.test(str); +} + +function stringToUTF16BEString(str) { + const buf = ["\xFE\xFF"]; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff)); + } + + return buf.join(""); +} + +function stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} + +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} + +function isArrayBuffer(v) { + return typeof v === "object" && v !== null && v.byteLength !== undefined; +} + +function isArrayEqual(arr1, arr2) { + if (arr1.length !== arr2.length) { + return false; + } + + for (let i = 0, ii = arr1.length; i < ii; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + + return true; +} + +function getModificationDate(date = new Date()) { + const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; + return buffer.join(""); +} + +function createPromiseCapability() { + const capability = Object.create(null); + let isSettled = false; + Object.defineProperty(capability, "settled", { + get() { + return isSettled; + } + + }); + capability.promise = new Promise(function (resolve, reject) { + capability.resolve = function (data) { + isSettled = true; + resolve(data); + }; + + capability.reject = function (reason) { + isSettled = true; + reject(reason); + }; + }); + return capability; +} + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { + + + +var _is_node = __w_pdfjs_require__(3); + +; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isNodeJS = void 0; +const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); +exports.isNodeJS = isNodeJS; + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0; +exports.getDocument = getDocument; +exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory; +exports.version = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(5); + +var _font_loader = __w_pdfjs_require__(7); + +var _annotation_storage = __w_pdfjs_require__(8); + +var _canvas = __w_pdfjs_require__(10); + +var _worker_options = __w_pdfjs_require__(13); + +var _is_node = __w_pdfjs_require__(3); + +var _message_handler = __w_pdfjs_require__(14); + +var _metadata = __w_pdfjs_require__(15); + +var _optional_content_config = __w_pdfjs_require__(16); + +var _transport_stream = __w_pdfjs_require__(17); + +var _xfa_text = __w_pdfjs_require__(18); + +const DEFAULT_RANGE_CHUNK_SIZE = 65536; +const RENDERING_CANCELLED_TIMEOUT = 100; +let DefaultCanvasFactory = _display_utils.DOMCanvasFactory; +exports.DefaultCanvasFactory = DefaultCanvasFactory; +let DefaultCMapReaderFactory = _display_utils.DOMCMapReaderFactory; +exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory; +let DefaultStandardFontDataFactory = _display_utils.DOMStandardFontDataFactory; +exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory; + +if (_is_node.isNodeJS) { + const { + NodeCanvasFactory, + NodeCMapReaderFactory, + NodeStandardFontDataFactory + } = __w_pdfjs_require__(19); + + exports.DefaultCanvasFactory = DefaultCanvasFactory = NodeCanvasFactory; + exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory = NodeCMapReaderFactory; + exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory = NodeStandardFontDataFactory; +} + +let createPDFNetworkStream; + +function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { + createPDFNetworkStream = pdfNetworkStreamFactory; +} + +function getDocument(src) { + const task = new PDFDocumentLoadingTask(); + let source; + + if (typeof src === "string" || src instanceof URL) { + source = { + url: src + }; + } else if ((0, _util.isArrayBuffer)(src)) { + source = { + data: src + }; + } else if (src instanceof PDFDataRangeTransport) { + source = { + range: src + }; + } else { + if (typeof src !== "object") { + throw new Error("Invalid parameter in getDocument, " + "need either string, URL, Uint8Array, or parameter object."); + } + + if (!src.url && !src.data && !src.range) { + throw new Error("Invalid parameter object: need either .data, .range or .url"); + } + + source = src; + } + + const params = Object.create(null); + let rangeTransport = null, + worker = null; + + for (const key in source) { + const value = source[key]; + + switch (key) { + case "url": + if (typeof window !== "undefined") { + try { + params[key] = new URL(value, window.location).href; + continue; + } catch (ex) { + (0, _util.warn)(`Cannot create valid URL: "${ex}".`); + } + } else if (typeof value === "string" || value instanceof URL) { + params[key] = value.toString(); + continue; + } + + throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); + + case "range": + rangeTransport = value; + continue; + + case "worker": + worker = value; + continue; + + case "data": + if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) { + params[key] = new Uint8Array(value); + } else if (value instanceof Uint8Array) { + break; + } else if (typeof value === "string") { + params[key] = (0, _util.stringToBytes)(value); + } else if (typeof value === "object" && value !== null && !isNaN(value.length)) { + params[key] = new Uint8Array(value); + } else if ((0, _util.isArrayBuffer)(value)) { + params[key] = new Uint8Array(value); + } else { + throw new Error("Invalid PDF binary data: either typed array, " + "string, or array-like object is expected in the data property."); + } + + continue; + } + + params[key] = value; + } + + params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory; + params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory; + params.ignoreErrors = params.stopAtErrors !== true; + params.fontExtraProperties = params.fontExtraProperties === true; + params.pdfBug = params.pdfBug === true; + params.enableXfa = params.enableXfa === true; + + if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) { + params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE; + } + + if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) { + params.docBaseUrl = null; + } + + if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) { + params.maxImageSize = -1; + } + + if (typeof params.cMapUrl !== "string") { + params.cMapUrl = null; + } + + if (typeof params.standardFontDataUrl !== "string") { + params.standardFontDataUrl = null; + } + + if (typeof params.useWorkerFetch !== "boolean") { + params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory; + } + + if (typeof params.isEvalSupported !== "boolean") { + params.isEvalSupported = true; + } + + if (typeof params.disableFontFace !== "boolean") { + params.disableFontFace = _is_node.isNodeJS; + } + + if (typeof params.useSystemFonts !== "boolean") { + params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace; + } + + if (typeof params.ownerDocument !== "object" || params.ownerDocument === null) { + params.ownerDocument = globalThis.document; + } + + if (typeof params.disableRange !== "boolean") { + params.disableRange = false; + } + + if (typeof params.disableStream !== "boolean") { + params.disableStream = false; + } + + if (typeof params.disableAutoFetch !== "boolean") { + params.disableAutoFetch = false; + } + + (0, _util.setVerbosityLevel)(params.verbosity); + + if (!worker) { + const workerParams = { + verbosity: params.verbosity, + port: _worker_options.GlobalWorkerOptions.workerPort + }; + worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); + task._worker = worker; + } + + const docId = task.docId; + worker.promise.then(function () { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + + const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId); + + const networkStreamPromise = new Promise(function (resolve) { + let networkStream; + + if (rangeTransport) { + networkStream = new _transport_stream.PDFDataTransportStream({ + length: params.length, + initialData: params.initialData, + progressiveDone: params.progressiveDone, + contentDispositionFilename: params.contentDispositionFilename, + disableRange: params.disableRange, + disableStream: params.disableStream + }, rangeTransport); + } else if (!params.data) { + networkStream = createPDFNetworkStream({ + url: params.url, + length: params.length, + httpHeaders: params.httpHeaders, + withCredentials: params.withCredentials, + rangeChunkSize: params.rangeChunkSize, + disableRange: params.disableRange, + disableStream: params.disableStream + }); + } + + resolve(networkStream); + }); + return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + + const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port); + const transport = new WorkerTransport(messageHandler, task, networkStream, params); + task._transport = transport; + messageHandler.send("Ready", null); + }); + }).catch(task._capability.reject); + return task; +} + +async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + + if (pdfDataRangeTransport) { + source.length = pdfDataRangeTransport.length; + source.initialData = pdfDataRangeTransport.initialData; + source.progressiveDone = pdfDataRangeTransport.progressiveDone; + source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename; + } + + const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", { + docId, + apiVersion: '2.14.305', + source: { + data: source.data, + url: source.url, + password: source.password, + disableAutoFetch: source.disableAutoFetch, + rangeChunkSize: source.rangeChunkSize, + length: source.length + }, + maxImageSize: source.maxImageSize, + disableFontFace: source.disableFontFace, + docBaseUrl: source.docBaseUrl, + ignoreErrors: source.ignoreErrors, + isEvalSupported: source.isEvalSupported, + fontExtraProperties: source.fontExtraProperties, + enableXfa: source.enableXfa, + useSystemFonts: source.useSystemFonts, + cMapUrl: source.useWorkerFetch ? source.cMapUrl : null, + standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null + }); + + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + + return workerId; +} + +class PDFDocumentLoadingTask { + static #docId = 0; + + constructor() { + this._capability = (0, _util.createPromiseCapability)(); + this._transport = null; + this._worker = null; + this.docId = `d${PDFDocumentLoadingTask.#docId++}`; + this.destroyed = false; + this.onPassword = null; + this.onProgress = null; + this.onUnsupportedFeature = null; + } + + get promise() { + return this._capability.promise; + } + + async destroy() { + this.destroyed = true; + await this._transport?.destroy(); + this._transport = null; + + if (this._worker) { + this._worker.destroy(); + + this._worker = null; + } + } + +} + +exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask; + +class PDFDataRangeTransport { + constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) { + this.length = length; + this.initialData = initialData; + this.progressiveDone = progressiveDone; + this.contentDispositionFilename = contentDispositionFilename; + this._rangeListeners = []; + this._progressListeners = []; + this._progressiveReadListeners = []; + this._progressiveDoneListeners = []; + this._readyCapability = (0, _util.createPromiseCapability)(); + } + + addRangeListener(listener) { + this._rangeListeners.push(listener); + } + + addProgressListener(listener) { + this._progressListeners.push(listener); + } + + addProgressiveReadListener(listener) { + this._progressiveReadListeners.push(listener); + } + + addProgressiveDoneListener(listener) { + this._progressiveDoneListeners.push(listener); + } + + onDataRange(begin, chunk) { + for (const listener of this._rangeListeners) { + listener(begin, chunk); + } + } + + onDataProgress(loaded, total) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressListeners) { + listener(loaded, total); + } + }); + } + + onDataProgressiveRead(chunk) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveReadListeners) { + listener(chunk); + } + }); + } + + onDataProgressiveDone() { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveDoneListeners) { + listener(); + } + }); + } + + transportReady() { + this._readyCapability.resolve(); + } + + requestDataRange(begin, end) { + (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange"); + } + + abort() {} + +} + +exports.PDFDataRangeTransport = PDFDataRangeTransport; + +class PDFDocumentProxy { + constructor(pdfInfo, transport) { + this._pdfInfo = pdfInfo; + this._transport = transport; + Object.defineProperty(this, "fingerprint", { + get() { + (0, _display_utils.deprecated)("`PDFDocumentProxy.fingerprint`, " + "please use `PDFDocumentProxy.fingerprints` instead."); + return this.fingerprints[0]; + } + + }); + Object.defineProperty(this, "getStats", { + value: async () => { + (0, _display_utils.deprecated)("`PDFDocumentProxy.getStats`, " + "please use the `PDFDocumentProxy.stats`-getter instead."); + return this.stats || { + streamTypes: {}, + fontTypes: {} + }; + } + }); + } + + get annotationStorage() { + return this._transport.annotationStorage; + } + + get numPages() { + return this._pdfInfo.numPages; + } + + get fingerprints() { + return this._pdfInfo.fingerprints; + } + + get stats() { + return this._transport.stats; + } + + get isPureXfa() { + return !!this._transport._htmlForXfa; + } + + get allXfaHtml() { + return this._transport._htmlForXfa; + } + + getPage(pageNumber) { + return this._transport.getPage(pageNumber); + } + + getPageIndex(ref) { + return this._transport.getPageIndex(ref); + } + + getDestinations() { + return this._transport.getDestinations(); + } + + getDestination(id) { + return this._transport.getDestination(id); + } + + getPageLabels() { + return this._transport.getPageLabels(); + } + + getPageLayout() { + return this._transport.getPageLayout(); + } + + getPageMode() { + return this._transport.getPageMode(); + } + + getViewerPreferences() { + return this._transport.getViewerPreferences(); + } + + getOpenAction() { + return this._transport.getOpenAction(); + } + + getAttachments() { + return this._transport.getAttachments(); + } + + getJavaScript() { + return this._transport.getJavaScript(); + } + + getJSActions() { + return this._transport.getDocJSActions(); + } + + getOutline() { + return this._transport.getOutline(); + } + + getOptionalContentConfig() { + return this._transport.getOptionalContentConfig(); + } + + getPermissions() { + return this._transport.getPermissions(); + } + + getMetadata() { + return this._transport.getMetadata(); + } + + getMarkInfo() { + return this._transport.getMarkInfo(); + } + + getData() { + return this._transport.getData(); + } + + getDownloadInfo() { + return this._transport.downloadInfoCapability.promise; + } + + cleanup(keepLoadedFonts = false) { + return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa); + } + + destroy() { + return this.loadingTask.destroy(); + } + + get loadingParams() { + return this._transport.loadingParams; + } + + get loadingTask() { + return this._transport.loadingTask; + } + + saveDocument() { + if (this._transport.annotationStorage.size <= 0) { + (0, _display_utils.deprecated)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead."); + } + + return this._transport.saveDocument(); + } + + getFieldObjects() { + return this._transport.getFieldObjects(); + } + + hasJSActions() { + return this._transport.hasJSActions(); + } + + getCalculationOrderIds() { + return this._transport.getCalculationOrderIds(); + } + +} + +exports.PDFDocumentProxy = PDFDocumentProxy; + +class PDFPageProxy { + constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) { + this._pageIndex = pageIndex; + this._pageInfo = pageInfo; + this._ownerDocument = ownerDocument; + this._transport = transport; + this._stats = pdfBug ? new _display_utils.StatTimer() : null; + this._pdfBug = pdfBug; + this.commonObjs = transport.commonObjs; + this.objs = new PDFObjects(); + this._bitmaps = new Set(); + this.cleanupAfterRender = false; + this.pendingCleanup = false; + this._intentStates = new Map(); + this._annotationPromises = new Map(); + this.destroyed = false; + } + + get pageNumber() { + return this._pageIndex + 1; + } + + get rotate() { + return this._pageInfo.rotate; + } + + get ref() { + return this._pageInfo.ref; + } + + get userUnit() { + return this._pageInfo.userUnit; + } + + get view() { + return this._pageInfo.view; + } + + getViewport({ + scale, + rotation = this.rotate, + offsetX = 0, + offsetY = 0, + dontFlip = false + } = {}) { + return new _display_utils.PageViewport({ + viewBox: this.view, + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + + getAnnotations({ + intent = "display" + } = {}) { + const intentArgs = this._transport.getRenderingIntent(intent); + + let promise = this._annotationPromises.get(intentArgs.cacheKey); + + if (!promise) { + promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent); + + this._annotationPromises.set(intentArgs.cacheKey, promise); + + promise = promise.then(annotations => { + for (const annotation of annotations) { + if (annotation.titleObj !== undefined) { + Object.defineProperty(annotation, "title", { + get() { + (0, _display_utils.deprecated)("`title`-property on annotation, please use `titleObj` instead."); + return annotation.titleObj.str; + } + + }); + } + + if (annotation.contentsObj !== undefined) { + Object.defineProperty(annotation, "contents", { + get() { + (0, _display_utils.deprecated)("`contents`-property on annotation, please use `contentsObj` instead."); + return annotation.contentsObj.str; + } + + }); + } + } + + return annotations; + }); + } + + return promise; + } + + getJSActions() { + return this._jsActionsPromise ||= this._transport.getPageJSActions(this._pageIndex); + } + + async getXfa() { + return this._transport._htmlForXfa?.children[this._pageIndex] || null; + } + + render({ + canvasContext, + viewport, + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE, + transform = null, + imageLayer = null, + canvasFactory = null, + background = null, + optionalContentConfigPromise = null, + annotationCanvasMap = null, + pageColors = null + }) { + if (arguments[0]?.renderInteractiveForms !== undefined) { + (0, _display_utils.deprecated)("render no longer accepts the `renderInteractiveForms`-option, " + "please use the `annotationMode`-option instead."); + + if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) { + annotationMode = _util.AnnotationMode.ENABLE_FORMS; + } + } + + if (arguments[0]?.includeAnnotationStorage !== undefined) { + (0, _display_utils.deprecated)("render no longer accepts the `includeAnnotationStorage`-option, " + "please use the `annotationMode`-option instead."); + + if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) { + annotationMode = _util.AnnotationMode.ENABLE_STORAGE; + } + } + + if (this._stats) { + this._stats.time("Overall"); + } + + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode); + + this.pendingCleanup = false; + + if (!optionalContentConfigPromise) { + optionalContentConfigPromise = this._transport.getOptionalContentConfig(); + } + + let intentState = this._intentStates.get(intentArgs.cacheKey); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(intentArgs.cacheKey, intentState); + } + + if (intentState.streamReaderCancelTimeout) { + clearTimeout(intentState.streamReaderCancelTimeout); + intentState.streamReaderCancelTimeout = null; + } + + const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({ + ownerDocument: this._ownerDocument + }); + const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT); + + if (!intentState.displayReadyCapability) { + intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false + }; + + if (this._stats) { + this._stats.time("Page Request"); + } + + this._pumpOperatorList(intentArgs); + } + + const complete = error => { + intentState.renderTasks.delete(internalRenderTask); + + if (this.cleanupAfterRender || intentPrint) { + this.pendingCleanup = true; + } + + this._tryCleanup(); + + if (error) { + internalRenderTask.capability.reject(error); + + this._abortOperatorList({ + intentState, + reason: error instanceof Error ? error : new Error(error) + }); + } else { + internalRenderTask.capability.resolve(); + } + + if (this._stats) { + this._stats.timeEnd("Rendering"); + + this._stats.timeEnd("Overall"); + } + }; + + const internalRenderTask = new InternalRenderTask({ + callback: complete, + params: { + canvasContext, + viewport, + transform, + imageLayer, + background + }, + objs: this.objs, + commonObjs: this.commonObjs, + annotationCanvasMap, + operatorList: intentState.operatorList, + pageIndex: this._pageIndex, + canvasFactory: canvasFactoryInstance, + useRequestAnimationFrame: !intentPrint, + pdfBug: this._pdfBug, + pageColors + }); + (intentState.renderTasks ||= new Set()).add(internalRenderTask); + const renderTask = internalRenderTask.task; + Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => { + if (this.pendingCleanup) { + complete(); + return; + } + + if (this._stats) { + this._stats.time("Rendering"); + } + + internalRenderTask.initializeGraphics({ + transparency, + optionalContentConfig + }); + internalRenderTask.operatorListChanged(); + }).catch(complete); + return renderTask; + } + + getOperatorList({ + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE + } = {}) { + function operatorListChanged() { + if (intentState.operatorList.lastChunk) { + intentState.opListReadCapability.resolve(intentState.operatorList); + intentState.renderTasks.delete(opListTask); + } + } + + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, true); + + let intentState = this._intentStates.get(intentArgs.cacheKey); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(intentArgs.cacheKey, intentState); + } + + let opListTask; + + if (!intentState.opListReadCapability) { + opListTask = Object.create(null); + opListTask.operatorListChanged = operatorListChanged; + intentState.opListReadCapability = (0, _util.createPromiseCapability)(); + (intentState.renderTasks ||= new Set()).add(opListTask); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false + }; + + if (this._stats) { + this._stats.time("Page Request"); + } + + this._pumpOperatorList(intentArgs); + } + + return intentState.opListReadCapability.promise; + } + + streamTextContent({ + disableCombineTextItems = false, + includeMarkedContent = false + } = {}) { + const TEXT_CONTENT_CHUNK_SIZE = 100; + return this._transport.messageHandler.sendWithStream("GetTextContent", { + pageIndex: this._pageIndex, + combineTextItems: disableCombineTextItems !== true, + includeMarkedContent: includeMarkedContent === true + }, { + highWaterMark: TEXT_CONTENT_CHUNK_SIZE, + + size(textContent) { + return textContent.items.length; + } + + }); + } + + getTextContent(params = {}) { + if (this._transport._htmlForXfa) { + return this.getXfa().then(xfa => { + return _xfa_text.XfaText.textContent(xfa); + }); + } + + const readableStream = this.streamTextContent(params); + return new Promise(function (resolve, reject) { + function pump() { + reader.read().then(function ({ + value, + done + }) { + if (done) { + resolve(textContent); + return; + } + + Object.assign(textContent.styles, value.styles); + textContent.items.push(...value.items); + pump(); + }, reject); + } + + const reader = readableStream.getReader(); + const textContent = { + items: [], + styles: Object.create(null) + }; + pump(); + }); + } + + getStructTree() { + return this._structTreePromise ||= this._transport.getStructTree(this._pageIndex); + } + + _destroy() { + this.destroyed = true; + const waitOn = []; + + for (const intentState of this._intentStates.values()) { + this._abortOperatorList({ + intentState, + reason: new Error("Page was destroyed."), + force: true + }); + + if (intentState.opListReadCapability) { + continue; + } + + for (const internalRenderTask of intentState.renderTasks) { + waitOn.push(internalRenderTask.completed); + internalRenderTask.cancel(); + } + } + + this.objs.clear(); + + for (const bitmap of this._bitmaps) { + bitmap.close(); + } + + this._bitmaps.clear(); + + this._annotationPromises.clear(); + + this._jsActionsPromise = null; + this._structTreePromise = null; + this.pendingCleanup = false; + return Promise.all(waitOn); + } + + cleanup(resetStats = false) { + this.pendingCleanup = true; + return this._tryCleanup(resetStats); + } + + _tryCleanup(resetStats = false) { + if (!this.pendingCleanup) { + return false; + } + + for (const { + renderTasks, + operatorList + } of this._intentStates.values()) { + if (renderTasks.size > 0 || !operatorList.lastChunk) { + return false; + } + } + + this._intentStates.clear(); + + this.objs.clear(); + + this._annotationPromises.clear(); + + this._jsActionsPromise = null; + this._structTreePromise = null; + + if (resetStats && this._stats) { + this._stats = new _display_utils.StatTimer(); + } + + for (const bitmap of this._bitmaps) { + bitmap.close(); + } + + this._bitmaps.clear(); + + this.pendingCleanup = false; + return true; + } + + _startRenderPage(transparency, cacheKey) { + const intentState = this._intentStates.get(cacheKey); + + if (!intentState) { + return; + } + + if (this._stats) { + this._stats.timeEnd("Page Request"); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.resolve(transparency); + } + } + + _renderPageChunk(operatorListChunk, intentState) { + for (let i = 0, ii = operatorListChunk.length; i < ii; i++) { + intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); + intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); + } + + intentState.operatorList.lastChunk = operatorListChunk.lastChunk; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + if (operatorListChunk.lastChunk) { + this._tryCleanup(); + } + } + + _pumpOperatorList({ + renderingIntent, + cacheKey + }) { + const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", { + pageIndex: this._pageIndex, + intent: renderingIntent, + cacheKey, + annotationStorage: renderingIntent & _util.RenderingIntentFlag.ANNOTATIONS_STORAGE ? this._transport.annotationStorage.serializable : null + }); + + const reader = readableStream.getReader(); + + const intentState = this._intentStates.get(cacheKey); + + intentState.streamReader = reader; + + const pump = () => { + reader.read().then(({ + value, + done + }) => { + if (done) { + intentState.streamReader = null; + return; + } + + if (this._transport.destroyed) { + return; + } + + this._renderPageChunk(value, intentState); + + pump(); + }, reason => { + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + if (intentState.operatorList) { + intentState.operatorList.lastChunk = true; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + this._tryCleanup(); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.reject(reason); + } else if (intentState.opListReadCapability) { + intentState.opListReadCapability.reject(reason); + } else { + throw reason; + } + }); + }; + + pump(); + } + + _abortOperatorList({ + intentState, + reason, + force = false + }) { + if (!intentState.streamReader) { + return; + } + + if (!force) { + if (intentState.renderTasks.size > 0) { + return; + } + + if (reason instanceof _display_utils.RenderingCancelledException) { + intentState.streamReaderCancelTimeout = setTimeout(() => { + this._abortOperatorList({ + intentState, + reason, + force: true + }); + + intentState.streamReaderCancelTimeout = null; + }, RENDERING_CANCELLED_TIMEOUT); + return; + } + } + + intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {}); + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + for (const [curCacheKey, curIntentState] of this._intentStates) { + if (curIntentState === intentState) { + this._intentStates.delete(curCacheKey); + + break; + } + } + + this.cleanup(); + } + + get stats() { + return this._stats; + } + +} + +exports.PDFPageProxy = PDFPageProxy; + +class LoopbackPort { + constructor() { + this._listeners = []; + this._deferred = Promise.resolve(); + } + + postMessage(obj, transfers) { + const event = { + data: structuredClone(obj, transfers) + }; + + this._deferred.then(() => { + for (const listener of this._listeners) { + listener.call(this, event); + } + }); + } + + addEventListener(name, listener) { + this._listeners.push(listener); + } + + removeEventListener(name, listener) { + const i = this._listeners.indexOf(listener); + + this._listeners.splice(i, 1); + } + + terminate() { + this._listeners.length = 0; + } + +} + +exports.LoopbackPort = LoopbackPort; +const PDFWorkerUtil = { + isWorkerDisabled: false, + fallbackWorkerSrc: null, + fakeWorkerId: 0 +}; +exports.PDFWorkerUtil = PDFWorkerUtil; +{ + if (_is_node.isNodeJS && typeof require === "function") { + PDFWorkerUtil.isWorkerDisabled = true; + PDFWorkerUtil.fallbackWorkerSrc = "./pdf.worker.js"; + } else if (typeof document === "object") { + const pdfjsFilePath = document?.currentScript?.src; + + if (pdfjsFilePath) { + PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"); + } + } + + PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) { + let base; + + try { + base = new URL(baseUrl); + + if (!base.origin || base.origin === "null") { + return false; + } + } catch (e) { + return false; + } + + const other = new URL(otherUrl, base); + return base.origin === other.origin; }; - return Util; -}(); -var PageViewport = function PageViewportClosure() { - function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) { + + PDFWorkerUtil.createCDNWrapper = function (url) { + const wrapper = `importScripts("${url}");`; + return URL.createObjectURL(new Blob([wrapper])); + }; +} + +class PDFWorker { + static #workerPorts = new WeakMap(); + + constructor({ + name = null, + port = null, + verbosity = (0, _util.getVerbosityLevel)() + } = {}) { + if (port && PDFWorker.#workerPorts.has(port)) { + throw new Error("Cannot use more than one PDFWorker per port."); + } + + this.name = name; + this.destroyed = false; + this.verbosity = verbosity; + this._readyCapability = (0, _util.createPromiseCapability)(); + this._port = null; + this._webWorker = null; + this._messageHandler = null; + + if (port) { + PDFWorker.#workerPorts.set(port, this); + + this._initializeFromPort(port); + + return; + } + + this._initialize(); + } + + get promise() { + return this._readyCapability.promise; + } + + get port() { + return this._port; + } + + get messageHandler() { + return this._messageHandler; + } + + _initializeFromPort(port) { + this._port = port; + this._messageHandler = new _message_handler.MessageHandler("main", "worker", port); + + this._messageHandler.on("ready", function () {}); + + this._readyCapability.resolve(); + } + + _initialize() { + if (typeof Worker !== "undefined" && !PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) { + let workerSrc = PDFWorker.workerSrc; + + try { + if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) { + workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href); + } + + const worker = new Worker(workerSrc); + const messageHandler = new _message_handler.MessageHandler("main", "worker", worker); + + const terminateEarly = () => { + worker.removeEventListener("error", onWorkerError); + messageHandler.destroy(); + worker.terminate(); + + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + } else { + this._setupFakeWorker(); + } + }; + + const onWorkerError = () => { + if (!this._webWorker) { + terminateEarly(); + } + }; + + worker.addEventListener("error", onWorkerError); + messageHandler.on("test", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + if (data) { + this._messageHandler = messageHandler; + this._port = worker; + this._webWorker = worker; + + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity + }); + } else { + this._setupFakeWorker(); + + messageHandler.destroy(); + worker.terminate(); + } + }); + messageHandler.on("ready", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + try { + sendTest(); + } catch (e) { + this._setupFakeWorker(); + } + }); + + const sendTest = () => { + const testObj = new Uint8Array(); + messageHandler.send("test", testObj, [testObj.buffer]); + }; + + sendTest(); + return; + } catch (e) { + (0, _util.info)("The worker has been disabled."); + } + } + + this._setupFakeWorker(); + } + + _setupFakeWorker() { + if (!PDFWorkerUtil.isWorkerDisabled) { + (0, _util.warn)("Setting up fake worker."); + PDFWorkerUtil.isWorkerDisabled = true; + } + + PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => { + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + + return; + } + + const port = new LoopbackPort(); + this._port = port; + const id = `fake${PDFWorkerUtil.fakeWorkerId++}`; + const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port); + WorkerMessageHandler.setup(workerHandler, port); + const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port); + this._messageHandler = messageHandler; + + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity + }); + }).catch(reason => { + this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`)); + }); + } + + destroy() { + this.destroyed = true; + + if (this._webWorker) { + this._webWorker.terminate(); + + this._webWorker = null; + } + + PDFWorker.#workerPorts.delete(this._port); + this._port = null; + + if (this._messageHandler) { + this._messageHandler.destroy(); + + this._messageHandler = null; + } + } + + static fromPort(params) { + if (!params?.port) { + throw new Error("PDFWorker.fromPort - invalid method signature."); + } + + if (this.#workerPorts.has(params.port)) { + return this.#workerPorts.get(params.port); + } + + return new PDFWorker(params); + } + + static get workerSrc() { + if (_worker_options.GlobalWorkerOptions.workerSrc) { + return _worker_options.GlobalWorkerOptions.workerSrc; + } + + if (PDFWorkerUtil.fallbackWorkerSrc !== null) { + if (!_is_node.isNodeJS) { + (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.'); + } + + return PDFWorkerUtil.fallbackWorkerSrc; + } + + throw new Error('No "GlobalWorkerOptions.workerSrc" specified.'); + } + + static get _mainThreadWorkerMessageHandler() { + try { + return globalThis.pdfjsWorker?.WorkerMessageHandler || null; + } catch (ex) { + return null; + } + } + + static get _setupFakeWorkerGlobal() { + const loader = async () => { + const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler; + + if (mainWorkerMessageHandler) { + return mainWorkerMessageHandler; + } + + if (_is_node.isNodeJS && typeof require === "function") { + const worker = eval("require")(this.workerSrc); + return worker.WorkerMessageHandler; + } + + await (0, _display_utils.loadScript)(this.workerSrc); + return window.pdfjsWorker.WorkerMessageHandler; + }; + + return (0, _util.shadow)(this, "_setupFakeWorkerGlobal", loader()); + } + +} + +exports.PDFWorker = PDFWorker; +{ + PDFWorker.getWorkerSrc = function () { + (0, _display_utils.deprecated)("`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead."); + return this.workerSrc; + }; +} + +class WorkerTransport { + #docStats = null; + #pageCache = new Map(); + #pagePromises = new Map(); + #metadataPromise = null; + + constructor(messageHandler, loadingTask, networkStream, params) { + this.messageHandler = messageHandler; + this.loadingTask = loadingTask; + this.commonObjs = new PDFObjects(); + this.fontLoader = new _font_loader.FontLoader({ + docId: loadingTask.docId, + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + ownerDocument: params.ownerDocument, + styleElement: params.styleElement + }); + this._params = params; + + if (!params.useWorkerFetch) { + this.CMapReaderFactory = new params.CMapReaderFactory({ + baseUrl: params.cMapUrl, + isCompressed: params.cMapPacked + }); + this.StandardFontDataFactory = new params.StandardFontDataFactory({ + baseUrl: params.standardFontDataUrl + }); + } + + this.destroyed = false; + this.destroyCapability = null; + this._passwordCapability = null; + this._networkStream = networkStream; + this._fullReader = null; + this._lastProgress = null; + this.downloadInfoCapability = (0, _util.createPromiseCapability)(); + this.setupMessageHandler(); + } + + get annotationStorage() { + return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage()); + } + + get stats() { + return this.#docStats; + } + + getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, isOpList = false) { + let renderingIntent = _util.RenderingIntentFlag.DISPLAY; + let annotationHash = ""; + + switch (intent) { + case "any": + renderingIntent = _util.RenderingIntentFlag.ANY; + break; + + case "display": + break; + + case "print": + renderingIntent = _util.RenderingIntentFlag.PRINT; + break; + + default: + (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`); + } + + switch (annotationMode) { + case _util.AnnotationMode.DISABLE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE; + break; + + case _util.AnnotationMode.ENABLE: + break; + + case _util.AnnotationMode.ENABLE_FORMS: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS; + break; + + case _util.AnnotationMode.ENABLE_STORAGE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE; + annotationHash = this.annotationStorage.hash; + break; + + default: + (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`); + } + + if (isOpList) { + renderingIntent += _util.RenderingIntentFlag.OPLIST; + } + + return { + renderingIntent, + cacheKey: `${renderingIntent}_${annotationHash}` + }; + } + + destroy() { + if (this.destroyCapability) { + return this.destroyCapability.promise; + } + + this.destroyed = true; + this.destroyCapability = (0, _util.createPromiseCapability)(); + + if (this._passwordCapability) { + this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback")); + } + + const waitOn = []; + + for (const page of this.#pageCache.values()) { + waitOn.push(page._destroy()); + } + + this.#pageCache.clear(); + this.#pagePromises.clear(); + + if (this.hasOwnProperty("annotationStorage")) { + this.annotationStorage.resetModified(); + } + + const terminated = this.messageHandler.sendWithPromise("Terminate", null); + waitOn.push(terminated); + Promise.all(waitOn).then(() => { + this.commonObjs.clear(); + this.fontLoader.clear(); + this.#metadataPromise = null; + this._getFieldObjectsPromise = null; + this._hasJSActionsPromise = null; + + if (this._networkStream) { + this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated.")); + } + + if (this.messageHandler) { + this.messageHandler.destroy(); + this.messageHandler = null; + } + + this.destroyCapability.resolve(); + }, this.destroyCapability.reject); + return this.destroyCapability.promise; + } + + setupMessageHandler() { + const { + messageHandler, + loadingTask + } = this; + messageHandler.on("GetReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available."); + this._fullReader = this._networkStream.getFullReader(); + + this._fullReader.onProgress = evt => { + this._lastProgress = { + loaded: evt.loaded, + total: evt.total + }; + }; + + sink.onPull = () => { + this._fullReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + this._fullReader.cancel(reason); + + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("ReaderHeadersReady", data => { + const headersCapability = (0, _util.createPromiseCapability)(); + const fullReader = this._fullReader; + fullReader.headersReady.then(() => { + if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { + if (this._lastProgress) { + loadingTask.onProgress?.(this._lastProgress); + } + + fullReader.onProgress = evt => { + loadingTask.onProgress?.({ + loaded: evt.loaded, + total: evt.total + }); + }; + } + + headersCapability.resolve({ + isStreamingSupported: fullReader.isStreamingSupported, + isRangeSupported: fullReader.isRangeSupported, + contentLength: fullReader.contentLength + }); + }, headersCapability.reject); + return headersCapability.promise; + }); + messageHandler.on("GetRangeReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available."); + + const rangeReader = this._networkStream.getRangeReader(data.begin, data.end); + + if (!rangeReader) { + sink.close(); + return; + } + + sink.onPull = () => { + rangeReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + rangeReader.cancel(reason); + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("GetDoc", ({ + pdfInfo + }) => { + this._numPages = pdfInfo.numPages; + this._htmlForXfa = pdfInfo.htmlForXfa; + delete pdfInfo.htmlForXfa; + + loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this)); + }); + messageHandler.on("DocException", function (ex) { + let reason; + + switch (ex.name) { + case "PasswordException": + reason = new _util.PasswordException(ex.message, ex.code); + break; + + case "InvalidPDFException": + reason = new _util.InvalidPDFException(ex.message); + break; + + case "MissingPDFException": + reason = new _util.MissingPDFException(ex.message); + break; + + case "UnexpectedResponseException": + reason = new _util.UnexpectedResponseException(ex.message, ex.status); + break; + + case "UnknownErrorException": + reason = new _util.UnknownErrorException(ex.message, ex.details); + break; + + default: + (0, _util.unreachable)("DocException - expected a valid Error."); + } + + loadingTask._capability.reject(reason); + }); + messageHandler.on("PasswordRequest", exception => { + this._passwordCapability = (0, _util.createPromiseCapability)(); + + if (loadingTask.onPassword) { + const updatePassword = password => { + if (password instanceof Error) { + this._passwordCapability.reject(password); + } else { + this._passwordCapability.resolve({ + password + }); + } + }; + + try { + loadingTask.onPassword(updatePassword, exception.code); + } catch (ex) { + this._passwordCapability.reject(ex); + } + } else { + this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); + } + + return this._passwordCapability.promise; + }); + messageHandler.on("DataLoaded", data => { + loadingTask.onProgress?.({ + loaded: data.length, + total: data.length + }); + this.downloadInfoCapability.resolve(data); + }); + messageHandler.on("StartRenderPage", data => { + if (this.destroyed) { + return; + } + + const page = this.#pageCache.get(data.pageIndex); + + page._startRenderPage(data.transparency, data.cacheKey); + }); + messageHandler.on("commonobj", ([id, type, exportedData]) => { + if (this.destroyed) { + return; + } + + if (this.commonObjs.has(id)) { + return; + } + + switch (type) { + case "Font": + const params = this._params; + + if ("error" in exportedData) { + const exportedError = exportedData.error; + (0, _util.warn)(`Error during font loading: ${exportedError}`); + this.commonObjs.resolve(id, exportedError); + break; + } + + let fontRegistry = null; + + if (params.pdfBug && globalThis.FontInspector?.enabled) { + fontRegistry = { + registerFont(font, url) { + globalThis.FontInspector.fontAdded(font, url); + } + + }; + } + + const font = new _font_loader.FontFaceObject(exportedData, { + isEvalSupported: params.isEvalSupported, + disableFontFace: params.disableFontFace, + ignoreErrors: params.ignoreErrors, + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + fontRegistry + }); + this.fontLoader.bind(font).catch(reason => { + return messageHandler.sendWithPromise("FontFallback", { + id + }); + }).finally(() => { + if (!params.fontExtraProperties && font.data) { + font.data = null; + } + + this.commonObjs.resolve(id, font); + }); + break; + + case "FontPath": + case "Image": + this.commonObjs.resolve(id, exportedData); + break; + + default: + throw new Error(`Got unknown common object type ${type}`); + } + }); + messageHandler.on("obj", ([id, pageIndex, type, imageData]) => { + if (this.destroyed) { + return; + } + + const pageProxy = this.#pageCache.get(pageIndex); + + if (pageProxy.objs.has(id)) { + return; + } + + switch (type) { + case "Image": + pageProxy.objs.resolve(id, imageData); + const MAX_IMAGE_SIZE_TO_STORE = 8000000; + + if (imageData) { + let length; + + if (imageData.bitmap) { + const { + bitmap, + width, + height + } = imageData; + length = width * height * 4; + + pageProxy._bitmaps.add(bitmap); + } else { + length = imageData.data?.length || 0; + } + + if (length > MAX_IMAGE_SIZE_TO_STORE) { + pageProxy.cleanupAfterRender = true; + } + } + + break; + + case "Pattern": + pageProxy.objs.resolve(id, imageData); + break; + + default: + throw new Error(`Got unknown object type ${type}`); + } + }); + messageHandler.on("DocProgress", data => { + if (this.destroyed) { + return; + } + + loadingTask.onProgress?.({ + loaded: data.loaded, + total: data.total + }); + }); + messageHandler.on("DocStats", data => { + if (this.destroyed) { + return; + } + + this.#docStats = Object.freeze({ + streamTypes: Object.freeze(data.streamTypes), + fontTypes: Object.freeze(data.fontTypes) + }); + }); + messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this)); + messageHandler.on("FetchBuiltInCMap", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + + if (!this.CMapReaderFactory) { + return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.")); + } + + return this.CMapReaderFactory.fetch(data); + }); + messageHandler.on("FetchStandardFontData", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + + if (!this.StandardFontDataFactory) { + return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.")); + } + + return this.StandardFontDataFactory.fetch(data); + }); + } + + _onUnsupportedFeature({ + featureId + }) { + if (this.destroyed) { + return; + } + + this.loadingTask.onUnsupportedFeature?.(featureId); + } + + getData() { + return this.messageHandler.sendWithPromise("GetData", null); + } + + getPage(pageNumber) { + if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) { + return Promise.reject(new Error("Invalid page request.")); + } + + const pageIndex = pageNumber - 1, + cachedPromise = this.#pagePromises.get(pageIndex); + + if (cachedPromise) { + return cachedPromise; + } + + const promise = this.messageHandler.sendWithPromise("GetPage", { + pageIndex + }).then(pageInfo => { + if (this.destroyed) { + throw new Error("Transport destroyed"); + } + + const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug); + this.#pageCache.set(pageIndex, page); + return page; + }); + this.#pagePromises.set(pageIndex, promise); + return promise; + } + + getPageIndex(ref) { + if (typeof ref !== "object" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) { + return Promise.reject(new Error("Invalid pageIndex request.")); + } + + return this.messageHandler.sendWithPromise("GetPageIndex", { + num: ref.num, + gen: ref.gen + }); + } + + getAnnotations(pageIndex, intent) { + return this.messageHandler.sendWithPromise("GetAnnotations", { + pageIndex, + intent + }); + } + + saveDocument() { + return this.messageHandler.sendWithPromise("SaveDocument", { + isPureXfa: !!this._htmlForXfa, + numPages: this._numPages, + annotationStorage: this.annotationStorage.serializable, + filename: this._fullReader?.filename ?? null + }).finally(() => { + this.annotationStorage.resetModified(); + }); + } + + getFieldObjects() { + return this._getFieldObjectsPromise ||= this.messageHandler.sendWithPromise("GetFieldObjects", null); + } + + hasJSActions() { + return this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise("HasJSActions", null); + } + + getCalculationOrderIds() { + return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null); + } + + getDestinations() { + return this.messageHandler.sendWithPromise("GetDestinations", null); + } + + getDestination(id) { + if (typeof id !== "string") { + return Promise.reject(new Error("Invalid destination request.")); + } + + return this.messageHandler.sendWithPromise("GetDestination", { + id + }); + } + + getPageLabels() { + return this.messageHandler.sendWithPromise("GetPageLabels", null); + } + + getPageLayout() { + return this.messageHandler.sendWithPromise("GetPageLayout", null); + } + + getPageMode() { + return this.messageHandler.sendWithPromise("GetPageMode", null); + } + + getViewerPreferences() { + return this.messageHandler.sendWithPromise("GetViewerPreferences", null); + } + + getOpenAction() { + return this.messageHandler.sendWithPromise("GetOpenAction", null); + } + + getAttachments() { + return this.messageHandler.sendWithPromise("GetAttachments", null); + } + + getJavaScript() { + return this.messageHandler.sendWithPromise("GetJavaScript", null); + } + + getDocJSActions() { + return this.messageHandler.sendWithPromise("GetDocJSActions", null); + } + + getPageJSActions(pageIndex) { + return this.messageHandler.sendWithPromise("GetPageJSActions", { + pageIndex + }); + } + + getStructTree(pageIndex) { + return this.messageHandler.sendWithPromise("GetStructTree", { + pageIndex + }); + } + + getOutline() { + return this.messageHandler.sendWithPromise("GetOutline", null); + } + + getOptionalContentConfig() { + return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => { + return new _optional_content_config.OptionalContentConfig(results); + }); + } + + getPermissions() { + return this.messageHandler.sendWithPromise("GetPermissions", null); + } + + getMetadata() { + return this.#metadataPromise ||= this.messageHandler.sendWithPromise("GetMetadata", null).then(results => { + return { + info: results[0], + metadata: results[1] ? new _metadata.Metadata(results[1]) : null, + contentDispositionFilename: this._fullReader?.filename ?? null, + contentLength: this._fullReader?.contentLength ?? null + }; + }); + } + + getMarkInfo() { + return this.messageHandler.sendWithPromise("GetMarkInfo", null); + } + + async startCleanup(keepLoadedFonts = false) { + await this.messageHandler.sendWithPromise("Cleanup", null); + + if (this.destroyed) { + return; + } + + for (const page of this.#pageCache.values()) { + const cleanupSuccessful = page.cleanup(); + + if (!cleanupSuccessful) { + throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`); + } + } + + this.commonObjs.clear(); + + if (!keepLoadedFonts) { + this.fontLoader.clear(); + } + + this.#metadataPromise = null; + this._getFieldObjectsPromise = null; + this._hasJSActionsPromise = null; + } + + get loadingParams() { + const params = this._params; + return (0, _util.shadow)(this, "loadingParams", { + disableAutoFetch: params.disableAutoFetch, + enableXfa: params.enableXfa + }); + } + +} + +class PDFObjects { + #objs = Object.create(null); + + #ensureObj(objId) { + const obj = this.#objs[objId]; + + if (obj) { + return obj; + } + + return this.#objs[objId] = { + capability: (0, _util.createPromiseCapability)(), + data: null + }; + } + + get(objId, callback = null) { + if (callback) { + const obj = this.#ensureObj(objId); + obj.capability.promise.then(() => callback(obj.data)); + return null; + } + + const obj = this.#objs[objId]; + + if (!obj?.capability.settled) { + throw new Error(`Requesting object that isn't resolved yet ${objId}.`); + } + + return obj.data; + } + + has(objId) { + const obj = this.#objs[objId]; + return obj?.capability.settled || false; + } + + resolve(objId, data = null) { + const obj = this.#ensureObj(objId); + obj.data = data; + obj.capability.resolve(); + } + + clear() { + this.#objs = Object.create(null); + } + +} + +class RenderTask { + constructor(internalRenderTask) { + this._internalRenderTask = internalRenderTask; + this.onContinue = null; + } + + get promise() { + return this._internalRenderTask.capability.promise; + } + + cancel() { + this._internalRenderTask.cancel(); + } + +} + +exports.RenderTask = RenderTask; + +class InternalRenderTask { + static #canvasInUse = new WeakSet(); + + constructor({ + callback, + params, + objs, + commonObjs, + annotationCanvasMap, + operatorList, + pageIndex, + canvasFactory, + useRequestAnimationFrame = false, + pdfBug = false, + pageColors = null + }) { + this.callback = callback; + this.params = params; + this.objs = objs; + this.commonObjs = commonObjs; + this.annotationCanvasMap = annotationCanvasMap; + this.operatorListIdx = null; + this.operatorList = operatorList; + this._pageIndex = pageIndex; + this.canvasFactory = canvasFactory; + this._pdfBug = pdfBug; + this.pageColors = pageColors; + this.running = false; + this.graphicsReadyCallback = null; + this.graphicsReady = false; + this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined"; + this.cancelled = false; + this.capability = (0, _util.createPromiseCapability)(); + this.task = new RenderTask(this); + this._cancelBound = this.cancel.bind(this); + this._continueBound = this._continue.bind(this); + this._scheduleNextBound = this._scheduleNext.bind(this); + this._nextBound = this._next.bind(this); + this._canvas = params.canvasContext.canvas; + } + + get completed() { + return this.capability.promise.catch(function () {}); + } + + initializeGraphics({ + transparency = false, + optionalContentConfig + }) { + if (this.cancelled) { + return; + } + + if (this._canvas) { + if (InternalRenderTask.#canvasInUse.has(this._canvas)) { + throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed."); + } + + InternalRenderTask.#canvasInUse.add(this._canvas); + } + + if (this._pdfBug && globalThis.StepperManager?.enabled) { + this.stepper = globalThis.StepperManager.create(this._pageIndex); + this.stepper.init(this.operatorList); + this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); + } + + const { + canvasContext, + viewport, + transform, + imageLayer, + background + } = this.params; + this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap, this.pageColors); + this.gfx.beginDrawing({ + transform, + viewport, + transparency, + background + }); + this.operatorListIdx = 0; + this.graphicsReady = true; + + if (this.graphicsReadyCallback) { + this.graphicsReadyCallback(); + } + } + + cancel(error = null) { + this.running = false; + this.cancelled = true; + + if (this.gfx) { + this.gfx.endDrawing(); + } + + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + + this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas")); + } + + operatorListChanged() { + if (!this.graphicsReady) { + if (!this.graphicsReadyCallback) { + this.graphicsReadyCallback = this._continueBound; + } + + return; + } + + if (this.stepper) { + this.stepper.updateOperatorList(this.operatorList); + } + + if (this.running) { + return; + } + + this._continue(); + } + + _continue() { + this.running = true; + + if (this.cancelled) { + return; + } + + if (this.task.onContinue) { + this.task.onContinue(this._scheduleNextBound); + } else { + this._scheduleNext(); + } + } + + _scheduleNext() { + if (this._useRequestAnimationFrame) { + window.requestAnimationFrame(() => { + this._nextBound().catch(this._cancelBound); + }); + } else { + Promise.resolve().then(this._nextBound).catch(this._cancelBound); + } + } + + async _next() { + if (this.cancelled) { + return; + } + + this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); + + if (this.operatorListIdx === this.operatorList.argsArray.length) { + this.running = false; + + if (this.operatorList.lastChunk) { + this.gfx.endDrawing(); + + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + + this.callback(); + } + } + } + +} + +const version = '2.14.305'; +exports.version = version; +const build = 'eaaa8b4ad'; +exports.build = build; + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = void 0; +exports.deprecated = deprecated; +exports.getFilenameFromUrl = getFilenameFromUrl; +exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl; +exports.getXfaPageViewport = getXfaPageViewport; +exports.isDataScheme = isDataScheme; +exports.isPdfFile = isPdfFile; +exports.isValidFetchUrl = isValidFetchUrl; +exports.loadScript = loadScript; + +var _base_factory = __w_pdfjs_require__(6); + +var _util = __w_pdfjs_require__(1); + +const SVG_NS = "http://www.w3.org/2000/svg"; + +class PixelsPerInch { + static CSS = 96.0; + static PDF = 72.0; + static PDF_TO_CSS_UNITS = this.CSS / this.PDF; +} + +exports.PixelsPerInch = PixelsPerInch; + +class DOMCanvasFactory extends _base_factory.BaseCanvasFactory { + constructor({ + ownerDocument = globalThis.document + } = {}) { + super(); + this._document = ownerDocument; + } + + _createCanvas(width, height) { + const canvas = this._document.createElement("canvas"); + + canvas.width = width; + canvas.height = height; + return canvas; + } + +} + +exports.DOMCanvasFactory = DOMCanvasFactory; + +async function fetchData(url, asTypedArray = false) { + if (isValidFetchUrl(url, document.baseURI)) { + const response = await fetch(url); + + if (!response.ok) { + throw new Error(response.statusText); + } + + return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text()); + } + + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest(); + request.open("GET", url, true); + + if (asTypedArray) { + request.responseType = "arraybuffer"; + } + + request.onreadystatechange = () => { + if (request.readyState !== XMLHttpRequest.DONE) { + return; + } + + if (request.status === 200 || request.status === 0) { + let data; + + if (asTypedArray && request.response) { + data = new Uint8Array(request.response); + } else if (!asTypedArray && request.responseText) { + data = (0, _util.stringToBytes)(request.responseText); + } + + if (data) { + resolve(data); + return; + } + } + + reject(new Error(request.statusText)); + }; + + request.send(null); + }); +} + +class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url, this.isCompressed).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } + +} + +exports.DOMCMapReaderFactory = DOMCMapReaderFactory; + +class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url, true); + } + +} + +exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory; + +class DOMSVGFactory extends _base_factory.BaseSVGFactory { + _createSVG(type) { + return document.createElementNS(SVG_NS, type); + } + +} + +exports.DOMSVGFactory = DOMSVGFactory; + +class PageViewport { + constructor({ + viewBox, + scale, + rotation, + offsetX = 0, + offsetY = 0, + dontFlip = false + }) { this.viewBox = viewBox; this.scale = scale; this.rotation = rotation; this.offsetX = offsetX; this.offsetY = offsetY; - var centerX = (viewBox[2] + viewBox[0]) / 2; - var centerY = (viewBox[3] + viewBox[1]) / 2; - var rotateA, rotateB, rotateC, rotateD; - rotation = rotation % 360; - rotation = rotation < 0 ? rotation + 360 : rotation; + const centerX = (viewBox[2] + viewBox[0]) / 2; + const centerY = (viewBox[3] + viewBox[1]) / 2; + let rotateA, rotateB, rotateC, rotateD; + rotation %= 360; + + if (rotation < 0) { + rotation += 360; + } + switch (rotation) { case 180: rotateA = -1; @@ -796,31 +3654,40 @@ var PageViewport = function PageViewportClosure() { rotateC = 0; rotateD = 1; break; + case 90: rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0; break; + case 270: rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0; break; - default: + + case 0: rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1; break; + + default: + throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees."); } + if (dontFlip) { rotateC = -rotateC; rotateD = -rotateD; } - var offsetCanvasX, offsetCanvasY; - var width, height; + + let offsetCanvasX, offsetCanvasY; + let width, height; + if (rotateA === 0) { offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX; offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY; @@ -832,9094 +3699,1589 @@ var PageViewport = function PageViewportClosure() { width = Math.abs(viewBox[2] - viewBox[0]) * scale; height = Math.abs(viewBox[3] - viewBox[1]) * scale; } + this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY]; this.width = width; this.height = height; - this.fontScale = scale; } - PageViewport.prototype = { - clone: function PageViewPort_clone(args) { - args = args || {}; - var scale = 'scale' in args ? args.scale : this.scale; - var rotation = 'rotation' in args ? args.rotation : this.rotation; - return new PageViewport(this.viewBox.slice(), scale, rotation, this.offsetX, this.offsetY, args.dontFlip); - }, - convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) { - return Util.applyTransform([x, y], this.transform); - }, - convertToViewportRectangle: function PageViewport_convertToViewportRectangle(rect) { - var tl = Util.applyTransform([rect[0], rect[1]], this.transform); - var br = Util.applyTransform([rect[2], rect[3]], this.transform); - return [tl[0], tl[1], br[0], br[1]]; - }, - convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) { - return Util.applyInverseTransform([x, y], this.transform); - } - }; - return PageViewport; -}(); -var PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC]; -function stringToPDFString(str) { - var i, - n = str.length, - strBuf = []; - if (str[0] === '\xFE' && str[1] === '\xFF') { - for (i = 2; i < n; i += 2) { - strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1))); - } - } else { - for (i = 0; i < n; ++i) { - var code = PDFStringTranslateTable[str.charCodeAt(i)]; - strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + + clone({ + scale = this.scale, + rotation = this.rotation, + offsetX = this.offsetX, + offsetY = this.offsetY, + dontFlip = false + } = {}) { + return new PageViewport({ + viewBox: this.viewBox.slice(), + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + + convertToViewportPoint(x, y) { + return _util.Util.applyTransform([x, y], this.transform); + } + + convertToViewportRectangle(rect) { + const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform); + + const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform); + + return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]]; + } + + convertToPdfPoint(x, y) { + return _util.Util.applyInverseTransform([x, y], this.transform); + } + +} + +exports.PageViewport = PageViewport; + +class RenderingCancelledException extends _util.BaseException { + constructor(msg, type) { + super(msg, "RenderingCancelledException"); + this.type = type; + } + +} + +exports.RenderingCancelledException = RenderingCancelledException; + +function isDataScheme(url) { + const ii = url.length; + let i = 0; + + while (i < ii && url[i].trim() === "") { + i++; + } + + return url.substring(i, i + 5).toLowerCase() === "data:"; +} + +function isPdfFile(filename) { + return typeof filename === "string" && /\.pdf$/i.test(filename); +} + +function getFilenameFromUrl(url) { + const anchor = url.indexOf("#"); + const query = url.indexOf("?"); + const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length); + return url.substring(url.lastIndexOf("/", end) + 1, end); +} + +function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") { + if (typeof url !== "string") { + return defaultFilename; + } + + if (isDataScheme(url)) { + (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'); + return defaultFilename; + } + + const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; + const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i; + const splitURI = reURI.exec(url); + let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]); + + if (suggestedFilename) { + suggestedFilename = suggestedFilename[0]; + + if (suggestedFilename.includes("%")) { + try { + suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0]; + } catch (ex) {} } } - return strBuf.join(''); + + return suggestedFilename || defaultFilename; } -function stringToUTF8String(str) { - return decodeURIComponent(escape(str)); -} -function utf8StringToString(str) { - return unescape(encodeURIComponent(str)); -} -function isEmptyObj(obj) { - for (var key in obj) { - return false; - } - return true; -} -function isBool(v) { - return typeof v === 'boolean'; -} -function isInt(v) { - return typeof v === 'number' && (v | 0) === v; -} -function isNum(v) { - return typeof v === 'number'; -} -function isString(v) { - return typeof v === 'string'; -} -function isArray(v) { - return v instanceof Array; -} -function isArrayBuffer(v) { - return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null && v.byteLength !== undefined; -} -function isSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A; -} -function isNodeJS() { - return (typeof process === 'undefined' ? 'undefined' : _typeof(process)) === 'object' && process + '' === '[object process]'; -} -function createPromiseCapability() { - var capability = {}; - capability.promise = new Promise(function (resolve, reject) { - capability.resolve = resolve; - capability.reject = reject; - }); - return capability; -} -var StatTimer = function StatTimerClosure() { - function rpad(str, pad, length) { - while (str.length < length) { - str += pad; - } - return str; - } - function StatTimer() { + +class StatTimer { + constructor() { this.started = Object.create(null); this.times = []; - this.enabled = true; } - StatTimer.prototype = { - time: function StatTimer_time(name) { - if (!this.enabled) { - return; - } - if (name in this.started) { - warn('Timer is already running for ' + name); - } - this.started[name] = Date.now(); - }, - timeEnd: function StatTimer_timeEnd(name) { - if (!this.enabled) { - return; - } - if (!(name in this.started)) { - warn('Timer has not been started for ' + name); - } - this.times.push({ - 'name': name, - 'start': this.started[name], - 'end-left': Date.now() - }); - delete this.started[name]; - }, - toString: function StatTimer_toString() { - var i, ii; - var times = this.times; - var out = ''; - var longest = 0; - for (i = 0, ii = times.length; i < ii; ++i) { - var name = times[i]['name']; - if (name.length > longest) { - longest = name.length; - } - } - for (i = 0, ii = times.length; i < ii; ++i) { - var span = times[i]; - var duration = span.end - span.start; - out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n'; - } - return out; - } - }; - return StatTimer; -}(); -var createBlob = function createBlob(data, contentType) { - if (typeof Blob !== 'undefined') { - return new Blob([data], { type: contentType }); - } - throw new Error('The "Blob" constructor is not supported.'); -}; -var createObjectURL = function createObjectURLClosure() { - var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - return function createObjectURL(data, contentType) { - var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - if (!forceDataSchema && URL.createObjectURL) { - var blob = createBlob(data, contentType); - return URL.createObjectURL(blob); + time(name) { + if (name in this.started) { + (0, _util.warn)(`Timer is already running for ${name}`); } - var buffer = 'data:' + contentType + ';base64,'; - for (var i = 0, ii = data.length; i < ii; i += 3) { - var b1 = data[i] & 0xFF; - var b2 = data[i + 1] & 0xFF; - var b3 = data[i + 2] & 0xFF; - var d1 = b1 >> 2, - d2 = (b1 & 3) << 4 | b2 >> 4; - var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64; - var d4 = i + 2 < ii ? b3 & 0x3F : 64; - buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; - } - return buffer; - }; -}(); -function resolveCall(fn, args) { - var thisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - if (!fn) { - return Promise.resolve(undefined); + this.started[name] = Date.now(); } - return new Promise(function (resolve, reject) { - resolve(fn.apply(thisArg, args)); + + timeEnd(name) { + if (!(name in this.started)) { + (0, _util.warn)(`Timer has not been started for ${name}`); + } + + this.times.push({ + name, + start: this.started[name], + end: Date.now() + }); + delete this.started[name]; + } + + toString() { + const outBuf = []; + let longest = 0; + + for (const time of this.times) { + const name = time.name; + + if (name.length > longest) { + longest = name.length; + } + } + + for (const time of this.times) { + const duration = time.end - time.start; + outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`); + } + + return outBuf.join(""); + } + +} + +exports.StatTimer = StatTimer; + +function isValidFetchUrl(url, baseUrl) { + try { + const { + protocol + } = baseUrl ? new URL(url, baseUrl) : new URL(url); + return protocol === "http:" || protocol === "https:"; + } catch (ex) { + return false; + } +} + +function loadScript(src, removeScriptElement = false) { + return new Promise((resolve, reject) => { + const script = document.createElement("script"); + script.src = src; + + script.onload = function (evt) { + if (removeScriptElement) { + script.remove(); + } + + resolve(evt); + }; + + script.onerror = function () { + reject(new Error(`Cannot load script at: ${script.src}`)); + }; + + (document.head || document.documentElement).appendChild(script); }); } -function wrapReason(reason) { - if ((typeof reason === 'undefined' ? 'undefined' : _typeof(reason)) !== 'object') { - return reason; - } - switch (reason.name) { - case 'AbortException': - return new AbortException(reason.message); - case 'MissingPDFException': - return new MissingPDFException(reason.message); - case 'UnexpectedResponseException': - return new UnexpectedResponseException(reason.message, reason.status); - default: - return new UnknownErrorException(reason.message, reason.details); + +function deprecated(details) { + console.log("Deprecated API usage: " + details); +} + +let pdfDateStringRegex; + +class PDFDateString { + static toDateObject(input) { + if (!input || typeof input !== "string") { + return null; + } + + if (!pdfDateStringRegex) { + pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?"); + } + + const matches = pdfDateStringRegex.exec(input); + + if (!matches) { + return null; + } + + const year = parseInt(matches[1], 10); + let month = parseInt(matches[2], 10); + month = month >= 1 && month <= 12 ? month - 1 : 0; + let day = parseInt(matches[3], 10); + day = day >= 1 && day <= 31 ? day : 1; + let hour = parseInt(matches[4], 10); + hour = hour >= 0 && hour <= 23 ? hour : 0; + let minute = parseInt(matches[5], 10); + minute = minute >= 0 && minute <= 59 ? minute : 0; + let second = parseInt(matches[6], 10); + second = second >= 0 && second <= 59 ? second : 0; + const universalTimeRelation = matches[7] || "Z"; + let offsetHour = parseInt(matches[8], 10); + offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0; + let offsetMinute = parseInt(matches[9], 10) || 0; + offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0; + + if (universalTimeRelation === "-") { + hour += offsetHour; + minute += offsetMinute; + } else if (universalTimeRelation === "+") { + hour -= offsetHour; + minute -= offsetMinute; + } + + return new Date(Date.UTC(year, month, day, hour, minute, second)); } + } -function resolveOrReject(capability, success, reason) { - if (success) { - capability.resolve(); - } else { - capability.reject(reason); - } + +exports.PDFDateString = PDFDateString; + +function getXfaPageViewport(xfaPage, { + scale = 1, + rotation = 0 +}) { + const { + width, + height + } = xfaPage.attributes.style; + const viewBox = [0, 0, parseInt(width), parseInt(height)]; + return new PageViewport({ + viewBox, + scale, + rotation + }); } -function finalize(promise) { - return Promise.resolve(promise).catch(function () {}); -} -function MessageHandler(sourceName, targetName, comObj) { - var _this = this; - - this.sourceName = sourceName; - this.targetName = targetName; - this.comObj = comObj; - this.callbackId = 1; - this.streamId = 1; - this.postMessageTransfers = true; - this.streamSinks = Object.create(null); - this.streamControllers = Object.create(null); - var callbacksCapabilities = this.callbacksCapabilities = Object.create(null); - var ah = this.actionHandler = Object.create(null); - this._onComObjOnMessage = function (event) { - var data = event.data; - if (data.targetName !== _this.sourceName) { - return; - } - if (data.stream) { - _this._processStreamMessage(data); - } else if (data.isReply) { - var callbackId = data.callbackId; - if (data.callbackId in callbacksCapabilities) { - var callback = callbacksCapabilities[callbackId]; - delete callbacksCapabilities[callbackId]; - if ('error' in data) { - callback.reject(wrapReason(data.error)); - } else { - callback.resolve(data.data); - } - } else { - throw new Error('Cannot resolve callback ' + callbackId); - } - } else if (data.action in ah) { - var action = ah[data.action]; - if (data.callbackId) { - var _sourceName = _this.sourceName; - var _targetName = data.sourceName; - Promise.resolve().then(function () { - return action[0].call(action[1], data.data); - }).then(function (result) { - comObj.postMessage({ - sourceName: _sourceName, - targetName: _targetName, - isReply: true, - callbackId: data.callbackId, - data: result - }); - }, function (reason) { - if (reason instanceof Error) { - reason = reason + ''; - } - comObj.postMessage({ - sourceName: _sourceName, - targetName: _targetName, - isReply: true, - callbackId: data.callbackId, - error: reason - }); - }); - } else if (data.streamId) { - _this._createStreamSink(data); - } else { - action[0].call(action[1], data.data); - } - } else { - throw new Error('Unknown action from worker: ' + data.action); - } - }; - comObj.addEventListener('message', this._onComObjOnMessage); -} -MessageHandler.prototype = { - on: function on(actionName, handler, scope) { - var ah = this.actionHandler; - if (ah[actionName]) { - throw new Error('There is already an actionName called "' + actionName + '"'); - } - ah[actionName] = [handler, scope]; - }, - send: function send(actionName, data, transfers) { - var message = { - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data: data - }; - this.postMessage(message, transfers); - }, - sendWithPromise: function sendWithPromise(actionName, data, transfers) { - var callbackId = this.callbackId++; - var message = { - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data: data, - callbackId: callbackId - }; - var capability = createPromiseCapability(); - this.callbacksCapabilities[callbackId] = capability; - try { - this.postMessage(message, transfers); - } catch (e) { - capability.reject(e); - } - return capability.promise; - }, - sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) { - var _this2 = this; - - var streamId = this.streamId++; - var sourceName = this.sourceName; - var targetName = this.targetName; - return new _streams_polyfill.ReadableStream({ - start: function start(controller) { - var startCapability = createPromiseCapability(); - _this2.streamControllers[streamId] = { - controller: controller, - startCall: startCapability, - isClosed: false - }; - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, - action: actionName, - streamId: streamId, - data: data, - desiredSize: controller.desiredSize - }); - return startCapability.promise; - }, - pull: function pull(controller) { - var pullCapability = createPromiseCapability(); - _this2.streamControllers[streamId].pullCall = pullCapability; - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: 'pull', - streamId: streamId, - desiredSize: controller.desiredSize - }); - return pullCapability.promise; - }, - cancel: function cancel(reason) { - var cancelCapability = createPromiseCapability(); - _this2.streamControllers[streamId].cancelCall = cancelCapability; - _this2.streamControllers[streamId].isClosed = true; - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: 'cancel', - reason: reason, - streamId: streamId - }); - return cancelCapability.promise; - } - }, queueingStrategy); - }, - _createStreamSink: function _createStreamSink(data) { - var _this3 = this; - - var self = this; - var action = this.actionHandler[data.action]; - var streamId = data.streamId; - var desiredSize = data.desiredSize; - var sourceName = this.sourceName; - var targetName = data.sourceName; - var capability = createPromiseCapability(); - var sendStreamRequest = function sendStreamRequest(_ref) { - var stream = _ref.stream, - chunk = _ref.chunk, - transfers = _ref.transfers, - success = _ref.success, - reason = _ref.reason; - - _this3.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: stream, - streamId: streamId, - chunk: chunk, - success: success, - reason: reason - }, transfers); - }; - var streamSink = { - enqueue: function enqueue(chunk) { - var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - var transfers = arguments[2]; - - if (this.isCancelled) { - return; - } - var lastDesiredSize = this.desiredSize; - this.desiredSize -= size; - if (lastDesiredSize > 0 && this.desiredSize <= 0) { - this.sinkCapability = createPromiseCapability(); - this.ready = this.sinkCapability.promise; - } - sendStreamRequest({ - stream: 'enqueue', - chunk: chunk, - transfers: transfers - }); - }, - close: function close() { - if (this.isCancelled) { - return; - } - sendStreamRequest({ stream: 'close' }); - delete self.streamSinks[streamId]; - }, - error: function error(reason) { - if (this.isCancelled) { - return; - } - this.isCancelled = true; - sendStreamRequest({ - stream: 'error', - reason: reason - }); - }, - - sinkCapability: capability, - onPull: null, - onCancel: null, - isCancelled: false, - desiredSize: desiredSize, - ready: null - }; - streamSink.sinkCapability.resolve(); - streamSink.ready = streamSink.sinkCapability.promise; - this.streamSinks[streamId] = streamSink; - resolveCall(action[0], [data.data, streamSink], action[1]).then(function () { - sendStreamRequest({ - stream: 'start_complete', - success: true - }); - }, function (reason) { - sendStreamRequest({ - stream: 'start_complete', - success: false, - reason: reason - }); - }); - }, - _processStreamMessage: function _processStreamMessage(data) { - var _this4 = this; - - var sourceName = this.sourceName; - var targetName = data.sourceName; - var streamId = data.streamId; - var sendStreamResponse = function sendStreamResponse(_ref2) { - var stream = _ref2.stream, - success = _ref2.success, - reason = _ref2.reason; - - _this4.comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: stream, - success: success, - streamId: streamId, - reason: reason - }); - }; - var deleteStreamController = function deleteStreamController() { - Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) { - return capability && finalize(capability.promise); - })).then(function () { - delete _this4.streamControllers[data.streamId]; - }); - }; - switch (data.stream) { - case 'start_complete': - resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason)); - break; - case 'pull_complete': - resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason)); - break; - case 'pull': - if (!this.streamSinks[data.streamId]) { - sendStreamResponse({ - stream: 'pull_complete', - success: true - }); - break; - } - if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) { - this.streamSinks[data.streamId].sinkCapability.resolve(); - } - this.streamSinks[data.streamId].desiredSize = data.desiredSize; - resolveCall(this.streamSinks[data.streamId].onPull).then(function () { - sendStreamResponse({ - stream: 'pull_complete', - success: true - }); - }, function (reason) { - sendStreamResponse({ - stream: 'pull_complete', - success: false, - reason: reason - }); - }); - break; - case 'enqueue': - assert(this.streamControllers[data.streamId], 'enqueue should have stream controller'); - if (!this.streamControllers[data.streamId].isClosed) { - this.streamControllers[data.streamId].controller.enqueue(data.chunk); - } - break; - case 'close': - assert(this.streamControllers[data.streamId], 'close should have stream controller'); - if (this.streamControllers[data.streamId].isClosed) { - break; - } - this.streamControllers[data.streamId].isClosed = true; - this.streamControllers[data.streamId].controller.close(); - deleteStreamController(); - break; - case 'error': - assert(this.streamControllers[data.streamId], 'error should have stream controller'); - this.streamControllers[data.streamId].controller.error(wrapReason(data.reason)); - deleteStreamController(); - break; - case 'cancel_complete': - resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason)); - deleteStreamController(); - break; - case 'cancel': - if (!this.streamSinks[data.streamId]) { - break; - } - resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () { - sendStreamResponse({ - stream: 'cancel_complete', - success: true - }); - }, function (reason) { - sendStreamResponse({ - stream: 'cancel_complete', - success: false, - reason: reason - }); - }); - this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason)); - this.streamSinks[data.streamId].isCancelled = true; - delete this.streamSinks[data.streamId]; - break; - default: - throw new Error('Unexpected stream case'); - } - }, - postMessage: function postMessage(message, transfers) { - if (transfers && this.postMessageTransfers) { - this.comObj.postMessage(message, transfers); - } else { - this.comObj.postMessage(message); - } - }, - destroy: function destroy() { - this.comObj.removeEventListener('message', this._onComObjOnMessage); - } -}; -function loadJpegStream(id, imageUrl, objs) { - var img = new Image(); - img.onload = function loadJpegStream_onloadClosure() { - objs.resolve(id, img); - }; - img.onerror = function loadJpegStream_onerrorClosure() { - objs.resolve(id, null); - warn('Error during JPEG image loading'); - }; - img.src = imageUrl; -} -exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; -exports.IDENTITY_MATRIX = IDENTITY_MATRIX; -exports.OPS = OPS; -exports.VERBOSITY_LEVELS = VERBOSITY_LEVELS; -exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; -exports.AnnotationBorderStyleType = AnnotationBorderStyleType; -exports.AnnotationFieldFlag = AnnotationFieldFlag; -exports.AnnotationFlag = AnnotationFlag; -exports.AnnotationType = AnnotationType; -exports.FontType = FontType; -exports.ImageKind = ImageKind; -exports.CMapCompressionType = CMapCompressionType; -exports.AbortException = AbortException; -exports.InvalidPDFException = InvalidPDFException; -exports.MessageHandler = MessageHandler; -exports.MissingDataException = MissingDataException; -exports.MissingPDFException = MissingPDFException; -exports.NativeImageDecoding = NativeImageDecoding; -exports.NotImplementedException = NotImplementedException; -exports.PageViewport = PageViewport; -exports.PasswordException = PasswordException; -exports.PasswordResponses = PasswordResponses; -exports.StatTimer = StatTimer; -exports.StreamType = StreamType; -exports.TextRenderingMode = TextRenderingMode; -exports.UnexpectedResponseException = UnexpectedResponseException; -exports.UnknownErrorException = UnknownErrorException; -exports.Util = Util; -exports.XRefParseException = XRefParseException; -exports.FormatError = FormatError; -exports.arrayByteLength = arrayByteLength; -exports.arraysToBytes = arraysToBytes; -exports.assert = assert; -exports.bytesToString = bytesToString; -exports.createBlob = createBlob; -exports.createPromiseCapability = createPromiseCapability; -exports.createObjectURL = createObjectURL; -exports.deprecated = deprecated; -exports.getLookupTableFactory = getLookupTableFactory; -exports.getVerbosityLevel = getVerbosityLevel; -exports.globalScope = globalScope; -exports.info = info; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBool = isBool; -exports.isEmptyObj = isEmptyObj; -exports.isInt = isInt; -exports.isNum = isNum; -exports.isString = isString; -exports.isSpace = isSpace; -exports.isNodeJS = isNodeJS; -exports.isSameOrigin = isSameOrigin; -exports.createValidAbsoluteUrl = createValidAbsoluteUrl; -exports.isLittleEndian = isLittleEndian; -exports.isEvalSupported = isEvalSupported; -exports.loadJpegStream = loadJpegStream; -exports.log2 = log2; -exports.readInt8 = readInt8; -exports.readUint16 = readUint16; -exports.readUint32 = readUint32; -exports.removeNullCharacters = removeNullCharacters; -exports.ReadableStream = _streams_polyfill.ReadableStream; -exports.setVerbosityLevel = setVerbosityLevel; -exports.shadow = shadow; -exports.string32 = string32; -exports.stringToBytes = stringToBytes; -exports.stringToPDFString = stringToPDFString; -exports.stringToUTF8String = stringToUTF8String; -exports.utf8StringToString = utf8StringToString; -exports.warn = warn; -exports.unreachable = unreachable; /***/ }), -/* 1 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/* 6 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -Object.defineProperty(exports, "__esModule", { + +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.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0; -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); +var _util = __w_pdfjs_require__(1); -var _util = __w_pdfjs_require__(0); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var DEFAULT_LINK_REL = 'noopener noreferrer nofollow'; - -var DOMCanvasFactory = function () { - function DOMCanvasFactory() { - _classCallCheck(this, DOMCanvasFactory); +class BaseCanvasFactory { + constructor() { + if (this.constructor === BaseCanvasFactory) { + (0, _util.unreachable)("Cannot initialize BaseCanvasFactory."); + } } - _createClass(DOMCanvasFactory, [{ - key: 'create', - value: function create(width, height) { - if (width <= 0 || height <= 0) { - throw new Error('invalid canvas size'); - } - var canvas = document.createElement('canvas'); - var context = canvas.getContext('2d'); - canvas.width = width; - canvas.height = height; - return { - canvas: canvas, - context: context - }; + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); } - }, { - key: 'reset', - value: function reset(canvasAndContext, width, height) { - if (!canvasAndContext.canvas) { - throw new Error('canvas is not specified'); - } - if (width <= 0 || height <= 0) { - throw new Error('invalid canvas size'); - } - canvasAndContext.canvas.width = width; - canvasAndContext.canvas.height = height; + + const canvas = this._createCanvas(width, height); + + return { + canvas, + context: canvas.getContext("2d") + }; + } + + reset(canvasAndContext, width, height) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); } - }, { - key: 'destroy', - value: function destroy(canvasAndContext) { - if (!canvasAndContext.canvas) { - throw new Error('canvas is not specified'); - } - canvasAndContext.canvas.width = 0; - canvasAndContext.canvas.height = 0; - canvasAndContext.canvas = null; - canvasAndContext.context = null; + + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); } - }]); - return DOMCanvasFactory; -}(); + canvasAndContext.canvas.width = width; + canvasAndContext.canvas.height = height; + } -var DOMCMapReaderFactory = function () { - function DOMCMapReaderFactory(_ref) { - var _ref$baseUrl = _ref.baseUrl, - baseUrl = _ref$baseUrl === undefined ? null : _ref$baseUrl, - _ref$isCompressed = _ref.isCompressed, - isCompressed = _ref$isCompressed === undefined ? false : _ref$isCompressed; + destroy(canvasAndContext) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } - _classCallCheck(this, DOMCMapReaderFactory); + canvasAndContext.canvas.width = 0; + canvasAndContext.canvas.height = 0; + canvasAndContext.canvas = null; + canvasAndContext.context = null; + } + + _createCanvas(width, height) { + (0, _util.unreachable)("Abstract method `_createCanvas` called."); + } + +} + +exports.BaseCanvasFactory = BaseCanvasFactory; + +class BaseCMapReaderFactory { + constructor({ + baseUrl = null, + isCompressed = false + }) { + if (this.constructor === BaseCMapReaderFactory) { + (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory."); + } this.baseUrl = baseUrl; this.isCompressed = isCompressed; } - _createClass(DOMCMapReaderFactory, [{ - key: 'fetch', - value: function fetch(_ref2) { - var _this = this; + async fetch({ + name + }) { + if (!this.baseUrl) { + throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'); + } - var name = _ref2.name; + if (!name) { + throw new Error("CMap name must be specified."); + } - if (!name) { - return Promise.reject(new Error('CMap name must be specified.')); - } - return new Promise(function (resolve, reject) { - var url = _this.baseUrl + name + (_this.isCompressed ? '.bcmap' : ''); - var request = new XMLHttpRequest(); - request.open('GET', url, true); - if (_this.isCompressed) { - request.responseType = 'arraybuffer'; - } - request.onreadystatechange = function () { - if (request.readyState !== XMLHttpRequest.DONE) { - return; - } - if (request.status === 200 || request.status === 0) { - var data = void 0; - if (_this.isCompressed && request.response) { - data = new Uint8Array(request.response); - } else if (!_this.isCompressed && request.responseText) { - data = (0, _util.stringToBytes)(request.responseText); - } - if (data) { - resolve({ - cMapData: data, - compressionType: _this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE - }); - return; - } - } - reject(new Error('Unable to load ' + (_this.isCompressed ? 'binary ' : '') + 'CMap at: ' + url)); - }; - request.send(null); - }); - } - }]); - - return DOMCMapReaderFactory; -}(); - -var CustomStyle = function CustomStyleClosure() { - var prefixes = ['ms', 'Moz', 'Webkit', 'O']; - var _cache = Object.create(null); - function CustomStyle() {} - CustomStyle.getProp = function get(propName, element) { - if (arguments.length === 1 && typeof _cache[propName] === 'string') { - return _cache[propName]; - } - element = element || document.documentElement; - var style = element.style, - prefixed, - uPropName; - if (typeof style[propName] === 'string') { - return _cache[propName] = propName; - } - uPropName = propName.charAt(0).toUpperCase() + propName.slice(1); - for (var i = 0, l = prefixes.length; i < l; i++) { - prefixed = prefixes[i] + uPropName; - if (typeof style[prefixed] === 'string') { - return _cache[propName] = prefixed; - } - } - return _cache[propName] = 'undefined'; - }; - CustomStyle.setProp = function set(propName, element, str) { - var prop = this.getProp(propName); - if (prop !== 'undefined') { - element.style[prop] = str; - } - }; - return CustomStyle; -}(); -var RenderingCancelledException = function RenderingCancelledException() { - function RenderingCancelledException(msg, type) { - this.message = msg; - this.type = type; + const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : ""); + const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE; + return this._fetchData(url, compressionType).catch(reason => { + throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`); + }); } - RenderingCancelledException.prototype = new Error(); - RenderingCancelledException.prototype.name = 'RenderingCancelledException'; - RenderingCancelledException.constructor = RenderingCancelledException; - return RenderingCancelledException; -}(); -var LinkTarget = { - NONE: 0, - SELF: 1, - BLANK: 2, - PARENT: 3, - TOP: 4 -}; -var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top']; -function addLinkAttributes(link, params) { - var url = params && params.url; - link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : ''; - if (url) { - var target = params.target; - if (typeof target === 'undefined') { - target = getDefaultSetting('externalLinkTarget'); - } - link.target = LinkTargetStringMap[target]; - var rel = params.rel; - if (typeof rel === 'undefined') { - rel = getDefaultSetting('externalLinkRel'); - } - link.rel = rel; + + _fetchData(url, compressionType) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); } + } -function getFilenameFromUrl(url) { - var anchor = url.indexOf('#'); - var query = url.indexOf('?'); - var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length); - return url.substring(url.lastIndexOf('/', end) + 1, end); + +exports.BaseCMapReaderFactory = BaseCMapReaderFactory; + +class BaseStandardFontDataFactory { + constructor({ + baseUrl = null + }) { + if (this.constructor === BaseStandardFontDataFactory) { + (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory."); + } + + this.baseUrl = baseUrl; + } + + async fetch({ + filename + }) { + if (!this.baseUrl) { + throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.'); + } + + if (!filename) { + throw new Error("Font filename must be specified."); + } + + const url = `${this.baseUrl}${filename}`; + return this._fetchData(url).catch(reason => { + throw new Error(`Unable to load font data at: ${url}`); + }); + } + + _fetchData(url) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } + } -function getDefaultSetting(id) { - var globalSettings = _util.globalScope.PDFJS; - switch (id) { - case 'pdfBug': - return globalSettings ? globalSettings.pdfBug : false; - case 'disableAutoFetch': - return globalSettings ? globalSettings.disableAutoFetch : false; - case 'disableStream': - return globalSettings ? globalSettings.disableStream : false; - case 'disableRange': - return globalSettings ? globalSettings.disableRange : false; - case 'disableFontFace': - return globalSettings ? globalSettings.disableFontFace : false; - case 'disableCreateObjectURL': - return globalSettings ? globalSettings.disableCreateObjectURL : false; - case 'disableWebGL': - return globalSettings ? globalSettings.disableWebGL : true; - case 'cMapUrl': - return globalSettings ? globalSettings.cMapUrl : null; - case 'cMapPacked': - return globalSettings ? globalSettings.cMapPacked : false; - case 'postMessageTransfers': - return globalSettings ? globalSettings.postMessageTransfers : true; - case 'workerPort': - return globalSettings ? globalSettings.workerPort : null; - case 'workerSrc': - return globalSettings ? globalSettings.workerSrc : null; - case 'disableWorker': - return globalSettings ? globalSettings.disableWorker : false; - case 'maxImageSize': - return globalSettings ? globalSettings.maxImageSize : -1; - case 'imageResourcesPath': - return globalSettings ? globalSettings.imageResourcesPath : ''; - case 'isEvalSupported': - return globalSettings ? globalSettings.isEvalSupported : true; - case 'externalLinkTarget': - if (!globalSettings) { - return LinkTarget.NONE; - } - switch (globalSettings.externalLinkTarget) { - case LinkTarget.NONE: - case LinkTarget.SELF: - case LinkTarget.BLANK: - case LinkTarget.PARENT: - case LinkTarget.TOP: - return globalSettings.externalLinkTarget; - } - (0, _util.warn)('PDFJS.externalLinkTarget is invalid: ' + globalSettings.externalLinkTarget); - globalSettings.externalLinkTarget = LinkTarget.NONE; - return LinkTarget.NONE; - case 'externalLinkRel': - return globalSettings ? globalSettings.externalLinkRel : DEFAULT_LINK_REL; - case 'enableStats': - return !!(globalSettings && globalSettings.enableStats); - case 'pdfjsNext': - return !!(globalSettings && globalSettings.pdfjsNext); - default: - throw new Error('Unknown default setting: ' + id); + +exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory; + +class BaseSVGFactory { + constructor() { + if (this.constructor === BaseSVGFactory) { + (0, _util.unreachable)("Cannot initialize BaseSVGFactory."); + } } + + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid SVG dimensions"); + } + + const svg = this._createSVG("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) { + if (typeof type !== "string") { + throw new Error("Invalid SVG element type"); + } + + return this._createSVG(type); + } + + _createSVG(type) { + (0, _util.unreachable)("Abstract method `_createSVG` called."); + } + } -function isExternalLinkTargetSet() { - var externalLinkTarget = getDefaultSetting('externalLinkTarget'); - switch (externalLinkTarget) { - case LinkTarget.NONE: - return false; - case LinkTarget.SELF: - case LinkTarget.BLANK: - case LinkTarget.PARENT: - case LinkTarget.TOP: - return true; - } -} -function isValidUrl(url, allowRelative) { - (0, _util.deprecated)('isValidUrl(), please use createValidAbsoluteUrl() instead.'); - var baseUrl = allowRelative ? 'http://example.com' : null; - return (0, _util.createValidAbsoluteUrl)(url, baseUrl) !== null; -} -exports.CustomStyle = CustomStyle; -exports.RenderingCancelledException = RenderingCancelledException; -exports.addLinkAttributes = addLinkAttributes; -exports.isExternalLinkTargetSet = isExternalLinkTargetSet; -exports.isValidUrl = isValidUrl; -exports.getFilenameFromUrl = getFilenameFromUrl; -exports.LinkTarget = LinkTarget; -exports.getDefaultSetting = getDefaultSetting; -exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL; -exports.DOMCanvasFactory = DOMCanvasFactory; -exports.DOMCMapReaderFactory = DOMCMapReaderFactory; -/***/ }), -/* 2 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.build = exports.version = exports._UnsupportedManager = exports.setPDFNetworkStreamClass = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.getDocument = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _util = __w_pdfjs_require__(0); - -var _dom_utils = __w_pdfjs_require__(1); - -var _font_loader = __w_pdfjs_require__(12); - -var _canvas = __w_pdfjs_require__(11); - -var _metadata = __w_pdfjs_require__(6); - -var _transport_stream = __w_pdfjs_require__(14); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var DEFAULT_RANGE_CHUNK_SIZE = 65536; -var isWorkerDisabled = false; -var workerSrc; -var isPostMessageTransfersDisabled = false; -var pdfjsFilePath = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : null; -var fakeWorkerFilesLoader = null; -var useRequireEnsure = false; -{ - if (typeof window === 'undefined') { - isWorkerDisabled = true; - if (typeof require.ensure === 'undefined') { - require.ensure = require('node-ensure'); - } - useRequireEnsure = true; - } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') { - useRequireEnsure = true; - } - if (typeof requirejs !== 'undefined' && requirejs.toUrl) { - workerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js'); - } - var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load; - fakeWorkerFilesLoader = useRequireEnsure ? function (callback) { - require.ensure([], function () { - var worker; - worker = require('./pdf.worker.js'); - callback(worker.WorkerMessageHandler); - }); - } : dynamicLoaderSupported ? function (callback) { - requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) { - callback(worker.WorkerMessageHandler); - }); - } : null; -} -var PDFNetworkStream; -function setPDFNetworkStreamClass(cls) { - PDFNetworkStream = cls; -} -function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallback) { - var task = new PDFDocumentLoadingTask(); - if (arguments.length > 1) { - (0, _util.deprecated)('getDocument is called with pdfDataRangeTransport, ' + 'passwordCallback or progressCallback argument'); - } - if (pdfDataRangeTransport) { - if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) { - pdfDataRangeTransport = Object.create(pdfDataRangeTransport); - pdfDataRangeTransport.length = src.length; - pdfDataRangeTransport.initialData = src.initialData; - if (!pdfDataRangeTransport.abort) { - pdfDataRangeTransport.abort = function () {}; - } - } - src = Object.create(src); - src.range = pdfDataRangeTransport; - } - task.onPassword = passwordCallback || null; - task.onProgress = progressCallback || null; - var source; - if (typeof src === 'string') { - source = { url: src }; - } else if ((0, _util.isArrayBuffer)(src)) { - source = { data: src }; - } else if (src instanceof PDFDataRangeTransport) { - source = { range: src }; - } else { - if ((typeof src === 'undefined' ? 'undefined' : _typeof(src)) !== 'object') { - throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object'); - } - if (!src.url && !src.data && !src.range) { - throw new Error('Invalid parameter object: need either .data, .range or .url'); - } - source = src; - } - var params = {}; - var rangeTransport = null; - var worker = null; - var CMapReaderFactory = _dom_utils.DOMCMapReaderFactory; - for (var key in source) { - if (key === 'url' && typeof window !== 'undefined') { - params[key] = new URL(source[key], window.location).href; - continue; - } else if (key === 'range') { - rangeTransport = source[key]; - continue; - } else if (key === 'worker') { - worker = source[key]; - continue; - } else if (key === 'data' && !(source[key] instanceof Uint8Array)) { - var pdfBytes = source[key]; - if (typeof pdfBytes === 'string') { - params[key] = (0, _util.stringToBytes)(pdfBytes); - } else if ((typeof pdfBytes === 'undefined' ? 'undefined' : _typeof(pdfBytes)) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) { - params[key] = new Uint8Array(pdfBytes); - } else if ((0, _util.isArrayBuffer)(pdfBytes)) { - params[key] = new Uint8Array(pdfBytes); - } else { - throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.'); - } - continue; - } else if (key === 'CMapReaderFactory') { - CMapReaderFactory = source[key]; - continue; - } - params[key] = source[key]; - } - params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; - params.ignoreErrors = params.stopAtErrors !== true; - if (params.disableNativeImageDecoder !== undefined) { - (0, _util.deprecated)('parameter disableNativeImageDecoder, ' + 'use nativeImageDecoderSupport instead'); - } - params.nativeImageDecoderSupport = params.nativeImageDecoderSupport || (params.disableNativeImageDecoder === true ? _util.NativeImageDecoding.NONE : _util.NativeImageDecoding.DECODE); - if (params.nativeImageDecoderSupport !== _util.NativeImageDecoding.DECODE && params.nativeImageDecoderSupport !== _util.NativeImageDecoding.NONE && params.nativeImageDecoderSupport !== _util.NativeImageDecoding.DISPLAY) { - (0, _util.warn)('Invalid parameter nativeImageDecoderSupport: ' + 'need a state of enum {NativeImageDecoding}'); - params.nativeImageDecoderSupport = _util.NativeImageDecoding.DECODE; - } - if (!worker) { - var workerPort = (0, _dom_utils.getDefaultSetting)('workerPort'); - worker = workerPort ? PDFWorker.fromPort(workerPort) : new PDFWorker(); - task._worker = worker; - } - var docId = task.docId; - worker.promise.then(function () { - if (task.destroyed) { - throw new Error('Loading aborted'); - } - return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) { - if (task.destroyed) { - throw new Error('Loading aborted'); - } - var networkStream = void 0; - if (rangeTransport) { - networkStream = new _transport_stream.PDFDataTransportStream(params, rangeTransport); - } else if (!params.data) { - networkStream = new PDFNetworkStream({ - source: params, - disableRange: (0, _dom_utils.getDefaultSetting)('disableRange') - }); - } - var messageHandler = new _util.MessageHandler(docId, workerId, worker.port); - messageHandler.postMessageTransfers = worker.postMessageTransfers; - var transport = new WorkerTransport(messageHandler, task, networkStream, CMapReaderFactory); - task._transport = transport; - messageHandler.send('Ready', null); - }); - }).catch(task._capability.reject); - return task; -} -function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { - if (worker.destroyed) { - return Promise.reject(new Error('Worker was destroyed')); - } - source.disableAutoFetch = (0, _dom_utils.getDefaultSetting)('disableAutoFetch'); - source.disableStream = (0, _dom_utils.getDefaultSetting)('disableStream'); - source.chunkedViewerLoading = !!pdfDataRangeTransport; - if (pdfDataRangeTransport) { - source.length = pdfDataRangeTransport.length; - source.initialData = pdfDataRangeTransport.initialData; - } - return worker.messageHandler.sendWithPromise('GetDocRequest', { - docId: docId, - source: { - data: source.data, - url: source.url, - password: source.password, - disableAutoFetch: source.disableAutoFetch, - rangeChunkSize: source.rangeChunkSize, - length: source.length - }, - maxImageSize: (0, _dom_utils.getDefaultSetting)('maxImageSize'), - disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), - disableCreateObjectURL: (0, _dom_utils.getDefaultSetting)('disableCreateObjectURL'), - postMessageTransfers: (0, _dom_utils.getDefaultSetting)('postMessageTransfers') && !isPostMessageTransfersDisabled, - docBaseUrl: source.docBaseUrl, - nativeImageDecoderSupport: source.nativeImageDecoderSupport, - ignoreErrors: source.ignoreErrors - }).then(function (workerId) { - if (worker.destroyed) { - throw new Error('Worker was destroyed'); - } - return workerId; - }); -} -var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() { - var nextDocumentId = 0; - function PDFDocumentLoadingTask() { - this._capability = (0, _util.createPromiseCapability)(); - this._transport = null; - this._worker = null; - this.docId = 'd' + nextDocumentId++; - this.destroyed = false; - this.onPassword = null; - this.onProgress = null; - this.onUnsupportedFeature = null; - } - PDFDocumentLoadingTask.prototype = { - get promise() { - return this._capability.promise; - }, - destroy: function destroy() { - var _this = this; - - this.destroyed = true; - var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy(); - return transportDestroyed.then(function () { - _this._transport = null; - if (_this._worker) { - _this._worker.destroy(); - _this._worker = null; - } - }); - }, - - then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) { - return this.promise.then.apply(this.promise, arguments); - } - }; - return PDFDocumentLoadingTask; -}(); -var PDFDataRangeTransport = function pdfDataRangeTransportClosure() { - function PDFDataRangeTransport(length, initialData) { - this.length = length; - this.initialData = initialData; - this._rangeListeners = []; - this._progressListeners = []; - this._progressiveReadListeners = []; - this._readyCapability = (0, _util.createPromiseCapability)(); - } - PDFDataRangeTransport.prototype = { - addRangeListener: function PDFDataRangeTransport_addRangeListener(listener) { - this._rangeListeners.push(listener); - }, - addProgressListener: function PDFDataRangeTransport_addProgressListener(listener) { - this._progressListeners.push(listener); - }, - addProgressiveReadListener: function PDFDataRangeTransport_addProgressiveReadListener(listener) { - this._progressiveReadListeners.push(listener); - }, - onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) { - var listeners = this._rangeListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](begin, chunk); - } - }, - onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) { - var _this2 = this; - - this._readyCapability.promise.then(function () { - var listeners = _this2._progressListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](loaded); - } - }); - }, - onDataProgressiveRead: function PDFDataRangeTransport_onDataProgress(chunk) { - var _this3 = this; - - this._readyCapability.promise.then(function () { - var listeners = _this3._progressiveReadListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](chunk); - } - }); - }, - transportReady: function PDFDataRangeTransport_transportReady() { - this._readyCapability.resolve(); - }, - requestDataRange: function PDFDataRangeTransport_requestDataRange(begin, end) { - throw new Error('Abstract method PDFDataRangeTransport.requestDataRange'); - }, - abort: function PDFDataRangeTransport_abort() {} - }; - return PDFDataRangeTransport; -}(); -var PDFDocumentProxy = function PDFDocumentProxyClosure() { - function PDFDocumentProxy(pdfInfo, transport, loadingTask) { - this.pdfInfo = pdfInfo; - this.transport = transport; - this.loadingTask = loadingTask; - } - PDFDocumentProxy.prototype = { - get numPages() { - return this.pdfInfo.numPages; - }, - get fingerprint() { - return this.pdfInfo.fingerprint; - }, - getPage: function PDFDocumentProxy_getPage(pageNumber) { - return this.transport.getPage(pageNumber); - }, - getPageIndex: function PDFDocumentProxy_getPageIndex(ref) { - return this.transport.getPageIndex(ref); - }, - getDestinations: function PDFDocumentProxy_getDestinations() { - return this.transport.getDestinations(); - }, - getDestination: function PDFDocumentProxy_getDestination(id) { - return this.transport.getDestination(id); - }, - getPageLabels: function PDFDocumentProxy_getPageLabels() { - return this.transport.getPageLabels(); - }, - getPageMode: function getPageMode() { - return this.transport.getPageMode(); - }, - - getAttachments: function PDFDocumentProxy_getAttachments() { - return this.transport.getAttachments(); - }, - getJavaScript: function PDFDocumentProxy_getJavaScript() { - return this.transport.getJavaScript(); - }, - getOutline: function PDFDocumentProxy_getOutline() { - return this.transport.getOutline(); - }, - getMetadata: function PDFDocumentProxy_getMetadata() { - return this.transport.getMetadata(); - }, - getData: function PDFDocumentProxy_getData() { - return this.transport.getData(); - }, - getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() { - return this.transport.downloadInfoCapability.promise; - }, - getStats: function PDFDocumentProxy_getStats() { - return this.transport.getStats(); - }, - cleanup: function PDFDocumentProxy_cleanup() { - this.transport.startCleanup(); - }, - destroy: function PDFDocumentProxy_destroy() { - return this.loadingTask.destroy(); - } - }; - return PDFDocumentProxy; -}(); -var PDFPageProxy = function PDFPageProxyClosure() { - function PDFPageProxy(pageIndex, pageInfo, transport) { - this.pageIndex = pageIndex; - this.pageInfo = pageInfo; - this.transport = transport; - this.stats = new _util.StatTimer(); - this.stats.enabled = (0, _dom_utils.getDefaultSetting)('enableStats'); - this.commonObjs = transport.commonObjs; - this.objs = new PDFObjects(); - this.cleanupAfterRender = false; - this.pendingCleanup = false; - this.intentStates = Object.create(null); - this.destroyed = false; - } - PDFPageProxy.prototype = { - get pageNumber() { - return this.pageIndex + 1; - }, - get rotate() { - return this.pageInfo.rotate; - }, - get ref() { - return this.pageInfo.ref; - }, - get userUnit() { - return this.pageInfo.userUnit; - }, - get view() { - return this.pageInfo.view; - }, - getViewport: function PDFPageProxy_getViewport(scale, rotate) { - if (arguments.length < 2) { - rotate = this.rotate; - } - return new _util.PageViewport(this.view, scale, rotate, 0, 0); - }, - getAnnotations: function PDFPageProxy_getAnnotations(params) { - var intent = params && params.intent || null; - if (!this.annotationsPromise || this.annotationsIntent !== intent) { - this.annotationsPromise = this.transport.getAnnotations(this.pageIndex, intent); - this.annotationsIntent = intent; - } - return this.annotationsPromise; - }, - render: function PDFPageProxy_render(params) { - var _this4 = this; - - var stats = this.stats; - stats.time('Overall'); - this.pendingCleanup = false; - var renderingIntent = params.intent === 'print' ? 'print' : 'display'; - var canvasFactory = params.canvasFactory || new _dom_utils.DOMCanvasFactory(); - if (!this.intentStates[renderingIntent]) { - this.intentStates[renderingIntent] = Object.create(null); - } - var intentState = this.intentStates[renderingIntent]; - if (!intentState.displayReadyCapability) { - intentState.receivingOperatorList = true; - intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - this.stats.time('Page Request'); - this.transport.messageHandler.send('RenderPageRequest', { - pageIndex: this.pageNumber - 1, - intent: renderingIntent, - renderInteractiveForms: params.renderInteractiveForms === true - }); - } - var complete = function complete(error) { - var i = intentState.renderTasks.indexOf(internalRenderTask); - if (i >= 0) { - intentState.renderTasks.splice(i, 1); - } - if (_this4.cleanupAfterRender) { - _this4.pendingCleanup = true; - } - _this4._tryCleanup(); - if (error) { - internalRenderTask.capability.reject(error); - } else { - internalRenderTask.capability.resolve(); - } - stats.timeEnd('Rendering'); - stats.timeEnd('Overall'); - }; - var internalRenderTask = new InternalRenderTask(complete, params, this.objs, this.commonObjs, intentState.operatorList, this.pageNumber, canvasFactory); - internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print'; - if (!intentState.renderTasks) { - intentState.renderTasks = []; - } - intentState.renderTasks.push(internalRenderTask); - var renderTask = internalRenderTask.task; - if (params.continueCallback) { - (0, _util.deprecated)('render is used with continueCallback parameter'); - renderTask.onContinue = params.continueCallback; - } - intentState.displayReadyCapability.promise.then(function (transparency) { - if (_this4.pendingCleanup) { - complete(); - return; - } - stats.time('Rendering'); - internalRenderTask.initializeGraphics(transparency); - internalRenderTask.operatorListChanged(); - }).catch(complete); - return renderTask; - }, - getOperatorList: function PDFPageProxy_getOperatorList() { - function operatorListChanged() { - if (intentState.operatorList.lastChunk) { - intentState.opListReadCapability.resolve(intentState.operatorList); - var i = intentState.renderTasks.indexOf(opListTask); - if (i >= 0) { - intentState.renderTasks.splice(i, 1); - } - } - } - var renderingIntent = 'oplist'; - if (!this.intentStates[renderingIntent]) { - this.intentStates[renderingIntent] = Object.create(null); - } - var intentState = this.intentStates[renderingIntent]; - var opListTask; - if (!intentState.opListReadCapability) { - opListTask = {}; - opListTask.operatorListChanged = operatorListChanged; - intentState.receivingOperatorList = true; - intentState.opListReadCapability = (0, _util.createPromiseCapability)(); - intentState.renderTasks = []; - intentState.renderTasks.push(opListTask); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - this.transport.messageHandler.send('RenderPageRequest', { - pageIndex: this.pageIndex, - intent: renderingIntent - }); - } - return intentState.opListReadCapability.promise; - }, - streamTextContent: function streamTextContent() { - var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - var TEXT_CONTENT_CHUNK_SIZE = 100; - return this.transport.messageHandler.sendWithStream('GetTextContent', { - pageIndex: this.pageNumber - 1, - normalizeWhitespace: params.normalizeWhitespace === true, - combineTextItems: params.disableCombineTextItems !== true - }, { - highWaterMark: TEXT_CONTENT_CHUNK_SIZE, - size: function size(textContent) { - return textContent.items.length; - } - }); - }, - - getTextContent: function PDFPageProxy_getTextContent(params) { - params = params || {}; - var readableStream = this.streamTextContent(params); - return new Promise(function (resolve, reject) { - function pump() { - reader.read().then(function (_ref) { - var value = _ref.value, - done = _ref.done; - - if (done) { - resolve(textContent); - return; - } - _util.Util.extendObj(textContent.styles, value.styles); - _util.Util.appendToArray(textContent.items, value.items); - pump(); - }, reject); - } - var reader = readableStream.getReader(); - var textContent = { - items: [], - styles: Object.create(null) - }; - pump(); - }); - }, - _destroy: function PDFPageProxy_destroy() { - this.destroyed = true; - this.transport.pageCache[this.pageIndex] = null; - var waitOn = []; - Object.keys(this.intentStates).forEach(function (intent) { - if (intent === 'oplist') { - return; - } - var intentState = this.intentStates[intent]; - intentState.renderTasks.forEach(function (renderTask) { - var renderCompleted = renderTask.capability.promise.catch(function () {}); - waitOn.push(renderCompleted); - renderTask.cancel(); - }); - }, this); - this.objs.clear(); - this.annotationsPromise = null; - this.pendingCleanup = false; - return Promise.all(waitOn); - }, - destroy: function destroy() { - (0, _util.deprecated)('page destroy method, use cleanup() instead'); - this.cleanup(); - }, - - cleanup: function PDFPageProxy_cleanup() { - this.pendingCleanup = true; - this._tryCleanup(); - }, - _tryCleanup: function PDFPageProxy_tryCleanup() { - if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) { - var intentState = this.intentStates[intent]; - return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList; - }, this)) { - return; - } - Object.keys(this.intentStates).forEach(function (intent) { - delete this.intentStates[intent]; - }, this); - this.objs.clear(); - this.annotationsPromise = null; - this.pendingCleanup = false; - }, - _startRenderPage: function PDFPageProxy_startRenderPage(transparency, intent) { - var intentState = this.intentStates[intent]; - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.resolve(transparency); - } - }, - _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk, intent) { - var intentState = this.intentStates[intent]; - var i, ii; - for (i = 0, ii = operatorListChunk.length; i < ii; i++) { - intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); - intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); - } - intentState.operatorList.lastChunk = operatorListChunk.lastChunk; - for (i = 0; i < intentState.renderTasks.length; i++) { - intentState.renderTasks[i].operatorListChanged(); - } - if (operatorListChunk.lastChunk) { - intentState.receivingOperatorList = false; - this._tryCleanup(); - } - } - }; - return PDFPageProxy; -}(); - -var LoopbackPort = function () { - function LoopbackPort(defer) { - _classCallCheck(this, LoopbackPort); - - this._listeners = []; - this._defer = defer; - this._deferred = Promise.resolve(undefined); - } - - _createClass(LoopbackPort, [{ - key: 'postMessage', - value: function postMessage(obj, transfers) { - var _this5 = this; - - function cloneValue(value) { - if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object' || value === null) { - return value; - } - if (cloned.has(value)) { - return cloned.get(value); - } - var result; - var buffer; - if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) { - var transferable = transfers && transfers.indexOf(buffer) >= 0; - if (value === buffer) { - result = value; - } else if (transferable) { - result = new value.constructor(buffer, value.byteOffset, value.byteLength); - } else { - result = new value.constructor(value); - } - cloned.set(value, result); - return result; - } - result = (0, _util.isArray)(value) ? [] : {}; - cloned.set(value, result); - for (var i in value) { - var desc, - p = value; - while (!(desc = Object.getOwnPropertyDescriptor(p, i))) { - p = Object.getPrototypeOf(p); - } - if (typeof desc.value === 'undefined' || typeof desc.value === 'function') { - continue; - } - result[i] = cloneValue(desc.value); - } - return result; - } - if (!this._defer) { - this._listeners.forEach(function (listener) { - listener.call(this, { data: obj }); - }, this); - return; - } - var cloned = new WeakMap(); - var e = { data: cloneValue(obj) }; - this._deferred.then(function () { - _this5._listeners.forEach(function (listener) { - listener.call(this, e); - }, _this5); - }); - } - }, { - key: 'addEventListener', - value: function addEventListener(name, listener) { - this._listeners.push(listener); - } - }, { - key: 'removeEventListener', - value: function removeEventListener(name, listener) { - var i = this._listeners.indexOf(listener); - this._listeners.splice(i, 1); - } - }, { - key: 'terminate', - value: function terminate() { - this._listeners = []; - } - }]); - - return LoopbackPort; -}(); - -var PDFWorker = function PDFWorkerClosure() { - var nextFakeWorkerId = 0; - function getWorkerSrc() { - if (typeof workerSrc !== 'undefined') { - return workerSrc; - } - if ((0, _dom_utils.getDefaultSetting)('workerSrc')) { - return (0, _dom_utils.getDefaultSetting)('workerSrc'); - } - if (pdfjsFilePath) { - return pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, '.worker$1$2'); - } - throw new Error('No PDFJS.workerSrc specified'); - } - var fakeWorkerFilesLoadedCapability = void 0; - function setupFakeWorkerGlobal() { - var WorkerMessageHandler; - if (fakeWorkerFilesLoadedCapability) { - return fakeWorkerFilesLoadedCapability.promise; - } - fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)(); - var loader = fakeWorkerFilesLoader || function (callback) { - _util.Util.loadScript(getWorkerSrc(), function () { - callback(window.pdfjsDistBuildPdfWorker.WorkerMessageHandler); - }); - }; - loader(fakeWorkerFilesLoadedCapability.resolve); - return fakeWorkerFilesLoadedCapability.promise; - } - function createCDNWrapper(url) { - var wrapper = 'importScripts(\'' + url + '\');'; - return URL.createObjectURL(new Blob([wrapper])); - } - var pdfWorkerPorts = new WeakMap(); - function PDFWorker(name, port) { - if (port && pdfWorkerPorts.has(port)) { - throw new Error('Cannot use more than one PDFWorker per port'); - } - this.name = name; - this.destroyed = false; - this.postMessageTransfers = true; - this._readyCapability = (0, _util.createPromiseCapability)(); - this._port = null; - this._webWorker = null; - this._messageHandler = null; - if (port) { - pdfWorkerPorts.set(port, this); - this._initializeFromPort(port); - return; - } - this._initialize(); - } - PDFWorker.prototype = { - get promise() { - return this._readyCapability.promise; - }, - get port() { - return this._port; - }, - get messageHandler() { - return this._messageHandler; - }, - _initializeFromPort: function PDFWorker_initializeFromPort(port) { - this._port = port; - this._messageHandler = new _util.MessageHandler('main', 'worker', port); - this._messageHandler.on('ready', function () {}); - this._readyCapability.resolve(); - }, - _initialize: function PDFWorker_initialize() { - var _this6 = this; - - if (!isWorkerDisabled && !(0, _dom_utils.getDefaultSetting)('disableWorker') && typeof Worker !== 'undefined') { - var workerSrc = getWorkerSrc(); - try { - if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) { - workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href); - } - var worker = new Worker(workerSrc); - var messageHandler = new _util.MessageHandler('main', 'worker', worker); - var terminateEarly = function terminateEarly() { - worker.removeEventListener('error', onWorkerError); - messageHandler.destroy(); - worker.terminate(); - if (_this6.destroyed) { - _this6._readyCapability.reject(new Error('Worker was destroyed')); - } else { - _this6._setupFakeWorker(); - } - }; - var onWorkerError = function onWorkerError() { - if (!_this6._webWorker) { - terminateEarly(); - } - }; - worker.addEventListener('error', onWorkerError); - messageHandler.on('test', function (data) { - worker.removeEventListener('error', onWorkerError); - if (_this6.destroyed) { - terminateEarly(); - return; - } - var supportTypedArray = data && data.supportTypedArray; - if (supportTypedArray) { - _this6._messageHandler = messageHandler; - _this6._port = worker; - _this6._webWorker = worker; - if (!data.supportTransfers) { - _this6.postMessageTransfers = false; - isPostMessageTransfersDisabled = true; - } - _this6._readyCapability.resolve(); - messageHandler.send('configure', { verbosity: (0, _util.getVerbosityLevel)() }); - } else { - _this6._setupFakeWorker(); - messageHandler.destroy(); - worker.terminate(); - } - }); - messageHandler.on('console_log', function (data) { - console.log.apply(console, data); - }); - messageHandler.on('console_error', function (data) { - console.error.apply(console, data); - }); - messageHandler.on('ready', function (data) { - worker.removeEventListener('error', onWorkerError); - if (_this6.destroyed) { - terminateEarly(); - return; - } - try { - sendTest(); - } catch (e) { - _this6._setupFakeWorker(); - } - }); - var sendTest = function sendTest() { - var postMessageTransfers = (0, _dom_utils.getDefaultSetting)('postMessageTransfers') && !isPostMessageTransfersDisabled; - var testObj = new Uint8Array([postMessageTransfers ? 255 : 0]); - try { - messageHandler.send('test', testObj, [testObj.buffer]); - } catch (ex) { - (0, _util.info)('Cannot use postMessage transfers'); - testObj[0] = 0; - messageHandler.send('test', testObj); - } - }; - sendTest(); - return; - } catch (e) { - (0, _util.info)('The worker has been disabled.'); - } - } - this._setupFakeWorker(); - }, - _setupFakeWorker: function PDFWorker_setupFakeWorker() { - var _this7 = this; - - if (!isWorkerDisabled && !(0, _dom_utils.getDefaultSetting)('disableWorker')) { - (0, _util.warn)('Setting up fake worker.'); - isWorkerDisabled = true; - } - setupFakeWorkerGlobal().then(function (WorkerMessageHandler) { - if (_this7.destroyed) { - _this7._readyCapability.reject(new Error('Worker was destroyed')); - return; - } - var isTypedArraysPresent = Uint8Array !== Float32Array; - var port = new LoopbackPort(isTypedArraysPresent); - _this7._port = port; - var id = 'fake' + nextFakeWorkerId++; - var workerHandler = new _util.MessageHandler(id + '_worker', id, port); - WorkerMessageHandler.setup(workerHandler, port); - var messageHandler = new _util.MessageHandler(id, id + '_worker', port); - _this7._messageHandler = messageHandler; - _this7._readyCapability.resolve(); - }); - }, - destroy: function PDFWorker_destroy() { - this.destroyed = true; - if (this._webWorker) { - this._webWorker.terminate(); - this._webWorker = null; - } - pdfWorkerPorts.delete(this._port); - this._port = null; - if (this._messageHandler) { - this._messageHandler.destroy(); - this._messageHandler = null; - } - } - }; - PDFWorker.fromPort = function (port) { - if (pdfWorkerPorts.has(port)) { - return pdfWorkerPorts.get(port); - } - return new PDFWorker(null, port); - }; - return PDFWorker; -}(); -var WorkerTransport = function WorkerTransportClosure() { - function WorkerTransport(messageHandler, loadingTask, networkStream, CMapReaderFactory) { - this.messageHandler = messageHandler; - this.loadingTask = loadingTask; - this.commonObjs = new PDFObjects(); - this.fontLoader = new _font_loader.FontLoader(loadingTask.docId); - this.CMapReaderFactory = new CMapReaderFactory({ - baseUrl: (0, _dom_utils.getDefaultSetting)('cMapUrl'), - isCompressed: (0, _dom_utils.getDefaultSetting)('cMapPacked') - }); - this.destroyed = false; - this.destroyCapability = null; - this._passwordCapability = null; - this._networkStream = networkStream; - this._fullReader = null; - this._lastProgress = null; - this.pageCache = []; - this.pagePromises = []; - this.downloadInfoCapability = (0, _util.createPromiseCapability)(); - this.setupMessageHandler(); - } - WorkerTransport.prototype = { - destroy: function WorkerTransport_destroy() { - var _this8 = this; - - if (this.destroyCapability) { - return this.destroyCapability.promise; - } - this.destroyed = true; - this.destroyCapability = (0, _util.createPromiseCapability)(); - if (this._passwordCapability) { - this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback')); - } - var waitOn = []; - this.pageCache.forEach(function (page) { - if (page) { - waitOn.push(page._destroy()); - } - }); - this.pageCache = []; - this.pagePromises = []; - var terminated = this.messageHandler.sendWithPromise('Terminate', null); - waitOn.push(terminated); - Promise.all(waitOn).then(function () { - _this8.fontLoader.clear(); - if (_this8._networkStream) { - _this8._networkStream.cancelAllRequests(); - } - if (_this8.messageHandler) { - _this8.messageHandler.destroy(); - _this8.messageHandler = null; - } - _this8.destroyCapability.resolve(); - }, this.destroyCapability.reject); - return this.destroyCapability.promise; - }, - setupMessageHandler: function WorkerTransport_setupMessageHandler() { - var messageHandler = this.messageHandler; - var loadingTask = this.loadingTask; - messageHandler.on('GetReader', function (data, sink) { - var _this9 = this; - - (0, _util.assert)(this._networkStream); - this._fullReader = this._networkStream.getFullReader(); - this._fullReader.onProgress = function (evt) { - _this9._lastProgress = { - loaded: evt.loaded, - total: evt.total - }; - }; - sink.onPull = function () { - _this9._fullReader.read().then(function (_ref2) { - var value = _ref2.value, - done = _ref2.done; - - if (done) { - sink.close(); - return; - } - (0, _util.assert)((0, _util.isArrayBuffer)(value)); - sink.enqueue(new Uint8Array(value), 1, [value]); - }).catch(function (reason) { - sink.error(reason); - }); - }; - sink.onCancel = function (reason) { - _this9._fullReader.cancel(reason); - }; - }, this); - messageHandler.on('ReaderHeadersReady', function (data) { - var _this10 = this; - - var headersCapability = (0, _util.createPromiseCapability)(); - var fullReader = this._fullReader; - fullReader.headersReady.then(function () { - if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { - if (_this10._lastProgress) { - var _loadingTask = _this10.loadingTask; - if (_loadingTask.onProgress) { - _loadingTask.onProgress(_this10._lastProgress); - } - } - fullReader.onProgress = function (evt) { - var loadingTask = _this10.loadingTask; - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: evt.loaded, - total: evt.total - }); - } - }; - } - headersCapability.resolve({ - isStreamingSupported: fullReader.isStreamingSupported, - isRangeSupported: fullReader.isRangeSupported, - contentLength: fullReader.contentLength - }); - }, headersCapability.reject); - return headersCapability.promise; - }, this); - messageHandler.on('GetRangeReader', function (data, sink) { - (0, _util.assert)(this._networkStream); - var _rangeReader = this._networkStream.getRangeReader(data.begin, data.end); - sink.onPull = function () { - _rangeReader.read().then(function (_ref3) { - var value = _ref3.value, - done = _ref3.done; - - if (done) { - sink.close(); - return; - } - (0, _util.assert)((0, _util.isArrayBuffer)(value)); - sink.enqueue(new Uint8Array(value), 1, [value]); - }).catch(function (reason) { - sink.error(reason); - }); - }; - sink.onCancel = function (reason) { - _rangeReader.cancel(reason); - }; - }, this); - messageHandler.on('GetDoc', function transportDoc(data) { - var pdfInfo = data.pdfInfo; - this.numPages = data.pdfInfo.numPages; - var loadingTask = this.loadingTask; - var pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask); - this.pdfDocument = pdfDocument; - loadingTask._capability.resolve(pdfDocument); - }, this); - messageHandler.on('PasswordRequest', function transportPasswordRequest(exception) { - var _this11 = this; - - this._passwordCapability = (0, _util.createPromiseCapability)(); - if (loadingTask.onPassword) { - var updatePassword = function updatePassword(password) { - _this11._passwordCapability.resolve({ password: password }); - }; - loadingTask.onPassword(updatePassword, exception.code); - } else { - this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); - } - return this._passwordCapability.promise; - }, this); - messageHandler.on('PasswordException', function transportPasswordException(exception) { - loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code)); - }, this); - messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) { - this.loadingTask._capability.reject(new _util.InvalidPDFException(exception.message)); - }, this); - messageHandler.on('MissingPDF', function transportMissingPDF(exception) { - this.loadingTask._capability.reject(new _util.MissingPDFException(exception.message)); - }, this); - messageHandler.on('UnexpectedResponse', function transportUnexpectedResponse(exception) { - this.loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status)); - }, this); - messageHandler.on('UnknownError', function transportUnknownError(exception) { - this.loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details)); - }, this); - messageHandler.on('DataLoaded', function transportPage(data) { - this.downloadInfoCapability.resolve(data); - }, this); - messageHandler.on('PDFManagerReady', function transportPage(data) {}, this); - messageHandler.on('StartRenderPage', function transportRender(data) { - if (this.destroyed) { - return; - } - var page = this.pageCache[data.pageIndex]; - page.stats.timeEnd('Page Request'); - page._startRenderPage(data.transparency, data.intent); - }, this); - messageHandler.on('RenderPageChunk', function transportRender(data) { - if (this.destroyed) { - return; - } - var page = this.pageCache[data.pageIndex]; - page._renderPageChunk(data.operatorList, data.intent); - }, this); - messageHandler.on('commonobj', function transportObj(data) { - var _this12 = this; - - if (this.destroyed) { - return; - } - var id = data[0]; - var type = data[1]; - if (this.commonObjs.hasData(id)) { - return; - } - switch (type) { - case 'Font': - var exportedData = data[2]; - if ('error' in exportedData) { - var exportedError = exportedData.error; - (0, _util.warn)('Error during font loading: ' + exportedError); - this.commonObjs.resolve(id, exportedError); - break; - } - var fontRegistry = null; - if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.FontInspector && _util.globalScope['FontInspector'].enabled) { - fontRegistry = { - registerFont: function registerFont(font, url) { - _util.globalScope['FontInspector'].fontAdded(font, url); - } - }; - } - var font = new _font_loader.FontFaceObject(exportedData, { - isEvalSuported: (0, _dom_utils.getDefaultSetting)('isEvalSupported'), - disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), - fontRegistry: fontRegistry - }); - var fontReady = function fontReady(fontObjs) { - _this12.commonObjs.resolve(id, font); - }; - this.fontLoader.bind([font], fontReady); - break; - case 'FontPath': - this.commonObjs.resolve(id, data[2]); - break; - default: - throw new Error('Got unknown common object type ' + type); - } - }, this); - messageHandler.on('obj', function transportObj(data) { - if (this.destroyed) { - return; - } - var id = data[0]; - var pageIndex = data[1]; - var type = data[2]; - var pageProxy = this.pageCache[pageIndex]; - var imageData; - if (pageProxy.objs.hasData(id)) { - return; - } - switch (type) { - case 'JpegStream': - imageData = data[3]; - (0, _util.loadJpegStream)(id, imageData, pageProxy.objs); - break; - case 'Image': - imageData = data[3]; - pageProxy.objs.resolve(id, imageData); - var MAX_IMAGE_SIZE_TO_STORE = 8000000; - if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) { - pageProxy.cleanupAfterRender = true; - } - break; - default: - throw new Error('Got unknown object type ' + type); - } - }, this); - messageHandler.on('DocProgress', function transportDocProgress(data) { - if (this.destroyed) { - return; - } - var loadingTask = this.loadingTask; - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: data.loaded, - total: data.total - }); - } - }, this); - messageHandler.on('PageError', function transportError(data) { - if (this.destroyed) { - return; - } - var page = this.pageCache[data.pageNum - 1]; - var intentState = page.intentStates[data.intent]; - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.reject(data.error); - } else { - throw new Error(data.error); - } - if (intentState.operatorList) { - intentState.operatorList.lastChunk = true; - for (var i = 0; i < intentState.renderTasks.length; i++) { - intentState.renderTasks[i].operatorListChanged(); - } - } - }, this); - messageHandler.on('UnsupportedFeature', function transportUnsupportedFeature(data) { - if (this.destroyed) { - return; - } - var featureId = data.featureId; - var loadingTask = this.loadingTask; - if (loadingTask.onUnsupportedFeature) { - loadingTask.onUnsupportedFeature(featureId); - } - _UnsupportedManager.notify(featureId); - }, this); - messageHandler.on('JpegDecode', function (data) { - if (this.destroyed) { - return Promise.reject(new Error('Worker was destroyed')); - } - if (typeof document === 'undefined') { - return Promise.reject(new Error('"document" is not defined.')); - } - var imageUrl = data[0]; - var components = data[1]; - if (components !== 3 && components !== 1) { - return Promise.reject(new Error('Only 3 components or 1 component can be returned')); - } - return new Promise(function (resolve, reject) { - var img = new Image(); - img.onload = function () { - var width = img.width; - var height = img.height; - var size = width * height; - var rgbaLength = size * 4; - var buf = new Uint8Array(size * components); - var tmpCanvas = document.createElement('canvas'); - tmpCanvas.width = width; - tmpCanvas.height = height; - var tmpCtx = tmpCanvas.getContext('2d'); - tmpCtx.drawImage(img, 0, 0); - var data = tmpCtx.getImageData(0, 0, width, height).data; - var i, j; - if (components === 3) { - for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) { - buf[j] = data[i]; - buf[j + 1] = data[i + 1]; - buf[j + 2] = data[i + 2]; - } - } else if (components === 1) { - for (i = 0, j = 0; i < rgbaLength; i += 4, j++) { - buf[j] = data[i]; - } - } - resolve({ - data: buf, - width: width, - height: height - }); - }; - img.onerror = function () { - reject(new Error('JpegDecode failed to load image')); - }; - img.src = imageUrl; - }); - }, this); - messageHandler.on('FetchBuiltInCMap', function (data) { - if (this.destroyed) { - return Promise.reject(new Error('Worker was destroyed')); - } - return this.CMapReaderFactory.fetch({ name: data.name }); - }, this); - }, - getData: function WorkerTransport_getData() { - return this.messageHandler.sendWithPromise('GetData', null); - }, - getPage: function WorkerTransport_getPage(pageNumber, capability) { - var _this13 = this; - - if (!(0, _util.isInt)(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) { - return Promise.reject(new Error('Invalid page request')); - } - var pageIndex = pageNumber - 1; - if (pageIndex in this.pagePromises) { - return this.pagePromises[pageIndex]; - } - var promise = this.messageHandler.sendWithPromise('GetPage', { pageIndex: pageIndex }).then(function (pageInfo) { - if (_this13.destroyed) { - throw new Error('Transport destroyed'); - } - var page = new PDFPageProxy(pageIndex, pageInfo, _this13); - _this13.pageCache[pageIndex] = page; - return page; - }); - this.pagePromises[pageIndex] = promise; - return promise; - }, - getPageIndex: function WorkerTransport_getPageIndexByRef(ref) { - return this.messageHandler.sendWithPromise('GetPageIndex', { ref: ref }).catch(function (reason) { - return Promise.reject(new Error(reason)); - }); - }, - getAnnotations: function WorkerTransport_getAnnotations(pageIndex, intent) { - return this.messageHandler.sendWithPromise('GetAnnotations', { - pageIndex: pageIndex, - intent: intent - }); - }, - getDestinations: function WorkerTransport_getDestinations() { - return this.messageHandler.sendWithPromise('GetDestinations', null); - }, - getDestination: function WorkerTransport_getDestination(id) { - return this.messageHandler.sendWithPromise('GetDestination', { id: id }); - }, - getPageLabels: function WorkerTransport_getPageLabels() { - return this.messageHandler.sendWithPromise('GetPageLabels', null); - }, - getPageMode: function getPageMode() { - return this.messageHandler.sendWithPromise('GetPageMode', null); - }, - - getAttachments: function WorkerTransport_getAttachments() { - return this.messageHandler.sendWithPromise('GetAttachments', null); - }, - getJavaScript: function WorkerTransport_getJavaScript() { - return this.messageHandler.sendWithPromise('GetJavaScript', null); - }, - getOutline: function WorkerTransport_getOutline() { - return this.messageHandler.sendWithPromise('GetOutline', null); - }, - getMetadata: function WorkerTransport_getMetadata() { - return this.messageHandler.sendWithPromise('GetMetadata', null).then(function transportMetadata(results) { - return { - info: results[0], - metadata: results[1] ? new _metadata.Metadata(results[1]) : null - }; - }); - }, - getStats: function WorkerTransport_getStats() { - return this.messageHandler.sendWithPromise('GetStats', null); - }, - startCleanup: function WorkerTransport_startCleanup() { - var _this14 = this; - - this.messageHandler.sendWithPromise('Cleanup', null).then(function () { - for (var i = 0, ii = _this14.pageCache.length; i < ii; i++) { - var page = _this14.pageCache[i]; - if (page) { - page.cleanup(); - } - } - _this14.commonObjs.clear(); - _this14.fontLoader.clear(); - }); - } - }; - return WorkerTransport; -}(); -var PDFObjects = function PDFObjectsClosure() { - function PDFObjects() { - this.objs = Object.create(null); - } - PDFObjects.prototype = { - ensureObj: function PDFObjects_ensureObj(objId) { - if (this.objs[objId]) { - return this.objs[objId]; - } - var obj = { - capability: (0, _util.createPromiseCapability)(), - data: null, - resolved: false - }; - this.objs[objId] = obj; - return obj; - }, - get: function PDFObjects_get(objId, callback) { - if (callback) { - this.ensureObj(objId).capability.promise.then(callback); - return null; - } - var obj = this.objs[objId]; - if (!obj || !obj.resolved) { - throw new Error('Requesting object that isn\'t resolved yet ' + objId); - } - return obj.data; - }, - resolve: function PDFObjects_resolve(objId, data) { - var obj = this.ensureObj(objId); - obj.resolved = true; - obj.data = data; - obj.capability.resolve(data); - }, - isResolved: function PDFObjects_isResolved(objId) { - var objs = this.objs; - if (!objs[objId]) { - return false; - } - return objs[objId].resolved; - }, - hasData: function PDFObjects_hasData(objId) { - return this.isResolved(objId); - }, - getData: function PDFObjects_getData(objId) { - var objs = this.objs; - if (!objs[objId] || !objs[objId].resolved) { - return null; - } - return objs[objId].data; - }, - clear: function PDFObjects_clear() { - this.objs = Object.create(null); - } - }; - return PDFObjects; -}(); -var RenderTask = function RenderTaskClosure() { - function RenderTask(internalRenderTask) { - this._internalRenderTask = internalRenderTask; - this.onContinue = null; - } - RenderTask.prototype = { - get promise() { - return this._internalRenderTask.capability.promise; - }, - cancel: function RenderTask_cancel() { - this._internalRenderTask.cancel(); - }, - then: function RenderTask_then(onFulfilled, onRejected) { - return this.promise.then.apply(this.promise, arguments); - } - }; - return RenderTask; -}(); -var InternalRenderTask = function InternalRenderTaskClosure() { - var canvasInRendering = new WeakMap(); - function InternalRenderTask(callback, params, objs, commonObjs, operatorList, pageNumber, canvasFactory) { - this.callback = callback; - this.params = params; - this.objs = objs; - this.commonObjs = commonObjs; - this.operatorListIdx = null; - this.operatorList = operatorList; - this.pageNumber = pageNumber; - this.canvasFactory = canvasFactory; - this.running = false; - this.graphicsReadyCallback = null; - this.graphicsReady = false; - this.useRequestAnimationFrame = false; - this.cancelled = false; - this.capability = (0, _util.createPromiseCapability)(); - this.task = new RenderTask(this); - this._continueBound = this._continue.bind(this); - this._scheduleNextBound = this._scheduleNext.bind(this); - this._nextBound = this._next.bind(this); - this._canvas = params.canvasContext.canvas; - } - InternalRenderTask.prototype = { - initializeGraphics: function InternalRenderTask_initializeGraphics(transparency) { - if (this._canvas) { - if (canvasInRendering.has(this._canvas)) { - throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.'); - } - canvasInRendering.set(this._canvas, this); - } - if (this.cancelled) { - return; - } - if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.StepperManager && _util.globalScope.StepperManager.enabled) { - this.stepper = _util.globalScope.StepperManager.create(this.pageNumber - 1); - this.stepper.init(this.operatorList); - this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); - } - var params = this.params; - this.gfx = new _canvas.CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, params.imageLayer); - this.gfx.beginDrawing({ - transform: params.transform, - viewport: params.viewport, - transparency: transparency, - background: params.background - }); - this.operatorListIdx = 0; - this.graphicsReady = true; - if (this.graphicsReadyCallback) { - this.graphicsReadyCallback(); - } - }, - cancel: function InternalRenderTask_cancel() { - this.running = false; - this.cancelled = true; - if (this._canvas) { - canvasInRendering.delete(this._canvas); - } - if ((0, _dom_utils.getDefaultSetting)('pdfjsNext')) { - this.callback(new _dom_utils.RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas')); - } else { - this.callback('cancelled'); - } - }, - operatorListChanged: function InternalRenderTask_operatorListChanged() { - if (!this.graphicsReady) { - if (!this.graphicsReadyCallback) { - this.graphicsReadyCallback = this._continueBound; - } - return; - } - if (this.stepper) { - this.stepper.updateOperatorList(this.operatorList); - } - if (this.running) { - return; - } - this._continue(); - }, - _continue: function InternalRenderTask__continue() { - this.running = true; - if (this.cancelled) { - return; - } - if (this.task.onContinue) { - this.task.onContinue(this._scheduleNextBound); - } else { - this._scheduleNext(); - } - }, - _scheduleNext: function InternalRenderTask__scheduleNext() { - if (this.useRequestAnimationFrame && typeof window !== 'undefined') { - window.requestAnimationFrame(this._nextBound); - } else { - Promise.resolve(undefined).then(this._nextBound); - } - }, - _next: function InternalRenderTask__next() { - if (this.cancelled) { - return; - } - this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); - if (this.operatorListIdx === this.operatorList.argsArray.length) { - this.running = false; - if (this.operatorList.lastChunk) { - this.gfx.endDrawing(); - if (this._canvas) { - canvasInRendering.delete(this._canvas); - } - this.callback(); - } - } - } - }; - return InternalRenderTask; -}(); -var _UnsupportedManager = function UnsupportedManagerClosure() { - var listeners = []; - return { - listen: function listen(cb) { - (0, _util.deprecated)('Global UnsupportedManager.listen is used: ' + ' use PDFDocumentLoadingTask.onUnsupportedFeature instead'); - listeners.push(cb); - }, - notify: function notify(featureId) { - for (var i = 0, ii = listeners.length; i < ii; i++) { - listeners[i](featureId); - } - } - }; -}(); -var version, build; -{ - exports.version = version = '1.9.426'; - exports.build = build = '2558a58d'; -} -exports.getDocument = getDocument; -exports.LoopbackPort = LoopbackPort; -exports.PDFDataRangeTransport = PDFDataRangeTransport; -exports.PDFWorker = PDFWorker; -exports.PDFDocumentProxy = PDFDocumentProxy; -exports.PDFPageProxy = PDFPageProxy; -exports.setPDFNetworkStreamClass = setPDFNetworkStreamClass; -exports._UnsupportedManager = _UnsupportedManager; -exports.version = version; -exports.build = build; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.AnnotationLayer = undefined; - -var _dom_utils = __w_pdfjs_require__(1); - -var _util = __w_pdfjs_require__(0); - -function AnnotationElementFactory() {} -AnnotationElementFactory.prototype = { - create: function AnnotationElementFactory_create(parameters) { - var subtype = parameters.data.annotationType; - switch (subtype) { - case _util.AnnotationType.LINK: - return new LinkAnnotationElement(parameters); - case _util.AnnotationType.TEXT: - return new TextAnnotationElement(parameters); - case _util.AnnotationType.WIDGET: - var fieldType = parameters.data.fieldType; - switch (fieldType) { - case 'Tx': - return new TextWidgetAnnotationElement(parameters); - case 'Btn': - if (parameters.data.radioButton) { - return new RadioButtonWidgetAnnotationElement(parameters); - } else if (parameters.data.checkBox) { - return new CheckboxWidgetAnnotationElement(parameters); - } - (0, _util.warn)('Unimplemented button widget annotation: pushbutton'); - break; - case 'Ch': - return new ChoiceWidgetAnnotationElement(parameters); - } - return new WidgetAnnotationElement(parameters); - case _util.AnnotationType.POPUP: - return new PopupAnnotationElement(parameters); - case _util.AnnotationType.LINE: - return new LineAnnotationElement(parameters); - case _util.AnnotationType.HIGHLIGHT: - return new HighlightAnnotationElement(parameters); - case _util.AnnotationType.UNDERLINE: - return new UnderlineAnnotationElement(parameters); - case _util.AnnotationType.SQUIGGLY: - return new SquigglyAnnotationElement(parameters); - case _util.AnnotationType.STRIKEOUT: - return new StrikeOutAnnotationElement(parameters); - case _util.AnnotationType.FILEATTACHMENT: - return new FileAttachmentAnnotationElement(parameters); - default: - return new AnnotationElement(parameters); - } - } -}; -var AnnotationElement = function AnnotationElementClosure() { - function AnnotationElement(parameters, isRenderable, ignoreBorder) { - this.isRenderable = isRenderable || false; - this.data = parameters.data; - this.layer = parameters.layer; - this.page = parameters.page; - this.viewport = parameters.viewport; - this.linkService = parameters.linkService; - this.downloadManager = parameters.downloadManager; - this.imageResourcesPath = parameters.imageResourcesPath; - this.renderInteractiveForms = parameters.renderInteractiveForms; - if (isRenderable) { - this.container = this._createContainer(ignoreBorder); - } - } - AnnotationElement.prototype = { - _createContainer: function AnnotationElement_createContainer(ignoreBorder) { - var data = this.data, - page = this.page, - viewport = this.viewport; - var container = document.createElement('section'); - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - container.setAttribute('data-annotation-id', data.id); - var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); - _dom_utils.CustomStyle.setProp('transform', container, 'matrix(' + viewport.transform.join(',') + ')'); - _dom_utils.CustomStyle.setProp('transformOrigin', container, -rect[0] + 'px ' + -rect[1] + 'px'); - if (!ignoreBorder && data.borderStyle.width > 0) { - container.style.borderWidth = data.borderStyle.width + 'px'; - if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { - width = width - 2 * data.borderStyle.width; - height = height - 2 * data.borderStyle.width; - } - var horizontalRadius = data.borderStyle.horizontalCornerRadius; - var verticalRadius = data.borderStyle.verticalCornerRadius; - if (horizontalRadius > 0 || verticalRadius > 0) { - var radius = horizontalRadius + 'px / ' + verticalRadius + 'px'; - _dom_utils.CustomStyle.setProp('borderRadius', container, radius); - } - switch (data.borderStyle.style) { - case _util.AnnotationBorderStyleType.SOLID: - container.style.borderStyle = 'solid'; - break; - case _util.AnnotationBorderStyleType.DASHED: - container.style.borderStyle = 'dashed'; - break; - case _util.AnnotationBorderStyleType.BEVELED: - (0, _util.warn)('Unimplemented border style: beveled'); - break; - case _util.AnnotationBorderStyleType.INSET: - (0, _util.warn)('Unimplemented border style: inset'); - break; - case _util.AnnotationBorderStyleType.UNDERLINE: - container.style.borderBottomStyle = 'solid'; - break; - default: - break; - } - if (data.color) { - container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); - } else { - container.style.borderWidth = 0; - } - } - container.style.left = rect[0] + 'px'; - container.style.top = rect[1] + 'px'; - container.style.width = width + 'px'; - container.style.height = height + 'px'; - return container; - }, - _createPopup: function AnnotationElement_createPopup(container, trigger, data) { - if (!trigger) { - trigger = document.createElement('div'); - trigger.style.height = container.style.height; - trigger.style.width = container.style.width; - container.appendChild(trigger); - } - var popupElement = new PopupElement({ - container: container, - trigger: trigger, - color: data.color, - title: data.title, - contents: data.contents, - hideWrapper: true - }); - var popup = popupElement.render(); - popup.style.left = container.style.width; - container.appendChild(popup); - }, - render: function AnnotationElement_render() { - throw new Error('Abstract method AnnotationElement.render called'); - } - }; - return AnnotationElement; -}(); -var LinkAnnotationElement = function LinkAnnotationElementClosure() { - function LinkAnnotationElement(parameters) { - AnnotationElement.call(this, parameters, true); - } - _util.Util.inherit(LinkAnnotationElement, AnnotationElement, { - render: function LinkAnnotationElement_render() { - this.container.className = 'linkAnnotation'; - var link = document.createElement('a'); - (0, _dom_utils.addLinkAttributes)(link, { - url: this.data.url, - target: this.data.newWindow ? _dom_utils.LinkTarget.BLANK : undefined - }); - if (!this.data.url) { - if (this.data.action) { - this._bindNamedAction(link, this.data.action); - } else { - this._bindLink(link, this.data.dest); - } - } - this.container.appendChild(link); - return this.container; - }, - _bindLink: function _bindLink(link, destination) { - var _this = this; - - link.href = this.linkService.getDestinationHash(destination); - link.onclick = function () { - if (destination) { - _this.linkService.navigateTo(destination); - } - return false; - }; - if (destination) { - link.className = 'internalLink'; - } - }, - _bindNamedAction: function _bindNamedAction(link, action) { - var _this2 = this; - - link.href = this.linkService.getAnchorUrl(''); - link.onclick = function () { - _this2.linkService.executeNamedAction(action); - return false; - }; - link.className = 'internalLink'; - } - }); - return LinkAnnotationElement; -}(); -var TextAnnotationElement = function TextAnnotationElementClosure() { - function TextAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable); - } - _util.Util.inherit(TextAnnotationElement, AnnotationElement, { - render: function TextAnnotationElement_render() { - this.container.className = 'textAnnotation'; - var image = document.createElement('img'); - image.style.height = this.container.style.height; - image.style.width = this.container.style.width; - image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg'; - image.alt = '[{{type}} Annotation]'; - image.dataset.l10nId = 'text_annotation_type'; - image.dataset.l10nArgs = JSON.stringify({ type: this.data.name }); - if (!this.data.hasPopup) { - this._createPopup(this.container, image, this.data); - } - this.container.appendChild(image); - return this.container; - } - }); - return TextAnnotationElement; -}(); -var WidgetAnnotationElement = function WidgetAnnotationElementClosure() { - function WidgetAnnotationElement(parameters, isRenderable) { - AnnotationElement.call(this, parameters, isRenderable); - } - _util.Util.inherit(WidgetAnnotationElement, AnnotationElement, { - render: function WidgetAnnotationElement_render() { - return this.container; - } - }); - return WidgetAnnotationElement; -}(); -var TextWidgetAnnotationElement = function TextWidgetAnnotationElementClosure() { - var TEXT_ALIGNMENT = ['left', 'center', 'right']; - function TextWidgetAnnotationElement(parameters) { - var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; - WidgetAnnotationElement.call(this, parameters, isRenderable); - } - _util.Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, { - render: function TextWidgetAnnotationElement_render() { - this.container.className = 'textWidgetAnnotation'; - var element = null; - if (this.renderInteractiveForms) { - if (this.data.multiLine) { - element = document.createElement('textarea'); - element.textContent = this.data.fieldValue; - } else { - element = document.createElement('input'); - element.type = 'text'; - element.setAttribute('value', this.data.fieldValue); - } - element.disabled = this.data.readOnly; - if (this.data.maxLen !== null) { - element.maxLength = this.data.maxLen; - } - if (this.data.comb) { - var fieldWidth = this.data.rect[2] - this.data.rect[0]; - var combWidth = fieldWidth / this.data.maxLen; - element.classList.add('comb'); - element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)'; - } - } else { - element = document.createElement('div'); - element.textContent = this.data.fieldValue; - element.style.verticalAlign = 'middle'; - element.style.display = 'table-cell'; - var font = null; - if (this.data.fontRefName) { - font = this.page.commonObjs.getData(this.data.fontRefName); - } - this._setTextStyle(element, font); - } - if (this.data.textAlignment !== null) { - element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; - } - this.container.appendChild(element); - return this.container; - }, - _setTextStyle: function TextWidgetAnnotationElement_setTextStyle(element, font) { - var style = element.style; - style.fontSize = this.data.fontSize + 'px'; - style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr'; - if (!font) { - return; - } - style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal'; - style.fontStyle = font.italic ? 'italic' : 'normal'; - var fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : ''; - var fallbackName = font.fallbackName || 'Helvetica, sans-serif'; - style.fontFamily = fontFamily + fallbackName; - } - }); - return TextWidgetAnnotationElement; -}(); -var CheckboxWidgetAnnotationElement = function CheckboxWidgetAnnotationElementClosure() { - function CheckboxWidgetAnnotationElement(parameters) { - WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); - } - _util.Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, { - render: function CheckboxWidgetAnnotationElement_render() { - this.container.className = 'buttonWidgetAnnotation checkBox'; - var element = document.createElement('input'); - element.disabled = this.data.readOnly; - element.type = 'checkbox'; - if (this.data.fieldValue && this.data.fieldValue !== 'Off') { - element.setAttribute('checked', true); - } - this.container.appendChild(element); - return this.container; - } - }); - return CheckboxWidgetAnnotationElement; -}(); -var RadioButtonWidgetAnnotationElement = function RadioButtonWidgetAnnotationElementClosure() { - function RadioButtonWidgetAnnotationElement(parameters) { - WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); - } - _util.Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, { - render: function RadioButtonWidgetAnnotationElement_render() { - this.container.className = 'buttonWidgetAnnotation radioButton'; - var element = document.createElement('input'); - element.disabled = this.data.readOnly; - element.type = 'radio'; - element.name = this.data.fieldName; - if (this.data.fieldValue === this.data.buttonValue) { - element.setAttribute('checked', true); - } - this.container.appendChild(element); - return this.container; - } - }); - return RadioButtonWidgetAnnotationElement; -}(); -var ChoiceWidgetAnnotationElement = function ChoiceWidgetAnnotationElementClosure() { - function ChoiceWidgetAnnotationElement(parameters) { - WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); - } - _util.Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, { - render: function ChoiceWidgetAnnotationElement_render() { - this.container.className = 'choiceWidgetAnnotation'; - var selectElement = document.createElement('select'); - selectElement.disabled = this.data.readOnly; - if (!this.data.combo) { - selectElement.size = this.data.options.length; - if (this.data.multiSelect) { - selectElement.multiple = true; - } - } - for (var i = 0, ii = this.data.options.length; i < ii; i++) { - var option = this.data.options[i]; - var optionElement = document.createElement('option'); - optionElement.textContent = option.displayValue; - optionElement.value = option.exportValue; - if (this.data.fieldValue.indexOf(option.displayValue) >= 0) { - optionElement.setAttribute('selected', true); - } - selectElement.appendChild(optionElement); - } - this.container.appendChild(selectElement); - return this.container; - } - }); - return ChoiceWidgetAnnotationElement; -}(); -var PopupAnnotationElement = function PopupAnnotationElementClosure() { - var IGNORE_TYPES = ['Line']; - function PopupAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable); - } - _util.Util.inherit(PopupAnnotationElement, AnnotationElement, { - render: function PopupAnnotationElement_render() { - this.container.className = 'popupAnnotation'; - if (IGNORE_TYPES.indexOf(this.data.parentType) >= 0) { - return this.container; - } - var selector = '[data-annotation-id="' + this.data.parentId + '"]'; - var parentElement = this.layer.querySelector(selector); - if (!parentElement) { - return this.container; - } - var popup = new PopupElement({ - container: this.container, - trigger: parentElement, - color: this.data.color, - title: this.data.title, - contents: this.data.contents - }); - var parentLeft = parseFloat(parentElement.style.left); - var parentWidth = parseFloat(parentElement.style.width); - _dom_utils.CustomStyle.setProp('transformOrigin', this.container, -(parentLeft + parentWidth) + 'px -' + parentElement.style.top); - this.container.style.left = parentLeft + parentWidth + 'px'; - this.container.appendChild(popup.render()); - return this.container; - } - }); - return PopupAnnotationElement; -}(); -var PopupElement = function PopupElementClosure() { - var BACKGROUND_ENLIGHT = 0.7; - function PopupElement(parameters) { - this.container = parameters.container; - this.trigger = parameters.trigger; - this.color = parameters.color; - this.title = parameters.title; - this.contents = parameters.contents; - this.hideWrapper = parameters.hideWrapper || false; - this.pinned = false; - } - PopupElement.prototype = { - render: function PopupElement_render() { - var wrapper = document.createElement('div'); - wrapper.className = 'popupWrapper'; - this.hideElement = this.hideWrapper ? wrapper : this.container; - this.hideElement.setAttribute('hidden', true); - var popup = document.createElement('div'); - popup.className = 'popup'; - var color = this.color; - if (color) { - var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; - var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; - var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; - popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0); - } - var contents = this._formatContents(this.contents); - var title = document.createElement('h1'); - title.textContent = this.title; - this.trigger.addEventListener('click', this._toggle.bind(this)); - this.trigger.addEventListener('mouseover', this._show.bind(this, false)); - this.trigger.addEventListener('mouseout', this._hide.bind(this, false)); - popup.addEventListener('click', this._hide.bind(this, true)); - popup.appendChild(title); - popup.appendChild(contents); - wrapper.appendChild(popup); - return wrapper; - }, - _formatContents: function PopupElement_formatContents(contents) { - var p = document.createElement('p'); - var lines = contents.split(/(?:\r\n?|\n)/); - for (var i = 0, ii = lines.length; i < ii; ++i) { - var line = lines[i]; - p.appendChild(document.createTextNode(line)); - if (i < ii - 1) { - p.appendChild(document.createElement('br')); - } - } - return p; - }, - _toggle: function PopupElement_toggle() { - if (this.pinned) { - this._hide(true); - } else { - this._show(true); - } - }, - _show: function PopupElement_show(pin) { - if (pin) { - this.pinned = true; - } - if (this.hideElement.hasAttribute('hidden')) { - this.hideElement.removeAttribute('hidden'); - this.container.style.zIndex += 1; - } - }, - _hide: function PopupElement_hide(unpin) { - if (unpin) { - this.pinned = false; - } - if (!this.hideElement.hasAttribute('hidden') && !this.pinned) { - this.hideElement.setAttribute('hidden', true); - this.container.style.zIndex -= 1; - } - } - }; - return PopupElement; -}(); -var LineAnnotationElement = function LineAnnotationElementClosure() { - var SVG_NS = 'http://www.w3.org/2000/svg'; - function LineAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable, true); - } - _util.Util.inherit(LineAnnotationElement, AnnotationElement, { - render: function LineAnnotationElement_render() { - this.container.className = 'lineAnnotation'; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var 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); - var 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'); - svg.appendChild(line); - this.container.append(svg); - this._createPopup(this.container, line, this.data); - return this.container; - } - }); - return LineAnnotationElement; -}(); -var HighlightAnnotationElement = function HighlightAnnotationElementClosure() { - function HighlightAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable, true); - } - _util.Util.inherit(HighlightAnnotationElement, AnnotationElement, { - render: function HighlightAnnotationElement_render() { - this.container.className = 'highlightAnnotation'; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - return this.container; - } - }); - return HighlightAnnotationElement; -}(); -var UnderlineAnnotationElement = function UnderlineAnnotationElementClosure() { - function UnderlineAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable, true); - } - _util.Util.inherit(UnderlineAnnotationElement, AnnotationElement, { - render: function UnderlineAnnotationElement_render() { - this.container.className = 'underlineAnnotation'; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - return this.container; - } - }); - return UnderlineAnnotationElement; -}(); -var SquigglyAnnotationElement = function SquigglyAnnotationElementClosure() { - function SquigglyAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable, true); - } - _util.Util.inherit(SquigglyAnnotationElement, AnnotationElement, { - render: function SquigglyAnnotationElement_render() { - this.container.className = 'squigglyAnnotation'; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - return this.container; - } - }); - return SquigglyAnnotationElement; -}(); -var StrikeOutAnnotationElement = function StrikeOutAnnotationElementClosure() { - function StrikeOutAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable, true); - } - _util.Util.inherit(StrikeOutAnnotationElement, AnnotationElement, { - render: function StrikeOutAnnotationElement_render() { - this.container.className = 'strikeoutAnnotation'; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - return this.container; - } - }); - return StrikeOutAnnotationElement; -}(); -var FileAttachmentAnnotationElement = function FileAttachmentAnnotationElementClosure() { - function FileAttachmentAnnotationElement(parameters) { - AnnotationElement.call(this, parameters, true); - var file = this.data.file; - this.filename = (0, _dom_utils.getFilenameFromUrl)(file.filename); - this.content = file.content; - this.linkService.onFileAttachmentAnnotation({ - id: (0, _util.stringToPDFString)(file.filename), - filename: file.filename, - content: file.content - }); - } - _util.Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, { - render: function FileAttachmentAnnotationElement_render() { - this.container.className = 'fileAttachmentAnnotation'; - var trigger = document.createElement('div'); - trigger.style.height = this.container.style.height; - trigger.style.width = this.container.style.width; - trigger.addEventListener('dblclick', this._download.bind(this)); - if (!this.data.hasPopup && (this.data.title || this.data.contents)) { - this._createPopup(this.container, trigger, this.data); - } - this.container.appendChild(trigger); - return this.container; - }, - _download: function FileAttachmentAnnotationElement_download() { - if (!this.downloadManager) { - (0, _util.warn)('Download cannot be started due to unavailable download manager'); - return; - } - this.downloadManager.downloadData(this.content, this.filename, ''); - } - }); - return FileAttachmentAnnotationElement; -}(); -var AnnotationLayer = function AnnotationLayerClosure() { - return { - render: function AnnotationLayer_render(parameters) { - var annotationElementFactory = new AnnotationElementFactory(); - for (var i = 0, ii = parameters.annotations.length; i < ii; i++) { - var data = parameters.annotations[i]; - if (!data) { - continue; - } - var element = annotationElementFactory.create({ - data: data, - layer: parameters.div, - page: parameters.page, - viewport: parameters.viewport, - linkService: parameters.linkService, - downloadManager: parameters.downloadManager, - imageResourcesPath: parameters.imageResourcesPath || (0, _dom_utils.getDefaultSetting)('imageResourcesPath'), - renderInteractiveForms: parameters.renderInteractiveForms || false - }); - if (element.isRenderable) { - parameters.div.appendChild(element.render()); - } - } - }, - update: function AnnotationLayer_update(parameters) { - for (var i = 0, ii = parameters.annotations.length; i < ii; i++) { - var data = parameters.annotations[i]; - var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]'); - if (element) { - _dom_utils.CustomStyle.setProp('transform', element, 'matrix(' + parameters.viewport.transform.join(',') + ')'); - } - } - parameters.div.removeAttribute('hidden'); - } - }; -}(); -exports.AnnotationLayer = AnnotationLayer; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SVGGraphics = undefined; - -var _util = __w_pdfjs_require__(0); - -var SVGGraphics = function SVGGraphics() { - throw new Error('Not implemented: SVGGraphics'); -}; -{ - var SVG_DEFAULTS = { - fontStyle: 'normal', - fontWeight: 'normal', - fillColor: '#000000' - }; - var convertImgDataToPng = function convertImgDataToPngClosure() { - var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); - var CHUNK_WRAPPER_SIZE = 12; - var crcTable = new Int32Array(256); - for (var i = 0; i < 256; i++) { - var c = i; - for (var h = 0; h < 8; h++) { - if (c & 1) { - c = 0xedB88320 ^ c >> 1 & 0x7fffffff; - } else { - c = c >> 1 & 0x7fffffff; - } - } - crcTable[i] = c; - } - function crc32(data, start, end) { - var crc = -1; - for (var i = start; i < end; i++) { - var a = (crc ^ data[i]) & 0xff; - var b = crcTable[a]; - crc = crc >>> 8 ^ b; - } - return crc ^ -1; - } - function writePngChunk(type, body, data, offset) { - var p = offset; - var len = body.length; - data[p] = len >> 24 & 0xff; - data[p + 1] = len >> 16 & 0xff; - data[p + 2] = len >> 8 & 0xff; - data[p + 3] = len & 0xff; - p += 4; - data[p] = type.charCodeAt(0) & 0xff; - data[p + 1] = type.charCodeAt(1) & 0xff; - data[p + 2] = type.charCodeAt(2) & 0xff; - data[p + 3] = type.charCodeAt(3) & 0xff; - p += 4; - data.set(body, p); - p += body.length; - var crc = crc32(data, offset + 4, p); - data[p] = crc >> 24 & 0xff; - data[p + 1] = crc >> 16 & 0xff; - data[p + 2] = crc >> 8 & 0xff; - data[p + 3] = crc & 0xff; - } - function adler32(data, start, end) { - var a = 1; - var b = 0; - for (var i = start; i < end; ++i) { - a = (a + (data[i] & 0xff)) % 65521; - b = (b + a) % 65521; - } - return b << 16 | a; - } - function deflateSync(literals) { - if (!(0, _util.isNodeJS)()) { - return deflateSyncUncompressed(literals); - } - try { - var input; - if (parseInt(process.versions.node) >= 8) { - input = literals; - } else { - input = new Buffer(literals); - } - var output = require('zlib').deflateSync(input, { level: 9 }); - return output instanceof Uint8Array ? output : new Uint8Array(output); - } catch (e) { - (0, _util.warn)('Not compressing PNG because zlib.deflateSync is unavailable: ' + e); - } - return deflateSyncUncompressed(literals); - } - function deflateSyncUncompressed(literals) { - var len = literals.length; - var maxBlockLength = 0xFFFF; - var deflateBlocks = Math.ceil(len / maxBlockLength); - var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); - var pi = 0; - idat[pi++] = 0x78; - idat[pi++] = 0x9c; - var pos = 0; - while (len > maxBlockLength) { - idat[pi++] = 0x00; - idat[pi++] = 0xff; - idat[pi++] = 0xff; - idat[pi++] = 0x00; - idat[pi++] = 0x00; - idat.set(literals.subarray(pos, pos + maxBlockLength), pi); - pi += maxBlockLength; - pos += maxBlockLength; - len -= maxBlockLength; - } - idat[pi++] = 0x01; - idat[pi++] = len & 0xff; - idat[pi++] = len >> 8 & 0xff; - idat[pi++] = ~len & 0xffff & 0xff; - idat[pi++] = (~len & 0xffff) >> 8 & 0xff; - idat.set(literals.subarray(pos), pi); - pi += literals.length - pos; - var adler = adler32(literals, 0, literals.length); - idat[pi++] = adler >> 24 & 0xff; - idat[pi++] = adler >> 16 & 0xff; - idat[pi++] = adler >> 8 & 0xff; - idat[pi++] = adler & 0xff; - return idat; - } - function encode(imgData, kind, forceDataSchema) { - var width = imgData.width; - var height = imgData.height; - var bitDepth, colorType, lineSize; - var bytes = imgData.data; - switch (kind) { - case _util.ImageKind.GRAYSCALE_1BPP: - colorType = 0; - bitDepth = 1; - lineSize = width + 7 >> 3; - break; - case _util.ImageKind.RGB_24BPP: - colorType = 2; - bitDepth = 8; - lineSize = width * 3; - break; - case _util.ImageKind.RGBA_32BPP: - colorType = 6; - bitDepth = 8; - lineSize = width * 4; - break; - default: - throw new Error('invalid format'); - } - var literals = new Uint8Array((1 + lineSize) * height); - var offsetLiterals = 0, - offsetBytes = 0; - var y, i; - for (y = 0; y < height; ++y) { - literals[offsetLiterals++] = 0; - literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); - offsetBytes += lineSize; - offsetLiterals += lineSize; - } - if (kind === _util.ImageKind.GRAYSCALE_1BPP) { - offsetLiterals = 0; - for (y = 0; y < height; y++) { - offsetLiterals++; - for (i = 0; i < lineSize; i++) { - literals[offsetLiterals++] ^= 0xFF; - } - } - } - var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); - var idat = deflateSync(literals); - var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; - var data = new Uint8Array(pngLength); - var offset = 0; - data.set(PNG_HEADER, offset); - offset += PNG_HEADER.length; - writePngChunk('IHDR', ihdr, data, offset); - offset += CHUNK_WRAPPER_SIZE + ihdr.length; - writePngChunk('IDATA', idat, data, offset); - offset += CHUNK_WRAPPER_SIZE + idat.length; - writePngChunk('IEND', new Uint8Array(0), data, offset); - return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema); - } - return function convertImgDataToPng(imgData, forceDataSchema) { - var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; - return encode(imgData, kind, forceDataSchema); - }; - }(); - var SVGExtraState = function SVGExtraStateClosure() { - function SVGExtraState() { - this.fontSizeScale = 1; - this.fontWeight = SVG_DEFAULTS.fontWeight; - this.fontSize = 0; - this.textMatrix = _util.IDENTITY_MATRIX; - this.fontMatrix = _util.FONT_IDENTITY_MATRIX; - this.leading = 0; - this.x = 0; - this.y = 0; - this.lineX = 0; - this.lineY = 0; - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRise = 0; - this.fillColor = SVG_DEFAULTS.fillColor; - this.strokeColor = '#000000'; - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.lineJoin = ''; - this.lineCap = ''; - this.miterLimit = 0; - this.dashArray = []; - this.dashPhase = 0; - this.dependencies = []; - this.activeClipUrl = null; - this.clipGroup = null; - this.maskId = ''; - } - SVGExtraState.prototype = { - clone: function SVGExtraState_clone() { - return Object.create(this); - }, - setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) { - this.x = x; - this.y = y; - } - }; - return SVGExtraState; - }(); - exports.SVGGraphics = SVGGraphics = function SVGGraphicsClosure() { - function opListToTree(opList) { - var opTree = []; - var tmp = []; - var opListLen = opList.length; - for (var x = 0; x < opListLen; x++) { - if (opList[x].fn === 'save') { - opTree.push({ - 'fnId': 92, - 'fn': 'group', - 'items': [] - }); - tmp.push(opTree); - opTree = opTree[opTree.length - 1].items; - continue; - } - if (opList[x].fn === 'restore') { - opTree = tmp.pop(); - } else { - opTree.push(opList[x]); - } - } - return opTree; - } - function pf(value) { - if (value === (value | 0)) { - return value.toString(); - } - var s = value.toFixed(10); - var i = s.length - 1; - if (s[i] !== '0') { - return s; - } - do { - i--; - } while (s[i] === '0'); - return s.substr(0, s[i] === '.' ? i : i + 1); - } - function pm(m) { - if (m[4] === 0 && m[5] === 0) { - if (m[1] === 0 && m[2] === 0) { - if (m[0] === 1 && m[3] === 1) { - return ''; - } - return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')'; - } - if (m[0] === m[3] && m[1] === -m[2]) { - var a = Math.acos(m[0]) * 180 / Math.PI; - return 'rotate(' + pf(a) + ')'; - } - } else { - if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { - return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')'; - } - } - return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')'; - } - function SVGGraphics(commonObjs, objs, forceDataSchema) { - this.current = new SVGExtraState(); - this.transformMatrix = _util.IDENTITY_MATRIX; - this.transformStack = []; - this.extraStack = []; - this.commonObjs = commonObjs; - this.objs = objs; - this.pendingClip = null; - this.pendingEOFill = false; - this.embedFonts = false; - this.embeddedFonts = Object.create(null); - this.cssStyle = null; - this.forceDataSchema = !!forceDataSchema; - } - var NS = 'http://www.w3.org/2000/svg'; - var XML_NS = 'http://www.w3.org/XML/1998/namespace'; - var XLINK_NS = 'http://www.w3.org/1999/xlink'; - var LINE_CAP_STYLES = ['butt', 'round', 'square']; - var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; - var clipCount = 0; - var maskCount = 0; - SVGGraphics.prototype = { - save: function SVGGraphics_save() { - this.transformStack.push(this.transformMatrix); - var old = this.current; - this.extraStack.push(old); - this.current = old.clone(); - }, - restore: function SVGGraphics_restore() { - this.transformMatrix = this.transformStack.pop(); - this.current = this.extraStack.pop(); - this.pendingClip = null; - this.tgrp = null; - }, - group: function SVGGraphics_group(items) { - this.save(); - this.executeOpTree(items); - this.restore(); - }, - loadDependencies: function SVGGraphics_loadDependencies(operatorList) { - var _this = this; - - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var argsArray = operatorList.argsArray; - for (var i = 0; i < fnArrayLen; i++) { - if (_util.OPS.dependency === fnArray[i]) { - var deps = argsArray[i]; - for (var n = 0, nn = deps.length; n < nn; n++) { - var obj = deps[n]; - var common = obj.substring(0, 2) === 'g_'; - var promise; - if (common) { - promise = new Promise(function (resolve) { - _this.commonObjs.get(obj, resolve); - }); - } else { - promise = new Promise(function (resolve) { - _this.objs.get(obj, resolve); - }); - } - this.current.dependencies.push(promise); - } - } - } - return Promise.all(this.current.dependencies); - }, - transform: function SVGGraphics_transform(a, b, c, d, e, f) { - var transformMatrix = [a, b, c, d, e, f]; - this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); - this.tgrp = null; - }, - getSVG: function SVGGraphics_getSVG(operatorList, viewport) { - var _this2 = this; - - this.viewport = viewport; - var svgElement = this._initialize(viewport); - return this.loadDependencies(operatorList).then(function () { - _this2.transformMatrix = _util.IDENTITY_MATRIX; - var opTree = _this2.convertOpList(operatorList); - _this2.executeOpTree(opTree); - return svgElement; - }); - }, - convertOpList: function SVGGraphics_convertOpList(operatorList) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var REVOPS = []; - var opList = []; - for (var op in _util.OPS) { - REVOPS[_util.OPS[op]] = op; - } - for (var x = 0; x < fnArrayLen; x++) { - var fnId = fnArray[x]; - opList.push({ - 'fnId': fnId, - 'fn': REVOPS[fnId], - 'args': argsArray[x] - }); - } - return opListToTree(opList); - }, - executeOpTree: function SVGGraphics_executeOpTree(opTree) { - var opTreeLen = opTree.length; - for (var x = 0; x < opTreeLen; x++) { - var fn = opTree[x].fn; - var fnId = opTree[x].fnId; - var args = opTree[x].args; - switch (fnId | 0) { - case _util.OPS.beginText: - this.beginText(); - break; - case _util.OPS.setLeading: - this.setLeading(args); - break; - case _util.OPS.setLeadingMoveText: - this.setLeadingMoveText(args[0], args[1]); - break; - case _util.OPS.setFont: - this.setFont(args); - break; - case _util.OPS.showText: - this.showText(args[0]); - break; - case _util.OPS.showSpacedText: - this.showText(args[0]); - break; - case _util.OPS.endText: - this.endText(); - break; - case _util.OPS.moveText: - this.moveText(args[0], args[1]); - break; - case _util.OPS.setCharSpacing: - this.setCharSpacing(args[0]); - break; - case _util.OPS.setWordSpacing: - this.setWordSpacing(args[0]); - break; - case _util.OPS.setHScale: - this.setHScale(args[0]); - break; - case _util.OPS.setTextMatrix: - this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - case _util.OPS.setLineWidth: - this.setLineWidth(args[0]); - break; - case _util.OPS.setLineJoin: - this.setLineJoin(args[0]); - break; - case _util.OPS.setLineCap: - this.setLineCap(args[0]); - break; - case _util.OPS.setMiterLimit: - this.setMiterLimit(args[0]); - break; - case _util.OPS.setFillRGBColor: - this.setFillRGBColor(args[0], args[1], args[2]); - break; - case _util.OPS.setStrokeRGBColor: - this.setStrokeRGBColor(args[0], args[1], args[2]); - break; - case _util.OPS.setDash: - this.setDash(args[0], args[1]); - break; - case _util.OPS.setGState: - this.setGState(args[0]); - break; - case _util.OPS.fill: - this.fill(); - break; - case _util.OPS.eoFill: - this.eoFill(); - break; - case _util.OPS.stroke: - this.stroke(); - break; - case _util.OPS.fillStroke: - this.fillStroke(); - break; - case _util.OPS.eoFillStroke: - this.eoFillStroke(); - break; - case _util.OPS.clip: - this.clip('nonzero'); - break; - case _util.OPS.eoClip: - this.clip('evenodd'); - break; - case _util.OPS.paintSolidColorImageMask: - this.paintSolidColorImageMask(); - break; - case _util.OPS.paintJpegXObject: - this.paintJpegXObject(args[0], args[1], args[2]); - break; - case _util.OPS.paintImageXObject: - this.paintImageXObject(args[0]); - break; - case _util.OPS.paintInlineImageXObject: - this.paintInlineImageXObject(args[0]); - break; - case _util.OPS.paintImageMaskXObject: - this.paintImageMaskXObject(args[0]); - break; - case _util.OPS.paintFormXObjectBegin: - this.paintFormXObjectBegin(args[0], args[1]); - break; - case _util.OPS.paintFormXObjectEnd: - this.paintFormXObjectEnd(); - break; - case _util.OPS.closePath: - this.closePath(); - break; - case _util.OPS.closeStroke: - this.closeStroke(); - break; - case _util.OPS.closeFillStroke: - this.closeFillStroke(); - break; - case _util.OPS.nextLine: - this.nextLine(); - break; - case _util.OPS.transform: - this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - case _util.OPS.constructPath: - this.constructPath(args[0], args[1]); - break; - case _util.OPS.endPath: - this.endPath(); - break; - case 92: - this.group(opTree[x].items); - break; - default: - (0, _util.warn)('Unimplemented operator ' + fn); - break; - } - } - }, - setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) { - this.current.wordSpacing = wordSpacing; - }, - setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) { - this.current.charSpacing = charSpacing; - }, - nextLine: function SVGGraphics_nextLine() { - this.moveText(0, this.current.leading); - }, - setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) { - var current = this.current; - this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f]; - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.txtElement = document.createElementNS(NS, 'svg:text'); - current.txtElement.appendChild(current.tspan); - }, - beginText: function SVGGraphics_beginText() { - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - this.current.textMatrix = _util.IDENTITY_MATRIX; - this.current.lineMatrix = _util.IDENTITY_MATRIX; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.txtElement = document.createElementNS(NS, 'svg:text'); - this.current.txtgrp = document.createElementNS(NS, 'svg:g'); - this.current.xcoords = []; - }, - moveText: function SVGGraphics_moveText(x, y) { - var current = this.current; - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - }, - showText: function SVGGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - if (fontSize === 0) { - return; - } - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var x = 0, - i; - for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; - if (glyph === null) { - x += fontDirection * wordSpacing; - continue; - } else if ((0, _util.isNum)(glyph)) { - x += -glyph * fontSize * 0.001; - continue; - } - current.xcoords.push(current.x + x * textHScale); - var width = glyph.width; - var character = glyph.fontChar; - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var charWidth = width * widthAdvanceScale + spacing * fontDirection; - x += charWidth; - current.tspan.textContent += character; - } - if (vertical) { - current.y -= x * textHScale; - } else { - current.x += x * textHScale; - } - current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' ')); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { - current.tspan.setAttributeNS(null, 'font-style', current.fontStyle); - } - if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { - current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight); - } - if (current.fillColor !== SVG_DEFAULTS.fillColor) { - current.tspan.setAttributeNS(null, 'fill', current.fillColor); - } - current.txtElement.setAttributeNS(null, 'transform', pm(current.textMatrix) + ' scale(1, -1)'); - current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); - current.txtElement.appendChild(current.tspan); - current.txtgrp.appendChild(current.txtElement); - this._ensureTransformGroup().appendChild(current.txtElement); - }, - setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - }, - addFontStyle: function SVGGraphics_addFontStyle(fontObj) { - if (!this.cssStyle) { - this.cssStyle = document.createElementNS(NS, 'svg:style'); - this.cssStyle.setAttributeNS(null, 'type', 'text/css'); - this.defs.appendChild(this.cssStyle); - } - var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema); - this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n'; - }, - setFont: function SVGGraphics_setFont(details) { - var current = this.current; - var fontObj = this.commonObjs.get(details[0]); - var size = details[1]; - this.current.font = fontObj; - if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) { - this.addFontStyle(fontObj); - this.embeddedFonts[fontObj.loadedName] = fontObj; - } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; - var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal'; - var italic = fontObj.italic ? 'italic' : 'normal'; - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - current.fontSize = size; - current.fontFamily = fontObj.loadedName; - current.fontWeight = bold; - current.fontStyle = italic; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.xcoords = []; - }, - endText: function SVGGraphics_endText() {}, - setLineWidth: function SVGGraphics_setLineWidth(width) { - this.current.lineWidth = width; - }, - setLineCap: function SVGGraphics_setLineCap(style) { - this.current.lineCap = LINE_CAP_STYLES[style]; - }, - setLineJoin: function SVGGraphics_setLineJoin(style) { - this.current.lineJoin = LINE_JOIN_STYLES[style]; - }, - setMiterLimit: function SVGGraphics_setMiterLimit(limit) { - this.current.miterLimit = limit; - }, - setStrokeAlpha: function SVGGraphics_setStrokeAlpha(strokeAlpha) { - this.current.strokeAlpha = strokeAlpha; - }, - setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); - this.current.strokeColor = color; - }, - setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) { - this.current.fillAlpha = fillAlpha; - }, - setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); - this.current.fillColor = color; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.xcoords = []; - }, - setDash: function SVGGraphics_setDash(dashArray, dashPhase) { - this.current.dashArray = dashArray; - this.current.dashPhase = dashPhase; - }, - constructPath: function SVGGraphics_constructPath(ops, args) { - var current = this.current; - var x = current.x, - y = current.y; - current.path = document.createElementNS(NS, 'svg:path'); - var d = []; - var opLength = ops.length; - for (var i = 0, j = 0; i < opLength; i++) { - switch (ops[i] | 0) { - case _util.OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - var xw = x + width; - var yh = y + height; - d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z'); - break; - case _util.OPS.moveTo: - x = args[j++]; - y = args[j++]; - d.push('M', pf(x), pf(y)); - break; - case _util.OPS.lineTo: - x = args[j++]; - y = args[j++]; - d.push('L', pf(x), pf(y)); - break; - case _util.OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); - j += 6; - break; - case _util.OPS.curveTo2: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); - j += 4; - break; - case _util.OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); - j += 4; - break; - case _util.OPS.closePath: - d.push('Z'); - break; - } - } - current.path.setAttributeNS(null, 'd', d.join(' ')); - current.path.setAttributeNS(null, 'fill', 'none'); - this._ensureTransformGroup().appendChild(current.path); - current.element = current.path; - current.setCurrentPoint(x, y); - }, - endPath: function SVGGraphics_endPath() { - if (!this.pendingClip) { - return; - } - var current = this.current; - var clipId = 'clippath' + clipCount; - clipCount++; - var clipPath = document.createElementNS(NS, 'svg:clipPath'); - clipPath.setAttributeNS(null, 'id', clipId); - clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - var clipElement = current.element.cloneNode(); - if (this.pendingClip === 'evenodd') { - clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); - } else { - clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); - } - this.pendingClip = null; - clipPath.appendChild(clipElement); - this.defs.appendChild(clipPath); - if (current.activeClipUrl) { - current.clipGroup = null; - this.extraStack.forEach(function (prev) { - prev.clipGroup = null; - }); - } - current.activeClipUrl = 'url(#' + clipId + ')'; - this.tgrp = null; - }, - clip: function SVGGraphics_clip(type) { - this.pendingClip = type; - }, - closePath: function SVGGraphics_closePath() { - var current = this.current; - var d = current.path.getAttributeNS(null, 'd'); - d += 'Z'; - current.path.setAttributeNS(null, 'd', d); - }, - setLeading: function SVGGraphics_setLeading(leading) { - this.current.leading = -leading; - }, - setTextRise: function SVGGraphics_setTextRise(textRise) { - this.current.textRise = textRise; - }, - setHScale: function SVGGraphics_setHScale(scale) { - this.current.textHScale = scale / 100; - }, - setGState: function SVGGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; - switch (key) { - case 'LW': - this.setLineWidth(value); - break; - case 'LC': - this.setLineCap(value); - break; - case 'LJ': - this.setLineJoin(value); - break; - case 'ML': - this.setMiterLimit(value); - break; - case 'D': - this.setDash(value[0], value[1]); - break; - case 'Font': - this.setFont(value); - break; - case 'CA': - this.setStrokeAlpha(value); - break; - case 'ca': - this.setFillAlpha(value); - break; - default: - (0, _util.warn)('Unimplemented graphic state ' + key); - break; - } - } - }, - fill: function SVGGraphics_fill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha); - }, - stroke: function SVGGraphics_stroke() { - var current = this.current; - current.element.setAttributeNS(null, 'stroke', current.strokeColor); - current.element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha); - current.element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit)); - current.element.setAttributeNS(null, 'stroke-linecap', current.lineCap); - current.element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); - current.element.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px'); - current.element.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' ')); - current.element.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px'); - current.element.setAttributeNS(null, 'fill', 'none'); - }, - eoFill: function SVGGraphics_eoFill() { - this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - this.fill(); - }, - fillStroke: function SVGGraphics_fillStroke() { - this.stroke(); - this.fill(); - }, - eoFillStroke: function SVGGraphics_eoFillStroke() { - this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - this.fillStroke(); - }, - closeStroke: function SVGGraphics_closeStroke() { - this.closePath(); - this.stroke(); - }, - closeFillStroke: function SVGGraphics_closeFillStroke() { - this.closePath(); - this.fillStroke(); - }, - paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() { - var current = this.current; - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', '1px'); - rect.setAttributeNS(null, 'height', '1px'); - rect.setAttributeNS(null, 'fill', current.fillColor); - this._ensureTransformGroup().appendChild(rect); - }, - paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) { - var imgObj = this.objs.get(objId); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); - imgEl.setAttributeNS(null, 'width', pf(w)); - imgEl.setAttributeNS(null, 'height', pf(h)); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-h)); - imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')'); - this._ensureTransformGroup().appendChild(imgEl); - }, - paintImageXObject: function SVGGraphics_paintImageXObject(objId) { - var imgData = this.objs.get(objId); - if (!imgData) { - (0, _util.warn)('Dependent image isn\'t ready yet'); - return; - } - this.paintInlineImageXObject(imgData); - }, - paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) { - var width = imgData.width; - var height = imgData.height; - var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema); - var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', '0'); - cliprect.setAttributeNS(null, 'y', '0'); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); - this.current.element = cliprect; - this.clip('nonzero'); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-height)); - imgEl.setAttributeNS(null, 'width', pf(width) + 'px'); - imgEl.setAttributeNS(null, 'height', pf(height) + 'px'); - imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')'); - if (mask) { - mask.appendChild(imgEl); - } else { - this._ensureTransformGroup().appendChild(imgEl); - } - }, - paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) { - var current = this.current; - var width = imgData.width; - var height = imgData.height; - var fillColor = current.fillColor; - current.maskId = 'mask' + maskCount++; - var mask = document.createElementNS(NS, 'svg:mask'); - mask.setAttributeNS(null, 'id', current.maskId); - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', pf(width)); - rect.setAttributeNS(null, 'height', pf(height)); - rect.setAttributeNS(null, 'fill', fillColor); - rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')'); - this.defs.appendChild(mask); - this._ensureTransformGroup().appendChild(rect); - this.paintInlineImageXObject(imgData, mask); - }, - paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) { - if ((0, _util.isArray)(matrix) && matrix.length === 6) { - this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); - } - if ((0, _util.isArray)(bbox) && bbox.length === 4) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', bbox[0]); - cliprect.setAttributeNS(null, 'y', bbox[1]); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); - this.current.element = cliprect; - this.clip('nonzero'); - this.endPath(); - } - }, - paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {}, - _initialize: function SVGGraphics_initialize(viewport) { - var svg = document.createElementNS(NS, 'svg:svg'); - svg.setAttributeNS(null, 'version', '1.1'); - svg.setAttributeNS(null, 'width', viewport.width + 'px'); - svg.setAttributeNS(null, 'height', viewport.height + 'px'); - svg.setAttributeNS(null, 'preserveAspectRatio', 'none'); - svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width + ' ' + viewport.height); - var definitions = document.createElementNS(NS, 'svg:defs'); - svg.appendChild(definitions); - this.defs = definitions; - var rootGroup = document.createElementNS(NS, 'svg:g'); - rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform)); - svg.appendChild(rootGroup); - this.svg = rootGroup; - return svg; - }, - _ensureClipGroup: function SVGGraphics_ensureClipGroup() { - if (!this.current.clipGroup) { - var clipGroup = document.createElementNS(NS, 'svg:g'); - clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl); - this.svg.appendChild(clipGroup); - this.current.clipGroup = clipGroup; - } - return this.current.clipGroup; - }, - _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() { - if (!this.tgrp) { - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - if (this.current.activeClipUrl) { - this._ensureClipGroup().appendChild(this.tgrp); - } else { - this.svg.appendChild(this.tgrp); - } - } - return this.tgrp; - } - }; - return SVGGraphics; - }(); -} -exports.SVGGraphics = SVGGraphics; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.renderTextLayer = undefined; - -var _util = __w_pdfjs_require__(0); - -var _dom_utils = __w_pdfjs_require__(1); - -var renderTextLayer = function renderTextLayerClosure() { - var MAX_TEXT_DIVS_TO_RENDER = 100000; - var NonWhitespaceRegexp = /\S/; - function isAllWhitespace(str) { - return !NonWhitespaceRegexp.test(str); - } - var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0, 'px; font-family: ', '', ';']; - function appendText(task, geom, styles) { - var textDiv = document.createElement('div'); - var textDivProperties = { - style: null, - angle: 0, - canvasWidth: 0, - isWhitespace: false, - originalTransform: null, - paddingBottom: 0, - paddingLeft: 0, - paddingRight: 0, - paddingTop: 0, - scale: 1 - }; - task._textDivs.push(textDiv); - if (isAllWhitespace(geom.str)) { - textDivProperties.isWhitespace = true; - task._textDivProperties.set(textDiv, textDivProperties); - return; - } - var tx = _util.Util.transform(task._viewport.transform, geom.transform); - var angle = Math.atan2(tx[1], tx[0]); - var style = styles[geom.fontName]; - if (style.vertical) { - angle += Math.PI / 2; - } - var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]); - var fontAscent = fontHeight; - if (style.ascent) { - fontAscent = style.ascent * fontAscent; - } else if (style.descent) { - fontAscent = (1 + style.descent) * fontAscent; - } - var left; - var top; - if (angle === 0) { - left = tx[4]; - top = tx[5] - fontAscent; - } else { - left = tx[4] + fontAscent * Math.sin(angle); - top = tx[5] - fontAscent * Math.cos(angle); - } - styleBuf[1] = left; - styleBuf[3] = top; - styleBuf[5] = fontHeight; - styleBuf[7] = style.fontFamily; - textDivProperties.style = styleBuf.join(''); - textDiv.setAttribute('style', textDivProperties.style); - textDiv.textContent = geom.str; - if ((0, _dom_utils.getDefaultSetting)('pdfBug')) { - textDiv.dataset.fontName = geom.fontName; - } - if (angle !== 0) { - textDivProperties.angle = angle * (180 / Math.PI); - } - if (geom.str.length > 1) { - if (style.vertical) { - textDivProperties.canvasWidth = geom.height * task._viewport.scale; - } else { - textDivProperties.canvasWidth = geom.width * task._viewport.scale; - } - } - task._textDivProperties.set(textDiv, textDivProperties); - if (task._textContentStream) { - task._layoutText(textDiv); - } - if (task._enhanceTextSelection) { - var angleCos = 1, - angleSin = 0; - if (angle !== 0) { - angleCos = Math.cos(angle); - angleSin = Math.sin(angle); - } - var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; - var divHeight = fontHeight; - var m, b; - if (angle !== 0) { - m = [angleCos, angleSin, -angleSin, angleCos, left, top]; - b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); - } else { - b = [left, top, left + divWidth, top + divHeight]; - } - task._bounds.push({ - left: b[0], - top: b[1], - right: b[2], - bottom: b[3], - div: textDiv, - size: [divWidth, divHeight], - m: m - }); - } - } - function render(task) { - if (task._canceled) { - return; - } - var textDivs = task._textDivs; - var capability = task._capability; - var textDivsLength = textDivs.length; - if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { - task._renderingDone = true; - capability.resolve(); - return; - } - if (!task._textContentStream) { - for (var i = 0; i < textDivsLength; i++) { - task._layoutText(textDivs[i]); - } - } - task._renderingDone = true; - capability.resolve(); - } - function expand(task) { - var bounds = task._bounds; - var viewport = task._viewport; - var expanded = expandBounds(viewport.width, viewport.height, bounds); - for (var i = 0; i < expanded.length; i++) { - var div = bounds[i].div; - var divProperties = task._textDivProperties.get(div); - if (divProperties.angle === 0) { - divProperties.paddingLeft = bounds[i].left - expanded[i].left; - divProperties.paddingTop = bounds[i].top - expanded[i].top; - divProperties.paddingRight = expanded[i].right - bounds[i].right; - divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; - task._textDivProperties.set(div, divProperties); - continue; - } - var e = expanded[i], - b = bounds[i]; - var m = b.m, - c = m[0], - s = m[1]; - var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; - var ts = new Float64Array(64); - points.forEach(function (p, i) { - var t = _util.Util.applyTransform(p, m); - ts[i + 0] = c && (e.left - t[0]) / c; - ts[i + 4] = s && (e.top - t[1]) / s; - ts[i + 8] = c && (e.right - t[0]) / c; - ts[i + 12] = s && (e.bottom - t[1]) / s; - ts[i + 16] = s && (e.left - t[0]) / -s; - ts[i + 20] = c && (e.top - t[1]) / c; - ts[i + 24] = s && (e.right - t[0]) / -s; - ts[i + 28] = c && (e.bottom - t[1]) / c; - ts[i + 32] = c && (e.left - t[0]) / -c; - ts[i + 36] = s && (e.top - t[1]) / -s; - ts[i + 40] = c && (e.right - t[0]) / -c; - ts[i + 44] = s && (e.bottom - t[1]) / -s; - ts[i + 48] = s && (e.left - t[0]) / s; - ts[i + 52] = c && (e.top - t[1]) / -c; - ts[i + 56] = s && (e.right - t[0]) / s; - ts[i + 60] = c && (e.bottom - t[1]) / -c; - }); - var findPositiveMin = function findPositiveMin(ts, offset, count) { - var result = 0; - for (var i = 0; i < count; i++) { - var t = ts[offset++]; - if (t > 0) { - result = result ? Math.min(t, result) : t; - } - } - return result; - }; - var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); - divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; - divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; - divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; - divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; - task._textDivProperties.set(div, divProperties); - } - } - function expandBounds(width, height, boxes) { - var bounds = boxes.map(function (box, i) { - return { - x1: box.left, - y1: box.top, - x2: box.right, - y2: box.bottom, - index: i, - x1New: undefined, - x2New: undefined - }; - }); - expandBoundsLTR(width, bounds); - var expanded = new Array(boxes.length); - bounds.forEach(function (b) { - var i = b.index; - expanded[i] = { - left: b.x1New, - top: 0, - right: b.x2New, - bottom: 0 - }; - }); - boxes.map(function (box, i) { - var e = expanded[i], - b = bounds[i]; - b.x1 = box.top; - b.y1 = width - e.right; - b.x2 = box.bottom; - b.y2 = width - e.left; - b.index = i; - b.x1New = undefined; - b.x2New = undefined; - }); - expandBoundsLTR(height, bounds); - bounds.forEach(function (b) { - var i = b.index; - expanded[i].top = b.x1New; - expanded[i].bottom = b.x2New; - }); - return expanded; - } - function expandBoundsLTR(width, bounds) { - bounds.sort(function (a, b) { - return a.x1 - b.x1 || a.index - b.index; - }); - var fakeBoundary = { - x1: -Infinity, - y1: -Infinity, - x2: 0, - y2: Infinity, - index: -1, - x1New: 0, - x2New: 0 - }; - var horizon = [{ - start: -Infinity, - end: Infinity, - boundary: fakeBoundary - }]; - bounds.forEach(function (boundary) { - var i = 0; - while (i < horizon.length && horizon[i].end <= boundary.y1) { - i++; - } - var j = horizon.length - 1; - while (j >= 0 && horizon[j].start >= boundary.y2) { - j--; - } - var horizonPart, affectedBoundary; - var q, - k, - maxXNew = -Infinity; - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - var xNew; - if (affectedBoundary.x2 > boundary.x1) { - xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; - } else if (affectedBoundary.x2New === undefined) { - xNew = (affectedBoundary.x2 + boundary.x1) / 2; - } else { - xNew = affectedBoundary.x2New; - } - if (xNew > maxXNew) { - maxXNew = xNew; - } - } - boundary.x1New = maxXNew; - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - if (affectedBoundary.x2New === undefined) { - if (affectedBoundary.x2 > boundary.x1) { - if (affectedBoundary.index > boundary.index) { - affectedBoundary.x2New = affectedBoundary.x2; - } - } else { - affectedBoundary.x2New = maxXNew; - } - } else if (affectedBoundary.x2New > maxXNew) { - affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); - } - } - var changedHorizon = [], - lastBoundary = null; - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; - if (lastBoundary === useBoundary) { - changedHorizon[changedHorizon.length - 1].end = horizonPart.end; - } else { - changedHorizon.push({ - start: horizonPart.start, - end: horizonPart.end, - boundary: useBoundary - }); - lastBoundary = useBoundary; - } - } - if (horizon[i].start < boundary.y1) { - changedHorizon[0].start = boundary.y1; - changedHorizon.unshift({ - start: horizon[i].start, - end: boundary.y1, - boundary: horizon[i].boundary - }); - } - if (boundary.y2 < horizon[j].end) { - changedHorizon[changedHorizon.length - 1].end = boundary.y2; - changedHorizon.push({ - start: boundary.y2, - end: horizon[j].end, - boundary: horizon[j].boundary - }); - } - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - if (affectedBoundary.x2New !== undefined) { - continue; - } - var used = false; - for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { - used = horizon[k].boundary === affectedBoundary; - } - for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { - used = horizon[k].boundary === affectedBoundary; - } - for (k = 0; !used && k < changedHorizon.length; k++) { - used = changedHorizon[k].boundary === affectedBoundary; - } - if (!used) { - affectedBoundary.x2New = maxXNew; - } - } - Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon)); - }); - horizon.forEach(function (horizonPart) { - var affectedBoundary = horizonPart.boundary; - if (affectedBoundary.x2New === undefined) { - affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); - } - }); - } - function TextLayerRenderTask(_ref) { - var textContent = _ref.textContent, - textContentStream = _ref.textContentStream, - container = _ref.container, - viewport = _ref.viewport, - textDivs = _ref.textDivs, - textContentItemsStr = _ref.textContentItemsStr, - enhanceTextSelection = _ref.enhanceTextSelection; - - this._textContent = textContent; - this._textContentStream = textContentStream; - this._container = container; - this._viewport = viewport; - this._textDivs = textDivs || []; - this._textContentItemsStr = textContentItemsStr || []; - this._enhanceTextSelection = !!enhanceTextSelection; - this._reader = null; - this._layoutTextLastFontSize = null; - this._layoutTextLastFontFamily = null; - this._layoutTextCtx = null; - this._textDivProperties = new WeakMap(); - this._renderingDone = false; - this._canceled = false; - this._capability = (0, _util.createPromiseCapability)(); - this._renderTimer = null; - this._bounds = []; - } - TextLayerRenderTask.prototype = { - get promise() { - return this._capability.promise; - }, - cancel: function TextLayer_cancel() { - if (this._reader) { - this._reader.cancel(new _util.AbortException('text layer task cancelled')); - this._reader = null; - } - this._canceled = true; - if (this._renderTimer !== null) { - clearTimeout(this._renderTimer); - this._renderTimer = null; - } - this._capability.reject('canceled'); - }, - _processItems: function _processItems(items, styleCache) { - for (var i = 0, len = items.length; i < len; i++) { - this._textContentItemsStr.push(items[i].str); - appendText(this, items[i], styleCache); - } - }, - _layoutText: function _layoutText(textDiv) { - var textLayerFrag = this._container; - var textDivProperties = this._textDivProperties.get(textDiv); - if (textDivProperties.isWhitespace) { - return; - } - var fontSize = textDiv.style.fontSize; - var fontFamily = textDiv.style.fontFamily; - if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) { - this._layoutTextCtx.font = fontSize + ' ' + fontFamily; - this._lastFontSize = fontSize; - this._lastFontFamily = fontFamily; - } - var width = this._layoutTextCtx.measureText(textDiv.textContent).width; - var transform = ''; - if (textDivProperties.canvasWidth !== 0 && width > 0) { - textDivProperties.scale = textDivProperties.canvasWidth / width; - transform = 'scaleX(' + textDivProperties.scale + ')'; - } - if (textDivProperties.angle !== 0) { - transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform; - } - if (transform !== '') { - textDivProperties.originalTransform = transform; - _dom_utils.CustomStyle.setProp('transform', textDiv, transform); - } - this._textDivProperties.set(textDiv, textDivProperties); - textLayerFrag.appendChild(textDiv); - }, - - _render: function TextLayer_render(timeout) { - var _this = this; - - var capability = (0, _util.createPromiseCapability)(); - var styleCache = Object.create(null); - var canvas = document.createElement('canvas'); - canvas.mozOpaque = true; - this._layoutTextCtx = canvas.getContext('2d', { alpha: false }); - if (this._textContent) { - var textItems = this._textContent.items; - var textStyles = this._textContent.styles; - this._processItems(textItems, textStyles); - capability.resolve(); - } else if (this._textContentStream) { - var pump = function pump() { - _this._reader.read().then(function (_ref2) { - var value = _ref2.value, - done = _ref2.done; - - if (done) { - capability.resolve(); - return; - } - _util.Util.extendObj(styleCache, value.styles); - _this._processItems(value.items, styleCache); - pump(); - }, capability.reject); - }; - this._reader = this._textContentStream.getReader(); - pump(); - } else { - throw new Error('Neither "textContent" nor "textContentStream"' + ' parameters specified.'); - } - capability.promise.then(function () { - styleCache = null; - if (!timeout) { - render(_this); - } else { - _this._renderTimer = setTimeout(function () { - render(_this); - _this._renderTimer = null; - }, timeout); - } - }, this._capability.reject); - }, - expandTextDivs: function TextLayer_expandTextDivs(expandDivs) { - if (!this._enhanceTextSelection || !this._renderingDone) { - return; - } - if (this._bounds !== null) { - expand(this); - this._bounds = null; - } - for (var i = 0, ii = this._textDivs.length; i < ii; i++) { - var div = this._textDivs[i]; - var divProperties = this._textDivProperties.get(div); - if (divProperties.isWhitespace) { - continue; - } - if (expandDivs) { - var transform = '', - padding = ''; - if (divProperties.scale !== 1) { - transform = 'scaleX(' + divProperties.scale + ')'; - } - if (divProperties.angle !== 0) { - transform = 'rotate(' + divProperties.angle + 'deg) ' + transform; - } - if (divProperties.paddingLeft !== 0) { - padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;'; - transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)'; - } - if (divProperties.paddingTop !== 0) { - padding += ' padding-top: ' + divProperties.paddingTop + 'px;'; - transform += ' translateY(' + -divProperties.paddingTop + 'px)'; - } - if (divProperties.paddingRight !== 0) { - padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;'; - } - if (divProperties.paddingBottom !== 0) { - padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;'; - } - if (padding !== '') { - div.setAttribute('style', divProperties.style + padding); - } - if (transform !== '') { - _dom_utils.CustomStyle.setProp('transform', div, transform); - } - } else { - div.style.padding = 0; - _dom_utils.CustomStyle.setProp('transform', div, divProperties.originalTransform || ''); - } - } - } - }; - function renderTextLayer(renderParameters) { - var task = new TextLayerRenderTask({ - textContent: renderParameters.textContent, - textContentStream: renderParameters.textContentStream, - container: renderParameters.container, - viewport: renderParameters.viewport, - textDivs: renderParameters.textDivs, - textContentItemsStr: renderParameters.textContentItemsStr, - enhanceTextSelection: renderParameters.enhanceTextSelection - }); - task._render(renderParameters.timeout); - return task; - } - return renderTextLayer; -}(); -exports.renderTextLayer = renderTextLayer; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -function fixMetadata(meta) { - return meta.replace(/>\\376\\377([^<]+)/g, function (all, codes) { - var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) { - return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1); - }); - var chars = ''; - for (var i = 0; i < bytes.length; i += 2) { - var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1); - chars += code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38 ? String.fromCharCode(code) : '&#x' + (0x10000 + code).toString(16).substring(1) + ';'; - } - return '>' + chars; - }); -} -function Metadata(meta) { - if (typeof meta === 'string') { - meta = fixMetadata(meta); - var parser = new DOMParser(); - meta = parser.parseFromString(meta, 'application/xml'); - } else if (!(meta instanceof Document)) { - throw new Error('Metadata: Invalid metadata object'); - } - this.metaDocument = meta; - this.metadata = Object.create(null); - this.parse(); -} -Metadata.prototype = { - parse: function Metadata_parse() { - var doc = this.metaDocument; - var rdf = doc.documentElement; - if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { - rdf = rdf.firstChild; - while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') { - rdf = rdf.nextSibling; - } - } - var nodeName = rdf ? rdf.nodeName.toLowerCase() : null; - if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) { - return; - } - var children = rdf.childNodes, - desc, - entry, - name, - i, - ii, - length, - iLength; - for (i = 0, length = children.length; i < length; i++) { - desc = children[i]; - if (desc.nodeName.toLowerCase() !== 'rdf:description') { - continue; - } - for (ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) { - if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text') { - entry = desc.childNodes[ii]; - name = entry.nodeName.toLowerCase(); - this.metadata[name] = entry.textContent.trim(); - } - } - } - }, - get: function Metadata_get(name) { - return this.metadata[name] || null; - }, - has: function Metadata_has(name) { - return typeof this.metadata[name] !== 'undefined'; - } -}; -exports.Metadata = Metadata; +exports.BaseSVGFactory = BaseSVGFactory; /***/ }), /* 7 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -Object.defineProperty(exports, "__esModule", { + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.WebGLUtils = undefined; +})); +exports.FontLoader = exports.FontFaceObject = void 0; -var _dom_utils = __w_pdfjs_require__(1); +var _util = __w_pdfjs_require__(1); -var _util = __w_pdfjs_require__(0); +class BaseFontLoader { + constructor({ + docId, + onUnsupportedFeature, + ownerDocument = globalThis.document, + styleElement = null + }) { + if (this.constructor === BaseFontLoader) { + (0, _util.unreachable)("Cannot initialize BaseFontLoader."); + } -var WebGLUtils = function WebGLUtilsClosure() { - function loadShader(gl, code, shaderType) { - var shader = gl.createShader(shaderType); - gl.shaderSource(shader, code); - gl.compileShader(shader); - var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); - if (!compiled) { - var errorMsg = gl.getShaderInfoLog(shader); - throw new Error('Error during shader compilation: ' + errorMsg); + this.docId = docId; + this._onUnsupportedFeature = onUnsupportedFeature; + this._document = ownerDocument; + this.nativeFontFaces = []; + this.styleElement = null; + } + + addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.push(nativeFontFace); + + this._document.fonts.add(nativeFontFace); + } + + insertRule(rule) { + let styleElement = this.styleElement; + + if (!styleElement) { + styleElement = this.styleElement = this._document.createElement("style"); + styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`; + + this._document.documentElement.getElementsByTagName("head")[0].appendChild(styleElement); } - return shader; + + const styleSheet = styleElement.sheet; + styleSheet.insertRule(rule, styleSheet.cssRules.length); } - function createVertexShader(gl, code) { - return loadShader(gl, code, gl.VERTEX_SHADER); - } - function createFragmentShader(gl, code) { - return loadShader(gl, code, gl.FRAGMENT_SHADER); - } - function createProgram(gl, shaders) { - var program = gl.createProgram(); - for (var i = 0, ii = shaders.length; i < ii; ++i) { - gl.attachShader(program, shaders[i]); + + clear() { + for (const nativeFontFace of this.nativeFontFaces) { + this._document.fonts.delete(nativeFontFace); } - gl.linkProgram(program); - var linked = gl.getProgramParameter(program, gl.LINK_STATUS); - if (!linked) { - var errorMsg = gl.getProgramInfoLog(program); - throw new Error('Error during program linking: ' + errorMsg); + + this.nativeFontFaces.length = 0; + + if (this.styleElement) { + this.styleElement.remove(); + this.styleElement = null; } - return program; } - function createTexture(gl, image, textureId) { - gl.activeTexture(textureId); - var texture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); - return texture; - } - var currentGL, currentCanvas; - function generateGL() { - if (currentGL) { + + async bind(font) { + if (font.attached || font.missingFile) { return; } - currentCanvas = document.createElement('canvas'); - currentGL = currentCanvas.getContext('webgl', { premultipliedalpha: false }); - } - var smaskVertexShaderCode = '\ - attribute vec2 a_position; \ - attribute vec2 a_texCoord; \ - \ - uniform vec2 u_resolution; \ - \ - varying vec2 v_texCoord; \ - \ - void main() { \ - vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \ - gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ - \ - v_texCoord = a_texCoord; \ - } '; - var smaskFragmentShaderCode = '\ - precision mediump float; \ - \ - uniform vec4 u_backdrop; \ - uniform int u_subtype; \ - uniform sampler2D u_image; \ - uniform sampler2D u_mask; \ - \ - varying vec2 v_texCoord; \ - \ - void main() { \ - vec4 imageColor = texture2D(u_image, v_texCoord); \ - vec4 maskColor = texture2D(u_mask, v_texCoord); \ - if (u_backdrop.a > 0.0) { \ - maskColor.rgb = maskColor.rgb * maskColor.a + \ - u_backdrop.rgb * (1.0 - maskColor.a); \ - } \ - float lum; \ - if (u_subtype == 0) { \ - lum = maskColor.a; \ - } else { \ - lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \ - maskColor.b * 0.11; \ - } \ - imageColor.a *= lum; \ - imageColor.rgb *= imageColor.a; \ - gl_FragColor = imageColor; \ - } '; - var smaskCache = null; - function initSmaskGL() { - var canvas, gl; - generateGL(); - canvas = currentCanvas; - currentCanvas = null; - gl = currentGL; - currentGL = null; - var vertexShader = createVertexShader(gl, smaskVertexShaderCode); - var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); - gl.useProgram(program); - var cache = {}; - cache.gl = gl; - cache.canvas = canvas; - cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution'); - cache.positionLocation = gl.getAttribLocation(program, 'a_position'); - cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop'); - cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype'); - var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord'); - var texLayerLocation = gl.getUniformLocation(program, 'u_image'); - var texMaskLocation = gl.getUniformLocation(program, 'u_mask'); - var texCoordBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW); - gl.enableVertexAttribArray(texCoordLocation); - gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0); - gl.uniform1i(texLayerLocation, 0); - gl.uniform1i(texMaskLocation, 1); - smaskCache = cache; - } - function composeSMask(layer, mask, properties) { - var width = layer.width, - height = layer.height; - if (!smaskCache) { - initSmaskGL(); - } - var cache = smaskCache, - canvas = cache.canvas, - gl = cache.gl; - canvas.width = width; - canvas.height = height; - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); - gl.uniform2f(cache.resolutionLocation, width, height); - if (properties.backdrop) { - gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1); - } else { - gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0); - } - gl.uniform1i(cache.subtypeLocation, properties.subtype === 'Luminosity' ? 1 : 0); - var texture = createTexture(gl, layer, gl.TEXTURE0); - var maskTexture = createTexture(gl, mask, gl.TEXTURE1); - var buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, buffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.positionLocation); - gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); - gl.clearColor(0, 0, 0, 0); - gl.enable(gl.BLEND); - gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - gl.clear(gl.COLOR_BUFFER_BIT); - gl.drawArrays(gl.TRIANGLES, 0, 6); - gl.flush(); - gl.deleteTexture(texture); - gl.deleteTexture(maskTexture); - gl.deleteBuffer(buffer); - return canvas; - } - var figuresVertexShaderCode = '\ - attribute vec2 a_position; \ - attribute vec3 a_color; \ - \ - uniform vec2 u_resolution; \ - uniform vec2 u_scale; \ - uniform vec2 u_offset; \ - \ - varying vec4 v_color; \ - \ - void main() { \ - vec2 position = (a_position + u_offset) * u_scale; \ - vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \ - gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ - \ - v_color = vec4(a_color / 255.0, 1.0); \ - } '; - var figuresFragmentShaderCode = '\ - precision mediump float; \ - \ - varying vec4 v_color; \ - \ - void main() { \ - gl_FragColor = v_color; \ - } '; - var figuresCache = null; - function initFiguresGL() { - var canvas, gl; - generateGL(); - canvas = currentCanvas; - currentCanvas = null; - gl = currentGL; - currentGL = null; - var vertexShader = createVertexShader(gl, figuresVertexShaderCode); - var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); - gl.useProgram(program); - var cache = {}; - cache.gl = gl; - cache.canvas = canvas; - cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution'); - cache.scaleLocation = gl.getUniformLocation(program, 'u_scale'); - cache.offsetLocation = gl.getUniformLocation(program, 'u_offset'); - cache.positionLocation = gl.getAttribLocation(program, 'a_position'); - cache.colorLocation = gl.getAttribLocation(program, 'a_color'); - figuresCache = cache; - } - function drawFigures(width, height, backgroundColor, figures, context) { - if (!figuresCache) { - initFiguresGL(); - } - var cache = figuresCache, - canvas = cache.canvas, - gl = cache.gl; - canvas.width = width; - canvas.height = height; - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); - gl.uniform2f(cache.resolutionLocation, width, height); - var count = 0; - var i, ii, rows; - for (i = 0, ii = figures.length; i < ii; i++) { - switch (figures[i].type) { - case 'lattice': - rows = figures[i].coords.length / figures[i].verticesPerRow | 0; - count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6; - break; - case 'triangles': - count += figures[i].coords.length; - break; + + font.attached = true; + + if (this.isFontLoadingAPISupported) { + const nativeFontFace = font.createNativeFontFace(); + + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + + try { + await nativeFontFace.loaded; + } catch (ex) { + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative + }); + + (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`); + font.disableFontFace = true; + throw ex; + } } + + return; } - var coords = new Float32Array(count * 2); - var colors = new Uint8Array(count * 3); - var coordsMap = context.coords, - colorsMap = context.colors; - var pIndex = 0, - cIndex = 0; - for (i = 0, ii = figures.length; i < ii; i++) { - var figure = figures[i], - ps = figure.coords, - cs = figure.colors; - switch (figure.type) { - case 'lattice': - var cols = figure.verticesPerRow; - rows = ps.length / cols | 0; - for (var row = 1; row < rows; row++) { - var offset = row * cols + 1; - for (var col = 1; col < cols; col++, offset++) { - coords[pIndex] = coordsMap[ps[offset - cols - 1]]; - coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1]; - coords[pIndex + 2] = coordsMap[ps[offset - cols]]; - coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1]; - coords[pIndex + 4] = coordsMap[ps[offset - 1]]; - coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1]; - colors[cIndex] = colorsMap[cs[offset - cols - 1]]; - colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1]; - colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2]; - colors[cIndex + 3] = colorsMap[cs[offset - cols]]; - colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1]; - colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2]; - colors[cIndex + 6] = colorsMap[cs[offset - 1]]; - colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1]; - colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2]; - coords[pIndex + 6] = coords[pIndex + 2]; - coords[pIndex + 7] = coords[pIndex + 3]; - coords[pIndex + 8] = coords[pIndex + 4]; - coords[pIndex + 9] = coords[pIndex + 5]; - coords[pIndex + 10] = coordsMap[ps[offset]]; - coords[pIndex + 11] = coordsMap[ps[offset] + 1]; - colors[cIndex + 9] = colors[cIndex + 3]; - colors[cIndex + 10] = colors[cIndex + 4]; - colors[cIndex + 11] = colors[cIndex + 5]; - colors[cIndex + 12] = colors[cIndex + 6]; - colors[cIndex + 13] = colors[cIndex + 7]; - colors[cIndex + 14] = colors[cIndex + 8]; - colors[cIndex + 15] = colorsMap[cs[offset]]; - colors[cIndex + 16] = colorsMap[cs[offset] + 1]; - colors[cIndex + 17] = colorsMap[cs[offset] + 2]; - pIndex += 12; - cIndex += 18; - } - } - break; - case 'triangles': - for (var j = 0, jj = ps.length; j < jj; j++) { - coords[pIndex] = coordsMap[ps[j]]; - coords[pIndex + 1] = coordsMap[ps[j] + 1]; - colors[cIndex] = colorsMap[cs[j]]; - colors[cIndex + 1] = colorsMap[cs[j] + 1]; - colors[cIndex + 2] = colorsMap[cs[j] + 2]; - pIndex += 2; - cIndex += 3; - } - break; + + const rule = font.createFontFaceRule(); + + if (rule) { + this.insertRule(rule); + + if (this.isSyncFontLoadingSupported) { + return; } + + await new Promise(resolve => { + const request = this._queueLoadingCallback(resolve); + + this._prepareFontLoadEvent([rule], [font], request); + }); } - if (backgroundColor) { - gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0); - } else { - gl.clearColor(0, 0, 0, 0); - } - gl.clear(gl.COLOR_BUFFER_BIT); - var coordsBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer); - gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.positionLocation); - gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); - var colorsBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer); - gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.colorLocation); - gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0); - gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY); - gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY); - gl.drawArrays(gl.TRIANGLES, 0, count); - gl.flush(); - gl.deleteBuffer(coordsBuffer); - gl.deleteBuffer(colorsBuffer); - return canvas; } - function cleanup() { - if (smaskCache && smaskCache.canvas) { - smaskCache.canvas.width = 0; - smaskCache.canvas.height = 0; - } - if (figuresCache && figuresCache.canvas) { - figuresCache.canvas.width = 0; - figuresCache.canvas.height = 0; - } - smaskCache = null; - figuresCache = null; + + _queueLoadingCallback(callback) { + (0, _util.unreachable)("Abstract method `_queueLoadingCallback`."); } - return { - get isEnabled() { - if ((0, _dom_utils.getDefaultSetting)('disableWebGL')) { - return false; + + get isFontLoadingAPISupported() { + const hasFonts = !!this._document?.fonts; + return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts); + } + + get isSyncFontLoadingSupported() { + (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`."); + } + + get _loadTestFont() { + (0, _util.unreachable)("Abstract method `_loadTestFont`."); + } + + _prepareFontLoadEvent(rules, fontsToLoad, request) { + (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`."); + } + +} + +let FontLoader; +exports.FontLoader = FontLoader; +{ + exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader { + constructor(params) { + super(params); + this.loadingContext = { + requests: [], + nextRequestId: 0 + }; + this.loadTestFontId = 0; + } + + get isSyncFontLoadingSupported() { + let supported = false; + + if (typeof navigator === "undefined") { + supported = true; + } else { + const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); + + if (m?.[1] >= 14) { + supported = true; + } } - var enabled = false; - try { - generateGL(); - enabled = !!currentGL; - } catch (e) {} - return (0, _util.shadow)(this, 'isEnabled', enabled); - }, - composeSMask: composeSMask, - drawFigures: drawFigures, - clear: cleanup + + return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported); + } + + _queueLoadingCallback(callback) { + function completeRequest() { + (0, _util.assert)(!request.done, "completeRequest() cannot be called twice."); + request.done = true; + + while (context.requests.length > 0 && context.requests[0].done) { + const otherRequest = context.requests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + + const context = this.loadingContext; + const request = { + id: `pdfjs-font-loading-${context.nextRequestId++}`, + done: false, + complete: completeRequest, + callback + }; + context.requests.push(request); + return request; + } + + get _loadTestFont() { + const getLoadTestFont = function () { + return atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="); + }; + + return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont()); + } + + _prepareFontLoadEvent(rules, fonts, request) { + function int32(data, offset) { + return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; + } + + function spliceString(s, offset, remove, insert) { + const chunk1 = s.substring(0, offset); + const chunk2 = s.substring(offset + remove); + return chunk1 + insert + chunk2; + } + + let i, ii; + + const canvas = this._document.createElement("canvas"); + + canvas.width = 1; + canvas.height = 1; + const ctx = canvas.getContext("2d"); + let called = 0; + + function isFontReady(name, callback) { + called++; + + if (called > 30) { + (0, _util.warn)("Load test font never loaded."); + callback(); + return; + } + + ctx.font = "30px " + name; + ctx.fillText(".", 0, 20); + const imageData = ctx.getImageData(0, 0, 1, 1); + + if (imageData.data[3] > 0) { + callback(); + return; + } + + setTimeout(isFontReady.bind(null, name, callback)); + } + + const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`; + let data = this._loadTestFont; + const COMMENT_OFFSET = 976; + data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); + const CFF_CHECKSUM_OFFSET = 16; + const XXXX_VALUE = 0x58585858; + let checksum = int32(data, CFF_CHECKSUM_OFFSET); + + for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; + } + + if (i < loadTestFontId.length) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0; + } + + data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); + const url = `url(data:font/opentype;base64,${btoa(data)});`; + const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`; + this.insertRule(rule); + const names = []; + + for (const font of fonts) { + names.push(font.loadedName); + } + + names.push(loadTestFontId); + + const div = this._document.createElement("div"); + + div.style.visibility = "hidden"; + div.style.width = div.style.height = "10px"; + div.style.position = "absolute"; + div.style.top = div.style.left = "0px"; + + for (const name of names) { + const span = this._document.createElement("span"); + + span.textContent = "Hi"; + span.style.fontFamily = name; + div.appendChild(span); + } + + this._document.body.appendChild(div); + + isFontReady(loadTestFontId, () => { + div.remove(); + request.complete(); + }); + } + }; -}(); -exports.WebGLUtils = WebGLUtils; +} + +class FontFaceObject { + constructor(translatedData, { + isEvalSupported = true, + disableFontFace = false, + ignoreErrors = false, + onUnsupportedFeature, + fontRegistry = null + }) { + this.compiledGlyphs = Object.create(null); + + for (const i in translatedData) { + this[i] = translatedData[i]; + } + + this.isEvalSupported = isEvalSupported !== false; + this.disableFontFace = disableFontFace === true; + this.ignoreErrors = ignoreErrors === true; + this._onUnsupportedFeature = onUnsupportedFeature; + this.fontRegistry = fontRegistry; + } + + createNativeFontFace() { + if (!this.data || this.disableFontFace) { + return null; + } + + let nativeFontFace; + + if (!this.cssFontInfo) { + nativeFontFace = new FontFace(this.loadedName, this.data, {}); + } else { + const css = { + weight: this.cssFontInfo.fontWeight + }; + + if (this.cssFontInfo.italicAngle) { + css.style = `oblique ${this.cssFontInfo.italicAngle}deg`; + } + + nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css); + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this); + } + + return nativeFontFace; + } + + createFontFaceRule() { + if (!this.data || this.disableFontFace) { + return null; + } + + const data = (0, _util.bytesToString)(this.data); + const url = `url(data:${this.mimetype};base64,${btoa(data)});`; + let rule; + + if (!this.cssFontInfo) { + rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`; + } else { + let css = `font-weight: ${this.cssFontInfo.fontWeight};`; + + if (this.cssFontInfo.italicAngle) { + css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`; + } + + rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`; + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this, url); + } + + return rule; + } + + getPathGenerator(objs, character) { + if (this.compiledGlyphs[character] !== undefined) { + return this.compiledGlyphs[character]; + } + + let cmds; + + try { + cmds = objs.get(this.loadedName + "_path_" + character); + } catch (ex) { + if (!this.ignoreErrors) { + throw ex; + } + + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath + }); + + (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`); + return this.compiledGlyphs[character] = function (c, size) {}; + } + + if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) { + const jsBuf = []; + + for (const current of cmds) { + const args = current.args !== undefined ? current.args.join(",") : ""; + jsBuf.push("c.", current.cmd, "(", args, ");\n"); + } + + return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join("")); + } + + return this.compiledGlyphs[character] = function (c, size) { + for (const current of cmds) { + if (current.cmd === "scale") { + current.args = [size, -size]; + } + + c[current.cmd].apply(c, current.args); + } + }; + } + +} + +exports.FontFaceObject = FontFaceObject; /***/ }), /* 8 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -Object.defineProperty(exports, "__esModule", { + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.PDFJS = exports.isWorker = exports.globalScope = undefined; +})); +exports.AnnotationStorage = void 0; -var _api = __w_pdfjs_require__(2); +var _murmurhash = __w_pdfjs_require__(9); -var _dom_utils = __w_pdfjs_require__(1); +var _util = __w_pdfjs_require__(1); -var _util = __w_pdfjs_require__(0); - -var _annotation_layer = __w_pdfjs_require__(3); - -var _metadata = __w_pdfjs_require__(6); - -var _text_layer = __w_pdfjs_require__(5); - -var _svg = __w_pdfjs_require__(4); - -var isWorker = typeof window === 'undefined'; -if (!_util.globalScope.PDFJS) { - _util.globalScope.PDFJS = {}; -} -var PDFJS = _util.globalScope.PDFJS; -{ - PDFJS.version = '1.9.426'; - PDFJS.build = '2558a58d'; -} -PDFJS.pdfBug = false; -if (PDFJS.verbosity !== undefined) { - (0, _util.setVerbosityLevel)(PDFJS.verbosity); -} -delete PDFJS.verbosity; -Object.defineProperty(PDFJS, 'verbosity', { - get: function get() { - return (0, _util.getVerbosityLevel)(); - }, - set: function set(level) { - (0, _util.setVerbosityLevel)(level); - }, - - enumerable: true, - configurable: true -}); -PDFJS.VERBOSITY_LEVELS = _util.VERBOSITY_LEVELS; -PDFJS.OPS = _util.OPS; -PDFJS.UNSUPPORTED_FEATURES = _util.UNSUPPORTED_FEATURES; -PDFJS.isValidUrl = _dom_utils.isValidUrl; -PDFJS.shadow = _util.shadow; -PDFJS.createBlob = _util.createBlob; -PDFJS.createObjectURL = function PDFJS_createObjectURL(data, contentType) { - return (0, _util.createObjectURL)(data, contentType, PDFJS.disableCreateObjectURL); -}; -Object.defineProperty(PDFJS, 'isLittleEndian', { - configurable: true, - get: function PDFJS_isLittleEndian() { - return (0, _util.shadow)(PDFJS, 'isLittleEndian', (0, _util.isLittleEndian)()); +class AnnotationStorage { + constructor() { + this._storage = new Map(); + this._modified = false; + this.onSetModified = null; + this.onResetModified = null; } -}); -PDFJS.removeNullCharacters = _util.removeNullCharacters; -PDFJS.PasswordResponses = _util.PasswordResponses; -PDFJS.PasswordException = _util.PasswordException; -PDFJS.UnknownErrorException = _util.UnknownErrorException; -PDFJS.InvalidPDFException = _util.InvalidPDFException; -PDFJS.MissingPDFException = _util.MissingPDFException; -PDFJS.UnexpectedResponseException = _util.UnexpectedResponseException; -PDFJS.Util = _util.Util; -PDFJS.PageViewport = _util.PageViewport; -PDFJS.createPromiseCapability = _util.createPromiseCapability; -PDFJS.maxImageSize = PDFJS.maxImageSize === undefined ? -1 : PDFJS.maxImageSize; -PDFJS.cMapUrl = PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl; -PDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked; -PDFJS.disableFontFace = PDFJS.disableFontFace === undefined ? false : PDFJS.disableFontFace; -PDFJS.imageResourcesPath = PDFJS.imageResourcesPath === undefined ? '' : PDFJS.imageResourcesPath; -PDFJS.disableWorker = PDFJS.disableWorker === undefined ? false : PDFJS.disableWorker; -PDFJS.workerSrc = PDFJS.workerSrc === undefined ? null : PDFJS.workerSrc; -PDFJS.workerPort = PDFJS.workerPort === undefined ? null : PDFJS.workerPort; -PDFJS.disableRange = PDFJS.disableRange === undefined ? false : PDFJS.disableRange; -PDFJS.disableStream = PDFJS.disableStream === undefined ? false : PDFJS.disableStream; -PDFJS.disableAutoFetch = PDFJS.disableAutoFetch === undefined ? false : PDFJS.disableAutoFetch; -PDFJS.pdfBug = PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug; -PDFJS.postMessageTransfers = PDFJS.postMessageTransfers === undefined ? true : PDFJS.postMessageTransfers; -PDFJS.disableCreateObjectURL = PDFJS.disableCreateObjectURL === undefined ? false : PDFJS.disableCreateObjectURL; -PDFJS.disableWebGL = PDFJS.disableWebGL === undefined ? true : PDFJS.disableWebGL; -PDFJS.externalLinkTarget = PDFJS.externalLinkTarget === undefined ? _dom_utils.LinkTarget.NONE : PDFJS.externalLinkTarget; -PDFJS.externalLinkRel = PDFJS.externalLinkRel === undefined ? _dom_utils.DEFAULT_LINK_REL : PDFJS.externalLinkRel; -PDFJS.isEvalSupported = PDFJS.isEvalSupported === undefined ? true : PDFJS.isEvalSupported; -PDFJS.pdfjsNext = PDFJS.pdfjsNext === undefined ? false : PDFJS.pdfjsNext; -{ - var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow; - delete PDFJS.openExternalLinksInNewWindow; - Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', { - get: function get() { - return PDFJS.externalLinkTarget === _dom_utils.LinkTarget.BLANK; - }, - set: function set(value) { - if (value) { - (0, _util.deprecated)('PDFJS.openExternalLinksInNewWindow, please use ' + '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.'); - } - if (PDFJS.externalLinkTarget !== _dom_utils.LinkTarget.NONE) { - (0, _util.warn)('PDFJS.externalLinkTarget is already initialized'); - return; - } - PDFJS.externalLinkTarget = value ? _dom_utils.LinkTarget.BLANK : _dom_utils.LinkTarget.NONE; - }, - enumerable: true, - configurable: true - }); - if (savedOpenExternalLinksInNewWindow) { - PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow; + getValue(key, defaultValue) { + const value = this._storage.get(key); + + if (value === undefined) { + return defaultValue; + } + + return Object.assign(defaultValue, value); } + + getRawValue(key) { + return this._storage.get(key); + } + + setValue(key, value) { + const obj = this._storage.get(key); + + let modified = false; + + if (obj !== undefined) { + for (const [entry, val] of Object.entries(value)) { + if (obj[entry] !== val) { + modified = true; + obj[entry] = val; + } + } + } else { + modified = true; + + this._storage.set(key, value); + } + + if (modified) { + this._setModified(); + } + } + + getAll() { + return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null; + } + + get size() { + return this._storage.size; + } + + _setModified() { + if (!this._modified) { + this._modified = true; + + if (typeof this.onSetModified === "function") { + this.onSetModified(); + } + } + } + + resetModified() { + if (this._modified) { + this._modified = false; + + if (typeof this.onResetModified === "function") { + this.onResetModified(); + } + } + } + + get serializable() { + return this._storage.size > 0 ? this._storage : null; + } + + get hash() { + const hash = new _murmurhash.MurmurHash3_64(); + + for (const [key, value] of this._storage) { + hash.update(`${key}:${JSON.stringify(value)}`); + } + + return hash.hexdigest(); + } + } -PDFJS.getDocument = _api.getDocument; -PDFJS.LoopbackPort = _api.LoopbackPort; -PDFJS.PDFDataRangeTransport = _api.PDFDataRangeTransport; -PDFJS.PDFWorker = _api.PDFWorker; -PDFJS.hasCanvasTypedArrays = true; -PDFJS.CustomStyle = _dom_utils.CustomStyle; -PDFJS.LinkTarget = _dom_utils.LinkTarget; -PDFJS.addLinkAttributes = _dom_utils.addLinkAttributes; -PDFJS.getFilenameFromUrl = _dom_utils.getFilenameFromUrl; -PDFJS.isExternalLinkTargetSet = _dom_utils.isExternalLinkTargetSet; -PDFJS.AnnotationLayer = _annotation_layer.AnnotationLayer; -PDFJS.renderTextLayer = _text_layer.renderTextLayer; -PDFJS.Metadata = _metadata.Metadata; -PDFJS.SVGGraphics = _svg.SVGGraphics; -PDFJS.UnsupportedManager = _api._UnsupportedManager; -exports.globalScope = _util.globalScope; -exports.isWorker = isWorker; -exports.PDFJS = PDFJS; + +exports.AnnotationStorage = AnnotationStorage; /***/ }), /* 9 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -Object.defineProperty(exports, "__esModule", { + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.NetworkManager = exports.PDFNetworkStream = undefined; +})); +exports.MurmurHash3_64 = void 0; -var _util = __w_pdfjs_require__(0); +var _util = __w_pdfjs_require__(1); -var _api = __w_pdfjs_require__(2); +const SEED = 0xc3d2e1f0; +const MASK_HIGH = 0xffff0000; +const MASK_LOW = 0xffff; -; -var OK_RESPONSE = 200; -var PARTIAL_CONTENT_RESPONSE = 206; -function NetworkManager(url, args) { - this.url = url; - args = args || {}; - this.isHttp = /^https?:/i.test(url); - this.httpHeaders = this.isHttp && args.httpHeaders || {}; - this.withCredentials = args.withCredentials || false; - this.getXhr = args.getXhr || function NetworkManager_getXhr() { - return new XMLHttpRequest(); - }; - this.currXhrId = 0; - this.pendingRequests = Object.create(null); - this.loadedRequests = Object.create(null); -} -function getArrayBuffer(xhr) { - var data = xhr.response; - if (typeof data !== 'string') { - return data; +class MurmurHash3_64 { + constructor(seed) { + this.h1 = seed ? seed & 0xffffffff : SEED; + this.h2 = seed ? seed & 0xffffffff : SEED; } - var length = data.length; - var array = new Uint8Array(length); - for (var i = 0; i < length; i++) { - array[i] = data.charCodeAt(i) & 0xFF; - } - return array.buffer; -} -var supportsMozChunked = function supportsMozChunkedClosure() { - try { - var x = new XMLHttpRequest(); - x.open('GET', _util.globalScope.location.href); - x.responseType = 'moz-chunked-arraybuffer'; - return x.responseType === 'moz-chunked-arraybuffer'; - } catch (e) { - return false; - } -}(); -NetworkManager.prototype = { - requestRange: function NetworkManager_requestRange(begin, end, listeners) { - var args = { - begin: begin, - end: end - }; - for (var prop in listeners) { - args[prop] = listeners[prop]; - } - return this.request(args); - }, - requestFull: function NetworkManager_requestFull(listeners) { - return this.request(listeners); - }, - request: function NetworkManager_request(args) { - var xhr = this.getXhr(); - var xhrId = this.currXhrId++; - var pendingRequest = this.pendingRequests[xhrId] = { xhr: xhr }; - xhr.open('GET', this.url); - xhr.withCredentials = this.withCredentials; - for (var property in this.httpHeaders) { - var value = this.httpHeaders[property]; - if (typeof value === 'undefined') { - continue; + + update(input) { + let data, length; + + if (typeof input === "string") { + data = new Uint8Array(input.length * 2); + length = 0; + + for (let i = 0, ii = input.length; i < ii; i++) { + const code = input.charCodeAt(i); + + if (code <= 0xff) { + data[length++] = code; + } else { + data[length++] = code >>> 8; + data[length++] = code & 0xff; + } } - xhr.setRequestHeader(property, value); - } - if (this.isHttp && 'begin-left' in args && 'end-left' in args) { - var rangeStr = args.begin + '-' + (args.end - 1); - xhr.setRequestHeader('Range', 'bytes=' + rangeStr); - pendingRequest.expectedStatus = 206; + } else if ((0, _util.isArrayBuffer)(input)) { + data = input.slice(); + length = data.byteLength; } else { - pendingRequest.expectedStatus = 200; + throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); } - var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData; - if (useMozChunkedLoading) { - xhr.responseType = 'moz-chunked-arraybuffer'; - pendingRequest.onProgressiveData = args.onProgressiveData; - pendingRequest.mozChunked = true; - } else { - xhr.responseType = 'arraybuffer'; - } - if (args.onError) { - xhr.onerror = function (evt) { - args.onError(xhr.status); - }; - } - xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); - xhr.onprogress = this.onProgress.bind(this, xhrId); - pendingRequest.onHeadersReceived = args.onHeadersReceived; - pendingRequest.onDone = args.onDone; - pendingRequest.onError = args.onError; - pendingRequest.onProgress = args.onProgress; - xhr.send(null); - return xhrId; - }, - onProgress: function NetworkManager_onProgress(xhrId, evt) { - var pendingRequest = this.pendingRequests[xhrId]; - if (!pendingRequest) { - return; - } - if (pendingRequest.mozChunked) { - var chunk = getArrayBuffer(pendingRequest.xhr); - pendingRequest.onProgressiveData(chunk); - } - var onProgress = pendingRequest.onProgress; - if (onProgress) { - onProgress(evt); - } - }, - onStateChange: function NetworkManager_onStateChange(xhrId, evt) { - var pendingRequest = this.pendingRequests[xhrId]; - if (!pendingRequest) { - return; - } - var xhr = pendingRequest.xhr; - if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { - pendingRequest.onHeadersReceived(); - delete pendingRequest.onHeadersReceived; - } - if (xhr.readyState !== 4) { - return; - } - if (!(xhrId in this.pendingRequests)) { - return; - } - delete this.pendingRequests[xhrId]; - if (xhr.status === 0 && this.isHttp) { - if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); + + const blockCounts = length >> 2; + const tailLength = length - blockCounts * 4; + const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); + let k1 = 0, + k2 = 0; + let h1 = this.h1, + h2 = this.h2; + const C1 = 0xcc9e2d51, + C2 = 0x1b873593; + const C1_LOW = C1 & MASK_LOW, + C2_LOW = C2 & MASK_LOW; + + for (let i = 0; i < blockCounts; i++) { + if (i & 1) { + k1 = dataUint32[i]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + h1 ^= k1; + h1 = h1 << 13 | h1 >>> 19; + h1 = h1 * 5 + 0xe6546b64; + } else { + k2 = dataUint32[i]; + k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; + k2 = k2 << 15 | k2 >>> 17; + k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; + h2 ^= k2; + h2 = h2 << 13 | h2 >>> 19; + h2 = h2 * 5 + 0xe6546b64; } - return; } - var xhrStatus = xhr.status || OK_RESPONSE; - var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; - if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { - if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - return; + + k1 = 0; + + switch (tailLength) { + case 3: + k1 ^= data[blockCounts * 4 + 2] << 16; + + case 2: + k1 ^= data[blockCounts * 4 + 1] << 8; + + case 1: + k1 ^= data[blockCounts * 4]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + + if (blockCounts & 1) { + h1 ^= k1; + } else { + h2 ^= k1; + } + } - this.loadedRequests[xhrId] = true; - var chunk = getArrayBuffer(xhr); - if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { - var rangeHeader = xhr.getResponseHeader('Content-Range'); - var matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); - var begin = parseInt(matches[1], 10); - pendingRequest.onDone({ - begin: begin, - chunk: chunk - }); - } else if (pendingRequest.onProgressiveData) { - pendingRequest.onDone(null); - } else if (chunk) { - pendingRequest.onDone({ - begin: 0, - chunk: chunk - }); - } else if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - }, - hasPendingRequests: function NetworkManager_hasPendingRequests() { - for (var xhrId in this.pendingRequests) { - return true; - } - return false; - }, - getRequestXhr: function NetworkManager_getXhr(xhrId) { - return this.pendingRequests[xhrId].xhr; - }, - isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) { - return !!this.pendingRequests[xhrId].onProgressiveData; - }, - isPendingRequest: function NetworkManager_isPendingRequest(xhrId) { - return xhrId in this.pendingRequests; - }, - isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) { - return xhrId in this.loadedRequests; - }, - abortAllRequests: function NetworkManager_abortAllRequests() { - for (var xhrId in this.pendingRequests) { - this.abortRequest(xhrId | 0); - } - }, - abortRequest: function NetworkManager_abortRequest(xhrId) { - var xhr = this.pendingRequests[xhrId].xhr; - delete this.pendingRequests[xhrId]; - xhr.abort(); + + this.h1 = h1; + this.h2 = h2; } -}; -function PDFNetworkStream(options) { - this._options = options; - var source = options.source; - this._manager = new NetworkManager(source.url, { - httpHeaders: source.httpHeaders, - withCredentials: source.withCredentials - }); - this._rangeChunkSize = source.rangeChunkSize; - this._fullRequestReader = null; - this._rangeRequestReaders = []; + + hexdigest() { + let h1 = this.h1, + h2 = this.h2; + h1 ^= h2 >>> 1; + h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; + h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; + h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + const hex1 = (h1 >>> 0).toString(16), + hex2 = (h2 >>> 0).toString(16); + return hex1.padStart(8, "0") + hex2.padStart(8, "0"); + } + } -PDFNetworkStream.prototype = { - _onRangeRequestReaderClosed: function PDFNetworkStream_onRangeRequestReaderClosed(reader) { - var i = this._rangeRequestReaders.indexOf(reader); - if (i >= 0) { - this._rangeRequestReaders.splice(i, 1); - } - }, - getFullReader: function PDFNetworkStream_getFullReader() { - (0, _util.assert)(!this._fullRequestReader); - this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._options); - return this._fullRequestReader; - }, - getRangeReader: function PDFNetworkStream_getRangeReader(begin, end) { - var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); - reader.onClosed = this._onRangeRequestReaderClosed.bind(this); - this._rangeRequestReaders.push(reader); - return reader; - }, - cancelAllRequests: function PDFNetworkStream_cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - var readers = this._rangeRequestReaders.slice(0); - readers.forEach(function (reader) { - reader.cancel(reason); - }); - } -}; -function PDFNetworkStreamFullRequestReader(manager, options) { - this._manager = manager; - var source = options.source; - var args = { - onHeadersReceived: this._onHeadersReceived.bind(this), - onProgressiveData: source.disableStream ? null : this._onProgressiveData.bind(this), - onDone: this._onDone.bind(this), - onError: this._onError.bind(this), - onProgress: this._onProgress.bind(this) - }; - this._url = source.url; - this._fullRequestId = manager.requestFull(args); - this._headersReceivedCapability = (0, _util.createPromiseCapability)(); - this._disableRange = options.disableRange || false; - this._contentLength = source.length; - this._rangeChunkSize = source.rangeChunkSize; - if (!this._rangeChunkSize && !this._disableRange) { - this._disableRange = true; - } - this._isStreamingSupported = false; - this._isRangeSupported = false; - this._cachedChunks = []; - this._requests = []; - this._done = false; - this._storedError = undefined; - this.onProgress = null; -} -PDFNetworkStreamFullRequestReader.prototype = { - _validateRangeRequestCapabilities: function PDFNetworkStreamFullRequestReader_validateRangeRequestCapabilities() { - if (this._disableRange) { - return false; - } - var networkManager = this._manager; - if (!networkManager.isHttp) { - return false; - } - var fullRequestXhrId = this._fullRequestId; - var fullRequestXhr = networkManager.getRequestXhr(fullRequestXhrId); - if (fullRequestXhr.getResponseHeader('Accept-Ranges') !== 'bytes') { - return false; - } - var contentEncoding = fullRequestXhr.getResponseHeader('Content-Encoding') || 'identity'; - if (contentEncoding !== 'identity') { - return false; - } - var length = fullRequestXhr.getResponseHeader('Content-Length'); - length = parseInt(length, 10); - if (!(0, _util.isInt)(length)) { - return false; - } - this._contentLength = length; - if (length <= 2 * this._rangeChunkSize) { - return false; - } - return true; - }, - _onHeadersReceived: function PDFNetworkStreamFullRequestReader_onHeadersReceived() { - if (this._validateRangeRequestCapabilities()) { - this._isRangeSupported = true; - } - var networkManager = this._manager; - var fullRequestXhrId = this._fullRequestId; - if (networkManager.isStreamingRequest(fullRequestXhrId)) { - this._isStreamingSupported = true; - } else if (this._isRangeSupported) { - networkManager.abortRequest(fullRequestXhrId); - } - this._headersReceivedCapability.resolve(); - }, - _onProgressiveData: function PDFNetworkStreamFullRequestReader_onProgressiveData(chunk) { - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); - requestCapability.resolve({ - value: chunk, - done: false - }); - } else { - this._cachedChunks.push(chunk); - } - }, - _onDone: function PDFNetworkStreamFullRequestReader_onDone(args) { - if (args) { - this._onProgressiveData(args.chunk); - } - this._done = true; - if (this._cachedChunks.length > 0) { - return; - } - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; - }, - _onError: function PDFNetworkStreamFullRequestReader_onError(status) { - var url = this._url; - var exception; - if (status === 404 || status === 0 && /^file:/.test(url)) { - exception = new _util.MissingPDFException('Missing PDF "' + url + '".'); - } else { - exception = new _util.UnexpectedResponseException('Unexpected server response (' + status + ') while retrieving PDF "' + url + '".', status); - } - this._storedError = exception; - this._headersReceivedCapability.reject(exception); - this._requests.forEach(function (requestCapability) { - requestCapability.reject(exception); - }); - this._requests = []; - this._cachedChunks = []; - }, - _onProgress: function PDFNetworkStreamFullRequestReader_onProgress(data) { - if (this.onProgress) { - this.onProgress({ - loaded: data.loaded, - total: data.lengthComputable ? data.total : this._contentLength - }); - } - }, - get isRangeSupported() { - return this._isRangeSupported; - }, - get isStreamingSupported() { - return this._isStreamingSupported; - }, - get contentLength() { - return this._contentLength; - }, - get headersReady() { - return this._headersReceivedCapability.promise; - }, - read: function PDFNetworkStreamFullRequestReader_read() { - if (this._storedError) { - return Promise.reject(this._storedError); - } - if (this._cachedChunks.length > 0) { - var chunk = this._cachedChunks.shift(); - return Promise.resolve({ - value: chunk, - done: false - }); - } - if (this._done) { - return Promise.resolve({ - value: undefined, - done: true - }); - } - var requestCapability = (0, _util.createPromiseCapability)(); - this._requests.push(requestCapability); - return requestCapability.promise; - }, - cancel: function PDFNetworkStreamFullRequestReader_cancel(reason) { - this._done = true; - this._headersReceivedCapability.reject(reason); - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; - if (this._manager.isPendingRequest(this._fullRequestId)) { - this._manager.abortRequest(this._fullRequestId); - } - this._fullRequestReader = null; - } -}; -function PDFNetworkStreamRangeRequestReader(manager, begin, end) { - this._manager = manager; - var args = { - onDone: this._onDone.bind(this), - onProgress: this._onProgress.bind(this) - }; - this._requestId = manager.requestRange(begin, end, args); - this._requests = []; - this._queuedChunk = null; - this._done = false; - this.onProgress = null; - this.onClosed = null; -} -PDFNetworkStreamRangeRequestReader.prototype = { - _close: function PDFNetworkStreamRangeRequestReader_close() { - if (this.onClosed) { - this.onClosed(this); - } - }, - _onDone: function PDFNetworkStreamRangeRequestReader_onDone(data) { - var chunk = data.chunk; - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); - requestCapability.resolve({ - value: chunk, - done: false - }); - } else { - this._queuedChunk = chunk; - } - this._done = true; - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; - this._close(); - }, - _onProgress: function PDFNetworkStreamRangeRequestReader_onProgress(evt) { - if (!this.isStreamingSupported && this.onProgress) { - this.onProgress({ loaded: evt.loaded }); - } - }, - get isStreamingSupported() { - return false; - }, - read: function PDFNetworkStreamRangeRequestReader_read() { - if (this._queuedChunk !== null) { - var chunk = this._queuedChunk; - this._queuedChunk = null; - return Promise.resolve({ - value: chunk, - done: false - }); - } - if (this._done) { - return Promise.resolve({ - value: undefined, - done: true - }); - } - var requestCapability = (0, _util.createPromiseCapability)(); - this._requests.push(requestCapability); - return requestCapability.promise; - }, - cancel: function PDFNetworkStreamRangeRequestReader_cancel(reason) { - this._done = true; - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; - if (this._manager.isPendingRequest(this._requestId)) { - this._manager.abortRequest(this._requestId); - } - this._close(); - } -}; -(0, _api.setPDFNetworkStreamClass)(PDFNetworkStream); -exports.PDFNetworkStream = PDFNetworkStream; -exports.NetworkManager = NetworkManager; + +exports.MurmurHash3_64 = MurmurHash3_64; /***/ }), /* 10 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; -(function (e, a) { - for (var i in a) { - e[i] = a[i]; - } -})(exports, function (modules) { - var installedModules = {}; - function __w_pdfjs_require__(moduleId) { - if (installedModules[moduleId]) return installedModules[moduleId].exports; - var module = installedModules[moduleId] = { - i: moduleId, - l: false, - exports: {} - }; - modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); - module.l = true; - return module.exports; - } - __w_pdfjs_require__.m = modules; - __w_pdfjs_require__.c = installedModules; - __w_pdfjs_require__.i = function (value) { - return value; - }; - __w_pdfjs_require__.d = function (exports, name, getter) { - if (!__w_pdfjs_require__.o(exports, name)) { - Object.defineProperty(exports, name, { - configurable: false, - enumerable: true, - get: getter - }); - } - }; - __w_pdfjs_require__.n = function (module) { - var getter = module && module.__esModule ? function getDefault() { - return module['default']; - } : function getModuleExports() { - return module; - }; - __w_pdfjs_require__.d(getter, 'a', getter); - return getter; - }; - __w_pdfjs_require__.o = function (object, property) { - return Object.prototype.hasOwnProperty.call(object, property); - }; - __w_pdfjs_require__.p = ""; - return __w_pdfjs_require__(__w_pdfjs_require__.s = 7); -}([function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { - return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - }; - var _require = __w_pdfjs_require__(1), - assert = _require.assert; - function IsPropertyKey(argument) { - return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol'; - } - exports.typeIsObject = function (x) { - return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function'; - }; - exports.createDataProperty = function (o, p, v) { - assert(exports.typeIsObject(o)); - Object.defineProperty(o, p, { - value: v, - writable: true, - enumerable: true, - configurable: true - }); - }; - exports.createArrayFromList = function (elements) { - return elements.slice(); - }; - exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) { - new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset); - }; - exports.CreateIterResultObject = function (value, done) { - assert(typeof done === 'boolean'); - var obj = {}; - Object.defineProperty(obj, 'value', { - value: value, - enumerable: true, - writable: true, - configurable: true - }); - Object.defineProperty(obj, 'done', { - value: done, - enumerable: true, - writable: true, - configurable: true - }); - return obj; - }; - exports.IsFiniteNonNegativeNumber = function (v) { - if (Number.isNaN(v)) { - return false; - } - if (v === Infinity) { - return false; - } - if (v < 0) { - return false; - } - return true; - }; - function Call(F, V, args) { - if (typeof F !== 'function') { - throw new TypeError('Argument is not a function'); - } - return Function.prototype.apply.call(F, V, args); - } - exports.InvokeOrNoop = function (O, P, args) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - var method = O[P]; - if (method === undefined) { - return undefined; - } - return Call(method, O, args); - }; - exports.PromiseInvokeOrNoop = function (O, P, args) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - try { - return Promise.resolve(exports.InvokeOrNoop(O, P, args)); - } catch (returnValueE) { - return Promise.reject(returnValueE); - } - }; - exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - assert(Array.isArray(argsF)); - var method = void 0; - try { - method = O[P]; - } catch (methodE) { - return Promise.reject(methodE); - } - if (method === undefined) { - return F.apply(null, argsF); - } - try { - return Promise.resolve(Call(method, O, args)); - } catch (e) { - return Promise.reject(e); - } - }; - exports.TransferArrayBuffer = function (O) { - return O.slice(); - }; - exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) { - highWaterMark = Number(highWaterMark); - if (Number.isNaN(highWaterMark) || highWaterMark < 0) { - throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN'); - } - return highWaterMark; - }; - exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) { - if (size !== undefined && typeof size !== 'function') { - throw new TypeError('size property of a queuing strategy must be a function'); - } - highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark); - return { - size: size, - highWaterMark: highWaterMark - }; - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - function rethrowAssertionErrorRejection(e) { - if (e && e.constructor === AssertionError) { - setTimeout(function () { - throw e; - }, 0); - } - } - function AssertionError(message) { - this.name = 'AssertionError'; - this.message = message || ''; - this.stack = new Error().stack; - } - AssertionError.prototype = Object.create(Error.prototype); - AssertionError.prototype.constructor = AssertionError; - function assert(value, message) { - if (!value) { - throw new AssertionError(message); - } - } - module.exports = { - rethrowAssertionErrorRejection: rethrowAssertionErrorRejection, - AssertionError: AssertionError, - assert: assert - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - var _require = __w_pdfjs_require__(0), - InvokeOrNoop = _require.InvokeOrNoop, - PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, - ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, - typeIsObject = _require.typeIsObject; - var _require2 = __w_pdfjs_require__(1), - assert = _require2.assert, - rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection; - var _require3 = __w_pdfjs_require__(3), - DequeueValue = _require3.DequeueValue, - EnqueueValueWithSize = _require3.EnqueueValueWithSize, - PeekQueueValue = _require3.PeekQueueValue, - ResetQueue = _require3.ResetQueue; - var WritableStream = function () { - function WritableStream() { - var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - size = _ref.size, - _ref$highWaterMark = _ref.highWaterMark, - highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark; - _classCallCheck(this, WritableStream); - this._state = 'writable'; - this._storedError = undefined; - this._writer = undefined; - this._writableStreamController = undefined; - this._writeRequests = []; - this._inFlightWriteRequest = undefined; - this._closeRequest = undefined; - this._inFlightCloseRequest = undefined; - this._pendingAbortRequest = undefined; - this._backpressure = false; - var type = underlyingSink.type; - if (type !== undefined) { - throw new RangeError('Invalid type is specified'); - } - this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark); - this._writableStreamController.__startSteps(); - } - _createClass(WritableStream, [{ - key: 'abort', - value: function abort(reason) { - if (IsWritableStream(this) === false) { - return Promise.reject(streamBrandCheckException('abort')); - } - if (IsWritableStreamLocked(this) === true) { - return Promise.reject(new TypeError('Cannot abort a stream that already has a writer')); - } - return WritableStreamAbort(this, reason); - } - }, { - key: 'getWriter', - value: function getWriter() { - if (IsWritableStream(this) === false) { - throw streamBrandCheckException('getWriter'); - } - return AcquireWritableStreamDefaultWriter(this); - } - }, { - key: 'locked', - get: function get() { - if (IsWritableStream(this) === false) { - throw streamBrandCheckException('locked'); - } - return IsWritableStreamLocked(this); - } - }]); - return WritableStream; - }(); - module.exports = { - AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter, - IsWritableStream: IsWritableStream, - IsWritableStreamLocked: IsWritableStreamLocked, - WritableStream: WritableStream, - WritableStreamAbort: WritableStreamAbort, - WritableStreamDefaultControllerError: WritableStreamDefaultControllerError, - WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation, - WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease, - WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite, - WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight - }; - function AcquireWritableStreamDefaultWriter(stream) { - return new WritableStreamDefaultWriter(stream); - } - function IsWritableStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) { - return false; - } - return true; - } - function IsWritableStreamLocked(stream) { - assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams'); - if (stream._writer === undefined) { - return false; - } - return true; - } - function WritableStreamAbort(stream, reason) { - var state = stream._state; - if (state === 'closed') { - return Promise.resolve(undefined); - } - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - var error = new TypeError('Requested to abort'); - if (stream._pendingAbortRequest !== undefined) { - return Promise.reject(error); - } - assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring'); - var wasAlreadyErroring = false; - if (state === 'erroring') { - wasAlreadyErroring = true; - reason = undefined; - } - var promise = new Promise(function (resolve, reject) { - stream._pendingAbortRequest = { - _resolve: resolve, - _reject: reject, - _reason: reason, - _wasAlreadyErroring: wasAlreadyErroring - }; - }); - if (wasAlreadyErroring === false) { - WritableStreamStartErroring(stream, error); - } - return promise; - } - function WritableStreamAddWriteRequest(stream) { - assert(IsWritableStreamLocked(stream) === true); - assert(stream._state === 'writable'); - var promise = new Promise(function (resolve, reject) { - var writeRequest = { - _resolve: resolve, - _reject: reject - }; - stream._writeRequests.push(writeRequest); - }); - return promise; - } - function WritableStreamDealWithRejection(stream, error) { - var state = stream._state; - if (state === 'writable') { - WritableStreamStartErroring(stream, error); - return; - } - assert(state === 'erroring'); - WritableStreamFinishErroring(stream); - } - function WritableStreamStartErroring(stream, reason) { - assert(stream._storedError === undefined, 'stream._storedError === undefined'); - assert(stream._state === 'writable', 'state must be writable'); - var controller = stream._writableStreamController; - assert(controller !== undefined, 'controller must not be undefined'); - stream._state = 'erroring'; - stream._storedError = reason; - var writer = stream._writer; - if (writer !== undefined) { - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason); - } - if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) { - WritableStreamFinishErroring(stream); - } - } - function WritableStreamFinishErroring(stream) { - assert(stream._state === 'erroring', 'stream._state === erroring'); - assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false'); - stream._state = 'errored'; - stream._writableStreamController.__errorSteps(); - var storedError = stream._storedError; - for (var i = 0; i < stream._writeRequests.length; i++) { - var writeRequest = stream._writeRequests[i]; - writeRequest._reject(storedError); - } - stream._writeRequests = []; - if (stream._pendingAbortRequest === undefined) { - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - var abortRequest = stream._pendingAbortRequest; - stream._pendingAbortRequest = undefined; - if (abortRequest._wasAlreadyErroring === true) { - abortRequest._reject(storedError); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - var promise = stream._writableStreamController.__abortSteps(abortRequest._reason); - promise.then(function () { - abortRequest._resolve(); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }, function (reason) { - abortRequest._reject(reason); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }); - } - function WritableStreamFinishInFlightWrite(stream) { - assert(stream._inFlightWriteRequest !== undefined); - stream._inFlightWriteRequest._resolve(undefined); - stream._inFlightWriteRequest = undefined; - } - function WritableStreamFinishInFlightWriteWithError(stream, error) { - assert(stream._inFlightWriteRequest !== undefined); - stream._inFlightWriteRequest._reject(error); - stream._inFlightWriteRequest = undefined; - assert(stream._state === 'writable' || stream._state === 'erroring'); - WritableStreamDealWithRejection(stream, error); - } - function WritableStreamFinishInFlightClose(stream) { - assert(stream._inFlightCloseRequest !== undefined); - stream._inFlightCloseRequest._resolve(undefined); - stream._inFlightCloseRequest = undefined; - var state = stream._state; - assert(state === 'writable' || state === 'erroring'); - if (state === 'erroring') { - stream._storedError = undefined; - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._resolve(); - stream._pendingAbortRequest = undefined; - } - } - stream._state = 'closed'; - var writer = stream._writer; - if (writer !== undefined) { - defaultWriterClosedPromiseResolve(writer); - } - assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined'); - assert(stream._storedError === undefined, 'stream._storedError === undefined'); - } - function WritableStreamFinishInFlightCloseWithError(stream, error) { - assert(stream._inFlightCloseRequest !== undefined); - stream._inFlightCloseRequest._reject(error); - stream._inFlightCloseRequest = undefined; - assert(stream._state === 'writable' || stream._state === 'erroring'); - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._reject(error); - stream._pendingAbortRequest = undefined; - } - WritableStreamDealWithRejection(stream, error); - } - function WritableStreamCloseQueuedOrInFlight(stream) { - if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - return true; - } - function WritableStreamHasOperationMarkedInFlight(stream) { - if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - return true; - } - function WritableStreamMarkCloseRequestInFlight(stream) { - assert(stream._inFlightCloseRequest === undefined); - assert(stream._closeRequest !== undefined); - stream._inFlightCloseRequest = stream._closeRequest; - stream._closeRequest = undefined; - } - function WritableStreamMarkFirstWriteRequestInFlight(stream) { - assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request'); - assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty'); - stream._inFlightWriteRequest = stream._writeRequests.shift(); - } - function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) { - assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`'); - if (stream._closeRequest !== undefined) { - assert(stream._inFlightCloseRequest === undefined); - stream._closeRequest._reject(stream._storedError); - stream._closeRequest = undefined; - } - var writer = stream._writer; - if (writer !== undefined) { - defaultWriterClosedPromiseReject(writer, stream._storedError); - writer._closedPromise.catch(function () {}); - } - } - function WritableStreamUpdateBackpressure(stream, backpressure) { - assert(stream._state === 'writable'); - assert(WritableStreamCloseQueuedOrInFlight(stream) === false); - var writer = stream._writer; - if (writer !== undefined && backpressure !== stream._backpressure) { - if (backpressure === true) { - defaultWriterReadyPromiseReset(writer); - } else { - assert(backpressure === false); - defaultWriterReadyPromiseResolve(writer); - } - } - stream._backpressure = backpressure; - } - var WritableStreamDefaultWriter = function () { - function WritableStreamDefaultWriter(stream) { - _classCallCheck(this, WritableStreamDefaultWriter); - if (IsWritableStream(stream) === false) { - throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance'); - } - if (IsWritableStreamLocked(stream) === true) { - throw new TypeError('This stream has already been locked for exclusive writing by another writer'); - } - this._ownerWritableStream = stream; - stream._writer = this; - var state = stream._state; - if (state === 'writable') { - if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) { - defaultWriterReadyPromiseInitialize(this); - } else { - defaultWriterReadyPromiseInitializeAsResolved(this); - } - defaultWriterClosedPromiseInitialize(this); - } else if (state === 'erroring') { - defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError); - this._readyPromise.catch(function () {}); - defaultWriterClosedPromiseInitialize(this); - } else if (state === 'closed') { - defaultWriterReadyPromiseInitializeAsResolved(this); - defaultWriterClosedPromiseInitializeAsResolved(this); - } else { - assert(state === 'errored', 'state must be errored'); - var storedError = stream._storedError; - defaultWriterReadyPromiseInitializeAsRejected(this, storedError); - this._readyPromise.catch(function () {}); - defaultWriterClosedPromiseInitializeAsRejected(this, storedError); - this._closedPromise.catch(function () {}); - } - } - _createClass(WritableStreamDefaultWriter, [{ - key: 'abort', - value: function abort(reason) { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('abort')); - } - if (this._ownerWritableStream === undefined) { - return Promise.reject(defaultWriterLockException('abort')); - } - return WritableStreamDefaultWriterAbort(this, reason); - } - }, { - key: 'close', - value: function close() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('close')); - } - var stream = this._ownerWritableStream; - if (stream === undefined) { - return Promise.reject(defaultWriterLockException('close')); - } - if (WritableStreamCloseQueuedOrInFlight(stream) === true) { - return Promise.reject(new TypeError('cannot close an already-closing stream')); - } - return WritableStreamDefaultWriterClose(this); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (IsWritableStreamDefaultWriter(this) === false) { - throw defaultWriterBrandCheckException('releaseLock'); - } - var stream = this._ownerWritableStream; - if (stream === undefined) { - return; - } - assert(stream._writer !== undefined); - WritableStreamDefaultWriterRelease(this); - } - }, { - key: 'write', - value: function write(chunk) { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('write')); - } - if (this._ownerWritableStream === undefined) { - return Promise.reject(defaultWriterLockException('write to')); - } - return WritableStreamDefaultWriterWrite(this, chunk); - } - }, { - key: 'closed', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('closed')); - } - return this._closedPromise; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - throw defaultWriterBrandCheckException('desiredSize'); - } - if (this._ownerWritableStream === undefined) { - throw defaultWriterLockException('desiredSize'); - } - return WritableStreamDefaultWriterGetDesiredSize(this); - } - }, { - key: 'ready', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('ready')); - } - return this._readyPromise; - } - }]); - return WritableStreamDefaultWriter; - }(); - function IsWritableStreamDefaultWriter(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) { - return false; - } - return true; - } - function WritableStreamDefaultWriterAbort(writer, reason) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - return WritableStreamAbort(stream, reason); - } - function WritableStreamDefaultWriterClose(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var state = stream._state; - if (state === 'closed' || state === 'errored') { - return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed')); - } - assert(state === 'writable' || state === 'erroring'); - assert(WritableStreamCloseQueuedOrInFlight(stream) === false); - var promise = new Promise(function (resolve, reject) { - var closeRequest = { - _resolve: resolve, - _reject: reject - }; - stream._closeRequest = closeRequest; - }); - if (stream._backpressure === true && state === 'writable') { - defaultWriterReadyPromiseResolve(writer); - } - WritableStreamDefaultControllerClose(stream._writableStreamController); - return promise; - } - function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var state = stream._state; - if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { - return Promise.resolve(); - } - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - assert(state === 'writable' || state === 'erroring'); - return WritableStreamDefaultWriterClose(writer); - } - function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) { - if (writer._closedPromiseState === 'pending') { - defaultWriterClosedPromiseReject(writer, error); - } else { - defaultWriterClosedPromiseResetToRejected(writer, error); - } - writer._closedPromise.catch(function () {}); - } - function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) { - if (writer._readyPromiseState === 'pending') { - defaultWriterReadyPromiseReject(writer, error); - } else { - defaultWriterReadyPromiseResetToRejected(writer, error); - } - writer._readyPromise.catch(function () {}); - } - function WritableStreamDefaultWriterGetDesiredSize(writer) { - var stream = writer._ownerWritableStream; - var state = stream._state; - if (state === 'errored' || state === 'erroring') { - return null; - } - if (state === 'closed') { - return 0; - } - return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController); - } - function WritableStreamDefaultWriterRelease(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - assert(stream._writer === writer); - var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness'); - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError); - WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError); - stream._writer = undefined; - writer._ownerWritableStream = undefined; - } - function WritableStreamDefaultWriterWrite(writer, chunk) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var controller = stream._writableStreamController; - var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk); - if (stream !== writer._ownerWritableStream) { - return Promise.reject(defaultWriterLockException('write to')); - } - var state = stream._state; - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { - return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to')); - } - if (state === 'erroring') { - return Promise.reject(stream._storedError); - } - assert(state === 'writable'); - var promise = WritableStreamAddWriteRequest(stream); - WritableStreamDefaultControllerWrite(controller, chunk, chunkSize); - return promise; - } - var WritableStreamDefaultController = function () { - function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) { - _classCallCheck(this, WritableStreamDefaultController); - if (IsWritableStream(stream) === false) { - throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance'); - } - if (stream._writableStreamController !== undefined) { - throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor'); - } - this._controlledWritableStream = stream; - this._underlyingSink = underlyingSink; - this._queue = undefined; - this._queueTotalSize = undefined; - ResetQueue(this); - this._started = false; - var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); - this._strategySize = normalizedStrategy.size; - this._strategyHWM = normalizedStrategy.highWaterMark; - var backpressure = WritableStreamDefaultControllerGetBackpressure(this); - WritableStreamUpdateBackpressure(stream, backpressure); - } - _createClass(WritableStreamDefaultController, [{ - key: 'error', - value: function error(e) { - if (IsWritableStreamDefaultController(this) === false) { - throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController'); - } - var state = this._controlledWritableStream._state; - if (state !== 'writable') { - return; - } - WritableStreamDefaultControllerError(this, e); - } - }, { - key: '__abortSteps', - value: function __abortSteps(reason) { - return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]); - } - }, { - key: '__errorSteps', - value: function __errorSteps() { - ResetQueue(this); - } - }, { - key: '__startSteps', - value: function __startSteps() { - var _this = this; - var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]); - var stream = this._controlledWritableStream; - Promise.resolve(startResult).then(function () { - assert(stream._state === 'writable' || stream._state === 'erroring'); - _this._started = true; - WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this); - }, function (r) { - assert(stream._state === 'writable' || stream._state === 'erroring'); - _this._started = true; - WritableStreamDealWithRejection(stream, r); - }).catch(rethrowAssertionErrorRejection); - } - }]); - return WritableStreamDefaultController; - }(); - function WritableStreamDefaultControllerClose(controller) { - EnqueueValueWithSize(controller, 'close', 0); - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - } - function WritableStreamDefaultControllerGetChunkSize(controller, chunk) { - var strategySize = controller._strategySize; - if (strategySize === undefined) { - return 1; - } - try { - return strategySize(chunk); - } catch (chunkSizeE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); - return 1; - } - } - function WritableStreamDefaultControllerGetDesiredSize(controller) { - return controller._strategyHWM - controller._queueTotalSize; - } - function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) { - var writeRecord = { chunk: chunk }; - try { - EnqueueValueWithSize(controller, writeRecord, chunkSize); - } catch (enqueueE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); - return; - } - var stream = controller._controlledWritableStream; - if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - } - function IsWritableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) { - return false; - } - return true; - } - function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) { - var stream = controller._controlledWritableStream; - if (controller._started === false) { - return; - } - if (stream._inFlightWriteRequest !== undefined) { - return; - } - var state = stream._state; - if (state === 'closed' || state === 'errored') { - return; - } - if (state === 'erroring') { - WritableStreamFinishErroring(stream); - return; - } - if (controller._queue.length === 0) { - return; - } - var writeRecord = PeekQueueValue(controller); - if (writeRecord === 'close') { - WritableStreamDefaultControllerProcessClose(controller); - } else { - WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk); - } - } - function WritableStreamDefaultControllerErrorIfNeeded(controller, error) { - if (controller._controlledWritableStream._state === 'writable') { - WritableStreamDefaultControllerError(controller, error); - } - } - function WritableStreamDefaultControllerProcessClose(controller) { - var stream = controller._controlledWritableStream; - WritableStreamMarkCloseRequestInFlight(stream); - DequeueValue(controller); - assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued'); - var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []); - sinkClosePromise.then(function () { - WritableStreamFinishInFlightClose(stream); - }, function (reason) { - WritableStreamFinishInFlightCloseWithError(stream, reason); - }).catch(rethrowAssertionErrorRejection); - } - function WritableStreamDefaultControllerProcessWrite(controller, chunk) { - var stream = controller._controlledWritableStream; - WritableStreamMarkFirstWriteRequestInFlight(stream); - var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]); - sinkWritePromise.then(function () { - WritableStreamFinishInFlightWrite(stream); - var state = stream._state; - assert(state === 'writable' || state === 'erroring'); - DequeueValue(controller); - if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - }, function (reason) { - WritableStreamFinishInFlightWriteWithError(stream, reason); - }).catch(rethrowAssertionErrorRejection); - } - function WritableStreamDefaultControllerGetBackpressure(controller) { - var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller); - return desiredSize <= 0; - } - function WritableStreamDefaultControllerError(controller, error) { - var stream = controller._controlledWritableStream; - assert(stream._state === 'writable'); - WritableStreamStartErroring(stream, error); - } - function streamBrandCheckException(name) { - return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream'); - } - function defaultWriterBrandCheckException(name) { - return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter'); - } - function defaultWriterLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released writer'); - } - function defaultWriterClosedPromiseInitialize(writer) { - writer._closedPromise = new Promise(function (resolve, reject) { - writer._closedPromise_resolve = resolve; - writer._closedPromise_reject = reject; - writer._closedPromiseState = 'pending'; - }); - } - function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) { - writer._closedPromise = Promise.reject(reason); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'rejected'; - } - function defaultWriterClosedPromiseInitializeAsResolved(writer) { - writer._closedPromise = Promise.resolve(undefined); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'resolved'; - } - function defaultWriterClosedPromiseReject(writer, reason) { - assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); - assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); - assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); - writer._closedPromise_reject(reason); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'rejected'; - } - function defaultWriterClosedPromiseResetToRejected(writer, reason) { - assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined'); - assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined'); - assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending'); - writer._closedPromise = Promise.reject(reason); - writer._closedPromiseState = 'rejected'; - } - function defaultWriterClosedPromiseResolve(writer) { - assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); - assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); - assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); - writer._closedPromise_resolve(undefined); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'resolved'; - } - function defaultWriterReadyPromiseInitialize(writer) { - writer._readyPromise = new Promise(function (resolve, reject) { - writer._readyPromise_resolve = resolve; - writer._readyPromise_reject = reject; - }); - writer._readyPromiseState = 'pending'; - } - function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) { - writer._readyPromise = Promise.reject(reason); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'rejected'; - } - function defaultWriterReadyPromiseInitializeAsResolved(writer) { - writer._readyPromise = Promise.resolve(undefined); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'fulfilled'; - } - function defaultWriterReadyPromiseReject(writer, reason) { - assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); - assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); - writer._readyPromise_reject(reason); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'rejected'; - } - function defaultWriterReadyPromiseReset(writer) { - assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); - assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); - writer._readyPromise = new Promise(function (resolve, reject) { - writer._readyPromise_resolve = resolve; - writer._readyPromise_reject = reject; - }); - writer._readyPromiseState = 'pending'; - } - function defaultWriterReadyPromiseResetToRejected(writer, reason) { - assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); - assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); - writer._readyPromise = Promise.reject(reason); - writer._readyPromiseState = 'rejected'; - } - function defaultWriterReadyPromiseResolve(writer) { - assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); - assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); - writer._readyPromise_resolve(undefined); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'fulfilled'; - } -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _require = __w_pdfjs_require__(0), - IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber; - var _require2 = __w_pdfjs_require__(1), - assert = _require2.assert; - exports.DequeueValue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.'); - var pair = container._queue.shift(); - container._queueTotalSize -= pair.size; - if (container._queueTotalSize < 0) { - container._queueTotalSize = 0; - } - return pair.value; - }; - exports.EnqueueValueWithSize = function (container, value, size) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].'); - size = Number(size); - if (!IsFiniteNonNegativeNumber(size)) { - throw new RangeError('Size must be a finite, non-NaN, non-negative number.'); - } - container._queue.push({ - value: value, - size: size - }); - container._queueTotalSize += size; - }; - exports.PeekQueueValue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.'); - var pair = container._queue[0]; - return pair.value; - }; - exports.ResetQueue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - container._queue = []; - container._queueTotalSize = 0; - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - var _require = __w_pdfjs_require__(0), - ArrayBufferCopy = _require.ArrayBufferCopy, - CreateIterResultObject = _require.CreateIterResultObject, - IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber, - InvokeOrNoop = _require.InvokeOrNoop, - PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, - TransferArrayBuffer = _require.TransferArrayBuffer, - ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, - ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark; - var _require2 = __w_pdfjs_require__(0), - createArrayFromList = _require2.createArrayFromList, - createDataProperty = _require2.createDataProperty, - typeIsObject = _require2.typeIsObject; - var _require3 = __w_pdfjs_require__(1), - assert = _require3.assert, - rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection; - var _require4 = __w_pdfjs_require__(3), - DequeueValue = _require4.DequeueValue, - EnqueueValueWithSize = _require4.EnqueueValueWithSize, - ResetQueue = _require4.ResetQueue; - var _require5 = __w_pdfjs_require__(2), - AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter, - IsWritableStream = _require5.IsWritableStream, - IsWritableStreamLocked = _require5.IsWritableStreamLocked, - WritableStreamAbort = _require5.WritableStreamAbort, - WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation, - WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease, - WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite, - WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight; - var ReadableStream = function () { - function ReadableStream() { - var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - size = _ref.size, - highWaterMark = _ref.highWaterMark; - _classCallCheck(this, ReadableStream); - this._state = 'readable'; - this._reader = undefined; - this._storedError = undefined; - this._disturbed = false; - this._readableStreamController = undefined; - var type = underlyingSource.type; - var typeString = String(type); - if (typeString === 'bytes') { - if (highWaterMark === undefined) { - highWaterMark = 0; - } - this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark); - } else if (type === undefined) { - if (highWaterMark === undefined) { - highWaterMark = 1; - } - this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark); - } else { - throw new RangeError('Invalid type is specified'); - } - } - _createClass(ReadableStream, [{ - key: 'cancel', - value: function cancel(reason) { - if (IsReadableStream(this) === false) { - return Promise.reject(streamBrandCheckException('cancel')); - } - if (IsReadableStreamLocked(this) === true) { - return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader')); - } - return ReadableStreamCancel(this, reason); - } - }, { - key: 'getReader', - value: function getReader() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - mode = _ref2.mode; - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('getReader'); - } - if (mode === undefined) { - return AcquireReadableStreamDefaultReader(this); - } - mode = String(mode); - if (mode === 'byob') { - return AcquireReadableStreamBYOBReader(this); - } - throw new RangeError('Invalid mode is specified'); - } - }, { - key: 'pipeThrough', - value: function pipeThrough(_ref3, options) { - var writable = _ref3.writable, - readable = _ref3.readable; - var promise = this.pipeTo(writable, options); - ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise); - return readable; - } - }, { - key: 'pipeTo', - value: function pipeTo(dest) { - var _this = this; - var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - preventClose = _ref4.preventClose, - preventAbort = _ref4.preventAbort, - preventCancel = _ref4.preventCancel; - if (IsReadableStream(this) === false) { - return Promise.reject(streamBrandCheckException('pipeTo')); - } - if (IsWritableStream(dest) === false) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream')); - } - preventClose = Boolean(preventClose); - preventAbort = Boolean(preventAbort); - preventCancel = Boolean(preventCancel); - if (IsReadableStreamLocked(this) === true) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream')); - } - if (IsWritableStreamLocked(dest) === true) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream')); - } - var reader = AcquireReadableStreamDefaultReader(this); - var writer = AcquireWritableStreamDefaultWriter(dest); - var shuttingDown = false; - var currentWrite = Promise.resolve(); - return new Promise(function (resolve, reject) { - function pipeLoop() { - currentWrite = Promise.resolve(); - if (shuttingDown === true) { - return Promise.resolve(); - } - return writer._readyPromise.then(function () { - return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) { - var value = _ref5.value, - done = _ref5.done; - if (done === true) { - return; - } - currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {}); - }); - }).then(pipeLoop); - } - isOrBecomesErrored(_this, reader._closedPromise, function (storedError) { - if (preventAbort === false) { - shutdownWithAction(function () { - return WritableStreamAbort(dest, storedError); - }, true, storedError); - } else { - shutdown(true, storedError); - } - }); - isOrBecomesErrored(dest, writer._closedPromise, function (storedError) { - if (preventCancel === false) { - shutdownWithAction(function () { - return ReadableStreamCancel(_this, storedError); - }, true, storedError); - } else { - shutdown(true, storedError); - } - }); - isOrBecomesClosed(_this, reader._closedPromise, function () { - if (preventClose === false) { - shutdownWithAction(function () { - return WritableStreamDefaultWriterCloseWithErrorPropagation(writer); - }); - } else { - shutdown(); - } - }); - if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') { - var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it'); - if (preventCancel === false) { - shutdownWithAction(function () { - return ReadableStreamCancel(_this, destClosed); - }, true, destClosed); - } else { - shutdown(true, destClosed); - } - } - pipeLoop().catch(function (err) { - currentWrite = Promise.resolve(); - rethrowAssertionErrorRejection(err); - }); - function waitForWritesToFinish() { - var oldCurrentWrite = currentWrite; - return currentWrite.then(function () { - return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined; - }); - } - function isOrBecomesErrored(stream, promise, action) { - if (stream._state === 'errored') { - action(stream._storedError); - } else { - promise.catch(action).catch(rethrowAssertionErrorRejection); - } - } - function isOrBecomesClosed(stream, promise, action) { - if (stream._state === 'closed') { - action(); - } else { - promise.then(action).catch(rethrowAssertionErrorRejection); - } - } - function shutdownWithAction(action, originalIsError, originalError) { - if (shuttingDown === true) { - return; - } - shuttingDown = true; - if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { - waitForWritesToFinish().then(doTheRest); - } else { - doTheRest(); - } - function doTheRest() { - action().then(function () { - return finalize(originalIsError, originalError); - }, function (newError) { - return finalize(true, newError); - }).catch(rethrowAssertionErrorRejection); - } - } - function shutdown(isError, error) { - if (shuttingDown === true) { - return; - } - shuttingDown = true; - if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { - waitForWritesToFinish().then(function () { - return finalize(isError, error); - }).catch(rethrowAssertionErrorRejection); - } else { - finalize(isError, error); - } - } - function finalize(isError, error) { - WritableStreamDefaultWriterRelease(writer); - ReadableStreamReaderGenericRelease(reader); - if (isError) { - reject(error); - } else { - resolve(undefined); - } - } - }); - } - }, { - key: 'tee', - value: function tee() { - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('tee'); - } - var branches = ReadableStreamTee(this, false); - return createArrayFromList(branches); - } - }, { - key: 'locked', - get: function get() { - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('locked'); - } - return IsReadableStreamLocked(this); - } - }]); - return ReadableStream; - }(); - module.exports = { - ReadableStream: ReadableStream, - IsReadableStreamDisturbed: IsReadableStreamDisturbed, - ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose, - ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue, - ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError, - ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize - }; - function AcquireReadableStreamBYOBReader(stream) { - return new ReadableStreamBYOBReader(stream); - } - function AcquireReadableStreamDefaultReader(stream) { - return new ReadableStreamDefaultReader(stream); - } - function IsReadableStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) { - return false; - } - return true; - } - function IsReadableStreamDisturbed(stream) { - assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams'); - return stream._disturbed; - } - function IsReadableStreamLocked(stream) { - assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams'); - if (stream._reader === undefined) { - return false; - } - return true; - } - function ReadableStreamTee(stream, cloneForBranch2) { - assert(IsReadableStream(stream) === true); - assert(typeof cloneForBranch2 === 'boolean'); - var reader = AcquireReadableStreamDefaultReader(stream); - var teeState = { - closedOrErrored: false, - canceled1: false, - canceled2: false, - reason1: undefined, - reason2: undefined - }; - teeState.promise = new Promise(function (resolve) { - teeState._resolve = resolve; - }); - var pull = create_ReadableStreamTeePullFunction(); - pull._reader = reader; - pull._teeState = teeState; - pull._cloneForBranch2 = cloneForBranch2; - var cancel1 = create_ReadableStreamTeeBranch1CancelFunction(); - cancel1._stream = stream; - cancel1._teeState = teeState; - var cancel2 = create_ReadableStreamTeeBranch2CancelFunction(); - cancel2._stream = stream; - cancel2._teeState = teeState; - var underlyingSource1 = Object.create(Object.prototype); - createDataProperty(underlyingSource1, 'pull', pull); - createDataProperty(underlyingSource1, 'cancel', cancel1); - var branch1Stream = new ReadableStream(underlyingSource1); - var underlyingSource2 = Object.create(Object.prototype); - createDataProperty(underlyingSource2, 'pull', pull); - createDataProperty(underlyingSource2, 'cancel', cancel2); - var branch2Stream = new ReadableStream(underlyingSource2); - pull._branch1 = branch1Stream._readableStreamController; - pull._branch2 = branch2Stream._readableStreamController; - reader._closedPromise.catch(function (r) { - if (teeState.closedOrErrored === true) { - return; - } - ReadableStreamDefaultControllerError(pull._branch1, r); - ReadableStreamDefaultControllerError(pull._branch2, r); - teeState.closedOrErrored = true; - }); - return [branch1Stream, branch2Stream]; - } - function create_ReadableStreamTeePullFunction() { - function f() { - var reader = f._reader, - branch1 = f._branch1, - branch2 = f._branch2, - teeState = f._teeState; - return ReadableStreamDefaultReaderRead(reader).then(function (result) { - assert(typeIsObject(result)); - var value = result.value; - var done = result.done; - assert(typeof done === 'boolean'); - if (done === true && teeState.closedOrErrored === false) { - if (teeState.canceled1 === false) { - ReadableStreamDefaultControllerClose(branch1); - } - if (teeState.canceled2 === false) { - ReadableStreamDefaultControllerClose(branch2); - } - teeState.closedOrErrored = true; - } - if (teeState.closedOrErrored === true) { - return; - } - var value1 = value; - var value2 = value; - if (teeState.canceled1 === false) { - ReadableStreamDefaultControllerEnqueue(branch1, value1); - } - if (teeState.canceled2 === false) { - ReadableStreamDefaultControllerEnqueue(branch2, value2); - } - }); - } - return f; - } - function create_ReadableStreamTeeBranch1CancelFunction() { - function f(reason) { - var stream = f._stream, - teeState = f._teeState; - teeState.canceled1 = true; - teeState.reason1 = reason; - if (teeState.canceled2 === true) { - var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - teeState._resolve(cancelResult); - } - return teeState.promise; - } - return f; - } - function create_ReadableStreamTeeBranch2CancelFunction() { - function f(reason) { - var stream = f._stream, - teeState = f._teeState; - teeState.canceled2 = true; - teeState.reason2 = reason; - if (teeState.canceled1 === true) { - var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - teeState._resolve(cancelResult); - } - return teeState.promise; - } - return f; - } - function ReadableStreamAddReadIntoRequest(stream) { - assert(IsReadableStreamBYOBReader(stream._reader) === true); - assert(stream._state === 'readable' || stream._state === 'closed'); - var promise = new Promise(function (resolve, reject) { - var readIntoRequest = { - _resolve: resolve, - _reject: reject - }; - stream._reader._readIntoRequests.push(readIntoRequest); - }); - return promise; - } - function ReadableStreamAddReadRequest(stream) { - assert(IsReadableStreamDefaultReader(stream._reader) === true); - assert(stream._state === 'readable'); - var promise = new Promise(function (resolve, reject) { - var readRequest = { - _resolve: resolve, - _reject: reject - }; - stream._reader._readRequests.push(readRequest); - }); - return promise; - } - function ReadableStreamCancel(stream, reason) { - stream._disturbed = true; - if (stream._state === 'closed') { - return Promise.resolve(undefined); - } - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - ReadableStreamClose(stream); - var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason); - return sourceCancelPromise.then(function () { - return undefined; - }); - } - function ReadableStreamClose(stream) { - assert(stream._state === 'readable'); - stream._state = 'closed'; - var reader = stream._reader; - if (reader === undefined) { - return undefined; - } - if (IsReadableStreamDefaultReader(reader) === true) { - for (var i = 0; i < reader._readRequests.length; i++) { - var _resolve = reader._readRequests[i]._resolve; - _resolve(CreateIterResultObject(undefined, true)); - } - reader._readRequests = []; - } - defaultReaderClosedPromiseResolve(reader); - return undefined; - } - function ReadableStreamError(stream, e) { - assert(IsReadableStream(stream) === true, 'stream must be ReadableStream'); - assert(stream._state === 'readable', 'state must be readable'); - stream._state = 'errored'; - stream._storedError = e; - var reader = stream._reader; - if (reader === undefined) { - return undefined; - } - if (IsReadableStreamDefaultReader(reader) === true) { - for (var i = 0; i < reader._readRequests.length; i++) { - var readRequest = reader._readRequests[i]; - readRequest._reject(e); - } - reader._readRequests = []; - } else { - assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader'); - for (var _i = 0; _i < reader._readIntoRequests.length; _i++) { - var readIntoRequest = reader._readIntoRequests[_i]; - readIntoRequest._reject(e); - } - reader._readIntoRequests = []; - } - defaultReaderClosedPromiseReject(reader, e); - reader._closedPromise.catch(function () {}); - } - function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) { - var reader = stream._reader; - assert(reader._readIntoRequests.length > 0); - var readIntoRequest = reader._readIntoRequests.shift(); - readIntoRequest._resolve(CreateIterResultObject(chunk, done)); - } - function ReadableStreamFulfillReadRequest(stream, chunk, done) { - var reader = stream._reader; - assert(reader._readRequests.length > 0); - var readRequest = reader._readRequests.shift(); - readRequest._resolve(CreateIterResultObject(chunk, done)); - } - function ReadableStreamGetNumReadIntoRequests(stream) { - return stream._reader._readIntoRequests.length; - } - function ReadableStreamGetNumReadRequests(stream) { - return stream._reader._readRequests.length; - } - function ReadableStreamHasBYOBReader(stream) { - var reader = stream._reader; - if (reader === undefined) { - return false; - } - if (IsReadableStreamBYOBReader(reader) === false) { - return false; - } - return true; - } - function ReadableStreamHasDefaultReader(stream) { - var reader = stream._reader; - if (reader === undefined) { - return false; - } - if (IsReadableStreamDefaultReader(reader) === false) { - return false; - } - return true; - } - var ReadableStreamDefaultReader = function () { - function ReadableStreamDefaultReader(stream) { - _classCallCheck(this, ReadableStreamDefaultReader); - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance'); - } - if (IsReadableStreamLocked(stream) === true) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - ReadableStreamReaderGenericInitialize(this, stream); - this._readRequests = []; - } - _createClass(ReadableStreamDefaultReader, [{ - key: 'cancel', - value: function cancel(reason) { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('cancel')); - } - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('cancel')); - } - return ReadableStreamReaderGenericCancel(this, reason); - } - }, { - key: 'read', - value: function read() { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('read')); - } - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('read from')); - } - return ReadableStreamDefaultReaderRead(this); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (IsReadableStreamDefaultReader(this) === false) { - throw defaultReaderBrandCheckException('releaseLock'); - } - if (this._ownerReadableStream === undefined) { - return; - } - if (this._readRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - ReadableStreamReaderGenericRelease(this); - } - }, { - key: 'closed', - get: function get() { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('closed')); - } - return this._closedPromise; - } - }]); - return ReadableStreamDefaultReader; - }(); - var ReadableStreamBYOBReader = function () { - function ReadableStreamBYOBReader(stream) { - _classCallCheck(this, ReadableStreamBYOBReader); - if (!IsReadableStream(stream)) { - throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source'); - } - if (IsReadableByteStreamController(stream._readableStreamController) === false) { - throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source'); - } - if (IsReadableStreamLocked(stream)) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - ReadableStreamReaderGenericInitialize(this, stream); - this._readIntoRequests = []; - } - _createClass(ReadableStreamBYOBReader, [{ - key: 'cancel', - value: function cancel(reason) { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('cancel')); - } - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('cancel')); - } - return ReadableStreamReaderGenericCancel(this, reason); - } - }, { - key: 'read', - value: function read(view) { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('read')); - } - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('read from')); - } - if (!ArrayBuffer.isView(view)) { - return Promise.reject(new TypeError('view must be an array buffer view')); - } - if (view.byteLength === 0) { - return Promise.reject(new TypeError('view must have non-zero byteLength')); - } - return ReadableStreamBYOBReaderRead(this, view); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (!IsReadableStreamBYOBReader(this)) { - throw byobReaderBrandCheckException('releaseLock'); - } - if (this._ownerReadableStream === undefined) { - return; - } - if (this._readIntoRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - ReadableStreamReaderGenericRelease(this); - } - }, { - key: 'closed', - get: function get() { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('closed')); - } - return this._closedPromise; - } - }]); - return ReadableStreamBYOBReader; - }(); - function IsReadableStreamBYOBReader(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) { - return false; - } - return true; - } - function IsReadableStreamDefaultReader(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) { - return false; - } - return true; - } - function ReadableStreamReaderGenericInitialize(reader, stream) { - reader._ownerReadableStream = stream; - stream._reader = reader; - if (stream._state === 'readable') { - defaultReaderClosedPromiseInitialize(reader); - } else if (stream._state === 'closed') { - defaultReaderClosedPromiseInitializeAsResolved(reader); - } else { - assert(stream._state === 'errored', 'state must be errored'); - defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError); - reader._closedPromise.catch(function () {}); - } - } - function ReadableStreamReaderGenericCancel(reader, reason) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - return ReadableStreamCancel(stream, reason); - } - function ReadableStreamReaderGenericRelease(reader) { - assert(reader._ownerReadableStream !== undefined); - assert(reader._ownerReadableStream._reader === reader); - if (reader._ownerReadableStream._state === 'readable') { - defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); - } else { - defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); - } - reader._closedPromise.catch(function () {}); - reader._ownerReadableStream._reader = undefined; - reader._ownerReadableStream = undefined; - } - function ReadableStreamBYOBReaderRead(reader, view) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - stream._disturbed = true; - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - return ReadableByteStreamControllerPullInto(stream._readableStreamController, view); - } - function ReadableStreamDefaultReaderRead(reader) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - stream._disturbed = true; - if (stream._state === 'closed') { - return Promise.resolve(CreateIterResultObject(undefined, true)); - } - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - assert(stream._state === 'readable'); - return stream._readableStreamController.__pullSteps(); - } - var ReadableStreamDefaultController = function () { - function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) { - _classCallCheck(this, ReadableStreamDefaultController); - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance'); - } - if (stream._readableStreamController !== undefined) { - throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor'); - } - this._controlledReadableStream = stream; - this._underlyingSource = underlyingSource; - this._queue = undefined; - this._queueTotalSize = undefined; - ResetQueue(this); - this._started = false; - this._closeRequested = false; - this._pullAgain = false; - this._pulling = false; - var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); - this._strategySize = normalizedStrategy.size; - this._strategyHWM = normalizedStrategy.highWaterMark; - var controller = this; - var startResult = InvokeOrNoop(underlyingSource, 'start', [this]); - Promise.resolve(startResult).then(function () { - controller._started = true; - assert(controller._pulling === false); - assert(controller._pullAgain === false); - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - }, function (r) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, r); - }).catch(rethrowAssertionErrorRejection); - } - _createClass(ReadableStreamDefaultController, [{ - key: 'close', - value: function close() { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('close'); - } - if (this._closeRequested === true) { - throw new TypeError('The stream has already been closed; do not close it again!'); - } - var state = this._controlledReadableStream._state; - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); - } - ReadableStreamDefaultControllerClose(this); - } - }, { - key: 'enqueue', - value: function enqueue(chunk) { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('enqueue'); - } - if (this._closeRequested === true) { - throw new TypeError('stream is closed or draining'); - } - var state = this._controlledReadableStream._state; - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); - } - return ReadableStreamDefaultControllerEnqueue(this, chunk); - } - }, { - key: 'error', - value: function error(e) { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('error'); - } - var stream = this._controlledReadableStream; - if (stream._state !== 'readable') { - throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); - } - ReadableStreamDefaultControllerError(this, e); - } - }, { - key: '__cancelSteps', - value: function __cancelSteps(reason) { - ResetQueue(this); - return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]); - } - }, { - key: '__pullSteps', - value: function __pullSteps() { - var stream = this._controlledReadableStream; - if (this._queue.length > 0) { - var chunk = DequeueValue(this); - if (this._closeRequested === true && this._queue.length === 0) { - ReadableStreamClose(stream); - } else { - ReadableStreamDefaultControllerCallPullIfNeeded(this); - } - return Promise.resolve(CreateIterResultObject(chunk, false)); - } - var pendingPromise = ReadableStreamAddReadRequest(stream); - ReadableStreamDefaultControllerCallPullIfNeeded(this); - return pendingPromise; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('desiredSize'); - } - return ReadableStreamDefaultControllerGetDesiredSize(this); - } - }]); - return ReadableStreamDefaultController; - }(); - function IsReadableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) { - return false; - } - return true; - } - function ReadableStreamDefaultControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller); - if (shouldPull === false) { - return undefined; - } - if (controller._pulling === true) { - controller._pullAgain = true; - return undefined; - } - assert(controller._pullAgain === false); - controller._pulling = true; - var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]); - pullPromise.then(function () { - controller._pulling = false; - if (controller._pullAgain === true) { - controller._pullAgain = false; - return ReadableStreamDefaultControllerCallPullIfNeeded(controller); - } - return undefined; - }, function (e) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, e); - }).catch(rethrowAssertionErrorRejection); - return undefined; - } - function ReadableStreamDefaultControllerShouldCallPull(controller) { - var stream = controller._controlledReadableStream; - if (stream._state === 'closed' || stream._state === 'errored') { - return false; - } - if (controller._closeRequested === true) { - return false; - } - if (controller._started === false) { - return false; - } - if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); - if (desiredSize > 0) { - return true; - } - return false; - } - function ReadableStreamDefaultControllerClose(controller) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - controller._closeRequested = true; - if (controller._queue.length === 0) { - ReadableStreamClose(stream); - } - } - function ReadableStreamDefaultControllerEnqueue(controller, chunk) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - ReadableStreamFulfillReadRequest(stream, chunk, false); - } else { - var chunkSize = 1; - if (controller._strategySize !== undefined) { - var strategySize = controller._strategySize; - try { - chunkSize = strategySize(chunk); - } catch (chunkSizeE) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); - throw chunkSizeE; - } - } - try { - EnqueueValueWithSize(controller, chunk, chunkSize); - } catch (enqueueE) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); - throw enqueueE; - } - } - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - return undefined; - } - function ReadableStreamDefaultControllerError(controller, e) { - var stream = controller._controlledReadableStream; - assert(stream._state === 'readable'); - ResetQueue(controller); - ReadableStreamError(stream, e); - } - function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) { - if (controller._controlledReadableStream._state === 'readable') { - ReadableStreamDefaultControllerError(controller, e); - } - } - function ReadableStreamDefaultControllerGetDesiredSize(controller) { - var stream = controller._controlledReadableStream; - var state = stream._state; - if (state === 'errored') { - return null; - } - if (state === 'closed') { - return 0; - } - return controller._strategyHWM - controller._queueTotalSize; - } - var ReadableStreamBYOBRequest = function () { - function ReadableStreamBYOBRequest(controller, view) { - _classCallCheck(this, ReadableStreamBYOBRequest); - this._associatedReadableByteStreamController = controller; - this._view = view; - } - _createClass(ReadableStreamBYOBRequest, [{ - key: 'respond', - value: function respond(bytesWritten) { - if (IsReadableStreamBYOBRequest(this) === false) { - throw byobRequestBrandCheckException('respond'); - } - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten); - } - }, { - key: 'respondWithNewView', - value: function respondWithNewView(view) { - if (IsReadableStreamBYOBRequest(this) === false) { - throw byobRequestBrandCheckException('respond'); - } - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - if (!ArrayBuffer.isView(view)) { - throw new TypeError('You can only respond with array buffer views'); - } - ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view); - } - }, { - key: 'view', - get: function get() { - return this._view; - } - }]); - return ReadableStreamBYOBRequest; - }(); - var ReadableByteStreamController = function () { - function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) { - _classCallCheck(this, ReadableByteStreamController); - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source'); - } - if (stream._readableStreamController !== undefined) { - throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source'); - } - this._controlledReadableStream = stream; - this._underlyingByteSource = underlyingByteSource; - this._pullAgain = false; - this._pulling = false; - ReadableByteStreamControllerClearPendingPullIntos(this); - this._queue = this._queueTotalSize = undefined; - ResetQueue(this); - this._closeRequested = false; - this._started = false; - this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark); - var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize; - if (autoAllocateChunkSize !== undefined) { - if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) { - throw new RangeError('autoAllocateChunkSize must be a positive integer'); - } - } - this._autoAllocateChunkSize = autoAllocateChunkSize; - this._pendingPullIntos = []; - var controller = this; - var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]); - Promise.resolve(startResult).then(function () { - controller._started = true; - assert(controller._pulling === false); - assert(controller._pullAgain === false); - ReadableByteStreamControllerCallPullIfNeeded(controller); - }, function (r) { - if (stream._state === 'readable') { - ReadableByteStreamControllerError(controller, r); - } - }).catch(rethrowAssertionErrorRejection); - } - _createClass(ReadableByteStreamController, [{ - key: 'close', - value: function close() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('close'); - } - if (this._closeRequested === true) { - throw new TypeError('The stream has already been closed; do not close it again!'); - } - var state = this._controlledReadableStream._state; - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); - } - ReadableByteStreamControllerClose(this); - } - }, { - key: 'enqueue', - value: function enqueue(chunk) { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('enqueue'); - } - if (this._closeRequested === true) { - throw new TypeError('stream is closed or draining'); - } - var state = this._controlledReadableStream._state; - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); - } - if (!ArrayBuffer.isView(chunk)) { - throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController'); - } - ReadableByteStreamControllerEnqueue(this, chunk); - } - }, { - key: 'error', - value: function error(e) { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('error'); - } - var stream = this._controlledReadableStream; - if (stream._state !== 'readable') { - throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); - } - ReadableByteStreamControllerError(this, e); - } - }, { - key: '__cancelSteps', - value: function __cancelSteps(reason) { - if (this._pendingPullIntos.length > 0) { - var firstDescriptor = this._pendingPullIntos[0]; - firstDescriptor.bytesFilled = 0; - } - ResetQueue(this); - return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]); - } - }, { - key: '__pullSteps', - value: function __pullSteps() { - var stream = this._controlledReadableStream; - assert(ReadableStreamHasDefaultReader(stream) === true); - if (this._queueTotalSize > 0) { - assert(ReadableStreamGetNumReadRequests(stream) === 0); - var entry = this._queue.shift(); - this._queueTotalSize -= entry.byteLength; - ReadableByteStreamControllerHandleQueueDrain(this); - var view = void 0; - try { - view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); - } catch (viewE) { - return Promise.reject(viewE); - } - return Promise.resolve(CreateIterResultObject(view, false)); - } - var autoAllocateChunkSize = this._autoAllocateChunkSize; - if (autoAllocateChunkSize !== undefined) { - var buffer = void 0; - try { - buffer = new ArrayBuffer(autoAllocateChunkSize); - } catch (bufferE) { - return Promise.reject(bufferE); - } - var pullIntoDescriptor = { - buffer: buffer, - byteOffset: 0, - byteLength: autoAllocateChunkSize, - bytesFilled: 0, - elementSize: 1, - ctor: Uint8Array, - readerType: 'default' - }; - this._pendingPullIntos.push(pullIntoDescriptor); - } - var promise = ReadableStreamAddReadRequest(stream); - ReadableByteStreamControllerCallPullIfNeeded(this); - return promise; - } - }, { - key: 'byobRequest', - get: function get() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('byobRequest'); - } - if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) { - var firstDescriptor = this._pendingPullIntos[0]; - var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled); - this._byobRequest = new ReadableStreamBYOBRequest(this, view); - } - return this._byobRequest; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('desiredSize'); - } - return ReadableByteStreamControllerGetDesiredSize(this); - } - }]); - return ReadableByteStreamController; - }(); - function IsReadableByteStreamController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) { - return false; - } - return true; - } - function IsReadableStreamBYOBRequest(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) { - return false; - } - return true; - } - function ReadableByteStreamControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableByteStreamControllerShouldCallPull(controller); - if (shouldPull === false) { - return undefined; - } - if (controller._pulling === true) { - controller._pullAgain = true; - return undefined; - } - assert(controller._pullAgain === false); - controller._pulling = true; - var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]); - pullPromise.then(function () { - controller._pulling = false; - if (controller._pullAgain === true) { - controller._pullAgain = false; - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - }, function (e) { - if (controller._controlledReadableStream._state === 'readable') { - ReadableByteStreamControllerError(controller, e); - } - }).catch(rethrowAssertionErrorRejection); - return undefined; - } - function ReadableByteStreamControllerClearPendingPullIntos(controller) { - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - controller._pendingPullIntos = []; - } - function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) { - assert(stream._state !== 'errored', 'state must not be errored'); - var done = false; - if (stream._state === 'closed') { - assert(pullIntoDescriptor.bytesFilled === 0); - done = true; - } - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - if (pullIntoDescriptor.readerType === 'default') { - ReadableStreamFulfillReadRequest(stream, filledView, done); - } else { - assert(pullIntoDescriptor.readerType === 'byob'); - ReadableStreamFulfillReadIntoRequest(stream, filledView, done); - } - } - function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) { - var bytesFilled = pullIntoDescriptor.bytesFilled; - var elementSize = pullIntoDescriptor.elementSize; - assert(bytesFilled <= pullIntoDescriptor.byteLength); - assert(bytesFilled % elementSize === 0); - return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize); - } - function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) { - controller._queue.push({ - buffer: buffer, - byteOffset: byteOffset, - byteLength: byteLength - }); - controller._queueTotalSize += byteLength; - } - function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) { - var elementSize = pullIntoDescriptor.elementSize; - var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize; - var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled); - var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy; - var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize; - var totalBytesToCopyRemaining = maxBytesToCopy; - var ready = false; - if (maxAlignedBytes > currentAlignedBytes) { - totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled; - ready = true; - } - var queue = controller._queue; - while (totalBytesToCopyRemaining > 0) { - var headOfQueue = queue[0]; - var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength); - var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy); - if (headOfQueue.byteLength === bytesToCopy) { - queue.shift(); - } else { - headOfQueue.byteOffset += bytesToCopy; - headOfQueue.byteLength -= bytesToCopy; - } - controller._queueTotalSize -= bytesToCopy; - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor); - totalBytesToCopyRemaining -= bytesToCopy; - } - if (ready === false) { - assert(controller._queueTotalSize === 0, 'queue must be empty'); - assert(pullIntoDescriptor.bytesFilled > 0); - assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize); - } - return ready; - } - function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) { - assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor); - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - pullIntoDescriptor.bytesFilled += size; - } - function ReadableByteStreamControllerHandleQueueDrain(controller) { - assert(controller._controlledReadableStream._state === 'readable'); - if (controller._queueTotalSize === 0 && controller._closeRequested === true) { - ReadableStreamClose(controller._controlledReadableStream); - } else { - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - } - function ReadableByteStreamControllerInvalidateBYOBRequest(controller) { - if (controller._byobRequest === undefined) { - return; - } - controller._byobRequest._associatedReadableByteStreamController = undefined; - controller._byobRequest._view = undefined; - controller._byobRequest = undefined; - } - function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) { - assert(controller._closeRequested === false); - while (controller._pendingPullIntos.length > 0) { - if (controller._queueTotalSize === 0) { - return; - } - var pullIntoDescriptor = controller._pendingPullIntos[0]; - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { - ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); - } - } - } - function ReadableByteStreamControllerPullInto(controller, view) { - var stream = controller._controlledReadableStream; - var elementSize = 1; - if (view.constructor !== DataView) { - elementSize = view.constructor.BYTES_PER_ELEMENT; - } - var ctor = view.constructor; - var pullIntoDescriptor = { - buffer: view.buffer, - byteOffset: view.byteOffset, - byteLength: view.byteLength, - bytesFilled: 0, - elementSize: elementSize, - ctor: ctor, - readerType: 'byob' - }; - if (controller._pendingPullIntos.length > 0) { - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - controller._pendingPullIntos.push(pullIntoDescriptor); - return ReadableStreamAddReadIntoRequest(stream); - } - if (stream._state === 'closed') { - var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0); - return Promise.resolve(CreateIterResultObject(emptyView, true)); - } - if (controller._queueTotalSize > 0) { - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - ReadableByteStreamControllerHandleQueueDrain(controller); - return Promise.resolve(CreateIterResultObject(filledView, false)); - } - if (controller._closeRequested === true) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - return Promise.reject(e); - } - } - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - controller._pendingPullIntos.push(pullIntoDescriptor); - var promise = ReadableStreamAddReadIntoRequest(stream); - ReadableByteStreamControllerCallPullIfNeeded(controller); - return promise; - } - function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) { - firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer); - assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0'); - var stream = controller._controlledReadableStream; - if (ReadableStreamHasBYOBReader(stream) === true) { - while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { - var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor); - } - } - } - function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) { - if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) { - throw new RangeError('bytesWritten out of range'); - } - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor); - if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) { - return; - } - ReadableByteStreamControllerShiftPendingPullInto(controller); - var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize; - if (remainderSize > 0) { - var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end); - ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength); - } - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - pullIntoDescriptor.bytesFilled -= remainderSize; - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); - } - function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) { - var firstDescriptor = controller._pendingPullIntos[0]; - var stream = controller._controlledReadableStream; - if (stream._state === 'closed') { - if (bytesWritten !== 0) { - throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream'); - } - ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor); - } else { - assert(stream._state === 'readable'); - ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor); - } - } - function ReadableByteStreamControllerShiftPendingPullInto(controller) { - var descriptor = controller._pendingPullIntos.shift(); - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - return descriptor; - } - function ReadableByteStreamControllerShouldCallPull(controller) { - var stream = controller._controlledReadableStream; - if (stream._state !== 'readable') { - return false; - } - if (controller._closeRequested === true) { - return false; - } - if (controller._started === false) { - return false; - } - if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) { - return true; - } - if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) { - return true; - } - return false; - } - function ReadableByteStreamControllerClose(controller) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - if (controller._queueTotalSize > 0) { - controller._closeRequested = true; - return; - } - if (controller._pendingPullIntos.length > 0) { - var firstPendingPullInto = controller._pendingPullIntos[0]; - if (firstPendingPullInto.bytesFilled > 0) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - throw e; - } - } - ReadableStreamClose(stream); - } - function ReadableByteStreamControllerEnqueue(controller, chunk) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - var buffer = chunk.buffer; - var byteOffset = chunk.byteOffset; - var byteLength = chunk.byteLength; - var transferredBuffer = TransferArrayBuffer(buffer); - if (ReadableStreamHasDefaultReader(stream) === true) { - if (ReadableStreamGetNumReadRequests(stream) === 0) { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } else { - assert(controller._queue.length === 0); - var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength); - ReadableStreamFulfillReadRequest(stream, transferredView, false); - } - } else if (ReadableStreamHasBYOBReader(stream) === true) { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); - } else { - assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked'); - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } - } - function ReadableByteStreamControllerError(controller, e) { - var stream = controller._controlledReadableStream; - assert(stream._state === 'readable'); - ReadableByteStreamControllerClearPendingPullIntos(controller); - ResetQueue(controller); - ReadableStreamError(stream, e); - } - function ReadableByteStreamControllerGetDesiredSize(controller) { - var stream = controller._controlledReadableStream; - var state = stream._state; - if (state === 'errored') { - return null; - } - if (state === 'closed') { - return 0; - } - return controller._strategyHWM - controller._queueTotalSize; - } - function ReadableByteStreamControllerRespond(controller, bytesWritten) { - bytesWritten = Number(bytesWritten); - if (IsFiniteNonNegativeNumber(bytesWritten) === false) { - throw new RangeError('bytesWritten must be a finite'); - } - assert(controller._pendingPullIntos.length > 0); - ReadableByteStreamControllerRespondInternal(controller, bytesWritten); - } - function ReadableByteStreamControllerRespondWithNewView(controller, view) { - assert(controller._pendingPullIntos.length > 0); - var firstDescriptor = controller._pendingPullIntos[0]; - if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) { - throw new RangeError('The region specified by view does not match byobRequest'); - } - if (firstDescriptor.byteLength !== view.byteLength) { - throw new RangeError('The buffer of view has different capacity than byobRequest'); - } - firstDescriptor.buffer = view.buffer; - ReadableByteStreamControllerRespondInternal(controller, view.byteLength); - } - function streamBrandCheckException(name) { - return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream'); - } - function readerLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released reader'); - } - function defaultReaderBrandCheckException(name) { - return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader'); - } - function defaultReaderClosedPromiseInitialize(reader) { - reader._closedPromise = new Promise(function (resolve, reject) { - reader._closedPromise_resolve = resolve; - reader._closedPromise_reject = reject; - }); - } - function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) { - reader._closedPromise = Promise.reject(reason); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - function defaultReaderClosedPromiseInitializeAsResolved(reader) { - reader._closedPromise = Promise.resolve(undefined); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - function defaultReaderClosedPromiseReject(reader, reason) { - assert(reader._closedPromise_resolve !== undefined); - assert(reader._closedPromise_reject !== undefined); - reader._closedPromise_reject(reason); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - function defaultReaderClosedPromiseResetToRejected(reader, reason) { - assert(reader._closedPromise_resolve === undefined); - assert(reader._closedPromise_reject === undefined); - reader._closedPromise = Promise.reject(reason); - } - function defaultReaderClosedPromiseResolve(reader) { - assert(reader._closedPromise_resolve !== undefined); - assert(reader._closedPromise_reject !== undefined); - reader._closedPromise_resolve(undefined); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - function byobReaderBrandCheckException(name) { - return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader'); - } - function defaultControllerBrandCheckException(name) { - return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController'); - } - function byobRequestBrandCheckException(name) { - return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest'); - } - function byteStreamControllerBrandCheckException(name) { - return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController'); - } - function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) { - try { - Promise.prototype.then.call(promise, undefined, function () {}); - } catch (e) {} - } -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var transformStream = __w_pdfjs_require__(6); - var readableStream = __w_pdfjs_require__(4); - var writableStream = __w_pdfjs_require__(2); - exports.TransformStream = transformStream.TransformStream; - exports.ReadableStream = readableStream.ReadableStream; - exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed; - exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose; - exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue; - exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError; - exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize; - exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter; - exports.IsWritableStream = writableStream.IsWritableStream; - exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked; - exports.WritableStream = writableStream.WritableStream; - exports.WritableStreamAbort = writableStream.WritableStreamAbort; - exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError; - exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation; - exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease; - exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - var _require = __w_pdfjs_require__(1), - assert = _require.assert; - var _require2 = __w_pdfjs_require__(0), - InvokeOrNoop = _require2.InvokeOrNoop, - PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback, - PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop, - typeIsObject = _require2.typeIsObject; - var _require3 = __w_pdfjs_require__(4), - ReadableStream = _require3.ReadableStream, - ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose, - ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue, - ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError, - ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize; - var _require4 = __w_pdfjs_require__(2), - WritableStream = _require4.WritableStream, - WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError; - function TransformStreamCloseReadable(transformStream) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - if (transformStream._readableClosed === true) { - throw new TypeError('Readable side is already closed'); - } - TransformStreamCloseReadableInternal(transformStream); - } - function TransformStreamEnqueueToReadable(transformStream, chunk) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - if (transformStream._readableClosed === true) { - throw new TypeError('Readable side is already closed'); - } - var controller = transformStream._readableController; - try { - ReadableStreamDefaultControllerEnqueue(controller, chunk); - } catch (e) { - transformStream._readableClosed = true; - TransformStreamErrorIfNeeded(transformStream, e); - throw transformStream._storedError; - } - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); - var maybeBackpressure = desiredSize <= 0; - if (maybeBackpressure === true && transformStream._backpressure === false) { - TransformStreamSetBackpressure(transformStream, true); - } - } - function TransformStreamError(transformStream, e) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - TransformStreamErrorInternal(transformStream, e); - } - function TransformStreamCloseReadableInternal(transformStream) { - assert(transformStream._errored === false); - assert(transformStream._readableClosed === false); - try { - ReadableStreamDefaultControllerClose(transformStream._readableController); - } catch (e) { - assert(false); - } - transformStream._readableClosed = true; - } - function TransformStreamErrorIfNeeded(transformStream, e) { - if (transformStream._errored === false) { - TransformStreamErrorInternal(transformStream, e); - } - } - function TransformStreamErrorInternal(transformStream, e) { - assert(transformStream._errored === false); - transformStream._errored = true; - transformStream._storedError = e; - if (transformStream._writableDone === false) { - WritableStreamDefaultControllerError(transformStream._writableController, e); - } - if (transformStream._readableClosed === false) { - ReadableStreamDefaultControllerError(transformStream._readableController, e); - } - } - function TransformStreamReadableReadyPromise(transformStream) { - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - if (transformStream._backpressure === false) { - return Promise.resolve(); - } - assert(transformStream._backpressure === true, '_backpressure should have been initialized'); - return transformStream._backpressureChangePromise; - } - function TransformStreamSetBackpressure(transformStream, backpressure) { - assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed'); - if (transformStream._backpressureChangePromise !== undefined) { - transformStream._backpressureChangePromise_resolve(backpressure); - } - transformStream._backpressureChangePromise = new Promise(function (resolve) { - transformStream._backpressureChangePromise_resolve = resolve; - }); - transformStream._backpressureChangePromise.then(function (resolution) { - assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed'); - }); - transformStream._backpressure = backpressure; - } - function TransformStreamDefaultTransform(chunk, transformStreamController) { - var transformStream = transformStreamController._controlledTransformStream; - TransformStreamEnqueueToReadable(transformStream, chunk); - return Promise.resolve(); - } - function TransformStreamTransform(transformStream, chunk) { - assert(transformStream._errored === false); - assert(transformStream._transforming === false); - assert(transformStream._backpressure === false); - transformStream._transforming = true; - var transformer = transformStream._transformer; - var controller = transformStream._transformStreamController; - var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]); - return transformPromise.then(function () { - transformStream._transforming = false; - return TransformStreamReadableReadyPromise(transformStream); - }, function (e) { - TransformStreamErrorIfNeeded(transformStream, e); - return Promise.reject(e); - }); - } - function IsTransformStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) { - return false; - } - return true; - } - function IsTransformStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) { - return false; - } - return true; - } - var TransformStreamSink = function () { - function TransformStreamSink(transformStream, startPromise) { - _classCallCheck(this, TransformStreamSink); - this._transformStream = transformStream; - this._startPromise = startPromise; - } - _createClass(TransformStreamSink, [{ - key: 'start', - value: function start(c) { - var transformStream = this._transformStream; - transformStream._writableController = c; - return this._startPromise.then(function () { - return TransformStreamReadableReadyPromise(transformStream); - }); - } - }, { - key: 'write', - value: function write(chunk) { - var transformStream = this._transformStream; - return TransformStreamTransform(transformStream, chunk); - } - }, { - key: 'abort', - value: function abort() { - var transformStream = this._transformStream; - transformStream._writableDone = true; - TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted')); - } - }, { - key: 'close', - value: function close() { - var transformStream = this._transformStream; - assert(transformStream._transforming === false); - transformStream._writableDone = true; - var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]); - return flushPromise.then(function () { - if (transformStream._errored === true) { - return Promise.reject(transformStream._storedError); - } - if (transformStream._readableClosed === false) { - TransformStreamCloseReadableInternal(transformStream); - } - return Promise.resolve(); - }).catch(function (r) { - TransformStreamErrorIfNeeded(transformStream, r); - return Promise.reject(transformStream._storedError); - }); - } - }]); - return TransformStreamSink; - }(); - var TransformStreamSource = function () { - function TransformStreamSource(transformStream, startPromise) { - _classCallCheck(this, TransformStreamSource); - this._transformStream = transformStream; - this._startPromise = startPromise; - } - _createClass(TransformStreamSource, [{ - key: 'start', - value: function start(c) { - var transformStream = this._transformStream; - transformStream._readableController = c; - return this._startPromise.then(function () { - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - if (transformStream._backpressure === true) { - return Promise.resolve(); - } - assert(transformStream._backpressure === false, '_backpressure should have been initialized'); - return transformStream._backpressureChangePromise; - }); - } - }, { - key: 'pull', - value: function pull() { - var transformStream = this._transformStream; - assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false'); - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - TransformStreamSetBackpressure(transformStream, false); - return transformStream._backpressureChangePromise; - } - }, { - key: 'cancel', - value: function cancel() { - var transformStream = this._transformStream; - transformStream._readableClosed = true; - TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled')); - } - }]); - return TransformStreamSource; - }(); - var TransformStreamDefaultController = function () { - function TransformStreamDefaultController(transformStream) { - _classCallCheck(this, TransformStreamDefaultController); - if (IsTransformStream(transformStream) === false) { - throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance'); - } - if (transformStream._transformStreamController !== undefined) { - throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor'); - } - this._controlledTransformStream = transformStream; - } - _createClass(TransformStreamDefaultController, [{ - key: 'enqueue', - value: function enqueue(chunk) { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('enqueue'); - } - TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk); - } - }, { - key: 'close', - value: function close() { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('close'); - } - TransformStreamCloseReadable(this._controlledTransformStream); - } - }, { - key: 'error', - value: function error(reason) { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('error'); - } - TransformStreamError(this._controlledTransformStream, reason); - } - }, { - key: 'desiredSize', - get: function get() { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('desiredSize'); - } - var transformStream = this._controlledTransformStream; - var readableController = transformStream._readableController; - return ReadableStreamDefaultControllerGetDesiredSize(readableController); - } - }]); - return TransformStreamDefaultController; - }(); - var TransformStream = function () { - function TransformStream() { - var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - _classCallCheck(this, TransformStream); - this._transformer = transformer; - var readableStrategy = transformer.readableStrategy, - writableStrategy = transformer.writableStrategy; - this._transforming = false; - this._errored = false; - this._storedError = undefined; - this._writableController = undefined; - this._readableController = undefined; - this._transformStreamController = undefined; - this._writableDone = false; - this._readableClosed = false; - this._backpressure = undefined; - this._backpressureChangePromise = undefined; - this._backpressureChangePromise_resolve = undefined; - this._transformStreamController = new TransformStreamDefaultController(this); - var startPromise_resolve = void 0; - var startPromise = new Promise(function (resolve) { - startPromise_resolve = resolve; - }); - var source = new TransformStreamSource(this, startPromise); - this._readable = new ReadableStream(source, readableStrategy); - var sink = new TransformStreamSink(this, startPromise); - this._writable = new WritableStream(sink, writableStrategy); - assert(this._writableController !== undefined); - assert(this._readableController !== undefined); - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController); - TransformStreamSetBackpressure(this, desiredSize <= 0); - var transformStream = this; - var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]); - startPromise_resolve(startResult); - startPromise.catch(function (e) { - if (transformStream._errored === false) { - transformStream._errored = true; - transformStream._storedError = e; - } - }); - } - _createClass(TransformStream, [{ - key: 'readable', - get: function get() { - if (IsTransformStream(this) === false) { - throw streamBrandCheckException('readable'); - } - return this._readable; - } - }, { - key: 'writable', - get: function get() { - if (IsTransformStream(this) === false) { - throw streamBrandCheckException('writable'); - } - return this._writable; - } - }]); - return TransformStream; - }(); - module.exports = { TransformStream: TransformStream }; - function defaultControllerBrandCheckException(name) { - return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController'); - } - function streamBrandCheckException(name) { - return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream'); - } -}, function (module, exports, __w_pdfjs_require__) { - module.exports = __w_pdfjs_require__(5); -}])); - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.CanvasGraphics = undefined; +})); +exports.CanvasGraphics = void 0; -var _util = __w_pdfjs_require__(0); +var _util = __w_pdfjs_require__(1); -var _pattern_helper = __w_pdfjs_require__(13); +var _pattern_helper = __w_pdfjs_require__(11); -var _webgl = __w_pdfjs_require__(7); +var _image_utils = __w_pdfjs_require__(12); -var MIN_FONT_SIZE = 16; -var MAX_FONT_SIZE = 100; -var MAX_GROUP_SIZE = 4096; -var MIN_WIDTH_FACTOR = 0.65; -var COMPILE_TYPE3_GLYPHS = true; -var MAX_SIZE_TO_COMPILE = 1000; -var FULL_CHUNK_HEIGHT = 16; -var IsLittleEndianCached = { - get value() { - return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)()); - } -}; -function addContextCurrentTransform(ctx) { - if (!ctx.mozCurrentTransform) { - ctx._originalSave = ctx.save; - ctx._originalRestore = ctx.restore; - ctx._originalRotate = ctx.rotate; - ctx._originalScale = ctx.scale; - ctx._originalTranslate = ctx.translate; - ctx._originalTransform = ctx.transform; - ctx._originalSetTransform = ctx.setTransform; - ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0]; - ctx._transformStack = []; - Object.defineProperty(ctx, 'mozCurrentTransform', { - get: function getCurrentTransform() { - return this._transformMatrix; - } - }); - Object.defineProperty(ctx, 'mozCurrentTransformInverse', { - get: function getCurrentTransformInverse() { - var m = this._transformMatrix; - var a = m[0], - b = m[1], - c = m[2], - d = m[3], - e = m[4], - f = m[5]; - var ad_bc = a * d - b * c; - var bc_ad = b * c - a * d; - return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc]; - } - }); - ctx.save = function ctxSave() { - var old = this._transformMatrix; - this._transformStack.push(old); - this._transformMatrix = old.slice(0, 6); - this._originalSave(); - }; - ctx.restore = function ctxRestore() { - var prev = this._transformStack.pop(); - if (prev) { - this._transformMatrix = prev; - this._originalRestore(); - } - }; - ctx.translate = function ctxTranslate(x, y) { - var m = this._transformMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - this._originalTranslate(x, y); - }; - ctx.scale = function ctxScale(x, y) { - var m = this._transformMatrix; - m[0] = m[0] * x; - m[1] = m[1] * x; - m[2] = m[2] * y; - m[3] = m[3] * y; - this._originalScale(x, y); - }; - ctx.transform = function ctxTransform(a, b, c, d, e, f) { - var m = this._transformMatrix; - this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]]; - ctx._originalTransform(a, b, c, d, e, f); - }; - ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { - this._transformMatrix = [a, b, c, d, e, f]; - ctx._originalSetTransform(a, b, c, d, e, f); - }; - ctx.rotate = function ctxRotate(angle) { - var cosValue = Math.cos(angle); - var sinValue = Math.sin(angle); - var m = this._transformMatrix; - this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]]; - this._originalRotate(angle); - }; +var _is_node = __w_pdfjs_require__(3); + +var _display_utils = __w_pdfjs_require__(5); + +const MIN_FONT_SIZE = 16; +const MAX_FONT_SIZE = 100; +const MAX_GROUP_SIZE = 4096; +const EXECUTION_TIME = 15; +const EXECUTION_STEPS = 10; +const COMPILE_TYPE3_GLYPHS = true; +const MAX_SIZE_TO_COMPILE = 1000; +const FULL_CHUNK_HEIGHT = 16; +const LINEWIDTH_SCALE_FACTOR = 1.000001; + +function mirrorContextOperations(ctx, destCtx) { + if (ctx._removeMirroring) { + throw new Error("Context is already forwarding operations."); } + + ctx.__originalSave = ctx.save; + ctx.__originalRestore = ctx.restore; + ctx.__originalRotate = ctx.rotate; + ctx.__originalScale = ctx.scale; + ctx.__originalTranslate = ctx.translate; + ctx.__originalTransform = ctx.transform; + ctx.__originalSetTransform = ctx.setTransform; + ctx.__originalResetTransform = ctx.resetTransform; + ctx.__originalClip = ctx.clip; + ctx.__originalMoveTo = ctx.moveTo; + ctx.__originalLineTo = ctx.lineTo; + ctx.__originalBezierCurveTo = ctx.bezierCurveTo; + ctx.__originalRect = ctx.rect; + ctx.__originalClosePath = ctx.closePath; + ctx.__originalBeginPath = ctx.beginPath; + + ctx._removeMirroring = () => { + ctx.save = ctx.__originalSave; + ctx.restore = ctx.__originalRestore; + ctx.rotate = ctx.__originalRotate; + ctx.scale = ctx.__originalScale; + ctx.translate = ctx.__originalTranslate; + ctx.transform = ctx.__originalTransform; + ctx.setTransform = ctx.__originalSetTransform; + ctx.resetTransform = ctx.__originalResetTransform; + ctx.clip = ctx.__originalClip; + ctx.moveTo = ctx.__originalMoveTo; + ctx.lineTo = ctx.__originalLineTo; + ctx.bezierCurveTo = ctx.__originalBezierCurveTo; + ctx.rect = ctx.__originalRect; + ctx.closePath = ctx.__originalClosePath; + ctx.beginPath = ctx.__originalBeginPath; + delete ctx._removeMirroring; + }; + + ctx.save = function ctxSave() { + destCtx.save(); + + this.__originalSave(); + }; + + ctx.restore = function ctxRestore() { + destCtx.restore(); + + this.__originalRestore(); + }; + + ctx.translate = function ctxTranslate(x, y) { + destCtx.translate(x, y); + + this.__originalTranslate(x, y); + }; + + ctx.scale = function ctxScale(x, y) { + destCtx.scale(x, y); + + this.__originalScale(x, y); + }; + + ctx.transform = function ctxTransform(a, b, c, d, e, f) { + destCtx.transform(a, b, c, d, e, f); + + this.__originalTransform(a, b, c, d, e, f); + }; + + ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { + destCtx.setTransform(a, b, c, d, e, f); + + this.__originalSetTransform(a, b, c, d, e, f); + }; + + ctx.resetTransform = function ctxResetTransform() { + destCtx.resetTransform(); + + this.__originalResetTransform(); + }; + + ctx.rotate = function ctxRotate(angle) { + destCtx.rotate(angle); + + this.__originalRotate(angle); + }; + + ctx.clip = function ctxRotate(rule) { + destCtx.clip(rule); + + this.__originalClip(rule); + }; + + ctx.moveTo = function (x, y) { + destCtx.moveTo(x, y); + + this.__originalMoveTo(x, y); + }; + + ctx.lineTo = function (x, y) { + destCtx.lineTo(x, y); + + this.__originalLineTo(x, y); + }; + + ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) { + destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + + this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + }; + + ctx.rect = function (x, y, width, height) { + destCtx.rect(x, y, width, height); + + this.__originalRect(x, y, width, height); + }; + + ctx.closePath = function () { + destCtx.closePath(); + + this.__originalClosePath(); + }; + + ctx.beginPath = function () { + destCtx.beginPath(); + + this.__originalBeginPath(); + }; } -var CachedCanvases = function CachedCanvasesClosure() { - function CachedCanvases(canvasFactory) { + +function addContextCurrentTransform(ctx) { + if (ctx._transformStack) { + ctx._transformStack = []; + } + + if (ctx.mozCurrentTransform) { + return; + } + + ctx._originalSave = ctx.save; + ctx._originalRestore = ctx.restore; + ctx._originalRotate = ctx.rotate; + ctx._originalScale = ctx.scale; + ctx._originalTranslate = ctx.translate; + ctx._originalTransform = ctx.transform; + ctx._originalSetTransform = ctx.setTransform; + ctx._originalResetTransform = ctx.resetTransform; + ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0]; + ctx._transformStack = []; + + try { + const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), "lineWidth"); + ctx._setLineWidth = desc.set; + ctx._getLineWidth = desc.get; + Object.defineProperty(ctx, "lineWidth", { + set: function setLineWidth(width) { + this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR); + }, + get: function getLineWidth() { + return this._getLineWidth(); + } + }); + } catch (_) {} + + Object.defineProperty(ctx, "mozCurrentTransform", { + get: function getCurrentTransform() { + return this._transformMatrix; + } + }); + Object.defineProperty(ctx, "mozCurrentTransformInverse", { + get: function getCurrentTransformInverse() { + const [a, b, c, d, e, f] = this._transformMatrix; + const ad_bc = a * d - b * c; + const bc_ad = b * c - a * d; + return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc]; + } + }); + + ctx.save = function ctxSave() { + const old = this._transformMatrix; + + this._transformStack.push(old); + + this._transformMatrix = old.slice(0, 6); + + this._originalSave(); + }; + + ctx.restore = function ctxRestore() { + if (this._transformStack.length === 0) { + (0, _util.warn)("Tried to restore a ctx when the stack was already empty."); + } + + const prev = this._transformStack.pop(); + + if (prev) { + this._transformMatrix = prev; + + this._originalRestore(); + } + }; + + ctx.translate = function ctxTranslate(x, y) { + const m = this._transformMatrix; + m[4] = m[0] * x + m[2] * y + m[4]; + m[5] = m[1] * x + m[3] * y + m[5]; + + this._originalTranslate(x, y); + }; + + ctx.scale = function ctxScale(x, y) { + const m = this._transformMatrix; + m[0] *= x; + m[1] *= x; + m[2] *= y; + m[3] *= y; + + this._originalScale(x, y); + }; + + ctx.transform = function ctxTransform(a, b, c, d, e, f) { + const m = this._transformMatrix; + this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]]; + + ctx._originalTransform(a, b, c, d, e, f); + }; + + ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { + this._transformMatrix = [a, b, c, d, e, f]; + + ctx._originalSetTransform(a, b, c, d, e, f); + }; + + ctx.resetTransform = function ctxResetTransform() { + this._transformMatrix = [1, 0, 0, 1, 0, 0]; + + ctx._originalResetTransform(); + }; + + ctx.rotate = function ctxRotate(angle) { + const cosValue = Math.cos(angle); + const sinValue = Math.sin(angle); + const m = this._transformMatrix; + this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]]; + + this._originalRotate(angle); + }; +} + +class CachedCanvases { + constructor(canvasFactory) { this.canvasFactory = canvasFactory; this.cache = Object.create(null); } - CachedCanvases.prototype = { - getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) { - var canvasEntry; - if (this.cache[id] !== undefined) { - canvasEntry = this.cache[id]; - this.canvasFactory.reset(canvasEntry, width, height); - canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0); - } else { - canvasEntry = this.canvasFactory.create(width, height); - this.cache[id] = canvasEntry; - } - if (trackTransform) { - addContextCurrentTransform(canvasEntry.context); - } - return canvasEntry; - }, - clear: function clear() { - for (var id in this.cache) { - var canvasEntry = this.cache[id]; - this.canvasFactory.destroy(canvasEntry); - delete this.cache[id]; - } + + getCanvas(id, width, height, trackTransform) { + let canvasEntry; + + if (this.cache[id] !== undefined) { + canvasEntry = this.cache[id]; + this.canvasFactory.reset(canvasEntry, width, height); + canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0); + } else { + canvasEntry = this.canvasFactory.create(width, height); + this.cache[id] = canvasEntry; } - }; - return CachedCanvases; -}(); + + if (trackTransform) { + addContextCurrentTransform(canvasEntry.context); + } + + return canvasEntry; + } + + delete(id) { + delete this.cache[id]; + } + + clear() { + for (const id in this.cache) { + const canvasEntry = this.cache[id]; + this.canvasFactory.destroy(canvasEntry); + delete this.cache[id]; + } + } + +} + +function drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) { + const [a, b, c, d, tx, ty] = ctx.mozCurrentTransform; + + if (b === 0 && c === 0) { + const tlX = destX * a + tx; + const rTlX = Math.round(tlX); + const tlY = destY * d + ty; + const rTlY = Math.round(tlY); + const brX = (destX + destW) * a + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destY + destH) * d + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight); + ctx.setTransform(a, b, c, d, tx, ty); + return [rWidth, rHeight]; + } + + if (a === 0 && d === 0) { + const tlX = destY * c + tx; + const rTlX = Math.round(tlX); + const tlY = destX * b + ty; + const rTlY = Math.round(tlY); + const brX = (destY + destH) * c + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destX + destW) * b + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth); + ctx.setTransform(a, b, c, d, tx, ty); + return [rHeight, rWidth]; + } + + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH); + const scaleX = Math.hypot(a, b); + const scaleY = Math.hypot(c, d); + return [scaleX * destW, scaleY * destH]; +} + function compileType3Glyph(imgData) { - var POINT_TO_PROCESS_LIMIT = 1000; - var width = imgData.width, - height = imgData.height; - var i, - j, - j0, - width1 = width + 1; - var points = new Uint8Array(width1 * (height + 1)); - var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); - var lineSize = width + 7 & ~7, - data0 = imgData.data; - var data = new Uint8Array(lineSize * height), - pos = 0, - ii; - for (i = 0, ii = data0.length; i < ii; i++) { - var mask = 128, - elem = data0[i]; + const { + width, + height + } = imgData; + + if (!COMPILE_TYPE3_GLYPHS || width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) { + return null; + } + + const POINT_TO_PROCESS_LIMIT = 1000; + const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); + const width1 = width + 1; + let points = new Uint8Array(width1 * (height + 1)); + let i, j, j0; + const lineSize = width + 7 & ~7; + let data = new Uint8Array(lineSize * height), + pos = 0; + + for (const elem of imgData.data) { + let mask = 128; + while (mask > 0) { data[pos++] = elem & mask ? 0 : 255; mask >>= 1; } } - var count = 0; + + let count = 0; pos = 0; + if (data[pos] !== 0) { points[0] = 1; ++count; } + for (j = 1; j < width; j++) { if (data[pos] !== data[pos + 1]) { points[j] = data[pos] ? 2 : 1; ++count; } + pos++; } + if (data[pos] !== 0) { points[j] = 2; ++count; } + for (i = 1; i < height; i++) { pos = i * lineSize; j0 = i * width1; + if (data[pos - lineSize] !== data[pos]) { points[j0] = data[pos] ? 1 : 8; ++count; } - var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); + + let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); + for (j = 1; j < width; j++) { sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0); + if (POINT_TYPES[sum]) { points[j0 + j] = POINT_TYPES[sum]; ++count; } + pos++; } + if (data[pos - lineSize] !== data[pos]) { points[j0 + j] = data[pos] ? 2 : 4; ++count; } + if (count > POINT_TO_PROCESS_LIMIT) { return null; } } + pos = lineSize * (height - 1); j0 = i * width1; + if (data[pos] !== 0) { points[j0] = 8; ++count; } + for (j = 1; j < width; j++) { if (data[pos] !== data[pos + 1]) { points[j0 + j] = data[pos] ? 4 : 8; ++count; } + pos++; } + if (data[pos] !== 0) { points[j0 + j] = 4; ++count; } + if (count > POINT_TO_PROCESS_LIMIT) { return null; } - var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); - var outlines = []; + + const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); + let path, outlines, coords; + + if (!_is_node.isNodeJS) { + path = new Path2D(); + } else { + outlines = []; + } + for (i = 0; count && i <= height; i++) { - var p = i * width1; - var end = p + width; + let p = i * width1; + const end = p + width; + while (p < end && !points[p]) { p++; } + if (p === end) { continue; } - var coords = [p % width1, i]; - var type = points[p], - p0 = p, - pp; + + if (path) { + path.moveTo(p % width1, i); + } else { + coords = [p % width1, i]; + } + + const p0 = p; + let type = points[p]; + do { - var step = steps[type]; + const step = steps[type]; + do { p += step; } while (!points[p]); - pp = points[p]; + + const pp = points[p]; + if (pp !== 5 && pp !== 10) { type = pp; points[p] = 0; @@ -9927,33 +5289,58 @@ function compileType3Glyph(imgData) { type = pp & 0x33 * type >> 4; points[p] &= type >> 2 | type << 2; } - coords.push(p % width1); - coords.push(p / width1 | 0); - --count; + + if (path) { + path.lineTo(p % width1, p / width1 | 0); + } else { + coords.push(p % width1, p / width1 | 0); + } + + if (!points[p]) { + --count; + } } while (p0 !== p); - outlines.push(coords); + + if (!path) { + outlines.push(coords); + } + --i; } - var drawOutline = function drawOutline(c) { + + data = null; + points = null; + + const drawOutline = function (c) { c.save(); c.scale(1 / width, -1 / height); c.translate(0, -height); - c.beginPath(); - for (var i = 0, ii = outlines.length; i < ii; i++) { - var o = outlines[i]; - c.moveTo(o[0], o[1]); - for (var j = 2, jj = o.length; j < jj; j += 2) { - c.lineTo(o[j], o[j + 1]); + + if (path) { + c.fill(path); + } else { + c.beginPath(); + + for (const o of outlines) { + c.moveTo(o[0], o[1]); + + for (let l = 2, ll = o.length; l < ll; l += 2) { + c.lineTo(o[l], o[l + 1]); + } } + + c.fill(); } - c.fill(); + c.beginPath(); c.restore(); }; + return drawOutline; } -var CanvasExtraState = function CanvasExtraStateClosure() { - function CanvasExtraState() { + +class CanvasExtraState { + constructor(width, height) { this.alphaIsShape = false; this.fontSize = 0; this.fontSizeScale = 1; @@ -9970,32 +5357,478 @@ var CanvasExtraState = function CanvasExtraStateClosure() { this.textHScale = 1; this.textRenderingMode = _util.TextRenderingMode.FILL; this.textRise = 0; - this.fillColor = '#000000'; - this.strokeColor = '#000000'; + this.fillColor = "#000000"; + this.strokeColor = "#000000"; this.patternFill = false; this.fillAlpha = 1; this.strokeAlpha = 1; this.lineWidth = 1; this.activeSMask = null; - this.resumeSMaskCtx = null; + this.transferMaps = null; + this.startNewPathAndClipBox([0, 0, width, height]); } - CanvasExtraState.prototype = { - clone: function CanvasExtraState_clone() { - return Object.create(this); - }, - setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) { - this.x = x; - this.y = y; + + clone() { + const clone = Object.create(this); + clone.clipBox = this.clipBox.slice(); + return clone; + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + + updatePathMinMax(transform, x, y) { + [x, y] = _util.Util.applyTransform([x, y], transform); + this.minX = Math.min(this.minX, x); + this.minY = Math.min(this.minY, y); + this.maxX = Math.max(this.maxX, x); + this.maxY = Math.max(this.maxY, y); + } + + updateRectMinMax(transform, rect) { + const p1 = _util.Util.applyTransform(rect, transform); + + const p2 = _util.Util.applyTransform(rect.slice(2), transform); + + this.minX = Math.min(this.minX, p1[0], p2[0]); + this.minY = Math.min(this.minY, p1[1], p2[1]); + this.maxX = Math.max(this.maxX, p1[0], p2[0]); + this.maxY = Math.max(this.maxY, p1[1], p2[1]); + } + + updateScalingPathMinMax(transform, minMax) { + _util.Util.scaleMinMax(transform, minMax); + + this.minX = Math.min(this.minX, minMax[0]); + this.maxX = Math.max(this.maxX, minMax[1]); + this.minY = Math.min(this.minY, minMax[2]); + this.maxY = Math.max(this.maxY, minMax[3]); + } + + updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) { + const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3); + + if (minMax) { + minMax[0] = Math.min(minMax[0], box[0], box[2]); + minMax[1] = Math.max(minMax[1], box[0], box[2]); + minMax[2] = Math.min(minMax[2], box[1], box[3]); + minMax[3] = Math.max(minMax[3], box[1], box[3]); + return; } - }; - return CanvasExtraState; -}(); -var CanvasGraphics = function CanvasGraphicsClosure() { - var EXECUTION_TIME = 15; - var EXECUTION_STEPS = 10; - function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, imageLayer) { + + this.updateRectMinMax(transform, box); + } + + getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { + const box = [this.minX, this.minY, this.maxX, this.maxY]; + + if (pathType === _pattern_helper.PathType.STROKE) { + if (!transform) { + (0, _util.unreachable)("Stroke bounding box must include transform."); + } + + const scale = _util.Util.singularValueDecompose2dScale(transform); + + const xStrokePad = scale[0] * this.lineWidth / 2; + const yStrokePad = scale[1] * this.lineWidth / 2; + box[0] -= xStrokePad; + box[1] -= yStrokePad; + box[2] += xStrokePad; + box[3] += yStrokePad; + } + + return box; + } + + updateClipFromPath() { + const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox()); + + this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]); + } + + isEmptyClip() { + return this.minX === Infinity; + } + + startNewPathAndClipBox(box) { + this.clipBox = box; + this.minX = Infinity; + this.minY = Infinity; + this.maxX = 0; + this.maxY = 0; + } + + getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { + return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform)); + } + +} + +function putBinaryImageData(ctx, imgData, transferMaps = null) { + if (typeof ImageData !== "undefined" && imgData instanceof ImageData) { + ctx.putImageData(imgData, 0, 0); + return; + } + + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0, + destPos; + const src = imgData.data; + const dest = chunkImgData.data; + let i, j, thisChunkHeight, elemsInThisChunk; + let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray; + + if (transferMaps) { + switch (transferMaps.length) { + case 1: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[0]; + transferMapBlue = transferMaps[0]; + transferMapGray = transferMaps[0]; + break; + + case 4: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[1]; + transferMapBlue = transferMaps[2]; + transferMapGray = transferMaps[3]; + break; + } + } + + if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { + const srcLength = src.byteLength; + const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); + const dest32DataLength = dest32.length; + const fullSrcDiff = width + 7 >> 3; + let white = 0xffffffff; + let black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + + if (transferMapGray) { + if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) { + [white, black] = [black, white]; + } + } + + for (i = 0; i < totalChunks; i++) { + thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + destPos = 0; + + for (j = 0; j < thisChunkHeight; j++) { + const srcDiff = srcLength - srcPos; + let k = 0; + const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; + const kEndUnrolled = kEnd & ~7; + let mask = 0; + let srcByte = 0; + + for (; k < kEndUnrolled; k += 8) { + srcByte = src[srcPos++]; + dest32[destPos++] = srcByte & 128 ? white : black; + dest32[destPos++] = srcByte & 64 ? white : black; + dest32[destPos++] = srcByte & 32 ? white : black; + dest32[destPos++] = srcByte & 16 ? white : black; + dest32[destPos++] = srcByte & 8 ? white : black; + dest32[destPos++] = srcByte & 4 ? white : black; + dest32[destPos++] = srcByte & 2 ? white : black; + dest32[destPos++] = srcByte & 1 ? white : black; + } + + for (; k < kEnd; k++) { + if (mask === 0) { + srcByte = src[srcPos++]; + mask = 128; + } + + dest32[destPos++] = srcByte & mask ? white : black; + mask >>= 1; + } + } + + while (destPos < dest32DataLength) { + dest32[destPos++] = 0; + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + j = 0; + elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; + + for (i = 0; i < fullChunks; i++) { + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + srcPos += elemsInThisChunk; + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + j += FULL_CHUNK_HEIGHT; + } + + if (i < totalChunks) { + elemsInThisChunk = width * partialChunkHeight * 4; + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + } + } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + thisChunkHeight = FULL_CHUNK_HEIGHT; + elemsInThisChunk = width * thisChunkHeight; + + for (i = 0; i < totalChunks; i++) { + if (i >= fullChunks) { + thisChunkHeight = partialChunkHeight; + elemsInThisChunk = width * thisChunkHeight; + } + + destPos = 0; + + for (j = elemsInThisChunk; j--;) { + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = 255; + } + + if (hasTransferMaps) { + for (let k = 0; k < destPos; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else { + throw new Error(`bad image kind: ${imgData.kind}`); + } +} + +function putBinaryImageMask(ctx, imgData) { + if (imgData.bitmap) { + ctx.drawImage(imgData.bitmap, 0, 0); + return; + } + + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0; + const src = imgData.data; + const dest = chunkImgData.data; + + for (let i = 0; i < totalChunks; i++) { + const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + ({ + srcPos + } = (0, _image_utils.applyMaskImageData)({ + src, + srcPos, + dest, + width, + height: thisChunkHeight + })); + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } +} + +function copyCtxState(sourceCtx, destCtx) { + const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"]; + + for (let i = 0, ii = properties.length; i < ii; i++) { + const property = properties[i]; + + if (sourceCtx[property] !== undefined) { + destCtx[property] = sourceCtx[property]; + } + } + + if (sourceCtx.setLineDash !== undefined) { + destCtx.setLineDash(sourceCtx.getLineDash()); + destCtx.lineDashOffset = sourceCtx.lineDashOffset; + } +} + +function resetCtxToDefault(ctx, foregroundColor) { + ctx.strokeStyle = ctx.fillStyle = foregroundColor || "#000000"; + ctx.fillRule = "nonzero"; + ctx.globalAlpha = 1; + ctx.lineWidth = 1; + ctx.lineCap = "butt"; + ctx.lineJoin = "miter"; + ctx.miterLimit = 10; + ctx.globalCompositeOperation = "source-over"; + ctx.font = "10px sans-serif"; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash([]); + ctx.lineDashOffset = 0; + } +} + +function composeSMaskBackdrop(bytes, r0, g0, b0) { + const length = bytes.length; + + for (let i = 3; i < length; i += 4) { + const alpha = bytes[i]; + + if (alpha === 0) { + bytes[i - 3] = r0; + bytes[i - 2] = g0; + bytes[i - 1] = b0; + } else if (alpha < 255) { + const alpha_ = 255 - alpha; + bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; + bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; + bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; + } + } +} + +function composeSMaskAlpha(maskData, layerData, transferMap) { + const length = maskData.length; + const scale = 1 / 255; + + for (let i = 3; i < length; i += 4) { + const alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; + layerData[i] = layerData[i] * alpha * scale | 0; + } +} + +function composeSMaskLuminosity(maskData, layerData, transferMap) { + const length = maskData.length; + + for (let i = 3; i < length; i += 4) { + const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; + layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; + } +} + +function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) { + const hasBackdrop = !!backdrop; + const r0 = hasBackdrop ? backdrop[0] : 0; + const g0 = hasBackdrop ? backdrop[1] : 0; + const b0 = hasBackdrop ? backdrop[2] : 0; + let composeFn; + + if (subtype === "Luminosity") { + composeFn = composeSMaskLuminosity; + } else { + composeFn = composeSMaskAlpha; + } + + const PIXELS_TO_PROCESS = 1048576; + const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); + + for (let row = 0; row < height; row += chunkSize) { + const chunkHeight = Math.min(chunkSize, height - row); + const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight); + const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight); + + if (hasBackdrop) { + composeSMaskBackdrop(maskData.data, r0, g0, b0); + } + + composeFn(maskData.data, layerData.data, transferMap); + layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY); + } +} + +function composeSMask(ctx, smask, layerCtx, layerBox) { + const layerOffsetX = layerBox[0]; + const layerOffsetY = layerBox[1]; + const layerWidth = layerBox[2] - layerOffsetX; + const layerHeight = layerBox[3] - layerOffsetY; + + if (layerWidth === 0 || layerHeight === 0) { + return; + } + + genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY); + ctx.save(); + ctx.globalAlpha = 1; + ctx.globalCompositeOperation = "source-over"; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(layerCtx.canvas, 0, 0); + ctx.restore(); +} + +function getImageSmoothingEnabled(transform, interpolate) { + const scale = _util.Util.singularValueDecompose2dScale(transform); + + scale[0] = Math.fround(scale[0]); + scale[1] = Math.fround(scale[1]); + const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS); + + if (interpolate !== undefined) { + return interpolate; + } else if (scale[0] <= actualScale || scale[1] <= actualScale) { + return true; + } + + return false; +} + +const LINE_CAP_STYLES = ["butt", "round", "square"]; +const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; +const NORMAL_CLIP = {}; +const EO_CLIP = {}; + +class CanvasGraphics { + constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap, pageColors) { this.ctx = canvasCtx; - this.current = new CanvasExtraState(); + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); this.stateStack = []; this.pendingClip = null; this.pendingEOFill = false; @@ -10013,1978 +5846,2314 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.smaskStack = []; this.smaskCounter = 0; this.tempSMask = null; + this.suspendedCtx = null; + this.contentVisible = true; + this.markedContentStack = []; + this.optionalContentConfig = optionalContentConfig; this.cachedCanvases = new CachedCanvases(this.canvasFactory); + this.cachedPatterns = new Map(); + this.annotationCanvasMap = annotationCanvasMap; + this.viewportScale = 1; + this.outputScaleX = 1; + this.outputScaleY = 1; + this.backgroundColor = pageColors?.background || null; + this.foregroundColor = pageColors?.foreground || null; + if (canvasCtx) { addContextCurrentTransform(canvasCtx); } - this.cachedGetSinglePixelWidth = null; - } - function putBinaryImageData(ctx, imgData) { - if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) { - ctx.putImageData(imgData, 0, 0); - return; - } - var height = imgData.height, - width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0, - destPos; - var src = imgData.data; - var dest = chunkImgData.data; - var i, j, thisChunkHeight, elemsInThisChunk; - if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { - var srcLength = src.byteLength; - var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); - var dest32DataLength = dest32.length; - var fullSrcDiff = width + 7 >> 3; - var white = 0xFFFFFFFF; - var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF; - for (i = 0; i < totalChunks; i++) { - thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; - destPos = 0; - for (j = 0; j < thisChunkHeight; j++) { - var srcDiff = srcLength - srcPos; - var k = 0; - var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; - var kEndUnrolled = kEnd & ~7; - var mask = 0; - var srcByte = 0; - for (; k < kEndUnrolled; k += 8) { - srcByte = src[srcPos++]; - dest32[destPos++] = srcByte & 128 ? white : black; - dest32[destPos++] = srcByte & 64 ? white : black; - dest32[destPos++] = srcByte & 32 ? white : black; - dest32[destPos++] = srcByte & 16 ? white : black; - dest32[destPos++] = srcByte & 8 ? white : black; - dest32[destPos++] = srcByte & 4 ? white : black; - dest32[destPos++] = srcByte & 2 ? white : black; - dest32[destPos++] = srcByte & 1 ? white : black; - } - for (; k < kEnd; k++) { - if (mask === 0) { - srcByte = src[srcPos++]; - mask = 128; - } - dest32[destPos++] = srcByte & mask ? white : black; - mask >>= 1; - } - } - while (destPos < dest32DataLength) { - dest32[destPos++] = 0; - } - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { - j = 0; - elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; - for (i = 0; i < fullChunks; i++) { - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - srcPos += elemsInThisChunk; - ctx.putImageData(chunkImgData, 0, j); - j += FULL_CHUNK_HEIGHT; - } - if (i < totalChunks) { - elemsInThisChunk = width * partialChunkHeight * 4; - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - ctx.putImageData(chunkImgData, 0, j); - } - } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { - thisChunkHeight = FULL_CHUNK_HEIGHT; - elemsInThisChunk = width * thisChunkHeight; - for (i = 0; i < totalChunks; i++) { - if (i >= fullChunks) { - thisChunkHeight = partialChunkHeight; - elemsInThisChunk = width * thisChunkHeight; - } - destPos = 0; - for (j = elemsInThisChunk; j--;) { - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = 255; - } - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else { - throw new Error('bad image kind: ' + imgData.kind); - } - } - function putBinaryImageMask(ctx, imgData) { - var height = imgData.height, - width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0; - var src = imgData.data; - var dest = chunkImgData.data; - for (var i = 0; i < totalChunks; i++) { - var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; - var destPos = 3; - for (var j = 0; j < thisChunkHeight; j++) { - var mask = 0; - for (var k = 0; k < width; k++) { - if (!mask) { - var elem = src[srcPos++]; - mask = 128; - } - dest[destPos] = elem & mask ? 0 : 255; - destPos += 4; - mask >>= 1; - } - } - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } - function copyCtxState(sourceCtx, destCtx) { - var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha', 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit', 'globalCompositeOperation', 'font']; - for (var i = 0, ii = properties.length; i < ii; i++) { - var property = properties[i]; - if (sourceCtx[property] !== undefined) { - destCtx[property] = sourceCtx[property]; - } - } - if (sourceCtx.setLineDash !== undefined) { - destCtx.setLineDash(sourceCtx.getLineDash()); - destCtx.lineDashOffset = sourceCtx.lineDashOffset; - } - } - function resetCtxToDefault(ctx) { - ctx.strokeStyle = '#000000'; - ctx.fillStyle = '#000000'; - ctx.fillRule = 'nonzero'; - ctx.globalAlpha = 1; - ctx.lineWidth = 1; - ctx.lineCap = 'butt'; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 10; - ctx.globalCompositeOperation = 'source-over'; - ctx.font = '10px sans-serif'; - if (ctx.setLineDash !== undefined) { - ctx.setLineDash([]); - ctx.lineDashOffset = 0; - } - } - function composeSMaskBackdrop(bytes, r0, g0, b0) { - var length = bytes.length; - for (var i = 3; i < length; i += 4) { - var alpha = bytes[i]; - if (alpha === 0) { - bytes[i - 3] = r0; - bytes[i - 2] = g0; - bytes[i - 1] = b0; - } else if (alpha < 255) { - var alpha_ = 255 - alpha; - bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; - bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; - bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; - } - } - } - function composeSMaskAlpha(maskData, layerData, transferMap) { - var length = maskData.length; - var scale = 1 / 255; - for (var i = 3; i < length; i += 4) { - var alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; - layerData[i] = layerData[i] * alpha * scale | 0; - } - } - function composeSMaskLuminosity(maskData, layerData, transferMap) { - var length = maskData.length; - for (var i = 3; i < length; i += 4) { - var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; - layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; - } - } - function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) { - var hasBackdrop = !!backdrop; - var r0 = hasBackdrop ? backdrop[0] : 0; - var g0 = hasBackdrop ? backdrop[1] : 0; - var b0 = hasBackdrop ? backdrop[2] : 0; - var composeFn; - if (subtype === 'Luminosity') { - composeFn = composeSMaskLuminosity; - } else { - composeFn = composeSMaskAlpha; - } - var PIXELS_TO_PROCESS = 1048576; - var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); - for (var row = 0; row < height; row += chunkSize) { - var chunkHeight = Math.min(chunkSize, height - row); - var maskData = maskCtx.getImageData(0, row, width, chunkHeight); - var layerData = layerCtx.getImageData(0, row, width, chunkHeight); - if (hasBackdrop) { - composeSMaskBackdrop(maskData.data, r0, g0, b0); - } - composeFn(maskData.data, layerData.data, transferMap); - maskCtx.putImageData(layerData, 0, row); - } - } - function composeSMask(ctx, smask, layerCtx) { - var mask = smask.canvas; - var maskCtx = smask.context; - ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY); - var backdrop = smask.backdrop || null; - if (!smask.transferMap && _webgl.WebGLUtils.isEnabled) { - var composed = _webgl.WebGLUtils.composeSMask(layerCtx.canvas, mask, { - subtype: smask.subtype, - backdrop: backdrop - }); - ctx.setTransform(1, 0, 0, 1, 0, 0); - ctx.drawImage(composed, smask.offsetX, smask.offsetY); - return; - } - genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap); - ctx.drawImage(mask, 0, 0); - } - var LINE_CAP_STYLES = ['butt', 'round', 'square']; - var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; - var NORMAL_CLIP = {}; - var EO_CLIP = {}; - CanvasGraphics.prototype = { - beginDrawing: function beginDrawing(_ref) { - var transform = _ref.transform, - viewport = _ref.viewport, - transparency = _ref.transparency, - _ref$background = _ref.background, - background = _ref$background === undefined ? null : _ref$background; - var width = this.ctx.canvas.width; - var height = this.ctx.canvas.height; - this.ctx.save(); - this.ctx.fillStyle = background || 'rgb(255, 255, 255)'; - this.ctx.fillRect(0, 0, width, height); - this.ctx.restore(); - if (transparency) { - var transparentCanvas = this.cachedCanvases.getCanvas('transparent', width, height, true); - this.compositeCtx = this.ctx; - this.transparentCanvas = transparentCanvas.canvas; - this.ctx = transparentCanvas.context; - this.ctx.save(); - this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform); - } - this.ctx.save(); - resetCtxToDefault(this.ctx); - if (transform) { - this.ctx.transform.apply(this.ctx, transform); - } - this.ctx.transform.apply(this.ctx, viewport.transform); - this.baseTransform = this.ctx.mozCurrentTransform.slice(); - if (this.imageLayer) { - this.imageLayer.beginLayout(); - } - }, + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + this._cachedBitmapsMap = new Map(); + } - executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var i = executionStartIdx || 0; - var argsArrayLen = argsArray.length; - if (argsArrayLen === i) { + getObject(data, fallback = null) { + if (typeof data === "string") { + return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data); + } + + return fallback; + } + + beginDrawing({ + transform, + viewport, + transparency = false, + background = null + }) { + const width = this.ctx.canvas.width; + const height = this.ctx.canvas.height; + const defaultBackgroundColor = background || "#ffffff"; + this.ctx.save(); + + if (this.foregroundColor && this.backgroundColor) { + this.ctx.fillStyle = this.foregroundColor; + const fg = this.foregroundColor = this.ctx.fillStyle; + this.ctx.fillStyle = this.backgroundColor; + const bg = this.backgroundColor = this.ctx.fillStyle; + let isValidDefaultBg = true; + let defaultBg = defaultBackgroundColor; + this.ctx.fillStyle = defaultBackgroundColor; + defaultBg = this.ctx.fillStyle; + isValidDefaultBg = typeof defaultBg === "string" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg); + + if (fg === "#000000" && bg === "#ffffff" || fg === bg || !isValidDefaultBg) { + this.foregroundColor = this.backgroundColor = null; + } else { + const cB = parseInt(defaultBg.slice(1), 16); + const rB = (cB && 0xff0000) >> 16; + const gB = (cB && 0x00ff00) >> 8; + const bB = cB && 0x0000ff; + + const newComp = x => { + x /= 255; + return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4; + }; + + const lumB = Math.round(0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB)); + + this.selectColor = (r, g, b) => { + const lumC = 0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b); + return Math.round(lumC) === lumB ? bg : fg; + }; + } + } + + this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor; + this.ctx.fillRect(0, 0, width, height); + this.ctx.restore(); + + if (transparency) { + const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true); + this.compositeCtx = this.ctx; + this.transparentCanvas = transparentCanvas.canvas; + this.ctx = transparentCanvas.context; + this.ctx.save(); + this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform); + } + + this.ctx.save(); + resetCtxToDefault(this.ctx, this.foregroundColor); + + if (transform) { + this.ctx.transform.apply(this.ctx, transform); + this.outputScaleX = transform[0]; + this.outputScaleY = transform[0]; + } + + this.ctx.transform.apply(this.ctx, viewport.transform); + this.viewportScale = viewport.scale; + this.baseTransform = this.ctx.mozCurrentTransform.slice(); + + if (this.imageLayer) { + this.imageLayer.beginLayout(); + } + } + + executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + let i = executionStartIdx || 0; + const argsArrayLen = argsArray.length; + + if (argsArrayLen === i) { + return i; + } + + const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function"; + const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; + let steps = 0; + const commonObjs = this.commonObjs; + const objs = this.objs; + let fnId; + + while (true) { + if (stepper !== undefined && i === stepper.nextBreakPoint) { + stepper.breakIt(i, continueCallback); return i; } - var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === 'function'; - var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; - var steps = 0; - var commonObjs = this.commonObjs; - var objs = this.objs; - var fnId; - while (true) { - if (stepper !== undefined && i === stepper.nextBreakPoint) { - stepper.breakIt(i, continueCallback); - return i; - } - fnId = fnArray[i]; - if (fnId !== _util.OPS.dependency) { - this[fnId].apply(this, argsArray[i]); - } else { - var deps = argsArray[i]; - for (var n = 0, nn = deps.length; n < nn; n++) { - var depObjId = deps[n]; - var common = depObjId[0] === 'g' && depObjId[1] === '_'; - var objsPool = common ? commonObjs : objs; - if (!objsPool.isResolved(depObjId)) { - objsPool.get(depObjId, continueCallback); - return i; - } - } - } - i++; - if (i === argsArrayLen) { - return i; - } - if (chunkOperations && ++steps > EXECUTION_STEPS) { - if (Date.now() > endTime) { - continueCallback(); + + fnId = fnArray[i]; + + if (fnId !== _util.OPS.dependency) { + this[fnId].apply(this, argsArray[i]); + } else { + for (const depObjId of argsArray[i]) { + const objsPool = depObjId.startsWith("g_") ? commonObjs : objs; + + if (!objsPool.has(depObjId)) { + objsPool.get(depObjId, continueCallback); return i; } - steps = 0; } } - }, - endDrawing: function CanvasGraphics_endDrawing() { - if (this.current.activeSMask !== null) { - this.endSMaskGroup(); + + i++; + + if (i === argsArrayLen) { + return i; } + + if (chunkOperations && ++steps > EXECUTION_STEPS) { + if (Date.now() > endTime) { + continueCallback(); + return i; + } + + steps = 0; + } + } + } + + endDrawing() { + while (this.stateStack.length || this.inSMaskMode) { + this.restore(); + } + + this.ctx.restore(); + + if (this.transparentCanvas) { + this.ctx = this.compositeCtx; + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.drawImage(this.transparentCanvas, 0, 0); this.ctx.restore(); - if (this.transparentCanvas) { - this.ctx = this.compositeCtx; - this.ctx.save(); - this.ctx.setTransform(1, 0, 0, 1, 0, 0); - this.ctx.drawImage(this.transparentCanvas, 0, 0); + this.transparentCanvas = null; + } + + this.cachedCanvases.clear(); + this.cachedPatterns.clear(); + + for (const cache of this._cachedBitmapsMap.values()) { + for (const canvas of cache.values()) { + if (typeof HTMLCanvasElement !== "undefined" && canvas instanceof HTMLCanvasElement) { + canvas.width = canvas.height = 0; + } + } + + cache.clear(); + } + + this._cachedBitmapsMap.clear(); + + if (this.imageLayer) { + this.imageLayer.endLayout(); + } + } + + _scaleImage(img, inverseTransform) { + const width = img.width; + const height = img.height; + let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1); + let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1); + let paintWidth = width, + paintHeight = height; + let tmpCanvasId = "prescale1"; + let tmpCanvas, tmpCtx; + + while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { + let newWidth = paintWidth, + newHeight = paintHeight; + + if (widthScale > 2 && paintWidth > 1) { + newWidth = Math.ceil(paintWidth / 2); + widthScale /= paintWidth / newWidth; + } + + if (heightScale > 2 && paintHeight > 1) { + newHeight = Math.ceil(paintHeight / 2); + heightScale /= paintHeight / newHeight; + } + + tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight, false); + tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, newWidth, newHeight); + tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); + img = tmpCanvas.canvas; + paintWidth = newWidth; + paintHeight = newHeight; + tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1"; + } + + return { + img, + paintWidth, + paintHeight + }; + } + + _createMaskCanvas(img) { + const ctx = this.ctx; + const { + width, + height + } = img; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + const currentTransform = ctx.mozCurrentTransform; + let cache, cacheKey, scaled, maskCanvas; + + if ((img.bitmap || img.data) && img.count > 1) { + const mainKey = img.bitmap || img.data.buffer; + const withoutTranslation = currentTransform.slice(0, 4); + cacheKey = JSON.stringify(isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]); + cache = this._cachedBitmapsMap.get(mainKey); + + if (!cache) { + cache = new Map(); + + this._cachedBitmapsMap.set(mainKey, cache); + } + + const cachedImage = cache.get(cacheKey); + + if (cachedImage && !isPatternFill) { + const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]); + const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]); + return { + canvas: cachedImage, + offsetX, + offsetY + }; + } + + scaled = cachedImage; + } + + if (!scaled) { + maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height, false); + putBinaryImageMask(maskCanvas.context, img); + } + + let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]); + + maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]); + + const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas); + + const cord2 = _util.Util.applyTransform([width, height], maskToCanvas); + + const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]); + + const drawnWidth = Math.round(rect[2] - rect[0]) || 1; + const drawnHeight = Math.round(rect[3] - rect[1]) || 1; + const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight, true); + const fillCtx = fillCanvas.context; + const offsetX = Math.min(cord1[0], cord2[0]); + const offsetY = Math.min(cord1[1], cord2[1]); + fillCtx.translate(-offsetX, -offsetY); + fillCtx.transform.apply(fillCtx, maskToCanvas); + + if (!scaled) { + scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse); + scaled = scaled.img; + + if (cache && isPatternFill) { + cache.set(cacheKey, scaled); + } + } + + fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(fillCtx.mozCurrentTransform, img.interpolate); + drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height); + fillCtx.globalCompositeOperation = "source-in"; + + const inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, -offsetY]); + + fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor; + fillCtx.fillRect(0, 0, width, height); + + if (cache && !isPatternFill) { + this.cachedCanvases.delete("fillCanvas"); + cache.set(cacheKey, fillCanvas.canvas); + } + + return { + canvas: fillCanvas.canvas, + offsetX: Math.round(offsetX), + offsetY: Math.round(offsetY) + }; + } + + setLineWidth(width) { + if (width !== this.current.lineWidth) { + this._cachedScaleForStroking = null; + } + + this.current.lineWidth = width; + this.ctx.lineWidth = width; + } + + setLineCap(style) { + this.ctx.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.ctx.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.ctx.miterLimit = limit; + } + + setDash(dashArray, dashPhase) { + const ctx = this.ctx; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash(dashArray); + ctx.lineDashOffset = dashPhase; + } + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (let i = 0, ii = states.length; i < ii; i++) { + const state = states[i]; + const key = state[0]; + const value = state[1]; + + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value[0], value[1]); + break; + + case "CA": + this.current.strokeAlpha = state[1]; + break; + + case "ca": + this.current.fillAlpha = state[1]; + this.ctx.globalAlpha = state[1]; + break; + + case "BM": + this.ctx.globalCompositeOperation = value; + break; + + case "SMask": + this.current.activeSMask = value ? this.tempSMask : null; + this.tempSMask = null; + this.checkSMaskState(); + break; + + case "TR": + this.current.transferMaps = value; + } + } + } + + get inSMaskMode() { + return !!this.suspendedCtx; + } + + checkSMaskState() { + const inSMaskMode = this.inSMaskMode; + + if (this.current.activeSMask && !inSMaskMode) { + this.beginSMaskMode(); + } else if (!this.current.activeSMask && inSMaskMode) { + this.endSMaskMode(); + } + } + + beginSMaskMode() { + if (this.inSMaskMode) { + throw new Error("beginSMaskMode called while already in smask mode"); + } + + const drawnWidth = this.ctx.canvas.width; + const drawnHeight = this.ctx.canvas.height; + const cacheId = "smaskGroupAt" + this.groupLevel; + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); + this.suspendedCtx = this.ctx; + this.ctx = scratchCanvas.context; + const ctx = this.ctx; + ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform); + copyCtxState(this.suspendedCtx, ctx); + mirrorContextOperations(ctx, this.suspendedCtx); + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + } + + endSMaskMode() { + if (!this.inSMaskMode) { + throw new Error("endSMaskMode called while not in smask mode"); + } + + this.ctx._removeMirroring(); + + copyCtxState(this.ctx, this.suspendedCtx); + this.ctx = this.suspendedCtx; + this.suspendedCtx = null; + } + + compose(dirtyBox) { + if (!this.current.activeSMask) { + return; + } + + if (!dirtyBox) { + dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height]; + } else { + dirtyBox[0] = Math.floor(dirtyBox[0]); + dirtyBox[1] = Math.floor(dirtyBox[1]); + dirtyBox[2] = Math.ceil(dirtyBox[2]); + dirtyBox[3] = Math.ceil(dirtyBox[3]); + } + + const smask = this.current.activeSMask; + const suspendedCtx = this.suspendedCtx; + composeSMask(suspendedCtx, smask, this.ctx, dirtyBox); + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height); + this.ctx.restore(); + } + + save() { + if (this.inSMaskMode) { + copyCtxState(this.ctx, this.suspendedCtx); + this.suspendedCtx.save(); + } else { + this.ctx.save(); + } + + const old = this.current; + this.stateStack.push(old); + this.current = old.clone(); + } + + restore() { + if (this.stateStack.length === 0 && this.inSMaskMode) { + this.endSMaskMode(); + } + + if (this.stateStack.length !== 0) { + this.current = this.stateStack.pop(); + + if (this.inSMaskMode) { + this.suspendedCtx.restore(); + copyCtxState(this.suspendedCtx, this.ctx); + } else { this.ctx.restore(); - this.transparentCanvas = null; } - this.cachedCanvases.clear(); - _webgl.WebGLUtils.clear(); - if (this.imageLayer) { - this.imageLayer.endLayout(); + + this.checkSMaskState(); + this.pendingClip = null; + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + } + } + + transform(a, b, c, d, e, f) { + this.ctx.transform(a, b, c, d, e, f); + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + } + + constructPath(ops, args, minMax) { + const ctx = this.ctx; + const current = this.current; + let x = current.x, + y = current.y; + let startX, startY; + const currentTransform = ctx.mozCurrentTransform; + const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0; + const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null; + + for (let i = 0, j = 0, ii = ops.length; i < ii; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + ctx.moveTo(x, y); + + if (width === 0 || height === 0) { + ctx.lineTo(xw, yh); + } else { + ctx.lineTo(xw, y); + ctx.lineTo(xw, yh); + ctx.lineTo(x, yh); + } + + if (!isScalingMatrix) { + current.updateRectMinMax(currentTransform, [x, y, xw, yh]); + } + + ctx.closePath(); + break; + + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + ctx.moveTo(x, y); + + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } + + break; + + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + ctx.lineTo(x, y); + + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } + + break; + + case _util.OPS.curveTo: + startX = x; + startY = y; + x = args[j + 4]; + y = args[j + 5]; + ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier); + j += 6; + break; + + case _util.OPS.curveTo2: + startX = x; + startY = y; + ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); + current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + startX = x; + startY = y; + x = args[j + 2]; + y = args[j + 3]; + ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier); + j += 4; + break; + + case _util.OPS.closePath: + ctx.closePath(); + break; } - }, - setLineWidth: function CanvasGraphics_setLineWidth(width) { - this.current.lineWidth = width; - this.ctx.lineWidth = width; - }, - setLineCap: function CanvasGraphics_setLineCap(style) { - this.ctx.lineCap = LINE_CAP_STYLES[style]; - }, - setLineJoin: function CanvasGraphics_setLineJoin(style) { - this.ctx.lineJoin = LINE_JOIN_STYLES[style]; - }, - setMiterLimit: function CanvasGraphics_setMiterLimit(limit) { - this.ctx.miterLimit = limit; - }, - setDash: function CanvasGraphics_setDash(dashArray, dashPhase) { - var ctx = this.ctx; - if (ctx.setLineDash !== undefined) { - ctx.setLineDash(dashArray); - ctx.lineDashOffset = dashPhase; - } - }, - setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {}, - setFlatness: function CanvasGraphics_setFlatness(flatness) {}, - setGState: function CanvasGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; - switch (key) { - case 'LW': - this.setLineWidth(value); - break; - case 'LC': - this.setLineCap(value); - break; - case 'LJ': - this.setLineJoin(value); - break; - case 'ML': - this.setMiterLimit(value); - break; - case 'D': - this.setDash(value[0], value[1]); - break; - case 'RI': - this.setRenderingIntent(value); - break; - case 'FL': - this.setFlatness(value); - break; - case 'Font': - this.setFont(value[0], value[1]); - break; - case 'CA': - this.current.strokeAlpha = state[1]; - break; - case 'ca': - this.current.fillAlpha = state[1]; - this.ctx.globalAlpha = state[1]; - break; - case 'BM': - this.ctx.globalCompositeOperation = value; - break; - case 'SMask': - if (this.current.activeSMask) { - if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) { - this.suspendSMaskGroup(); - } else { - this.endSMaskGroup(); - } - } - this.current.activeSMask = value ? this.tempSMask : null; - if (this.current.activeSMask) { - this.beginSMaskGroup(); - } - this.tempSMask = null; - break; - } - } - }, - beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() { - var activeSMask = this.current.activeSMask; - var drawnWidth = activeSMask.canvas.width; - var drawnHeight = activeSMask.canvas.height; - var cacheId = 'smaskGroupAt' + this.groupLevel; - var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); - var currentCtx = this.ctx; - var currentTransform = currentCtx.mozCurrentTransform; - this.ctx.save(); - var groupCtx = scratchCanvas.context; - groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY); - groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY); - groupCtx.transform.apply(groupCtx, currentTransform); - activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse; - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]); - this.groupStack.push(currentCtx); - this.groupLevel++; - }, - suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.ctx; - this.groupLevel--; - this.ctx = this.groupStack.pop(); - composeSMask(this.ctx, this.current.activeSMask, groupCtx); - this.ctx.restore(); - this.ctx.save(); - copyCtxState(groupCtx, this.ctx); - this.current.resumeSMaskCtx = groupCtx; - var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); - this.ctx.transform.apply(this.ctx, deltaTransform); - groupCtx.save(); - groupCtx.setTransform(1, 0, 0, 1, 0, 0); - groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height); - groupCtx.restore(); - }, - resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.current.resumeSMaskCtx; - var currentCtx = this.ctx; - this.ctx = groupCtx; - this.groupStack.push(currentCtx); - this.groupLevel++; - }, - endSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.ctx; - this.groupLevel--; - this.ctx = this.groupStack.pop(); - composeSMask(this.ctx, this.current.activeSMask, groupCtx); - this.ctx.restore(); - copyCtxState(groupCtx, this.ctx); - var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); - this.ctx.transform.apply(this.ctx, deltaTransform); - }, - save: function CanvasGraphics_save() { - this.ctx.save(); - var old = this.current; - this.stateStack.push(old); - this.current = old.clone(); - this.current.resumeSMaskCtx = null; - }, - restore: function CanvasGraphics_restore() { - if (this.current.resumeSMaskCtx) { - this.resumeSMaskGroup(); - } - if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) { - this.endSMaskGroup(); - } - if (this.stateStack.length !== 0) { - this.current = this.stateStack.pop(); - this.ctx.restore(); - this.pendingClip = null; - this.cachedGetSinglePixelWidth = null; - } - }, - transform: function CanvasGraphics_transform(a, b, c, d, e, f) { - this.ctx.transform(a, b, c, d, e, f); - this.cachedGetSinglePixelWidth = null; - }, - constructPath: function CanvasGraphics_constructPath(ops, args) { - var ctx = this.ctx; - var current = this.current; - var x = current.x, - y = current.y; - for (var i = 0, j = 0, ii = ops.length; i < ii; i++) { - switch (ops[i] | 0) { - case _util.OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - if (width === 0) { - width = this.getSinglePixelWidth(); - } - if (height === 0) { - height = this.getSinglePixelWidth(); - } - var xw = x + width; - var yh = y + height; - this.ctx.moveTo(x, y); - this.ctx.lineTo(xw, y); - this.ctx.lineTo(xw, yh); - this.ctx.lineTo(x, yh); - this.ctx.lineTo(x, y); - this.ctx.closePath(); - break; - case _util.OPS.moveTo: - x = args[j++]; - y = args[j++]; - ctx.moveTo(x, y); - break; - case _util.OPS.lineTo: - x = args[j++]; - y = args[j++]; - ctx.lineTo(x, y); - break; - case _util.OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); - j += 6; - break; - case _util.OPS.curveTo2: - ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); - x = args[j + 2]; - y = args[j + 3]; - j += 4; - break; - case _util.OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); - j += 4; - break; - case _util.OPS.closePath: - ctx.closePath(); - break; - } - } - current.setCurrentPoint(x, y); - }, - closePath: function CanvasGraphics_closePath() { - this.ctx.closePath(); - }, - stroke: function CanvasGraphics_stroke(consumePath) { - consumePath = typeof consumePath !== 'undefined' ? consumePath : true; - var ctx = this.ctx; - var strokeColor = this.current.strokeColor; - ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth); - ctx.globalAlpha = this.current.strokeAlpha; - if (strokeColor && strokeColor.hasOwnProperty('type') && strokeColor.type === 'Pattern') { + } + + if (isScalingMatrix) { + current.updateScalingPathMinMax(currentTransform, minMaxForBezier); + } + + current.setCurrentPoint(x, y); + } + + closePath() { + this.ctx.closePath(); + } + + stroke(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const strokeColor = this.current.strokeColor; + ctx.globalAlpha = this.current.strokeAlpha; + + if (this.contentVisible) { + if (typeof strokeColor === "object" && strokeColor?.getPattern) { ctx.save(); - ctx.strokeStyle = strokeColor.getPattern(ctx, this); - ctx.stroke(); + ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.STROKE); + this.rescaleAndStroke(false); ctx.restore(); } else { - ctx.stroke(); - } - if (consumePath) { - this.consumePath(); - } - ctx.globalAlpha = this.current.fillAlpha; - }, - closeStroke: function CanvasGraphics_closeStroke() { - this.closePath(); - this.stroke(); - }, - fill: function CanvasGraphics_fill(consumePath) { - consumePath = typeof consumePath !== 'undefined' ? consumePath : true; - var ctx = this.ctx; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var needRestore = false; - if (isPatternFill) { - ctx.save(); - if (this.baseTransform) { - ctx.setTransform.apply(ctx, this.baseTransform); - } - ctx.fillStyle = fillColor.getPattern(ctx, this); - needRestore = true; + this.rescaleAndStroke(true); } + } + + if (consumePath) { + this.consumePath(this.current.getClippedPathBoundingBox()); + } + + ctx.globalAlpha = this.current.fillAlpha; + } + + closeStroke() { + this.closePath(); + this.stroke(); + } + + fill(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + let needRestore = false; + + if (isPatternFill) { + ctx.save(); + ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL); + needRestore = true; + } + + const intersect = this.current.getClippedPathBoundingBox(); + + if (this.contentVisible && intersect !== null) { if (this.pendingEOFill) { - ctx.fill('evenodd'); + ctx.fill("evenodd"); this.pendingEOFill = false; } else { ctx.fill(); } - if (needRestore) { - ctx.restore(); - } - if (consumePath) { - this.consumePath(); - } - }, - eoFill: function CanvasGraphics_eoFill() { - this.pendingEOFill = true; - this.fill(); - }, - fillStroke: function CanvasGraphics_fillStroke() { - this.fill(false); - this.stroke(false); - this.consumePath(); - }, - eoFillStroke: function CanvasGraphics_eoFillStroke() { - this.pendingEOFill = true; - this.fillStroke(); - }, - closeFillStroke: function CanvasGraphics_closeFillStroke() { - this.closePath(); - this.fillStroke(); - }, - closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() { - this.pendingEOFill = true; - this.closePath(); - this.fillStroke(); - }, - endPath: function CanvasGraphics_endPath() { - this.consumePath(); - }, - clip: function CanvasGraphics_clip() { - this.pendingClip = NORMAL_CLIP; - }, - eoClip: function CanvasGraphics_eoClip() { - this.pendingClip = EO_CLIP; - }, - beginText: function CanvasGraphics_beginText() { - this.current.textMatrix = _util.IDENTITY_MATRIX; - this.current.textMatrixScale = 1; - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - }, - endText: function CanvasGraphics_endText() { - var paths = this.pendingTextPaths; - var ctx = this.ctx; - if (paths === undefined) { - ctx.beginPath(); - return; - } - ctx.save(); - ctx.beginPath(); - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - ctx.setTransform.apply(ctx, path.transform); - ctx.translate(path.x, path.y); - path.addToPath(ctx, path.fontSize); - } + } + + if (needRestore) { ctx.restore(); - ctx.clip(); + } + + if (consumePath) { + this.consumePath(intersect); + } + } + + eoFill() { + this.pendingEOFill = true; + this.fill(); + } + + fillStroke() { + this.fill(false); + this.stroke(false); + this.consumePath(); + } + + eoFillStroke() { + this.pendingEOFill = true; + this.fillStroke(); + } + + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + + closeEOFillStroke() { + this.pendingEOFill = true; + this.closePath(); + this.fillStroke(); + } + + endPath() { + this.consumePath(); + } + + clip() { + this.pendingClip = NORMAL_CLIP; + } + + eoClip() { + this.pendingClip = EO_CLIP; + } + + beginText() { + this.current.textMatrix = _util.IDENTITY_MATRIX; + this.current.textMatrixScale = 1; + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + endText() { + const paths = this.pendingTextPaths; + const ctx = this.ctx; + + if (paths === undefined) { ctx.beginPath(); - delete this.pendingTextPaths; - }, - setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) { - this.current.charSpacing = spacing; - }, - setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) { - this.current.wordSpacing = spacing; - }, - setHScale: function CanvasGraphics_setHScale(scale) { - this.current.textHScale = scale / 100; - }, - setLeading: function CanvasGraphics_setLeading(leading) { - this.current.leading = -leading; - }, - setFont: function CanvasGraphics_setFont(fontRefName, size) { - var fontObj = this.commonObjs.get(fontRefName); - var current = this.current; - if (!fontObj) { - throw new Error('Can\'t find font for ' + fontRefName); - } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; - if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { - (0, _util.warn)('Invalid font matrix for font ' + fontRefName); - } - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - this.current.font = fontObj; - this.current.fontSize = size; - if (fontObj.isType3Font) { - return; - } - var name = fontObj.loadedName || 'sans-serif'; - var bold = fontObj.black ? '900' : fontObj.bold ? 'bold' : 'normal'; - var italic = fontObj.italic ? 'italic' : 'normal'; - var typeface = '"' + name + '", ' + fontObj.fallbackName; - var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size; - this.current.fontSizeScale = size / browserFontSize; - var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface; - this.ctx.font = rule; - }, - setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) { - this.current.textRenderingMode = mode; - }, - setTextRise: function CanvasGraphics_setTextRise(rise) { - this.current.textRise = rise; - }, - moveText: function CanvasGraphics_moveText(x, y) { - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - }, - setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - }, - setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) { - this.current.textMatrix = [a, b, c, d, e, f]; - this.current.textMatrixScale = Math.sqrt(a * a + b * b); - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - }, - nextLine: function CanvasGraphics_nextLine() { - this.moveText(0, this.current.leading); - }, - paintChar: function CanvasGraphics_paintChar(character, x, y) { - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var textRenderingMode = current.textRenderingMode; - var fontSize = current.fontSize / current.fontSizeScale; - var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); - var addToPath; - if (font.disableFontFace || isAddToPathSet) { - addToPath = font.getPathGenerator(this.commonObjs, character); - } - if (font.disableFontFace) { - ctx.save(); - ctx.translate(x, y); - ctx.beginPath(); - addToPath(ctx, fontSize); - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.fill(); - } - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.stroke(); - } - ctx.restore(); - } else { - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.fillText(character, x, y); - } - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.strokeText(character, x, y); - } - } - if (isAddToPathSet) { - var paths = this.pendingTextPaths || (this.pendingTextPaths = []); - paths.push({ - transform: ctx.mozCurrentTransform, - x: x, - y: y, - fontSize: fontSize, - addToPath: addToPath - }); - } - }, - get isFontSubpixelAAEnabled() { - var ctx = this.canvasFactory.create(10, 10).context; - ctx.scale(1.5, 1); - ctx.fillText('I', 0, 10); - var data = ctx.getImageData(0, 0, 10, 10).data; - var enabled = false; - for (var i = 3; i < data.length; i += 4) { - if (data[i] > 0 && data[i] < 255) { - enabled = true; - break; - } - } - return (0, _util.shadow)(this, 'isFontSubpixelAAEnabled', enabled); - }, - showText: function CanvasGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; - if (font.isType3Font) { - return this.showType3Text(glyphs); - } - var fontSize = current.fontSize; - if (fontSize === 0) { - return; - } - var ctx = this.ctx; - var fontSizeScale = current.fontSizeScale; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var spacingDir = vertical ? 1 : -1; - var defaultVMetrics = font.defaultVMetrics; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace; + return; + } + + ctx.save(); + ctx.beginPath(); + + for (let i = 0; i < paths.length; i++) { + const path = paths[i]; + ctx.setTransform.apply(ctx, path.transform); + ctx.translate(path.x, path.y); + path.addToPath(ctx, path.fontSize); + } + + ctx.restore(); + ctx.clip(); + ctx.beginPath(); + delete this.pendingTextPaths; + } + + setCharSpacing(spacing) { + this.current.charSpacing = spacing; + } + + setWordSpacing(spacing) { + this.current.wordSpacing = spacing; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setFont(fontRefName, size) { + const fontObj = this.commonObjs.get(fontRefName); + const current = this.current; + + if (!fontObj) { + throw new Error(`Can't find font for ${fontRefName}`); + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + + if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { + (0, _util.warn)("Invalid font matrix for font " + fontRefName); + } + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + this.current.font = fontObj; + this.current.fontSize = size; + + if (fontObj.isType3Font) { + return; + } + + const name = fontObj.loadedName || "sans-serif"; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + const typeface = `"${name}", ${fontObj.fallbackName}`; + let browserFontSize = size; + + if (size < MIN_FONT_SIZE) { + browserFontSize = MIN_FONT_SIZE; + } else if (size > MAX_FONT_SIZE) { + browserFontSize = MAX_FONT_SIZE; + } + + this.current.fontSizeScale = size / browserFontSize; + this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`; + } + + setTextRenderingMode(mode) { + this.current.textRenderingMode = mode; + } + + setTextRise(rise) { + this.current.textRise = rise; + } + + moveText(x, y) { + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + setTextMatrix(a, b, c, d, e, f) { + this.current.textMatrix = [a, b, c, d, e, f]; + this.current.textMatrixScale = Math.hypot(a, b); + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + paintChar(character, x, y, patternTransform) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const textRenderingMode = current.textRenderingMode; + const fontSize = current.fontSize / current.fontSizeScale; + const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + const patternFill = current.patternFill && !font.missingFile; + let addToPath; + + if (font.disableFontFace || isAddToPathSet || patternFill) { + addToPath = font.getPathGenerator(this.commonObjs, character); + } + + if (font.disableFontFace || patternFill) { ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y + current.textRise); - if (current.patternFill) { - ctx.fillStyle = current.fillColor.getPattern(ctx, this); + ctx.translate(x, y); + ctx.beginPath(); + addToPath(ctx, fontSize); + + if (patternTransform) { + ctx.setTransform.apply(ctx, patternTransform); } - if (fontDirection > 0) { - ctx.scale(textHScale, -1); - } else { - ctx.scale(textHScale, 1); + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fill(); } - var lineWidth = current.lineWidth; - var scale = current.textMatrixScale; - if (scale === 0 || lineWidth === 0) { - var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - this.cachedGetSinglePixelWidth = null; - lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR; - } - } else { - lineWidth /= scale; + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.stroke(); } - if (fontSizeScale !== 1.0) { - ctx.scale(fontSizeScale, fontSizeScale); - lineWidth /= fontSizeScale; + + ctx.restore(); + } else { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fillText(character, x, y); } - ctx.lineWidth = lineWidth; - var x = 0, - i; - for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; - if ((0, _util.isNum)(glyph)) { - x += spacingDir * glyph * fontSize / 1000; - continue; - } - var restoreNeeded = false; - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var character = glyph.fontChar; - var accent = glyph.accent; - var scaledX, scaledY, scaledAccentX, scaledAccentY; - var width = glyph.width; - if (vertical) { - var vmetric, vx, vy; - vmetric = glyph.vmetric || defaultVMetrics; - vx = glyph.vmetric ? vmetric[1] : width * 0.5; - vx = -vx * widthAdvanceScale; - vy = vmetric[2] * widthAdvanceScale; - width = vmetric ? -vmetric[0] : width; - scaledX = vx / fontSizeScale; - scaledY = (x + vy) / fontSizeScale; - } else { - scaledX = x / fontSizeScale; - scaledY = 0; - } - if (font.remeasure && width > 0) { - var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; - if (width < measuredWidth && this.isFontSubpixelAAEnabled) { - var characterScaleX = width / measuredWidth; - restoreNeeded = true; - ctx.save(); - ctx.scale(characterScaleX, 1); - scaledX /= characterScaleX; - } else if (width !== measuredWidth) { - scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; - } - } - if (glyph.isInFont || font.missingFile) { - if (simpleFillText && !accent) { - ctx.fillText(character, scaledX, scaledY); - } else { - this.paintChar(character, scaledX, scaledY); - if (accent) { - scaledAccentX = scaledX + accent.offset.x / fontSizeScale; - scaledAccentY = scaledY - accent.offset.y / fontSizeScale; - this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY); - } - } - } - var charWidth = width * widthAdvanceScale + spacing * fontDirection; - x += charWidth; - if (restoreNeeded) { - ctx.restore(); - } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.strokeText(character, x, y); } + } + + if (isAddToPathSet) { + const paths = this.pendingTextPaths || (this.pendingTextPaths = []); + paths.push({ + transform: ctx.mozCurrentTransform, + x, + y, + fontSize, + addToPath + }); + } + } + + get isFontSubpixelAAEnabled() { + const { + context: ctx + } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10, false); + ctx.scale(1.5, 1); + ctx.fillText("I", 0, 10); + const data = ctx.getImageData(0, 0, 10, 10).data; + let enabled = false; + + for (let i = 3; i < data.length; i += 4) { + if (data[i] > 0 && data[i] < 255) { + enabled = true; + break; + } + } + + return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled); + } + + showText(glyphs) { + const current = this.current; + const font = current.font; + + if (font.isType3Font) { + return this.showType3Text(glyphs); + } + + const fontSize = current.fontSize; + + if (fontSize === 0) { + return undefined; + } + + const ctx = this.ctx; + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const glyphsLength = glyphs.length; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill; + ctx.save(); + ctx.transform.apply(ctx, current.textMatrix); + ctx.translate(current.x, current.y + current.textRise); + + if (fontDirection > 0) { + ctx.scale(textHScale, -1); + } else { + ctx.scale(textHScale, 1); + } + + let patternTransform; + + if (current.patternFill) { + ctx.save(); + const pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL); + patternTransform = ctx.mozCurrentTransform; + ctx.restore(); + ctx.fillStyle = pattern; + } + + let lineWidth = current.lineWidth; + const scale = current.textMatrixScale; + + if (scale === 0 || lineWidth === 0) { + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + lineWidth = this.getSinglePixelWidth(); + } + } else { + lineWidth /= scale; + } + + if (fontSizeScale !== 1.0) { + ctx.scale(fontSizeScale, fontSizeScale); + lineWidth /= fontSizeScale; + } + + ctx.lineWidth = lineWidth; + let x = 0, + i; + + for (i = 0; i < glyphsLength; ++i) { + const glyph = glyphs[i]; + + if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + + let restoreNeeded = false; + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + const accent = glyph.accent; + let scaledX, scaledY; + let width = glyph.width; + if (vertical) { - current.y -= x * textHScale; + const vmetric = glyph.vmetric || defaultVMetrics; + const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; } else { - current.x += x * textHScale; + scaledX = x / fontSizeScale; + scaledY = 0; } - ctx.restore(); - }, - showType3Text: function CanvasGraphics_showType3Text(glyphs) { - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - var fontDirection = current.fontDirection; - var spacingDir = font.vertical ? 1 : -1; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var textHScale = current.textHScale * fontDirection; - var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; - var glyphsLength = glyphs.length; - var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; - var i, glyph, width, spacingLength; - if (isTextInvisible || fontSize === 0) { - return; + + if (font.remeasure && width > 0) { + const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; + + if (width < measuredWidth && this.isFontSubpixelAAEnabled) { + const characterScaleX = width / measuredWidth; + restoreNeeded = true; + ctx.save(); + ctx.scale(characterScaleX, 1); + scaledX /= characterScaleX; + } else if (width !== measuredWidth) { + scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; + } } - this.cachedGetSinglePixelWidth = null; - ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y); - ctx.scale(textHScale, fontDirection); - for (i = 0; i < glyphsLength; ++i) { - glyph = glyphs[i]; - if ((0, _util.isNum)(glyph)) { - spacingLength = spacingDir * glyph * fontSize / 1000; - this.ctx.translate(spacingLength, 0); - current.x += spacingLength * textHScale; - continue; - } - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var operatorList = font.charProcOperatorList[glyph.operatorListId]; - if (!operatorList) { - (0, _util.warn)('Type3 character "' + glyph.operatorListId + '" is not available.'); - continue; + + if (this.contentVisible && (glyph.isInFont || font.missingFile)) { + if (simpleFillText && !accent) { + ctx.fillText(character, scaledX, scaledY); + } else { + this.paintChar(character, scaledX, scaledY, patternTransform); + + if (accent) { + const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale; + const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale; + this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform); + } } + } + + let charWidth; + + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + + x += charWidth; + + if (restoreNeeded) { + ctx.restore(); + } + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + ctx.restore(); + this.compose(); + return undefined; + } + + showType3Text(glyphs) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + const fontDirection = current.fontDirection; + const spacingDir = font.vertical ? 1 : -1; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const textHScale = current.textHScale * fontDirection; + const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; + const glyphsLength = glyphs.length; + const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; + let i, glyph, width, spacingLength; + + if (isTextInvisible || fontSize === 0) { + return; + } + + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + ctx.save(); + ctx.transform.apply(ctx, current.textMatrix); + ctx.translate(current.x, current.y); + ctx.scale(textHScale, fontDirection); + + for (i = 0; i < glyphsLength; ++i) { + glyph = glyphs[i]; + + if (typeof glyph === "number") { + spacingLength = spacingDir * glyph * fontSize / 1000; + this.ctx.translate(spacingLength, 0); + current.x += spacingLength * textHScale; + continue; + } + + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const operatorList = font.charProcOperatorList[glyph.operatorListId]; + + if (!operatorList) { + (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`); + continue; + } + + if (this.contentVisible) { this.processingType3 = glyph; this.save(); ctx.scale(fontSize, fontSize); ctx.transform.apply(ctx, fontMatrix); this.executeOperatorList(operatorList); this.restore(); - var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); - width = transformed[0] * fontSize + spacing; - ctx.translate(width, 0); - current.x += width * textHScale; } - ctx.restore(); - this.processingType3 = null; - }, - setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {}, - setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { - this.ctx.rect(llx, lly, urx - llx, ury - lly); + + const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); + + width = transformed[0] * fontSize + spacing; + ctx.translate(width, 0); + current.x += width * textHScale; + } + + ctx.restore(); + this.processingType3 = null; + } + + setCharWidth(xWidth, yWidth) {} + + setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { + this.ctx.rect(llx, lly, urx - llx, ury - lly); + this.ctx.clip(); + this.endPath(); + } + + getColorN_Pattern(IR) { + let pattern; + + if (IR[0] === "TilingPattern") { + const color = IR[1]; + const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice(); + const canvasGraphicsFactory = { + createCanvasGraphics: ctx => { + return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory); + } + }; + pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); + } else { + pattern = this._getPattern(IR[1], IR[2]); + } + + return pattern; + } + + setStrokeColorN() { + this.current.strokeColor = this.getColorN_Pattern(arguments); + } + + setFillColorN() { + this.current.fillColor = this.getColorN_Pattern(arguments); + this.current.patternFill = true; + } + + setStrokeRGBColor(r, g, b) { + const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b); + + this.ctx.strokeStyle = color; + this.current.strokeColor = color; + } + + setFillRGBColor(r, g, b) { + const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b); + + this.ctx.fillStyle = color; + this.current.fillColor = color; + this.current.patternFill = false; + } + + _getPattern(objId, matrix = null) { + let pattern; + + if (this.cachedPatterns.has(objId)) { + pattern = this.cachedPatterns.get(objId); + } else { + pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId)); + this.cachedPatterns.set(objId, pattern); + } + + if (matrix) { + pattern.matrix = matrix; + } + + return pattern; + } + + shadingFill(objId) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + this.save(); + + const pattern = this._getPattern(objId); + + ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.SHADING); + const inv = ctx.mozCurrentTransformInverse; + + if (inv) { + const canvas = ctx.canvas; + const width = canvas.width; + const height = canvas.height; + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); + } else { + this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); + } + + this.compose(this.current.getClippedPathBoundingBox()); + this.restore(); + } + + beginInlineImage() { + (0, _util.unreachable)("Should not call beginInlineImage"); + } + + beginImageData() { + (0, _util.unreachable)("Should not call beginImageData"); + } + + paintFormXObjectBegin(matrix, bbox) { + if (!this.contentVisible) { + return; + } + + this.save(); + this.baseTransformStack.push(this.baseTransform); + + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform.apply(this, matrix); + } + + this.baseTransform = this.ctx.mozCurrentTransform; + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + this.ctx.rect(bbox[0], bbox[1], width, height); + this.current.updateRectMinMax(this.ctx.mozCurrentTransform, bbox); this.clip(); this.endPath(); - }, - getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) { - var _this = this; + } + } - var pattern; - if (IR[0] === 'TilingPattern') { - var color = IR[1]; - var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice(); - var canvasGraphicsFactory = { - createCanvasGraphics: function createCanvasGraphics(ctx) { - return new CanvasGraphics(ctx, _this.commonObjs, _this.objs, _this.canvasFactory); - } - }; - pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); - } else { - pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR); - } - return pattern; - }, - setStrokeColorN: function CanvasGraphics_setStrokeColorN() { - this.current.strokeColor = this.getColorN_Pattern(arguments); - }, - setFillColorN: function CanvasGraphics_setFillColorN() { - this.current.fillColor = this.getColorN_Pattern(arguments); - this.current.patternFill = true; - }, - setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); - this.ctx.strokeStyle = color; - this.current.strokeColor = color; - }, - setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); - this.ctx.fillStyle = color; - this.current.fillColor = color; - this.current.patternFill = false; - }, - shadingFill: function CanvasGraphics_shadingFill(patternIR) { - var ctx = this.ctx; - this.save(); - var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR); - ctx.fillStyle = pattern.getPattern(ctx, this, true); - var inv = ctx.mozCurrentTransformInverse; - if (inv) { - var canvas = ctx.canvas; - var width = canvas.width; - var height = canvas.height; - var bl = _util.Util.applyTransform([0, 0], inv); - var br = _util.Util.applyTransform([0, height], inv); - var ul = _util.Util.applyTransform([width, 0], inv); - var ur = _util.Util.applyTransform([width, height], inv); - var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); - var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); - var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); - var y1 = Math.max(bl[1], br[1], ul[1], ur[1]); - this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); - } else { - this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); - } - this.restore(); - }, - beginInlineImage: function CanvasGraphics_beginInlineImage() { - throw new Error('Should not call beginInlineImage'); - }, - beginImageData: function CanvasGraphics_beginImageData() { - throw new Error('Should not call beginImageData'); - }, - paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) { - this.save(); - this.baseTransformStack.push(this.baseTransform); - if ((0, _util.isArray)(matrix) && matrix.length === 6) { - this.transform.apply(this, matrix); - } - this.baseTransform = this.ctx.mozCurrentTransform; - if ((0, _util.isArray)(bbox) && bbox.length === 4) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - this.ctx.rect(bbox[0], bbox[1], width, height); - this.clip(); - this.endPath(); - } - }, - paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() { - this.restore(); - this.baseTransform = this.baseTransformStack.pop(); - }, - beginGroup: function CanvasGraphics_beginGroup(group) { - this.save(); - var currentCtx = this.ctx; - if (!group.isolated) { - (0, _util.info)('TODO: Support non-isolated groups.'); - } - if (group.knockout) { - (0, _util.warn)('Knockout groups not supported.'); - } - var currentTransform = currentCtx.mozCurrentTransform; - if (group.matrix) { - currentCtx.transform.apply(currentCtx, group.matrix); - } - if (!group.bbox) { - throw new Error('Bounding box is required.'); - } - var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); - var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; - bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); - var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); - var scaleX = 1, - scaleY = 1; - if (drawnWidth > MAX_GROUP_SIZE) { - scaleX = drawnWidth / MAX_GROUP_SIZE; - drawnWidth = MAX_GROUP_SIZE; - } - if (drawnHeight > MAX_GROUP_SIZE) { - scaleY = drawnHeight / MAX_GROUP_SIZE; - drawnHeight = MAX_GROUP_SIZE; - } - var cacheId = 'groupAt' + this.groupLevel; - if (group.smask) { - cacheId += '_smask_' + this.smaskCounter++ % 2; - } - var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); - var groupCtx = scratchCanvas.context; - groupCtx.scale(1 / scaleX, 1 / scaleY); - groupCtx.translate(-offsetX, -offsetY); - groupCtx.transform.apply(groupCtx, currentTransform); - if (group.smask) { - this.smaskStack.push({ - canvas: scratchCanvas.canvas, - context: groupCtx, - offsetX: offsetX, - offsetY: offsetY, - scaleX: scaleX, - scaleY: scaleY, - subtype: group.smask.subtype, - backdrop: group.smask.backdrop, - transferMap: group.smask.transferMap || null, - startTransformInverse: null - }); - } else { - currentCtx.setTransform(1, 0, 0, 1, 0, 0); - currentCtx.translate(offsetX, offsetY); - currentCtx.scale(scaleX, scaleY); - } - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]); - this.groupStack.push(currentCtx); - this.groupLevel++; + paintFormXObjectEnd() { + if (!this.contentVisible) { + return; + } + + this.restore(); + this.baseTransform = this.baseTransformStack.pop(); + } + + beginGroup(group) { + if (!this.contentVisible) { + return; + } + + this.save(); + + if (this.inSMaskMode) { + this.endSMaskMode(); this.current.activeSMask = null; - }, - endGroup: function CanvasGraphics_endGroup(group) { - this.groupLevel--; - var groupCtx = this.ctx; - this.ctx = this.groupStack.pop(); - if (this.ctx.imageSmoothingEnabled !== undefined) { - this.ctx.imageSmoothingEnabled = false; - } else { - this.ctx.mozImageSmoothingEnabled = false; - } - if (group.smask) { - this.tempSMask = this.smaskStack.pop(); - } else { - this.ctx.drawImage(groupCtx.canvas, 0, 0); - } + } + + const currentCtx = this.ctx; + + if (!group.isolated) { + (0, _util.info)("TODO: Support non-isolated groups."); + } + + if (group.knockout) { + (0, _util.warn)("Knockout groups not supported."); + } + + const currentTransform = currentCtx.mozCurrentTransform; + + if (group.matrix) { + currentCtx.transform.apply(currentCtx, group.matrix); + } + + if (!group.bbox) { + throw new Error("Bounding box is required."); + } + + let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); + + const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; + bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; + const offsetX = Math.floor(bounds[0]); + const offsetY = Math.floor(bounds[1]); + let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); + let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); + let scaleX = 1, + scaleY = 1; + + if (drawnWidth > MAX_GROUP_SIZE) { + scaleX = drawnWidth / MAX_GROUP_SIZE; + drawnWidth = MAX_GROUP_SIZE; + } + + if (drawnHeight > MAX_GROUP_SIZE) { + scaleY = drawnHeight / MAX_GROUP_SIZE; + drawnHeight = MAX_GROUP_SIZE; + } + + this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]); + let cacheId = "groupAt" + this.groupLevel; + + if (group.smask) { + cacheId += "_smask_" + this.smaskCounter++ % 2; + } + + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); + const groupCtx = scratchCanvas.context; + groupCtx.scale(1 / scaleX, 1 / scaleY); + groupCtx.translate(-offsetX, -offsetY); + groupCtx.transform.apply(groupCtx, currentTransform); + + if (group.smask) { + this.smaskStack.push({ + canvas: scratchCanvas.canvas, + context: groupCtx, + offsetX, + offsetY, + scaleX, + scaleY, + subtype: group.smask.subtype, + backdrop: group.smask.backdrop, + transferMap: group.smask.transferMap || null, + startTransformInverse: null + }); + } else { + currentCtx.setTransform(1, 0, 0, 1, 0, 0); + currentCtx.translate(offsetX, offsetY); + currentCtx.scale(scaleX, scaleY); + currentCtx.save(); + } + + copyCtxState(currentCtx, groupCtx); + this.ctx = groupCtx; + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + this.groupStack.push(currentCtx); + this.groupLevel++; + } + + endGroup(group) { + if (!this.contentVisible) { + return; + } + + this.groupLevel--; + const groupCtx = this.ctx; + const ctx = this.groupStack.pop(); + this.ctx = ctx; + this.ctx.imageSmoothingEnabled = false; + + if (group.smask) { + this.tempSMask = this.smaskStack.pop(); this.restore(); - }, - beginAnnotations: function CanvasGraphics_beginAnnotations() { - this.save(); - if (this.baseTransform) { - this.ctx.setTransform.apply(this.ctx, this.baseTransform); - } - }, - endAnnotations: function CanvasGraphics_endAnnotations() { + } else { + this.ctx.restore(); + const currentMtx = this.ctx.mozCurrentTransform; this.restore(); - }, - beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) { - this.save(); - resetCtxToDefault(this.ctx); - this.current = new CanvasExtraState(); - if ((0, _util.isArray)(rect) && rect.length === 4) { - var width = rect[2] - rect[0]; - var height = rect[3] - rect[1]; + this.ctx.save(); + this.ctx.setTransform.apply(this.ctx, currentMtx); + + const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx); + + this.ctx.drawImage(groupCtx.canvas, 0, 0); + this.ctx.restore(); + this.compose(dirtyBox); + } + } + + beginAnnotations() { + this.save(); + + if (this.baseTransform) { + this.ctx.setTransform.apply(this.ctx, this.baseTransform); + } + } + + endAnnotations() { + this.restore(); + } + + beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) { + this.save(); + + if (Array.isArray(rect) && rect.length === 4) { + const width = rect[2] - rect[0]; + const height = rect[3] - rect[1]; + + if (hasOwnCanvas && this.annotationCanvasMap) { + transform = transform.slice(); + transform[4] -= rect[0]; + transform[5] -= rect[1]; + rect = rect.slice(); + rect[0] = rect[1] = 0; + rect[2] = width; + rect[3] = height; + + const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(this.ctx.mozCurrentTransform); + + const { + viewportScale + } = this; + const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale); + const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale); + this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight); + const { + canvas, + context + } = this.annotationCanvas; + const viewportScaleFactorStr = `var(--zoom-factor) * ${_display_utils.PixelsPerInch.PDF_TO_CSS_UNITS}`; + canvas.style.width = `calc(${width}px * ${viewportScaleFactorStr})`; + canvas.style.height = `calc(${height}px * ${viewportScaleFactorStr})`; + this.annotationCanvasMap.set(id, canvas); + this.annotationCanvas.savedCtx = this.ctx; + this.ctx = context; + this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY); + addContextCurrentTransform(this.ctx); + resetCtxToDefault(this.ctx, this.foregroundColor); + } else { + resetCtxToDefault(this.ctx, this.foregroundColor); this.ctx.rect(rect[0], rect[1], width, height); - this.clip(); + this.ctx.clip(); this.endPath(); } - this.transform.apply(this, transform); - this.transform.apply(this, matrix); - }, - endAnnotation: function CanvasGraphics_endAnnotation() { - this.restore(); - }, - paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) { - var domImage = this.objs.get(objId); - if (!domImage) { - (0, _util.warn)('Dependent image isn\'t ready yet'); - return; + } + + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); + this.transform.apply(this, transform); + this.transform.apply(this, matrix); + } + + endAnnotation() { + if (this.annotationCanvas) { + this.ctx = this.annotationCanvas.savedCtx; + delete this.annotationCanvas.savedCtx; + delete this.annotationCanvas; + } + + this.restore(); + } + + paintImageMaskXObject(img) { + if (!this.contentVisible) { + return; + } + + const count = img.count; + img = this.getObject(img.data, img); + img.count = count; + const ctx = this.ctx; + const glyph = this.processingType3; + + if (glyph) { + if (glyph.compiled === undefined) { + glyph.compiled = compileType3Glyph(img); } - this.save(); - var ctx = this.ctx; - ctx.scale(1 / w, -1 / h); - ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height, 0, -h, w, h); - if (this.imageLayer) { - var currentTransform = ctx.mozCurrentTransformInverse; - var position = this.getCanvasPosition(0, 0); - this.imageLayer.appendImage({ - objId: objId, - left: position[0], - top: position[1], - width: w / currentTransform[0], - height: h / currentTransform[3] - }); - } - this.restore(); - }, - paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) { - var ctx = this.ctx; - var width = img.width, - height = img.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var glyph = this.processingType3; - if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) { - if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) { - glyph.compiled = compileType3Glyph({ - data: img.data, - width: width, - height: height - }); - } else { - glyph.compiled = null; - } - } - if (glyph && glyph.compiled) { + + if (glyph.compiled) { glyph.compiled(ctx); return; } - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - putBinaryImageMask(maskCtx, img); - maskCtx.globalCompositeOperation = 'source-in'; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - maskCtx.restore(); - this.paintInlineImageXObject(maskCanvas.canvas); - }, - paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, scaleY, positions) { - var width = imgData.width; - var height = imgData.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - putBinaryImageMask(maskCtx, imgData); - maskCtx.globalCompositeOperation = 'source-in'; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - maskCtx.restore(); - var ctx = this.ctx; - for (var i = 0, ii = positions.length; i < ii; i += 2) { - ctx.save(); - ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]); - ctx.scale(1, -1); - ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); - ctx.restore(); - } - }, - paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) { - var ctx = this.ctx; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - for (var i = 0, ii = images.length; i < ii; i++) { - var image = images[i]; - var width = image.width, + } + + const mask = this._createMaskCanvas(img); + + const maskCanvas = mask.canvas; + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY); + ctx.restore(); + this.compose(); + } + + paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) { + if (!this.contentVisible) { + return; + } + + img = this.getObject(img.data, img); + const ctx = this.ctx; + ctx.save(); + const currentTransform = ctx.mozCurrentTransform; + ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0); + + const mask = this._createMaskCanvas(img); + + ctx.setTransform(1, 0, 0, 1, 0, 0); + + for (let i = 0, ii = positions.length; i < ii; i += 2) { + const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]); + + const [x, y] = _util.Util.applyTransform([0, 0], trans); + + ctx.drawImage(mask.canvas, x, y); + } + + ctx.restore(); + this.compose(); + } + + paintImageMaskXObjectGroup(images) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + + for (let i = 0, ii = images.length; i < ii; i++) { + const image = images[i]; + const width = image.width, height = image.height; - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - putBinaryImageMask(maskCtx, image); - maskCtx.globalCompositeOperation = 'source-in'; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - maskCtx.restore(); - ctx.save(); - ctx.transform.apply(ctx, image.transform); - ctx.scale(1, -1); - ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); - ctx.restore(); - } - }, - paintImageXObject: function CanvasGraphics_paintImageXObject(objId) { - var imgData = this.objs.get(objId); - if (!imgData) { - (0, _util.warn)('Dependent image isn\'t ready yet'); - return; - } - this.paintInlineImageXObject(imgData); - }, - paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { - var imgData = this.objs.get(objId); - if (!imgData) { - (0, _util.warn)('Dependent image isn\'t ready yet'); - return; - } - var width = imgData.width; - var height = imgData.height; - var map = []; - for (var i = 0, ii = positions.length; i < ii; i += 2) { - map.push({ - transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], - x: 0, - y: 0, - w: width, - h: height - }); - } - this.paintInlineImageXObjectGroup(imgData, map); - }, - paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) { - var width = imgData.width; - var height = imgData.height; - var ctx = this.ctx; - this.save(); - ctx.scale(1 / width, -1 / height); - var currentTransform = ctx.mozCurrentTransformInverse; - var a = currentTransform[0], - b = currentTransform[1]; - var widthScale = Math.max(Math.sqrt(a * a + b * b), 1); - var c = currentTransform[2], - d = currentTransform[3]; - var heightScale = Math.max(Math.sqrt(c * c + d * d), 1); - var imgToPaint, tmpCanvas; - if (imgData instanceof HTMLElement || !imgData.data) { - imgToPaint = imgData; - } else { - tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', width, height); - var tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData); - imgToPaint = tmpCanvas.canvas; - } - var paintWidth = width, - paintHeight = height; - var tmpCanvasId = 'prescale1'; - while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { - var newWidth = paintWidth, - newHeight = paintHeight; - if (widthScale > 2 && paintWidth > 1) { - newWidth = Math.ceil(paintWidth / 2); - widthScale /= paintWidth / newWidth; - } - if (heightScale > 2 && paintHeight > 1) { - newHeight = Math.ceil(paintHeight / 2); - heightScale /= paintHeight / newHeight; - } - tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight); - tmpCtx = tmpCanvas.context; - tmpCtx.clearRect(0, 0, newWidth, newHeight); - tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); - imgToPaint = tmpCanvas.canvas; - paintWidth = newWidth; - paintHeight = newHeight; - tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1'; - } - ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height); + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height, false); + const maskCtx = maskCanvas.context; + maskCtx.save(); + putBinaryImageMask(maskCtx, image); + maskCtx.globalCompositeOperation = "source-in"; + maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL) : fillColor; + maskCtx.fillRect(0, 0, width, height); + maskCtx.restore(); + ctx.save(); + ctx.transform.apply(ctx, image.transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); + ctx.restore(); + } + + this.compose(); + } + + paintImageXObject(objId) { + if (!this.contentVisible) { + return; + } + + const imgData = this.getObject(objId); + + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + + this.paintInlineImageXObject(imgData); + } + + paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { + if (!this.contentVisible) { + return; + } + + const imgData = this.getObject(objId); + + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + + const width = imgData.width; + const height = imgData.height; + const map = []; + + for (let i = 0, ii = positions.length; i < ii; i += 2) { + map.push({ + transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], + x: 0, + y: 0, + w: width, + h: height + }); + } + + this.paintInlineImageXObjectGroup(imgData, map); + } + + paintInlineImageXObject(imgData) { + if (!this.contentVisible) { + return; + } + + const width = imgData.width; + const height = imgData.height; + const ctx = this.ctx; + this.save(); + ctx.scale(1 / width, -1 / height); + let imgToPaint; + + if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) { + imgToPaint = imgData; + } else { + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height, false); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + imgToPaint = tmpCanvas.canvas; + } + + const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse); + + ctx.imageSmoothingEnabled = getImageSmoothingEnabled(ctx.mozCurrentTransform, imgData.interpolate); + const [rWidth, rHeight] = drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height); + + if (this.imageLayer) { + const position = this.getCanvasPosition(0, -height); + this.imageLayer.appendImage({ + imgData, + left: position[0], + top: position[1], + width: rWidth, + height: rHeight + }); + } + + this.compose(); + this.restore(); + } + + paintInlineImageXObjectGroup(imgData, map) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const w = imgData.width; + const h = imgData.height; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h, false); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + + for (let i = 0, ii = map.length; i < ii; i++) { + const entry = map[i]; + ctx.save(); + ctx.transform.apply(ctx, entry.transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); + if (this.imageLayer) { - var position = this.getCanvasPosition(0, -height); + const position = this.getCanvasPosition(entry.x, entry.y); this.imageLayer.appendImage({ - imgData: imgData, + imgData, left: position[0], top: position[1], - width: width / currentTransform[0], - height: height / currentTransform[3] + width: w, + height: h }); } - this.restore(); - }, - paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) { - var ctx = this.ctx; - var w = imgData.width; - var h = imgData.height; - var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h); - var tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData); - for (var i = 0, ii = map.length; i < ii; i++) { - var entry = map[i]; - ctx.save(); - ctx.transform.apply(ctx, entry.transform); - ctx.scale(1, -1); - ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); - if (this.imageLayer) { - var position = this.getCanvasPosition(entry.x, entry.y); - this.imageLayer.appendImage({ - imgData: imgData, - left: position[0], - top: position[1], - width: w, - height: h - }); - } - ctx.restore(); - } - }, - paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() { - this.ctx.fillRect(0, 0, 1, 1); - }, - paintXObject: function CanvasGraphics_paintXObject() { - (0, _util.warn)('Unsupported \'paintXObject\' command.'); - }, - markPoint: function CanvasGraphics_markPoint(tag) {}, - markPointProps: function CanvasGraphics_markPointProps(tag, properties) {}, - beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {}, - beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {}, - endMarkedContent: function CanvasGraphics_endMarkedContent() {}, - beginCompat: function CanvasGraphics_beginCompat() {}, - endCompat: function CanvasGraphics_endCompat() {}, - consumePath: function CanvasGraphics_consumePath() { - var ctx = this.ctx; - if (this.pendingClip) { + + ctx.restore(); + } + + this.compose(); + } + + paintSolidColorImageMask() { + if (!this.contentVisible) { + return; + } + + this.ctx.fillRect(0, 0, 1, 1); + this.compose(); + } + + markPoint(tag) {} + + markPointProps(tag, properties) {} + + beginMarkedContent(tag) { + this.markedContentStack.push({ + visible: true + }); + } + + beginMarkedContentProps(tag, properties) { + if (tag === "OC") { + this.markedContentStack.push({ + visible: this.optionalContentConfig.isVisible(properties) + }); + } else { + this.markedContentStack.push({ + visible: true + }); + } + + this.contentVisible = this.isContentVisible(); + } + + endMarkedContent() { + this.markedContentStack.pop(); + this.contentVisible = this.isContentVisible(); + } + + beginCompat() {} + + endCompat() {} + + consumePath(clipBox) { + const isEmpty = this.current.isEmptyClip(); + + if (this.pendingClip) { + this.current.updateClipFromPath(); + } + + if (!this.pendingClip) { + this.compose(clipBox); + } + + const ctx = this.ctx; + + if (this.pendingClip) { + if (!isEmpty) { if (this.pendingClip === EO_CLIP) { - ctx.clip('evenodd'); + ctx.clip("evenodd"); } else { ctx.clip(); } - this.pendingClip = null; } - ctx.beginPath(); - }, - getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) { - if (this.cachedGetSinglePixelWidth === null) { - this.ctx.save(); - var inverse = this.ctx.mozCurrentTransformInverse; - this.ctx.restore(); - this.cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3])); - } - return this.cachedGetSinglePixelWidth; - }, - getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) { - var transform = this.ctx.mozCurrentTransform; - return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; + + this.pendingClip = null; } - }; - for (var op in _util.OPS) { - CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; + + this.current.startNewPathAndClipBox(this.current.clipBox); + ctx.beginPath(); } - return CanvasGraphics; -}(); -exports.CanvasGraphics = CanvasGraphics; -/***/ }), -/* 12 */ -/***/ (function(module, exports, __w_pdfjs_require__) { + getSinglePixelWidth() { + if (!this._cachedGetSinglePixelWidth) { + const m = this.ctx.mozCurrentTransform; -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.FontLoader = exports.FontFaceObject = undefined; - -var _util = __w_pdfjs_require__(0); - -function FontLoader(docId) { - this.docId = docId; - this.styleElement = null; - this.nativeFontFaces = []; - this.loadTestFontId = 0; - this.loadingContext = { - requests: [], - nextRequestId: 0 - }; -} -FontLoader.prototype = { - insertRule: function fontLoaderInsertRule(rule) { - var styleElement = this.styleElement; - if (!styleElement) { - styleElement = this.styleElement = document.createElement('style'); - styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId; - document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement); - } - var styleSheet = styleElement.sheet; - styleSheet.insertRule(rule, styleSheet.cssRules.length); - }, - clear: function fontLoaderClear() { - if (this.styleElement) { - this.styleElement.remove(); - this.styleElement = null; - } - this.nativeFontFaces.forEach(function (nativeFontFace) { - document.fonts.delete(nativeFontFace); - }); - this.nativeFontFaces.length = 0; - } -}; -{ - var getLoadTestFont = function getLoadTestFont() { - return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + 'ABAAAAAAAAAAAD6AAAAAAAAA=='); - }; - Object.defineProperty(FontLoader.prototype, 'loadTestFont', { - get: function get() { - return (0, _util.shadow)(this, 'loadTestFont', getLoadTestFont()); - }, - - configurable: true - }); - FontLoader.prototype.addNativeFontFace = function fontLoader_addNativeFontFace(nativeFontFace) { - this.nativeFontFaces.push(nativeFontFace); - document.fonts.add(nativeFontFace); - }; - FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) { - var rules = []; - var fontsToLoad = []; - var fontLoadPromises = []; - var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) { - return nativeFontFace.loaded.catch(function (e) { - (0, _util.warn)('Failed to load font "' + nativeFontFace.family + '": ' + e); - }); - }; - var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported && !FontLoader.isSyncFontLoadingSupported; - for (var i = 0, ii = fonts.length; i < ii; i++) { - var font = fonts[i]; - if (font.attached || font.loading === false) { - continue; + if (m[1] === 0 && m[2] === 0) { + this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3])); + } else { + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const normX = Math.hypot(m[0], m[2]); + const normY = Math.hypot(m[1], m[3]); + this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet; } - font.attached = true; - if (isFontLoadingAPISupported) { - var nativeFontFace = font.createNativeFontFace(); - if (nativeFontFace) { - this.addNativeFontFace(nativeFontFace); - fontLoadPromises.push(getNativeFontPromise(nativeFontFace)); + } + + return this._cachedGetSinglePixelWidth; + } + + getScaleForStroking() { + if (!this._cachedScaleForStroking) { + const { + lineWidth + } = this.current; + const m = this.ctx.mozCurrentTransform; + let scaleX, scaleY; + + if (m[1] === 0 && m[2] === 0) { + const normX = Math.abs(m[0]); + const normY = Math.abs(m[3]); + + if (lineWidth === 0) { + scaleX = 1 / normX; + scaleY = 1 / normY; + } else { + const scaledXLineWidth = normX * lineWidth; + const scaledYLineWidth = normY * lineWidth; + scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1; + scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1; } } else { - var rule = font.createFontFaceRule(); - if (rule) { - this.insertRule(rule); - rules.push(rule); - fontsToLoad.push(font); - } - } - } - var request = this.queueLoadingCallback(callback); - if (isFontLoadingAPISupported) { - Promise.all(fontLoadPromises).then(function () { - request.complete(); - }); - } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) { - this.prepareFontLoadEvent(rules, fontsToLoad, request); - } else { - request.complete(); - } - }; - FontLoader.prototype.queueLoadingCallback = function FontLoader_queueLoadingCallback(callback) { - function LoadLoader_completeRequest() { - (0, _util.assert)(!request.end, 'completeRequest() cannot be called twice'); - request.end = Date.now(); - while (context.requests.length > 0 && context.requests[0].end) { - var otherRequest = context.requests.shift(); - setTimeout(otherRequest.callback, 0); - } - } - var context = this.loadingContext; - var requestId = 'pdfjs-font-loading-' + context.nextRequestId++; - var request = { - id: requestId, - complete: LoadLoader_completeRequest, - callback: callback, - started: Date.now() - }; - context.requests.push(request); - return request; - }; - FontLoader.prototype.prepareFontLoadEvent = function fontLoaderPrepareFontLoadEvent(rules, fonts, request) { - function int32(data, offset) { - return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; - } - function spliceString(s, offset, remove, insert) { - var chunk1 = s.substr(0, offset); - var chunk2 = s.substr(offset + remove); - return chunk1 + insert + chunk2; - } - var i, ii; - var canvas = document.createElement('canvas'); - canvas.width = 1; - canvas.height = 1; - var ctx = canvas.getContext('2d'); - var called = 0; - function isFontReady(name, callback) { - called++; - if (called > 30) { - (0, _util.warn)('Load test font never loaded.'); - callback(); - return; - } - ctx.font = '30px ' + name; - ctx.fillText('.', 0, 20); - var imageData = ctx.getImageData(0, 0, 1, 1); - if (imageData.data[3] > 0) { - callback(); - return; - } - setTimeout(isFontReady.bind(null, name, callback)); - } - var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++; - var data = this.loadTestFont; - var COMMENT_OFFSET = 976; - data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); - var CFF_CHECKSUM_OFFSET = 16; - var XXXX_VALUE = 0x58585858; - var checksum = int32(data, CFF_CHECKSUM_OFFSET); - for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; - } - if (i < loadTestFontId.length) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0; - } - data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); - var url = 'url(data:font/opentype;base64,' + btoa(data) + ');'; - var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + url + '}'; - this.insertRule(rule); - var names = []; - for (i = 0, ii = fonts.length; i < ii; i++) { - names.push(fonts[i].loadedName); - } - names.push(loadTestFontId); - var div = document.createElement('div'); - div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;'); - for (i = 0, ii = names.length; i < ii; ++i) { - var span = document.createElement('span'); - span.textContent = 'Hi'; - span.style.fontFamily = names[i]; - div.appendChild(span); - } - document.body.appendChild(div); - isFontReady(loadTestFontId, function () { - document.body.removeChild(div); - request.complete(); - }); - }; -} -{ - FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' && !!document.fonts; -} -{ - var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() { - if (typeof navigator === 'undefined') { - return true; - } - var supported = false; - var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); - if (m && m[1] >= 14) { - supported = true; - } - return supported; - }; - Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', { - get: function get() { - return (0, _util.shadow)(FontLoader, 'isSyncFontLoadingSupported', isSyncFontLoadingSupported()); - }, + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const normX = Math.hypot(m[0], m[1]); + const normY = Math.hypot(m[2], m[3]); - enumerable: true, - configurable: true - }); -} -var IsEvalSupportedCached = { - get value() { - return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)()); - } -}; -var FontFaceObject = function FontFaceObjectClosure() { - function FontFaceObject(translatedData, options) { - this.compiledGlyphs = Object.create(null); - for (var i in translatedData) { - this[i] = translatedData[i]; - } - this.options = options; - } - FontFaceObject.prototype = { - createNativeFontFace: function FontFaceObject_createNativeFontFace() { - if (!this.data) { - return null; - } - if (this.options.disableFontFace) { - this.disableFontFace = true; - return null; - } - var nativeFontFace = new FontFace(this.loadedName, this.data, {}); - if (this.options.fontRegistry) { - this.options.fontRegistry.registerFont(this); - } - return nativeFontFace; - }, - createFontFaceRule: function FontFaceObject_createFontFaceRule() { - if (!this.data) { - return null; - } - if (this.options.disableFontFace) { - this.disableFontFace = true; - return null; - } - var data = (0, _util.bytesToString)(new Uint8Array(this.data)); - var fontName = this.loadedName; - var url = 'url(data:' + this.mimetype + ';base64,' + btoa(data) + ');'; - var rule = '@font-face { font-family:"' + fontName + '";src:' + url + '}'; - if (this.options.fontRegistry) { - this.options.fontRegistry.registerFont(this, url); - } - return rule; - }, - getPathGenerator: function FontFaceObject_getPathGenerator(objs, character) { - if (!(character in this.compiledGlyphs)) { - var cmds = objs.get(this.loadedName + '_path_' + character); - var current, i, len; - if (this.options.isEvalSupported && IsEvalSupportedCached.value) { - var args, - js = ''; - for (i = 0, len = cmds.length; i < len; i++) { - current = cmds[i]; - if (current.args !== undefined) { - args = current.args.join(','); - } else { - args = ''; - } - js += 'c.' + current.cmd + '(' + args + ');\n'; - } - this.compiledGlyphs[character] = new Function('c', 'size', js); + if (lineWidth === 0) { + scaleX = normY / absDet; + scaleY = normX / absDet; } else { - this.compiledGlyphs[character] = function (c, size) { - for (i = 0, len = cmds.length; i < len; i++) { - current = cmds[i]; - if (current.cmd === 'scale') { - current.args = [size, -size]; - } - c[current.cmd].apply(c, current.args); - } - }; + const baseArea = lineWidth * absDet; + scaleX = normY > baseArea ? normY / baseArea : 1; + scaleY = normX > baseArea ? normX / baseArea : 1; } } - return this.compiledGlyphs[character]; + + this._cachedScaleForStroking = [scaleX, scaleY]; } - }; - return FontFaceObject; -}(); -exports.FontFaceObject = FontFaceObject; -exports.FontLoader = FontLoader; -/***/ }), -/* 13 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.TilingPattern = exports.getShadingPatternFromIR = undefined; - -var _util = __w_pdfjs_require__(0); - -var _webgl = __w_pdfjs_require__(7); - -var ShadingIRs = {}; -ShadingIRs.RadialAxial = { - fromIR: function RadialAxial_fromIR(raw) { - var type = raw[1]; - var colorStops = raw[2]; - var p0 = raw[3]; - var p1 = raw[4]; - var r0 = raw[5]; - var r1 = raw[6]; - return { - type: 'Pattern', - getPattern: function RadialAxial_getPattern(ctx) { - var grad; - if (type === 'axial') { - grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); - } else if (type === 'radial') { - grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1); - } - for (var i = 0, ii = colorStops.length; i < ii; ++i) { - var c = colorStops[i]; - grad.addColorStop(c[0], c[1]); - } - return grad; - } - }; + return this._cachedScaleForStroking; } -}; -var createMeshCanvas = function createMeshCanvasClosure() { - function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { - var coords = context.coords, - colors = context.colors; - var bytes = data.data, - rowSize = data.width * 4; - var tmp; - if (coords[p1 + 1] > coords[p2 + 1]) { - tmp = p1; - p1 = p2; - p2 = tmp; - tmp = c1; - c1 = c2; - c2 = tmp; - } - if (coords[p2 + 1] > coords[p3 + 1]) { - tmp = p2; - p2 = p3; - p3 = tmp; - tmp = c2; - c2 = c3; - c3 = tmp; - } - if (coords[p1 + 1] > coords[p2 + 1]) { - tmp = p1; - p1 = p2; - p2 = tmp; - tmp = c1; - c1 = c2; - c2 = tmp; - } - var x1 = (coords[p1] + context.offsetX) * context.scaleX; - var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; - var x2 = (coords[p2] + context.offsetX) * context.scaleX; - var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; - var x3 = (coords[p3] + context.offsetX) * context.scaleX; - var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; - if (y1 >= y3) { + + rescaleAndStroke(saveRestore) { + const { + ctx + } = this; + const { + lineWidth + } = this.current; + const [scaleX, scaleY] = this.getScaleForStroking(); + ctx.lineWidth = lineWidth || 1; + + if (scaleX === 1 && scaleY === 1) { + ctx.stroke(); return; } - var c1r = colors[c1], + + let savedMatrix, savedDashes, savedDashOffset; + + if (saveRestore) { + savedMatrix = ctx.mozCurrentTransform.slice(); + savedDashes = ctx.getLineDash().slice(); + savedDashOffset = ctx.lineDashOffset; + } + + ctx.scale(scaleX, scaleY); + const scale = Math.max(scaleX, scaleY); + ctx.setLineDash(ctx.getLineDash().map(x => x / scale)); + ctx.lineDashOffset /= scale; + ctx.stroke(); + + if (saveRestore) { + ctx.setTransform(...savedMatrix); + ctx.setLineDash(savedDashes); + ctx.lineDashOffset = savedDashOffset; + } + } + + getCanvasPosition(x, y) { + const transform = this.ctx.mozCurrentTransform; + return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; + } + + isContentVisible() { + for (let i = this.markedContentStack.length - 1; i >= 0; i--) { + if (!this.markedContentStack[i].visible) { + return false; + } + } + + return true; + } + +} + +exports.CanvasGraphics = CanvasGraphics; + +for (const op in _util.OPS) { + if (CanvasGraphics.prototype[op] !== undefined) { + CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; + } +} + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TilingPattern = exports.PathType = void 0; +exports.getShadingPattern = getShadingPattern; + +var _util = __w_pdfjs_require__(1); + +var _is_node = __w_pdfjs_require__(3); + +const PathType = { + FILL: "Fill", + STROKE: "Stroke", + SHADING: "Shading" +}; +exports.PathType = PathType; + +function applyBoundingBox(ctx, bbox) { + if (!bbox || _is_node.isNodeJS) { + return; + } + + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const region = new Path2D(); + region.rect(bbox[0], bbox[1], width, height); + ctx.clip(region); +} + +class BaseShadingPattern { + constructor() { + if (this.constructor === BaseShadingPattern) { + (0, _util.unreachable)("Cannot initialize BaseShadingPattern."); + } + } + + getPattern() { + (0, _util.unreachable)("Abstract method `getPattern` called."); + } + +} + +class RadialAxialShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._type = IR[1]; + this._bbox = IR[2]; + this._colorStops = IR[3]; + this._p0 = IR[4]; + this._p1 = IR[5]; + this._r0 = IR[6]; + this._r1 = IR[7]; + this.matrix = null; + } + + _createGradient(ctx) { + let grad; + + if (this._type === "axial") { + grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]); + } else if (this._type === "radial") { + grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1); + } + + for (const colorStop of this._colorStops) { + grad.addColorStop(colorStop[0], colorStop[1]); + } + + return grad; + } + + getPattern(ctx, owner, inverse, pathType) { + let pattern; + + if (pathType === PathType.STROKE || pathType === PathType.FILL) { + const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, ctx.mozCurrentTransform) || [0, 0, 0, 0]; + const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1; + const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1; + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", width, height, true); + const tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.beginPath(); + tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]); + inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]); + tmpCtx.transform.apply(tmpCtx, owner.baseTransform); + + if (this.matrix) { + tmpCtx.transform.apply(tmpCtx, this.matrix); + } + + applyBoundingBox(tmpCtx, this._bbox); + tmpCtx.fillStyle = this._createGradient(tmpCtx); + tmpCtx.fill(); + pattern = ctx.createPattern(tmpCanvas.canvas, "no-repeat"); + const domMatrix = new DOMMatrix(inverse); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`RadialAxialShadingPattern.getPattern: "${ex?.message}".`); + } + } else { + applyBoundingBox(ctx, this._bbox); + pattern = this._createGradient(ctx); + } + + return pattern; + } + +} + +function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { + const coords = context.coords, + colors = context.colors; + const bytes = data.data, + rowSize = data.width * 4; + let tmp; + + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + + if (coords[p2 + 1] > coords[p3 + 1]) { + tmp = p2; + p2 = p3; + p3 = tmp; + tmp = c2; + c2 = c3; + c3 = tmp; + } + + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + + const x1 = (coords[p1] + context.offsetX) * context.scaleX; + const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; + const x2 = (coords[p2] + context.offsetX) * context.scaleX; + const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; + const x3 = (coords[p3] + context.offsetX) * context.scaleX; + const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; + + if (y1 >= y3) { + return; + } + + const c1r = colors[c1], c1g = colors[c1 + 1], c1b = colors[c1 + 2]; - var c2r = colors[c2], + const c2r = colors[c2], c2g = colors[c2 + 1], c2b = colors[c2 + 2]; - var c3r = colors[c3], + const c3r = colors[c3], c3g = colors[c3 + 1], c3b = colors[c3 + 2]; - var minY = Math.round(y1), + const minY = Math.round(y1), maxY = Math.round(y3); - var xa, car, cag, cab; - var xb, cbr, cbg, cbb; - var k; - for (var y = minY; y <= maxY; y++) { - if (y < y2) { - k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2); - xa = x1 - (x1 - x2) * k; - car = c1r - (c1r - c2r) * k; - cag = c1g - (c1g - c2g) * k; - cab = c1b - (c1b - c2b) * k; + let xa, car, cag, cab; + let xb, cbr, cbg, cbb; + + for (let y = minY; y <= maxY; y++) { + if (y < y2) { + let k; + + if (y < y1) { + k = 0; } else { - k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3); - xa = x2 - (x2 - x3) * k; - car = c2r - (c2r - c3r) * k; - cag = c2g - (c2g - c3g) * k; - cab = c2b - (c2b - c3b) * k; + k = (y1 - y) / (y1 - y2); } - k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3); - xb = x1 - (x1 - x3) * k; - cbr = c1r - (c1r - c3r) * k; - cbg = c1g - (c1g - c3g) * k; - cbb = c1b - (c1b - c3b) * k; - var x1_ = Math.round(Math.min(xa, xb)); - var x2_ = Math.round(Math.max(xa, xb)); - var j = rowSize * y + x1_ * 4; - for (var x = x1_; x <= x2_; x++) { - k = (xa - x) / (xa - xb); - k = k < 0 ? 0 : k > 1 ? 1 : k; - bytes[j++] = car - (car - cbr) * k | 0; - bytes[j++] = cag - (cag - cbg) * k | 0; - bytes[j++] = cab - (cab - cbb) * k | 0; - bytes[j++] = 255; + + xa = x1 - (x1 - x2) * k; + car = c1r - (c1r - c2r) * k; + cag = c1g - (c1g - c2g) * k; + cab = c1b - (c1b - c2b) * k; + } else { + let k; + + if (y > y3) { + k = 1; + } else if (y2 === y3) { + k = 0; + } else { + k = (y2 - y) / (y2 - y3); } + + xa = x2 - (x2 - x3) * k; + car = c2r - (c2r - c3r) * k; + cag = c2g - (c2g - c3g) * k; + cab = c2b - (c2b - c3b) * k; + } + + let k; + + if (y < y1) { + k = 0; + } else if (y > y3) { + k = 1; + } else { + k = (y1 - y) / (y1 - y3); + } + + xb = x1 - (x1 - x3) * k; + cbr = c1r - (c1r - c3r) * k; + cbg = c1g - (c1g - c3g) * k; + cbb = c1b - (c1b - c3b) * k; + const x1_ = Math.round(Math.min(xa, xb)); + const x2_ = Math.round(Math.max(xa, xb)); + let j = rowSize * y + x1_ * 4; + + for (let x = x1_; x <= x2_; x++) { + k = (xa - x) / (xa - xb); + + if (k < 0) { + k = 0; + } else if (k > 1) { + k = 1; + } + + bytes[j++] = car - (car - cbr) * k | 0; + bytes[j++] = cag - (cag - cbg) * k | 0; + bytes[j++] = cab - (cab - cbb) * k | 0; + bytes[j++] = 255; } } - function drawFigure(data, figure, context) { - var ps = figure.coords; - var cs = figure.colors; - var i, ii; - switch (figure.type) { - case 'lattice': - var verticesPerRow = figure.verticesPerRow; - var rows = Math.floor(ps.length / verticesPerRow) - 1; - var cols = verticesPerRow - 1; - for (i = 0; i < rows; i++) { - var q = i * verticesPerRow; - for (var j = 0; j < cols; j++, q++) { - drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); - drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); - } +} + +function drawFigure(data, figure, context) { + const ps = figure.coords; + const cs = figure.colors; + let i, ii; + + switch (figure.type) { + case "lattice": + const verticesPerRow = figure.verticesPerRow; + const rows = Math.floor(ps.length / verticesPerRow) - 1; + const cols = verticesPerRow - 1; + + for (i = 0; i < rows; i++) { + let q = i * verticesPerRow; + + for (let j = 0; j < cols; j++, q++) { + drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); + drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); } - break; - case 'triangles': - for (i = 0, ii = ps.length; i < ii; i += 3) { - drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); - } - break; - default: - throw new Error('illegal figure'); - } + } + + break; + + case "triangles": + for (i = 0, ii = ps.length; i < ii; i += 3) { + drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); + } + + break; + + default: + throw new Error("illegal figure"); } - function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases) { - var EXPECTED_SCALE = 1.1; - var MAX_PATTERN_SIZE = 3000; - var BORDER_SIZE = 2; - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var boundsWidth = Math.ceil(bounds[2]) - offsetX; - var boundsHeight = Math.ceil(bounds[3]) - offsetY; - var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var scaleX = boundsWidth / width; - var scaleY = boundsHeight / height; - var context = { - coords: coords, - colors: colors, +} + +class MeshShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._coords = IR[2]; + this._colors = IR[3]; + this._figures = IR[4]; + this._bounds = IR[5]; + this._bbox = IR[7]; + this._background = IR[8]; + this.matrix = null; + } + + _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) { + const EXPECTED_SCALE = 1.1; + const MAX_PATTERN_SIZE = 3000; + const BORDER_SIZE = 2; + const offsetX = Math.floor(this._bounds[0]); + const offsetY = Math.floor(this._bounds[1]); + const boundsWidth = Math.ceil(this._bounds[2]) - offsetX; + const boundsHeight = Math.ceil(this._bounds[3]) - offsetY; + const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const scaleX = boundsWidth / width; + const scaleY = boundsHeight / height; + const context = { + coords: this._coords, + colors: this._colors, offsetX: -offsetX, offsetY: -offsetY, scaleX: 1 / scaleX, scaleY: 1 / scaleY }; - var paddedWidth = width + BORDER_SIZE * 2; - var paddedHeight = height + BORDER_SIZE * 2; - var canvas, tmpCanvas, i, ii; - if (_webgl.WebGLUtils.isEnabled) { - canvas = _webgl.WebGLUtils.drawFigures(width, height, backgroundColor, figures, context); - tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false); - tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE); - canvas = tmpCanvas.canvas; - } else { - tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false); - var tmpCtx = tmpCanvas.context; - var data = tmpCtx.createImageData(width, height); - if (backgroundColor) { - var bytes = data.data; - for (i = 0, ii = bytes.length; i < ii; i += 4) { - bytes[i] = backgroundColor[0]; - bytes[i + 1] = backgroundColor[1]; - bytes[i + 2] = backgroundColor[2]; - bytes[i + 3] = 255; - } + const paddedWidth = width + BORDER_SIZE * 2; + const paddedHeight = height + BORDER_SIZE * 2; + const tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false); + const tmpCtx = tmpCanvas.context; + const data = tmpCtx.createImageData(width, height); + + if (backgroundColor) { + const bytes = data.data; + + for (let i = 0, ii = bytes.length; i < ii; i += 4) { + bytes[i] = backgroundColor[0]; + bytes[i + 1] = backgroundColor[1]; + bytes[i + 2] = backgroundColor[2]; + bytes[i + 3] = 255; } - for (i = 0; i < figures.length; i++) { - drawFigure(data, figures[i], context); - } - tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); - canvas = tmpCanvas.canvas; } + + for (const figure of this._figures) { + drawFigure(data, figure, context); + } + + tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); + const canvas = tmpCanvas.canvas; return { - canvas: canvas, + canvas, offsetX: offsetX - BORDER_SIZE * scaleX, offsetY: offsetY - BORDER_SIZE * scaleY, - scaleX: scaleX, - scaleY: scaleY + scaleX, + scaleY }; } - return createMeshCanvas; -}(); -ShadingIRs.Mesh = { - fromIR: function Mesh_fromIR(raw) { - var coords = raw[2]; - var colors = raw[3]; - var figures = raw[4]; - var bounds = raw[5]; - var matrix = raw[6]; - var background = raw[8]; - return { - type: 'Pattern', - getPattern: function Mesh_getPattern(ctx, owner, shadingFill) { - var scale; - if (shadingFill) { - scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); - } else { - scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); - if (matrix) { - var matrixScale = _util.Util.singularValueDecompose2dScale(matrix); - scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; - } - } - var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases); - if (!shadingFill) { - ctx.setTransform.apply(ctx, owner.baseTransform); - if (matrix) { - ctx.transform.apply(ctx, matrix); - } - } - ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); - ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); - return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat'); + + getPattern(ctx, owner, inverse, pathType) { + applyBoundingBox(ctx, this._bbox); + let scale; + + if (pathType === PathType.SHADING) { + scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); + } else { + scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); + + if (this.matrix) { + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + + scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; } - }; - } -}; -ShadingIRs.Dummy = { - fromIR: function Dummy_fromIR() { - return { - type: 'Pattern', - getPattern: function Dummy_fromIR_getPattern() { - return 'hotpink'; + } + + const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases); + + if (pathType !== PathType.SHADING) { + ctx.setTransform.apply(ctx, owner.baseTransform); + + if (this.matrix) { + ctx.transform.apply(ctx, this.matrix); } - }; + } + + ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); + return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat"); } -}; -function getShadingPatternFromIR(raw) { - var shadingIR = ShadingIRs[raw[0]]; - if (!shadingIR) { - throw new Error('Unknown IR type: ' + raw[0]); - } - return shadingIR.fromIR(raw); + } -var TilingPattern = function TilingPatternClosure() { - var PaintType = { - COLORED: 1, - UNCOLORED: 2 - }; - var MAX_PATTERN_SIZE = 3000; - function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) { + +class DummyShadingPattern extends BaseShadingPattern { + getPattern() { + return "hotpink"; + } + +} + +function getShadingPattern(IR) { + switch (IR[0]) { + case "RadialAxial": + return new RadialAxialShadingPattern(IR); + + case "Mesh": + return new MeshShadingPattern(IR); + + case "Dummy": + return new DummyShadingPattern(); + } + + throw new Error(`Unknown IR type: ${IR[0]}`); +} + +const PaintType = { + COLORED: 1, + UNCOLORED: 2 +}; + +class TilingPattern { + static get MAX_PATTERN_SIZE() { + return (0, _util.shadow)(this, "MAX_PATTERN_SIZE", 3000); + } + + constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) { this.operatorList = IR[2]; this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; this.bbox = IR[4]; @@ -11993,267 +8162,1249 @@ var TilingPattern = function TilingPatternClosure() { this.paintType = IR[7]; this.tilingType = IR[8]; this.color = color; + this.ctx = ctx; this.canvasGraphicsFactory = canvasGraphicsFactory; this.baseTransform = baseTransform; - this.type = 'Pattern'; - this.ctx = ctx; } - TilingPattern.prototype = { - createPatternCanvas: function TilinPattern_createPatternCanvas(owner) { - var operatorList = this.operatorList; - var bbox = this.bbox; - var xstep = this.xstep; - var ystep = this.ystep; - var paintType = this.paintType; - var tilingType = this.tilingType; - var color = this.color; - var canvasGraphicsFactory = this.canvasGraphicsFactory; - (0, _util.info)('TilingType: ' + tilingType); - var x0 = bbox[0], + + createPatternCanvas(owner) { + const operatorList = this.operatorList; + const bbox = this.bbox; + const xstep = this.xstep; + const ystep = this.ystep; + const paintType = this.paintType; + const tilingType = this.tilingType; + const color = this.color; + const canvasGraphicsFactory = this.canvasGraphicsFactory; + (0, _util.info)("TilingType: " + tilingType); + const x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3]; - var topLeft = [x0, y0]; - var botRight = [x0 + xstep, y0 + ystep]; - var width = botRight[0] - topLeft[0]; - var height = botRight[1] - topLeft[1]; - var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); - var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); - var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; - width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])), MAX_PATTERN_SIZE); - height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])), MAX_PATTERN_SIZE); - var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', width, height, true); - var tmpCtx = tmpCanvas.context; - var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); - graphics.groupLevel = owner.groupLevel; - this.setFillAndStrokeStyleToContext(tmpCtx, paintType, color); - this.setScale(width, height, xstep, ystep); - this.transformToScale(graphics); - var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]]; - graphics.transform.apply(graphics, tmpTranslate); - this.clipBbox(graphics, bbox, x0, y0, x1, y1); - graphics.executeOperatorList(operatorList); - return tmpCanvas.canvas; - }, - setScale: function TilingPattern_setScale(width, height, xstep, ystep) { - this.scale = [width / xstep, height / ystep]; - }, - transformToScale: function TilingPattern_transformToScale(graphics) { - var scale = this.scale; - var tmpScale = [scale[0], 0, 0, scale[1], 0, 0]; - graphics.transform.apply(graphics, tmpScale); - }, - scaleToContext: function TilingPattern_scaleToContext() { - var scale = this.scale; - this.ctx.scale(1 / scale[0], 1 / scale[1]); - }, - clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) { - if ((0, _util.isArray)(bbox) && bbox.length === 4) { - var bboxWidth = x1 - x0; - var bboxHeight = y1 - y0; - graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); - graphics.clip(); - graphics.endPath(); - } - }, - setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(context, paintType, color) { - switch (paintType) { - case PaintType.COLORED: - var ctx = this.ctx; - context.fillStyle = ctx.fillStyle; - context.strokeStyle = ctx.strokeStyle; - break; - case PaintType.UNCOLORED: - var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]); - context.fillStyle = cssColor; - context.strokeStyle = cssColor; - break; - default: - throw new _util.FormatError('Unsupported paint type: ' + paintType); - } - }, - getPattern: function TilingPattern_getPattern(ctx, owner) { - var temporaryPatternCanvas = this.createPatternCanvas(owner); - ctx = this.ctx; - ctx.setTransform.apply(ctx, this.baseTransform); - ctx.transform.apply(ctx, this.matrix); - this.scaleToContext(); - return ctx.createPattern(temporaryPatternCanvas, 'repeat'); + + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + + const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); + + const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; + const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]); + const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]); + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true); + const tmpCtx = tmpCanvas.context; + const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); + graphics.groupLevel = owner.groupLevel; + this.setFillAndStrokeStyleToContext(graphics, paintType, color); + let adjustedX0 = x0; + let adjustedY0 = y0; + let adjustedX1 = x1; + let adjustedY1 = y1; + + if (x0 < 0) { + adjustedX0 = 0; + adjustedX1 += Math.abs(x0); } - }; - return TilingPattern; -}(); -exports.getShadingPatternFromIR = getShadingPatternFromIR; + + if (y0 < 0) { + adjustedY0 = 0; + adjustedY1 += Math.abs(y0); + } + + tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0)); + graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0); + tmpCtx.save(); + this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1); + graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice(); + graphics.executeOperatorList(operatorList); + graphics.endDrawing(); + return { + canvas: tmpCanvas.canvas, + scaleX: dimx.scale, + scaleY: dimy.scale, + offsetX: adjustedX0, + offsetY: adjustedY0 + }; + } + + getSizeAndScale(step, realOutputSize, scale) { + step = Math.abs(step); + const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize); + let size = Math.ceil(step * scale); + + if (size >= maxSize) { + size = maxSize; + } else { + scale = size / step; + } + + return { + scale, + size + }; + } + + clipBbox(graphics, x0, y0, x1, y1) { + const bboxWidth = x1 - x0; + const bboxHeight = y1 - y0; + graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); + graphics.current.updateRectMinMax(graphics.ctx.mozCurrentTransform, [x0, y0, x1, y1]); + graphics.clip(); + graphics.endPath(); + } + + setFillAndStrokeStyleToContext(graphics, paintType, color) { + const context = graphics.ctx, + current = graphics.current; + + switch (paintType) { + case PaintType.COLORED: + const ctx = this.ctx; + context.fillStyle = ctx.fillStyle; + context.strokeStyle = ctx.strokeStyle; + current.fillColor = ctx.fillStyle; + current.strokeColor = ctx.strokeStyle; + break; + + case PaintType.UNCOLORED: + const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]); + + context.fillStyle = cssColor; + context.strokeStyle = cssColor; + current.fillColor = cssColor; + current.strokeColor = cssColor; + break; + + default: + throw new _util.FormatError(`Unsupported paint type: ${paintType}`); + } + } + + getPattern(ctx, owner, inverse, pathType) { + let matrix = inverse; + + if (pathType !== PathType.SHADING) { + matrix = _util.Util.transform(matrix, owner.baseTransform); + + if (this.matrix) { + matrix = _util.Util.transform(matrix, this.matrix); + } + } + + const temporaryPatternCanvas = this.createPatternCanvas(owner); + let domMatrix = new DOMMatrix(matrix); + domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY); + const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat"); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`TilingPattern.getPattern: "${ex?.message}".`); + } + + return pattern; + } + +} + exports.TilingPattern = TilingPattern; /***/ }), -/* 14 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/* 12 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -Object.defineProperty(exports, "__esModule", { + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.PDFDataTransportStream = undefined; +})); +exports.applyMaskImageData = applyMaskImageData; -var _util = __w_pdfjs_require__(0); +var _util = __w_pdfjs_require__(1); -var PDFDataTransportStream = function PDFDataTransportStreamClosure() { - function PDFDataTransportStream(params, pdfDataRangeTransport) { - var _this = this; +function applyMaskImageData({ + src, + srcPos = 0, + dest, + destPos = 0, + width, + height, + inverseDecode = false +}) { + const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); - (0, _util.assert)(pdfDataRangeTransport); + for (let i = 0; i < height; i++) { + for (const max = srcPos + widthInSource; srcPos < max; srcPos++) { + const elem = srcPos < srcLength ? src[srcPos] : 255; + dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping; + } + + if (widthRemainder === 0) { + continue; + } + + const elem = srcPos < srcLength ? src[srcPos++] : 255; + + for (let j = 0; j < widthRemainder; j++) { + dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping; + } + } + + return { + srcPos, + destPos + }; +} + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GlobalWorkerOptions = void 0; +const GlobalWorkerOptions = Object.create(null); +exports.GlobalWorkerOptions = GlobalWorkerOptions; +GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort; +GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc; + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MessageHandler = void 0; + +var _util = __w_pdfjs_require__(1); + +const CallbackKind = { + UNKNOWN: 0, + DATA: 1, + ERROR: 2 +}; +const StreamKind = { + UNKNOWN: 0, + CANCEL: 1, + CANCEL_COMPLETE: 2, + CLOSE: 3, + ENQUEUE: 4, + ERROR: 5, + PULL: 6, + PULL_COMPLETE: 7, + START_COMPLETE: 8 +}; + +function wrapReason(reason) { + if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) { + (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); + } + + switch (reason.name) { + case "AbortException": + return new _util.AbortException(reason.message); + + case "MissingPDFException": + return new _util.MissingPDFException(reason.message); + + case "PasswordException": + return new _util.PasswordException(reason.message, reason.code); + + case "UnexpectedResponseException": + return new _util.UnexpectedResponseException(reason.message, reason.status); + + case "UnknownErrorException": + return new _util.UnknownErrorException(reason.message, reason.details); + + default: + return new _util.UnknownErrorException(reason.message, reason.toString()); + } +} + +class MessageHandler { + constructor(sourceName, targetName, comObj) { + this.sourceName = sourceName; + this.targetName = targetName; + this.comObj = comObj; + this.callbackId = 1; + this.streamId = 1; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + this.callbackCapabilities = Object.create(null); + this.actionHandler = Object.create(null); + + this._onComObjOnMessage = event => { + const data = event.data; + + if (data.targetName !== this.sourceName) { + return; + } + + if (data.stream) { + this._processStreamMessage(data); + + return; + } + + if (data.callback) { + const callbackId = data.callbackId; + const capability = this.callbackCapabilities[callbackId]; + + if (!capability) { + throw new Error(`Cannot resolve callback ${callbackId}`); + } + + delete this.callbackCapabilities[callbackId]; + + if (data.callback === CallbackKind.DATA) { + capability.resolve(data.data); + } else if (data.callback === CallbackKind.ERROR) { + capability.reject(wrapReason(data.reason)); + } else { + throw new Error("Unexpected callback case"); + } + + return; + } + + const action = this.actionHandler[data.action]; + + if (!action) { + throw new Error(`Unknown action from worker: ${data.action}`); + } + + if (data.callbackId) { + const cbSourceName = this.sourceName; + const cbTargetName = data.sourceName; + new Promise(function (resolve) { + resolve(action(data.data)); + }).then(function (result) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.DATA, + callbackId: data.callbackId, + data: result + }); + }, function (reason) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.ERROR, + callbackId: data.callbackId, + reason: wrapReason(reason) + }); + }); + return; + } + + if (data.streamId) { + this._createStreamSink(data); + + return; + } + + action(data.data); + }; + + comObj.addEventListener("message", this._onComObjOnMessage); + } + + on(actionName, handler) { + const ah = this.actionHandler; + + if (ah[actionName]) { + throw new Error(`There is already an actionName called "${actionName}"`); + } + + ah[actionName] = handler; + } + + send(actionName, data, transfers) { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + data + }, transfers); + } + + sendWithPromise(actionName, data, transfers) { + const callbackId = this.callbackId++; + const capability = (0, _util.createPromiseCapability)(); + this.callbackCapabilities[callbackId] = capability; + + try { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + callbackId, + data + }, transfers); + } catch (ex) { + capability.reject(ex); + } + + return capability.promise; + } + + sendWithStream(actionName, data, queueingStrategy, transfers) { + const streamId = this.streamId++, + sourceName = this.sourceName, + targetName = this.targetName, + comObj = this.comObj; + return new ReadableStream({ + start: controller => { + const startCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId] = { + controller, + startCall: startCapability, + pullCall: null, + cancelCall: null, + isClosed: false + }; + comObj.postMessage({ + sourceName, + targetName, + action: actionName, + streamId, + data, + desiredSize: controller.desiredSize + }, transfers); + return startCapability.promise; + }, + pull: controller => { + const pullCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].pullCall = pullCapability; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL, + streamId, + desiredSize: controller.desiredSize + }); + return pullCapability.promise; + }, + cancel: reason => { + (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason"); + const cancelCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].cancelCall = cancelCapability; + this.streamControllers[streamId].isClosed = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL, + streamId, + reason: wrapReason(reason) + }); + return cancelCapability.promise; + } + }, queueingStrategy); + } + + _createStreamSink(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const self = this, + action = this.actionHandler[data.action]; + const streamSink = { + enqueue(chunk, size = 1, transfers) { + if (this.isCancelled) { + return; + } + + const lastDesiredSize = this.desiredSize; + this.desiredSize -= size; + + if (lastDesiredSize > 0 && this.desiredSize <= 0) { + this.sinkCapability = (0, _util.createPromiseCapability)(); + this.ready = this.sinkCapability.promise; + } + + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ENQUEUE, + streamId, + chunk + }, transfers); + }, + + close() { + if (this.isCancelled) { + return; + } + + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CLOSE, + streamId + }); + delete self.streamSinks[streamId]; + }, + + error(reason) { + (0, _util.assert)(reason instanceof Error, "error must have a valid reason"); + + if (this.isCancelled) { + return; + } + + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ERROR, + streamId, + reason: wrapReason(reason) + }); + }, + + sinkCapability: (0, _util.createPromiseCapability)(), + onPull: null, + onCancel: null, + isCancelled: false, + desiredSize: data.desiredSize, + ready: null + }; + streamSink.sinkCapability.resolve(); + streamSink.ready = streamSink.sinkCapability.promise; + this.streamSinks[streamId] = streamSink; + new Promise(function (resolve) { + resolve(action(data.data, streamSink)); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + } + + _processStreamMessage(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const streamController = this.streamControllers[streamId], + streamSink = this.streamSinks[streamId]; + + switch (data.stream) { + case StreamKind.START_COMPLETE: + if (data.success) { + streamController.startCall.resolve(); + } else { + streamController.startCall.reject(wrapReason(data.reason)); + } + + break; + + case StreamKind.PULL_COMPLETE: + if (data.success) { + streamController.pullCall.resolve(); + } else { + streamController.pullCall.reject(wrapReason(data.reason)); + } + + break; + + case StreamKind.PULL: + if (!streamSink) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + break; + } + + if (streamSink.desiredSize <= 0 && data.desiredSize > 0) { + streamSink.sinkCapability.resolve(); + } + + streamSink.desiredSize = data.desiredSize; + new Promise(function (resolve) { + resolve(streamSink.onPull && streamSink.onPull()); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + break; + + case StreamKind.ENQUEUE: + (0, _util.assert)(streamController, "enqueue should have stream controller"); + + if (streamController.isClosed) { + break; + } + + streamController.controller.enqueue(data.chunk); + break; + + case StreamKind.CLOSE: + (0, _util.assert)(streamController, "close should have stream controller"); + + if (streamController.isClosed) { + break; + } + + streamController.isClosed = true; + streamController.controller.close(); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.ERROR: + (0, _util.assert)(streamController, "error should have stream controller"); + streamController.controller.error(wrapReason(data.reason)); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL_COMPLETE: + if (data.success) { + streamController.cancelCall.resolve(); + } else { + streamController.cancelCall.reject(wrapReason(data.reason)); + } + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL: + if (!streamSink) { + break; + } + + new Promise(function (resolve) { + resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + streamSink.sinkCapability.reject(wrapReason(data.reason)); + streamSink.isCancelled = true; + delete this.streamSinks[streamId]; + break; + + default: + throw new Error("Unexpected stream case"); + } + } + + async _deleteStreamController(streamController, streamId) { + await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]); + delete this.streamControllers[streamId]; + } + + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } + +} + +exports.MessageHandler = MessageHandler; + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Metadata = void 0; + +var _util = __w_pdfjs_require__(1); + +class Metadata { + #metadataMap; + #data; + + constructor({ + parsedData, + rawData + }) { + this.#metadataMap = parsedData; + this.#data = rawData; + } + + getRaw() { + return this.#data; + } + + get(name) { + return this.#metadataMap.get(name) ?? null; + } + + getAll() { + return (0, _util.objectFromMap)(this.#metadataMap); + } + + has(name) { + return this.#metadataMap.has(name); + } + +} + +exports.Metadata = Metadata; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OptionalContentConfig = void 0; + +var _util = __w_pdfjs_require__(1); + +class OptionalContentGroup { + constructor(name, intent) { + this.visible = true; + this.name = name; + this.intent = intent; + } + +} + +class OptionalContentConfig { + constructor(data) { + this.name = null; + this.creator = null; + this._order = null; + this._groups = new Map(); + + if (data === null) { + return; + } + + this.name = data.name; + this.creator = data.creator; + this._order = data.order; + + for (const group of data.groups) { + this._groups.set(group.id, new OptionalContentGroup(group.name, group.intent)); + } + + if (data.baseState === "OFF") { + for (const group of this._groups) { + group.visible = false; + } + } + + for (const on of data.on) { + this._groups.get(on).visible = true; + } + + for (const off of data.off) { + this._groups.get(off).visible = false; + } + } + + _evaluateVisibilityExpression(array) { + const length = array.length; + + if (length < 2) { + return true; + } + + const operator = array[0]; + + for (let i = 1; i < length; i++) { + const element = array[i]; + let state; + + if (Array.isArray(element)) { + state = this._evaluateVisibilityExpression(element); + } else if (this._groups.has(element)) { + state = this._groups.get(element).visible; + } else { + (0, _util.warn)(`Optional content group not found: ${element}`); + return true; + } + + switch (operator) { + case "And": + if (!state) { + return false; + } + + break; + + case "Or": + if (state) { + return true; + } + + break; + + case "Not": + return !state; + + default: + return true; + } + } + + return operator === "And"; + } + + isVisible(group) { + if (this._groups.size === 0) { + return true; + } + + if (!group) { + (0, _util.warn)("Optional content group not defined."); + return true; + } + + if (group.type === "OCG") { + if (!this._groups.has(group.id)) { + (0, _util.warn)(`Optional content group not found: ${group.id}`); + return true; + } + + return this._groups.get(group.id).visible; + } else if (group.type === "OCMD") { + if (group.expression) { + return this._evaluateVisibilityExpression(group.expression); + } + + if (!group.policy || group.policy === "AnyOn") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (this._groups.get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOn") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!this._groups.get(id).visible) { + return false; + } + } + + return true; + } else if (group.policy === "AnyOff") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!this._groups.get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOff") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (this._groups.get(id).visible) { + return false; + } + } + + return true; + } + + (0, _util.warn)(`Unknown optional content policy ${group.policy}.`); + return true; + } + + (0, _util.warn)(`Unknown group type ${group.type}.`); + return true; + } + + setVisibility(id, visible = true) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return; + } + + this._groups.get(id).visible = !!visible; + } + + getOrder() { + if (!this._groups.size) { + return null; + } + + if (this._order) { + return this._order.slice(); + } + + return Array.from(this._groups.keys()); + } + + getGroups() { + return this._groups.size > 0 ? (0, _util.objectFromMap)(this._groups) : null; + } + + getGroup(id) { + return this._groups.get(id) || null; + } + +} + +exports.OptionalContentConfig = OptionalContentConfig; + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDataTransportStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(5); + +class PDFDataTransportStream { + constructor(params, pdfDataRangeTransport) { + (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); this._queuedChunks = []; - var initialData = params.initialData; - if (initialData && initialData.length > 0) { - var buffer = new Uint8Array(initialData).buffer; + this._progressiveDone = params.progressiveDone || false; + this._contentDispositionFilename = params.contentDispositionFilename || null; + const initialData = params.initialData; + + if (initialData?.length > 0) { + const buffer = new Uint8Array(initialData).buffer; + this._queuedChunks.push(buffer); } + this._pdfDataRangeTransport = pdfDataRangeTransport; - this._isRangeSupported = !params.disableRange; this._isStreamingSupported = !params.disableStream; + this._isRangeSupported = !params.disableRange; this._contentLength = params.length; this._fullRequestReader = null; this._rangeReaders = []; - this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) { - _this._onReceiveData({ - begin: begin, - chunk: chunk + + this._pdfDataRangeTransport.addRangeListener((begin, chunk) => { + this._onReceiveData({ + begin, + chunk }); }); - this._pdfDataRangeTransport.addProgressListener(function (loaded) { - _this._onProgress({ loaded: loaded }); + + this._pdfDataRangeTransport.addProgressListener((loaded, total) => { + this._onProgress({ + loaded, + total + }); }); - this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) { - _this._onReceiveData({ chunk: chunk }); + + this._pdfDataRangeTransport.addProgressiveReadListener(chunk => { + this._onReceiveData({ + chunk + }); }); + + this._pdfDataRangeTransport.addProgressiveDoneListener(() => { + this._onProgressiveDone(); + }); + this._pdfDataRangeTransport.transportReady(); } - PDFDataTransportStream.prototype = { - _onReceiveData: function PDFDataTransportStream_onReceiveData(args) { - var buffer = new Uint8Array(args.chunk).buffer; - if (args.begin === undefined) { - if (this._fullRequestReader) { - this._fullRequestReader._enqueue(buffer); - } else { - this._queuedChunks.push(buffer); - } - } else { - var found = this._rangeReaders.some(function (rangeReader) { - if (rangeReader._begin !== args.begin) { - return false; - } - rangeReader._enqueue(buffer); - return true; - }); - (0, _util.assert)(found); - } - }, - _onProgress: function PDFDataTransportStream_onDataProgress(evt) { - if (this._rangeReaders.length > 0) { - var firstReader = this._rangeReaders[0]; - if (firstReader.onProgress) { - firstReader.onProgress({ loaded: evt.loaded }); - } - } - }, - _removeRangeReader: function PDFDataTransportStream_removeRangeReader(reader) { - var i = this._rangeReaders.indexOf(reader); - if (i >= 0) { - this._rangeReaders.splice(i, 1); - } - }, - getFullReader: function PDFDataTransportStream_getFullReader() { - (0, _util.assert)(!this._fullRequestReader); - var queuedChunks = this._queuedChunks; - this._queuedChunks = null; - return new PDFDataTransportStreamReader(this, queuedChunks); - }, - getRangeReader: function PDFDataTransportStream_getRangeReader(begin, end) { - var reader = new PDFDataTransportStreamRangeReader(this, begin, end); - this._pdfDataRangeTransport.requestDataRange(begin, end); - this._rangeReaders.push(reader); - return reader; - }, - cancelAllRequests: function PDFDataTransportStream_cancelAllRequests(reason) { + + _onReceiveData(args) { + const buffer = new Uint8Array(args.chunk).buffer; + + if (args.begin === undefined) { if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); + this._fullRequestReader._enqueue(buffer); + } else { + this._queuedChunks.push(buffer); } - var readers = this._rangeReaders.slice(0); - readers.forEach(function (rangeReader) { - rangeReader.cancel(reason); + } else { + const found = this._rangeReaders.some(function (rangeReader) { + if (rangeReader._begin !== args.begin) { + return false; + } + + rangeReader._enqueue(buffer); + + return true; }); - this._pdfDataRangeTransport.abort(); + + (0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."); } - }; - function PDFDataTransportStreamReader(stream, queuedChunks) { + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + _onProgress(evt) { + if (evt.total === undefined) { + const firstReader = this._rangeReaders[0]; + + if (firstReader?.onProgress) { + firstReader.onProgress({ + loaded: evt.loaded + }); + } + } else { + const fullReader = this._fullRequestReader; + + if (fullReader?.onProgress) { + fullReader.onProgress({ + loaded: evt.loaded, + total: evt.total + }); + } + } + } + + _onProgressiveDone() { + if (this._fullRequestReader) { + this._fullRequestReader.progressiveDone(); + } + + this._progressiveDone = true; + } + + _removeRangeReader(reader) { + const i = this._rangeReaders.indexOf(reader); + + if (i >= 0) { + this._rangeReaders.splice(i, 1); + } + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once."); + const queuedChunks = this._queuedChunks; + this._queuedChunks = null; + return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename); + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const reader = new PDFDataTransportStreamRangeReader(this, begin, end); + + this._pdfDataRangeTransport.requestDataRange(begin, end); + + this._rangeReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeReaders.slice(0)) { + reader.cancel(reason); + } + + this._pdfDataRangeTransport.abort(); + } + +} + +exports.PDFDataTransportStream = PDFDataTransportStream; + +class PDFDataTransportStreamReader { + constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) { this._stream = stream; - this._done = false; + this._done = progressiveDone || false; + this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null; this._queuedChunks = queuedChunks || []; + this._loaded = 0; + + for (const chunk of this._queuedChunks) { + this._loaded += chunk.byteLength; + } + this._requests = []; this._headersReady = Promise.resolve(); stream._fullRequestReader = this; this.onProgress = null; } - PDFDataTransportStreamReader.prototype = { - _enqueue: function PDFDataTransportStreamReader_enqueue(chunk) { - if (this._done) { - return; - } - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); - requestCapability.resolve({ - value: chunk, - done: false - }); - return; - } - this._queuedChunks.push(chunk); - }, - get headersReady() { - return this._headersReady; - }, - get isRangeSupported() { - return this._stream._isRangeSupported; - }, - get isStreamingSupported() { - return this._stream._isStreamingSupported; - }, - get contentLength() { - return this._stream._contentLength; - }, - read: function PDFDataTransportStreamReader_read() { - if (this._queuedChunks.length > 0) { - var chunk = this._queuedChunks.shift(); - return Promise.resolve({ - value: chunk, - done: false - }); - } - if (this._done) { - return Promise.resolve({ - value: undefined, - done: true - }); - } - var requestCapability = (0, _util.createPromiseCapability)(); - this._requests.push(requestCapability); - return requestCapability.promise; - }, - cancel: function PDFDataTransportStreamReader_cancel(reason) { - this._done = true; - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; + + _enqueue(chunk) { + if (this._done) { + return; } - }; - function PDFDataTransportStreamRangeReader(stream, begin, end) { + + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunks.push(chunk); + } + + this._loaded += chunk.byteLength; + } + + get headersReady() { + return this._headersReady; + } + + get filename() { + return this._filename; + } + + get isRangeSupported() { + return this._stream._isRangeSupported; + } + + get isStreamingSupported() { + return this._stream._isStreamingSupported; + } + + get contentLength() { + return this._stream._contentLength; + } + + async read() { + if (this._queuedChunks.length > 0) { + const chunk = this._queuedChunks.shift(); + + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + progressiveDone() { + if (this._done) { + return; + } + + this._done = true; + } + +} + +class PDFDataTransportStreamRangeReader { + constructor(stream, begin, end) { this._stream = stream; this._begin = begin; this._end = end; @@ -12262,1661 +9413,7013 @@ var PDFDataTransportStream = function PDFDataTransportStreamClosure() { this._done = false; this.onProgress = null; } - PDFDataTransportStreamRangeReader.prototype = { - _enqueue: function PDFDataTransportStreamRangeReader_enqueue(chunk) { - if (this._done) { - return; - } - if (this._requests.length === 0) { - this._queuedChunk = chunk; - } else { - var requestsCapability = this._requests.shift(); - requestsCapability.resolve({ - value: chunk, - done: false - }); - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; - } - this._done = true; - this._stream._removeRangeReader(this); - }, - get isStreamingSupported() { - return false; - }, - read: function PDFDataTransportStreamRangeReader_read() { - if (this._queuedChunk) { - var chunk = this._queuedChunk; - this._queuedChunk = null; - return Promise.resolve({ - value: chunk, - done: false - }); - } - if (this._done) { - return Promise.resolve({ - value: undefined, - done: true - }); - } - var requestCapability = (0, _util.createPromiseCapability)(); - this._requests.push(requestCapability); - return requestCapability.promise; - }, - cancel: function PDFDataTransportStreamRangeReader_cancel(reason) { - this._done = true; - this._requests.forEach(function (requestCapability) { + + _enqueue(chunk) { + if (this._done) { + return; + } + + if (this._requests.length === 0) { + this._queuedChunk = chunk; + } else { + const requestsCapability = this._requests.shift(); + + requestsCapability.resolve({ + value: chunk, + done: false + }); + + for (const requestCapability of this._requests) { requestCapability.resolve({ value: undefined, done: true }); - }); - this._requests = []; - this._stream._removeRangeReader(this); + } + + this._requests.length = 0; } - }; - return PDFDataTransportStream; -}(); -exports.PDFDataTransportStream = PDFDataTransportStream; -/***/ }), -/* 15 */ -/***/ (function(module, exports, __w_pdfjs_require__) { + this._done = true; -"use strict"; - - -var pdfjsVersion = '1.9.426'; -var pdfjsBuild = '2558a58d'; -var pdfjsSharedUtil = __w_pdfjs_require__(0); -var pdfjsDisplayGlobal = __w_pdfjs_require__(8); -var pdfjsDisplayAPI = __w_pdfjs_require__(2); -var pdfjsDisplayTextLayer = __w_pdfjs_require__(5); -var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(3); -var pdfjsDisplayDOMUtils = __w_pdfjs_require__(1); -var pdfjsDisplaySVG = __w_pdfjs_require__(4); -{ - __w_pdfjs_require__(9); -} -exports.PDFJS = pdfjsDisplayGlobal.PDFJS; -exports.build = pdfjsDisplayAPI.build; -exports.version = pdfjsDisplayAPI.version; -exports.getDocument = pdfjsDisplayAPI.getDocument; -exports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort; -exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport; -exports.PDFWorker = pdfjsDisplayAPI.PDFWorker; -exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer; -exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer; -exports.CustomStyle = pdfjsDisplayDOMUtils.CustomStyle; -exports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability; -exports.PasswordResponses = pdfjsSharedUtil.PasswordResponses; -exports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException; -exports.MissingPDFException = pdfjsSharedUtil.MissingPDFException; -exports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics; -exports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding; -exports.UnexpectedResponseException = pdfjsSharedUtil.UnexpectedResponseException; -exports.OPS = pdfjsSharedUtil.OPS; -exports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES; -exports.isValidUrl = pdfjsDisplayDOMUtils.isValidUrl; -exports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl; -exports.createObjectURL = pdfjsSharedUtil.createObjectURL; -exports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters; -exports.shadow = pdfjsSharedUtil.shadow; -exports.createBlob = pdfjsSharedUtil.createBlob; -exports.RenderingCancelledException = pdfjsDisplayDOMUtils.RenderingCancelledException; -exports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl; -exports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes; -exports.StatTimer = pdfjsSharedUtil.StatTimer; - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -if (typeof PDFJS === 'undefined' || !PDFJS.compatibilityChecked) { - var globalScope = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : false ? undefined : {}; - var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || ''; - var isAndroid = /Android/.test(userAgent); - var isAndroidPre3 = /Android\s[0-2][^\d]/.test(userAgent); - var isAndroidPre5 = /Android\s[0-4][^\d]/.test(userAgent); - var isChrome = userAgent.indexOf('Chrom') >= 0; - var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(userAgent); - var isIOSChrome = userAgent.indexOf('CriOS') >= 0; - var isIE = userAgent.indexOf('Trident') >= 0; - var isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent); - var isOpera = userAgent.indexOf('Opera') >= 0; - var isSafari = /Safari\//.test(userAgent) && !/(Chrome\/|Android\s)/.test(userAgent); - var hasDOM = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === 'object'; - if (typeof PDFJS === 'undefined') { - globalScope.PDFJS = {}; + this._stream._removeRangeReader(this); } - PDFJS.compatibilityChecked = true; - (function checkTypedArrayCompatibility() { - if (typeof Uint8Array !== 'undefined') { - if (typeof Uint8Array.prototype.subarray === 'undefined') { - Uint8Array.prototype.subarray = function subarray(start, end) { - return new Uint8Array(this.slice(start, end)); - }; - Float32Array.prototype.subarray = function subarray(start, end) { - return new Float32Array(this.slice(start, end)); - }; - } - if (typeof Float64Array === 'undefined') { - globalScope.Float64Array = Float32Array; - } - return; - } - function subarray(start, end) { - return new TypedArray(this.slice(start, end)); - } - function setArrayOffset(array, offset) { - if (arguments.length < 2) { - offset = 0; - } - for (var i = 0, n = array.length; i < n; ++i, ++offset) { - this[offset] = array[i] & 0xFF; - } - } - function Uint32ArrayView(buffer, length) { - this.buffer = buffer; - this.byteLength = buffer.length; - this.length = length; - ensureUint32ArrayViewProps(this.length); - } - Uint32ArrayView.prototype = Object.create(null); - var uint32ArrayViewSetters = 0; - function createUint32ArrayProp(index) { + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._queuedChunk) { + const chunk = this._queuedChunk; + this._queuedChunk = null; return { - get: function get() { - var buffer = this.buffer, - offset = index << 2; - return (buffer[offset] | buffer[offset + 1] << 8 | buffer[offset + 2] << 16 | buffer[offset + 3] << 24) >>> 0; - }, - set: function set(value) { - var buffer = this.buffer, - offset = index << 2; - buffer[offset] = value & 255; - buffer[offset + 1] = value >> 8 & 255; - buffer[offset + 2] = value >> 16 & 255; - buffer[offset + 3] = value >>> 24 & 255; - } + value: chunk, + done: false }; } - function ensureUint32ArrayViewProps(length) { - while (uint32ArrayViewSetters < length) { - Object.defineProperty(Uint32ArrayView.prototype, uint32ArrayViewSetters, createUint32ArrayProp(uint32ArrayViewSetters)); - uint32ArrayViewSetters++; - } + + if (this._done) { + return { + value: undefined, + done: true + }; } - function TypedArray(arg1) { - var result, i, n; - if (typeof arg1 === 'number') { - result = []; - for (i = 0; i < arg1; ++i) { - result[i] = 0; - } - } else if ('slice' in arg1) { - result = arg1.slice(0); - } else { - result = []; - for (i = 0, n = arg1.length; i < n; ++i) { - result[i] = arg1[i]; - } - } - result.subarray = subarray; - result.buffer = result; - result.byteLength = result.length; - result.set = setArrayOffset; - if ((typeof arg1 === 'undefined' ? 'undefined' : _typeof(arg1)) === 'object' && arg1.buffer) { - result.buffer = arg1.buffer; - } - return result; + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); } - globalScope.Uint8Array = TypedArray; - globalScope.Int8Array = TypedArray; - globalScope.Int32Array = TypedArray; - globalScope.Uint16Array = TypedArray; - globalScope.Float32Array = TypedArray; - globalScope.Float64Array = TypedArray; - globalScope.Uint32Array = function () { - if (arguments.length === 3) { - if (arguments[1] !== 0) { - throw new Error('offset !== 0 is not supported'); - } - return new Uint32ArrayView(arguments[0], arguments[2]); - } - return TypedArray.apply(this, arguments); + + this._requests.length = 0; + + this._stream._removeRangeReader(this); + } + +} + +/***/ }), +/* 18 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaText = void 0; + +class XfaText { + static textContent(xfa) { + const items = []; + const output = { + items, + styles: Object.create(null) }; - })(); - (function canvasPixelArrayBuffer() { - if (!hasDOM || !window.CanvasPixelArray) { - return; - } - var cpaProto = window.CanvasPixelArray.prototype; - if ('buffer' in cpaProto) { - return; - } - Object.defineProperty(cpaProto, 'buffer', { - get: function get() { - return this; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(cpaProto, 'byteLength', { - get: function get() { - return this.length; - }, - - enumerable: false, - configurable: true - }); - })(); - (function normalizeURLObject() { - if (!globalScope.URL) { - globalScope.URL = globalScope.webkitURL; - } - })(); - (function checkObjectDefinePropertyCompatibility() { - if (typeof Object.defineProperty !== 'undefined') { - var definePropertyPossible = true; - try { - if (hasDOM) { - Object.defineProperty(new Image(), 'id', { value: 'test' }); - } - var Test = function Test() {}; - Test.prototype = { - get id() {} - }; - Object.defineProperty(new Test(), 'id', { - value: '', - configurable: true, - enumerable: true, - writable: false - }); - } catch (e) { - definePropertyPossible = false; - } - if (definePropertyPossible) { + function walk(node) { + if (!node) { return; } - } - Object.defineProperty = function objectDefineProperty(obj, name, def) { - delete obj[name]; - if ('get' in def) { - obj.__defineGetter__(name, def['get']); + + let str = null; + const name = node.name; + + if (name === "#text") { + str = node.value; + } else if (!XfaText.shouldBuildText(name)) { + return; + } else if (node?.attributes?.textContent) { + str = node.attributes.textContent; + } else if (node.value) { + str = node.value; } - if ('set' in def) { - obj.__defineSetter__(name, def['set']); - } - if ('value' in def) { - obj.__defineSetter__(name, function objectDefinePropertySetter(value) { - this.__defineGetter__(name, function objectDefinePropertyGetter() { - return value; - }); - return value; + + if (str !== null) { + items.push({ + str }); - obj[name] = def.value; } - }; - })(); - (function checkXMLHttpRequestResponseCompatibility() { - if (typeof XMLHttpRequest === 'undefined') { - return; - } - var xhrPrototype = XMLHttpRequest.prototype; - var xhr = new XMLHttpRequest(); - if (!('overrideMimeType' in xhr)) { - Object.defineProperty(xhrPrototype, 'overrideMimeType', { - value: function xmlHttpRequestOverrideMimeType(mimeType) {} - }); - } - if ('responseType' in xhr) { - return; - } - Object.defineProperty(xhrPrototype, 'responseType', { - get: function xmlHttpRequestGetResponseType() { - return this._responseType || 'text'; - }, - set: function xmlHttpRequestSetResponseType(value) { - if (value === 'text' || value === 'arraybuffer') { - this._responseType = value; - if (value === 'arraybuffer' && typeof this.overrideMimeType === 'function') { - this.overrideMimeType('text/plain; charset=x-user-defined'); - } - } + + if (!node.children) { + return; } + + for (const child of node.children) { + walk(child); + } + } + + walk(xfa); + return output; + } + + static shouldBuildText(name) { + return !(name === "textarea" || name === "input" || name === "option" || name === "select"); + } + +} + +exports.XfaText = XfaText; + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0; + +var _base_factory = __w_pdfjs_require__(6); + +; + +const fetchData = function (url) { + return new Promise((resolve, reject) => { + const fs = require("fs"); + + fs.readFile(url, (error, data) => { + if (error || !data) { + reject(new Error(error)); + return; + } + + resolve(new Uint8Array(data)); }); - if (typeof VBArray !== 'undefined') { - Object.defineProperty(xhrPrototype, 'response', { - get: function xmlHttpRequestResponseGet() { - if (this.responseType === 'arraybuffer') { - return new Uint8Array(new VBArray(this.responseBody).toArray()); - } - return this.responseText; - } - }); - return; - } - Object.defineProperty(xhrPrototype, 'response', { - get: function xmlHttpRequestResponseGet() { - if (this.responseType !== 'arraybuffer') { - return this.responseText; - } - var text = this.responseText; - var i, - n = text.length; - var result = new Uint8Array(n); - for (i = 0; i < n; ++i) { - result[i] = text.charCodeAt(i) & 0xFF; - } - return result.buffer; - } - }); - })(); - (function checkWindowBtoaCompatibility() { - if ('btoa' in globalScope) { - return; - } - var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - globalScope.btoa = function (chars) { - var buffer = ''; - var i, n; - for (i = 0, n = chars.length; i < n; i += 3) { - var b1 = chars.charCodeAt(i) & 0xFF; - var b2 = chars.charCodeAt(i + 1) & 0xFF; - var b3 = chars.charCodeAt(i + 2) & 0xFF; - var d1 = b1 >> 2, - d2 = (b1 & 3) << 4 | b2 >> 4; - var d3 = i + 1 < n ? (b2 & 0xF) << 2 | b3 >> 6 : 64; - var d4 = i + 2 < n ? b3 & 0x3F : 64; - buffer += digits.charAt(d1) + digits.charAt(d2) + digits.charAt(d3) + digits.charAt(d4); - } - return buffer; - }; - })(); - (function checkWindowAtobCompatibility() { - if ('atob' in globalScope) { - return; - } - var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - globalScope.atob = function (input) { - input = input.replace(/=+$/, ''); - if (input.length % 4 === 1) { - throw new Error('bad atob input'); - } - for (var bc = 0, bs, buffer, idx = 0, output = ''; buffer = input.charAt(idx++); ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) { - buffer = digits.indexOf(buffer); - } - return output; - }; - })(); - (function checkFunctionPrototypeBindCompatibility() { - if (typeof Function.prototype.bind !== 'undefined') { - return; - } - Function.prototype.bind = function functionPrototypeBind(obj) { - var fn = this, - headArgs = Array.prototype.slice.call(arguments, 1); - var bound = function functionPrototypeBindBound() { - var args = headArgs.concat(Array.prototype.slice.call(arguments)); - return fn.apply(obj, args); + }); +}; + +class NodeCanvasFactory extends _base_factory.BaseCanvasFactory { + _createCanvas(width, height) { + const Canvas = require("canvas"); + + return Canvas.createCanvas(width, height); + } + +} + +exports.NodeCanvasFactory = NodeCanvasFactory; + +class NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url).then(data => { + return { + cMapData: data, + compressionType }; - return bound; - }; - })(); - (function checkDatasetProperty() { - if (!hasDOM) { - return; - } - var div = document.createElement('div'); - if ('dataset' in div) { - return; - } - Object.defineProperty(HTMLElement.prototype, 'dataset', { - get: function get() { - if (this._dataset) { - return this._dataset; + }); + } + +} + +exports.NodeCMapReaderFactory = NodeCMapReaderFactory; + +class NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url); + } + +} + +exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory; + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationLayer = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(5); + +var _annotation_storage = __w_pdfjs_require__(8); + +var _scripting_utils = __w_pdfjs_require__(21); + +var _xfa_layer = __w_pdfjs_require__(22); + +const DEFAULT_TAB_INDEX = 1000; +const GetElementsByNameSet = new WeakSet(); + +function getRectDims(rect) { + return { + width: rect[2] - rect[0], + height: rect[3] - rect[1] + }; +} + +class AnnotationElementFactory { + static create(parameters) { + const subtype = parameters.data.annotationType; + + switch (subtype) { + case _util.AnnotationType.LINK: + return new LinkAnnotationElement(parameters); + + case _util.AnnotationType.TEXT: + return new TextAnnotationElement(parameters); + + case _util.AnnotationType.WIDGET: + const fieldType = parameters.data.fieldType; + + switch (fieldType) { + case "Tx": + return new TextWidgetAnnotationElement(parameters); + + case "Btn": + if (parameters.data.radioButton) { + return new RadioButtonWidgetAnnotationElement(parameters); + } else if (parameters.data.checkBox) { + return new CheckboxWidgetAnnotationElement(parameters); + } + + return new PushButtonWidgetAnnotationElement(parameters); + + case "Ch": + return new ChoiceWidgetAnnotationElement(parameters); } - var dataset = {}; - for (var j = 0, jj = this.attributes.length; j < jj; j++) { - var attribute = this.attributes[j]; - if (attribute.name.substring(0, 5) !== 'data-') { + + return new WidgetAnnotationElement(parameters); + + case _util.AnnotationType.POPUP: + return new PopupAnnotationElement(parameters); + + case _util.AnnotationType.FREETEXT: + return new FreeTextAnnotationElement(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.POLYLINE: + return new PolylineAnnotationElement(parameters); + + case _util.AnnotationType.CARET: + return new CaretAnnotationElement(parameters); + + case _util.AnnotationType.INK: + return new InkAnnotationElement(parameters); + + case _util.AnnotationType.POLYGON: + return new PolygonAnnotationElement(parameters); + + case _util.AnnotationType.HIGHLIGHT: + return new HighlightAnnotationElement(parameters); + + case _util.AnnotationType.UNDERLINE: + return new UnderlineAnnotationElement(parameters); + + case _util.AnnotationType.SQUIGGLY: + return new SquigglyAnnotationElement(parameters); + + case _util.AnnotationType.STRIKEOUT: + return new StrikeOutAnnotationElement(parameters); + + case _util.AnnotationType.STAMP: + return new StampAnnotationElement(parameters); + + case _util.AnnotationType.FILEATTACHMENT: + return new FileAttachmentAnnotationElement(parameters); + + default: + return new AnnotationElement(parameters); + } + } + +} + +class AnnotationElement { + constructor(parameters, { + isRenderable = false, + ignoreBorder = false, + createQuadrilaterals = false + } = {}) { + this.isRenderable = isRenderable; + this.data = parameters.data; + this.layer = parameters.layer; + this.page = parameters.page; + this.viewport = parameters.viewport; + this.linkService = parameters.linkService; + this.downloadManager = parameters.downloadManager; + this.imageResourcesPath = parameters.imageResourcesPath; + this.renderForms = parameters.renderForms; + this.svgFactory = parameters.svgFactory; + this.annotationStorage = parameters.annotationStorage; + this.enableScripting = parameters.enableScripting; + this.hasJSActions = parameters.hasJSActions; + this._fieldObjects = parameters.fieldObjects; + this._mouseState = parameters.mouseState; + + if (isRenderable) { + this.container = this._createContainer(ignoreBorder); + } + + if (createQuadrilaterals) { + this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); + } + } + + _createContainer(ignoreBorder = false) { + const data = this.data, + page = this.page, + viewport = this.viewport; + const container = document.createElement("section"); + let { + width, + height + } = getRectDims(data.rect); + container.setAttribute("data-annotation-id", data.id); + + const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); + + if (data.hasOwnCanvas) { + const transform = viewport.transform.slice(); + + const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(transform); + + width = Math.ceil(width * scaleX); + height = Math.ceil(height * scaleY); + rect[0] *= scaleX; + rect[1] *= scaleY; + + for (let i = 0; i < 4; i++) { + transform[i] = Math.sign(transform[i]); + } + + container.style.transform = `matrix(${transform.join(",")})`; + } else { + container.style.transform = `matrix(${viewport.transform.join(",")})`; + } + + container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`; + + if (!ignoreBorder && data.borderStyle.width > 0) { + container.style.borderWidth = `${data.borderStyle.width}px`; + + if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { + width -= 2 * data.borderStyle.width; + height -= 2 * data.borderStyle.width; + } + + const horizontalRadius = data.borderStyle.horizontalCornerRadius; + const verticalRadius = data.borderStyle.verticalCornerRadius; + + if (horizontalRadius > 0 || verticalRadius > 0) { + const radius = `${horizontalRadius}px / ${verticalRadius}px`; + container.style.borderRadius = radius; + } + + switch (data.borderStyle.style) { + case _util.AnnotationBorderStyleType.SOLID: + container.style.borderStyle = "solid"; + break; + + case _util.AnnotationBorderStyleType.DASHED: + container.style.borderStyle = "dashed"; + break; + + case _util.AnnotationBorderStyleType.BEVELED: + (0, _util.warn)("Unimplemented border style: beveled"); + break; + + case _util.AnnotationBorderStyleType.INSET: + (0, _util.warn)("Unimplemented border style: inset"); + break; + + case _util.AnnotationBorderStyleType.UNDERLINE: + container.style.borderBottomStyle = "solid"; + break; + + default: + break; + } + + const borderColor = data.borderColor || data.color || null; + + if (borderColor) { + container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); + } else { + container.style.borderWidth = 0; + } + } + + container.style.left = `${rect[0]}px`; + container.style.top = `${rect[1]}px`; + + if (data.hasOwnCanvas) { + container.style.width = container.style.height = "auto"; + } else { + container.style.width = `${width}px`; + container.style.height = `${height}px`; + } + + return container; + } + + get _commonActions() { + const setColor = (jsName, styleName, event) => { + const color = event.detail[jsName]; + event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1)); + }; + + return (0, _util.shadow)(this, "_commonActions", { + display: event => { + const hidden = event.detail.display % 2 === 1; + event.target.style.visibility = hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden, + print: event.detail.display === 0 || event.detail.display === 3 + }); + }, + print: event => { + this.annotationStorage.setValue(this.data.id, { + print: event.detail.print + }); + }, + hidden: event => { + event.target.style.visibility = event.detail.hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden: event.detail.hidden + }); + }, + focus: event => { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + userName: event => { + event.target.title = event.detail.userName; + }, + readonly: event => { + if (event.detail.readonly) { + event.target.setAttribute("readonly", ""); + } else { + event.target.removeAttribute("readonly"); + } + }, + required: event => { + if (event.detail.required) { + event.target.setAttribute("required", ""); + } else { + event.target.removeAttribute("required"); + } + }, + bgColor: event => { + setColor("bgColor", "backgroundColor", event); + }, + fillColor: event => { + setColor("fillColor", "backgroundColor", event); + }, + fgColor: event => { + setColor("fgColor", "color", event); + }, + textColor: event => { + setColor("textColor", "color", event); + }, + borderColor: event => { + setColor("borderColor", "borderColor", event); + }, + strokeColor: event => { + setColor("strokeColor", "borderColor", event); + } + }); + } + + _dispatchEventFromSandbox(actions, jsEvent) { + const commonActions = this._commonActions; + + for (const name of Object.keys(jsEvent.detail)) { + const action = actions[name] || commonActions[name]; + + if (action) { + action(jsEvent); + } + } + } + + _setDefaultPropertiesFromJS(element) { + if (!this.enableScripting) { + return; + } + + const storedData = this.annotationStorage.getRawValue(this.data.id); + + if (!storedData) { + return; + } + + const commonActions = this._commonActions; + + for (const [actionName, detail] of Object.entries(storedData)) { + const action = commonActions[actionName]; + + if (action) { + action({ + detail, + target: element + }); + delete storedData[actionName]; + } + } + } + + _createQuadrilaterals(ignoreBorder = false) { + if (!this.data.quadPoints) { + return null; + } + + const quadrilaterals = []; + const savedRect = this.data.rect; + + for (const quadPoint of this.data.quadPoints) { + this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y]; + quadrilaterals.push(this._createContainer(ignoreBorder)); + } + + this.data.rect = savedRect; + return quadrilaterals; + } + + _createPopup(trigger, data) { + let container = this.container; + + if (this.quadrilaterals) { + trigger = trigger || this.quadrilaterals; + container = this.quadrilaterals[0]; + } + + if (!trigger) { + trigger = document.createElement("div"); + trigger.style.height = container.style.height; + trigger.style.width = container.style.width; + container.appendChild(trigger); + } + + const popupElement = new PopupElement({ + container, + trigger, + color: data.color, + titleObj: data.titleObj, + modificationDate: data.modificationDate, + contentsObj: data.contentsObj, + richText: data.richText, + hideWrapper: true + }); + const popup = popupElement.render(); + popup.style.left = container.style.width; + container.appendChild(popup); + } + + _renderQuadrilaterals(className) { + for (const quadrilateral of this.quadrilaterals) { + quadrilateral.className = className; + } + + return this.quadrilaterals; + } + + render() { + (0, _util.unreachable)("Abstract method `AnnotationElement.render` called"); + } + + _getElementsByName(name, skipId = null) { + const fields = []; + + if (this._fieldObjects) { + const fieldObj = this._fieldObjects[name]; + + if (fieldObj) { + for (const { + page, + id, + exportValues + } of fieldObj) { + if (page === -1) { continue; } - var key = attribute.name.substring(5).replace(/\-([a-z])/g, function (all, ch) { - return ch.toUpperCase(); + + if (id === skipId) { + continue; + } + + const exportValue = typeof exportValues === "string" ? exportValues : null; + const domElement = document.getElementById(id); + + if (domElement && !GetElementsByNameSet.has(domElement)) { + (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`); + continue; + } + + fields.push({ + id, + exportValue, + domElement }); - dataset[key] = attribute.value; } - Object.defineProperty(this, '_dataset', { - value: dataset, - writable: false, - enumerable: false - }); - return dataset; - }, + } - enumerable: true + return fields; + } + + for (const domElement of document.getElementsByName(name)) { + const { + id, + exportValue + } = domElement; + + if (id === skipId) { + continue; + } + + if (!GetElementsByNameSet.has(domElement)) { + continue; + } + + fields.push({ + id, + exportValue, + domElement + }); + } + + return fields; + } + + static get platform() { + const platform = typeof navigator !== "undefined" ? navigator.platform : ""; + return (0, _util.shadow)(this, "platform", { + isWin: platform.includes("Win"), + isMac: platform.includes("Mac") }); - })(); - (function checkClassListProperty() { - function changeList(element, itemName, add, remove) { - var s = element.className || ''; - var list = s.split(/\s+/g); - if (list[0] === '') { - list.shift(); + } + +} + +class LinkAnnotationElement extends AnnotationElement { + constructor(parameters, options = null) { + const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || parameters.data.isTooltipOnly || parameters.data.resetForm || parameters.data.actions && (parameters.data.actions.Action || parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse Down"])); + super(parameters, { + isRenderable, + ignoreBorder: !!options?.ignoreBorder, + createQuadrilaterals: true + }); + } + + render() { + const { + data, + linkService + } = this; + const link = document.createElement("a"); + + if (data.url) { + linkService.addLinkAttributes(link, data.url, data.newWindow); + } else if (data.action) { + this._bindNamedAction(link, data.action); + } else if (data.dest) { + this._bindLink(link, data.dest); + } else { + let hasClickAction = false; + + if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) { + hasClickAction = true; + + this._bindJSAction(link, data); } - var index = list.indexOf(itemName); - if (index < 0 && add) { - list.push(itemName); + + if (data.resetForm) { + this._bindResetFormAction(link, data.resetForm); + } else if (!hasClickAction) { + this._bindLink(link, ""); } - if (index >= 0 && remove) { - list.splice(index, 1); - } - element.className = list.join(' '); - return index >= 0; } - if (!hasDOM) { - return; + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => { + const linkElement = index === 0 ? link : link.cloneNode(); + quadrilateral.appendChild(linkElement); + return quadrilateral; + }); } - var div = document.createElement('div'); - if ('classList' in div) { - return; - } - var classListPrototype = { - add: function add(name) { - changeList(this.element, name, true, false); - }, - contains: function contains(name) { - return changeList(this.element, name, false, false); - }, - remove: function remove(name) { - changeList(this.element, name, false, true); - }, - toggle: function toggle(name) { - changeList(this.element, name, true, true); + + this.container.className = "linkAnnotation"; + this.container.appendChild(link); + return this.container; + } + + _bindLink(link, destination) { + link.href = this.linkService.getDestinationHash(destination); + + link.onclick = () => { + if (destination) { + this.linkService.goToDestination(destination); } + + return false; }; - Object.defineProperty(HTMLElement.prototype, 'classList', { - get: function get() { - if (this._classList) { - return this._classList; - } - var classList = Object.create(classListPrototype, { - element: { - value: this, - writable: false, - enumerable: true + + if (destination || destination === "") { + link.className = "internalLink"; + } + } + + _bindNamedAction(link, action) { + link.href = this.linkService.getAnchorUrl(""); + + link.onclick = () => { + this.linkService.executeNamedAction(action); + return false; + }; + + link.className = "internalLink"; + } + + _bindJSAction(link, data) { + link.href = this.linkService.getAnchorUrl(""); + const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]); + + for (const name of Object.keys(data.actions)) { + const jsName = map.get(name); + + if (!jsName) { + continue; + } + + link[jsName] = () => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: data.id, + name } }); - Object.defineProperty(this, '_classList', { - value: classList, - writable: false, - enumerable: false - }); - return classList; - }, - - enumerable: true - }); - })(); - (function checkWorkerConsoleCompatibility() { - if (typeof importScripts === 'undefined' || 'console' in globalScope) { - return; - } - var consoleTimer = {}; - var workerConsole = { - log: function log() { - var args = Array.prototype.slice.call(arguments); - globalScope.postMessage({ - targetName: 'main', - action: 'console_log', - data: args - }); - }, - error: function error() { - var args = Array.prototype.slice.call(arguments); - globalScope.postMessage({ - targetName: 'main', - action: 'console_error', - data: args - }); - }, - time: function time(name) { - consoleTimer[name] = Date.now(); - }, - timeEnd: function timeEnd(name) { - var time = consoleTimer[name]; - if (!time) { - throw new Error('Unknown timer name ' + name); - } - this.log('Timer:', name, Date.now() - time); - } - }; - globalScope.console = workerConsole; - })(); - (function checkConsoleCompatibility() { - if (!hasDOM) { - return; - } - if (!('console' in window)) { - window.console = { - log: function log() {}, - error: function error() {}, - warn: function warn() {} + return false; }; + } + + if (!link.onclick) { + link.onclick = () => false; + } + + link.className = "internalLink"; + } + + _bindResetFormAction(link, resetForm) { + const otherClickAction = link.onclick; + + if (!otherClickAction) { + link.href = this.linkService.getAnchorUrl(""); + } + + link.className = "internalLink"; + + if (!this._fieldObjects) { + (0, _util.warn)(`_bindResetFormAction - "resetForm" action not supported, ` + "ensure that the `fieldObjects` parameter is provided."); + + if (!otherClickAction) { + link.onclick = () => false; + } + return; } - if (!('bind' in console.log)) { - console.log = function (fn) { - return function (msg) { - return fn(msg); - }; - }(console.log); - console.error = function (fn) { - return function (msg) { - return fn(msg); - }; - }(console.error); - console.warn = function (fn) { - return function (msg) { - return fn(msg); - }; - }(console.warn); - return; + + link.onclick = () => { + if (otherClickAction) { + otherClickAction(); + } + + const { + fields: resetFormFields, + refs: resetFormRefs, + include + } = resetForm; + const allFields = []; + + if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) { + const fieldIds = new Set(resetFormRefs); + + for (const fieldName of resetFormFields) { + const fields = this._fieldObjects[fieldName] || []; + + for (const { + id + } of fields) { + fieldIds.add(id); + } + } + + for (const fields of Object.values(this._fieldObjects)) { + for (const field of fields) { + if (fieldIds.has(field.id) === include) { + allFields.push(field); + } + } + } + } else { + for (const fields of Object.values(this._fieldObjects)) { + allFields.push(...fields); + } + } + + const storage = this.annotationStorage; + const allIds = []; + + for (const field of allFields) { + const { + id + } = field; + allIds.push(id); + + switch (field.type) { + case "text": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + + case "checkbox": + case "radiobutton": + { + const value = field.defaultValue === field.exportValues; + storage.setValue(id, { + value + }); + break; + } + + case "combobox": + case "listbox": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + + default: + continue; + } + + const domElement = document.getElementById(id); + + if (!domElement || !GetElementsByNameSet.has(domElement)) { + continue; + } + + domElement.dispatchEvent(new Event("resetform")); + } + + if (this.enableScripting) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: "app", + ids: allIds, + name: "ResetForm" + } + }); + } + + return false; + }; + } + +} + +class TextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable + }); + } + + render() { + this.container.className = "textAnnotation"; + const image = document.createElement("img"); + image.style.height = this.container.style.height; + image.style.width = this.container.style.width; + image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg"; + image.alt = "[{{type}} Annotation]"; + image.dataset.l10nId = "text_annotation_type"; + image.dataset.l10nArgs = JSON.stringify({ + type: this.data.name + }); + + if (!this.data.hasPopup) { + this._createPopup(image, this.data); } - })(); - (function checkOnClickCompatibility() { - function ignoreIfTargetDisabled(event) { - if (isDisabled(event.target)) { - event.stopPropagation(); + + this.container.appendChild(image); + return this.container; + } + +} + +class WidgetAnnotationElement extends AnnotationElement { + render() { + if (this.data.alternativeText) { + this.container.title = this.data.alternativeText; + } + + return this.container; + } + + _getKeyModifier(event) { + const { + isWin, + isMac + } = AnnotationElement.platform; + return isWin && event.ctrlKey || isMac && event.metaKey; + } + + _setEventListener(element, baseName, eventName, valueGetter) { + if (baseName.includes("mouse")) { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event), + shift: event.shiftKey, + modifier: this._getKeyModifier(event) + } + }); + }); + } else { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event) + } + }); + }); + } + } + + _setEventListeners(element, names, getter) { + for (const [baseName, eventName] of names) { + if (eventName === "Action" || this.data.actions?.[eventName]) { + this._setEventListener(element, baseName, eventName, getter); } } - function isDisabled(node) { - return node.disabled || node.parentNode && isDisabled(node.parentNode); + } + + _setBackgroundColor(element) { + const color = this.data.backgroundColor || null; + element.style.backgroundColor = color === null ? "transparent" : _util.Util.makeHexColor(color[0], color[1], color[2]); + } + +} + +class TextWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; + super(parameters, { + isRenderable + }); + } + + setPropertyOnSiblings(base, key, value, keyInStorage) { + const storage = this.annotationStorage; + + for (const element of this._getElementsByName(base.name, base.id)) { + if (element.domElement) { + element.domElement[key] = value; + } + + storage.setValue(element.id, { + [keyInStorage]: value + }); } - if (isOpera) { - document.addEventListener('click', ignoreIfTargetDisabled, true); - } - })(); - (function checkOnBlobSupport() { - if (isIE || isIOSChrome) { - PDFJS.disableCreateObjectURL = true; - } - })(); - (function checkNavigatorLanguage() { - if (typeof navigator === 'undefined') { - return; - } - if ('language' in navigator) { - return; - } - PDFJS.locale = navigator.userLanguage || 'en-US'; - })(); - (function checkRangeRequests() { - if (isSafari || isAndroidPre3 || isChromeWithRangeBug || isIOS) { - PDFJS.disableRange = true; - PDFJS.disableStream = true; - } - })(); - (function checkHistoryManipulation() { - if (!hasDOM) { - return; - } - if (!history.pushState || isAndroidPre3) { - PDFJS.disableHistory = true; - } - })(); - (function checkSetPresenceInImageData() { - if (!hasDOM) { - return; - } - if (window.CanvasPixelArray) { - if (typeof window.CanvasPixelArray.prototype.set !== 'function') { - window.CanvasPixelArray.prototype.set = function (arr) { - for (var i = 0, ii = this.length; i < ii; i++) { - this[i] = arr[i]; + } + + render() { + const storage = this.annotationStorage; + const id = this.data.id; + this.container.className = "textWidgetAnnotation"; + let element = null; + + if (this.renderForms) { + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + const textContent = storedData.formattedValue || storedData.value || ""; + const elementData = { + userValue: null, + formattedValue: null, + valueOnFocus: "" + }; + + if (this.data.multiLine) { + element = document.createElement("textarea"); + element.textContent = textContent; + } else { + element = document.createElement("input"); + element.type = "text"; + element.setAttribute("value", textContent); + } + + GetElementsByNameSet.add(element); + element.disabled = this.data.readOnly; + element.name = this.data.fieldName; + element.tabIndex = DEFAULT_TAB_INDEX; + elementData.userValue = textContent; + element.setAttribute("id", id); + element.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + this.setPropertyOnSiblings(element, "value", event.target.value, "value"); + }); + element.addEventListener("resetform", event => { + const defaultValue = this.data.defaultFieldValue ?? ""; + element.value = elementData.userValue = defaultValue; + elementData.formattedValue = null; + }); + + let blurListener = event => { + const { + formattedValue + } = elementData; + + if (formattedValue !== null && formattedValue !== undefined) { + event.target.value = formattedValue; + } + + event.target.scrollLeft = 0; + }; + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("focus", event => { + if (elementData.userValue) { + event.target.value = elementData.userValue; } - }; + + elementData.valueOnFocus = event.target.value; + }); + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + elementData.userValue = event.detail.value ?? ""; + storage.setValue(id, { + value: elementData.userValue.toString() + }); + event.target.value = elementData.userValue; + }, + + formattedValue(event) { + const { + formattedValue + } = event.detail; + elementData.formattedValue = formattedValue; + + if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) { + event.target.value = formattedValue; + } + + storage.setValue(id, { + formattedValue + }); + }, + + selRange(event) { + event.target.setSelectionRange(...event.detail.selRange); + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + element.addEventListener("keydown", event => { + let commitKey = -1; + + if (event.key === "Escape") { + commitKey = 0; + } else if (event.key === "Enter") { + commitKey = 2; + } else if (event.key === "Tab") { + commitKey = 3; + } + + if (commitKey === -1) { + return; + } + + const { + value + } = event.target; + + if (elementData.valueOnFocus === value) { + return; + } + + elementData.userValue = value; + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + }); + const _blurListener = blurListener; + blurListener = null; + element.addEventListener("blur", event => { + const { + value + } = event.target; + elementData.userValue = value; + + if (this._mouseState.isDown && elementData.valueOnFocus !== value) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: 1, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + } + + _blurListener(event); + }); + + if (this.data.actions?.Keystroke) { + element.addEventListener("beforeinput", event => { + const { + data, + target + } = event; + const { + value, + selectionStart, + selectionEnd + } = target; + let selStart = selectionStart, + selEnd = selectionEnd; + + switch (event.inputType) { + case "deleteWordBackward": + { + const match = value.substring(0, selectionStart).match(/\w*[^\w]*$/); + + if (match) { + selStart -= match[0].length; + } + + break; + } + + case "deleteWordForward": + { + const match = value.substring(selectionStart).match(/^[^\w]*\w*/); + + if (match) { + selEnd += match[0].length; + } + + break; + } + + case "deleteContentBackward": + if (selectionStart === selectionEnd) { + selStart -= 1; + } + + break; + + case "deleteContentForward": + if (selectionStart === selectionEnd) { + selEnd += 1; + } + + break; + } + + event.preventDefault(); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + change: data || "", + willCommit: false, + selStart, + selEnd + } + }); + }); + } + + this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value); + } + + if (blurListener) { + element.addEventListener("blur", blurListener); + } + + if (this.data.maxLen !== null) { + element.maxLength = this.data.maxLen; + } + + if (this.data.comb) { + const fieldWidth = this.data.rect[2] - this.data.rect[0]; + const combWidth = fieldWidth / this.data.maxLen; + element.classList.add("comb"); + element.style.letterSpacing = `calc(${combWidth}px - 1ch)`; } } else { - var polyfill = false, - versionMatch; - if (isChrome) { - versionMatch = userAgent.match(/Chrom(e|ium)\/([0-9]+)\./); - polyfill = versionMatch && parseInt(versionMatch[2]) < 21; - } else if (isAndroid) { - polyfill = isAndroidPre5; - } else if (isSafari) { - versionMatch = userAgent.match(/Version\/([0-9]+)\.([0-9]+)\.([0-9]+) Safari\//); - polyfill = versionMatch && parseInt(versionMatch[1]) < 6; - } - if (polyfill) { - var contextPrototype = window.CanvasRenderingContext2D.prototype; - var createImageData = contextPrototype.createImageData; - contextPrototype.createImageData = function (w, h) { - var imageData = createImageData.call(this, w, h); - imageData.data.set = function (arr) { - for (var i = 0, ii = this.length; i < ii; i++) { - this[i] = arr[i]; - } - }; - return imageData; - }; - contextPrototype = null; - } + element = document.createElement("div"); + element.textContent = this.data.fieldValue; + element.style.verticalAlign = "middle"; + element.style.display = "table-cell"; } - })(); - (function checkRequestAnimationFrame() { - function installFakeAnimationFrameFunctions() { - window.requestAnimationFrame = function (callback) { - return window.setTimeout(callback, 20); - }; - window.cancelAnimationFrame = function (timeoutID) { - window.clearTimeout(timeoutID); - }; - } - if (!hasDOM) { - return; - } - if (isIOS) { - installFakeAnimationFrameFunctions(); - return; - } - if ('requestAnimationFrame' in window) { - return; - } - window.requestAnimationFrame = window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame; - if (window.requestAnimationFrame) { - return; - } - installFakeAnimationFrameFunctions(); - })(); - (function checkCanvasSizeLimitation() { - if (isIOS || isAndroid) { - PDFJS.maxCanvasPixels = 5242880; - } - })(); - (function checkFullscreenSupport() { - if (!hasDOM) { - return; - } - if (isIE && window.parent !== window) { - PDFJS.disableFullscreen = true; - } - })(); - (function checkCurrentScript() { - if (!hasDOM) { - return; - } - if ('currentScript' in document) { - return; - } - Object.defineProperty(document, 'currentScript', { - get: function get() { - var scripts = document.getElementsByTagName('script'); - return scripts[scripts.length - 1]; - }, - enumerable: true, - configurable: true + this._setTextStyle(element); + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.appendChild(element); + return this.container; + } + + _setTextStyle(element) { + const TEXT_ALIGNMENT = ["left", "center", "right"]; + const { + fontSize, + fontColor + } = this.data.defaultAppearanceData; + const style = element.style; + + if (fontSize) { + style.fontSize = `${fontSize}px`; + } + + style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]); + + if (this.data.textAlignment !== null) { + style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; + } + } + +} + +class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms }); - })(); - (function checkInputTypeNumberAssign() { - if (!hasDOM) { - return; - } - var el = document.createElement('input'); - try { - el.type = 'number'; - } catch (ex) { - var inputProto = el.constructor.prototype; - var typeProperty = Object.getOwnPropertyDescriptor(inputProto, 'type'); - Object.defineProperty(inputProto, 'type', { - get: function get() { - return typeProperty.get.call(this); - }, - set: function set(value) { - typeProperty.set.call(this, value === 'number' ? 'text' : value); - }, + } - enumerable: true, - configurable: true + render() { + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.exportValue === data.fieldValue + }).value; + + if (typeof value === "string") { + value = value !== "Off"; + storage.setValue(id, { + value }); } - })(); - (function checkDocumentReadyState() { - if (!hasDOM) { - return; - } - if (!document.attachEvent) { - return; - } - var documentProto = document.constructor.prototype; - var readyStateProto = Object.getOwnPropertyDescriptor(documentProto, 'readyState'); - Object.defineProperty(documentProto, 'readyState', { - get: function get() { - var value = readyStateProto.get.call(this); - return value === 'interactive' ? 'loading' : value; - }, - set: function set(value) { - readyStateProto.set.call(this, value); - }, - enumerable: true, - configurable: true - }); - })(); - (function checkChildNodeRemove() { - if (!hasDOM) { - return; + this.container.className = "buttonWidgetAnnotation checkBox"; + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.disabled = data.readOnly; + element.type = "checkbox"; + element.name = data.fieldName; + + if (value) { + element.setAttribute("checked", true); } - if (typeof Element.prototype.remove !== 'undefined') { - return; - } - Element.prototype.remove = function () { - if (this.parentNode) { - this.parentNode.removeChild(this); - } - }; - })(); - (function checkNumberIsNaN() { - if (Number.isNaN) { - return; - } - Number.isNaN = function (value) { - return typeof value === 'number' && isNaN(value); - }; - })(); - (function checkNumberIsInteger() { - if (Number.isInteger) { - return; - } - Number.isInteger = function (value) { - return typeof value === 'number' && isFinite(value) && Math.floor(value) === value; - }; - })(); - (function checkPromise() { - if (globalScope.Promise) { - if (typeof globalScope.Promise.all !== 'function') { - globalScope.Promise.all = function (iterable) { - var count = 0, - results = [], - resolve, - reject; - var promise = new globalScope.Promise(function (resolve_, reject_) { - resolve = resolve_; - reject = reject_; - }); - iterable.forEach(function (p, i) { - count++; - p.then(function (result) { - results[i] = result; - count--; - if (count === 0) { - resolve(results); - } - }, reject); - }); - if (count === 0) { - resolve(results); - } - return promise; - }; - } - if (typeof globalScope.Promise.resolve !== 'function') { - globalScope.Promise.resolve = function (value) { - return new globalScope.Promise(function (resolve) { - resolve(value); - }); - }; - } - if (typeof globalScope.Promise.reject !== 'function') { - globalScope.Promise.reject = function (reason) { - return new globalScope.Promise(function (resolve, reject) { - reject(reason); - }); - }; - } - if (typeof globalScope.Promise.prototype.catch !== 'function') { - globalScope.Promise.prototype.catch = function (onReject) { - return globalScope.Promise.prototype.then(undefined, onReject); - }; - } - return; - } - var STATUS_PENDING = 0; - var STATUS_RESOLVED = 1; - var STATUS_REJECTED = 2; - var REJECTION_TIMEOUT = 500; - var HandlerManager = { - handlers: [], - running: false, - unhandledRejections: [], - pendingRejectionCheck: false, - scheduleHandlers: function scheduleHandlers(promise) { - if (promise._status === STATUS_PENDING) { - return; + + element.setAttribute("id", id); + element.setAttribute("exportValue", data.exportValue); + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + + for (const checkbox of this._getElementsByName(name, id)) { + const curChecked = checked && checkbox.exportValue === data.exportValue; + + if (checkbox.domElement) { + checkbox.domElement.checked = curChecked; } - this.handlers = this.handlers.concat(promise._handlers); - promise._handlers = []; - if (this.running) { - return; - } - this.running = true; - setTimeout(this.runHandlers.bind(this), 0); - }, - runHandlers: function runHandlers() { - var RUN_TIMEOUT = 1; - var timeoutAt = Date.now() + RUN_TIMEOUT; - while (this.handlers.length > 0) { - var handler = this.handlers.shift(); - var nextStatus = handler.thisPromise._status; - var nextValue = handler.thisPromise._value; - try { - if (nextStatus === STATUS_RESOLVED) { - if (typeof handler.onResolve === 'function') { - nextValue = handler.onResolve(nextValue); - } - } else if (typeof handler.onReject === 'function') { - nextValue = handler.onReject(nextValue); - nextStatus = STATUS_RESOLVED; - if (handler.thisPromise._unhandledRejection) { - this.removeUnhandeledRejection(handler.thisPromise); - } - } - } catch (ex) { - nextStatus = STATUS_REJECTED; - nextValue = ex; - } - handler.nextPromise._updateStatus(nextStatus, nextValue); - if (Date.now() >= timeoutAt) { - break; - } - } - if (this.handlers.length > 0) { - setTimeout(this.runHandlers.bind(this), 0); - return; - } - this.running = false; - }, - addUnhandledRejection: function addUnhandledRejection(promise) { - this.unhandledRejections.push({ - promise: promise, - time: Date.now() + + storage.setValue(checkbox.id, { + value: curChecked }); - this.scheduleRejectionCheck(); - }, - removeUnhandeledRejection: function removeUnhandeledRejection(promise) { - promise._unhandledRejection = false; - for (var i = 0; i < this.unhandledRejections.length; i++) { - if (this.unhandledRejections[i].promise === promise) { - this.unhandledRejections.splice(i); - i--; - } - } - }, - scheduleRejectionCheck: function scheduleRejectionCheck() { - var _this = this; + } - if (this.pendingRejectionCheck) { - return; - } - this.pendingRejectionCheck = true; - setTimeout(function () { - _this.pendingRejectionCheck = false; - var now = Date.now(); - for (var i = 0; i < _this.unhandledRejections.length; i++) { - if (now - _this.unhandledRejections[i].time > REJECTION_TIMEOUT) { - var unhandled = _this.unhandledRejections[i].promise._value; - var msg = 'Unhandled rejection: ' + unhandled; - if (unhandled.stack) { - msg += '\n' + unhandled.stack; - } - try { - throw new Error(msg); - } catch (_) { - console.warn(msg); - } - _this.unhandledRejections.splice(i); - i--; - } - } - if (_this.unhandledRejections.length) { - _this.scheduleRejectionCheck(); - } - }, REJECTION_TIMEOUT); - } - }; - var Promise = function Promise(resolver) { - this._status = STATUS_PENDING; - this._handlers = []; - try { - resolver.call(this, this._resolve.bind(this), this._reject.bind(this)); - } catch (e) { - this._reject(e); - } - }; - Promise.all = function Promise_all(promises) { - var resolveAll, rejectAll; - var deferred = new Promise(function (resolve, reject) { - resolveAll = resolve; - rejectAll = reject; + storage.setValue(id, { + value: checked }); - var unresolved = promises.length; - var results = []; - if (unresolved === 0) { - resolveAll(results); - return deferred; + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue || "Off"; + event.target.checked = defaultValue === data.exportValue; + }); + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + event.target.checked = event.detail.value !== "Off"; + storage.setValue(id, { + value: event.target.checked + }); + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.appendChild(element); + return this.container; + } + +} + +class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + this.container.className = "buttonWidgetAnnotation radioButton"; + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.fieldValue === data.buttonValue + }).value; + + if (typeof value === "string") { + value = value !== data.buttonValue; + storage.setValue(id, { + value + }); + } + + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.disabled = data.readOnly; + element.type = "radio"; + element.name = data.fieldName; + + if (value) { + element.setAttribute("checked", true); + } + + element.setAttribute("id", id); + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + + for (const radio of this._getElementsByName(name, id)) { + storage.setValue(radio.id, { + value: false + }); } - function reject(reason) { - if (deferred._status === STATUS_REJECTED) { - return; + + storage.setValue(id, { + value: checked + }); + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue; + event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue; + }); + + if (this.enableScripting && this.hasJSActions) { + const pdfButtonValue = data.buttonValue; + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value: event => { + const checked = pdfButtonValue === event.detail.value; + + for (const radio of this._getElementsByName(event.target.name)) { + const curChecked = checked && radio.id === id; + + if (radio.domElement) { + radio.domElement.checked = curChecked; + } + + storage.setValue(radio.id, { + value: curChecked + }); + } + } + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.appendChild(element); + return this.container; + } + +} + +class PushButtonWidgetAnnotationElement extends LinkAnnotationElement { + constructor(parameters) { + super(parameters, { + ignoreBorder: parameters.data.hasAppearance + }); + } + + render() { + const container = super.render(); + container.className = "buttonWidgetAnnotation pushButton"; + + if (this.data.alternativeText) { + container.title = this.data.alternativeText; + } + + this._setDefaultPropertiesFromJS(container); + + return container; + } + +} + +class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + this.container.className = "choiceWidgetAnnotation"; + const storage = this.annotationStorage; + const id = this.data.id; + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + let { + fontSize + } = this.data.defaultAppearanceData; + + if (!fontSize) { + fontSize = 9; + } + + const fontSizeStyle = `calc(${fontSize}px * var(--zoom-factor))`; + const selectElement = document.createElement("select"); + GetElementsByNameSet.add(selectElement); + selectElement.disabled = this.data.readOnly; + selectElement.name = this.data.fieldName; + selectElement.setAttribute("id", id); + selectElement.tabIndex = DEFAULT_TAB_INDEX; + selectElement.style.fontSize = `${fontSize}px`; + + if (!this.data.combo) { + selectElement.size = this.data.options.length; + + if (this.data.multiSelect) { + selectElement.multiple = true; + } + } + + selectElement.addEventListener("resetform", event => { + const defaultValue = this.data.defaultFieldValue; + + for (const option of selectElement.options) { + option.selected = option.value === defaultValue; + } + }); + + for (const option of this.data.options) { + const optionElement = document.createElement("option"); + optionElement.textContent = option.displayValue; + optionElement.value = option.exportValue; + + if (this.data.combo) { + optionElement.style.fontSize = fontSizeStyle; + } + + if (storedData.value.includes(option.exportValue)) { + optionElement.setAttribute("selected", true); + } + + selectElement.appendChild(optionElement); + } + + const getValue = (event, isExport) => { + const name = isExport ? "value" : "textContent"; + const options = event.target.options; + + if (!event.target.multiple) { + return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; + } + + return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]); + }; + + const getItems = event => { + const options = event.target.options; + return Array.prototype.map.call(options, option => { + return { + displayValue: option.textContent, + exportValue: option.value + }; + }); + }; + + if (this.enableScripting && this.hasJSActions) { + selectElement.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + const value = event.detail.value; + const values = new Set(Array.isArray(value) ? value : [value]); + + for (const option of selectElement.options) { + option.selected = values.has(option.value); + } + + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + multipleSelection(event) { + selectElement.multiple = true; + }, + + remove(event) { + const options = selectElement.options; + const index = event.detail.remove; + options[index].selected = false; + selectElement.remove(index); + + if (options.length > 0) { + const i = Array.prototype.findIndex.call(options, option => option.selected); + + if (i === -1) { + options[0].selected = true; + } + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + clear(event) { + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + storage.setValue(id, { + value: null, + items: [] + }); + }, + + insert(event) { + const { + index, + displayValue, + exportValue + } = event.detail.insert; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + selectElement.insertBefore(optionElement, selectElement.children[index]); + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + items(event) { + const { + items + } = event.detail; + + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + for (const item of items) { + const { + displayValue, + exportValue + } = item; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + selectElement.appendChild(optionElement); + } + + if (selectElement.options.length > 0) { + selectElement.options[0].selected = true; + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + indices(event) { + const indices = new Set(event.detail.indices); + + for (const option of event.target.options) { + option.selected = indices.has(option.index); + } + + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + editable(event) { + event.target.disabled = !event.detail.editable; + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + selectElement.addEventListener("input", event => { + const exportValue = getValue(event, true); + const value = getValue(event, false); + storage.setValue(id, { + value: exportValue + }); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + changeEx: exportValue, + willCommit: true, + commitKey: 1, + keyDown: false + } + }); + }); + + this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"]], event => event.target.checked); + } else { + selectElement.addEventListener("input", function (event) { + storage.setValue(id, { + value: getValue(event, true) + }); + }); + } + + this._setBackgroundColor(selectElement); + + this._setDefaultPropertiesFromJS(selectElement); + + this.container.appendChild(selectElement); + return this.container; + } + +} + +class PopupAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable + }); + } + + render() { + const IGNORE_TYPES = ["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"]; + this.container.className = "popupAnnotation"; + + if (IGNORE_TYPES.includes(this.data.parentType)) { + return this.container; + } + + const selector = `[data-annotation-id="${this.data.parentId}"]`; + const parentElements = this.layer.querySelectorAll(selector); + + if (parentElements.length === 0) { + return this.container; + } + + const popup = new PopupElement({ + container: this.container, + trigger: Array.from(parentElements), + color: this.data.color, + titleObj: this.data.titleObj, + modificationDate: this.data.modificationDate, + contentsObj: this.data.contentsObj, + richText: this.data.richText + }); + const page = this.page; + + const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]); + + const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0]; + const popupTop = rect[1]; + this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`; + this.container.style.left = `${popupLeft}px`; + this.container.style.top = `${popupTop}px`; + this.container.appendChild(popup.render()); + return this.container; + } + +} + +class PopupElement { + constructor(parameters) { + this.container = parameters.container; + this.trigger = parameters.trigger; + this.color = parameters.color; + this.titleObj = parameters.titleObj; + this.modificationDate = parameters.modificationDate; + this.contentsObj = parameters.contentsObj; + this.richText = parameters.richText; + this.hideWrapper = parameters.hideWrapper || false; + this.pinned = false; + } + + render() { + const BACKGROUND_ENLIGHT = 0.7; + const wrapper = document.createElement("div"); + wrapper.className = "popupWrapper"; + this.hideElement = this.hideWrapper ? wrapper : this.container; + this.hideElement.hidden = true; + const popup = document.createElement("div"); + popup.className = "popup"; + const color = this.color; + + if (color) { + const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; + const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; + const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; + popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0); + } + + const title = document.createElement("h1"); + title.dir = this.titleObj.dir; + title.textContent = this.titleObj.str; + popup.appendChild(title); + + const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate); + + if (dateObject) { + const modificationDate = document.createElement("span"); + modificationDate.className = "popupDate"; + modificationDate.textContent = "{{date}}, {{time}}"; + modificationDate.dataset.l10nId = "annotation_date_string"; + modificationDate.dataset.l10nArgs = JSON.stringify({ + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + popup.appendChild(modificationDate); + } + + if (this.richText?.str && (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)) { + _xfa_layer.XfaLayer.render({ + xfaHtml: this.richText.html, + intent: "richText", + div: popup + }); + + popup.lastChild.className = "richText popupContent"; + } else { + const contents = this._formatContents(this.contentsObj); + + popup.appendChild(contents); + } + + if (!Array.isArray(this.trigger)) { + this.trigger = [this.trigger]; + } + + for (const element of this.trigger) { + element.addEventListener("click", this._toggle.bind(this)); + element.addEventListener("mouseover", this._show.bind(this, false)); + element.addEventListener("mouseout", this._hide.bind(this, false)); + } + + popup.addEventListener("click", this._hide.bind(this, true)); + wrapper.appendChild(popup); + return wrapper; + } + + _formatContents({ + str, + dir + }) { + const p = document.createElement("p"); + p.className = "popupContent"; + p.dir = dir; + const lines = str.split(/(?:\r\n?|\n)/); + + for (let i = 0, ii = lines.length; i < ii; ++i) { + const line = lines[i]; + p.appendChild(document.createTextNode(line)); + + if (i < ii - 1) { + p.appendChild(document.createElement("br")); + } + } + + return p; + } + + _toggle() { + if (this.pinned) { + this._hide(true); + } else { + this._show(true); + } + } + + _show(pin = false) { + if (pin) { + this.pinned = true; + } + + if (this.hideElement.hidden) { + this.hideElement.hidden = false; + this.container.style.zIndex += 1; + } + } + + _hide(unpin = true) { + if (unpin) { + this.pinned = false; + } + + if (!this.hideElement.hidden && !this.pinned) { + this.hideElement.hidden = true; + this.container.style.zIndex -= 1; + } + } + +} + +class FreeTextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "freeTextAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class LineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "lineAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height); + const 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 || 1); + line.setAttribute("stroke", "transparent"); + line.setAttribute("fill", "transparent"); + svg.appendChild(line); + this.container.append(svg); + + this._createPopup(line, data); + + return this.container; + } + +} + +class SquareAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "squareAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height); + const borderWidth = data.borderStyle.width; + const 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 || 1); + square.setAttribute("stroke", "transparent"); + square.setAttribute("fill", "transparent"); + svg.appendChild(square); + this.container.append(svg); + + this._createPopup(square, data); + + return this.container; + } + +} + +class CircleAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "circleAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height); + const borderWidth = data.borderStyle.width; + const 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 || 1); + circle.setAttribute("stroke", "transparent"); + circle.setAttribute("fill", "transparent"); + svg.appendChild(circle); + this.container.append(svg); + + this._createPopup(circle, data); + + return this.container; + } + +} + +class PolylineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "polylineAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height); + let points = []; + + for (const coordinate of data.vertices) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(x + "," + y); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + svg.appendChild(polyline); + this.container.append(svg); + + this._createPopup(polyline, data); + + return this.container; + } + +} + +class PolygonAnnotationElement extends PolylineAnnotationElement { + constructor(parameters) { + super(parameters); + this.containerClassName = "polygonAnnotation"; + this.svgElementName = "svg:polygon"; + } + +} + +class CaretAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "caretAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class InkAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "inkAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height); + + for (const inkList of data.inkLists) { + let points = []; + + for (const coordinate of inkList) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(`${x},${y}`); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + + this._createPopup(polyline, data); + + svg.appendChild(polyline); + } + + this.container.append(svg); + return this.container; + } + +} + +class HighlightAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("highlightAnnotation"); + } + + this.container.className = "highlightAnnotation"; + return this.container; + } + +} + +class UnderlineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("underlineAnnotation"); + } + + this.container.className = "underlineAnnotation"; + return this.container; + } + +} + +class SquigglyAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("squigglyAnnotation"); + } + + this.container.className = "squigglyAnnotation"; + return this.container; + } + +} + +class StrikeOutAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("strikeoutAnnotation"); + } + + this.container.className = "strikeoutAnnotation"; + return this.container; + } + +} + +class StampAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "stampAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class FileAttachmentAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true + }); + const { + filename, + content + } = this.data.file; + this.filename = (0, _display_utils.getFilenameFromUrl)(filename); + this.content = content; + this.linkService.eventBus?.dispatch("fileattachmentannotation", { + source: this, + filename, + content + }); + } + + render() { + this.container.className = "fileAttachmentAnnotation"; + const trigger = document.createElement("div"); + trigger.style.height = this.container.style.height; + trigger.style.width = this.container.style.width; + trigger.addEventListener("dblclick", this._download.bind(this)); + + if (!this.data.hasPopup && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) { + this._createPopup(trigger, this.data); + } + + this.container.appendChild(trigger); + return this.container; + } + + _download() { + this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename); + } + +} + +class AnnotationLayer { + static render(parameters) { + const sortedAnnotations = [], + popupAnnotations = []; + + for (const data of parameters.annotations) { + if (!data) { + continue; + } + + const { + width, + height + } = getRectDims(data.rect); + + if (width <= 0 || height <= 0) { + continue; + } + + if (data.annotationType === _util.AnnotationType.POPUP) { + popupAnnotations.push(data); + continue; + } + + sortedAnnotations.push(data); + } + + if (popupAnnotations.length) { + sortedAnnotations.push(...popupAnnotations); + } + + const div = parameters.div; + + for (const data of sortedAnnotations) { + const element = AnnotationElementFactory.create({ + data, + layer: div, + page: parameters.page, + viewport: parameters.viewport, + linkService: parameters.linkService, + downloadManager: parameters.downloadManager, + imageResourcesPath: parameters.imageResourcesPath || "", + renderForms: parameters.renderForms !== false, + svgFactory: new _display_utils.DOMSVGFactory(), + annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(), + enableScripting: parameters.enableScripting, + hasJSActions: parameters.hasJSActions, + fieldObjects: parameters.fieldObjects, + mouseState: parameters.mouseState || { + isDown: false } - results = []; - rejectAll(reason); - } - for (var i = 0, ii = promises.length; i < ii; ++i) { - var promise = promises[i]; - var resolve = function (i) { - return function (value) { - if (deferred._status === STATUS_REJECTED) { - return; - } - results[i] = value; - unresolved--; - if (unresolved === 0) { - resolveAll(results); - } - }; - }(i); - if (Promise.isPromise(promise)) { - promise.then(resolve, reject); + }); + + if (element.isRenderable) { + const rendered = element.render(); + + if (data.hidden) { + rendered.style.visibility = "hidden"; + } + + if (Array.isArray(rendered)) { + for (const renderedElement of rendered) { + div.appendChild(renderedElement); + } } else { - resolve(promise); + if (element instanceof PopupAnnotationElement) { + div.prepend(rendered); + } else { + div.appendChild(rendered); + } } } - return deferred; - }; - Promise.isPromise = function Promise_isPromise(value) { - return value && typeof value.then === 'function'; - }; - Promise.resolve = function Promise_resolve(value) { - return new Promise(function (resolve) { - resolve(value); - }); - }; - Promise.reject = function Promise_reject(reason) { - return new Promise(function (resolve, reject) { - reject(reason); - }); - }; - Promise.prototype = { - _status: null, - _value: null, - _handlers: null, - _unhandledRejection: null, - _updateStatus: function Promise__updateStatus(status, value) { - if (this._status === STATUS_RESOLVED || this._status === STATUS_REJECTED) { - return; - } - if (status === STATUS_RESOLVED && Promise.isPromise(value)) { - value.then(this._updateStatus.bind(this, STATUS_RESOLVED), this._updateStatus.bind(this, STATUS_REJECTED)); - return; - } - this._status = status; - this._value = value; - if (status === STATUS_REJECTED && this._handlers.length === 0) { - this._unhandledRejection = true; - HandlerManager.addUnhandledRejection(this); - } - HandlerManager.scheduleHandlers(this); - }, - _resolve: function Promise_resolve(value) { - this._updateStatus(STATUS_RESOLVED, value); - }, - _reject: function Promise_reject(reason) { - this._updateStatus(STATUS_REJECTED, reason); - }, - then: function Promise_then(onResolve, onReject) { - var nextPromise = new Promise(function (resolve, reject) { - this.resolve = resolve; - this.reject = reject; - }); - this._handlers.push({ - thisPromise: this, - onResolve: onResolve, - onReject: onReject, - nextPromise: nextPromise - }); - HandlerManager.scheduleHandlers(this); - return nextPromise; - }, - catch: function Promise_catch(onReject) { - return this.then(undefined, onReject); - } - }; - globalScope.Promise = Promise; - })(); - (function checkWeakMap() { - if (globalScope.WeakMap) { - return; } - var id = 0; - function WeakMap() { - this.id = '$weakmap' + id++; - } - WeakMap.prototype = { - has: function has(obj) { - if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object' && typeof obj !== 'function' || obj === null) { - return false; - } - return !!Object.getOwnPropertyDescriptor(obj, this.id); - }, - get: function get(obj) { - return this.has(obj) ? obj[this.id] : undefined; - }, - set: function set(obj, value) { - Object.defineProperty(obj, this.id, { - value: value, - enumerable: false, - configurable: true - }); - }, - delete: function _delete(obj) { - delete obj[this.id]; - } - }; - globalScope.WeakMap = WeakMap; - })(); - (function checkURLConstructor() { - var hasWorkingUrl = false; - try { - if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) { - var u = new URL('b', 'http://a'); - u.pathname = 'c%20d'; - hasWorkingUrl = u.href === 'http://a/c%20d'; - } - } catch (e) {} - if (hasWorkingUrl) { - return; - } - var relative = Object.create(null); - relative['ftp'] = 21; - relative['file'] = 0; - relative['gopher'] = 70; - relative['http'] = 80; - relative['https'] = 443; - relative['ws'] = 80; - relative['wss'] = 443; - var relativePathDotMapping = Object.create(null); - relativePathDotMapping['%2e'] = '.'; - relativePathDotMapping['.%2e'] = '..'; - relativePathDotMapping['%2e.'] = '..'; - relativePathDotMapping['%2e%2e'] = '..'; - function isRelativeScheme(scheme) { - return relative[scheme] !== undefined; - } - function invalid() { - clear.call(this); - this._isInvalid = true; - } - function IDNAToASCII(h) { - if (h === '') { - invalid.call(this); - } - return h.toLowerCase(); - } - function percentEscape(c) { - var unicode = c.charCodeAt(0); - if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) { - return c; - } - return encodeURIComponent(c); - } - function percentEscapeQuery(c) { - var unicode = c.charCodeAt(0); - if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) { - return c; - } - return encodeURIComponent(c); - } - var EOF, - ALPHA = /[a-zA-Z]/, - ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/; - function parse(input, stateOverride, base) { - function err(message) { - errors.push(message); - } - var state = stateOverride || 'scheme start', - cursor = 0, - buffer = '', - seenAt = false, - seenBracket = false, - errors = []; - loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) { - var c = input[cursor]; - switch (state) { - case 'scheme start': - if (c && ALPHA.test(c)) { - buffer += c.toLowerCase(); - state = 'scheme'; - } else if (!stateOverride) { - buffer = ''; - state = 'no scheme'; - continue; - } else { - err('Invalid scheme.'); - break loop; - } - break; - case 'scheme': - if (c && ALPHANUMERIC.test(c)) { - buffer += c.toLowerCase(); - } else if (c === ':') { - this._scheme = buffer; - buffer = ''; - if (stateOverride) { - break loop; - } - if (isRelativeScheme(this._scheme)) { - this._isRelative = true; - } - if (this._scheme === 'file') { - state = 'relative'; - } else if (this._isRelative && base && base._scheme === this._scheme) { - state = 'relative or authority'; - } else if (this._isRelative) { - state = 'authority first slash'; - } else { - state = 'scheme data'; - } - } else if (!stateOverride) { - buffer = ''; - cursor = 0; - state = 'no scheme'; - continue; - } else if (c === EOF) { - break loop; - } else { - err('Code point not allowed in scheme: ' + c); - break loop; - } - break; - case 'scheme data': - if (c === '?') { - this._query = '?'; - state = 'query'; - } else if (c === '#') { - this._fragment = '#'; - state = 'fragment'; - } else { - if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._schemeData += percentEscape(c); - } - } - break; - case 'no scheme': - if (!base || !isRelativeScheme(base._scheme)) { - err('Missing scheme.'); - invalid.call(this); - } else { - state = 'relative'; - continue; - } - break; - case 'relative or authority': - if (c === '/' && input[cursor + 1] === '/') { - state = 'authority ignore slashes'; - } else { - err('Expected /, got: ' + c); - state = 'relative'; - continue; - } - break; - case 'relative': - this._isRelative = true; - if (this._scheme !== 'file') { - this._scheme = base._scheme; - } - if (c === EOF) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._username = base._username; - this._password = base._password; - break loop; - } else if (c === '/' || c === '\\') { - if (c === '\\') { - err('\\ is an invalid code point.'); - } - state = 'relative slash'; - } else if (c === '?') { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = '?'; - this._username = base._username; - this._password = base._password; - state = 'query'; - } else if (c === '#') { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._fragment = '#'; - this._username = base._username; - this._password = base._password; - state = 'fragment'; - } else { - var nextC = input[cursor + 1]; - var nextNextC = input[cursor + 2]; - if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - this._path = base._path.slice(); - this._path.pop(); - } - state = 'relative path'; - continue; - } - break; - case 'relative slash': - if (c === '/' || c === '\\') { - if (c === '\\') { - err('\\ is an invalid code point.'); - } - if (this._scheme === 'file') { - state = 'file host'; - } else { - state = 'authority ignore slashes'; - } - } else { - if (this._scheme !== 'file') { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - } - state = 'relative path'; - continue; - } - break; - case 'authority first slash': - if (c === '/') { - state = 'authority second slash'; - } else { - err('Expected \'/\', got: ' + c); - state = 'authority ignore slashes'; - continue; - } - break; - case 'authority second slash': - state = 'authority ignore slashes'; - if (c !== '/') { - err('Expected \'/\', got: ' + c); - continue; - } - break; - case 'authority ignore slashes': - if (c !== '/' && c !== '\\') { - state = 'authority'; - continue; - } else { - err('Expected authority, got: ' + c); - } - break; - case 'authority': - if (c === '@') { - if (seenAt) { - err('@ already seen.'); - buffer += '%40'; - } - seenAt = true; - for (var i = 0; i < buffer.length; i++) { - var cp = buffer[i]; - if (cp === '\t' || cp === '\n' || cp === '\r') { - err('Invalid whitespace in authority.'); - continue; - } - if (cp === ':' && this._password === null) { - this._password = ''; - continue; - } - var tempC = percentEscape(cp); - if (this._password !== null) { - this._password += tempC; - } else { - this._username += tempC; - } - } - buffer = ''; - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - cursor -= buffer.length; - buffer = ''; - state = 'host'; - continue; - } else { - buffer += c; - } - break; - case 'file host': - if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) { - state = 'relative path'; - } else if (buffer.length === 0) { - state = 'relative path start'; - } else { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - } - continue; - } else if (c === '\t' || c === '\n' || c === '\r') { - err('Invalid whitespace in file host.'); - } else { - buffer += c; - } - break; - case 'host': - case 'hostname': - if (c === ':' && !seenBracket) { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'port'; - if (stateOverride === 'hostname') { - break loop; - } - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - if (stateOverride) { - break loop; - } - continue; - } else if (c !== '\t' && c !== '\n' && c !== '\r') { - if (c === '[') { - seenBracket = true; - } else if (c === ']') { - seenBracket = false; - } - buffer += c; - } else { - err('Invalid code point in host/hostname: ' + c); - } - break; - case 'port': - if (/[0-9]/.test(c)) { - buffer += c; - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) { - if (buffer !== '') { - var temp = parseInt(buffer, 10); - if (temp !== relative[this._scheme]) { - this._port = temp + ''; - } - buffer = ''; - } - if (stateOverride) { - break loop; - } - state = 'relative path start'; - continue; - } else if (c === '\t' || c === '\n' || c === '\r') { - err('Invalid code point in port: ' + c); - } else { - invalid.call(this); - } - break; - case 'relative path start': - if (c === '\\') { - err('\'\\\' not allowed in path.'); - } - state = 'relative path'; - if (c !== '/' && c !== '\\') { - continue; - } - break; - case 'relative path': - if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) { - if (c === '\\') { - err('\\ not allowed in relative path.'); - } - var tmp; - if (tmp = relativePathDotMapping[buffer.toLowerCase()]) { - buffer = tmp; - } - if (buffer === '..') { - this._path.pop(); - if (c !== '/' && c !== '\\') { - this._path.push(''); - } - } else if (buffer === '.' && c !== '/' && c !== '\\') { - this._path.push(''); - } else if (buffer !== '.') { - if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') { - buffer = buffer[0] + ':'; - } - this._path.push(buffer); - } - buffer = ''; - if (c === '?') { - this._query = '?'; - state = 'query'; - } else if (c === '#') { - this._fragment = '#'; - state = 'fragment'; - } - } else if (c !== '\t' && c !== '\n' && c !== '\r') { - buffer += percentEscape(c); - } - break; - case 'query': - if (!stateOverride && c === '#') { - this._fragment = '#'; - state = 'fragment'; - } else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._query += percentEscapeQuery(c); - } - break; - case 'fragment': - if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._fragment += c; - } - break; - } - cursor++; - } - } - function clear() { - this._scheme = ''; - this._schemeData = ''; - this._username = ''; - this._password = null; - this._host = ''; - this._port = ''; - this._path = []; - this._query = ''; - this._fragment = ''; - this._isInvalid = false; - this._isRelative = false; - } - function JURL(url, base) { - if (base !== undefined && !(base instanceof JURL)) { - base = new JURL(String(base)); - } - this._url = url; - clear.call(this); - var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, ''); - parse.call(this, input, null, base); - } - JURL.prototype = { - toString: function toString() { - return this.href; - }, - get href() { - if (this._isInvalid) { - return this._url; + this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap); + } + + static update(parameters) { + const { + page, + viewport, + annotations, + annotationCanvasMap, + div + } = parameters; + const transform = viewport.transform; + const matrix = `matrix(${transform.join(",")})`; + let scale, ownMatrix; + + for (const data of annotations) { + const elements = div.querySelectorAll(`[data-annotation-id="${data.id}"]`); + + if (elements) { + for (const element of elements) { + if (data.hasOwnCanvas) { + const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); + + if (!ownMatrix) { + scale = Math.abs(transform[0] || transform[1]); + const ownTransform = transform.slice(); + + for (let i = 0; i < 4; i++) { + ownTransform[i] = Math.sign(ownTransform[i]); + } + + ownMatrix = `matrix(${ownTransform.join(",")})`; + } + + const left = rect[0] * scale; + const top = rect[1] * scale; + element.style.left = `${left}px`; + element.style.top = `${top}px`; + element.style.transformOrigin = `${-left}px ${-top}px`; + element.style.transform = ownMatrix; + } else { + element.style.transform = matrix; + } } - var authority = ''; - if (this._username !== '' || this._password !== null) { - authority = this._username + (this._password !== null ? ':' + this._password : '') + '@'; - } - return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment; - }, - set href(value) { - clear.call(this); - parse.call(this, value); - }, - get protocol() { - return this._scheme + ':'; - }, - set protocol(value) { - if (this._isInvalid) { - return; - } - parse.call(this, value + ':', 'scheme start'); - }, - get host() { - return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host; - }, - set host(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - parse.call(this, value, 'host'); - }, - get hostname() { - return this._host; - }, - set hostname(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - parse.call(this, value, 'hostname'); - }, - get port() { - return this._port; - }, - set port(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - parse.call(this, value, 'port'); - }, - get pathname() { - return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData; - }, - set pathname(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - this._path = []; - parse.call(this, value, 'relative path start'); - }, - get search() { - return this._isInvalid || !this._query || this._query === '?' ? '' : this._query; - }, - set search(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - this._query = '?'; - if (value[0] === '?') { - value = value.slice(1); - } - parse.call(this, value, 'query'); - }, - get hash() { - return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment; - }, - set hash(value) { - if (this._isInvalid) { - return; - } - this._fragment = '#'; - if (value[0] === '#') { - value = value.slice(1); - } - parse.call(this, value, 'fragment'); - }, - get origin() { - var host; - if (this._isInvalid || !this._scheme) { - return ''; - } - switch (this._scheme) { - case 'data': - case 'file': - case 'javascript': - case 'mailto': - return 'null'; - case 'blob': - try { - return new JURL(this._schemeData).origin || 'null'; - } catch (_) {} - return 'null'; - } - host = this.host; - if (!host) { - return ''; - } - return this._scheme + '://' + host; } - }; - var OriginalURL = globalScope.URL; - if (OriginalURL) { - JURL.createObjectURL = function (blob) { - return OriginalURL.createObjectURL.apply(OriginalURL, arguments); - }; - JURL.revokeObjectURL = function (url) { - OriginalURL.revokeObjectURL(url); - }; } - globalScope.URL = JURL; - })(); + + this.#setAnnotationCanvasMap(div, annotationCanvasMap); + div.hidden = false; + } + + static #setAnnotationCanvasMap(div, annotationCanvasMap) { + if (!annotationCanvasMap) { + return; + } + + for (const [id, canvas] of annotationCanvasMap) { + const element = div.querySelector(`[data-annotation-id="${id}"]`); + + if (!element) { + continue; + } + + const { + firstChild + } = element; + + if (firstChild.nodeName === "CANVAS") { + element.replaceChild(canvas, firstChild); + } else { + element.insertBefore(canvas, firstChild); + } + } + + annotationCanvasMap.clear(); + } + +} + +exports.AnnotationLayer = AnnotationLayer; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ColorConverters = void 0; + +function makeColorComp(n) { + return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); +} + +class ColorConverters { + static CMYK_G([c, y, m, k]) { + return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)]; + } + + static G_CMYK([g]) { + return ["CMYK", 0, 0, 0, 1 - g]; + } + + static G_RGB([g]) { + return ["RGB", g, g, g]; + } + + static G_HTML([g]) { + const G = makeColorComp(g); + return `#${G}${G}${G}`; + } + + static RGB_G([r, g, b]) { + return ["G", 0.3 * r + 0.59 * g + 0.11 * b]; + } + + static RGB_HTML([r, g, b]) { + const R = makeColorComp(r); + const G = makeColorComp(g); + const B = makeColorComp(b); + return `#${R}${G}${B}`; + } + + static T_HTML() { + return "#00000000"; + } + + static CMYK_RGB([c, y, m, k]) { + return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)]; + } + + static CMYK_HTML(components) { + return this.RGB_HTML(this.CMYK_RGB(components)); + } + + static RGB_CMYK([r, g, b]) { + const c = 1 - r; + const m = 1 - g; + const y = 1 - b; + const k = Math.min(c, m, y); + return ["CMYK", c, m, y, k]; + } + +} + +exports.ColorConverters = ColorConverters; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayer = void 0; + +var _xfa_text = __w_pdfjs_require__(18); + +class XfaLayer { + static setupStorage(html, id, element, storage, intent) { + const storedData = storage.getValue(id, { + value: null + }); + + switch (element.name) { + case "textarea": + if (storedData.value !== null) { + html.textContent = storedData.value; + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + break; + + case "input": + if (element.attributes.type === "radio" || element.attributes.type === "checkbox") { + if (storedData.value === element.attributes.xfaOn) { + html.setAttribute("checked", true); + } else if (storedData.value === element.attributes.xfaOff) { + html.removeAttribute("checked"); + } + + if (intent === "print") { + break; + } + + html.addEventListener("change", event => { + storage.setValue(id, { + value: event.target.checked ? event.target.getAttribute("xfaOn") : event.target.getAttribute("xfaOff") + }); + }); + } else { + if (storedData.value !== null) { + html.setAttribute("value", storedData.value); + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + } + + break; + + case "select": + if (storedData.value !== null) { + for (const option of element.children) { + if (option.attributes.value === storedData.value) { + option.attributes.selected = true; + } + } + } + + html.addEventListener("input", event => { + const options = event.target.options; + const value = options.selectedIndex === -1 ? "" : options[options.selectedIndex].value; + storage.setValue(id, { + value + }); + }); + break; + } + } + + static setAttributes({ + html, + element, + storage = null, + intent, + linkService + }) { + const { + attributes + } = element; + const isHTMLAnchorElement = html instanceof HTMLAnchorElement; + + if (attributes.type === "radio") { + attributes.name = `${attributes.name}-${intent}`; + } + + for (const [key, value] of Object.entries(attributes)) { + if (value === null || value === undefined || key === "dataId") { + continue; + } + + if (key !== "style") { + if (key === "textContent") { + html.textContent = value; + } else if (key === "class") { + if (value.length) { + html.setAttribute(key, value.join(" ")); + } + } else { + if (isHTMLAnchorElement && (key === "href" || key === "newWindow")) { + continue; + } + + html.setAttribute(key, value); + } + } else { + Object.assign(html.style, value); + } + } + + if (isHTMLAnchorElement) { + linkService.addLinkAttributes(html, attributes.href, attributes.newWindow); + } + + if (storage && attributes.dataId) { + this.setupStorage(html, attributes.dataId, element, storage); + } + } + + static render(parameters) { + const storage = parameters.annotationStorage; + const linkService = parameters.linkService; + const root = parameters.xfaHtml; + const intent = parameters.intent || "display"; + const rootHtml = document.createElement(root.name); + + if (root.attributes) { + this.setAttributes({ + html: rootHtml, + element: root, + intent, + linkService + }); + } + + const stack = [[root, -1, rootHtml]]; + const rootDiv = parameters.div; + rootDiv.appendChild(rootHtml); + + if (parameters.viewport) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + rootDiv.style.transform = transform; + } + + if (intent !== "richText") { + rootDiv.setAttribute("class", "xfaLayer xfaFont"); + } + + const textDivs = []; + + while (stack.length > 0) { + const [parent, i, html] = stack[stack.length - 1]; + + if (i + 1 === parent.children.length) { + stack.pop(); + continue; + } + + const child = parent.children[++stack[stack.length - 1][1]]; + + if (child === null) { + continue; + } + + const { + name + } = child; + + if (name === "#text") { + const node = document.createTextNode(child.value); + textDivs.push(node); + html.appendChild(node); + continue; + } + + let childHtml; + + if (child?.attributes?.xmlns) { + childHtml = document.createElementNS(child.attributes.xmlns, name); + } else { + childHtml = document.createElement(name); + } + + html.appendChild(childHtml); + + if (child.attributes) { + this.setAttributes({ + html: childHtml, + element: child, + storage, + intent, + linkService + }); + } + + if (child.children && child.children.length > 0) { + stack.push([child, -1, childHtml]); + } else if (child.value) { + const node = document.createTextNode(child.value); + + if (_xfa_text.XfaText.shouldBuildText(name)) { + textDivs.push(node); + } + + childHtml.appendChild(node); + } + } + + for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) { + el.setAttribute("readOnly", true); + } + + return { + textDivs + }; + } + + static update(parameters) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + parameters.div.style.transform = transform; + parameters.div.hidden = false; + } + +} + +exports.XfaLayer = XfaLayer; + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.renderTextLayer = renderTextLayer; + +var _util = __w_pdfjs_require__(1); + +const MAX_TEXT_DIVS_TO_RENDER = 100000; +const DEFAULT_FONT_SIZE = 30; +const DEFAULT_FONT_ASCENT = 0.8; +const ascentCache = new Map(); +const AllWhitespaceRegexp = /^\s+$/g; + +function getAscent(fontFamily, ctx) { + const cachedAscent = ascentCache.get(fontFamily); + + if (cachedAscent) { + return cachedAscent; + } + + ctx.save(); + ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`; + const metrics = ctx.measureText(""); + let ascent = metrics.fontBoundingBoxAscent; + let descent = Math.abs(metrics.fontBoundingBoxDescent); + + if (ascent) { + ctx.restore(); + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ctx.strokeStyle = "red"; + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("g", 0, 0); + let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + descent = 0; + + for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) { + if (pixels[i] > 0) { + descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("A", 0, DEFAULT_FONT_SIZE); + pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + ascent = 0; + + for (let i = 0, ii = pixels.length; i < ii; i += 4) { + if (pixels[i] > 0) { + ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.restore(); + + if (ascent) { + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT); + return DEFAULT_FONT_ASCENT; +} + +function appendText(task, geom, styles, ctx) { + const textDiv = document.createElement("span"); + const textDivProperties = task._enhanceTextSelection ? { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + originalTransform: null, + paddingBottom: 0, + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + scale: 1 + } : { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL + }; + + task._textDivs.push(textDiv); + + const tx = _util.Util.transform(task._viewport.transform, geom.transform); + + let angle = Math.atan2(tx[1], tx[0]); + const style = styles[geom.fontName]; + + if (style.vertical) { + angle += Math.PI / 2; + } + + const fontHeight = Math.hypot(tx[2], tx[3]); + const fontAscent = fontHeight * getAscent(style.fontFamily, ctx); + let left, top; + + if (angle === 0) { + left = tx[4]; + top = tx[5] - fontAscent; + } else { + left = tx[4] + fontAscent * Math.sin(angle); + top = tx[5] - fontAscent * Math.cos(angle); + } + + textDiv.style.left = `${left}px`; + textDiv.style.top = `${top}px`; + textDiv.style.fontSize = `${fontHeight}px`; + textDiv.style.fontFamily = style.fontFamily; + textDiv.setAttribute("role", "presentation"); + textDiv.textContent = geom.str; + textDiv.dir = geom.dir; + + if (task._fontInspectorEnabled) { + textDiv.dataset.fontName = geom.fontName; + } + + if (angle !== 0) { + textDivProperties.angle = angle * (180 / Math.PI); + } + + let shouldScaleText = false; + + if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) { + shouldScaleText = true; + } else if (geom.str !== " " && geom.transform[0] !== geom.transform[3]) { + const absScaleX = Math.abs(geom.transform[0]), + absScaleY = Math.abs(geom.transform[3]); + + if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) { + shouldScaleText = true; + } + } + + if (shouldScaleText) { + if (style.vertical) { + textDivProperties.canvasWidth = geom.height * task._viewport.scale; + } else { + textDivProperties.canvasWidth = geom.width * task._viewport.scale; + } + } + + task._textDivProperties.set(textDiv, textDivProperties); + + if (task._textContentStream) { + task._layoutText(textDiv); + } + + if (task._enhanceTextSelection && textDivProperties.hasText) { + let angleCos = 1, + angleSin = 0; + + if (angle !== 0) { + angleCos = Math.cos(angle); + angleSin = Math.sin(angle); + } + + const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; + const divHeight = fontHeight; + let m, b; + + if (angle !== 0) { + m = [angleCos, angleSin, -angleSin, angleCos, left, top]; + b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); + } else { + b = [left, top, left + divWidth, top + divHeight]; + } + + task._bounds.push({ + left: b[0], + top: b[1], + right: b[2], + bottom: b[3], + div: textDiv, + size: [divWidth, divHeight], + m + }); + } +} + +function render(task) { + if (task._canceled) { + return; + } + + const textDivs = task._textDivs; + const capability = task._capability; + const textDivsLength = textDivs.length; + + if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { + task._renderingDone = true; + capability.resolve(); + return; + } + + if (!task._textContentStream) { + for (let i = 0; i < textDivsLength; i++) { + task._layoutText(textDivs[i]); + } + } + + task._renderingDone = true; + capability.resolve(); +} + +function findPositiveMin(ts, offset, count) { + let result = 0; + + for (let i = 0; i < count; i++) { + const t = ts[offset++]; + + if (t > 0) { + result = result ? Math.min(t, result) : t; + } + } + + return result; +} + +function expand(task) { + const bounds = task._bounds; + const viewport = task._viewport; + const expanded = expandBounds(viewport.width, viewport.height, bounds); + + for (let i = 0; i < expanded.length; i++) { + const div = bounds[i].div; + + const divProperties = task._textDivProperties.get(div); + + if (divProperties.angle === 0) { + divProperties.paddingLeft = bounds[i].left - expanded[i].left; + divProperties.paddingTop = bounds[i].top - expanded[i].top; + divProperties.paddingRight = expanded[i].right - bounds[i].right; + divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; + + task._textDivProperties.set(div, divProperties); + + continue; + } + + const e = expanded[i], + b = bounds[i]; + const m = b.m, + c = m[0], + s = m[1]; + const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; + const ts = new Float64Array(64); + + for (let j = 0, jj = points.length; j < jj; j++) { + const t = _util.Util.applyTransform(points[j], m); + + ts[j + 0] = c && (e.left - t[0]) / c; + ts[j + 4] = s && (e.top - t[1]) / s; + ts[j + 8] = c && (e.right - t[0]) / c; + ts[j + 12] = s && (e.bottom - t[1]) / s; + ts[j + 16] = s && (e.left - t[0]) / -s; + ts[j + 20] = c && (e.top - t[1]) / c; + ts[j + 24] = s && (e.right - t[0]) / -s; + ts[j + 28] = c && (e.bottom - t[1]) / c; + ts[j + 32] = c && (e.left - t[0]) / -c; + ts[j + 36] = s && (e.top - t[1]) / -s; + ts[j + 40] = c && (e.right - t[0]) / -c; + ts[j + 44] = s && (e.bottom - t[1]) / -s; + ts[j + 48] = s && (e.left - t[0]) / s; + ts[j + 52] = c && (e.top - t[1]) / -c; + ts[j + 56] = s && (e.right - t[0]) / s; + ts[j + 60] = c && (e.bottom - t[1]) / -c; + } + + const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); + divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; + divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; + divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; + divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; + + task._textDivProperties.set(div, divProperties); + } +} + +function expandBounds(width, height, boxes) { + const bounds = boxes.map(function (box, i) { + return { + x1: box.left, + y1: box.top, + x2: box.right, + y2: box.bottom, + index: i, + x1New: undefined, + x2New: undefined + }; + }); + expandBoundsLTR(width, bounds); + const expanded = new Array(boxes.length); + + for (const b of bounds) { + const i = b.index; + expanded[i] = { + left: b.x1New, + top: 0, + right: b.x2New, + bottom: 0 + }; + } + + boxes.map(function (box, i) { + const e = expanded[i], + b = bounds[i]; + b.x1 = box.top; + b.y1 = width - e.right; + b.x2 = box.bottom; + b.y2 = width - e.left; + b.index = i; + b.x1New = undefined; + b.x2New = undefined; + }); + expandBoundsLTR(height, bounds); + + for (const b of bounds) { + const i = b.index; + expanded[i].top = b.x1New; + expanded[i].bottom = b.x2New; + } + + return expanded; +} + +function expandBoundsLTR(width, bounds) { + bounds.sort(function (a, b) { + return a.x1 - b.x1 || a.index - b.index; + }); + const fakeBoundary = { + x1: -Infinity, + y1: -Infinity, + x2: 0, + y2: Infinity, + index: -1, + x1New: 0, + x2New: 0 + }; + const horizon = [{ + start: -Infinity, + end: Infinity, + boundary: fakeBoundary + }]; + + for (const boundary of bounds) { + let i = 0; + + while (i < horizon.length && horizon[i].end <= boundary.y1) { + i++; + } + + let j = horizon.length - 1; + + while (j >= 0 && horizon[j].start >= boundary.y2) { + j--; + } + + let horizonPart, affectedBoundary; + let q, + k, + maxXNew = -Infinity; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + let xNew; + + if (affectedBoundary.x2 > boundary.x1) { + xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; + } else if (affectedBoundary.x2New === undefined) { + xNew = (affectedBoundary.x2 + boundary.x1) / 2; + } else { + xNew = affectedBoundary.x2New; + } + + if (xNew > maxXNew) { + maxXNew = xNew; + } + } + + boundary.x1New = maxXNew; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + if (affectedBoundary.x2 > boundary.x1) { + if (affectedBoundary.index > boundary.index) { + affectedBoundary.x2New = affectedBoundary.x2; + } + } else { + affectedBoundary.x2New = maxXNew; + } + } else if (affectedBoundary.x2New > maxXNew) { + affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); + } + } + + const changedHorizon = []; + let lastBoundary = null; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; + + if (lastBoundary === useBoundary) { + changedHorizon[changedHorizon.length - 1].end = horizonPart.end; + } else { + changedHorizon.push({ + start: horizonPart.start, + end: horizonPart.end, + boundary: useBoundary + }); + lastBoundary = useBoundary; + } + } + + if (horizon[i].start < boundary.y1) { + changedHorizon[0].start = boundary.y1; + changedHorizon.unshift({ + start: horizon[i].start, + end: boundary.y1, + boundary: horizon[i].boundary + }); + } + + if (boundary.y2 < horizon[j].end) { + changedHorizon[changedHorizon.length - 1].end = boundary.y2; + changedHorizon.push({ + start: boundary.y2, + end: horizon[j].end, + boundary: horizon[j].boundary + }); + } + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New !== undefined) { + continue; + } + + let used = false; + + for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = 0; !used && k < changedHorizon.length; k++) { + used = changedHorizon[k].boundary === affectedBoundary; + } + + if (!used) { + affectedBoundary.x2New = maxXNew; + } + } + + Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon)); + } + + for (const horizonPart of horizon) { + const affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); + } + } +} + +class TextLayerRenderTask { + constructor({ + textContent, + textContentStream, + container, + viewport, + textDivs, + textContentItemsStr, + enhanceTextSelection + }) { + this._textContent = textContent; + this._textContentStream = textContentStream; + this._container = container; + this._document = container.ownerDocument; + this._viewport = viewport; + this._textDivs = textDivs || []; + this._textContentItemsStr = textContentItemsStr || []; + this._enhanceTextSelection = !!enhanceTextSelection; + this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled; + this._reader = null; + this._layoutTextLastFontSize = null; + this._layoutTextLastFontFamily = null; + this._layoutTextCtx = null; + this._textDivProperties = new WeakMap(); + this._renderingDone = false; + this._canceled = false; + this._capability = (0, _util.createPromiseCapability)(); + this._renderTimer = null; + this._bounds = []; + + this._capability.promise.finally(() => { + if (!this._enhanceTextSelection) { + this._textDivProperties = null; + } + + if (this._layoutTextCtx) { + this._layoutTextCtx.canvas.width = 0; + this._layoutTextCtx.canvas.height = 0; + this._layoutTextCtx = null; + } + }).catch(() => {}); + } + + get promise() { + return this._capability.promise; + } + + cancel() { + this._canceled = true; + + if (this._reader) { + this._reader.cancel(new _util.AbortException("TextLayer task cancelled.")).catch(() => {}); + + this._reader = null; + } + + if (this._renderTimer !== null) { + clearTimeout(this._renderTimer); + this._renderTimer = null; + } + + this._capability.reject(new Error("TextLayer task cancelled.")); + } + + _processItems(items, styleCache) { + for (let i = 0, len = items.length; i < len; i++) { + if (items[i].str === undefined) { + if (items[i].type === "beginMarkedContentProps" || items[i].type === "beginMarkedContent") { + const parent = this._container; + this._container = document.createElement("span"); + + this._container.classList.add("markedContent"); + + if (items[i].id !== null) { + this._container.setAttribute("id", `${items[i].id}`); + } + + parent.appendChild(this._container); + } else if (items[i].type === "endMarkedContent") { + this._container = this._container.parentNode; + } + + continue; + } + + this._textContentItemsStr.push(items[i].str); + + appendText(this, items[i], styleCache, this._layoutTextCtx); + } + } + + _layoutText(textDiv) { + const textDivProperties = this._textDivProperties.get(textDiv); + + let transform = ""; + + if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) { + const { + fontSize, + fontFamily + } = textDiv.style; + + if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) { + this._layoutTextCtx.font = `${fontSize} ${fontFamily}`; + this._layoutTextLastFontSize = fontSize; + this._layoutTextLastFontFamily = fontFamily; + } + + const { + width + } = this._layoutTextCtx.measureText(textDiv.textContent); + + if (width > 0) { + const scale = textDivProperties.canvasWidth / width; + + if (this._enhanceTextSelection) { + textDivProperties.scale = scale; + } + + transform = `scaleX(${scale})`; + } + } + + if (textDivProperties.angle !== 0) { + transform = `rotate(${textDivProperties.angle}deg) ${transform}`; + } + + if (transform.length > 0) { + if (this._enhanceTextSelection) { + textDivProperties.originalTransform = transform; + } + + textDiv.style.transform = transform; + } + + if (textDivProperties.hasText) { + this._container.appendChild(textDiv); + } + + if (textDivProperties.hasEOL) { + const br = document.createElement("br"); + br.setAttribute("role", "presentation"); + + this._container.appendChild(br); + } + } + + _render(timeout = 0) { + const capability = (0, _util.createPromiseCapability)(); + let styleCache = Object.create(null); + + const canvas = this._document.createElement("canvas"); + + canvas.height = canvas.width = DEFAULT_FONT_SIZE; + this._layoutTextCtx = canvas.getContext("2d", { + alpha: false + }); + + if (this._textContent) { + const textItems = this._textContent.items; + const textStyles = this._textContent.styles; + + this._processItems(textItems, textStyles); + + capability.resolve(); + } else if (this._textContentStream) { + const pump = () => { + this._reader.read().then(({ + value, + done + }) => { + if (done) { + capability.resolve(); + return; + } + + Object.assign(styleCache, value.styles); + + this._processItems(value.items, styleCache); + + pump(); + }, capability.reject); + }; + + this._reader = this._textContentStream.getReader(); + pump(); + } else { + throw new Error('Neither "textContent" nor "textContentStream" parameters specified.'); + } + + capability.promise.then(() => { + styleCache = null; + + if (!timeout) { + render(this); + } else { + this._renderTimer = setTimeout(() => { + render(this); + this._renderTimer = null; + }, timeout); + } + }, this._capability.reject); + } + + expandTextDivs(expandDivs = false) { + if (!this._enhanceTextSelection || !this._renderingDone) { + return; + } + + if (this._bounds !== null) { + expand(this); + this._bounds = null; + } + + const transformBuf = [], + paddingBuf = []; + + for (let i = 0, ii = this._textDivs.length; i < ii; i++) { + const div = this._textDivs[i]; + + const divProps = this._textDivProperties.get(div); + + if (!divProps.hasText) { + continue; + } + + if (expandDivs) { + transformBuf.length = 0; + paddingBuf.length = 0; + + if (divProps.originalTransform) { + transformBuf.push(divProps.originalTransform); + } + + if (divProps.paddingTop > 0) { + paddingBuf.push(`${divProps.paddingTop}px`); + transformBuf.push(`translateY(${-divProps.paddingTop}px)`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingRight > 0) { + paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingBottom > 0) { + paddingBuf.push(`${divProps.paddingBottom}px`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingLeft > 0) { + paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`); + transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`); + } else { + paddingBuf.push(0); + } + + div.style.padding = paddingBuf.join(" "); + + if (transformBuf.length) { + div.style.transform = transformBuf.join(" "); + } + } else { + div.style.padding = null; + div.style.transform = divProps.originalTransform; + } + } + } + +} + +function renderTextLayer(renderParameters) { + const task = new TextLayerRenderTask({ + textContent: renderParameters.textContent, + textContentStream: renderParameters.textContentStream, + container: renderParameters.container, + viewport: renderParameters.viewport, + textDivs: renderParameters.textDivs, + textContentItemsStr: renderParameters.textContentItemsStr, + enhanceTextSelection: renderParameters.enhanceTextSelection + }); + + task._render(renderParameters.timeout); + + return task; } /***/ }), -/* 17 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/* 24 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -var isReadableStreamSupported = false; -if (typeof ReadableStream !== 'undefined') { - try { - new ReadableStream({ - start: function start(controller) { - controller.close(); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SVGGraphics = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(5); + +var _is_node = __w_pdfjs_require__(3); + +let SVGGraphics = class { + constructor() { + (0, _util.unreachable)("Not implemented: SVGGraphics"); + } + +}; +exports.SVGGraphics = SVGGraphics; +{ + const SVG_DEFAULTS = { + fontStyle: "normal", + fontWeight: "normal", + fillColor: "#000000" + }; + const XML_NS = "http://www.w3.org/XML/1998/namespace"; + const XLINK_NS = "http://www.w3.org/1999/xlink"; + const LINE_CAP_STYLES = ["butt", "round", "square"]; + const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; + + const createObjectURL = function (data, contentType = "", forceDataSchema = false) { + if (URL.createObjectURL && typeof Blob !== "undefined" && !forceDataSchema) { + return URL.createObjectURL(new Blob([data], { + type: contentType + })); + } + + const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + let buffer = `data:${contentType};base64,`; + + for (let i = 0, ii = data.length; i < ii; i += 3) { + const b1 = data[i] & 0xff; + const b2 = data[i + 1] & 0xff; + const b3 = data[i + 2] & 0xff; + const d1 = b1 >> 2, + d2 = (b1 & 3) << 4 | b2 >> 4; + const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64; + const d4 = i + 2 < ii ? b3 & 0x3f : 64; + buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; + } + + return buffer; + }; + + const convertImgDataToPng = function () { + const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); + const CHUNK_WRAPPER_SIZE = 12; + const crcTable = new Int32Array(256); + + for (let i = 0; i < 256; i++) { + let c = i; + + for (let h = 0; h < 8; h++) { + if (c & 1) { + c = 0xedb88320 ^ c >> 1 & 0x7fffffff; + } else { + c = c >> 1 & 0x7fffffff; + } } - }); - isReadableStreamSupported = true; - } catch (e) {} + + crcTable[i] = c; + } + + function crc32(data, start, end) { + let crc = -1; + + for (let i = start; i < end; i++) { + const a = (crc ^ data[i]) & 0xff; + const b = crcTable[a]; + crc = crc >>> 8 ^ b; + } + + return crc ^ -1; + } + + function writePngChunk(type, body, data, offset) { + let p = offset; + const len = body.length; + data[p] = len >> 24 & 0xff; + data[p + 1] = len >> 16 & 0xff; + data[p + 2] = len >> 8 & 0xff; + data[p + 3] = len & 0xff; + p += 4; + data[p] = type.charCodeAt(0) & 0xff; + data[p + 1] = type.charCodeAt(1) & 0xff; + data[p + 2] = type.charCodeAt(2) & 0xff; + data[p + 3] = type.charCodeAt(3) & 0xff; + p += 4; + data.set(body, p); + p += body.length; + const crc = crc32(data, offset + 4, p); + data[p] = crc >> 24 & 0xff; + data[p + 1] = crc >> 16 & 0xff; + data[p + 2] = crc >> 8 & 0xff; + data[p + 3] = crc & 0xff; + } + + function adler32(data, start, end) { + let a = 1; + let b = 0; + + for (let i = start; i < end; ++i) { + a = (a + (data[i] & 0xff)) % 65521; + b = (b + a) % 65521; + } + + return b << 16 | a; + } + + function deflateSync(literals) { + if (!_is_node.isNodeJS) { + return deflateSyncUncompressed(literals); + } + + try { + let input; + + if (parseInt(process.versions.node) >= 8) { + input = literals; + } else { + input = Buffer.from(literals); + } + + const output = require("zlib").deflateSync(input, { + level: 9 + }); + + return output instanceof Uint8Array ? output : new Uint8Array(output); + } catch (e) { + (0, _util.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e); + } + + return deflateSyncUncompressed(literals); + } + + function deflateSyncUncompressed(literals) { + let len = literals.length; + const maxBlockLength = 0xffff; + const deflateBlocks = Math.ceil(len / maxBlockLength); + const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); + let pi = 0; + idat[pi++] = 0x78; + idat[pi++] = 0x9c; + let pos = 0; + + while (len > maxBlockLength) { + idat[pi++] = 0x00; + idat[pi++] = 0xff; + idat[pi++] = 0xff; + idat[pi++] = 0x00; + idat[pi++] = 0x00; + idat.set(literals.subarray(pos, pos + maxBlockLength), pi); + pi += maxBlockLength; + pos += maxBlockLength; + len -= maxBlockLength; + } + + idat[pi++] = 0x01; + idat[pi++] = len & 0xff; + idat[pi++] = len >> 8 & 0xff; + idat[pi++] = ~len & 0xffff & 0xff; + idat[pi++] = (~len & 0xffff) >> 8 & 0xff; + idat.set(literals.subarray(pos), pi); + pi += literals.length - pos; + const adler = adler32(literals, 0, literals.length); + idat[pi++] = adler >> 24 & 0xff; + idat[pi++] = adler >> 16 & 0xff; + idat[pi++] = adler >> 8 & 0xff; + idat[pi++] = adler & 0xff; + return idat; + } + + function encode(imgData, kind, forceDataSchema, isMask) { + const width = imgData.width; + const height = imgData.height; + let bitDepth, colorType, lineSize; + const bytes = imgData.data; + + switch (kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + colorType = 0; + bitDepth = 1; + lineSize = width + 7 >> 3; + break; + + case _util.ImageKind.RGB_24BPP: + colorType = 2; + bitDepth = 8; + lineSize = width * 3; + break; + + case _util.ImageKind.RGBA_32BPP: + colorType = 6; + bitDepth = 8; + lineSize = width * 4; + break; + + default: + throw new Error("invalid format"); + } + + const literals = new Uint8Array((1 + lineSize) * height); + let offsetLiterals = 0, + offsetBytes = 0; + + for (let y = 0; y < height; ++y) { + literals[offsetLiterals++] = 0; + literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); + offsetBytes += lineSize; + offsetLiterals += lineSize; + } + + if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) { + offsetLiterals = 0; + + for (let y = 0; y < height; y++) { + offsetLiterals++; + + for (let i = 0; i < lineSize; i++) { + literals[offsetLiterals++] ^= 0xff; + } + } + } + + const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); + const idat = deflateSync(literals); + const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; + const data = new Uint8Array(pngLength); + let offset = 0; + data.set(PNG_HEADER, offset); + offset += PNG_HEADER.length; + writePngChunk("IHDR", ihdr, data, offset); + offset += CHUNK_WRAPPER_SIZE + ihdr.length; + writePngChunk("IDATA", idat, data, offset); + offset += CHUNK_WRAPPER_SIZE + idat.length; + writePngChunk("IEND", new Uint8Array(0), data, offset); + return createObjectURL(data, "image/png", forceDataSchema); + } + + return function convertImgDataToPng(imgData, forceDataSchema, isMask) { + const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; + return encode(imgData, kind, forceDataSchema, isMask); + }; + }(); + + class SVGExtraState { + constructor() { + this.fontSizeScale = 1; + this.fontWeight = SVG_DEFAULTS.fontWeight; + this.fontSize = 0; + this.textMatrix = _util.IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.textMatrixScale = 1; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRise = 0; + this.fillColor = SVG_DEFAULTS.fillColor; + this.strokeColor = "#000000"; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.lineJoin = ""; + this.lineCap = ""; + this.miterLimit = 0; + this.dashArray = []; + this.dashPhase = 0; + this.dependencies = []; + this.activeClipUrl = null; + this.clipGroup = null; + this.maskId = ""; + } + + clone() { + return Object.create(this); + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + + } + + function opListToTree(opList) { + let opTree = []; + const tmp = []; + + for (const opListElement of opList) { + if (opListElement.fn === "save") { + opTree.push({ + fnId: 92, + fn: "group", + items: [] + }); + tmp.push(opTree); + opTree = opTree[opTree.length - 1].items; + continue; + } + + if (opListElement.fn === "restore") { + opTree = tmp.pop(); + } else { + opTree.push(opListElement); + } + } + + return opTree; + } + + function pf(value) { + if (Number.isInteger(value)) { + return value.toString(); + } + + const s = value.toFixed(10); + let i = s.length - 1; + + if (s[i] !== "0") { + return s; + } + + do { + i--; + } while (s[i] === "0"); + + return s.substring(0, s[i] === "." ? i : i + 1); + } + + function pm(m) { + if (m[4] === 0 && m[5] === 0) { + if (m[1] === 0 && m[2] === 0) { + if (m[0] === 1 && m[3] === 1) { + return ""; + } + + return `scale(${pf(m[0])} ${pf(m[3])})`; + } + + if (m[0] === m[3] && m[1] === -m[2]) { + const a = Math.acos(m[0]) * 180 / Math.PI; + return `rotate(${pf(a)})`; + } + } else { + if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { + return `translate(${pf(m[4])} ${pf(m[5])})`; + } + } + + return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`; + } + + let clipCount = 0; + let maskCount = 0; + let shadingCount = 0; + exports.SVGGraphics = SVGGraphics = class { + constructor(commonObjs, objs, forceDataSchema = false) { + this.svgFactory = new _display_utils.DOMSVGFactory(); + this.current = new SVGExtraState(); + this.transformMatrix = _util.IDENTITY_MATRIX; + this.transformStack = []; + this.extraStack = []; + this.commonObjs = commonObjs; + this.objs = objs; + this.pendingClip = null; + this.pendingEOFill = false; + this.embedFonts = false; + this.embeddedFonts = Object.create(null); + this.cssStyle = null; + this.forceDataSchema = !!forceDataSchema; + this._operatorIdMapping = []; + + for (const op in _util.OPS) { + this._operatorIdMapping[_util.OPS[op]] = op; + } + } + + save() { + this.transformStack.push(this.transformMatrix); + const old = this.current; + this.extraStack.push(old); + this.current = old.clone(); + } + + restore() { + this.transformMatrix = this.transformStack.pop(); + this.current = this.extraStack.pop(); + this.pendingClip = null; + this.tgrp = null; + } + + group(items) { + this.save(); + this.executeOpTree(items); + this.restore(); + } + + loadDependencies(operatorList) { + const fnArray = operatorList.fnArray; + const argsArray = operatorList.argsArray; + + for (let i = 0, ii = fnArray.length; i < ii; i++) { + if (fnArray[i] !== _util.OPS.dependency) { + continue; + } + + for (const obj of argsArray[i]) { + const objsPool = obj.startsWith("g_") ? this.commonObjs : this.objs; + const promise = new Promise(resolve => { + objsPool.get(obj, resolve); + }); + this.current.dependencies.push(promise); + } + } + + return Promise.all(this.current.dependencies); + } + + transform(a, b, c, d, e, f) { + const transformMatrix = [a, b, c, d, e, f]; + this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); + this.tgrp = null; + } + + getSVG(operatorList, viewport) { + this.viewport = viewport; + + const svgElement = this._initialize(viewport); + + return this.loadDependencies(operatorList).then(() => { + this.transformMatrix = _util.IDENTITY_MATRIX; + this.executeOpTree(this.convertOpList(operatorList)); + return svgElement; + }); + } + + convertOpList(operatorList) { + const operatorIdMapping = this._operatorIdMapping; + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + const opList = []; + + for (let i = 0, ii = fnArray.length; i < ii; i++) { + const fnId = fnArray[i]; + opList.push({ + fnId, + fn: operatorIdMapping[fnId], + args: argsArray[i] + }); + } + + return opListToTree(opList); + } + + executeOpTree(opTree) { + for (const opTreeElement of opTree) { + const fn = opTreeElement.fn; + const fnId = opTreeElement.fnId; + const args = opTreeElement.args; + + switch (fnId | 0) { + case _util.OPS.beginText: + this.beginText(); + break; + + case _util.OPS.dependency: + break; + + case _util.OPS.setLeading: + this.setLeading(args); + break; + + case _util.OPS.setLeadingMoveText: + this.setLeadingMoveText(args[0], args[1]); + break; + + case _util.OPS.setFont: + this.setFont(args); + break; + + case _util.OPS.showText: + this.showText(args[0]); + break; + + case _util.OPS.showSpacedText: + this.showText(args[0]); + break; + + case _util.OPS.endText: + this.endText(); + break; + + case _util.OPS.moveText: + this.moveText(args[0], args[1]); + break; + + case _util.OPS.setCharSpacing: + this.setCharSpacing(args[0]); + break; + + case _util.OPS.setWordSpacing: + this.setWordSpacing(args[0]); + break; + + case _util.OPS.setHScale: + this.setHScale(args[0]); + break; + + case _util.OPS.setTextMatrix: + this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.setTextRise: + this.setTextRise(args[0]); + break; + + case _util.OPS.setTextRenderingMode: + this.setTextRenderingMode(args[0]); + break; + + case _util.OPS.setLineWidth: + this.setLineWidth(args[0]); + break; + + case _util.OPS.setLineJoin: + this.setLineJoin(args[0]); + break; + + case _util.OPS.setLineCap: + this.setLineCap(args[0]); + break; + + case _util.OPS.setMiterLimit: + this.setMiterLimit(args[0]); + break; + + case _util.OPS.setFillRGBColor: + this.setFillRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeRGBColor: + this.setStrokeRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeColorN: + this.setStrokeColorN(args); + break; + + case _util.OPS.setFillColorN: + this.setFillColorN(args); + break; + + case _util.OPS.shadingFill: + this.shadingFill(args[0]); + break; + + case _util.OPS.setDash: + this.setDash(args[0], args[1]); + break; + + case _util.OPS.setRenderingIntent: + this.setRenderingIntent(args[0]); + break; + + case _util.OPS.setFlatness: + this.setFlatness(args[0]); + break; + + case _util.OPS.setGState: + this.setGState(args[0]); + break; + + case _util.OPS.fill: + this.fill(); + break; + + case _util.OPS.eoFill: + this.eoFill(); + break; + + case _util.OPS.stroke: + this.stroke(); + break; + + case _util.OPS.fillStroke: + this.fillStroke(); + break; + + case _util.OPS.eoFillStroke: + this.eoFillStroke(); + break; + + case _util.OPS.clip: + this.clip("nonzero"); + break; + + case _util.OPS.eoClip: + this.clip("evenodd"); + break; + + case _util.OPS.paintSolidColorImageMask: + this.paintSolidColorImageMask(); + break; + + case _util.OPS.paintImageXObject: + this.paintImageXObject(args[0]); + break; + + case _util.OPS.paintInlineImageXObject: + this.paintInlineImageXObject(args[0]); + break; + + case _util.OPS.paintImageMaskXObject: + this.paintImageMaskXObject(args[0]); + break; + + case _util.OPS.paintFormXObjectBegin: + this.paintFormXObjectBegin(args[0], args[1]); + break; + + case _util.OPS.paintFormXObjectEnd: + this.paintFormXObjectEnd(); + break; + + case _util.OPS.closePath: + this.closePath(); + break; + + case _util.OPS.closeStroke: + this.closeStroke(); + break; + + case _util.OPS.closeFillStroke: + this.closeFillStroke(); + break; + + case _util.OPS.closeEOFillStroke: + this.closeEOFillStroke(); + break; + + case _util.OPS.nextLine: + this.nextLine(); + break; + + case _util.OPS.transform: + this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.constructPath: + this.constructPath(args[0], args[1]); + break; + + case _util.OPS.endPath: + this.endPath(); + break; + + case 92: + this.group(opTreeElement.items); + break; + + default: + (0, _util.warn)(`Unimplemented operator ${fn}`); + break; + } + } + } + + setWordSpacing(wordSpacing) { + this.current.wordSpacing = wordSpacing; + } + + setCharSpacing(charSpacing) { + this.current.charSpacing = charSpacing; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + setTextMatrix(a, b, c, d, e, f) { + const current = this.current; + current.textMatrix = current.lineMatrix = [a, b, c, d, e, f]; + current.textMatrixScale = Math.hypot(a, b); + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtElement.appendChild(current.tspan); + } + + beginText() { + const current = this.current; + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.textMatrix = _util.IDENTITY_MATRIX; + current.lineMatrix = _util.IDENTITY_MATRIX; + current.textMatrixScale = 1; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtgrp = this.svgFactory.createElement("svg:g"); + current.xcoords = []; + current.ycoords = []; + } + + moveText(x, y) { + const current = this.current; + current.x = current.lineX += x; + current.y = current.lineY += y; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + showText(glyphs) { + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + + if (fontSize === 0) { + return; + } + + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + let x = 0; + + for (const glyph of glyphs) { + if (glyph === null) { + x += fontDirection * wordSpacing; + continue; + } else if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + let scaledX, scaledY; + let width = glyph.width; + + if (vertical) { + let vx; + const vmetric = glyph.vmetric || defaultVMetrics; + vx = glyph.vmetric ? vmetric[1] : width * 0.5; + vx = -vx * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; + } else { + scaledX = x / fontSizeScale; + scaledY = 0; + } + + if (glyph.isInFont || font.missingFile) { + current.xcoords.push(current.x + scaledX); + + if (vertical) { + current.ycoords.push(-current.y + scaledY); + } + + current.tspan.textContent += character; + } else {} + + let charWidth; + + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + + x += charWidth; + } + + current.tspan.setAttributeNS(null, "x", current.xcoords.map(pf).join(" ")); + + if (vertical) { + current.tspan.setAttributeNS(null, "y", current.ycoords.map(pf).join(" ")); + } else { + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + + if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { + current.tspan.setAttributeNS(null, "font-style", current.fontStyle); + } + + if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { + current.tspan.setAttributeNS(null, "font-weight", current.fontWeight); + } + + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + if (current.fillColor !== SVG_DEFAULTS.fillColor) { + current.tspan.setAttributeNS(null, "fill", current.fillColor); + } + + if (current.fillAlpha < 1) { + current.tspan.setAttributeNS(null, "fill-opacity", current.fillAlpha); + } + } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) { + current.tspan.setAttributeNS(null, "fill", "transparent"); + } else { + current.tspan.setAttributeNS(null, "fill", "none"); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + const lineWidthScale = 1 / (current.textMatrixScale || 1); + + this._setStrokeAttributes(current.tspan, lineWidthScale); + } + + let textMatrix = current.textMatrix; + + if (current.textRise !== 0) { + textMatrix = textMatrix.slice(); + textMatrix[5] += current.textRise; + } + + current.txtElement.setAttributeNS(null, "transform", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`); + current.txtElement.setAttributeNS(XML_NS, "xml:space", "preserve"); + current.txtElement.appendChild(current.tspan); + current.txtgrp.appendChild(current.txtElement); + + this._ensureTransformGroup().appendChild(current.txtElement); + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + addFontStyle(fontObj) { + if (!fontObj.data) { + throw new Error("addFontStyle: No font data available, " + 'ensure that the "fontExtraProperties" API parameter is set.'); + } + + if (!this.cssStyle) { + this.cssStyle = this.svgFactory.createElement("svg:style"); + this.cssStyle.setAttributeNS(null, "type", "text/css"); + this.defs.appendChild(this.cssStyle); + } + + const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema); + this.cssStyle.textContent += `@font-face { font-family: "${fontObj.loadedName}";` + ` src: url(${url}); }\n`; + } + + setFont(details) { + const current = this.current; + const fontObj = this.commonObjs.get(details[0]); + let size = details[1]; + current.font = fontObj; + + if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) { + this.addFontStyle(fontObj); + this.embeddedFonts[fontObj.loadedName] = fontObj; + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + current.fontSize = size; + current.fontFamily = fontObj.loadedName; + current.fontWeight = bold; + current.fontStyle = italic; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.xcoords = []; + current.ycoords = []; + } + + endText() { + const current = this.current; + + if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) { + current.element = current.txtElement; + this.clip("nonzero"); + this.endPath(); + } + } + + setLineWidth(width) { + if (width > 0) { + this.current.lineWidth = width; + } + } + + setLineCap(style) { + this.current.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.current.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.current.miterLimit = limit; + } + + setStrokeAlpha(strokeAlpha) { + this.current.strokeAlpha = strokeAlpha; + } + + setStrokeRGBColor(r, g, b) { + this.current.strokeColor = _util.Util.makeHexColor(r, g, b); + } + + setFillAlpha(fillAlpha) { + this.current.fillAlpha = fillAlpha; + } + + setFillRGBColor(r, g, b) { + this.current.fillColor = _util.Util.makeHexColor(r, g, b); + this.current.tspan = this.svgFactory.createElement("svg:tspan"); + this.current.xcoords = []; + this.current.ycoords = []; + } + + setStrokeColorN(args) { + this.current.strokeColor = this._makeColorN_Pattern(args); + } + + setFillColorN(args) { + this.current.fillColor = this._makeColorN_Pattern(args); + } + + shadingFill(args) { + const width = this.viewport.width; + const height = this.viewport.height; + + const inv = _util.Util.inverseTransform(this.transformMatrix); + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", x0); + rect.setAttributeNS(null, "y", y0); + rect.setAttributeNS(null, "width", x1 - x0); + rect.setAttributeNS(null, "height", y1 - y0); + rect.setAttributeNS(null, "fill", this._makeShadingPattern(args)); + + if (this.current.fillAlpha < 1) { + rect.setAttributeNS(null, "fill-opacity", this.current.fillAlpha); + } + + this._ensureTransformGroup().appendChild(rect); + } + + _makeColorN_Pattern(args) { + if (args[0] === "TilingPattern") { + return this._makeTilingPattern(args); + } + + return this._makeShadingPattern(args); + } + + _makeTilingPattern(args) { + const color = args[1]; + const operatorList = args[2]; + const matrix = args[3] || _util.IDENTITY_MATRIX; + const [x0, y0, x1, y1] = args[4]; + const xstep = args[5]; + const ystep = args[6]; + const paintType = args[7]; + const tilingId = `shading${shadingCount++}`; + + const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]); + + const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix); + + const txstep = xstep * xscale; + const tystep = ystep * yscale; + const tiling = this.svgFactory.createElement("svg:pattern"); + tiling.setAttributeNS(null, "id", tilingId); + tiling.setAttributeNS(null, "patternUnits", "userSpaceOnUse"); + tiling.setAttributeNS(null, "width", txstep); + tiling.setAttributeNS(null, "height", tystep); + tiling.setAttributeNS(null, "x", `${tx0}`); + tiling.setAttributeNS(null, "y", `${ty0}`); + const svg = this.svg; + const transformMatrix = this.transformMatrix; + const fillColor = this.current.fillColor; + const strokeColor = this.current.strokeColor; + const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0); + this.svg = bbox; + this.transformMatrix = matrix; + + if (paintType === 2) { + const cssColor = _util.Util.makeHexColor(...color); + + this.current.fillColor = cssColor; + this.current.strokeColor = cssColor; + } + + this.executeOpTree(this.convertOpList(operatorList)); + this.svg = svg; + this.transformMatrix = transformMatrix; + this.current.fillColor = fillColor; + this.current.strokeColor = strokeColor; + tiling.appendChild(bbox.childNodes[0]); + this.defs.appendChild(tiling); + return `url(#${tilingId})`; + } + + _makeShadingPattern(args) { + if (typeof args === "string") { + args = this.objs.get(args); + } + + switch (args[0]) { + case "RadialAxial": + const shadingId = `shading${shadingCount++}`; + const colorStops = args[3]; + let gradient; + + switch (args[1]) { + case "axial": + const point0 = args[4]; + const point1 = args[5]; + gradient = this.svgFactory.createElement("svg:linearGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "x1", point0[0]); + gradient.setAttributeNS(null, "y1", point0[1]); + gradient.setAttributeNS(null, "x2", point1[0]); + gradient.setAttributeNS(null, "y2", point1[1]); + break; + + case "radial": + const focalPoint = args[4]; + const circlePoint = args[5]; + const focalRadius = args[6]; + const circleRadius = args[7]; + gradient = this.svgFactory.createElement("svg:radialGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "cx", circlePoint[0]); + gradient.setAttributeNS(null, "cy", circlePoint[1]); + gradient.setAttributeNS(null, "r", circleRadius); + gradient.setAttributeNS(null, "fx", focalPoint[0]); + gradient.setAttributeNS(null, "fy", focalPoint[1]); + gradient.setAttributeNS(null, "fr", focalRadius); + break; + + default: + throw new Error(`Unknown RadialAxial type: ${args[1]}`); + } + + for (const colorStop of colorStops) { + const stop = this.svgFactory.createElement("svg:stop"); + stop.setAttributeNS(null, "offset", colorStop[0]); + stop.setAttributeNS(null, "stop-color", colorStop[1]); + gradient.appendChild(stop); + } + + this.defs.appendChild(gradient); + return `url(#${shadingId})`; + + case "Mesh": + (0, _util.warn)("Unimplemented pattern Mesh"); + return null; + + case "Dummy": + return "hotpink"; + + default: + throw new Error(`Unknown IR type: ${args[0]}`); + } + } + + setDash(dashArray, dashPhase) { + this.current.dashArray = dashArray; + this.current.dashPhase = dashPhase; + } + + constructPath(ops, args) { + const current = this.current; + let x = current.x, + y = current.y; + let d = []; + let j = 0; + + for (const op of ops) { + switch (op | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + d.push("M", pf(x), pf(y), "L", pf(xw), pf(y), "L", pf(xw), pf(yh), "L", pf(x), pf(yh), "Z"); + break; + + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + d.push("M", pf(x), pf(y)); + break; + + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + d.push("L", pf(x), pf(y)); + break; + + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); + j += 6; + break; + + case _util.OPS.curveTo2: + d.push("C", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); + j += 4; + break; + + case _util.OPS.closePath: + d.push("Z"); + break; + } + } + + d = d.join(" "); + + if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) { + d = current.path.getAttributeNS(null, "d") + d; + } else { + current.path = this.svgFactory.createElement("svg:path"); + + this._ensureTransformGroup().appendChild(current.path); + } + + current.path.setAttributeNS(null, "d", d); + current.path.setAttributeNS(null, "fill", "none"); + current.element = current.path; + current.setCurrentPoint(x, y); + } + + endPath() { + const current = this.current; + current.path = null; + + if (!this.pendingClip) { + return; + } + + if (!current.element) { + this.pendingClip = null; + return; + } + + const clipId = `clippath${clipCount++}`; + const clipPath = this.svgFactory.createElement("svg:clipPath"); + clipPath.setAttributeNS(null, "id", clipId); + clipPath.setAttributeNS(null, "transform", pm(this.transformMatrix)); + const clipElement = current.element.cloneNode(true); + + if (this.pendingClip === "evenodd") { + clipElement.setAttributeNS(null, "clip-rule", "evenodd"); + } else { + clipElement.setAttributeNS(null, "clip-rule", "nonzero"); + } + + this.pendingClip = null; + clipPath.appendChild(clipElement); + this.defs.appendChild(clipPath); + + if (current.activeClipUrl) { + current.clipGroup = null; + + for (const prev of this.extraStack) { + prev.clipGroup = null; + } + + clipPath.setAttributeNS(null, "clip-path", current.activeClipUrl); + } + + current.activeClipUrl = `url(#${clipId})`; + this.tgrp = null; + } + + clip(type) { + this.pendingClip = type; + } + + closePath() { + const current = this.current; + + if (current.path) { + const d = `${current.path.getAttributeNS(null, "d")}Z`; + current.path.setAttributeNS(null, "d", d); + } + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setTextRise(textRise) { + this.current.textRise = textRise; + } + + setTextRenderingMode(textRenderingMode) { + this.current.textRenderingMode = textRenderingMode; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (const [key, value] of states) { + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value); + break; + + case "CA": + this.setStrokeAlpha(value); + break; + + case "ca": + this.setFillAlpha(value); + break; + + default: + (0, _util.warn)(`Unimplemented graphic state operator ${key}`); + break; + } + } + } + + fill() { + const current = this.current; + + if (current.element) { + current.element.setAttributeNS(null, "fill", current.fillColor); + current.element.setAttributeNS(null, "fill-opacity", current.fillAlpha); + this.endPath(); + } + } + + stroke() { + const current = this.current; + + if (current.element) { + this._setStrokeAttributes(current.element); + + current.element.setAttributeNS(null, "fill", "none"); + this.endPath(); + } + } + + _setStrokeAttributes(element, lineWidthScale = 1) { + const current = this.current; + let dashArray = current.dashArray; + + if (lineWidthScale !== 1 && dashArray.length > 0) { + dashArray = dashArray.map(function (value) { + return lineWidthScale * value; + }); + } + + element.setAttributeNS(null, "stroke", current.strokeColor); + element.setAttributeNS(null, "stroke-opacity", current.strokeAlpha); + element.setAttributeNS(null, "stroke-miterlimit", pf(current.miterLimit)); + element.setAttributeNS(null, "stroke-linecap", current.lineCap); + element.setAttributeNS(null, "stroke-linejoin", current.lineJoin); + element.setAttributeNS(null, "stroke-width", pf(lineWidthScale * current.lineWidth) + "px"); + element.setAttributeNS(null, "stroke-dasharray", dashArray.map(pf).join(" ")); + element.setAttributeNS(null, "stroke-dashoffset", pf(lineWidthScale * current.dashPhase) + "px"); + } + + eoFill() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); + } + + this.fill(); + } + + fillStroke() { + this.stroke(); + this.fill(); + } + + eoFillStroke() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); + } + + this.fillStroke(); + } + + closeStroke() { + this.closePath(); + this.stroke(); + } + + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + + closeEOFillStroke() { + this.closePath(); + this.eoFillStroke(); + } + + paintSolidColorImageMask() { + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", "1px"); + rect.setAttributeNS(null, "height", "1px"); + rect.setAttributeNS(null, "fill", this.current.fillColor); + + this._ensureTransformGroup().appendChild(rect); + } + + paintImageXObject(objId) { + const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); + + if (!imgData) { + (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`); + return; + } + + this.paintInlineImageXObject(imgData); + } + + paintInlineImageXObject(imgData, mask) { + const width = imgData.width; + const height = imgData.height; + const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask); + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", "0"); + cliprect.setAttributeNS(null, "y", "0"); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + const imgEl = this.svgFactory.createElement("svg:image"); + imgEl.setAttributeNS(XLINK_NS, "xlink:href", imgSrc); + imgEl.setAttributeNS(null, "x", "0"); + imgEl.setAttributeNS(null, "y", pf(-height)); + imgEl.setAttributeNS(null, "width", pf(width) + "px"); + imgEl.setAttributeNS(null, "height", pf(height) + "px"); + imgEl.setAttributeNS(null, "transform", `scale(${pf(1 / width)} ${pf(-1 / height)})`); + + if (mask) { + mask.appendChild(imgEl); + } else { + this._ensureTransformGroup().appendChild(imgEl); + } + } + + paintImageMaskXObject(imgData) { + const current = this.current; + const width = imgData.width; + const height = imgData.height; + const fillColor = current.fillColor; + current.maskId = `mask${maskCount++}`; + const mask = this.svgFactory.createElement("svg:mask"); + mask.setAttributeNS(null, "id", current.maskId); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", pf(width)); + rect.setAttributeNS(null, "height", pf(height)); + rect.setAttributeNS(null, "fill", fillColor); + rect.setAttributeNS(null, "mask", `url(#${current.maskId})`); + this.defs.appendChild(mask); + + this._ensureTransformGroup().appendChild(rect); + + this.paintInlineImageXObject(imgData, mask); + } + + paintFormXObjectBegin(matrix, bbox) { + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); + } + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", bbox[0]); + cliprect.setAttributeNS(null, "y", bbox[1]); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + this.endPath(); + } + } + + paintFormXObjectEnd() {} + + _initialize(viewport) { + const svg = this.svgFactory.create(viewport.width, viewport.height); + const definitions = this.svgFactory.createElement("svg:defs"); + svg.appendChild(definitions); + this.defs = definitions; + const rootGroup = this.svgFactory.createElement("svg:g"); + rootGroup.setAttributeNS(null, "transform", pm(viewport.transform)); + svg.appendChild(rootGroup); + this.svg = rootGroup; + return svg; + } + + _ensureClipGroup() { + if (!this.current.clipGroup) { + const clipGroup = this.svgFactory.createElement("svg:g"); + clipGroup.setAttributeNS(null, "clip-path", this.current.activeClipUrl); + this.svg.appendChild(clipGroup); + this.current.clipGroup = clipGroup; + } + + return this.current.clipGroup; + } + + _ensureTransformGroup() { + if (!this.tgrp) { + this.tgrp = this.svgFactory.createElement("svg:g"); + this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix)); + + if (this.current.activeClipUrl) { + this._ensureClipGroup().appendChild(this.tgrp); + } else { + this.svg.appendChild(this.tgrp); + } + } + + return this.tgrp; + } + + }; } -if (isReadableStreamSupported) { - exports.ReadableStream = ReadableStream; -} else { - exports.ReadableStream = __w_pdfjs_require__(10).ReadableStream; + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNodeStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(26); + +; + +const fs = require("fs"); + +const http = require("http"); + +const https = require("https"); + +const url = require("url"); + +const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; + +function parseUrl(sourceUrl) { + const parsedUrl = url.parse(sourceUrl); + + if (parsedUrl.protocol === "file:" || parsedUrl.host) { + return parsedUrl; + } + + if (/^[a-z]:[/\\]/i.test(sourceUrl)) { + return url.parse(`file:///${sourceUrl}`); + } + + if (!parsedUrl.host) { + parsedUrl.protocol = "file:"; + } + + return parsedUrl; +} + +class PDFNodeStream { + constructor(source) { + this.source = source; + this.url = parseUrl(source.url); + this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:"; + this.isFsUrl = this.url.protocol === "file:"; + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once."); + this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this); + return this._fullRequestReader; + } + + getRangeReader(start, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end); + + this._rangeRequestReaders.push(rangeReader); + + return rangeReader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFNodeStream = PDFNodeStream; + +class BaseFullReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + const source = stream.source; + this._contentLength = source.length; + this._loaded = 0; + this._filename = null; + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._readableStream = null; + this._readCapability = (0, _util.createPromiseCapability)(); + this._headersCapability = (0, _util.createPromiseCapability)(); + } + + get headersReady() { + return this._headersCapability.promise; + } + + get filename() { + return this._filename; + } + + get contentLength() { + return this._contentLength; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + + if (!this._isStreamingSupported && this._isRangeSupported) { + this._error(new _util.AbortException("streaming is disabled")); + } + + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } + +} + +class BaseRangeReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + this._loaded = 0; + this._readableStream = null; + this._readCapability = (0, _util.createPromiseCapability)(); + const source = stream.source; + this._isStreamingSupported = !source.disableStream; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } + +} + +function createRequestOptions(parsedUrl, headers) { + return { + protocol: parsedUrl.protocol, + auth: parsedUrl.auth, + host: parsedUrl.hostname, + port: parsedUrl.port, + path: parsedUrl.path, + method: "GET", + headers + }; +} + +class PDFNodeStreamFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + + this._headersCapability.reject(error); + + return; + } + + this._headersCapability.resolve(); + + this._setReadableStream(response); + + const getResponseHeader = name => { + return this._readableStream.headers[name.toLowerCase()]; + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + }; + + this._request = null; + + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } + + this._request.on("error", reason => { + this._storedError = reason; + + this._headersCapability.reject(reason); + }); + + this._request.end(); + } + +} + +class PDFNodeStreamRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + this._httpHeaders = {}; + + for (const property in stream.httpHeaders) { + const value = stream.httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + this._httpHeaders[property] = value; + } + + this._httpHeaders.Range = `bytes=${start}-${end - 1}`; + + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + return; + } + + this._setReadableStream(response); + }; + + this._request = null; + + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } + + this._request.on("error", reason => { + this._storedError = reason; + }); + + this._request.end(); + } + +} + +class PDFNodeStreamFsFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + let path = decodeURIComponent(this._url.path); + + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + + fs.lstat(path, (error, stat) => { + if (error) { + if (error.code === "ENOENT") { + error = new _util.MissingPDFException(`Missing PDF "${path}".`); + } + + this._storedError = error; + + this._headersCapability.reject(error); + + return; + } + + this._contentLength = stat.size; + + this._setReadableStream(fs.createReadStream(path)); + + this._headersCapability.resolve(); + }); + } + +} + +class PDFNodeStreamFsRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + let path = decodeURIComponent(this._url.path); + + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + + this._setReadableStream(fs.createReadStream(path, { + start, + end: end - 1 + })); + } + +} + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createResponseStatusError = createResponseStatusError; +exports.extractFilenameFromHeader = extractFilenameFromHeader; +exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities; +exports.validateResponseStatus = validateResponseStatus; + +var _util = __w_pdfjs_require__(1); + +var _content_disposition = __w_pdfjs_require__(27); + +var _display_utils = __w_pdfjs_require__(5); + +function validateRangeRequestCapabilities({ + getResponseHeader, + isHttp, + rangeChunkSize, + disableRange +}) { + const returnValues = { + allowRangeRequests: false, + suggestedLength: undefined + }; + const length = parseInt(getResponseHeader("Content-Length"), 10); + + if (!Number.isInteger(length)) { + return returnValues; + } + + returnValues.suggestedLength = length; + + if (length <= 2 * rangeChunkSize) { + return returnValues; + } + + if (disableRange || !isHttp) { + return returnValues; + } + + if (getResponseHeader("Accept-Ranges") !== "bytes") { + return returnValues; + } + + const contentEncoding = getResponseHeader("Content-Encoding") || "identity"; + + if (contentEncoding !== "identity") { + return returnValues; + } + + returnValues.allowRangeRequests = true; + return returnValues; +} + +function extractFilenameFromHeader(getResponseHeader) { + const contentDisposition = getResponseHeader("Content-Disposition"); + + if (contentDisposition) { + let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition); + + if (filename.includes("%")) { + try { + filename = decodeURIComponent(filename); + } catch (ex) {} + } + + if ((0, _display_utils.isPdfFile)(filename)) { + return filename; + } + } + + return null; +} + +function createResponseStatusError(status, url) { + if (status === 404 || status === 0 && url.startsWith("file:")) { + return new _util.MissingPDFException('Missing PDF "' + url + '".'); + } + + return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status); +} + +function validateResponseStatus(status) { + return status === 200 || status === 206; +} + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader; + +var _util = __w_pdfjs_require__(1); + +function getFilenameFromContentDispositionHeader(contentDisposition) { + let needsEncodingFixup = true; + let tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition); + + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = unescape(filename); + filename = rfc5987decode(filename); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + + tmp = rfc2231getparam(contentDisposition); + + if (tmp) { + const filename = rfc2047decode(tmp); + return fixupEncoding(filename); + } + + tmp = toParamRegExp("filename", "i").exec(contentDisposition); + + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + + function toParamRegExp(attributePattern, flags) { + return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags); + } + + function textdecode(encoding, value) { + if (encoding) { + if (!/^[\x00-\xFF]+$/.test(value)) { + return value; + } + + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = (0, _util.stringToBytes)(value); + value = decoder.decode(buffer); + needsEncodingFixup = false; + } catch (e) {} + } + + return value; + } + + function fixupEncoding(value) { + if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { + value = textdecode("utf-8", value); + + if (needsEncodingFixup) { + value = textdecode("iso-8859-1", value); + } + } + + return value; + } + + function rfc2231getparam(contentDispositionStr) { + const matches = []; + let match; + const iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig"); + + while ((match = iter.exec(contentDispositionStr)) !== null) { + let [, n, quot, part] = match; + n = parseInt(n, 10); + + if (n in matches) { + if (n === 0) { + break; + } + + continue; + } + + matches[n] = [quot, part]; + } + + const parts = []; + + for (let n = 0; n < matches.length; ++n) { + if (!(n in matches)) { + break; + } + + let [quot, part] = matches[n]; + part = rfc2616unquote(part); + + if (quot) { + part = unescape(part); + + if (n === 0) { + part = rfc5987decode(part); + } + } + + parts.push(part); + } + + return parts.join(""); + } + + function rfc2616unquote(value) { + if (value.startsWith('"')) { + const parts = value.slice(1).split('\\"'); + + for (let i = 0; i < parts.length; ++i) { + const quotindex = parts[i].indexOf('"'); + + if (quotindex !== -1) { + parts[i] = parts[i].slice(0, quotindex); + parts.length = i + 1; + } + + parts[i] = parts[i].replace(/\\(.)/g, "$1"); + } + + value = parts.join('"'); + } + + return value; + } + + function rfc5987decode(extvalue) { + const encodingend = extvalue.indexOf("'"); + + if (encodingend === -1) { + return extvalue; + } + + const encoding = extvalue.slice(0, encodingend); + const langvalue = extvalue.slice(encodingend + 1); + const value = langvalue.replace(/^[^']*'/, ""); + return textdecode(encoding, value); + } + + function rfc2047decode(value) { + if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) { + return value; + } + + return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) { + if (encoding === "q" || encoding === "Q") { + text = text.replace(/_/g, " "); + text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) { + return String.fromCharCode(parseInt(hex, 16)); + }); + return textdecode(charset, text); + } + + try { + text = atob(text); + } catch (e) {} + + return textdecode(charset, text); + }); + } + + return ""; +} + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNetworkStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(26); + +; +const OK_RESPONSE = 200; +const PARTIAL_CONTENT_RESPONSE = 206; + +function getArrayBuffer(xhr) { + const data = xhr.response; + + if (typeof data !== "string") { + return data; + } + + const array = (0, _util.stringToBytes)(data); + return array.buffer; +} + +class NetworkManager { + constructor(url, args = {}) { + this.url = url; + this.isHttp = /^https?:/i.test(url); + this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null); + this.withCredentials = args.withCredentials || false; + + this.getXhr = args.getXhr || function NetworkManager_getXhr() { + return new XMLHttpRequest(); + }; + + this.currXhrId = 0; + this.pendingRequests = Object.create(null); + } + + requestRange(begin, end, listeners) { + const args = { + begin, + end + }; + + for (const prop in listeners) { + args[prop] = listeners[prop]; + } + + return this.request(args); + } + + requestFull(listeners) { + return this.request(listeners); + } + + request(args) { + const xhr = this.getXhr(); + const xhrId = this.currXhrId++; + const pendingRequest = this.pendingRequests[xhrId] = { + xhr + }; + xhr.open("GET", this.url); + xhr.withCredentials = this.withCredentials; + + for (const property in this.httpHeaders) { + const value = this.httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + xhr.setRequestHeader(property, value); + } + + if (this.isHttp && "begin" in args && "end" in args) { + xhr.setRequestHeader("Range", `bytes=${args.begin}-${args.end - 1}`); + pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE; + } else { + pendingRequest.expectedStatus = OK_RESPONSE; + } + + xhr.responseType = "arraybuffer"; + + if (args.onError) { + xhr.onerror = function (evt) { + args.onError(xhr.status); + }; + } + + xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); + xhr.onprogress = this.onProgress.bind(this, xhrId); + pendingRequest.onHeadersReceived = args.onHeadersReceived; + pendingRequest.onDone = args.onDone; + pendingRequest.onError = args.onError; + pendingRequest.onProgress = args.onProgress; + xhr.send(null); + return xhrId; + } + + onProgress(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + + if (!pendingRequest) { + return; + } + + pendingRequest.onProgress?.(evt); + } + + onStateChange(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + + if (!pendingRequest) { + return; + } + + const xhr = pendingRequest.xhr; + + if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { + pendingRequest.onHeadersReceived(); + delete pendingRequest.onHeadersReceived; + } + + if (xhr.readyState !== 4) { + return; + } + + if (!(xhrId in this.pendingRequests)) { + return; + } + + delete this.pendingRequests[xhrId]; + + if (xhr.status === 0 && this.isHttp) { + pendingRequest.onError?.(xhr.status); + return; + } + + const xhrStatus = xhr.status || OK_RESPONSE; + const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; + + if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { + pendingRequest.onError?.(xhr.status); + return; + } + + const chunk = getArrayBuffer(xhr); + + if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { + const rangeHeader = xhr.getResponseHeader("Content-Range"); + const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); + pendingRequest.onDone({ + begin: parseInt(matches[1], 10), + chunk + }); + } else if (chunk) { + pendingRequest.onDone({ + begin: 0, + chunk + }); + } else { + pendingRequest.onError?.(xhr.status); + } + } + + getRequestXhr(xhrId) { + return this.pendingRequests[xhrId].xhr; + } + + isPendingRequest(xhrId) { + return xhrId in this.pendingRequests; + } + + abortRequest(xhrId) { + const xhr = this.pendingRequests[xhrId].xhr; + delete this.pendingRequests[xhrId]; + xhr.abort(); + } + +} + +class PDFNetworkStream { + constructor(source) { + this._source = source; + this._manager = new NetworkManager(source.url, { + httpHeaders: source.httpHeaders, + withCredentials: source.withCredentials + }); + this._rangeChunkSize = source.rangeChunkSize; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + _onRangeRequestReaderClosed(reader) { + const i = this._rangeRequestReaders.indexOf(reader); + + if (i >= 0) { + this._rangeRequestReaders.splice(i, 1); + } + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); + reader.onClosed = this._onRangeRequestReaderClosed.bind(this); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + this._fullRequestReader?.cancel(reason); + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFNetworkStream = PDFNetworkStream; + +class PDFNetworkStreamFullRequestReader { + constructor(manager, source) { + this._manager = manager; + const args = { + onHeadersReceived: this._onHeadersReceived.bind(this), + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = source.url; + this._fullRequestId = manager.requestFull(args); + this._headersReceivedCapability = (0, _util.createPromiseCapability)(); + this._disableRange = source.disableRange || false; + this._contentLength = source.length; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._isStreamingSupported = false; + this._isRangeSupported = false; + this._cachedChunks = []; + this._requests = []; + this._done = false; + this._storedError = undefined; + this._filename = null; + this.onProgress = null; + } + + _onHeadersReceived() { + const fullRequestXhrId = this._fullRequestId; + + const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); + + const getResponseHeader = name => { + return fullRequestXhr.getResponseHeader(name); + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._manager.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + + if (allowRangeRequests) { + this._isRangeSupported = true; + } + + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + + if (this._isRangeSupported) { + this._manager.abortRequest(fullRequestXhrId); + } + + this._headersReceivedCapability.resolve(); + } + + _onDone(data) { + if (data) { + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: data.chunk, + done: false + }); + } else { + this._cachedChunks.push(data.chunk); + } + } + + this._done = true; + + if (this._cachedChunks.length > 0) { + return; + } + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + + this._headersReceivedCapability.reject(this._storedError); + + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + + this._requests.length = 0; + this._cachedChunks.length = 0; + } + + _onProgress(evt) { + this.onProgress?.({ + loaded: evt.loaded, + total: evt.lengthComputable ? evt.total : this._contentLength + }); + } + + get filename() { + return this._filename; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + get contentLength() { + return this._contentLength; + } + + get headersReady() { + return this._headersReceivedCapability.promise; + } + + async read() { + if (this._storedError) { + throw this._storedError; + } + + if (this._cachedChunks.length > 0) { + const chunk = this._cachedChunks.shift(); + + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + this._headersReceivedCapability.reject(reason); + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + if (this._manager.isPendingRequest(this._fullRequestId)) { + this._manager.abortRequest(this._fullRequestId); + } + + this._fullRequestReader = null; + } + +} + +class PDFNetworkStreamRangeRequestReader { + constructor(manager, begin, end) { + this._manager = manager; + const args = { + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = manager.url; + this._requestId = manager.requestRange(begin, end, args); + this._requests = []; + this._queuedChunk = null; + this._done = false; + this._storedError = undefined; + this.onProgress = null; + this.onClosed = null; + } + + _close() { + this.onClosed?.(this); + } + + _onDone(data) { + const chunk = data.chunk; + + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunk = chunk; + } + + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + this._close(); + } + + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + + this._requests.length = 0; + this._queuedChunk = null; + } + + _onProgress(evt) { + if (!this.isStreamingSupported) { + this.onProgress?.({ + loaded: evt.loaded + }); + } + } + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._storedError) { + throw this._storedError; + } + + if (this._queuedChunk !== null) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + if (this._manager.isPendingRequest(this._requestId)) { + this._manager.abortRequest(this._requestId); + } + + this._close(); + } + +} + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFetchStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(26); + +; + +function createFetchOptions(headers, withCredentials, abortController) { + return { + method: "GET", + headers, + signal: abortController?.signal, + mode: "cors", + credentials: withCredentials ? "include" : "same-origin", + redirect: "follow" + }; +} + +function createHeaders(httpHeaders) { + const headers = new Headers(); + + for (const property in httpHeaders) { + const value = httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + headers.append(property, value); + } + + return headers; +} + +class PDFFetchStream { + constructor(source) { + this.source = source; + this.isHttp = /^https?:/i.test(source.url); + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFFetchStreamReader(this); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const reader = new PDFFetchStreamRangeReader(this, begin, end); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFFetchStream = PDFFetchStream; + +class PDFFetchStreamReader { + constructor(stream) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + this._filename = null; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._contentLength = source.length; + this._headersCapability = (0, _util.createPromiseCapability)(); + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + if (typeof AbortController !== "undefined") { + this._abortController = new AbortController(); + } + + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._headers = createHeaders(this._stream.httpHeaders); + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + + this._reader = response.body.getReader(); + + this._headersCapability.resolve(); + + const getResponseHeader = name => { + return response.headers.get(name); + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + + if (!this._isStreamingSupported && this._isRangeSupported) { + this.cancel(new _util.AbortException("Streaming is disabled.")); + } + }).catch(this._headersCapability.reject); + this.onProgress = null; + } + + get headersReady() { + return this._headersCapability.promise; + } + + get filename() { + return this._filename; + } + + get contentLength() { + return this._contentLength; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._headersCapability.promise; + const { + value, + done + } = await this._reader.read(); + + if (done) { + return { + value, + done + }; + } + + this._loaded += value.byteLength; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } + + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + if (this._abortController) { + this._abortController.abort(); + } + } + +} + +class PDFFetchStreamRangeReader { + constructor(stream, begin, end) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._readCapability = (0, _util.createPromiseCapability)(); + this._isStreamingSupported = !source.disableStream; + + if (typeof AbortController !== "undefined") { + this._abortController = new AbortController(); + } + + this._headers = createHeaders(this._stream.httpHeaders); + + this._headers.append("Range", `bytes=${begin}-${end - 1}`); + + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + + this._readCapability.resolve(); + + this._reader = response.body.getReader(); + }).catch(this._readCapability.reject); + this.onProgress = null; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + const { + value, + done + } = await this._reader.read(); + + if (done) { + return { + value, + done + }; + } + + this._loaded += value.byteLength; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + if (this._abortController) { + this._abortController.abort(); + } + } + } /***/ }) -/******/ ]); +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "AnnotationLayer", ({ + enumerable: true, + get: function () { + return _annotation_layer.AnnotationLayer; + } +})); +Object.defineProperty(exports, "AnnotationMode", ({ + enumerable: true, + get: function () { + return _util.AnnotationMode; + } +})); +Object.defineProperty(exports, "CMapCompressionType", ({ + enumerable: true, + get: function () { + return _util.CMapCompressionType; + } +})); +Object.defineProperty(exports, "GlobalWorkerOptions", ({ + enumerable: true, + get: function () { + return _worker_options.GlobalWorkerOptions; + } +})); +Object.defineProperty(exports, "InvalidPDFException", ({ + enumerable: true, + get: function () { + return _util.InvalidPDFException; + } +})); +Object.defineProperty(exports, "LoopbackPort", ({ + enumerable: true, + get: function () { + return _api.LoopbackPort; + } +})); +Object.defineProperty(exports, "MissingPDFException", ({ + enumerable: true, + get: function () { + return _util.MissingPDFException; + } +})); +Object.defineProperty(exports, "OPS", ({ + enumerable: true, + get: function () { + return _util.OPS; + } +})); +Object.defineProperty(exports, "PDFDataRangeTransport", ({ + enumerable: true, + get: function () { + return _api.PDFDataRangeTransport; + } +})); +Object.defineProperty(exports, "PDFDateString", ({ + enumerable: true, + get: function () { + return _display_utils.PDFDateString; + } +})); +Object.defineProperty(exports, "PDFWorker", ({ + enumerable: true, + get: function () { + return _api.PDFWorker; + } +})); +Object.defineProperty(exports, "PasswordResponses", ({ + enumerable: true, + get: function () { + return _util.PasswordResponses; + } +})); +Object.defineProperty(exports, "PermissionFlag", ({ + enumerable: true, + get: function () { + return _util.PermissionFlag; + } +})); +Object.defineProperty(exports, "PixelsPerInch", ({ + enumerable: true, + get: function () { + return _display_utils.PixelsPerInch; + } +})); +Object.defineProperty(exports, "RenderingCancelledException", ({ + enumerable: true, + get: function () { + return _display_utils.RenderingCancelledException; + } +})); +Object.defineProperty(exports, "SVGGraphics", ({ + enumerable: true, + get: function () { + return _svg.SVGGraphics; + } +})); +Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({ + enumerable: true, + get: function () { + return _util.UNSUPPORTED_FEATURES; + } +})); +Object.defineProperty(exports, "UnexpectedResponseException", ({ + enumerable: true, + get: function () { + return _util.UnexpectedResponseException; + } +})); +Object.defineProperty(exports, "Util", ({ + enumerable: true, + get: function () { + return _util.Util; + } +})); +Object.defineProperty(exports, "VerbosityLevel", ({ + enumerable: true, + get: function () { + return _util.VerbosityLevel; + } +})); +Object.defineProperty(exports, "XfaLayer", ({ + enumerable: true, + get: function () { + return _xfa_layer.XfaLayer; + } +})); +Object.defineProperty(exports, "build", ({ + enumerable: true, + get: function () { + return _api.build; + } +})); +Object.defineProperty(exports, "createPromiseCapability", ({ + enumerable: true, + get: function () { + return _util.createPromiseCapability; + } +})); +Object.defineProperty(exports, "createValidAbsoluteUrl", ({ + enumerable: true, + get: function () { + return _util.createValidAbsoluteUrl; + } +})); +Object.defineProperty(exports, "getDocument", ({ + enumerable: true, + get: function () { + return _api.getDocument; + } +})); +Object.defineProperty(exports, "getFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getPdfFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getPdfFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getXfaPageViewport", ({ + enumerable: true, + get: function () { + return _display_utils.getXfaPageViewport; + } +})); +Object.defineProperty(exports, "isPdfFile", ({ + enumerable: true, + get: function () { + return _display_utils.isPdfFile; + } +})); +Object.defineProperty(exports, "loadScript", ({ + enumerable: true, + get: function () { + return _display_utils.loadScript; + } +})); +Object.defineProperty(exports, "renderTextLayer", ({ + enumerable: true, + get: function () { + return _text_layer.renderTextLayer; + } +})); +Object.defineProperty(exports, "shadow", ({ + enumerable: true, + get: function () { + return _util.shadow; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _api.version; + } +})); + +var _util = __w_pdfjs_require__(1); + +var _api = __w_pdfjs_require__(4); + +var _display_utils = __w_pdfjs_require__(5); + +var _annotation_layer = __w_pdfjs_require__(20); + +var _worker_options = __w_pdfjs_require__(13); + +var _is_node = __w_pdfjs_require__(3); + +var _text_layer = __w_pdfjs_require__(23); + +var _svg = __w_pdfjs_require__(24); + +var _xfa_layer = __w_pdfjs_require__(22); + +const pdfjsVersion = '2.14.305'; +const pdfjsBuild = 'eaaa8b4ad'; +{ + if (_is_node.isNodeJS) { + const { + PDFNodeStream + } = __w_pdfjs_require__(25); + + (0, _api.setPDFNetworkStreamFactory)(params => { + return new PDFNodeStream(params); + }); + } else { + const { + PDFNetworkStream + } = __w_pdfjs_require__(28); + + const { + PDFFetchStream + } = __w_pdfjs_require__(29); + + (0, _api.setPDFNetworkStreamFactory)(params => { + if ((0, _display_utils.isValidFetchUrl)(params.url)) { + return new PDFFetchStream(params); + } + + return new PDFNetworkStream(params); + }); + } +} +})(); + +/******/ return __webpack_exports__; +/******/ })() +; }); //# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/src/views/libs/pdf-viewer/pdfjs-dist/build/pdf.js.map b/src/views/libs/pdf-viewer/pdfjs-dist/build/pdf.js.map index 9aa80558f..faa1a2512 100644 --- a/src/views/libs/pdf-viewer/pdfjs-dist/build/pdf.js.map +++ b/src/views/libs/pdf-viewer/pdfjs-dist/build/pdf.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap b5fe8ab6eb949fc98816","webpack:///src/shared/util.js","webpack:///src/display/dom_utils.js","webpack:///src/display/api.js","webpack:///src/display/annotation_layer.js","webpack:///src/display/svg.js","webpack:///src/display/text_layer.js","webpack:///src/display/metadata.js","webpack:///src/display/webgl.js","webpack:///src/display/global.js","webpack:///src/display/network.js","webpack:///external/streams/streams-lib.js","webpack:///src/display/canvas.js","webpack:///src/display/font_loader.js","webpack:///src/display/pattern_helper.js","webpack:///src/display/transport_stream.js","webpack:///src/pdf.js","webpack:///src/shared/compatibility.js","webpack:///src/shared/streams_polyfill.js"],"names":[],"mappings":"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","file":"pdf.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __w_pdfjs_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__w_pdfjs_require__.m = modules;\n\n \t// expose the module cache\n \t__w_pdfjs_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__w_pdfjs_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__w_pdfjs_require__.d = function(exports, name, getter) {\n \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__w_pdfjs_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__w_pdfjs_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 15);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b5fe8ab6eb949fc98816","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport './compatibility';\nimport { ReadableStream } from './streams_polyfill';\n\nvar globalScope =\n (typeof window !== 'undefined' && window.Math === Math) ? window :\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global.Math === Math) ? global :\n (typeof self !== 'undefined' && self.Math === Math) ? self : this;\n\nvar FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst NativeImageDecoding = {\n NONE: 'none',\n DECODE: 'decode',\n DISPLAY: 'display',\n};\n\nvar TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nvar ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nvar AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nvar AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nvar AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nvar AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nvar StreamType = {\n UNKNOWN: 0,\n FLATE: 1,\n LZW: 2,\n DCT: 3,\n JPX: 4,\n JBIG: 5,\n A85: 6,\n AHX: 7,\n CCF: 8,\n RL: 9,\n};\n\nvar FontType = {\n UNKNOWN: 0,\n TYPE1: 1,\n TYPE1C: 2,\n CIDFONTTYPE0: 3,\n CIDFONTTYPE0C: 4,\n TRUETYPE: 5,\n CIDFONTTYPE2: 6,\n TYPE3: 7,\n OPENTYPE: 8,\n TYPE0: 9,\n MMTYPE1: 10,\n};\n\nvar VERBOSITY_LEVELS = {\n errors: 0,\n warnings: 1,\n infos: 5,\n};\n\nvar CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nvar OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nvar verbosity = VERBOSITY_LEVELS.warnings;\n\nfunction setVerbosityLevel(level) {\n verbosity = level;\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VERBOSITY_LEVELS.infos) {\n console.log('Info: ' + msg);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VERBOSITY_LEVELS.warnings) {\n console.log('Warning: ' + msg);\n }\n}\n\n// Deprecated API function -- display regardless of the PDFJS.verbosity setting.\nfunction deprecated(details) {\n console.log('Deprecated API usage: ' + details);\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\nvar UNSUPPORTED_FEATURES = {\n unknown: 'unknown',\n forms: 'forms',\n javaScript: 'javaScript',\n smask: 'smask',\n shadingPattern: 'shadingPattern',\n font: 'font',\n};\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n try {\n var base = new URL(baseUrl);\n if (!base.origin || base.origin === 'null') {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n var other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the whitelisted protocols, e.g. to avoid XSS.\nfunction isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case 'http:':\n case 'https:':\n case 'ftp:':\n case 'mailto:':\n case 'tel:':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL (utilizing `isValidProtocol`).\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n try {\n var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) { /* `new URL()` will throw on incorrect data. */ }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, { value,\n enumerable: true,\n configurable: true,\n writable: false, });\n return value;\n}\n\nfunction getLookupTableFactory(initializer) {\n var lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\n\nvar PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nvar PasswordException = (function PasswordExceptionClosure() {\n function PasswordException(msg, code) {\n this.name = 'PasswordException';\n this.message = msg;\n this.code = code;\n }\n\n PasswordException.prototype = new Error();\n PasswordException.constructor = PasswordException;\n\n return PasswordException;\n})();\n\nvar UnknownErrorException = (function UnknownErrorExceptionClosure() {\n function UnknownErrorException(msg, details) {\n this.name = 'UnknownErrorException';\n this.message = msg;\n this.details = details;\n }\n\n UnknownErrorException.prototype = new Error();\n UnknownErrorException.constructor = UnknownErrorException;\n\n return UnknownErrorException;\n})();\n\nvar InvalidPDFException = (function InvalidPDFExceptionClosure() {\n function InvalidPDFException(msg) {\n this.name = 'InvalidPDFException';\n this.message = msg;\n }\n\n InvalidPDFException.prototype = new Error();\n InvalidPDFException.constructor = InvalidPDFException;\n\n return InvalidPDFException;\n})();\n\nvar MissingPDFException = (function MissingPDFExceptionClosure() {\n function MissingPDFException(msg) {\n this.name = 'MissingPDFException';\n this.message = msg;\n }\n\n MissingPDFException.prototype = new Error();\n MissingPDFException.constructor = MissingPDFException;\n\n return MissingPDFException;\n})();\n\nvar UnexpectedResponseException =\n (function UnexpectedResponseExceptionClosure() {\n function UnexpectedResponseException(msg, status) {\n this.name = 'UnexpectedResponseException';\n this.message = msg;\n this.status = status;\n }\n\n UnexpectedResponseException.prototype = new Error();\n UnexpectedResponseException.constructor = UnexpectedResponseException;\n\n return UnexpectedResponseException;\n})();\n\nvar NotImplementedException = (function NotImplementedExceptionClosure() {\n function NotImplementedException(msg) {\n this.message = msg;\n }\n\n NotImplementedException.prototype = new Error();\n NotImplementedException.prototype.name = 'NotImplementedException';\n NotImplementedException.constructor = NotImplementedException;\n\n return NotImplementedException;\n})();\n\nvar MissingDataException = (function MissingDataExceptionClosure() {\n function MissingDataException(begin, end) {\n this.begin = begin;\n this.end = end;\n this.message = 'Missing data [' + begin + ', ' + end + ')';\n }\n\n MissingDataException.prototype = new Error();\n MissingDataException.prototype.name = 'MissingDataException';\n MissingDataException.constructor = MissingDataException;\n\n return MissingDataException;\n})();\n\nvar XRefParseException = (function XRefParseExceptionClosure() {\n function XRefParseException(msg) {\n this.message = msg;\n }\n\n XRefParseException.prototype = new Error();\n XRefParseException.prototype.name = 'XRefParseException';\n XRefParseException.constructor = XRefParseException;\n\n return XRefParseException;\n})();\n\n/**\n * Error caused during parsing PDF data.\n */\nlet FormatError = (function FormatErrorClosure() {\n function FormatError(msg) {\n this.message = msg;\n }\n\n FormatError.prototype = new Error();\n FormatError.prototype.name = 'FormatError';\n FormatError.constructor = FormatError;\n\n return FormatError;\n})();\n\n/**\n * Error used to indicate task cancellation.\n */\nlet AbortException = (function AbortExceptionClosure() {\n function AbortException(msg) {\n this.name = 'AbortException';\n this.message = msg;\n }\n\n AbortException.prototype = new Error();\n AbortException.constructor = AbortException;\n\n return AbortException;\n})();\n\nvar NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n if (typeof str !== 'string') {\n warn('The argument for removeNullCharacters must be a string.');\n return str;\n }\n return str.replace(NullCharactersRegExp, '');\n}\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && typeof bytes === 'object' &&\n bytes.length !== undefined, 'Invalid argument for bytesToString');\n var length = bytes.length;\n var MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n var strBuf = [];\n for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n var chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join('');\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === 'string', 'Invalid argument for stringToBytes');\n var length = str.length;\n var bytes = new Uint8Array(length);\n for (var i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xFF;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n assert(arr.byteLength !== undefined);\n return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array} arr - the array of the arrays (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n // Shortcut: if first and only item is Uint8Array, return it.\n if (arr.length === 1 && (arr[0] instanceof Uint8Array)) {\n return arr[0];\n }\n var resultLength = 0;\n var i, ii = arr.length;\n var item, itemLength;\n for (i = 0; i < ii; i++) {\n item = arr[i];\n itemLength = arrayByteLength(item);\n resultLength += itemLength;\n }\n var pos = 0;\n var data = new Uint8Array(resultLength);\n for (i = 0; i < ii; i++) {\n item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === 'string') {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,\n (value >> 8) & 0xff, value & 0xff);\n}\n\nfunction log2(x) {\n var n = 1, i = 0;\n while (x > n) {\n n <<= 1;\n i++;\n }\n return i;\n}\n\nfunction readInt8(data, start) {\n return (data[start] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16) |\n (data[offset + 2] << 8) | data[offset + 3]) >>> 0;\n}\n\n// Lazy test the endianness of the platform\n// NOTE: This will be 'true' for simulated TypedArrays\nfunction isLittleEndian() {\n var buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return (view32[0] === 1);\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(''); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n\nvar Util = (function UtilClosure() {\n function Util() {}\n\n var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];\n\n // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids\n // creating many intermediate strings.\n Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join('');\n };\n\n // Concatenates two transformation matrices together and returns the result.\n Util.transform = function Util_transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\n ];\n };\n\n // For 2d affine transforms\n Util.applyTransform = function Util_applyTransform(p, m) {\n var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n };\n\n Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {\n var d = m[0] * m[3] - m[1] * m[2];\n var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n };\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n Util.getAxialAlignedBoundingBox =\n function Util_getAxialAlignedBoundingBox(r, m) {\n\n var p1 = Util.applyTransform(r, m);\n var p2 = Util.applyTransform(r.slice(2, 4), m);\n var p3 = Util.applyTransform([r[0], r[3]], m);\n var p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1])\n ];\n };\n\n Util.inverseTransform = function Util_inverseTransform(m) {\n var d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n };\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n Util.apply3dTransform = function Util_apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2]\n ];\n };\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n Util.singularValueDecompose2dScale =\n function Util_singularValueDecompose2dScale(m) {\n\n var transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n var a = m[0] * transpose[0] + m[1] * transpose[2];\n var b = m[0] * transpose[1] + m[1] * transpose[3];\n var c = m[2] * transpose[0] + m[3] * transpose[2];\n var d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n var first = (a + d) / 2;\n var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n var sx = first + second || 1;\n var sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n };\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n Util.normalizeRect = function Util_normalizeRect(rect) {\n var r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n };\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n Util.intersect = function Util_intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),\n orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),\n result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return false;\n }\n\n // Y: first and second points belong to different rectangles?\n if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return false;\n }\n\n return result;\n };\n\n Util.sign = function Util_sign(num) {\n return num < 0 ? -1 : 1;\n };\n\n var ROMAN_NUMBER_MAP = [\n '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM',\n '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC',\n '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'\n ];\n /**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {integer} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n * to lower case letters. The default is false.\n * @return {string} The resulting Roman number.\n */\n Util.toRoman = function Util_toRoman(number, lowerCase) {\n assert(isInt(number) && number > 0,\n 'The number should be a positive integer.');\n var pos, romanBuf = [];\n // Thousands\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push('M');\n }\n // Hundreds\n pos = (number / 100) | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n // Tens\n pos = (number / 10) | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n // Ones\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n\n var romanStr = romanBuf.join('');\n return (lowerCase ? romanStr.toLowerCase() : romanStr);\n };\n\n Util.appendToArray = function Util_appendToArray(arr1, arr2) {\n Array.prototype.push.apply(arr1, arr2);\n };\n\n Util.prependToArray = function Util_prependToArray(arr1, arr2) {\n Array.prototype.unshift.apply(arr1, arr2);\n };\n\n Util.extendObj = function extendObj(obj1, obj2) {\n for (var key in obj2) {\n obj1[key] = obj2[key];\n }\n };\n\n Util.getInheritableProperty =\n function Util_getInheritableProperty(dict, name, getArray) {\n while (dict && !dict.has(name)) {\n dict = dict.get('Parent');\n }\n if (!dict) {\n return null;\n }\n return getArray ? dict.getArray(name) : dict.get(name);\n };\n\n Util.inherit = function Util_inherit(sub, base, prototype) {\n sub.prototype = Object.create(base.prototype);\n sub.prototype.constructor = sub;\n for (var prop in prototype) {\n sub.prototype[prop] = prototype[prop];\n }\n };\n\n Util.loadScript = function Util_loadScript(src, callback) {\n var script = document.createElement('script');\n var loaded = false;\n script.setAttribute('src', src);\n if (callback) {\n script.onload = function() {\n if (!loaded) {\n callback();\n }\n loaded = true;\n };\n }\n document.getElementsByTagName('head')[0].appendChild(script);\n };\n\n return Util;\n})();\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n * @class\n * @alias PageViewport\n */\nvar PageViewport = (function PageViewportClosure() {\n /**\n * @constructor\n * @private\n * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates.\n * @param scale {number} scale of the viewport.\n * @param rotation {number} rotations of the viewport in degrees.\n * @param offsetX {number} offset X\n * @param offsetY {number} offset Y\n * @param dontFlip {boolean} if true, axis Y will not be flipped.\n */\n function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n var centerX = (viewBox[2] + viewBox[0]) / 2;\n var centerY = (viewBox[3] + viewBox[1]) / 2;\n var rotateA, rotateB, rotateC, rotateD;\n rotation = rotation % 360;\n rotation = rotation < 0 ? rotation + 360 : rotation;\n switch (rotation) {\n case 180:\n rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;\n break;\n case 90:\n rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;\n break;\n case 270:\n rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;\n break;\n // case 0:\n default:\n rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;\n break;\n }\n\n if (dontFlip) {\n rotateC = -rotateC; rotateD = -rotateD;\n }\n\n var offsetCanvasX, offsetCanvasY;\n var width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY\n ];\n\n this.width = width;\n this.height = height;\n this.fontScale = scale;\n }\n PageViewport.prototype = /** @lends PageViewport.prototype */ {\n /**\n * Clones viewport with additional properties.\n * @param args {Object} (optional) If specified, may contain the 'scale' or\n * 'rotation' properties to override the corresponding properties in\n * the cloned viewport.\n * @returns {PageViewport} Cloned viewport.\n */\n clone: function PageViewPort_clone(args) {\n args = args || {};\n var scale = 'scale' in args ? args.scale : this.scale;\n var rotation = 'rotation' in args ? args.rotation : this.rotation;\n return new PageViewport(this.viewBox.slice(), scale, rotation,\n this.offsetX, this.offsetY, args.dontFlip);\n },\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n },\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param rect {Array} xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Contains corresponding coordinates of the rectangle\n * in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle:\n function PageViewport_convertToViewportRectangle(rect) {\n var tl = Util.applyTransform([rect[0], rect[1]], this.transform);\n var br = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [tl[0], tl[1], br[0], br[1]];\n },\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n },\n };\n return PageViewport;\n})();\n\nvar PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n var i, n = str.length, strBuf = [];\n if (str[0] === '\\xFE' && str[1] === '\\xFF') {\n // UTF16BE BOM\n for (i = 2; i < n; i += 2) {\n strBuf.push(String.fromCharCode(\n (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));\n }\n } else {\n for (i = 0; i < n; ++i) {\n var code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join('');\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n for (var key in obj) {\n return false;\n }\n return true;\n}\n\nfunction isBool(v) {\n return typeof v === 'boolean';\n}\n\nfunction isInt(v) {\n return typeof v === 'number' && ((v | 0) === v);\n}\n\nfunction isNum(v) {\n return typeof v === 'number';\n}\n\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nfunction isArray(v) {\n return v instanceof Array;\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === 'object' && v !== null && v.byteLength !== undefined;\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isSpace(ch) {\n return (ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A);\n}\n\nfunction isNodeJS() {\n // eslint-disable-next-line no-undef\n return typeof process === 'object' && process + '' === '[object process]';\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A promise object.\n * @property {function} resolve - Fulfills the promise.\n * @property {function} reject - Rejects the promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @return {PromiseCapability} A capability object contains:\n * - a Promise, resolve and reject methods.\n */\nfunction createPromiseCapability() {\n var capability = {};\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = resolve;\n capability.reject = reject;\n });\n return capability;\n}\n\nvar StatTimer = (function StatTimerClosure() {\n function rpad(str, pad, length) {\n while (str.length < length) {\n str += pad;\n }\n return str;\n }\n function StatTimer() {\n this.started = Object.create(null);\n this.times = [];\n this.enabled = true;\n }\n StatTimer.prototype = {\n time: function StatTimer_time(name) {\n if (!this.enabled) {\n return;\n }\n if (name in this.started) {\n warn('Timer is already running for ' + name);\n }\n this.started[name] = Date.now();\n },\n timeEnd: function StatTimer_timeEnd(name) {\n if (!this.enabled) {\n return;\n }\n if (!(name in this.started)) {\n warn('Timer has not been started for ' + name);\n }\n this.times.push({\n 'name': name,\n 'start': this.started[name],\n 'end-left': Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n },\n toString: function StatTimer_toString() {\n var i, ii;\n var times = this.times;\n var out = '';\n // Find the longest name for padding purposes.\n var longest = 0;\n for (i = 0, ii = times.length; i < ii; ++i) {\n var name = times[i]['name'];\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (i = 0, ii = times.length; i < ii; ++i) {\n var span = times[i];\n var duration = span.end - span.start;\n out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\\n';\n }\n return out;\n },\n };\n return StatTimer;\n})();\n\nvar createBlob = function createBlob(data, contentType) {\n if (typeof Blob !== 'undefined') {\n return new Blob([data], { type: contentType, });\n }\n throw new Error('The \"Blob\" constructor is not supported.');\n};\n\nvar createObjectURL = (function createObjectURLClosure() {\n // Blob/createObjectURL is not available, falling back to data schema.\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n return function createObjectURL(data, contentType, forceDataSchema = false) {\n if (!forceDataSchema && URL.createObjectURL) {\n var blob = createBlob(data, contentType);\n return URL.createObjectURL(blob);\n }\n\n var buffer = 'data:' + contentType + ';base64,';\n for (var i = 0, ii = data.length; i < ii; i += 3) {\n var b1 = data[i] & 0xFF;\n var b2 = data[i + 1] & 0xFF;\n var b3 = data[i + 2] & 0xFF;\n var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n})();\n\nfunction resolveCall(fn, args, thisArg = null) {\n if (!fn) {\n return Promise.resolve(undefined);\n }\n return new Promise((resolve, reject) => {\n resolve(fn.apply(thisArg, args));\n });\n}\n\nfunction wrapReason(reason) {\n if (typeof reason !== 'object') {\n return reason;\n }\n switch (reason.name) {\n case 'AbortException':\n return new AbortException(reason.message);\n case 'MissingPDFException':\n return new MissingPDFException(reason.message);\n case 'UnexpectedResponseException':\n return new UnexpectedResponseException(reason.message, reason.status);\n default:\n return new UnknownErrorException(reason.message, reason.details);\n }\n}\n\nfunction resolveOrReject(capability, success, reason) {\n if (success) {\n capability.resolve();\n } else {\n capability.reject(reason);\n }\n}\n\nfunction finalize(promise) {\n return Promise.resolve(promise).catch(() => {});\n}\n\nfunction MessageHandler(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.postMessageTransfers = true;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n let callbacksCapabilities = this.callbacksCapabilities = Object.create(null);\n let ah = this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = (event) => {\n let data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n } else if (data.isReply) {\n let callbackId = data.callbackId;\n if (data.callbackId in callbacksCapabilities) {\n let callback = callbacksCapabilities[callbackId];\n delete callbacksCapabilities[callbackId];\n if ('error' in data) {\n callback.reject(wrapReason(data.error));\n } else {\n callback.resolve(data.data);\n }\n } else {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n } else if (data.action in ah) {\n let action = ah[data.action];\n if (data.callbackId) {\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n Promise.resolve().then(function () {\n return action[0].call(action[1], data.data);\n }).then((result) => {\n comObj.postMessage({\n sourceName,\n targetName,\n isReply: true,\n callbackId: data.callbackId,\n data: result,\n });\n }, (reason) => {\n if (reason instanceof Error) {\n // Serialize error to avoid \"DataCloneError\"\n reason = reason + '';\n }\n comObj.postMessage({\n sourceName,\n targetName,\n isReply: true,\n callbackId: data.callbackId,\n error: reason,\n });\n });\n } else if (data.streamId) {\n this._createStreamSink(data);\n } else {\n action[0].call(action[1], data.data);\n }\n } else {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n };\n comObj.addEventListener('message', this._onComObjOnMessage);\n}\n\nMessageHandler.prototype = {\n on(actionName, handler, scope) {\n var ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = [handler, scope];\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers\n */\n send(actionName, data, transfers) {\n var message = {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n };\n this.postMessage(message, transfers);\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n var callbackId = this.callbackId++;\n var message = {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n callbackId,\n };\n var capability = createPromiseCapability();\n this.callbacksCapabilities[callbackId] = capability;\n try {\n this.postMessage(message, transfers);\n } catch (e) {\n capability.reject(e);\n }\n return capability.promise;\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n * @return {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n let streamId = this.streamId++;\n let sourceName = this.sourceName;\n let targetName = this.targetName;\n\n return new ReadableStream({\n start: (controller) => {\n let startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n isClosed: false,\n };\n this.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n });\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: (controller) => {\n let pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n this.postMessage({\n sourceName,\n targetName,\n stream: 'pull',\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: (reason) => {\n let cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n this.postMessage({\n sourceName,\n targetName,\n stream: 'cancel',\n reason,\n streamId,\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n }, queueingStrategy);\n },\n\n _createStreamSink(data) {\n let self = this;\n let action = this.actionHandler[data.action];\n let streamId = data.streamId;\n let desiredSize = data.desiredSize;\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n let capability = createPromiseCapability();\n\n let sendStreamRequest = ({ stream, chunk, transfers,\n success, reason, }) => {\n this.postMessage({ sourceName, targetName, stream, streamId,\n chunk, success, reason, }, transfers);\n };\n\n let streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n let lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n sendStreamRequest({ stream: 'enqueue', chunk, transfers, });\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n sendStreamRequest({ stream: 'close', });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n sendStreamRequest({ stream: 'error', reason, });\n },\n\n sinkCapability: capability,\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n resolveCall(action[0], [data.data, streamSink], action[1]).then(() => {\n sendStreamRequest({ stream: 'start_complete', success: true, });\n }, (reason) => {\n sendStreamRequest({ stream: 'start_complete', success: false, reason, });\n });\n },\n\n _processStreamMessage(data) {\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n let streamId = data.streamId;\n\n let sendStreamResponse = ({ stream, success, reason, }) => {\n this.comObj.postMessage({ sourceName, targetName, stream,\n success, streamId, reason, });\n };\n\n let deleteStreamController = () => {\n // Delete streamController only when start, pull and\n // cancel callbacks are resolved, to avoid \"TypeError\".\n Promise.all([\n this.streamControllers[data.streamId].startCall,\n this.streamControllers[data.streamId].pullCall,\n this.streamControllers[data.streamId].cancelCall\n ].map(function(capability) {\n return capability && finalize(capability.promise);\n })).then(() => {\n delete this.streamControllers[data.streamId];\n });\n };\n\n switch (data.stream) {\n case 'start_complete':\n resolveOrReject(this.streamControllers[data.streamId].startCall,\n data.success, wrapReason(data.reason));\n break;\n case 'pull_complete':\n resolveOrReject(this.streamControllers[data.streamId].pullCall,\n data.success, wrapReason(data.reason));\n break;\n case 'pull':\n // Ignore any pull after close is called.\n if (!this.streamSinks[data.streamId]) {\n sendStreamResponse({ stream: 'pull_complete', success: true, });\n break;\n }\n // Pull increases the desiredSize property of sink,\n // so when it changes from negative to positive,\n // set ready property as resolved promise.\n if (this.streamSinks[data.streamId].desiredSize <= 0 &&\n data.desiredSize > 0) {\n this.streamSinks[data.streamId].sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n this.streamSinks[data.streamId].desiredSize = data.desiredSize;\n resolveCall(this.streamSinks[data.streamId].onPull).then(() => {\n sendStreamResponse({ stream: 'pull_complete', success: true, });\n }, (reason) => {\n sendStreamResponse({ stream: 'pull_complete',\n success: false, reason, });\n });\n break;\n case 'enqueue':\n assert(this.streamControllers[data.streamId],\n 'enqueue should have stream controller');\n if (!this.streamControllers[data.streamId].isClosed) {\n this.streamControllers[data.streamId].controller.enqueue(data.chunk);\n }\n break;\n case 'close':\n assert(this.streamControllers[data.streamId],\n 'close should have stream controller');\n if (this.streamControllers[data.streamId].isClosed) {\n break;\n }\n this.streamControllers[data.streamId].isClosed = true;\n this.streamControllers[data.streamId].controller.close();\n deleteStreamController();\n break;\n case 'error':\n assert(this.streamControllers[data.streamId],\n 'error should have stream controller');\n this.streamControllers[data.streamId].controller.\n error(wrapReason(data.reason));\n deleteStreamController();\n break;\n case 'cancel_complete':\n resolveOrReject(this.streamControllers[data.streamId].cancelCall,\n data.success, wrapReason(data.reason));\n deleteStreamController();\n break;\n case 'cancel':\n if (!this.streamSinks[data.streamId]) {\n break;\n }\n resolveCall(this.streamSinks[data.streamId].onCancel,\n [wrapReason(data.reason)]).then(() => {\n sendStreamResponse({ stream: 'cancel_complete', success: true, });\n }, (reason) => {\n sendStreamResponse({ stream: 'cancel_complete',\n success: false, reason, });\n });\n this.streamSinks[data.streamId].sinkCapability.\n reject(wrapReason(data.reason));\n this.streamSinks[data.streamId].isCancelled = true;\n delete this.streamSinks[data.streamId];\n break;\n default:\n throw new Error('Unexpected stream case');\n }\n },\n\n /**\n * Sends raw message to the comObj.\n * @private\n * @param {Object} message - Raw message.\n * @param transfers List of transfers/ArrayBuffers, or undefined.\n */\n postMessage(message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n },\n\n destroy() {\n this.comObj.removeEventListener('message', this._onComObjOnMessage);\n },\n};\n\nfunction loadJpegStream(id, imageUrl, objs) {\n var img = new Image();\n img.onload = (function loadJpegStream_onloadClosure() {\n objs.resolve(id, img);\n });\n img.onerror = (function loadJpegStream_onerrorClosure() {\n objs.resolve(id, null);\n warn('Error during JPEG image loading');\n });\n img.src = imageUrl;\n}\n\nexport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n OPS,\n VERBOSITY_LEVELS,\n UNSUPPORTED_FEATURES,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationType,\n FontType,\n ImageKind,\n CMapCompressionType,\n AbortException,\n InvalidPDFException,\n MessageHandler,\n MissingDataException,\n MissingPDFException,\n NativeImageDecoding,\n NotImplementedException,\n PageViewport,\n PasswordException,\n PasswordResponses,\n StatTimer,\n StreamType,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n Util,\n XRefParseException,\n FormatError,\n arrayByteLength,\n arraysToBytes,\n assert,\n bytesToString,\n createBlob,\n createPromiseCapability,\n createObjectURL,\n deprecated,\n getLookupTableFactory,\n getVerbosityLevel,\n globalScope,\n info,\n isArray,\n isArrayBuffer,\n isBool,\n isEmptyObj,\n isInt,\n isNum,\n isString,\n isSpace,\n isNodeJS,\n isSameOrigin,\n createValidAbsoluteUrl,\n isLittleEndian,\n isEvalSupported,\n loadJpegStream,\n log2,\n readInt8,\n readUint16,\n readUint32,\n removeNullCharacters,\n ReadableStream,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n utf8StringToString,\n warn,\n unreachable,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/shared/util.js","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CMapCompressionType, createValidAbsoluteUrl, deprecated, globalScope,\n removeNullCharacters, stringToBytes, warn\n} from '../shared/util';\n\nvar DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\n\nclass DOMCanvasFactory {\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error('invalid canvas size');\n }\n let canvas = document.createElement('canvas');\n let context = canvas.getContext('2d');\n canvas.width = width;\n canvas.height = height;\n return {\n canvas,\n context,\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error('canvas is not specified');\n }\n if (width <= 0 || height <= 0) {\n throw new Error('invalid canvas size');\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error('canvas is not specified');\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n}\n\nclass DOMCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false, }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n fetch({ name, }) {\n if (!name) {\n return Promise.reject(new Error('CMap name must be specified.'));\n }\n return new Promise((resolve, reject) => {\n let url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');\n\n let request = new XMLHttpRequest();\n request.open('GET', url, true);\n\n if (this.isCompressed) {\n request.responseType = 'arraybuffer';\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (this.isCompressed && request.response) {\n data = new Uint8Array(request.response);\n } else if (!this.isCompressed && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve({\n cMapData: data,\n compressionType: this.isCompressed ?\n CMapCompressionType.BINARY : CMapCompressionType.NONE,\n });\n return;\n }\n }\n reject(new Error('Unable to load ' +\n (this.isCompressed ? 'binary ' : '') +\n 'CMap at: ' + url));\n };\n\n request.send(null);\n });\n }\n}\n\n/**\n * Optimised CSS custom property getter/setter.\n * @class\n */\nvar CustomStyle = (function CustomStyleClosure() {\n\n // As noted on: http://www.zachstronaut.com/posts/2009/02/17/\n // animate-css-transforms-firefox-webkit.html\n // in some versions of IE9 it is critical that ms appear in this list\n // before Moz\n var prefixes = ['ms', 'Moz', 'Webkit', 'O'];\n var _cache = Object.create(null);\n\n function CustomStyle() {}\n\n CustomStyle.getProp = function get(propName, element) {\n // check cache only when no element is given\n if (arguments.length === 1 && typeof _cache[propName] === 'string') {\n return _cache[propName];\n }\n\n element = element || document.documentElement;\n var style = element.style, prefixed, uPropName;\n\n // test standard property first\n if (typeof style[propName] === 'string') {\n return (_cache[propName] = propName);\n }\n\n // capitalize\n uPropName = propName.charAt(0).toUpperCase() + propName.slice(1);\n\n // test vendor specific properties\n for (var i = 0, l = prefixes.length; i < l; i++) {\n prefixed = prefixes[i] + uPropName;\n if (typeof style[prefixed] === 'string') {\n return (_cache[propName] = prefixed);\n }\n }\n\n // If all fails then set to undefined.\n return (_cache[propName] = 'undefined');\n };\n\n CustomStyle.setProp = function set(propName, element, str) {\n var prop = this.getProp(propName);\n if (prop !== 'undefined') {\n element.style[prop] = str;\n }\n };\n\n return CustomStyle;\n})();\n\nvar RenderingCancelledException = (function RenderingCancelledException() {\n function RenderingCancelledException(msg, type) {\n this.message = msg;\n this.type = type;\n }\n\n RenderingCancelledException.prototype = new Error();\n RenderingCancelledException.prototype.name = 'RenderingCancelledException';\n RenderingCancelledException.constructor = RenderingCancelledException;\n\n return RenderingCancelledException;\n})();\n\nvar LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\nvar LinkTargetStringMap = [\n '',\n '_self',\n '_blank',\n '_parent',\n '_top'\n];\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} target - The link target.\n * @property {string} rel - The link relationship.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLLinkElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, params) {\n var url = params && params.url;\n link.href = link.title = (url ? removeNullCharacters(url) : '');\n\n if (url) {\n var target = params.target;\n if (typeof target === 'undefined') {\n target = getDefaultSetting('externalLinkTarget');\n }\n link.target = LinkTargetStringMap[target];\n\n var rel = params.rel;\n if (typeof rel === 'undefined') {\n rel = getDefaultSetting('externalLinkRel');\n }\n link.rel = rel;\n }\n}\n\n// Gets the file name from a given URL.\nfunction getFilenameFromUrl(url) {\n var anchor = url.indexOf('#');\n var query = url.indexOf('?');\n var end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length);\n return url.substring(url.lastIndexOf('/', end) + 1, end);\n}\n\nfunction getDefaultSetting(id) {\n // The list of the settings and their default is maintained for backward\n // compatibility and shall not be extended or modified. See also global.js.\n var globalSettings = globalScope.PDFJS;\n switch (id) {\n case 'pdfBug':\n return globalSettings ? globalSettings.pdfBug : false;\n case 'disableAutoFetch':\n return globalSettings ? globalSettings.disableAutoFetch : false;\n case 'disableStream':\n return globalSettings ? globalSettings.disableStream : false;\n case 'disableRange':\n return globalSettings ? globalSettings.disableRange : false;\n case 'disableFontFace':\n return globalSettings ? globalSettings.disableFontFace : false;\n case 'disableCreateObjectURL':\n return globalSettings ? globalSettings.disableCreateObjectURL : false;\n case 'disableWebGL':\n return globalSettings ? globalSettings.disableWebGL : true;\n case 'cMapUrl':\n return globalSettings ? globalSettings.cMapUrl : null;\n case 'cMapPacked':\n return globalSettings ? globalSettings.cMapPacked : false;\n case 'postMessageTransfers':\n return globalSettings ? globalSettings.postMessageTransfers : true;\n case 'workerPort':\n return globalSettings ? globalSettings.workerPort : null;\n case 'workerSrc':\n return globalSettings ? globalSettings.workerSrc : null;\n case 'disableWorker':\n return globalSettings ? globalSettings.disableWorker : false;\n case 'maxImageSize':\n return globalSettings ? globalSettings.maxImageSize : -1;\n case 'imageResourcesPath':\n return globalSettings ? globalSettings.imageResourcesPath : '';\n case 'isEvalSupported':\n return globalSettings ? globalSettings.isEvalSupported : true;\n case 'externalLinkTarget':\n if (!globalSettings) {\n return LinkTarget.NONE;\n }\n switch (globalSettings.externalLinkTarget) {\n case LinkTarget.NONE:\n case LinkTarget.SELF:\n case LinkTarget.BLANK:\n case LinkTarget.PARENT:\n case LinkTarget.TOP:\n return globalSettings.externalLinkTarget;\n }\n warn('PDFJS.externalLinkTarget is invalid: ' +\n globalSettings.externalLinkTarget);\n // Reset the external link target, to suppress further warnings.\n globalSettings.externalLinkTarget = LinkTarget.NONE;\n return LinkTarget.NONE;\n case 'externalLinkRel':\n return globalSettings ? globalSettings.externalLinkRel : DEFAULT_LINK_REL;\n case 'enableStats':\n return !!(globalSettings && globalSettings.enableStats);\n case 'pdfjsNext':\n return !!(globalSettings && globalSettings.pdfjsNext);\n default:\n throw new Error('Unknown default setting: ' + id);\n }\n}\n\nfunction isExternalLinkTargetSet() {\n var externalLinkTarget = getDefaultSetting('externalLinkTarget');\n switch (externalLinkTarget) {\n case LinkTarget.NONE:\n return false;\n case LinkTarget.SELF:\n case LinkTarget.BLANK:\n case LinkTarget.PARENT:\n case LinkTarget.TOP:\n return true;\n }\n}\n\nfunction isValidUrl(url, allowRelative) {\n deprecated('isValidUrl(), please use createValidAbsoluteUrl() instead.');\n var baseUrl = allowRelative ? 'http://example.com' : null;\n return createValidAbsoluteUrl(url, baseUrl) !== null;\n}\n\nexport {\n CustomStyle,\n RenderingCancelledException,\n addLinkAttributes,\n isExternalLinkTargetSet,\n isValidUrl,\n getFilenameFromUrl,\n LinkTarget,\n getDefaultSetting,\n DEFAULT_LINK_REL,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/dom_utils.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals requirejs, __non_webpack_require__ */\n\nimport {\n assert, createPromiseCapability, deprecated, getVerbosityLevel, globalScope,\n info, InvalidPDFException, isArray, isArrayBuffer, isInt, isSameOrigin,\n loadJpegStream, MessageHandler, MissingPDFException, NativeImageDecoding,\n PageViewport, PasswordException, StatTimer, stringToBytes,\n UnexpectedResponseException, UnknownErrorException, Util, warn\n} from '../shared/util';\nimport {\n DOMCanvasFactory, DOMCMapReaderFactory, getDefaultSetting,\n RenderingCancelledException\n} from './dom_utils';\nimport { FontFaceObject, FontLoader } from './font_loader';\nimport { CanvasGraphics } from './canvas';\nimport { Metadata } from './metadata';\nimport { PDFDataTransportStream } from './transport_stream';\n\nvar DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\n\nvar isWorkerDisabled = false;\nvar workerSrc;\nvar isPostMessageTransfersDisabled = false;\n\nvar pdfjsFilePath =\n typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('PRODUCTION && !(MOZCENTRAL || FIREFOX)') &&\n typeof document !== 'undefined' && document.currentScript ?\n document.currentScript.src : null;\n\nvar fakeWorkerFilesLoader = null;\nvar useRequireEnsure = false;\nif (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('GENERIC && !SINGLE_FILE')) {\n // For GENERIC build we need add support of different fake file loaders\n // for different frameworks.\n if (typeof window === 'undefined') {\n // node.js - disable worker and set require.ensure.\n isWorkerDisabled = true;\n if (typeof __non_webpack_require__.ensure === 'undefined') {\n __non_webpack_require__.ensure = __non_webpack_require__('node-ensure');\n }\n useRequireEnsure = true;\n } else if (typeof __non_webpack_require__ !== 'undefined' &&\n typeof __non_webpack_require__.ensure === 'function') {\n useRequireEnsure = true;\n }\n if (typeof requirejs !== 'undefined' && requirejs.toUrl) {\n workerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');\n }\n var dynamicLoaderSupported =\n typeof requirejs !== 'undefined' && requirejs.load;\n fakeWorkerFilesLoader = useRequireEnsure ? (function (callback) {\n __non_webpack_require__.ensure([], function () {\n var worker;\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('LIB')) {\n worker = __non_webpack_require__('../pdf.worker.js');\n } else {\n worker = __non_webpack_require__('./pdf.worker.js');\n }\n callback(worker.WorkerMessageHandler);\n });\n }) : dynamicLoaderSupported ? (function (callback) {\n requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {\n callback(worker.WorkerMessageHandler);\n });\n }) : null;\n}\n\n/** @type IPDFStream */\nvar PDFNetworkStream;\n\n/**\n * Sets PDFNetworkStream class to be used as alternative PDF data transport.\n * @param {IPDFStream} cls - the PDF data transport.\n */\nfunction setPDFNetworkStreamClass(cls) {\n PDFNetworkStream = cls;\n}\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string} url - The URL of the PDF.\n * @property {TypedArray|Array|string} data - Binary PDF data. Use typed arrays\n * (Uint8Array) to improve the memory usage. If PDF data is BASE64-encoded,\n * use atob() to convert it to a binary string first.\n * @property {Object} httpHeaders - Basic authentication headers.\n * @property {boolean} withCredentials - Indicates whether or not cross-site\n * Access-Control requests should be made using credentials such as cookies\n * or authorization headers. The default is false.\n * @property {string} password - For decrypting password-protected PDFs.\n * @property {TypedArray} initialData - A typed array with the first portion or\n * all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} length - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} range\n * @property {number} rangeChunkSize - Optional parameter to specify\n * maximum number of bytes fetched per range request. The default value is\n * 2^16 = 65536.\n * @property {PDFWorker} worker - The worker that will be used for the loading\n * and parsing of the PDF data.\n * @property {string} docBaseUrl - (optional) The base URL of the document,\n * used when attempting to recover valid absolute URLs for annotations, and\n * outline items, that (incorrectly) only specify relative URLs.\n * @property {boolean} disableNativeImageDecoder - (deprecated) Disable decoding\n * of certain (simple) JPEG images in the browser. This is useful for\n * environments without DOM image support, such as e.g. Node.js.\n * The default value is `false`.\n * @property {string} nativeImageDecoderSupport - (optional) Strategy for\n * decoding certain (simple) JPEG images in the browser. This is useful for\n * environments without DOM image and canvas support, such as e.g. Node.js.\n * Valid values are 'decode', 'display' or 'none'; where 'decode' is intended\n * for browsers with full image/canvas support, 'display' for environments\n * with limited image support through stubs (useful for SVG conversion),\n * and 'none' where JPEG images will be decoded entirely by PDF.js.\n * The default value is 'decode'.\n * @property {Object} CMapReaderFactory - (optional) The factory that will be\n * used when reading built-in CMap files. Providing a custom factory is useful\n * for environments without `XMLHttpRequest` support, such as e.g. Node.js.\n * The default value is {DOMCMapReaderFactory}.\n * @property {boolean} stopAtErrors - (optional) Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n */\n\n/**\n * @typedef {Object} PDFDocumentStats\n * @property {Array} streamTypes - Used stream types in the document (an item\n * is set to true if specific stream ID was used in the document).\n * @property {Array} fontTypes - Used font type in the document (an item is set\n * to true if specific font ID was used in the document).\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR)\n * is used, which means it must follow the same origin rules that any XHR does\n * e.g. No cross domain requests without CORS.\n *\n * @param {string|TypedArray|DocumentInitParameters|PDFDataRangeTransport} src\n * Can be a url to where a PDF is located, a typed array (Uint8Array)\n * already populated with data or parameter object.\n *\n * @param {PDFDataRangeTransport} pdfDataRangeTransport (deprecated) It is used\n * if you want to manually serve range requests for data in the PDF.\n *\n * @param {function} passwordCallback (deprecated) It is used to request a\n * password if wrong or no password was provided. The callback receives two\n * parameters: function that needs to be called with new password and reason\n * (see {PasswordResponses}).\n *\n * @param {function} progressCallback (deprecated) It is used to be able to\n * monitor the loading progress of the PDF file (necessary to implement e.g.\n * a loading bar). The callback receives an {Object} with the properties:\n * {number} loaded and {number} total.\n *\n * @return {PDFDocumentLoadingTask}\n */\nfunction getDocument(src, pdfDataRangeTransport,\n passwordCallback, progressCallback) {\n var task = new PDFDocumentLoadingTask();\n\n // Support of the obsolete arguments (for compatibility with API v1.0)\n if (arguments.length > 1) {\n deprecated('getDocument is called with pdfDataRangeTransport, ' +\n 'passwordCallback or progressCallback argument');\n }\n if (pdfDataRangeTransport) {\n if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) {\n // Not a PDFDataRangeTransport instance, trying to add missing properties.\n pdfDataRangeTransport = Object.create(pdfDataRangeTransport);\n pdfDataRangeTransport.length = src.length;\n pdfDataRangeTransport.initialData = src.initialData;\n if (!pdfDataRangeTransport.abort) {\n pdfDataRangeTransport.abort = function () {};\n }\n }\n src = Object.create(src);\n src.range = pdfDataRangeTransport;\n }\n task.onPassword = passwordCallback || null;\n task.onProgress = progressCallback || null;\n\n var source;\n if (typeof src === 'string') {\n source = { url: src, };\n } else if (isArrayBuffer(src)) {\n source = { data: src, };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src, };\n } else {\n if (typeof src !== 'object') {\n throw new Error('Invalid parameter in getDocument, ' +\n 'need either Uint8Array, string or a parameter object');\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n 'Invalid parameter object: need either .data, .range or .url');\n }\n\n source = src;\n }\n\n var params = {};\n var rangeTransport = null;\n var worker = null;\n var CMapReaderFactory = DOMCMapReaderFactory;\n\n for (var key in source) {\n if (key === 'url' && typeof window !== 'undefined') {\n // The full path is required in the 'url' field.\n params[key] = new URL(source[key], window.location).href;\n continue;\n } else if (key === 'range') {\n rangeTransport = source[key];\n continue;\n } else if (key === 'worker') {\n worker = source[key];\n continue;\n } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {\n // Converting string or array-like data to Uint8Array.\n var pdfBytes = source[key];\n if (typeof pdfBytes === 'string') {\n params[key] = stringToBytes(pdfBytes);\n } else if (typeof pdfBytes === 'object' && pdfBytes !== null &&\n !isNaN(pdfBytes.length)) {\n params[key] = new Uint8Array(pdfBytes);\n } else if (isArrayBuffer(pdfBytes)) {\n params[key] = new Uint8Array(pdfBytes);\n } else {\n throw new Error('Invalid PDF binary data: either typed array, ' +\n 'string or array-like object is expected in the ' +\n 'data property.');\n }\n continue;\n } else if (key === 'CMapReaderFactory') {\n CMapReaderFactory = source[key];\n continue;\n }\n params[key] = source[key];\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.ignoreErrors = params.stopAtErrors !== true;\n\n if (params.disableNativeImageDecoder !== undefined) {\n deprecated('parameter disableNativeImageDecoder, ' +\n 'use nativeImageDecoderSupport instead');\n }\n params.nativeImageDecoderSupport = params.nativeImageDecoderSupport ||\n (params.disableNativeImageDecoder === true ? NativeImageDecoding.NONE :\n NativeImageDecoding.DECODE);\n if (params.nativeImageDecoderSupport !== NativeImageDecoding.DECODE &&\n params.nativeImageDecoderSupport !== NativeImageDecoding.NONE &&\n params.nativeImageDecoderSupport !== NativeImageDecoding.DISPLAY) {\n warn('Invalid parameter nativeImageDecoderSupport: ' +\n 'need a state of enum {NativeImageDecoding}');\n params.nativeImageDecoderSupport = NativeImageDecoding.DECODE;\n }\n\n if (!worker) {\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global settings, using it.\n var workerPort = getDefaultSetting('workerPort');\n worker = workerPort ? PDFWorker.fromPort(workerPort) : new PDFWorker();\n task._worker = worker;\n }\n var docId = task.docId;\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error('Loading aborted');\n }\n return _fetchDocument(worker, params, rangeTransport, docId).then(\n function (workerId) {\n if (task.destroyed) {\n throw new Error('Loading aborted');\n }\n\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(params, rangeTransport);\n } else if (!params.data) {\n networkStream = new PDFNetworkStream({\n source: params,\n disableRange: getDefaultSetting('disableRange'),\n });\n }\n\n var messageHandler = new MessageHandler(docId, workerId, worker.port);\n messageHandler.postMessageTransfers = worker.postMessageTransfers;\n var transport = new WorkerTransport(messageHandler, task, networkStream,\n CMapReaderFactory);\n task._transport = transport;\n messageHandler.send('Ready', null);\n });\n }).catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId Unique document id, used as MessageHandler id.\n * @returns {Promise} The promise, which is resolved when worker id of\n * MessageHandler is known.\n * @private\n */\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n\n source.disableAutoFetch = getDefaultSetting('disableAutoFetch');\n source.disableStream = getDefaultSetting('disableStream');\n source.chunkedViewerLoading = !!pdfDataRangeTransport;\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n }\n return worker.messageHandler.sendWithPromise('GetDocRequest', {\n docId,\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: getDefaultSetting('maxImageSize'),\n disableFontFace: getDefaultSetting('disableFontFace'),\n disableCreateObjectURL: getDefaultSetting('disableCreateObjectURL'),\n postMessageTransfers: getDefaultSetting('postMessageTransfers') &&\n !isPostMessageTransfersDisabled,\n docBaseUrl: source.docBaseUrl,\n nativeImageDecoderSupport: source.nativeImageDecoderSupport,\n ignoreErrors: source.ignoreErrors,\n }).then(function (workerId) {\n if (worker.destroyed) {\n throw new Error('Worker was destroyed');\n }\n return workerId;\n });\n}\n\n/**\n * PDF document loading operation.\n * @class\n * @alias PDFDocumentLoadingTask\n */\nvar PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {\n var nextDocumentId = 0;\n\n /** @constructs PDFDocumentLoadingTask */\n function PDFDocumentLoadingTask() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique document loading task id -- used in MessageHandlers.\n * @type {string}\n */\n this.docId = 'd' + (nextDocumentId++);\n\n /**\n * Shows if loading task is destroyed.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if wrong or no password was provided.\n * The callback receives two parameters: function that needs to be called\n * with new password and reason (see {PasswordResponses}).\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar). The callback receives\n * an {Object} with the properties: {number} loaded and {number} total.\n */\n this.onProgress = null;\n\n /**\n * Callback to when unsupported feature is used. The callback receives\n * an {UNSUPPORTED_FEATURES} argument.\n */\n this.onUnsupportedFeature = null;\n }\n\n PDFDocumentLoadingTask.prototype =\n /** @lends PDFDocumentLoadingTask.prototype */ {\n /**\n * @return {Promise}\n */\n get promise() {\n return this._capability.promise;\n },\n\n /**\n * Aborts all network requests and destroys worker.\n * @return {Promise} A promise that is resolved after destruction activity\n * is completed.\n */\n destroy() {\n this.destroyed = true;\n\n var transportDestroyed = !this._transport ? Promise.resolve() :\n this._transport.destroy();\n return transportDestroyed.then(() => {\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n });\n },\n\n /**\n * Registers callbacks to indicate the document loading completion.\n *\n * @param {function} onFulfilled The callback for the loading completion.\n * @param {function} onRejected The callback for the loading failure.\n * @return {Promise} A promise that is resolved after the onFulfilled or\n * onRejected callback.\n */\n then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {\n return this.promise.then.apply(this.promise, arguments);\n },\n };\n\n return PDFDocumentLoadingTask;\n})();\n\n/**\n * Abstract class to support range requests file loading.\n * @class\n * @alias PDFDataRangeTransport\n * @param {number} length\n * @param {Uint8Array} initialData\n */\nvar PDFDataRangeTransport = (function pdfDataRangeTransportClosure() {\n function PDFDataRangeTransport(length, initialData) {\n this.length = length;\n this.initialData = initialData;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n PDFDataRangeTransport.prototype =\n /** @lends PDFDataRangeTransport.prototype */ {\n addRangeListener:\n function PDFDataRangeTransport_addRangeListener(listener) {\n this._rangeListeners.push(listener);\n },\n\n addProgressListener:\n function PDFDataRangeTransport_addProgressListener(listener) {\n this._progressListeners.push(listener);\n },\n\n addProgressiveReadListener:\n function PDFDataRangeTransport_addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n },\n\n onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) {\n var listeners = this._rangeListeners;\n for (var i = 0, n = listeners.length; i < n; ++i) {\n listeners[i](begin, chunk);\n }\n },\n\n onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) {\n this._readyCapability.promise.then(() => {\n var listeners = this._progressListeners;\n for (var i = 0, n = listeners.length; i < n; ++i) {\n listeners[i](loaded);\n }\n });\n },\n\n onDataProgressiveRead:\n function PDFDataRangeTransport_onDataProgress(chunk) {\n this._readyCapability.promise.then(() => {\n var listeners = this._progressiveReadListeners;\n for (var i = 0, n = listeners.length; i < n; ++i) {\n listeners[i](chunk);\n }\n });\n },\n\n transportReady: function PDFDataRangeTransport_transportReady() {\n this._readyCapability.resolve();\n },\n\n requestDataRange:\n function PDFDataRangeTransport_requestDataRange(begin, end) {\n throw new Error('Abstract method PDFDataRangeTransport.requestDataRange');\n },\n\n abort: function PDFDataRangeTransport_abort() {\n },\n };\n return PDFDataRangeTransport;\n})();\n\n/**\n * Proxy to a PDFDocument in the worker thread. Also, contains commonly used\n * properties that can be read synchronously.\n * @class\n * @alias PDFDocumentProxy\n */\nvar PDFDocumentProxy = (function PDFDocumentProxyClosure() {\n function PDFDocumentProxy(pdfInfo, transport, loadingTask) {\n this.pdfInfo = pdfInfo;\n this.transport = transport;\n this.loadingTask = loadingTask;\n }\n PDFDocumentProxy.prototype = /** @lends PDFDocumentProxy.prototype */ {\n /**\n * @return {number} Total number of pages the PDF contains.\n */\n get numPages() {\n return this.pdfInfo.numPages;\n },\n /**\n * @return {string} A unique ID to identify a PDF. Not guaranteed to be\n * unique.\n */\n get fingerprint() {\n return this.pdfInfo.fingerprint;\n },\n /**\n * @param {number} pageNumber The page number to get. The first page is 1.\n * @return {Promise} A promise that is resolved with a {@link PDFPageProxy}\n * object.\n */\n getPage: function PDFDocumentProxy_getPage(pageNumber) {\n return this.transport.getPage(pageNumber);\n },\n /**\n * @param {{num: number, gen: number}} ref The page reference. Must have\n * the 'num' and 'gen' properties.\n * @return {Promise} A promise that is resolved with the page index that is\n * associated with the reference.\n */\n getPageIndex: function PDFDocumentProxy_getPageIndex(ref) {\n return this.transport.getPageIndex(ref);\n },\n /**\n * @return {Promise} A promise that is resolved with a lookup table for\n * mapping named destinations to reference numbers.\n *\n * This can be slow for large documents: use getDestination instead\n */\n getDestinations: function PDFDocumentProxy_getDestinations() {\n return this.transport.getDestinations();\n },\n /**\n * @param {string} id The named destination to get.\n * @return {Promise} A promise that is resolved with all information\n * of the given named destination.\n */\n getDestination: function PDFDocumentProxy_getDestination(id) {\n return this.transport.getDestination(id);\n },\n /**\n * @return {Promise} A promise that is resolved with:\n * an Array containing the pageLabels that correspond to the pageIndexes,\n * or `null` when no pageLabels are present in the PDF file.\n */\n getPageLabels: function PDFDocumentProxy_getPageLabels() {\n return this.transport.getPageLabels();\n },\n /**\n * @return {Promise} A promise that is resolved with a {string} containing\n * the PageMode name.\n */\n getPageMode() {\n return this.transport.getPageMode();\n },\n /**\n * @return {Promise} A promise that is resolved with a lookup table for\n * mapping named attachments to their content.\n */\n getAttachments: function PDFDocumentProxy_getAttachments() {\n return this.transport.getAttachments();\n },\n /**\n * @return {Promise} A promise that is resolved with an array of all the\n * JavaScript strings in the name tree.\n */\n getJavaScript: function PDFDocumentProxy_getJavaScript() {\n return this.transport.getJavaScript();\n },\n /**\n * @return {Promise} A promise that is resolved with an {Array} that is a\n * tree outline (if it has one) of the PDF. The tree is in the format of:\n * [\n * {\n * title: string,\n * bold: boolean,\n * italic: boolean,\n * color: rgb Uint8Array,\n * dest: dest obj,\n * url: string,\n * items: array of more items like this\n * },\n * ...\n * ].\n */\n getOutline: function PDFDocumentProxy_getOutline() {\n return this.transport.getOutline();\n },\n /**\n * @return {Promise} A promise that is resolved with an {Object} that has\n * info and metadata properties. Info is an {Object} filled with anything\n * available in the information dictionary and similarly metadata is a\n * {Metadata} object with information from the metadata section of the PDF.\n */\n getMetadata: function PDFDocumentProxy_getMetadata() {\n return this.transport.getMetadata();\n },\n /**\n * @return {Promise} A promise that is resolved with a TypedArray that has\n * the raw data from the PDF.\n */\n getData: function PDFDocumentProxy_getData() {\n return this.transport.getData();\n },\n /**\n * @return {Promise} A promise that is resolved when the document's data\n * is loaded. It is resolved with an {Object} that contains the length\n * property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() {\n return this.transport.downloadInfoCapability.promise;\n },\n /**\n * @return {Promise} A promise this is resolved with current stats about\n * document structures (see {@link PDFDocumentStats}).\n */\n getStats: function PDFDocumentProxy_getStats() {\n return this.transport.getStats();\n },\n /**\n * Cleans up resources allocated by the document, e.g. created @font-face.\n */\n cleanup: function PDFDocumentProxy_cleanup() {\n this.transport.startCleanup();\n },\n /**\n * Destroys current document instance and terminates worker.\n */\n destroy: function PDFDocumentProxy_destroy() {\n return this.loadingTask.destroy();\n },\n };\n return PDFDocumentProxy;\n})();\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} normalizeWhitespace - replaces all occurrences of\n * whitespace with standard spaces (0x20). The default value is `false`.\n * @property {boolean} disableCombineTextItems - do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {array} items - array of {@link TextItem}\n * @property {Object} styles - {@link TextStyles} objects, indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - text content.\n * @property {string} dir - text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {array} transform - transformation matrix.\n * @property {number} width - width in device space.\n * @property {number} height - height in device space.\n * @property {string} fontName - font name used by pdf.js for converted font.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - font ascent.\n * @property {number} descent - font descent.\n * @property {boolean} vertical - text is in vertical mode.\n * @property {string} fontFamily - possible font family\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} intent - Determines the annotations that will be fetched,\n * can be either 'display' (viewable annotations) or 'print'\n * (printable annotations).\n * If the parameter is omitted, all annotations are fetched.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by\n * calling of PDFPage.getViewport method.\n * @property {string} intent - Rendering intent, can be 'display' or 'print'\n * (default value is 'display').\n * @property {boolean} renderInteractiveForms - (optional) Whether or not\n * interactive form elements are rendered in the display\n * layer. If so, we do not render them on canvas as well.\n * @property {Array} transform - (optional) Additional transform, applied\n * just before viewport transform.\n * @property {Object} imageLayer - (optional) An object that has beginLayout,\n * endLayout and appendImage functions.\n * @property {function} continueCallback - (deprecated) A function that will be\n * called each time the rendering is paused. To continue\n * rendering call the function that is the first argument\n * to the callback.\n * @property {Object} canvasFactory - (optional) The factory that will be used\n * when creating canvases. The default value is\n * {DOMCanvasFactory}.\n * @property {Object} background - (optional) Background to use for the canvas.\n * Can use any valid canvas.fillStyle: A DOMString parsed as\n * CSS value, a CanvasGradient object (a linear or\n * radial gradient) or a CanvasPattern object (a repetitive\n * image). The default value is 'rgb(255,255,255)'.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a PDFPage in the worker thread.\n * @class\n * @alias PDFPageProxy\n */\nvar PDFPageProxy = (function PDFPageProxyClosure() {\n function PDFPageProxy(pageIndex, pageInfo, transport) {\n this.pageIndex = pageIndex;\n this.pageInfo = pageInfo;\n this.transport = transport;\n this.stats = new StatTimer();\n this.stats.enabled = getDefaultSetting('enableStats');\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this.intentStates = Object.create(null);\n this.destroyed = false;\n }\n PDFPageProxy.prototype = /** @lends PDFPageProxy.prototype */ {\n /**\n * @return {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this.pageIndex + 1;\n },\n /**\n * @return {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this.pageInfo.rotate;\n },\n /**\n * @return {Object} The reference that points to this page. It has 'num' and\n * 'gen' properties.\n */\n get ref() {\n return this.pageInfo.ref;\n },\n /**\n * @return {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this.pageInfo.userUnit;\n },\n /**\n * @return {Array} An array of the visible portion of the PDF page in the\n * user space units - [x1, y1, x2, y2].\n */\n get view() {\n return this.pageInfo.view;\n },\n /**\n * @param {number} scale The desired scale of the viewport.\n * @param {number} rotate Degrees to rotate the viewport. If omitted this\n * defaults to the page rotation.\n * @return {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport: function PDFPageProxy_getViewport(scale, rotate) {\n if (arguments.length < 2) {\n rotate = this.rotate;\n }\n return new PageViewport(this.view, scale, rotate, 0, 0);\n },\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @return {Promise} A promise that is resolved with an {Array} of the\n * annotation objects.\n */\n getAnnotations: function PDFPageProxy_getAnnotations(params) {\n var intent = (params && params.intent) || null;\n\n if (!this.annotationsPromise || this.annotationsIntent !== intent) {\n this.annotationsPromise = this.transport.getAnnotations(this.pageIndex,\n intent);\n this.annotationsIntent = intent;\n }\n return this.annotationsPromise;\n },\n /**\n * Begins the process of rendering a page to the desired context.\n * @param {RenderParameters} params Page render parameters.\n * @return {RenderTask} An object that contains the promise, which\n * is resolved when the page finishes rendering.\n */\n render: function PDFPageProxy_render(params) {\n var stats = this.stats;\n stats.time('Overall');\n\n // If there was a pending destroy cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n var renderingIntent = (params.intent === 'print' ? 'print' : 'display');\n var canvasFactory = params.canvasFactory || new DOMCanvasFactory();\n\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n var intentState = this.intentStates[renderingIntent];\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.receivingOperatorList = true;\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n this.stats.time('Page Request');\n this.transport.messageHandler.send('RenderPageRequest', {\n pageIndex: this.pageNumber - 1,\n intent: renderingIntent,\n renderInteractiveForms: (params.renderInteractiveForms === true),\n });\n }\n\n var complete = (error) => {\n var i = intentState.renderTasks.indexOf(internalRenderTask);\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n\n if (this.cleanupAfterRender) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n } else {\n internalRenderTask.capability.resolve();\n }\n stats.timeEnd('Rendering');\n stats.timeEnd('Overall');\n };\n\n var internalRenderTask = new InternalRenderTask(complete, params,\n this.objs,\n this.commonObjs,\n intentState.operatorList,\n this.pageNumber,\n canvasFactory);\n internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';\n if (!intentState.renderTasks) {\n intentState.renderTasks = [];\n }\n intentState.renderTasks.push(internalRenderTask);\n var renderTask = internalRenderTask.task;\n\n // Obsolete parameter support\n if (params.continueCallback) {\n deprecated('render is used with continueCallback parameter');\n renderTask.onContinue = params.continueCallback;\n }\n\n intentState.displayReadyCapability.promise.then((transparency) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n stats.time('Rendering');\n internalRenderTask.initializeGraphics(transparency);\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n\n return renderTask;\n },\n\n /**\n * @return {Promise} A promise resolved with an {@link PDFOperatorList}\n * object that represents page's operator list.\n */\n getOperatorList: function PDFPageProxy_getOperatorList() {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n var i = intentState.renderTasks.indexOf(opListTask);\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n }\n }\n\n var renderingIntent = 'oplist';\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n var intentState = this.intentStates[renderingIntent];\n var opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = {};\n opListTask.operatorListChanged = operatorListChanged;\n intentState.receivingOperatorList = true;\n intentState.opListReadCapability = createPromiseCapability();\n intentState.renderTasks = [];\n intentState.renderTasks.push(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n this.transport.messageHandler.send('RenderPageRequest', {\n pageIndex: this.pageIndex,\n intent: renderingIntent,\n });\n }\n return intentState.opListReadCapability.promise;\n },\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @return {ReadableStream} ReadableStream to read textContent chunks.\n */\n streamTextContent(params = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this.transport.messageHandler.sendWithStream('GetTextContent', {\n pageIndex: this.pageNumber - 1,\n normalizeWhitespace: (params.normalizeWhitespace === true),\n combineTextItems: (params.disableCombineTextItems !== true),\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n });\n },\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @return {Promise} That is resolved a {@link TextContent}\n * object that represent the page text content.\n */\n getTextContent: function PDFPageProxy_getTextContent(params) {\n params = params || {};\n let readableStream = this.streamTextContent(params);\n\n return new Promise(function(resolve, reject) {\n function pump() {\n reader.read().then(function({ value, done, }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Util.extendObj(textContent.styles, value.styles);\n Util.appendToArray(textContent.items, value.items);\n pump();\n }, reject);\n }\n\n let reader = readableStream.getReader();\n let textContent = {\n items: [],\n styles: Object.create(null),\n };\n\n pump();\n });\n },\n\n /**\n * Destroys page object.\n */\n _destroy: function PDFPageProxy_destroy() {\n this.destroyed = true;\n this.transport.pageCache[this.pageIndex] = null;\n\n var waitOn = [];\n Object.keys(this.intentStates).forEach(function(intent) {\n if (intent === 'oplist') {\n // Avoid errors below, since the renderTasks are just stubs.\n return;\n }\n var intentState = this.intentStates[intent];\n intentState.renderTasks.forEach(function(renderTask) {\n var renderCompleted = renderTask.capability.promise.\n catch(function () {}); // ignoring failures\n waitOn.push(renderCompleted);\n renderTask.cancel();\n });\n }, this);\n this.objs.clear();\n this.annotationsPromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n },\n\n /**\n * Cleans up resources allocated by the page. (deprecated)\n */\n destroy() {\n deprecated('page destroy method, use cleanup() instead');\n this.cleanup();\n },\n\n /**\n * Cleans up resources allocated by the page.\n */\n cleanup: function PDFPageProxy_cleanup() {\n this.pendingCleanup = true;\n this._tryCleanup();\n },\n /**\n * For internal use only. Attempts to clean up if rendering is in a state\n * where that's possible.\n * @ignore\n */\n _tryCleanup: function PDFPageProxy_tryCleanup() {\n if (!this.pendingCleanup ||\n Object.keys(this.intentStates).some(function(intent) {\n var intentState = this.intentStates[intent];\n return (intentState.renderTasks.length !== 0 ||\n intentState.receivingOperatorList);\n }, this)) {\n return;\n }\n\n Object.keys(this.intentStates).forEach(function(intent) {\n delete this.intentStates[intent];\n }, this);\n this.objs.clear();\n this.annotationsPromise = null;\n this.pendingCleanup = false;\n },\n /**\n * For internal use only.\n * @ignore\n */\n _startRenderPage: function PDFPageProxy_startRenderPage(transparency,\n intent) {\n var intentState = this.intentStates[intent];\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n },\n /**\n * For internal use only.\n * @ignore\n */\n _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk,\n intent) {\n var intentState = this.intentStates[intent];\n var i, ii;\n // Add the new chunk to the current operator list.\n for (i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(\n operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n intentState.receivingOperatorList = false;\n this._tryCleanup();\n }\n },\n };\n return PDFPageProxy;\n})();\n\nclass LoopbackPort {\n constructor(defer) {\n this._listeners = [];\n this._defer = defer;\n this._deferred = Promise.resolve(undefined);\n }\n\n postMessage(obj, transfers) {\n function cloneValue(value) {\n // Trying to perform a structured clone close to the spec, including\n // transfers.\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n if (cloned.has(value)) { // already cloned the object\n return cloned.get(value);\n }\n var result;\n var buffer;\n if ((buffer = value.buffer) && isArrayBuffer(buffer)) {\n // We found object with ArrayBuffer (typed array).\n var transferable = transfers && transfers.indexOf(buffer) >= 0;\n if (value === buffer) {\n // Special case when we are faking typed arrays in compatibility.js.\n result = value;\n } else if (transferable) {\n result = new value.constructor(buffer, value.byteOffset,\n value.byteLength);\n } else {\n result = new value.constructor(value);\n }\n cloned.set(value, result);\n return result;\n }\n result = isArray(value) ? [] : {};\n cloned.set(value, result); // adding to cache now for cyclic references\n // Cloning all value and object properties, however ignoring properties\n // defined via getter.\n for (var i in value) {\n var desc, p = value;\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n if (typeof desc.value === 'undefined' ||\n typeof desc.value === 'function') {\n continue;\n }\n result[i] = cloneValue(desc.value);\n }\n return result;\n }\n\n if (!this._defer) {\n this._listeners.forEach(function (listener) {\n listener.call(this, { data: obj, });\n }, this);\n return;\n }\n\n var cloned = new WeakMap();\n var e = { data: cloneValue(obj), };\n this._deferred.then(() => {\n this._listeners.forEach(function (listener) {\n listener.call(this, e);\n }, this);\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n var i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners = [];\n }\n}\n\n/**\n * PDF.js web worker abstraction, it controls instantiation of PDF documents and\n * WorkerTransport for them. If creation of a web worker is not possible,\n * a \"fake\" worker will be used instead.\n * @class\n */\nvar PDFWorker = (function PDFWorkerClosure() {\n let nextFakeWorkerId = 0;\n\n function getWorkerSrc() {\n if (typeof workerSrc !== 'undefined') {\n return workerSrc;\n }\n if (getDefaultSetting('workerSrc')) {\n return getDefaultSetting('workerSrc');\n }\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('PRODUCTION && !(MOZCENTRAL || FIREFOX)') &&\n pdfjsFilePath) {\n return pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, '.worker$1$2');\n }\n throw new Error('No PDFJS.workerSrc specified');\n }\n\n let fakeWorkerFilesLoadedCapability;\n\n // Loads worker code into main thread.\n function setupFakeWorkerGlobal() {\n var WorkerMessageHandler;\n if (fakeWorkerFilesLoadedCapability) {\n return fakeWorkerFilesLoadedCapability.promise;\n }\n fakeWorkerFilesLoadedCapability = createPromiseCapability();\n // In the developer build load worker_loader which in turn loads all the\n // other files and resolves the promise. In production only the\n // pdf.worker.js file is needed.\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {\n if (typeof SystemJS === 'object') {\n SystemJS.import('pdfjs/core/worker').then((worker) => {\n WorkerMessageHandler = worker.WorkerMessageHandler;\n fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);\n });\n } else if (typeof require === 'function') {\n var worker = require('../core/worker.js');\n WorkerMessageHandler = worker.WorkerMessageHandler;\n fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);\n } else {\n throw new Error(\n 'SystemJS or CommonJS must be used to load fake worker.');\n }\n } else if (PDFJSDev.test('SINGLE_FILE')) {\n var pdfjsCoreWorker = require('../core/worker.js');\n WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;\n fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);\n } else {\n var loader = fakeWorkerFilesLoader || function (callback) {\n Util.loadScript(getWorkerSrc(), function () {\n callback(window.pdfjsDistBuildPdfWorker.WorkerMessageHandler);\n });\n };\n loader(fakeWorkerFilesLoadedCapability.resolve);\n }\n return fakeWorkerFilesLoadedCapability.promise;\n }\n\n function createCDNWrapper(url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n var wrapper = 'importScripts(\\'' + url + '\\');';\n return URL.createObjectURL(new Blob([wrapper]));\n }\n\n let pdfWorkerPorts = new WeakMap();\n\n function PDFWorker(name, port) {\n if (port && pdfWorkerPorts.has(port)) {\n throw new Error('Cannot use more than one PDFWorker per port');\n }\n\n this.name = name;\n this.destroyed = false;\n this.postMessageTransfers = true;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n pdfWorkerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n\n this._initialize();\n }\n\n PDFWorker.prototype = /** @lends PDFWorker.prototype */ {\n get promise() {\n return this._readyCapability.promise;\n },\n\n get port() {\n return this._port;\n },\n\n get messageHandler() {\n return this._messageHandler;\n },\n\n _initializeFromPort: function PDFWorker_initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler('main', 'worker', port);\n this._messageHandler.on('ready', function () {\n // Ignoring 'ready' event -- MessageHandler shall be already initialized\n // and ready to accept the messages.\n });\n this._readyCapability.resolve();\n },\n\n _initialize: function PDFWorker_initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if ((typeof PDFJSDev === 'undefined' || !PDFJSDev.test('SINGLE_FILE')) &&\n !isWorkerDisabled && !getDefaultSetting('disableWorker') &&\n typeof Worker !== 'undefined') {\n var workerSrc = getWorkerSrc();\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('GENERIC') &&\n !isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = createCDNWrapper(\n new URL(workerSrc, window.location).href);\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n var worker = new Worker(workerSrc);\n var messageHandler = new MessageHandler('main', 'worker', worker);\n var terminateEarly = () => {\n worker.removeEventListener('error', onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error('Worker was destroyed'));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n var onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener('error', onWorkerError);\n\n messageHandler.on('test', (data) => {\n worker.removeEventListener('error', onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n var supportTypedArray = data && data.supportTypedArray;\n if (supportTypedArray) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n if (!data.supportTransfers) {\n this.postMessageTransfers = false;\n isPostMessageTransfersDisabled = true;\n }\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send('configure', {\n verbosity: getVerbosityLevel(),\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on('console_log', function (data) {\n console.log.apply(console, data);\n });\n messageHandler.on('console_error', function (data) {\n console.error.apply(console, data);\n });\n\n messageHandler.on('ready', (data) => {\n worker.removeEventListener('error', onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n var sendTest = function () {\n var postMessageTransfers =\n getDefaultSetting('postMessageTransfers') &&\n !isPostMessageTransfersDisabled;\n var testObj = new Uint8Array([postMessageTransfers ? 255 : 0]);\n // Some versions of Opera throw a DATA_CLONE_ERR on serializing the\n // typed array. Also, checking if we can use transfers.\n try {\n messageHandler.send('test', testObj, [testObj.buffer]);\n } catch (ex) {\n info('Cannot use postMessage transfers');\n testObj[0] = 0;\n messageHandler.send('test', testObj);\n }\n };\n\n // It might take time for worker to initialize (especially when AMD\n // loader is used). We will try to send test immediately, and then\n // when 'ready' message will arrive. The worker shall process only\n // first received 'test'.\n sendTest();\n return;\n } catch (e) {\n info('The worker has been disabled.');\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n },\n\n _setupFakeWorker: function PDFWorker_setupFakeWorker() {\n if (!isWorkerDisabled && !getDefaultSetting('disableWorker')) {\n warn('Setting up fake worker.');\n isWorkerDisabled = true;\n }\n\n setupFakeWorkerGlobal().then((WorkerMessageHandler) => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error('Worker was destroyed'));\n return;\n }\n\n // We cannot turn on proper fake port simulation (this includes\n // structured cloning) when typed arrays are not supported. Relying\n // on a chance that messages will be sent in proper order.\n var isTypedArraysPresent = Uint8Array !== Float32Array;\n var port = new LoopbackPort(isTypedArraysPresent);\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n var id = 'fake' + (nextFakeWorkerId++);\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n var workerHandler = new MessageHandler(id + '_worker', id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n var messageHandler = new MessageHandler(id, id + '_worker', port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n });\n },\n\n /**\n * Destroys the worker instance.\n */\n destroy: function PDFWorker_destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n pdfWorkerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n },\n };\n\n PDFWorker.fromPort = function (port) {\n if (pdfWorkerPorts.has(port)) {\n return pdfWorkerPorts.get(port);\n }\n return new PDFWorker(null, port);\n };\n\n return PDFWorker;\n})();\n\n/**\n * For internal use only.\n * @ignore\n */\nvar WorkerTransport = (function WorkerTransportClosure() {\n function WorkerTransport(messageHandler, loadingTask, networkStream,\n CMapReaderFactory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader(loadingTask.docId);\n this.CMapReaderFactory = new CMapReaderFactory({\n baseUrl: getDefaultSetting('cMapUrl'),\n isCompressed: getDefaultSetting('cMapPacked'),\n });\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n\n this.pageCache = [];\n this.pagePromises = [];\n this.downloadInfoCapability = createPromiseCapability();\n\n this.setupMessageHandler();\n }\n WorkerTransport.prototype = {\n destroy: function WorkerTransport_destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = createPromiseCapability();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(\n new Error('Worker was destroyed during onPassword callback'));\n }\n\n var waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n this.pageCache.forEach(function (page) {\n if (page) {\n waitOn.push(page._destroy());\n }\n });\n this.pageCache = [];\n this.pagePromises = [];\n // We also need to wait for the worker to finish its long running tasks.\n var terminated = this.messageHandler.sendWithPromise('Terminate', null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.fontLoader.clear();\n if (this._networkStream) {\n this._networkStream.cancelAllRequests();\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n },\n\n setupMessageHandler: function WorkerTransport_setupMessageHandler() {\n var messageHandler = this.messageHandler;\n var loadingTask = this.loadingTask;\n\n messageHandler.on('GetReader', function(data, sink) {\n assert(this._networkStream);\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = (evt) => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function({ value, done, }) {\n if (done) {\n sink.close();\n return;\n }\n assert(isArrayBuffer(value));\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch((reason) => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = (reason) => {\n this._fullReader.cancel(reason);\n };\n }, this);\n\n messageHandler.on('ReaderHeadersReady', function(data) {\n let headersCapability = createPromiseCapability();\n let fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported ||\n !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n let loadingTask = this.loadingTask;\n if (loadingTask.onProgress) {\n loadingTask.onProgress(this._lastProgress);\n }\n }\n fullReader.onProgress = (evt) => {\n let loadingTask = this.loadingTask;\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: evt.loaded,\n total: evt.total,\n });\n }\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n }, this);\n\n messageHandler.on('GetRangeReader', function(data, sink) {\n assert(this._networkStream);\n let _rangeReader =\n this._networkStream.getRangeReader(data.begin, data.end);\n\n sink.onPull = () => {\n _rangeReader.read().then(function({ value, done, }) {\n if (done) {\n sink.close();\n return;\n }\n assert(isArrayBuffer(value));\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch((reason) => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = (reason) => {\n _rangeReader.cancel(reason);\n };\n }, this);\n\n messageHandler.on('GetDoc', function transportDoc(data) {\n var pdfInfo = data.pdfInfo;\n this.numPages = data.pdfInfo.numPages;\n var loadingTask = this.loadingTask;\n var pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);\n this.pdfDocument = pdfDocument;\n loadingTask._capability.resolve(pdfDocument);\n }, this);\n\n messageHandler.on('PasswordRequest',\n function transportPasswordRequest(exception) {\n this._passwordCapability = createPromiseCapability();\n\n if (loadingTask.onPassword) {\n var updatePassword = (password) => {\n this._passwordCapability.resolve({\n password,\n });\n };\n loadingTask.onPassword(updatePassword, exception.code);\n } else {\n this._passwordCapability.reject(\n new PasswordException(exception.message, exception.code));\n }\n return this._passwordCapability.promise;\n }, this);\n\n messageHandler.on('PasswordException',\n function transportPasswordException(exception) {\n loadingTask._capability.reject(\n new PasswordException(exception.message, exception.code));\n }, this);\n\n messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) {\n this.loadingTask._capability.reject(\n new InvalidPDFException(exception.message));\n }, this);\n\n messageHandler.on('MissingPDF', function transportMissingPDF(exception) {\n this.loadingTask._capability.reject(\n new MissingPDFException(exception.message));\n }, this);\n\n messageHandler.on('UnexpectedResponse',\n function transportUnexpectedResponse(exception) {\n this.loadingTask._capability.reject(\n new UnexpectedResponseException(exception.message, exception.status));\n }, this);\n\n messageHandler.on('UnknownError',\n function transportUnknownError(exception) {\n this.loadingTask._capability.reject(\n new UnknownErrorException(exception.message, exception.details));\n }, this);\n\n messageHandler.on('DataLoaded', function transportPage(data) {\n this.downloadInfoCapability.resolve(data);\n }, this);\n\n messageHandler.on('PDFManagerReady', function transportPage(data) {\n }, this);\n\n messageHandler.on('StartRenderPage', function transportRender(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n var page = this.pageCache[data.pageIndex];\n\n page.stats.timeEnd('Page Request');\n page._startRenderPage(data.transparency, data.intent);\n }, this);\n\n messageHandler.on('RenderPageChunk', function transportRender(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n var page = this.pageCache[data.pageIndex];\n\n page._renderPageChunk(data.operatorList, data.intent);\n }, this);\n\n messageHandler.on('commonobj', function transportObj(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var id = data[0];\n var type = data[1];\n if (this.commonObjs.hasData(id)) {\n return;\n }\n\n switch (type) {\n case 'Font':\n var exportedData = data[2];\n\n if ('error' in exportedData) {\n var exportedError = exportedData.error;\n warn('Error during font loading: ' + exportedError);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n var fontRegistry = null;\n if (getDefaultSetting('pdfBug') && globalScope.FontInspector &&\n globalScope['FontInspector'].enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalScope['FontInspector'].fontAdded(font, url);\n },\n };\n }\n var font = new FontFaceObject(exportedData, {\n isEvalSuported: getDefaultSetting('isEvalSupported'),\n disableFontFace: getDefaultSetting('disableFontFace'),\n fontRegistry,\n });\n var fontReady = (fontObjs) => {\n this.commonObjs.resolve(id, font);\n };\n\n this.fontLoader.bind([font], fontReady);\n break;\n case 'FontPath':\n this.commonObjs.resolve(id, data[2]);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n }, this);\n\n messageHandler.on('obj', function transportObj(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var id = data[0];\n var pageIndex = data[1];\n var type = data[2];\n var pageProxy = this.pageCache[pageIndex];\n var imageData;\n if (pageProxy.objs.hasData(id)) {\n return;\n }\n\n switch (type) {\n case 'JpegStream':\n imageData = data[3];\n loadJpegStream(id, imageData, pageProxy.objs);\n break;\n case 'Image':\n imageData = data[3];\n pageProxy.objs.resolve(id, imageData);\n\n // heuristics that will allow not to store large data\n var MAX_IMAGE_SIZE_TO_STORE = 8000000;\n if (imageData && 'data' in imageData &&\n imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n }, this);\n\n messageHandler.on('DocProgress', function transportDocProgress(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var loadingTask = this.loadingTask;\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.loaded,\n total: data.total,\n });\n }\n }, this);\n\n messageHandler.on('PageError', function transportError(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var page = this.pageCache[data.pageNum - 1];\n var intentState = page.intentStates[data.intent];\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(data.error);\n } else {\n throw new Error(data.error);\n }\n\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n for (var i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n }\n }, this);\n\n messageHandler.on('UnsupportedFeature',\n function transportUnsupportedFeature(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n var featureId = data.featureId;\n var loadingTask = this.loadingTask;\n if (loadingTask.onUnsupportedFeature) {\n loadingTask.onUnsupportedFeature(featureId);\n }\n _UnsupportedManager.notify(featureId);\n }, this);\n\n messageHandler.on('JpegDecode', function(data) {\n if (this.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n\n if (typeof document === 'undefined') {\n // Make sure that this code is not executing in node.js, as\n // it's using DOM image, and there is no library to support that.\n return Promise.reject(new Error('\"document\" is not defined.'));\n }\n\n var imageUrl = data[0];\n var components = data[1];\n if (components !== 3 && components !== 1) {\n return Promise.reject(\n new Error('Only 3 components or 1 component can be returned'));\n }\n\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () {\n var width = img.width;\n var height = img.height;\n var size = width * height;\n var rgbaLength = size * 4;\n var buf = new Uint8Array(size * components);\n var tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n var tmpCtx = tmpCanvas.getContext('2d');\n tmpCtx.drawImage(img, 0, 0);\n var data = tmpCtx.getImageData(0, 0, width, height).data;\n var i, j;\n\n if (components === 3) {\n for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {\n buf[j] = data[i];\n buf[j + 1] = data[i + 1];\n buf[j + 2] = data[i + 2];\n }\n } else if (components === 1) {\n for (i = 0, j = 0; i < rgbaLength; i += 4, j++) {\n buf[j] = data[i];\n }\n }\n resolve({ data: buf, width, height, });\n };\n img.onerror = function () {\n reject(new Error('JpegDecode failed to load image'));\n };\n img.src = imageUrl;\n });\n }, this);\n\n messageHandler.on('FetchBuiltInCMap', function (data) {\n if (this.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n return this.CMapReaderFactory.fetch({\n name: data.name,\n });\n }, this);\n },\n\n getData: function WorkerTransport_getData() {\n return this.messageHandler.sendWithPromise('GetData', null);\n },\n\n getPage: function WorkerTransport_getPage(pageNumber, capability) {\n if (!isInt(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) {\n return Promise.reject(new Error('Invalid page request'));\n }\n\n var pageIndex = pageNumber - 1;\n if (pageIndex in this.pagePromises) {\n return this.pagePromises[pageIndex];\n }\n var promise = this.messageHandler.sendWithPromise('GetPage', {\n pageIndex,\n }).then((pageInfo) => {\n if (this.destroyed) {\n throw new Error('Transport destroyed');\n }\n var page = new PDFPageProxy(pageIndex, pageInfo, this);\n this.pageCache[pageIndex] = page;\n return page;\n });\n this.pagePromises[pageIndex] = promise;\n return promise;\n },\n\n getPageIndex: function WorkerTransport_getPageIndexByRef(ref) {\n return this.messageHandler.sendWithPromise('GetPageIndex', {\n ref,\n }).catch(function (reason) {\n return Promise.reject(new Error(reason));\n });\n },\n\n getAnnotations: function WorkerTransport_getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise('GetAnnotations', {\n pageIndex,\n intent,\n });\n },\n\n getDestinations: function WorkerTransport_getDestinations() {\n return this.messageHandler.sendWithPromise('GetDestinations', null);\n },\n\n getDestination: function WorkerTransport_getDestination(id) {\n return this.messageHandler.sendWithPromise('GetDestination', {\n id,\n });\n },\n\n getPageLabels: function WorkerTransport_getPageLabels() {\n return this.messageHandler.sendWithPromise('GetPageLabels', null);\n },\n\n getPageMode() {\n return this.messageHandler.sendWithPromise('GetPageMode', null);\n },\n\n getAttachments: function WorkerTransport_getAttachments() {\n return this.messageHandler.sendWithPromise('GetAttachments', null);\n },\n\n getJavaScript: function WorkerTransport_getJavaScript() {\n return this.messageHandler.sendWithPromise('GetJavaScript', null);\n },\n\n getOutline: function WorkerTransport_getOutline() {\n return this.messageHandler.sendWithPromise('GetOutline', null);\n },\n\n getMetadata: function WorkerTransport_getMetadata() {\n return this.messageHandler.sendWithPromise('GetMetadata', null).\n then(function transportMetadata(results) {\n return {\n info: results[0],\n metadata: (results[1] ? new Metadata(results[1]) : null),\n };\n });\n },\n\n getStats: function WorkerTransport_getStats() {\n return this.messageHandler.sendWithPromise('GetStats', null);\n },\n\n startCleanup: function WorkerTransport_startCleanup() {\n this.messageHandler.sendWithPromise('Cleanup', null).then(() => {\n for (var i = 0, ii = this.pageCache.length; i < ii; i++) {\n var page = this.pageCache[i];\n if (page) {\n page.cleanup();\n }\n }\n this.commonObjs.clear();\n this.fontLoader.clear();\n });\n },\n };\n return WorkerTransport;\n\n})();\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects\n * for fonts, images, rendering code and such. These objects might get processed\n * inside of a worker. The `PDFObjects` implements some basic functions to\n * manage these objects.\n * @ignore\n */\nvar PDFObjects = (function PDFObjectsClosure() {\n function PDFObjects() {\n this.objs = Object.create(null);\n }\n\n PDFObjects.prototype = {\n /**\n * Internal function.\n * Ensures there is an object defined for `objId`.\n */\n ensureObj: function PDFObjects_ensureObj(objId) {\n if (this.objs[objId]) {\n return this.objs[objId];\n }\n\n var obj = {\n capability: createPromiseCapability(),\n data: null,\n resolved: false,\n };\n this.objs[objId] = obj;\n\n return obj;\n },\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this function throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this\n * function and the object is already resolved, the callback gets called\n * right away.\n */\n get: function PDFObjects_get(objId, callback) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now\n if (callback) {\n this.ensureObj(objId).capability.promise.then(callback);\n return null;\n }\n\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n var obj = this.objs[objId];\n\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj || !obj.resolved) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}`);\n }\n\n return obj.data;\n },\n\n /**\n * Resolves the object `objId` with optional `data`.\n */\n resolve: function PDFObjects_resolve(objId, data) {\n var obj = this.ensureObj(objId);\n\n obj.resolved = true;\n obj.data = data;\n obj.capability.resolve(data);\n },\n\n isResolved: function PDFObjects_isResolved(objId) {\n var objs = this.objs;\n\n if (!objs[objId]) {\n return false;\n }\n return objs[objId].resolved;\n },\n\n hasData: function PDFObjects_hasData(objId) {\n return this.isResolved(objId);\n },\n\n /**\n * Returns the data of `objId` if object exists, null otherwise.\n */\n getData: function PDFObjects_getData(objId) {\n var objs = this.objs;\n if (!objs[objId] || !objs[objId].resolved) {\n return null;\n }\n return objs[objId].data;\n },\n\n clear: function PDFObjects_clear() {\n this.objs = Object.create(null);\n },\n };\n return PDFObjects;\n})();\n\n/**\n * Allows controlling of the rendering tasks.\n * @class\n * @alias RenderTask\n */\nvar RenderTask = (function RenderTaskClosure() {\n function RenderTask(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n RenderTask.prototype = /** @lends RenderTask.prototype */ {\n /**\n * Promise for rendering task completion.\n * @return {Promise}\n */\n get promise() {\n return this._internalRenderTask.capability.promise;\n },\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n */\n cancel: function RenderTask_cancel() {\n this._internalRenderTask.cancel();\n },\n\n /**\n * Registers callbacks to indicate the rendering task completion.\n *\n * @param {function} onFulfilled The callback for the rendering completion.\n * @param {function} onRejected The callback for the rendering failure.\n * @return {Promise} A promise that is resolved after the onFulfilled or\n * onRejected callback.\n */\n then: function RenderTask_then(onFulfilled, onRejected) {\n return this.promise.then.apply(this.promise, arguments);\n },\n };\n\n return RenderTask;\n})();\n\n/**\n * For internal use only.\n * @ignore\n */\nvar InternalRenderTask = (function InternalRenderTaskClosure() {\n let canvasInRendering = new WeakMap();\n\n function InternalRenderTask(callback, params, objs, commonObjs, operatorList,\n pageNumber, canvasFactory) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this.pageNumber = pageNumber;\n this.canvasFactory = canvasFactory;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this.useRequestAnimationFrame = false;\n this.cancelled = false;\n this.capability = createPromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n InternalRenderTask.prototype = {\n\n initializeGraphics:\n function InternalRenderTask_initializeGraphics(transparency) {\n\n if (this._canvas) {\n if (canvasInRendering.has(this._canvas)) {\n throw new Error(\n 'Cannot use the same canvas during multiple render() operations. ' +\n 'Use different canvas or ensure previous operations were ' +\n 'cancelled or completed.');\n }\n canvasInRendering.set(this._canvas, this);\n }\n\n if (this.cancelled) {\n return;\n }\n if (getDefaultSetting('pdfBug') && globalScope.StepperManager &&\n globalScope.StepperManager.enabled) {\n this.stepper = globalScope.StepperManager.create(this.pageNumber - 1);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n\n var params = this.params;\n this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs,\n this.objs, this.canvasFactory,\n params.imageLayer);\n\n this.gfx.beginDrawing({\n transform: params.transform,\n viewport: params.viewport,\n transparency,\n background: params.background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n },\n\n cancel: function InternalRenderTask_cancel() {\n this.running = false;\n this.cancelled = true;\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n\n if ((typeof PDFJSDev !== 'undefined' && PDFJSDev.test('PDFJS_NEXT')) ||\n getDefaultSetting('pdfjsNext')) {\n this.callback(new RenderingCancelledException(\n 'Rendering cancelled, page ' + this.pageNumber, 'canvas'));\n } else {\n this.callback('cancelled');\n }\n },\n\n operatorListChanged: function InternalRenderTask_operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n this._continue();\n },\n\n _continue: function InternalRenderTask__continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n },\n\n _scheduleNext: function InternalRenderTask__scheduleNext() {\n if (this.useRequestAnimationFrame && typeof window !== 'undefined') {\n window.requestAnimationFrame(this._nextBound);\n } else {\n Promise.resolve(undefined).then(this._nextBound);\n }\n },\n\n _next: function InternalRenderTask__next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n this.callback();\n }\n }\n },\n\n };\n\n return InternalRenderTask;\n})();\n\n/**\n * (Deprecated) Global observer of unsupported feature usages. Use\n * onUnsupportedFeature callback of the {PDFDocumentLoadingTask} instance.\n */\nvar _UnsupportedManager = (function UnsupportedManagerClosure() {\n var listeners = [];\n return {\n listen(cb) {\n deprecated('Global UnsupportedManager.listen is used: ' +\n ' use PDFDocumentLoadingTask.onUnsupportedFeature instead');\n listeners.push(cb);\n },\n notify(featureId) {\n for (var i = 0, ii = listeners.length; i < ii; i++) {\n listeners[i](featureId);\n }\n },\n };\n})();\n\nvar version, build;\nif (typeof PDFJSDev !== 'undefined') {\n version = PDFJSDev.eval('BUNDLE_VERSION');\n build = PDFJSDev.eval('BUNDLE_BUILD');\n}\n\nexport {\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n PDFDocumentProxy,\n PDFPageProxy,\n setPDFNetworkStreamClass,\n _UnsupportedManager,\n version,\n build,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/api.js","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n addLinkAttributes, CustomStyle, getDefaultSetting, getFilenameFromUrl,\n LinkTarget\n} from './dom_utils';\nimport {\n AnnotationBorderStyleType, AnnotationType, stringToPDFString, Util, warn\n} from '../shared/util';\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPage} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {DownloadManager} downloadManager\n * @property {string} imageResourcesPath\n * @property {boolean} renderInteractiveForms\n */\n\n/**\n * @class\n * @alias AnnotationElementFactory\n */\nfunction AnnotationElementFactory() {}\nAnnotationElementFactory.prototype =\n /** @lends AnnotationElementFactory.prototype */ {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n create: function AnnotationElementFactory_create(parameters) {\n var subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n var fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case 'Tx':\n return new TextWidgetAnnotationElement(parameters);\n case 'Btn':\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n warn('Unimplemented button widget annotation: pushbutton');\n break;\n case 'Ch':\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n },\n};\n\n/**\n * @class\n * @alias AnnotationElement\n */\nvar AnnotationElement = (function AnnotationElementClosure() {\n function AnnotationElement(parameters, isRenderable, ignoreBorder) {\n this.isRenderable = isRenderable || false;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderInteractiveForms = parameters.renderInteractiveForms;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n }\n\n AnnotationElement.prototype = /** @lends AnnotationElement.prototype */ {\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement}\n */\n _createContainer:\n function AnnotationElement_createContainer(ignoreBorder) {\n var data = this.data, page = this.page, viewport = this.viewport;\n var container = document.createElement('section');\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n\n container.setAttribute('data-annotation-id', data.id);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n var rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1]\n ]);\n\n CustomStyle.setProp('transform', container,\n 'matrix(' + viewport.transform.join(',') + ')');\n CustomStyle.setProp('transformOrigin', container,\n -rect[0] + 'px ' + -rect[1] + 'px');\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = data.borderStyle.width + 'px';\n if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {\n // Underline styles only have a bottom border, so we do not need\n // to adjust for all borders. This yields a similar result as\n // Adobe Acrobat/Reader.\n width = width - 2 * data.borderStyle.width;\n height = height - 2 * data.borderStyle.width;\n }\n\n var horizontalRadius = data.borderStyle.horizontalCornerRadius;\n var verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n var radius = horizontalRadius + 'px / ' + verticalRadius + 'px';\n CustomStyle.setProp('borderRadius', container, radius);\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = 'solid';\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = 'dashed';\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn('Unimplemented border style: beveled');\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn('Unimplemented border style: inset');\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = 'solid';\n break;\n\n default:\n break;\n }\n\n if (data.color) {\n container.style.borderColor =\n Util.makeCssRgb(data.color[0] | 0,\n data.color[1] | 0,\n data.color[2] | 0);\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = rect[0] + 'px';\n container.style.top = rect[1] + 'px';\n\n container.style.width = width + 'px';\n container.style.height = height + 'px';\n\n return container;\n },\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @param {HTMLSectionElement} container\n * @param {HTMLDivElement|HTMLImageElement|null} trigger\n * @param {Object} data\n * @memberof AnnotationElement\n */\n _createPopup:\n function AnnotationElement_createPopup(container, trigger, data) {\n // If no trigger element is specified, create it.\n if (!trigger) {\n trigger = document.createElement('div');\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n var popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n title: data.title,\n contents: data.contents,\n hideWrapper: true,\n });\n var popup = popupElement.render();\n\n // Position the popup next to the annotation's container.\n popup.style.left = container.style.width;\n\n container.appendChild(popup);\n },\n\n /**\n * Render the annotation's HTML element in the empty container.\n *\n * @public\n * @memberof AnnotationElement\n */\n render: function AnnotationElement_render() {\n throw new Error('Abstract method AnnotationElement.render called');\n },\n };\n\n return AnnotationElement;\n})();\n\n/**\n * @class\n * @alias LinkAnnotationElement\n */\nvar LinkAnnotationElement = (function LinkAnnotationElementClosure() {\n function LinkAnnotationElement(parameters) {\n AnnotationElement.call(this, parameters, true);\n }\n\n Util.inherit(LinkAnnotationElement, AnnotationElement, {\n /**\n * Render the link annotation's HTML element in the empty container.\n *\n * @public\n * @memberof LinkAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function LinkAnnotationElement_render() {\n this.container.className = 'linkAnnotation';\n\n var link = document.createElement('a');\n addLinkAttributes(link, {\n url: this.data.url,\n target: (this.data.newWindow ? LinkTarget.BLANK : undefined),\n });\n\n if (!this.data.url) {\n if (this.data.action) {\n this._bindNamedAction(link, this.data.action);\n } else {\n this._bindLink(link, this.data.dest);\n }\n }\n\n this.container.appendChild(link);\n return this.container;\n },\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.navigateTo(destination);\n }\n return false;\n };\n if (destination) {\n link.className = 'internalLink';\n }\n },\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl('');\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n link.className = 'internalLink';\n },\n });\n\n return LinkAnnotationElement;\n})();\n\n/**\n * @class\n * @alias TextAnnotationElement\n */\nvar TextAnnotationElement = (function TextAnnotationElementClosure() {\n function TextAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(TextAnnotationElement, AnnotationElement, {\n /**\n * Render the text annotation's HTML element in the empty container.\n *\n * @public\n * @memberof TextAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function TextAnnotationElement_render() {\n this.container.className = 'textAnnotation';\n\n var image = document.createElement('img');\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src = this.imageResourcesPath + 'annotation-' +\n this.data.name.toLowerCase() + '.svg';\n image.alt = '[{{type}} Annotation]';\n image.dataset.l10nId = 'text_annotation_type';\n image.dataset.l10nArgs = JSON.stringify({ type: this.data.name, });\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n },\n });\n\n return TextAnnotationElement;\n})();\n\n/**\n * @class\n * @alias WidgetAnnotationElement\n */\nvar WidgetAnnotationElement = (function WidgetAnnotationElementClosure() {\n function WidgetAnnotationElement(parameters, isRenderable) {\n AnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(WidgetAnnotationElement, AnnotationElement, {\n /**\n * Render the widget annotation's HTML element in the empty container.\n *\n * @public\n * @memberof WidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function WidgetAnnotationElement_render() {\n // Show only the container for unsupported field types.\n return this.container;\n },\n });\n\n return WidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias TextWidgetAnnotationElement\n */\nvar TextWidgetAnnotationElement = (\n function TextWidgetAnnotationElementClosure() {\n var TEXT_ALIGNMENT = ['left', 'center', 'right'];\n\n function TextWidgetAnnotationElement(parameters) {\n var isRenderable = parameters.renderInteractiveForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n WidgetAnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the text widget annotation's HTML element in the empty container.\n *\n * @public\n * @memberof TextWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function TextWidgetAnnotationElement_render() {\n this.container.className = 'textWidgetAnnotation';\n\n var element = null;\n if (this.renderInteractiveForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n if (this.data.multiLine) {\n element = document.createElement('textarea');\n element.textContent = this.data.fieldValue;\n } else {\n element = document.createElement('input');\n element.type = 'text';\n element.setAttribute('value', this.data.fieldValue);\n }\n\n element.disabled = this.data.readOnly;\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n var fieldWidth = this.data.rect[2] - this.data.rect[0];\n var combWidth = fieldWidth / this.data.maxLen;\n\n element.classList.add('comb');\n element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';\n }\n } else {\n element = document.createElement('div');\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = 'middle';\n element.style.display = 'table-cell';\n\n var font = null;\n if (this.data.fontRefName) {\n font = this.page.commonObjs.getData(this.data.fontRefName);\n }\n this._setTextStyle(element, font);\n }\n\n if (this.data.textAlignment !== null) {\n element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n\n this.container.appendChild(element);\n return this.container;\n },\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @param {Object} font\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle:\n function TextWidgetAnnotationElement_setTextStyle(element, font) {\n // TODO: This duplicates some of the logic in CanvasGraphics.setFont().\n var style = element.style;\n style.fontSize = this.data.fontSize + 'px';\n style.direction = (this.data.fontDirection < 0 ? 'rtl' : 'ltr');\n\n if (!font) {\n return;\n }\n\n style.fontWeight = (font.black ?\n (font.bold ? '900' : 'bold') :\n (font.bold ? 'bold' : 'normal'));\n style.fontStyle = (font.italic ? 'italic' : 'normal');\n\n // Use a reasonable default font if the font doesn't specify a fallback.\n var fontFamily = font.loadedName ? '\"' + font.loadedName + '\", ' : '';\n var fallbackName = font.fallbackName || 'Helvetica, sans-serif';\n style.fontFamily = fontFamily + fallbackName;\n },\n });\n\n return TextWidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias CheckboxWidgetAnnotationElement\n */\nvar CheckboxWidgetAnnotationElement =\n (function CheckboxWidgetAnnotationElementClosure() {\n function CheckboxWidgetAnnotationElement(parameters) {\n WidgetAnnotationElement.call(this, parameters,\n parameters.renderInteractiveForms);\n }\n\n Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the checkbox widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof CheckboxWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function CheckboxWidgetAnnotationElement_render() {\n this.container.className = 'buttonWidgetAnnotation checkBox';\n\n var element = document.createElement('input');\n element.disabled = this.data.readOnly;\n element.type = 'checkbox';\n if (this.data.fieldValue && this.data.fieldValue !== 'Off') {\n element.setAttribute('checked', true);\n }\n\n this.container.appendChild(element);\n return this.container;\n },\n });\n\n return CheckboxWidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias RadioButtonWidgetAnnotationElement\n */\nvar RadioButtonWidgetAnnotationElement =\n (function RadioButtonWidgetAnnotationElementClosure() {\n function RadioButtonWidgetAnnotationElement(parameters) {\n WidgetAnnotationElement.call(this, parameters,\n parameters.renderInteractiveForms);\n }\n\n Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the radio button widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof RadioButtonWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function RadioButtonWidgetAnnotationElement_render() {\n this.container.className = 'buttonWidgetAnnotation radioButton';\n\n var element = document.createElement('input');\n element.disabled = this.data.readOnly;\n element.type = 'radio';\n element.name = this.data.fieldName;\n if (this.data.fieldValue === this.data.buttonValue) {\n element.setAttribute('checked', true);\n }\n\n this.container.appendChild(element);\n return this.container;\n },\n });\n\n return RadioButtonWidgetAnnotationElement;\n})();\n\n /**\n * @class\n * @alias ChoiceWidgetAnnotationElement\n */\nvar ChoiceWidgetAnnotationElement = (\n function ChoiceWidgetAnnotationElementClosure() {\n function ChoiceWidgetAnnotationElement(parameters) {\n WidgetAnnotationElement.call(this, parameters,\n parameters.renderInteractiveForms);\n }\n\n Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the choice widget annotation's HTML element in the empty\n * container.\n *\n * @public\n * @memberof ChoiceWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function ChoiceWidgetAnnotationElement_render() {\n this.container.className = 'choiceWidgetAnnotation';\n\n var selectElement = document.createElement('select');\n selectElement.disabled = this.data.readOnly;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n // Insert the options into the choice field.\n for (var i = 0, ii = this.data.options.length; i < ii; i++) {\n var option = this.data.options[i];\n\n var optionElement = document.createElement('option');\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n\n if (this.data.fieldValue.indexOf(option.displayValue) >= 0) {\n optionElement.setAttribute('selected', true);\n }\n\n selectElement.appendChild(optionElement);\n }\n\n this.container.appendChild(selectElement);\n return this.container;\n },\n });\n\n return ChoiceWidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias PopupAnnotationElement\n */\nvar PopupAnnotationElement = (function PopupAnnotationElementClosure() {\n // Do not render popup annotations for parent elements with these types as\n // they create the popups themselves (because of custom trigger divs).\n var IGNORE_TYPES = ['Line'];\n\n function PopupAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(PopupAnnotationElement, AnnotationElement, {\n /**\n * Render the popup annotation's HTML element in the empty container.\n *\n * @public\n * @memberof PopupAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function PopupAnnotationElement_render() {\n this.container.className = 'popupAnnotation';\n\n if (IGNORE_TYPES.indexOf(this.data.parentType) >= 0) {\n return this.container;\n }\n\n var selector = '[data-annotation-id=\"' + this.data.parentId + '\"]';\n var parentElement = this.layer.querySelector(selector);\n if (!parentElement) {\n return this.container;\n }\n\n var popup = new PopupElement({\n container: this.container,\n trigger: parentElement,\n color: this.data.color,\n title: this.data.title,\n contents: this.data.contents,\n });\n\n // Position the popup next to the parent annotation's container.\n // PDF viewers ignore a popup annotation's rectangle.\n var parentLeft = parseFloat(parentElement.style.left);\n var parentWidth = parseFloat(parentElement.style.width);\n CustomStyle.setProp('transformOrigin', this.container,\n -(parentLeft + parentWidth) + 'px -' +\n parentElement.style.top);\n this.container.style.left = (parentLeft + parentWidth) + 'px';\n\n this.container.appendChild(popup.render());\n return this.container;\n },\n });\n\n return PopupAnnotationElement;\n})();\n\n/**\n * @class\n * @alias PopupElement\n */\nvar PopupElement = (function PopupElementClosure() {\n var BACKGROUND_ENLIGHT = 0.7;\n\n function PopupElement(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.title = parameters.title;\n this.contents = parameters.contents;\n this.hideWrapper = parameters.hideWrapper || false;\n\n this.pinned = false;\n }\n\n PopupElement.prototype = /** @lends PopupElement.prototype */ {\n /**\n * Render the popup's HTML element.\n *\n * @public\n * @memberof PopupElement\n * @returns {HTMLSectionElement}\n */\n render: function PopupElement_render() {\n var wrapper = document.createElement('div');\n wrapper.className = 'popupWrapper';\n\n // For Popup annotations we hide the entire section because it contains\n // only the popup. However, for Text annotations without a separate Popup\n // annotation, we cannot hide the entire container as the image would\n // disappear too. In that special case, hiding the wrapper suffices.\n this.hideElement = (this.hideWrapper ? wrapper : this.container);\n this.hideElement.setAttribute('hidden', true);\n\n var popup = document.createElement('div');\n popup.className = 'popup';\n\n var color = this.color;\n if (color) {\n // Enlighten the color.\n var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0);\n }\n\n var contents = this._formatContents(this.contents);\n var title = document.createElement('h1');\n title.textContent = this.title;\n\n // Attach the event listeners to the trigger element.\n this.trigger.addEventListener('click', this._toggle.bind(this));\n this.trigger.addEventListener('mouseover', this._show.bind(this, false));\n this.trigger.addEventListener('mouseout', this._hide.bind(this, false));\n popup.addEventListener('click', this._hide.bind(this, true));\n\n popup.appendChild(title);\n popup.appendChild(contents);\n wrapper.appendChild(popup);\n return wrapper;\n },\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {string} contents\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents: function PopupElement_formatContents(contents) {\n var p = document.createElement('p');\n var lines = contents.split(/(?:\\r\\n?|\\n)/);\n for (var i = 0, ii = lines.length; i < ii; ++i) {\n var line = lines[i];\n p.appendChild(document.createTextNode(line));\n if (i < (ii - 1)) {\n p.appendChild(document.createElement('br'));\n }\n }\n return p;\n },\n\n /**\n * Toggle the visibility of the popup.\n *\n * @private\n * @memberof PopupElement\n */\n _toggle: function PopupElement_toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n },\n\n /**\n * Show the popup.\n *\n * @private\n * @param {boolean} pin\n * @memberof PopupElement\n */\n _show: function PopupElement_show(pin) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hasAttribute('hidden')) {\n this.hideElement.removeAttribute('hidden');\n this.container.style.zIndex += 1;\n }\n },\n\n /**\n * Hide the popup.\n *\n * @private\n * @param {boolean} unpin\n * @memberof PopupElement\n */\n _hide: function PopupElement_hide(unpin) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {\n this.hideElement.setAttribute('hidden', true);\n this.container.style.zIndex -= 1;\n }\n },\n };\n\n return PopupElement;\n})();\n\n/**\n * @class\n * @alias LineAnnotationElement\n */\nvar LineAnnotationElement = (function LineAnnotationElementClosure() {\n var SVG_NS = 'http://www.w3.org/2000/svg';\n\n function LineAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(LineAnnotationElement, AnnotationElement, {\n /**\n * Render the line annotation's HTML element in the empty container.\n *\n * @public\n * @memberof LineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function LineAnnotationElement_render() {\n this.container.className = 'lineAnnotation';\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n\n var svg = document.createElementNS(SVG_NS, 'svg:svg');\n svg.setAttributeNS(null, 'version', '1.1');\n svg.setAttributeNS(null, 'width', width + 'px');\n svg.setAttributeNS(null, 'height', height + 'px');\n svg.setAttributeNS(null, 'preserveAspectRatio', 'none');\n svg.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height);\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n var line = document.createElementNS(SVG_NS, 'svg:line');\n line.setAttributeNS(null, 'x1', data.rect[2] - data.lineCoordinates[0]);\n line.setAttributeNS(null, 'y1', data.rect[3] - data.lineCoordinates[1]);\n line.setAttributeNS(null, 'x2', data.rect[2] - data.lineCoordinates[2]);\n line.setAttributeNS(null, 'y2', data.rect[3] - data.lineCoordinates[3]);\n line.setAttributeNS(null, 'stroke-width', data.borderStyle.width);\n line.setAttributeNS(null, 'stroke', 'transparent');\n\n svg.appendChild(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n this._createPopup(this.container, line, this.data);\n\n return this.container;\n },\n });\n\n return LineAnnotationElement;\n})();\n\n/**\n * @class\n * @alias HighlightAnnotationElement\n */\nvar HighlightAnnotationElement = (\n function HighlightAnnotationElementClosure() {\n function HighlightAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(HighlightAnnotationElement, AnnotationElement, {\n /**\n * Render the highlight annotation's HTML element in the empty container.\n *\n * @public\n * @memberof HighlightAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function HighlightAnnotationElement_render() {\n this.container.className = 'highlightAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return HighlightAnnotationElement;\n})();\n\n/**\n * @class\n * @alias UnderlineAnnotationElement\n */\nvar UnderlineAnnotationElement = (\n function UnderlineAnnotationElementClosure() {\n function UnderlineAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(UnderlineAnnotationElement, AnnotationElement, {\n /**\n * Render the underline annotation's HTML element in the empty container.\n *\n * @public\n * @memberof UnderlineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function UnderlineAnnotationElement_render() {\n this.container.className = 'underlineAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return UnderlineAnnotationElement;\n})();\n\n/**\n * @class\n * @alias SquigglyAnnotationElement\n */\nvar SquigglyAnnotationElement = (function SquigglyAnnotationElementClosure() {\n function SquigglyAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(SquigglyAnnotationElement, AnnotationElement, {\n /**\n * Render the squiggly annotation's HTML element in the empty container.\n *\n * @public\n * @memberof SquigglyAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function SquigglyAnnotationElement_render() {\n this.container.className = 'squigglyAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return SquigglyAnnotationElement;\n})();\n\n/**\n * @class\n * @alias StrikeOutAnnotationElement\n */\nvar StrikeOutAnnotationElement = (\n function StrikeOutAnnotationElementClosure() {\n function StrikeOutAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(StrikeOutAnnotationElement, AnnotationElement, {\n /**\n * Render the strikeout annotation's HTML element in the empty container.\n *\n * @public\n * @memberof StrikeOutAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function StrikeOutAnnotationElement_render() {\n this.container.className = 'strikeoutAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return StrikeOutAnnotationElement;\n})();\n\n/**\n * @class\n * @alias FileAttachmentAnnotationElement\n */\nvar FileAttachmentAnnotationElement = (\n function FileAttachmentAnnotationElementClosure() {\n function FileAttachmentAnnotationElement(parameters) {\n AnnotationElement.call(this, parameters, true);\n\n var file = this.data.file;\n this.filename = getFilenameFromUrl(file.filename);\n this.content = file.content;\n\n this.linkService.onFileAttachmentAnnotation({\n id: stringToPDFString(file.filename),\n filename: file.filename,\n content: file.content,\n });\n }\n\n Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, {\n /**\n * Render the file attachment annotation's HTML element in the empty\n * container.\n *\n * @public\n * @memberof FileAttachmentAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function FileAttachmentAnnotationElement_render() {\n this.container.className = 'fileAttachmentAnnotation';\n\n var trigger = document.createElement('div');\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener('dblclick', this._download.bind(this));\n\n if (!this.data.hasPopup && (this.data.title || this.data.contents)) {\n this._createPopup(this.container, trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n },\n\n /**\n * Download the file attachment associated with this annotation.\n *\n * @private\n * @memberof FileAttachmentAnnotationElement\n */\n _download: function FileAttachmentAnnotationElement_download() {\n if (!this.downloadManager) {\n warn('Download cannot be started due to unavailable download manager');\n return;\n }\n this.downloadManager.downloadData(this.content, this.filename, '');\n },\n });\n\n return FileAttachmentAnnotationElement;\n})();\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPage} page\n * @property {IPDFLinkService} linkService\n * @property {string} imageResourcesPath\n * @property {boolean} renderInteractiveForms\n */\n\n/**\n * @class\n * @alias AnnotationLayer\n */\nvar AnnotationLayer = (function AnnotationLayerClosure() {\n return {\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n render: function AnnotationLayer_render(parameters) {\n var annotationElementFactory = new AnnotationElementFactory();\n\n for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {\n var data = parameters.annotations[i];\n if (!data) {\n continue;\n }\n var element = annotationElementFactory.create({\n data,\n layer: parameters.div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath ||\n getDefaultSetting('imageResourcesPath'),\n renderInteractiveForms: parameters.renderInteractiveForms || false,\n });\n if (element.isRenderable) {\n parameters.div.appendChild(element.render());\n }\n }\n },\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n update: function AnnotationLayer_update(parameters) {\n for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {\n var data = parameters.annotations[i];\n var element = parameters.div.querySelector(\n '[data-annotation-id=\"' + data.id + '\"]');\n if (element) {\n CustomStyle.setProp('transform', element,\n 'matrix(' + parameters.viewport.transform.join(',') + ')');\n }\n }\n parameters.div.removeAttribute('hidden');\n },\n };\n})();\n\nexport {\n AnnotationLayer,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/annotation_layer.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n createObjectURL, FONT_IDENTITY_MATRIX, IDENTITY_MATRIX, ImageKind, isArray,\n isNodeJS, isNum, OPS, Util, warn\n} from '../shared/util';\n\nvar SVGGraphics = function() {\n throw new Error('Not implemented: SVGGraphics');\n};\n\nif (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('GENERIC || SINGLE_FILE')) {\n\nvar SVG_DEFAULTS = {\n fontStyle: 'normal',\n fontWeight: 'normal',\n fillColor: '#000000',\n};\n\nvar convertImgDataToPng = (function convertImgDataToPngClosure() {\n var PNG_HEADER =\n new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n\n var CHUNK_WRAPPER_SIZE = 12;\n\n var crcTable = new Int32Array(256);\n for (var i = 0; i < 256; i++) {\n var c = i;\n for (var h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedB88320 ^ ((c >> 1) & 0x7fffffff);\n } else {\n c = (c >> 1) & 0x7fffffff;\n }\n }\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n var crc = -1;\n for (var i = start; i < end; i++) {\n var a = (crc ^ data[i]) & 0xff;\n var b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n var p = offset;\n var len = body.length;\n\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n\n data.set(body, p);\n p += body.length;\n\n var crc = crc32(data, offset + 4, p);\n\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n var a = 1;\n var b = 0;\n for (var i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return (b << 16) | a;\n }\n\n /**\n * @param {Uint8Array} literals The input data.\n * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n * This is the required format for compressed streams in the PNG format:\n * http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n */\n function deflateSync(literals) {\n if (!isNodeJS()) {\n // zlib is certainly not available outside of Node.js. We can either use\n // the pako library for client-side DEFLATE compression, or use the canvas\n // API of the browser to obtain a more optimal PNG file.\n return deflateSyncUncompressed(literals);\n }\n try {\n // NOTE: This implementation is far from perfect, but already way better\n // than not applying any compression.\n //\n // A better algorithm will try to choose a good predictor/filter and\n // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n //\n // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n // Node v3.0.0 Buffer inherits from Uint8Array.\n // Node v8.0.0 zlib.deflateSync accepts Uint8Array as input.\n var input;\n // eslint-disable-next-line no-undef\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n // eslint-disable-next-line no-undef\n input = new Buffer(literals);\n }\n var output = __non_webpack_require__('zlib')\n .deflateSync(input, { level: 9, });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n function deflateSyncUncompressed(literals) {\n var len = literals.length;\n var maxBlockLength = 0xFFFF;\n\n var deflateBlocks = Math.ceil(len / maxBlockLength);\n var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n var pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n var pos = 0;\n while (len > maxBlockLength) {\n // writing non-final DEFLATE blocks type 0 and length of 65535\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n // writing non-final DEFLATE blocks type 0\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = (~len & 0xffff) & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n\n var adler = adler32(literals, 0, literals.length); // checksum\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema) {\n var width = imgData.width;\n var height = imgData.height;\n var bitDepth, colorType, lineSize;\n var bytes = imgData.data;\n\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = (width + 7) >> 3;\n break;\n case ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error('invalid format');\n }\n\n // prefix every row with predictor 0\n var literals = new Uint8Array((1 + lineSize) * height);\n var offsetLiterals = 0, offsetBytes = 0;\n var y, i;\n for (y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP) {\n // inverting for B/W\n offsetLiterals = 0;\n for (y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xFF;\n }\n }\n }\n\n var ihdr = new Uint8Array([\n width >> 24 & 0xff,\n width >> 16 & 0xff,\n width >> 8 & 0xff,\n width & 0xff,\n height >> 24 & 0xff,\n height >> 16 & 0xff,\n height >> 8 & 0xff,\n height & 0xff,\n bitDepth, // bit depth\n colorType, // color type\n 0x00, // compression method\n 0x00, // filter method\n 0x00 // interlace method\n ]);\n\n var idat = deflateSync(literals);\n\n // PNG will consists: header, IHDR+data, IDAT+data, and IEND.\n var pngLength = PNG_HEADER.length + (CHUNK_WRAPPER_SIZE * 3) +\n ihdr.length + idat.length;\n var data = new Uint8Array(pngLength);\n var offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk('IHDR', ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk('IDATA', idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk('IEND', new Uint8Array(0), data, offset);\n\n return createObjectURL(data, 'image/png', forceDataSchema);\n }\n\n return function convertImgDataToPng(imgData, forceDataSchema) {\n var kind = (imgData.kind === undefined ?\n ImageKind.GRAYSCALE_1BPP : imgData.kind);\n return encode(imgData, kind, forceDataSchema);\n };\n})();\n\nvar SVGExtraState = (function SVGExtraStateClosure() {\n function SVGExtraState() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n\n this.textMatrix = IDENTITY_MATRIX;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n\n // Default foreground and background colors\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = '#000000';\n\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = '';\n this.lineCap = '';\n this.miterLimit = 0;\n\n this.dashArray = [];\n this.dashPhase = 0;\n\n this.dependencies = [];\n\n // Clipping\n this.activeClipUrl = null;\n this.clipGroup = null;\n\n this.maskId = '';\n }\n\n SVGExtraState.prototype = {\n clone: function SVGExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n },\n };\n return SVGExtraState;\n})();\n\nSVGGraphics = (function SVGGraphicsClosure() {\n function opListToTree(opList) {\n var opTree = [];\n var tmp = [];\n var opListLen = opList.length;\n\n for (var x = 0; x < opListLen; x++) {\n if (opList[x].fn === 'save') {\n opTree.push({ 'fnId': 92, 'fn': 'group', 'items': [], });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opList[x].fn === 'restore') {\n opTree = tmp.pop();\n } else {\n opTree.push(opList[x]);\n }\n }\n return opTree;\n }\n\n /**\n * Formats float number.\n * @param value {number} number to format.\n * @returns {string}\n */\n function pf(value) {\n if (value === (value | 0)) { // integer number\n return value.toString();\n }\n var s = value.toFixed(10);\n var i = s.length - 1;\n if (s[i] !== '0') {\n return s;\n }\n // removing trailing zeros\n do {\n i--;\n } while (s[i] === '0');\n return s.substr(0, s[i] === '.' ? i : i + 1);\n }\n\n /**\n * Formats transform matrix. The standard rotation, scale and translate\n * matrices are replaced by their shorter forms, and for identity matrix\n * returns empty string to save the memory.\n * @param m {Array} matrix to format.\n * @returns {string}\n */\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return '';\n }\n return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n var a = Math.acos(m[0]) * 180 / Math.PI;\n return 'rotate(' + pf(a) + ')';\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';\n }\n }\n return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' +\n pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';\n }\n\n function SVGGraphics(commonObjs, objs, forceDataSchema) {\n this.current = new SVGExtraState();\n this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n }\n\n var NS = 'http://www.w3.org/2000/svg';\n var XML_NS = 'http://www.w3.org/XML/1998/namespace';\n var XLINK_NS = 'http://www.w3.org/1999/xlink';\n var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n var clipCount = 0;\n var maskCount = 0;\n\n SVGGraphics.prototype = {\n save: function SVGGraphics_save() {\n this.transformStack.push(this.transformMatrix);\n var old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n },\n\n restore: function SVGGraphics_restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n\n this.pendingClip = null;\n this.tgrp = null;\n },\n\n group: function SVGGraphics_group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n },\n\n loadDependencies: function SVGGraphics_loadDependencies(operatorList) {\n var fnArray = operatorList.fnArray;\n var fnArrayLen = fnArray.length;\n var argsArray = operatorList.argsArray;\n\n for (var i = 0; i < fnArrayLen; i++) {\n if (OPS.dependency === fnArray[i]) {\n var deps = argsArray[i];\n for (var n = 0, nn = deps.length; n < nn; n++) {\n var obj = deps[n];\n var common = obj.substring(0, 2) === 'g_';\n var promise;\n if (common) {\n promise = new Promise((resolve) => {\n this.commonObjs.get(obj, resolve);\n });\n } else {\n promise = new Promise((resolve) => {\n this.objs.get(obj, resolve);\n });\n }\n this.current.dependencies.push(promise);\n }\n }\n }\n return Promise.all(this.current.dependencies);\n },\n\n transform: function SVGGraphics_transform(a, b, c, d, e, f) {\n var transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(this.transformMatrix,\n transformMatrix);\n this.tgrp = null;\n },\n\n getSVG: function SVGGraphics_getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n var svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n var opTree = this.convertOpList(operatorList);\n this.executeOpTree(opTree);\n return svgElement;\n });\n },\n\n convertOpList: function SVGGraphics_convertOpList(operatorList) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var fnArrayLen = fnArray.length;\n var REVOPS = [];\n var opList = [];\n\n for (var op in OPS) {\n REVOPS[OPS[op]] = op;\n }\n\n for (var x = 0; x < fnArrayLen; x++) {\n var fnId = fnArray[x];\n opList.push({\n 'fnId': fnId,\n 'fn': REVOPS[fnId],\n 'args': argsArray[x],\n });\n }\n return opListToTree(opList);\n },\n\n executeOpTree: function SVGGraphics_executeOpTree(opTree) {\n var opTreeLen = opTree.length;\n for (var x = 0; x < opTreeLen; x++) {\n var fn = opTree[x].fn;\n var fnId = opTree[x].fnId;\n var args = opTree[x].args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\n break;\n case OPS.setLeading:\n this.setLeading(args);\n break;\n case OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case OPS.setFont:\n this.setFont(args);\n break;\n case OPS.showText:\n this.showText(args[0]);\n break;\n case OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case OPS.endText:\n this.endText();\n break;\n case OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2],\n args[3], args[4], args[5]);\n break;\n case OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case OPS.setGState:\n this.setGState(args[0]);\n break;\n case OPS.fill:\n this.fill();\n break;\n case OPS.eoFill:\n this.eoFill();\n break;\n case OPS.stroke:\n this.stroke();\n break;\n case OPS.fillStroke:\n this.fillStroke();\n break;\n case OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case OPS.clip:\n this.clip('nonzero');\n break;\n case OPS.eoClip:\n this.clip('evenodd');\n break;\n case OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case OPS.paintJpegXObject:\n this.paintJpegXObject(args[0], args[1], args[2]);\n break;\n case OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case OPS.closePath:\n this.closePath();\n break;\n case OPS.closeStroke:\n this.closeStroke();\n break;\n case OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case OPS.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(args[0], args[1], args[2], args[3],\n args[4], args[5]);\n break;\n case OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTree[x].items);\n break;\n default:\n warn('Unimplemented operator ' + fn);\n break;\n }\n }\n },\n\n setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n },\n\n setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n },\n\n nextLine: function SVGGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n\n setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) {\n var current = this.current;\n this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f];\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n\n current.xcoords = [];\n current.tspan = document.createElementNS(NS, 'svg:tspan');\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n\n current.txtElement = document.createElementNS(NS, 'svg:text');\n current.txtElement.appendChild(current.tspan);\n },\n\n beginText: function SVGGraphics_beginText() {\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.lineMatrix = IDENTITY_MATRIX;\n this.current.tspan = document.createElementNS(NS, 'svg:tspan');\n this.current.txtElement = document.createElementNS(NS, 'svg:text');\n this.current.txtgrp = document.createElementNS(NS, 'svg:g');\n this.current.xcoords = [];\n },\n\n moveText: function SVGGraphics_moveText(x, y) {\n var current = this.current;\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n\n current.xcoords = [];\n current.tspan = document.createElementNS(NS, 'svg:tspan');\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n },\n\n showText: function SVGGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return;\n }\n\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n var x = 0, i;\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n if (glyph === null) {\n // word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (isNum(glyph)) {\n x += -glyph * fontSize * 0.001;\n continue;\n }\n current.xcoords.push(current.x + x * textHScale);\n\n var width = glyph.width;\n var character = glyph.fontChar;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n\n current.tspan.textContent += character;\n }\n if (vertical) {\n current.y -= x * textHScale;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, 'x',\n current.xcoords.map(pf).join(' '));\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);\n }\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, 'fill', current.fillColor);\n }\n\n current.txtElement.setAttributeNS(null, 'transform',\n pm(current.textMatrix) +\n ' scale(1, -1)');\n current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n },\n\n setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n\n addFontStyle: function SVGGraphics_addFontStyle(fontObj) {\n if (!this.cssStyle) {\n this.cssStyle = document.createElementNS(NS, 'svg:style');\n this.cssStyle.setAttributeNS(null, 'type', 'text/css');\n this.defs.appendChild(this.cssStyle);\n }\n\n var url = createObjectURL(fontObj.data, fontObj.mimetype,\n this.forceDataSchema);\n this.cssStyle.textContent +=\n '@font-face { font-family: \"' + fontObj.loadedName + '\";' +\n ' src: url(' + url + '); }\\n';\n },\n\n setFont: function SVGGraphics_setFont(details) {\n var current = this.current;\n var fontObj = this.commonObjs.get(details[0]);\n var size = details[1];\n this.current.font = fontObj;\n\n if (this.embedFonts && fontObj.data &&\n !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = (fontObj.fontMatrix ?\n fontObj.fontMatrix : FONT_IDENTITY_MATRIX);\n\n var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold') :\n (fontObj.bold ? 'bold' : 'normal');\n var italic = fontObj.italic ? 'italic' : 'normal';\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n\n current.tspan = document.createElementNS(NS, 'svg:tspan');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n current.xcoords = [];\n },\n\n endText: function SVGGraphics_endText() {},\n\n // Path properties\n setLineWidth: function SVGGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n },\n setLineCap: function SVGGraphics_setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function SVGGraphics_setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function SVGGraphics_setMiterLimit(limit) {\n this.current.miterLimit = limit;\n },\n setStrokeAlpha: function SVGGraphics_setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n },\n setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.current.strokeColor = color;\n },\n setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n },\n setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.current.fillColor = color;\n this.current.tspan = document.createElementNS(NS, 'svg:tspan');\n this.current.xcoords = [];\n },\n setDash: function SVGGraphics_setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n },\n\n constructPath: function SVGGraphics_constructPath(ops, args) {\n var current = this.current;\n var x = current.x, y = current.y;\n current.path = document.createElementNS(NS, 'svg:path');\n var d = [];\n var opLength = ops.length;\n\n for (var i = 0, j = 0; i < opLength; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n var xw = x + width;\n var yh = y + height;\n d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh),\n 'L', pf(x), pf(yh), 'Z');\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push('M', pf(x), pf(y));\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push('L', pf(x), pf(y));\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]),\n pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n case OPS.curveTo2:\n x = args[j + 2];\n y = args[j + 3];\n d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]),\n pf(args[j + 2]), pf(args[j + 3]));\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y),\n pf(x), pf(y));\n j += 4;\n break;\n case OPS.closePath:\n d.push('Z');\n break;\n }\n }\n current.path.setAttributeNS(null, 'd', d.join(' '));\n current.path.setAttributeNS(null, 'fill', 'none');\n\n this._ensureTransformGroup().appendChild(current.path);\n\n // Saving a reference in current.element so that it can be addressed\n // in 'fill' and 'stroke'\n current.element = current.path;\n current.setCurrentPoint(x, y);\n },\n\n endPath: function SVGGraphics_endPath() {\n if (!this.pendingClip) {\n return;\n }\n var current = this.current;\n // Add current path to clipping path\n var clipId = 'clippath' + clipCount;\n clipCount++;\n var clipPath = document.createElementNS(NS, 'svg:clipPath');\n clipPath.setAttributeNS(null, 'id', clipId);\n clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));\n var clipElement = current.element.cloneNode();\n if (this.pendingClip === 'evenodd') {\n clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');\n } else {\n clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');\n }\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n // The previous clipping group content can go out of order -- resetting\n // cached clipGroups.\n current.clipGroup = null;\n this.extraStack.forEach(function (prev) {\n prev.clipGroup = null;\n });\n }\n current.activeClipUrl = 'url(#' + clipId + ')';\n\n this.tgrp = null;\n },\n\n clip: function SVGGraphics_clip(type) {\n this.pendingClip = type;\n },\n\n closePath: function SVGGraphics_closePath() {\n var current = this.current;\n var d = current.path.getAttributeNS(null, 'd');\n d += 'Z';\n current.path.setAttributeNS(null, 'd', d);\n },\n\n setLeading: function SVGGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n\n setTextRise: function SVGGraphics_setTextRise(textRise) {\n this.current.textRise = textRise;\n },\n\n setHScale: function SVGGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n\n setGState: function SVGGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var value = state[1];\n\n switch (key) {\n case 'LW':\n this.setLineWidth(value);\n break;\n case 'LC':\n this.setLineCap(value);\n break;\n case 'LJ':\n this.setLineJoin(value);\n break;\n case 'ML':\n this.setMiterLimit(value);\n break;\n case 'D':\n this.setDash(value[0], value[1]);\n break;\n case 'Font':\n this.setFont(value);\n break;\n case 'CA':\n this.setStrokeAlpha(value);\n break;\n case 'ca':\n this.setFillAlpha(value);\n break;\n default:\n warn('Unimplemented graphic state ' + key);\n break;\n }\n }\n },\n\n fill: function SVGGraphics_fill() {\n var current = this.current;\n current.element.setAttributeNS(null, 'fill', current.fillColor);\n current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);\n },\n\n stroke: function SVGGraphics_stroke() {\n var current = this.current;\n\n current.element.setAttributeNS(null, 'stroke', current.strokeColor);\n current.element.setAttributeNS(null, 'stroke-opacity',\n current.strokeAlpha);\n current.element.setAttributeNS(null, 'stroke-miterlimit',\n pf(current.miterLimit));\n current.element.setAttributeNS(null, 'stroke-linecap', current.lineCap);\n current.element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);\n current.element.setAttributeNS(null, 'stroke-width',\n pf(current.lineWidth) + 'px');\n current.element.setAttributeNS(null, 'stroke-dasharray',\n current.dashArray.map(pf).join(' '));\n current.element.setAttributeNS(null, 'stroke-dashoffset',\n pf(current.dashPhase) + 'px');\n\n current.element.setAttributeNS(null, 'fill', 'none');\n },\n\n eoFill: function SVGGraphics_eoFill() {\n this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n this.fill();\n },\n\n fillStroke: function SVGGraphics_fillStroke() {\n // Order is important since stroke wants fill to be none.\n // First stroke, then if fill needed, it will be overwritten.\n this.stroke();\n this.fill();\n },\n\n eoFillStroke: function SVGGraphics_eoFillStroke() {\n this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n this.fillStroke();\n },\n\n closeStroke: function SVGGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n\n closeFillStroke: function SVGGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n\n paintSolidColorImageMask:\n function SVGGraphics_paintSolidColorImageMask() {\n var current = this.current;\n var rect = document.createElementNS(NS, 'svg:rect');\n rect.setAttributeNS(null, 'x', '0');\n rect.setAttributeNS(null, 'y', '0');\n rect.setAttributeNS(null, 'width', '1px');\n rect.setAttributeNS(null, 'height', '1px');\n rect.setAttributeNS(null, 'fill', current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n },\n\n paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {\n var imgObj = this.objs.get(objId);\n var imgEl = document.createElementNS(NS, 'svg:image');\n imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);\n imgEl.setAttributeNS(null, 'width', pf(w));\n imgEl.setAttributeNS(null, 'height', pf(h));\n imgEl.setAttributeNS(null, 'x', '0');\n imgEl.setAttributeNS(null, 'y', pf(-h));\n imgEl.setAttributeNS(null, 'transform',\n 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');\n\n this._ensureTransformGroup().appendChild(imgEl);\n },\n\n paintImageXObject: function SVGGraphics_paintImageXObject(objId) {\n var imgData = this.objs.get(objId);\n if (!imgData) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n this.paintInlineImageXObject(imgData);\n },\n\n paintInlineImageXObject:\n function SVGGraphics_paintInlineImageXObject(imgData, mask) {\n var width = imgData.width;\n var height = imgData.height;\n\n var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema);\n var cliprect = document.createElementNS(NS, 'svg:rect');\n cliprect.setAttributeNS(null, 'x', '0');\n cliprect.setAttributeNS(null, 'y', '0');\n cliprect.setAttributeNS(null, 'width', pf(width));\n cliprect.setAttributeNS(null, 'height', pf(height));\n this.current.element = cliprect;\n this.clip('nonzero');\n var imgEl = document.createElementNS(NS, 'svg:image');\n imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc);\n imgEl.setAttributeNS(null, 'x', '0');\n imgEl.setAttributeNS(null, 'y', pf(-height));\n imgEl.setAttributeNS(null, 'width', pf(width) + 'px');\n imgEl.setAttributeNS(null, 'height', pf(height) + 'px');\n imgEl.setAttributeNS(null, 'transform',\n 'scale(' + pf(1 / width) + ' ' +\n pf(-1 / height) + ')');\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n },\n\n paintImageMaskXObject:\n function SVGGraphics_paintImageMaskXObject(imgData) {\n var current = this.current;\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = current.fillColor;\n\n current.maskId = 'mask' + maskCount++;\n var mask = document.createElementNS(NS, 'svg:mask');\n mask.setAttributeNS(null, 'id', current.maskId);\n\n var rect = document.createElementNS(NS, 'svg:rect');\n rect.setAttributeNS(null, 'x', '0');\n rect.setAttributeNS(null, 'y', '0');\n rect.setAttributeNS(null, 'width', pf(width));\n rect.setAttributeNS(null, 'height', pf(height));\n rect.setAttributeNS(null, 'fill', fillColor);\n rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')');\n this.defs.appendChild(mask);\n\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n },\n\n paintFormXObjectBegin:\n function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {\n if (isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2],\n matrix[3], matrix[4], matrix[5]);\n }\n\n if (isArray(bbox) && bbox.length === 4) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n\n var cliprect = document.createElementNS(NS, 'svg:rect');\n cliprect.setAttributeNS(null, 'x', bbox[0]);\n cliprect.setAttributeNS(null, 'y', bbox[1]);\n cliprect.setAttributeNS(null, 'width', pf(width));\n cliprect.setAttributeNS(null, 'height', pf(height));\n this.current.element = cliprect;\n this.clip('nonzero');\n this.endPath();\n }\n },\n\n paintFormXObjectEnd:\n function SVGGraphics_paintFormXObjectEnd() {},\n\n /**\n * @private\n */\n _initialize: function SVGGraphics_initialize(viewport) {\n // Create the SVG element.\n var svg = document.createElementNS(NS, 'svg:svg');\n svg.setAttributeNS(null, 'version', '1.1');\n svg.setAttributeNS(null, 'width', viewport.width + 'px');\n svg.setAttributeNS(null, 'height', viewport.height + 'px');\n svg.setAttributeNS(null, 'preserveAspectRatio', 'none');\n svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width +\n ' ' + viewport.height);\n\n // Create the definitions element.\n var definitions = document.createElementNS(NS, 'svg:defs');\n svg.appendChild(definitions);\n this.defs = definitions;\n\n // Create the root group element, which acts a container for all other\n // groups and applies the viewport transform.\n var rootGroup = document.createElementNS(NS, 'svg:g');\n rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform));\n svg.appendChild(rootGroup);\n\n // For the construction of the SVG image we are only interested in the\n // root group, so we expose it as the entry point of the SVG image for\n // the other code in this class.\n this.svg = rootGroup;\n\n return svg;\n },\n\n /**\n * @private\n */\n _ensureClipGroup: function SVGGraphics_ensureClipGroup() {\n if (!this.current.clipGroup) {\n var clipGroup = document.createElementNS(NS, 'svg:g');\n clipGroup.setAttributeNS(null, 'clip-path',\n this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n },\n\n /**\n * @private\n */\n _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = document.createElementNS(NS, 'svg:g');\n this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n return this.tgrp;\n },\n };\n return SVGGraphics;\n})();\n\n}\n\nexport {\n SVGGraphics,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/svg.js","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AbortException, createPromiseCapability, Util } from '../shared/util';\nimport { CustomStyle, getDefaultSetting } from './dom_utils';\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {TextContent} textContent - (optional) Text content to render\n * (the object is returned by the page's getTextContent() method).\n * @property {ReadableStream} textContentStream - (optional) Text content\n * stream to render (the stream is returned by the page's\n * streamTextContent() method).\n * @property {HTMLElement} container - HTML element that will contain text runs.\n * @property {PageViewport} viewport - The target viewport to properly\n * layout the text runs.\n * @property {Array} textDivs - (optional) HTML elements that are correspond\n * the text items of the textContent input. This is output and shall be\n * initially be set to empty array.\n * @property {Array} textContentItemsStr - (optional) Strings that correspond\n * the `str` property of the text items of textContent input. This is output\n * and shall be initially be set to empty array.\n * @property {number} timeout - (optional) Delay in milliseconds before\n * rendering of the text runs occurs.\n * @property {boolean} enhanceTextSelection - (optional) Whether to turn on the\n * text selection enhancement.\n */\nvar renderTextLayer = (function renderTextLayerClosure() {\n var MAX_TEXT_DIVS_TO_RENDER = 100000;\n\n var NonWhitespaceRegexp = /\\S/;\n\n function isAllWhitespace(str) {\n return !NonWhitespaceRegexp.test(str);\n }\n\n // Text layers may contain many thousand div's, and using `styleBuf` avoids\n // creating many intermediate strings when building their 'style' properties.\n var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0,\n 'px; font-family: ', '', ';'];\n\n function appendText(task, geom, styles) {\n // Initialize all used properties to keep the caches monomorphic.\n var textDiv = document.createElement('div');\n var textDivProperties = {\n style: null,\n angle: 0,\n canvasWidth: 0,\n isWhitespace: false,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n };\n\n task._textDivs.push(textDiv);\n if (isAllWhitespace(geom.str)) {\n textDivProperties.isWhitespace = true;\n task._textDivProperties.set(textDiv, textDivProperties);\n return;\n }\n\n var tx = Util.transform(task._viewport.transform, geom.transform);\n var angle = Math.atan2(tx[1], tx[0]);\n var style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n var fontHeight = Math.sqrt((tx[2] * tx[2]) + (tx[3] * tx[3]));\n var fontAscent = fontHeight;\n if (style.ascent) {\n fontAscent = style.ascent * fontAscent;\n } else if (style.descent) {\n fontAscent = (1 + style.descent) * fontAscent;\n }\n\n var left;\n var top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + (fontAscent * Math.sin(angle));\n top = tx[5] - (fontAscent * Math.cos(angle));\n }\n styleBuf[1] = left;\n styleBuf[3] = top;\n styleBuf[5] = fontHeight;\n styleBuf[7] = style.fontFamily;\n textDivProperties.style = styleBuf.join('');\n textDiv.setAttribute('style', textDivProperties.style);\n\n textDiv.textContent = geom.str;\n // |fontName| is only used by the Font Inspector. This test will succeed\n // when e.g. the Font Inspector is off but the Stepper is on, but it's\n // not worth the effort to do a more accurate test. We only use `dataset`\n // here to make the font name available for the debugger.\n if (getDefaultSetting('pdfBug')) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\n if (geom.str.length > 1) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection) {\n var angleCos = 1, angleSin = 0;\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n var divWidth = (style.vertical ? geom.height : geom.width) *\n task._viewport.scale;\n var divHeight = fontHeight;\n\n var m, b;\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m,\n });\n }\n }\n\n function render(task) {\n if (task._canceled) {\n return;\n }\n var textDivs = task._textDivs;\n var capability = task._capability;\n var textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (var i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n }\n\n function expand(task) {\n var bounds = task._bounds;\n var viewport = task._viewport;\n\n var expanded = expandBounds(viewport.width, viewport.height, bounds);\n for (var i = 0; i < expanded.length; i++) {\n var div = bounds[i].div;\n var divProperties = task._textDivProperties.get(div);\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n task._textDivProperties.set(div, divProperties);\n continue;\n }\n // Box is rotated -- trying to find padding so rotated div will not\n // exceed its expanded bounds.\n var e = expanded[i], b = bounds[i];\n var m = b.m, c = m[0], s = m[1];\n // Finding intersections with expanded box.\n var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n var ts = new Float64Array(64);\n points.forEach(function (p, i) {\n var t = Util.applyTransform(p, m);\n ts[i + 0] = c && (e.left - t[0]) / c;\n ts[i + 4] = s && (e.top - t[1]) / s;\n ts[i + 8] = c && (e.right - t[0]) / c;\n ts[i + 12] = s && (e.bottom - t[1]) / s;\n\n ts[i + 16] = s && (e.left - t[0]) / -s;\n ts[i + 20] = c && (e.top - t[1]) / c;\n ts[i + 24] = s && (e.right - t[0]) / -s;\n ts[i + 28] = c && (e.bottom - t[1]) / c;\n\n ts[i + 32] = c && (e.left - t[0]) / -c;\n ts[i + 36] = s && (e.top - t[1]) / -s;\n ts[i + 40] = c && (e.right - t[0]) / -c;\n ts[i + 44] = s && (e.bottom - t[1]) / -s;\n\n ts[i + 48] = s && (e.left - t[0]) / s;\n ts[i + 52] = c && (e.top - t[1]) / -c;\n ts[i + 56] = s && (e.right - t[0]) / s;\n ts[i + 60] = c && (e.bottom - t[1]) / -c;\n });\n var findPositiveMin = function (ts, offset, count) {\n var result = 0;\n for (var i = 0; i < count; i++) {\n var t = ts[offset++];\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n return result;\n };\n // Not based on math, but to simplify calculations, using cos and sin\n // absolute values to not exceed the box (it can but insignificantly).\n var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n task._textDivProperties.set(div, divProperties);\n }\n }\n\n function expandBounds(width, height, boxes) {\n var bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined,\n };\n });\n expandBoundsLTR(width, bounds);\n var expanded = new Array(boxes.length);\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0,\n };\n });\n\n // Rotating on 90 degrees and extending extended boxes. Reusing the bounds\n // array and objects.\n boxes.map(function (box, i) {\n var e = expanded[i], b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n });\n return expanded;\n }\n\n function expandBoundsLTR(width, bounds) {\n // Sorting by x1 coordinate and walk by the bounds in the same order.\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n\n // First we see on the horizon is a fake boundary.\n var fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0,\n };\n var horizon = [{\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary,\n }];\n\n bounds.forEach(function (boundary) {\n // Searching for the affected part of horizon.\n // TODO red-black tree or simple binary search\n var i = 0;\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n var j = horizon.length - 1;\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n var horizonPart, affectedBoundary;\n var q, k, maxXNew = -Infinity;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var xNew;\n if (affectedBoundary.x2 > boundary.x1) {\n // In the middle of the previous element, new x shall be at the\n // boundary start. Extending if further if the affected bondary\n // placed on top of the current one.\n xNew = affectedBoundary.index > boundary.index ?\n affectedBoundary.x1New : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n // We have some space in between, new x in middle will be a fair\n // choice.\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n // Affected boundary has x2new set, using it as new x.\n xNew = affectedBoundary.x2New;\n }\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n // Set new x1 for current boundary.\n boundary.x1New = maxXNew;\n\n // Adjusts new x2 for the affected boundaries.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n // Was not set yet, choosing new x if possible.\n if (affectedBoundary.x2 > boundary.x1) {\n // Current and affected boundaries intersect. If affected boundary\n // is placed on top of the current, shrinking the affected.\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n // Affected boundary is touching new x, pushing it back.\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n // Fixing the horizon.\n var changedHorizon = [], lastBoundary = null;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n // Checking which boundary will be visible.\n var useBoundary = affectedBoundary.x2 > boundary.x2 ?\n affectedBoundary : boundary;\n if (lastBoundary === useBoundary) {\n // Merging with previous.\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary,\n });\n lastBoundary = useBoundary;\n }\n }\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary,\n });\n }\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary,\n });\n }\n\n // Set x2 new of boundary that is no longer visible (see overlapping case\n // above).\n // TODO more efficient, e.g. via reference counting.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n var used = false;\n for (k = i - 1; !used && k >= 0 &&\n horizon[k].start >= affectedBoundary.y1; k--) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = j + 1; !used && k < horizon.length &&\n horizon[k].end <= affectedBoundary.y2; k++) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(horizon,\n [i, j - i + 1].concat(changedHorizon));\n });\n\n // Set new x2 for all unset boundaries.\n horizon.forEach(function (horizonPart) {\n var affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n });\n }\n\n /**\n * Text layer rendering task.\n *\n * @param {TextContent} textContent\n * @param {HTMLElement} container\n * @param {PageViewport} viewport\n * @param {Array} textDivs\n * @param {boolean} enhanceTextSelection\n * @private\n */\n function TextLayerRenderTask({ textContent, textContentStream, container,\n viewport, textDivs, textContentItemsStr,\n enhanceTextSelection, }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = createPromiseCapability();\n this._renderTimer = null;\n this._bounds = [];\n }\n TextLayerRenderTask.prototype = {\n get promise() {\n return this._capability.promise;\n },\n\n cancel: function TextLayer_cancel() {\n if (this._reader) {\n this._reader.cancel(new AbortException('text layer task cancelled'));\n this._reader = null;\n }\n this._canceled = true;\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n this._capability.reject('canceled');\n },\n\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n this._textContentItemsStr.push(items[i].str);\n appendText(this, items[i], styleCache);\n }\n },\n\n _layoutText(textDiv) {\n let textLayerFrag = this._container;\n\n let textDivProperties = this._textDivProperties.get(textDiv);\n if (textDivProperties.isWhitespace) {\n return;\n }\n\n let fontSize = textDiv.style.fontSize;\n let fontFamily = textDiv.style.fontFamily;\n\n // Only build font string and set to context if different from last.\n if (fontSize !== this._layoutTextLastFontSize ||\n fontFamily !== this._layoutTextLastFontFamily) {\n this._layoutTextCtx.font = fontSize + ' ' + fontFamily;\n this._lastFontSize = fontSize;\n this._lastFontFamily = fontFamily;\n }\n\n let width = this._layoutTextCtx.measureText(textDiv.textContent).width;\n\n let transform = '';\n if (textDivProperties.canvasWidth !== 0 && width > 0) {\n textDivProperties.scale = textDivProperties.canvasWidth / width;\n transform = 'scaleX(' + textDivProperties.scale + ')';\n }\n if (textDivProperties.angle !== 0) {\n transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform;\n }\n if (transform !== '') {\n textDivProperties.originalTransform = transform;\n CustomStyle.setProp('transform', textDiv, transform);\n }\n this._textDivProperties.set(textDiv, textDivProperties);\n textLayerFrag.appendChild(textDiv);\n },\n\n _render: function TextLayer_render(timeout) {\n let capability = createPromiseCapability();\n let styleCache = Object.create(null);\n\n // The temporary canvas is used to measure text length in the DOM.\n let canvas = document.createElement('canvas');\n if (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('FIREFOX || MOZCENTRAL || GENERIC')) {\n canvas.mozOpaque = true;\n }\n this._layoutTextCtx = canvas.getContext('2d', { alpha: false, });\n\n if (this._textContent) {\n let textItems = this._textContent.items;\n let textStyles = this._textContent.styles;\n this._processItems(textItems, textStyles);\n capability.resolve();\n } else if (this._textContentStream) {\n let pump = () => {\n this._reader.read().then(({ value, done, }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Util.extendObj(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error('Neither \"textContent\" nor \"textContentStream\"' +\n ' parameters specified.');\n }\n\n capability.promise.then(() => {\n styleCache = null;\n if (!timeout) { // Render right away\n render(this);\n } else { // Schedule\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n },\n\n expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n\n for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n var div = this._textDivs[i];\n var divProperties = this._textDivProperties.get(div);\n\n if (divProperties.isWhitespace) {\n continue;\n }\n if (expandDivs) {\n var transform = '', padding = '';\n\n if (divProperties.scale !== 1) {\n transform = 'scaleX(' + divProperties.scale + ')';\n }\n if (divProperties.angle !== 0) {\n transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;\n }\n if (divProperties.paddingLeft !== 0) {\n padding += ' padding-left: ' +\n (divProperties.paddingLeft / divProperties.scale) + 'px;';\n transform += ' translateX(' +\n (-divProperties.paddingLeft / divProperties.scale) + 'px)';\n }\n if (divProperties.paddingTop !== 0) {\n padding += ' padding-top: ' + divProperties.paddingTop + 'px;';\n transform += ' translateY(' + (-divProperties.paddingTop) + 'px)';\n }\n if (divProperties.paddingRight !== 0) {\n padding += ' padding-right: ' +\n (divProperties.paddingRight / divProperties.scale) + 'px;';\n }\n if (divProperties.paddingBottom !== 0) {\n padding += ' padding-bottom: ' +\n divProperties.paddingBottom + 'px;';\n }\n\n if (padding !== '') {\n div.setAttribute('style', divProperties.style + padding);\n }\n if (transform !== '') {\n CustomStyle.setProp('transform', div, transform);\n }\n } else {\n div.style.padding = 0;\n CustomStyle.setProp('transform', div,\n divProperties.originalTransform || '');\n }\n }\n },\n };\n\n /**\n * Starts rendering of the text layer.\n *\n * @param {TextLayerRenderParameters} renderParameters\n * @returns {TextLayerRenderTask}\n */\n function renderTextLayer(renderParameters) {\n var task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection,\n });\n task._render(renderParameters.timeout);\n return task;\n }\n\n return renderTextLayer;\n})();\n\nexport {\n renderTextLayer,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/text_layer.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction fixMetadata(meta) {\n return meta.replace(/>\\\\376\\\\377([^<]+)/g, function(all, codes) {\n var bytes = codes.replace(/\\\\([0-3])([0-7])([0-7])/g,\n function(code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n });\n var chars = '';\n for (var i = 0; i < bytes.length; i += 2) {\n var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n chars += (code >= 32 && code < 127 && code !== 60 && code !== 62 &&\n code !== 38) ? String.fromCharCode(code) :\n '&#x' + (0x10000 + code).toString(16).substring(1) + ';';\n }\n return '>' + chars;\n });\n}\n\nfunction Metadata(meta) {\n if (typeof meta === 'string') {\n // Ghostscript produces invalid metadata\n meta = fixMetadata(meta);\n\n var parser = new DOMParser();\n meta = parser.parseFromString(meta, 'application/xml');\n } else if (!(meta instanceof Document)) {\n throw new Error('Metadata: Invalid metadata object');\n }\n\n this.metaDocument = meta;\n this.metadata = Object.create(null);\n this.parse();\n}\n\nMetadata.prototype = {\n parse: function Metadata_parse() {\n var doc = this.metaDocument;\n var rdf = doc.documentElement;\n\n if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { // Wrapped in \n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {\n rdf = rdf.nextSibling;\n }\n }\n\n var nodeName = (rdf) ? rdf.nodeName.toLowerCase() : null;\n if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {\n return;\n }\n\n var children = rdf.childNodes, desc, entry, name, i, ii, length, iLength;\n for (i = 0, length = children.length; i < length; i++) {\n desc = children[i];\n if (desc.nodeName.toLowerCase() !== 'rdf:description') {\n continue;\n }\n\n for (ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) {\n if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text') {\n entry = desc.childNodes[ii];\n name = entry.nodeName.toLowerCase();\n this.metadata[name] = entry.textContent.trim();\n }\n }\n }\n },\n\n get: function Metadata_get(name) {\n return this.metadata[name] || null;\n },\n\n has: function Metadata_has(name) {\n return typeof this.metadata[name] !== 'undefined';\n },\n};\n\nexport {\n Metadata,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/metadata.js","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-multi-str */\n\nimport { getDefaultSetting } from './dom_utils';\nimport { shadow } from '../shared/util';\n\nvar WebGLUtils = (function WebGLUtilsClosure() {\n function loadShader(gl, code, shaderType) {\n var shader = gl.createShader(shaderType);\n gl.shaderSource(shader, code);\n gl.compileShader(shader);\n var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n if (!compiled) {\n var errorMsg = gl.getShaderInfoLog(shader);\n throw new Error('Error during shader compilation: ' + errorMsg);\n }\n return shader;\n }\n function createVertexShader(gl, code) {\n return loadShader(gl, code, gl.VERTEX_SHADER);\n }\n function createFragmentShader(gl, code) {\n return loadShader(gl, code, gl.FRAGMENT_SHADER);\n }\n function createProgram(gl, shaders) {\n var program = gl.createProgram();\n for (var i = 0, ii = shaders.length; i < ii; ++i) {\n gl.attachShader(program, shaders[i]);\n }\n gl.linkProgram(program);\n var linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n if (!linked) {\n var errorMsg = gl.getProgramInfoLog(program);\n throw new Error('Error during program linking: ' + errorMsg);\n }\n return program;\n }\n function createTexture(gl, image, textureId) {\n gl.activeTexture(textureId);\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n // Set the parameters so we can render any size image.\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\n // Upload the image into the texture.\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n return texture;\n }\n\n var currentGL, currentCanvas;\n function generateGL() {\n if (currentGL) {\n return;\n }\n\n // The temporary canvas is used in the WebGL context.\n currentCanvas = document.createElement('canvas');\n currentGL = currentCanvas.getContext('webgl',\n { premultipliedalpha: false, });\n }\n\n var smaskVertexShaderCode = '\\\n attribute vec2 a_position; \\\n attribute vec2 a_texCoord; \\\n \\\n uniform vec2 u_resolution; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_texCoord = a_texCoord; \\\n } ';\n\n var smaskFragmentShaderCode = '\\\n precision mediump float; \\\n \\\n uniform vec4 u_backdrop; \\\n uniform int u_subtype; \\\n uniform sampler2D u_image; \\\n uniform sampler2D u_mask; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec4 imageColor = texture2D(u_image, v_texCoord); \\\n vec4 maskColor = texture2D(u_mask, v_texCoord); \\\n if (u_backdrop.a > 0.0) { \\\n maskColor.rgb = maskColor.rgb * maskColor.a + \\\n u_backdrop.rgb * (1.0 - maskColor.a); \\\n } \\\n float lum; \\\n if (u_subtype == 0) { \\\n lum = maskColor.a; \\\n } else { \\\n lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \\\n maskColor.b * 0.11; \\\n } \\\n imageColor.a *= lum; \\\n imageColor.rgb *= imageColor.a; \\\n gl_FragColor = imageColor; \\\n } ';\n\n var smaskCache = null;\n\n function initSmaskGL() {\n var canvas, gl;\n\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n\n // setup a GLSL program\n var vertexShader = createVertexShader(gl, smaskVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');\n cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');\n\n var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');\n var texLayerLocation = gl.getUniformLocation(program, 'u_image');\n var texMaskLocation = gl.getUniformLocation(program, 'u_mask');\n\n // provide texture coordinates for the rectangle.\n var texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n 0.0, 0.0,\n 1.0, 0.0,\n 0.0, 1.0,\n 0.0, 1.0,\n 1.0, 0.0,\n 1.0, 1.0]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(texCoordLocation);\n gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n\n gl.uniform1i(texLayerLocation, 0);\n gl.uniform1i(texMaskLocation, 1);\n\n smaskCache = cache;\n }\n\n function composeSMask(layer, mask, properties) {\n var width = layer.width, height = layer.height;\n\n if (!smaskCache) {\n initSmaskGL();\n }\n var cache = smaskCache, canvas = cache.canvas, gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n if (properties.backdrop) {\n gl.uniform4f(cache.resolutionLocation, properties.backdrop[0],\n properties.backdrop[1], properties.backdrop[2], 1);\n } else {\n gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);\n }\n gl.uniform1i(cache.subtypeLocation,\n properties.subtype === 'Luminosity' ? 1 : 0);\n\n // Create a textures\n var texture = createTexture(gl, layer, gl.TEXTURE0);\n var maskTexture = createTexture(gl, mask, gl.TEXTURE1);\n\n\n // Create a buffer and put a single clipspace rectangle in\n // it (2 triangles)\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n 0, 0,\n width, 0,\n 0, height,\n 0, height,\n width, 0,\n width, height]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n // draw\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n\n gl.flush();\n\n gl.deleteTexture(texture);\n gl.deleteTexture(maskTexture);\n gl.deleteBuffer(buffer);\n\n return canvas;\n }\n\n var figuresVertexShaderCode = '\\\n attribute vec2 a_position; \\\n attribute vec3 a_color; \\\n \\\n uniform vec2 u_resolution; \\\n uniform vec2 u_scale; \\\n uniform vec2 u_offset; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n vec2 position = (a_position + u_offset) * u_scale; \\\n vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_color = vec4(a_color / 255.0, 1.0); \\\n } ';\n\n var figuresFragmentShaderCode = '\\\n precision mediump float; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n gl_FragColor = v_color; \\\n } ';\n\n var figuresCache = null;\n\n function initFiguresGL() {\n var canvas, gl;\n\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n\n // setup a GLSL program\n var vertexShader = createVertexShader(gl, figuresVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');\n cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');\n cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n cache.colorLocation = gl.getAttribLocation(program, 'a_color');\n\n figuresCache = cache;\n }\n\n function drawFigures(width, height, backgroundColor, figures, context) {\n if (!figuresCache) {\n initFiguresGL();\n }\n var cache = figuresCache, canvas = cache.canvas, gl = cache.gl;\n\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n // count triangle points\n var count = 0;\n var i, ii, rows;\n for (i = 0, ii = figures.length; i < ii; i++) {\n switch (figures[i].type) {\n case 'lattice':\n rows = (figures[i].coords.length / figures[i].verticesPerRow) | 0;\n count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;\n break;\n case 'triangles':\n count += figures[i].coords.length;\n break;\n }\n }\n // transfer data\n var coords = new Float32Array(count * 2);\n var colors = new Uint8Array(count * 3);\n var coordsMap = context.coords, colorsMap = context.colors;\n var pIndex = 0, cIndex = 0;\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i], ps = figure.coords, cs = figure.colors;\n switch (figure.type) {\n case 'lattice':\n var cols = figure.verticesPerRow;\n rows = (ps.length / cols) | 0;\n for (var row = 1; row < rows; row++) {\n var offset = row * cols + 1;\n for (var col = 1; col < cols; col++, offset++) {\n coords[pIndex] = coordsMap[ps[offset - cols - 1]];\n coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];\n coords[pIndex + 2] = coordsMap[ps[offset - cols]];\n coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];\n coords[pIndex + 4] = coordsMap[ps[offset - 1]];\n coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];\n colors[cIndex] = colorsMap[cs[offset - cols - 1]];\n colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];\n colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];\n colors[cIndex + 3] = colorsMap[cs[offset - cols]];\n colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];\n colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];\n colors[cIndex + 6] = colorsMap[cs[offset - 1]];\n colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];\n colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];\n\n coords[pIndex + 6] = coords[pIndex + 2];\n coords[pIndex + 7] = coords[pIndex + 3];\n coords[pIndex + 8] = coords[pIndex + 4];\n coords[pIndex + 9] = coords[pIndex + 5];\n coords[pIndex + 10] = coordsMap[ps[offset]];\n coords[pIndex + 11] = coordsMap[ps[offset] + 1];\n colors[cIndex + 9] = colors[cIndex + 3];\n colors[cIndex + 10] = colors[cIndex + 4];\n colors[cIndex + 11] = colors[cIndex + 5];\n colors[cIndex + 12] = colors[cIndex + 6];\n colors[cIndex + 13] = colors[cIndex + 7];\n colors[cIndex + 14] = colors[cIndex + 8];\n colors[cIndex + 15] = colorsMap[cs[offset]];\n colors[cIndex + 16] = colorsMap[cs[offset] + 1];\n colors[cIndex + 17] = colorsMap[cs[offset] + 2];\n pIndex += 12;\n cIndex += 18;\n }\n }\n break;\n case 'triangles':\n for (var j = 0, jj = ps.length; j < jj; j++) {\n coords[pIndex] = coordsMap[ps[j]];\n coords[pIndex + 1] = coordsMap[ps[j] + 1];\n colors[cIndex] = colorsMap[cs[j]];\n colors[cIndex + 1] = colorsMap[cs[j] + 1];\n colors[cIndex + 2] = colorsMap[cs[j] + 2];\n pIndex += 2;\n cIndex += 3;\n }\n break;\n }\n }\n\n // draw\n if (backgroundColor) {\n gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255,\n backgroundColor[2] / 255, 1.0);\n } else {\n gl.clearColor(0, 0, 0, 0);\n }\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n var coordsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n var colorsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.colorLocation);\n gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false,\n 0, 0);\n\n gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);\n gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);\n\n gl.drawArrays(gl.TRIANGLES, 0, count);\n\n gl.flush();\n\n gl.deleteBuffer(coordsBuffer);\n gl.deleteBuffer(colorsBuffer);\n\n return canvas;\n }\n\n function cleanup() {\n if (smaskCache && smaskCache.canvas) {\n smaskCache.canvas.width = 0;\n smaskCache.canvas.height = 0;\n }\n if (figuresCache && figuresCache.canvas) {\n figuresCache.canvas.width = 0;\n figuresCache.canvas.height = 0;\n }\n smaskCache = null;\n figuresCache = null;\n }\n\n return {\n get isEnabled() {\n if (getDefaultSetting('disableWebGL')) {\n return false;\n }\n var enabled = false;\n try {\n generateGL();\n enabled = !!currentGL;\n } catch (e) { }\n return shadow(this, 'isEnabled', enabled);\n },\n composeSMask,\n drawFigures,\n clear: cleanup,\n };\n})();\n\nexport {\n WebGLUtils,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/webgl.js","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n _UnsupportedManager, getDocument, LoopbackPort, PDFDataRangeTransport,\n PDFWorker\n} from './api';\nimport {\n addLinkAttributes, CustomStyle, DEFAULT_LINK_REL, getFilenameFromUrl,\n isExternalLinkTargetSet, isValidUrl, LinkTarget\n} from './dom_utils';\nimport {\n createBlob, createObjectURL, createPromiseCapability, deprecated,\n getVerbosityLevel, globalScope, InvalidPDFException, isLittleEndian,\n MissingPDFException, OPS, PageViewport, PasswordException, PasswordResponses,\n removeNullCharacters, setVerbosityLevel, shadow, UnexpectedResponseException,\n UnknownErrorException, UNSUPPORTED_FEATURES, Util, VERBOSITY_LEVELS, warn\n} from '../shared/util';\nimport { AnnotationLayer } from './annotation_layer';\nimport { Metadata } from './metadata';\nimport { renderTextLayer } from './text_layer';\nimport { SVGGraphics } from './svg';\n\nvar isWorker = (typeof window === 'undefined');\n\n// The global PDFJS object is now deprecated and will not be supported in\n// the future. The members below are maintained for backward compatibility\n// and shall not be extended or modified. If the global.js is included as\n// a module, we will create a global PDFJS object instance or use existing.\nif (!globalScope.PDFJS) {\n globalScope.PDFJS = {};\n}\nvar PDFJS = globalScope.PDFJS;\n\nif (typeof PDFJSDev !== 'undefined') {\n PDFJS.version = PDFJSDev.eval('BUNDLE_VERSION');\n PDFJS.build = PDFJSDev.eval('BUNDLE_BUILD');\n}\n\nPDFJS.pdfBug = false;\n\nif (PDFJS.verbosity !== undefined) {\n setVerbosityLevel(PDFJS.verbosity);\n}\ndelete PDFJS.verbosity;\nObject.defineProperty(PDFJS, 'verbosity', {\n get() {\n return getVerbosityLevel();\n },\n set(level) {\n setVerbosityLevel(level);\n },\n enumerable: true,\n configurable: true,\n});\n\nPDFJS.VERBOSITY_LEVELS = VERBOSITY_LEVELS;\nPDFJS.OPS = OPS;\nPDFJS.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nPDFJS.isValidUrl = isValidUrl;\nPDFJS.shadow = shadow;\nPDFJS.createBlob = createBlob;\nPDFJS.createObjectURL = function PDFJS_createObjectURL(data, contentType) {\n return createObjectURL(data, contentType, PDFJS.disableCreateObjectURL);\n};\nObject.defineProperty(PDFJS, 'isLittleEndian', {\n configurable: true,\n get: function PDFJS_isLittleEndian() {\n return shadow(PDFJS, 'isLittleEndian', isLittleEndian());\n },\n});\nPDFJS.removeNullCharacters = removeNullCharacters;\nPDFJS.PasswordResponses = PasswordResponses;\nPDFJS.PasswordException = PasswordException;\nPDFJS.UnknownErrorException = UnknownErrorException;\nPDFJS.InvalidPDFException = InvalidPDFException;\nPDFJS.MissingPDFException = MissingPDFException;\nPDFJS.UnexpectedResponseException = UnexpectedResponseException;\nPDFJS.Util = Util;\nPDFJS.PageViewport = PageViewport;\nPDFJS.createPromiseCapability = createPromiseCapability;\n\n/**\n * The maximum allowed image size in total pixels e.g. width * height. Images\n * above this value will not be drawn. Use -1 for no limit.\n * @var {number}\n */\nPDFJS.maxImageSize = (PDFJS.maxImageSize === undefined ?\n -1 : PDFJS.maxImageSize);\n\n/**\n * The url of where the predefined Adobe CMaps are located. Include trailing\n * slash.\n * @var {string}\n */\nPDFJS.cMapUrl = (PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl);\n\n/**\n * Specifies if CMaps are binary packed.\n * @var {boolean}\n */\nPDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked;\n\n/**\n * By default fonts are converted to OpenType fonts and loaded via font face\n * rules. If disabled, the font will be rendered using a built in font\n * renderer that constructs the glyphs with primitive path commands.\n * @var {boolean}\n */\nPDFJS.disableFontFace = (PDFJS.disableFontFace === undefined ?\n false : PDFJS.disableFontFace);\n\n/**\n * Path for image resources, mainly for annotation icons. Include trailing\n * slash.\n * @var {string}\n */\nPDFJS.imageResourcesPath = (PDFJS.imageResourcesPath === undefined ?\n '' : PDFJS.imageResourcesPath);\n\n/**\n * Disable the web worker and run all code on the main thread. This will\n * happen automatically if the browser doesn't support workers or sending\n * typed arrays to workers.\n * @var {boolean}\n */\nPDFJS.disableWorker = (PDFJS.disableWorker === undefined ?\n false : PDFJS.disableWorker);\n\n/**\n * Path and filename of the worker file. Required when the worker is enabled\n * in development mode. If unspecified in the production build, the worker\n * will be loaded based on the location of the pdf.js file. It is recommended\n * that the workerSrc is set in a custom application to prevent issues caused\n * by third-party frameworks and libraries.\n * @var {string}\n */\nPDFJS.workerSrc = (PDFJS.workerSrc === undefined ? null : PDFJS.workerSrc);\n\n/**\n * Defines global port for worker process. Overrides workerSrc and\n * disableWorker setting.\n */\nPDFJS.workerPort = (PDFJS.workerPort === undefined ? null : PDFJS.workerPort);\n\n/**\n * Disable range request loading of PDF files. When enabled and if the server\n * supports partial content requests then the PDF will be fetched in chunks.\n * Enabled (false) by default.\n * @var {boolean}\n */\nPDFJS.disableRange = (PDFJS.disableRange === undefined ?\n false : PDFJS.disableRange);\n\n/**\n * Disable streaming of PDF file data. By default PDF.js attempts to load PDF\n * in chunks. This default behavior can be disabled.\n * @var {boolean}\n */\nPDFJS.disableStream = (PDFJS.disableStream === undefined ?\n false : PDFJS.disableStream);\n\n/**\n * Disable pre-fetching of PDF file data. When range requests are enabled\n * PDF.js will automatically keep fetching more data even if it isn't needed\n * to display the current page. This default behavior can be disabled.\n *\n * NOTE: It is also necessary to disable streaming, see above,\n * in order for disabling of pre-fetching to work correctly.\n * @var {boolean}\n */\nPDFJS.disableAutoFetch = (PDFJS.disableAutoFetch === undefined ?\n false : PDFJS.disableAutoFetch);\n\n/**\n * Enables special hooks for debugging PDF.js.\n * @var {boolean}\n */\nPDFJS.pdfBug = (PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug);\n\n/**\n * Enables transfer usage in postMessage for ArrayBuffers.\n * @var {boolean}\n */\nPDFJS.postMessageTransfers = (PDFJS.postMessageTransfers === undefined ?\n true : PDFJS.postMessageTransfers);\n\n/**\n * Disables URL.createObjectURL usage.\n * @var {boolean}\n */\nPDFJS.disableCreateObjectURL = (PDFJS.disableCreateObjectURL === undefined ?\n false : PDFJS.disableCreateObjectURL);\n\n/**\n * Disables WebGL usage.\n * @var {boolean}\n */\nPDFJS.disableWebGL = (PDFJS.disableWebGL === undefined ?\n true : PDFJS.disableWebGL);\n\n/**\n * Specifies the |target| attribute for external links.\n * The constants from PDFJS.LinkTarget should be used:\n * - NONE [default]\n * - SELF\n * - BLANK\n * - PARENT\n * - TOP\n * @var {number}\n */\nPDFJS.externalLinkTarget = (PDFJS.externalLinkTarget === undefined ?\n LinkTarget.NONE : PDFJS.externalLinkTarget);\n\n/**\n * Specifies the |rel| attribute for external links. Defaults to stripping\n * the referrer.\n * @var {string}\n */\nPDFJS.externalLinkRel = (PDFJS.externalLinkRel === undefined ?\n DEFAULT_LINK_REL : PDFJS.externalLinkRel);\n\n/**\n * Determines if we can eval strings as JS. Primarily used to improve\n * performance for font rendering.\n * @var {boolean}\n */\nPDFJS.isEvalSupported = (PDFJS.isEvalSupported === undefined ?\n true : PDFJS.isEvalSupported);\n\n/**\n * Opt-in to backwards incompatible API changes. NOTE:\n * If the `PDFJS_NEXT` build flag is set, it will override this setting.\n * @var {boolean}\n */\nPDFJS.pdfjsNext = (PDFJS.pdfjsNext === undefined) ? false : PDFJS.pdfjsNext;\n\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow;\n delete PDFJS.openExternalLinksInNewWindow;\n Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', {\n get() {\n return PDFJS.externalLinkTarget === LinkTarget.BLANK;\n },\n set(value) {\n if (value) {\n deprecated('PDFJS.openExternalLinksInNewWindow, please use ' +\n '\"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK\" instead.');\n }\n if (PDFJS.externalLinkTarget !== LinkTarget.NONE) {\n warn('PDFJS.externalLinkTarget is already initialized');\n return;\n }\n PDFJS.externalLinkTarget = value ? LinkTarget.BLANK : LinkTarget.NONE;\n },\n enumerable: true,\n configurable: true,\n });\n if (savedOpenExternalLinksInNewWindow) {\n /**\n * (Deprecated) Opens external links in a new window if enabled.\n * The default behavior opens external links in the PDF.js window.\n *\n * NOTE: This property has been deprecated, please use\n * `PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK` instead.\n * @var {boolean}\n */\n PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow;\n }\n}\n\nPDFJS.getDocument = getDocument;\nPDFJS.LoopbackPort = LoopbackPort;\nPDFJS.PDFDataRangeTransport = PDFDataRangeTransport;\nPDFJS.PDFWorker = PDFWorker;\n\nPDFJS.hasCanvasTypedArrays = true; // compatibility.js ensures this invariant\nPDFJS.CustomStyle = CustomStyle;\nPDFJS.LinkTarget = LinkTarget;\nPDFJS.addLinkAttributes = addLinkAttributes;\nPDFJS.getFilenameFromUrl = getFilenameFromUrl;\nPDFJS.isExternalLinkTargetSet = isExternalLinkTargetSet;\n\nPDFJS.AnnotationLayer = AnnotationLayer;\n\nPDFJS.renderTextLayer = renderTextLayer;\n\nPDFJS.Metadata = Metadata;\n\nPDFJS.SVGGraphics = SVGGraphics;\n\nPDFJS.UnsupportedManager = _UnsupportedManager;\n\nexport {\n globalScope,\n isWorker,\n PDFJS,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/global.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert, createPromiseCapability, globalScope, isInt, MissingPDFException,\n UnexpectedResponseException\n} from '../shared/util';\nimport { setPDFNetworkStreamClass } from './api';\n\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n throw new Error('Module \"./network\" shall not ' +\n 'be used with FIREFOX or MOZCENTRAL build.');\n}\n\nvar OK_RESPONSE = 200;\nvar PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction NetworkManager(url, args) {\n this.url = url;\n args = args || {};\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || {};\n this.withCredentials = args.withCredentials || false;\n this.getXhr = args.getXhr ||\n function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n this.loadedRequests = Object.create(null);\n}\n\nfunction getArrayBuffer(xhr) {\n var data = xhr.response;\n if (typeof data !== 'string') {\n return data;\n }\n var length = data.length;\n var array = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n array[i] = data.charCodeAt(i) & 0xFF;\n }\n return array.buffer;\n}\n\nvar supportsMozChunked =\n typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME') ? false :\n (function supportsMozChunkedClosure() {\n try {\n var x = new XMLHttpRequest();\n // Firefox 37- required .open() to be called before setting responseType.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=707484\n // Even though the URL is not visited, .open() could fail if the URL is\n // blocked, e.g. via the connect-src CSP directive or the NoScript addon.\n // When this error occurs, this feature detection method will mistakenly\n // report that moz-chunked-arraybuffer is not supported in Firefox 37-.\n x.open('GET', globalScope.location.href);\n x.responseType = 'moz-chunked-arraybuffer';\n return x.responseType === 'moz-chunked-arraybuffer';\n } catch (e) {\n return false;\n }\n})();\n\nNetworkManager.prototype = {\n requestRange: function NetworkManager_requestRange(begin, end, listeners) {\n var args = {\n begin,\n end,\n };\n for (var prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n },\n\n requestFull: function NetworkManager_requestFull(listeners) {\n return this.request(listeners);\n },\n\n request: function NetworkManager_request(args) {\n var xhr = this.getXhr();\n var xhrId = this.currXhrId++;\n var pendingRequest = this.pendingRequests[xhrId] = {\n xhr,\n };\n\n xhr.open('GET', this.url);\n xhr.withCredentials = this.withCredentials;\n for (var property in this.httpHeaders) {\n var value = this.httpHeaders[property];\n if (typeof value === 'undefined') {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && 'begin-left' in args && 'end-left' in args) {\n var rangeStr = args.begin + '-' + (args.end - 1);\n xhr.setRequestHeader('Range', 'bytes=' + rangeStr);\n pendingRequest.expectedStatus = 206;\n } else {\n pendingRequest.expectedStatus = 200;\n }\n\n var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData;\n if (useMozChunkedLoading) {\n xhr.responseType = 'moz-chunked-arraybuffer';\n pendingRequest.onProgressiveData = args.onProgressiveData;\n pendingRequest.mozChunked = true;\n } else {\n xhr.responseType = 'arraybuffer';\n }\n\n if (args.onError) {\n xhr.onerror = function(evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n },\n\n onProgress: function NetworkManager_onProgress(xhrId, evt) {\n var pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n // Maybe abortRequest was called...\n return;\n }\n\n if (pendingRequest.mozChunked) {\n var chunk = getArrayBuffer(pendingRequest.xhr);\n pendingRequest.onProgressiveData(chunk);\n }\n\n var onProgress = pendingRequest.onProgress;\n if (onProgress) {\n onProgress(evt);\n }\n },\n\n onStateChange: function NetworkManager_onStateChange(xhrId, evt) {\n var pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n // Maybe abortRequest was called...\n return;\n }\n\n var xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // success status == 0 can be on ftp, file and other protocols\n if (xhr.status === 0 && this.isHttp) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n return;\n }\n var xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n var ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (!ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n return;\n }\n\n this.loadedRequests[xhrId] = true;\n\n var chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n var rangeHeader = xhr.getResponseHeader('Content-Range');\n var matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n var begin = parseInt(matches[1], 10);\n pendingRequest.onDone({\n begin,\n chunk,\n });\n } else if (pendingRequest.onProgressiveData) {\n pendingRequest.onDone(null);\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n },\n\n hasPendingRequests: function NetworkManager_hasPendingRequests() {\n for (var xhrId in this.pendingRequests) {\n return true;\n }\n return false;\n },\n\n getRequestXhr: function NetworkManager_getXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n },\n\n isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) {\n return !!(this.pendingRequests[xhrId].onProgressiveData);\n },\n\n isPendingRequest: function NetworkManager_isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n },\n\n isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) {\n return xhrId in this.loadedRequests;\n },\n\n abortAllRequests: function NetworkManager_abortAllRequests() {\n for (var xhrId in this.pendingRequests) {\n this.abortRequest(xhrId | 0);\n }\n },\n\n abortRequest: function NetworkManager_abortRequest(xhrId) {\n var xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n },\n};\n\n/** @implements {IPDFStream} */\nfunction PDFNetworkStream(options) {\n this._options = options;\n var source = options.source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n}\n\nPDFNetworkStream.prototype = {\n _onRangeRequestReaderClosed:\n function PDFNetworkStream_onRangeRequestReaderClosed(reader) {\n var i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n },\n\n getFullReader: function PDFNetworkStream_getFullReader() {\n assert(!this._fullRequestReader);\n this._fullRequestReader =\n new PDFNetworkStreamFullRequestReader(this._manager, this._options);\n return this._fullRequestReader;\n },\n\n getRangeReader: function PDFNetworkStream_getRangeReader(begin, end) {\n var reader = new PDFNetworkStreamRangeRequestReader(this._manager,\n begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n },\n\n cancelAllRequests: function PDFNetworkStream_cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n var readers = this._rangeRequestReaders.slice(0);\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n },\n};\n\n/** @implements {IPDFStreamReader} */\nfunction PDFNetworkStreamFullRequestReader(manager, options) {\n this._manager = manager;\n\n var source = options.source;\n var args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onProgressiveData: source.disableStream ? null :\n this._onProgressiveData.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = createPromiseCapability();\n this._disableRange = options.disableRange || false;\n this._contentLength = source.length; // optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n\n this.onProgress = null;\n}\n\nPDFNetworkStreamFullRequestReader.prototype = {\n _validateRangeRequestCapabilities: function\n PDFNetworkStreamFullRequestReader_validateRangeRequestCapabilities() {\n\n if (this._disableRange) {\n return false;\n }\n\n var networkManager = this._manager;\n if (!networkManager.isHttp) {\n return false;\n }\n var fullRequestXhrId = this._fullRequestId;\n var fullRequestXhr = networkManager.getRequestXhr(fullRequestXhrId);\n if (fullRequestXhr.getResponseHeader('Accept-Ranges') !== 'bytes') {\n return false;\n }\n\n var contentEncoding =\n fullRequestXhr.getResponseHeader('Content-Encoding') || 'identity';\n if (contentEncoding !== 'identity') {\n return false;\n }\n\n var length = fullRequestXhr.getResponseHeader('Content-Length');\n length = parseInt(length, 10);\n if (!isInt(length)) {\n return false;\n }\n\n this._contentLength = length; // setting right content length\n\n if (length <= 2 * this._rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does\n // not make any sense to abort the request and retry with a range\n // request.\n return false;\n }\n\n return true;\n },\n\n _onHeadersReceived:\n function PDFNetworkStreamFullRequestReader_onHeadersReceived() {\n\n if (this._validateRangeRequestCapabilities()) {\n this._isRangeSupported = true;\n }\n\n var networkManager = this._manager;\n var fullRequestXhrId = this._fullRequestId;\n if (networkManager.isStreamingRequest(fullRequestXhrId)) {\n // We can continue fetching when progressive loading is enabled,\n // and we don't need the autoFetch feature.\n this._isStreamingSupported = true;\n } else if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range\n // requests.\n networkManager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n },\n\n _onProgressiveData:\n function PDFNetworkStreamFullRequestReader_onProgressiveData(chunk) {\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n } else {\n this._cachedChunks.push(chunk);\n }\n },\n\n _onDone: function PDFNetworkStreamFullRequestReader_onDone(args) {\n if (args) {\n this._onProgressiveData(args.chunk);\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n },\n\n _onError: function PDFNetworkStreamFullRequestReader_onError(status) {\n var url = this._url;\n var exception;\n if (status === 404 || status === 0 && /^file:/.test(url)) {\n exception = new MissingPDFException('Missing PDF \"' + url + '\".');\n } else {\n exception = new UnexpectedResponseException(\n 'Unexpected server response (' + status +\n ') while retrieving PDF \"' + url + '\".', status);\n }\n this._storedError = exception;\n this._headersReceivedCapability.reject(exception);\n this._requests.forEach(function (requestCapability) {\n requestCapability.reject(exception);\n });\n this._requests = [];\n this._cachedChunks = [];\n },\n\n _onProgress: function PDFNetworkStreamFullRequestReader_onProgress(data) {\n if (this.onProgress) {\n this.onProgress({\n loaded: data.loaded,\n total: data.lengthComputable ? data.total : this._contentLength,\n });\n }\n },\n\n get isRangeSupported() {\n return this._isRangeSupported;\n },\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n },\n\n get contentLength() {\n return this._contentLength;\n },\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n },\n\n read: function PDFNetworkStreamFullRequestReader_read() {\n if (this._storedError) {\n return Promise.reject(this._storedError);\n }\n if (this._cachedChunks.length > 0) {\n var chunk = this._cachedChunks.shift();\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFNetworkStreamFullRequestReader_cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n },\n};\n\n/** @implements {IPDFStreamRangeReader} */\nfunction PDFNetworkStreamRangeRequestReader(manager, begin, end) {\n this._manager = manager;\n var args = {\n onDone: this._onDone.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n\n this.onProgress = null;\n this.onClosed = null;\n}\n\nPDFNetworkStreamRangeRequestReader.prototype = {\n _close: function PDFNetworkStreamRangeRequestReader_close() {\n if (this.onClosed) {\n this.onClosed(this);\n }\n },\n\n _onDone: function PDFNetworkStreamRangeRequestReader_onDone(data) {\n var chunk = data.chunk;\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n this._close();\n },\n\n _onProgress: function PDFNetworkStreamRangeRequestReader_onProgress(evt) {\n if (!this.isStreamingSupported && this.onProgress) {\n this.onProgress({\n loaded: evt.loaded,\n });\n }\n },\n\n get isStreamingSupported() {\n return false; // TODO allow progressive range bytes loading\n },\n\n read: function PDFNetworkStreamRangeRequestReader_read() {\n if (this._queuedChunk !== null) {\n var chunk = this._queuedChunk;\n this._queuedChunk = null;\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFNetworkStreamRangeRequestReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n },\n};\n\nsetPDFNetworkStreamClass(PDFNetworkStream);\n\nexport {\n PDFNetworkStream,\n NetworkManager,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/network.js","/*\n * To the extent possible under law, the authors have dedicated all copyright\n * and related and neighboring rights to this software to the public\n * domain worldwide. This software is distributed without any warranty.\n *\n * You should have received a copy of the CC0 Public Domain Dedication along\n * with this software. If not, see https://creativecommons.org/publicdomain/zero/1.0/.\n */\n\n(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap\n/******/ // The module cache\n/******/ var installedModules = {};\n/******/\n/******/ // The require function\n/******/ function __w_pdfjs_require__(moduleId) {\n/******/\n/******/ // Check if module is in cache\n/******/ if(installedModules[moduleId])\n/******/ return installedModules[moduleId].exports;\n/******/\n/******/ // Create a new module (and put it into the cache)\n/******/ var module = installedModules[moduleId] = {\n/******/ i: moduleId,\n/******/ l: false,\n/******/ exports: {}\n/******/ };\n/******/\n/******/ // Execute the module function\n/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ // Flag the module as loaded\n/******/ module.l = true;\n/******/\n/******/ // Return the exports of the module\n/******/ return module.exports;\n/******/ }\n/******/\n/******/\n/******/ // expose the modules object (__webpack_modules__)\n/******/ __w_pdfjs_require__.m = modules;\n/******/\n/******/ // expose the module cache\n/******/ __w_pdfjs_require__.c = installedModules;\n/******/\n/******/ // identity function for calling harmony imports with the correct context\n/******/ __w_pdfjs_require__.i = function(value) { return value; };\n/******/\n/******/ // define getter function for harmony exports\n/******/ __w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ if(!__w_pdfjs_require__.o(exports, name)) {\n/******/ Object.defineProperty(exports, name, {\n/******/ configurable: false,\n/******/ enumerable: true,\n/******/ get: getter\n/******/ });\n/******/ }\n/******/ };\n/******/\n/******/ // getDefaultExport function for compatibility with non-harmony modules\n/******/ __w_pdfjs_require__.n = function(module) {\n/******/ var getter = module && module.__esModule ?\n/******/ function getDefault() { return module['default']; } :\n/******/ function getModuleExports() { return module; };\n/******/ __w_pdfjs_require__.d(getter, 'a', getter);\n/******/ return getter;\n/******/ };\n/******/\n/******/ // Object.prototype.hasOwnProperty.call\n/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ // __webpack_public_path__\n/******/ __w_pdfjs_require__.p = \"\";\n/******/\n/******/ // Load entry module and return exports\n/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _require = __w_pdfjs_require__(1),\n assert = _require.assert;\n\nfunction IsPropertyKey(argument) {\n return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';\n}\n\nexports.typeIsObject = function (x) {\n return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';\n};\n\nexports.createDataProperty = function (o, p, v) {\n assert(exports.typeIsObject(o));\n Object.defineProperty(o, p, { value: v, writable: true, enumerable: true, configurable: true });\n};\n\nexports.createArrayFromList = function (elements) {\n // We use arrays to represent lists, so this is basically a no-op.\n // Do a slice though just in case we happen to depend on the unique-ness.\n return elements.slice();\n};\n\nexports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {\n new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n};\n\nexports.CreateIterResultObject = function (value, done) {\n assert(typeof done === 'boolean');\n var obj = {};\n Object.defineProperty(obj, 'value', { value: value, enumerable: true, writable: true, configurable: true });\n Object.defineProperty(obj, 'done', { value: done, enumerable: true, writable: true, configurable: true });\n return obj;\n};\n\nexports.IsFiniteNonNegativeNumber = function (v) {\n if (Number.isNaN(v)) {\n return false;\n }\n if (v === Infinity) {\n return false;\n }\n if (v < 0) {\n return false;\n }\n\n return true;\n};\n\nfunction Call(F, V, args) {\n if (typeof F !== 'function') {\n throw new TypeError('Argument is not a function');\n }\n\n return Function.prototype.apply.call(F, V, args);\n}\n\nexports.InvokeOrNoop = function (O, P, args) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n\n var method = O[P];\n if (method === undefined) {\n return undefined;\n }\n\n return Call(method, O, args);\n};\n\nexports.PromiseInvokeOrNoop = function (O, P, args) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n try {\n return Promise.resolve(exports.InvokeOrNoop(O, P, args));\n } catch (returnValueE) {\n return Promise.reject(returnValueE);\n }\n};\n\nexports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n assert(Array.isArray(argsF));\n\n var method = void 0;\n try {\n method = O[P];\n } catch (methodE) {\n return Promise.reject(methodE);\n }\n\n if (method === undefined) {\n return F.apply(null, argsF);\n }\n\n try {\n return Promise.resolve(Call(method, O, args));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n// Not implemented correctly\nexports.TransferArrayBuffer = function (O) {\n return O.slice();\n};\n\nexports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {\n highWaterMark = Number(highWaterMark);\n if (Number.isNaN(highWaterMark) || highWaterMark < 0) {\n throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n }\n\n return highWaterMark;\n};\n\nexports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {\n if (size !== undefined && typeof size !== 'function') {\n throw new TypeError('size property of a queuing strategy must be a function');\n }\n\n highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n return { size: size, highWaterMark: highWaterMark };\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nfunction rethrowAssertionErrorRejection(e) {\n // Used throughout the reference implementation, as `.catch(rethrowAssertionErrorRejection)`, to ensure any errors\n // get shown. There are places in the spec where we do promise transformations and purposefully ignore or don't\n // expect any errors, but assertion errors are always problematic.\n if (e && e.constructor === AssertionError) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n};\n\nfunction AssertionError(message) {\n this.name = 'AssertionError';\n this.message = message || '';\n this.stack = new Error().stack;\n}\nAssertionError.prototype = Object.create(Error.prototype);\nAssertionError.prototype.constructor = AssertionError;\n\nfunction assert(value, message) {\n if (!value) {\n throw new AssertionError(message);\n }\n}\n\nmodule.exports = {\n rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,\n AssertionError: AssertionError,\n assert: assert\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n InvokeOrNoop = _require.InvokeOrNoop,\n PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n typeIsObject = _require.typeIsObject;\n\nvar _require2 = __w_pdfjs_require__(1),\n assert = _require2.assert,\n rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;\n\nvar _require3 = __w_pdfjs_require__(3),\n DequeueValue = _require3.DequeueValue,\n EnqueueValueWithSize = _require3.EnqueueValueWithSize,\n PeekQueueValue = _require3.PeekQueueValue,\n ResetQueue = _require3.ResetQueue;\n\nvar WritableStream = function () {\n function WritableStream() {\n var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n size = _ref.size,\n _ref$highWaterMark = _ref.highWaterMark,\n highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;\n\n _classCallCheck(this, WritableStream);\n\n this._state = 'writable';\n\n // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n // 'erroring' or 'errored'. May be set to an undefined value.\n this._storedError = undefined;\n\n this._writer = undefined;\n\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n this._writableStreamController = undefined;\n\n // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n // producer without waiting for the queued writes to finish.\n this._writeRequests = [];\n\n // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n this._inFlightWriteRequest = undefined;\n\n // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n // has been detached.\n this._closeRequest = undefined;\n\n // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n this._inFlightCloseRequest = undefined;\n\n // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n this._pendingAbortRequest = undefined;\n\n // The backpressure signal set by the controller.\n this._backpressure = false;\n\n var type = underlyingSink.type;\n\n if (type !== undefined) {\n throw new RangeError('Invalid type is specified');\n }\n\n this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);\n this._writableStreamController.__startSteps();\n }\n\n _createClass(WritableStream, [{\n key: 'abort',\n value: function abort(reason) {\n if (IsWritableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('abort'));\n }\n\n if (IsWritableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));\n }\n\n return WritableStreamAbort(this, reason);\n }\n }, {\n key: 'getWriter',\n value: function getWriter() {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('getWriter');\n }\n\n return AcquireWritableStreamDefaultWriter(this);\n }\n }, {\n key: 'locked',\n get: function get() {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n\n return IsWritableStreamLocked(this);\n }\n }]);\n\n return WritableStream;\n}();\n\nmodule.exports = {\n AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,\n IsWritableStream: IsWritableStream,\n IsWritableStreamLocked: IsWritableStreamLocked,\n WritableStream: WritableStream,\n WritableStreamAbort: WritableStreamAbort,\n WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,\n WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,\n WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,\n WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,\n WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight\n};\n\n// Abstract operations for the WritableStream.\n\nfunction AcquireWritableStreamDefaultWriter(stream) {\n return new WritableStreamDefaultWriter(stream);\n}\n\nfunction IsWritableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsWritableStreamLocked(stream) {\n assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');\n\n if (stream._writer === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamAbort(stream, reason) {\n var state = stream._state;\n if (state === 'closed') {\n return Promise.resolve(undefined);\n }\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n var error = new TypeError('Requested to abort');\n if (stream._pendingAbortRequest !== undefined) {\n return Promise.reject(error);\n }\n\n assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');\n\n var wasAlreadyErroring = false;\n if (state === 'erroring') {\n wasAlreadyErroring = true;\n // reason will not be used, so don't keep a reference to it.\n reason = undefined;\n }\n\n var promise = new Promise(function (resolve, reject) {\n stream._pendingAbortRequest = {\n _resolve: resolve,\n _reject: reject,\n _reason: reason,\n _wasAlreadyErroring: wasAlreadyErroring\n };\n });\n\n if (wasAlreadyErroring === false) {\n WritableStreamStartErroring(stream, error);\n }\n\n return promise;\n}\n\n// WritableStream API exposed for controllers.\n\nfunction WritableStreamAddWriteRequest(stream) {\n assert(IsWritableStreamLocked(stream) === true);\n assert(stream._state === 'writable');\n\n var promise = new Promise(function (resolve, reject) {\n var writeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._writeRequests.push(writeRequest);\n });\n\n return promise;\n}\n\nfunction WritableStreamDealWithRejection(stream, error) {\n var state = stream._state;\n\n if (state === 'writable') {\n WritableStreamStartErroring(stream, error);\n return;\n }\n\n assert(state === 'erroring');\n WritableStreamFinishErroring(stream);\n}\n\nfunction WritableStreamStartErroring(stream, reason) {\n assert(stream._storedError === undefined, 'stream._storedError === undefined');\n assert(stream._state === 'writable', 'state must be writable');\n\n var controller = stream._writableStreamController;\n assert(controller !== undefined, 'controller must not be undefined');\n\n stream._state = 'erroring';\n stream._storedError = reason;\n var writer = stream._writer;\n if (writer !== undefined) {\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n }\n\n if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n WritableStreamFinishErroring(stream);\n }\n}\n\nfunction WritableStreamFinishErroring(stream) {\n assert(stream._state === 'erroring', 'stream._state === erroring');\n assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');\n stream._state = 'errored';\n stream._writableStreamController.__errorSteps();\n\n var storedError = stream._storedError;\n for (var i = 0; i < stream._writeRequests.length; i++) {\n var writeRequest = stream._writeRequests[i];\n writeRequest._reject(storedError);\n }\n stream._writeRequests = [];\n\n if (stream._pendingAbortRequest === undefined) {\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n\n var abortRequest = stream._pendingAbortRequest;\n stream._pendingAbortRequest = undefined;\n\n if (abortRequest._wasAlreadyErroring === true) {\n abortRequest._reject(storedError);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n\n var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);\n promise.then(function () {\n abortRequest._resolve();\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n }, function (reason) {\n abortRequest._reject(reason);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n });\n}\n\nfunction WritableStreamFinishInFlightWrite(stream) {\n assert(stream._inFlightWriteRequest !== undefined);\n stream._inFlightWriteRequest._resolve(undefined);\n stream._inFlightWriteRequest = undefined;\n}\n\nfunction WritableStreamFinishInFlightWriteWithError(stream, error) {\n assert(stream._inFlightWriteRequest !== undefined);\n stream._inFlightWriteRequest._reject(error);\n stream._inFlightWriteRequest = undefined;\n\n assert(stream._state === 'writable' || stream._state === 'erroring');\n\n WritableStreamDealWithRejection(stream, error);\n}\n\nfunction WritableStreamFinishInFlightClose(stream) {\n assert(stream._inFlightCloseRequest !== undefined);\n stream._inFlightCloseRequest._resolve(undefined);\n stream._inFlightCloseRequest = undefined;\n\n var state = stream._state;\n\n assert(state === 'writable' || state === 'erroring');\n\n if (state === 'erroring') {\n // The error was too late to do anything, so it is ignored.\n stream._storedError = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._resolve();\n stream._pendingAbortRequest = undefined;\n }\n }\n\n stream._state = 'closed';\n\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseResolve(writer);\n }\n\n assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');\n assert(stream._storedError === undefined, 'stream._storedError === undefined');\n}\n\nfunction WritableStreamFinishInFlightCloseWithError(stream, error) {\n assert(stream._inFlightCloseRequest !== undefined);\n stream._inFlightCloseRequest._reject(error);\n stream._inFlightCloseRequest = undefined;\n\n assert(stream._state === 'writable' || stream._state === 'erroring');\n\n // Never execute sink abort() after sink close().\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._reject(error);\n stream._pendingAbortRequest = undefined;\n }\n WritableStreamDealWithRejection(stream, error);\n}\n\n// TODO(ricea): Fix alphabetical order.\nfunction WritableStreamCloseQueuedOrInFlight(stream) {\n if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamHasOperationMarkedInFlight(stream) {\n if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamMarkCloseRequestInFlight(stream) {\n assert(stream._inFlightCloseRequest === undefined);\n assert(stream._closeRequest !== undefined);\n stream._inFlightCloseRequest = stream._closeRequest;\n stream._closeRequest = undefined;\n}\n\nfunction WritableStreamMarkFirstWriteRequestInFlight(stream) {\n assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');\n assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');\n stream._inFlightWriteRequest = stream._writeRequests.shift();\n}\n\nfunction WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n assert(stream._state === 'errored', '_stream_.[[state]] is `\"errored\"`');\n if (stream._closeRequest !== undefined) {\n assert(stream._inFlightCloseRequest === undefined);\n\n stream._closeRequest._reject(stream._storedError);\n stream._closeRequest = undefined;\n }\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseReject(writer, stream._storedError);\n writer._closedPromise.catch(function () {});\n }\n}\n\nfunction WritableStreamUpdateBackpressure(stream, backpressure) {\n assert(stream._state === 'writable');\n assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n var writer = stream._writer;\n if (writer !== undefined && backpressure !== stream._backpressure) {\n if (backpressure === true) {\n defaultWriterReadyPromiseReset(writer);\n } else {\n assert(backpressure === false);\n\n defaultWriterReadyPromiseResolve(writer);\n }\n }\n\n stream._backpressure = backpressure;\n}\n\nvar WritableStreamDefaultWriter = function () {\n function WritableStreamDefaultWriter(stream) {\n _classCallCheck(this, WritableStreamDefaultWriter);\n\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n }\n if (IsWritableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n }\n\n this._ownerWritableStream = stream;\n stream._writer = this;\n\n var state = stream._state;\n\n if (state === 'writable') {\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n defaultWriterReadyPromiseInitialize(this);\n } else {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n }\n\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'erroring') {\n defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n this._readyPromise.catch(function () {});\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'closed') {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n defaultWriterClosedPromiseInitializeAsResolved(this);\n } else {\n assert(state === 'errored', 'state must be errored');\n\n var storedError = stream._storedError;\n defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n this._readyPromise.catch(function () {});\n defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n this._closedPromise.catch(function () {});\n }\n }\n\n _createClass(WritableStreamDefaultWriter, [{\n key: 'abort',\n value: function abort(reason) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('abort'));\n }\n\n if (this._ownerWritableStream === undefined) {\n return Promise.reject(defaultWriterLockException('abort'));\n }\n\n return WritableStreamDefaultWriterAbort(this, reason);\n }\n }, {\n key: 'close',\n value: function close() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('close'));\n }\n\n var stream = this._ownerWritableStream;\n\n if (stream === undefined) {\n return Promise.reject(defaultWriterLockException('close'));\n }\n\n if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n return Promise.reject(new TypeError('cannot close an already-closing stream'));\n }\n\n return WritableStreamDefaultWriterClose(this);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('releaseLock');\n }\n\n var stream = this._ownerWritableStream;\n\n if (stream === undefined) {\n return;\n }\n\n assert(stream._writer !== undefined);\n\n WritableStreamDefaultWriterRelease(this);\n }\n }, {\n key: 'write',\n value: function write(chunk) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('write'));\n }\n\n if (this._ownerWritableStream === undefined) {\n return Promise.reject(defaultWriterLockException('write to'));\n }\n\n return WritableStreamDefaultWriterWrite(this, chunk);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('desiredSize');\n }\n\n if (this._ownerWritableStream === undefined) {\n throw defaultWriterLockException('desiredSize');\n }\n\n return WritableStreamDefaultWriterGetDesiredSize(this);\n }\n }, {\n key: 'ready',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('ready'));\n }\n\n return this._readyPromise;\n }\n }]);\n\n return WritableStreamDefaultWriter;\n}();\n\n// Abstract operations for the WritableStreamDefaultWriter.\n\nfunction IsWritableStreamDefaultWriter(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n return false;\n }\n\n return true;\n}\n\n// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultWriterAbort(writer, reason) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n return WritableStreamAbort(stream, reason);\n}\n\nfunction WritableStreamDefaultWriterClose(writer) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));\n }\n\n assert(state === 'writable' || state === 'erroring');\n assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n var promise = new Promise(function (resolve, reject) {\n var closeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._closeRequest = closeRequest;\n });\n\n if (stream._backpressure === true && state === 'writable') {\n defaultWriterReadyPromiseResolve(writer);\n }\n\n WritableStreamDefaultControllerClose(stream._writableStreamController);\n\n return promise;\n}\n\nfunction WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var state = stream._state;\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return Promise.resolve();\n }\n\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n assert(state === 'writable' || state === 'erroring');\n\n return WritableStreamDefaultWriterClose(writer);\n}\n\nfunction WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n if (writer._closedPromiseState === 'pending') {\n defaultWriterClosedPromiseReject(writer, error);\n } else {\n defaultWriterClosedPromiseResetToRejected(writer, error);\n }\n writer._closedPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n if (writer._readyPromiseState === 'pending') {\n defaultWriterReadyPromiseReject(writer, error);\n } else {\n defaultWriterReadyPromiseResetToRejected(writer, error);\n }\n writer._readyPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterGetDesiredSize(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n\n if (state === 'errored' || state === 'erroring') {\n return null;\n }\n\n if (state === 'closed') {\n return 0;\n }\n\n return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n}\n\nfunction WritableStreamDefaultWriterRelease(writer) {\n var stream = writer._ownerWritableStream;\n assert(stream !== undefined);\n assert(stream._writer === writer);\n\n var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n\n // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n // rejected until afterwards. This means that simply testing state will not work.\n WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n\n stream._writer = undefined;\n writer._ownerWritableStream = undefined;\n}\n\nfunction WritableStreamDefaultWriterWrite(writer, chunk) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var controller = stream._writableStreamController;\n\n var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n\n if (stream !== writer._ownerWritableStream) {\n return Promise.reject(defaultWriterLockException('write to'));\n }\n\n var state = stream._state;\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));\n }\n if (state === 'erroring') {\n return Promise.reject(stream._storedError);\n }\n\n assert(state === 'writable');\n\n var promise = WritableStreamAddWriteRequest(stream);\n\n WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n\n return promise;\n}\n\nvar WritableStreamDefaultController = function () {\n function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {\n _classCallCheck(this, WritableStreamDefaultController);\n\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');\n }\n\n if (stream._writableStreamController !== undefined) {\n throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');\n }\n\n this._controlledWritableStream = stream;\n\n this._underlyingSink = underlyingSink;\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = undefined;\n this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._started = false;\n\n var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n this._strategySize = normalizedStrategy.size;\n this._strategyHWM = normalizedStrategy.highWaterMark;\n\n var backpressure = WritableStreamDefaultControllerGetBackpressure(this);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n _createClass(WritableStreamDefaultController, [{\n key: 'error',\n value: function error(e) {\n if (IsWritableStreamDefaultController(this) === false) {\n throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n }\n var state = this._controlledWritableStream._state;\n if (state !== 'writable') {\n // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n // just treat it as a no-op.\n return;\n }\n\n WritableStreamDefaultControllerError(this, e);\n }\n }, {\n key: '__abortSteps',\n value: function __abortSteps(reason) {\n return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);\n }\n }, {\n key: '__errorSteps',\n value: function __errorSteps() {\n ResetQueue(this);\n }\n }, {\n key: '__startSteps',\n value: function __startSteps() {\n var _this = this;\n\n var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);\n var stream = this._controlledWritableStream;\n\n Promise.resolve(startResult).then(function () {\n assert(stream._state === 'writable' || stream._state === 'erroring');\n _this._started = true;\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);\n }, function (r) {\n assert(stream._state === 'writable' || stream._state === 'erroring');\n _this._started = true;\n WritableStreamDealWithRejection(stream, r);\n }).catch(rethrowAssertionErrorRejection);\n }\n }]);\n\n return WritableStreamDefaultController;\n}();\n\n// Abstract operations implementing interface required by the WritableStream.\n\nfunction WritableStreamDefaultControllerClose(controller) {\n EnqueueValueWithSize(controller, 'close', 0);\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\nfunction WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n var strategySize = controller._strategySize;\n\n if (strategySize === undefined) {\n return 1;\n }\n\n try {\n return strategySize(chunk);\n } catch (chunkSizeE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n return 1;\n }\n}\n\nfunction WritableStreamDefaultControllerGetDesiredSize(controller) {\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n var writeRecord = { chunk: chunk };\n\n try {\n EnqueueValueWithSize(controller, writeRecord, chunkSize);\n } catch (enqueueE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n return;\n }\n\n var stream = controller._controlledWritableStream;\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\n// Abstract operations for the WritableStreamDefaultController.\n\nfunction IsWritableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n var stream = controller._controlledWritableStream;\n\n if (controller._started === false) {\n return;\n }\n\n if (stream._inFlightWriteRequest !== undefined) {\n return;\n }\n\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return;\n }\n if (state === 'erroring') {\n WritableStreamFinishErroring(stream);\n return;\n }\n\n if (controller._queue.length === 0) {\n return;\n }\n\n var writeRecord = PeekQueueValue(controller);\n if (writeRecord === 'close') {\n WritableStreamDefaultControllerProcessClose(controller);\n } else {\n WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n }\n}\n\nfunction WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n if (controller._controlledWritableStream._state === 'writable') {\n WritableStreamDefaultControllerError(controller, error);\n }\n}\n\nfunction WritableStreamDefaultControllerProcessClose(controller) {\n var stream = controller._controlledWritableStream;\n\n WritableStreamMarkCloseRequestInFlight(stream);\n\n DequeueValue(controller);\n assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');\n\n var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);\n sinkClosePromise.then(function () {\n WritableStreamFinishInFlightClose(stream);\n }, function (reason) {\n WritableStreamFinishInFlightCloseWithError(stream, reason);\n }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n var stream = controller._controlledWritableStream;\n\n WritableStreamMarkFirstWriteRequestInFlight(stream);\n\n var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);\n sinkWritePromise.then(function () {\n WritableStreamFinishInFlightWrite(stream);\n\n var state = stream._state;\n assert(state === 'writable' || state === 'erroring');\n\n DequeueValue(controller);\n\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (reason) {\n WritableStreamFinishInFlightWriteWithError(stream, reason);\n }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerGetBackpressure(controller) {\n var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n return desiredSize <= 0;\n}\n\n// A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultControllerError(controller, error) {\n var stream = controller._controlledWritableStream;\n\n assert(stream._state === 'writable');\n\n WritableStreamStartErroring(stream, error);\n}\n\n// Helper functions for the WritableStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');\n}\n\n// Helper functions for the WritableStreamDefaultWriter.\n\nfunction defaultWriterBrandCheckException(name) {\n return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');\n}\n\nfunction defaultWriterLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released writer');\n}\n\nfunction defaultWriterClosedPromiseInitialize(writer) {\n writer._closedPromise = new Promise(function (resolve, reject) {\n writer._closedPromise_resolve = resolve;\n writer._closedPromise_reject = reject;\n writer._closedPromiseState = 'pending';\n });\n}\n\nfunction defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n writer._closedPromise = Promise.reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseInitializeAsResolved(writer) {\n writer._closedPromise = Promise.resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterClosedPromiseReject(writer, reason) {\n assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n writer._closedPromise_reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResetToRejected(writer, reason) {\n assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');\n assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');\n assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');\n\n writer._closedPromise = Promise.reject(reason);\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResolve(writer) {\n assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n writer._closedPromise_resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterReadyPromiseInitialize(writer) {\n writer._readyPromise = new Promise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n writer._readyPromise = Promise.reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsResolved(writer) {\n writer._readyPromise = Promise.resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n}\n\nfunction defaultWriterReadyPromiseReject(writer, reason) {\n assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n writer._readyPromise_reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseReset(writer) {\n assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n writer._readyPromise = new Promise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseResetToRejected(writer, reason) {\n assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n writer._readyPromise = Promise.reject(reason);\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseResolve(writer) {\n assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n writer._readyPromise_resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _require = __w_pdfjs_require__(0),\n IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;\n\nvar _require2 = __w_pdfjs_require__(1),\n assert = _require2.assert;\n\nexports.DequeueValue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');\n\n var pair = container._queue.shift();\n container._queueTotalSize -= pair.size;\n if (container._queueTotalSize < 0) {\n container._queueTotalSize = 0;\n }\n\n return pair.value;\n};\n\nexports.EnqueueValueWithSize = function (container, value, size) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');\n\n size = Number(size);\n if (!IsFiniteNonNegativeNumber(size)) {\n throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n }\n\n container._queue.push({ value: value, size: size });\n container._queueTotalSize += size;\n};\n\nexports.PeekQueueValue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');\n\n var pair = container._queue[0];\n return pair.value;\n};\n\nexports.ResetQueue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n\n container._queue = [];\n container._queueTotalSize = 0;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n ArrayBufferCopy = _require.ArrayBufferCopy,\n CreateIterResultObject = _require.CreateIterResultObject,\n IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,\n InvokeOrNoop = _require.InvokeOrNoop,\n PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n TransferArrayBuffer = _require.TransferArrayBuffer,\n ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;\n\nvar _require2 = __w_pdfjs_require__(0),\n createArrayFromList = _require2.createArrayFromList,\n createDataProperty = _require2.createDataProperty,\n typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(1),\n assert = _require3.assert,\n rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;\n\nvar _require4 = __w_pdfjs_require__(3),\n DequeueValue = _require4.DequeueValue,\n EnqueueValueWithSize = _require4.EnqueueValueWithSize,\n ResetQueue = _require4.ResetQueue;\n\nvar _require5 = __w_pdfjs_require__(2),\n AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,\n IsWritableStream = _require5.IsWritableStream,\n IsWritableStreamLocked = _require5.IsWritableStreamLocked,\n WritableStreamAbort = _require5.WritableStreamAbort,\n WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,\n WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,\n WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,\n WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;\n\nvar ReadableStream = function () {\n function ReadableStream() {\n var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n size = _ref.size,\n highWaterMark = _ref.highWaterMark;\n\n _classCallCheck(this, ReadableStream);\n\n // Exposed to controllers.\n this._state = 'readable';\n\n this._reader = undefined;\n this._storedError = undefined;\n\n this._disturbed = false;\n\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n this._readableStreamController = undefined;\n var type = underlyingSource.type;\n var typeString = String(type);\n if (typeString === 'bytes') {\n if (highWaterMark === undefined) {\n highWaterMark = 0;\n }\n this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);\n } else if (type === undefined) {\n if (highWaterMark === undefined) {\n highWaterMark = 1;\n }\n this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);\n } else {\n throw new RangeError('Invalid type is specified');\n }\n }\n\n _createClass(ReadableStream, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (IsReadableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('cancel'));\n }\n\n if (IsReadableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));\n }\n\n return ReadableStreamCancel(this, reason);\n }\n }, {\n key: 'getReader',\n value: function getReader() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n mode = _ref2.mode;\n\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('getReader');\n }\n\n if (mode === undefined) {\n return AcquireReadableStreamDefaultReader(this);\n }\n\n mode = String(mode);\n\n if (mode === 'byob') {\n return AcquireReadableStreamBYOBReader(this);\n }\n\n throw new RangeError('Invalid mode is specified');\n }\n }, {\n key: 'pipeThrough',\n value: function pipeThrough(_ref3, options) {\n var writable = _ref3.writable,\n readable = _ref3.readable;\n\n var promise = this.pipeTo(writable, options);\n\n ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);\n\n return readable;\n }\n }, {\n key: 'pipeTo',\n value: function pipeTo(dest) {\n var _this = this;\n\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n preventClose = _ref4.preventClose,\n preventAbort = _ref4.preventAbort,\n preventCancel = _ref4.preventCancel;\n\n if (IsReadableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('pipeTo'));\n }\n if (IsWritableStream(dest) === false) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n }\n\n preventClose = Boolean(preventClose);\n preventAbort = Boolean(preventAbort);\n preventCancel = Boolean(preventCancel);\n\n if (IsReadableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n }\n if (IsWritableStreamLocked(dest) === true) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n }\n\n var reader = AcquireReadableStreamDefaultReader(this);\n var writer = AcquireWritableStreamDefaultWriter(dest);\n\n var shuttingDown = false;\n\n // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n var currentWrite = Promise.resolve();\n\n return new Promise(function (resolve, reject) {\n // Using reader and writer, read all chunks from this and write them to dest\n // - Backpressure must be enforced\n // - Shutdown must stop all activity\n function pipeLoop() {\n currentWrite = Promise.resolve();\n\n if (shuttingDown === true) {\n return Promise.resolve();\n }\n\n return writer._readyPromise.then(function () {\n return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {\n var value = _ref5.value,\n done = _ref5.done;\n\n if (done === true) {\n return;\n }\n\n currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});\n });\n }).then(pipeLoop);\n }\n\n // Errors must be propagated forward\n isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {\n if (preventAbort === false) {\n shutdownWithAction(function () {\n return WritableStreamAbort(dest, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n\n // Errors must be propagated backward\n isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(_this, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n\n // Closing must be propagated forward\n isOrBecomesClosed(_this, reader._closedPromise, function () {\n if (preventClose === false) {\n shutdownWithAction(function () {\n return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n });\n } else {\n shutdown();\n }\n });\n\n // Closing must be propagated backward\n if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(_this, destClosed);\n }, true, destClosed);\n } else {\n shutdown(true, destClosed);\n }\n }\n\n pipeLoop().catch(function (err) {\n currentWrite = Promise.resolve();\n rethrowAssertionErrorRejection(err);\n });\n\n function waitForWritesToFinish() {\n // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n // for that too.\n var oldCurrentWrite = currentWrite;\n return currentWrite.then(function () {\n return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n });\n }\n\n function isOrBecomesErrored(stream, promise, action) {\n if (stream._state === 'errored') {\n action(stream._storedError);\n } else {\n promise.catch(action).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function isOrBecomesClosed(stream, promise, action) {\n if (stream._state === 'closed') {\n action();\n } else {\n promise.then(action).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function shutdownWithAction(action, originalIsError, originalError) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n waitForWritesToFinish().then(doTheRest);\n } else {\n doTheRest();\n }\n\n function doTheRest() {\n action().then(function () {\n return finalize(originalIsError, originalError);\n }, function (newError) {\n return finalize(true, newError);\n }).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function shutdown(isError, error) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n waitForWritesToFinish().then(function () {\n return finalize(isError, error);\n }).catch(rethrowAssertionErrorRejection);\n } else {\n finalize(isError, error);\n }\n }\n\n function finalize(isError, error) {\n WritableStreamDefaultWriterRelease(writer);\n ReadableStreamReaderGenericRelease(reader);\n\n if (isError) {\n reject(error);\n } else {\n resolve(undefined);\n }\n }\n });\n }\n }, {\n key: 'tee',\n value: function tee() {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('tee');\n }\n\n var branches = ReadableStreamTee(this, false);\n return createArrayFromList(branches);\n }\n }, {\n key: 'locked',\n get: function get() {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n\n return IsReadableStreamLocked(this);\n }\n }]);\n\n return ReadableStream;\n}();\n\nmodule.exports = {\n ReadableStream: ReadableStream,\n IsReadableStreamDisturbed: IsReadableStreamDisturbed,\n ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,\n ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,\n ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,\n ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize\n};\n\n// Abstract operations for the ReadableStream.\n\nfunction AcquireReadableStreamBYOBReader(stream) {\n return new ReadableStreamBYOBReader(stream);\n}\n\nfunction AcquireReadableStreamDefaultReader(stream) {\n return new ReadableStreamDefaultReader(stream);\n}\n\nfunction IsReadableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamDisturbed(stream) {\n assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');\n\n return stream._disturbed;\n}\n\nfunction IsReadableStreamLocked(stream) {\n assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');\n\n if (stream._reader === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamTee(stream, cloneForBranch2) {\n assert(IsReadableStream(stream) === true);\n assert(typeof cloneForBranch2 === 'boolean');\n\n var reader = AcquireReadableStreamDefaultReader(stream);\n\n var teeState = {\n closedOrErrored: false,\n canceled1: false,\n canceled2: false,\n reason1: undefined,\n reason2: undefined\n };\n teeState.promise = new Promise(function (resolve) {\n teeState._resolve = resolve;\n });\n\n var pull = create_ReadableStreamTeePullFunction();\n pull._reader = reader;\n pull._teeState = teeState;\n pull._cloneForBranch2 = cloneForBranch2;\n\n var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();\n cancel1._stream = stream;\n cancel1._teeState = teeState;\n\n var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();\n cancel2._stream = stream;\n cancel2._teeState = teeState;\n\n var underlyingSource1 = Object.create(Object.prototype);\n createDataProperty(underlyingSource1, 'pull', pull);\n createDataProperty(underlyingSource1, 'cancel', cancel1);\n var branch1Stream = new ReadableStream(underlyingSource1);\n\n var underlyingSource2 = Object.create(Object.prototype);\n createDataProperty(underlyingSource2, 'pull', pull);\n createDataProperty(underlyingSource2, 'cancel', cancel2);\n var branch2Stream = new ReadableStream(underlyingSource2);\n\n pull._branch1 = branch1Stream._readableStreamController;\n pull._branch2 = branch2Stream._readableStreamController;\n\n reader._closedPromise.catch(function (r) {\n if (teeState.closedOrErrored === true) {\n return;\n }\n\n ReadableStreamDefaultControllerError(pull._branch1, r);\n ReadableStreamDefaultControllerError(pull._branch2, r);\n teeState.closedOrErrored = true;\n });\n\n return [branch1Stream, branch2Stream];\n}\n\nfunction create_ReadableStreamTeePullFunction() {\n function f() {\n var reader = f._reader,\n branch1 = f._branch1,\n branch2 = f._branch2,\n teeState = f._teeState;\n\n\n return ReadableStreamDefaultReaderRead(reader).then(function (result) {\n assert(typeIsObject(result));\n var value = result.value;\n var done = result.done;\n assert(typeof done === 'boolean');\n\n if (done === true && teeState.closedOrErrored === false) {\n if (teeState.canceled1 === false) {\n ReadableStreamDefaultControllerClose(branch1);\n }\n if (teeState.canceled2 === false) {\n ReadableStreamDefaultControllerClose(branch2);\n }\n teeState.closedOrErrored = true;\n }\n\n if (teeState.closedOrErrored === true) {\n return;\n }\n\n var value1 = value;\n var value2 = value;\n\n // There is no way to access the cloning code right now in the reference implementation.\n // If we add one then we'll need an implementation for serializable objects.\n // if (teeState.canceled2 === false && cloneForBranch2 === true) {\n // value2 = StructuredDeserialize(StructuredSerialize(value2));\n // }\n\n if (teeState.canceled1 === false) {\n ReadableStreamDefaultControllerEnqueue(branch1, value1);\n }\n\n if (teeState.canceled2 === false) {\n ReadableStreamDefaultControllerEnqueue(branch2, value2);\n }\n });\n }\n return f;\n}\n\nfunction create_ReadableStreamTeeBranch1CancelFunction() {\n function f(reason) {\n var stream = f._stream,\n teeState = f._teeState;\n\n\n teeState.canceled1 = true;\n teeState.reason1 = reason;\n if (teeState.canceled2 === true) {\n var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n teeState._resolve(cancelResult);\n }\n return teeState.promise;\n }\n return f;\n}\n\nfunction create_ReadableStreamTeeBranch2CancelFunction() {\n function f(reason) {\n var stream = f._stream,\n teeState = f._teeState;\n\n\n teeState.canceled2 = true;\n teeState.reason2 = reason;\n if (teeState.canceled1 === true) {\n var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n teeState._resolve(cancelResult);\n }\n return teeState.promise;\n }\n return f;\n}\n\n// ReadableStream API exposed for controllers.\n\nfunction ReadableStreamAddReadIntoRequest(stream) {\n assert(IsReadableStreamBYOBReader(stream._reader) === true);\n assert(stream._state === 'readable' || stream._state === 'closed');\n\n var promise = new Promise(function (resolve, reject) {\n var readIntoRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._reader._readIntoRequests.push(readIntoRequest);\n });\n\n return promise;\n}\n\nfunction ReadableStreamAddReadRequest(stream) {\n assert(IsReadableStreamDefaultReader(stream._reader) === true);\n assert(stream._state === 'readable');\n\n var promise = new Promise(function (resolve, reject) {\n var readRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._reader._readRequests.push(readRequest);\n });\n\n return promise;\n}\n\nfunction ReadableStreamCancel(stream, reason) {\n stream._disturbed = true;\n\n if (stream._state === 'closed') {\n return Promise.resolve(undefined);\n }\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n ReadableStreamClose(stream);\n\n var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);\n return sourceCancelPromise.then(function () {\n return undefined;\n });\n}\n\nfunction ReadableStreamClose(stream) {\n assert(stream._state === 'readable');\n\n stream._state = 'closed';\n\n var reader = stream._reader;\n\n if (reader === undefined) {\n return undefined;\n }\n\n if (IsReadableStreamDefaultReader(reader) === true) {\n for (var i = 0; i < reader._readRequests.length; i++) {\n var _resolve = reader._readRequests[i]._resolve;\n\n _resolve(CreateIterResultObject(undefined, true));\n }\n reader._readRequests = [];\n }\n\n defaultReaderClosedPromiseResolve(reader);\n\n return undefined;\n}\n\nfunction ReadableStreamError(stream, e) {\n assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');\n assert(stream._state === 'readable', 'state must be readable');\n\n stream._state = 'errored';\n stream._storedError = e;\n\n var reader = stream._reader;\n\n if (reader === undefined) {\n return undefined;\n }\n\n if (IsReadableStreamDefaultReader(reader) === true) {\n for (var i = 0; i < reader._readRequests.length; i++) {\n var readRequest = reader._readRequests[i];\n readRequest._reject(e);\n }\n\n reader._readRequests = [];\n } else {\n assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');\n\n for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {\n var readIntoRequest = reader._readIntoRequests[_i];\n readIntoRequest._reject(e);\n }\n\n reader._readIntoRequests = [];\n }\n\n defaultReaderClosedPromiseReject(reader, e);\n reader._closedPromise.catch(function () {});\n}\n\nfunction ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n var reader = stream._reader;\n\n assert(reader._readIntoRequests.length > 0);\n\n var readIntoRequest = reader._readIntoRequests.shift();\n readIntoRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamFulfillReadRequest(stream, chunk, done) {\n var reader = stream._reader;\n\n assert(reader._readRequests.length > 0);\n\n var readRequest = reader._readRequests.shift();\n readRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamGetNumReadIntoRequests(stream) {\n return stream._reader._readIntoRequests.length;\n}\n\nfunction ReadableStreamGetNumReadRequests(stream) {\n return stream._reader._readRequests.length;\n}\n\nfunction ReadableStreamHasBYOBReader(stream) {\n var reader = stream._reader;\n\n if (reader === undefined) {\n return false;\n }\n\n if (IsReadableStreamBYOBReader(reader) === false) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamHasDefaultReader(stream) {\n var reader = stream._reader;\n\n if (reader === undefined) {\n return false;\n }\n\n if (IsReadableStreamDefaultReader(reader) === false) {\n return false;\n }\n\n return true;\n}\n\n// Readers\n\nvar ReadableStreamDefaultReader = function () {\n function ReadableStreamDefaultReader(stream) {\n _classCallCheck(this, ReadableStreamDefaultReader);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n }\n if (IsReadableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n\n ReadableStreamReaderGenericInitialize(this, stream);\n\n this._readRequests = [];\n }\n\n _createClass(ReadableStreamDefaultReader, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('cancel'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('cancel'));\n }\n\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n }, {\n key: 'read',\n value: function read() {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('read'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('read from'));\n }\n\n return ReadableStreamDefaultReaderRead(this);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (IsReadableStreamDefaultReader(this) === false) {\n throw defaultReaderBrandCheckException('releaseLock');\n }\n\n if (this._ownerReadableStream === undefined) {\n return;\n }\n\n if (this._readRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n\n ReadableStreamReaderGenericRelease(this);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }]);\n\n return ReadableStreamDefaultReader;\n}();\n\nvar ReadableStreamBYOBReader = function () {\n function ReadableStreamBYOBReader(stream) {\n _classCallCheck(this, ReadableStreamBYOBReader);\n\n if (!IsReadableStream(stream)) {\n throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');\n }\n if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n }\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n\n ReadableStreamReaderGenericInitialize(this, stream);\n\n this._readIntoRequests = [];\n }\n\n _createClass(ReadableStreamBYOBReader, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('cancel'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('cancel'));\n }\n\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n }, {\n key: 'read',\n value: function read(view) {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('read'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('read from'));\n }\n\n if (!ArrayBuffer.isView(view)) {\n return Promise.reject(new TypeError('view must be an array buffer view'));\n }\n\n if (view.byteLength === 0) {\n return Promise.reject(new TypeError('view must have non-zero byteLength'));\n }\n\n return ReadableStreamBYOBReaderRead(this, view);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (!IsReadableStreamBYOBReader(this)) {\n throw byobReaderBrandCheckException('releaseLock');\n }\n\n if (this._ownerReadableStream === undefined) {\n return;\n }\n\n if (this._readIntoRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n\n ReadableStreamReaderGenericRelease(this);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }]);\n\n return ReadableStreamBYOBReader;\n}();\n\n// Abstract operations for the readers.\n\nfunction IsReadableStreamBYOBReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamDefaultReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamReaderGenericInitialize(reader, stream) {\n reader._ownerReadableStream = stream;\n stream._reader = reader;\n\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseInitialize(reader);\n } else if (stream._state === 'closed') {\n defaultReaderClosedPromiseInitializeAsResolved(reader);\n } else {\n assert(stream._state === 'errored', 'state must be errored');\n\n defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n reader._closedPromise.catch(function () {});\n }\n}\n\n// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n// check.\n\nfunction ReadableStreamReaderGenericCancel(reader, reason) {\n var stream = reader._ownerReadableStream;\n assert(stream !== undefined);\n return ReadableStreamCancel(stream, reason);\n}\n\nfunction ReadableStreamReaderGenericRelease(reader) {\n assert(reader._ownerReadableStream !== undefined);\n assert(reader._ownerReadableStream._reader === reader);\n\n if (reader._ownerReadableStream._state === 'readable') {\n defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n } else {\n defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n }\n reader._closedPromise.catch(function () {});\n\n reader._ownerReadableStream._reader = undefined;\n reader._ownerReadableStream = undefined;\n}\n\nfunction ReadableStreamBYOBReaderRead(reader, view) {\n var stream = reader._ownerReadableStream;\n\n assert(stream !== undefined);\n\n stream._disturbed = true;\n\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n // Controllers must implement this.\n return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n}\n\nfunction ReadableStreamDefaultReaderRead(reader) {\n var stream = reader._ownerReadableStream;\n\n assert(stream !== undefined);\n\n stream._disturbed = true;\n\n if (stream._state === 'closed') {\n return Promise.resolve(CreateIterResultObject(undefined, true));\n }\n\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n assert(stream._state === 'readable');\n\n return stream._readableStreamController.__pullSteps();\n}\n\n// Controllers\n\nvar ReadableStreamDefaultController = function () {\n function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {\n _classCallCheck(this, ReadableStreamDefaultController);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');\n }\n\n if (stream._readableStreamController !== undefined) {\n throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');\n }\n\n this._controlledReadableStream = stream;\n\n this._underlyingSource = underlyingSource;\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = undefined;\n this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._started = false;\n this._closeRequested = false;\n this._pullAgain = false;\n this._pulling = false;\n\n var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n this._strategySize = normalizedStrategy.size;\n this._strategyHWM = normalizedStrategy.highWaterMark;\n\n var controller = this;\n\n var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);\n Promise.resolve(startResult).then(function () {\n controller._started = true;\n\n assert(controller._pulling === false);\n assert(controller._pullAgain === false);\n\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, r);\n }).catch(rethrowAssertionErrorRejection);\n }\n\n _createClass(ReadableStreamDefaultController, [{\n key: 'close',\n value: function close() {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n }\n\n ReadableStreamDefaultControllerClose(this);\n }\n }, {\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n }\n\n return ReadableStreamDefaultControllerEnqueue(this, chunk);\n }\n }, {\n key: 'error',\n value: function error(e) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n\n var stream = this._controlledReadableStream;\n if (stream._state !== 'readable') {\n throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n }\n\n ReadableStreamDefaultControllerError(this, e);\n }\n }, {\n key: '__cancelSteps',\n value: function __cancelSteps(reason) {\n ResetQueue(this);\n return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);\n }\n }, {\n key: '__pullSteps',\n value: function __pullSteps() {\n var stream = this._controlledReadableStream;\n\n if (this._queue.length > 0) {\n var chunk = DequeueValue(this);\n\n if (this._closeRequested === true && this._queue.length === 0) {\n ReadableStreamClose(stream);\n } else {\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n\n return Promise.resolve(CreateIterResultObject(chunk, false));\n }\n\n var pendingPromise = ReadableStreamAddReadRequest(stream);\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n return pendingPromise;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n\n return ReadableStreamDefaultControllerGetDesiredSize(this);\n }\n }]);\n\n return ReadableStreamDefaultController;\n}();\n\n// Abstract operations for the ReadableStreamDefaultController.\n\nfunction IsReadableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return undefined;\n }\n\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return undefined;\n }\n\n assert(controller._pullAgain === false);\n\n controller._pulling = true;\n\n var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);\n pullPromise.then(function () {\n controller._pulling = false;\n\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n return ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n return undefined;\n }, function (e) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, e);\n }).catch(rethrowAssertionErrorRejection);\n\n return undefined;\n}\n\nfunction ReadableStreamDefaultControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n\n if (stream._state === 'closed' || stream._state === 'errored') {\n return false;\n }\n\n if (controller._closeRequested === true) {\n return false;\n }\n\n if (controller._started === false) {\n return false;\n }\n\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n\n return false;\n}\n\n// A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction ReadableStreamDefaultControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n controller._closeRequested = true;\n\n if (controller._queue.length === 0) {\n ReadableStreamClose(stream);\n }\n}\n\nfunction ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n ReadableStreamFulfillReadRequest(stream, chunk, false);\n } else {\n var chunkSize = 1;\n\n if (controller._strategySize !== undefined) {\n var strategySize = controller._strategySize;\n try {\n chunkSize = strategySize(chunk);\n } catch (chunkSizeE) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n throw chunkSizeE;\n }\n }\n\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n } catch (enqueueE) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n throw enqueueE;\n }\n }\n\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n\n return undefined;\n}\n\nfunction ReadableStreamDefaultControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n\n assert(stream._state === 'readable');\n\n ResetQueue(controller);\n\n ReadableStreamError(stream, e);\n}\n\nfunction ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {\n if (controller._controlledReadableStream._state === 'readable') {\n ReadableStreamDefaultControllerError(controller, e);\n }\n}\n\nfunction ReadableStreamDefaultControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nvar ReadableStreamBYOBRequest = function () {\n function ReadableStreamBYOBRequest(controller, view) {\n _classCallCheck(this, ReadableStreamBYOBRequest);\n\n this._associatedReadableByteStreamController = controller;\n this._view = view;\n }\n\n _createClass(ReadableStreamBYOBRequest, [{\n key: 'respond',\n value: function respond(bytesWritten) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n\n ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n }\n }, {\n key: 'respondWithNewView',\n value: function respondWithNewView(view) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n\n if (!ArrayBuffer.isView(view)) {\n throw new TypeError('You can only respond with array buffer views');\n }\n\n ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n }\n }, {\n key: 'view',\n get: function get() {\n return this._view;\n }\n }]);\n\n return ReadableStreamBYOBRequest;\n}();\n\nvar ReadableByteStreamController = function () {\n function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {\n _classCallCheck(this, ReadableByteStreamController);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');\n }\n\n if (stream._readableStreamController !== undefined) {\n throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');\n }\n\n this._controlledReadableStream = stream;\n\n this._underlyingByteSource = underlyingByteSource;\n\n this._pullAgain = false;\n this._pulling = false;\n\n ReadableByteStreamControllerClearPendingPullIntos(this);\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._closeRequested = false;\n this._started = false;\n\n this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n throw new RangeError('autoAllocateChunkSize must be a positive integer');\n }\n }\n this._autoAllocateChunkSize = autoAllocateChunkSize;\n\n this._pendingPullIntos = [];\n\n var controller = this;\n\n var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);\n Promise.resolve(startResult).then(function () {\n controller._started = true;\n\n assert(controller._pulling === false);\n assert(controller._pullAgain === false);\n\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }, function (r) {\n if (stream._state === 'readable') {\n ReadableByteStreamControllerError(controller, r);\n }\n }).catch(rethrowAssertionErrorRejection);\n }\n\n _createClass(ReadableByteStreamController, [{\n key: 'close',\n value: function close() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('close');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n }\n\n ReadableByteStreamControllerClose(this);\n }\n }, {\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('enqueue');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n }\n\n if (!ArrayBuffer.isView(chunk)) {\n throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n }\n\n ReadableByteStreamControllerEnqueue(this, chunk);\n }\n }, {\n key: 'error',\n value: function error(e) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('error');\n }\n\n var stream = this._controlledReadableStream;\n if (stream._state !== 'readable') {\n throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n }\n\n ReadableByteStreamControllerError(this, e);\n }\n }, {\n key: '__cancelSteps',\n value: function __cancelSteps(reason) {\n if (this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos[0];\n firstDescriptor.bytesFilled = 0;\n }\n\n ResetQueue(this);\n\n return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);\n }\n }, {\n key: '__pullSteps',\n value: function __pullSteps() {\n var stream = this._controlledReadableStream;\n assert(ReadableStreamHasDefaultReader(stream) === true);\n\n if (this._queueTotalSize > 0) {\n assert(ReadableStreamGetNumReadRequests(stream) === 0);\n\n var entry = this._queue.shift();\n this._queueTotalSize -= entry.byteLength;\n\n ReadableByteStreamControllerHandleQueueDrain(this);\n\n var view = void 0;\n try {\n view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n } catch (viewE) {\n return Promise.reject(viewE);\n }\n\n return Promise.resolve(CreateIterResultObject(view, false));\n }\n\n var autoAllocateChunkSize = this._autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n var buffer = void 0;\n try {\n buffer = new ArrayBuffer(autoAllocateChunkSize);\n } catch (bufferE) {\n return Promise.reject(bufferE);\n }\n\n var pullIntoDescriptor = {\n buffer: buffer,\n byteOffset: 0,\n byteLength: autoAllocateChunkSize,\n bytesFilled: 0,\n elementSize: 1,\n ctor: Uint8Array,\n readerType: 'default'\n };\n\n this._pendingPullIntos.push(pullIntoDescriptor);\n }\n\n var promise = ReadableStreamAddReadRequest(stream);\n\n ReadableByteStreamControllerCallPullIfNeeded(this);\n\n return promise;\n }\n }, {\n key: 'byobRequest',\n get: function get() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('byobRequest');\n }\n\n if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos[0];\n var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n\n this._byobRequest = new ReadableStreamBYOBRequest(this, view);\n }\n\n return this._byobRequest;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('desiredSize');\n }\n\n return ReadableByteStreamControllerGetDesiredSize(this);\n }\n }]);\n\n return ReadableByteStreamController;\n}();\n\n// Abstract operations for the ReadableByteStreamController.\n\nfunction IsReadableByteStreamController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamBYOBRequest(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableByteStreamControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return undefined;\n }\n\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return undefined;\n }\n\n assert(controller._pullAgain === false);\n\n controller._pulling = true;\n\n // TODO: Test controller argument\n var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);\n pullPromise.then(function () {\n controller._pulling = false;\n\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n if (controller._controlledReadableStream._state === 'readable') {\n ReadableByteStreamControllerError(controller, e);\n }\n }).catch(rethrowAssertionErrorRejection);\n\n return undefined;\n}\n\nfunction ReadableByteStreamControllerClearPendingPullIntos(controller) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n controller._pendingPullIntos = [];\n}\n\nfunction ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n assert(stream._state !== 'errored', 'state must not be errored');\n\n var done = false;\n if (stream._state === 'closed') {\n assert(pullIntoDescriptor.bytesFilled === 0);\n done = true;\n }\n\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'default') {\n ReadableStreamFulfillReadRequest(stream, filledView, done);\n } else {\n assert(pullIntoDescriptor.readerType === 'byob');\n ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n }\n}\n\nfunction ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n var bytesFilled = pullIntoDescriptor.bytesFilled;\n var elementSize = pullIntoDescriptor.elementSize;\n\n assert(bytesFilled <= pullIntoDescriptor.byteLength);\n assert(bytesFilled % elementSize === 0);\n\n return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n}\n\nfunction ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n controller._queue.push({ buffer: buffer, byteOffset: byteOffset, byteLength: byteLength });\n controller._queueTotalSize += byteLength;\n}\n\nfunction ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n var elementSize = pullIntoDescriptor.elementSize;\n\n var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n\n var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n\n var totalBytesToCopyRemaining = maxBytesToCopy;\n var ready = false;\n if (maxAlignedBytes > currentAlignedBytes) {\n totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n ready = true;\n }\n\n var queue = controller._queue;\n\n while (totalBytesToCopyRemaining > 0) {\n var headOfQueue = queue[0];\n\n var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n\n var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n\n if (headOfQueue.byteLength === bytesToCopy) {\n queue.shift();\n } else {\n headOfQueue.byteOffset += bytesToCopy;\n headOfQueue.byteLength -= bytesToCopy;\n }\n controller._queueTotalSize -= bytesToCopy;\n\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n\n totalBytesToCopyRemaining -= bytesToCopy;\n }\n\n if (ready === false) {\n assert(controller._queueTotalSize === 0, 'queue must be empty');\n assert(pullIntoDescriptor.bytesFilled > 0);\n assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);\n }\n\n return ready;\n}\n\nfunction ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);\n\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n pullIntoDescriptor.bytesFilled += size;\n}\n\nfunction ReadableByteStreamControllerHandleQueueDrain(controller) {\n assert(controller._controlledReadableStream._state === 'readable');\n\n if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n ReadableStreamClose(controller._controlledReadableStream);\n } else {\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n}\n\nfunction ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n if (controller._byobRequest === undefined) {\n return;\n }\n\n controller._byobRequest._associatedReadableByteStreamController = undefined;\n controller._byobRequest._view = undefined;\n controller._byobRequest = undefined;\n}\n\nfunction ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n assert(controller._closeRequested === false);\n\n while (controller._pendingPullIntos.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n\n var pullIntoDescriptor = controller._pendingPullIntos[0];\n\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n }\n }\n}\n\nfunction ReadableByteStreamControllerPullInto(controller, view) {\n var stream = controller._controlledReadableStream;\n\n var elementSize = 1;\n if (view.constructor !== DataView) {\n elementSize = view.constructor.BYTES_PER_ELEMENT;\n }\n\n var ctor = view.constructor;\n\n var pullIntoDescriptor = {\n buffer: view.buffer,\n byteOffset: view.byteOffset,\n byteLength: view.byteLength,\n bytesFilled: 0,\n elementSize: elementSize,\n ctor: ctor,\n readerType: 'byob'\n };\n\n if (controller._pendingPullIntos.length > 0) {\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n controller._pendingPullIntos.push(pullIntoDescriptor);\n\n // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n // - No change happens on desiredSize\n // - The source has already been notified of that there's at least 1 pending read(view)\n\n return ReadableStreamAddReadIntoRequest(stream);\n }\n\n if (stream._state === 'closed') {\n var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n return Promise.resolve(CreateIterResultObject(emptyView, true));\n }\n\n if (controller._queueTotalSize > 0) {\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n\n ReadableByteStreamControllerHandleQueueDrain(controller);\n\n return Promise.resolve(CreateIterResultObject(filledView, false));\n }\n\n if (controller._closeRequested === true) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n\n return Promise.reject(e);\n }\n }\n\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n controller._pendingPullIntos.push(pullIntoDescriptor);\n\n var promise = ReadableStreamAddReadIntoRequest(stream);\n\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n\n return promise;\n}\n\nfunction ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n\n assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');\n\n var stream = controller._controlledReadableStream;\n if (ReadableStreamHasBYOBReader(stream) === true) {\n while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n }\n }\n}\n\nfunction ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n throw new RangeError('bytesWritten out of range');\n }\n\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n\n if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n // TODO: Figure out whether we should detach the buffer or not here.\n return;\n }\n\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n if (remainderSize > 0) {\n var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n }\n\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n pullIntoDescriptor.bytesFilled -= remainderSize;\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n}\n\nfunction ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n var firstDescriptor = controller._pendingPullIntos[0];\n\n var stream = controller._controlledReadableStream;\n\n if (stream._state === 'closed') {\n if (bytesWritten !== 0) {\n throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n }\n\n ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n } else {\n assert(stream._state === 'readable');\n\n ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n }\n}\n\nfunction ReadableByteStreamControllerShiftPendingPullInto(controller) {\n var descriptor = controller._pendingPullIntos.shift();\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n return descriptor;\n}\n\nfunction ReadableByteStreamControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n\n if (stream._state !== 'readable') {\n return false;\n }\n\n if (controller._closeRequested === true) {\n return false;\n }\n\n if (controller._started === false) {\n return false;\n }\n\n if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n\n if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n return true;\n }\n\n if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {\n return true;\n }\n\n return false;\n}\n\n// A client of ReadableByteStreamController may use these functions directly to bypass state check.\n\nfunction ReadableByteStreamControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n if (controller._queueTotalSize > 0) {\n controller._closeRequested = true;\n\n return;\n }\n\n if (controller._pendingPullIntos.length > 0) {\n var firstPendingPullInto = controller._pendingPullIntos[0];\n if (firstPendingPullInto.bytesFilled > 0) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n\n throw e;\n }\n }\n\n ReadableStreamClose(stream);\n}\n\nfunction ReadableByteStreamControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n var buffer = chunk.buffer;\n var byteOffset = chunk.byteOffset;\n var byteLength = chunk.byteLength;\n var transferredBuffer = TransferArrayBuffer(buffer);\n\n if (ReadableStreamHasDefaultReader(stream) === true) {\n if (ReadableStreamGetNumReadRequests(stream) === 0) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n } else {\n assert(controller._queue.length === 0);\n\n var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n ReadableStreamFulfillReadRequest(stream, transferredView, false);\n }\n } else if (ReadableStreamHasBYOBReader(stream) === true) {\n // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n } else {\n assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n}\n\nfunction ReadableByteStreamControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n\n assert(stream._state === 'readable');\n\n ReadableByteStreamControllerClearPendingPullIntos(controller);\n\n ResetQueue(controller);\n ReadableStreamError(stream, e);\n}\n\nfunction ReadableByteStreamControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction ReadableByteStreamControllerRespond(controller, bytesWritten) {\n bytesWritten = Number(bytesWritten);\n if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n throw new RangeError('bytesWritten must be a finite');\n }\n\n assert(controller._pendingPullIntos.length > 0);\n\n ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n}\n\nfunction ReadableByteStreamControllerRespondWithNewView(controller, view) {\n assert(controller._pendingPullIntos.length > 0);\n\n var firstDescriptor = controller._pendingPullIntos[0];\n\n if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n throw new RangeError('The region specified by view does not match byobRequest');\n }\n if (firstDescriptor.byteLength !== view.byteLength) {\n throw new RangeError('The buffer of view has different capacity than byobRequest');\n }\n\n firstDescriptor.buffer = view.buffer;\n\n ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n}\n\n// Helper functions for the ReadableStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');\n}\n\n// Helper functions for the readers.\n\nfunction readerLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released reader');\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction defaultReaderBrandCheckException(name) {\n return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');\n}\n\nfunction defaultReaderClosedPromiseInitialize(reader) {\n reader._closedPromise = new Promise(function (resolve, reject) {\n reader._closedPromise_resolve = resolve;\n reader._closedPromise_reject = reject;\n });\n}\n\nfunction defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n reader._closedPromise = Promise.reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseInitializeAsResolved(reader) {\n reader._closedPromise = Promise.resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseReject(reader, reason) {\n assert(reader._closedPromise_resolve !== undefined);\n assert(reader._closedPromise_reject !== undefined);\n\n reader._closedPromise_reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseResetToRejected(reader, reason) {\n assert(reader._closedPromise_resolve === undefined);\n assert(reader._closedPromise_reject === undefined);\n\n reader._closedPromise = Promise.reject(reason);\n}\n\nfunction defaultReaderClosedPromiseResolve(reader) {\n assert(reader._closedPromise_resolve !== undefined);\n assert(reader._closedPromise_reject !== undefined);\n\n reader._closedPromise_resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction byobReaderBrandCheckException(name) {\n return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');\n}\n\n// Helper functions for the ReadableStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');\n}\n\n// Helper functions for the ReadableStreamBYOBRequest.\n\nfunction byobRequestBrandCheckException(name) {\n return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');\n}\n\n// Helper functions for the ReadableByteStreamController.\n\nfunction byteStreamControllerBrandCheckException(name) {\n return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');\n}\n\n// Helper function for ReadableStream pipeThrough\n\nfunction ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {\n try {\n // This relies on the brand-check that is enforced by Promise.prototype.then(). As with the rest of the reference\n // implementation, it doesn't attempt to do the right thing if someone has modified the global environment.\n Promise.prototype.then.call(promise, undefined, function () {});\n } catch (e) {\n // The brand check failed, therefore the internal slot is not present and there's nothing further to do.\n }\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar transformStream = __w_pdfjs_require__(6);\nvar readableStream = __w_pdfjs_require__(4);\nvar writableStream = __w_pdfjs_require__(2);\n\nexports.TransformStream = transformStream.TransformStream;\nexports.ReadableStream = readableStream.ReadableStream;\nexports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;\nexports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;\nexports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;\nexports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;\nexports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;\nexports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;\nexports.IsWritableStream = writableStream.IsWritableStream;\nexports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;\nexports.WritableStream = writableStream.WritableStream;\nexports.WritableStreamAbort = writableStream.WritableStreamAbort;\nexports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;\nexports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;\nexports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;\nexports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(1),\n assert = _require.assert;\n\nvar _require2 = __w_pdfjs_require__(0),\n InvokeOrNoop = _require2.InvokeOrNoop,\n PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,\n PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,\n typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(4),\n ReadableStream = _require3.ReadableStream,\n ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,\n ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,\n ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,\n ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;\n\nvar _require4 = __w_pdfjs_require__(2),\n WritableStream = _require4.WritableStream,\n WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;\n\n// Methods on the transform stream controller object\n\nfunction TransformStreamCloseReadable(transformStream) {\n // console.log('TransformStreamCloseReadable()');\n\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n if (transformStream._readableClosed === true) {\n throw new TypeError('Readable side is already closed');\n }\n\n TransformStreamCloseReadableInternal(transformStream);\n}\n\nfunction TransformStreamEnqueueToReadable(transformStream, chunk) {\n // console.log('TransformStreamEnqueueToReadable()');\n\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n if (transformStream._readableClosed === true) {\n throw new TypeError('Readable side is already closed');\n }\n\n // We throttle transformer.transform invocation based on the backpressure of the ReadableStream, but we still\n // accept TransformStreamEnqueueToReadable() calls.\n\n var controller = transformStream._readableController;\n\n try {\n ReadableStreamDefaultControllerEnqueue(controller, chunk);\n } catch (e) {\n // This happens when readableStrategy.size() throws.\n // The ReadableStream has already errored itself.\n transformStream._readableClosed = true;\n TransformStreamErrorIfNeeded(transformStream, e);\n\n throw transformStream._storedError;\n }\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n var maybeBackpressure = desiredSize <= 0;\n\n if (maybeBackpressure === true && transformStream._backpressure === false) {\n // This allows pull() again. When desiredSize is 0, it's possible that a pull() will happen immediately (but\n // asynchronously) after this because of pending read()s and set _backpressure back to false.\n //\n // If pull() could be called from inside enqueue(), then this logic would be wrong. This cannot happen\n // because there is always a promise pending from start() or pull() when _backpressure is false.\n TransformStreamSetBackpressure(transformStream, true);\n }\n}\n\nfunction TransformStreamError(transformStream, e) {\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n TransformStreamErrorInternal(transformStream, e);\n}\n\n// Abstract operations.\n\nfunction TransformStreamCloseReadableInternal(transformStream) {\n assert(transformStream._errored === false);\n assert(transformStream._readableClosed === false);\n\n try {\n ReadableStreamDefaultControllerClose(transformStream._readableController);\n } catch (e) {\n assert(false);\n }\n\n transformStream._readableClosed = true;\n}\n\nfunction TransformStreamErrorIfNeeded(transformStream, e) {\n if (transformStream._errored === false) {\n TransformStreamErrorInternal(transformStream, e);\n }\n}\n\nfunction TransformStreamErrorInternal(transformStream, e) {\n // console.log('TransformStreamErrorInternal()');\n\n assert(transformStream._errored === false);\n\n transformStream._errored = true;\n transformStream._storedError = e;\n\n if (transformStream._writableDone === false) {\n WritableStreamDefaultControllerError(transformStream._writableController, e);\n }\n if (transformStream._readableClosed === false) {\n ReadableStreamDefaultControllerError(transformStream._readableController, e);\n }\n}\n\n// Used for preventing the next write() call on TransformStreamSink until there\n// is no longer backpressure.\nfunction TransformStreamReadableReadyPromise(transformStream) {\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n if (transformStream._backpressure === false) {\n return Promise.resolve();\n }\n\n assert(transformStream._backpressure === true, '_backpressure should have been initialized');\n\n return transformStream._backpressureChangePromise;\n}\n\nfunction TransformStreamSetBackpressure(transformStream, backpressure) {\n // console.log(`TransformStreamSetBackpressure(${backpressure})`);\n\n // Passes also when called during construction.\n assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');\n\n if (transformStream._backpressureChangePromise !== undefined) {\n // The fulfillment value is just for a sanity check.\n transformStream._backpressureChangePromise_resolve(backpressure);\n }\n\n transformStream._backpressureChangePromise = new Promise(function (resolve) {\n transformStream._backpressureChangePromise_resolve = resolve;\n });\n\n transformStream._backpressureChangePromise.then(function (resolution) {\n assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');\n });\n\n transformStream._backpressure = backpressure;\n}\n\nfunction TransformStreamDefaultTransform(chunk, transformStreamController) {\n var transformStream = transformStreamController._controlledTransformStream;\n TransformStreamEnqueueToReadable(transformStream, chunk);\n return Promise.resolve();\n}\n\nfunction TransformStreamTransform(transformStream, chunk) {\n // console.log('TransformStreamTransform()');\n\n assert(transformStream._errored === false);\n assert(transformStream._transforming === false);\n assert(transformStream._backpressure === false);\n\n transformStream._transforming = true;\n\n var transformer = transformStream._transformer;\n var controller = transformStream._transformStreamController;\n\n var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);\n\n return transformPromise.then(function () {\n transformStream._transforming = false;\n\n return TransformStreamReadableReadyPromise(transformStream);\n }, function (e) {\n TransformStreamErrorIfNeeded(transformStream, e);\n return Promise.reject(e);\n });\n}\n\nfunction IsTransformStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsTransformStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n return false;\n }\n\n return true;\n}\n\nvar TransformStreamSink = function () {\n function TransformStreamSink(transformStream, startPromise) {\n _classCallCheck(this, TransformStreamSink);\n\n this._transformStream = transformStream;\n this._startPromise = startPromise;\n }\n\n _createClass(TransformStreamSink, [{\n key: 'start',\n value: function start(c) {\n var transformStream = this._transformStream;\n\n transformStream._writableController = c;\n\n return this._startPromise.then(function () {\n return TransformStreamReadableReadyPromise(transformStream);\n });\n }\n }, {\n key: 'write',\n value: function write(chunk) {\n // console.log('TransformStreamSink.write()');\n\n var transformStream = this._transformStream;\n\n return TransformStreamTransform(transformStream, chunk);\n }\n }, {\n key: 'abort',\n value: function abort() {\n var transformStream = this._transformStream;\n transformStream._writableDone = true;\n TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));\n }\n }, {\n key: 'close',\n value: function close() {\n // console.log('TransformStreamSink.close()');\n\n var transformStream = this._transformStream;\n\n assert(transformStream._transforming === false);\n\n transformStream._writableDone = true;\n\n var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);\n // Return a promise that is fulfilled with undefined on success.\n return flushPromise.then(function () {\n if (transformStream._errored === true) {\n return Promise.reject(transformStream._storedError);\n }\n if (transformStream._readableClosed === false) {\n TransformStreamCloseReadableInternal(transformStream);\n }\n return Promise.resolve();\n }).catch(function (r) {\n TransformStreamErrorIfNeeded(transformStream, r);\n return Promise.reject(transformStream._storedError);\n });\n }\n }]);\n\n return TransformStreamSink;\n}();\n\nvar TransformStreamSource = function () {\n function TransformStreamSource(transformStream, startPromise) {\n _classCallCheck(this, TransformStreamSource);\n\n this._transformStream = transformStream;\n this._startPromise = startPromise;\n }\n\n _createClass(TransformStreamSource, [{\n key: 'start',\n value: function start(c) {\n var transformStream = this._transformStream;\n\n transformStream._readableController = c;\n\n return this._startPromise.then(function () {\n // Prevent the first pull() call until there is backpressure.\n\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n if (transformStream._backpressure === true) {\n return Promise.resolve();\n }\n\n assert(transformStream._backpressure === false, '_backpressure should have been initialized');\n\n return transformStream._backpressureChangePromise;\n });\n }\n }, {\n key: 'pull',\n value: function pull() {\n // console.log('TransformStreamSource.pull()');\n\n var transformStream = this._transformStream;\n\n // Invariant. Enforced by the promises returned by start() and pull().\n assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');\n\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n TransformStreamSetBackpressure(transformStream, false);\n\n // Prevent the next pull() call until there is backpressure.\n return transformStream._backpressureChangePromise;\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n var transformStream = this._transformStream;\n transformStream._readableClosed = true;\n TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));\n }\n }]);\n\n return TransformStreamSource;\n}();\n\nvar TransformStreamDefaultController = function () {\n function TransformStreamDefaultController(transformStream) {\n _classCallCheck(this, TransformStreamDefaultController);\n\n if (IsTransformStream(transformStream) === false) {\n throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');\n }\n\n if (transformStream._transformStreamController !== undefined) {\n throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');\n }\n\n this._controlledTransformStream = transformStream;\n }\n\n _createClass(TransformStreamDefaultController, [{\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n\n TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);\n }\n }, {\n key: 'close',\n value: function close() {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n\n TransformStreamCloseReadable(this._controlledTransformStream);\n }\n }, {\n key: 'error',\n value: function error(reason) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n\n TransformStreamError(this._controlledTransformStream, reason);\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n\n var transformStream = this._controlledTransformStream;\n var readableController = transformStream._readableController;\n\n return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n }\n }]);\n\n return TransformStreamDefaultController;\n}();\n\nvar TransformStream = function () {\n function TransformStream() {\n var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, TransformStream);\n\n this._transformer = transformer;\n var readableStrategy = transformer.readableStrategy,\n writableStrategy = transformer.writableStrategy;\n\n\n this._transforming = false;\n this._errored = false;\n this._storedError = undefined;\n\n this._writableController = undefined;\n this._readableController = undefined;\n this._transformStreamController = undefined;\n\n this._writableDone = false;\n this._readableClosed = false;\n\n this._backpressure = undefined;\n this._backpressureChangePromise = undefined;\n this._backpressureChangePromise_resolve = undefined;\n\n this._transformStreamController = new TransformStreamDefaultController(this);\n\n var startPromise_resolve = void 0;\n var startPromise = new Promise(function (resolve) {\n startPromise_resolve = resolve;\n });\n\n var source = new TransformStreamSource(this, startPromise);\n\n this._readable = new ReadableStream(source, readableStrategy);\n\n var sink = new TransformStreamSink(this, startPromise);\n\n this._writable = new WritableStream(sink, writableStrategy);\n\n assert(this._writableController !== undefined);\n assert(this._readableController !== undefined);\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);\n // Set _backpressure based on desiredSize. As there is no read() at this point, we can just interpret\n // desiredSize being non-positive as backpressure.\n TransformStreamSetBackpressure(this, desiredSize <= 0);\n\n var transformStream = this;\n var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);\n startPromise_resolve(startResult);\n startPromise.catch(function (e) {\n // The underlyingSink and underlyingSource will error the readable and writable ends on their own.\n if (transformStream._errored === false) {\n transformStream._errored = true;\n transformStream._storedError = e;\n }\n });\n }\n\n _createClass(TransformStream, [{\n key: 'readable',\n get: function get() {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException('readable');\n }\n\n return this._readable;\n }\n }, {\n key: 'writable',\n get: function get() {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException('writable');\n }\n\n return this._writable;\n }\n }]);\n\n return TransformStream;\n}();\n\nmodule.exports = { TransformStream: TransformStream };\n\n// Helper functions for the TransformStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');\n}\n\n// Helper functions for the TransformStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nmodule.exports = __w_pdfjs_require__(5);\n\n\n/***/ })\n/******/ ])));\n\n\n// WEBPACK FOOTER //\n// external/streams/streams-lib.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FONT_IDENTITY_MATRIX, IDENTITY_MATRIX, ImageKind, info, isArray,\n isLittleEndian, isNum, OPS, shadow, TextRenderingMode, Util, warn\n} from '../shared/util';\nimport { getShadingPatternFromIR, TilingPattern } from './pattern_helper';\nimport { WebGLUtils } from './webgl';\n\n// contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n\n// Minimal font size that would be used during canvas fillText operations.\nvar MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nvar MAX_FONT_SIZE = 100;\nvar MAX_GROUP_SIZE = 4096;\n\n// Heuristic value used when enforcing minimum line widths.\nvar MIN_WIDTH_FACTOR = 0.65;\n\nvar COMPILE_TYPE3_GLYPHS = true;\nvar MAX_SIZE_TO_COMPILE = 1000;\n\nvar FULL_CHUNK_HEIGHT = 16;\n\nvar IsLittleEndianCached = {\n get value() {\n return shadow(IsLittleEndianCached, 'value', isLittleEndian());\n },\n};\n\nfunction addContextCurrentTransform(ctx) {\n // If the context doesn't expose a `mozCurrentTransform`, add a JS based one.\n if (!ctx.mozCurrentTransform) {\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n\n Object.defineProperty(ctx, 'mozCurrentTransform', {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n },\n });\n\n Object.defineProperty(ctx, 'mozCurrentTransformInverse', {\n get: function getCurrentTransformInverse() {\n // Calculation done using WolframAlpha:\n // http://www.wolframalpha.com/input/?\n // i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}\n\n var m = this._transformMatrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n\n var ad_bc = a * d - b * c;\n var bc_ad = b * c - a * d;\n\n return [\n d / ad_bc,\n b / bc_ad,\n c / bc_ad,\n a / ad_bc,\n (d * e - c * f) / bc_ad,\n (b * e - a * f) / ad_bc\n ];\n },\n });\n\n ctx.save = function ctxSave() {\n var old = this._transformMatrix;\n this._transformStack.push(old);\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n var prev = this._transformStack.pop();\n if (prev) {\n this._transformMatrix = prev;\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n var m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n var m = this._transformMatrix;\n m[0] = m[0] * x;\n m[1] = m[1] * x;\n m[2] = m[2] * y;\n m[3] = m[3] * y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n var m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * a + m[2] * b,\n m[1] * a + m[3] * b,\n m[0] * c + m[2] * d,\n m[1] * c + m[3] * d,\n m[0] * e + m[2] * f + m[4],\n m[1] * e + m[3] * f + m[5]\n ];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.rotate = function ctxRotate(angle) {\n var cosValue = Math.cos(angle);\n var sinValue = Math.sin(angle);\n\n var m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * cosValue + m[2] * sinValue,\n m[1] * cosValue + m[3] * sinValue,\n m[0] * (-sinValue) + m[2] * cosValue,\n m[1] * (-sinValue) + m[3] * cosValue,\n m[4],\n m[5]\n ];\n\n this._originalRotate(angle);\n };\n }\n}\n\nvar CachedCanvases = (function CachedCanvasesClosure() {\n function CachedCanvases(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n CachedCanvases.prototype = {\n getCanvas: function CachedCanvases_getCanvas(id, width, height,\n trackTransform) {\n var canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n // reset canvas transform for emulated mozCurrentTransform, if needed\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n return canvasEntry;\n },\n clear() {\n for (var id in this.cache) {\n var canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n },\n };\n return CachedCanvases;\n})();\n\nfunction compileType3Glyph(imgData) {\n var POINT_TO_PROCESS_LIMIT = 1000;\n\n var width = imgData.width, height = imgData.height;\n var i, j, j0, width1 = width + 1;\n var points = new Uint8Array(width1 * (height + 1));\n var POINT_TYPES =\n new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n\n // decodes bit-packed mask data\n var lineSize = (width + 7) & ~7, data0 = imgData.data;\n var data = new Uint8Array(lineSize * height), pos = 0, ii;\n for (i = 0, ii = data0.length; i < ii; i++) {\n var mask = 128, elem = data0[i];\n while (mask > 0) {\n data[pos++] = (elem & mask) ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding iteresting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\n var count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) +\n (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n // building outlines\n var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n var outlines = [];\n for (i = 0; count && i <= height; i++) {\n var p = i * width1;\n var end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n var coords = [p % width1, i];\n\n var type = points[p], p0 = p, pp;\n do {\n var step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else { // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2 | type << 2);\n }\n\n coords.push(p % width1);\n coords.push((p / width1) | 0);\n --count;\n } while (p0 !== p);\n outlines.push(coords);\n --i;\n }\n\n var drawOutline = function(c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n for (var i = 0, ii = outlines.length; i < ii; i++) {\n var o = outlines[i];\n c.moveTo(o[0], o[1]);\n for (var j = 2, jj = o.length; j < jj; j += 2) {\n c.lineTo(o[j], o[j + 1]);\n }\n }\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nvar CanvasExtraState = (function CanvasExtraStateClosure() {\n function CanvasExtraState() {\n // Are soft masks and alpha values shapes or opacities?\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = '#000000';\n this.strokeColor = '#000000';\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.resumeSMaskCtx = null; // nonclonable field (see the save method below)\n }\n\n CanvasExtraState.prototype = {\n clone: function CanvasExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n },\n };\n return CanvasExtraState;\n})();\n\nvar CanvasGraphics = (function CanvasGraphicsClosure() {\n // Defines the time the executeOperatorList is going to be executing\n // before it stops and shedules a continue of execution.\n var EXECUTION_TIME = 15;\n // Defines the number of steps before checking the execution time\n var EXECUTION_STEPS = 10;\n\n function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory,\n imageLayer) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState();\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n // Patterns are painted relative to the initial page/form transform, see pdf\n // spec 8.7.2 NOTE 1.\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n if (canvasCtx) {\n // NOTE: if mozCurrentTransform is polyfilled, then the current state of\n // the transformation must already be set in canvasCtx._transformMatrix.\n addContextCurrentTransform(canvasCtx);\n }\n this.cachedGetSinglePixelWidth = null;\n }\n\n function putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\n\n var height = imgData.height, width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0, destPos;\n var src = imgData.data;\n var dest = chunkImgData.data;\n var i, j, thisChunkHeight, elemsInThisChunk;\n\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\n var srcLength = src.byteLength;\n var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n var dest32DataLength = dest32.length;\n var fullSrcDiff = (width + 7) >> 3;\n var white = 0xFFFFFFFF;\n var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight =\n (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n var srcDiff = srcLength - srcPos;\n var k = 0;\n var kEnd = (srcDiff > fullSrcDiff) ? width : srcDiff * 8 - 7;\n var kEndUnrolled = kEnd & ~7;\n var mask = 0;\n var srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = (srcByte & 128) ? white : black;\n dest32[destPos++] = (srcByte & 64) ? white : black;\n dest32[destPos++] = (srcByte & 32) ? white : black;\n dest32[destPos++] = (srcByte & 16) ? white : black;\n dest32[destPos++] = (srcByte & 8) ? white : black;\n dest32[destPos++] = (srcByte & 4) ? white : black;\n dest32[destPos++] = (srcByte & 2) ? white : black;\n dest32[destPos++] = (srcByte & 1) ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = (srcByte & mask) ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\n\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n }\n\n function putBinaryImageMask(ctx, imgData) {\n var height = imgData.height, width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0;\n var src = imgData.data;\n var dest = chunkImgData.data;\n\n for (var i = 0; i < totalChunks; i++) {\n var thisChunkHeight =\n (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n var destPos = 3; // alpha component offset\n for (var j = 0; j < thisChunkHeight; j++) {\n var mask = 0;\n for (var k = 0; k < width; k++) {\n if (!mask) {\n var elem = src[srcPos++];\n mask = 128;\n }\n dest[destPos] = (elem & mask) ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n }\n\n function copyCtxState(sourceCtx, destCtx) {\n var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha',\n 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit',\n 'globalCompositeOperation', 'font'];\n for (var i = 0, ii = properties.length; i < ii; i++) {\n var property = properties[i];\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n }\n\n function resetCtxToDefault(ctx) {\n ctx.strokeStyle = '#000000';\n ctx.fillStyle = '#000000';\n ctx.fillRule = 'nonzero';\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = 'source-over';\n ctx.font = '10px sans-serif';\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n }\n\n function composeSMaskBackdrop(bytes, r0, g0, b0) {\n var length = bytes.length;\n for (var i = 3; i < length; i += 4) {\n var alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n var alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n }\n\n function composeSMaskAlpha(maskData, layerData, transferMap) {\n var length = maskData.length;\n var scale = 1 / 255;\n for (var i = 3; i < length; i += 4) {\n var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n }\n\n function composeSMaskLuminosity(maskData, layerData, transferMap) {\n var length = maskData.length;\n for (var i = 3; i < length; i += 4) {\n var y = (maskData[i - 3] * 77) + // * 0.3 / 255 * 0x10000\n (maskData[i - 2] * 152) + // * 0.59 ....\n (maskData[i - 1] * 28); // * 0.11 ....\n layerData[i] = transferMap ?\n (layerData[i] * transferMap[y >> 8]) >> 8 :\n (layerData[i] * y) >> 16;\n }\n }\n\n function genericComposeSMask(maskCtx, layerCtx, width, height,\n subtype, backdrop, transferMap) {\n var hasBackdrop = !!backdrop;\n var r0 = hasBackdrop ? backdrop[0] : 0;\n var g0 = hasBackdrop ? backdrop[1] : 0;\n var b0 = hasBackdrop ? backdrop[2] : 0;\n\n var composeFn;\n if (subtype === 'Luminosity') {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n // processing image in chunks to save memory\n var PIXELS_TO_PROCESS = 1048576;\n var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (var row = 0; row < height; row += chunkSize) {\n var chunkHeight = Math.min(chunkSize, height - row);\n var maskData = maskCtx.getImageData(0, row, width, chunkHeight);\n var layerData = layerCtx.getImageData(0, row, width, chunkHeight);\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n maskCtx.putImageData(layerData, 0, row);\n }\n }\n\n function composeSMask(ctx, smask, layerCtx) {\n var mask = smask.canvas;\n var maskCtx = smask.context;\n\n ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY,\n smask.offsetX, smask.offsetY);\n\n var backdrop = smask.backdrop || null;\n if (!smask.transferMap && WebGLUtils.isEnabled) {\n var composed = WebGLUtils.composeSMask(layerCtx.canvas, mask,\n { subtype: smask.subtype, backdrop, });\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(composed, smask.offsetX, smask.offsetY);\n return;\n }\n genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height,\n smask.subtype, backdrop, smask.transferMap);\n ctx.drawImage(mask, 0, 0);\n }\n\n var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n var NORMAL_CLIP = {};\n var EO_CLIP = {};\n\n CanvasGraphics.prototype = {\n\n beginDrawing({ transform, viewport, transparency,\n background = null, }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n var width = this.ctx.canvas.width;\n var height = this.ctx.canvas.height;\n\n this.ctx.save();\n this.ctx.fillStyle = background || 'rgb(255, 255, 255)';\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n var transparentCanvas = this.cachedCanvases.getCanvas(\n 'transparent', width, height, true);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform.apply(this.ctx,\n this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n }\n this.ctx.transform.apply(this.ctx, viewport.transform);\n\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n },\n\n executeOperatorList: function CanvasGraphics_executeOperatorList(\n operatorList,\n executionStartIdx, continueCallback,\n stepper) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var i = executionStartIdx || 0;\n var argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n var chunkOperations = (argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === 'function');\n var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n var steps = 0;\n\n var commonObjs = this.commonObjs;\n var objs = this.objs;\n var fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n var deps = argsArray[i];\n for (var n = 0, nn = deps.length; n < nn; n++) {\n var depObjId = deps[n];\n var common = depObjId[0] === 'g' && depObjId[1] === '_';\n var objsPool = common ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.isResolved(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n },\n\n endDrawing: function CanvasGraphics_endDrawing() {\n // Finishing all opened operations such as SMask group painting.\n if (this.current.activeSMask !== null) {\n this.endSMaskGroup();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n WebGLUtils.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n },\n\n // Graphics state\n setLineWidth: function CanvasGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n },\n setLineCap: function CanvasGraphics_setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function CanvasGraphics_setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n },\n setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {\n var ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n },\n setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {\n // Maybe if we one day fully support color spaces this will be important\n // for now we can ignore.\n // TODO set rendering intent?\n },\n setFlatness: function CanvasGraphics_setFlatness(flatness) {\n // There's no way to control this with canvas, but we can safely ignore.\n // TODO set flatness?\n },\n setGState: function CanvasGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var value = state[1];\n\n switch (key) {\n case 'LW':\n this.setLineWidth(value);\n break;\n case 'LC':\n this.setLineCap(value);\n break;\n case 'LJ':\n this.setLineJoin(value);\n break;\n case 'ML':\n this.setMiterLimit(value);\n break;\n case 'D':\n this.setDash(value[0], value[1]);\n break;\n case 'RI':\n this.setRenderingIntent(value);\n break;\n case 'FL':\n this.setFlatness(value);\n break;\n case 'Font':\n this.setFont(value[0], value[1]);\n break;\n case 'CA':\n this.current.strokeAlpha = state[1];\n break;\n case 'ca':\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n case 'BM':\n this.ctx.globalCompositeOperation = value;\n break;\n case 'SMask':\n if (this.current.activeSMask) {\n // If SMask is currrenly used, it needs to be suspended or\n // finished. Suspend only makes sense when at least one save()\n // was performed and state needs to be reverted on restore().\n if (this.stateStack.length > 0 &&\n (this.stateStack[this.stateStack.length - 1].activeSMask ===\n this.current.activeSMask)) {\n this.suspendSMaskGroup();\n } else {\n this.endSMaskGroup();\n }\n }\n this.current.activeSMask = value ? this.tempSMask : null;\n if (this.current.activeSMask) {\n this.beginSMaskGroup();\n }\n this.tempSMask = null;\n break;\n }\n }\n },\n beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {\n\n var activeSMask = this.current.activeSMask;\n var drawnWidth = activeSMask.canvas.width;\n var drawnHeight = activeSMask.canvas.height;\n var cacheId = 'smaskGroupAt' + this.groupLevel;\n var scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId, drawnWidth, drawnHeight, true);\n\n var currentCtx = this.ctx;\n var currentTransform = currentCtx.mozCurrentTransform;\n this.ctx.save();\n\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);\n groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;\n\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n ['BM', 'source-over'],\n ['ca', 1],\n ['CA', 1]\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n // Similar to endSMaskGroup, the intermediate canvas has to be composed\n // and future ctx state restored.\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n\n composeSMask(this.ctx, this.current.activeSMask, groupCtx);\n this.ctx.restore();\n this.ctx.save(); // save is needed since SMask will be resumed.\n copyCtxState(groupCtx, this.ctx);\n\n // Saving state for resuming.\n this.current.resumeSMaskCtx = groupCtx;\n // Transform was changed in the SMask canvas, reflecting this change on\n // this.ctx.\n var deltaTransform = Util.transform(\n this.current.activeSMask.startTransformInverse,\n groupCtx.mozCurrentTransform);\n this.ctx.transform.apply(this.ctx, deltaTransform);\n\n // SMask was composed, the results at the groupCtx can be cleared.\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n groupCtx.restore();\n },\n resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n // Resuming state saved by suspendSMaskGroup. We don't need to restore\n // any groupCtx state since restore() command (the only caller) will do\n // that for us. See also beginSMaskGroup.\n var groupCtx = this.current.resumeSMaskCtx;\n var currentCtx = this.ctx;\n this.ctx = groupCtx;\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n endSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n\n composeSMask(this.ctx, this.current.activeSMask, groupCtx);\n this.ctx.restore();\n copyCtxState(groupCtx, this.ctx);\n // Transform was changed in the SMask canvas, reflecting this change on\n // this.ctx.\n var deltaTransform = Util.transform(\n this.current.activeSMask.startTransformInverse,\n groupCtx.mozCurrentTransform);\n this.ctx.transform.apply(this.ctx, deltaTransform);\n },\n save: function CanvasGraphics_save() {\n this.ctx.save();\n var old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.current.resumeSMaskCtx = null;\n },\n restore: function CanvasGraphics_restore() {\n // SMask was suspended, we just need to resume it.\n if (this.current.resumeSMaskCtx) {\n this.resumeSMaskGroup();\n }\n // SMask has to be finished once there is no states that are using the\n // same SMask.\n if (this.current.activeSMask !== null && (this.stateStack.length === 0 ||\n this.stateStack[this.stateStack.length - 1].activeSMask !==\n this.current.activeSMask)) {\n this.endSMaskGroup();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n this.ctx.restore();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this.cachedGetSinglePixelWidth = null;\n }\n },\n transform: function CanvasGraphics_transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this.cachedGetSinglePixelWidth = null;\n },\n\n // Path\n constructPath: function CanvasGraphics_constructPath(ops, args) {\n var ctx = this.ctx;\n var current = this.current;\n var x = current.x, y = current.y;\n for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n if (width === 0) {\n width = this.getSinglePixelWidth();\n }\n if (height === 0) {\n height = this.getSinglePixelWidth();\n }\n var xw = x + width;\n var yh = y + height;\n this.ctx.moveTo(x, y);\n this.ctx.lineTo(xw, y);\n this.ctx.lineTo(xw, yh);\n this.ctx.lineTo(x, yh);\n this.ctx.lineTo(x, y);\n this.ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3],\n x, y);\n j += 6;\n break;\n case OPS.curveTo2:\n ctx.bezierCurveTo(x, y, args[j], args[j + 1],\n args[j + 2], args[j + 3]);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n current.setCurrentPoint(x, y);\n },\n closePath: function CanvasGraphics_closePath() {\n this.ctx.closePath();\n },\n stroke: function CanvasGraphics_stroke(consumePath) {\n consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n var ctx = this.ctx;\n var strokeColor = this.current.strokeColor;\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR,\n this.current.lineWidth);\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (strokeColor && strokeColor.hasOwnProperty('type') &&\n strokeColor.type === 'Pattern') {\n // for patterns, we transform to pattern space, calculate\n // the pattern, call stroke, and restore to user space\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n if (consumePath) {\n this.consumePath();\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n },\n closeStroke: function CanvasGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n fill: function CanvasGraphics_fill(consumePath) {\n consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n if (this.baseTransform) {\n ctx.setTransform.apply(ctx, this.baseTransform);\n }\n ctx.fillStyle = fillColor.getPattern(ctx, this);\n needRestore = true;\n }\n\n if (this.pendingEOFill) {\n ctx.fill('evenodd');\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath();\n }\n },\n eoFill: function CanvasGraphics_eoFill() {\n this.pendingEOFill = true;\n this.fill();\n },\n fillStroke: function CanvasGraphics_fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n },\n eoFillStroke: function CanvasGraphics_eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n },\n closeFillStroke: function CanvasGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n },\n endPath: function CanvasGraphics_endPath() {\n this.consumePath();\n },\n\n // Clipping\n clip: function CanvasGraphics_clip() {\n this.pendingClip = NORMAL_CLIP;\n },\n eoClip: function CanvasGraphics_eoClip() {\n this.pendingClip = EO_CLIP;\n },\n\n // Text\n beginText: function CanvasGraphics_beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n endText: function CanvasGraphics_endText() {\n var paths = this.pendingTextPaths;\n var ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (var i = 0; i < paths.length; i++) {\n var path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n },\n setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n },\n setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n },\n setHScale: function CanvasGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n setLeading: function CanvasGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n setFont: function CanvasGraphics_setFont(fontRefName, size) {\n var fontObj = this.commonObjs.get(fontRefName);\n var current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n\n current.fontMatrix = (fontObj.fontMatrix ?\n fontObj.fontMatrix : FONT_IDENTITY_MATRIX);\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 ||\n current.fontMatrix[3] === 0) {\n warn('Invalid font matrix for font ' + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n var name = fontObj.loadedName || 'sans-serif';\n var bold = fontObj.black ? '900' : (fontObj.bold ? 'bold' : 'normal');\n var italic = fontObj.italic ? 'italic' : 'normal';\n var typeface = '\"' + name + '\", ' + fontObj.fallbackName;\n\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE :\n size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;\n this.current.fontSizeScale = size / browserFontSize;\n\n var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;\n this.ctx.font = rule;\n },\n setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n },\n setTextRise: function CanvasGraphics_setTextRise(rise) {\n this.current.textRise = rise;\n },\n moveText: function CanvasGraphics_moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n },\n setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.sqrt(a * a + b * b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n nextLine: function CanvasGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n\n paintChar: function CanvasGraphics_paintChar(character, x, y) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var textRenderingMode = current.textRenderingMode;\n var fontSize = current.fontSize / current.fontSizeScale;\n var fillStrokeMode = textRenderingMode &\n TextRenderingMode.FILL_STROKE_MASK;\n var isAddToPathSet = !!(textRenderingMode &\n TextRenderingMode.ADD_TO_PATH_FLAG);\n\n var addToPath;\n if (font.disableFontFace || isAddToPathSet) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n var paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n },\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n var ctx = this.canvasFactory.create(10, 10).context;\n ctx.scale(1.5, 1);\n ctx.fillText('I', 0, 10);\n var data = ctx.getImageData(0, 0, 10, 10).data;\n var enabled = false;\n for (var i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, 'isFontSubpixelAAEnabled', enabled);\n },\n\n showText: function CanvasGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n var fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\n var ctx = this.ctx;\n var fontSizeScale = current.fontSizeScale;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var spacingDir = vertical ? 1 : -1;\n var defaultVMetrics = font.defaultVMetrics;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n var simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (current.patternFill) {\n // TODO: Some shading patterns are not applied correctly to text,\n // e.g. issues 3988 and 5432, and ShowText-ShadingPattern.pdf.\n ctx.fillStyle = current.fillColor.getPattern(ctx, this);\n }\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n var lineWidth = current.lineWidth;\n var scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n var fillStrokeMode = current.textRenderingMode &\n TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n this.cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\n var x = 0, i;\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n if (isNum(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n var restoreNeeded = false;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var character = glyph.fontChar;\n var accent = glyph.accent;\n var scaledX, scaledY, scaledAccentX, scaledAccentY;\n var width = glyph.width;\n if (vertical) {\n var vmetric, vx, vy;\n vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n var measuredWidth = ctx.measureText(character).width * 1000 /\n fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n var characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 *\n fontSize / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (glyph.isInFont || font.missingFile) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY);\n if (accent) {\n scaledAccentX = scaledX + accent.offset.x / fontSizeScale;\n scaledAccentY = scaledY - accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY);\n }\n }\n }\n\n var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x * textHScale;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n },\n\n showType3Text: function CanvasGraphics_showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n var fontDirection = current.fontDirection;\n var spacingDir = font.vertical ? 1 : -1;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var textHScale = current.textHScale * fontDirection;\n var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n var glyphsLength = glyphs.length;\n var isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n var i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this.cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (isNum(glyph)) {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n\n var transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n },\n\n // Type3 fonts\n setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n },\n setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth,\n yWidth,\n llx,\n lly,\n urx,\n ury) {\n // TODO According to the spec we're also suppose to ignore any operators\n // that set color or include images while processing this type3 font.\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n },\n\n // Color\n getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {\n var pattern;\n if (IR[0] === 'TilingPattern') {\n var color = IR[1];\n var baseTransform = this.baseTransform ||\n this.ctx.mozCurrentTransform.slice();\n var canvasGraphicsFactory = {\n createCanvasGraphics: (ctx) => {\n return new CanvasGraphics(ctx, this.commonObjs, this.objs,\n this.canvasFactory);\n },\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory,\n baseTransform);\n } else {\n pattern = getShadingPatternFromIR(IR);\n }\n return pattern;\n },\n setStrokeColorN: function CanvasGraphics_setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n },\n setFillColorN: function CanvasGraphics_setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n },\n setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n },\n setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n },\n\n shadingFill: function CanvasGraphics_shadingFill(patternIR) {\n var ctx = this.ctx;\n\n this.save();\n var pattern = getShadingPatternFromIR(patternIR);\n ctx.fillStyle = pattern.getPattern(ctx, this, true);\n\n var inv = ctx.mozCurrentTransformInverse;\n if (inv) {\n var canvas = ctx.canvas;\n var width = canvas.width;\n var height = canvas.height;\n\n var bl = Util.applyTransform([0, 0], inv);\n var br = Util.applyTransform([0, height], inv);\n var ul = Util.applyTransform([width, 0], inv);\n var ur = Util.applyTransform([width, height], inv);\n\n var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.restore();\n },\n\n // Images\n beginInlineImage: function CanvasGraphics_beginInlineImage() {\n throw new Error('Should not call beginInlineImage');\n },\n beginImageData: function CanvasGraphics_beginImageData() {\n throw new Error('Should not call beginImageData');\n },\n\n paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix,\n bbox) {\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (isArray(bbox) && bbox.length === 4) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.clip();\n this.endPath();\n }\n },\n\n paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n },\n\n beginGroup: function CanvasGraphics_beginGroup(group) {\n this.save();\n var currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info('TODO: Support non-isolated groups.');\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn('Knockout groups not supported.');\n }\n\n var currentTransform = currentCtx.mozCurrentTransform;\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n if (!group.bbox) {\n throw new Error('Bounding box is required.');\n }\n\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n var bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n currentCtx.mozCurrentTransform);\n // Clip the bounding box to the current canvas.\n var canvasBounds = [0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n var scaleX = 1, scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n var cacheId = 'groupAt' + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += '_smask_' + ((this.smaskCounter++) % 2);\n }\n var scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId, drawnWidth, drawnHeight, true);\n var groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n ['BM', 'source-over'],\n ['ca', 1],\n ['CA', 1]\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n\n // Reseting mask state, masks will be applied on restore of the group.\n this.current.activeSMask = null;\n },\n\n endGroup: function CanvasGraphics_endGroup(group) {\n this.groupLevel--;\n var groupCtx = this.ctx;\n this.ctx = this.groupStack.pop();\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n if (this.ctx.imageSmoothingEnabled !== undefined) {\n this.ctx.imageSmoothingEnabled = false;\n } else {\n this.ctx.mozImageSmoothingEnabled = false;\n }\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n } else {\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n }\n this.restore();\n },\n\n beginAnnotations: function CanvasGraphics_beginAnnotations() {\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n },\n\n endAnnotations: function CanvasGraphics_endAnnotations() {\n this.restore();\n },\n\n beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform,\n matrix) {\n this.save();\n resetCtxToDefault(this.ctx);\n this.current = new CanvasExtraState();\n\n if (isArray(rect) && rect.length === 4) {\n var width = rect[2] - rect[0];\n var height = rect[3] - rect[1];\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n },\n\n endAnnotation: function CanvasGraphics_endAnnotation() {\n this.restore();\n },\n\n paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {\n var domImage = this.objs.get(objId);\n if (!domImage) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n\n this.save();\n\n var ctx = this.ctx;\n // scale the image to the unit square\n ctx.scale(1 / w, -1 / h);\n\n ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height,\n 0, -h, w, h);\n if (this.imageLayer) {\n var currentTransform = ctx.mozCurrentTransformInverse;\n var position = this.getCanvasPosition(0, 0);\n this.imageLayer.appendImage({\n objId,\n left: position[0],\n top: position[1],\n width: w / currentTransform[0],\n height: h / currentTransform[3],\n });\n }\n this.restore();\n },\n\n paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {\n var ctx = this.ctx;\n var width = img.width, height = img.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n var glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled =\n compileType3Glyph({ data: img.data, width, height, });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph && glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, img);\n\n maskCtx.globalCompositeOperation = 'source-in';\n\n maskCtx.fillStyle = isPatternFill ?\n fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n this.paintInlineImageXObject(maskCanvas.canvas);\n },\n\n paintImageMaskXObjectRepeat:\n function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX,\n scaleY, positions) {\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, imgData);\n\n maskCtx.globalCompositeOperation = 'source-in';\n\n maskCtx.fillStyle = isPatternFill ?\n fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n var ctx = this.ctx;\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n ctx.save();\n ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height,\n 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageMaskXObjectGroup:\n function CanvasGraphics_paintImageMaskXObjectGroup(images) {\n var ctx = this.ctx;\n\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n for (var i = 0, ii = images.length; i < ii; i++) {\n var image = images[i];\n var width = image.width, height = image.height;\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, image);\n\n maskCtx.globalCompositeOperation = 'source-in';\n\n maskCtx.fillStyle = isPatternFill ?\n fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height,\n 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {\n var imgData = this.objs.get(objId);\n if (!imgData) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n },\n\n paintImageXObjectRepeat:\n function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY,\n positions) {\n var imgData = this.objs.get(objId);\n if (!imgData) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var map = [];\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({ transform: [scaleX, 0, 0, scaleY, positions[i],\n positions[i + 1]], x: 0, y: 0, w: width, h: height, });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n },\n\n paintInlineImageXObject:\n function CanvasGraphics_paintInlineImageXObject(imgData) {\n var width = imgData.width;\n var height = imgData.height;\n var ctx = this.ctx;\n\n this.save();\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n var currentTransform = ctx.mozCurrentTransformInverse;\n var a = currentTransform[0], b = currentTransform[1];\n var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);\n var c = currentTransform[2], d = currentTransform[3];\n var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);\n\n var imgToPaint, tmpCanvas;\n // instanceof HTMLElement does not work in jsdom node.js module\n if (imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n tmpCanvas = this.cachedCanvases.getCanvas('inlineImage',\n width, height);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = tmpCanvas.canvas;\n }\n\n var paintWidth = width, paintHeight = height;\n var tmpCanvasId = 'prescale1';\n // Vertial or horizontal scaling shall not be more than 2 to not loose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size\n while ((widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)) {\n var newWidth = paintWidth, newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId,\n newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,\n 0, 0, newWidth, newHeight);\n imgToPaint = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';\n }\n ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,\n 0, -height, width, height);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: width / currentTransform[0],\n height: height / currentTransform[3],\n });\n }\n this.restore();\n },\n\n paintInlineImageXObjectGroup:\n function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {\n var ctx = this.ctx;\n var w = imgData.width;\n var h = imgData.height;\n\n var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n\n for (var i = 0, ii = map.length; i < ii; i++) {\n var entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h,\n 0, -1, 1, 1);\n if (this.imageLayer) {\n var position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h,\n });\n }\n ctx.restore();\n }\n },\n\n paintSolidColorImageMask:\n function CanvasGraphics_paintSolidColorImageMask() {\n this.ctx.fillRect(0, 0, 1, 1);\n },\n\n paintXObject: function CanvasGraphics_paintXObject() {\n warn('Unsupported \\'paintXObject\\' command.');\n },\n\n // Marked content\n\n markPoint: function CanvasGraphics_markPoint(tag) {\n // TODO Marked content.\n },\n markPointProps: function CanvasGraphics_markPointProps(tag, properties) {\n // TODO Marked content.\n },\n beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {\n // TODO Marked content.\n },\n beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(\n tag, properties) {\n // TODO Marked content.\n },\n endMarkedContent: function CanvasGraphics_endMarkedContent() {\n // TODO Marked content.\n },\n\n // Compatibility\n\n beginCompat: function CanvasGraphics_beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n },\n endCompat: function CanvasGraphics_endCompat() {\n // TODO stop ignoring undefined operators\n },\n\n // Helper functions\n\n consumePath: function CanvasGraphics_consumePath() {\n var ctx = this.ctx;\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip('evenodd');\n } else {\n ctx.clip();\n }\n this.pendingClip = null;\n }\n ctx.beginPath();\n },\n getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) {\n if (this.cachedGetSinglePixelWidth === null) {\n // NOTE: The `save` and `restore` commands used below is a workaround\n // that is necessary in order to prevent `mozCurrentTransformInverse`\n // from intermittently returning incorrect values in Firefox, see:\n // https://github.com/mozilla/pdf.js/issues/7188.\n this.ctx.save();\n var inverse = this.ctx.mozCurrentTransformInverse;\n this.ctx.restore();\n // max of the current horizontal and vertical scale\n this.cachedGetSinglePixelWidth = Math.sqrt(Math.max(\n (inverse[0] * inverse[0] + inverse[1] * inverse[1]),\n (inverse[2] * inverse[2] + inverse[3] * inverse[3])));\n }\n return this.cachedGetSinglePixelWidth;\n },\n getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {\n var transform = this.ctx.mozCurrentTransform;\n return [\n transform[0] * x + transform[2] * y + transform[4],\n transform[1] * x + transform[3] * y + transform[5]\n ];\n },\n };\n\n for (var op in OPS) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n\n return CanvasGraphics;\n})();\n\nexport {\n CanvasGraphics,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/canvas.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert, bytesToString, isEvalSupported, shadow, string32, warn\n} from '../shared/util';\n\nfunction FontLoader(docId) {\n this.docId = docId;\n this.styleElement = null;\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n this.nativeFontFaces = [];\n this.loadTestFontId = 0;\n this.loadingContext = {\n requests: [],\n nextRequestId: 0,\n };\n }\n}\nFontLoader.prototype = {\n insertRule: function fontLoaderInsertRule(rule) {\n var styleElement = this.styleElement;\n if (!styleElement) {\n styleElement = this.styleElement = document.createElement('style');\n styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId;\n document.documentElement.getElementsByTagName('head')[0].appendChild(\n styleElement);\n }\n\n var styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n },\n\n clear: function fontLoaderClear() {\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n this.nativeFontFaces.forEach(function(nativeFontFace) {\n document.fonts.delete(nativeFontFace);\n });\n this.nativeFontFaces.length = 0;\n }\n },\n};\n\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n var getLoadTestFont = function () {\n // This is a CFF font with 1 glyph for '.' that fills its entire width and\n // height.\n return atob(\n 'T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' +\n 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' +\n 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' +\n 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' +\n 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' +\n 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' +\n 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' +\n 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' +\n 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' +\n 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' +\n 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' +\n 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' +\n 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' +\n 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' +\n 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' +\n 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' +\n 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' +\n 'ABAAAAAAAAAAAD6AAAAAAAAA==');\n };\n Object.defineProperty(FontLoader.prototype, 'loadTestFont', {\n get() {\n return shadow(this, 'loadTestFont', getLoadTestFont());\n },\n configurable: true,\n });\n\n FontLoader.prototype.addNativeFontFace =\n function fontLoader_addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n document.fonts.add(nativeFontFace);\n };\n\n FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) {\n var rules = [];\n var fontsToLoad = [];\n var fontLoadPromises = [];\n var getNativeFontPromise = function(nativeFontFace) {\n // Return a promise that is always fulfilled, even when the font fails to\n // load.\n return nativeFontFace.loaded.catch(function(e) {\n warn('Failed to load font \"' + nativeFontFace.family + '\": ' + e);\n });\n };\n // Firefox Font Loading API does not work with mozPrintCallback --\n // disabling it in this case.\n var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported &&\n !FontLoader.isSyncFontLoadingSupported;\n for (var i = 0, ii = fonts.length; i < ii; i++) {\n var font = fonts[i];\n\n // Add the font to the DOM only once or skip if the font\n // is already loaded.\n if (font.attached || font.loading === false) {\n continue;\n }\n font.attached = true;\n\n if (isFontLoadingAPISupported) {\n var nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n fontLoadPromises.push(getNativeFontPromise(nativeFontFace));\n }\n } else {\n var rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n rules.push(rule);\n fontsToLoad.push(font);\n }\n }\n }\n\n var request = this.queueLoadingCallback(callback);\n if (isFontLoadingAPISupported) {\n Promise.all(fontLoadPromises).then(function() {\n request.complete();\n });\n } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) {\n this.prepareFontLoadEvent(rules, fontsToLoad, request);\n } else {\n request.complete();\n }\n };\n\n FontLoader.prototype.queueLoadingCallback =\n function FontLoader_queueLoadingCallback(callback) {\n function LoadLoader_completeRequest() {\n assert(!request.end, 'completeRequest() cannot be called twice');\n request.end = Date.now();\n\n // sending all completed requests in order how they were queued\n while (context.requests.length > 0 && context.requests[0].end) {\n var otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n var context = this.loadingContext;\n var requestId = 'pdfjs-font-loading-' + (context.nextRequestId++);\n var request = {\n id: requestId,\n complete: LoadLoader_completeRequest,\n callback,\n started: Date.now(),\n };\n context.requests.push(request);\n return request;\n };\n\n FontLoader.prototype.prepareFontLoadEvent =\n function fontLoaderPrepareFontLoadEvent(rules, fonts, request) {\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is\n // ready. It's assumed fonts are loaded in order, so add a known test\n // font after the desired fonts and then test for the loading of that\n // test font.\n\n function int32(data, offset) {\n return (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff);\n }\n\n function spliceString(s, offset, remove, insert) {\n var chunk1 = s.substr(0, offset);\n var chunk2 = s.substr(offset + remove);\n return chunk1 + insert + chunk2;\n }\n\n var i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n\n var called = 0;\n function isFontReady(name, callback) {\n called++;\n // With setTimeout clamping this gives the font ~100ms to load.\n if (called > 30) {\n warn('Load test font never loaded.');\n callback();\n return;\n }\n ctx.font = '30px ' + name;\n ctx.fillText('.', 0, 20);\n var imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n var data = this.loadTestFont;\n var COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length,\n loadTestFontId);\n // CFF checksum is important for IE, adjusting it\n var CFF_CHECKSUM_OFFSET = 16;\n var XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n var checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n }\n if (i < loadTestFontId.length) { // align to 4 bytes boundary\n checksum = (checksum - XXXX_VALUE +\n int32(loadTestFontId + 'XXX', i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n var url = 'url(data:font/opentype;base64,' + btoa(data) + ');';\n var rule = '@font-face { font-family:\"' + loadTestFontId + '\";src:' +\n url + '}';\n this.insertRule(rule);\n\n var names = [];\n for (i = 0, ii = fonts.length; i < ii; i++) {\n names.push(fonts[i].loadedName);\n }\n names.push(loadTestFontId);\n\n var div = document.createElement('div');\n div.setAttribute('style',\n 'visibility: hidden;' +\n 'width: 10px; height: 10px;' +\n 'position: absolute; top: 0px; left: 0px;');\n for (i = 0, ii = names.length; i < ii; ++i) {\n var span = document.createElement('span');\n span.textContent = 'Hi';\n span.style.fontFamily = names[i];\n div.appendChild(span);\n }\n document.body.appendChild(div);\n\n isFontReady(loadTestFontId, function() {\n document.body.removeChild(div);\n request.complete();\n });\n /** Hack end */\n };\n} else {\n FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) {\n for (var i = 0, ii = fonts.length; i < ii; i++) {\n var font = fonts[i];\n if (font.attached) {\n continue;\n }\n\n font.attached = true;\n var rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n }\n }\n\n setTimeout(callback);\n };\n}\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' &&\n !!document.fonts;\n}\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL || CHROME')) {\n var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() {\n if (typeof navigator === 'undefined') {\n // node.js - we can pretend sync font loading is supported.\n return true;\n }\n\n var supported = false;\n\n // User agent string sniffing is bad, but there is no reliable way to tell\n // if font is fully loaded and ready to be used with canvas.\n var m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n if (m && m[1] >= 14) {\n supported = true;\n }\n // TODO other browsers\n return supported;\n };\n Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', {\n get() {\n return shadow(FontLoader, 'isSyncFontLoadingSupported',\n isSyncFontLoadingSupported());\n },\n enumerable: true,\n configurable: true,\n });\n}\n\nvar IsEvalSupportedCached = {\n get value() {\n return shadow(this, 'value', isEvalSupported());\n },\n};\n\nvar FontFaceObject = (function FontFaceObjectClosure() {\n function FontFaceObject(translatedData, options) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (var i in translatedData) {\n this[i] = translatedData[i];\n }\n this.options = options;\n }\n FontFaceObject.prototype = {\n createNativeFontFace: function FontFaceObject_createNativeFontFace() {\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('MOZCENTRAL')) {\n throw new Error('Not implemented: createNativeFontFace');\n }\n\n if (!this.data) {\n return null;\n }\n\n if (this.options.disableFontFace) {\n this.disableFontFace = true;\n return null;\n }\n\n var nativeFontFace = new FontFace(this.loadedName, this.data, {});\n\n if (this.options.fontRegistry) {\n this.options.fontRegistry.registerFont(this);\n }\n return nativeFontFace;\n },\n\n createFontFaceRule: function FontFaceObject_createFontFaceRule() {\n if (!this.data) {\n return null;\n }\n\n if (this.options.disableFontFace) {\n this.disableFontFace = true;\n return null;\n }\n\n var data = bytesToString(new Uint8Array(this.data));\n var fontName = this.loadedName;\n\n // Add the font-face rule to the document\n var url = ('url(data:' + this.mimetype + ';base64,' + btoa(data) + ');');\n var rule = '@font-face { font-family:\"' + fontName + '\";src:' + url + '}';\n\n if (this.options.fontRegistry) {\n this.options.fontRegistry.registerFont(this, url);\n }\n\n return rule;\n },\n\n getPathGenerator:\n function FontFaceObject_getPathGenerator(objs, character) {\n if (!(character in this.compiledGlyphs)) {\n var cmds = objs.get(this.loadedName + '_path_' + character);\n var current, i, len;\n\n // If we can, compile cmds into JS for MAXIMUM SPEED\n if (this.options.isEvalSupported && IsEvalSupportedCached.value) {\n var args, js = '';\n for (i = 0, len = cmds.length; i < len; i++) {\n current = cmds[i];\n\n if (current.args !== undefined) {\n args = current.args.join(',');\n } else {\n args = '';\n }\n\n js += 'c.' + current.cmd + '(' + args + ');\\n';\n }\n // eslint-disable-next-line no-new-func\n this.compiledGlyphs[character] = new Function('c', 'size', js);\n } else {\n // But fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies)\n this.compiledGlyphs[character] = function(c, size) {\n for (i = 0, len = cmds.length; i < len; i++) {\n current = cmds[i];\n\n if (current.cmd === 'scale') {\n current.args = [size, -size];\n }\n\n c[current.cmd].apply(c, current.args);\n }\n };\n }\n }\n return this.compiledGlyphs[character];\n },\n };\n\n return FontFaceObject;\n})();\n\nexport {\n FontFaceObject,\n FontLoader,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/font_loader.js","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, info, isArray, Util } from '../shared/util';\nimport { WebGLUtils } from './webgl';\n\nvar ShadingIRs = {};\n\nShadingIRs.RadialAxial = {\n fromIR: function RadialAxial_fromIR(raw) {\n var type = raw[1];\n var colorStops = raw[2];\n var p0 = raw[3];\n var p1 = raw[4];\n var r0 = raw[5];\n var r1 = raw[6];\n return {\n type: 'Pattern',\n getPattern: function RadialAxial_getPattern(ctx) {\n var grad;\n if (type === 'axial') {\n grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);\n } else if (type === 'radial') {\n grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);\n }\n\n for (var i = 0, ii = colorStops.length; i < ii; ++i) {\n var c = colorStops[i];\n grad.addColorStop(c[0], c[1]);\n }\n return grad;\n },\n };\n },\n};\n\nvar createMeshCanvas = (function createMeshCanvasClosure() {\n function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n var coords = context.coords, colors = context.colors;\n var bytes = data.data, rowSize = data.width * 4;\n var tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2; p2 = p3; p3 = tmp; tmp = c2; c2 = c3; c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;\n }\n var x1 = (coords[p1] + context.offsetX) * context.scaleX;\n var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n var x2 = (coords[p2] + context.offsetX) * context.scaleX;\n var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n var x3 = (coords[p3] + context.offsetX) * context.scaleX;\n var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n var c1r = colors[c1], c1g = colors[c1 + 1], c1b = colors[c1 + 2];\n var c2r = colors[c2], c2g = colors[c2 + 1], c2b = colors[c2 + 2];\n var c3r = colors[c3], c3g = colors[c3 + 1], c3b = colors[c3 + 2];\n\n var minY = Math.round(y1), maxY = Math.round(y3);\n var xa, car, cag, cab;\n var xb, cbr, cbg, cbb;\n var k;\n for (var y = minY; y <= maxY; y++) {\n if (y < y2) {\n k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3);\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n var x1_ = Math.round(Math.min(xa, xb));\n var x2_ = Math.round(Math.max(xa, xb));\n var j = rowSize * y + x1_ * 4;\n for (var x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n k = k < 0 ? 0 : k > 1 ? 1 : k;\n bytes[j++] = (car - (car - cbr) * k) | 0;\n bytes[j++] = (cag - (cag - cbg) * k) | 0;\n bytes[j++] = (cab - (cab - cbb) * k) | 0;\n bytes[j++] = 255;\n }\n }\n }\n\n function drawFigure(data, figure, context) {\n var ps = figure.coords;\n var cs = figure.colors;\n var i, ii;\n switch (figure.type) {\n case 'lattice':\n var verticesPerRow = figure.verticesPerRow;\n var rows = Math.floor(ps.length / verticesPerRow) - 1;\n var cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n var q = i * verticesPerRow;\n for (var j = 0; j < cols; j++, q++) {\n drawTriangle(data, context,\n ps[q], ps[q + 1], ps[q + verticesPerRow],\n cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context,\n ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case 'triangles':\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context,\n ps[i], ps[i + 1], ps[i + 2],\n cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error('illegal figure');\n }\n }\n\n function createMeshCanvas(bounds, combinesScale, coords, colors, figures,\n backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n var EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n var BORDER_SIZE = 2;\n\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var boundsWidth = Math.ceil(bounds[2]) - offsetX;\n var boundsHeight = Math.ceil(bounds[3]) - offsetY;\n\n var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] *\n EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] *\n EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var scaleX = boundsWidth / width;\n var scaleY = boundsHeight / height;\n\n var context = {\n coords,\n colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n var paddedWidth = width + BORDER_SIZE * 2;\n var paddedHeight = height + BORDER_SIZE * 2;\n\n var canvas, tmpCanvas, i, ii;\n if (WebGLUtils.isEnabled) {\n canvas = WebGLUtils.drawFigures(width, height, backgroundColor,\n figures, context);\n\n // https://bugzilla.mozilla.org/show_bug.cgi?id=972126\n tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight,\n false);\n tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n } else {\n tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight,\n false);\n var tmpCtx = tmpCanvas.context;\n\n var data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n var bytes = data.data;\n for (i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (i = 0; i < figures.length; i++) {\n drawFigure(data, figures[i], context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n }\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n return createMeshCanvas;\n})();\n\nShadingIRs.Mesh = {\n fromIR: function Mesh_fromIR(raw) {\n // var type = raw[1];\n var coords = raw[2];\n var colors = raw[3];\n var figures = raw[4];\n var bounds = raw[5];\n var matrix = raw[6];\n // var bbox = raw[7];\n var background = raw[8];\n return {\n type: 'Pattern',\n getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {\n var scale;\n if (shadingFill) {\n scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n // Obtain scale from matrix and current transformation matrix.\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (matrix) {\n var matrixScale = Util.singularValueDecompose2dScale(matrix);\n scale = [scale[0] * matrixScale[0],\n scale[1] * matrixScale[1]];\n }\n }\n\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords,\n colors, figures, shadingFill ? null : background,\n owner.cachedCanvases);\n\n if (!shadingFill) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n if (matrix) {\n ctx.transform.apply(ctx, matrix);\n }\n }\n\n ctx.translate(temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX,\n temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');\n },\n };\n },\n};\n\nShadingIRs.Dummy = {\n fromIR: function Dummy_fromIR() {\n return {\n type: 'Pattern',\n getPattern: function Dummy_fromIR_getPattern() {\n return 'hotpink';\n },\n };\n },\n};\n\nfunction getShadingPatternFromIR(raw) {\n var shadingIR = ShadingIRs[raw[0]];\n if (!shadingIR) {\n throw new Error(`Unknown IR type: ${raw[0]}`);\n }\n return shadingIR.fromIR(raw);\n}\n\nvar TilingPattern = (function TilingPatternClosure() {\n var PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n };\n\n var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n\n function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n this.type = 'Pattern';\n this.ctx = ctx;\n }\n\n TilingPattern.prototype = {\n createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {\n var operatorList = this.operatorList;\n var bbox = this.bbox;\n var xstep = this.xstep;\n var ystep = this.ystep;\n var paintType = this.paintType;\n var tilingType = this.tilingType;\n var color = this.color;\n var canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info('TilingType: ' + tilingType);\n\n var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3];\n\n var topLeft = [x0, y0];\n // we want the canvas to be as large as the step size\n var botRight = [x0 + xstep, y0 + ystep];\n\n var width = botRight[0] - topLeft[0];\n var height = botRight[1] - topLeft[1];\n\n // Obtain scale from matrix and current transformation matrix.\n var matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n var curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform);\n var combinedScale = [matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1]];\n\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])),\n MAX_PATTERN_SIZE);\n\n height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])),\n MAX_PATTERN_SIZE);\n\n var tmpCanvas = owner.cachedCanvases.getCanvas('pattern',\n width, height, true);\n var tmpCtx = tmpCanvas.context;\n var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(tmpCtx, paintType, color);\n\n this.setScale(width, height, xstep, ystep);\n this.transformToScale(graphics);\n\n // transform coordinates to pattern space\n var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];\n graphics.transform.apply(graphics, tmpTranslate);\n\n this.clipBbox(graphics, bbox, x0, y0, x1, y1);\n\n graphics.executeOperatorList(operatorList);\n return tmpCanvas.canvas;\n },\n\n setScale: function TilingPattern_setScale(width, height, xstep, ystep) {\n this.scale = [width / xstep, height / ystep];\n },\n\n transformToScale: function TilingPattern_transformToScale(graphics) {\n var scale = this.scale;\n var tmpScale = [scale[0], 0, 0, scale[1], 0, 0];\n graphics.transform.apply(graphics, tmpScale);\n },\n\n scaleToContext: function TilingPattern_scaleToContext() {\n var scale = this.scale;\n this.ctx.scale(1 / scale[0], 1 / scale[1]);\n },\n\n clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {\n if (isArray(bbox) && bbox.length === 4) {\n var bboxWidth = x1 - x0;\n var bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n },\n\n setFillAndStrokeStyleToContext:\n function setFillAndStrokeStyleToContext(context, paintType, color) {\n switch (paintType) {\n case PaintType.COLORED:\n var ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n var cssColor = Util.makeCssRgb(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n },\n\n getPattern: function TilingPattern_getPattern(ctx, owner) {\n var temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.baseTransform);\n ctx.transform.apply(ctx, this.matrix);\n this.scaleToContext();\n\n return ctx.createPattern(temporaryPatternCanvas, 'repeat');\n },\n };\n\n return TilingPattern;\n})();\n\nexport {\n getShadingPatternFromIR,\n TilingPattern,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/pattern_helper.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, createPromiseCapability } from '../shared/util';\n\n /** @implements {IPDFStream} */\nvar PDFDataTransportStream = (function PDFDataTransportStreamClosure() {\n function PDFDataTransportStream(params, pdfDataRangeTransport) {\n assert(pdfDataRangeTransport);\n\n this._queuedChunks = [];\n var initialData = params.initialData;\n if (initialData && initialData.length > 0) {\n let buffer = new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isRangeSupported = !(params.disableRange);\n this._isStreamingSupported = !(params.disableStream);\n this._contentLength = params.length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk, });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded) => {\n this._onProgress({ loaded, });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener((chunk) => {\n this._onReceiveData({ chunk, });\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n PDFDataTransportStream.prototype = {\n _onReceiveData: function PDFDataTransportStream_onReceiveData(args) {\n let buffer = new Uint8Array(args.chunk).buffer;\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n var found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found);\n }\n },\n\n _onProgress: function PDFDataTransportStream_onDataProgress(evt) {\n if (this._rangeReaders.length > 0) {\n // Reporting to first range reader.\n var firstReader = this._rangeReaders[0];\n if (firstReader.onProgress) {\n firstReader.onProgress({ loaded: evt.loaded, });\n }\n }\n },\n\n _removeRangeReader:\n function PDFDataTransportStream_removeRangeReader(reader) {\n var i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n },\n\n getFullReader: function PDFDataTransportStream_getFullReader() {\n assert(!this._fullRequestReader);\n var queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks);\n },\n\n getRangeReader: function PDFDataTransportStream_getRangeReader(begin, end) {\n var reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n },\n\n cancelAllRequests:\n function PDFDataTransportStream_cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n var readers = this._rangeReaders.slice(0);\n readers.forEach(function (rangeReader) {\n rangeReader.cancel(reason);\n });\n this._pdfDataRangeTransport.abort();\n },\n };\n\n /** @implements {IPDFStreamReader} */\n function PDFDataTransportStreamReader(stream, queuedChunks) {\n this._stream = stream;\n this._done = false;\n this._queuedChunks = queuedChunks || [];\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null; // not used\n }\n PDFDataTransportStreamReader.prototype = {\n _enqueue: function PDFDataTransportStreamReader_enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n return;\n }\n this._queuedChunks.push(chunk);\n },\n\n get headersReady() {\n return this._headersReady;\n },\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n },\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n },\n\n get contentLength() {\n return this._stream._contentLength;\n },\n\n read: function PDFDataTransportStreamReader_read() {\n if (this._queuedChunks.length > 0) {\n var chunk = this._queuedChunks.shift();\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFDataTransportStreamReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n },\n };\n\n /** @implements {IPDFStreamRangeReader} */\n function PDFDataTransportStreamRangeReader(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n\n this.onProgress = null;\n }\n PDFDataTransportStreamRangeReader.prototype = {\n _enqueue: function PDFDataTransportStreamRangeReader_enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n var requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false, });\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n },\n\n get isStreamingSupported() {\n return false;\n },\n\n read: function PDFDataTransportStreamRangeReader_read() {\n if (this._queuedChunk) {\n let chunk = this._queuedChunk;\n this._queuedChunk = null;\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFDataTransportStreamRangeReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n this._stream._removeRangeReader(this);\n },\n };\n\n return PDFDataTransportStream;\n})();\n\nexport {\n PDFDataTransportStream,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/transport_stream.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-unused-vars */\n\n'use strict';\n\nvar pdfjsVersion =\n typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_VERSION') : void 0;\nvar pdfjsBuild =\n typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_BUILD') : void 0;\n\nvar pdfjsSharedUtil = require('./shared/util.js');\nvar pdfjsDisplayGlobal = require('./display/global.js');\nvar pdfjsDisplayAPI = require('./display/api.js');\nvar pdfjsDisplayTextLayer = require('./display/text_layer.js');\nvar pdfjsDisplayAnnotationLayer = require('./display/annotation_layer.js');\nvar pdfjsDisplayDOMUtils = require('./display/dom_utils.js');\nvar pdfjsDisplaySVG = require('./display/svg.js');\n\nif (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n require('./display/network.js');\n}\n\nexports.PDFJS = pdfjsDisplayGlobal.PDFJS;\nexports.build = pdfjsDisplayAPI.build;\nexports.version = pdfjsDisplayAPI.version;\nexports.getDocument = pdfjsDisplayAPI.getDocument;\nexports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;\nexports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;\nexports.PDFWorker = pdfjsDisplayAPI.PDFWorker;\nexports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;\nexports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;\nexports.CustomStyle = pdfjsDisplayDOMUtils.CustomStyle;\nexports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;\nexports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;\nexports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;\nexports.MissingPDFException = pdfjsSharedUtil.MissingPDFException;\nexports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics;\nexports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding;\nexports.UnexpectedResponseException =\n pdfjsSharedUtil.UnexpectedResponseException;\nexports.OPS = pdfjsSharedUtil.OPS;\nexports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;\nexports.isValidUrl = pdfjsDisplayDOMUtils.isValidUrl;\nexports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;\nexports.createObjectURL = pdfjsSharedUtil.createObjectURL;\nexports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;\nexports.shadow = pdfjsSharedUtil.shadow;\nexports.createBlob = pdfjsSharedUtil.createBlob;\nexports.RenderingCancelledException =\n pdfjsDisplayDOMUtils.RenderingCancelledException;\nexports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl;\nexports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes;\nexports.StatTimer = pdfjsSharedUtil.StatTimer;\n\n\n\n// WEBPACK FOOTER //\n// src/pdf.js","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-extend-native */\n/* globals VBArray, PDFJS, global */\n\n// Skip compatibility checks for the extensions and if we already ran\n// this module.\nif ((typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL || CHROME')) &&\n (typeof PDFJS === 'undefined' || !PDFJS.compatibilityChecked)) {\n\nvar globalScope =\n (typeof window !== 'undefined' && window.Math === Math) ? window :\n (typeof global !== 'undefined' && global.Math === Math) ? global :\n (typeof self !== 'undefined' && self.Math === Math) ? self :\n (typeof this !== 'undefined' && this.Math === Math) ? this : {};\n\nvar userAgent = (typeof navigator !== 'undefined' && navigator.userAgent) || '';\nvar isAndroid = /Android/.test(userAgent);\nvar isAndroidPre3 = /Android\\s[0-2][^\\d]/.test(userAgent);\nvar isAndroidPre5 = /Android\\s[0-4][^\\d]/.test(userAgent);\nvar isChrome = userAgent.indexOf('Chrom') >= 0;\nvar isChromeWithRangeBug = /Chrome\\/(39|40)\\./.test(userAgent);\nvar isIOSChrome = userAgent.indexOf('CriOS') >= 0;\nvar isIE = userAgent.indexOf('Trident') >= 0;\nvar isIOS = /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent);\nvar isOpera = userAgent.indexOf('Opera') >= 0;\nvar isSafari = /Safari\\//.test(userAgent) &&\n !/(Chrome\\/|Android\\s)/.test(userAgent);\n\nvar hasDOM = typeof window === 'object' && typeof document === 'object';\n\n// Initializing PDFJS global object here, it case if we need to change/disable\n// some PDF.js features, e.g. range requests\nif (typeof PDFJS === 'undefined') {\n globalScope.PDFJS = {};\n}\n\nPDFJS.compatibilityChecked = true;\n\n// Checking if the typed arrays are supported\n// Support: iOS<6.0 (subarray), IE<10, Android<4.0\n(function checkTypedArrayCompatibility() {\n if (typeof Uint8Array !== 'undefined') {\n // Support: iOS<6.0\n if (typeof Uint8Array.prototype.subarray === 'undefined') {\n Uint8Array.prototype.subarray = function subarray(start, end) {\n return new Uint8Array(this.slice(start, end));\n };\n Float32Array.prototype.subarray = function subarray(start, end) {\n return new Float32Array(this.slice(start, end));\n };\n }\n\n // Support: Android<4.1\n if (typeof Float64Array === 'undefined') {\n globalScope.Float64Array = Float32Array;\n }\n return;\n }\n\n function subarray(start, end) {\n return new TypedArray(this.slice(start, end));\n }\n\n function setArrayOffset(array, offset) {\n if (arguments.length < 2) {\n offset = 0;\n }\n for (var i = 0, n = array.length; i < n; ++i, ++offset) {\n this[offset] = array[i] & 0xFF;\n }\n }\n\n function Uint32ArrayView(buffer, length) {\n this.buffer = buffer;\n this.byteLength = buffer.length;\n this.length = length;\n ensureUint32ArrayViewProps(this.length);\n }\n Uint32ArrayView.prototype = Object.create(null);\n\n var uint32ArrayViewSetters = 0;\n function createUint32ArrayProp(index) {\n return {\n get() {\n var buffer = this.buffer, offset = index << 2;\n return (buffer[offset] | (buffer[offset + 1] << 8) |\n (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0;\n },\n set(value) {\n var buffer = this.buffer, offset = index << 2;\n buffer[offset] = value & 255;\n buffer[offset + 1] = (value >> 8) & 255;\n buffer[offset + 2] = (value >> 16) & 255;\n buffer[offset + 3] = (value >>> 24) & 255;\n },\n };\n }\n\n function ensureUint32ArrayViewProps(length) {\n while (uint32ArrayViewSetters < length) {\n Object.defineProperty(Uint32ArrayView.prototype,\n uint32ArrayViewSetters,\n createUint32ArrayProp(uint32ArrayViewSetters));\n uint32ArrayViewSetters++;\n }\n }\n\n function TypedArray(arg1) {\n var result, i, n;\n if (typeof arg1 === 'number') {\n result = [];\n for (i = 0; i < arg1; ++i) {\n result[i] = 0;\n }\n } else if ('slice' in arg1) {\n result = arg1.slice(0);\n } else {\n result = [];\n for (i = 0, n = arg1.length; i < n; ++i) {\n result[i] = arg1[i];\n }\n }\n\n result.subarray = subarray;\n result.buffer = result;\n result.byteLength = result.length;\n result.set = setArrayOffset;\n\n if (typeof arg1 === 'object' && arg1.buffer) {\n result.buffer = arg1.buffer;\n }\n return result;\n }\n\n globalScope.Uint8Array = TypedArray;\n globalScope.Int8Array = TypedArray;\n\n // we don't need support for set, byteLength for 32-bit array\n // so we can use the TypedArray as well\n globalScope.Int32Array = TypedArray;\n globalScope.Uint16Array = TypedArray;\n globalScope.Float32Array = TypedArray;\n globalScope.Float64Array = TypedArray;\n\n globalScope.Uint32Array = function () {\n if (arguments.length === 3) {\n // Building view for buffer, offset, and length\n if (arguments[1] !== 0) {\n throw new Error('offset !== 0 is not supported');\n }\n return new Uint32ArrayView(arguments[0], arguments[2]);\n }\n return TypedArray.apply(this, arguments);\n };\n})();\n\n// window.CanvasPixelArray.buffer/.byteLength\n// Support: IE9\n(function canvasPixelArrayBuffer() {\n if (!hasDOM || !window.CanvasPixelArray) {\n return;\n }\n var cpaProto = window.CanvasPixelArray.prototype;\n if ('buffer' in cpaProto) {\n return;\n }\n // Trying to fake CanvasPixelArray as Uint8ClampedArray.\n Object.defineProperty(cpaProto, 'buffer', {\n get() {\n return this;\n },\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(cpaProto, 'byteLength', {\n get() {\n return this.length;\n },\n enumerable: false,\n configurable: true,\n });\n})();\n\n// URL = URL || webkitURL\n// Support: Safari<7, Android 4.2+\n(function normalizeURLObject() {\n if (!globalScope.URL) {\n globalScope.URL = globalScope.webkitURL;\n }\n})();\n\n// Object.defineProperty()?\n// Support: Android<4.0, Safari<5.1\n(function checkObjectDefinePropertyCompatibility() {\n if (typeof Object.defineProperty !== 'undefined') {\n var definePropertyPossible = true;\n try {\n if (hasDOM) {\n // some browsers (e.g. safari) cannot use defineProperty() on DOM\n // objects and thus the native version is not sufficient\n Object.defineProperty(new Image(), 'id', { value: 'test', });\n }\n // ... another test for android gb browser for non-DOM objects\n var Test = function Test() {};\n Test.prototype = { get id() { }, };\n Object.defineProperty(new Test(), 'id',\n { value: '', configurable: true, enumerable: true, writable: false, });\n } catch (e) {\n definePropertyPossible = false;\n }\n if (definePropertyPossible) {\n return;\n }\n }\n\n Object.defineProperty = function objectDefineProperty(obj, name, def) {\n delete obj[name];\n if ('get' in def) {\n obj.__defineGetter__(name, def['get']);\n }\n if ('set' in def) {\n obj.__defineSetter__(name, def['set']);\n }\n if ('value' in def) {\n obj.__defineSetter__(name, function objectDefinePropertySetter(value) {\n this.__defineGetter__(name, function objectDefinePropertyGetter() {\n return value;\n });\n return value;\n });\n obj[name] = def.value;\n }\n };\n})();\n\n\n// No XMLHttpRequest#response?\n// Support: IE<11, Android <4.0\n(function checkXMLHttpRequestResponseCompatibility() {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n var xhrPrototype = XMLHttpRequest.prototype;\n var xhr = new XMLHttpRequest();\n if (!('overrideMimeType' in xhr)) {\n // IE10 might have response, but not overrideMimeType\n // Support: IE10\n Object.defineProperty(xhrPrototype, 'overrideMimeType', {\n value: function xmlHttpRequestOverrideMimeType(mimeType) {},\n });\n }\n if ('responseType' in xhr) {\n return;\n }\n\n Object.defineProperty(xhrPrototype, 'responseType', {\n get: function xmlHttpRequestGetResponseType() {\n return this._responseType || 'text';\n },\n set: function xmlHttpRequestSetResponseType(value) {\n if (value === 'text' || value === 'arraybuffer') {\n this._responseType = value;\n if (value === 'arraybuffer' &&\n typeof this.overrideMimeType === 'function') {\n this.overrideMimeType('text/plain; charset=x-user-defined');\n }\n }\n },\n });\n\n // Support: IE9\n if (typeof VBArray !== 'undefined') {\n Object.defineProperty(xhrPrototype, 'response', {\n get: function xmlHttpRequestResponseGet() {\n if (this.responseType === 'arraybuffer') {\n return new Uint8Array(new VBArray(this.responseBody).toArray());\n }\n return this.responseText;\n },\n });\n return;\n }\n\n Object.defineProperty(xhrPrototype, 'response', {\n get: function xmlHttpRequestResponseGet() {\n if (this.responseType !== 'arraybuffer') {\n return this.responseText;\n }\n var text = this.responseText;\n var i, n = text.length;\n var result = new Uint8Array(n);\n for (i = 0; i < n; ++i) {\n result[i] = text.charCodeAt(i) & 0xFF;\n }\n return result.buffer;\n },\n });\n})();\n\n// window.btoa (base64 encode function) ?\n// Support: IE<10\n(function checkWindowBtoaCompatibility() {\n if ('btoa' in globalScope) {\n return;\n }\n\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n globalScope.btoa = function (chars) {\n var buffer = '';\n var i, n;\n for (i = 0, n = chars.length; i < n; i += 3) {\n var b1 = chars.charCodeAt(i) & 0xFF;\n var b2 = chars.charCodeAt(i + 1) & 0xFF;\n var b3 = chars.charCodeAt(i + 2) & 0xFF;\n var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n var d4 = i + 2 < n ? (b3 & 0x3F) : 64;\n buffer += (digits.charAt(d1) + digits.charAt(d2) +\n digits.charAt(d3) + digits.charAt(d4));\n }\n return buffer;\n };\n})();\n\n// window.atob (base64 encode function)?\n// Support: IE<10\n(function checkWindowAtobCompatibility() {\n if ('atob' in globalScope) {\n return;\n }\n\n // https://github.com/davidchambers/Base64.js\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n globalScope.atob = function (input) {\n input = input.replace(/=+$/, '');\n if (input.length % 4 === 1) {\n throw new Error('bad atob input');\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n (buffer = input.charAt(idx++));\n // character found in table?\n // initialize bit storage and add its ascii value\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = digits.indexOf(buffer);\n }\n return output;\n };\n})();\n\n// Function.prototype.bind?\n// Support: Android<4.0, iOS<6.0\n(function checkFunctionPrototypeBindCompatibility() {\n if (typeof Function.prototype.bind !== 'undefined') {\n return;\n }\n\n Function.prototype.bind = function functionPrototypeBind(obj) {\n var fn = this, headArgs = Array.prototype.slice.call(arguments, 1);\n var bound = function functionPrototypeBindBound() {\n var args = headArgs.concat(Array.prototype.slice.call(arguments));\n return fn.apply(obj, args);\n };\n return bound;\n };\n})();\n\n// HTMLElement dataset property\n// Support: IE<11, Safari<5.1, Android<4.0\n(function checkDatasetProperty() {\n if (!hasDOM) {\n return;\n }\n var div = document.createElement('div');\n if ('dataset' in div) {\n return; // dataset property exists\n }\n\n Object.defineProperty(HTMLElement.prototype, 'dataset', {\n get() {\n if (this._dataset) {\n return this._dataset;\n }\n\n var dataset = {};\n for (var j = 0, jj = this.attributes.length; j < jj; j++) {\n var attribute = this.attributes[j];\n if (attribute.name.substring(0, 5) !== 'data-') {\n continue;\n }\n var key = attribute.name.substring(5).replace(/\\-([a-z])/g,\n function(all, ch) {\n return ch.toUpperCase();\n });\n dataset[key] = attribute.value;\n }\n\n Object.defineProperty(this, '_dataset', {\n value: dataset,\n writable: false,\n enumerable: false,\n });\n return dataset;\n },\n enumerable: true,\n });\n})();\n\n// HTMLElement classList property\n// Support: IE<10, Android<4.0, iOS<5.0\n(function checkClassListProperty() {\n function changeList(element, itemName, add, remove) {\n var s = element.className || '';\n var list = s.split(/\\s+/g);\n if (list[0] === '') {\n list.shift();\n }\n var index = list.indexOf(itemName);\n if (index < 0 && add) {\n list.push(itemName);\n }\n if (index >= 0 && remove) {\n list.splice(index, 1);\n }\n element.className = list.join(' ');\n return (index >= 0);\n }\n\n if (!hasDOM) {\n return;\n }\n\n var div = document.createElement('div');\n if ('classList' in div) {\n return; // classList property exists\n }\n\n var classListPrototype = {\n add(name) {\n changeList(this.element, name, true, false);\n },\n contains(name) {\n return changeList(this.element, name, false, false);\n },\n remove(name) {\n changeList(this.element, name, false, true);\n },\n toggle(name) {\n changeList(this.element, name, true, true);\n },\n };\n\n Object.defineProperty(HTMLElement.prototype, 'classList', {\n get() {\n if (this._classList) {\n return this._classList;\n }\n\n var classList = Object.create(classListPrototype, {\n element: {\n value: this,\n writable: false,\n enumerable: true,\n },\n });\n Object.defineProperty(this, '_classList', {\n value: classList,\n writable: false,\n enumerable: false,\n });\n return classList;\n },\n enumerable: true,\n });\n})();\n\n// Checking if worker has console support. Forwarding all messages to the main\n// thread if console object is absent.\n(function checkWorkerConsoleCompatibility() {\n if (typeof importScripts === 'undefined' || 'console' in globalScope) {\n return;\n }\n\n var consoleTimer = {};\n\n var workerConsole = {\n log: function log() {\n var args = Array.prototype.slice.call(arguments);\n globalScope.postMessage({\n targetName: 'main',\n action: 'console_log',\n data: args,\n });\n },\n\n error: function error() {\n var args = Array.prototype.slice.call(arguments);\n globalScope.postMessage({\n targetName: 'main',\n action: 'console_error',\n data: args,\n });\n },\n\n time: function time(name) {\n consoleTimer[name] = Date.now();\n },\n\n timeEnd: function timeEnd(name) {\n var time = consoleTimer[name];\n if (!time) {\n throw new Error('Unknown timer name ' + name);\n }\n this.log('Timer:', name, Date.now() - time);\n },\n };\n\n globalScope.console = workerConsole;\n})();\n\n// Check console compatibility\n// In older IE versions the console object is not available\n// unless console is open.\n// Support: IE<10\n(function checkConsoleCompatibility() {\n if (!hasDOM) {\n return;\n }\n if (!('console' in window)) {\n window.console = {\n log() {},\n error() {},\n warn() {},\n };\n return;\n }\n if (!('bind' in console.log)) {\n // native functions in IE9 might not have bind\n console.log = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.log);\n console.error = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.error);\n console.warn = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.warn);\n return;\n }\n})();\n\n// Check onclick compatibility in Opera\n// Support: Opera<15\n(function checkOnClickCompatibility() {\n // workaround for reported Opera bug DSK-354448:\n // onclick fires on disabled buttons with opaque content\n function ignoreIfTargetDisabled(event) {\n if (isDisabled(event.target)) {\n event.stopPropagation();\n }\n }\n function isDisabled(node) {\n return node.disabled || (node.parentNode && isDisabled(node.parentNode));\n }\n if (isOpera) {\n // use browser detection since we cannot feature-check this bug\n document.addEventListener('click', ignoreIfTargetDisabled, true);\n }\n})();\n\n// Checks if possible to use URL.createObjectURL()\n// Support: IE, Chrome on iOS\n(function checkOnBlobSupport() {\n // sometimes IE and Chrome on iOS loosing the data created with\n // createObjectURL(), see #3977 and #8081\n if (isIE || isIOSChrome) {\n PDFJS.disableCreateObjectURL = true;\n }\n})();\n\n// Checks if navigator.language is supported\n(function checkNavigatorLanguage() {\n if (typeof navigator === 'undefined') {\n return;\n }\n if ('language' in navigator) {\n return;\n }\n PDFJS.locale = navigator.userLanguage || 'en-US';\n})();\n\n// Support: Safari 6.0+, Android<3.0, Chrome 39/40, iOS\n(function checkRangeRequests() {\n // Safari has issues with cached range requests see:\n // https://github.com/mozilla/pdf.js/issues/3260\n // Last tested with version 6.0.4.\n\n // Older versions of Android (pre 3.0) has issues with range requests, see:\n // https://github.com/mozilla/pdf.js/issues/3381.\n // Make sure that we only match webkit-based Android browsers,\n // since Firefox/Fennec works as expected.\n\n // Range requests are broken in Chrome 39 and 40, https://crbug.com/442318\n if (isSafari || isAndroidPre3 || isChromeWithRangeBug || isIOS) {\n PDFJS.disableRange = true;\n PDFJS.disableStream = true;\n }\n})();\n\n// Check if the browser supports manipulation of the history.\n// Support: IE<10, Android<4.2\n(function checkHistoryManipulation() {\n if (!hasDOM) {\n return;\n }\n // Android 2.x has so buggy pushState support that it was removed in\n // Android 3.0 and restored as late as in Android 4.2.\n // Support: Android 2.x\n if (!history.pushState || isAndroidPre3) {\n PDFJS.disableHistory = true;\n }\n})();\n\n// Support: IE<11, Chrome<21, Android<4.4, Safari<6\n(function checkSetPresenceInImageData() {\n if (!hasDOM) {\n return;\n }\n // IE < 11 will use window.CanvasPixelArray which lacks set function.\n if (window.CanvasPixelArray) {\n if (typeof window.CanvasPixelArray.prototype.set !== 'function') {\n window.CanvasPixelArray.prototype.set = function(arr) {\n for (var i = 0, ii = this.length; i < ii; i++) {\n this[i] = arr[i];\n }\n };\n }\n } else {\n // Old Chrome and Android use an inaccessible CanvasPixelArray prototype.\n // Because we cannot feature detect it, we rely on user agent parsing.\n var polyfill = false, versionMatch;\n if (isChrome) {\n versionMatch = userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\n // Chrome < 21 lacks the set function.\n polyfill = versionMatch && parseInt(versionMatch[2]) < 21;\n } else if (isAndroid) {\n // Android < 4.4 lacks the set function.\n // Android >= 4.4 will contain Chrome in the user agent,\n // thus pass the Chrome check above and not reach this block.\n polyfill = isAndroidPre5;\n } else if (isSafari) {\n versionMatch = userAgent.\n match(/Version\\/([0-9]+)\\.([0-9]+)\\.([0-9]+) Safari\\//);\n // Safari < 6 lacks the set function.\n polyfill = versionMatch && parseInt(versionMatch[1]) < 6;\n }\n\n if (polyfill) {\n var contextPrototype = window.CanvasRenderingContext2D.prototype;\n var createImageData = contextPrototype.createImageData;\n contextPrototype.createImageData = function(w, h) {\n var imageData = createImageData.call(this, w, h);\n imageData.data.set = function(arr) {\n for (var i = 0, ii = this.length; i < ii; i++) {\n this[i] = arr[i];\n }\n };\n return imageData;\n };\n // this closure will be kept referenced, so clear its vars\n contextPrototype = null;\n }\n }\n})();\n\n// Support: IE<10, Android<4.0, iOS\n(function checkRequestAnimationFrame() {\n function installFakeAnimationFrameFunctions() {\n window.requestAnimationFrame = function (callback) {\n return window.setTimeout(callback, 20);\n };\n window.cancelAnimationFrame = function (timeoutID) {\n window.clearTimeout(timeoutID);\n };\n }\n\n if (!hasDOM) {\n return;\n }\n if (isIOS) {\n // requestAnimationFrame on iOS is broken, replacing with fake one.\n installFakeAnimationFrameFunctions();\n return;\n }\n if ('requestAnimationFrame' in window) {\n return;\n }\n window.requestAnimationFrame = window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame;\n if (window.requestAnimationFrame) {\n return;\n }\n installFakeAnimationFrameFunctions();\n})();\n\n// Support: Android, iOS\n(function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n // 5MP\n PDFJS.maxCanvasPixels = 5242880;\n }\n})();\n\n// Disable fullscreen support for certain problematic configurations.\n// Support: IE11+ (when embedded).\n(function checkFullscreenSupport() {\n if (!hasDOM) {\n return;\n }\n if (isIE && window.parent !== window) {\n PDFJS.disableFullscreen = true;\n }\n})();\n\n// Provides document.currentScript support\n// Support: IE, Chrome<29.\n(function checkCurrentScript() {\n if (!hasDOM) {\n return;\n }\n if ('currentScript' in document) {\n return;\n }\n Object.defineProperty(document, 'currentScript', {\n get() {\n var scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n },\n enumerable: true,\n configurable: true,\n });\n})();\n\n// Provides `input.type = 'type'` runtime failure protection.\n// Support: IE9,10.\n(function checkInputTypeNumberAssign() {\n if (!hasDOM) {\n return;\n }\n var el = document.createElement('input');\n try {\n el.type = 'number';\n } catch (ex) {\n var inputProto = el.constructor.prototype;\n var typeProperty = Object.getOwnPropertyDescriptor(inputProto, 'type');\n Object.defineProperty(inputProto, 'type', {\n get() {\n return typeProperty.get.call(this);\n },\n set(value) {\n typeProperty.set.call(this, value === 'number' ? 'text' : value);\n },\n enumerable: true,\n configurable: true,\n });\n }\n})();\n\n// Provides correct document.readyState value for legacy browsers.\n// Support: IE9,10.\n(function checkDocumentReadyState() {\n if (!hasDOM) {\n return;\n }\n if (!document.attachEvent) {\n return;\n }\n var documentProto = document.constructor.prototype;\n var readyStateProto = Object.getOwnPropertyDescriptor(documentProto,\n 'readyState');\n Object.defineProperty(documentProto, 'readyState', {\n get() {\n var value = readyStateProto.get.call(this);\n return value === 'interactive' ? 'loading' : value;\n },\n set(value) {\n readyStateProto.set.call(this, value);\n },\n enumerable: true,\n configurable: true,\n });\n})();\n\n// Provides support for ChildNode.remove in legacy browsers.\n// Support: IE.\n(function checkChildNodeRemove() {\n if (!hasDOM) {\n return;\n }\n if (typeof Element.prototype.remove !== 'undefined') {\n return;\n }\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n})();\n\n// Provides support for Number.isNaN in legacy browsers.\n// Support: IE.\n(function checkNumberIsNaN() {\n if (Number.isNaN) {\n return;\n }\n Number.isNaN = function(value) {\n return typeof value === 'number' && isNaN(value);\n };\n})();\n\n// Provides support for Number.isInteger in legacy browsers.\n// Support: IE.\n(function checkNumberIsInteger() {\n if (Number.isInteger) {\n return;\n }\n Number.isInteger = function(value) {\n return typeof value === 'number' && isFinite(value) &&\n Math.floor(value) === value;\n };\n})();\n\n/**\n * Polyfill for Promises:\n * The following promise implementation tries to generally implement the\n * Promise/A+ spec. Some notable differences from other promise libraries are:\n * - There currently isn't a separate deferred and promise object.\n * - Unhandled rejections eventually show an error if they aren't handled.\n *\n * Based off of the work in:\n * https://bugzilla.mozilla.org/show_bug.cgi?id=810490\n */\n(function checkPromise() {\n if (globalScope.Promise) {\n // Promises existing in the DOM/Worker, checking presence of all/resolve\n if (typeof globalScope.Promise.all !== 'function') {\n globalScope.Promise.all = function (iterable) {\n var count = 0, results = [], resolve, reject;\n var promise = new globalScope.Promise(function (resolve_, reject_) {\n resolve = resolve_;\n reject = reject_;\n });\n iterable.forEach(function (p, i) {\n count++;\n p.then(function (result) {\n results[i] = result;\n count--;\n if (count === 0) {\n resolve(results);\n }\n }, reject);\n });\n if (count === 0) {\n resolve(results);\n }\n return promise;\n };\n }\n if (typeof globalScope.Promise.resolve !== 'function') {\n globalScope.Promise.resolve = function (value) {\n return new globalScope.Promise(function (resolve) {\n resolve(value);\n });\n };\n }\n if (typeof globalScope.Promise.reject !== 'function') {\n globalScope.Promise.reject = function (reason) {\n return new globalScope.Promise(function (resolve, reject) {\n reject(reason);\n });\n };\n }\n if (typeof globalScope.Promise.prototype.catch !== 'function') {\n globalScope.Promise.prototype.catch = function (onReject) {\n return globalScope.Promise.prototype.then(undefined, onReject);\n };\n }\n return;\n }\n\n var STATUS_PENDING = 0;\n var STATUS_RESOLVED = 1;\n var STATUS_REJECTED = 2;\n\n // In an attempt to avoid silent exceptions, unhandled rejections are\n // tracked and if they aren't handled in a certain amount of time an\n // error is logged.\n var REJECTION_TIMEOUT = 500;\n\n var HandlerManager = {\n handlers: [],\n running: false,\n unhandledRejections: [],\n pendingRejectionCheck: false,\n\n scheduleHandlers: function scheduleHandlers(promise) {\n if (promise._status === STATUS_PENDING) {\n return;\n }\n\n this.handlers = this.handlers.concat(promise._handlers);\n promise._handlers = [];\n\n if (this.running) {\n return;\n }\n this.running = true;\n\n setTimeout(this.runHandlers.bind(this), 0);\n },\n\n runHandlers: function runHandlers() {\n var RUN_TIMEOUT = 1; // ms\n var timeoutAt = Date.now() + RUN_TIMEOUT;\n while (this.handlers.length > 0) {\n var handler = this.handlers.shift();\n\n var nextStatus = handler.thisPromise._status;\n var nextValue = handler.thisPromise._value;\n\n try {\n if (nextStatus === STATUS_RESOLVED) {\n if (typeof handler.onResolve === 'function') {\n nextValue = handler.onResolve(nextValue);\n }\n } else if (typeof handler.onReject === 'function') {\n nextValue = handler.onReject(nextValue);\n nextStatus = STATUS_RESOLVED;\n\n if (handler.thisPromise._unhandledRejection) {\n this.removeUnhandeledRejection(handler.thisPromise);\n }\n }\n } catch (ex) {\n nextStatus = STATUS_REJECTED;\n nextValue = ex;\n }\n\n handler.nextPromise._updateStatus(nextStatus, nextValue);\n if (Date.now() >= timeoutAt) {\n break;\n }\n }\n\n if (this.handlers.length > 0) {\n setTimeout(this.runHandlers.bind(this), 0);\n return;\n }\n\n this.running = false;\n },\n\n addUnhandledRejection: function addUnhandledRejection(promise) {\n this.unhandledRejections.push({\n promise,\n time: Date.now(),\n });\n this.scheduleRejectionCheck();\n },\n\n removeUnhandeledRejection: function removeUnhandeledRejection(promise) {\n promise._unhandledRejection = false;\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (this.unhandledRejections[i].promise === promise) {\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n },\n\n scheduleRejectionCheck: function scheduleRejectionCheck() {\n if (this.pendingRejectionCheck) {\n return;\n }\n this.pendingRejectionCheck = true;\n setTimeout(() => {\n this.pendingRejectionCheck = false;\n var now = Date.now();\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) {\n var unhandled = this.unhandledRejections[i].promise._value;\n var msg = 'Unhandled rejection: ' + unhandled;\n if (unhandled.stack) {\n msg += '\\n' + unhandled.stack;\n }\n // Raising and catching the error, so debugger can break on it.\n try {\n throw new Error(msg);\n } catch (_) {\n console.warn(msg);\n }\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n if (this.unhandledRejections.length) {\n this.scheduleRejectionCheck();\n }\n }, REJECTION_TIMEOUT);\n },\n };\n\n var Promise = function Promise(resolver) {\n this._status = STATUS_PENDING;\n this._handlers = [];\n try {\n resolver.call(this, this._resolve.bind(this), this._reject.bind(this));\n } catch (e) {\n this._reject(e);\n }\n };\n\n /**\n * Builds a promise that is resolved when all the passed in promises are\n * resolved.\n * @param {array} promises array of data and/or promises to wait for.\n * @return {Promise} New dependent promise.\n */\n Promise.all = function Promise_all(promises) {\n var resolveAll, rejectAll;\n var deferred = new Promise(function (resolve, reject) {\n resolveAll = resolve;\n rejectAll = reject;\n });\n var unresolved = promises.length;\n var results = [];\n if (unresolved === 0) {\n resolveAll(results);\n return deferred;\n }\n function reject(reason) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results = [];\n rejectAll(reason);\n }\n for (var i = 0, ii = promises.length; i < ii; ++i) {\n var promise = promises[i];\n var resolve = (function(i) {\n return function(value) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results[i] = value;\n unresolved--;\n if (unresolved === 0) {\n resolveAll(results);\n }\n };\n })(i);\n if (Promise.isPromise(promise)) {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n return deferred;\n };\n\n /**\n * Checks if the value is likely a promise (has a 'then' function).\n * @return {boolean} true if value is thenable\n */\n Promise.isPromise = function Promise_isPromise(value) {\n return value && typeof value.then === 'function';\n };\n\n /**\n * Creates resolved promise\n * @param value resolve value\n * @returns {Promise}\n */\n Promise.resolve = function Promise_resolve(value) {\n return new Promise(function (resolve) {\n resolve(value);\n });\n };\n\n /**\n * Creates rejected promise\n * @param reason rejection value\n * @returns {Promise}\n */\n Promise.reject = function Promise_reject(reason) {\n return new Promise(function (resolve, reject) {\n reject(reason);\n });\n };\n\n Promise.prototype = {\n _status: null,\n _value: null,\n _handlers: null,\n _unhandledRejection: null,\n\n _updateStatus: function Promise__updateStatus(status, value) {\n if (this._status === STATUS_RESOLVED ||\n this._status === STATUS_REJECTED) {\n return;\n }\n\n if (status === STATUS_RESOLVED &&\n Promise.isPromise(value)) {\n value.then(this._updateStatus.bind(this, STATUS_RESOLVED),\n this._updateStatus.bind(this, STATUS_REJECTED));\n return;\n }\n\n this._status = status;\n this._value = value;\n\n if (status === STATUS_REJECTED && this._handlers.length === 0) {\n this._unhandledRejection = true;\n HandlerManager.addUnhandledRejection(this);\n }\n\n HandlerManager.scheduleHandlers(this);\n },\n\n _resolve: function Promise_resolve(value) {\n this._updateStatus(STATUS_RESOLVED, value);\n },\n\n _reject: function Promise_reject(reason) {\n this._updateStatus(STATUS_REJECTED, reason);\n },\n\n then: function Promise_then(onResolve, onReject) {\n var nextPromise = new Promise(function (resolve, reject) {\n this.resolve = resolve;\n this.reject = reject;\n });\n this._handlers.push({\n thisPromise: this,\n onResolve,\n onReject,\n nextPromise,\n });\n HandlerManager.scheduleHandlers(this);\n return nextPromise;\n },\n\n catch: function Promise_catch(onReject) {\n return this.then(undefined, onReject);\n },\n };\n\n globalScope.Promise = Promise;\n})();\n\n(function checkWeakMap() {\n if (globalScope.WeakMap) {\n return;\n }\n\n var id = 0;\n function WeakMap() {\n this.id = '$weakmap' + (id++);\n }\n WeakMap.prototype = {\n has(obj) {\n if ((typeof obj !== 'object' && typeof obj !== 'function') ||\n obj === null) {\n return false;\n }\n return !!Object.getOwnPropertyDescriptor(obj, this.id);\n },\n get(obj) {\n return this.has(obj) ? obj[this.id] : undefined;\n },\n set(obj, value) {\n Object.defineProperty(obj, this.id, {\n value,\n enumerable: false,\n configurable: true,\n });\n },\n delete(obj) {\n delete obj[this.id];\n },\n };\n\n globalScope.WeakMap = WeakMap;\n})();\n\n// Polyfill from https://github.com/Polymer/URL\n/* Any copyright is dedicated to the Public Domain.\n * http://creativecommons.org/publicdomain/zero/1.0/ */\n(function checkURLConstructor() {\n // feature detect for URL constructor\n var hasWorkingUrl = false;\n try {\n if (typeof URL === 'function' &&\n typeof URL.prototype === 'object' &&\n ('origin' in URL.prototype)) {\n var u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n hasWorkingUrl = u.href === 'http://a/c%20d';\n }\n } catch (e) { }\n\n if (hasWorkingUrl) {\n return;\n }\n\n var relative = Object.create(null);\n relative['ftp'] = 21;\n relative['file'] = 0;\n relative['gopher'] = 70;\n relative['http'] = 80;\n relative['https'] = 443;\n relative['ws'] = 80;\n relative['wss'] = 443;\n\n var relativePathDotMapping = Object.create(null);\n relativePathDotMapping['%2e'] = '.';\n relativePathDotMapping['.%2e'] = '..';\n relativePathDotMapping['%2e.'] = '..';\n relativePathDotMapping['%2e%2e'] = '..';\n\n function isRelativeScheme(scheme) {\n return relative[scheme] !== undefined;\n }\n\n function invalid() {\n clear.call(this);\n this._isInvalid = true;\n }\n\n function IDNAToASCII(h) {\n if (h === '') {\n invalid.call(this);\n }\n // XXX\n return h.toLowerCase();\n }\n\n function percentEscape(c) {\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ? `\n [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n function percentEscapeQuery(c) {\n // XXX This actually needs to encode c using encoding and then\n // convert the bytes one-by-one.\n\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ` (do not escape '?')\n [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n var EOF, ALPHA = /[a-zA-Z]/,\n ALPHANUMERIC = /[a-zA-Z0-9\\+\\-\\.]/;\n\n function parse(input, stateOverride, base) {\n function err(message) {\n errors.push(message);\n }\n\n var state = stateOverride || 'scheme start',\n cursor = 0,\n buffer = '',\n seenAt = false,\n seenBracket = false,\n errors = [];\n\n loop: while ((input[cursor - 1] !== EOF || cursor === 0) &&\n !this._isInvalid) {\n var c = input[cursor];\n switch (state) {\n case 'scheme start':\n if (c && ALPHA.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n state = 'scheme';\n } else if (!stateOverride) {\n buffer = '';\n state = 'no scheme';\n continue;\n } else {\n err('Invalid scheme.');\n break loop;\n }\n break;\n\n case 'scheme':\n if (c && ALPHANUMERIC.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n } else if (c === ':') {\n this._scheme = buffer;\n buffer = '';\n if (stateOverride) {\n break loop;\n }\n if (isRelativeScheme(this._scheme)) {\n this._isRelative = true;\n }\n if (this._scheme === 'file') {\n state = 'relative';\n } else if (this._isRelative && base &&\n base._scheme === this._scheme) {\n state = 'relative or authority';\n } else if (this._isRelative) {\n state = 'authority first slash';\n } else {\n state = 'scheme data';\n }\n } else if (!stateOverride) {\n buffer = '';\n cursor = 0;\n state = 'no scheme';\n continue;\n } else if (c === EOF) {\n break loop;\n } else {\n err('Code point not allowed in scheme: ' + c);\n break loop;\n }\n break;\n\n case 'scheme data':\n if (c === '?') {\n this._query = '?';\n state = 'query';\n } else if (c === '#') {\n this._fragment = '#';\n state = 'fragment';\n } else {\n // XXX error handling\n if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._schemeData += percentEscape(c);\n }\n }\n break;\n\n case 'no scheme':\n if (!base || !(isRelativeScheme(base._scheme))) {\n err('Missing scheme.');\n invalid.call(this);\n } else {\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative or authority':\n if (c === '/' && input[cursor + 1] === '/') {\n state = 'authority ignore slashes';\n } else {\n err('Expected /, got: ' + c);\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative':\n this._isRelative = true;\n if (this._scheme !== 'file') {\n this._scheme = base._scheme;\n }\n if (c === EOF) {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._username = base._username;\n this._password = base._password;\n break loop;\n } else if (c === '/' || c === '\\\\') {\n if (c === '\\\\') {\n err('\\\\ is an invalid code point.');\n }\n state = 'relative slash';\n } else if (c === '?') {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = '?';\n this._username = base._username;\n this._password = base._password;\n state = 'query';\n } else if (c === '#') {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._fragment = '#';\n this._username = base._username;\n this._password = base._password;\n state = 'fragment';\n } else {\n var nextC = input[cursor + 1];\n var nextNextC = input[cursor + 2];\n if (this._scheme !== 'file' || !ALPHA.test(c) ||\n (nextC !== ':' && nextC !== '|') ||\n (nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\\\' &&\n nextNextC !== '?' && nextNextC !== '#')) {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n this._path = base._path.slice();\n this._path.pop();\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'relative slash':\n if (c === '/' || c === '\\\\') {\n if (c === '\\\\') {\n err('\\\\ is an invalid code point.');\n }\n if (this._scheme === 'file') {\n state = 'file host';\n } else {\n state = 'authority ignore slashes';\n }\n } else {\n if (this._scheme !== 'file') {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'authority first slash':\n if (c === '/') {\n state = 'authority second slash';\n } else {\n err('Expected \\'/\\', got: ' + c);\n state = 'authority ignore slashes';\n continue;\n }\n break;\n\n case 'authority second slash':\n state = 'authority ignore slashes';\n if (c !== '/') {\n err('Expected \\'/\\', got: ' + c);\n continue;\n }\n break;\n\n case 'authority ignore slashes':\n if (c !== '/' && c !== '\\\\') {\n state = 'authority';\n continue;\n } else {\n err('Expected authority, got: ' + c);\n }\n break;\n\n case 'authority':\n if (c === '@') {\n if (seenAt) {\n err('@ already seen.');\n buffer += '%40';\n }\n seenAt = true;\n for (var i = 0; i < buffer.length; i++) {\n var cp = buffer[i];\n if (cp === '\\t' || cp === '\\n' || cp === '\\r') {\n err('Invalid whitespace in authority.');\n continue;\n }\n // XXX check URL code points\n if (cp === ':' && this._password === null) {\n this._password = '';\n continue;\n }\n var tempC = percentEscape(cp);\n if (this._password !== null) {\n this._password += tempC;\n } else {\n this._username += tempC;\n }\n }\n buffer = '';\n } else if (c === EOF || c === '/' || c === '\\\\' ||\n c === '?' || c === '#') {\n cursor -= buffer.length;\n buffer = '';\n state = 'host';\n continue;\n } else {\n buffer += c;\n }\n break;\n\n case 'file host':\n if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n if (buffer.length === 2 && ALPHA.test(buffer[0]) &&\n (buffer[1] === ':' || buffer[1] === '|')) {\n state = 'relative path';\n } else if (buffer.length === 0) {\n state = 'relative path start';\n } else {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n }\n continue;\n } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n err('Invalid whitespace in file host.');\n } else {\n buffer += c;\n }\n break;\n\n case 'host':\n case 'hostname':\n if (c === ':' && !seenBracket) {\n // XXX host parsing\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'port';\n if (stateOverride === 'hostname') {\n break loop;\n }\n } else if (c === EOF || c === '/' ||\n c === '\\\\' || c === '?' || c === '#') {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n if (stateOverride) {\n break loop;\n }\n continue;\n } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n if (c === '[') {\n seenBracket = true;\n } else if (c === ']') {\n seenBracket = false;\n }\n buffer += c;\n } else {\n err('Invalid code point in host/hostname: ' + c);\n }\n break;\n\n case 'port':\n if (/[0-9]/.test(c)) {\n buffer += c;\n } else if (c === EOF || c === '/' || c === '\\\\' ||\n c === '?' || c === '#' || stateOverride) {\n if (buffer !== '') {\n var temp = parseInt(buffer, 10);\n if (temp !== relative[this._scheme]) {\n this._port = temp + '';\n }\n buffer = '';\n }\n if (stateOverride) {\n break loop;\n }\n state = 'relative path start';\n continue;\n } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n err('Invalid code point in port: ' + c);\n } else {\n invalid.call(this);\n }\n break;\n\n case 'relative path start':\n if (c === '\\\\') {\n err('\\'\\\\\\' not allowed in path.');\n }\n state = 'relative path';\n if (c !== '/' && c !== '\\\\') {\n continue;\n }\n break;\n\n case 'relative path':\n if (c === EOF || c === '/' || c === '\\\\' ||\n (!stateOverride && (c === '?' || c === '#'))) {\n if (c === '\\\\') {\n err('\\\\ not allowed in relative path.');\n }\n var tmp;\n if ((tmp = relativePathDotMapping[buffer.toLowerCase()])) {\n buffer = tmp;\n }\n if (buffer === '..') {\n this._path.pop();\n if (c !== '/' && c !== '\\\\') {\n this._path.push('');\n }\n } else if (buffer === '.' && c !== '/' && c !== '\\\\') {\n this._path.push('');\n } else if (buffer !== '.') {\n if (this._scheme === 'file' && this._path.length === 0 &&\n buffer.length === 2 && ALPHA.test(buffer[0]) &&\n buffer[1] === '|') {\n buffer = buffer[0] + ':';\n }\n this._path.push(buffer);\n }\n buffer = '';\n if (c === '?') {\n this._query = '?';\n state = 'query';\n } else if (c === '#') {\n this._fragment = '#';\n state = 'fragment';\n }\n } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n buffer += percentEscape(c);\n }\n break;\n\n case 'query':\n if (!stateOverride && c === '#') {\n this._fragment = '#';\n state = 'fragment';\n } else if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._query += percentEscapeQuery(c);\n }\n break;\n\n case 'fragment':\n if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._fragment += c;\n }\n break;\n }\n\n cursor++;\n }\n }\n\n function clear() {\n this._scheme = '';\n this._schemeData = '';\n this._username = '';\n this._password = null;\n this._host = '';\n this._port = '';\n this._path = [];\n this._query = '';\n this._fragment = '';\n this._isInvalid = false;\n this._isRelative = false;\n }\n\n // Does not process domain names or IP addresses.\n // Does not handle encoding for the query parameter.\n function JURL(url, base /* , encoding */) {\n if (base !== undefined && !(base instanceof JURL)) {\n base = new JURL(String(base));\n }\n\n this._url = url;\n clear.call(this);\n\n var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g, '');\n // encoding = encoding || 'utf-8'\n\n parse.call(this, input, null, base);\n }\n\n JURL.prototype = {\n toString() {\n return this.href;\n },\n get href() {\n if (this._isInvalid) {\n return this._url;\n }\n var authority = '';\n if (this._username !== '' || this._password !== null) {\n authority = this._username +\n (this._password !== null ? ':' + this._password : '') + '@';\n }\n\n return this.protocol +\n (this._isRelative ? '//' + authority + this.host : '') +\n this.pathname + this._query + this._fragment;\n },\n // The named parameter should be different from the setter's function name.\n // Otherwise Safari 5 will throw an error (see issue 8541)\n set href(value) {\n clear.call(this);\n parse.call(this, value);\n },\n\n get protocol() {\n return this._scheme + ':';\n },\n set protocol(value) {\n if (this._isInvalid) {\n return;\n }\n parse.call(this, value + ':', 'scheme start');\n },\n\n get host() {\n return this._isInvalid ? '' : this._port ?\n this._host + ':' + this._port : this._host;\n },\n set host(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'host');\n },\n\n get hostname() {\n return this._host;\n },\n set hostname(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'hostname');\n },\n\n get port() {\n return this._port;\n },\n set port(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'port');\n },\n\n get pathname() {\n return this._isInvalid ? '' : this._isRelative ?\n '/' + this._path.join('/') : this._schemeData;\n },\n set pathname(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n this._path = [];\n parse.call(this, value, 'relative path start');\n },\n\n get search() {\n return this._isInvalid || !this._query || this._query === '?' ?\n '' : this._query;\n },\n set search(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n this._query = '?';\n if (value[0] === '?') {\n value = value.slice(1);\n }\n parse.call(this, value, 'query');\n },\n\n get hash() {\n return this._isInvalid || !this._fragment || this._fragment === '#' ?\n '' : this._fragment;\n },\n set hash(value) {\n if (this._isInvalid) {\n return;\n }\n this._fragment = '#';\n if (value[0] === '#') {\n value = value.slice(1);\n }\n parse.call(this, value, 'fragment');\n },\n\n get origin() {\n var host;\n if (this._isInvalid || !this._scheme) {\n return '';\n }\n // javascript: Gecko returns String(\"\"), WebKit/Blink String(\"null\")\n // Gecko throws error for \"data://\"\n // data: Gecko returns \"\", Blink returns \"data://\", WebKit returns \"null\"\n // Gecko returns String(\"\") for file: mailto:\n // WebKit/Blink returns String(\"SCHEME://\") for file: mailto:\n switch (this._scheme) {\n case 'data':\n case 'file':\n case 'javascript':\n case 'mailto':\n return 'null';\n case 'blob':\n // Special case of blob: -- returns valid origin of _schemeData.\n try {\n return new JURL(this._schemeData).origin || 'null';\n } catch (_) {\n // Invalid _schemeData origin -- ignoring errors.\n }\n return 'null';\n }\n host = this.host;\n if (!host) {\n return '';\n }\n return this._scheme + '://' + host;\n },\n };\n\n // Copy over the static methods\n var OriginalURL = globalScope.URL;\n if (OriginalURL) {\n JURL.createObjectURL = function(blob) {\n // IE extension allows a second optional options argument.\n // http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx\n return OriginalURL.createObjectURL.apply(OriginalURL, arguments);\n };\n JURL.revokeObjectURL = function(url) {\n OriginalURL.revokeObjectURL(url);\n };\n }\n\n globalScope.URL = JURL;\n})();\n\n}\n\n\n\n// WEBPACK FOOTER //\n// src/shared/compatibility.js","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet isReadableStreamSupported = false;\nif (typeof ReadableStream !== 'undefined') {\n // MS Edge may say it has ReadableStream but they are not up to spec yet.\n try {\n // eslint-disable-next-line no-new\n new ReadableStream({\n start(controller) {\n controller.close();\n },\n });\n isReadableStreamSupported = true;\n } catch (e) {\n // The ReadableStream constructor cannot be used.\n }\n}\nif (isReadableStreamSupported) {\n exports.ReadableStream = ReadableStream;\n} else {\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {\n throw new Error('ReadableStream polyfill is not found for Chrome bundle');\n }\n exports.ReadableStream =\n require('../../external/streams/streams-lib').ReadableStream;\n}\n\n\n\n// WEBPACK FOOTER //\n// src/shared/streams_polyfill.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/shared/murmurhash3.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/shared/image_utils.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, () => {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = __non_webpack_require__(\n \"dommatrix/dist/dommatrix.js\"\n );\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n MissingPDFException,\n PasswordException,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nlet DefaultCanvasFactory = DOMCanvasFactory;\nlet DefaultCMapReaderFactory = DOMCMapReaderFactory;\nlet DefaultStandardFontDataFactory = DOMStandardFontDataFactory;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n } = require(\"./node_utils.js\");\n\n DefaultCanvasFactory = NodeCanvasFactory;\n DefaultCMapReaderFactory = NodeCMapReaderFactory;\n DefaultStandardFontDataFactory = NodeStandardFontDataFactory;\n}\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type {IPDFStreamFactory}\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string|URL} [url] - The URL of the PDF.\n * @property {TypedArray|Array|string} [data] - Binary PDF data. Use\n * typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string|URL|TypedArray|PDFDataRangeTransport|DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, Uint8Array, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either typed array, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory =\n params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) {\n params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE;\n }\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) {\n params.maxImageSize = -1;\n }\n if (typeof params.cMapUrl !== \"string\") {\n params.cMapUrl = null;\n }\n if (typeof params.standardFontDataUrl !== \"string\") {\n params.standardFontDataUrl = null;\n }\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch =\n params.CMapReaderFactory === DOMCMapReaderFactory &&\n params.StandardFontDataFactory === DOMStandardFontDataFactory;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts = !isNodeJS && !params.disableFontFace;\n }\n if (\n typeof params.ownerDocument !== \"object\" ||\n params.ownerDocument === null\n ) {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n }\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n deprecated(\n \"`PDFDocumentProxy.fingerprint`, \" +\n \"please use `PDFDocumentProxy.fingerprints` instead.\"\n );\n return this.fingerprints[0];\n },\n });\n\n Object.defineProperty(this, \"getStats\", {\n value: async () => {\n deprecated(\n \"`PDFDocumentProxy.getStats`, \" +\n \"please use the `PDFDocumentProxy.stats`-getter instead.\"\n );\n return this.stats || { streamTypes: {}, fontTypes: {} };\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @typedef {Object} PDFDocumentStats\n * @property {Object} streamTypes - Used stream types in the\n * document (an item is set to true if specific stream ID was used in the\n * document).\n * @property {Object} fontTypes - Used font types in the\n * document (an item is set to true if specific font ID was used in the\n * document).\n */\n\n /**\n * @type {PDFDocumentStats | null} The current statistics about document\n * structures, or `null` when no statistics exists.\n */\n get stats() {\n return this._transport.stats;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array} items\n */\n\n /**\n * @returns {Promise>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {TypedArray} that has the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this._transport.annotationStorage.size <= 0\n ) {\n deprecated(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with an\n * {Array} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} disableCombineTextItems - Do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {Object} [imageLayer] - An object that has `beginLayout`,\n * `endLayout` and `appendImage` functions.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object | string} [background] - Background to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._bitmaps = new Set();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n let promise = this._annotationPromises.get(intentArgs.cacheKey);\n if (!promise) {\n promise = this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n promise = promise.then(annotations => {\n for (const annotation of annotations) {\n if (annotation.titleObj !== undefined) {\n Object.defineProperty(annotation, \"title\", {\n get() {\n deprecated(\n \"`title`-property on annotation, please use `titleObj` instead.\"\n );\n return annotation.titleObj.str;\n },\n });\n }\n if (annotation.contentsObj !== undefined) {\n Object.defineProperty(annotation, \"contents\", {\n get() {\n deprecated(\n \"`contents`-property on annotation, please use `contentsObj` instead.\"\n );\n return annotation.contentsObj.str;\n },\n });\n }\n }\n return annotations;\n });\n }\n }\n return promise;\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return (this._jsActionsPromise ||= this._transport.getPageJSActions(\n this._pageIndex\n ));\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n }) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n if (arguments[0]?.renderInteractiveForms !== undefined) {\n deprecated(\n \"render no longer accepts the `renderInteractiveForms`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].renderInteractiveForms === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_FORMS;\n }\n }\n if (arguments[0]?.includeAnnotationStorage !== undefined) {\n deprecated(\n \"render no longer accepts the `includeAnnotationStorage`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].includeAnnotationStorage === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_STORAGE;\n }\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance =\n canvasFactory ||\n new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || intentPrint) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n disableCombineTextItems = false,\n includeMarkedContent = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return (this._structTreePromise ||= this._transport.getStructTree(\n this._pageIndex\n ));\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.clear();\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({ renderingIntent, cacheKey }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage:\n renderingIntent & RenderingIntentFlag.ANNOTATIONS_STORAGE\n ? this._transport.annotationStorage.serializable\n : null,\n }\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n postMessage(obj, transfers) {\n const event = {\n data: structuredClone(obj, transfers),\n };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts = new WeakMap();\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker.#workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n typeof Worker !== \"undefined\" &&\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let workerSrc = PDFWorker.workerSrc;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n const worker = new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch (e) {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this.#workerPorts.has(params.port)) {\n return this.#workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a ` - - + - +
-
- - - +
+
+ + + + +
+
+ +
+
@@ -66,89 +76,131 @@ See https://github.com/adobe-type-tools/cmap-resources
+
+
-