Some checks failed
		
		
	
	Types tests / Test (lts/*) (push) Has been cancelled
				
			Lint / Lint (lts/*) (push) Has been cancelled
				
			CodeQL / Analyze (javascript) (push) Has been cancelled
				
			CI / Test (20) (push) Has been cancelled
				
			CI / Test (22) (push) Has been cancelled
				
			CI / Test (24) (push) Has been cancelled
				
			
		
			
				
	
	
		
			343 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			343 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Copyright 2016 Mozilla Foundation
 | 
						|
 *
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 * you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 *
 | 
						|
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 */
 | 
						|
 | 
						|
import { RenderingStates, ScrollMode, SpreadMode } from "./ui_utils.js";
 | 
						|
import { AppOptions } from "./app_options.js";
 | 
						|
import { LinkTarget } from "./pdf_link_service.js";
 | 
						|
import { PDFViewerApplication } from "./app.js";
 | 
						|
 | 
						|
const AppConstants =
 | 
						|
  typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")
 | 
						|
    ? { LinkTarget, RenderingStates, ScrollMode, SpreadMode }
 | 
						|
    : null;
 | 
						|
 | 
						|
window.PDFViewerApplication = PDFViewerApplication;
 | 
						|
window.PDFViewerApplicationConstants = AppConstants;
 | 
						|
window.PDFViewerApplicationOptions = AppOptions;
 | 
						|
 | 
						|
function getViewerConfiguration() {
 | 
						|
  return {
 | 
						|
    appContainer: document.body,
 | 
						|
    principalContainer: document.getElementById("mainContainer"),
 | 
						|
    mainContainer: document.getElementById("viewerContainer"),
 | 
						|
    viewerContainer: document.getElementById("viewer"),
 | 
						|
    viewerAlert: document.getElementById("viewer-alert"),
 | 
						|
    toolbar: {
 | 
						|
      container: document.getElementById("toolbarContainer"),
 | 
						|
      numPages: document.getElementById("numPages"),
 | 
						|
      pageNumber: document.getElementById("pageNumber"),
 | 
						|
      scaleSelect: document.getElementById("scaleSelect"),
 | 
						|
      customScaleOption: document.getElementById("customScaleOption"),
 | 
						|
      previous: document.getElementById("previous"),
 | 
						|
      next: document.getElementById("next"),
 | 
						|
      zoomIn: document.getElementById("zoomInButton"),
 | 
						|
      zoomOut: document.getElementById("zoomOutButton"),
 | 
						|
      print: document.getElementById("printButton"),
 | 
						|
      editorCommentButton: document.getElementById("editorCommentButton"),
 | 
						|
      editorCommentParamsToolbar: document.getElementById(
 | 
						|
        "editorCommentParamsToolbar"
 | 
						|
      ),
 | 
						|
      editorFreeTextButton: document.getElementById("editorFreeTextButton"),
 | 
						|
      editorFreeTextParamsToolbar: document.getElementById(
 | 
						|
        "editorFreeTextParamsToolbar"
 | 
						|
      ),
 | 
						|
      editorHighlightButton: document.getElementById("editorHighlightButton"),
 | 
						|
      editorHighlightParamsToolbar: document.getElementById(
 | 
						|
        "editorHighlightParamsToolbar"
 | 
						|
      ),
 | 
						|
      editorHighlightColorPicker: document.getElementById(
 | 
						|
        "editorHighlightColorPicker"
 | 
						|
      ),
 | 
						|
      editorInkButton: document.getElementById("editorInkButton"),
 | 
						|
      editorInkParamsToolbar: document.getElementById("editorInkParamsToolbar"),
 | 
						|
      editorStampButton: document.getElementById("editorStampButton"),
 | 
						|
      editorStampParamsToolbar: document.getElementById(
 | 
						|
        "editorStampParamsToolbar"
 | 
						|
      ),
 | 
						|
      editorSignatureButton: document.getElementById("editorSignatureButton"),
 | 
						|
      editorSignatureParamsToolbar: document.getElementById(
 | 
						|
        "editorSignatureParamsToolbar"
 | 
						|
      ),
 | 
						|
      download: document.getElementById("downloadButton"),
 | 
						|
    },
 | 
						|
    secondaryToolbar: {
 | 
						|
      toolbar: document.getElementById("secondaryToolbar"),
 | 
						|
      toggleButton: document.getElementById("secondaryToolbarToggleButton"),
 | 
						|
      presentationModeButton: document.getElementById("presentationMode"),
 | 
						|
      openFileButton:
 | 
						|
        typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")
 | 
						|
          ? document.getElementById("secondaryOpenFile")
 | 
						|
          : null,
 | 
						|
      printButton: document.getElementById("secondaryPrint"),
 | 
						|
      downloadButton: document.getElementById("secondaryDownload"),
 | 
						|
      viewBookmarkButton: document.getElementById("viewBookmark"),
 | 
						|
      firstPageButton: document.getElementById("firstPage"),
 | 
						|
      lastPageButton: document.getElementById("lastPage"),
 | 
						|
      pageRotateCwButton: document.getElementById("pageRotateCw"),
 | 
						|
      pageRotateCcwButton: document.getElementById("pageRotateCcw"),
 | 
						|
      cursorSelectToolButton: document.getElementById("cursorSelectTool"),
 | 
						|
      cursorHandToolButton: document.getElementById("cursorHandTool"),
 | 
						|
      scrollPageButton: document.getElementById("scrollPage"),
 | 
						|
      scrollVerticalButton: document.getElementById("scrollVertical"),
 | 
						|
      scrollHorizontalButton: document.getElementById("scrollHorizontal"),
 | 
						|
      scrollWrappedButton: document.getElementById("scrollWrapped"),
 | 
						|
      spreadNoneButton: document.getElementById("spreadNone"),
 | 
						|
      spreadOddButton: document.getElementById("spreadOdd"),
 | 
						|
      spreadEvenButton: document.getElementById("spreadEven"),
 | 
						|
      imageAltTextSettingsButton: document.getElementById(
 | 
						|
        "imageAltTextSettings"
 | 
						|
      ),
 | 
						|
      imageAltTextSettingsSeparator: document.getElementById(
 | 
						|
        "imageAltTextSettingsSeparator"
 | 
						|
      ),
 | 
						|
      documentPropertiesButton: document.getElementById("documentProperties"),
 | 
						|
    },
 | 
						|
    sidebar: {
 | 
						|
      // Divs (and sidebar button)
 | 
						|
      outerContainer: document.getElementById("outerContainer"),
 | 
						|
      sidebarContainer: document.getElementById("sidebarContainer"),
 | 
						|
      toggleButton: document.getElementById("sidebarToggleButton"),
 | 
						|
      resizer: document.getElementById("sidebarResizer"),
 | 
						|
      // Buttons
 | 
						|
      thumbnailButton: document.getElementById("viewThumbnail"),
 | 
						|
      outlineButton: document.getElementById("viewOutline"),
 | 
						|
      attachmentsButton: document.getElementById("viewAttachments"),
 | 
						|
      layersButton: document.getElementById("viewLayers"),
 | 
						|
      // Views
 | 
						|
      thumbnailView: document.getElementById("thumbnailView"),
 | 
						|
      outlineView: document.getElementById("outlineView"),
 | 
						|
      attachmentsView: document.getElementById("attachmentsView"),
 | 
						|
      layersView: document.getElementById("layersView"),
 | 
						|
      // View-specific options
 | 
						|
      currentOutlineItemButton: document.getElementById("currentOutlineItem"),
 | 
						|
    },
 | 
						|
    findBar: {
 | 
						|
      bar: document.getElementById("findbar"),
 | 
						|
      toggleButton: document.getElementById("viewFindButton"),
 | 
						|
      findField: document.getElementById("findInput"),
 | 
						|
      highlightAllCheckbox: document.getElementById("findHighlightAll"),
 | 
						|
      caseSensitiveCheckbox: document.getElementById("findMatchCase"),
 | 
						|
      matchDiacriticsCheckbox: document.getElementById("findMatchDiacritics"),
 | 
						|
      entireWordCheckbox: document.getElementById("findEntireWord"),
 | 
						|
      findMsg: document.getElementById("findMsg"),
 | 
						|
      findResultsCount: document.getElementById("findResultsCount"),
 | 
						|
      findPreviousButton: document.getElementById("findPreviousButton"),
 | 
						|
      findNextButton: document.getElementById("findNextButton"),
 | 
						|
    },
 | 
						|
    passwordOverlay: {
 | 
						|
      dialog: document.getElementById("passwordDialog"),
 | 
						|
      label: document.getElementById("passwordText"),
 | 
						|
      input: document.getElementById("password"),
 | 
						|
      submitButton: document.getElementById("passwordSubmit"),
 | 
						|
      cancelButton: document.getElementById("passwordCancel"),
 | 
						|
    },
 | 
						|
    documentProperties: {
 | 
						|
      dialog: document.getElementById("documentPropertiesDialog"),
 | 
						|
      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"),
 | 
						|
      },
 | 
						|
    },
 | 
						|
    altTextDialog: {
 | 
						|
      dialog: document.getElementById("altTextDialog"),
 | 
						|
      optionDescription: document.getElementById("descriptionButton"),
 | 
						|
      optionDecorative: document.getElementById("decorativeButton"),
 | 
						|
      textarea: document.getElementById("descriptionTextarea"),
 | 
						|
      cancelButton: document.getElementById("altTextCancel"),
 | 
						|
      saveButton: document.getElementById("altTextSave"),
 | 
						|
    },
 | 
						|
    newAltTextDialog: {
 | 
						|
      dialog: document.getElementById("newAltTextDialog"),
 | 
						|
      title: document.getElementById("newAltTextTitle"),
 | 
						|
      descriptionContainer: document.getElementById(
 | 
						|
        "newAltTextDescriptionContainer"
 | 
						|
      ),
 | 
						|
      textarea: document.getElementById("newAltTextDescriptionTextarea"),
 | 
						|
      disclaimer: document.getElementById("newAltTextDisclaimer"),
 | 
						|
      learnMore: document.getElementById("newAltTextLearnMore"),
 | 
						|
      imagePreview: document.getElementById("newAltTextImagePreview"),
 | 
						|
      createAutomatically: document.getElementById(
 | 
						|
        "newAltTextCreateAutomatically"
 | 
						|
      ),
 | 
						|
      createAutomaticallyButton: document.getElementById(
 | 
						|
        "newAltTextCreateAutomaticallyButton"
 | 
						|
      ),
 | 
						|
      downloadModel: document.getElementById("newAltTextDownloadModel"),
 | 
						|
      downloadModelDescription: document.getElementById(
 | 
						|
        "newAltTextDownloadModelDescription"
 | 
						|
      ),
 | 
						|
      error: document.getElementById("newAltTextError"),
 | 
						|
      errorCloseButton: document.getElementById("newAltTextCloseButton"),
 | 
						|
      cancelButton: document.getElementById("newAltTextCancel"),
 | 
						|
      notNowButton: document.getElementById("newAltTextNotNow"),
 | 
						|
      saveButton: document.getElementById("newAltTextSave"),
 | 
						|
    },
 | 
						|
    altTextSettingsDialog: {
 | 
						|
      dialog: document.getElementById("altTextSettingsDialog"),
 | 
						|
      createModelButton: document.getElementById("createModelButton"),
 | 
						|
      aiModelSettings: document.getElementById("aiModelSettings"),
 | 
						|
      learnMore: document.getElementById("altTextSettingsLearnMore"),
 | 
						|
      deleteModelButton: document.getElementById("deleteModelButton"),
 | 
						|
      downloadModelButton: document.getElementById("downloadModelButton"),
 | 
						|
      showAltTextDialogButton: document.getElementById(
 | 
						|
        "showAltTextDialogButton"
 | 
						|
      ),
 | 
						|
      altTextSettingsCloseButton: document.getElementById(
 | 
						|
        "altTextSettingsCloseButton"
 | 
						|
      ),
 | 
						|
      closeButton: document.getElementById("altTextSettingsCloseButton"),
 | 
						|
    },
 | 
						|
    addSignatureDialog: {
 | 
						|
      dialog: document.getElementById("addSignatureDialog"),
 | 
						|
      panels: document.getElementById("addSignatureActionContainer"),
 | 
						|
      typeButton: document.getElementById("addSignatureTypeButton"),
 | 
						|
      typeInput: document.getElementById("addSignatureTypeInput"),
 | 
						|
      drawButton: document.getElementById("addSignatureDrawButton"),
 | 
						|
      drawSVG: document.getElementById("addSignatureDraw"),
 | 
						|
      drawPlaceholder: document.getElementById("addSignatureDrawPlaceholder"),
 | 
						|
      drawThickness: document.getElementById("addSignatureDrawThickness"),
 | 
						|
      imageButton: document.getElementById("addSignatureImageButton"),
 | 
						|
      imageSVG: document.getElementById("addSignatureImage"),
 | 
						|
      imagePlaceholder: document.getElementById("addSignatureImagePlaceholder"),
 | 
						|
      imagePicker: document.getElementById("addSignatureFilePicker"),
 | 
						|
      imagePickerLink: document.getElementById("addSignatureImageBrowse"),
 | 
						|
      description: document.getElementById("addSignatureDescription"),
 | 
						|
      clearButton: document.getElementById("clearSignatureButton"),
 | 
						|
      saveContainer: document.getElementById("addSignatureSaveContainer"),
 | 
						|
      saveCheckbox: document.getElementById("addSignatureSaveCheckbox"),
 | 
						|
      errorBar: document.getElementById("addSignatureError"),
 | 
						|
      errorTitle: document.getElementById("addSignatureErrorTitle"),
 | 
						|
      errorDescription: document.getElementById("addSignatureErrorDescription"),
 | 
						|
      errorCloseButton: document.getElementById("addSignatureErrorCloseButton"),
 | 
						|
      cancelButton: document.getElementById("addSignatureCancelButton"),
 | 
						|
      addButton: document.getElementById("addSignatureAddButton"),
 | 
						|
    },
 | 
						|
    editSignatureDialog: {
 | 
						|
      dialog: document.getElementById("editSignatureDescriptionDialog"),
 | 
						|
      description: document.getElementById("editSignatureDescription"),
 | 
						|
      editSignatureView: document.getElementById("editSignatureView"),
 | 
						|
      cancelButton: document.getElementById("editSignatureCancelButton"),
 | 
						|
      updateButton: document.getElementById("editSignatureUpdateButton"),
 | 
						|
    },
 | 
						|
    annotationEditorParams: {
 | 
						|
      editorCommentsSidebar: document.getElementById("editorCommentsSidebar"),
 | 
						|
      editorCommentsSidebarCount: document.getElementById(
 | 
						|
        "editorCommentsSidebarCount"
 | 
						|
      ),
 | 
						|
      editorCommentsSidebarTitle: document.getElementById(
 | 
						|
        "editorCommentsSidebarTitle"
 | 
						|
      ),
 | 
						|
      editorCommentsSidebarCloseButton: document.getElementById(
 | 
						|
        "editorCommentsSidebarCloseButton"
 | 
						|
      ),
 | 
						|
      editorCommentsSidebarList: document.getElementById(
 | 
						|
        "editorCommentsSidebarList"
 | 
						|
      ),
 | 
						|
      editorCommentsSidebarResizer: document.getElementById(
 | 
						|
        "editorCommentsSidebarResizer"
 | 
						|
      ),
 | 
						|
      editorFreeTextFontSize: document.getElementById("editorFreeTextFontSize"),
 | 
						|
      editorFreeTextColor: document.getElementById("editorFreeTextColor"),
 | 
						|
      editorInkColor: document.getElementById("editorInkColor"),
 | 
						|
      editorInkThickness: document.getElementById("editorInkThickness"),
 | 
						|
      editorInkOpacity: document.getElementById("editorInkOpacity"),
 | 
						|
      editorStampAddImage: document.getElementById("editorStampAddImage"),
 | 
						|
      editorSignatureAddSignature: document.getElementById(
 | 
						|
        "editorSignatureAddSignature"
 | 
						|
      ),
 | 
						|
      editorFreeHighlightThickness: document.getElementById(
 | 
						|
        "editorFreeHighlightThickness"
 | 
						|
      ),
 | 
						|
      editorHighlightShowAll: document.getElementById("editorHighlightShowAll"),
 | 
						|
    },
 | 
						|
    printContainer: document.getElementById("printContainer"),
 | 
						|
    editorUndoBar: {
 | 
						|
      container: document.getElementById("editorUndoBar"),
 | 
						|
      message: document.getElementById("editorUndoBarMessage"),
 | 
						|
      undoButton: document.getElementById("editorUndoBarUndoButton"),
 | 
						|
      closeButton: document.getElementById("editorUndoBarCloseButton"),
 | 
						|
    },
 | 
						|
    editCommentDialog: {
 | 
						|
      dialog: document.getElementById("commentManagerDialog"),
 | 
						|
      toolbar: document.getElementById("commentManagerToolbar"),
 | 
						|
      title: document.getElementById("commentManagerTitle"),
 | 
						|
      textInput: document.getElementById("commentManagerTextInput"),
 | 
						|
      cancelButton: document.getElementById("commentManagerCancelButton"),
 | 
						|
      saveButton: document.getElementById("commentManagerSaveButton"),
 | 
						|
    },
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
function webViewerLoad() {
 | 
						|
  const config = getViewerConfiguration();
 | 
						|
 | 
						|
  if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC")) {
 | 
						|
    // Give custom implementations of the default viewer a simpler way to
 | 
						|
    // set various `AppOptions`, by dispatching an event once all viewer
 | 
						|
    // files are loaded but *before* the viewer initialization has run.
 | 
						|
    const event = new CustomEvent("webviewerloaded", {
 | 
						|
      bubbles: true,
 | 
						|
      cancelable: true,
 | 
						|
      detail: {
 | 
						|
        source: window,
 | 
						|
      },
 | 
						|
    });
 | 
						|
    try {
 | 
						|
      // Attempt to dispatch the event at the embedding `document`,
 | 
						|
      // in order to support cases where the viewer is embedded in
 | 
						|
      // a *dynamically* created <iframe> element.
 | 
						|
      parent.document.dispatchEvent(event);
 | 
						|
    } catch (ex) {
 | 
						|
      // The viewer could be in e.g. a cross-origin <iframe> element,
 | 
						|
      // fallback to dispatching the event at the current `document`.
 | 
						|
      console.error("webviewerloaded:", ex);
 | 
						|
      document.dispatchEvent(event);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  PDFViewerApplication.run(config);
 | 
						|
}
 | 
						|
 | 
						|
// Block the "load" event until all pages are loaded, to ensure that printing
 | 
						|
// works in Firefox; see https://bugzilla.mozilla.org/show_bug.cgi?id=1618553
 | 
						|
document.blockUnblockOnload?.(true);
 | 
						|
 | 
						|
if (
 | 
						|
  document.readyState === "interactive" ||
 | 
						|
  document.readyState === "complete"
 | 
						|
) {
 | 
						|
  webViewerLoad();
 | 
						|
} else {
 | 
						|
  document.addEventListener("DOMContentLoaded", webViewerLoad, true);
 | 
						|
}
 | 
						|
 | 
						|
export {
 | 
						|
  PDFViewerApplication,
 | 
						|
  AppConstants as PDFViewerApplicationConstants,
 | 
						|
  AppOptions as PDFViewerApplicationOptions,
 | 
						|
};
 |