/ * *
* @ licstart The following is the entire license notice for the
* Javascript code in this page
*
* Copyright 2018 Mozilla Foundation
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
*
* @ licend The above is the entire license notice for the
* Javascript code in this page
* /
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . getDocument = getDocument ;
exports . setPDFNetworkStreamFactory = setPDFNetworkStreamFactory ;
exports . build = exports . version = exports . PDFPageProxy = exports . PDFDocumentProxy = exports . PDFWorker = exports . PDFDataRangeTransport = exports . LoopbackPort = void 0 ;
var _regenerator = _interopRequireDefault ( require ( "@babel/runtime/regenerator" ) ) ;
var _util = require ( "../shared/util" ) ;
var _dom _utils = require ( "./dom_utils" ) ;
var _font _loader = require ( "./font_loader" ) ;
var _api _compatibility = require ( "./api_compatibility" ) ;
var _canvas = require ( "./canvas" ) ;
var _global _scope = _interopRequireDefault ( require ( "../shared/global_scope" ) ) ;
var _worker _options = require ( "./worker_options" ) ;
var _message _handler = require ( "../shared/message_handler" ) ;
var _metadata = require ( "./metadata" ) ;
var _transport _stream = require ( "./transport_stream" ) ;
var _webgl = require ( "./webgl" ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function asyncGeneratorStep ( gen , resolve , reject , _next , _throw , key , arg ) { try { var info = gen [ key ] ( arg ) ; var value = info . value ; } catch ( error ) { reject ( error ) ; return ; } if ( info . done ) { resolve ( value ) ; } else { Promise . resolve ( value ) . then ( _next , _throw ) ; } }
function _asyncToGenerator ( fn ) { return function ( ) { var self = this , args = arguments ; return new Promise ( function ( resolve , reject ) { var gen = fn . apply ( self , args ) ; function _next ( value ) { asyncGeneratorStep ( gen , resolve , reject , _next , _throw , "next" , value ) ; } function _throw ( err ) { asyncGeneratorStep ( gen , resolve , reject , _next , _throw , "throw" , err ) ; } _next ( undefined ) ; } ) ; } ; }
function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _nonIterableRest ( ) ; }
function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; }
function _iterableToArrayLimit ( 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" ] != null ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; }
function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _nonIterableSpread ( ) ; }
function _nonIterableSpread ( ) { throw new TypeError ( "Invalid attempt to spread non-iterable instance" ) ; }
function _iterableToArray ( iter ) { if ( Symbol . iterator in Object ( iter ) || Object . prototype . toString . call ( iter ) === "[object Arguments]" ) return Array . from ( iter ) ; }
function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) { for ( var i = 0 , arr2 = new Array ( arr . length ) ; i < arr . length ; i ++ ) { arr2 [ i ] = arr [ i ] ; } return arr2 ; } }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a 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 ) ; } }
function _createClass ( Constructor , protoProps , staticProps ) { if ( protoProps ) _defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) _defineProperties ( Constructor , staticProps ) ; return Constructor ; }
function _typeof ( obj ) { if ( typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ) { _typeof = function _typeof ( obj ) { return typeof obj ; } ; } else { _typeof = function _typeof ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ; } return _typeof ( obj ) ; }
var DEFAULT _RANGE _CHUNK _SIZE = 65536 ;
var isWorkerDisabled = false ;
var fallbackWorkerSrc ;
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 ) {
fallbackWorkerSrc = requirejs . toUrl ( 'pdfjs-dist/build/pdf.worker.js' ) ;
}
var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs . load ;
fakeWorkerFilesLoader = useRequireEnsure ? function ( ) {
return new Promise ( function ( resolve , reject ) {
require . ensure ( [ ] , function ( ) {
try {
var worker ;
worker = require ( '../pdf.worker.js' ) ;
resolve ( worker . WorkerMessageHandler ) ;
} catch ( ex ) {
reject ( ex ) ;
}
} , reject , 'pdfjsWorker' ) ;
} ) ;
} : dynamicLoaderSupported ? function ( ) {
return new Promise ( function ( resolve , reject ) {
requirejs ( [ 'pdfjs-dist/build/pdf.worker' ] , function ( worker ) {
try {
resolve ( worker . WorkerMessageHandler ) ;
} catch ( ex ) {
reject ( ex ) ;
}
} , reject ) ;
} ) ;
} : null ;
if ( ! fallbackWorkerSrc && ( typeof document === "undefined" ? "undefined" : _typeof ( document ) ) === 'object' && 'currentScript' in document ) {
var pdfjsFilePath = document . currentScript && document . currentScript . src ;
if ( pdfjsFilePath ) {
fallbackWorkerSrc = pdfjsFilePath . replace ( /(\.(?:min\.)?js)(\?.*)?$/i , '.worker$1$2' ) ;
}
}
}
var createPDFNetworkStream ;
function setPDFNetworkStreamFactory ( pdfNetworkStreamFactory ) {
createPDFNetworkStream = pdfNetworkStreamFactory ;
}
function getDocument ( src ) {
var task = new PDFDocumentLoadingTask ( ) ;
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 ) !== '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 = Object . create ( null ) ;
var rangeTransport = null ,
worker = null ;
for ( var key in source ) {
if ( key === 'url' && typeof window !== 'undefined' ) {
params [ key ] = new _util . 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 ) === '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 ;
}
params [ key ] = source [ key ] ;
}
params . rangeChunkSize = params . rangeChunkSize || DEFAULT _RANGE _CHUNK _SIZE ;
params . CMapReaderFactory = params . CMapReaderFactory || _dom _utils . DOMCMapReaderFactory ;
params . ignoreErrors = params . stopAtErrors !== true ;
params . pdfBug = params . pdfBug === true ;
var NativeImageDecoderValues = Object . values ( _util . NativeImageDecoding ) ;
if ( params . nativeImageDecoderSupport === undefined || ! NativeImageDecoderValues . includes ( params . nativeImageDecoderSupport ) ) {
params . nativeImageDecoderSupport = _api _compatibility . apiCompatibilityParams . nativeImageDecoderSupport || _util . NativeImageDecoding . DECODE ;
}
if ( ! Number . isInteger ( params . maxImageSize ) ) {
params . maxImageSize = - 1 ;
}
if ( typeof params . isEvalSupported !== 'boolean' ) {
params . isEvalSupported = true ;
}
if ( typeof params . disableFontFace !== 'boolean' ) {
params . disableFontFace = _api _compatibility . apiCompatibilityParams . disableFontFace || false ;
}
if ( typeof params . disableRange !== 'boolean' ) {
params . disableRange = false ;
}
if ( typeof params . disableStream !== 'boolean' ) {
params . disableStream = false ;
}
if ( typeof params . disableAutoFetch !== 'boolean' ) {
params . disableAutoFetch = false ;
}
if ( typeof params . disableCreateObjectURL !== 'boolean' ) {
params . disableCreateObjectURL = _api _compatibility . apiCompatibilityParams . disableCreateObjectURL || false ;
}
( 0 , _util . setVerbosityLevel ) ( params . verbosity ) ;
if ( ! worker ) {
var workerParams = {
postMessageTransfers : params . postMessageTransfers ,
verbosity : params . verbosity ,
port : _worker _options . GlobalWorkerOptions . workerPort
} ;
worker = workerParams . port ? PDFWorker . fromPort ( workerParams ) : new PDFWorker ( workerParams ) ;
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 ;
if ( rangeTransport ) {
networkStream = new _transport _stream . PDFDataTransportStream ( {
length : params . length ,
initialData : params . initialData ,
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
} ) ;
}
var messageHandler = new _message _handler . MessageHandler ( docId , workerId , worker . port ) ;
messageHandler . postMessageTransfers = worker . postMessageTransfers ;
var transport = new WorkerTransport ( messageHandler , task , networkStream , params ) ;
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' ) ) ;
}
if ( pdfDataRangeTransport ) {
source . length = pdfDataRangeTransport . length ;
source . initialData = pdfDataRangeTransport . initialData ;
}
return worker . messageHandler . sendWithPromise ( 'GetDocRequest' , {
docId : docId ,
apiVersion : '2.1.266' ,
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 ,
disableCreateObjectURL : source . disableCreateObjectURL ,
postMessageTransfers : worker . postMessageTransfers ,
docBaseUrl : source . docBaseUrl ,
nativeImageDecoderSupport : source . nativeImageDecoderSupport ,
ignoreErrors : source . ignoreErrors ,
isEvalSupported : source . isEvalSupported
} ) . then ( function ( workerId ) {
if ( worker . destroyed ) {
throw new Error ( 'Worker was destroyed' ) ;
}
return workerId ;
} ) ;
}
var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure ( ) {
var nextDocumentId = 0 ;
var PDFDocumentLoadingTask =
/*#__PURE__*/
function ( ) {
function PDFDocumentLoadingTask ( ) {
_classCallCheck ( this , 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 ;
}
_createClass ( PDFDocumentLoadingTask , [ {
key : "destroy" ,
value : 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 ;
}
} ) ;
}
} , {
key : "then" ,
value : function then ( onFulfilled , onRejected ) {
( 0 , _util . deprecated ) ( 'PDFDocumentLoadingTask.then method, ' + 'use the `promise` getter instead.' ) ;
return this . promise . then . apply ( this . promise , arguments ) ;
}
} , {
key : "promise" ,
get : function get ( ) {
return this . _capability . promise ;
}
} ] ) ;
return PDFDocumentLoadingTask ;
} ( ) ;
return PDFDocumentLoadingTask ;
} ( ) ;
var PDFDataRangeTransport =
/*#__PURE__*/
function ( ) {
function PDFDataRangeTransport ( length , initialData ) {
_classCallCheck ( this , PDFDataRangeTransport ) ;
this . length = length ;
this . initialData = initialData ;
this . _rangeListeners = [ ] ;
this . _progressListeners = [ ] ;
this . _progressiveReadListeners = [ ] ;
this . _readyCapability = ( 0 , _util . createPromiseCapability ) ( ) ;
}
_createClass ( PDFDataRangeTransport , [ {
key : "addRangeListener" ,
value : function addRangeListener ( listener ) {
this . _rangeListeners . push ( listener ) ;
}
} , {
key : "addProgressListener" ,
value : function addProgressListener ( listener ) {
this . _progressListeners . push ( listener ) ;
}
} , {
key : "addProgressiveReadListener" ,
value : function addProgressiveReadListener ( listener ) {
this . _progressiveReadListeners . push ( listener ) ;
}
} , {
key : "onDataRange" ,
value : function onDataRange ( begin , chunk ) {
var _iteratorNormalCompletion = true ;
var _didIteratorError = false ;
var _iteratorError = undefined ;
try {
for ( var _iterator = this . _rangeListeners [ Symbol . iterator ] ( ) , _step ; ! ( _iteratorNormalCompletion = ( _step = _iterator . next ( ) ) . done ) ; _iteratorNormalCompletion = true ) {
var listener = _step . value ;
listener ( begin , chunk ) ;
}
} catch ( err ) {
_didIteratorError = true ;
_iteratorError = err ;
} finally {
try {
if ( ! _iteratorNormalCompletion && _iterator . return != null ) {
_iterator . return ( ) ;
}
} finally {
if ( _didIteratorError ) {
throw _iteratorError ;
}
}
}
}
} , {
key : "onDataProgress" ,
value : function onDataProgress ( loaded ) {
var _this2 = this ;
this . _readyCapability . promise . then ( function ( ) {
var _iteratorNormalCompletion2 = true ;
var _didIteratorError2 = false ;
var _iteratorError2 = undefined ;
try {
for ( var _iterator2 = _this2 . _progressListeners [ Symbol . iterator ] ( ) , _step2 ; ! ( _iteratorNormalCompletion2 = ( _step2 = _iterator2 . next ( ) ) . done ) ; _iteratorNormalCompletion2 = true ) {
var listener = _step2 . value ;
listener ( loaded ) ;
}
} catch ( err ) {
_didIteratorError2 = true ;
_iteratorError2 = err ;
} finally {
try {
if ( ! _iteratorNormalCompletion2 && _iterator2 . return != null ) {
_iterator2 . return ( ) ;
}
} finally {
if ( _didIteratorError2 ) {
throw _iteratorError2 ;
}
}
}
} ) ;
}
} , {
key : "onDataProgressiveRead" ,
value : function onDataProgressiveRead ( chunk ) {
var _this3 = this ;
this . _readyCapability . promise . then ( function ( ) {
var _iteratorNormalCompletion3 = true ;
var _didIteratorError3 = false ;
var _iteratorError3 = undefined ;
try {
for ( var _iterator3 = _this3 . _progressiveReadListeners [ Symbol . iterator ] ( ) , _step3 ; ! ( _iteratorNormalCompletion3 = ( _step3 = _iterator3 . next ( ) ) . done ) ; _iteratorNormalCompletion3 = true ) {
var listener = _step3 . value ;
listener ( chunk ) ;
}
} catch ( err ) {
_didIteratorError3 = true ;
_iteratorError3 = err ;
} finally {
try {
if ( ! _iteratorNormalCompletion3 && _iterator3 . return != null ) {
_iterator3 . return ( ) ;
}
} finally {
if ( _didIteratorError3 ) {
throw _iteratorError3 ;
}
}
}
} ) ;
}
} , {
key : "transportReady" ,
value : function transportReady ( ) {
this . _readyCapability . resolve ( ) ;
}
} , {
key : "requestDataRange" ,
value : function requestDataRange ( begin , end ) {
( 0 , _util . unreachable ) ( 'Abstract method PDFDataRangeTransport.requestDataRange' ) ;
}
} , {
key : "abort" ,
value : function abort ( ) { }
} ] ) ;
return PDFDataRangeTransport ;
} ( ) ;
exports . PDFDataRangeTransport = PDFDataRangeTransport ;
var PDFDocumentProxy =
/*#__PURE__*/
function ( ) {
function PDFDocumentProxy ( pdfInfo , transport , loadingTask ) {
_classCallCheck ( this , PDFDocumentProxy ) ;
this . loadingTask = loadingTask ;
this . _pdfInfo = pdfInfo ;
this . _transport = transport ;
}
_createClass ( PDFDocumentProxy , [ {
key : "getPage" ,
value : function getPage ( pageNumber ) {
return this . _transport . getPage ( pageNumber ) ;
}
} , {
key : "getPageIndex" ,
value : function getPageIndex ( ref ) {
return this . _transport . getPageIndex ( ref ) ;
}
} , {
key : "getDestinations" ,
value : function getDestinations ( ) {
return this . _transport . getDestinations ( ) ;
}
} , {
key : "getDestination" ,
value : function getDestination ( id ) {
return this . _transport . getDestination ( id ) ;
}
} , {
key : "getPageLabels" ,
value : function getPageLabels ( ) {
return this . _transport . getPageLabels ( ) ;
}
} , {
key : "getPageMode" ,
value : function getPageMode ( ) {
return this . _transport . getPageMode ( ) ;
}
} , {
key : "getOpenActionDestination" ,
value : function getOpenActionDestination ( ) {
return this . _transport . getOpenActionDestination ( ) ;
}
} , {
key : "getAttachments" ,
value : function getAttachments ( ) {
return this . _transport . getAttachments ( ) ;
}
} , {
key : "getJavaScript" ,
value : function getJavaScript ( ) {
return this . _transport . getJavaScript ( ) ;
}
} , {
key : "getOutline" ,
value : function getOutline ( ) {
return this . _transport . getOutline ( ) ;
}
} , {
key : "getPermissions" ,
value : function getPermissions ( ) {
return this . _transport . getPermissions ( ) ;
}
} , {
key : "getMetadata" ,
value : function getMetadata ( ) {
return this . _transport . getMetadata ( ) ;
}
} , {
key : "getData" ,
value : function getData ( ) {
return this . _transport . getData ( ) ;
}
} , {
key : "getDownloadInfo" ,
value : function getDownloadInfo ( ) {
return this . _transport . downloadInfoCapability . promise ;
}
} , {
key : "getStats" ,
value : function getStats ( ) {
return this . _transport . getStats ( ) ;
}
} , {
key : "cleanup" ,
value : function cleanup ( ) {
this . _transport . startCleanup ( ) ;
}
} , {
key : "destroy" ,
value : function destroy ( ) {
return this . loadingTask . destroy ( ) ;
}
} , {
key : "numPages" ,
get : function get ( ) {
return this . _pdfInfo . numPages ;
}
} , {
key : "fingerprint" ,
get : function get ( ) {
return this . _pdfInfo . fingerprint ;
}
} , {
key : "loadingParams" ,
get : function get ( ) {
return this . _transport . loadingParams ;
}
} ] ) ;
return PDFDocumentProxy ;
} ( ) ;
exports . PDFDocumentProxy = PDFDocumentProxy ;
var PDFPageProxy =
/*#__PURE__*/
function ( ) {
function PDFPageProxy ( pageIndex , pageInfo , transport ) {
var pdfBug = arguments . length > 3 && arguments [ 3 ] !== undefined ? arguments [ 3 ] : false ;
_classCallCheck ( this , PDFPageProxy ) ;
this . pageIndex = pageIndex ;
this . _pageInfo = pageInfo ;
this . _transport = transport ;
this . _stats = pdfBug ? new _dom _utils . StatTimer ( ) : _dom _utils . DummyStatTimer ;
this . _pdfBug = pdfBug ;
this . commonObjs = transport . commonObjs ;
this . objs = new PDFObjects ( ) ;
this . cleanupAfterRender = false ;
this . pendingCleanup = false ;
this . intentStates = Object . create ( null ) ;
this . destroyed = false ;
}
_createClass ( PDFPageProxy , [ {
key : "getViewport" ,
value : function getViewport ( ) {
var _ref = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : { } ,
scale = _ref . scale ,
_ref$rotation = _ref . rotation ,
rotation = _ref$rotation === void 0 ? this . rotate : _ref$rotation ,
_ref$dontFlip = _ref . dontFlip ,
dontFlip = _ref$dontFlip === void 0 ? false : _ref$dontFlip ;
if ( arguments . length > 1 || typeof arguments [ 0 ] === 'number' ) {
( 0 , _util . deprecated ) ( 'getViewport is called with obsolete arguments.' ) ;
scale = arguments [ 0 ] ;
rotation = typeof arguments [ 1 ] === 'number' ? arguments [ 1 ] : this . rotate ;
dontFlip = typeof arguments [ 2 ] === 'boolean' ? arguments [ 2 ] : false ;
}
return new _dom _utils . PageViewport ( {
viewBox : this . view ,
scale : scale ,
rotation : rotation ,
dontFlip : dontFlip
} ) ;
}
} , {
key : "getAnnotations" ,
value : function getAnnotations ( ) {
var _ref2 = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : { } ,
_ref2$intent = _ref2 . intent ,
intent = _ref2$intent === void 0 ? null : _ref2$intent ;
if ( ! this . annotationsPromise || this . annotationsIntent !== intent ) {
this . annotationsPromise = this . _transport . getAnnotations ( this . pageIndex , intent ) ;
this . annotationsIntent = intent ;
}
return this . annotationsPromise ;
}
} , {
key : "render" ,
value : function render ( _ref3 ) {
var _this4 = this ;
var canvasContext = _ref3 . canvasContext ,
viewport = _ref3 . viewport ,
_ref3$intent = _ref3 . intent ,
intent = _ref3$intent === void 0 ? 'display' : _ref3$intent ,
_ref3$enableWebGL = _ref3 . enableWebGL ,
enableWebGL = _ref3$enableWebGL === void 0 ? false : _ref3$enableWebGL ,
_ref3$renderInteracti = _ref3 . renderInteractiveForms ,
renderInteractiveForms = _ref3$renderInteracti === void 0 ? false : _ref3$renderInteracti ,
_ref3$transform = _ref3 . transform ,
transform = _ref3$transform === void 0 ? null : _ref3$transform ,
_ref3$imageLayer = _ref3 . imageLayer ,
imageLayer = _ref3$imageLayer === void 0 ? null : _ref3$imageLayer ,
_ref3$canvasFactory = _ref3 . canvasFactory ,
canvasFactory = _ref3$canvasFactory === void 0 ? null : _ref3$canvasFactory ,
_ref3$background = _ref3 . background ,
background = _ref3$background === void 0 ? null : _ref3$background ;
var stats = this . _stats ;
stats . time ( 'Overall' ) ;
this . pendingCleanup = false ;
var renderingIntent = intent === 'print' ? 'print' : 'display' ;
var canvasFactoryInstance = canvasFactory || new _dom _utils . DOMCanvasFactory ( ) ;
var webGLContext = new _webgl . WebGLContext ( {
enable : enableWebGL
} ) ;
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
} ;
stats . time ( 'Page Request' ) ;
this . _transport . messageHandler . send ( 'RenderPageRequest' , {
pageIndex : this . pageNumber - 1 ,
intent : renderingIntent ,
renderInteractiveForms : 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 ( {
callback : complete ,
params : {
canvasContext : canvasContext ,
viewport : viewport ,
transform : transform ,
imageLayer : imageLayer ,
background : background
} ,
objs : this . objs ,
commonObjs : this . commonObjs ,
operatorList : intentState . operatorList ,
pageNumber : this . pageNumber ,
canvasFactory : canvasFactoryInstance ,
webGLContext : webGLContext ,
useRequestAnimationFrame : renderingIntent !== 'print' ,
pdfBug : this . _pdfBug
} ) ;
if ( ! intentState . renderTasks ) {
intentState . renderTasks = [ ] ;
}
intentState . renderTasks . push ( internalRenderTask ) ;
var renderTask = internalRenderTask . task ;
intentState . displayReadyCapability . promise . then ( function ( transparency ) {
if ( _this4 . pendingCleanup ) {
complete ( ) ;
return ;
}
stats . time ( 'Rendering' ) ;
internalRenderTask . initializeGraphics ( transparency ) ;
internalRenderTask . operatorListChanged ( ) ;
} ) . catch ( complete ) ;
return renderTask ;
}
} , {
key : "getOperatorList" ,
value : function 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 . _stats . time ( 'Page Request' ) ;
this . _transport . messageHandler . send ( 'RenderPageRequest' , {
pageIndex : this . pageIndex ,
intent : renderingIntent
} ) ;
}
return intentState . opListReadCapability . promise ;
}
} , {
key : "streamTextContent" ,
value : function streamTextContent ( ) {
var _ref4 = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : { } ,
_ref4$normalizeWhites = _ref4 . normalizeWhitespace ,
normalizeWhitespace = _ref4$normalizeWhites === void 0 ? false : _ref4$normalizeWhites ,
_ref4$disableCombineT = _ref4 . disableCombineTextItems ,
disableCombineTextItems = _ref4$disableCombineT === void 0 ? false : _ref4$disableCombineT ;
var TEXT _CONTENT _CHUNK _SIZE = 100 ;
return this . _transport . messageHandler . sendWithStream ( 'GetTextContent' , {
pageIndex : this . pageNumber - 1 ,
normalizeWhitespace : normalizeWhitespace === true ,
combineTextItems : disableCombineTextItems !== true
} , {
highWaterMark : TEXT _CONTENT _CHUNK _SIZE ,
size : function size ( textContent ) {
return textContent . items . length ;
}
} ) ;
}
} , {
key : "getTextContent" ,
value : function getTextContent ( ) {
var params = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : { } ;
var readableStream = this . streamTextContent ( params ) ;
return new Promise ( function ( resolve , reject ) {
function pump ( ) {
reader . read ( ) . then ( function ( _ref5 ) {
var _textContent$items ;
var value = _ref5 . value ,
done = _ref5 . done ;
if ( done ) {
resolve ( textContent ) ;
return ;
}
Object . assign ( textContent . styles , value . styles ) ;
( _textContent$items = textContent . items ) . push . apply ( _textContent$items , _toConsumableArray ( value . items ) ) ;
pump ( ) ;
} , reject ) ;
}
var reader = readableStream . getReader ( ) ;
var textContent = {
items : [ ] ,
styles : Object . create ( null )
} ;
pump ( ) ;
} ) ;
}
} , {
key : "_destroy" ,
value : function _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 ) ;
}
} , {
key : "cleanup" ,
value : function cleanup ( ) {
var resetStats = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : false ;
this . pendingCleanup = true ;
this . _tryCleanup ( resetStats ) ;
}
} , {
key : "_tryCleanup" ,
value : function _tryCleanup ( ) {
var resetStats = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : false ;
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 ;
if ( resetStats && this . _stats instanceof _dom _utils . StatTimer ) {
this . _stats = new _dom _utils . StatTimer ( ) ;
}
this . pendingCleanup = false ;
}
} , {
key : "_startRenderPage" ,
value : function _startRenderPage ( transparency , intent ) {
var intentState = this . intentStates [ intent ] ;
if ( intentState . displayReadyCapability ) {
intentState . displayReadyCapability . resolve ( transparency ) ;
}
}
} , {
key : "_renderPageChunk" ,
value : function _renderPageChunk ( operatorListChunk , intent ) {
var intentState = this . intentStates [ intent ] ;
for ( var 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 ( var _i = 0 ; _i < intentState . renderTasks . length ; _i ++ ) {
intentState . renderTasks [ _i ] . operatorListChanged ( ) ;
}
if ( operatorListChunk . lastChunk ) {
intentState . receivingOperatorList = false ;
this . _tryCleanup ( ) ;
}
}
} , {
key : "pageNumber" ,
get : function get ( ) {
return this . pageIndex + 1 ;
}
} , {
key : "rotate" ,
get : function get ( ) {
return this . _pageInfo . rotate ;
}
} , {
key : "ref" ,
get : function get ( ) {
return this . _pageInfo . ref ;
}
} , {
key : "userUnit" ,
get : function get ( ) {
return this . _pageInfo . userUnit ;
}
} , {
key : "view" ,
get : function get ( ) {
return this . _pageInfo . view ;
}
} , {
key : "stats" ,
get : function get ( ) {
return this . _stats instanceof _dom _utils . StatTimer ? this . _stats : null ;
}
} ] ) ;
return PDFPageProxy ;
} ( ) ;
exports . PDFPageProxy = PDFPageProxy ;
var LoopbackPort =
/*#__PURE__*/
function ( ) {
function LoopbackPort ( ) {
var defer = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : true ;
_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 ) !== 'object' || value === null ) {
return value ;
}
if ( cloned . has ( value ) ) {
return cloned . get ( value ) ;
}
var buffer , result ;
if ( ( buffer = value . buffer ) && ( 0 , _util . isArrayBuffer ) ( buffer ) ) {
var transferable = transfers && transfers . includes ( buffer ) ;
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 = Array . isArray ( value ) ? [ ] : { } ;
cloned . set ( value , result ) ;
for ( var i in value ) {
var desc = void 0 ,
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 ;
} ( ) ;
exports . LoopbackPort = LoopbackPort ;
var PDFWorker = function PDFWorkerClosure ( ) {
var pdfWorkerPorts = new WeakMap ( ) ;
var nextFakeWorkerId = 0 ;
var fakeWorkerFilesLoadedCapability ;
function _getWorkerSrc ( ) {
if ( _worker _options . GlobalWorkerOptions . workerSrc ) {
return _worker _options . GlobalWorkerOptions . workerSrc ;
}
if ( typeof fallbackWorkerSrc !== 'undefined' ) {
return fallbackWorkerSrc ;
}
throw new Error ( 'No "GlobalWorkerOptions.workerSrc" specified.' ) ;
}
function getMainThreadWorkerMessageHandler ( ) {
try {
if ( typeof window !== 'undefined' ) {
return window . pdfjsWorker && window . pdfjsWorker . WorkerMessageHandler ;
}
} catch ( ex ) { }
return null ;
}
function setupFakeWorkerGlobal ( ) {
if ( fakeWorkerFilesLoadedCapability ) {
return fakeWorkerFilesLoadedCapability . promise ;
}
fakeWorkerFilesLoadedCapability = ( 0 , _util . createPromiseCapability ) ( ) ;
var mainWorkerMessageHandler = getMainThreadWorkerMessageHandler ( ) ;
if ( mainWorkerMessageHandler ) {
fakeWorkerFilesLoadedCapability . resolve ( mainWorkerMessageHandler ) ;
return fakeWorkerFilesLoadedCapability . promise ;
}
var loader = fakeWorkerFilesLoader || function ( ) {
return ( 0 , _dom _utils . loadScript ) ( _getWorkerSrc ( ) ) . then ( function ( ) {
return window . pdfjsWorker . WorkerMessageHandler ;
} ) ;
} ;
loader ( ) . then ( fakeWorkerFilesLoadedCapability . resolve , fakeWorkerFilesLoadedCapability . reject ) ;
return fakeWorkerFilesLoadedCapability . promise ;
}
function createCDNWrapper ( url ) {
var wrapper = 'importScripts(\'' + url + '\');' ;
return _util . URL . createObjectURL ( new Blob ( [ wrapper ] ) ) ;
}
var PDFWorker =
/*#__PURE__*/
function ( ) {
function PDFWorker ( ) {
var _ref6 = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : { } ,
_ref6$name = _ref6 . name ,
name = _ref6$name === void 0 ? null : _ref6$name ,
_ref6$port = _ref6 . port ,
port = _ref6$port === void 0 ? null : _ref6$port ,
_ref6$postMessageTran = _ref6 . postMessageTransfers ,
postMessageTransfers = _ref6$postMessageTran === void 0 ? true : _ref6$postMessageTran ,
_ref6$verbosity = _ref6 . verbosity ,
verbosity = _ref6$verbosity === void 0 ? ( 0 , _util . getVerbosityLevel ) ( ) : _ref6$verbosity ;
_classCallCheck ( this , PDFWorker ) ;
if ( port && pdfWorkerPorts . has ( port ) ) {
throw new Error ( 'Cannot use more than one PDFWorker per port' ) ;
}
this . name = name ;
this . destroyed = false ;
this . postMessageTransfers = postMessageTransfers !== false ;
this . verbosity = verbosity ;
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 ( ) ;
}
_createClass ( PDFWorker , [ {
key : "_initializeFromPort" ,
value : function _initializeFromPort ( port ) {
this . _port = port ;
this . _messageHandler = new _message _handler . MessageHandler ( 'main' , 'worker' , port ) ;
this . _messageHandler . on ( 'ready' , function ( ) { } ) ;
this . _readyCapability . resolve ( ) ;
}
} , {
key : "_initialize" ,
value : function _initialize ( ) {
var _this6 = this ;
if ( typeof Worker !== 'undefined' && ! isWorkerDisabled && ! getMainThreadWorkerMessageHandler ( ) ) {
var workerSrc = _getWorkerSrc ( ) ;
try {
if ( ! ( 0 , _util . isSameOrigin ) ( window . location . href , workerSrc ) ) {
workerSrc = createCDNWrapper ( new _util . URL ( workerSrc , window . location ) . href ) ;
}
var worker = new Worker ( workerSrc ) ;
var messageHandler = new _message _handler . 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 ;
}
if ( data && data . supportTypedArray ) {
_this6 . _messageHandler = messageHandler ;
_this6 . _port = worker ;
_this6 . _webWorker = worker ;
if ( ! data . supportTransfers ) {
_this6 . postMessageTransfers = false ;
}
_this6 . _readyCapability . resolve ( ) ;
messageHandler . send ( 'configure' , {
verbosity : _this6 . verbosity
} ) ;
} else {
_this6 . _setupFakeWorker ( ) ;
messageHandler . destroy ( ) ;
worker . terminate ( ) ;
}
} ) ;
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 testObj = new Uint8Array ( [ _this6 . 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 ( ) ;
}
} , {
key : "_setupFakeWorker" ,
value : function _setupFakeWorker ( ) {
var _this7 = this ;
if ( ! isWorkerDisabled ) {
( 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 port = new LoopbackPort ( ) ;
_this7 . _port = port ;
var id = 'fake' + nextFakeWorkerId ++ ;
var workerHandler = new _message _handler . MessageHandler ( id + '_worker' , id , port ) ;
WorkerMessageHandler . setup ( workerHandler , port ) ;
var messageHandler = new _message _handler . MessageHandler ( id , id + '_worker' , port ) ;
_this7 . _messageHandler = messageHandler ;
_this7 . _readyCapability . resolve ( ) ;
} ) . catch ( function ( reason ) {
_this7 . _readyCapability . reject ( new Error ( "Setting up fake worker failed: \"" . concat ( reason . message , "\"." ) ) ) ;
} ) ;
}
} , {
key : "destroy" ,
value : function 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 ;
}
}
} , {
key : "promise" ,
get : function get ( ) {
return this . _readyCapability . promise ;
}
} , {
key : "port" ,
get : function get ( ) {
return this . _port ;
}
} , {
key : "messageHandler" ,
get : function get ( ) {
return this . _messageHandler ;
}
} ] , [ {
key : "fromPort" ,
value : function fromPort ( params ) {
if ( ! params || ! params . port ) {
throw new Error ( 'PDFWorker.fromPort - invalid method signature.' ) ;
}
if ( pdfWorkerPorts . has ( params . port ) ) {
return pdfWorkerPorts . get ( params . port ) ;
}
return new PDFWorker ( params ) ;
}
} , {
key : "getWorkerSrc" ,
value : function getWorkerSrc ( ) {
return _getWorkerSrc ( ) ;
}
} ] ) ;
return PDFWorker ;
} ( ) ;
return PDFWorker ;
} ( ) ;
exports . PDFWorker = PDFWorker ;
var WorkerTransport =
/*#__PURE__*/
function ( ) {
function WorkerTransport ( messageHandler , loadingTask , networkStream , params ) {
_classCallCheck ( this , WorkerTransport ) ;
this . messageHandler = messageHandler ;
this . loadingTask = loadingTask ;
this . commonObjs = new PDFObjects ( ) ;
this . fontLoader = new _font _loader . FontLoader ( {
docId : loadingTask . docId ,
onUnsupportedFeature : this . _onUnsupportedFeature . bind ( this )
} ) ;
this . _params = params ;
this . CMapReaderFactory = new params . CMapReaderFactory ( {
baseUrl : params . cMapUrl ,
isCompressed : params . 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 ( ) ;
}
_createClass ( WorkerTransport , [ {
key : "destroy" ,
value : function 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 ;
}
} , {
key : "setupMessageHandler" ,
value : function setupMessageHandler ( ) {
var messageHandler = this . messageHandler ,
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 ( _ref7 ) {
var value = _ref7 . value ,
done = _ref7 . 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 && loadingTask . onProgress ) {
loadingTask . onProgress ( _this10 . _lastProgress ) ;
}
fullReader . onProgress = function ( evt ) {
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 ( _ref8 ) {
var value = _ref8 . value ,
done = _ref8 . 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 ( _ref9 ) {
var pdfInfo = _ref9 . pdfInfo ;
this . numPages = pdfInfo . numPages ;
this . pdfDocument = new PDFDocumentProxy ( pdfInfo , this , loadingTask ) ;
loadingTask . _capability . resolve ( this . pdfDocument ) ;
} , this ) ;
messageHandler . on ( 'PasswordRequest' , function ( exception ) {
var _this11 = this ;
this . _passwordCapability = ( 0 , _util . createPromiseCapability ) ( ) ;
if ( loadingTask . onPassword ) {
var updatePassword = function updatePassword ( password ) {
_this11 . _passwordCapability . resolve ( {
password : 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 ;
} , this ) ;
messageHandler . on ( 'PasswordException' , function ( exception ) {
loadingTask . _capability . reject ( new _util . PasswordException ( exception . message , exception . code ) ) ;
} , this ) ;
messageHandler . on ( 'InvalidPDF' , function ( exception ) {
loadingTask . _capability . reject ( new _util . InvalidPDFException ( exception . message ) ) ;
} , this ) ;
messageHandler . on ( 'MissingPDF' , function ( exception ) {
loadingTask . _capability . reject ( new _util . MissingPDFException ( exception . message ) ) ;
} , this ) ;
messageHandler . on ( 'UnexpectedResponse' , function ( exception ) {
loadingTask . _capability . reject ( new _util . UnexpectedResponseException ( exception . message , exception . status ) ) ;
} , this ) ;
messageHandler . on ( 'UnknownError' , function ( exception ) {
loadingTask . _capability . reject ( new _util . UnknownErrorException ( exception . message , exception . details ) ) ;
} , this ) ;
messageHandler . on ( 'DataLoaded' , function ( data ) {
if ( loadingTask . onProgress ) {
loadingTask . onProgress ( {
loaded : data . length ,
total : data . length
} ) ;
}
this . downloadInfoCapability . resolve ( data ) ;
} , this ) ;
messageHandler . on ( 'StartRenderPage' , function ( 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 ( data ) {
if ( this . destroyed ) {
return ;
}
var page = this . pageCache [ data . pageIndex ] ;
page . _renderPageChunk ( data . operatorList , data . intent ) ;
} , this ) ;
messageHandler . on ( 'commonobj' , function ( data ) {
var _this12 = this ;
if ( this . destroyed ) {
return ;
}
var _data = _slicedToArray ( data , 3 ) ,
id = _data [ 0 ] ,
type = _data [ 1 ] ,
exportedData = _data [ 2 ] ;
if ( this . commonObjs . has ( id ) ) {
return ;
}
switch ( type ) {
case 'Font' :
var params = this . _params ;
if ( 'error' in exportedData ) {
var exportedError = exportedData . error ;
( 0 , _util . warn ) ( "Error during font loading: " . concat ( exportedError ) ) ;
this . commonObjs . resolve ( id , exportedError ) ;
break ;
}
var fontRegistry = null ;
if ( params . pdfBug && _global _scope . default . FontInspector && _global _scope . default . FontInspector . enabled ) {
fontRegistry = {
registerFont : function registerFont ( font , url ) {
_global _scope . default [ 'FontInspector' ] . fontAdded ( font , url ) ;
}
} ;
}
var font = new _font _loader . FontFaceObject ( exportedData , {
isEvalSupported : params . isEvalSupported ,
disableFontFace : params . disableFontFace ,
ignoreErrors : params . ignoreErrors ,
onUnsupportedFeature : this . _onUnsupportedFeature . bind ( this ) ,
fontRegistry : fontRegistry
} ) ;
this . fontLoader . bind ( font ) . then ( function ( ) {
_this12 . commonObjs . resolve ( id , font ) ;
} , function ( reason ) {
messageHandler . sendWithPromise ( 'FontFallback' , {
id : id
} ) . finally ( function ( ) {
_this12 . commonObjs . resolve ( id , font ) ;
} ) ;
} ) ;
break ;
case 'FontPath' :
this . commonObjs . resolve ( id , exportedData ) ;
break ;
default :
throw new Error ( "Got unknown common object type " . concat ( type ) ) ;
}
} , this ) ;
messageHandler . on ( 'obj' , function ( data ) {
if ( this . destroyed ) {
return ;
}
var _data2 = _slicedToArray ( data , 4 ) ,
id = _data2 [ 0 ] ,
pageIndex = _data2 [ 1 ] ,
type = _data2 [ 2 ] ,
imageData = _data2 [ 3 ] ;
var pageProxy = this . pageCache [ pageIndex ] ;
if ( pageProxy . objs . has ( id ) ) {
return ;
}
switch ( type ) {
case 'JpegStream' :
return new Promise ( function ( resolve , reject ) {
var img = new Image ( ) ;
img . onload = function ( ) {
resolve ( img ) ;
} ;
img . onerror = function ( ) {
reject ( new Error ( 'Error during JPEG image loading' ) ) ;
} ;
img . src = imageData ;
} ) . then ( function ( img ) {
pageProxy . objs . resolve ( id , img ) ;
} ) ;
case 'Image' :
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 " . concat ( type ) ) ;
}
} , this ) ;
messageHandler . on ( 'DocProgress' , function ( data ) {
if ( this . destroyed ) {
return ;
}
if ( loadingTask . onProgress ) {
loadingTask . onProgress ( {
loaded : data . loaded ,
total : data . total
} ) ;
}
} , this ) ;
messageHandler . on ( 'PageError' , function ( 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' , this . _onUnsupportedFeature , 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 _data3 = _slicedToArray ( data , 2 ) ,
imageUrl = _data3 [ 0 ] ,
components = _data3 [ 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 Uint8ClampedArray ( 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 ;
if ( components === 3 ) {
for ( var 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 ( var _i2 = 0 , _j = 0 ; _i2 < rgbaLength ; _i2 += 4 , _j ++ ) {
buf [ _j ] = data [ _i2 ] ;
}
}
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 ) ;
}
} , {
key : "_onUnsupportedFeature" ,
value : function _onUnsupportedFeature ( _ref10 ) {
var featureId = _ref10 . featureId ;
if ( this . destroyed ) {
return ;
}
if ( this . loadingTask . onUnsupportedFeature ) {
this . loadingTask . onUnsupportedFeature ( featureId ) ;
}
}
} , {
key : "getData" ,
value : function getData ( ) {
return this . messageHandler . sendWithPromise ( 'GetData' , null ) ;
}
} , {
key : "getPage" ,
value : function getPage ( pageNumber ) {
var _this13 = this ;
if ( ! Number . isInteger ( 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 . _params . pdfBug ) ;
_this13 . pageCache [ pageIndex ] = page ;
return page ;
} ) ;
this . pagePromises [ pageIndex ] = promise ;
return promise ;
}
} , {
key : "getPageIndex" ,
value : function getPageIndex ( ref ) {
return this . messageHandler . sendWithPromise ( 'GetPageIndex' , {
ref : ref
} ) . catch ( function ( reason ) {
return Promise . reject ( new Error ( reason ) ) ;
} ) ;
}
} , {
key : "getAnnotations" ,
value : function getAnnotations ( pageIndex , intent ) {
return this . messageHandler . sendWithPromise ( 'GetAnnotations' , {
pageIndex : pageIndex ,
intent : intent
} ) ;
}
} , {
key : "getDestinations" ,
value : function getDestinations ( ) {
return this . messageHandler . sendWithPromise ( 'GetDestinations' , null ) ;
}
} , {
key : "getDestination" ,
value : function getDestination ( id ) {
if ( typeof id !== 'string' ) {
return Promise . reject ( new Error ( 'Invalid destination request.' ) ) ;
}
return this . messageHandler . sendWithPromise ( 'GetDestination' , {
id : id
} ) ;
}
} , {
key : "getPageLabels" ,
value : function getPageLabels ( ) {
return this . messageHandler . sendWithPromise ( 'GetPageLabels' , null ) ;
}
} , {
key : "getPageMode" ,
value : function getPageMode ( ) {
return this . messageHandler . sendWithPromise ( 'GetPageMode' , null ) ;
}
} , {
key : "getOpenActionDestination" ,
value : function getOpenActionDestination ( ) {
return this . messageHandler . sendWithPromise ( 'getOpenActionDestination' , null ) ;
}
} , {
key : "getAttachments" ,
value : function getAttachments ( ) {
return this . messageHandler . sendWithPromise ( 'GetAttachments' , null ) ;
}
} , {
key : "getJavaScript" ,
value : function getJavaScript ( ) {
return this . messageHandler . sendWithPromise ( 'GetJavaScript' , null ) ;
}
} , {
key : "getOutline" ,
value : function getOutline ( ) {
return this . messageHandler . sendWithPromise ( 'GetOutline' , null ) ;
}
} , {
key : "getPermissions" ,
value : function getPermissions ( ) {
return this . messageHandler . sendWithPromise ( 'GetPermissions' , null ) ;
}
} , {
key : "getMetadata" ,
value : function getMetadata ( ) {
var _this14 = this ;
return this . messageHandler . sendWithPromise ( 'GetMetadata' , null ) . then ( function ( results ) {
return {
info : results [ 0 ] ,
metadata : results [ 1 ] ? new _metadata . Metadata ( results [ 1 ] ) : null ,
contentDispositionFilename : _this14 . _fullReader ? _this14 . _fullReader . filename : null
} ;
} ) ;
}
} , {
key : "getStats" ,
value : function getStats ( ) {
return this . messageHandler . sendWithPromise ( 'GetStats' , null ) ;
}
} , {
key : "startCleanup" ,
value : function startCleanup ( ) {
var _this15 = this ;
this . messageHandler . sendWithPromise ( 'Cleanup' , null ) . then ( function ( ) {
for ( var i = 0 , ii = _this15 . pageCache . length ; i < ii ; i ++ ) {
var page = _this15 . pageCache [ i ] ;
if ( page ) {
page . cleanup ( ) ;
}
}
_this15 . commonObjs . clear ( ) ;
_this15 . fontLoader . clear ( ) ;
} ) ;
}
} , {
key : "loadingParams" ,
get : function get ( ) {
var params = this . _params ;
return ( 0 , _util . shadow ) ( this , 'loadingParams' , {
disableAutoFetch : params . disableAutoFetch ,
disableCreateObjectURL : params . disableCreateObjectURL ,
disableFontFace : params . disableFontFace ,
nativeImageDecoderSupport : params . nativeImageDecoderSupport
} ) ;
}
} ] ) ;
return WorkerTransport ;
} ( ) ;
var PDFObjects =
/*#__PURE__*/
function ( ) {
function PDFObjects ( ) {
_classCallCheck ( this , PDFObjects ) ;
this . _objs = Object . create ( null ) ;
}
_createClass ( PDFObjects , [ {
key : "_ensureObj" ,
value : function _ensureObj ( objId ) {
if ( this . _objs [ objId ] ) {
return this . _objs [ objId ] ;
}
return this . _objs [ objId ] = {
capability : ( 0 , _util . createPromiseCapability ) ( ) ,
data : null ,
resolved : false
} ;
}
} , {
key : "get" ,
value : function get ( objId ) {
var callback = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : null ;
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 " . concat ( objId , "." ) ) ;
}
return obj . data ;
}
} , {
key : "has" ,
value : function has ( objId ) {
var obj = this . _objs [ objId ] ;
return obj ? obj . resolved : false ;
}
} , {
key : "resolve" ,
value : function resolve ( objId , data ) {
var obj = this . _ensureObj ( objId ) ;
obj . resolved = true ;
obj . data = data ;
obj . capability . resolve ( data ) ;
}
} , {
key : "clear" ,
value : function clear ( ) {
this . _objs = Object . create ( null ) ;
}
} ] ) ;
return PDFObjects ;
} ( ) ;
var RenderTask =
/*#__PURE__*/
function ( ) {
function RenderTask ( internalRenderTask ) {
_classCallCheck ( this , RenderTask ) ;
this . _internalRenderTask = internalRenderTask ;
this . onContinue = null ;
}
_createClass ( RenderTask , [ {
key : "cancel" ,
value : function cancel ( ) {
this . _internalRenderTask . cancel ( ) ;
}
} , {
key : "then" ,
value : function then ( onFulfilled , onRejected ) {
( 0 , _util . deprecated ) ( 'RenderTask.then method, use the `promise` getter instead.' ) ;
return this . promise . then . apply ( this . promise , arguments ) ;
}
} , {
key : "promise" ,
get : function get ( ) {
return this . _internalRenderTask . capability . promise ;
}
} ] ) ;
return RenderTask ;
} ( ) ;
var InternalRenderTask = function InternalRenderTaskClosure ( ) {
var canvasInRendering = new WeakSet ( ) ;
var InternalRenderTask =
/*#__PURE__*/
function ( ) {
function InternalRenderTask ( _ref11 ) {
var callback = _ref11 . callback ,
params = _ref11 . params ,
objs = _ref11 . objs ,
commonObjs = _ref11 . commonObjs ,
operatorList = _ref11 . operatorList ,
pageNumber = _ref11 . pageNumber ,
canvasFactory = _ref11 . canvasFactory ,
webGLContext = _ref11 . webGLContext ,
_ref11$useRequestAnim = _ref11 . useRequestAnimationFrame ,
useRequestAnimationFrame = _ref11$useRequestAnim === void 0 ? false : _ref11$useRequestAnim ,
_ref11$pdfBug = _ref11 . pdfBug ,
pdfBug = _ref11$pdfBug === void 0 ? false : _ref11$pdfBug ;
_classCallCheck ( this , InternalRenderTask ) ;
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 . webGLContext = webGLContext ;
this . _pdfBug = pdfBug ;
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 . _continueBound = this . _continue . bind ( this ) ;
this . _scheduleNextBound = this . _scheduleNext . bind ( this ) ;
this . _nextBound = this . _next . bind ( this ) ;
this . _canvas = params . canvasContext . canvas ;
}
_createClass ( InternalRenderTask , [ {
key : "initializeGraphics" ,
value : function initializeGraphics ( ) {
var transparency = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : false ;
if ( this . cancelled ) {
return ;
}
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 . add ( this . _canvas ) ;
}
if ( this . _pdfBug && _global _scope . default . StepperManager && _global _scope . default . StepperManager . enabled ) {
this . stepper = _global _scope . default . StepperManager . create ( this . pageNumber - 1 ) ;
this . stepper . init ( this . operatorList ) ;
this . stepper . nextBreakPoint = this . stepper . getNextBreakPoint ( ) ;
}
var _this$params = this . params ,
canvasContext = _this$params . canvasContext ,
viewport = _this$params . viewport ,
transform = _this$params . transform ,
imageLayer = _this$params . imageLayer ,
background = _this$params . background ;
this . gfx = new _canvas . CanvasGraphics ( canvasContext , this . commonObjs , this . objs , this . canvasFactory , this . webGLContext , imageLayer ) ;
this . gfx . beginDrawing ( {
transform : transform ,
viewport : viewport ,
transparency : transparency ,
background : background
} ) ;
this . operatorListIdx = 0 ;
this . graphicsReady = true ;
if ( this . graphicsReadyCallback ) {
this . graphicsReadyCallback ( ) ;
}
}
} , {
key : "cancel" ,
value : function cancel ( ) {
var error = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : null ;
this . running = false ;
this . cancelled = true ;
if ( this . gfx ) {
this . gfx . endDrawing ( ) ;
}
if ( this . _canvas ) {
canvasInRendering . delete ( this . _canvas ) ;
}
this . callback ( error || new _dom _utils . RenderingCancelledException ( "Rendering cancelled, page " . concat ( this . pageNumber ) , 'canvas' ) ) ;
}
} , {
key : "operatorListChanged" ,
value : function 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 ( ) ;
}
} , {
key : "_continue" ,
value : function _continue ( ) {
this . running = true ;
if ( this . cancelled ) {
return ;
}
if ( this . task . onContinue ) {
this . task . onContinue ( this . _scheduleNextBound ) ;
} else {
this . _scheduleNext ( ) ;
}
}
} , {
key : "_scheduleNext" ,
value : function _scheduleNext ( ) {
var _this16 = this ;
if ( this . _useRequestAnimationFrame ) {
window . requestAnimationFrame ( function ( ) {
_this16 . _nextBound ( ) . catch ( _this16 . cancel . bind ( _this16 ) ) ;
} ) ;
} else {
Promise . resolve ( ) . then ( this . _nextBound ) . catch ( this . cancel . bind ( this ) ) ;
}
}
} , {
key : "_next" ,
value : function ( ) {
var _next2 = _asyncToGenerator (
/*#__PURE__*/
_regenerator . default . mark ( function _callee ( ) {
return _regenerator . default . wrap ( function _callee$ ( _context ) {
while ( 1 ) {
switch ( _context . prev = _context . next ) {
case 0 :
if ( ! this . cancelled ) {
_context . next = 2 ;
break ;
}
return _context . abrupt ( "return" ) ;
case 2 :
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 ( ) ;
}
}
case 4 :
case "end" :
return _context . stop ( ) ;
}
}
} , _callee , this ) ;
} ) ) ;
function _next ( ) {
return _next2 . apply ( this , arguments ) ;
}
return _next ;
} ( )
} ] ) ;
return InternalRenderTask ;
} ( ) ;
return InternalRenderTask ;
} ( ) ;
var version = '2.1.266' ;
exports . version = version ;
var build = '81f5835c' ;
exports . build = build ;