ngx-extended-pdf-viewer
Version:
Embedding PDF files in your Angular application. Highly configurable viewer including the toolbar, sidebar, and all the features you're used to.
1 lines • 406 kB
Source Map (JSON)
{"version":3,"file":"ngx-extended-pdf-viewer.mjs","sources":["../../../projects/ngx-extended-pdf-viewer/src/lib/options/pdf-default-options.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/verbosity-level.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/events/find-result.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dummy-components/pdf-dummy-components.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dummy-components/pdf-dummy-components.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/options/pdf-cursor-tools.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pinch-on-mobile-support.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/pdf-viewer.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/unit-to-px.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-notification-service.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/ngx-extended-pdf-viewer.service.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/theme/pdf-dark-theme/pdf-dark-theme.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/theme/pdf-dark-theme/pdf-dark-theme.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/theme/pdf-light-theme/pdf-light-theme.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/theme/pdf-light-theme/pdf-light-theme.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/dynamic-css/dynamic-css.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/dynamic-css/dynamic-css.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/sidebar/pdf-sidebar/pdf-sidebar-toolbar/pdf-sidebar-toolbar.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/sidebar/pdf-sidebar/pdf-sidebar-toolbar/pdf-sidebar-toolbar.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/sidebar/pdf-sidebar/pdf-sidebar-content/pdf-sidebar-content.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/sidebar/pdf-sidebar/pdf-sidebar-content/pdf-sidebar-content.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/sidebar/pdf-sidebar/pdf-sidebar.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/sidebar/pdf-sidebar/pdf-sidebar.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-toggle-sidebar/pdf-toggle-sidebar.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-toggle-sidebar/pdf-toggle-sidebar.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-find-button/pdf-find-button.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-find-button/pdf-find-button.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-first-page/pdf-first-page.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-first-page/pdf-first-page.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-previous-page/pdf-previous-page.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-previous-page/pdf-previous-page.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-page-number/pdf-page-number.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-page-number/pdf-page-number.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-next-page/pdf-next-page.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-next-page/pdf-next-page.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-last-page/pdf-last-page.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-last-page/pdf-last-page.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-paging-area.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-paging-area/pdf-paging-area.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-zoom-toolbar/pdf-zoom-out/pdf-zoom-out.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-zoom-toolbar/pdf-zoom-out/pdf-zoom-out.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-zoom-toolbar/pdf-zoom-in/pdf-zoom-in.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-zoom-toolbar/pdf-zoom-in/pdf-zoom-in.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-zoom-toolbar/pdf-zoom-dropdown/pdf-zoom-dropdown.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-zoom-toolbar/pdf-zoom-dropdown/pdf-zoom-dropdown.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-zoom-toolbar/pdf-zoom-toolbar.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-zoom-toolbar/pdf-zoom-toolbar.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-hand-tool/pdf-hand-tool.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-hand-tool/pdf-hand-tool.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-select-tool/pdf-select-tool.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-select-tool/pdf-select-tool.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-rotate-page/pdf-rotate-page.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-rotate-page/pdf-rotate-page.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-presentation-mode/pdf-presentation-mode.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-presentation-mode/pdf-presentation-mode.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-open-file/pdf-open-file.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-open-file/pdf-open-file.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-print/pdf-print.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-print/pdf-print.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-download/pdf-download.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-download/pdf-download.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-bookmark/pdf-bookmark.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-bookmark/pdf-bookmark.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-toggle-secondary-toolbar/pdf-toggle-secondary-toolbar.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-toggle-secondary-toolbar/pdf-toggle-secondary-toolbar.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-toolbar/pdf-toolbar.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-toolbar/pdf-toolbar.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/secondary-toolbar/pdf-secondary-toolbar/pdf-secondary-toolbar.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/secondary-toolbar/pdf-secondary-toolbar/pdf-secondary-toolbar.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-service.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-search-input-field/pdf-search-input-field.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-search-input-field/pdf-search-input-field.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-find-previous/pdf-find-previous.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-find-previous/pdf-find-previous.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-find-next/pdf-find-next.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-find-next/pdf-find-next.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-find-input-area/pdf-find-input-area.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-find-input-area/pdf-find-input-area.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-find-highlight-all/pdf-find-highlight-all.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-find-highlight-all/pdf-find-highlight-all.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-find-match-case/pdf-find-match-case.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-find-match-case/pdf-find-match-case.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-find-current-page-only/pdf-find-current-page-only.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-find-current-page-only/pdf-find-current-page-only.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-find-range/pdf-find-range.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-find-range/pdf-find-range.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-two-container/pdf-find-entire-word/pdf-find-entire-word.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-two-container/pdf-find-entire-word/pdf-find-entire-word.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-two-container/pdf-find-entire-phrase/pdf-find-entire-phrase.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-two-container/pdf-find-entire-phrase/pdf-find-entire-phrase.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-three-container/pdf-find-ignore-accents/pdf-find-ignore-accents.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-three-container/pdf-find-ignore-accents/pdf-find-ignore-accents.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-three-container/pdf-find-fuzzily/pdf-find-fuzzily.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-three-container/pdf-find-fuzzily/pdf-find-fuzzily.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-three-container/pdf-find-results-count/pdf-find-results-count.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-three-container/pdf-find-results-count/pdf-find-results-count.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-message-container/pdf-findbar-message-container.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-message-container/pdf-findbar-message-container.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-context-menu/pdf-context-menu.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-context-menu/pdf-context-menu.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/document-properties/pdf-document-properties-overlay/pdf-document-properties-overlay.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/document-properties/pdf-document-properties-overlay/pdf-document-properties-overlay.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/translate.pipe.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/ngx-extended-pdf-viewer.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/ngx-extended-pdf-viewer.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/ngx-extended-pdf-viewer-server.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/ngx-extended-pdf-viewer-server.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/options/password-prompt.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-findbar-options-one-container.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-findbar-options-one-container.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-three-container/pdf-findbar-options-three-container.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-three-container/pdf-findbar-options-three-container.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-two-container/pdf-findbar-options-two-container.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-two-container/pdf-findbar-options-two-container.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/theme/pdf-original-theme/pdf-original.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/theme/pdf-original-theme/pdf-original.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/ngx-extended-pdf-viewer-common.module.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/ngx-console.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/ngx-extended-pdf-viewer.module.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/ngx-extended-pdf-viewer-server.service.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/ngx-extended-pdf-viewer-server.module.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-document-properties-extractor.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/link-target.ts","../../../projects/ngx-extended-pdf-viewer/src/public_api.ts","../../../projects/ngx-extended-pdf-viewer/src/ngx-extended-pdf-viewer.ts"],"sourcesContent":["const _isIE11 = typeof window === 'undefined' ? false : !!(<any>window).MSInputMethodContext && !!(<any>document).documentMode;\nconst isEdge = typeof navigator === 'undefined' || /Edge\\/\\d./i.test(navigator.userAgent);\nconst needsES5 = typeof ReadableStream === 'undefined' || typeof Promise['allSettled'] === 'undefined';\n\nexport const pdfjsVersion = '2.12.557';\nexport const pdfjsBleedingEdgeVersion = '2.13.408';\nexport function getVersionSuffix(folder: string): string {\n if (folder && folder.includes('bleeding-edge')) {\n return pdfjsBleedingEdgeVersion;\n }\n return pdfjsVersion;\n}\n\nexport let pdfDefaultOptions = {\n needsES5: _isIE11 || isEdge || needsES5,\n cursorToolOnLoad: 0,\n defaultUrl: '',\n defaultZoomValue: undefined,\n disableHistory: false,\n disablePageLabels: false,\n enablePrintAutoRotate: false,\n enableWebGL: false,\n eventBusDispatchToDOM: false,\n externalLinkRel: 'noopener noreferrer nofollow',\n externalLinkTarget: 0,\n historyUpdateUrl: false,\n ignoreDestinationZoom: false,\n imageResourcesPath: './images/',\n maxCanvasPixels: 16777216,\n pdfBugEnabled: false,\n rangeChunkSize: 65536,\n removePageBorders: false,\n renderer: 'canvas',\n renderInteractiveForms: true, // renamed - until pdf.js 2.10\n renderForms: true, // renamed - since pdf.js 2.11\n enableXfa: true,\n sidebarViewOnLoad: -1,\n scrollModeOnLoad: -1,\n spreadModeOnLoad: -1,\n textLayerMode: 2,\n useOnlyCssZoom: false,\n viewOnLoad: 0,\n cMapPacked: true,\n cMapUrl: () => `./${pdfDefaultOptions.assetsFolder}/cmaps/`,\n disableAutoFetch: false,\n disableCreateObjectURL: false,\n disableFontFace: false,\n disableRange: false,\n disableStream: false,\n isEvalSupported: true,\n maxImageSize: -1,\n pdfBug: false,\n postMessageTransfers: true,\n verbosity: 1,\n workerPort: null,\n assetsFolder: 'assets',\n sandboxBundleSrc: () =>\n pdfDefaultOptions.needsES5\n ? `./${pdfDefaultOptions.assetsFolder}/pdf.sandbox-${getVersionSuffix(pdfDefaultOptions.assetsFolder)}-es5.js`\n : `./${pdfDefaultOptions.assetsFolder}/pdf.sandbox-${getVersionSuffix(pdfDefaultOptions.assetsFolder)}.js`,\n workerSrc: () =>\n pdfDefaultOptions.needsES5\n ? `./${pdfDefaultOptions.assetsFolder}/pdf.worker-${getVersionSuffix(pdfDefaultOptions.assetsFolder)}-es5.js`\n : `./${pdfDefaultOptions.assetsFolder}/pdf.worker-${getVersionSuffix(pdfDefaultOptions.assetsFolder)}.js`,\n\n // options specific to ngx-extended-pdf-viewer (as opposed to being used by pdf.js)\n doubleTapZoomFactor: 'page-width',\n enableScripting: true,\n defaultCacheSize: 50,\n passwordPrompt: undefined,\n};\n\nif (typeof window !== 'undefined') {\n if ((<any>window).pdfDefaultOptions) {\n pdfDefaultOptions = (<any>window).pdfDefaultOptions;\n } else {\n (<any>window).pdfDefaultOptions = pdfDefaultOptions;\n }\n}\n","export enum VerbosityLevel {\n ERRORS = 0,\n WARNINGS = 1,\n INFOS = 5\n};\n","export enum FindState {\n FOUND = 0,\n NOT_FOUND = 1,\n WRAPPED = 2,\n PENDING = 3\n}\n\nexport interface FindResultMatchesCount {\n current?: number;\n total?: number;\n matches?: Array<any>;\n matchesLength?: Array<any>;\n matchesColor?: Array<any>;\n\n}\n\nexport interface FindResult {\n state: FindState;\n previous: any;\n matchesCount: FindResultMatchesCount;\n}\n","import { Component } from '@angular/core';\n\n/** List of all field that can be customized */\nconst requiredIds = [\n 'toolbarViewer',\n 'numPages',\n 'pageNumber',\n 'scaleSelectContainer',\n 'customScaleOption',\n 'previous',\n 'next',\n 'zoomIn',\n 'zoomOut',\n 'viewFind',\n 'openFile',\n 'print',\n 'presentationMode',\n 'download',\n 'viewBookmark',\n 'secondaryToolbar',\n 'secondaryToolbarToggle',\n 'secondaryToolbarButtonContainer',\n 'secondaryPresentationMode',\n 'secondaryOpenFile',\n 'secondaryPrint',\n 'secondaryDownload',\n 'secondaryViewBookmark',\n 'firstPage',\n 'lastPage',\n 'pageRotateCw',\n 'pageRotateCcw',\n 'cursorSelectTool',\n 'cursorHandTool',\n 'scrollVertical',\n 'scrollHorizontal',\n 'scrollWrapped',\n 'spreadNone',\n 'spreadOdd',\n 'spreadEven',\n 'documentProperties',\n 'contextFirstPage',\n 'contextLastPage',\n 'contextPageRotateCw',\n 'contextPageRotateCcw',\n 'currentOutlineItem',\n 'outerContainer',\n 'viewerContainer',\n 'sidebarToggle',\n 'viewThumbnail',\n 'viewOutline',\n 'viewAttachments',\n 'thumbnailView',\n 'outlineView',\n 'attachmentsView',\n 'outerContainer',\n 'sidebarResizer',\n 'outlineOptionsContainer',\n 'findbar',\n 'viewFind',\n 'findInput',\n 'findInputMultiline',\n 'findHighlightAll',\n 'findCurrentPage',\n 'findRange',\n 'findMatchCase',\n 'findMatchDiacritics',\n 'findEntireWord',\n 'findMultipleSearchTexts',\n 'findIgnoreAccents',\n 'findMsg',\n 'findResultsCount',\n 'findPrevious',\n 'findNext',\n 'findFuzzy',\n 'passwordOverlay',\n 'passwordText',\n 'password',\n 'passwordSubmit',\n 'passwordCancel',\n 'documentPropertiesOverlay',\n 'documentPropertiesClose',\n 'fileNameField',\n 'fileSizeField',\n 'titleField',\n 'authorField',\n 'subjectField',\n 'keywordsField',\n 'creationDateField',\n 'modificationDateField',\n 'creatorField',\n 'producerField',\n 'versionField',\n 'pageCountField',\n 'pageSizeField',\n 'linearizedField',\n 'errorWrapper',\n 'errorMessage',\n 'errorClose',\n 'errorMoreInfo',\n 'errorShowMore',\n 'errorShowLess',\n 'scaleSelectContainer',\n 'viewAttachments',\n 'viewLayers',\n 'viewThumbnail',\n 'viewOutline',\n];\n\n@Component({\n selector: 'pdf-dummy-components',\n templateUrl: './pdf-dummy-components.component.html'\n})\nexport class PdfDummyComponentsComponent {\n private dummyComponentsContainer: Element;\n\n public addMissingStandardWidgets(): void {\n this.dummyComponentsContainer = document.getElementsByClassName('dummy-pdf-viewer-components')[0];\n const container = this.dummyComponentsContainer as HTMLElement;\n if (container) {\n for (let i = 0; i < container.children.length; i++) {\n const child = container.firstChild;\n if (child) {\n container.removeChild(child);\n }\n }\n }\n\n requiredIds.forEach(id => {\n if (this.needsDummyWidget(id)) {\n const dummy = document.createElement('span');\n dummy.id = id;\n dummy.className = 'invisible dummy-component';\n this.dummyComponentsContainer.appendChild(dummy);\n }\n });\n\n if (this.needsDummyWidget('scaleSelect')) {\n const dummy = document.createElement('select');\n dummy.id = 'scaleSelect';\n dummy.className = 'invisible dummy-component';\n this.dummyComponentsContainer.appendChild(dummy);\n }\n }\n\n private needsDummyWidget(id: string): boolean {\n const widget = document.getElementById(id);\n if (!widget) {\n return true;\n }\n return false;\n }\n}\n","<span class=\"invisible dummy-pdf-viewer-components\">\n</span>\n","export enum PdfCursorTools {\n SELECT = 0,\n HAND = 1,\n ZOOM = 2\n}\n","import { NgZone } from '@angular/core';\nimport { IPDFViewerApplicationOptions } from './options/pdf-viewer-application-options';\n\nexport class PinchOnMobileSupport {\n private viewer: any;\n private startX = 0;\n private startY = 0;\n private initialPinchDistance = 0;\n private pinchScale = 1;\n\n private boundOnViewerTouchStart: any;\n private boundOnViewerTouchMove: any;\n private boundOnViewerTouchEnd: any;\n\n constructor(private _zone: NgZone) {\n this.boundOnViewerTouchStart = this.onViewerTouchStart.bind(this);\n this.boundOnViewerTouchMove = this.onViewerTouchMove.bind(this);\n this.boundOnViewerTouchEnd = this.onViewerTouchEnd.bind(this);\n\n this.initializePinchZoom();\n }\n\n private isMobile() {\n return ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || ((<any>navigator).msMaxTouchPoints > 0);\n }\n\n private onViewerTouchStart(event: TouchEvent): void {\n this.initialPinchDistance = 0;\n\n if (event.touches.length === 2) {\n const container = document.getElementById('viewerContainer') as HTMLDivElement;\n const rect = container.getBoundingClientRect();\n if (event.touches[0].pageX >= rect.left && event.touches[0].pageX <= rect.right) {\n if (event.touches[0].pageY >= (rect.top + window.scrollY) && event.touches[0].pageY <= (rect.bottom + window.scrollY)) {\n if (event.touches[1].pageX >= rect.left && event.touches[1].pageX <= rect.right) {\n if (event.touches[1].pageY >= (rect.top + window.scrollY) && event.touches[1].pageY <= (rect.bottom + window.scrollY)) {\n this.startX = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n this.startY = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n this.initialPinchDistance = Math.hypot(event.touches[1].pageX - event.touches[0].pageX, event.touches[1].pageY - event.touches[0].pageY);\n\n if (event.cancelable) {\n event.preventDefault();\n }\n event.stopPropagation();\n }\n }\n }\n }\n }\n }\n\n private onViewerTouchMove(event: TouchEvent): void {\n const PDFViewerApplicationOptions: IPDFViewerApplicationOptions = (window as any).PDFViewerApplicationOptions;\n const PDFViewerApplication: any = (window as any).PDFViewerApplication;\n\n if (this.initialPinchDistance <= 0 || event.touches.length !== 2) {\n return;\n }\n\n const pinchDistance = Math.hypot(event.touches[1].pageX - event.touches[0].pageX, event.touches[1].pageY - event.touches[0].pageY);\n const container = document.getElementById('viewerContainer') as HTMLDivElement;\n const originX = this.startX + container.scrollLeft;\n const originY = this.startY + container.scrollTop;\n this.pinchScale = pinchDistance / this.initialPinchDistance;\n let minZoom = Number(PDFViewerApplicationOptions.get('minZoom'));\n if (!minZoom) {\n minZoom = 0.1;\n }\n\n const currentZoom = PDFViewerApplication.pdfViewer._currentScale;\n if (currentZoom * this.pinchScale < minZoom) {\n this.pinchScale = minZoom / currentZoom;\n }\n let maxZoom = Number(PDFViewerApplicationOptions.get('maxZoom'));\n if (!maxZoom) {\n maxZoom = 10;\n }\n if (currentZoom * this.pinchScale > maxZoom) {\n this.pinchScale = maxZoom / currentZoom;\n }\n this.viewer.style.transform = `scale(${this.pinchScale})`;\n this.viewer.style.transformOrigin = `${originX}px ${originY}px`;\n\n if (event.cancelable) {\n event.preventDefault();\n }\n event.stopPropagation();\n }\n\n private onViewerTouchEnd(event: TouchEvent): void {\n const PDFViewerApplication: any = (window as any).PDFViewerApplication;\n if (this.initialPinchDistance <= 0) {\n return;\n }\n this.viewer.style.transform = `none`;\n this.viewer.style.transformOrigin = `unset`;\n PDFViewerApplication.pdfViewer.currentScale *= this.pinchScale;\n const container = document.getElementById('viewerContainer') as HTMLDivElement;\n const rect = container.getBoundingClientRect();\n const dx = this.startX - rect.left;\n const dy = this.startY - rect.top;\n container.scrollLeft += dx * (this.pinchScale - 1);\n container.scrollTop += dy * (this.pinchScale - 1);\n this.resetPinchZoomParams();\n\n if (event.cancelable) {\n event.preventDefault();\n }\n event.stopPropagation();\n }\n\n private resetPinchZoomParams(): void {\n this.startX = this.startY = this.initialPinchDistance = 0;\n this.pinchScale = 1;\n }\n\n public initializePinchZoom(): void {\n if (!this.isMobile()) {\n return;\n }\n this.viewer = document.getElementById('viewer');\n this._zone.runOutsideAngular(() => {\n document.addEventListener('touchstart', this.boundOnViewerTouchStart);\n document.addEventListener('touchmove', this.boundOnViewerTouchMove, { passive: false });\n document.addEventListener('touchend', this.boundOnViewerTouchEnd);\n });\n }\n\n public destroyPinchZoom(): void {\n if (!this.isMobile()) {\n return;\n }\n document.removeEventListener('touchstart', this.boundOnViewerTouchStart);\n document.removeEventListener('touchmove', this.boundOnViewerTouchMove);\n document.removeEventListener('touchend', this.boundOnViewerTouchEnd);\n }\n}\n","import { OptionalContentConfig } from \"./optional_content_config\";\n\nexport enum ScrollModeType {\n vertical = 0,\n horizontal = 1,\n wrapped = 2,\n page = 3\n}\n\nexport enum SpreadModeType {\n UNKNOWN = -1,\n NONE = 0, // Default value.\n ODD = 1,\n EVEN = 2,\n}\n\nexport type PageViewModeType = 'single' | 'book' | 'multiple' | 'infinite-scroll';\n\nexport interface ScrollModeChangedEvent {\n mode: ScrollModeType;\n}\nexport interface IPDFRenderingQueue {\n getHighestPriority(visiblePage: Array<any>, pages: Array<any>, scrolledDown: boolean, preRenderExtra: boolean);\n}\nexport interface IPDFViewer {\n currentPageLabel: string | undefined;\n currentPageNumber: number;\n currentScaleValue: string | number;\n pagesRotation: 0 | 90 | 180 | 270;\n removePageBorders: boolean;\n renderingQueue: IPDFRenderingQueue;\n scrollMode: ScrollModeType;\n spreadMode: 0 | 1 | 2;\n _pages: Array<any>;\n addPageToRenderQueue(pageIndex: number): boolean;\n _getVisiblePages(): Array<any>;\n optionalContentConfigPromise: Promise<OptionalContentConfig> | null;\n}\n","export class UnitToPx {\n // cache this.con, el for reused\n private static con: HTMLDivElement | undefined = undefined;\n private static el: HTMLDivElement | undefined = undefined;\n\n // high sample will more accurate?\n private static readonly sample = 100;\n\n private static pxPerUnitCache: { [key: string]: number } = {};\n\n private static initElements(): void {\n if (!document) {\n return;\n }\n if (!this.con || !this.el) {\n this.con = document.createElement('div');\n this.el = document.createElement('div');\n }\n this.con.style.position = 'absolute';\n this.con.style.width = '0';\n this.con.style.height = '0';\n this.con.style.visibility = 'hidden';\n this.con.style.overflow = 'hidden';\n this.con.appendChild(this.el);\n }\n\n private static pxPerUnit(unit: string): number {\n if (!this.pxPerUnitCache[unit]) {\n if (!this.con || !this.el) {\n this.initElements();\n }\n if (!this.con || !this.el) {\n // dummy implementation for server-side rendering\n return 1;\n }\n this.el.style.width = this.sample + unit;\n document.body.appendChild(this.con);\n const dimension = this.el.getBoundingClientRect();\n this.con.parentNode!.removeChild(this.con);\n this.pxPerUnitCache[unit] = dimension.width / this.sample;\n }\n return this.pxPerUnitCache[unit];\n }\n\n public static toPx(length): number {\n const unitRe = /^\\s*([+-]?[\\d\\.]*)\\s*(.*)\\s*$/i;\n const match = unitRe.exec(length);\n if (match != null && match.length > 2) {\n const bare = match[1] === '';\n const val = bare ? 1 : Number(match[1]);\n const unit = match[2];\n const valid = !isNaN(val) && unit;\n if (valid) {\n return unit === 'px' ? val : this.pxPerUnit(unit) * val;\n }\n }\n throw new TypeError('Error parsing length');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { getVersionSuffix, pdfDefaultOptions } from './options/pdf-default-options';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PDFNotificationService {\n // this event is fired when the pdf.js library has been loaded and objects like PDFApplication are available\n public onPDFJSInit = new Subject<void>();\n\n public pdfjsVersion = getVersionSuffix(pdfDefaultOptions.assetsFolder);\n}\n","import { Subject } from 'rxjs';\nimport { NgxExtendedPdfViewerComponent } from './ngx-extended-pdf-viewer.component';\nimport { PdfLayer } from './options/optional_content_config';\nimport { PDFPrintRange } from './options/pdf-print-range';\nimport { IPDFViewerApplication } from './options/pdf-viewer-application';\n\nexport interface FindOptions {\n highlightAll?: boolean;\n matchCase?: boolean;\n wholeWords?: boolean;\n ignoreAccents?: boolean;\n findMultipleSearchTexts?: boolean;\n fuzzySearch?: boolean;\n currentPage?: boolean; // search only in the current page\n pageRange?: string; // page range definition, e.g. \"2\", \"2,3,4\", \"5-6\" or \"2,5-6,7\"\n}\n\ninterface DrawContext {\n ctx: CanvasRenderingContext2D;\n canvas: HTMLCanvasElement;\n}\n\nexport interface PDFExportScaleFactor {\n width?: number;\n height?: number;\n scale?: number;\n}\n\nexport class NgxExtendedPdfViewerService {\n public recalculateSize$ = new Subject<void>();\n\n constructor() {}\n\n public findMultiple(text: Array<string>, options: FindOptions = {}): boolean {\n options = {\n ...options,\n findMultipleSearchTexts: true,\n };\n const searchString = text.join('\\n') + '\\n';\n return this.find(searchString, options);\n }\n\n public find(text: string, options: FindOptions = {}): boolean {\n if (!NgxExtendedPdfViewerComponent.ngxExtendedPdfViewerInitialized) {\n // tslint:disable-next-line:quotemark\n console.error(\"The PDF viewer hasn't finished initializing. Please call find() later.\");\n return false;\n } else {\n const highlightAllCheckbox = document.getElementById('findHighlightAll') as HTMLInputElement;\n if (highlightAllCheckbox) {\n highlightAllCheckbox.checked = options.highlightAll || false;\n }\n const findPageRange = document.getElementById('findRange') as HTMLInputElement;\n if (findPageRange) {\n findPageRange.value = options.pageRange || '';\n }\n const findCurrentPageCheckbox = document.getElementById('findCurrentPage') as HTMLInputElement;\n if (findCurrentPageCheckbox) {\n findCurrentPageCheckbox.checked = options.currentPage || false;\n }\n\n const matchCaseCheckbox = document.getElementById('findMatchCase') as HTMLInputElement;\n if (matchCaseCheckbox) {\n matchCaseCheckbox.checked = options.matchCase || false;\n }\n const entireWordCheckbox = document.getElementById('findEntireWord') as HTMLInputElement;\n if (entireWordCheckbox) {\n entireWordCheckbox.checked = options.wholeWords || false;\n }\n const findIgnoreAccentsCheckbox = document.getElementById('findIgnoreAccents') as HTMLInputElement;\n if (findIgnoreAccentsCheckbox) {\n findIgnoreAccentsCheckbox.checked = options.ignoreAccents || false;\n }\n const multipleSearchTerms = options.findMultipleSearchTexts || text.includes('\\n') || false;\n const findMultipleSearchTextsCheckbox = document.getElementById('findMultipleSearchTexts') as HTMLInputElement;\n if (findMultipleSearchTextsCheckbox) {\n findMultipleSearchTextsCheckbox.checked = multipleSearchTerms;\n }\n const individualWordsModeCheckbox = document.getElementById('individualWordsMode') as HTMLInputElement;\n if (individualWordsModeCheckbox) {\n individualWordsModeCheckbox.checked = false;\n }\n const fuzzySearchCheckbox = document.getElementById('findFuzzy') as HTMLInputElement;\n if (fuzzySearchCheckbox) {\n fuzzySearchCheckbox.checked = options.fuzzySearch || false;\n }\n const inputField = multipleSearchTerms ? document.getElementById('findInputMultiline') : document.getElementById('findInput');\n if (inputField) {\n if (inputField instanceof HTMLTextAreaElement) {\n inputField.value = text;\n\n // todo dirty hack!\n inputField.classList.remove('hidden');\n (document.getElementById('findInput') as HTMLInputElement).classList.add('hidden');\n (document.getElementById('individualWordsModeLabel') as HTMLInputElement).classList.remove('hidden');\n (document.getElementById('individualWordsMode') as HTMLInputElement).classList.remove('hidden');\n // end of the dirty hack\n } else if (inputField instanceof HTMLInputElement) {\n inputField.value = text;\n // todo dirty hack!\n inputField.classList.remove('hidden');\n (document.getElementById('findInputMultiline') as HTMLInputElement).classList.add('hidden');\n (document.getElementById('individualWordsModeLabel') as HTMLInputElement).classList.add('hidden');\n (document.getElementById('individualWordsMode') as HTMLInputElement).classList.add('hidden');\n // end of the dirty hack\n }\n inputField.dispatchEvent(new Event('input'));\n return true;\n } else {\n // tslint:disable-next-line:quotemark\n console.error(\"Unexpected error: the input field used to search isn't part of the DOM.\");\n return false;\n }\n }\n }\n\n public findNext(): boolean {\n if (!NgxExtendedPdfViewerComponent.ngxExtendedPdfViewerInitialized) {\n // tslint:disable-next-line:quotemark\n console.error(\"The PDF viewer hasn't finished initializing. Please call findNext() later.\");\n return false;\n } else {\n const button = document.getElementById('findNext');\n if (button) {\n button.click();\n return true;\n }\n return false;\n }\n }\n\n public findPrevious(): boolean {\n if (!NgxExtendedPdfViewerComponent.ngxExtendedPdfViewerInitialized) {\n // tslint:disable-next-line:quotemark\n console.error(\"The PDF viewer hasn't finished initializing. Please call findPrevious() later.\");\n return false;\n } else {\n const button = document.getElementById('findPrevious');\n if (button) {\n button.click();\n return true;\n }\n return false;\n }\n }\n\n public print(printRange?: PDFPrintRange) {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n const alreadyThere = !!window['isInPDFPrintRange'] && !printRange;\n if (!alreadyThere) {\n if (!printRange) {\n printRange = {} as PDFPrintRange;\n }\n this.setPrintRange(printRange);\n }\n (window as any).printPDF();\n if (!alreadyThere) {\n PDFViewerApplication.eventBus.on('afterprint', () => {\n this.removePrintRange();\n });\n }\n }\n\n public removePrintRange() {\n window['isInPDFPrintRange'] = undefined;\n window['filteredPageCount'] = undefined;\n }\n\n public setPrintRange(printRange: PDFPrintRange) {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n window['isInPDFPrintRange'] = (page: number) => this.isInPDFPrintRange(page, printRange as PDFPrintRange);\n window['filteredPageCount'] = this.filteredPageCount(PDFViewerApplication.pagesCount, printRange);\n }\n\n public filteredPageCount(pageCount: number, range: PDFPrintRange): number {\n let result = 0;\n for (let page = 1; page <= pageCount; page++) {\n if (this.isInPDFPrintRange(page, range)) {\n result++;\n }\n }\n return result;\n }\n\n public isInPDFPrintRange(pageIndex: number, printRange: PDFPrintRange) {\n const page = pageIndex + 1;\n if (printRange.from) {\n if (page < printRange.from) {\n return false;\n }\n }\n if (printRange.to) {\n if (page > printRange.to) {\n return false;\n }\n }\n if (printRange.excluded) {\n let e = printRange.excluded as Array<number>;\n if (e.some((p) => p === page)) {\n return false;\n }\n }\n if (printRange.included) {\n if (!printRange.included.some((p) => p === page)) {\n return false;\n }\n }\n return true;\n }\n\n public getPageAsText(pageNumber: number): Promise<string> {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n const pdfDocument = PDFViewerApplication.pdfDocument;\n\n const pagePromise: Promise<any> = pdfDocument.getPage(pageNumber);\n\n const extractTextSnippets = (pdfPage) =>\n new Promise<any>((resolve, reject) => {\n const textSnippets = pdfPage.getTextContent();\n resolve(textSnippets);\n });\n const combineTextSnippets = (textSnippets) =>\n new Promise<string>((resolve, reject) => {\n const text = this.convertTextInfoToText(textSnippets);\n resolve(text);\n });\n return pagePromise.then(extractTextSnippets).then(combineTextSnippets);\n }\n\n private convertTextInfoToText(textInfo: any): string {\n if (!textInfo) {\n return '';\n }\n return textInfo.items.map((info) => info.str).join('');\n }\n\n public getPageAsImage(pageNumber: number, scale: PDFExportScaleFactor): Promise<any> {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n const pdfDocument = PDFViewerApplication.pdfDocument;\n const pagePromise: Promise<any> = pdfDocument.getPage(pageNumber);\n const imagePromise = (pdfPage) =>\n new Promise<any>((resolve, reject) => {\n resolve(this.draw(pdfPage, scale));\n });\n\n return pagePromise.then(imagePromise);\n }\n\n private draw(pdfPage: any, scale: PDFExportScaleFactor): Promise<HTMLCanvasElement> {\n let zoomFactor = 1;\n if (scale.scale) {\n zoomFactor = scale.scale;\n } else if (scale.width) {\n zoomFactor = scale.width / pdfPage.getViewport({ scale: 1 }).width;\n } else if (scale.height) {\n zoomFactor = scale.height / pdfPage.getViewport({ scale: 1 }).height;\n }\n const viewport = pdfPage.getViewport({\n scale: zoomFactor,\n });\n const { ctx, canvas } = this.getPageDrawContext(viewport.width, viewport.height);\n const drawViewport = viewport.clone();\n\n const renderContext = {\n canvasContext: ctx,\n viewport: drawViewport,\n // background: 'rgba(255, 0, 255, 0.3)',\n };\n const renderTask = pdfPage.render(renderContext);\n\n const dataUrlPromise = () =>\n new Promise<string>((resolve, reject) => {\n resolve(canvas.toDataURL());\n });\n\n return renderTask.promise.then(dataUrlPromise);\n }\n\n private getPageDrawContext(width: number, height: number): DrawContext {\n const canvas = document.createElement('canvas') as HTMLCanvasElement;\n const ctx = canvas.getContext('2d', { alpha: false });\n if (!ctx) {\n // tslint:disable-next-line: quotemark\n throw new Error(\"Couldn't create the 2d context\");\n }\n\n canvas.width = width;\n canvas.height = height;\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n\n return { ctx, canvas };\n }\n\n public async getCurrentDocumentAsBlob(): Promise<Blob> {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n const data = await PDFViewerApplication.pdfDocument.saveDocument(PDFViewerApplication.pdfDocument.annotationStorage);\n return new Blob([data], { type: 'application/pdf' });\n }\n\n public async getFormData(): Promise<Array<Object>> {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n const pdf /*: PDFDocumentProxy */ = PDFViewerApplication.pdfDocument;\n // screen DPI / PDF DPI\n const dpiRatio = 96 / 72;\n const result: Array<Object> = [];\n for (let i = 1; i <= pdf.numPages; i++) {\n // track the current page\n const currentPage /* : PDFPageProxy */ = await pdf.getPage(i);\n const annotations = await currentPage.getAnnotations();\n\n annotations\n .filter((a) => a.subtype === 'Widget') // get the form field annotations only\n .forEach((a) => {\n // get the rectangle that represent the single field\n // and resize it according to the current DPI\n const fieldRect: Array<number> = currentPage.getViewport({ scale: dpiRatio }).convertToViewportRectangle(a.rect);\n\n // add the corresponding input\n result.push({ fieldAnnotation: a, fieldRect, pageNumber: i });\n });\n }\n return result;\n }\n\n /**\n * Adds a page to the rendering queue\n * @param {number} pageIndex Index of the page to render\n * @returns {boolean} false, if the page has already been rendered\n * or if it's out of range\n */\n public addPageToRenderQueue(pageIndex: number): boolean {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n return PDFViewerApplication.pdfViewer.addPageToRenderQueue(pageIndex);\n }\n\n public isRenderQueueEmpty(): boolean {\n const scrolledDown = true;\n const renderExtra = false;\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n const nextPage = PDFViewerApplication.pdfViewer.renderingQueue.getHighestPriority(\n PDFViewerApplication.pdfViewer._getVisiblePages(),\n PDFViewerApplication.pdfViewer._pages,\n scrolledDown,\n renderExtra\n );\n return !nextPage;\n }\n\n public hasPageBeenRendered(pageIndex: number): boolean {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n const pages = PDFViewerApplication.pdfViewer._pages;\n if (pages.length > pageIndex && pageIndex >= 0) {\n const pageView = pages[pageIndex];\n const isLoading = pageView.div.querySelector('.loadingIcon');\n return !isLoading;\n }\n return false;\n }\n\n public currentlyRenderedPages(): Array<number> {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n const pages = PDFViewerApplication.pdfViewer._pages;\n return pages.filter((page) => !page.div.querySelector('.loadingIcon')).map((page) => page.id);\n }\n\n public numberOfPages(): number {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n const pages = PDFViewerApplication.pdfViewer._pages;\n return pages.length;\n }\n\n public getCurrentlyVisiblePageNumbers(): Array<number> {\n const app = (window as any).PDFViewerApplication as IPDFViewerApplication;\n const pages = (app.pdfViewer._getVisiblePages() as any).views as Array<any>;\n const pageNumbers = pages?.map((page) => page.id);\n return pageNumbers;\n }\n\n public recalculateSize(): void {\n this.recalculateSize$.next();\n }\n\n public async listLayers(): Promise<Array<PdfLayer> | undefined> {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n\n const optionalContentConfig = await PDFViewerApplication.pdfViewer.optionalContentConfigPromise;\n if (optionalContentConfig) {\n const levelData = optionalContentConfig.getOrder();\n console.log(levelData);\n const layerIds = levelData.filter((groupId) => typeof groupId !== 'object');\n return layerIds.map((layerId) => {\n const config = optionalContentConfig.getGroup(layerId);\n return {\n layerId: layerId,\n name: config.name,\n visible: config.visible,\n } as PdfLayer;\n });\n }\n return undefined;\n }\n\n public async toggleLayer(layerId: string): Promise<void> {\n const PDFViewerApplication: IPDFViewerApplication = (window as any).PDFViewerApplication;\n const optionalContentConfig = await PDFViewerApplication.pdfViewer.optionalContentConfigPromise;\n if (optionalContentConfig) {\n let isVisible = optionalContentConfig.isVisible(layerId);\n const checkbox = document.querySelector(`input[id='${layerId}']`);\n if (checkbox) {\n isVisible = (checkbox as HTMLInputElement).checked;\n (checkbox as HTMLInputElement).checked = !isVisible;\n }\n optionalContentConfig.setVisibility(layerId, !isVisible);\n PDFViewerApplication.eventBus.dispatch('optionalcontentconfig', {\n source: this,\n promise: Promise.resolve(optionalContentConfig),\n });\n }\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pdf-dark-theme',\n templateUrl: './pdf-dark-theme.component.html',\n styleUrls: ['./colors.scss', '../common/print.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PdfDarkThemeComponent {}\n","","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pdf-light-theme',\n templateUrl: './pdf-light-theme.component.html',\n styleUrls: ['./colors.scss', '../common/print.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PdfLightThemeComponent {}\n","","import { DOCUMENT } from '@angular/common';\nimport { Component, Inject, Input, OnChanges, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'pdf-dynamic-css',\n templateUrl: './dynamic-css.component.html',\n styleUrls: ['./dynamic-css.component.css']\n})\nexport class DynamicCssComponent implements OnInit, OnChanges, OnDestroy {\n @Input()\n public zoom = 1.0;\n\n @Input()\n public width = 100;\n\n public xs = 490;\n\n public sm = 560;\n\n public md = 610;\n\n public lg = 660;\n\n public xl = 740;\n\n public xxl = 830;\n\n public get style(): string {\n return `\n@media all and (max-width: ${this.xl}px) {\n #toolbarViewerMiddle {\n display: table;\n margin: auto;\n left: auto;\n position: inherit;\n transform: none;\n }\n}\n\n@media all and (max-width: 840px) {\n #sidebarContent {\n background-color: rgba(0, 0, 0, 0.7);\n }\n\n html[dir='ltr'] #outerContainer.sidebarOpen #viewerContainer {\n left: 0px !important;\n }\n html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer {\n right: 0px !important;\n }\n\n #outerContainer .hiddenLargeView,\n #outerContainer .hiddenMediumView {\n display: inherit;\n }\n #outerContainer .visibleLargeView,\n #outerContainer .visibleMediumView {\n display: none;\n }\n}\n\n@media all and (max-width: ${this.lg}px) {\n .toolbarButtonSpacer {\n width: 15px;\n }\n\n #outerContainer .hiddenLargeView {\n display: none;\n }\n #outerContainer .visibleLargeView {\n display: inherit;\n }\n}\n\n@media all and (max-width: ${this.md}px) {\n .toolbarButtonSpacer {\n display: none;\n }\n #outerContainer .hiddenMediumView {\n display: none;\n }\n #outerContainer .visibleMediumView {\n display: inherit;\n }\n}\n\n@media all and (max-width: ${this.sm}px) {\n #outerContainer .hiddenSmallView,\n #outerContainer .hiddenSmallView * {\n display: none;\n }\n #outerContainer .visibleSmallView {\n display: inherit;\n }\n .toolbarButtonSpacer {\n width: 0;\n }\n html[dir='ltr'] .findbar {\n left: 38px;\n }\n html[dir='rtl'] .findbar {\n right: 38px;\n }\n}\n\n@media all and (max-width: ${this.xs}px) {\n #scaleSelectContainer {\n display: none;\n }\n}\n\n#outerContainer .visibleXLView,\n#outerContainer .visibleXXLView,\n#outerContainer .visibleTinyView {\n d