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 • 630 kB
Source Map (JSON)
{"version":3,"file":"ngx-extended-pdf-viewer.mjs","sources":["../../../projects/ngx-extended-pdf-viewer/src/lib/events/find-result.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/pdf-cursor-tools.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/editor-annotations.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/pdf-default-options.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/pdf-viewer.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/verbosity-level.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/ngx-form-support.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/pdf-sidebar-views.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/pdf-csp-policy.service.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-script-loader.service.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/ngx-keyboard-manager.service.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/responsive-visibility.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/unit-to-px.ts","../../../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/theme/acroform-default-theme/pdf-acroform-default-theme.component.ts","../../../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/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/pdf-dialog/pdf-alt-text-dialog/pdf-alt-text-dialog.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dialog/pdf-alt-text-dialog/pdf-alt-text-dialog.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dialog/pdf-alt-text-settings-dialog/pdf-alt-text-settings-dialog.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dialog/pdf-alt-text-settings-dialog/pdf-alt-text-settings-dialog.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dialog/pdf-document-properties-dialog/pdf-document-properties-dialog.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dialog/pdf-document-properties-dialog/pdf-document-properties-dialog.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dialog/pdf-error-message/pdf-error-message.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dialog/pdf-error-message/pdf-error-message.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-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-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-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-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-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-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-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-findbar-options-one-container/pdf-find-multiple/pdf-find-multiple.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-find-multiple/pdf-find-multiple.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-find-regexp/pdf-find-regexp.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-one-container/pdf-find-regexp/pdf-find-regexp.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-options-two-container/pdf-match-diacritics/pdf-match-diacritics.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-findbar/pdf-findbar-options-two-container/pdf-match-diacritics/pdf-match-diacritics.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/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/pdf-dialog/pdf-password-dialog/pdf-password-dialog.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dialog/pdf-password-dialog/pdf-password-dialog.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dialog/pdf-prepare-printing-dialog/pdf-prepare-printing-dialog.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-dialog/pdf-prepare-printing-dialog/pdf-prepare-printing-dialog.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-shy-button/pdf-shy-button-service.ts","../../../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/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-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.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-shy-button/pdf-shy-button.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-shy-button/pdf-shy-button.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-book-mode/pdf-book-mode.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-book-mode/pdf-book-mode.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-document-properties/pdf-document-properties.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-document-properties/pdf-document-properties.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-draw-editor/pdf-draw-editor.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-draw-editor/pdf-draw-editor.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-highlight-editor/pdf-highlight-editor.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-highlight-editor/pdf-highlight-editor.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-stamp-editor/pdf-stamp-editor.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-stamp-editor/pdf-stamp-editor.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-text-editor/pdf-text-editor.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-text-editor/pdf-text-editor.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-editor/pdf-editor.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-editor/pdf-editor.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-even-spread/pdf-even-spread.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-even-spread/pdf-even-spread.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-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/options/pdf-scroll-mode.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-horizontal-scroll/pdf-horizontal-scroll.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-horizontal-scroll/pdf-horizontal-scroll.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-infinite-scroll/pdf-infinite-scroll.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-infinite-scroll/pdf-infinite-scroll.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-no-spread/pdf-no-spread.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-no-spread/pdf-no-spread.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-odd-spread/pdf-odd-spread.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-odd-spread/pdf-odd-spread.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-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-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-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-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-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-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-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-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-rotate-page-cw/pdf-rotate-page-cw.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-rotate-page-cw/pdf-rotate-page-cw.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-rotate-page-ccw/pdf-rotate-page-ccw.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-rotate-page-ccw/pdf-rotate-page-ccw.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-single-page-mode/pdf-single-page-mode.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-single-page-mode/pdf-single-page-mode.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-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-vertical-scroll-button/pdf-vertical-scroll-mode.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-vertical-scroll-button/pdf-vertical-scroll-mode.component.html","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-wrapped-scroll-mode/pdf-wrapped-scroll-mode.component.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/toolbar/pdf-wrapped-scroll-mode/pdf-wrapped-scroll-mode.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-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-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-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-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/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/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/ngx-extended-pdf-viewer.module.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/annotation-layer-builder.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/link-target.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/options/password-prompt.ts","../../../projects/ngx-extended-pdf-viewer/src/lib/pdf-document-properties-extractor.ts","../../../projects/ngx-extended-pdf-viewer/src/public_api.ts","../../../projects/ngx-extended-pdf-viewer/src/ngx-extended-pdf-viewer.ts"],"sourcesContent":["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 caseSensitive: boolean;\n entireWord: boolean;\n findPrevious: boolean;\n highlightAll: boolean;\n matchDiacritics: boolean;\n query: string | string[] | RegExp;\n type: 'findagain' | 'highlightallchange' | 'casesensitivitychange' | 'entirewordchange' | 'diacriticmatchingchange' | 'find';\n}\n\nexport interface FindResult {\n state: FindState;\n previous: any;\n matchesCount: FindResultMatchesCount;\n rawquery: string;\n}\n","export enum PdfCursorTools {\n SELECT = 0,\n HAND = 1,\n ZOOM = 2\n}\n","export enum AnnotationMode {\n DISABLE = 0,\n ENABLE = 1,\n ENABLE_FORMS = 2,\n ENABLE_STORAGE = 3\n};\n\nexport enum AnnotationEditorType {\n DISABLE = -1,\n NONE = 0,\n FREETEXT = 3,\n HIGHLIGHT = 9,\n STAMP = 13,\n INK = 15,\n}\n\nexport const AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35,\n};\n\nexport type AnnotationEditorTypeValue = -1 | 0 | 3 | 9 | 13 | 15;\n\nexport type BezierPath = {\n bezier: Array<number>;\n points: Array<number>;\n};\n\nexport type InkEditorAnnotation = {\n annotationType: 15;\n color: Array<number>; // an array of three integer numbers\n thickness: number;\n opacity: number;\n paths: Array<BezierPath>;\n pageIndex: number;\n rect: Array<number>; // [left, bottom, right, top]\n rotation: 0 | 90 | 180 | 270; // in degrees\n};\n\nexport type FreeTextEditorAnnotation = {\n annotationType: 3;\n color: Array<number>; // an array of three integer numbers\n fontSize: number;\n value: string;\n pageIndex: number;\n rect: Array<number>; // rect[1] is the y position; rect[2] is the x position\n rotation: 0 | 90 | 180 | 270; // in degrees\n};\n\nexport type StampEditorAnnotation = {\n annotationType: 13;\n pageIndex: number;\n bitmapUrl: string | Blob;\n rect: Array<number>; // [left, bottom, right, top]\n rotation: 0 | 90 | 180 | 270; // in degrees\n};\n\nexport type HighlightEditorAnnotation = {\n annotationType: 9;\n color: Array<number>; // an array of three integer numbers\n rect: Array<number>; // [left, bottom, right, top]\n pageIndex: number;\n rotation: 0 | 90 | 180 | 270; // in degrees\n};\n\nexport type EditorAnnotation = InkEditorAnnotation | FreeTextEditorAnnotation | StampEditorAnnotation | HighlightEditorAnnotation;\n","import { AnnotationMode } from './editor-annotations';\n\nconst _isIE11 = typeof window === 'undefined' ? false : !!(<any>globalThis).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 = '4.10.708';\nexport const pdfjsBleedingEdgeVersion = '4.10.708';\nexport function getVersionSuffix(folder: string): string {\n if (folder?.includes('bleeding-edge')) {\n return pdfjsBleedingEdgeVersion;\n }\n return pdfjsVersion;\n}\n\nexport function assetsUrl(url: string, postfixIfPathIsRelativ = ''): string {\n if (url.includes('://')) {\n // the assets folder is on an absolute path (like https://example.com/assets)\n return url;\n }\n return `./${url + postfixIfPathIsRelativ}`;\n}\n\nexport function getSafeCanvasSize(): number {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return 4096;\n }\n // Create a temporary WebGL context\n const canvas = document.createElement('canvas');\n const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n let maxTextureSize;\n if (gl instanceof WebGLRenderingContext) {\n maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n } else {\n maxTextureSize = 4096;\n }\n // Get available device RAM (in MB)\n function getAvailableMemoryMB(): number {\n if ('deviceMemory' in navigator) {\n return (navigator.deviceMemory as number) * 1024; // Convert GB to MB\n }\n if (window.performance && 'memory' in window.performance) {\n return (window.performance.memory as any).jsHeapSizeLimit / 1024 / 1024; // Only works on Chrome, Firefox, and Edgewindow.performance.memory.jsHeapSizeLimit / 1024 / 1024; // Only works on Chrome\n }\n return 4096; // Default to 4GB if unknown\n }\n\n const availableMemoryMB = getAvailableMemoryMB();\n\n // Conservative formula: Scale by square root of available memory\n let estimatedSafeSize = Math.floor(Math.sqrt((availableMemoryMB * 1024 * 1024) / 6));\n\n // Apply platform-specific limits\n const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n const isMobile = /Android|iPhone|iPad|iPod/.test(navigator.userAgent);\n const isHighEndDesktop = availableMemoryMB > 12000; // Assume high-end desktops have >12GB RAM\n\n if (isIOS) {\n estimatedSafeSize = Math.min(estimatedSafeSize, 4096); // iOS Safari memory limits\n } else if (isMobile) {\n estimatedSafeSize = Math.min(estimatedSafeSize, 4096); // Most mobile devices\n } else if (isHighEndDesktop) {\n estimatedSafeSize = Math.min(estimatedSafeSize, 8192); // Allow larger sizes for desktops\n } else {\n estimatedSafeSize = Math.min(estimatedSafeSize, 6000); // Mid-range desktops\n }\n\n // Final limit based on GPU and estimated memory safety\n const maxWidth = Math.min(maxTextureSize, estimatedSafeSize);\n return maxWidth * maxWidth;\n}\n\n// sonar ignore next line\nexport const pdfDefaultOptions = {\n needsES5: _isIE11 || isEdge || needsES5,\n annotationEditorMode: 0,\n annotationMode: AnnotationMode.ENABLE_FORMS,\n defaultZoomDelay: 400, // milliseconds\n cursorToolOnLoad: 0,\n defaultUrl: '',\n defaultZoomValue: '',\n disableHistory: false,\n disablePageLabels: false,\n enablePermissions: false,\n docBaseUrl: '',\n enablePrintAutoRotate: true,\n externalLinkRel: 'noopener noreferrer nofollow',\n externalLinkTarget: 0,\n findController: undefined, // must extend PDFFindController\n historyUpdateUrl: false,\n ignoreDestinationZoom: false,\n imageResourcesPath: './images/',\n maxCanvasPixels: getSafeCanvasSize(),\n forcePageColors: false,\n pageColorsBackground: 'Canvas',\n pageColorsForeground: 'CanvasText',\n pdfBugEnabled: false,\n printResolution: 150,\n rangeChunkSize: 65536,\n removePageBorders: false,\n enableXfa: true,\n fontExtraProperties: false,\n sidebarViewOnLoad: -1,\n scrollModeOnLoad: -1,\n spreadModeOnLoad: -1,\n textLayerMode: 1,\n // viewerCssTheme: 0, // not supported by ngx-extended-pdf-viewer, use [theme] instead\n viewOnLoad: 0,\n cMapPacked: true,\n cMapUrl: function () {\n return `${assetsUrl(pdfDefaultOptions.assetsFolder, '/..')}/cmaps/`;\n },\n disableAutoFetch: false,\n disableFontFace: false,\n disableRange: false,\n disableStream: true,\n isEvalSupported: true,\n isOffscreenCanvasSupported: true,\n maxImageSize: -1,\n pdfBug: false,\n verbosity: 1,\n workerPort: null,\n assetsFolder: 'assets',\n _internalFilenameSuffix: '.min', // don't modify this - it's an internal field\n sandboxBundleSrc: function () {\n return pdfDefaultOptions.needsES5\n ? `./pdf.sandbox-${getVersionSuffix(assetsUrl(pdfDefaultOptions.assetsFolder))}-es5.mjs`\n : `./pdf.sandbox-${getVersionSuffix(assetsUrl(pdfDefaultOptions.assetsFolder))}${pdfDefaultOptions._internalFilenameSuffix}.mjs`;\n },\n workerSrc: function () {\n return pdfDefaultOptions.needsES5\n ? `${assetsUrl(pdfDefaultOptions.assetsFolder)}/pdf.worker-${getVersionSuffix(assetsUrl(pdfDefaultOptions.assetsFolder))}-es5.mjs`\n : `${assetsUrl(pdfDefaultOptions.assetsFolder)}/pdf.worker-${getVersionSuffix(assetsUrl(pdfDefaultOptions.assetsFolder))}${\n pdfDefaultOptions._internalFilenameSuffix\n }.mjs`;\n },\n standardFontDataUrl: () => `${assetsUrl(pdfDefaultOptions.assetsFolder, '/..')}/standard_fonts/`,\n\n // options specific to ngx-extended-pdf-viewer (as opposed to being used by pdf.js)\n doubleTapZoomFactor: 'page-width',\n doubleTapZoomsInHandMode: true,\n doubleTapZoomsInTextSelectionMode: false,\n doubleTapResetsZoomOnSecondDoubleTap: false,\n enableScripting: true,\n defaultCacheSize: 50,\n passwordPrompt: undefined,\n enableHWA: true, // enable hardware acceleration. Active since pdf.js 4.4.\n};\n","import { EditorAnnotation } from './editor-annotations';\nimport { OptionalContentConfig } from './optional_content_config';\nimport { PDFPageView } from './pdf_page_view';\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}\n\nexport interface IPDFViewer {\n maxZoom: number;\n minZoom: number;\n setTextLayerMode(textLayerMode: number): unknown;\n annotationEditorMode: any;\n currentPageLabel: string | undefined;\n currentPageNumber: number;\n enablePrintAutoRotate: boolean;\n currentScaleValue: string | number;\n pagesRotation: 0 | 90 | 180 | 270;\n removePageBorders: boolean;\n renderingQueue: IPDFRenderingQueue;\n scrollMode: ScrollModeType;\n pageViewMode: PageViewModeType;\n spreadMode: 0 | 1 | 2;\n _pages: Array<PDFPageView>;\n addPageToRenderQueue(pageIndex: number): boolean;\n _getVisiblePages(): Array<any>;\n optionalContentConfigPromise: Promise<OptionalContentConfig> | null;\n _scrollPageIntoView({ pageDiv, pageSpot, pageNumber }: { pageDiv: HTMLElement; pageSpot: any; pageNumber: number }): void;\n getSerializedAnnotations(): EditorAnnotation[] | null; // #1783 added by ngx-extended-pdf-viewer\n addEditorAnnotation(serialized: string | EditorAnnotation): void; // #1783 added by ngx-extended-pdf-viewer\n removeEditorAnnotations(filter?: (serialized: EditorAnnotation) => boolean): void; // #1783 added by ngx-extended-pdf-viewer\n getPageView(index: number): PDFPageView;\n destroyBookMode(): void;\n stopRendering(): void;\n}\n","export enum VerbosityLevel {\n ERRORS = 0,\n WARNINGS = 1,\n INFOS = 5,\n}\n","import { Component } from '@angular/core';\n\n/** List of all fields that can be customized */\nconst requiredIds = [\n 'attachmentsView',\n 'authorField',\n 'contextFirstPage',\n 'contextLastPage',\n 'contextPageRotateCcw',\n 'contextPageRotateCw',\n 'creationDateField',\n 'creatorField',\n 'currentOutlineItem',\n 'cursorHandTool',\n 'cursorSelectTool',\n 'customScaleOption',\n 'documentProperties',\n 'documentPropertiesClose',\n 'download',\n 'primaryEditorFreeText',\n 'primaryEditorHighlight',\n 'primaryEditorInk',\n 'primaryEditorStamp',\n 'editorModeButtons',\n 'editorNone',\n 'editorStampAddImage',\n 'errorClose',\n 'errorMessage',\n 'errorMoreInfo',\n 'errorShowLess',\n 'errorShowMore',\n 'errorWrapper',\n 'fileNameField',\n 'fileSizeField',\n 'findbar',\n 'findCurrentPage',\n 'findEntireWord',\n 'findFuzzy',\n 'findHighlightAll',\n 'findIgnoreAccents',\n 'findInput',\n 'findInputMultiline',\n 'findMatchCase',\n 'findMatchDiacritics',\n 'findMsg',\n 'findMultipleSearchTexts',\n 'findNext',\n 'findPrevious',\n 'findRange',\n 'findResultsCount',\n 'firstPage',\n 'individualWordsMode',\n 'individualWordsModeLabel',\n 'keywordsField',\n 'lastPage',\n 'linearizedField',\n 'modificationDateField',\n 'next',\n 'numPages',\n 'openFile',\n 'outerContainer',\n 'outerContainer',\n 'outlineOptionsContainer',\n 'outlineView',\n 'pageCountField',\n 'pageNumber',\n 'pageRotateCcw',\n 'pageRotateCw',\n 'pageSizeField',\n 'password',\n 'passwordCancel',\n 'passwordSubmit',\n 'passwordText',\n 'presentationMode',\n 'previous',\n 'printButton',\n 'producerField',\n 'scaleSelect',\n 'scaleSelectContainer',\n 'scrollHorizontal',\n 'scrollPage',\n 'scrollVertical',\n 'scrollWrapped',\n 'secondaryDownload',\n 'secondaryOpenFile',\n 'secondaryPresentationMode',\n 'secondaryPrintButton',\n 'secondaryToolbar',\n 'secondaryToolbarButtonContainer',\n 'secondaryToolbarToggle',\n 'secondaryViewBookmark',\n 'sidebarResizer',\n 'primarySidebarToggle',\n 'spreadEven',\n 'spreadNone',\n 'spreadOdd',\n 'subjectField',\n 'thumbnailView',\n 'titleField',\n 'toolbarViewer',\n 'versionField',\n 'viewAttachments',\n 'viewAttachments',\n 'viewBookmark',\n 'viewerContainer',\n 'viewFind',\n 'viewLayers',\n 'viewOutline',\n 'viewOutline',\n 'viewThumbnail',\n 'viewThumbnail',\n 'primaryZoomIn',\n 'primaryZoomOut',\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 return;\n }\n\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 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","import { ChangeDetectorRef, EventEmitter, NgZone } from '@angular/core';\nimport { FormDataType, IPDFViewerApplication } from '../public_api';\n\nexport type HtmlFormElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n\nexport class NgxFormSupport {\n /** Maps the internal ids of the annotations of pdf.js to their field name */\n private formIdToFullFieldName: { [key: string]: string } = {};\n\n private formIdToField: { [key: string]: HtmlFormElement } = {};\n\n private radioButtons: { [key: string]: Array<HTMLInputElement> } = {};\n\n public formData: FormDataType = {};\n\n public initialFormDataStoredInThePDF: FormDataType = {};\n\n public formDataChange = new EventEmitter<FormDataType>();\n\n private PDFViewerApplication: IPDFViewerApplication | undefined;\n\n public ngZone!: NgZone; // set during the initializaion of the PDF viewer\n\n public cdr!: ChangeDetectorRef; // set during the initializaion of the PDF viewer\n\n public reset() {\n this.formData = {};\n this.formIdToFullFieldName = {};\n }\n\n public registerFormSupportWithPdfjs(PDFViewerApplication: IPDFViewerApplication): void {\n this.PDFViewerApplication = PDFViewerApplication;\n (globalThis as any).getFormValueFromAngular = (key: string) => this.getFormValueFromAngular(key);\n (globalThis as any).updateAngularFormValue = (key: string | HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement, value: { value: string }) =>\n this.updateAngularFormValueCalledByPdfjs(key, value);\n (globalThis as any).registerAcroformField = (\n id: string,\n element: HtmlFormElement,\n value: string | Array<string>,\n radioButtonValueName: string,\n initialValueFromPDF: string,\n ) => this.registerAcroformField(id, element, value, radioButtonValueName, initialValueFromPDF);\n\n (globalThis as any).registerXFAField = (element: HtmlFormElement, value: { value: string }, initialValueFromPDF: string) =>\n this.registerXFAField(element, value, initialValueFromPDF);\n }\n\n private registerAcroformField(\n id: string,\n element: HtmlFormElement,\n value: null | string | Array<string>,\n radioButtonValueName: string,\n initialFormValueFromPDF: string,\n ): void {\n const fieldName = element.name;\n this.formIdToField[id] = element;\n this.formIdToFullFieldName[id] = fieldName;\n if (element instanceof HTMLInputElement && element.type === 'radio') {\n const groupName = fieldName;\n this.formIdToFullFieldName[id] = groupName;\n if (value) {\n this.formData[groupName] = radioButtonValueName;\n this.initialFormDataStoredInThePDF[groupName] = initialFormValueFromPDF;\n }\n element.setAttribute('exportValue', radioButtonValueName);\n if (!this.radioButtons[groupName]) {\n this.radioButtons[groupName] = [];\n }\n this.radioButtons[groupName].push(element);\n } else if (element instanceof HTMLSelectElement) {\n this.formData[fieldName] = this.getValueOfASelectField(element);\n this.initialFormDataStoredInThePDF[fieldName] = initialFormValueFromPDF;\n } else {\n if (value !== undefined) {\n this.formData[fieldName] = value;\n }\n this.initialFormDataStoredInThePDF[fieldName] = initialFormValueFromPDF;\n }\n }\n\n private registerXFAField(element: HTMLElement, value: { value: string }, initialFormValueFromPDF: string): void {\n const fullFieldName = this.findFullXFAName(element);\n if (element instanceof HTMLInputElement && element.type === 'radio') {\n const id = element.getAttribute('fieldid') ?? '';\n // remove the xfa name of the radio button itself form the field name,\n // because the field name refers to the entire group of relatated radio buttons\n const groupName = fullFieldName.substring(0, fullFieldName.lastIndexOf('.'));\n this.formIdToFullFieldName[id] = groupName;\n this.formData[groupName] = value?.value;\n this.initialFormDataStoredInThePDF[groupName] = initialFormValueFromPDF;\n\n if (!this.radioButtons[groupName]) {\n this.radioButtons[groupName] = [];\n }\n this.radioButtons[groupName].push(element);\n } else if (element instanceof HTMLInputElement) {\n const id = element.getAttribute('fieldid') ?? '';\n this.formIdToField[id] = element;\n this.formIdToFullFieldName[id] = fullFieldName;\n this.formData[fullFieldName] = value?.value;\n this.initialFormDataStoredInThePDF[fullFieldName] = initialFormValueFromPDF;\n } else if (element instanceof HTMLSelectElement) {\n const id = element.getAttribute('fieldid') ?? '';\n this.formIdToField[id] = element;\n this.formIdToFullFieldName[id] = fullFieldName;\n this.formData[fullFieldName] = value?.value;\n this.initialFormDataStoredInThePDF[fullFieldName] = initialFormValueFromPDF;\n } else if (element instanceof HTMLTextAreaElement) {\n const id = element.getAttribute('fieldid') ?? '';\n this.formIdToField[id] = element;\n this.formIdToFullFieldName[id] = fullFieldName;\n this.formData[fullFieldName] = value?.value;\n this.initialFormDataStoredInThePDF[fullFieldName] = initialFormValueFromPDF;\n } else {\n console.error(\"Couldn't register an XFA form field\", element);\n }\n }\n\n private getValueOfASelectField(selectElement: HTMLSelectElement): null | string | Array<string> {\n const { options, multiple } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex]['value'];\n }\n return Array.prototype.filter.call(options, (option) => option.selected).map((option) => option['value']);\n }\n\n private getFormValueFromAngular(element: HTMLElement | string): Object {\n let key: string;\n if (element instanceof HTMLElement) {\n const fieldName = this.findXFAName(element);\n if (fieldName) {\n if (this.formData.hasOwnProperty(fieldName)) {\n key = fieldName;\n } else {\n key = this.findFullXFAName(element);\n }\n } else {\n console.error(\"Couldn't find the field name or XFA name of the form field\", element);\n return { value: null };\n }\n } else {\n key = element;\n }\n return { value: this.formData[key] };\n }\n\n private findXFAName(element: HTMLElement): string {\n let parentElement: HTMLElement | null | undefined = element;\n while (!parentElement.getAttribute('xfaname') && parentElement.parentElement) {\n parentElement = parentElement.parentElement;\n }\n if (element instanceof HTMLInputElement && element.type === 'radio') {\n do {\n parentElement = parentElement?.parentElement;\n } while (!parentElement?.getAttribute('xfaname') && parentElement);\n }\n let fieldName = parentElement?.getAttribute('xfaname');\n if (!fieldName) {\n throw new Error(\"Couldn't find the xfaname of the field\");\n }\n return fieldName;\n }\n\n private findFullXFAName(element: HTMLElement): string {\n let parentElement = element;\n let fieldName = '';\n while (parentElement instanceof HTMLElement && parentElement.parentElement) {\n const xfaName = parentElement.getAttribute('xfaname');\n if (xfaName) {\n fieldName = xfaName + '.' + fieldName;\n }\n parentElement = parentElement.parentElement;\n }\n if (!fieldName) {\n throw new Error(\"Couldn't find the xfaname of the field\");\n }\n fieldName = fieldName.substring(0, fieldName.length - 1);\n if (element instanceof HTMLInputElement && element.type === 'radio') {\n // ignore the last part of the xfaName because it's actually the value of the field\n return fieldName.substring(0, fieldName.lastIndexOf('.'));\n }\n return fieldName;\n }\n\n private updateAngularFormValueCalledByPdfjs(key: string | HTMLSelectElement | HTMLInputElement | HTMLTextAreaElement, value: { value: string }): void {\n if (!this.formData) {\n this.formData = {};\n }\n\n if (typeof key === 'string') {\n const acroFormKey = this.formIdToFullFieldName[key];\n const fullKey = acroFormKey ?? Object.values(this.formIdToFullFieldName).find((k) => k === key || k.endsWith('.' + key));\n if (fullKey) {\n const field = this.formIdToField[key];\n let change = this.doUpdateAngularFormValue(field, value, fullKey);\n if (change) {\n this.ngZone.run(() => {\n this.formDataChange.emit(this.formData);\n this.cdr.detectChanges();\n });\n }\n } else {\n console.error(\"Couldn't find the field with the name \" + key);\n }\n } else {\n let change = false;\n const shortFieldName = this.findXFAName(key);\n if (this.formData.hasOwnProperty(shortFieldName)) {\n change = this.doUpdateAngularFormValue(key, value, shortFieldName);\n }\n const fullFieldName = this.findFullXFAName(key);\n if (fullFieldName !== shortFieldName) {\n change ||= this.doUpdateAngularFormValue(key, value, fullFieldName);\n }\n if (change) {\n this.ngZone.run(() => {\n this.formDataChange.emit(this.formData);\n this.cdr.detectChanges();\n });\n }\n }\n }\n\n private doUpdateAngularFormValue(field: HtmlFormElement, value: { value: string }, fullKey: string) {\n let change = false;\n if (field instanceof HTMLInputElement && field.type === 'checkbox') {\n const exportValue = field.getAttribute('exportvalue');\n if (exportValue) {\n if (value.value) {\n if (this.formData[fullKey] !== exportValue) {\n this.formData[fullKey] = exportValue;\n change = true;\n }\n } else {\n if (this.formData[fullKey] !== false) {\n this.formData[fullKey] = false;\n change = true;\n }\n }\n } else if (this.formData[fullKey] !== value.value) {\n this.formData[fullKey] = value.value;\n change = true;\n }\n } else if (field instanceof HTMLInputElement && field.type === 'radio') {\n const exportValue = field.getAttribute('exportvalue') ?? field.getAttribute('xfaon');\n if (value.value) {\n if (this.formData[fullKey] !== exportValue) {\n this.formData[fullKey] = exportValue;\n change = true;\n }\n }\n } else if (this.formData[fullKey] !== value.value) {\n this.formData[fullKey] = value.value;\n change = true;\n }\n return change;\n }\n\n public updateFormFieldsInPdfCalledByNgOnChanges(previousFormData: Object) {\n if (!this.PDFViewerApplication?.pdfDocument?.annotationStorage) {\n // ngOnChanges calls this method too early - so just ignore it\n return;\n }\n\n for (const key in this.formData) {\n if (this.formData.hasOwnProperty(key)) {\n const newValue = this.formData[key];\n if (newValue !== previousFormData[key]) {\n this.setFieldValueAndUpdateAnnotationStorage(key, newValue);\n }\n }\n }\n\n for (const key in previousFormData) {\n if (previousFormData.hasOwnProperty(key) && previousFormData[key]) {\n let hasPreviousValue = this.formData.hasOwnProperty(key);\n if (!hasPreviousValue) {\n const fullKey = Object.keys(this.formData).find((k) => k === key || k.endsWith('.' + key));\n if (fullKey) {\n hasPreviousValue = this.formData.hasOwnProperty(fullKey);\n }\n }\n\n if (!hasPreviousValue) {\n this.setFieldValueAndUpdateAnnotationStorage(key, null);\n }\n }\n }\n }\n\n private setFieldValueAndUpdateAnnotationStorage(key: string, newValue: any) {\n const radios = this.findRadioButtonGroup(key);\n if (radios) {\n radios.forEach((r) => {\n const activeValue = r.getAttribute('exportValue') ?? r.getAttribute('xfaon');\n r.checked = activeValue === newValue;\n });\n const updateFromAngular = new CustomEvent('updateFromAngular', {\n detail: newValue,\n });\n radios[0].dispatchEvent(updateFromAngular);\n } else {\n const fieldId = this.findFormIdFromFieldName(key);\n if (fieldId) {\n const htmlField = this.formIdToField[fieldId];\n\n if (htmlField) {\n if (htmlField instanceof HTMLInputElement && htmlField.type === 'checkbox') {\n let activeValue = htmlField.getAttribute('xfaon') ?? htmlField.getAttribute('exportvalue') ?? true;\n if (newValue === true || newValue === false) {\n activeValue = true;\n }\n htmlField.checked = activeValue === newValue;\n } else if (htmlField instanceof HTMLSelectElement) {\n this.populateSelectField(htmlField, newValue);\n } else {\n // textareas and input fields\n htmlField.value = newValue;\n }\n const updateFromAngular = new CustomEvent('updateFromAngular', {\n detail: newValue,\n });\n htmlField.dispatchEvent(updateFromAngular);\n } else {\n console.error(\"Couldn't set the value of the field\", key);\n }\n }\n }\n }\n\n private populateSelectField(htmlField: HTMLSelectElement, newValue: any) {\n if (htmlField.multiple) {\n const { options } = htmlField;\n const newValueArray = newValue as Array<string>;\n for (let i = 0; i < options.length; i++) {\n const option = options.item(i);\n if (option) {\n option.selected = newValueArray.some((o) => o === option.value);\n }\n }\n } else {\n htmlField.value = newValue;\n }\n }\n\n private findFormIdFromFieldName(fieldName: string): string | undefined {\n if (Object.entries(this.formIdToFullFieldName).length === 0) {\n // sometimes, ngOnChanges() is called before initializing the PDF file\n return undefined;\n }\n const matchingEntries = Object.entries(this.formIdToFullFieldName).filter((entry) => entry[1] === fieldName || entry[1].endsWith('.' + fieldName));\n if (matchingEntries.length > 1) {\n console.log(\n `More than one field name matches the field name ${fieldName}. Please use the one of these qualified field names:`,\n matchingEntries.map((f) => f[1]),\n );\n console.log(\n 'ngx-extended-pdf-viewer uses the first matching field (which may or may not be the topmost field on your PDF form): ' + matchingEntries[0][0],\n );\n } else if (matchingEntries.length === 0) {\n console.log(\"Couldn't find the field \" + fieldName);\n return undefined;\n }\n return matchingEntries[0][0];\n }\n\n private findRadioButtonGroup(fieldName: string): Array<HTMLInputElement> | null {\n const matchingEntries = Object.entries(this.radioButtons).filter((entry) => entry[0].endsWith('.' + fieldName) || entry[0] === fieldName);\n if (matchingEntries.length === 0) {\n return null;\n }\n if (matchingEntries.length > 1) {\n console.log(\n 'More than one radio button group name matches this name. Please use the qualified field name',\n matchingEntries.map((radio) => radio[0]),\n );\n console.log('ngx-extended-pdf-viewer uses the first matching field (which may not be the topmost field on your PDF form): ' + matchingEntries[0][0]);\n }\n return matchingEntries[0][1];\n }\n}\n","export enum PdfSidebarView {\n UNKNOWN = -1,\n NONE = 0,\n THUMBS = 1, // Default value.\n OUTLINE = 2,\n ATTACHMENTS = 3,\n LAYERS = 4,\n}\n","import { Injectable, effect, signal } from '@angular/core';\nimport { getVersionSuffix, pdfDefaultOptions } from './options/pdf-default-options';\nimport { IPDFViewerApplication } from './options/pdf-viewer-application';\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 onPDFJSInitSignal = signal<IPDFViewerApplication | undefined>(undefined);\n\n public pdfjsVersion = getVersionSuffix(pdfDefaultOptions.assetsFolder);\n\n public constructor() {\n effect(() => {\n if (this.onPDFJSInitSignal()) {\n this.pdfjsVersion = getVersionSuffix(pdfDefaultOptions.assetsFolder);\n }\n });\n }\n}\n","import { effect, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { AnnotationEditorParamsType, AnnotationMode, EditorAnnotation, StampEditorAnnotation } from './options/editor-annotations';\nimport { PdfLayer } from './options/optional_content_config';\nimport { PDFPrintRange } from './options/pdf-print-range';\nimport { IPDFViewerApplication, PDFDocumentProxy, PDFFindParameters, PDFPageProxy, TextItem, TextMarkedContent } from './options/pdf-viewer-application';\nimport { PDFNotificationService } from './pdf-notification-service';\n\nexport interface FindOptions {\n highlightAll?: boolean