viewer.js 258 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281
  1. (function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports;}
  2. var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports;}
  3. __webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{enumerable:true,get:getter});}};__webpack_require__.r=function(exports){if(typeof Symbol!=='undefined'&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});}
  4. Object.defineProperty(exports,'__esModule',{value:true});};__webpack_require__.t=function(value,mode){if(mode&1)value=__webpack_require__(value);if(mode&8)return value;if((mode&4)&&typeof value==='object'&&value&&value.__esModule)return value;var ns=Object.create(null);__webpack_require__.r(ns);Object.defineProperty(ns,'default',{enumerable:true,value:value});if(mode&2&&typeof value!='string')for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));return ns;};__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;};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=0);})
  5. ([(function(module,exports,__webpack_require__){"use strict";;let pdfjsWebApp,pdfjsWebAppOptions;{pdfjsWebApp=__webpack_require__(1);pdfjsWebAppOptions=__webpack_require__(3);};{__webpack_require__(33);};{__webpack_require__(38);}
  6. 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"),percentage:document.getElementById("percentage"),},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"),scrollVerticalButton:document.getElementById("scrollVertical"),scrollHorizontalButton:document.getElementById("scrollHorizontal"),scrollWrappedButton:document.getElementById("scrollWrapped"),spreadNoneButton:document.getElementById("spreadNone"),spreadOddButton:document.getElementById("spreadOdd"),spreadEvenButton:document.getElementById("spreadEven"),documentPropertiesButton:document.getElementById("documentProperties")},fullscreen:{contextFirstPage:document.getElementById("contextFirstPage"),contextLastPage:document.getElementById("contextLastPage"),contextPageRotateCw:document.getElementById("contextPageRotateCw"),contextPageRotateCcw:document.getElementById("contextPageRotateCcw")},sidebar:{outerContainer:document.getElementById("outerContainer"),viewerContainer:document.getElementById("viewerContainer"),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")},sidebarResizer:{outerContainer:document.getElementById("outerContainer"),resizer:document.getElementById("sidebarResizer")},findBar:{bar:document.getElementById("findbar"),toggleButton:document.getElementById("viewFind"),findField:document.getElementById("findInput"),highlightAllCheckbox:document.getElementById("findHighlightAll"),caseSensitiveCheckbox:document.getElementById("findMatchCase"),entireWordCheckbox:document.getElementById("findEntireWord"),findMsg:document.getElementById("findMsg"),findResultsCount:document.getElementById("findResultsCount"),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"),pageSize:document.getElementById("pageSizeField"),linearized:document.getElementById("linearizedField")}},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"};}
  7. function webViewerLoad(){const config=getViewerConfiguration();window.PDFViewerApplication=pdfjsWebApp.PDFViewerApplication;window.PDFViewerApplicationOptions=pdfjsWebAppOptions.AppOptions;const event=document.createEvent("CustomEvent");event.initCustomEvent("webviewerloaded",true,true,{});document.dispatchEvent(event);pdfjsWebApp.PDFViewerApplication.run(config);}
  8. if(document.readyState==="interactive"||document.readyState==="complete"){webViewerLoad();}else{document.addEventListener("DOMContentLoaded",webViewerLoad,true);}}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFPrintServiceFactory=exports.DefaultExternalServices=exports.PDFViewerApplication=void 0;var _ui_utils=__webpack_require__(2);var _app_options=__webpack_require__(3);var _pdfjsLib=__webpack_require__(4);var _pdf_cursor_tools=__webpack_require__(6);var _pdf_rendering_queue=__webpack_require__(8);var _pdf_sidebar=__webpack_require__(9);var _overlay_manager=__webpack_require__(10);var _password_prompt=__webpack_require__(11);var _pdf_attachment_viewer=__webpack_require__(12);var _pdf_document_properties=__webpack_require__(13);var _pdf_find_bar=__webpack_require__(14);var _pdf_find_controller=__webpack_require__(15);var _pdf_history=__webpack_require__(17);var _pdf_link_service=__webpack_require__(18);var _pdf_outline_viewer=__webpack_require__(19);var _pdf_presentation_mode=__webpack_require__(20);var _pdf_sidebar_resizer=__webpack_require__(21);var _pdf_thumbnail_viewer=__webpack_require__(22);var _pdf_viewer=__webpack_require__(24);var _secondary_toolbar=__webpack_require__(29);var _toolbar=__webpack_require__(31);var _view_history=__webpack_require__(32);const DEFAULT_SCALE_DELTA=1.1;const DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT=5000;const FORCE_PAGES_LOADED_TIMEOUT=10000;const WHEEL_ZOOM_DISABLED_TIMEOUT=1000;const ViewOnLoad={UNKNOWN:-1,PREVIOUS:0,INITIAL:1};class DefaultExternalServices{constructor(){throw new Error("Cannot initialize DefaultExternalServices.");}
  9. static updateFindControlState(data){}
  10. static updateFindMatchesCount(data){}
  11. static initPassiveLoading(callbacks){}
  12. static fallback(data,callback){}
  13. static reportTelemetry(data){}
  14. static createDownloadManager(options){throw new Error("Not implemented: createDownloadManager");}
  15. static createPreferences(){throw new Error("Not implemented: createPreferences");}
  16. static createL10n(options){throw new Error("Not implemented: createL10n");}
  17. static get supportsIntegratedFind(){return(0,_pdfjsLib.shadow)(this,"supportsIntegratedFind",false);}
  18. static get supportsDocumentFonts(){return(0,_pdfjsLib.shadow)(this,"supportsDocumentFonts",true);}
  19. static get supportedMouseWheelZoomModifierKeys(){return(0,_pdfjsLib.shadow)(this,"supportedMouseWheelZoomModifierKeys",{ctrlKey:true,metaKey:true});}}
  20. exports.DefaultExternalServices=DefaultExternalServices;const PDFViewerApplication={initialBookmark:document.location.hash.substring(1),_initializedCapability:(0,_pdfjsLib.createPromiseCapability)(),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,pdfSidebarResizer: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,isViewerEmbedded:window.parent!==window,url:"",baseUrl:"",externalServices:DefaultExternalServices,_boundEvents:{},contentDispositionFilename:null,async initialize(appConfig){this.preferences=this.externalServices.createPreferences();this.appConfig=appConfig;await this._readPreferences();await this._parseHashParameters();await this._initializeL10n();if(this.isViewerEmbedded&&_app_options.AppOptions.get("externalLinkTarget")===_pdfjsLib.LinkTarget.NONE){_app_options.AppOptions.set("externalLinkTarget",_pdfjsLib.LinkTarget.TOP);}
  21. await this._initializeViewerComponents();this.bindEvents();this.bindWindowEvents();const appContainer=appConfig.appContainer||document.documentElement;this.l10n.translate(appContainer).then(()=>{this.eventBus.dispatch("localized",{source:this});});this._initializedCapability.resolve();},async _readPreferences(){if(_app_options.AppOptions.get("disablePreferences")===true){return;}
  22. try{const prefs=await this.preferences.getAll();for(const name in prefs){_app_options.AppOptions.set(name,prefs[name]);}}catch(reason){console.error(`_readPreferences: "${reason.message}".`);}},async _parseHashParameters(){if(!_app_options.AppOptions.get("pdfBugEnabled")){return undefined;}
  23. const hash=document.location.hash.substring(1);if(!hash){return undefined;}
  24. const hashParams=(0,_ui_utils.parseQueryString)(hash),waitOn=[];if("disableworker"in hashParams&&hashParams["disableworker"]==="true"){waitOn.push(loadFakeWorker());}
  25. if("disablerange"in hashParams){_app_options.AppOptions.set("disableRange",hashParams["disablerange"]==="true");}
  26. if("disablestream"in hashParams){_app_options.AppOptions.set("disableStream",hashParams["disablestream"]==="true");}
  27. if("disableautofetch"in hashParams){_app_options.AppOptions.set("disableAutoFetch",hashParams["disableautofetch"]==="true");}
  28. if("disablefontface"in hashParams){_app_options.AppOptions.set("disableFontFace",hashParams["disablefontface"]==="true");}
  29. if("disablehistory"in hashParams){_app_options.AppOptions.set("disableHistory",hashParams["disablehistory"]==="true");}
  30. if("webgl"in hashParams){_app_options.AppOptions.set("enableWebGL",hashParams["webgl"]==="true");}
  31. if("verbosity"in hashParams){_app_options.AppOptions.set("verbosity",hashParams["verbosity"]|0);}
  32. if("textlayer"in hashParams){switch(hashParams["textlayer"]){case"off":_app_options.AppOptions.set("textLayerMode",_ui_utils.TextLayerMode.DISABLE);break;case"visible":case"shadow":case"hover":const viewer=this.appConfig.viewerContainer;viewer.classList.add("textLayer-"+hashParams["textlayer"]);break;}}
  33. if("pdfbug"in hashParams){_app_options.AppOptions.set("pdfBug",true);const enabled=hashParams["pdfbug"].split(",");waitOn.push(loadAndEnablePDFBug(enabled));}
  34. if("locale"in hashParams){_app_options.AppOptions.set("locale",hashParams["locale"]);}
  35. return Promise.all(waitOn).catch(reason=>{console.error(`_parseHashParameters: "${reason.message}".`);});},async _initializeL10n(){this.l10n=this.externalServices.createL10n({locale:_app_options.AppOptions.get("locale")});const dir=await this.l10n.getDirection();document.getElementsByTagName("html")[0].dir=dir;},async _initializeViewerComponents(){const appConfig=this.appConfig;this.overlayManager=new _overlay_manager.OverlayManager();const eventBus=appConfig.eventBus||new _ui_utils.EventBus({dispatchToDOM:_app_options.AppOptions.get("eventBusDispatchToDOM")});this.eventBus=eventBus;const pdfRenderingQueue=new _pdf_rendering_queue.PDFRenderingQueue();pdfRenderingQueue.onIdle=this.cleanup.bind(this);this.pdfRenderingQueue=pdfRenderingQueue;const pdfLinkService=new _pdf_link_service.PDFLinkService({eventBus,externalLinkTarget:_app_options.AppOptions.get("externalLinkTarget"),externalLinkRel:_app_options.AppOptions.get("externalLinkRel"),ignoreDestinationZoom:_app_options.AppOptions.get("ignoreDestinationZoom")});this.pdfLinkService=pdfLinkService;const downloadManager=this.externalServices.createDownloadManager({disableCreateObjectURL:_app_options.AppOptions.get("disableCreateObjectURL")});this.downloadManager=downloadManager;const findController=new _pdf_find_controller.PDFFindController({linkService:pdfLinkService,eventBus});this.findController=findController;const container=appConfig.mainContainer;const viewer=appConfig.viewerContainer;this.pdfViewer=new _pdf_viewer.PDFViewer({container,viewer,eventBus,renderingQueue:pdfRenderingQueue,linkService:pdfLinkService,downloadManager,findController,renderer:_app_options.AppOptions.get("renderer"),enableWebGL:_app_options.AppOptions.get("enableWebGL"),l10n:this.l10n,textLayerMode:_app_options.AppOptions.get("textLayerMode"),imageResourcesPath:_app_options.AppOptions.get("imageResourcesPath"),renderInteractiveForms:_app_options.AppOptions.get("renderInteractiveForms"),enablePrintAutoRotate:_app_options.AppOptions.get("enablePrintAutoRotate"),useOnlyCssZoom:_app_options.AppOptions.get("useOnlyCssZoom"),maxCanvasPixels:_app_options.AppOptions.get("maxCanvasPixels")});pdfRenderingQueue.setViewer(this.pdfViewer);pdfLinkService.setViewer(this.pdfViewer);this.pdfThumbnailViewer=new _pdf_thumbnail_viewer.PDFThumbnailViewer({container:appConfig.sidebar.thumbnailView,renderingQueue:pdfRenderingQueue,linkService:pdfLinkService,l10n:this.l10n});pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);this.pdfHistory=new _pdf_history.PDFHistory({linkService:pdfLinkService,eventBus});pdfLinkService.setHistory(this.pdfHistory);if(!this.supportsIntegratedFind){this.findBar=new _pdf_find_bar.PDFFindBar(appConfig.findBar,eventBus,this.l10n);}
  36. this.pdfDocumentProperties=new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties,this.overlayManager,eventBus,this.l10n);this.pdfCursorTools=new _pdf_cursor_tools.PDFCursorTools({container,eventBus,cursorToolOnLoad:_app_options.AppOptions.get("cursorToolOnLoad")});this.toolbar=new _toolbar.Toolbar(appConfig.toolbar,eventBus,this.l10n);this.secondaryToolbar=new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar,container,eventBus);if(this.supportsFullscreen){this.pdfPresentationMode=new _pdf_presentation_mode.PDFPresentationMode({container,pdfViewer:this.pdfViewer,eventBus,contextMenuItems:appConfig.fullscreen});}
  37. this.passwordPrompt=new _password_prompt.PasswordPrompt(appConfig.passwordOverlay,this.overlayManager,this.l10n);this.pdfOutlineViewer=new _pdf_outline_viewer.PDFOutlineViewer({container:appConfig.sidebar.outlineView,eventBus,linkService:pdfLinkService});this.pdfAttachmentViewer=new _pdf_attachment_viewer.PDFAttachmentViewer({container:appConfig.sidebar.attachmentsView,eventBus,downloadManager});this.pdfSidebar=new _pdf_sidebar.PDFSidebar({elements:appConfig.sidebar,pdfViewer:this.pdfViewer,pdfThumbnailViewer:this.pdfThumbnailViewer,eventBus,l10n:this.l10n});this.pdfSidebar.onToggled=this.forceRendering.bind(this);this.pdfSidebarResizer=new _pdf_sidebar_resizer.PDFSidebarResizer(appConfig.sidebarResizer,eventBus,this.l10n);},run(config){this.initialize(config).then(webViewerInitialized);},get initialized(){return this._initializedCapability.settled;},get initializedPromise(){return this._initializedCapability.promise;},zoomIn(ticks){if(this.pdfViewer.isInPresentationMode){return;}
  38. let 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(ticks){if(this.pdfViewer.isInPresentationMode){return;}
  39. let 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;},zoomReset(){if(this.pdfViewer.isInPresentationMode){return;}
  40. this.pdfViewer.currentScaleValue=_ui_utils.DEFAULT_SCALE_VALUE;},get pagesCount(){return this.pdfDocument?this.pdfDocument.numPages:0;},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(){let support;const 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;}
  41. return(0,_pdfjsLib.shadow)(this,"supportsFullscreen",support);},get supportsIntegratedFind(){return this.externalServices.supportsIntegratedFind;},get supportsDocumentFonts(){return this.externalServices.supportsDocumentFonts;},get loadingBar(){const bar=new _ui_utils.ProgressBar("#loadingBar");return(0,_pdfjsLib.shadow)(this,"loadingBar",bar);},get supportedMouseWheelZoomModifierKeys(){return this.externalServices.supportedMouseWheelZoomModifierKeys;},initPassiveLoading(){throw new Error("Not implemented: initPassiveLoading");},setTitleUsingUrl(url=""){this.url=url;this.baseUrl=url.split("#")[0];const paramIndex=url.indexOf('fileName=');if(paramIndex===-1){return'';}
  42. let valueIndex=url.indexOf('=',paramIndex)+1;let ampIndex=url.indexOf('&',valueIndex);if(ampIndex===-1){ampIndex=url.length;}
  43. const paramValue=url.slice(valueIndex,ampIndex);const title=decodeURIComponent(paramValue.replace(/\+/g,' '));this.setTitle(title);},setTitle(title){if(this.isViewerEmbedded){return;}
  44. document.title=title;},async close(){const errorWrapper=this.appConfig.errorWrapper.container;errorWrapper.setAttribute("hidden","true");if(!this.pdfLoadingTask){return undefined;}
  45. const 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);this.pdfDocumentProperties.setDocument(null);}
  46. this.store=null;this.isInitialViewSet=false;this.downloadComplete=false;this.url="";this.baseUrl="";this.contentDispositionFilename=null;this.pdfSidebar.reset();this.pdfOutlineViewer.reset();this.pdfAttachmentViewer.reset();if(this.pdfHistory){this.pdfHistory.reset();}
  47. if(this.findBar){this.findBar.reset();}
  48. this.toolbar.reset();this.secondaryToolbar.reset();if(typeof PDFBug!=="undefined"){PDFBug.cleanup();}
  49. return promise;},async open(file,args){if(this.pdfLoadingTask){await this.close();}
  50. const workerParameters=_app_options.AppOptions.getAll(_app_options.OptionKind.WORKER);for(const key in workerParameters){_pdfjsLib.GlobalWorkerOptions[key]=workerParameters[key];}
  51. const parameters=Object.create(null);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;}
  52. const apiParameters=_app_options.AppOptions.getAll(_app_options.OptionKind.API);for(const key in apiParameters){let value=apiParameters[key];if(key==="docBaseUrl"&&!value){}
  53. parameters[key]=value;}
  54. if(args){for(const key in args){const value=args[key];if(key==="length"){this.pdfDocumentProperties.setFileSize(value);}
  55. parameters[key]=value;}}
  56. const loadingTask=(0,_pdfjsLib.getDocument)(parameters);this.pdfLoadingTask=loadingTask;loadingTask.onPassword=(updateCallback,reason)=>{this.pdfLinkService.externalLinkEnabled=false;this.passwordPrompt.setUpdateCallback(updateCallback,reason);this.passwordPrompt.open();};loadingTask.onProgress=({loaded,total})=>{this.progress(loaded/total);};loadingTask.onUnsupportedFeature=this.fallback.bind(this);return loadingTask.promise.then(pdfDocument=>{this.load(pdfDocument);},exception=>{if(loadingTask!==this.pdfLoadingTask){return undefined;}
  57. const message=exception&&exception.message;let loadingErrorMessage;if(exception instanceof _pdfjsLib.InvalidPDFException){loadingErrorMessage=this.l10n.get("invalid_file_error",null,"Invalid or corrupted PDF file.");}else if(exception instanceof _pdfjsLib.MissingPDFException){loadingErrorMessage=this.l10n.get("missing_file_error",null,"Missing PDF file.");}else if(exception instanceof _pdfjsLib.UnexpectedResponseException){loadingErrorMessage=this.l10n.get("unexpected_response_error",null,"Unexpected server response.");}else{loadingErrorMessage=this.l10n.get("loading_error",null,"An error occurred while loading the PDF.");}
  58. return loadingErrorMessage.then(msg=>{this.error(msg,{message});throw new Error(msg);});});},download(){function downloadByUrl(){downloadManager.downloadUrl(url,filename);}
  59. const url=this.baseUrl;const filename=this.contentDispositionFilename||(0,_ui_utils.getPDFFileNameFromURL)(this.url);const downloadManager=this.downloadManager;downloadManager.onerror=err=>{this.error(`PDF failed to download: ${err}`);};if(!this.pdfDocument||!this.downloadComplete){downloadByUrl();return;}
  60. this.pdfDocument.getData().then(function(data){const blob=new Blob([data],{type:"application/pdf"});downloadManager.download(blob,url,filename);}).catch(downloadByUrl);},fallback(featureId){if(this.fellback){return;}
  61. this.fellback=true;this.externalServices.fallback({featureId,url:this.baseUrl},function response(download){if(!download){return;}
  62. PDFViewerApplication.download();});},error(message,moreInfo){const 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}}"));}
  63. if(moreInfo.lineNumber){moreInfoText.push(this.l10n.get("error_line",{line:moreInfo.lineNumber},"Line: {{line}}"));}}}
  64. const errorWrapperConfig=this.appConfig.errorWrapper;const errorWrapper=errorWrapperConfig.container;errorWrapper.removeAttribute("hidden");const errorMessage=errorWrapperConfig.errorMessage;errorMessage.textContent=message;const closeButton=errorWrapperConfig.closeButton;closeButton.onclick=function(){errorWrapper.setAttribute("hidden","true");};const errorMoreInfo=errorWrapperConfig.errorMoreInfo;const moreInfoButton=errorWrapperConfig.moreInfoButton;const 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(parts=>{errorMoreInfo.value=parts.join("\n");});},progress(level){if(this.downloadComplete){return;}
  65. const percent=Math.round(level*100);if(percent>this.loadingBar.percent||isNaN(percent)){this.loadingBar.percent=percent;const disableAutoFetch=this.pdfDocument?this.pdfDocument.loadingParams["disableAutoFetch"]:_app_options.AppOptions.get("disableAutoFetch");if(disableAutoFetch&&percent){if(this.disableAutoFetchLoadingBarTimeout){clearTimeout(this.disableAutoFetchLoadingBarTimeout);this.disableAutoFetchLoadingBarTimeout=null;}
  66. this.loadingBar.show();this.disableAutoFetchLoadingBarTimeout=setTimeout(()=>{this.loadingBar.hide();this.disableAutoFetchLoadingBarTimeout=null;},DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT);}}},load(pdfDocument){this.pdfDocument=pdfDocument;pdfDocument.getDownloadInfo().then(()=>{this.downloadComplete=true;this.loadingBar.hide();firstPagePromise.then(()=>{this.eventBus.dispatch("documentloaded",{source:this});});});const pageLayoutPromise=pdfDocument.getPageLayout().catch(function(){});const pageModePromise=pdfDocument.getPageMode().catch(function(){});const openActionPromise=pdfDocument.getOpenAction().catch(function(){});this.toolbar.setPagesCount(pdfDocument.numPages,false);this.secondaryToolbar.setPagesCount(pdfDocument.numPages);const store=this.store=new _view_history.ViewHistory(pdfDocument.fingerprint);let baseDocumentUrl;baseDocumentUrl=null;this.pdfLinkService.setDocument(pdfDocument,baseDocumentUrl);this.pdfDocumentProperties.setDocument(pdfDocument,this.url);const pdfViewer=this.pdfViewer;pdfViewer.setDocument(pdfDocument);const{firstPagePromise,onePageRendered,pagesPromise}=pdfViewer;const pdfThumbnailViewer=this.pdfThumbnailViewer;pdfThumbnailViewer.setDocument(pdfDocument);firstPagePromise.then(pdfPage=>{this.loadingBar.setWidth(this.appConfig.viewerContainer);const storePromise=store.getMultiple({page:null,zoom:_ui_utils.DEFAULT_SCALE_VALUE,scrollLeft:"0",scrollTop:"0",rotation:null,sidebarView:_pdf_sidebar.SidebarView.UNKNOWN,scrollMode:_ui_utils.ScrollMode.UNKNOWN,spreadMode:_ui_utils.SpreadMode.UNKNOWN}).catch(()=>{});Promise.all([_ui_utils.animationStarted,storePromise,pageLayoutPromise,pageModePromise,openActionPromise]).then(async([timeStamp,values={},pageLayout,pageMode,openAction])=>{const viewOnLoad=_app_options.AppOptions.get("viewOnLoad");this._initializePdfHistory({fingerprint:pdfDocument.fingerprint,viewOnLoad,initialDest:openAction&&openAction.dest});const initialBookmark=this.initialBookmark;const zoom=_app_options.AppOptions.get("defaultZoomValue");let hash=zoom?`zoom=${zoom}`:null;let rotation=null;let sidebarView=_app_options.AppOptions.get("sidebarViewOnLoad");let scrollMode=_app_options.AppOptions.get("scrollModeOnLoad");let spreadMode=_app_options.AppOptions.get("spreadModeOnLoad");if(values.page&&viewOnLoad!==ViewOnLoad.INITIAL){hash=`page=${values.page}&zoom=${zoom || values.zoom},`+`${values.scrollLeft},${values.scrollTop}`;rotation=parseInt(values.rotation,10);if(sidebarView===_pdf_sidebar.SidebarView.UNKNOWN){sidebarView=values.sidebarView|0;}
  67. if(scrollMode===_ui_utils.ScrollMode.UNKNOWN){scrollMode=values.scrollMode|0;}
  68. if(spreadMode===_ui_utils.SpreadMode.UNKNOWN){spreadMode=values.spreadMode|0;}}
  69. if(pageMode&&sidebarView===_pdf_sidebar.SidebarView.UNKNOWN){sidebarView=apiPageModeToSidebarView(pageMode);}
  70. if(pageLayout&&spreadMode===_ui_utils.SpreadMode.UNKNOWN){spreadMode=apiPageLayoutToSpreadMode(pageLayout);}
  71. this.setInitialView(hash,{rotation,sidebarView,scrollMode,spreadMode});this.eventBus.dispatch("documentinit",{source:this});if(!this.isViewerEmbedded){pdfViewer.focus();}
  72. await Promise.race([pagesPromise,new Promise(resolve=>{setTimeout(resolve,FORCE_PAGES_LOADED_TIMEOUT);})]);if(!initialBookmark&&!hash){return;}
  73. if(pdfViewer.hasEqualPageSizes){return;}
  74. this.initialBookmark=initialBookmark;pdfViewer.currentScaleValue=pdfViewer.currentScaleValue;this.setInitialView(hash);}).catch(()=>{this.setInitialView();}).then(function(){pdfViewer.update();});});pdfDocument.getPageLabels().then(labels=>{if(!labels||_app_options.AppOptions.get("disablePageLabels")){return;}
  75. const numLabels=labels.length;if(numLabels!==this.pagesCount){console.error("The number of Page Labels does not match "+"the number of pages in the document.");return;}
  76. let i=0;while(i<numLabels&&labels[i]===(i+1).toString()){i++;}
  77. if(i===numLabels){return;}
  78. pdfViewer.setPageLabels(labels);pdfThumbnailViewer.setPageLabels(labels);this.toolbar.setPagesCount(pdfDocument.numPages,true);this.toolbar.setPageNumber(pdfViewer.currentPageNumber,pdfViewer.currentPageLabel);});pagesPromise.then(async()=>{const[openAction,javaScript]=await Promise.all([openActionPromise,pdfDocument.getJavaScript()]);let triggerAutoPrint=false;if(openAction&&openAction.action==="Print"){triggerAutoPrint=true;}
  79. if(javaScript){javaScript.some(js=>{if(!js){return false;}
  80. console.warn("Warning: JavaScript is not supported");this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript);return true;});if(!triggerAutoPrint){for(const js of javaScript){if(js&&_ui_utils.AutoPrintRegExp.test(js)){triggerAutoPrint=true;break;}}}}
  81. if(!this.supportsPrinting){return;}
  82. if(triggerAutoPrint){setTimeout(function(){window.print();});}});onePageRendered.then(()=>{pdfDocument.getOutline().then(outline=>{this.pdfOutlineViewer.render({outline});});pdfDocument.getAttachments().then(attachments=>{this.pdfAttachmentViewer.render({attachments});});});pdfDocument.getMetadata().then(({info,metadata,contentDispositionFilename})=>{this.documentInfo=info;this.metadata=metadata;this.contentDispositionFilename=contentDispositionFilename;console.log("PDF "+pdfDocument.fingerprint+" ["+info.PDFFormatVersion+" "+(info.Producer||"-").trim()+" / "+(info.Creator||"-").trim()+"]"+" (PDF.js: "+(_pdfjsLib.version||"-")+(_app_options.AppOptions.get("enableWebGL")?" [WebGL]":"")+")");let pdfTitle;const infoTitle=info&&info["Title"];if(infoTitle){pdfTitle=infoTitle;}
  83. const metadataTitle=metadata&&metadata.get("dc:title");if(metadataTitle){if(metadataTitle!=="Untitled"&&!/[\uFFF0-\uFFFF]/g.test(metadataTitle)){pdfTitle=metadataTitle;}}
  84. if(pdfTitle){this.setTitle(`${pdfTitle} - ${contentDispositionFilename || document.title}`);}else if(contentDispositionFilename){this.setTitle(contentDispositionFilename);}
  85. if(info.IsAcroFormPresent){console.warn("Warning: AcroForm/XFA is not supported");this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);}
  86. let versionId="other";const KNOWN_VERSIONS=["1.0","1.1","1.2","1.3","1.4","1.5","1.6","1.7","1.8","1.9","2.0","2.1","2.2","2.3"];if(KNOWN_VERSIONS.includes(info.PDFFormatVersion)){versionId=`v${info.PDFFormatVersion.replace(".", "_")}`;}
  87. let generatorId="other";const KNOWN_GENERATORS=["acrobat distiller","acrobat pdfwriter","adobe livecycle","adobe pdf library","adobe photoshop","ghostscript","tcpdf","cairo","dvipdfm","dvips","pdftex","pdfkit","itext","prince","quarkxpress","mac os x","microsoft","openoffice","oracle","luradocument","pdf-xchange","antenna house","aspose.cells","fpdf"];if(info.Producer){const producer=info.Producer.toLowerCase();KNOWN_GENERATORS.some(function(generator){if(!producer.includes(generator)){return false;}
  88. generatorId=generator.replace(/[ .\-]/g,"_");return true;});}
  89. let formType=null;if(info.IsAcroFormPresent){formType=info.IsXFAPresent?"xfa":"acroform";}
  90. this.externalServices.reportTelemetry({type:"documentInfo",version:versionId,generator:generatorId,formType});});},_initializePdfHistory({fingerprint,viewOnLoad,initialDest=null}){if(_app_options.AppOptions.get("disableHistory")||this.isViewerEmbedded){return;}
  91. this.pdfHistory.initialize({fingerprint,resetHistory:viewOnLoad===ViewOnLoad.INITIAL,updateUrl:_app_options.AppOptions.get("historyUpdateUrl")});if(this.pdfHistory.initialBookmark){this.initialBookmark=this.pdfHistory.initialBookmark;this.initialRotation=this.pdfHistory.initialRotation;}
  92. if(initialDest&&!this.initialBookmark&&viewOnLoad===ViewOnLoad.UNKNOWN){this.initialBookmark=JSON.stringify(initialDest);this.pdfHistory.push({explicitDest:initialDest,pageNumber:null});}},setInitialView(storedHash,{rotation,sidebarView,scrollMode,spreadMode}={}){const setRotation=angle=>{if((0,_ui_utils.isValidRotation)(angle)){this.pdfViewer.pagesRotation=angle;}};const setViewerModes=(scroll,spread)=>{if((0,_ui_utils.isValidScrollMode)(scroll)){this.pdfViewer.scrollMode=scroll;}
  93. if((0,_ui_utils.isValidSpreadMode)(spread)){this.pdfViewer.spreadMode=spread;}};this.isInitialViewSet=true;this.pdfSidebar.setInitialView(sidebarView);setViewerModes(scrollMode,spreadMode);if(this.initialBookmark){setRotation(this.initialRotation);delete this.initialRotation;this.pdfLinkService.setHash(this.initialBookmark);this.initialBookmark=null;}else if(storedHash){setRotation(rotation);this.pdfLinkService.setHash(storedHash);}
  94. 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(){if(!this.pdfDocument){return;}
  95. this.pdfViewer.cleanup();this.pdfThumbnailViewer.cleanup();if(this.pdfViewer.renderer!==_ui_utils.RendererType.SVG){this.pdfDocument.cleanup();}},forceRendering(){this.pdfRenderingQueue.printing=this.printing;this.pdfRenderingQueue.isThumbnailViewEnabled=this.pdfSidebar.isThumbnailViewVisible;this.pdfRenderingQueue.renderHighestPriority();},beforePrint(){if(this.printService){return;}
  96. if(!this.supportsPrinting){this.l10n.get("printing_not_supported",null,"Warning: Printing is not fully supported by this browser.").then(printMessage=>{this.error(printMessage);});return;}
  97. if(!this.pdfViewer.pageViewsReady){this.l10n.get("printing_not_ready",null,"Warning: The PDF is not fully loaded for printing.").then(notReadyMessage=>{window.alert(notReadyMessage);});return;}
  98. const pagesOverview=this.pdfViewer.getPagesOverview();const printContainer=this.appConfig.printContainer;const printService=PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument,pagesOverview,printContainer,this.l10n);this.printService=printService;this.forceRendering();printService.layout();this.externalServices.reportTelemetry({type:"print"});},afterPrint(){if(this.printService){this.printService.destroy();this.printService=null;}
  99. this.forceRendering();},rotatePages(delta){if(!this.pdfDocument){return;}
  100. const newRotation=(this.pdfViewer.pagesRotation+360+delta)%360;this.pdfViewer.pagesRotation=newRotation;},requestPresentationMode(){if(!this.pdfPresentationMode){return;}
  101. this.pdfPresentationMode.request();},bindEvents(){const{eventBus,_boundEvents}=this;_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("updateviewarea",webViewerUpdateViewarea);eventBus._on("pagechanging",webViewerPageChanging);eventBus._on("scalechanging",webViewerScaleChanging);eventBus._on("rotationchanging",webViewerRotationChanging);eventBus._on("sidebarviewchanged",webViewerSidebarViewChanged);eventBus._on("pagemode",webViewerPageMode);eventBus._on("namedaction",webViewerNamedAction);eventBus._on("presentationmodechanged",webViewerPresentationModeChanged);eventBus._on("presentationmode",webViewerPresentationMode);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("zoomreset",webViewerZoomReset);eventBus._on("pagenumberchanged",webViewerPageNumberChanged);eventBus._on("scalechanged",webViewerScaleChanged);eventBus._on("rotatecw",webViewerRotateCw);eventBus._on("rotateccw",webViewerRotateCcw);eventBus._on("switchscrollmode",webViewerSwitchScrollMode);eventBus._on("scrollmodechanged",webViewerScrollModeChanged);eventBus._on("switchspreadmode",webViewerSwitchSpreadMode);eventBus._on("spreadmodechanged",webViewerSpreadModeChanged);eventBus._on("documentproperties",webViewerDocumentProperties);eventBus._on("find",webViewerFind);eventBus._on("findfromurlhash",webViewerFindFromUrlHash);eventBus._on("updatefindmatchescount",webViewerUpdateFindMatchesCount);eventBus._on("updatefindcontrolstate",webViewerUpdateFindControlState);eventBus._on("fileinputchange",webViewerFileInputChange);eventBus._on("openfile",webViewerOpenFile);},bindWindowEvents(){const{eventBus,_boundEvents}=this;_boundEvents.windowResize=()=>{eventBus.dispatch("resize",{source:window});};_boundEvents.windowHashChange=()=>{eventBus.dispatch("hashchange",{source:window,hash:document.location.hash.substring(1)});};_boundEvents.windowBeforePrint=()=>{eventBus.dispatch("beforeprint",{source:window});};_boundEvents.windowAfterPrint=()=>{eventBus.dispatch("afterprint",{source:window});};window.addEventListener("visibilitychange",webViewerVisibilityChange);window.addEventListener("wheel",webViewerWheel,{passive:false});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);},unbindEvents(){const{eventBus,_boundEvents}=this;eventBus._off("resize",webViewerResize);eventBus._off("hashchange",webViewerHashchange);eventBus._off("beforeprint",_boundEvents.beforePrint);eventBus._off("afterprint",_boundEvents.afterPrint);eventBus._off("pagerendered",webViewerPageRendered);eventBus._off("updateviewarea",webViewerUpdateViewarea);eventBus._off("pagechanging",webViewerPageChanging);eventBus._off("scalechanging",webViewerScaleChanging);eventBus._off("rotationchanging",webViewerRotationChanging);eventBus._off("sidebarviewchanged",webViewerSidebarViewChanged);eventBus._off("pagemode",webViewerPageMode);eventBus._off("namedaction",webViewerNamedAction);eventBus._off("presentationmodechanged",webViewerPresentationModeChanged);eventBus._off("presentationmode",webViewerPresentationMode);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("zoomreset",webViewerZoomReset);eventBus._off("pagenumberchanged",webViewerPageNumberChanged);eventBus._off("scalechanged",webViewerScaleChanged);eventBus._off("rotatecw",webViewerRotateCw);eventBus._off("rotateccw",webViewerRotateCcw);eventBus._off("switchscrollmode",webViewerSwitchScrollMode);eventBus._off("scrollmodechanged",webViewerScrollModeChanged);eventBus._off("switchspreadmode",webViewerSwitchSpreadMode);eventBus._off("spreadmodechanged",webViewerSpreadModeChanged);eventBus._off("documentproperties",webViewerDocumentProperties);eventBus._off("find",webViewerFind);eventBus._off("findfromurlhash",webViewerFindFromUrlHash);eventBus._off("updatefindmatchescount",webViewerUpdateFindMatchesCount);eventBus._off("updatefindcontrolstate",webViewerUpdateFindControlState);eventBus._off("fileinputchange",webViewerFileInputChange);eventBus._off("openfile",webViewerOpenFile);_boundEvents.beforePrint=null;_boundEvents.afterPrint=null;},unbindWindowEvents(){const{_boundEvents}=this;window.removeEventListener("visibilitychange",webViewerVisibilityChange);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);_boundEvents.windowResize=null;_boundEvents.windowHashChange=null;_boundEvents.windowBeforePrint=null;_boundEvents.windowAfterPrint=null;}};exports.PDFViewerApplication=PDFViewerApplication;let validateFileURL;{const HOSTED_VIEWER_ORIGINS=["null","http://mozilla.github.io","https://mozilla.github.io"];validateFileURL=function(file){if(file===undefined){return;}
  102. try{const viewerOrigin=new URL(window.location.href).origin||"null";if(HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)){return;}
  103. const{origin,protocol}=new URL(file,window.location.href);}catch(ex){const message=ex&&ex.message;PDFViewerApplication.l10n.get("loading_error",null,"An error occurred while loading the PDF.").then(loadingErrorMessage=>{PDFViewerApplication.error(loadingErrorMessage,{message});});throw ex;}};}
  104. async function loadFakeWorker(){if(!_pdfjsLib.GlobalWorkerOptions.workerSrc){_pdfjsLib.GlobalWorkerOptions.workerSrc=_app_options.AppOptions.get("workerSrc");}
  105. return(0,_pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.getWorkerSrc());}
  106. function loadAndEnablePDFBug(enabledTabs){const appConfig=PDFViewerApplication.appConfig;return(0,_pdfjsLib.loadScript)(appConfig.debuggerScriptPath).then(function(){PDFBug.enable(enabledTabs);PDFBug.init({OPS:_pdfjsLib.OPS},appConfig.mainContainer);});}
  107. function webViewerInitialized(){const appConfig=PDFViewerApplication.appConfig;let file;const queryString=document.location.search.substring(1);const params=(0,_ui_utils.parseQueryString)(queryString);file="file"in params?params.file:_app_options.AppOptions.get("defaultUrl");validateFileURL(file);const 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;}
  108. fileInput.addEventListener("change",function(evt){const files=evt.target.files;if(!files||files.length===0){return;}
  109. PDFViewerApplication.eventBus.dispatch("fileinputchange",{source:this,fileInput:evt.target});});appConfig.mainContainer.addEventListener("dragover",function(evt){evt.preventDefault();evt.dataTransfer.dropEffect="move";});appConfig.mainContainer.addEventListener("drop",function(evt){evt.preventDefault();const files=evt.dataTransfer.files;if(!files||files.length===0){return;}
  110. PDFViewerApplication.eventBus.dispatch("fileinputchange",{source:this,fileInput:evt.dataTransfer});});if(!PDFViewerApplication.supportsDocumentFonts){_app_options.AppOptions.set("disableFontFace",true);PDFViewerApplication.l10n.get("web_fonts_disabled",null,"Web fonts are disabled: unable to use embedded PDF fonts.").then(msg=>{console.warn(msg);});}
  111. if(!PDFViewerApplication.supportsPrinting){appConfig.toolbar.print.classList.add("hidden");appConfig.secondaryToolbar.printButton.classList.add("hidden");}
  112. if(!PDFViewerApplication.supportsFullscreen){appConfig.toolbar.presentationModeButton.classList.add("hidden");appConfig.secondaryToolbar.presentationModeButton.classList.add("hidden");}
  113. if(PDFViewerApplication.supportsIntegratedFind){appConfig.toolbar.viewFind.classList.add("hidden");}
  114. appConfig.mainContainer.addEventListener("transitionend",function(evt){if(evt.target===this){PDFViewerApplication.eventBus.dispatch("resize",{source:this});}},true);try{webViewerOpenFileViaURL(file);}catch(reason){PDFViewerApplication.l10n.get("loading_error",null,"An error occurred while loading the PDF.").then(msg=>{PDFViewerApplication.error(msg,reason);});}}
  115. let webViewerOpenFileViaURL;{webViewerOpenFileViaURL=function(file){if(file&&file.lastIndexOf("file:",0)===0){PDFViewerApplication.setTitleUsingUrl(file);const xhr=new XMLHttpRequest();xhr.onload=function(){PDFViewerApplication.open(new Uint8Array(xhr.response));};xhr.open("GET",file);xhr.responseType="arraybuffer";xhr.send();return;}
  116. if(file){PDFViewerApplication.open(file);}};}
  117. function webViewerPageRendered(evt){const pageNumber=evt.pageNumber;const pageIndex=pageNumber-1;const pageView=PDFViewerApplication.pdfViewer.getPageView(pageIndex);if(pageNumber===PDFViewerApplication.page){PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);}
  118. if(!pageView){return;}
  119. if(PDFViewerApplication.pdfSidebar.isThumbnailViewVisible){const thumbnailView=PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageIndex);thumbnailView.setImage(pageView);}
  120. if(typeof Stats!=="undefined"&&Stats.enabled&&pageView.stats){Stats.add(pageNumber,pageView.stats);}
  121. if(pageView.error){PDFViewerApplication.l10n.get("rendering_error",null,"An error occurred while rendering the page.").then(msg=>{PDFViewerApplication.error(msg,pageView.error);});}
  122. PDFViewerApplication.externalServices.reportTelemetry({type:"pageInfo",timestamp:evt.timestamp});PDFViewerApplication.pdfDocument.getStats().then(function(stats){PDFViewerApplication.externalServices.reportTelemetry({type:"documentStats",stats});});}
  123. function webViewerPageMode({mode}){let view;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;}
  124. PDFViewerApplication.pdfSidebar.switchView(view,true);}
  125. function webViewerNamedAction(evt){const action=evt.action;switch(action){case"GoToPage":PDFViewerApplication.appConfig.toolbar.pageNumber.select();break;case"Find":if(!PDFViewerApplication.supportsIntegratedFind){PDFViewerApplication.findBar.toggle();}
  126. break;}}
  127. function webViewerPresentationModeChanged({active,switchInProgress}){let state=_ui_utils.PresentationModeState.NORMAL;if(switchInProgress){state=_ui_utils.PresentationModeState.CHANGING;}else if(active){state=_ui_utils.PresentationModeState.FULLSCREEN;}
  128. PDFViewerApplication.pdfViewer.presentationModeState=state;}
  129. function webViewerSidebarViewChanged(evt){PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled=PDFViewerApplication.pdfSidebar.isThumbnailViewVisible;const store=PDFViewerApplication.store;if(store&&PDFViewerApplication.isInitialViewSet){store.set("sidebarView",evt.view).catch(function(){});}}
  130. function webViewerUpdateViewarea(evt){const location=evt.location,store=PDFViewerApplication.store;if(store&&PDFViewerApplication.isInitialViewSet){store.setMultiple({page:location.pageNumber,zoom:location.scale,scrollLeft:location.left,scrollTop:location.top,rotation:location.rotation}).catch(function(){});}
  131. const href=PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams);PDFViewerApplication.appConfig.toolbar.viewBookmark.href=href;PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href=href;const currentPage=PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page-1);const loading=currentPage.renderingState!==_pdf_rendering_queue.RenderingStates.FINISHED;PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);}
  132. function webViewerScrollModeChanged(evt){const store=PDFViewerApplication.store;if(store&&PDFViewerApplication.isInitialViewSet){store.set("scrollMode",evt.mode).catch(function(){});}}
  133. function webViewerSpreadModeChanged(evt){const store=PDFViewerApplication.store;if(store&&PDFViewerApplication.isInitialViewSet){store.set("spreadMode",evt.mode).catch(function(){});}}
  134. function webViewerResize(){const{pdfDocument,pdfViewer}=PDFViewerApplication;if(!pdfDocument){return;}
  135. const currentScaleValue=pdfViewer.currentScaleValue;if(currentScaleValue==="auto"||currentScaleValue==="page-fit"||currentScaleValue==="page-width"){pdfViewer.currentScaleValue=currentScaleValue;}
  136. pdfViewer.update();}
  137. function webViewerHashchange(evt){const hash=evt.hash;if(!hash){return;}
  138. if(!PDFViewerApplication.isInitialViewSet){PDFViewerApplication.initialBookmark=hash;}else if(!PDFViewerApplication.pdfHistory.popStateInProgress){PDFViewerApplication.pdfLinkService.setHash(hash);}}
  139. let webViewerFileInputChange,webViewerOpenFile;{webViewerFileInputChange=function(evt){if(PDFViewerApplication.pdfViewer&&PDFViewerApplication.pdfViewer.isInPresentationMode){return;}
  140. const file=evt.fileInput.files[0];if(URL.createObjectURL&&!_app_options.AppOptions.get("disableCreateObjectURL")){let url=URL.createObjectURL(file);if(file.name){url={url,originalUrl:file.name};}
  141. PDFViewerApplication.open(url);}else{PDFViewerApplication.setTitleUsingUrl(file.name);const fileReader=new FileReader();fileReader.onload=function webViewerChangeFileReaderOnload(event){const buffer=event.target.result;PDFViewerApplication.open(new Uint8Array(buffer));};fileReader.readAsArrayBuffer(file);}
  142. const 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");};webViewerOpenFile=function(evt){const openFileInputName=PDFViewerApplication.appConfig.openFileInputName;document.getElementById(openFileInputName).click();};}
  143. function webViewerPresentationMode(){PDFViewerApplication.requestPresentationMode();}
  144. function webViewerPrint(){window.print();}
  145. function webViewerDownload(){PDFViewerApplication.download();}
  146. function webViewerFirstPage(){if(PDFViewerApplication.pdfDocument){PDFViewerApplication.page=1;}}
  147. function webViewerLastPage(){if(PDFViewerApplication.pdfDocument){PDFViewerApplication.page=PDFViewerApplication.pagesCount;}}
  148. function webViewerNextPage(){PDFViewerApplication.page++;}
  149. function webViewerPreviousPage(){PDFViewerApplication.page--;}
  150. function webViewerZoomIn(){PDFViewerApplication.zoomIn();}
  151. function webViewerZoomOut(){PDFViewerApplication.zoomOut();}
  152. function webViewerZoomReset(){PDFViewerApplication.zoomReset();}
  153. function webViewerPageNumberChanged(evt){const pdfViewer=PDFViewerApplication.pdfViewer;if(evt.value!==""){pdfViewer.currentPageLabel=evt.value;}
  154. if(evt.value!==pdfViewer.currentPageNumber.toString()&&evt.value!==pdfViewer.currentPageLabel){PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber,pdfViewer.currentPageLabel);}}
  155. function webViewerScaleChanged(evt){PDFViewerApplication.pdfViewer.currentScaleValue=evt.value;}
  156. function webViewerRotateCw(){PDFViewerApplication.rotatePages(90);}
  157. function webViewerRotateCcw(){PDFViewerApplication.rotatePages(-90);}
  158. function webViewerSwitchScrollMode(evt){PDFViewerApplication.pdfViewer.scrollMode=evt.mode;}
  159. function webViewerSwitchSpreadMode(evt){PDFViewerApplication.pdfViewer.spreadMode=evt.mode;}
  160. function webViewerDocumentProperties(){PDFViewerApplication.pdfDocumentProperties.open();}
  161. function webViewerFind(evt){PDFViewerApplication.findController.executeCommand("find"+evt.type,{query:evt.query,phraseSearch:evt.phraseSearch,caseSensitive:evt.caseSensitive,entireWord:evt.entireWord,highlightAll:evt.highlightAll,findPrevious:evt.findPrevious});}
  162. function webViewerFindFromUrlHash(evt){PDFViewerApplication.findController.executeCommand("find",{query:evt.query,phraseSearch:evt.phraseSearch,caseSensitive:false,entireWord:false,highlightAll:true,findPrevious:false});}
  163. function webViewerUpdateFindMatchesCount({matchesCount}){if(PDFViewerApplication.supportsIntegratedFind){PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);}else{PDFViewerApplication.findBar.updateResultsCount(matchesCount);}}
  164. function webViewerUpdateFindControlState({state,previous,matchesCount}){if(PDFViewerApplication.supportsIntegratedFind){PDFViewerApplication.externalServices.updateFindControlState({result:state,findPrevious:previous,matchesCount});}else{PDFViewerApplication.findBar.updateUIState(state,previous,matchesCount);}}
  165. function webViewerScaleChanging(evt){PDFViewerApplication.toolbar.setPageScale(evt.presetValue,evt.scale);PDFViewerApplication.pdfViewer.update();}
  166. function webViewerRotationChanging(evt){PDFViewerApplication.pdfThumbnailViewer.pagesRotation=evt.pagesRotation;PDFViewerApplication.forceRendering();PDFViewerApplication.pdfViewer.currentPageNumber=evt.pageNumber;}
  167. function webViewerPageChanging(evt){const page=evt.pageNumber;PDFViewerApplication.toolbar.setPageNumber(page,evt.pageLabel||null);PDFViewerApplication.secondaryToolbar.setPageNumber(page);if(PDFViewerApplication.pdfSidebar.isThumbnailViewVisible){PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);}
  168. if(typeof Stats!=="undefined"&&Stats.enabled){const pageView=PDFViewerApplication.pdfViewer.getPageView(page-1);if(pageView&&pageView.stats){Stats.add(page,pageView.stats);}}}
  169. function webViewerVisibilityChange(evt){if(document.visibilityState==="visible"){setZoomDisabledTimeout();}}
  170. let zoomDisabledTimeout=null;function setZoomDisabledTimeout(){if(zoomDisabledTimeout){clearTimeout(zoomDisabledTimeout);}
  171. zoomDisabledTimeout=setTimeout(function(){zoomDisabledTimeout=null;},WHEEL_ZOOM_DISABLED_TIMEOUT);}
  172. function webViewerWheel(evt){const{pdfViewer,supportedMouseWheelZoomModifierKeys}=PDFViewerApplication;if(pdfViewer.isInPresentationMode){return;}
  173. if(evt.ctrlKey&&supportedMouseWheelZoomModifierKeys.ctrlKey||evt.metaKey&&supportedMouseWheelZoomModifierKeys.metaKey){evt.preventDefault();if(zoomDisabledTimeout||document.visibilityState==="hidden"){return;}
  174. const previousScale=pdfViewer.currentScale;const delta=(0,_ui_utils.normalizeWheelEventDelta)(evt);const MOUSE_WHEEL_DELTA_PER_PAGE_SCALE=3.0;const ticks=delta*MOUSE_WHEEL_DELTA_PER_PAGE_SCALE;if(ticks<0){PDFViewerApplication.zoomOut(-ticks);}else{PDFViewerApplication.zoomIn(ticks);}
  175. const currentScale=pdfViewer.currentScale;if(previousScale!==currentScale){const scaleCorrectionFactor=currentScale/previousScale-1;const rect=pdfViewer.container.getBoundingClientRect();const dx=evt.clientX-rect.left;const dy=evt.clientY-rect.top;pdfViewer.container.scrollLeft+=dx*scaleCorrectionFactor;pdfViewer.container.scrollTop+=dy*scaleCorrectionFactor;}}else{setZoomDisabledTimeout();}}
  176. function webViewerClick(evt){if(!PDFViewerApplication.secondaryToolbar.isOpen){return;}
  177. const appConfig=PDFViewerApplication.appConfig;if(PDFViewerApplication.pdfViewer.containsElement(evt.target)||appConfig.toolbar.container.contains(evt.target)&&evt.target!==appConfig.secondaryToolbar.toggleButton){PDFViewerApplication.secondaryToolbar.close();}}
  178. function webViewerKeyDown(evt){if(PDFViewerApplication.overlayManager.active){return;}
  179. let handled=false,ensureViewerFocused=false;const cmd=(evt.ctrlKey?1:0)|(evt.altKey?2:0)|(evt.shiftKey?4:0)|(evt.metaKey?8:0);const pdfViewer=PDFViewerApplication.pdfViewer;const 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;}
  180. break;case 71:if(!PDFViewerApplication.supportsIntegratedFind){const findState=PDFViewerApplication.findController.state;if(findState){PDFViewerApplication.findController.executeCommand("findagain",{query:findState.query,phraseSearch:findState.phraseSearch,caseSensitive:findState.caseSensitive,entireWord:findState.entireWord,highlightAll:findState.highlightAll,findPrevious:cmd===5||cmd===12});}
  181. handled=true;}
  182. break;case 61:case 107:case 187:case 171:if(!isViewerInPresentationMode){PDFViewerApplication.zoomIn();}
  183. handled=true;break;case 173:case 109:case 189:if(!isViewerInPresentationMode){PDFViewerApplication.zoomOut();}
  184. handled=true;break;case 48:case 96:if(!isViewerInPresentationMode){setTimeout(function(){PDFViewerApplication.zoomReset();});handled=false;}
  185. break;case 38:if(isViewerInPresentationMode||PDFViewerApplication.page>1){PDFViewerApplication.page=1;handled=true;ensureViewerFocused=true;}
  186. break;case 40:if(isViewerInPresentationMode||PDFViewerApplication.page<PDFViewerApplication.pagesCount){PDFViewerApplication.page=PDFViewerApplication.pagesCount;handled=true;ensureViewerFocused=true;}
  187. break;}}
  188. if(cmd===1||cmd===8){switch(evt.keyCode){case 83:PDFViewerApplication.download();handled=true;break;}}
  189. 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;}}
  190. if(handled){if(ensureViewerFocused&&!isViewerInPresentationMode){pdfViewer.focus();}
  191. evt.preventDefault();return;}
  192. const curElement=document.activeElement||document.querySelector(":focus");const curElementTagName=curElement&&curElement.tagName.toUpperCase();if(curElementTagName==="INPUT"||curElementTagName==="TEXTAREA"||curElementTagName==="SELECT"||curElement&&curElement.isContentEditable){if(evt.keyCode!==27){return;}}
  193. if(cmd===0){let turnPage=0,turnOnlyIfPageFit=false;switch(evt.keyCode){case 38:case 33:if(pdfViewer.isVerticalScrollbarEnabled){turnOnlyIfPageFit=true;}
  194. turnPage=-1;break;case 8:if(!isViewerInPresentationMode){turnOnlyIfPageFit=true;}
  195. turnPage=-1;break;case 37:if(pdfViewer.isHorizontalScrollbarEnabled){turnOnlyIfPageFit=true;}
  196. case 75:case 80:turnPage=-1;break;case 27:if(PDFViewerApplication.secondaryToolbar.isOpen){PDFViewerApplication.secondaryToolbar.close();handled=true;}
  197. if(!PDFViewerApplication.supportsIntegratedFind&&PDFViewerApplication.findBar.opened){PDFViewerApplication.findBar.close();handled=true;}
  198. break;case 40:case 34:if(pdfViewer.isVerticalScrollbarEnabled){turnOnlyIfPageFit=true;}
  199. turnPage=1;break;case 13:case 32:if(!isViewerInPresentationMode){turnOnlyIfPageFit=true;}
  200. turnPage=1;break;case 39:if(pdfViewer.isHorizontalScrollbarEnabled){turnOnlyIfPageFit=true;}
  201. case 74:case 78:turnPage=1;break;case 36:if(isViewerInPresentationMode||PDFViewerApplication.page>1){PDFViewerApplication.page=1;handled=true;ensureViewerFocused=true;}
  202. break;case 35:if(isViewerInPresentationMode||PDFViewerApplication.page<PDFViewerApplication.pagesCount){PDFViewerApplication.page=PDFViewerApplication.pagesCount;handled=true;ensureViewerFocused=true;}
  203. 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;case 115:PDFViewerApplication.pdfSidebar.toggle();break;}
  204. if(turnPage!==0&&(!turnOnlyIfPageFit||pdfViewer.currentScaleValue==="page-fit")){if(turnPage>0){if(PDFViewerApplication.page<PDFViewerApplication.pagesCount){PDFViewerApplication.page++;}}else{if(PDFViewerApplication.page>1){PDFViewerApplication.page--;}}
  205. handled=true;}}
  206. if(cmd===4){switch(evt.keyCode){case 13:case 32:if(!isViewerInPresentationMode&&pdfViewer.currentScaleValue!=="page-fit"){break;}
  207. if(PDFViewerApplication.page>1){PDFViewerApplication.page--;}
  208. handled=true;break;case 82:PDFViewerApplication.rotatePages(-90);break;}}
  209. if(!handled&&!isViewerInPresentationMode){if(evt.keyCode>=33&&evt.keyCode<=40||evt.keyCode===32&&curElementTagName!=="BUTTON"){ensureViewerFocused=true;}}
  210. if(ensureViewerFocused&&!pdfViewer.containsElement(curElement)){pdfViewer.focus();}
  211. if(handled){evt.preventDefault();}}
  212. function apiPageLayoutToSpreadMode(layout){switch(layout){case"SinglePage":case"OneColumn":return _ui_utils.SpreadMode.NONE;case"TwoColumnLeft":case"TwoPageLeft":return _ui_utils.SpreadMode.ODD;case"TwoColumnRight":case"TwoPageRight":return _ui_utils.SpreadMode.EVEN;}
  213. return _ui_utils.SpreadMode.NONE;}
  214. 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":}
  215. return _pdf_sidebar.SidebarView.NONE;}
  216. const PDFPrintServiceFactory={instance:{supportsPrinting:false,createPrintService(){throw new Error("Not implemented: createPrintService");}}};exports.PDFPrintServiceFactory=PDFPrintServiceFactory;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.isValidRotation=isValidRotation;exports.isValidScrollMode=isValidScrollMode;exports.isValidSpreadMode=isValidSpreadMode;exports.isPortraitOrientation=isPortraitOrientation;exports.getGlobalEventBus=getGlobalEventBus;exports.clamp=clamp;exports.getPDFFileNameFromURL=getPDFFileNameFromURL;exports.noContextMenuHandler=noContextMenuHandler;exports.parseQueryString=parseQueryString;exports.backtrackBeforeAllVisibleElements=backtrackBeforeAllVisibleElements;exports.getVisibleElements=getVisibleElements;exports.roundToDivide=roundToDivide;exports.getPageSizeInches=getPageSizeInches;exports.approximateFraction=approximateFraction;exports.getOutputScale=getOutputScale;exports.scrollIntoView=scrollIntoView;exports.watchScroll=watchScroll;exports.binarySearchFirstItem=binarySearchFirstItem;exports.normalizeWheelEventDelta=normalizeWheelEventDelta;exports.waitOnEventOrTimeout=waitOnEventOrTimeout;exports.moveToEndOfArray=moveToEndOfArray;exports.WaitOnType=exports.animationStarted=exports.ProgressBar=exports.EventBus=exports.NullL10n=exports.SpreadMode=exports.ScrollMode=exports.TextLayerMode=exports.RendererType=exports.PresentationModeState=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=exports.AutoPrintRegExp=void 0;const CSS_UNITS=96.0/72.0;exports.CSS_UNITS=CSS_UNITS;const DEFAULT_SCALE_VALUE="auto";exports.DEFAULT_SCALE_VALUE=DEFAULT_SCALE_VALUE;const DEFAULT_SCALE=1.0;exports.DEFAULT_SCALE=DEFAULT_SCALE;const MIN_SCALE=0.1;exports.MIN_SCALE=MIN_SCALE;const MAX_SCALE=10.0;exports.MAX_SCALE=MAX_SCALE;const UNKNOWN_SCALE=0;exports.UNKNOWN_SCALE=UNKNOWN_SCALE;const MAX_AUTO_SCALE=1.25;exports.MAX_AUTO_SCALE=MAX_AUTO_SCALE;const SCROLLBAR_PADDING=40;exports.SCROLLBAR_PADDING=SCROLLBAR_PADDING;const VERTICAL_PADDING=5;exports.VERTICAL_PADDING=VERTICAL_PADDING;const PresentationModeState={UNKNOWN:0,NORMAL:1,CHANGING:2,FULLSCREEN:3};exports.PresentationModeState=PresentationModeState;const RendererType={CANVAS:"canvas",SVG:"svg"};exports.RendererType=RendererType;const TextLayerMode={DISABLE:0,ENABLE:1,ENABLE_ENHANCE:2};exports.TextLayerMode=TextLayerMode;const ScrollMode={UNKNOWN:-1,VERTICAL:0,HORIZONTAL:1,WRAPPED:2};exports.ScrollMode=ScrollMode;const SpreadMode={UNKNOWN:-1,NONE:0,ODD:1,EVEN:2};exports.SpreadMode=SpreadMode;const AutoPrintRegExp=/\bprint\s*\(/;exports.AutoPrintRegExp=AutoPrintRegExp;function formatL10nValue(text,args){if(!args){return text;}
  217. return text.replace(/\{\{\s*(\w+)\s*\}\}/g,(all,name)=>{return name in args?args[name]:"{{"+name+"}}";});}
  218. const NullL10n={async getLanguage(){return"en-us";},async getDirection(){return"ltr";},async get(property,args,fallback){return formatL10nValue(fallback,args);},async translate(element){}};exports.NullL10n=NullL10n;function getOutputScale(ctx){const devicePixelRatio=window.devicePixelRatio||1;const backingStoreRatio=ctx.webkitBackingStorePixelRatio||ctx.mozBackingStorePixelRatio||ctx.msBackingStorePixelRatio||ctx.oBackingStorePixelRatio||ctx.backingStorePixelRatio||1;const pixelRatio=devicePixelRatio/backingStoreRatio;return{sx:pixelRatio,sy:pixelRatio,scaled:pixelRatio!==1};}
  219. function scrollIntoView(element,spot,skipOverflowHiddenElements=false){let parent=element.offsetParent;if(!parent){console.error("offsetParent is not set -- cannot scroll");return;}
  220. let offsetY=element.offsetTop+element.clientTop;let offsetX=element.offsetLeft+element.clientLeft;while(parent.clientHeight===parent.scrollHeight&&parent.clientWidth===parent.scrollWidth||skipOverflowHiddenElements&&getComputedStyle(parent).overflow==="hidden"){if(parent.dataset._scaleY){offsetY/=parent.dataset._scaleY;offsetX/=parent.dataset._scaleX;}
  221. offsetY+=parent.offsetTop;offsetX+=parent.offsetLeft;parent=parent.offsetParent;if(!parent){return;}}
  222. if(spot){if(spot.top!==undefined){offsetY+=spot.top;}
  223. if(spot.left!==undefined){offsetX+=spot.left;parent.scrollLeft=offsetX;}}
  224. parent.scrollTop=offsetY;}
  225. function watchScroll(viewAreaElement,callback){const debounceScroll=function(evt){if(rAF){return;}
  226. rAF=window.requestAnimationFrame(function viewAreaElementScrolled(){rAF=null;const currentX=viewAreaElement.scrollLeft;const lastX=state.lastX;if(currentX!==lastX){state.right=currentX>lastX;}
  227. state.lastX=currentX;const currentY=viewAreaElement.scrollTop;const lastY=state.lastY;if(currentY!==lastY){state.down=currentY>lastY;}
  228. state.lastY=currentY;callback(state);});};const state={right:true,down:true,lastX:viewAreaElement.scrollLeft,lastY:viewAreaElement.scrollTop,_eventHandler:debounceScroll};let rAF=null;viewAreaElement.addEventListener("scroll",debounceScroll,true);return state;}
  229. function parseQueryString(query){const parts=query.split("&");const params=Object.create(null);for(let i=0,ii=parts.length;i<ii;++i){const param=parts[i].split("=");const key=param[0].toLowerCase();const value=param.length>1?param[1]:null;params[decodeURIComponent(key)]=decodeURIComponent(value);}
  230. return params;}
  231. function binarySearchFirstItem(items,condition){let minIndex=0;let maxIndex=items.length-1;if(items.length===0||!condition(items[maxIndex])){return items.length;}
  232. if(condition(items[minIndex])){return minIndex;}
  233. while(minIndex<maxIndex){const currentIndex=minIndex+maxIndex>>1;const currentItem=items[currentIndex];if(condition(currentItem)){maxIndex=currentIndex;}else{minIndex=currentIndex+1;}}
  234. return minIndex;}
  235. function approximateFraction(x){if(Math.floor(x)===x){return[x,1];}
  236. const xinv=1/x;const limit=8;if(xinv>limit){return[1,limit];}else if(Math.floor(xinv)===xinv){return[1,xinv];}
  237. const x_=x>1?xinv:x;let a=0,b=1,c=1,d=1;while(true){const p=a+c,q=b+d;if(q>limit){break;}
  238. if(x_<=p/q){c=p;d=q;}else{a=p;b=q;}}
  239. let result;if(x_-a/b<c/d-x_){result=x_===x?[a,b]:[b,a];}else{result=x_===x?[c,d]:[d,c];}
  240. return result;}
  241. function roundToDivide(x,div){const r=x%div;return r===0?x:Math.round(x-r+div);}
  242. function getPageSizeInches({view,userUnit,rotate}){const[x1,y1,x2,y2]=view;const changeOrientation=rotate%180!==0;const width=(x2-x1)/72*userUnit;const height=(y2-y1)/72*userUnit;return{width:changeOrientation?height:width,height:changeOrientation?width:height};}
  243. function backtrackBeforeAllVisibleElements(index,views,top){if(index<2){return index;}
  244. let elt=views[index].div;let pageTop=elt.offsetTop+elt.clientTop;if(pageTop>=top){elt=views[index-1].div;pageTop=elt.offsetTop+elt.clientTop;}
  245. for(let i=index-2;i>=0;--i){elt=views[i].div;if(elt.offsetTop+elt.clientTop+elt.clientHeight<=pageTop){break;}
  246. index=i;}
  247. return index;}
  248. function getVisibleElements(scrollEl,views,sortByVisibility=false,horizontal=false){const top=scrollEl.scrollTop,bottom=top+scrollEl.clientHeight;const left=scrollEl.scrollLeft,right=left+scrollEl.clientWidth;function isElementBottomAfterViewTop(view){const element=view.div;const elementBottom=element.offsetTop+element.clientTop+element.clientHeight;return elementBottom>top;}
  249. function isElementRightAfterViewLeft(view){const element=view.div;const elementRight=element.offsetLeft+element.clientLeft+element.clientWidth;return elementRight>left;}
  250. const visible=[],numViews=views.length;let firstVisibleElementInd=numViews===0?0:binarySearchFirstItem(views,horizontal?isElementRightAfterViewLeft:isElementBottomAfterViewTop);if(firstVisibleElementInd>0&&firstVisibleElementInd<numViews&&!horizontal){firstVisibleElementInd=backtrackBeforeAllVisibleElements(firstVisibleElementInd,views,top);}
  251. let lastEdge=horizontal?right:-1;for(let i=firstVisibleElementInd;i<numViews;i++){const view=views[i],element=view.div;const currentWidth=element.offsetLeft+element.clientLeft;const currentHeight=element.offsetTop+element.clientTop;const viewWidth=element.clientWidth,viewHeight=element.clientHeight;const viewRight=currentWidth+viewWidth;const viewBottom=currentHeight+viewHeight;if(lastEdge===-1){if(viewBottom>=bottom){lastEdge=viewBottom;}}else if((horizontal?currentWidth:currentHeight)>lastEdge){break;}
  252. if(viewBottom<=top||currentHeight>=bottom||viewRight<=left||currentWidth>=right){continue;}
  253. const hiddenHeight=Math.max(0,top-currentHeight)+Math.max(0,viewBottom-bottom);const hiddenWidth=Math.max(0,left-currentWidth)+Math.max(0,viewRight-right);const percent=(viewHeight-hiddenHeight)*(viewWidth-hiddenWidth)*100/viewHeight/viewWidth|0;visible.push({id:view.id,x:currentWidth,y:currentHeight,view,percent});}
  254. const first=visible[0],last=visible[visible.length-1];if(sortByVisibility){visible.sort(function(a,b){const pc=a.percent-b.percent;if(Math.abs(pc)>0.001){return-pc;}
  255. return a.id-b.id;});}
  256. return{first,last,views:visible};}
  257. function noContextMenuHandler(evt){evt.preventDefault();}
  258. function isDataSchema(url){let i=0;const ii=url.length;while(i<ii&&url[i].trim()===""){i++;}
  259. return url.substring(i,i+5).toLowerCase()==="data:";}
  260. function getPDFFileNameFromURL(url,defaultFilename="document.pdf"){if(typeof url!=="string"){return defaultFilename;}
  261. if(isDataSchema(url)){console.warn("getPDFFileNameFromURL: "+'ignoring "data:" URL for performance reasons.');return defaultFilename;}
  262. 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){}}}
  263. return suggestedFilename||defaultFilename;}
  264. function normalizeWheelEventDelta(evt){let delta=Math.sqrt(evt.deltaX*evt.deltaX+evt.deltaY*evt.deltaY);const angle=Math.atan2(evt.deltaY,evt.deltaX);if(-0.25*Math.PI<angle&&angle<0.75*Math.PI){delta=-delta;}
  265. const MOUSE_DOM_DELTA_PIXEL_MODE=0;const MOUSE_DOM_DELTA_LINE_MODE=1;const MOUSE_PIXELS_PER_LINE=30;const 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;}
  266. return delta;}
  267. function isValidRotation(angle){return Number.isInteger(angle)&&angle%90===0;}
  268. function isValidScrollMode(mode){return Number.isInteger(mode)&&Object.values(ScrollMode).includes(mode)&&mode!==ScrollMode.UNKNOWN;}
  269. function isValidSpreadMode(mode){return Number.isInteger(mode)&&Object.values(SpreadMode).includes(mode)&&mode!==SpreadMode.UNKNOWN;}
  270. function isPortraitOrientation(size){return size.width<=size.height;}
  271. const WaitOnType={EVENT:"event",TIMEOUT:"timeout"};exports.WaitOnType=WaitOnType;function waitOnEventOrTimeout({target,name,delay=0}){return new Promise(function(resolve,reject){if(typeof target!=="object"||!(name&&typeof name==="string")||!(Number.isInteger(delay)&&delay>=0)){throw new Error("waitOnEventOrTimeout - invalid parameters.");}
  272. function handler(type){if(target instanceof EventBus){target._off(name,eventHandler);}else{target.removeEventListener(name,eventHandler);}
  273. if(timeout){clearTimeout(timeout);}
  274. resolve(type);}
  275. const eventHandler=handler.bind(null,WaitOnType.EVENT);if(target instanceof EventBus){target._on(name,eventHandler);}else{target.addEventListener(name,eventHandler);}
  276. const timeoutHandler=handler.bind(null,WaitOnType.TIMEOUT);const timeout=setTimeout(timeoutHandler,delay);});}
  277. const animationStarted=new Promise(function(resolve){window.requestAnimationFrame(resolve);});exports.animationStarted=animationStarted;function dispatchDOMEvent(eventName,args=null){const details=Object.create(null);if(args&&args.length>0){const obj=args[0];for(const key in obj){const value=obj[key];if(key==="source"){if(value===window||value===document){return;}
  278. continue;}
  279. details[key]=value;}}
  280. const event=document.createEvent("CustomEvent");event.initCustomEvent(eventName,true,true,details);document.dispatchEvent(event);}
  281. class EventBus{constructor({dispatchToDOM=false}={}){this._listeners=Object.create(null);this._dispatchToDOM=dispatchToDOM===true;if(dispatchToDOM){console.error("The `eventBusDispatchToDOM` option/preference is deprecated, "+"add event listeners to the EventBus instance rather than the DOM.");}}
  282. on(eventName,listener){this._on(eventName,listener,{external:true});}
  283. off(eventName,listener){this._off(eventName,listener,{external:true});}
  284. dispatch(eventName){const eventListeners=this._listeners[eventName];if(!eventListeners||eventListeners.length===0){if(this._dispatchToDOM){const args=Array.prototype.slice.call(arguments,1);dispatchDOMEvent(eventName,args);}
  285. return;}
  286. const args=Array.prototype.slice.call(arguments,1);let externalListeners;eventListeners.slice(0).forEach(function({listener,external}){if(external){if(!externalListeners){externalListeners=[];}
  287. externalListeners.push(listener);return;}
  288. listener.apply(null,args);});if(externalListeners){externalListeners.forEach(function(listener){listener.apply(null,args);});externalListeners=null;}
  289. if(this._dispatchToDOM){dispatchDOMEvent(eventName,args);}}
  290. _on(eventName,listener,options=null){let eventListeners=this._listeners[eventName];if(!eventListeners){this._listeners[eventName]=eventListeners=[];}
  291. eventListeners.push({listener,external:(options&&options.external)===true});}
  292. _off(eventName,listener,options=null){const eventListeners=this._listeners[eventName];if(!eventListeners){return;}
  293. for(let i=0,ii=eventListeners.length;i<ii;i++){if(eventListeners[i].listener===listener){eventListeners.splice(i,1);return;}}}}
  294. exports.EventBus=EventBus;let globalEventBus=null;function getGlobalEventBus(dispatchToDOM=false){console.error("getGlobalEventBus is deprecated, use a manually created EventBus instance instead.");if(!globalEventBus){globalEventBus=new EventBus({dispatchToDOM});}
  295. return globalEventBus;}
  296. function clamp(v,min,max){return Math.min(Math.max(v,min),max);}
  297. class ProgressBar{constructor(id,{height,width,units}={}){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;}
  298. _updateBar(){if(this._indeterminate){this.div.classList.add("indeterminate");this.div.style.width=this.width+this.units;return;}
  299. this.div.classList.remove("indeterminate");const progressSize=this.width*this._percent/100;this.div.style.width=progressSize+this.units;}
  300. get percent(){return this._percent;}
  301. set percent(val){this._indeterminate=isNaN(val);this._percent=clamp(val,0,100);this._updateBar();}
  302. setWidth(viewer){if(!viewer){return;}
  303. const container=viewer.parentNode;const scrollbarWidth=container.offsetWidth-viewer.offsetWidth;if(scrollbarWidth>0){this.bar.style.width=`calc(100% - ${scrollbarWidth}px)`;}}
  304. hide(){if(!this.visible){return;}
  305. this.visible=false;this.bar.classList.add("hidden");document.body.classList.remove("loadingInProgress");}
  306. show(){if(this.visible){return;}
  307. this.visible=true;document.body.classList.add("loadingInProgress");this.bar.classList.remove("hidden");}}
  308. exports.ProgressBar=ProgressBar;function moveToEndOfArray(arr,condition){const moved=[],len=arr.length;let write=0;for(let read=0;read<len;++read){if(condition(arr[read])){moved.push(arr[read]);}else{arr[write]=arr[read];++write;}}
  309. for(let read=0;write<len;++read,++write){arr[write]=moved[read];}}}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.OptionKind=exports.AppOptions=void 0;var _pdfjsLib=__webpack_require__(4);var _viewer_compatibility=__webpack_require__(5);const OptionKind={VIEWER:0x02,API:0x04,WORKER:0x08,PREFERENCE:0x80};exports.OptionKind=OptionKind;const defaultOptions={cursorToolOnLoad:{value:0,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},defaultUrl:{value:"compressed.tracemonkey-pldi-09.pdf",kind:OptionKind.VIEWER},defaultZoomValue:{value:"",kind:OptionKind.VIEWER+OptionKind.PREFERENCE},disableHistory:{value:false,kind:OptionKind.VIEWER},disablePageLabels:{value:false,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},enablePrintAutoRotate:{value:false,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},enableWebGL:{value:false,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},eventBusDispatchToDOM:{value:false,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},externalLinkRel:{value:"noopener noreferrer nofollow",kind:OptionKind.VIEWER},externalLinkTarget:{value:0,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},historyUpdateUrl:{value:false,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},ignoreDestinationZoom:{value:false,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},imageResourcesPath:{value:"./images/",kind:OptionKind.VIEWER},maxCanvasPixels:{value:16777216,compatibility:_viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels,kind:OptionKind.VIEWER},pdfBugEnabled:{value:false,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},renderer:{value:"canvas",kind:OptionKind.VIEWER+OptionKind.PREFERENCE},renderInteractiveForms:{value:false,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},sidebarViewOnLoad:{value:-1,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},scrollModeOnLoad:{value:-1,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},spreadModeOnLoad:{value:-1,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},textLayerMode:{value:1,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},useOnlyCssZoom:{value:false,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},viewOnLoad:{value:0,kind:OptionKind.VIEWER+OptionKind.PREFERENCE},cMapPacked:{value:true,kind:OptionKind.API},cMapUrl:{value:"../web/cmaps/",kind:OptionKind.API},disableAutoFetch:{value:false,kind:OptionKind.API+OptionKind.PREFERENCE},disableCreateObjectURL:{value:false,compatibility:_pdfjsLib.apiCompatibilityParams.disableCreateObjectURL,kind:OptionKind.API},disableFontFace:{value:false,kind:OptionKind.API+OptionKind.PREFERENCE},disableRange:{value:false,kind:OptionKind.API+OptionKind.PREFERENCE},disableStream:{value:false,kind:OptionKind.API+OptionKind.PREFERENCE},docBaseUrl:{value:"",kind:OptionKind.API},isEvalSupported:{value:true,kind:OptionKind.API},maxImageSize:{value:-1,kind:OptionKind.API},pdfBug:{value:false,kind:OptionKind.API},verbosity:{value:1,kind:OptionKind.API},workerPort:{value:null,kind:OptionKind.WORKER},workerSrc:{value:"../build/pdf.worker.js",kind:OptionKind.WORKER}};{defaultOptions.disablePreferences={value:false,kind:OptionKind.VIEWER};defaultOptions.locale={value:typeof navigator!=="undefined"?navigator.language:"en-US",kind:OptionKind.VIEWER};defaultOptions.printResolution={value:150,kind:OptionKind.VIEWER};}
  310. const userOptions=Object.create(null);class AppOptions{constructor(){throw new Error("Cannot initialize AppOptions.");}
  311. static get(name){const userOption=userOptions[name];if(userOption!==undefined){return userOption;}
  312. const defaultOption=defaultOptions[name];if(defaultOption!==undefined){return defaultOption.compatibility||defaultOption.value;}
  313. return undefined;}
  314. static getAll(kind=null){const options=Object.create(null);for(const name in defaultOptions){const defaultOption=defaultOptions[name];if(kind){if((kind&defaultOption.kind)===0){continue;}
  315. if(kind===OptionKind.PREFERENCE){const value=defaultOption.value,valueType=typeof value;if(valueType==="boolean"||valueType==="string"||valueType==="number"&&Number.isInteger(value)){options[name]=value;continue;}
  316. throw new Error(`Invalid type for preference: ${name}`);}}
  317. const userOption=userOptions[name];options[name]=userOption!==undefined?userOption:defaultOption.compatibility||defaultOption.value;}
  318. return options;}
  319. static set(name,value){userOptions[name]=value;}
  320. static remove(name){delete userOptions[name];}}
  321. exports.AppOptions=AppOptions;}),(function(module,exports,__webpack_require__){"use strict";let pdfjsLib;if(typeof window!=="undefined"&&window["pdfjs-dist/build/pdf"]){pdfjsLib=window["pdfjs-dist/build/pdf"];}else{pdfjsLib=require("../build/pdf.js");}
  322. module.exports=pdfjsLib;}),(function(module,exports,__webpack_require__){"use strict";const compatibilityParams=Object.create(null);{const userAgent=typeof navigator!=="undefined"&&navigator.userAgent||"";const platform=typeof navigator!=="undefined"&&navigator.platform||"";const maxTouchPoints=typeof navigator!=="undefined"&&navigator.maxTouchPoints||1;const isAndroid=/Android/.test(userAgent);const isIOS=/\b(iPad|iPhone|iPod)(?=;)/.test(userAgent)||platform==="MacIntel"&&maxTouchPoints>1;(function checkCanvasSizeLimitation(){if(isIOS||isAndroid){compatibilityParams.maxCanvasPixels=5242880;}})();}
  323. exports.viewerCompatibilityParams=Object.freeze(compatibilityParams);}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFCursorTools=exports.CursorTool=void 0;var _grab_to_pan=__webpack_require__(7);const CursorTool={SELECT:0,HAND:1,ZOOM:2};exports.CursorTool=CursorTool;class PDFCursorTools{constructor({container,eventBus,cursorToolOnLoad=CursorTool.SELECT}){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.resolve().then(()=>{this.switchTool(cursorToolOnLoad);});}
  324. get activeTool(){return this.active;}
  325. switchTool(tool){if(this.activeBeforePresentationMode!==null){return;}
  326. if(tool===this.active){return;}
  327. const disableActiveTool=()=>{switch(this.active){case CursorTool.SELECT:break;case CursorTool.HAND:this.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;}
  328. this.active=tool;this._dispatchEvent();}
  329. _dispatchEvent(){this.eventBus.dispatch("cursortoolchanged",{source:this,tool:this.active});}
  330. _addEventListeners(){this.eventBus._on("switchcursortool",evt=>{this.switchTool(evt.tool);});this.eventBus._on("presentationmodechanged",evt=>{if(evt.switchInProgress){return;}
  331. let previouslyActive;if(evt.active){previouslyActive=this.active;this.switchTool(CursorTool.SELECT);this.activeBeforePresentationMode=previouslyActive;}else{previouslyActive=this.activeBeforePresentationMode;this.activeBeforePresentationMode=null;this.switchTool(previouslyActive);}});}}
  332. exports.PDFCursorTools=PDFCursorTools;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.GrabToPan=GrabToPan;function GrabToPan(options){this.element=options.element;this.document=options.element.ownerDocument;if(typeof options.ignoreTarget==="function"){this.ignoreTarget=options.ignoreTarget;}
  333. 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);const overlay=this.overlay=document.createElement("div");overlay.className="grab-to-pan-grabbing";}
  334. 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;}
  335. if(event.originalTarget){try{event.originalTarget.tagName;}catch(e){return;}}
  336. 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();const 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;}
  337. const xDiff=event.clientX-this.clientXStart;const yDiff=event.clientY-this.clientYStart;const scrollTop=this.scrollTopStart-yDiff;const 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;}
  338. 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();}};let matchesSelector;["webkitM","mozM","msM","oM","m"].some(function(prefix){let name=prefix+"atches";if(name in document.documentElement){matchesSelector=name;}
  339. name+="Selector";if(name in document.documentElement){matchesSelector=name;}
  340. return matchesSelector;});const isNotIEorIsIE10plus=!document.documentMode||document.documentMode>9;const chrome=window.chrome;const isChrome15OrOpera15plus=chrome&&(chrome.webstore||chrome.app);const 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);}
  341. if(isChrome15OrOpera15plus||isSafari6plus){return event.which===0;}
  342. return false;}}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFRenderingQueue=exports.RenderingStates=void 0;const CLEANUP_TIMEOUT=30000;const RenderingStates={INITIAL:0,RUNNING:1,PAUSED:2,FINISHED:3};exports.RenderingStates=RenderingStates;class PDFRenderingQueue{constructor(){this.pdfViewer=null;this.pdfThumbnailViewer=null;this.onIdle=null;this.highestPriorityPage=null;this.idleTimeout=null;this.printing=false;this.isThumbnailViewEnabled=false;}
  343. setViewer(pdfViewer){this.pdfViewer=pdfViewer;}
  344. setThumbnailViewer(pdfThumbnailViewer){this.pdfThumbnailViewer=pdfThumbnailViewer;}
  345. isHighestPriority(view){return this.highestPriorityPage===view.renderingId;}
  346. renderHighestPriority(currentlyVisiblePages){if(this.idleTimeout){clearTimeout(this.idleTimeout);this.idleTimeout=null;}
  347. if(this.pdfViewer.forceRendering(currentlyVisiblePages)){return;}
  348. if(this.pdfThumbnailViewer&&this.isThumbnailViewEnabled){if(this.pdfThumbnailViewer.forceRendering()){return;}}
  349. if(this.printing){return;}
  350. if(this.onIdle){this.idleTimeout=setTimeout(this.onIdle.bind(this),CLEANUP_TIMEOUT);}}
  351. getHighestPriority(visible,views,scrolledDown){const visibleViews=visible.views;const numVisible=visibleViews.length;if(numVisible===0){return null;}
  352. for(let i=0;i<numVisible;++i){const view=visibleViews[i].view;if(!this.isViewFinished(view)){return view;}}
  353. if(scrolledDown){const nextPageIndex=visible.last.id;if(views[nextPageIndex]&&!this.isViewFinished(views[nextPageIndex])){return views[nextPageIndex];}}else{const previousPageIndex=visible.first.id-2;if(views[previousPageIndex]&&!this.isViewFinished(views[previousPageIndex])){return views[previousPageIndex];}}
  354. return null;}
  355. isViewFinished(view){return view.renderingState===RenderingStates.FINISHED;}
  356. renderView(view){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;view.draw().finally(()=>{this.renderHighestPriority();}).catch(reason=>{console.error(`renderView: "${reason}"`);});break;}
  357. return true;}}
  358. exports.PDFRenderingQueue=PDFRenderingQueue;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFSidebar=exports.SidebarView=void 0;var _ui_utils=__webpack_require__(2);var _pdf_rendering_queue=__webpack_require__(8);const UI_NOTIFICATION_CLASS="pdfSidebarNotification";const SidebarView={UNKNOWN:-1,NONE:0,THUMBS:1,OUTLINE:2,ATTACHMENTS:3,LAYERS:4};exports.SidebarView=SidebarView;class PDFSidebar{constructor({elements,pdfViewer,pdfThumbnailViewer,eventBus,l10n=_ui_utils.NullL10n,disableNotification=false}){this.isOpen=false;this.active=SidebarView.THUMBS;this.isInitialViewSet=false;this.onToggled=null;this.pdfViewer=pdfViewer;this.pdfThumbnailViewer=pdfThumbnailViewer;this.outerContainer=elements.outerContainer;this.viewerContainer=elements.viewerContainer;this.toggleButton=elements.toggleButton;this.thumbnailButton=elements.thumbnailButton;this.outlineButton=elements.outlineButton;this.attachmentsButton=elements.attachmentsButton;this.thumbnailView=elements.thumbnailView;this.outlineView=elements.outlineView;this.attachmentsView=elements.attachmentsView;this.eventBus=eventBus;this.l10n=l10n;this._disableNotification=disableNotification;this._addEventListeners();}
  359. reset(){this.isInitialViewSet=false;this._hideUINotification(null);this.switchView(SidebarView.THUMBS);this.outlineButton.disabled=false;this.attachmentsButton.disabled=false;}
  360. get visibleView(){return this.isOpen?this.active:SidebarView.NONE;}
  361. get isThumbnailViewVisible(){return this.isOpen&&this.active===SidebarView.THUMBS;}
  362. get isOutlineViewVisible(){return this.isOpen&&this.active===SidebarView.OUTLINE;}
  363. get isAttachmentsViewVisible(){return this.isOpen&&this.active===SidebarView.ATTACHMENTS;}
  364. setInitialView(view=SidebarView.NONE){if(this.isInitialViewSet){return;}
  365. this.isInitialViewSet=true;if(view===SidebarView.NONE||view===SidebarView.UNKNOWN){this._dispatchEvent();return;}
  366. if(!this._switchView(view,true)){this._dispatchEvent();}}
  367. switchView(view,forceOpen=false){this._switchView(view,forceOpen);}
  368. _switchView(view,forceOpen=false){const isViewChanged=view!==this.active;let shouldForceRendering=false;switch(view){case SidebarView.NONE:if(this.isOpen){this.close();return true;}
  369. return false;case SidebarView.THUMBS:if(this.isOpen&&isViewChanged){shouldForceRendering=true;}
  370. break;case SidebarView.OUTLINE:if(this.outlineButton.disabled){return false;}
  371. break;case SidebarView.ATTACHMENTS:if(this.attachmentsButton.disabled){return false;}
  372. break;default:console.error(`PDFSidebar._switchView: "${view}" is not a valid view.`);return false;}
  373. this.active=view;this.thumbnailButton.classList.toggle("toggled",view===SidebarView.THUMBS);this.outlineButton.classList.toggle("toggled",view===SidebarView.OUTLINE);this.attachmentsButton.classList.toggle("toggled",view===SidebarView.ATTACHMENTS);this.thumbnailView.classList.toggle("hidden",view!==SidebarView.THUMBS);this.outlineView.classList.toggle("hidden",view!==SidebarView.OUTLINE);this.attachmentsView.classList.toggle("hidden",view!==SidebarView.ATTACHMENTS);if(forceOpen&&!this.isOpen){this.open();return true;}
  374. if(shouldForceRendering){this._updateThumbnailViewer();this._forceRendering();}
  375. if(isViewChanged){this._dispatchEvent();}
  376. this._hideUINotification(this.active);return isViewChanged;}
  377. open(){if(this.isOpen){return;}
  378. this.isOpen=true;this.toggleButton.classList.add("toggled");this.outerContainer.classList.add("sidebarMoving","sidebarOpen");if(this.active===SidebarView.THUMBS){this._updateThumbnailViewer();}
  379. this._forceRendering();this._dispatchEvent();this._hideUINotification(this.active);}
  380. close(){if(!this.isOpen){return;}
  381. this.isOpen=false;this.toggleButton.classList.remove("toggled");this.outerContainer.classList.add("sidebarMoving");this.outerContainer.classList.remove("sidebarOpen");this._forceRendering();this._dispatchEvent();}
  382. toggle(){if(this.isOpen){this.close();}else{this.open();}}
  383. _dispatchEvent(){this.eventBus.dispatch("sidebarviewchanged",{source:this,view:this.visibleView});}
  384. _forceRendering(){if(this.onToggled){this.onToggled();}else{this.pdfViewer.forceRendering();this.pdfThumbnailViewer.forceRendering();}}
  385. _updateThumbnailViewer(){const{pdfViewer,pdfThumbnailViewer}=this;const pagesCount=pdfViewer.pagesCount;for(let pageIndex=0;pageIndex<pagesCount;pageIndex++){const pageView=pdfViewer.getPageView(pageIndex);if(pageView&&pageView.renderingState===_pdf_rendering_queue.RenderingStates.FINISHED){const thumbnailView=pdfThumbnailViewer.getThumbnail(pageIndex);thumbnailView.setImage(pageView);}}
  386. pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);}
  387. _showUINotification(view){if(this._disableNotification){return;}
  388. this.l10n.get("toggle_sidebar_notification.title",null,"Toggle Sidebar (document contains outline/attachments)").then(msg=>{this.toggleButton.title=msg;});if(!this.isOpen){this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);}else if(view===this.active){return;}
  389. switch(view){case SidebarView.OUTLINE:this.outlineButton.classList.add(UI_NOTIFICATION_CLASS);break;case SidebarView.ATTACHMENTS:this.attachmentsButton.classList.add(UI_NOTIFICATION_CLASS);break;}}
  390. _hideUINotification(view){if(this._disableNotification){return;}
  391. const removeNotification=sidebarView=>{switch(sidebarView){case SidebarView.OUTLINE:this.outlineButton.classList.remove(UI_NOTIFICATION_CLASS);break;case SidebarView.ATTACHMENTS:this.attachmentsButton.classList.remove(UI_NOTIFICATION_CLASS);break;}};if(!this.isOpen&&view!==null){return;}
  392. this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);if(view!==null){removeNotification(view);return;}
  393. for(view in SidebarView){removeNotification(SidebarView[view]);}
  394. this.l10n.get("toggle_sidebar.title",null,"Toggle Sidebar").then(msg=>{this.toggleButton.title=msg;});}
  395. _addEventListeners(){this.viewerContainer.addEventListener("transitionend",evt=>{if(evt.target===this.viewerContainer){this.outerContainer.classList.remove("sidebarMoving");}});this.toggleButton.addEventListener("click",()=>{this.toggle();});this.thumbnailButton.addEventListener("click",()=>{this.switchView(SidebarView.THUMBS);});this.outlineButton.addEventListener("click",()=>{this.switchView(SidebarView.OUTLINE);});this.outlineButton.addEventListener("dblclick",()=>{this.eventBus.dispatch("toggleoutlinetree",{source:this});});this.attachmentsButton.addEventListener("click",()=>{this.switchView(SidebarView.ATTACHMENTS);});this.eventBus._on("outlineloaded",evt=>{const outlineCount=evt.outlineCount;this.outlineButton.disabled=!outlineCount;if(outlineCount){this._showUINotification(SidebarView.OUTLINE);}else if(this.active===SidebarView.OUTLINE){this.switchView(SidebarView.THUMBS);}});this.eventBus._on("attachmentsloaded",evt=>{if(evt.attachmentsCount){this.attachmentsButton.disabled=false;this._showUINotification(SidebarView.ATTACHMENTS);return;}
  396. Promise.resolve().then(()=>{if(this.attachmentsView.hasChildNodes()){return;}
  397. this.attachmentsButton.disabled=true;if(this.active===SidebarView.ATTACHMENTS){this.switchView(SidebarView.THUMBS);}});});this.eventBus._on("presentationmodechanged",evt=>{if(!evt.active&&!evt.switchInProgress&&this.isThumbnailViewVisible){this._updateThumbnailViewer();}});}}
  398. exports.PDFSidebar=PDFSidebar;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.OverlayManager=void 0;class OverlayManager{constructor(){this._overlays={};this._active=null;this._keyDownBound=this._keyDown.bind(this);}
  399. get active(){return this._active;}
  400. async register(name,element,callerCloseMethod=null,canForceClose=false){let container;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.");}
  401. this._overlays[name]={element,container,callerCloseMethod,canForceClose};}
  402. async unregister(name){if(!this._overlays[name]){throw new Error("The overlay does not exist.");}else if(this._active===name){throw new Error("The overlay cannot be removed while it is active.");}
  403. delete this._overlays[name];}
  404. async open(name){if(!this._overlays[name]){throw new Error("The overlay does not exist.");}else if(this._active){if(this._overlays[name].canForceClose){this._closeThroughCaller();}else if(this._active===name){throw new Error("The overlay is already active.");}else{throw new Error("Another overlay is currently active.");}}
  405. this._active=name;this._overlays[this._active].element.classList.remove("hidden");this._overlays[this._active].container.classList.remove("hidden");window.addEventListener("keydown",this._keyDownBound);}
  406. async close(name){if(!this._overlays[name]){throw new Error("The overlay does not exist.");}else if(!this._active){throw new Error("The overlay is currently not active.");}else if(this._active!==name){throw new Error("Another overlay is currently active.");}
  407. this._overlays[this._active].container.classList.add("hidden");this._overlays[this._active].element.classList.add("hidden");this._active=null;window.removeEventListener("keydown",this._keyDownBound);}
  408. _keyDown(evt){if(this._active&&evt.keyCode===27){this._closeThroughCaller();evt.preventDefault();}}
  409. _closeThroughCaller(){if(this._overlays[this._active].callerCloseMethod){this._overlays[this._active].callerCloseMethod();}
  410. if(this._active){this.close(this._active);}}}
  411. exports.OverlayManager=OverlayManager;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PasswordPrompt=void 0;var _ui_utils=__webpack_require__(2);var _pdfjsLib=__webpack_require__(4);class PasswordPrompt{constructor(options,overlayManager,l10n=_ui_utils.NullL10n){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",e=>{if(e.keyCode===13){this.verify();}});this.overlayManager.register(this.overlayName,this.container,this.close.bind(this),true);}
  412. open(){this.overlayManager.open(this.overlayName).then(()=>{this.input.focus();let promptString;if(this.reason===_pdfjsLib.PasswordResponses.INCORRECT_PASSWORD){promptString=this.l10n.get("password_invalid",null,"Invalid password. Please try again.");}else{promptString=this.l10n.get("password_label",null,"Enter the password to open this PDF file.");}
  413. promptString.then(msg=>{this.label.textContent=msg;});});}
  414. close(){this.overlayManager.close(this.overlayName).then(()=>{this.input.value="";});}
  415. verify(){const password=this.input.value;if(password&&password.length>0){this.close();this.updateCallback(password);}}
  416. setUpdateCallback(updateCallback,reason){this.updateCallback=updateCallback;this.reason=reason;}}
  417. exports.PasswordPrompt=PasswordPrompt;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFAttachmentViewer=void 0;var _pdfjsLib=__webpack_require__(4);class PDFAttachmentViewer{constructor({container,eventBus,downloadManager}){this.container=container;this.eventBus=eventBus;this.downloadManager=downloadManager;this.reset();this.eventBus._on("fileattachmentannotation",this._appendAttachment.bind(this));}
  418. reset(keepRenderedCapability=false){this.attachments=null;this.container.textContent="";if(!keepRenderedCapability){this._renderedCapability=(0,_pdfjsLib.createPromiseCapability)();}}
  419. _dispatchEvent(attachmentsCount){this._renderedCapability.resolve();this.eventBus.dispatch("attachmentsloaded",{source:this,attachmentsCount});}
  420. _bindPdfLink(button,content,filename){if(this.downloadManager.disableCreateObjectURL){throw new Error('bindPdfLink: Unsupported "disableCreateObjectURL" value.');}
  421. let blobUrl;button.onclick=function(){if(!blobUrl){blobUrl=(0,_pdfjsLib.createObjectURL)(content,"application/pdf");}
  422. let viewerUrl;viewerUrl="?file="+encodeURIComponent(blobUrl+"#"+filename);window.open(viewerUrl);return false;};}
  423. _bindLink(button,content,filename){button.onclick=()=>{this.downloadManager.downloadData(content,filename,"");return false;};}
  424. render({attachments,keepRenderedCapability=false}){let attachmentsCount=0;if(this.attachments){this.reset(keepRenderedCapability===true);}
  425. this.attachments=attachments||null;if(!attachments){this._dispatchEvent(attachmentsCount);return;}
  426. const names=Object.keys(attachments).sort(function(a,b){return a.toLowerCase().localeCompare(b.toLowerCase());});attachmentsCount=names.length;for(let i=0;i<attachmentsCount;i++){const item=attachments[names[i]];const filename=(0,_pdfjsLib.removeNullCharacters)((0,_pdfjsLib.getFilenameFromUrl)(item.filename));const div=document.createElement("div");div.className="attachmentsItem";const button=document.createElement("button");button.textContent=filename;if(/\.pdf$/i.test(filename)&&!this.downloadManager.disableCreateObjectURL){this._bindPdfLink(button,item.content,filename);}else{this._bindLink(button,item.content,filename);}
  427. div.appendChild(button);this.container.appendChild(div);}
  428. this._dispatchEvent(attachmentsCount);}
  429. _appendAttachment({id,filename,content}){this._renderedCapability.promise.then(()=>{let attachments=this.attachments;if(!attachments){attachments=Object.create(null);}else{for(const name in attachments){if(id===name){return;}}}
  430. attachments[id]={filename,content};this.render({attachments,keepRenderedCapability:true});});}}
  431. exports.PDFAttachmentViewer=PDFAttachmentViewer;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFDocumentProperties=void 0;var _pdfjsLib=__webpack_require__(4);var _ui_utils=__webpack_require__(2);const DEFAULT_FIELD_CONTENT="-";const NON_METRIC_LOCALES=["en-us","en-lr","my"];const US_PAGE_NAMES={"8.5x11":"Letter","8.5x14":"Legal"};const METRIC_PAGE_NAMES={"297x420":"A3","210x297":"A4"};function getPageName(size,isPortrait,pageNames){const width=isPortrait?size.width:size.height;const height=isPortrait?size.height:size.width;return pageNames[`${width}x${height}`];}
  432. class PDFDocumentProperties{constructor({overlayName,fields,container,closeButton},overlayManager,eventBus,l10n=_ui_utils.NullL10n){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));}
  433. this.overlayManager.register(this.overlayName,this.container,this.close.bind(this));if(eventBus){eventBus._on("pagechanging",evt=>{this._currentPageNumber=evt.pageNumber;});eventBus._on("rotationchanging",evt=>{this._pagesRotation=evt.pagesRotation;});}
  434. this._isNonMetricLocale=true;l10n.getLanguage().then(locale=>{this._isNonMetricLocale=NON_METRIC_LOCALES.includes(locale);});}
  435. open(){const 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(()=>{const currentPageNumber=this._currentPageNumber;const pagesRotation=this._pagesRotation;if(this.fieldData&&currentPageNumber===this.fieldData["_currentPageNumber"]&&pagesRotation===this.fieldData["_pagesRotation"]){this._updateUI();return;}
  436. this.pdfDocument.getMetadata().then(({info,metadata,contentDispositionFilename})=>{return Promise.all([info,metadata,contentDispositionFilename||(0,_ui_utils.getPDFFileNameFromURL)(this.url||""),this._parseFileSize(this.maybeFileSize),this._parseDate(info.CreationDate),this._parseDate(info.ModDate),this.pdfDocument.getPage(currentPageNumber).then(pdfPage=>{return this._parsePageSize((0,_ui_utils.getPageSizeInches)(pdfPage),pagesRotation);}),this._parseLinearization(info.IsLinearized)]);}).then(([info,metadata,fileName,fileSize,creationDate,modDate,pageSize,isLinearized])=>{freezeFieldData({fileName,fileSize,title:info.Title,author:info.Author,subject:info.Subject,keywords:info.Keywords,creationDate,modificationDate:modDate,creator:info.Creator,producer:info.Producer,version:info.PDFFormatVersion,pageCount:this.pdfDocument.numPages,pageSize,linearized:isLinearized,_currentPageNumber:currentPageNumber,_pagesRotation:pagesRotation});this._updateUI();return this.pdfDocument.getDownloadInfo();}).then(({length})=>{this.maybeFileSize=length;return this._parseFileSize(length);}).then(fileSize=>{if(fileSize===this.fieldData["fileSize"]){return;}
  437. const data=Object.assign(Object.create(null),this.fieldData);data["fileSize"]=fileSize;freezeFieldData(data);this._updateUI();});});}
  438. close(){this.overlayManager.close(this.overlayName);}
  439. setDocument(pdfDocument,url=null){if(this.pdfDocument){this._reset();this._updateUI(true);}
  440. if(!pdfDocument){return;}
  441. this.pdfDocument=pdfDocument;this.url=url;this._dataAvailableCapability.resolve();}
  442. setFileSize(fileSize){if(Number.isInteger(fileSize)&&fileSize>0){this.maybeFileSize=fileSize;}}
  443. _reset(){this.pdfDocument=null;this.url=null;this.maybeFileSize=0;delete this.fieldData;this._dataAvailableCapability=(0,_pdfjsLib.createPromiseCapability)();this._currentPageNumber=1;this._pagesRotation=0;}
  444. _updateUI(reset=false){if(reset||!this.fieldData){for(const id in this.fields){this.fields[id].textContent=DEFAULT_FIELD_CONTENT;}
  445. return;}
  446. if(this.overlayManager.active!==this.overlayName){return;}
  447. for(const id in this.fields){const content=this.fieldData[id];this.fields[id].textContent=content||content===0?content:DEFAULT_FIELD_CONTENT;}}
  448. async _parseFileSize(fileSize=0){const kb=fileSize/1024;if(!kb){return 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)");}
  449. return this.l10n.get("document_properties_mb",{size_mb:(+(kb/1024).toPrecision(3)).toLocaleString(),size_b:fileSize.toLocaleString()},"{{size_mb}} MB ({{size_b}} bytes)");}
  450. async _parsePageSize(pageSizeInches,pagesRotation){if(!pageSizeInches){return undefined;}
  451. if(pagesRotation%180!==0){pageSizeInches={width:pageSizeInches.height,height:pageSizeInches.width};}
  452. const isPortrait=(0,_ui_utils.isPortraitOrientation)(pageSizeInches);let sizeInches={width:Math.round(pageSizeInches.width*100)/100,height:Math.round(pageSizeInches.height*100)/100};let sizeMillimeters={width:Math.round(pageSizeInches.width*25.4*10)/10,height:Math.round(pageSizeInches.height*25.4*10)/10};let pageName=null;let rawName=getPageName(sizeInches,isPortrait,US_PAGE_NAMES)||getPageName(sizeMillimeters,isPortrait,METRIC_PAGE_NAMES);if(!rawName&&!(Number.isInteger(sizeMillimeters.width)&&Number.isInteger(sizeMillimeters.height))){const exactMillimeters={width:pageSizeInches.width*25.4,height:pageSizeInches.height*25.4};const intMillimeters={width:Math.round(sizeMillimeters.width),height:Math.round(sizeMillimeters.height)};if(Math.abs(exactMillimeters.width-intMillimeters.width)<0.1&&Math.abs(exactMillimeters.height-intMillimeters.height)<0.1){rawName=getPageName(intMillimeters,isPortrait,METRIC_PAGE_NAMES);if(rawName){sizeInches={width:Math.round(intMillimeters.width/25.4*100)/100,height:Math.round(intMillimeters.height/25.4*100)/100};sizeMillimeters=intMillimeters;}}}
  453. if(rawName){pageName=this.l10n.get("document_properties_page_size_name_"+rawName.toLowerCase(),null,rawName);}
  454. return Promise.all([this._isNonMetricLocale?sizeInches:sizeMillimeters,this.l10n.get("document_properties_page_size_unit_"+(this._isNonMetricLocale?"inches":"millimeters"),null,this._isNonMetricLocale?"in":"mm"),pageName,this.l10n.get("document_properties_page_size_orientation_"+(isPortrait?"portrait":"landscape"),null,isPortrait?"portrait":"landscape")]).then(([{width,height},unit,name,orientation])=>{return this.l10n.get("document_properties_page_size_dimension_"+(name?"name_":"")+"string",{width:width.toLocaleString(),height:height.toLocaleString(),unit,name,orientation},"{{width}} × {{height}} {{unit}} ("+(name?"{{name}}, ":"")+"{{orientation}})");});}
  455. async _parseDate(inputDate){const dateObject=_pdfjsLib.PDFDateString.toDateObject(inputDate);if(!dateObject){return undefined;}
  456. return this.l10n.get("document_properties_date_string",{date:dateObject.toLocaleDateString(),time:dateObject.toLocaleTimeString()},"{{date}}, {{time}}");}
  457. _parseLinearization(isLinearized){return this.l10n.get("document_properties_linearized_"+(isLinearized?"yes":"no"),null,isLinearized?"Yes":"No");}}
  458. exports.PDFDocumentProperties=PDFDocumentProperties;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFFindBar=void 0;var _ui_utils=__webpack_require__(2);var _pdf_find_controller=__webpack_require__(15);const MATCHES_COUNT_LIMIT=1000;class PDFFindBar{constructor(options,eventBus,l10n=_ui_utils.NullL10n){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.entireWord=options.entireWordCheckbox||null;this.findMsg=options.findMsg||null;this.findResultsCount=options.findResultsCount||null;this.findPreviousButton=options.findPreviousButton||null;this.findNextButton=options.findNextButton||null;this.eventBus=eventBus||(0,_ui_utils.getGlobalEventBus)();this.l10n=l10n;this.toggleButton.addEventListener("click",()=>{this.toggle();});this.findField.addEventListener("input",()=>{this.dispatchEvent("");});this.bar.addEventListener("keydown",e=>{switch(e.keyCode){case 13:if(e.target===this.findField){this.dispatchEvent("again",e.shiftKey);}
  459. break;case 27:this.close();break;}});this.findPreviousButton.addEventListener("click",()=>{this.dispatchEvent("again",true);});this.findNextButton.addEventListener("click",()=>{this.dispatchEvent("again",false);});this.highlightAll.addEventListener("click",()=>{this.dispatchEvent("highlightallchange");});this.caseSensitive.addEventListener("click",()=>{this.dispatchEvent("casesensitivitychange");});this.entireWord.addEventListener("click",()=>{this.dispatchEvent("entirewordchange");});this.eventBus._on("resize",this._adjustWidth.bind(this));}
  460. reset(){this.updateUIState();}
  461. dispatchEvent(type,findPrev){this.eventBus.dispatch("find",{source:this,type,query:this.findField.value,phraseSearch:true,caseSensitive:this.caseSensitive.checked,entireWord:this.entireWord.checked,highlightAll:this.highlightAll.checked,findPrevious:findPrev});}
  462. updateUIState(state,previous,matchesCount){let notFound=false;let findMsg="";let 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");}
  463. break;}
  464. this.findField.classList.toggle("notFound",notFound);this.findField.setAttribute("data-status",status);Promise.resolve(findMsg).then(msg=>{this.findMsg.textContent=msg;this._adjustWidth();});this.updateResultsCount(matchesCount);}
  465. updateResultsCount({current=0,total=0}={}){if(!this.findResultsCount){return;}
  466. const limit=MATCHES_COUNT_LIMIT;let matchesCountMsg="";if(total>0){if(total>limit){matchesCountMsg=this.l10n.get("find_match_count_limit",{limit},"More than {{limit}} match"+(limit!==1?"es":""));}else{matchesCountMsg=this.l10n.get("find_match_count",{current,total},"{{current}} of {{total}} match"+(total!==1?"es":""));}}
  467. Promise.resolve(matchesCountMsg).then(msg=>{this.findResultsCount.textContent=msg;this.findResultsCount.classList.toggle("hidden",!total);this._adjustWidth();});}
  468. open(){if(!this.opened){this.opened=true;this.toggleButton.classList.add("toggled");this.bar.classList.remove("hidden");}
  469. this.findField.select();this.findField.focus();this._adjustWidth();}
  470. close(){if(!this.opened){return;}
  471. this.opened=false;this.toggleButton.classList.remove("toggled");this.bar.classList.add("hidden");this.eventBus.dispatch("findbarclose",{source:this});}
  472. toggle(){if(this.opened){this.close();}else{this.open();}}
  473. _adjustWidth(){if(!this.opened){return;}
  474. this.bar.classList.remove("wrapContainers");const findbarHeight=this.bar.clientHeight;const inputContainerHeight=this.bar.firstElementChild.clientHeight;if(findbarHeight>inputContainerHeight){this.bar.classList.add("wrapContainers");}}}
  475. exports.PDFFindBar=PDFFindBar;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFFindController=exports.FindState=void 0;var _ui_utils=__webpack_require__(2);var _pdfjsLib=__webpack_require__(4);var _pdf_find_utils=__webpack_require__(16);const FindState={FOUND:0,NOT_FOUND:1,WRAPPED:2,PENDING:3};exports.FindState=FindState;const FIND_TIMEOUT=250;const MATCH_SCROLL_OFFSET_TOP=-50;const MATCH_SCROLL_OFFSET_LEFT=-400;const CHARACTERS_TO_NORMALIZE={"\u2018":"'","\u2019":"'","\u201A":"'","\u201B":"'","\u201C":'"',"\u201D":'"',"\u201E":'"',"\u201F":'"',"\u00BC":"1/4","\u00BD":"1/2","\u00BE":"3/4"};let normalizationRegex=null;function normalize(text){if(!normalizationRegex){const replace=Object.keys(CHARACTERS_TO_NORMALIZE).join("");normalizationRegex=new RegExp(`[${replace}]`,"g");}
  476. return text.replace(normalizationRegex,function(ch){return CHARACTERS_TO_NORMALIZE[ch];});}
  477. class PDFFindController{constructor({linkService,eventBus}){this._linkService=linkService;this._eventBus=eventBus||(0,_ui_utils.getGlobalEventBus)();this._reset();eventBus._on("findbarclose",this._onFindBarClose.bind(this));}
  478. get highlightMatches(){return this._highlightMatches;}
  479. get pageMatches(){return this._pageMatches;}
  480. get pageMatchesLength(){return this._pageMatchesLength;}
  481. get selected(){return this._selected;}
  482. get state(){return this._state;}
  483. setDocument(pdfDocument){if(this._pdfDocument){this._reset();}
  484. if(!pdfDocument){return;}
  485. this._pdfDocument=pdfDocument;this._firstPageCapability.resolve();}
  486. executeCommand(cmd,state){if(!state){return;}
  487. const pdfDocument=this._pdfDocument;if(this._state===null||this._shouldDirtyMatch(cmd,state)){this._dirtyMatch=true;}
  488. this._state=state;if(cmd!=="findhighlightallchange"){this._updateUIState(FindState.PENDING);}
  489. this._firstPageCapability.promise.then(()=>{if(!this._pdfDocument||pdfDocument&&this._pdfDocument!==pdfDocument){return;}
  490. this._extractText();const findbarClosed=!this._highlightMatches;const pendingTimeout=!!this._findTimeout;if(this._findTimeout){clearTimeout(this._findTimeout);this._findTimeout=null;}
  491. if(cmd==="find"){this._findTimeout=setTimeout(()=>{this._nextMatch();this._findTimeout=null;},FIND_TIMEOUT);}else if(this._dirtyMatch){this._nextMatch();}else if(cmd==="findagain"){this._nextMatch();if(findbarClosed&&this._state.highlightAll){this._updateAllPages();}}else if(cmd==="findhighlightallchange"){if(pendingTimeout){this._nextMatch();}else{this._highlightMatches=true;}
  492. this._updateAllPages();}else{this._nextMatch();}});}
  493. scrollMatchIntoView({element=null,pageIndex=-1,matchIndex=-1}){if(!this._scrollMatches||!element){return;}else if(matchIndex===-1||matchIndex!==this._selected.matchIdx){return;}else if(pageIndex===-1||pageIndex!==this._selected.pageIdx){return;}
  494. this._scrollMatches=false;const spot={top:MATCH_SCROLL_OFFSET_TOP,left:MATCH_SCROLL_OFFSET_LEFT};(0,_ui_utils.scrollIntoView)(element,spot,true);}
  495. _reset(){this._highlightMatches=false;this._scrollMatches=false;this._pdfDocument=null;this._pageMatches=[];this._pageMatchesLength=[];this._state=null;this._selected={pageIdx:-1,matchIdx:-1};this._offset={pageIdx:null,matchIdx:null,wrapped:false};this._extractTextPromises=[];this._pageContents=[];this._matchesCountTotal=0;this._pagesToSearch=null;this._pendingFindMatches=Object.create(null);this._resumePageIdx=null;this._dirtyMatch=false;clearTimeout(this._findTimeout);this._findTimeout=null;this._firstPageCapability=(0,_pdfjsLib.createPromiseCapability)();}
  496. get _query(){if(this._state.query!==this._rawQuery){this._rawQuery=this._state.query;this._normalizedQuery=normalize(this._state.query);}
  497. return this._normalizedQuery;}
  498. _shouldDirtyMatch(cmd,state){if(state.query!==this._state.query){return true;}
  499. switch(cmd){case"findagain":const pageNumber=this._selected.pageIdx+1;const linkService=this._linkService;if(pageNumber>=1&&pageNumber<=linkService.pagesCount&&pageNumber!==linkService.page&&!linkService.isPageVisible(pageNumber)){return true;}
  500. return false;case"findhighlightallchange":return false;}
  501. return true;}
  502. _prepareMatches(matchesWithLength,matches,matchesLength){function isSubTerm(currentIndex){const currentElem=matchesWithLength[currentIndex];const nextElem=matchesWithLength[currentIndex+1];if(currentIndex<matchesWithLength.length-1&&currentElem.match===nextElem.match){currentElem.skipped=true;return true;}
  503. for(let i=currentIndex-1;i>=0;i--){const prevElem=matchesWithLength[i];if(prevElem.skipped){continue;}
  504. if(prevElem.match+prevElem.matchLength<currentElem.match){break;}
  505. if(prevElem.match+prevElem.matchLength>=currentElem.match+currentElem.matchLength){currentElem.skipped=true;return true;}}
  506. return false;}
  507. matchesWithLength.sort(function(a,b){return a.match===b.match?a.matchLength-b.matchLength:a.match-b.match;});for(let i=0,len=matchesWithLength.length;i<len;i++){if(isSubTerm(i)){continue;}
  508. matches.push(matchesWithLength[i].match);matchesLength.push(matchesWithLength[i].matchLength);}}
  509. _isEntireWord(content,startIdx,length){if(startIdx>0){const first=content.charCodeAt(startIdx);const limit=content.charCodeAt(startIdx-1);if((0,_pdf_find_utils.getCharacterType)(first)===(0,_pdf_find_utils.getCharacterType)(limit)){return false;}}
  510. const endIdx=startIdx+length-1;if(endIdx<content.length-1){const last=content.charCodeAt(endIdx);const limit=content.charCodeAt(endIdx+1);if((0,_pdf_find_utils.getCharacterType)(last)===(0,_pdf_find_utils.getCharacterType)(limit)){return false;}}
  511. return true;}
  512. _calculatePhraseMatch(query,pageIndex,pageContent,entireWord){const matches=[];const queryLen=query.length;let matchIdx=-queryLen;while(true){matchIdx=pageContent.indexOf(query,matchIdx+queryLen);if(matchIdx===-1){break;}
  513. if(entireWord&&!this._isEntireWord(pageContent,matchIdx,queryLen)){continue;}
  514. matches.push(matchIdx);}
  515. this._pageMatches[pageIndex]=matches;}
  516. _calculateWordMatch(query,pageIndex,pageContent,entireWord){const matchesWithLength=[];const queryArray=query.match(/\S+/g);for(let i=0,len=queryArray.length;i<len;i++){const subquery=queryArray[i];const subqueryLen=subquery.length;let matchIdx=-subqueryLen;while(true){matchIdx=pageContent.indexOf(subquery,matchIdx+subqueryLen);if(matchIdx===-1){break;}
  517. if(entireWord&&!this._isEntireWord(pageContent,matchIdx,subqueryLen)){continue;}
  518. matchesWithLength.push({match:matchIdx,matchLength:subqueryLen,skipped:false});}}
  519. this._pageMatchesLength[pageIndex]=[];this._pageMatches[pageIndex]=[];this._prepareMatches(matchesWithLength,this._pageMatches[pageIndex],this._pageMatchesLength[pageIndex]);}
  520. _calculateMatch(pageIndex){let pageContent=this._pageContents[pageIndex];let query=this._query;const{caseSensitive,entireWord,phraseSearch}=this._state;if(query.length===0){return;}
  521. if(!caseSensitive){pageContent=pageContent.toLowerCase();query=query.toLowerCase();}
  522. if(phraseSearch){this._calculatePhraseMatch(query,pageIndex,pageContent,entireWord);}else{this._calculateWordMatch(query,pageIndex,pageContent,entireWord);}
  523. if(this._state.highlightAll){this._updatePage(pageIndex);}
  524. if(this._resumePageIdx===pageIndex){this._resumePageIdx=null;this._nextPageMatch();}
  525. const pageMatchesCount=this._pageMatches[pageIndex].length;if(pageMatchesCount>0){this._matchesCountTotal+=pageMatchesCount;this._updateUIResultsCount();}}
  526. _extractText(){if(this._extractTextPromises.length>0){return;}
  527. let promise=Promise.resolve();for(let i=0,ii=this._linkService.pagesCount;i<ii;i++){const extractTextCapability=(0,_pdfjsLib.createPromiseCapability)();this._extractTextPromises[i]=extractTextCapability.promise;promise=promise.then(()=>{return this._pdfDocument.getPage(i+1).then(pdfPage=>{return pdfPage.getTextContent({normalizeWhitespace:true});}).then(textContent=>{const textItems=textContent.items;const strBuf=[];for(let j=0,jj=textItems.length;j<jj;j++){strBuf.push(textItems[j].str);}
  528. this._pageContents[i]=normalize(strBuf.join(""));extractTextCapability.resolve(i);},reason=>{console.error(`Unable to get text content for page ${i + 1}`,reason);this._pageContents[i]="";extractTextCapability.resolve(i);});});}}
  529. _updatePage(index){if(this._scrollMatches&&this._selected.pageIdx===index){this._linkService.page=index+1;}
  530. this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:index});}
  531. _updateAllPages(){this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:-1});}
  532. _nextMatch(){const previous=this._state.findPrevious;const currentPageIndex=this._linkService.page-1;const numPages=this._linkService.pagesCount;this._highlightMatches=true;if(this._dirtyMatch){this._dirtyMatch=false;this._selected.pageIdx=this._selected.matchIdx=-1;this._offset.pageIdx=currentPageIndex;this._offset.matchIdx=null;this._offset.wrapped=false;this._resumePageIdx=null;this._pageMatches.length=0;this._pageMatchesLength.length=0;this._matchesCountTotal=0;this._updateAllPages();for(let i=0;i<numPages;i++){if(this._pendingFindMatches[i]===true){continue;}
  533. this._pendingFindMatches[i]=true;this._extractTextPromises[i].then(pageIdx=>{delete this._pendingFindMatches[pageIdx];this._calculateMatch(pageIdx);});}}
  534. if(this._query===""){this._updateUIState(FindState.FOUND);return;}
  535. if(this._resumePageIdx){return;}
  536. const offset=this._offset;this._pagesToSearch=numPages;if(offset.matchIdx!==null){const numPageMatches=this._pageMatches[offset.pageIdx].length;if(!previous&&offset.matchIdx+1<numPageMatches||previous&&offset.matchIdx>0){offset.matchIdx=previous?offset.matchIdx-1:offset.matchIdx+1;this._updateMatch(true);return;}
  537. this._advanceOffsetPage(previous);}
  538. this._nextPageMatch();}
  539. _matchesReady(matches){const offset=this._offset;const numMatches=matches.length;const previous=this._state.findPrevious;if(numMatches){offset.matchIdx=previous?numMatches-1:0;this._updateMatch(true);return true;}
  540. this._advanceOffsetPage(previous);if(offset.wrapped){offset.matchIdx=null;if(this._pagesToSearch<0){this._updateMatch(false);return true;}}
  541. return false;}
  542. _nextPageMatch(){if(this._resumePageIdx!==null){console.error("There can only be one pending page.");}
  543. let matches=null;do{const pageIdx=this._offset.pageIdx;matches=this._pageMatches[pageIdx];if(!matches){this._resumePageIdx=pageIdx;break;}}while(!this._matchesReady(matches));}
  544. _advanceOffsetPage(previous){const offset=this._offset;const numPages=this._linkService.pagesCount;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;}}
  545. _updateMatch(found=false){let state=FindState.NOT_FOUND;const wrapped=this._offset.wrapped;this._offset.wrapped=false;if(found){const 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);}}
  546. this._updateUIState(state,this._state.findPrevious);if(this._selected.pageIdx!==-1){this._scrollMatches=true;this._updatePage(this._selected.pageIdx);}}
  547. _onFindBarClose(evt){const pdfDocument=this._pdfDocument;this._firstPageCapability.promise.then(()=>{if(!this._pdfDocument||pdfDocument&&this._pdfDocument!==pdfDocument){return;}
  548. if(this._findTimeout){clearTimeout(this._findTimeout);this._findTimeout=null;}
  549. if(this._resumePageIdx){this._resumePageIdx=null;this._dirtyMatch=true;}
  550. this._updateUIState(FindState.FOUND);this._highlightMatches=false;this._updateAllPages();});}
  551. _requestMatchesCount(){const{pageIdx,matchIdx}=this._selected;let current=0,total=this._matchesCountTotal;if(matchIdx!==-1){for(let i=0;i<pageIdx;i++){current+=this._pageMatches[i]&&this._pageMatches[i].length||0;}
  552. current+=matchIdx+1;}
  553. if(current<1||current>total){current=total=0;}
  554. return{current,total};}
  555. _updateUIResultsCount(){this._eventBus.dispatch("updatefindmatchescount",{source:this,matchesCount:this._requestMatchesCount()});}
  556. _updateUIState(state,previous){this._eventBus.dispatch("updatefindcontrolstate",{source:this,state,previous,matchesCount:this._requestMatchesCount()});}}
  557. exports.PDFFindController=PDFFindController;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getCharacterType=getCharacterType;exports.CharacterType=void 0;const CharacterType={SPACE:0,ALPHA_LETTER:1,PUNCT:2,HAN_LETTER:3,KATAKANA_LETTER:4,HIRAGANA_LETTER:5,HALFWIDTH_KATAKANA_LETTER:6,THAI_LETTER:7};exports.CharacterType=CharacterType;function isAlphabeticalScript(charCode){return charCode<0x2e80;}
  558. function isAscii(charCode){return(charCode&0xff80)===0;}
  559. function isAsciiAlpha(charCode){return charCode>=0x61&&charCode<=0x7a||charCode>=0x41&&charCode<=0x5a;}
  560. function isAsciiDigit(charCode){return charCode>=0x30&&charCode<=0x39;}
  561. function isAsciiSpace(charCode){return charCode===0x20||charCode===0x09||charCode===0x0d||charCode===0x0a;}
  562. function isHan(charCode){return charCode>=0x3400&&charCode<=0x9fff||charCode>=0xf900&&charCode<=0xfaff;}
  563. function isKatakana(charCode){return charCode>=0x30a0&&charCode<=0x30ff;}
  564. function isHiragana(charCode){return charCode>=0x3040&&charCode<=0x309f;}
  565. function isHalfwidthKatakana(charCode){return charCode>=0xff60&&charCode<=0xff9f;}
  566. function isThai(charCode){return(charCode&0xff80)===0x0e00;}
  567. function getCharacterType(charCode){if(isAlphabeticalScript(charCode)){if(isAscii(charCode)){if(isAsciiSpace(charCode)){return CharacterType.SPACE;}else if(isAsciiAlpha(charCode)||isAsciiDigit(charCode)||charCode===0x5f){return CharacterType.ALPHA_LETTER;}
  568. return CharacterType.PUNCT;}else if(isThai(charCode)){return CharacterType.THAI_LETTER;}else if(charCode===0xa0){return CharacterType.SPACE;}
  569. return CharacterType.ALPHA_LETTER;}
  570. if(isHan(charCode)){return CharacterType.HAN_LETTER;}else if(isKatakana(charCode)){return CharacterType.KATAKANA_LETTER;}else if(isHiragana(charCode)){return CharacterType.HIRAGANA_LETTER;}else if(isHalfwidthKatakana(charCode)){return CharacterType.HALFWIDTH_KATAKANA_LETTER;}
  571. return CharacterType.ALPHA_LETTER;}}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.isDestHashesEqual=isDestHashesEqual;exports.isDestArraysEqual=isDestArraysEqual;exports.PDFHistory=void 0;var _ui_utils=__webpack_require__(2);const HASH_CHANGE_TIMEOUT=1000;const POSITION_UPDATED_THRESHOLD=50;const UPDATE_VIEWAREA_TIMEOUT=1000;function getCurrentHash(){return document.location.hash;}
  572. class PDFHistory{constructor({linkService,eventBus}){this.linkService=linkService;this.eventBus=eventBus||(0,_ui_utils.getGlobalEventBus)();this._initialized=false;this._fingerprint="";this.reset();this._boundEvents=null;this._isViewerInPresentationMode=false;this.eventBus._on("presentationmodechanged",evt=>{this._isViewerInPresentationMode=evt.active||evt.switchInProgress;});this.eventBus._on("pagesinit",()=>{this._isPagesLoaded=false;const onPagesLoaded=evt=>{this.eventBus._off("pagesloaded",onPagesLoaded);this._isPagesLoaded=!!evt.pagesCount;};this.eventBus._on("pagesloaded",onPagesLoaded);});}
  573. initialize({fingerprint,resetHistory=false,updateUrl=false}){if(!fingerprint||typeof fingerprint!=="string"){console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');return;}
  574. if(this._initialized){this.reset();}
  575. const reInitialized=this._fingerprint!==""&&this._fingerprint!==fingerprint;this._fingerprint=fingerprint;this._updateUrl=updateUrl===true;this._initialized=true;this._bindEvents();const state=window.history.state;this._popStateInProgress=false;this._blockHashChange=0;this._currentHash=getCurrentHash();this._numPositionUpdates=0;this._uid=this._maxUid=0;this._destination=null;this._position=null;if(!this._isValidState(state,true)||resetHistory){const{hash,page,rotation}=this._parseCurrentHash();if(!hash||reInitialized||resetHistory){this._pushOrReplaceState(null,true);return;}
  576. this._pushOrReplaceState({hash,page,rotation},true);return;}
  577. const destination=state.destination;this._updateInternalState(destination,state.uid,true);if(this._uid>this._maxUid){this._maxUid=this._uid;}
  578. if(destination.rotation!==undefined){this._initialRotation=destination.rotation;}
  579. if(destination.dest){this._initialBookmark=JSON.stringify(destination.dest);this._destination.page=null;}else if(destination.hash){this._initialBookmark=destination.hash;}else if(destination.page){this._initialBookmark=`page=${destination.page}`;}}
  580. reset(){if(this._initialized){this._pageHide();this._initialized=false;this._unbindEvents();}
  581. if(this._updateViewareaTimeout){clearTimeout(this._updateViewareaTimeout);this._updateViewareaTimeout=null;}
  582. this._initialBookmark=null;this._initialRotation=null;}
  583. push({namedDest=null,explicitDest,pageNumber}){if(!this._initialized){return;}
  584. if(namedDest&&typeof namedDest!=="string"){console.error("PDFHistory.push: "+`"${namedDest}" is not a valid namedDest parameter.`);return;}else if(!Array.isArray(explicitDest)){console.error("PDFHistory.push: "+`"${explicitDest}" is not a valid explicitDest parameter.`);return;}else if(!(Number.isInteger(pageNumber)&&pageNumber>0&&pageNumber<=this.linkService.pagesCount)){if(pageNumber!==null||this._destination){console.error("PDFHistory.push: "+`"${pageNumber}" is not a valid pageNumber parameter.`);return;}}
  585. const hash=namedDest||JSON.stringify(explicitDest);if(!hash){return;}
  586. let forceReplace=false;if(this._destination&&(isDestHashesEqual(this._destination.hash,hash)||isDestArraysEqual(this._destination.dest,explicitDest))){if(this._destination.page){return;}
  587. forceReplace=true;}
  588. if(this._popStateInProgress&&!forceReplace){return;}
  589. this._pushOrReplaceState({dest:explicitDest,hash,page:pageNumber,rotation:this.linkService.rotation},forceReplace);if(!this._popStateInProgress){this._popStateInProgress=true;Promise.resolve().then(()=>{this._popStateInProgress=false;});}}
  590. pushCurrentPosition(){if(!this._initialized||this._popStateInProgress){return;}
  591. this._tryPushCurrentPosition();}
  592. back(){if(!this._initialized||this._popStateInProgress){return;}
  593. const state=window.history.state;if(this._isValidState(state)&&state.uid>0){window.history.back();}}
  594. forward(){if(!this._initialized||this._popStateInProgress){return;}
  595. const state=window.history.state;if(this._isValidState(state)&&state.uid<this._maxUid){window.history.forward();}}
  596. get popStateInProgress(){return this._initialized&&(this._popStateInProgress||this._blockHashChange>0);}
  597. get initialBookmark(){return this._initialized?this._initialBookmark:null;}
  598. get initialRotation(){return this._initialized?this._initialRotation:null;}
  599. _pushOrReplaceState(destination,forceReplace=false){const shouldReplace=forceReplace||!this._destination;const newState={fingerprint:this._fingerprint,uid:shouldReplace?this._uid:this._uid+1,destination};this._updateInternalState(destination,newState.uid);let newUrl;if(this._updateUrl&&destination&&destination.hash){const baseUrl=document.location.href.split("#")[0];if(!baseUrl.startsWith("file://")){newUrl=`${baseUrl}#${destination.hash}`;}}
  600. if(shouldReplace){window.history.replaceState(newState,"",newUrl);}else{this._maxUid=this._uid;window.history.pushState(newState,"",newUrl);}}
  601. _tryPushCurrentPosition(temporary=false){if(!this._position){return;}
  602. let position=this._position;if(temporary){position=Object.assign(Object.create(null),this._position);position.temporary=true;}
  603. if(!this._destination){this._pushOrReplaceState(position);return;}
  604. if(this._destination.temporary){this._pushOrReplaceState(position,true);return;}
  605. if(this._destination.hash===position.hash){return;}
  606. if(!this._destination.page&&(POSITION_UPDATED_THRESHOLD<=0||this._numPositionUpdates<=POSITION_UPDATED_THRESHOLD)){return;}
  607. let forceReplace=false;if(this._destination.page>=position.first&&this._destination.page<=position.page){if(this._destination.dest||!this._destination.first){return;}
  608. forceReplace=true;}
  609. this._pushOrReplaceState(position,forceReplace);}
  610. _isValidState(state,checkReload=false){if(!state){return false;}
  611. if(state.fingerprint!==this._fingerprint){if(checkReload){if(typeof state.fingerprint!=="string"||state.fingerprint.length!==this._fingerprint.length){return false;}
  612. const[perfEntry]=performance.getEntriesByType("navigation");if(!perfEntry||perfEntry.type!=="reload"){return false;}}else{return false;}}
  613. if(!Number.isInteger(state.uid)||state.uid<0){return false;}
  614. if(state.destination===null||typeof state.destination!=="object"){return false;}
  615. return true;}
  616. _updateInternalState(destination,uid,removeTemporary=false){if(this._updateViewareaTimeout){clearTimeout(this._updateViewareaTimeout);this._updateViewareaTimeout=null;}
  617. if(removeTemporary&&destination&&destination.temporary){delete destination.temporary;}
  618. this._destination=destination;this._uid=uid;this._numPositionUpdates=0;}
  619. _parseCurrentHash(){const hash=unescape(getCurrentHash()).substring(1);let page=(0,_ui_utils.parseQueryString)(hash).page|0;if(!(Number.isInteger(page)&&page>0&&page<=this.linkService.pagesCount)){page=null;}
  620. return{hash,page,rotation:this.linkService.rotation};}
  621. _updateViewarea({location}){if(this._updateViewareaTimeout){clearTimeout(this._updateViewareaTimeout);this._updateViewareaTimeout=null;}
  622. this._position={hash:this._isViewerInPresentationMode?`page=${location.pageNumber}`:location.pdfOpenParams.substring(1),page:this.linkService.page,first:location.pageNumber,rotation:location.rotation};if(this._popStateInProgress){return;}
  623. if(POSITION_UPDATED_THRESHOLD>0&&this._isPagesLoaded&&this._destination&&!this._destination.page){this._numPositionUpdates++;}
  624. if(UPDATE_VIEWAREA_TIMEOUT>0){this._updateViewareaTimeout=setTimeout(()=>{if(!this._popStateInProgress){this._tryPushCurrentPosition(true);}
  625. this._updateViewareaTimeout=null;},UPDATE_VIEWAREA_TIMEOUT);}}
  626. _popState({state}){const newHash=getCurrentHash(),hashChanged=this._currentHash!==newHash;this._currentHash=newHash;if(!state){this._uid++;const{hash,page,rotation}=this._parseCurrentHash();this._pushOrReplaceState({hash,page,rotation},true);return;}
  627. if(!this._isValidState(state)){return;}
  628. this._popStateInProgress=true;if(hashChanged){this._blockHashChange++;(0,_ui_utils.waitOnEventOrTimeout)({target:window,name:"hashchange",delay:HASH_CHANGE_TIMEOUT}).then(()=>{this._blockHashChange--;});}
  629. const destination=state.destination;this._updateInternalState(destination,state.uid,true);if(this._uid>this._maxUid){this._maxUid=this._uid;}
  630. if((0,_ui_utils.isValidRotation)(destination.rotation)){this.linkService.rotation=destination.rotation;}
  631. if(destination.dest){this.linkService.navigateTo(destination.dest);}else if(destination.hash){this.linkService.setHash(destination.hash);}else if(destination.page){this.linkService.page=destination.page;}
  632. Promise.resolve().then(()=>{this._popStateInProgress=false;});}
  633. _pageHide(){if(!this._destination||this._destination.temporary){this._tryPushCurrentPosition();}}
  634. _bindEvents(){if(this._boundEvents){return;}
  635. this._boundEvents={updateViewarea:this._updateViewarea.bind(this),popState:this._popState.bind(this),pageHide:this._pageHide.bind(this)};this.eventBus._on("updateviewarea",this._boundEvents.updateViewarea);window.addEventListener("popstate",this._boundEvents.popState);window.addEventListener("pagehide",this._boundEvents.pageHide);}
  636. _unbindEvents(){if(!this._boundEvents){return;}
  637. this.eventBus._off("updateviewarea",this._boundEvents.updateViewarea);window.removeEventListener("popstate",this._boundEvents.popState);window.removeEventListener("pagehide",this._boundEvents.pageHide);this._boundEvents=null;}}
  638. exports.PDFHistory=PDFHistory;function isDestHashesEqual(destHash,pushHash){if(typeof destHash!=="string"||typeof pushHash!=="string"){return false;}
  639. if(destHash===pushHash){return true;}
  640. const{nameddest}=(0,_ui_utils.parseQueryString)(destHash);if(nameddest===pushHash){return true;}
  641. return false;}
  642. function isDestArraysEqual(firstDest,secondDest){function isEntryEqual(first,second){if(typeof first!==typeof second){return false;}
  643. if(Array.isArray(first)||Array.isArray(second)){return false;}
  644. if(first!==null&&typeof first==="object"&&second!==null){if(Object.keys(first).length!==Object.keys(second).length){return false;}
  645. for(const key in first){if(!isEntryEqual(first[key],second[key])){return false;}}
  646. return true;}
  647. return first===second||Number.isNaN(first)&&Number.isNaN(second);}
  648. if(!(Array.isArray(firstDest)&&Array.isArray(secondDest))){return false;}
  649. if(firstDest.length!==secondDest.length){return false;}
  650. for(let i=0,ii=firstDest.length;i<ii;i++){if(!isEntryEqual(firstDest[i],secondDest[i])){return false;}}
  651. return true;}}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SimpleLinkService=exports.PDFLinkService=void 0;var _ui_utils=__webpack_require__(2);class PDFLinkService{constructor({eventBus,externalLinkTarget=null,externalLinkRel=null,externalLinkEnabled=true,ignoreDestinationZoom=false}={}){this.eventBus=eventBus||(0,_ui_utils.getGlobalEventBus)();this.externalLinkTarget=externalLinkTarget;this.externalLinkRel=externalLinkRel;this.externalLinkEnabled=externalLinkEnabled;this._ignoreDestinationZoom=ignoreDestinationZoom;this.baseUrl=null;this.pdfDocument=null;this.pdfViewer=null;this.pdfHistory=null;this._pagesRefCache=null;}
  652. setDocument(pdfDocument,baseUrl=null){this.baseUrl=baseUrl;this.pdfDocument=pdfDocument;this._pagesRefCache=Object.create(null);}
  653. setViewer(pdfViewer){this.pdfViewer=pdfViewer;}
  654. setHistory(pdfHistory){this.pdfHistory=pdfHistory;}
  655. get pagesCount(){return this.pdfDocument?this.pdfDocument.numPages:0;}
  656. get page(){return this.pdfViewer.currentPageNumber;}
  657. set page(value){this.pdfViewer.currentPageNumber=value;}
  658. get rotation(){return this.pdfViewer.pagesRotation;}
  659. set rotation(value){this.pdfViewer.pagesRotation=value;}
  660. navigateTo(dest){const goToDestination=({namedDest,explicitDest})=>{const destRef=explicitDest[0];let pageNumber;if(destRef instanceof Object){pageNumber=this._cachedPageNumber(destRef);if(pageNumber===null){this.pdfDocument.getPageIndex(destRef).then(pageIndex=>{this.cachePageRef(pageIndex+1,destRef);goToDestination({namedDest,explicitDest});}).catch(()=>{console.error(`PDFLinkService.navigateTo: "${destRef}" is not `+`a valid page reference, for dest="${dest}".`);});return;}}else if(Number.isInteger(destRef)){pageNumber=destRef+1;}else{console.error(`PDFLinkService.navigateTo: "${destRef}" is not `+`a valid destination reference, for dest="${dest}".`);return;}
  661. if(!pageNumber||pageNumber<1||pageNumber>this.pagesCount){console.error(`PDFLinkService.navigateTo: "${pageNumber}" is not `+`a valid page number, for dest="${dest}".`);return;}
  662. if(this.pdfHistory){this.pdfHistory.pushCurrentPosition();this.pdfHistory.push({namedDest,explicitDest,pageNumber});}
  663. this.pdfViewer.scrollPageIntoView({pageNumber,destArray:explicitDest,ignoreDestinationZoom:this._ignoreDestinationZoom});};new Promise((resolve,reject)=>{if(typeof dest==="string"){this.pdfDocument.getDestination(dest).then(destArray=>{resolve({namedDest:dest,explicitDest:destArray});});return;}
  664. resolve({namedDest:"",explicitDest:dest});}).then(data=>{if(!Array.isArray(data.explicitDest)){console.error(`PDFLinkService.navigateTo: "${data.explicitDest}" is`+` not a valid destination array, for dest="${dest}".`);return;}
  665. goToDestination(data);});}
  666. getDestinationHash(dest){if(typeof dest==="string"){return this.getAnchorUrl("#"+escape(dest));}
  667. if(Array.isArray(dest)){const str=JSON.stringify(dest);return this.getAnchorUrl("#"+escape(str));}
  668. return this.getAnchorUrl("");}
  669. getAnchorUrl(anchor){return(this.baseUrl||"")+anchor;}
  670. setHash(hash){let pageNumber,dest;if(hash.includes("=")){const 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"});}
  671. if("nameddest"in params){this.navigateTo(params.nameddest);return;}
  672. if("page"in params){pageNumber=params.page|0||1;}
  673. if("zoom"in params){const zoomArgs=params.zoom.split(",");const zoomArg=zoomArgs[0];const zoomArgNumber=parseFloat(zoomArg);if(!zoomArg.includes("Fit")){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.");}}}
  674. if(dest){this.pdfViewer.scrollPageIntoView({pageNumber:pageNumber||this.page,destArray:dest,allowNegativeOffset:true});}else if(pageNumber){this.page=pageNumber;}
  675. if("pagemode"in params){this.eventBus.dispatch("pagemode",{source:this,mode:params.pagemode});}}else{dest=unescape(hash);try{dest=JSON.parse(dest);if(!Array.isArray(dest)){dest=dest.toString();}}catch(ex){}
  676. if(typeof dest==="string"||isValidExplicitDestination(dest)){this.navigateTo(dest);return;}
  677. console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not `+"a valid destination.");}}
  678. executeNamedAction(action){switch(action){case"GoBack":if(this.pdfHistory){this.pdfHistory.back();}
  679. break;case"GoForward":if(this.pdfHistory){this.pdfHistory.forward();}
  680. break;case"NextPage":if(this.page<this.pagesCount){this.page++;}
  681. break;case"PrevPage":if(this.page>1){this.page--;}
  682. break;case"LastPage":this.page=this.pagesCount;break;case"FirstPage":this.page=1;break;default:break;}
  683. this.eventBus.dispatch("namedaction",{source:this,action});}
  684. cachePageRef(pageNum,pageRef){if(!pageRef){return;}
  685. const refStr=pageRef.gen===0?`${pageRef.num}R`:`${pageRef.num}R${pageRef.gen}`;this._pagesRefCache[refStr]=pageNum;}
  686. _cachedPageNumber(pageRef){const refStr=pageRef.gen===0?`${pageRef.num}R`:`${pageRef.num}R${pageRef.gen}`;return this._pagesRefCache&&this._pagesRefCache[refStr]||null;}
  687. isPageVisible(pageNumber){return this.pdfViewer.isPageVisible(pageNumber);}}
  688. exports.PDFLinkService=PDFLinkService;function isValidExplicitDestination(dest){if(!Array.isArray(dest)){return false;}
  689. const destLength=dest.length;if(destLength<2){return false;}
  690. const page=dest[0];if(!(typeof page==="object"&&Number.isInteger(page.num)&&Number.isInteger(page.gen))&&!(Number.isInteger(page)&&page>=0)){return false;}
  691. const zoom=dest[1];if(!(typeof zoom==="object"&&typeof zoom.name==="string")){return false;}
  692. let allowNull=true;switch(zoom.name){case"XYZ":if(destLength!==5){return false;}
  693. break;case"Fit":case"FitB":return destLength===2;case"FitH":case"FitBH":case"FitV":case"FitBV":if(destLength!==3){return false;}
  694. break;case"FitR":if(destLength!==6){return false;}
  695. allowNull=false;break;default:return false;}
  696. for(let i=2;i<destLength;i++){const param=dest[i];if(!(typeof param==="number"||allowNull&&param===null)){return false;}}
  697. return true;}
  698. class SimpleLinkService{constructor(){this.externalLinkTarget=null;this.externalLinkRel=null;this.externalLinkEnabled=true;this._ignoreDestinationZoom=false;}
  699. get pagesCount(){return 0;}
  700. get page(){return 0;}
  701. set page(value){}
  702. get rotation(){return 0;}
  703. set rotation(value){}
  704. navigateTo(dest){}
  705. getDestinationHash(dest){return"#";}
  706. getAnchorUrl(hash){return"#";}
  707. setHash(hash){}
  708. executeNamedAction(action){}
  709. cachePageRef(pageNum,pageRef){}
  710. isPageVisible(pageNumber){return true;}}
  711. exports.SimpleLinkService=SimpleLinkService;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFOutlineViewer=void 0;var _pdfjsLib=__webpack_require__(4);const DEFAULT_TITLE="\u2013";class PDFOutlineViewer{constructor({container,linkService,eventBus}){this.container=container;this.linkService=linkService;this.eventBus=eventBus;this.reset();eventBus._on("toggleoutlinetree",this.toggleOutlineTree.bind(this));}
  712. reset(){this.outline=null;this.lastToggleIsShow=true;this.container.textContent="";this.container.classList.remove("outlineWithDeepNesting");}
  713. _dispatchEvent(outlineCount){this.eventBus.dispatch("outlineloaded",{source:this,outlineCount});}
  714. _bindLink(element,{url,newWindow,dest}){const{linkService}=this;if(url){(0,_pdfjsLib.addLinkAttributes)(element,{url,target:newWindow?_pdfjsLib.LinkTarget.BLANK:linkService.externalLinkTarget,rel:linkService.externalLinkRel,enabled:linkService.externalLinkEnabled});return;}
  715. element.href=linkService.getDestinationHash(dest);element.onclick=()=>{if(dest){linkService.navigateTo(dest);}
  716. return false;};}
  717. _setStyles(element,{bold,italic}){if(bold){element.style.fontWeight="bold";}
  718. if(italic){element.style.fontStyle="italic";}}
  719. _addToggleButton(div,{count,items}){const toggler=document.createElement("div");toggler.className="outlineItemToggler";if(count<0&&Math.abs(count)===items.length){toggler.classList.add("outlineItemsHidden");}
  720. toggler.onclick=evt=>{evt.stopPropagation();toggler.classList.toggle("outlineItemsHidden");if(evt.shiftKey){const shouldShowAll=!toggler.classList.contains("outlineItemsHidden");this._toggleOutlineItem(div,shouldShowAll);}};div.insertBefore(toggler,div.firstChild);}
  721. _toggleOutlineItem(root,show=false){this.lastToggleIsShow=show;for(const toggler of root.querySelectorAll(".outlineItemToggler")){toggler.classList.toggle("outlineItemsHidden",!show);}}
  722. toggleOutlineTree(){if(!this.outline){return;}
  723. this._toggleOutlineItem(this.container,!this.lastToggleIsShow);}
  724. render({outline}){let outlineCount=0;if(this.outline){this.reset();}
  725. this.outline=outline||null;if(!outline){this._dispatchEvent(outlineCount);return;}
  726. const fragment=document.createDocumentFragment();const queue=[{parent:fragment,items:this.outline}];let hasAnyNesting=false;while(queue.length>0){const levelData=queue.shift();for(const item of levelData.items){const div=document.createElement("div");div.className="outlineItem";const 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,item);const itemsDiv=document.createElement("div");itemsDiv.className="outlineItems";div.appendChild(itemsDiv);queue.push({parent:itemsDiv,items:item.items});}
  727. levelData.parent.appendChild(div);outlineCount++;}}
  728. if(hasAnyNesting){this.container.classList.add("outlineWithDeepNesting");this.lastToggleIsShow=fragment.querySelectorAll(".outlineItemsHidden").length===0;}
  729. this.container.appendChild(fragment);this._dispatchEvent(outlineCount);}}
  730. exports.PDFOutlineViewer=PDFOutlineViewer;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFPresentationMode=void 0;var _ui_utils=__webpack_require__(2);const DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS=1500;const DELAY_BEFORE_HIDING_CONTROLS=3000;const ACTIVE_SELECTOR="pdfPresentationMode";const CONTROLS_SELECTOR="pdfPresentationModeControls";const MOUSE_SCROLL_COOLDOWN_TIME=50;const PAGE_SWITCH_THRESHOLD=0.1;const SWIPE_MIN_DISTANCE_THRESHOLD=50;const SWIPE_ANGLE_THRESHOLD=Math.PI/6;class PDFPresentationMode{constructor({container,pdfViewer,eventBus,contextMenuItems=null}){this.container=container;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",()=>{this.contextMenuOpen=false;this.eventBus.dispatch("firstpage",{source:this});});contextMenuItems.contextLastPage.addEventListener("click",()=>{this.contextMenuOpen=false;this.eventBus.dispatch("lastpage",{source:this});});contextMenuItems.contextPageRotateCw.addEventListener("click",()=>{this.contextMenuOpen=false;this.eventBus.dispatch("rotatecw",{source:this});});contextMenuItems.contextPageRotateCcw.addEventListener("click",()=>{this.contextMenuOpen=false;this.eventBus.dispatch("rotateccw",{source:this});});}}
  731. request(){if(this.switchInProgress||this.active||!this.pdfViewer.pagesCount){return false;}
  732. 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;}
  733. this.args={page:this.pdfViewer.currentPageNumber,previousScale:this.pdfViewer.currentScaleValue};return true;}
  734. _mouseWheel(evt){if(!this.active){return;}
  735. evt.preventDefault();const delta=(0,_ui_utils.normalizeWheelEventDelta)(evt);const currentTime=new Date().getTime();const storedTime=this.mouseScrollTimeStamp;if(currentTime>storedTime&&currentTime-storedTime<MOUSE_SCROLL_COOLDOWN_TIME){return;}
  736. if(this.mouseScrollDelta>0&&delta<0||this.mouseScrollDelta<0&&delta>0){this._resetMouseScrollState();}
  737. this.mouseScrollDelta+=delta;if(Math.abs(this.mouseScrollDelta)>=PAGE_SWITCH_THRESHOLD){const totalDelta=this.mouseScrollDelta;this._resetMouseScrollState();const success=totalDelta>0?this._goToPreviousPage():this._goToNextPage();if(success){this.mouseScrollTimeStamp=currentTime;}}}
  738. get isFullscreen(){return!!(document.fullscreenElement||document.mozFullScreen||document.webkitIsFullScreen||document.msFullscreenElement);}
  739. _goToPreviousPage(){const page=this.pdfViewer.currentPageNumber;if(page<=1){return false;}
  740. this.pdfViewer.currentPageNumber=page-1;return true;}
  741. _goToNextPage(){const page=this.pdfViewer.currentPageNumber;if(page>=this.pdfViewer.pagesCount){return false;}
  742. this.pdfViewer.currentPageNumber=page+1;return true;}
  743. _notifyStateChange(){this.eventBus.dispatch("presentationmodechanged",{source:this,active:this.active,switchInProgress:!!this.switchInProgress});}
  744. _setSwitchInProgress(){if(this.switchInProgress){clearTimeout(this.switchInProgress);}
  745. this.switchInProgress=setTimeout(()=>{this._removeFullscreenChangeListeners();delete this.switchInProgress;this._notifyStateChange();},DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);}
  746. _resetSwitchInProgress(){if(this.switchInProgress){clearTimeout(this.switchInProgress);delete this.switchInProgress;}}
  747. _enter(){this.active=true;this._resetSwitchInProgress();this._notifyStateChange();this.container.classList.add(ACTIVE_SELECTOR);setTimeout(()=>{this.pdfViewer.currentPageNumber=this.args.page;this.pdfViewer.currentScaleValue="page-fit";},0);this._addWindowListeners();this._showControls();this.contextMenuOpen=false;this.container.setAttribute("contextmenu","viewerContextMenu");window.getSelection().removeAllRanges();}
  748. _exit(){const page=this.pdfViewer.currentPageNumber;this.container.classList.remove(ACTIVE_SELECTOR);setTimeout(()=>{this.active=false;this._removeFullscreenChangeListeners();this._notifyStateChange();this.pdfViewer.currentScaleValue=this.args.previousScale;this.pdfViewer.currentPageNumber=page;this.args=null;},0);this._removeWindowListeners();this._hideControls();this._resetMouseScrollState();this.container.removeAttribute("contextmenu");this.contextMenuOpen=false;}
  749. _mouseDown(evt){if(this.contextMenuOpen){this.contextMenuOpen=false;evt.preventDefault();return;}
  750. if(evt.button===0){const isInternalLink=evt.target.href&&evt.target.classList.contains("internalLink");if(!isInternalLink){evt.preventDefault();if(evt.shiftKey){this._goToPreviousPage();}else{this._goToNextPage();}}}}
  751. _contextMenu(){this.contextMenuOpen=true;}
  752. _showControls(){if(this.controlsTimeout){clearTimeout(this.controlsTimeout);}else{this.container.classList.add(CONTROLS_SELECTOR);}
  753. this.controlsTimeout=setTimeout(()=>{this.container.classList.remove(CONTROLS_SELECTOR);delete this.controlsTimeout;},DELAY_BEFORE_HIDING_CONTROLS);}
  754. _hideControls(){if(!this.controlsTimeout){return;}
  755. clearTimeout(this.controlsTimeout);this.container.classList.remove(CONTROLS_SELECTOR);delete this.controlsTimeout;}
  756. _resetMouseScrollState(){this.mouseScrollTimeStamp=0;this.mouseScrollDelta=0;}
  757. _touchSwipe(evt){if(!this.active){return;}
  758. if(evt.touches.length>1){this.touchSwipeState=null;return;}
  759. 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;}
  760. this.touchSwipeState.endX=evt.touches[0].pageX;this.touchSwipeState.endY=evt.touches[0].pageY;evt.preventDefault();break;case"touchend":if(this.touchSwipeState===null){return;}
  761. let delta=0;const dx=this.touchSwipeState.endX-this.touchSwipeState.startX;const dy=this.touchSwipeState.endY-this.touchSwipeState.startY;const 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;}
  762. if(delta>0){this._goToPreviousPage();}else if(delta<0){this._goToNextPage();}
  763. break;}}
  764. _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);}
  765. _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;}
  766. _fullscreenChange(){if(this.isFullscreen){this._enter();}else{this._exit();}}
  767. _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);}
  768. _removeFullscreenChangeListeners(){window.removeEventListener("fullscreenchange",this.fullscreenChangeBind);window.removeEventListener("mozfullscreenchange",this.fullscreenChangeBind);window.removeEventListener("webkitfullscreenchange",this.fullscreenChangeBind);window.removeEventListener("MSFullscreenChange",this.fullscreenChangeBind);delete this.fullscreenChangeBind;}}
  769. exports.PDFPresentationMode=PDFPresentationMode;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFSidebarResizer=void 0;var _ui_utils=__webpack_require__(2);const SIDEBAR_WIDTH_VAR="--sidebar-width";const SIDEBAR_MIN_WIDTH=200;const SIDEBAR_RESIZING_CLASS="sidebarResizing";class PDFSidebarResizer{constructor(options,eventBus,l10n=_ui_utils.NullL10n){this.enabled=false;this.isRTL=false;this.sidebarOpen=false;this.doc=document.documentElement;this._width=null;this._outerContainerWidth=null;this._boundEvents=Object.create(null);this.outerContainer=options.outerContainer;this.resizer=options.resizer;this.eventBus=eventBus;this.l10n=l10n;if(typeof CSS==="undefined"||typeof CSS.supports!=="function"||!CSS.supports(SIDEBAR_WIDTH_VAR,`calc(-1 * ${SIDEBAR_MIN_WIDTH}px)`)){console.warn("PDFSidebarResizer: "+"The browser does not support resizing of the sidebar.");return;}
  770. this.enabled=true;this.resizer.classList.remove("hidden");this.l10n.getDirection().then(dir=>{this.isRTL=dir==="rtl";});this._addEventListeners();}
  771. get outerContainerWidth(){if(!this._outerContainerWidth){this._outerContainerWidth=this.outerContainer.clientWidth;}
  772. return this._outerContainerWidth;}
  773. _updateWidth(width=0){if(!this.enabled){return false;}
  774. const newWidth=(0,_ui_utils.clamp)(width,SIDEBAR_MIN_WIDTH,Math.floor(this.outerContainerWidth/2));if(newWidth===this._width){return false;}
  775. this._width=newWidth;this.doc.style.setProperty(SIDEBAR_WIDTH_VAR,`${newWidth}px`);return true;}
  776. _mouseMove(evt){let width=evt.clientX;if(this.isRTL){width=this.outerContainerWidth-width;}
  777. this._updateWidth(width);}
  778. _mouseUp(evt){this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);this.eventBus.dispatch("resize",{source:this});const _boundEvents=this._boundEvents;window.removeEventListener("mousemove",_boundEvents.mouseMove);window.removeEventListener("mouseup",_boundEvents.mouseUp);}
  779. _addEventListeners(){if(!this.enabled){return;}
  780. const _boundEvents=this._boundEvents;_boundEvents.mouseMove=this._mouseMove.bind(this);_boundEvents.mouseUp=this._mouseUp.bind(this);this.resizer.addEventListener("mousedown",evt=>{if(evt.button!==0){return;}
  781. this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);window.addEventListener("mousemove",_boundEvents.mouseMove);window.addEventListener("mouseup",_boundEvents.mouseUp);});this.eventBus._on("sidebarviewchanged",evt=>{this.sidebarOpen=!!(evt&&evt.view);});this.eventBus._on("resize",evt=>{if(!evt||evt.source!==window){return;}
  782. this._outerContainerWidth=null;if(!this._width){return;}
  783. if(!this.sidebarOpen){this._updateWidth(this._width);return;}
  784. this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);const updated=this._updateWidth(this._width);Promise.resolve().then(()=>{this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);if(updated){this.eventBus.dispatch("resize",{source:this});}});});}}
  785. exports.PDFSidebarResizer=PDFSidebarResizer;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFThumbnailViewer=void 0;var _ui_utils=__webpack_require__(2);var _pdf_thumbnail_view=__webpack_require__(23);const THUMBNAIL_SCROLL_MARGIN=-19;const THUMBNAIL_SELECTED_CLASS="selected";class PDFThumbnailViewer{constructor({container,linkService,renderingQueue,l10n=_ui_utils.NullL10n}){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();}
  786. _scrollUpdated(){this.renderingQueue.renderHighestPriority();}
  787. getThumbnail(index){return this._thumbnails[index];}
  788. _getVisibleThumbs(){return(0,_ui_utils.getVisibleElements)(this.container,this._thumbnails);}
  789. scrollThumbnailIntoView(pageNumber){if(!this.pdfDocument){return;}
  790. const thumbnailView=this._thumbnails[pageNumber-1];if(!thumbnailView){console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.');return;}
  791. if(pageNumber!==this._currentPageNumber){const prevThumbnailView=this._thumbnails[this._currentPageNumber-1];prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);}
  792. const visibleThumbs=this._getVisibleThumbs();const numVisibleThumbs=visibleThumbs.views.length;if(numVisibleThumbs>0){const first=visibleThumbs.first.id;const last=numVisibleThumbs>1?visibleThumbs.last.id:first;let shouldScroll=false;if(pageNumber<=first||pageNumber>=last){shouldScroll=true;}else{visibleThumbs.views.some(function(view){if(view.id!==pageNumber){return false;}
  793. shouldScroll=view.percent<100;return true;});}
  794. if(shouldScroll){(0,_ui_utils.scrollIntoView)(thumbnailView.div,{top:THUMBNAIL_SCROLL_MARGIN});}}
  795. this._currentPageNumber=pageNumber;}
  796. get pagesRotation(){return this._pagesRotation;}
  797. set pagesRotation(rotation){if(!(0,_ui_utils.isValidRotation)(rotation)){throw new Error("Invalid thumbnails rotation angle.");}
  798. if(!this.pdfDocument){return;}
  799. if(this._pagesRotation===rotation){return;}
  800. this._pagesRotation=rotation;for(let i=0,ii=this._thumbnails.length;i<ii;i++){this._thumbnails[i].update(rotation);}}
  801. cleanup(){_pdf_thumbnail_view.PDFThumbnailView.cleanup();}
  802. _resetView(){this._thumbnails=[];this._currentPageNumber=1;this._pageLabels=null;this._pagesRotation=0;this._pagesRequests=new WeakMap();this.container.textContent="";}
  803. setDocument(pdfDocument){if(this.pdfDocument){this._cancelRendering();this._resetView();}
  804. this.pdfDocument=pdfDocument;if(!pdfDocument){return;}
  805. pdfDocument.getPage(1).then(firstPdfPage=>{const pagesCount=pdfDocument.numPages;const viewport=firstPdfPage.getViewport({scale:1});for(let pageNum=1;pageNum<=pagesCount;++pageNum){const 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);}
  806. const firstThumbnailView=this._thumbnails[0];if(firstThumbnailView){firstThumbnailView.setPdfPage(firstPdfPage);}
  807. const thumbnailView=this._thumbnails[this._currentPageNumber-1];thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);}).catch(reason=>{console.error("Unable to initialize thumbnail viewer",reason);});}
  808. _cancelRendering(){for(let i=0,ii=this._thumbnails.length;i<ii;i++){if(this._thumbnails[i]){this._thumbnails[i].cancelRendering();}}}
  809. setPageLabels(labels){if(!this.pdfDocument){return;}
  810. if(!labels){this._pageLabels=null;}else if(!(Array.isArray(labels)&&this.pdfDocument.numPages===labels.length)){this._pageLabels=null;console.error("PDFThumbnailViewer_setPageLabels: Invalid page labels.");}else{this._pageLabels=labels;}
  811. for(let i=0,ii=this._thumbnails.length;i<ii;i++){const label=this._pageLabels&&this._pageLabels[i];this._thumbnails[i].setPageLabel(label);}}
  812. _ensurePdfPageLoaded(thumbView){if(thumbView.pdfPage){return Promise.resolve(thumbView.pdfPage);}
  813. if(this._pagesRequests.has(thumbView)){return this._pagesRequests.get(thumbView);}
  814. const promise=this.pdfDocument.getPage(thumbView.id).then(pdfPage=>{if(!thumbView.pdfPage){thumbView.setPdfPage(pdfPage);}
  815. this._pagesRequests.delete(thumbView);return pdfPage;}).catch(reason=>{console.error("Unable to get page for thumb view",reason);this._pagesRequests.delete(thumbView);});this._pagesRequests.set(thumbView,promise);return promise;}
  816. forceRendering(){const visibleThumbs=this._getVisibleThumbs();const thumbView=this.renderingQueue.getHighestPriority(visibleThumbs,this._thumbnails,this.scroll.down);if(thumbView){this._ensurePdfPageLoaded(thumbView).then(()=>{this.renderingQueue.renderView(thumbView);});return true;}
  817. return false;}}
  818. exports.PDFThumbnailViewer=PDFThumbnailViewer;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFThumbnailView=void 0;var _pdfjsLib=__webpack_require__(4);var _ui_utils=__webpack_require__(2);var _pdf_rendering_queue=__webpack_require__(8);const MAX_NUM_SCALING_STEPS=3;const THUMBNAIL_CANVAS_BORDER_WIDTH=1;const THUMBNAIL_WIDTH=98;const TempImageFactory=function TempImageFactoryClosure(){let tempCanvasCache=null;return{getCanvas(width,height){let tempCanvas=tempCanvasCache;if(!tempCanvas){tempCanvas=document.createElement("canvas");tempCanvasCache=tempCanvas;}
  819. tempCanvas.width=width;tempCanvas.height=height;tempCanvas.mozOpaque=true;const 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(){const tempCanvas=tempCanvasCache;if(tempCanvas){tempCanvas.width=0;tempCanvas.height=0;}
  820. tempCanvasCache=null;}};}();class PDFThumbnailView{constructor({container,id,defaultViewport,linkService,renderingQueue,disableCanvasToImageConversion=false,l10n=_ui_utils.NullL10n}){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;const anchor=document.createElement("a");anchor.href=linkService.getAnchorUrl("#page="+id);this._thumbPageTitle.then(msg=>{anchor.title=msg;});anchor.onclick=function(){linkService.page=id;return false;};this.anchor=anchor;const div=document.createElement("div");div.className="thumbnail";div.setAttribute("data-page-number",this.id);this.div=div;const ring=document.createElement("div");ring.className="thumbnailSelectionRing";const 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);}
  821. setPdfPage(pdfPage){this.pdfPage=pdfPage;this.pdfPageRotate=pdfPage.rotate;const totalRotation=(this.rotation+this.pdfPageRotate)%360;this.viewport=pdfPage.getViewport({scale:1,rotation:totalRotation});this.reset();}
  822. reset(){this.cancelRendering();this.renderingState=_pdf_rendering_queue.RenderingStates.INITIAL;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");const ring=this.ring;const childNodes=ring.childNodes;for(let i=childNodes.length-1;i>=0;i--){ring.removeChild(childNodes[i]);}
  823. const 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;}
  824. if(this.image){this.image.removeAttribute("src");delete this.image;}}
  825. update(rotation){if(typeof rotation!=="undefined"){this.rotation=rotation;}
  826. const totalRotation=(this.rotation+this.pdfPageRotate)%360;this.viewport=this.viewport.clone({scale:1,rotation:totalRotation});this.reset();}
  827. cancelRendering(){if(this.renderTask){this.renderTask.cancel();this.renderTask=null;}
  828. this.resume=null;}
  829. _getPageDrawContext(noCtxScale=false){const canvas=document.createElement("canvas");this.canvas=canvas;canvas.mozOpaque=true;const ctx=canvas.getContext("2d",{alpha:false});const 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);}
  830. return ctx;}
  831. _convertCanvasToImage(){if(!this.canvas){return;}
  832. if(this.renderingState!==_pdf_rendering_queue.RenderingStates.FINISHED){return;}
  833. const className="thumbnailImage";if(this.disableCanvasToImageConversion){this.canvas.className=className;this._thumbPageCanvas.then(msg=>{this.canvas.setAttribute("aria-label",msg);});this.div.setAttribute("data-loaded",true);this.ring.appendChild(this.canvas);return;}
  834. const image=document.createElement("img");image.className=className;this._thumbPageCanvas.then(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;}
  835. draw(){if(this.renderingState!==_pdf_rendering_queue.RenderingStates.INITIAL){console.error("Must be in new state before drawing");return Promise.resolve(undefined);}
  836. const{pdfPage}=this;if(!pdfPage){this.renderingState=_pdf_rendering_queue.RenderingStates.FINISHED;return Promise.reject(new Error("pdfPage is not loaded"));}
  837. this.renderingState=_pdf_rendering_queue.RenderingStates.RUNNING;const renderCapability=(0,_pdfjsLib.createPromiseCapability)();const finishRenderTask=error=>{if(renderTask===this.renderTask){this.renderTask=null;}
  838. if(error instanceof _pdfjsLib.RenderingCancelledException){renderCapability.resolve(undefined);return;}
  839. this.renderingState=_pdf_rendering_queue.RenderingStates.FINISHED;this._convertCanvasToImage();if(!error){renderCapability.resolve(undefined);}else{renderCapability.reject(error);}};const ctx=this._getPageDrawContext();const drawViewport=this.viewport.clone({scale:this.scale});const renderContinueCallback=cont=>{if(!this.renderingQueue.isHighestPriority(this)){this.renderingState=_pdf_rendering_queue.RenderingStates.PAUSED;this.resume=()=>{this.renderingState=_pdf_rendering_queue.RenderingStates.RUNNING;cont();};return;}
  840. cont();};const renderContext={canvasContext:ctx,viewport:drawViewport};const renderTask=this.renderTask=pdfPage.render(renderContext);renderTask.onContinue=renderContinueCallback;renderTask.promise.then(function(){finishRenderTask(null);},function(error){finishRenderTask(error);});return renderCapability.promise;}
  841. setImage(pageView){if(this.renderingState!==_pdf_rendering_queue.RenderingStates.INITIAL){return;}
  842. const img=pageView.canvas;if(!img){return;}
  843. if(!this.pdfPage){this.setPdfPage(pageView.pdfPage);}
  844. this.renderingState=_pdf_rendering_queue.RenderingStates.FINISHED;const ctx=this._getPageDrawContext(true);const 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;}
  845. let reducedWidth=canvas.width<<MAX_NUM_SCALING_STEPS;let reducedHeight=canvas.height<<MAX_NUM_SCALING_STEPS;const reducedImage=TempImageFactory.getCanvas(reducedWidth,reducedHeight);const reducedImageCtx=reducedImage.getContext("2d");while(reducedWidth>img.width||reducedHeight>img.height){reducedWidth>>=1;reducedHeight>>=1;}
  846. 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;}
  847. ctx.drawImage(reducedImage,0,0,reducedWidth,reducedHeight,0,0,canvas.width,canvas.height);this._convertCanvasToImage();}
  848. get _thumbPageTitle(){return this.l10n.get("thumb_page_title",{page:this.pageLabel!==null?this.pageLabel:this.id},"Page {{page}}");}
  849. get _thumbPageCanvas(){return this.l10n.get("thumb_page_canvas",{page:this.pageLabel!==null?this.pageLabel:this.id},"Thumbnail of Page {{page}}");}
  850. setPageLabel(label){this.pageLabel=typeof label==="string"?label:null;this._thumbPageTitle.then(msg=>{this.anchor.title=msg;});if(this.renderingState!==_pdf_rendering_queue.RenderingStates.FINISHED){return;}
  851. this._thumbPageCanvas.then(msg=>{if(this.image){this.image.setAttribute("aria-label",msg);}else if(this.disableCanvasToImageConversion&&this.canvas){this.canvas.setAttribute("aria-label",msg);}});}
  852. static cleanup(){TempImageFactory.destroyCanvas();}}
  853. exports.PDFThumbnailView=PDFThumbnailView;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFViewer=void 0;var _base_viewer=__webpack_require__(25);var _pdfjsLib=__webpack_require__(4);class PDFViewer extends _base_viewer.BaseViewer{get _setDocumentViewerElement(){return(0,_pdfjsLib.shadow)(this,"_setDocumentViewerElement",this.viewer);}
  854. _scrollIntoView({pageDiv,pageSpot=null,pageNumber=null}){if(!pageSpot&&!this.isInPresentationMode){const left=pageDiv.offsetLeft+pageDiv.clientLeft;const right=left+pageDiv.clientWidth;const{scrollLeft,clientWidth}=this.container;if(this._isScrollModeHorizontal||left<scrollLeft||right>scrollLeft+clientWidth){pageSpot={left:0,top:0};}}
  855. super._scrollIntoView({pageDiv,pageSpot,pageNumber});}
  856. _getVisiblePages(){if(this.isInPresentationMode){return this._getCurrentVisiblePage();}
  857. return super._getVisiblePages();}
  858. _updateHelper(visiblePages){if(this.isInPresentationMode){return;}
  859. let currentId=this._currentPageNumber;let stillFullyVisible=false;for(const page of visiblePages){if(page.percent<100){break;}
  860. if(page.id===currentId){stillFullyVisible=true;break;}}
  861. if(!stillFullyVisible){currentId=visiblePages[0].id;}
  862. this._setCurrentPageNumber(currentId);}}
  863. exports.PDFViewer=PDFViewer;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.BaseViewer=void 0;var _ui_utils=__webpack_require__(2);var _pdf_rendering_queue=__webpack_require__(8);var _annotation_layer_builder=__webpack_require__(26);var _pdfjsLib=__webpack_require__(4);var _pdf_page_view=__webpack_require__(27);var _pdf_link_service=__webpack_require__(18);var _text_layer_builder=__webpack_require__(28);const DEFAULT_CACHE_SIZE=10;function PDFPageViewBuffer(size){const data=[];this.push=function(view){const i=data.indexOf(view);if(i>=0){data.splice(i,1);}
  864. data.push(view);if(data.length>size){data.shift().destroy();}};this.resize=function(newSize,pagesToKeep){size=newSize;if(pagesToKeep){const pageIdsToKeep=new Set();for(let i=0,iMax=pagesToKeep.length;i<iMax;++i){pageIdsToKeep.add(pagesToKeep[i].id);}
  865. (0,_ui_utils.moveToEndOfArray)(data,function(page){return pageIdsToKeep.has(page.id);});}
  866. while(data.length>size){data.shift().destroy();}};}
  867. function isSameScale(oldScale,newScale){if(newScale===oldScale){return true;}
  868. if(Math.abs(newScale-oldScale)<1e-15){return true;}
  869. return false;}
  870. class BaseViewer{constructor(options){if(this.constructor===BaseViewer){throw new Error("Cannot initialize BaseViewer.");}
  871. this._name=this.constructor.name;this.container=options.container;this.viewer=options.viewer||options.container.firstElementChild;this.eventBus=options.eventBus||(0,_ui_utils.getGlobalEventBus)();this.linkService=options.linkService||new _pdf_link_service.SimpleLinkService();this.downloadManager=options.downloadManager||null;this.findController=options.findController||null;this.removePageBorders=options.removePageBorders||false;this.textLayerMode=Number.isInteger(options.textLayerMode)?options.textLayerMode:_ui_utils.TextLayerMode.ENABLE;this.imageResourcesPath=options.imageResourcesPath||"";this.renderInteractiveForms=options.renderInteractiveForms||false;this.enablePrintAutoRotate=options.enablePrintAutoRotate||false;this.renderer=options.renderer||_ui_utils.RendererType.CANVAS;this.enableWebGL=options.enableWebGL||false;this.useOnlyCssZoom=options.useOnlyCssZoom||false;this.maxCanvasPixels=options.maxCanvasPixels;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;}
  872. this.scroll=(0,_ui_utils.watchScroll)(this.container,this._scrollUpdate.bind(this));this.presentationModeState=_ui_utils.PresentationModeState.UNKNOWN;this._onBeforeDraw=this._onAfterDraw=null;this._resetView();if(this.removePageBorders){this.viewer.classList.add("removePageBorders");}
  873. Promise.resolve().then(()=>{this.eventBus.dispatch("baseviewerinit",{source:this});});}
  874. get pagesCount(){return this._pages.length;}
  875. getPageView(index){return this._pages[index];}
  876. get pageViewsReady(){if(!this._pagesCapability.settled){return false;}
  877. return this._pages.every(function(pageView){return pageView&&pageView.pdfPage;});}
  878. get currentPageNumber(){return this._currentPageNumber;}
  879. set currentPageNumber(val){if(!Number.isInteger(val)){throw new Error("Invalid page number.");}
  880. if(!this.pdfDocument){return;}
  881. if(!this._setCurrentPageNumber(val,true)){console.error(`${this._name}.currentPageNumber: "${val}" is not a valid page.`);}}
  882. _setCurrentPageNumber(val,resetCurrentPageView=false){if(this._currentPageNumber===val){if(resetCurrentPageView){this._resetCurrentPageView();}
  883. return true;}
  884. if(!(0<val&&val<=this.pagesCount)){return false;}
  885. this._currentPageNumber=val;this.eventBus.dispatch("pagechanging",{source:this,pageNumber:val,pageLabel:this._pageLabels&&this._pageLabels[val-1]});if(resetCurrentPageView){this._resetCurrentPageView();}
  886. return true;}
  887. get currentPageLabel(){return this._pageLabels&&this._pageLabels[this._currentPageNumber-1];}
  888. set currentPageLabel(val){if(!this.pdfDocument){return;}
  889. let page=val|0;if(this._pageLabels){const i=this._pageLabels.indexOf(val);if(i>=0){page=i+1;}}
  890. if(!this._setCurrentPageNumber(page,true)){console.error(`${this._name}.currentPageLabel: "${val}" is not a valid page.`);}}
  891. get currentScale(){return this._currentScale!==_ui_utils.UNKNOWN_SCALE?this._currentScale:_ui_utils.DEFAULT_SCALE;}
  892. set currentScale(val){if(isNaN(val)){throw new Error("Invalid numeric scale.");}
  893. if(!this.pdfDocument){return;}
  894. this._setScale(val,false);}
  895. get currentScaleValue(){return this._currentScaleValue;}
  896. set currentScaleValue(val){if(!this.pdfDocument){return;}
  897. this._setScale(val,false);}
  898. get pagesRotation(){return this._pagesRotation;}
  899. set pagesRotation(rotation){if(!(0,_ui_utils.isValidRotation)(rotation)){throw new Error("Invalid pages rotation angle.");}
  900. if(!this.pdfDocument){return;}
  901. if(this._pagesRotation===rotation){return;}
  902. this._pagesRotation=rotation;const pageNumber=this._currentPageNumber;for(let i=0,ii=this._pages.length;i<ii;i++){const pageView=this._pages[i];pageView.update(pageView.scale,rotation);}
  903. if(this._currentScaleValue){this._setScale(this._currentScaleValue,true);}
  904. this.eventBus.dispatch("rotationchanging",{source:this,pagesRotation:rotation,pageNumber});if(this.defaultRenderingQueue){this.update();}}
  905. get firstPagePromise(){return this.pdfDocument?this._firstPageCapability.promise:null;}
  906. get onePageRendered(){return this.pdfDocument?this._onePageRenderedCapability.promise:null;}
  907. get pagesPromise(){return this.pdfDocument?this._pagesCapability.promise:null;}
  908. get _setDocumentViewerElement(){throw new Error("Not implemented: _setDocumentViewerElement");}
  909. setDocument(pdfDocument){if(this.pdfDocument){this._cancelRendering();this._resetView();if(this.findController){this.findController.setDocument(null);}}
  910. this.pdfDocument=pdfDocument;if(!pdfDocument){return;}
  911. const pagesCount=pdfDocument.numPages;const firstPagePromise=pdfDocument.getPage(1);this._pagesCapability.promise.then(()=>{this.eventBus.dispatch("pagesloaded",{source:this,pagesCount});});this._onBeforeDraw=evt=>{const pageView=this._pages[evt.pageNumber-1];if(!pageView){return;}
  912. this._buffer.push(pageView);};this.eventBus._on("pagerender",this._onBeforeDraw);this._onAfterDraw=evt=>{if(evt.cssTransform||this._onePageRenderedCapability.settled){return;}
  913. this._onePageRenderedCapability.resolve();this.eventBus._off("pagerendered",this._onAfterDraw);this._onAfterDraw=null;};this.eventBus._on("pagerendered",this._onAfterDraw);firstPagePromise.then(firstPdfPage=>{this._firstPageCapability.resolve(firstPdfPage);const scale=this.currentScale;const viewport=firstPdfPage.getViewport({scale:scale*_ui_utils.CSS_UNITS});const textLayerFactory=this.textLayerMode!==_ui_utils.TextLayerMode.DISABLE?this:null;for(let pageNum=1;pageNum<=pagesCount;++pageNum){const pageView=new _pdf_page_view.PDFPageView({container:this._setDocumentViewerElement,eventBus:this.eventBus,id:pageNum,scale,defaultViewport:viewport.clone(),renderingQueue:this.renderingQueue,textLayerFactory,textLayerMode:this.textLayerMode,annotationLayerFactory:this,imageResourcesPath:this.imageResourcesPath,renderInteractiveForms:this.renderInteractiveForms,renderer:this.renderer,enableWebGL:this.enableWebGL,useOnlyCssZoom:this.useOnlyCssZoom,maxCanvasPixels:this.maxCanvasPixels,l10n:this.l10n});this._pages.push(pageView);}
  914. const firstPageView=this._pages[0];if(firstPageView){firstPageView.setPdfPage(firstPdfPage);this.linkService.cachePageRef(1,firstPdfPage.ref);}
  915. if(this._spreadMode!==_ui_utils.SpreadMode.NONE){this._updateSpreadMode();}
  916. this._onePageRenderedCapability.promise.then(()=>{if(this.findController){this.findController.setDocument(pdfDocument);}
  917. if(pdfDocument.loadingParams["disableAutoFetch"]||pagesCount>7500){this._pagesCapability.resolve();return;}
  918. let getPagesLeft=pagesCount-1;if(getPagesLeft<=0){this._pagesCapability.resolve();return;}
  919. for(let pageNum=2;pageNum<=pagesCount;++pageNum){pdfDocument.getPage(pageNum).then(pdfPage=>{const pageView=this._pages[pageNum-1];if(!pageView.pdfPage){pageView.setPdfPage(pdfPage);}
  920. this.linkService.cachePageRef(pageNum,pdfPage.ref);if(--getPagesLeft===0){this._pagesCapability.resolve();}},reason=>{console.error(`Unable to get page ${pageNum} to initialize viewer`,reason);if(--getPagesLeft===0){this._pagesCapability.resolve();}});}});this.eventBus.dispatch("pagesinit",{source:this});if(this.defaultRenderingQueue){this.update();}}).catch(reason=>{console.error("Unable to initialize viewer",reason);});}
  921. setPageLabels(labels){if(!this.pdfDocument){return;}
  922. if(!labels){this._pageLabels=null;}else if(!(Array.isArray(labels)&&this.pdfDocument.numPages===labels.length)){this._pageLabels=null;console.error(`${this._name}.setPageLabels: Invalid page labels.`);}else{this._pageLabels=labels;}
  923. for(let i=0,ii=this._pages.length;i<ii;i++){const pageView=this._pages[i];const label=this._pageLabels&&this._pageLabels[i];pageView.setPageLabel(label);}}
  924. _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=new WeakMap();this._firstPageCapability=(0,_pdfjsLib.createPromiseCapability)();this._onePageRenderedCapability=(0,_pdfjsLib.createPromiseCapability)();this._pagesCapability=(0,_pdfjsLib.createPromiseCapability)();this._scrollMode=_ui_utils.ScrollMode.VERTICAL;this._spreadMode=_ui_utils.SpreadMode.NONE;if(this._onBeforeDraw){this.eventBus._off("pagerender",this._onBeforeDraw);this._onBeforeDraw=null;}
  925. if(this._onAfterDraw){this.eventBus._off("pagerendered",this._onAfterDraw);this._onAfterDraw=null;}
  926. this.viewer.textContent="";this._updateScrollMode();}
  927. _scrollUpdate(){if(this.pagesCount===0){return;}
  928. this.update();}
  929. _scrollIntoView({pageDiv,pageSpot=null,pageNumber=null}){(0,_ui_utils.scrollIntoView)(pageDiv,pageSpot);}
  930. _setScaleUpdatePages(newScale,newValue,noScroll=false,preset=false){this._currentScaleValue=newValue.toString();if(isSameScale(this._currentScale,newScale)){if(preset){this.eventBus.dispatch("scalechanging",{source:this,scale:newScale,presetValue:newValue});}
  931. return;}
  932. for(let i=0,ii=this._pages.length;i<ii;i++){this._pages[i].update(newScale);}
  933. this._currentScale=newScale;if(!noScroll){let page=this._currentPageNumber,dest;if(this._location&&!(this.isInPresentationMode||this.isChangingPresentationMode)){page=this._location.pageNumber;dest=[null,{name:"XYZ"},this._location.left,this._location.top,null];}
  934. this.scrollPageIntoView({pageNumber:page,destArray:dest,allowNegativeOffset:true});}
  935. this.eventBus.dispatch("scalechanging",{source:this,scale:newScale,presetValue:preset?newValue:undefined});if(this.defaultRenderingQueue){this.update();}}
  936. _setScale(value,noScroll=false){let scale=parseFloat(value);if(scale>0){this._setScaleUpdatePages(scale,value,noScroll,false);}else{const currentPage=this._pages[this._currentPageNumber-1];if(!currentPage){return;}
  937. const noPadding=this.isInPresentationMode||this.removePageBorders;let hPadding=noPadding?0:_ui_utils.SCROLLBAR_PADDING;let vPadding=noPadding?0:_ui_utils.VERTICAL_PADDING;if(!noPadding&&this._isScrollModeHorizontal){[hPadding,vPadding]=[vPadding,hPadding];}
  938. const pageWidthScale=(this.container.clientWidth-hPadding)/currentPage.width*currentPage.scale;const 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":const horizontalScale=(0,_ui_utils.isPortraitOrientation)(currentPage)?pageWidthScale:Math.min(pageHeightScale,pageWidthScale);scale=Math.min(_ui_utils.MAX_AUTO_SCALE,horizontalScale);break;default:console.error(`${this._name}._setScale: "${value}" is an unknown zoom value.`);return;}
  939. this._setScaleUpdatePages(scale,value,noScroll,true);}}
  940. _resetCurrentPageView(){if(this.isInPresentationMode){this._setScale(this._currentScaleValue,true);}
  941. const pageView=this._pages[this._currentPageNumber-1];this._scrollIntoView({pageDiv:pageView.div});}
  942. scrollPageIntoView({pageNumber,destArray=null,allowNegativeOffset=false,ignoreDestinationZoom=false}){if(!this.pdfDocument){return;}
  943. const pageView=Number.isInteger(pageNumber)&&this._pages[pageNumber-1];if(!pageView){console.error(`${this._name}.scrollPageIntoView: `+`"${pageNumber}" is not a valid pageNumber parameter.`);return;}
  944. if(this.isInPresentationMode||!destArray){this._setCurrentPageNumber(pageNumber,true);return;}
  945. let x=0,y=0;let width=0,height=0,widthScale,heightScale;const changeOrientation=pageView.rotation%180!==0;const pageWidth=(changeOrientation?pageView.height:pageView.width)/pageView.scale/_ui_utils.CSS_UNITS;const pageHeight=(changeOrientation?pageView.width:pageView.height)/pageView.scale/_ui_utils.CSS_UNITS;let scale=0;switch(destArray[1].name){case"XYZ":x=destArray[2];y=destArray[3];scale=destArray[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=destArray[2];scale="page-width";if(y===null&&this._location){x=this._location.left;y=this._location.top;}
  946. break;case"FitV":case"FitBV":x=destArray[2];width=pageWidth;height=pageHeight;scale="page-height";break;case"FitR":x=destArray[2];y=destArray[3];width=destArray[4]-x;height=destArray[5]-y;const hPadding=this.removePageBorders?0:_ui_utils.SCROLLBAR_PADDING;const 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(`${this._name}.scrollPageIntoView: `+`"${destArray[1].name}" is not a valid destination type.`);return;}
  947. if(!ignoreDestinationZoom){if(scale&&scale!==this._currentScale){this.currentScaleValue=scale;}else if(this._currentScale===_ui_utils.UNKNOWN_SCALE){this.currentScaleValue=_ui_utils.DEFAULT_SCALE_VALUE;}}
  948. if(scale==="page-fit"&&!destArray[4]){this._scrollIntoView({pageDiv:pageView.div,pageNumber});return;}
  949. const boundingRect=[pageView.viewport.convertToViewportPoint(x,y),pageView.viewport.convertToViewportPoint(x+width,y+height)];let left=Math.min(boundingRect[0][0],boundingRect[1][0]);let top=Math.min(boundingRect[0][1],boundingRect[1][1]);if(!allowNegativeOffset){left=Math.max(left,0);top=Math.max(top,0);}
  950. this._scrollIntoView({pageDiv:pageView.div,pageSpot:{left,top},pageNumber});}
  951. _updateLocation(firstPage){const currentScale=this._currentScale;const currentScaleValue=this._currentScaleValue;const normalizedScaleValue=parseFloat(currentScaleValue)===currentScale?Math.round(currentScale*10000)/100:currentScaleValue;const pageNumber=firstPage.id;let pdfOpenParams="#page="+pageNumber;pdfOpenParams+="&zoom="+normalizedScaleValue;const currentPageView=this._pages[pageNumber-1];const container=this.container;const topLeft=currentPageView.getPagePoint(container.scrollLeft-firstPage.x,container.scrollTop-firstPage.y);const intLeft=Math.round(topLeft[0]);const intTop=Math.round(topLeft[1]);pdfOpenParams+=","+intLeft+","+intTop;this._location={pageNumber,scale:normalizedScaleValue,top:intTop,left:intLeft,rotation:this._pagesRotation,pdfOpenParams};}
  952. _updateHelper(visiblePages){throw new Error("Not implemented: _updateHelper");}
  953. update(){const visible=this._getVisiblePages();const visiblePages=visible.views,numVisiblePages=visiblePages.length;if(numVisiblePages===0){return;}
  954. const newCacheSize=Math.max(DEFAULT_CACHE_SIZE,2*numVisiblePages+1);this._buffer.resize(newCacheSize,visiblePages);this.renderingQueue.renderHighestPriority(visible);this._updateHelper(visiblePages);this._updateLocation(visible.first);this.eventBus.dispatch("updateviewarea",{source:this,location:this._location});}
  955. containsElement(element){return this.container.contains(element);}
  956. focus(){this.container.focus();}
  957. get _isScrollModeHorizontal(){return this.isInPresentationMode?false:this._scrollMode===_ui_utils.ScrollMode.HORIZONTAL;}
  958. get isInPresentationMode(){return this.presentationModeState===_ui_utils.PresentationModeState.FULLSCREEN;}
  959. get isChangingPresentationMode(){return this.presentationModeState===_ui_utils.PresentationModeState.CHANGING;}
  960. get isHorizontalScrollbarEnabled(){return this.isInPresentationMode?false:this.container.scrollWidth>this.container.clientWidth;}
  961. get isVerticalScrollbarEnabled(){return this.isInPresentationMode?false:this.container.scrollHeight>this.container.clientHeight;}
  962. _getCurrentVisiblePage(){if(!this.pagesCount){return{views:[]};}
  963. const pageView=this._pages[this._currentPageNumber-1];const element=pageView.div;const view={id:pageView.id,x:element.offsetLeft+element.clientLeft,y:element.offsetTop+element.clientTop,view:pageView};return{first:view,last:view,views:[view]};}
  964. _getVisiblePages(){return(0,_ui_utils.getVisibleElements)(this.container,this._pages,true,this._isScrollModeHorizontal);}
  965. isPageVisible(pageNumber){if(!this.pdfDocument){return false;}
  966. if(pageNumber<1||pageNumber>this.pagesCount){console.error(`${this._name}.isPageVisible: "${pageNumber}" is out of bounds.`);return false;}
  967. return this._getVisiblePages().views.some(function(view){return view.id===pageNumber;});}
  968. cleanup(){for(let 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();}}}
  969. _cancelRendering(){for(let i=0,ii=this._pages.length;i<ii;i++){if(this._pages[i]){this._pages[i].cancelRendering();}}}
  970. _ensurePdfPageLoaded(pageView){if(pageView.pdfPage){return Promise.resolve(pageView.pdfPage);}
  971. if(this._pagesRequests.has(pageView)){return this._pagesRequests.get(pageView);}
  972. const promise=this.pdfDocument.getPage(pageView.id).then(pdfPage=>{if(!pageView.pdfPage){pageView.setPdfPage(pdfPage);}
  973. this._pagesRequests.delete(pageView);return pdfPage;}).catch(reason=>{console.error("Unable to get page for page view",reason);this._pagesRequests.delete(pageView);});this._pagesRequests.set(pageView,promise);return promise;}
  974. forceRendering(currentlyVisiblePages){const visiblePages=currentlyVisiblePages||this._getVisiblePages();const scrollAhead=this._isScrollModeHorizontal?this.scroll.right:this.scroll.down;const pageView=this.renderingQueue.getHighestPriority(visiblePages,this._pages,scrollAhead);if(pageView){this._ensurePdfPageLoaded(pageView).then(()=>{this.renderingQueue.renderView(pageView);});return true;}
  975. return false;}
  976. createTextLayerBuilder(textLayerDiv,pageIndex,viewport,enhanceTextSelection=false,eventBus){return new _text_layer_builder.TextLayerBuilder({textLayerDiv,eventBus,pageIndex,viewport,findController:this.isInPresentationMode?null:this.findController,enhanceTextSelection:this.isInPresentationMode?false:enhanceTextSelection});}
  977. createAnnotationLayerBuilder(pageDiv,pdfPage,imageResourcesPath="",renderInteractiveForms=false,l10n=_ui_utils.NullL10n){return new _annotation_layer_builder.AnnotationLayerBuilder({pageDiv,pdfPage,imageResourcesPath,renderInteractiveForms,linkService:this.linkService,downloadManager:this.downloadManager,l10n});}
  978. get hasEqualPageSizes(){const firstPageView=this._pages[0];for(let i=1,ii=this._pages.length;i<ii;++i){const pageView=this._pages[i];if(pageView.width!==firstPageView.width||pageView.height!==firstPageView.height){return false;}}
  979. return true;}
  980. getPagesOverview(){const pagesOverview=this._pages.map(function(pageView){const viewport=pageView.pdfPage.getViewport({scale:1});return{width:viewport.width,height:viewport.height,rotation:viewport.rotation};});if(!this.enablePrintAutoRotate){return pagesOverview;}
  981. const isFirstPagePortrait=(0,_ui_utils.isPortraitOrientation)(pagesOverview[0]);return pagesOverview.map(function(size){if(isFirstPagePortrait===(0,_ui_utils.isPortraitOrientation)(size)){return size;}
  982. return{width:size.height,height:size.width,rotation:(size.rotation+90)%360};});}
  983. get scrollMode(){return this._scrollMode;}
  984. set scrollMode(mode){if(this._scrollMode===mode){return;}
  985. if(!(0,_ui_utils.isValidScrollMode)(mode)){throw new Error(`Invalid scroll mode: ${mode}`);}
  986. this._scrollMode=mode;this.eventBus.dispatch("scrollmodechanged",{source:this,mode});this._updateScrollMode(this._currentPageNumber);}
  987. _updateScrollMode(pageNumber=null){const scrollMode=this._scrollMode,viewer=this.viewer;viewer.classList.toggle("scrollHorizontal",scrollMode===_ui_utils.ScrollMode.HORIZONTAL);viewer.classList.toggle("scrollWrapped",scrollMode===_ui_utils.ScrollMode.WRAPPED);if(!this.pdfDocument||!pageNumber){return;}
  988. if(this._currentScaleValue&&isNaN(this._currentScaleValue)){this._setScale(this._currentScaleValue,true);}
  989. this._setCurrentPageNumber(pageNumber,true);this.update();}
  990. get spreadMode(){return this._spreadMode;}
  991. set spreadMode(mode){if(this._spreadMode===mode){return;}
  992. if(!(0,_ui_utils.isValidSpreadMode)(mode)){throw new Error(`Invalid spread mode: ${mode}`);}
  993. this._spreadMode=mode;this.eventBus.dispatch("spreadmodechanged",{source:this,mode});this._updateSpreadMode(this._currentPageNumber);}
  994. _updateSpreadMode(pageNumber=null){if(!this.pdfDocument){return;}
  995. const viewer=this.viewer,pages=this._pages;viewer.textContent="";if(this._spreadMode===_ui_utils.SpreadMode.NONE){for(let i=0,iMax=pages.length;i<iMax;++i){viewer.appendChild(pages[i].div);}}else{const parity=this._spreadMode-1;let spread=null;for(let i=0,iMax=pages.length;i<iMax;++i){if(spread===null){spread=document.createElement("div");spread.className="spread";viewer.appendChild(spread);}else if(i%2===parity){spread=spread.cloneNode(false);viewer.appendChild(spread);}
  996. spread.appendChild(pages[i].div);}}
  997. if(!pageNumber){return;}
  998. this._setCurrentPageNumber(pageNumber,true);this.update();}}
  999. exports.BaseViewer=BaseViewer;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.DefaultAnnotationLayerFactory=exports.AnnotationLayerBuilder=void 0;var _pdfjsLib=__webpack_require__(4);var _ui_utils=__webpack_require__(2);var _pdf_link_service=__webpack_require__(18);class AnnotationLayerBuilder{constructor({pageDiv,pdfPage,linkService,downloadManager,imageResourcesPath="",renderInteractiveForms=false,l10n=_ui_utils.NullL10n}){this.pageDiv=pageDiv;this.pdfPage=pdfPage;this.linkService=linkService;this.downloadManager=downloadManager;this.imageResourcesPath=imageResourcesPath;this.renderInteractiveForms=renderInteractiveForms;this.l10n=l10n;this.div=null;this._cancelled=false;}
  1000. render(viewport,intent="display"){this.pdfPage.getAnnotations({intent}).then(annotations=>{if(this._cancelled){return;}
  1001. const parameters={viewport:viewport.clone({dontFlip:true}),div:this.div,annotations,page:this.pdfPage,imageResourcesPath:this.imageResourcesPath,renderInteractiveForms:this.renderInteractiveForms,linkService:this.linkService,downloadManager:this.downloadManager};if(this.div){_pdfjsLib.AnnotationLayer.update(parameters);}else{if(annotations.length===0){return;}
  1002. 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);}});}
  1003. cancel(){this._cancelled=true;}
  1004. hide(){if(!this.div){return;}
  1005. this.div.setAttribute("hidden","true");}}
  1006. exports.AnnotationLayerBuilder=AnnotationLayerBuilder;class DefaultAnnotationLayerFactory{createAnnotationLayerBuilder(pageDiv,pdfPage,imageResourcesPath="",renderInteractiveForms=false,l10n=_ui_utils.NullL10n){return new AnnotationLayerBuilder({pageDiv,pdfPage,imageResourcesPath,renderInteractiveForms,linkService:new _pdf_link_service.SimpleLinkService(),l10n});}}
  1007. exports.DefaultAnnotationLayerFactory=DefaultAnnotationLayerFactory;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFPageView=void 0;var _ui_utils=__webpack_require__(2);var _pdfjsLib=__webpack_require__(4);var _pdf_rendering_queue=__webpack_require__(8);var _viewer_compatibility=__webpack_require__(5);const MAX_CANVAS_PIXELS=_viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels||16777216;class PDFPageView{constructor(options){const container=options.container;const 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.textLayerMode=Number.isInteger(options.textLayerMode)?options.textLayerMode:_ui_utils.TextLayerMode.ENABLE;this.imageResourcesPath=options.imageResourcesPath||"";this.renderInteractiveForms=options.renderInteractiveForms||false;this.useOnlyCssZoom=options.useOnlyCssZoom||false;this.maxCanvasPixels=options.maxCanvasPixels||MAX_CANVAS_PIXELS;this.eventBus=options.eventBus||(0,_ui_utils.getGlobalEventBus)();this.renderingQueue=options.renderingQueue;this.textLayerFactory=options.textLayerFactory;this.annotationLayerFactory=options.annotationLayerFactory;this.renderer=options.renderer||_ui_utils.RendererType.CANVAS;this.enableWebGL=options.enableWebGL||false;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.annotationLayer=null;this.textLayer=null;this.zoomLayer=null;const 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);}
  1008. setPdfPage(pdfPage){this.pdfPage=pdfPage;this.pdfPageRotate=pdfPage.rotate;const totalRotation=(this.rotation+this.pdfPageRotate)%360;this.viewport=pdfPage.getViewport({scale:this.scale*_ui_utils.CSS_UNITS,rotation:totalRotation});this.stats=pdfPage.stats;this.reset();}
  1009. destroy(){this.reset();if(this.pdfPage){this.pdfPage.cleanup();}}
  1010. _resetZoomLayer(removeFromDOM=false){if(!this.zoomLayer){return;}
  1011. const zoomLayerCanvas=this.zoomLayer.firstChild;this.paintedViewportMap.delete(zoomLayerCanvas);zoomLayerCanvas.width=0;zoomLayerCanvas.height=0;if(removeFromDOM){this.zoomLayer.remove();}
  1012. this.zoomLayer=null;}
  1013. reset(keepZoomLayer=false,keepAnnotations=false){this.cancelRendering(keepAnnotations);this.renderingState=_pdf_rendering_queue.RenderingStates.INITIAL;const div=this.div;div.style.width=Math.floor(this.viewport.width)+"px";div.style.height=Math.floor(this.viewport.height)+"px";const childNodes=div.childNodes;const currentZoomLayerNode=keepZoomLayer&&this.zoomLayer||null;const currentAnnotationNode=keepAnnotations&&this.annotationLayer&&this.annotationLayer.div||null;for(let i=childNodes.length-1;i>=0;i--){const node=childNodes[i];if(currentZoomLayerNode===node||currentAnnotationNode===node){continue;}
  1014. div.removeChild(node);}
  1015. div.removeAttribute("data-loaded");if(currentAnnotationNode){this.annotationLayer.hide();}else if(this.annotationLayer){this.annotationLayer.cancel();this.annotationLayer=null;}
  1016. if(!currentZoomLayerNode){if(this.canvas){this.paintedViewportMap.delete(this.canvas);this.canvas.width=0;this.canvas.height=0;delete this.canvas;}
  1017. this._resetZoomLayer();}
  1018. if(this.svg){this.paintedViewportMap.delete(this.svg);delete this.svg;}
  1019. this.loadingIconDiv=document.createElement("div");this.loadingIconDiv.className="loadingIcon";div.appendChild(this.loadingIconDiv);}
  1020. update(scale,rotation){this.scale=scale||this.scale;if(typeof rotation!=="undefined"){this.rotation=rotation;}
  1021. const 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,timestamp:performance.now()});return;}
  1022. let isScalingRestricted=false;if(this.canvas&&this.maxCanvasPixels>0){const outputScale=this.outputScale;if((Math.floor(this.viewport.width)*outputScale.sx|0)*(Math.floor(this.viewport.height)*outputScale.sy|0)>this.maxCanvasPixels){isScalingRestricted=true;}}
  1023. if(this.canvas){if(this.useOnlyCssZoom||this.hasRestrictedScaling&&isScalingRestricted){this.cssTransform(this.canvas,true);this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:true,timestamp:performance.now()});return;}
  1024. if(!this.zoomLayer&&!this.canvas.hasAttribute("hidden")){this.zoomLayer=this.canvas.parentNode;this.zoomLayer.style.position="absolute";}}
  1025. if(this.zoomLayer){this.cssTransform(this.zoomLayer.firstChild);}
  1026. this.reset(true,true);}
  1027. cancelRendering(keepAnnotations=false){if(this.paintTask){this.paintTask.cancel();this.paintTask=null;}
  1028. this.resume=null;if(this.textLayer){this.textLayer.cancel();this.textLayer=null;}
  1029. if(!keepAnnotations&&this.annotationLayer){this.annotationLayer.cancel();this.annotationLayer=null;}}
  1030. cssTransform(target,redrawAnnotations=false){const width=this.viewport.width;const height=this.viewport.height;const 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";const relativeRotation=this.viewport.rotation-this.paintedViewportMap.get(target).rotation;const absRotation=Math.abs(relativeRotation);let scaleX=1,scaleY=1;if(absRotation===90||absRotation===270){scaleX=height/width;scaleY=width/height;}
  1031. const cssTransform="rotate("+relativeRotation+"deg) "+"scale("+scaleX+","+scaleY+")";target.style.transform=cssTransform;if(this.textLayer){const textLayerViewport=this.textLayer.viewport;const textRelativeRotation=this.viewport.rotation-textLayerViewport.rotation;const textAbsRotation=Math.abs(textRelativeRotation);let scale=width/textLayerViewport.width;if(textAbsRotation===90||textAbsRotation===270){scale=width/textLayerViewport.height;}
  1032. const textLayerDiv=this.textLayer.textLayerDiv;let transX,transY;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;}
  1033. textLayerDiv.style.transform="rotate("+textAbsRotation+"deg) "+"scale("+scale+", "+scale+") "+"translate("+transX+", "+transY+")";textLayerDiv.style.transformOrigin="0% 0%";}
  1034. if(redrawAnnotations&&this.annotationLayer){this.annotationLayer.render(this.viewport,"display");}}
  1035. get width(){return this.viewport.width;}
  1036. get height(){return this.viewport.height;}
  1037. getPagePoint(x,y){return this.viewport.convertToPdfPoint(x,y);}
  1038. draw(){if(this.renderingState!==_pdf_rendering_queue.RenderingStates.INITIAL){console.error("Must be in new state before drawing");this.reset();}
  1039. const{div,pdfPage}=this;if(!pdfPage){this.renderingState=_pdf_rendering_queue.RenderingStates.FINISHED;if(this.loadingIconDiv){div.removeChild(this.loadingIconDiv);delete this.loadingIconDiv;}
  1040. return Promise.reject(new Error("pdfPage is not loaded"));}
  1041. this.renderingState=_pdf_rendering_queue.RenderingStates.RUNNING;const 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);}
  1042. let textLayer=null;if(this.textLayerMode!==_ui_utils.TextLayerMode.DISABLE&&this.textLayerFactory){const 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);}
  1043. textLayer=this.textLayerFactory.createTextLayerBuilder(textLayerDiv,this.id-1,this.viewport,this.textLayerMode===_ui_utils.TextLayerMode.ENABLE_ENHANCE,this.eventBus);}
  1044. this.textLayer=textLayer;let renderContinueCallback=null;if(this.renderingQueue){renderContinueCallback=cont=>{if(!this.renderingQueue.isHighestPriority(this)){this.renderingState=_pdf_rendering_queue.RenderingStates.PAUSED;this.resume=()=>{this.renderingState=_pdf_rendering_queue.RenderingStates.RUNNING;cont();};return;}
  1045. cont();};}
  1046. const finishPaintTask=async error=>{if(paintTask===this.paintTask){this.paintTask=null;}
  1047. if(error instanceof _pdfjsLib.RenderingCancelledException){this.error=null;return;}
  1048. this.renderingState=_pdf_rendering_queue.RenderingStates.FINISHED;if(this.loadingIconDiv){div.removeChild(this.loadingIconDiv);delete this.loadingIconDiv;}
  1049. this._resetZoomLayer(true);this.error=error;this.stats=pdfPage.stats;this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:false,timestamp:performance.now()});if(error){throw error;}};const paintTask=this.renderer===_ui_utils.RendererType.SVG?this.paintOnSvg(canvasWrapper):this.paintOnCanvas(canvasWrapper);paintTask.onRenderContinue=renderContinueCallback;this.paintTask=paintTask;const resultPromise=paintTask.promise.then(function(){return finishPaintTask(null).then(function(){if(textLayer){const 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.imageResourcesPath,this.renderInteractiveForms,this.l10n);}
  1050. this.annotationLayer.render(this.viewport,"display");}
  1051. div.setAttribute("data-loaded",true);this.eventBus.dispatch("pagerender",{source:this,pageNumber:this.id});return resultPromise;}
  1052. paintOnCanvas(canvasWrapper){const renderCapability=(0,_pdfjsLib.createPromiseCapability)();const result={promise:renderCapability.promise,onRenderContinue(cont){cont();},cancel(){renderTask.cancel();}};const viewport=this.viewport;const canvas=document.createElement("canvas");this.l10n.get("page_canvas",{page:this.id},"Page {{page}}").then(msg=>{canvas.setAttribute("aria-label",msg);});canvas.setAttribute("hidden","hidden");let isCanvasHidden=true;const showCanvas=function(){if(isCanvasHidden){canvas.removeAttribute("hidden");isCanvasHidden=false;}};canvasWrapper.appendChild(canvas);this.canvas=canvas;canvas.mozOpaque=true;const ctx=canvas.getContext("2d",{alpha:false});const outputScale=(0,_ui_utils.getOutputScale)(ctx);this.outputScale=outputScale;if(this.useOnlyCssZoom){const actualSizeViewport=viewport.clone({scale:_ui_utils.CSS_UNITS});outputScale.sx*=actualSizeViewport.width/viewport.width;outputScale.sy*=actualSizeViewport.height/viewport.height;outputScale.scaled=true;}
  1053. if(this.maxCanvasPixels>0){const pixelsInViewport=viewport.width*viewport.height;const maxScale=Math.sqrt(this.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;}}
  1054. const sfx=(0,_ui_utils.approximateFraction)(outputScale.sx);const 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);const transform=!outputScale.scaled?null:[outputScale.sx,0,0,outputScale.sy,0,0];const renderContext={canvasContext:ctx,transform,viewport:this.viewport,enableWebGL:this.enableWebGL,renderInteractiveForms:this.renderInteractiveForms};const 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;}
  1055. paintOnSvg(wrapper){let cancelled=false;const ensureNotCancelled=()=>{if(cancelled){throw new _pdfjsLib.RenderingCancelledException(`Rendering cancelled, page ${this.id}`,"svg");}};const pdfPage=this.pdfPage;const actualSizeViewport=this.viewport.clone({scale:_ui_utils.CSS_UNITS});const promise=pdfPage.getOperatorList().then(opList=>{ensureNotCancelled();const svgGfx=new _pdfjsLib.SVGGraphics(pdfPage.commonObjs,pdfPage.objs);return svgGfx.getSVG(opList,actualSizeViewport).then(svg=>{ensureNotCancelled();this.svg=svg;this.paintedViewportMap.set(svg,actualSizeViewport);svg.style.width=wrapper.style.width;svg.style.height=wrapper.style.height;this.renderingState=_pdf_rendering_queue.RenderingStates.FINISHED;wrapper.appendChild(svg);});});return{promise,onRenderContinue(cont){cont();},cancel(){cancelled=true;}};}
  1056. 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");}}}
  1057. exports.PDFPageView=PDFPageView;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.DefaultTextLayerFactory=exports.TextLayerBuilder=void 0;var _ui_utils=__webpack_require__(2);var _pdfjsLib=__webpack_require__(4);const EXPAND_DIVS_TIMEOUT=300;class TextLayerBuilder{constructor({textLayerDiv,eventBus,pageIndex,viewport,findController=null,enhanceTextSelection=false}){this.textLayerDiv=textLayerDiv;this.eventBus=eventBus||(0,_ui_utils.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._onUpdateTextLayerMatches=null;this._bindMouse();}
  1058. _finishRendering(){this.renderingDone=true;if(!this.enhanceTextSelection){const endOfContent=document.createElement("div");endOfContent.className="endOfContent";this.textLayerDiv.appendChild(endOfContent);}
  1059. this.eventBus.dispatch("textlayerrendered",{source:this,pageNumber:this.pageNumber,numTextDivs:this.textDivs.length});}
  1060. render(timeout=0){if(!(this.textContent||this.textContentStream)||this.renderingDone){return;}
  1061. this.cancel();this.textDivs=[];const 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,enhanceTextSelection:this.enhanceTextSelection});this.textLayerRenderTask.promise.then(()=>{this.textLayerDiv.appendChild(textLayerFrag);this._finishRendering();this._updateMatches();},function(reason){});if(!this._onUpdateTextLayerMatches){this._onUpdateTextLayerMatches=evt=>{if(evt.pageIndex===this.pageIdx||evt.pageIndex===-1){this._updateMatches();}};this.eventBus._on("updatetextlayermatches",this._onUpdateTextLayerMatches);}}
  1062. cancel(){if(this.textLayerRenderTask){this.textLayerRenderTask.cancel();this.textLayerRenderTask=null;}
  1063. if(this._onUpdateTextLayerMatches){this.eventBus._off("updatetextlayermatches",this._onUpdateTextLayerMatches);this._onUpdateTextLayerMatches=null;}}
  1064. setTextContentStream(readableStream){this.cancel();this.textContentStream=readableStream;}
  1065. setTextContent(textContent){this.cancel();this.textContent=textContent;}
  1066. _convertMatches(matches,matchesLength){if(!matches){return[];}
  1067. const{findController,textContentItemsStr}=this;let i=0,iIndex=0;const end=textContentItemsStr.length-1;const queryLen=findController.state.query.length;const result=[];for(let m=0,mm=matches.length;m<mm;m++){let matchIdx=matches[m];while(i!==end&&matchIdx>=iIndex+textContentItemsStr[i].length){iIndex+=textContentItemsStr[i].length;i++;}
  1068. if(i===textContentItemsStr.length){console.error("Could not find a matching mapping");}
  1069. const match={begin:{divIdx:i,offset:matchIdx-iIndex}};if(matchesLength){matchIdx+=matchesLength[m];}else{matchIdx+=queryLen;}
  1070. while(i!==end&&matchIdx>iIndex+textContentItemsStr[i].length){iIndex+=textContentItemsStr[i].length;i++;}
  1071. match.end={divIdx:i,offset:matchIdx-iIndex};result.push(match);}
  1072. return result;}
  1073. _renderMatches(matches){if(matches.length===0){return;}
  1074. const{findController,pageIdx,textContentItemsStr,textDivs}=this;const isSelectedPage=pageIdx===findController.selected.pageIdx;const selectedMatchIdx=findController.selected.matchIdx;const highlightAll=findController.state.highlightAll;let prevEnd=null;const infinity={divIdx:-1,offset:undefined};function beginText(begin,className){const divIdx=begin.divIdx;textDivs[divIdx].textContent="";appendTextToDiv(divIdx,0,begin.offset,className);}
  1075. function appendTextToDiv(divIdx,fromOffset,toOffset,className){const div=textDivs[divIdx];const content=textContentItemsStr[divIdx].substring(fromOffset,toOffset);const node=document.createTextNode(content);if(className){const span=document.createElement("span");span.className=className;span.appendChild(node);div.appendChild(span);return;}
  1076. div.appendChild(node);}
  1077. let i0=selectedMatchIdx,i1=i0+1;if(highlightAll){i0=0;i1=matches.length;}else if(!isSelectedPage){return;}
  1078. for(let i=i0;i<i1;i++){const match=matches[i];const begin=match.begin;const end=match.end;const isSelected=isSelectedPage&&i===selectedMatchIdx;const highlightSuffix=isSelected?" selected":"";if(isSelected){findController.scrollMatchIntoView({element:textDivs[begin.divIdx],pageIndex:pageIdx,matchIndex:selectedMatchIdx});}
  1079. if(!prevEnd||begin.divIdx!==prevEnd.divIdx){if(prevEnd!==null){appendTextToDiv(prevEnd.divIdx,prevEnd.offset,infinity.offset);}
  1080. beginText(begin);}else{appendTextToDiv(prevEnd.divIdx,prevEnd.offset,begin.offset);}
  1081. 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(let n0=begin.divIdx+1,n1=end.divIdx;n0<n1;n0++){textDivs[n0].className="highlight middle"+highlightSuffix;}
  1082. beginText(end,"highlight end"+highlightSuffix);}
  1083. prevEnd=end;}
  1084. if(prevEnd){appendTextToDiv(prevEnd.divIdx,prevEnd.offset,infinity.offset);}}
  1085. _updateMatches(){if(!this.renderingDone){return;}
  1086. const{findController,matches,pageIdx,textContentItemsStr,textDivs}=this;let clearedUntilDivIdx=-1;for(let i=0,ii=matches.length;i<ii;i++){const match=matches[i];const begin=Math.max(clearedUntilDivIdx,match.begin.divIdx);for(let n=begin,end=match.end.divIdx;n<=end;n++){const div=textDivs[n];div.textContent=textContentItemsStr[n];div.className="";}
  1087. clearedUntilDivIdx=match.end.divIdx+1;}
  1088. if(!findController||!findController.highlightMatches){return;}
  1089. const pageMatches=findController.pageMatches[pageIdx]||null;const pageMatchesLength=findController.pageMatchesLength[pageIdx]||null;this.matches=this._convertMatches(pageMatches,pageMatchesLength);this._renderMatches(this.matches);}
  1090. _bindMouse(){const div=this.textLayerDiv;let expandDivsTimer=null;div.addEventListener("mousedown",evt=>{if(this.enhanceTextSelection&&this.textLayerRenderTask){this.textLayerRenderTask.expandTextDivs(true);if(expandDivsTimer){clearTimeout(expandDivsTimer);expandDivsTimer=null;}
  1091. return;}
  1092. const end=div.querySelector(".endOfContent");if(!end){return;}
  1093. let adjustTop=evt.target!==div;adjustTop=adjustTop&&window.getComputedStyle(end).getPropertyValue("-moz-user-select")!=="none";if(adjustTop){const divBounds=div.getBoundingClientRect();const r=Math.max(0,(evt.pageY-divBounds.top)/divBounds.height);end.style.top=(r*100).toFixed(2)+"%";}
  1094. end.classList.add("active");});div.addEventListener("mouseup",()=>{if(this.enhanceTextSelection&&this.textLayerRenderTask){expandDivsTimer=setTimeout(()=>{if(this.textLayerRenderTask){this.textLayerRenderTask.expandTextDivs(false);}
  1095. expandDivsTimer=null;},EXPAND_DIVS_TIMEOUT);return;}
  1096. const end=div.querySelector(".endOfContent");if(!end){return;}
  1097. end.style.top="";end.classList.remove("active");});}}
  1098. exports.TextLayerBuilder=TextLayerBuilder;class DefaultTextLayerFactory{createTextLayerBuilder(textLayerDiv,pageIndex,viewport,enhanceTextSelection=false,eventBus){return new TextLayerBuilder({textLayerDiv,pageIndex,viewport,enhanceTextSelection,eventBus});}}
  1099. exports.DefaultTextLayerFactory=DefaultTextLayerFactory;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SecondaryToolbar=void 0;var _ui_utils=__webpack_require__(2);var _pdf_cursor_tools=__webpack_require__(6);var _pdf_single_page_viewer=__webpack_require__(30);class SecondaryToolbar{constructor(options,mainContainer,eventBus){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.scrollVerticalButton,eventName:"switchscrollmode",eventDetails:{mode:_ui_utils.ScrollMode.VERTICAL},close:true},{element:options.scrollHorizontalButton,eventName:"switchscrollmode",eventDetails:{mode:_ui_utils.ScrollMode.HORIZONTAL},close:true},{element:options.scrollWrappedButton,eventName:"switchscrollmode",eventDetails:{mode:_ui_utils.ScrollMode.WRAPPED},close:true},{element:options.spreadNoneButton,eventName:"switchspreadmode",eventDetails:{mode:_ui_utils.SpreadMode.NONE},close:true},{element:options.spreadOddButton,eventName:"switchspreadmode",eventDetails:{mode:_ui_utils.SpreadMode.ODD},close:true},{element:options.spreadEvenButton,eventName:"switchspreadmode",eventDetails:{mode:_ui_utils.SpreadMode.EVEN},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._bindScrollModeListener(options);this._bindSpreadModeListener(options);this.eventBus._on("resize",this._setMaxHeight.bind(this));this.eventBus._on("baseviewerinit",evt=>{if(evt.source instanceof _pdf_single_page_viewer.PDFSinglePageViewer){this.toolbarButtonContainer.classList.add("hiddenScrollModeButtons","hiddenSpreadModeButtons");}else{this.toolbarButtonContainer.classList.remove("hiddenScrollModeButtons","hiddenSpreadModeButtons");}});}
  1100. get isOpen(){return this.opened;}
  1101. setPageNumber(pageNumber){this.pageNumber=pageNumber;this._updateUIState();}
  1102. setPagesCount(pagesCount){this.pagesCount=pagesCount;this._updateUIState();}
  1103. reset(){this.pageNumber=0;this.pagesCount=0;this._updateUIState();this.eventBus.dispatch("secondarytoolbarreset",{source:this});}
  1104. _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;}
  1105. _bindClickListeners(){this.toggleButton.addEventListener("click",this.toggle.bind(this));for(const{element,eventName,close,eventDetails}of this.buttons){element.addEventListener("click",evt=>{if(eventName!==null){const details={source:this};for(const property in eventDetails){details[property]=eventDetails[property];}
  1106. this.eventBus.dispatch(eventName,details);}
  1107. if(close){this.close();}});}}
  1108. _bindCursorToolsListener(buttons){this.eventBus._on("cursortoolchanged",function({tool}){buttons.cursorSelectToolButton.classList.toggle("toggled",tool===_pdf_cursor_tools.CursorTool.SELECT);buttons.cursorHandToolButton.classList.toggle("toggled",tool===_pdf_cursor_tools.CursorTool.HAND);});}
  1109. _bindScrollModeListener(buttons){function scrollModeChanged({mode}){buttons.scrollVerticalButton.classList.toggle("toggled",mode===_ui_utils.ScrollMode.VERTICAL);buttons.scrollHorizontalButton.classList.toggle("toggled",mode===_ui_utils.ScrollMode.HORIZONTAL);buttons.scrollWrappedButton.classList.toggle("toggled",mode===_ui_utils.ScrollMode.WRAPPED);const isScrollModeHorizontal=mode===_ui_utils.ScrollMode.HORIZONTAL;buttons.spreadNoneButton.disabled=isScrollModeHorizontal;buttons.spreadOddButton.disabled=isScrollModeHorizontal;buttons.spreadEvenButton.disabled=isScrollModeHorizontal;}
  1110. this.eventBus._on("scrollmodechanged",scrollModeChanged);this.eventBus._on("secondarytoolbarreset",evt=>{if(evt.source===this){scrollModeChanged({mode:_ui_utils.ScrollMode.VERTICAL});}});}
  1111. _bindSpreadModeListener(buttons){function spreadModeChanged({mode}){buttons.spreadNoneButton.classList.toggle("toggled",mode===_ui_utils.SpreadMode.NONE);buttons.spreadOddButton.classList.toggle("toggled",mode===_ui_utils.SpreadMode.ODD);buttons.spreadEvenButton.classList.toggle("toggled",mode===_ui_utils.SpreadMode.EVEN);}
  1112. this.eventBus._on("spreadmodechanged",spreadModeChanged);this.eventBus._on("secondarytoolbarreset",evt=>{if(evt.source===this){spreadModeChanged({mode:_ui_utils.SpreadMode.NONE});}});}
  1113. open(){if(this.opened){return;}
  1114. this.opened=true;this._setMaxHeight();this.toggleButton.classList.add("toggled");this.toolbar.classList.remove("hidden");}
  1115. close(){if(!this.opened){return;}
  1116. this.opened=false;this.toolbar.classList.add("hidden");this.toggleButton.classList.remove("toggled");}
  1117. toggle(){if(this.opened){this.close();}else{this.open();}}
  1118. _setMaxHeight(){if(!this.opened){return;}
  1119. this.containerHeight=this.mainContainer.clientHeight;if(this.containerHeight===this.previousContainerHeight){return;}
  1120. this.toolbarButtonContainer.style.maxHeight=`${this.containerHeight - _ui_utils.SCROLLBAR_PADDING}px`;this.previousContainerHeight=this.containerHeight;}}
  1121. exports.SecondaryToolbar=SecondaryToolbar;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFSinglePageViewer=void 0;var _base_viewer=__webpack_require__(25);var _pdfjsLib=__webpack_require__(4);class PDFSinglePageViewer extends _base_viewer.BaseViewer{constructor(options){super(options);this.eventBus._on("pagesinit",evt=>{this._ensurePageViewVisible();});}
  1122. get _setDocumentViewerElement(){return(0,_pdfjsLib.shadow)(this,"_setDocumentViewerElement",this._shadowViewer);}
  1123. _resetView(){super._resetView();this._previousPageNumber=1;this._shadowViewer=document.createDocumentFragment();this._updateScrollDown=null;}
  1124. _ensurePageViewVisible(){const pageView=this._pages[this._currentPageNumber-1];const previousPageView=this._pages[this._previousPageNumber-1];const viewerNodes=this.viewer.childNodes;switch(viewerNodes.length){case 0:this.viewer.appendChild(pageView.div);break;case 1:if(viewerNodes[0]!==previousPageView.div){throw new Error("_ensurePageViewVisible: Unexpected previously visible page.");}
  1125. if(pageView===previousPageView){break;}
  1126. this._shadowViewer.appendChild(previousPageView.div);this.viewer.appendChild(pageView.div);this.container.scrollTop=0;break;default:throw new Error("_ensurePageViewVisible: Only one page should be visible at a time.");}
  1127. this._previousPageNumber=this._currentPageNumber;}
  1128. _scrollUpdate(){if(this._updateScrollDown){this._updateScrollDown();}
  1129. super._scrollUpdate();}
  1130. _scrollIntoView({pageDiv,pageSpot=null,pageNumber=null}){if(pageNumber){this._setCurrentPageNumber(pageNumber);}
  1131. const scrolledDown=this._currentPageNumber>=this._previousPageNumber;this._ensurePageViewVisible();this.update();super._scrollIntoView({pageDiv,pageSpot,pageNumber});this._updateScrollDown=()=>{this.scroll.down=scrolledDown;this._updateScrollDown=null;};}
  1132. _getVisiblePages(){return this._getCurrentVisiblePage();}
  1133. _updateHelper(visiblePages){}
  1134. get _isScrollModeHorizontal(){return(0,_pdfjsLib.shadow)(this,"_isScrollModeHorizontal",false);}
  1135. _updateScrollMode(){}
  1136. _updateSpreadMode(){}}
  1137. exports.PDFSinglePageViewer=PDFSinglePageViewer;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Toolbar=void 0;var _ui_utils=__webpack_require__(2);const PAGE_NUMBER_LOADING_INDICATOR="visiblePageIsLoading";const SCALE_SELECT_CONTAINER_WIDTH=140;const SCALE_SELECT_WIDTH=162;class Toolbar{constructor(options,eventBus,l10n=_ui_utils.NullL10n){this.toolbar=options.container;this.eventBus=eventBus;this.l10n=l10n;this.buttons=[{element:options.previous,eventName:"previouspage"},{element:options.next,eventName:"nextpage"},{element:options.zoomIn,eventName:"zoomin"},{element:options.zoomOut,eventName:"zoomout"},{element:options.openFile,eventName:"openfile"},{element:options.print,eventName:"print"},{element:options.presentationModeButton,eventName:"presentationmode"},{element:options.download,eventName:"download"},{element:options.viewBookmark,eventName:null}];this.items={numPages:options.numPages,pageNumber:options.pageNumber,scaleSelectContainer:options.scaleSelectContainer,scaleSelect:options.scaleSelect,customScaleOption:options.customScaleOption,previous:options.previous,next:options.next,zoomIn:options.zoomIn,zoomOut:options.zoomOut};this._wasLocalized=false;this.reset();this._bindListeners();}
  1138. setPageNumber(pageNumber,pageLabel){this.pageNumber=pageNumber;this.pageLabel=pageLabel;this._updateUIState(false);}
  1139. setPagesCount(pagesCount,hasPageLabels){this.pagesCount=pagesCount;this.hasPageLabels=hasPageLabels;this._updateUIState(true);}
  1140. setPageScale(pageScaleValue,pageScale){this.pageScaleValue=(pageScaleValue||pageScale).toString();this.pageScale=pageScale;this._updateUIState(false);}
  1141. 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);this.updateLoadingIndicatorState();}
  1142. _bindListeners(){const{pageNumber,scaleSelect}=this.items;const self=this;for(const{element,eventName}of this.buttons){element.addEventListener("click",evt=>{if(eventName!==null){this.eventBus.dispatch(eventName,{source:this});}});}
  1143. pageNumber.addEventListener("click",function(){this.select();});pageNumber.addEventListener("change",function(){self.eventBus.dispatch("pagenumberchanged",{source:self,value:this.value});});scaleSelect.addEventListener("change",function(){if(this.value==="custom"){return;}
  1144. self.eventBus.dispatch("scalechanged",{source:self,value:this.value});});scaleSelect.oncontextmenu=_ui_utils.noContextMenuHandler;this.eventBus._on("localized",()=>{this._wasLocalized=true;this._adjustScaleWidth();this._updateUIState(true);});}
  1145. _updateUIState(resetNumPages=false){if(!this._wasLocalized){return;}
  1146. const{pageNumber,pagesCount,pageScaleValue,pageScale,items}=this;if(resetNumPages){if(this.hasPageLabels){items.pageNumber.type="text";}else{items.pageNumber.type="number";this.l10n.get("of_pages",{pagesCount},"of {{pagesCount}}").then(msg=>{items.numPages.textContent=msg;});}
  1147. items.pageNumber.max=pagesCount;}
  1148. if(this.hasPageLabels){items.pageNumber.value=this.pageLabel;this.l10n.get("page_of_pages",{pageNumber,pagesCount},"({{pageNumber}} of {{pagesCount}})").then(msg=>{items.numPages.textContent=msg;});}else{items.pageNumber.value=pageNumber;}
  1149. items.previous.disabled=pageNumber<=1;items.next.disabled=pageNumber>=pagesCount;items.zoomOut.disabled=pageScale<=_ui_utils.MIN_SCALE;items.zoomIn.disabled=pageScale>=_ui_utils.MAX_SCALE;const customScale=Math.round(pageScale*10000)/100;this.l10n.get("page_scale_percent",{scale:customScale},"{{scale}}%").then(msg=>{let predefinedValueFound=false;for(const option of items.scaleSelect.options){if(option.value!==pageScaleValue){option.selected=false;continue;}
  1150. option.selected=true;predefinedValueFound=true;}
  1151. if(!predefinedValueFound){items.customScaleOption.textContent=msg;items.customScaleOption.selected=true;}});}
  1152. updateLoadingIndicatorState(loading=false){const pageNumberInput=this.items.pageNumber;pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR,loading);}
  1153. async _adjustScaleWidth(){const{items,l10n}=this;const predefinedValuesPromise=Promise.all([l10n.get("page_scale_auto",null,"Automatic Zoom"),l10n.get("page_scale_actual",null,"Actual Size"),l10n.get("page_scale_fit",null,"Page Fit"),l10n.get("page_scale_width",null,"Page Width")]);let canvas=document.createElement("canvas");canvas.mozOpaque=true;let ctx=canvas.getContext("2d",{alpha:false});await _ui_utils.animationStarted;const{fontSize,fontFamily}=getComputedStyle(items.scaleSelect);ctx.font=`${fontSize} ${fontFamily}`;let maxWidth=0;for(const predefinedValue of await predefinedValuesPromise){const{width}=ctx.measureText(predefinedValue);if(width>maxWidth){maxWidth=width;}}
  1154. const overflow=SCALE_SELECT_WIDTH-SCALE_SELECT_CONTAINER_WIDTH;maxWidth+=1.5*overflow;if(maxWidth>SCALE_SELECT_CONTAINER_WIDTH){items.scaleSelect.style.width=`${maxWidth + overflow}px`;items.scaleSelectContainer.style.width=`${maxWidth}px`;}
  1155. canvas.width=0;canvas.height=0;canvas=ctx=null;}}
  1156. exports.Toolbar=Toolbar;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ViewHistory=void 0;const DEFAULT_VIEW_HISTORY_CACHE_SIZE=20;class ViewHistory{constructor(fingerprint,cacheSize=DEFAULT_VIEW_HISTORY_CACHE_SIZE){this.fingerprint=fingerprint;this.cacheSize=cacheSize;this._initializedPromise=this._readFromStorage().then(databaseStr=>{const database=JSON.parse(databaseStr||"{}");if(!("files"in database)){database.files=[];}else{while(database.files.length>=this.cacheSize){database.files.shift();}}
  1157. let index=-1;for(let i=0,length=database.files.length;i<length;i++){const branch=database.files[i];if(branch.fingerprint===this.fingerprint){index=i;break;}}
  1158. if(index===-1){index=database.files.push({fingerprint:this.fingerprint})-1;}
  1159. this.file=database.files[index];this.database=database;});}
  1160. async _writeToStorage(){const databaseStr=JSON.stringify(this.database);localStorage.setItem("pdfjs.history",databaseStr);console.log(111,this.database.files[this.database.files.length-1].zoom,typeof(this.database.files[this.database.files.length-1].zoom))
  1161. document.getElementById("percentage").innerText=typeof(this.database.files[this.database.files.length-1].zoom)==='number'?this.database.files[this.database.files.length-1].zoom+'%':this.database.files[this.database.files.length-1].zoom}
  1162. async _readFromStorage(){return localStorage.getItem("pdfjs.history");}
  1163. async set(name,val){await this._initializedPromise;this.file[name]=val;return this._writeToStorage();}
  1164. async setMultiple(properties){await this._initializedPromise;for(const name in properties){this.file[name]=properties[name];}
  1165. return this._writeToStorage();}
  1166. async get(name,defaultValue){await this._initializedPromise;const val=this.file[name];return val!==undefined?val:defaultValue;}
  1167. async getMultiple(properties){await this._initializedPromise;const values=Object.create(null);for(const name in properties){const val=this.file[name];values[name]=val!==undefined?val:properties[name];}
  1168. return values;}}
  1169. exports.ViewHistory=ViewHistory;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.GenericCom=void 0;var _app=__webpack_require__(1);var _preferences=__webpack_require__(34);var _download_manager=__webpack_require__(35);var _genericl10n=__webpack_require__(36);;const GenericCom={};exports.GenericCom=GenericCom;class GenericPreferences extends _preferences.BasePreferences{async _writeToStorage(prefObj){localStorage.setItem("pdfjs.preferences",JSON.stringify(prefObj));}
  1170. async _readFromStorage(prefObj){return JSON.parse(localStorage.getItem("pdfjs.preferences"));}}
  1171. class GenericExternalServices extends _app.DefaultExternalServices{static createDownloadManager(options){return new _download_manager.DownloadManager(options);}
  1172. static createPreferences(){return new GenericPreferences();}
  1173. static createL10n({locale="en-US"}){return new _genericl10n.GenericL10n(locale);}}
  1174. _app.PDFViewerApplication.externalServices=GenericExternalServices;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.BasePreferences=void 0;let defaultPreferences=null;function getDefaultPreferences(){if(!defaultPreferences){defaultPreferences=Promise.resolve({"cursorToolOnLoad":0,"defaultZoomValue":"","disablePageLabels":false,"enablePrintAutoRotate":false,"enableWebGL":false,"eventBusDispatchToDOM":false,"externalLinkTarget":0,"historyUpdateUrl":false,"ignoreDestinationZoom":false,"pdfBugEnabled":false,"renderer":"canvas","renderInteractiveForms":false,"sidebarViewOnLoad":-1,"scrollModeOnLoad":-1,"spreadModeOnLoad":-1,"textLayerMode":1,"useOnlyCssZoom":false,"viewOnLoad":0,"disableAutoFetch":false,"disableFontFace":false,"disableRange":false,"disableStream":false});}
  1175. return defaultPreferences;}
  1176. class BasePreferences{constructor(){if(this.constructor===BasePreferences){throw new Error("Cannot initialize BasePreferences.");}
  1177. this.prefs=null;this._initializedPromise=getDefaultPreferences().then(defaults=>{Object.defineProperty(this,"defaults",{value:Object.freeze(defaults),writable:false,enumerable:true,configurable:false});this.prefs=Object.assign(Object.create(null),defaults);return this._readFromStorage(defaults);}).then(prefs=>{if(!prefs){return;}
  1178. for(const name in prefs){const defaultValue=this.defaults[name],prefValue=prefs[name];if(defaultValue===undefined||typeof prefValue!==typeof defaultValue){continue;}
  1179. this.prefs[name]=prefValue;}});}
  1180. async _writeToStorage(prefObj){throw new Error("Not implemented: _writeToStorage");}
  1181. async _readFromStorage(prefObj){throw new Error("Not implemented: _readFromStorage");}
  1182. async reset(){await this._initializedPromise;this.prefs=Object.assign(Object.create(null),this.defaults);return this._writeToStorage(this.defaults);}
  1183. async set(name,value){await this._initializedPromise;const defaultValue=this.defaults[name];if(defaultValue===undefined){throw new Error(`Set preference: "${name}" is undefined.`);}else if(value===undefined){throw new Error("Set preference: no value is specified.");}
  1184. const valueType=typeof value;const defaultType=typeof defaultValue;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"&&!Number.isInteger(value)){throw new Error(`Set preference: "${value}" must be an integer.`);}}
  1185. this.prefs[name]=value;return this._writeToStorage(this.prefs);}
  1186. async get(name){await this._initializedPromise;const defaultValue=this.defaults[name];if(defaultValue===undefined){throw new Error(`Get preference: "${name}" is undefined.`);}else{const prefValue=this.prefs[name];if(prefValue!==undefined){return prefValue;}}
  1187. return defaultValue;}
  1188. async getAll(){await this._initializedPromise;return Object.assign(Object.create(null),this.defaults,this.prefs);}}
  1189. exports.BasePreferences=BasePreferences;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.DownloadManager=void 0;var _pdfjsLib=__webpack_require__(4);;const DISABLE_CREATE_OBJECT_URL=_pdfjsLib.apiCompatibilityParams.disableCreateObjectURL||false;function download(blobUrl,filename){const a=document.createElement("a");if(!a.click){throw new Error('DownloadManager: "a.click()" is not supported.');}
  1190. a.href=blobUrl;a.target="_parent";if("download"in a){a.download=filename;}
  1191. (document.body||document.documentElement).appendChild(a);a.click();a.remove();}
  1192. class DownloadManager{constructor({disableCreateObjectURL=DISABLE_CREATE_OBJECT_URL}){this.disableCreateObjectURL=disableCreateObjectURL;}
  1193. downloadUrl(url,filename){if(!(0,_pdfjsLib.createValidAbsoluteUrl)(url,"http://example.com")){return;}
  1194. download(url+"#pdfjs.action=download",filename);}
  1195. downloadData(data,filename,contentType){if(navigator.msSaveBlob){navigator.msSaveBlob(new Blob([data],{type:contentType}),filename);return;}
  1196. const blobUrl=(0,_pdfjsLib.createObjectURL)(data,contentType,this.disableCreateObjectURL);download(blobUrl,filename);}
  1197. download(blob,url,filename){if(navigator.msSaveBlob){if(!navigator.msSaveBlob(blob,filename)){this.downloadUrl(url,filename);}
  1198. return;}
  1199. if(this.disableCreateObjectURL){this.downloadUrl(url,filename);return;}
  1200. const blobUrl=URL.createObjectURL(blob);download(blobUrl,filename);}}
  1201. exports.DownloadManager=DownloadManager;}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.GenericL10n=void 0;__webpack_require__(37);const webL10n=document.webL10n;class GenericL10n{constructor(lang){this._lang=lang;this._ready=new Promise((resolve,reject)=>{webL10n.setLanguage(lang,()=>{resolve(webL10n);});});}
  1202. async getLanguage(){const l10n=await this._ready;return l10n.getLanguage();}
  1203. async getDirection(){const l10n=await this._ready;return l10n.getDirection();}
  1204. async get(property,args,fallback){const l10n=await this._ready;return l10n.get(property,args,fallback);}
  1205. async translate(element){const l10n=await this._ready;return l10n.translate(element);}}
  1206. exports.GenericL10n=GenericL10n;}),(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"]');}
  1207. function getL10nDictionary(){var script=document.querySelector('script[type="application/l10n"]');return script?JSON.parse(script.innerHTML):null;}
  1208. function getTranslatableChildren(element){return element?element.querySelectorAll('*[data-l10n-id]'):[];}
  1209. 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);}}
  1210. return{id:l10nId,args:args};}
  1211. 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');}
  1212. 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();}}
  1213. 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,"'");}
  1214. 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;}
  1215. 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;}
  1216. match=reImport.exec(line);if(match){loadImport(baseURL+match[1],nextEntry);return;}}
  1217. var tmp=line.match(reSplit);if(tmp&&tmp.length==3){dictionary[tmp[1]]=evalString(tmp[2]);}}}
  1218. nextEntry();}
  1219. function loadImport(url,callback){xhrLoadText(url,function(content){parseRawLines(content,false,callback);},function(){console.warn(url+' not found.');callback();});}
  1220. parseRawLines(text,true,function(){parsedPropertiesCallback(dictionary);});}
  1221. 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.substring(index+1);}else{id=key;prop=gTextProp;}
  1222. if(!gL10nData[id]){gL10nData[id]={};}
  1223. gL10nData[id][prop]=data[key];}
  1224. if(successCallback){successCallback();}});},failureCallback);}
  1225. function loadLocale(lang,callback){if(lang){lang=lang.toLowerCase();}
  1226. 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];}}}
  1227. callback();}else{console.log('no resource to load, early way out');}
  1228. gReadyState='complete';return;}
  1229. var onResourceLoaded=null;var gResourceCount=0;onResourceLoaded=function(){gResourceCount++;if(gResourceCount>=langCount){callback();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();});};}
  1230. for(var i=0;i<langCount;i++){var resource=new L10nResourceLink(langLinks[i]);resource.load(lang,onResourceLoaded);}}
  1231. function clear(){gL10nData={};gTextData='';gLanguage='';}
  1232. 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;}
  1233. function isBetween(n,start,end){return start<=n&&n<=end;}
  1234. 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';};}
  1235. return pluralRules[index];}
  1236. 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);}
  1237. 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];}
  1238. return str;};function getL10nData(key,args,fallback){var data=gL10nData[key];if(!data){console.warn('#'+key+' is undefined.');if(!fallback){return null;}
  1239. data=fallback;}
  1240. 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;}
  1241. return rv;}
  1242. 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];}
  1243. if(macroName in gMacros){var macro=gMacros[macroName];str=macro(str,param,key,prop);}
  1244. return str;}
  1245. 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];}
  1246. if(arg in gL10nData){return gL10nData[arg];}
  1247. console.log('argument {{'+arg+'}} for #'+key+' is undefined.');return matched_text;});}
  1248. 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;}
  1249. 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;}}}
  1250. if(!found){var textNode=document.createTextNode(data[gTextProp]);element.insertBefore(textNode,element.firstChild);}}
  1251. delete data[gTextProp];}
  1252. for(var k in data){element[k]=data[k];}}
  1253. function getChildElementCount(element){if(element.children){return element.children.length;}
  1254. if(typeof element.childElementCount!=='undefined'){return element.childElementCount;}
  1255. var count=0;for(var i=0;i<element.childNodes.length;i++){count+=element.nodeType===1?1:0;}
  1256. return count;}
  1257. 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]);}
  1258. translateElement(element);}
  1259. return{get:function(key,args,fallbackString){var index=key.lastIndexOf('.');var prop=gTextProp;if(index>0){prop=key.substring(index+1);key=key.substring(0,index);}
  1260. var fallback;if(fallbackString){fallback={};fallback[prop]=fallbackString;}
  1261. var data=getL10nData(key,args,fallback);if(data&&prop in data){return data[prop];}
  1262. return'{{'+key+'}}';},getData:function(){return gL10nData;},getText:function(){return gTextData;},getLanguage:function(){return gLanguage;},setLanguage:function(lang,callback){loadLocale(lang,function(){if(callback)callback();});},getDirection:function(){var rtlList=['ar','he','fa','ps','ur'];var shortCode=gLanguage.split('-',1)[0];return rtlList.indexOf(shortCode)>=0?'rtl':'ltr';},translate:translateFragment,getReadyState:function(){return gReadyState;},ready:function(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);}),(function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PDFPrintService=PDFPrintService;var _ui_utils=__webpack_require__(2);var _app=__webpack_require__(1);var _app_options=__webpack_require__(3);let activeService=null;let overlayManager=null;function renderPage(activeServiceOnEntry,pdfDocument,pageNumber,size){const scratchCanvas=activeService.scratchCanvas;const PRINT_RESOLUTION=_app_options.AppOptions.get("printResolution")||150;const PRINT_UNITS=PRINT_RESOLUTION/72.0;scratchCanvas.width=Math.floor(size.width*PRINT_UNITS);scratchCanvas.height=Math.floor(size.height*PRINT_UNITS);const width=Math.floor(size.width*_ui_utils.CSS_UNITS)+"px";const height=Math.floor(size.height*_ui_utils.CSS_UNITS)+"px";const 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){const renderContext={canvasContext:ctx,transform:[PRINT_UNITS,0,0,PRINT_UNITS,0,0],viewport:pdfPage.getViewport({scale:1,rotation:size.rotation}),intent:"print"};return pdfPage.render(renderContext).promise;}).then(function(){return{width,height};});}
  1263. function PDFPrintService(pdfDocument,pagesOverview,printContainer,l10n){this.pdfDocument=pdfDocument;this.pagesOverview=pagesOverview;this.printContainer=printContainer;this.l10n=l10n||_ui_utils.NullL10n;this.disableCreateObjectURL=pdfDocument.loadingParams["disableCreateObjectURL"];this.currentPage=-1;this.scratchCanvas=document.createElement("canvas");}
  1264. PDFPrintService.prototype={layout(){this.throwIfInactive();const body=document.querySelector("body");body.setAttribute("data-pdfjsprinting",true);const 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!");}
  1265. this.pageStyleSheet=document.createElement("style");const 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(){if(activeService!==this){return;}
  1266. this.printContainer.textContent="";const body=document.querySelector("body");body.removeAttribute("data-pdfjsprinting");if(this.pageStyleSheet){this.pageStyleSheet.remove();this.pageStyleSheet=null;}
  1267. this.scratchCanvas.width=this.scratchCanvas.height=0;this.scratchCanvas=null;activeService=null;ensureOverlay().then(function(){if(overlayManager.active!=="printServiceOverlay"){return;}
  1268. overlayManager.close("printServiceOverlay");});},renderPages(){const pageCount=this.pagesOverview.length;const renderNextPage=(resolve,reject)=>{this.throwIfInactive();if(++this.currentPage>=pageCount){renderProgress(pageCount,pageCount,this.l10n);resolve();return;}
  1269. const 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(printItem){this.throwIfInactive();const img=document.createElement("img");img.style.width=printItem.width;img.style.height=printItem.height;const scratchCanvas=this.scratchCanvas;if("toBlob"in scratchCanvas&&!this.disableCreateObjectURL){scratchCanvas.toBlob(function(blob){img.src=URL.createObjectURL(blob);});}else{img.src=scratchCanvas.toDataURL();}
  1270. const wrapper=document.createElement("div");wrapper.appendChild(img);this.printContainer.appendChild(wrapper);return new Promise(function(resolve,reject){img.onload=resolve;img.onerror=reject;});},performPrint(){this.throwIfInactive();return new Promise(resolve=>{setTimeout(()=>{if(!this.active){resolve();return;}
  1271. print.call(window);setTimeout(resolve,20);},0);});},get active(){return this===activeService;},throwIfInactive(){if(!this.active){throw new Error("This print request was cancelled or completed.");}}};const print=window.print;window.print=function(){if(activeService){console.warn("Ignored window.print() because of a pending print job.");return;}
  1272. 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;}
  1273. const activeServiceOnEntry=activeService;activeService.renderPages().then(function(){return activeServiceOnEntry.performPrint();}).catch(function(){}).then(function(){if(activeServiceOnEntry.active){abort();}});}};function dispatchEvent(eventType){const event=document.createEvent("CustomEvent");event.initCustomEvent(eventType,false,false,"custom");window.dispatchEvent(event);}
  1274. function abort(){if(activeService){activeService.destroy();dispatchEvent("afterprint");}}
  1275. function renderProgress(index,total,l10n){const progressContainer=document.getElementById("printServiceOverlay");const progress=Math.round(100*index/total);const progressBar=progressContainer.querySelector("progress");const progressPerc=progressContainer.querySelector(".relative-progress");progressBar.value=progress;l10n.get("print_progress_percent",{progress},progress+"%").then(msg=>{progressPerc.textContent=msg;});}
  1276. window.addEventListener("keydown",function(event){if(event.keyCode===80&&(event.ctrlKey||event.metaKey)&&!event.altKey&&(!event.shiftKey||window.chrome||window.opera)){window.print();event.preventDefault();if(event.stopImmediatePropagation){event.stopImmediatePropagation();}else{event.stopPropagation();}}},true);if("onbeforeprint"in window){const stopPropagationIfNeeded=function(event){if(event.detail!=="custom"&&event.stopImmediatePropagation){event.stopImmediatePropagation();}};window.addEventListener("beforeprint",stopPropagationIfNeeded);window.addEventListener("afterprint",stopPropagationIfNeeded);}
  1277. let overlayPromise;function ensureOverlay(){if(!overlayPromise){overlayManager=_app.PDFViewerApplication.overlayManager;if(!overlayManager){throw new Error("The overlay manager has not yet been initialized.");}
  1278. overlayPromise=overlayManager.register("printServiceOverlay",document.getElementById("printServiceOverlay"),abort,true);document.getElementById("printCancel").onclick=abort;}
  1279. return overlayPromise;}
  1280. _app.PDFPrintServiceFactory.instance={supportsPrinting:true,createPrintService(pdfDocument,pagesOverview,printContainer,l10n){if(activeService){throw new Error("The print service is created and active.");}
  1281. activeService=new PDFPrintService(pdfDocument,pagesOverview,printContainer,l10n);return activeService;}};})]);