ng2-pdfjs-viewer 25.0.12 → 25.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/fesm2022/ng2-pdfjs-viewer.mjs +13 -4
- package/fesm2022/ng2-pdfjs-viewer.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/package.json +1 -1
- package/pdfjs/web/viewer.css +5 -0
- package/pdfjs/web/viewer.html +1 -1
package/README.md
CHANGED
|
@@ -939,6 +939,18 @@ This project is licensed under the **Apache License 2.0 + Commons Clause License
|
|
|
939
939
|
<div align="center">
|
|
940
940
|
|
|
941
941
|
|
|
942
|
+
## 🔒 Security
|
|
943
|
+
|
|
944
|
+
I take security of this library seriously. If you discover a security vulnerability, please report it privately:
|
|
945
|
+
|
|
946
|
+
- **🔒 Private Reporting**: [Security Policy](https://github.com/intbot/ng2-pdfjs-viewer/security/policy)
|
|
947
|
+
- **📧 Email**: [codehippie1@gmail.com](mailto:codehippie1@gmail.com)
|
|
948
|
+
- **⚠️ Please do NOT** report security issues through public GitHub issues
|
|
949
|
+
|
|
950
|
+
For security best practices and vulnerability reporting guidelines, see our [Security Policy](https://github.com/intbot/ng2-pdfjs-viewer/security/policy).
|
|
951
|
+
|
|
952
|
+
---
|
|
953
|
+
|
|
942
954
|
[](https://github.com/intbot/ng2-pdfjs-viewer)
|
|
943
955
|
[](https://www.npmjs.com/package/ng2-pdfjs-viewer)
|
|
944
956
|
[](https://angular.dev/overview)
|
|
@@ -477,6 +477,15 @@ class PdfJsViewerComponent {
|
|
|
477
477
|
...this.errorTemplateData,
|
|
478
478
|
};
|
|
479
479
|
}
|
|
480
|
+
// Helper method to get iframe CSS classes
|
|
481
|
+
getIframeClasses() {
|
|
482
|
+
const classes = ['ng2-pdfjs-viewer-iframe'];
|
|
483
|
+
// Add border class if iframeBorder is set and not "0"
|
|
484
|
+
if (this.iframeBorder && this.iframeBorder !== "0" && this.iframeBorder !== 0) {
|
|
485
|
+
classes.push('has-border');
|
|
486
|
+
}
|
|
487
|
+
return classes.join(' ');
|
|
488
|
+
}
|
|
480
489
|
// Error template button actions
|
|
481
490
|
reloadViewer() {
|
|
482
491
|
this.refresh();
|
|
@@ -1890,7 +1899,7 @@ class PdfJsViewerComponent {
|
|
|
1890
1899
|
[title]="iframeTitle || 'PDF document viewer'"
|
|
1891
1900
|
[hidden]="externalWindow || (!externalWindow && !pdfSrc)"
|
|
1892
1901
|
sandbox="allow-forms allow-scripts allow-same-origin allow-modals"
|
|
1893
|
-
[
|
|
1902
|
+
[class]="getIframeClasses()"
|
|
1894
1903
|
#iframe
|
|
1895
1904
|
width="100%"
|
|
1896
1905
|
height="100%"
|
|
@@ -1940,7 +1949,7 @@ class PdfJsViewerComponent {
|
|
|
1940
1949
|
</ng-template>
|
|
1941
1950
|
</div>
|
|
1942
1951
|
</div>
|
|
1943
|
-
`, isInline: true, styles: [".ng2-pdfjs-viewer-container{position:relative;width:100%;height:100%}.ng2-pdfjs-loading-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#fff9;-webkit-backdrop-filter:saturate(120%) blur(1px);backdrop-filter:saturate(120%) blur(1px)}.ng2-pdfjs-spinner-content{text-align:center}.ng2-pdfjs-spinner-icon{display:inline-block;width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #2196F3;border-radius:50%;animation:spin 1s linear infinite}.ng2-pdfjs-spinner-text{margin-top:16px;color:#666;font-size:16px}.ng2-pdfjs-error-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#ffffffe6;-webkit-backdrop-filter:saturate(120%) blur(1px);backdrop-filter:saturate(120%) blur(1px)}.ng2-pdfjs-error-content{text-align:center;max-width:400px;padding:20px}.ng2-pdfjs-error-icon{font-size:48px;color:#f44336;margin-bottom:16px}.ng2-pdfjs-error-title{color:#333;font-size:18px;font-weight:500;margin-bottom:8px}.ng2-pdfjs-error-message{color:#666;font-size:14px;line-height:1.4}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
1952
|
+
`, isInline: true, styles: [".ng2-pdfjs-viewer-container{position:relative;width:100%;height:100%}.ng2-pdfjs-loading-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#fff9;-webkit-backdrop-filter:saturate(120%) blur(1px);backdrop-filter:saturate(120%) blur(1px)}.ng2-pdfjs-spinner-content{text-align:center}.ng2-pdfjs-spinner-icon{display:inline-block;width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #2196F3;border-radius:50%;animation:spin 1s linear infinite}.ng2-pdfjs-spinner-text{margin-top:16px;color:#666;font-size:16px}.ng2-pdfjs-error-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#ffffffe6;-webkit-backdrop-filter:saturate(120%) blur(1px);backdrop-filter:saturate(120%) blur(1px)}.ng2-pdfjs-error-content{text-align:center;max-width:400px;padding:20px}.ng2-pdfjs-error-icon{font-size:48px;color:#f44336;margin-bottom:16px}.ng2-pdfjs-error-title{color:#333;font-size:18px;font-weight:500;margin-bottom:8px}.ng2-pdfjs-error-message{color:#666;font-size:14px;line-height:1.4}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ng2-pdfjs-viewer-iframe{border:0}.ng2-pdfjs-viewer-iframe.has-border{border:1px solid #ccc}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
1944
1953
|
}
|
|
1945
1954
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PdfJsViewerComponent, decorators: [{
|
|
1946
1955
|
type: Component,
|
|
@@ -1950,7 +1959,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
1950
1959
|
[title]="iframeTitle || 'PDF document viewer'"
|
|
1951
1960
|
[hidden]="externalWindow || (!externalWindow && !pdfSrc)"
|
|
1952
1961
|
sandbox="allow-forms allow-scripts allow-same-origin allow-modals"
|
|
1953
|
-
[
|
|
1962
|
+
[class]="getIframeClasses()"
|
|
1954
1963
|
#iframe
|
|
1955
1964
|
width="100%"
|
|
1956
1965
|
height="100%"
|
|
@@ -2000,7 +2009,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
2000
2009
|
</ng-template>
|
|
2001
2010
|
</div>
|
|
2002
2011
|
</div>
|
|
2003
|
-
`, styles: [".ng2-pdfjs-viewer-container{position:relative;width:100%;height:100%}.ng2-pdfjs-loading-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#fff9;-webkit-backdrop-filter:saturate(120%) blur(1px);backdrop-filter:saturate(120%) blur(1px)}.ng2-pdfjs-spinner-content{text-align:center}.ng2-pdfjs-spinner-icon{display:inline-block;width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #2196F3;border-radius:50%;animation:spin 1s linear infinite}.ng2-pdfjs-spinner-text{margin-top:16px;color:#666;font-size:16px}.ng2-pdfjs-error-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#ffffffe6;-webkit-backdrop-filter:saturate(120%) blur(1px);backdrop-filter:saturate(120%) blur(1px)}.ng2-pdfjs-error-content{text-align:center;max-width:400px;padding:20px}.ng2-pdfjs-error-icon{font-size:48px;color:#f44336;margin-bottom:16px}.ng2-pdfjs-error-title{color:#333;font-size:18px;font-weight:500;margin-bottom:8px}.ng2-pdfjs-error-message{color:#666;font-size:14px;line-height:1.4}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
|
|
2012
|
+
`, styles: [".ng2-pdfjs-viewer-container{position:relative;width:100%;height:100%}.ng2-pdfjs-loading-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#fff9;-webkit-backdrop-filter:saturate(120%) blur(1px);backdrop-filter:saturate(120%) blur(1px)}.ng2-pdfjs-spinner-content{text-align:center}.ng2-pdfjs-spinner-icon{display:inline-block;width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #2196F3;border-radius:50%;animation:spin 1s linear infinite}.ng2-pdfjs-spinner-text{margin-top:16px;color:#666;font-size:16px}.ng2-pdfjs-error-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#ffffffe6;-webkit-backdrop-filter:saturate(120%) blur(1px);backdrop-filter:saturate(120%) blur(1px)}.ng2-pdfjs-error-content{text-align:center;max-width:400px;padding:20px}.ng2-pdfjs-error-icon{font-size:48px;color:#f44336;margin-bottom:16px}.ng2-pdfjs-error-title{color:#333;font-size:18px;font-weight:500;margin-bottom:8px}.ng2-pdfjs-error-message{color:#666;font-size:14px;line-height:1.4}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ng2-pdfjs-viewer-iframe{border:0}.ng2-pdfjs-viewer-iframe.has-border{border:1px solid #ccc}\n"] }]
|
|
2004
2013
|
}], propDecorators: { iframe: [{
|
|
2005
2014
|
type: ViewChild,
|
|
2006
2015
|
args: ["iframe", { static: true }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng2-pdfjs-viewer.mjs","sources":["../../src/managers/ActionQueueManager.ts","../../src/utils/PropertyTransformers.ts","../../src/utils/ComponentUtils.ts","../../src/utils/ChangeOriginTracker.ts","../../src/ng2-pdfjs-viewer.component.ts","../../src/ng2-pdfjs-viewer.module.ts","../../ng2-pdfjs-viewer.ts"],"sourcesContent":["import { ViewerAction, ActionExecutionResult } from \"../interfaces/ViewerTypes\";\r\n\r\n// Simplified Action Queue Manager - Single queue with readiness-based execution\r\nexport class ActionQueueManager {\r\n private actionQueue: Array<{ action: ViewerAction; readinessLevel: number }> =\r\n [];\r\n private executedActions: Map<string, ActionExecutionResult> = new Map();\r\n public isDocumentLoaded = false;\r\n private isPostMessageReady = false;\r\n private postMessageReadiness = 0;\r\n private diagnosticLogs = false;\r\n private postMessageExecutor?: (action: string, payload: any) => Promise<any>;\r\n\r\n constructor(diagnosticLogs = false) {\r\n this.diagnosticLogs = diagnosticLogs;\r\n }\r\n\r\n setDiagnosticLogs(enabled: boolean): void {\r\n this.diagnosticLogs = enabled;\r\n }\r\n\r\n setPostMessageReady(ready: boolean, readiness: number = 0): void {\r\n this.isPostMessageReady = ready;\r\n this.postMessageReadiness = readiness;\r\n\r\n if (ready) {\r\n this.processQueuedActions();\r\n }\r\n }\r\n\r\n updateReadiness(readiness: number): void {\r\n if (this.postMessageReadiness !== readiness) {\r\n this.postMessageReadiness = readiness;\r\n }\r\n }\r\n\r\n // Simplified queue management - single queue with readiness levels\r\n queueAction(action: ViewerAction, readinessLevel: number): void {\r\n this.actionQueue.push({ action, readinessLevel });\r\n }\r\n\r\n // Legacy methods for backward compatibility - now just delegate to main queue\r\n queueImmediateAction(action: ViewerAction): void {\r\n this.queueAction(action, 3);\r\n }\r\n\r\n queueViewerReadyAction(action: ViewerAction): void {\r\n this.queueAction(action, 4);\r\n }\r\n\r\n queueDocumentLoadedAction(action: ViewerAction): void {\r\n this.queueAction(action, 5);\r\n }\r\n\r\n queueOnDemandAction(action: ViewerAction): Promise<ActionExecutionResult> {\r\n return this.executeAction(action);\r\n }\r\n\r\n onDocumentLoaded(): void {\r\n this.isDocumentLoaded = true;\r\n this.processQueuedActions();\r\n }\r\n\r\n // Process all queued actions that now meet readiness requirements\r\n public processQueuedActions(): void {\r\n const executableActions = this.actionQueue.filter((item) => {\r\n const canExecute =\r\n this.postMessageReadiness >= item.readinessLevel &&\r\n (item.readinessLevel < 5 || this.isDocumentLoaded);\r\n\r\n return canExecute;\r\n });\r\n\r\n // Remove executable actions from queue\r\n this.actionQueue = this.actionQueue.filter((item) => {\r\n return !(\r\n this.postMessageReadiness >= item.readinessLevel &&\r\n (item.readinessLevel < 5 || this.isDocumentLoaded)\r\n );\r\n });\r\n\r\n // Execute all ready actions\r\n executableActions.forEach((item) => {\r\n this.executeAction(item.action);\r\n });\r\n }\r\n\r\n public async executeAction(\r\n action: ViewerAction,\r\n ): Promise<ActionExecutionResult> {\r\n const result: ActionExecutionResult = {\r\n actionId: action.id,\r\n success: false,\r\n timestamp: Date.now(),\r\n };\r\n\r\n try {\r\n if (action.condition && !action.condition(null)) {\r\n result.error = \"Condition not met\";\r\n this.executedActions.set(action.id, result);\r\n return result;\r\n }\r\n\r\n const success = await this.executeActionViaPostMessage(action);\r\n result.success = success;\r\n\r\n // If action has a resolver (from user interaction), call it\r\n if (action.resolver) {\r\n action.resolver(result);\r\n }\r\n } catch (error) {\r\n result.error = error instanceof Error ? error.message : String(error);\r\n if (this.diagnosticLogs) {\r\n console.error(\r\n `🔍 ActionQueueManager: Error executing action ${action.action}:`,\r\n error,\r\n );\r\n }\r\n\r\n // If action has a resolver (from user interaction), call it with error\r\n if (action.resolver) {\r\n action.resolver(result);\r\n }\r\n }\r\n\r\n this.executedActions.set(action.id, result);\r\n return result;\r\n }\r\n\r\n private async executeActionViaPostMessage(\r\n action: ViewerAction,\r\n ): Promise<boolean> {\r\n if (!this.postMessageExecutor) {\r\n throw new Error(\"PostMessage executor not set\");\r\n }\r\n\r\n await this.postMessageExecutor(action.action, action.payload);\r\n return true;\r\n }\r\n\r\n setPostMessageExecutor(\r\n executor: (action: string, payload: any) => Promise<any>,\r\n ): void {\r\n this.postMessageExecutor = executor;\r\n }\r\n\r\n getActionStatus(\r\n actionId: string,\r\n ): \"pending\" | \"executing\" | \"completed\" | \"failed\" | \"not-found\" {\r\n const result = this.executedActions.get(actionId);\r\n if (!result) {\r\n const inQueue = this.actionQueue.some(\r\n (item) => item.action.id === actionId,\r\n );\r\n return inQueue ? \"pending\" : \"not-found\";\r\n }\r\n\r\n return result.success ? \"completed\" : \"failed\";\r\n }\r\n\r\n clearQueues(): void {\r\n this.actionQueue = [];\r\n this.executedActions.clear();\r\n }\r\n\r\n getQueueStatus(): { queuedActions: number; executedActions: number } {\r\n return {\r\n queuedActions: this.actionQueue.length,\r\n executedActions: this.executedActions.size,\r\n };\r\n }\r\n}\r\n","// Property transformation utilities\r\nexport class PropertyTransformers {\r\n static transformZoom = {\r\n toViewer: (zoom: string): string => {\r\n if (!zoom) return \"auto\";\r\n\r\n // Convert common zoom values to PDF.js format\r\n const zoomMappings: { [key: string]: string } = {\r\n auto: \"auto\",\r\n \"page-fit\": \"page-fit\",\r\n \"page-width\": \"page-width\",\r\n \"page-actual\": \"page-actual\",\r\n };\r\n\r\n return zoomMappings[zoom.toLowerCase()] || zoom;\r\n },\r\n\r\n fromViewer: (viewerZoom: any): string => {\r\n if (typeof viewerZoom === \"string\") return viewerZoom;\r\n if (typeof viewerZoom === \"number\") {\r\n // Convert numeric zoom to string without % to avoid feedback loop\r\n // PDF.js accepts numeric strings like \"1.25\" directly\r\n return viewerZoom.toString();\r\n }\r\n return \"auto\";\r\n },\r\n };\r\n\r\n static transformRotation = {\r\n toViewer: (rotation: number): number => {\r\n // Normalize rotation to 0, 90, 180, 270\r\n return ((rotation % 360) + 360) % 360;\r\n },\r\n\r\n fromViewer: (viewerRotation: any): number => {\r\n return typeof viewerRotation === \"number\" ? viewerRotation : 0;\r\n },\r\n };\r\n\r\n static transformCursor = {\r\n toViewer: (cursor: string): string => {\r\n if (!cursor) return \"select\";\r\n\r\n const cursorMappings: { [key: string]: string } = {\r\n select: \"select\",\r\n hand: \"hand\",\r\n zoom: \"zoom\",\r\n };\r\n\r\n return cursorMappings[cursor.toLowerCase()] || \"select\";\r\n },\r\n\r\n fromViewer: (viewerCursor: any): string => {\r\n return typeof viewerCursor === \"string\" ? viewerCursor : \"select\";\r\n },\r\n };\r\n\r\n static transformScroll = {\r\n toViewer: (scroll: string): string => {\r\n if (!scroll) return \"vertical\";\r\n\r\n const scrollMappings: { [key: string]: string } = {\r\n vertical: \"vertical\",\r\n horizontal: \"horizontal\",\r\n wrapped: \"wrapped\",\r\n page: \"page\",\r\n };\r\n\r\n return scrollMappings[scroll.toLowerCase()] || \"vertical\";\r\n },\r\n\r\n fromViewer: (viewerScroll: any): string => {\r\n const scrollModes = [\"vertical\", \"horizontal\", \"wrapped\", \"page\"];\r\n if (typeof viewerScroll === \"number\") {\r\n return scrollModes[viewerScroll] || \"vertical\";\r\n }\r\n return typeof viewerScroll === \"string\" ? viewerScroll : \"vertical\";\r\n },\r\n };\r\n\r\n static transformSpread = {\r\n toViewer: (spread: string): string => {\r\n if (!spread) return \"none\";\r\n\r\n const spreadMappings: { [key: string]: string } = {\r\n none: \"none\",\r\n odd: \"odd\",\r\n even: \"even\",\r\n };\r\n\r\n return spreadMappings[spread.toLowerCase()] || \"none\";\r\n },\r\n\r\n fromViewer: (viewerSpread: any): string => {\r\n const spreadModes = [\"none\", \"odd\", \"even\"];\r\n if (typeof viewerSpread === \"number\") {\r\n return spreadModes[viewerSpread] || \"none\";\r\n }\r\n return typeof viewerSpread === \"string\" ? viewerSpread : \"none\";\r\n },\r\n };\r\n\r\n static transformPageMode = {\r\n toViewer: (pageMode: string): string => {\r\n if (!pageMode) return \"none\";\r\n\r\n const pageModeMapping: { [key: string]: string } = {\r\n none: \"none\",\r\n thumbs: \"thumbs\",\r\n bookmarks: \"bookmarks\",\r\n attachments: \"attachments\",\r\n };\r\n\r\n return pageModeMapping[pageMode.toLowerCase()] || \"none\";\r\n },\r\n\r\n fromViewer: (viewerPageMode: any): string => {\r\n return typeof viewerPageMode === \"string\" ? viewerPageMode : \"none\";\r\n },\r\n };\r\n}\r\n","// Common utility functions for the PDF viewer component\r\nexport class ComponentUtils {\r\n // Common PostMessage action mapping\r\n static getActionForProperty(propertyName: string): string | null {\r\n const propertyActionMap: { [key: string]: string } = {\r\n // Control visibility\r\n showOpenFile: \"show-openfile\",\r\n showDownload: \"show-download\",\r\n showPrint: \"show-print\",\r\n showFullScreen: \"show-fullscreen\",\r\n showFind: \"show-find\",\r\n showViewBookmark: \"show-bookmark\",\r\n showAnnotations: \"show-annotations\",\r\n\r\n // Mode controls\r\n cursor: \"set-cursor\",\r\n scroll: \"set-scroll\",\r\n spread: \"set-spread\",\r\n zoom: \"set-zoom\",\r\n pageMode: \"update-page-mode\",\r\n\r\n // Navigation\r\n page: \"set-page\",\r\n rotation: \"set-rotation\",\r\n namedDest: \"go-to-named-dest\",\r\n\r\n // Auto-actions\r\n downloadOnLoad: \"trigger-download\",\r\n printOnLoad: \"trigger-print\",\r\n showLastPageOnLoad: \"go-to-last-page\",\r\n rotateCW: \"trigger-rotate-cw\",\r\n rotateCCW: \"trigger-rotate-ccw\",\r\n\r\n // Error handling\r\n errorMessage: \"set-error-message\",\r\n errorOverride: \"set-error-override\",\r\n errorAppend: \"set-error-append\",\r\n\r\n // Configuration\r\n locale: \"set-locale\",\r\n useOnlyCssZoom: \"set-css-zoom\",\r\n downloadFileName: \"set-download-filename\",\r\n\r\n // Theme & Visual Customization\r\n theme: \"set-theme\",\r\n primaryColor: \"set-primary-color\",\r\n backgroundColor: \"set-background-color\",\r\n pageBorderColor: \"set-page-border-color\",\r\n pageSpacing: \"set-page-spacing\",\r\n toolbarColor: \"set-toolbar-color\",\r\n textColor: \"set-text-color\",\r\n borderRadius: \"set-border-radius\",\r\n customCSS: \"set-custom-css\",\r\n\r\n // Configuration\r\n diagnosticLogs: \"set-diagnostic-logs\",\r\n };\r\n\r\n // Toolbar/Sidebar group visibility\r\n const groupVisibilityMap: { [key: string]: string } = {\r\n showToolbarLeft: \"show-toolbar-left\",\r\n showToolbarMiddle: \"show-toolbar-middle\",\r\n showToolbarRight: \"show-toolbar-right\",\r\n showSecondaryToolbarToggle: \"show-secondary-toolbar-toggle\",\r\n showSidebar: \"show-sidebar\",\r\n showSidebarLeft: \"show-sidebar-left\",\r\n showSidebarRight: \"show-sidebar-right\",\r\n };\r\n\r\n // Layout & responsive customization\r\n const layoutMap: { [key: string]: string } = {\r\n toolbarDensity: \"set-toolbar-density\",\r\n sidebarWidth: \"set-sidebar-width\",\r\n toolbarPosition: \"set-toolbar-position\",\r\n sidebarPosition: \"set-sidebar-position\",\r\n responsiveBreakpoint: \"set-responsive-breakpoint\",\r\n };\r\n\r\n return (\r\n propertyActionMap[propertyName] ||\r\n groupVisibilityMap[propertyName] ||\r\n layoutMap[propertyName] ||\r\n null\r\n );\r\n }\r\n\r\n // Event handler cleanup utility\r\n static cleanupEventHandlers(component: any): void {\r\n // Clean up webviewerloaded handler\r\n if ((component as any)._webviewerLoadedHandler) {\r\n document.removeEventListener(\r\n \"webviewerloaded\",\r\n (component as any)._webviewerLoadedHandler,\r\n );\r\n }\r\n\r\n // Clean up PDF.js event handlers\r\n if ((component as any)._pdfEventHandlers) {\r\n const handlers = (component as any)._pdfEventHandlers;\r\n const eventBus = component.PDFViewerApplication?.eventBus;\r\n\r\n if (eventBus) {\r\n Object.keys(handlers).forEach((eventName) => {\r\n eventBus.off(eventName, handlers[eventName]);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","// Change origin tracking for two-way binding circular update prevention\r\nexport class ChangeOriginTracker {\r\n private userInitiatedChanges = new Set<string>();\r\n private programmaticChanges = new Set<string>();\r\n\r\n markUserInitiated(property: string): void {\r\n this.userInitiatedChanges.add(property);\r\n setTimeout(() => this.userInitiatedChanges.delete(property), 0);\r\n }\r\n\r\n markProgrammatic(property: string): void {\r\n this.programmaticChanges.add(property);\r\n setTimeout(() => this.programmaticChanges.delete(property), 0);\r\n }\r\n\r\n isUserInitiated(property: string): boolean {\r\n return this.userInitiatedChanges.has(property);\r\n }\r\n\r\n isProgrammatic(property: string): boolean {\r\n return this.programmaticChanges.has(property);\r\n }\r\n}\r\n","import {\n Component,\n Input,\n Output,\n OnInit,\n OnDestroy,\n ViewChild,\n EventEmitter,\n ElementRef,\n OnChanges,\n TemplateRef,\n SimpleChanges,\n AfterViewInit,\n} from \"@angular/core\";\n\n// Import extracted modules\nimport {\n ControlMessage,\n ControlResponse,\n PropertyChangeEvent,\n ViewerAction,\n ActionExecutionResult,\n ChangedPage,\n ChangedScale,\n ChangedRotation,\n ControlVisibilityConfig,\n GroupVisibilityConfig,\n LayoutConfig,\n ToolbarDensity,\n ToolbarPosition,\n SidebarPosition,\n AutoActionConfig,\n ErrorConfig,\n ViewerConfig,\n ThemeConfig,\n DocumentError,\n PagesInfo,\n PresentationMode,\n FindOperation,\n FindMatchesCount,\n DocumentMetadata,\n DocumentOutline,\n PageRenderInfo,\n // New high-value events\n AnnotationLayerRenderEvent,\n BookmarkClick,\n} from \"./interfaces/ViewerTypes\";\nimport { ActionQueueManager } from \"./managers/ActionQueueManager\";\nimport { PropertyTransformers } from \"./utils/PropertyTransformers\";\nimport { ComponentUtils } from \"./utils/ComponentUtils\";\nimport { ChangeOriginTracker } from \"./utils/ChangeOriginTracker\";\n\n@Component({\n selector: \"ng2-pdfjs-viewer\",\n standalone: false,\n styles: [\n `\n /* Main container styling */\n .ng2-pdfjs-viewer-container {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n /* Spinner overlay styling */\n .ng2-pdfjs-loading-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.6);\n backdrop-filter: saturate(120%) blur(1px);\n }\n\n /* Default spinner content styling */\n .ng2-pdfjs-spinner-content {\n text-align: center;\n }\n\n .ng2-pdfjs-spinner-icon {\n display: inline-block;\n width: 40px;\n height: 40px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196F3;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n }\n\n .ng2-pdfjs-spinner-text {\n margin-top: 16px;\n color: #666;\n font-size: 16px;\n }\n\n /* Error overlay styling */\n .ng2-pdfjs-error-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.9);\n backdrop-filter: saturate(120%) blur(1px);\n }\n\n /* Default error content styling */\n .ng2-pdfjs-error-content {\n text-align: center;\n max-width: 400px;\n padding: 20px;\n }\n\n .ng2-pdfjs-error-icon {\n font-size: 48px;\n color: #f44336;\n margin-bottom: 16px;\n }\n\n .ng2-pdfjs-error-title {\n color: #333;\n font-size: 18px;\n font-weight: 500;\n margin-bottom: 8px;\n }\n\n .ng2-pdfjs-error-message {\n color: #666;\n font-size: 14px;\n line-height: 1.4;\n }\n\n /* Default spinner animation */\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n `,\n ],\n template: `\n <div class=\"ng2-pdfjs-viewer-container\">\n <iframe\n [title]=\"iframeTitle || 'PDF document viewer'\"\n [hidden]=\"externalWindow || (!externalWindow && !pdfSrc)\"\n sandbox=\"allow-forms allow-scripts allow-same-origin allow-modals\"\n [style.border]=\"iframeBorder\"\n #iframe\n width=\"100%\"\n height=\"100%\"\n ></iframe>\n\n <div\n class=\"ng2-pdfjs-loading-overlay\"\n *ngIf=\"showSpinner && isLoading && !externalWindow\"\n [ngClass]=\"spinnerClass\"\n >\n <ng-container\n *ngIf=\"customSpinnerTpl; else defaultSpinner\"\n [ngTemplateOutlet]=\"customSpinnerTpl\"\n ></ng-container>\n <ng-template #defaultSpinner>\n <div class=\"ng2-pdfjs-spinner-content\">\n <div class=\"ng2-pdfjs-spinner-icon\"></div>\n <div class=\"ng2-pdfjs-spinner-text\">\n Loading PDF...\n </div>\n </div>\n </ng-template>\n </div>\n\n <div\n class=\"ng2-pdfjs-error-overlay\"\n *ngIf=\"errorOverride && hasError && !externalWindow\"\n [ngClass]=\"errorClass\"\n >\n <ng-container\n *ngIf=\"customErrorTpl; else defaultError\"\n [ngTemplateOutlet]=\"customErrorTpl\"\n [ngTemplateOutletContext]=\"getErrorTemplateData()\"\n ></ng-container>\n <ng-template #defaultError>\n <div class=\"ng2-pdfjs-error-content\">\n <div class=\"ng2-pdfjs-error-icon\">\n ⚠️\n </div>\n <div class=\"ng2-pdfjs-error-title\">\n Error Loading PDF\n </div>\n <div class=\"ng2-pdfjs-error-message\">\n {{ currentErrorMessage }}\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n `,\n})\nexport class PdfJsViewerComponent\n implements OnInit, OnDestroy, OnChanges, AfterViewInit\n{\n // #region Component Properties\n @ViewChild(\"iframe\", { static: true }) iframe: ElementRef;\n\n static lastID = 0;\n @Input() public viewerId =\n `ng2-pdfjs-viewer-ID${++PdfJsViewerComponent.lastID}`;\n\n // #region Event Outputs\n @Output() onBeforePrint: EventEmitter<void> = new EventEmitter();\n @Output() onAfterPrint: EventEmitter<void> = new EventEmitter();\n @Output() onDocumentLoad: EventEmitter<void> = new EventEmitter();\n @Output() onPageChange: EventEmitter<ChangedPage> = new EventEmitter();\n @Output() onScaleChange: EventEmitter<ChangedScale> = new EventEmitter();\n @Output() onRotationChange: EventEmitter<ChangedRotation> =\n new EventEmitter();\n\n // New high-value events for enhanced PDF viewer functionality\n @Output() onDocumentError: EventEmitter<DocumentError> = new EventEmitter();\n @Output() onDocumentInit: EventEmitter<void> = new EventEmitter();\n @Output() onPagesInit: EventEmitter<PagesInfo> = new EventEmitter();\n @Output() onPresentationModeChanged: EventEmitter<PresentationMode> =\n new EventEmitter();\n @Output() onOpenFile: EventEmitter<void> = new EventEmitter();\n @Output() onFind: EventEmitter<FindOperation> = new EventEmitter();\n @Output() onUpdateFindMatchesCount: EventEmitter<FindMatchesCount> =\n new EventEmitter();\n @Output() onMetadataLoaded: EventEmitter<DocumentMetadata> =\n new EventEmitter();\n @Output() onOutlineLoaded: EventEmitter<DocumentOutline> = new EventEmitter();\n @Output() onPageRendered: EventEmitter<PageRenderInfo> = new EventEmitter();\n\n // New high-value events\n @Output()\n onAnnotationLayerRendered: EventEmitter<AnnotationLayerRenderEvent> =\n new EventEmitter();\n @Output() onBookmarkClick: EventEmitter<BookmarkClick> = new EventEmitter();\n @Output() onIdle: EventEmitter<void> = new EventEmitter();\n // #endregion\n\n // #region Basic Configuration Properties\n @Input() public viewerFolder: string;\n @Input() public externalWindow: boolean = false;\n @Input() public target: string = \"_blank\";\n @Input() public showSpinner: boolean = true;\n @Input() public downloadFileName: string;\n @Input() public locale: string;\n @Input() public useOnlyCssZoom: boolean = false;\n @Input() public set diagnosticLogs(value: boolean) {\n this._diagnosticLogs = value;\n // Update action queue manager\n this.actionQueueManager.setDiagnosticLogs(value);\n // Send to wrapper\n this.dispatchAction(\"set-diagnostic-logs\", value, \"property-change\");\n }\n \n public get diagnosticLogs(): boolean {\n return this._diagnosticLogs;\n }\n \n private _diagnosticLogs: boolean = false;\n // #endregion\n\n // #region Control Visibility Properties\n @Input() public showOpenFile: boolean = true;\n @Input() public showAnnotations: boolean = false;\n @Input() public showDownload: boolean = true;\n @Input() public showViewBookmark: boolean = true;\n @Input() public showPrint: boolean = true;\n @Input() public showFullScreen: boolean = true;\n @Input() public showFind: boolean = true;\n // #endregion\n\n // #region Auto-Action Properties\n @Input() public downloadOnLoad: boolean = false;\n @Input() public printOnLoad: boolean = false;\n @Input() public rotateCW: boolean = false;\n @Input() public rotateCCW: boolean = false;\n @Input() public showLastPageOnLoad: boolean = false;\n // #endregion\n\n // #region Navigation Properties\n @Input() public namedDest: string;\n // #endregion\n\n // #region Error Handling Properties\n @Input() public errorOverride: boolean = false;\n @Input() public errorAppend: boolean = true;\n @Input() public errorMessage: string;\n @Input() public urlValidation: boolean = true;\n @Input() public customSecurityTpl: TemplateRef<any>;\n \n // Security warning state\n public securityWarning: { message: string; originalUrl: string; currentUrl: string } | null = null;\n // #endregion\n\n // #region Theme & Visual Customization Properties\n @Input() public theme: \"light\" | \"dark\" | \"auto\" = \"light\";\n @Input() public primaryColor?: string;\n @Input() public backgroundColor?: string;\n @Input() public pageBorderColor?: string;\n @Input() public pageSpacing?: {\n margin?: string;\n spreadMargin?: string;\n border?: string;\n };\n @Input() public toolbarColor?: string;\n @Input() public textColor?: string;\n @Input() public borderRadius?: string;\n @Input() public customCSS?: string;\n @Input() public cspNonce?: string;\n @Input() public iframeTitle?: string; // CSP nonce for customCSS (optional)\n // #endregion\n\n // #region Loading & Spinner Customization\n @Input() public customSpinnerTpl?: TemplateRef<any>;\n @Input() public spinnerClass?: string;\n // #endregion\n\n // #region Error Display Customization\n @Input() public customErrorTpl?: TemplateRef<any>;\n @Input() public errorClass?: string;\n // #endregion\n\n // #region Toolbar/Sidebar Group Visibility\n @Input() public showToolbarLeft: boolean = true;\n @Input() public showToolbarMiddle: boolean = true;\n @Input() public showToolbarRight: boolean = true;\n @Input() public showSecondaryToolbarToggle: boolean = true;\n @Input() public showSidebar: boolean = true;\n @Input() public showSidebarLeft: boolean = true;\n @Input() public showSidebarRight: boolean = true;\n // #endregion\n\n // #region Layout & Responsive Customization\n @Input() public toolbarDensity: ToolbarDensity = \"default\";\n @Input() public sidebarWidth?: string; // e.g., '280px'\n @Input() public toolbarPosition: ToolbarPosition = \"top\";\n @Input() public sidebarPosition: SidebarPosition = \"left\";\n @Input() public responsiveBreakpoint?: string | number;\n // #endregion\n\n // Internal loading state for overlay control\n public isLoading: boolean = true;\n private hasFirstRender: boolean = false;\n\n // Internal error state for error display\n public hasError: boolean = false;\n public currentErrorMessage: string = \"\";\n public errorTemplateData: any = {};\n\n // Helper method to get error template data\n public getErrorTemplateData(): any {\n return {\n errorMessage: this.currentErrorMessage,\n errorClass: this.errorClass,\n ...this.errorTemplateData,\n };\n }\n\n // Error template button actions\n public reloadViewer(): void {\n this.refresh();\n }\n\n public goBack(): void {\n if (window.history.length > 1) {\n window.history.back();\n } else {\n window.close();\n }\n }\n\n public closeViewer(): void {\n window.close();\n }\n\n // #region Convenience Configuration Setters\n @Input() public set controlVisibility(config: ControlVisibilityConfig) {\n if (config.download !== undefined) this.showDownload = config.download;\n if (config.print !== undefined) this.showPrint = config.print;\n if (config.find !== undefined) this.showFind = config.find;\n if (config.fullScreen !== undefined)\n this.showFullScreen = config.fullScreen;\n if (config.openFile !== undefined) this.showOpenFile = config.openFile;\n if (config.viewBookmark !== undefined)\n this.showViewBookmark = config.viewBookmark;\n if (config.annotations !== undefined)\n this.showAnnotations = config.annotations;\n }\n\n @Input() public set autoActions(config: AutoActionConfig) {\n if (config.downloadOnLoad !== undefined)\n this.downloadOnLoad = config.downloadOnLoad;\n if (config.printOnLoad !== undefined) this.printOnLoad = config.printOnLoad;\n if (config.showLastPageOnLoad !== undefined)\n this.showLastPageOnLoad = config.showLastPageOnLoad;\n if (config.rotateCW !== undefined) this.rotateCW = config.rotateCW;\n if (config.rotateCCW !== undefined) this.rotateCCW = config.rotateCCW;\n }\n\n @Input() public set errorHandling(config: ErrorConfig) {\n if (config.override !== undefined) this.errorOverride = config.override;\n if (config.append !== undefined) this.errorAppend = config.append;\n if (config.message !== undefined) this.errorMessage = config.message;\n }\n\n @Input() public set viewerConfig(config: ViewerConfig) {\n if (config.showSpinner !== undefined) this.showSpinner = config.showSpinner;\n if (config.useOnlyCssZoom !== undefined)\n this.useOnlyCssZoom = config.useOnlyCssZoom;\n if (config.diagnosticLogs !== undefined)\n this.diagnosticLogs = config.diagnosticLogs;\n if (config.locale !== undefined) this.locale = config.locale;\n }\n\n @Input() public set themeConfig(config: ThemeConfig) {\n if (config.theme !== undefined) this.theme = config.theme;\n if (config.primaryColor !== undefined)\n this.primaryColor = config.primaryColor;\n if (config.backgroundColor !== undefined)\n this.backgroundColor = config.backgroundColor;\n if (config.pageBorderColor !== undefined)\n this.pageBorderColor = config.pageBorderColor;\n if (config.pageSpacing !== undefined)\n this.pageSpacing = config.pageSpacing;\n if (config.toolbarColor !== undefined)\n this.toolbarColor = config.toolbarColor;\n if (config.textColor !== undefined) this.textColor = config.textColor;\n if (config.borderRadius !== undefined)\n this.borderRadius = config.borderRadius;\n if (config.customCSS !== undefined) this.customCSS = config.customCSS;\n if (config.cspNonce !== undefined) this.cspNonce = config.cspNonce;\n }\n\n @Input() public set groupVisibility(config: GroupVisibilityConfig) {\n if (config.toolbarLeft !== undefined)\n this.showToolbarLeft = config.toolbarLeft;\n if (config.toolbarMiddle !== undefined)\n this.showToolbarMiddle = config.toolbarMiddle;\n if (config.toolbarRight !== undefined)\n this.showToolbarRight = config.toolbarRight;\n if (config.secondaryToolbarToggle !== undefined)\n this.showSecondaryToolbarToggle = config.secondaryToolbarToggle;\n if (config.sidebar !== undefined) this.showSidebar = config.sidebar;\n if (config.sidebarLeft !== undefined)\n this.showSidebarLeft = config.sidebarLeft;\n if (config.sidebarRight !== undefined)\n this.showSidebarRight = config.sidebarRight;\n }\n\n @Input() public set layoutConfig(config: LayoutConfig) {\n if (config.toolbarDensity !== undefined)\n this.toolbarDensity = config.toolbarDensity;\n if (config.sidebarWidth !== undefined)\n this.sidebarWidth = config.sidebarWidth;\n if (config.toolbarPosition !== undefined)\n this.toolbarPosition = config.toolbarPosition;\n if (config.sidebarPosition !== undefined)\n this.sidebarPosition = config.sidebarPosition;\n if (config.responsiveBreakpoint !== undefined)\n this.responsiveBreakpoint = config.responsiveBreakpoint;\n }\n // #endregion\n\n // #region Helper function for deprecated properties\n private setDeprecatedProperty(\n oldName: string,\n newProperty: string,\n value: any,\n ): void {\n if (this.diagnosticLogs) {\n console.warn(\n `⚠️ DEPRECATED: Property \"${oldName}\" is deprecated. Use \"${newProperty}\" instead.`,\n );\n }\n (this as any)[newProperty] = value;\n }\n // #endregion\n\n // #region Deprecated Properties (Simplified)\n /** @deprecated Use `downloadOnLoad` instead. This property will be removed in a future version. */\n @Input() public set startDownload(value: boolean) {\n this.setDeprecatedProperty(\"startDownload\", \"downloadOnLoad\", value);\n }\n\n /** @deprecated Use `printOnLoad` instead. This property will be removed in a future version. */\n @Input() public set startPrint(value: boolean) {\n this.setDeprecatedProperty(\"startPrint\", \"printOnLoad\", value);\n }\n\n /** @deprecated Use `showOpenFile` instead. This property will be removed in a future version. */\n @Input() public set openFile(value: boolean) {\n this.setDeprecatedProperty(\"openFile\", \"showOpenFile\", value);\n }\n\n /** @deprecated Use `showDownload` instead. This property will be removed in a future version. */\n @Input() public set download(value: boolean) {\n this.setDeprecatedProperty(\"download\", \"showDownload\", value);\n }\n\n /** @deprecated Use `showPrint` instead. This property will be removed in a future version. */\n @Input() public set print(value: boolean) {\n this.setDeprecatedProperty(\"print\", \"showPrint\", value);\n }\n\n /** @deprecated Use `showFullScreen` instead. This property will be removed in a future version. */\n @Input() public set fullScreen(value: boolean) {\n this.setDeprecatedProperty(\"fullScreen\", \"showFullScreen\", value);\n }\n\n /** @deprecated Use `showFind` instead. This property will be removed in a future version. */\n @Input() public set find(value: boolean) {\n this.setDeprecatedProperty(\"find\", \"showFind\", value);\n }\n\n /** @deprecated Use `showViewBookmark` instead. This property will be removed in a future version. */\n @Input() public set viewBookmark(value: boolean) {\n this.setDeprecatedProperty(\"viewBookmark\", \"showViewBookmark\", value);\n }\n\n /** @deprecated Use `showLastPageOnLoad` instead. This property will be removed in a future version. */\n @Input() public set lastPage(value: boolean) {\n this.setDeprecatedProperty(\"lastPage\", \"showLastPageOnLoad\", value);\n }\n // #endregion\n\n // #region External Window Properties\n @Input() public externalWindowOptions: string;\n public viewerTab: any;\n // #endregion\n\n // #region Security Properties\n // iframe sandbox is static for security and Angular compliance\n // #endregion\n\n // #region iframe Properties\n @Input() public iframeBorder: string | number = \"0\";\n // #endregion\n\n // #region Private Properties\n private _src: string | Blob | Uint8Array;\n private _page: number;\n private isPostMessageReady = false;\n private postMessageReadiness = 0;\n private pendingInitialConfig = true;\n private initialConfigQueued = false;\n private actionQueueManager: ActionQueueManager = new ActionQueueManager(this._diagnosticLogs);\n private changeOriginTracker = new ChangeOriginTracker();\n private messageIdCounter = 0;\n private pendingMessages = new Map<\n string,\n { resolve: Function; reject: Function }\n >();\n private pendingChanges: SimpleChanges[] = [];\n private relaseUrl?: () => void;\n // #endregion\n\n // #region Two-Way Binding Properties\n // Private backing fields for two-way binding properties\n private _zoom: string = \"auto\";\n private _rotation: number = 0;\n private _cursor: string = \"select\";\n private _scroll: string = \"vertical\";\n private _spread: string = \"none\";\n private _pageMode: string = \"none\";\n\n // Two-way binding Output events\n @Output() zoomChange = new EventEmitter<string>();\n\n @Output() cursorChange = new EventEmitter<string>();\n @Output() scrollChange = new EventEmitter<string>();\n @Output() spreadChange = new EventEmitter<string>();\n @Output() pageModeChange = new EventEmitter<string>();\n\n /**\n * Two-way binding for zoom level\n * Supports: auto, page-fit, page-width, page-actual, percentage values (e.g., \"150%\")\n */\n @Input()\n get zoom(): string {\n return this._zoom;\n }\n set zoom(value: string) {\n const normalizedValue = PropertyTransformers.transformZoom.toViewer(value);\n if (this._zoom !== normalizedValue) {\n this.changeOriginTracker.markProgrammatic(\"zoom\");\n this._zoom = normalizedValue;\n this.applyZoomToViewer(this._zoom);\n this.zoomChange.emit(this._zoom);\n }\n }\n\n /**\n * One-way binding for document rotation\n * Supports: 0, 90, 180, 270 degrees\n */\n @Input()\n set rotation(value: number) {\n const normalizedValue =\n PropertyTransformers.transformRotation.toViewer(value);\n if (this._rotation !== normalizedValue) {\n this._rotation = normalizedValue;\n this.applyRotationToViewer(this._rotation);\n }\n }\n\n get rotation(): number {\n return this._rotation;\n }\n\n /**\n * Two-way binding for cursor mode\n * Supports: select, hand, zoom\n */\n @Input()\n get cursor(): string {\n return this._cursor;\n }\n set cursor(value: string) {\n const normalizedValue =\n PropertyTransformers.transformCursor.toViewer(value);\n if (this._cursor !== normalizedValue) {\n this.changeOriginTracker.markProgrammatic(\"cursor\");\n this._cursor = normalizedValue;\n this.applyCursorToViewer(this._cursor);\n this.cursorChange.emit(this._cursor);\n }\n }\n\n /**\n * Two-way binding for scroll mode\n * Supports: vertical, horizontal, wrapped, page\n */\n @Input()\n get scroll(): string {\n return this._scroll;\n }\n set scroll(value: string) {\n const normalizedValue =\n PropertyTransformers.transformScroll.toViewer(value);\n if (this._scroll !== normalizedValue) {\n this.changeOriginTracker.markProgrammatic(\"scroll\");\n this._scroll = normalizedValue;\n this.applyScrollToViewer(this._scroll);\n this.scrollChange.emit(this._scroll);\n }\n }\n\n /**\n * Two-way binding for spread mode\n * Supports: none, odd, even\n */\n @Input()\n get spread(): string {\n return this._spread;\n }\n set spread(value: string) {\n const normalizedValue =\n PropertyTransformers.transformSpread.toViewer(value);\n if (this._spread !== normalizedValue) {\n this.changeOriginTracker.markProgrammatic(\"spread\");\n this._spread = normalizedValue;\n this.applySpreadToViewer(this._spread);\n this.spreadChange.emit(this._spread);\n }\n }\n\n /**\n * Two-way binding for page mode (sidebar state)\n * Supports: none, thumbs, bookmarks, attachments\n */\n @Input()\n get pageMode(): string {\n return this._pageMode;\n }\n set pageMode(value: string) {\n const normalizedValue =\n PropertyTransformers.transformPageMode.toViewer(value);\n if (this._pageMode !== normalizedValue) {\n this.changeOriginTracker.markProgrammatic(\"pageMode\");\n this._pageMode = normalizedValue;\n this.applyPageModeToViewer(this._pageMode);\n this.pageModeChange.emit(this._pageMode);\n }\n }\n\n @Input()\n public set page(_page: number) {\n this._page = _page;\n if (this.PDFViewerApplication && this.PDFViewerApplication.initialized) {\n this.PDFViewerApplication.page = this._page;\n } else {\n if (this.diagnosticLogs) {\n console.warn(\n \"Document is not loaded yet!!!. Try to set page# after full load. Ignore this warning if you are not setting page# using '.' notation. (E.g. pdfViewer.page = 5;)\",\n );\n }\n }\n }\n\n public get page() {\n if (this.PDFViewerApplication && this.PDFViewerApplication.initialized) {\n return this.PDFViewerApplication.page;\n } else {\n if (this.diagnosticLogs) {\n console.warn(\n \"Document is not loaded yet!!!. Try to retrieve page# after full load.\",\n );\n }\n return this._page || 1;\n }\n }\n\n @Input()\n public set pdfSrc(_src: string | Blob | Uint8Array) {\n this._src = _src;\n }\n\n public get pdfSrc() {\n return this._src;\n }\n // #endregion\n\n // #region PDF.js Application Access Properties\n public get PDFViewerApplicationOptions() {\n let pdfViewerOptions = null;\n if (this.externalWindow) {\n if (this.viewerTab) {\n pdfViewerOptions = this.viewerTab.PDFViewerApplicationOptions;\n }\n } else {\n if (this.iframe.nativeElement.contentWindow) {\n pdfViewerOptions =\n this.iframe.nativeElement.contentWindow.PDFViewerApplicationOptions;\n }\n }\n return pdfViewerOptions;\n }\n\n public get PDFViewerApplication() {\n let pdfViewer = null;\n if (this.externalWindow) {\n if (this.viewerTab) {\n pdfViewer = this.viewerTab.PDFViewerApplication;\n }\n } else {\n if (this.iframe.nativeElement.contentWindow) {\n pdfViewer =\n this.iframe.nativeElement.contentWindow.PDFViewerApplication;\n }\n }\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: Viewer ->\", pdfViewer);\n return pdfViewer;\n }\n\n // #endregion\n // #endregion\n\n // #region Lifecycle Methods\n ngOnInit(): void { \n \n // Connect action queue manager to PostMessage system\n this.actionQueueManager.setPostMessageExecutor((action, payload) =>\n this.sendControlMessage(action, payload),\n );\n\n // Send diagnostic logs setting to wrapper\n this.dispatchAction(\"set-diagnostic-logs\", this._diagnosticLogs, \"initial-load\");\n \n // Send URL validation setting to wrapper\n this.dispatchAction(\"set-url-validation\", this.urlValidation, \"initial-load\");\n \n // Set up PostMessage listener\n this.setupMessageListener();\n \n // Note: PDF loading moved to ngAfterViewInit() to ensure iframe is ready\n // This prevents \"Cannot read properties of null (reading 'location')\" error\n // when pdfSrc is a Blob (Issue #283)\n\n // Bind events.\n this.bindToPdfJsEventBus();\n }\n\n ngAfterViewInit(): void {\n // Load PDF after view is initialized - trust Angular's lifecycle guarantee\n // that iframe.nativeElement.contentWindow is now available\n if (!this.externalWindow) {\n this.loadPdf();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Handle pdfSrc changes - reload the PDF (Issue #283)\n // Trust Angular's change detection event to trigger reload when needed\n if (changes['pdfSrc'] && !changes['pdfSrc'].firstChange) {\n // pdfSrc changed after initialization - reload the PDF\n if (!this.externalWindow) {\n // Show spinner immediately when PDF source changes (Issue #275)\n this.isLoading = true;\n this.hasError = false;\n this.currentErrorMessage = \"\";\n \n // Reset configuration queuing since iframe will reload fresh\n this.initialConfigQueued = false;\n this.isPostMessageReady = false;\n this.loadPdf();\n }\n return; // pdfSrc change requires full reload, skip other change processing\n }\n \n if (this.PDFViewerApplication) {\n // Only apply changes if PostMessage API is ready and viewer is initialized\n if (this.isPostMessageReady && this.PDFViewerApplication.initialized) {\n this.applyChanges(changes);\n } else {\n this.pendingChanges.push(changes);\n }\n } else {\n this.pendingChanges.push(changes);\n }\n }\n\n ngOnDestroy(): void {\n // Clean up pending messages\n this.pendingMessages.clear();\n\n // Clean up event listeners\n ComponentUtils.cleanupEventHandlers(this);\n\n // Reset state flags\n this.initialConfigQueued = false;\n\n // Clean up URL\n this.relaseUrl?.();\n }\n // #endregion\n\n // #region Message Handling Methods\n private generateMessageId(): string {\n return `msg_${++this.messageIdCounter}_${Date.now()}`;\n }\n\n private sendControlMessage(action: string, payload: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const messageId = this.generateMessageId();\n \n const message: ControlMessage = {\n type: \"control-update\",\n action,\n payload,\n id: messageId,\n timestamp: Date.now(),\n };\n\n this.pendingMessages.set(messageId, { resolve, reject });\n\n // Send message to iframe\n if (\n this.iframe &&\n this.iframe.nativeElement &&\n this.iframe.nativeElement.contentWindow\n ) {\n this.iframe.nativeElement.contentWindow.postMessage(message, \"*\");\n } else {\n this.pendingMessages.delete(messageId);\n reject(new Error(\"Iframe not available\"));\n }\n });\n }\n\n private handleControlResponse(response: ControlResponse): void {\n const pendingMessage = this.pendingMessages.get(response.id);\n if (pendingMessage) {\n this.pendingMessages.delete(response.id);\n \n if (response.success) {\n pendingMessage.resolve(response);\n } else {\n pendingMessage.reject(new Error(response.error || \"Unknown error\"));\n }\n }\n }\n\n private setupMessageListener(): void {\n window.addEventListener(\"message\", (event) => {\n // Handle control responses from the viewer\n if (event.data && event.data.type === \"control-response\") {\n this.handleControlResponse(event.data);\n return;\n }\n \n // Handle security warning from viewer\n if (event.data && event.data.type === \"ng2-pdfjs-viewer-security-warning\") {\n this.securityWarning = {\n message: event.data.message,\n originalUrl: event.data.originalUrl,\n currentUrl: event.data.currentUrl\n };\n return;\n }\n \n // Handle PostMessage API ready notification\n if (event.data && event.data.type === \"postmessage-ready\") {\n this.isPostMessageReady = true;\n\n this.postMessageReadiness = event.data.readiness || 0;\n\n // CRITICAL FIX: Process queued actions when readiness level increases\n if (this.actionQueueManager) {\n this.actionQueueManager.updateReadiness(this.postMessageReadiness);\n this.actionQueueManager.processQueuedActions();\n }\n \n // Queue all initial configurations now that PostMessage API is ready (only once)\n if (!this.initialConfigQueued) {\n this.queueAllConfigurations();\n this.initialConfigQueued = true;\n }\n \n // Apply any pending changes that occurred before PostMessage API was ready\n this.applyPendingChanges();\n return;\n }\n \n // Handle state change notifications from PostMessage wrapper\n if (event.data && event.data.type === \"state-change\") {\n this.handleStateChangeNotification(event.data);\n return;\n }\n\n // Handle event notifications from PostMessage wrapper\n if (event.data && event.data.type === \"event-notification\") {\n this.handleEventNotification(event.data);\n return;\n }\n });\n }\n\n private handleStateChangeNotification(notification: any): void {\n const { property, value, source } = notification;\n \n // Internal loading overlay control is system-driven and must be handled unconditionally\n if (property === \"loading\") {\n this.isLoading = !!value;\n // Clear error state when loading starts\n if (value) {\n this.hasError = false;\n this.currentErrorMessage = \"\";\n }\n return;\n }\n\n // Internal error state management\n if (property === \"error\") {\n this.hasError = !!value;\n if (value && typeof value === \"string\") {\n this.currentErrorMessage = value;\n this.errorTemplateData = this.getErrorTemplateData();\n }\n return;\n }\n\n // Only process user-initiated changes to avoid infinite loops\n if (\n source === \"user\" &&\n !this.changeOriginTracker.isProgrammatic(property)\n ) {\n this.changeOriginTracker.markUserInitiated(property);\n \n switch (property) {\n case \"cursor\":\n if (this._cursor !== value) {\n this._cursor =\n PropertyTransformers.transformCursor.fromViewer(value);\n this.cursorChange.emit(this._cursor);\n }\n break;\n \n case \"scroll\":\n if (this._scroll !== value) {\n this._scroll =\n PropertyTransformers.transformScroll.fromViewer(value);\n this.scrollChange.emit(this._scroll);\n }\n break;\n \n case \"spread\":\n if (this._spread !== value) {\n this._spread =\n PropertyTransformers.transformSpread.fromViewer(value);\n this.spreadChange.emit(this._spread);\n }\n break;\n \n case \"pageMode\":\n if (this._pageMode !== value) {\n this._pageMode =\n PropertyTransformers.transformPageMode.fromViewer(value);\n this.pageModeChange.emit(this._pageMode);\n }\n break;\n \n case \"zoom\":\n if (this._zoom !== value) {\n this._zoom = PropertyTransformers.transformZoom.fromViewer(value);\n this.zoomChange.emit(this._zoom);\n }\n break;\n \n case \"rotation\":\n if (this._rotation !== value) {\n this._rotation =\n PropertyTransformers.transformRotation.fromViewer(value);\n }\n break;\n \n // Note: namedDest is now a simple input property, not a two-way binding\n \n default:\n if (this.diagnosticLogs) {\n console.log(\n `🔍 PdfJsViewer: Unknown state change property: ${property}`,\n );\n }\n }\n }\n }\n\n private handleEventNotification(notification: any): void {\n const { eventName, eventData } = notification;\n\n // Emit the appropriate event based on the event name\n switch (eventName) {\n case \"documentError\":\n this.onDocumentError.emit(eventData);\n break;\n\n case \"documentInit\":\n this.onDocumentInit.emit();\n break;\n\n case \"pagesInit\":\n this.onPagesInit.emit(eventData);\n break;\n\n case \"presentationModeChanged\":\n this.onPresentationModeChanged.emit(eventData);\n break;\n\n case \"openFile\":\n this.onOpenFile.emit();\n break;\n\n case \"find\":\n this.onFind.emit(eventData);\n break;\n\n case \"updateFindMatchesCount\":\n this.onUpdateFindMatchesCount.emit(eventData);\n break;\n\n case \"metadataLoaded\":\n this.onMetadataLoaded.emit(eventData);\n break;\n\n case \"outlineLoaded\":\n this.onOutlineLoaded.emit(eventData);\n break;\n\n case \"pageRendered\":\n this.onPageRendered.emit(eventData);\n break;\n\n case \"annotationLayerRendered\":\n this.onAnnotationLayerRendered.emit(eventData);\n break;\n\n case \"bookmarkClick\":\n this.onBookmarkClick.emit(eventData);\n break;\n\n case \"idle\":\n this.onIdle.emit();\n break;\n\n default:\n if (this.diagnosticLogs) {\n console.log(\n `🔍 PdfJsViewer: Unknown event notification: ${eventName}`,\n );\n }\n }\n }\n // #endregion\n\n // #region Property Mapping and Update Methods\n private mapPropertyToAction(propertyName: string): string | null {\n return ComponentUtils.getActionForProperty(propertyName);\n }\n\n private updateViewerControl(propertyName: string, value: any): void {\n const action = this.mapPropertyToAction(propertyName);\n if (action) {\n // Use universal dispatcher instead of direct PostMessage\n this.dispatchAction(action, value, \"property-change\");\n } else {\n // Property is intentionally not mapped (handled via query parameters or direct API)\n }\n }\n\n private applyChanges(changes: SimpleChanges): void {\n Object.keys(changes).forEach((propertyName) => {\n const change = changes[propertyName];\n\n if (change.currentValue !== change.previousValue) {\n // Handle auto-actions - queue for document load, don't execute immediately\n const autoActions = [\n \"downloadOnLoad\",\n \"printOnLoad\",\n \"showLastPageOnLoad\",\n \"rotateCW\",\n \"rotateCCW\",\n ];\n if (autoActions.includes(propertyName)) {\n // Re-queue all configurations when auto-actions change\n this.initialConfigQueued = false;\n if (this.isPostMessageReady) {\n this.queueAllConfigurations();\n this.initialConfigQueued = true;\n }\n return;\n }\n\n // Use universal dispatcher for ALL actions - pure event-driven approach\n const action = this.mapPropertyToAction(propertyName);\n if (action) {\n this.dispatchAction(action, change.currentValue, \"property-change\");\n }\n }\n });\n }\n\n private applyPendingChanges(): void {\n // Only apply pending changes if PostMessage API is ready\n if (!this.isPostMessageReady) {\n return;\n }\n \n if (this.pendingChanges.length > 0) {\n this.pendingChanges.forEach((changes, index) => {\n this.processChangesForQueuing(changes);\n });\n this.pendingChanges = [];\n } else {\n }\n }\n\n private processChangesForQueuing(changes: SimpleChanges): void {\n Object.keys(changes).forEach((propertyName) => {\n const change = changes[propertyName];\n \n if (change.currentValue !== change.previousValue) {\n // Handle auto-actions - queue for document load, don't execute immediately\n const autoActions = [\n \"downloadOnLoad\",\n \"printOnLoad\",\n \"showLastPageOnLoad\",\n \"rotateCW\",\n \"rotateCCW\",\n ];\n if (autoActions.includes(propertyName)) {\n // Re-queue all configurations when auto-actions change\n this.initialConfigQueued = false;\n if (this.isPostMessageReady) {\n this.queueAllConfigurations();\n this.initialConfigQueued = true;\n }\n return;\n }\n \n // Use universal dispatcher for ALL actions - pure event-driven approach\n const action = this.mapPropertyToAction(propertyName);\n if (action) {\n this.dispatchAction(action, change.currentValue, \"property-change\");\n }\n }\n });\n }\n // #endregion\n\n // #region PDF.js Event Binding Methods\n /**\n * Waits for the PDF.js viewer to be ready, and binds the the event bus.\n */\n private bindToPdfJsEventBus() {\n // Store the event listener reference so we can remove it later\n const webviewerLoadedHandler = () => {\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: webviewerloaded event received\");\n\n // Set locale immediately when PDF.js is loaded but before it initializes\n // https://github.com/mozilla/pdf.js/issues/11829#issuecomment-617668679\n if (this.locale && this.iframe?.nativeElement?.contentWindow) {\n try {\n const iframeWindow = this.iframe.nativeElement.contentWindow;\n if (iframeWindow.PDFViewerApplicationOptions) {\n iframeWindow.PDFViewerApplicationOptions.set(\"localeProperties\", {\n lang: this.locale,\n });\n if (this.diagnosticLogs)\n console.debug(\n `PdfJsViewer: Locale set to ${this.locale} before initialization`,\n );\n }\n } catch (error) {\n if (this.diagnosticLogs)\n console.debug(\n \"PdfJsViewer: Could not set locale before initialization:\",\n error,\n );\n }\n }\n\n if (!this.PDFViewerApplication) {\n if (this.diagnosticLogs)\n console.debug(\n \"PdfJsViewer: Viewer not yet (or no longer) available, events can not yet be bound.\",\n );\n return;\n }\n\n // https://github.com/mozilla/pdf.js/issues/9527\n this.PDFViewerApplication.initializedPromise.then(() => {\n // All configurations are now handled via PostMessage system\n // No need to call configureVisibleFeatures() anymore\n \n // Apply any pending changes that occurred before initialization\n this.applyPendingChanges();\n\n const app = this.PDFViewerApplication;\n const eventBus = app.eventBus;\n \n // Store event handler references for cleanup\n const documentLoadedHandler = () => {\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: The document has now been loaded!\");\n this.onDocumentLoad.emit();\n \n // Queue auto-actions for this document load (not from component initialization)\n this.queueAutoActionsForDocumentLoad();\n \n // Execute all queued auto-actions\n this.actionQueueManager.onDocumentLoaded();\n };\n\n // Note: pagesInit event is now handled via the PostMessage wrapper event system\n\n const pagesLoadedHandler = () => {\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: All pages have been fully loaded!\");\n\n // Execute auto-print on pages loaded (ensures PDF is fully ready for printing)\n if (this.printOnLoad === true) {\n this.dispatchAction(\"trigger-print\", true, \"initial-load\");\n }\n };\n\n const beforePrintHandler = () => {\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: The document is about to be printed!\");\n this.onBeforePrint.emit();\n };\n\n const afterPrintHandler = () => {\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: The document has been printed!\");\n this.onAfterPrint.emit();\n };\n\n const pageChangingHandler = (event: any) => {\n if (this.diagnosticLogs)\n console.debug(\n \"PdfJsViewer: The page has changed:\",\n event.pageNumber,\n );\n \n // Update two-way binding for page\n if (\n this._page !== event.pageNumber &&\n !this.changeOriginTracker.isProgrammatic(\"page\")\n ) {\n this.changeOriginTracker.markUserInitiated(\"page\");\n this._page = event.pageNumber;\n // Note: page property uses existing setter/getter, no need to emit pageChange here\n }\n \n this.onPageChange.emit(event.pageNumber);\n };\n\n const rotationChangingHandler = (event: any) => {\n const newRotation: ChangedRotation = {\n rotation: event.pagesRotation,\n page: event.pageNumber,\n };\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: The rotation has changed!\", event);\n \n // Update two-way binding for rotation\n const normalizedRotation =\n PropertyTransformers.transformRotation.fromViewer(\n event.pagesRotation,\n );\n if (\n this._rotation !== normalizedRotation &&\n !this.changeOriginTracker.isProgrammatic(\"rotation\")\n ) {\n this.changeOriginTracker.markUserInitiated(\"rotation\");\n this._rotation = normalizedRotation;\n }\n \n this.onRotationChange.emit(newRotation);\n };\n\n const scaleChangingHandler = (event: any) => {\n const newScale: ChangedScale = event.scale;\n if (this.diagnosticLogs)\n console.debug(\n \"PdfJsViewer: The document has scale has changed!\",\n newScale,\n );\n \n // Update two-way binding for zoom\n const normalizedZoom = PropertyTransformers.transformZoom.fromViewer(\n event.scale,\n );\n if (\n this._zoom !== normalizedZoom &&\n !this.changeOriginTracker.isProgrammatic(\"zoom\")\n ) {\n this.changeOriginTracker.markUserInitiated(\"zoom\");\n this._zoom = normalizedZoom;\n this.zoomChange.emit(normalizedZoom);\n }\n \n this.onScaleChange.emit(newScale);\n };\n \n // Store handlers for cleanup\n (this as any)._pdfEventHandlers = {\n documentloaded: documentLoadedHandler,\n pagesloaded: pagesLoadedHandler,\n beforeprint: beforePrintHandler,\n afterprint: afterPrintHandler,\n pagechanging: pageChangingHandler,\n rotationchanging: rotationChangingHandler,\n scalechanging: scaleChangingHandler,\n };\n \n // Attach event listeners\n eventBus.on(\"documentloaded\", documentLoadedHandler);\n eventBus.on(\"pagesloaded\", pagesLoadedHandler);\n eventBus.on(\"beforeprint\", beforePrintHandler);\n eventBus.on(\"afterprint\", afterPrintHandler);\n eventBus.on(\"pagechanging\", pageChangingHandler);\n eventBus.on(\"rotationchanging\", rotationChangingHandler);\n eventBus.on(\"scalechanging\", scaleChangingHandler);\n });\n };\n \n // Store the handler reference for cleanup\n (this as any)._webviewerLoadedHandler = webviewerLoadedHandler;\n \n document.addEventListener(\"webviewerloaded\", webviewerLoadedHandler);\n }\n // #endregion\n\n // #region Configuration and Action Queue Methods\n private queueAllConfigurations(): void {\n // Queue control visibility configurations (immediate actions)\n this.queueConfiguration(\"showOpenFile\", this.showOpenFile, \"show-openfile\");\n this.queueConfiguration(\"showDownload\", this.showDownload, \"show-download\");\n this.queueConfiguration(\"showPrint\", this.showPrint, \"show-print\");\n this.queueConfiguration(\n \"showFullScreen\",\n this.showFullScreen,\n \"show-fullscreen\",\n );\n this.queueConfiguration(\"showFind\", this.showFind, \"show-find\");\n this.queueConfiguration(\n \"showViewBookmark\",\n this.showViewBookmark,\n \"show-bookmark\",\n );\n this.queueConfiguration(\n \"showAnnotations\",\n this.showAnnotations,\n \"show-annotations\",\n );\n\n // Toolbar/Sidebar group visibility\n this.queueConfiguration(\n \"showToolbarLeft\",\n this.showToolbarLeft,\n \"show-toolbar-left\",\n );\n this.queueConfiguration(\n \"showToolbarMiddle\",\n this.showToolbarMiddle,\n \"show-toolbar-middle\",\n );\n this.queueConfiguration(\n \"showToolbarRight\",\n this.showToolbarRight,\n \"show-toolbar-right\",\n );\n this.queueConfiguration(\n \"showSecondaryToolbarToggle\",\n this.showSecondaryToolbarToggle,\n \"show-secondary-toolbar-toggle\",\n );\n this.queueConfiguration(\"showSidebar\", this.showSidebar, \"show-sidebar\");\n this.queueConfiguration(\n \"showSidebarLeft\",\n this.showSidebarLeft,\n \"show-sidebar-left\",\n );\n this.queueConfiguration(\n \"showSidebarRight\",\n this.showSidebarRight,\n \"show-sidebar-right\",\n );\n\n // Layout customization\n this.queueConfiguration(\n \"toolbarDensity\",\n this.toolbarDensity,\n \"set-toolbar-density\",\n );\n if (this.sidebarWidth) {\n this.queueConfiguration(\n \"sidebarWidth\",\n this.sidebarWidth,\n \"set-sidebar-width\",\n );\n }\n this.queueConfiguration(\n \"toolbarPosition\",\n this.toolbarPosition,\n \"set-toolbar-position\",\n );\n this.queueConfiguration(\n \"sidebarPosition\",\n this.sidebarPosition,\n \"set-sidebar-position\",\n );\n if (this.responsiveBreakpoint !== undefined) {\n this.queueConfiguration(\n \"responsiveBreakpoint\",\n this.responsiveBreakpoint,\n \"set-responsive-breakpoint\",\n );\n }\n\n // Queue mode configurations (immediate actions)\n if (this.cursor) {\n this.queueConfiguration(\"cursor\", this.cursor, \"set-cursor\");\n }\n if (this.scroll) {\n this.queueConfiguration(\"scroll\", this.scroll, \"set-scroll\");\n }\n if (this.spread) {\n this.queueConfiguration(\"spread\", this.spread, \"set-spread\");\n }\n\n // Queue navigation configurations (immediate actions)\n if (this._page) {\n this.queueConfiguration(\"page\", this._page, \"set-page\");\n }\n if (this.zoom) {\n this.queueConfiguration(\"zoom\", this.zoom, \"set-zoom\");\n }\n // Note: zoom is now handled by two-way binding [(zoom)]\n // Queue navigation configuration if specified\n if (this.namedDest && this.namedDest.trim() !== \"\") {\n this.queueConfiguration(\"namedDest\", this.namedDest, \"go-to-named-dest\");\n }\n if (this.pageMode) {\n this.queueConfiguration(\"pageMode\", this.pageMode, \"update-page-mode\");\n }\n\n // Queue rotation configurations (immediate actions)\n if (this.rotateCW === true) {\n this.queueConfiguration(\"rotateCW\", this.rotateCW, \"trigger-rotate-cw\");\n }\n if (this.rotateCCW === true) {\n this.queueConfiguration(\n \"rotateCCW\",\n this.rotateCCW,\n \"trigger-rotate-ccw\",\n );\n }\n\n // Queue error handling configurations (non-auto-actions)\n if (this.errorMessage) {\n this.queueConfiguration(\n \"errorMessage\",\n this.errorMessage,\n \"set-error-message\",\n );\n }\n if (this.errorOverride !== undefined) {\n this.queueConfiguration(\n \"errorOverride\",\n this.errorOverride,\n \"set-error-override\",\n );\n }\n if (this.errorAppend !== undefined) {\n this.queueConfiguration(\n \"errorAppend\",\n this.errorAppend,\n \"set-error-append\",\n );\n }\n\n // Queue theme and visual customization configurations\n // Always queue theme to ensure initial styles are applied\n\n this.queueConfiguration(\"theme\", this.theme || \"light\", \"set-theme\");\n\n if (this.primaryColor) {\n this.queueConfiguration(\n \"primaryColor\",\n this.primaryColor,\n \"set-primary-color\",\n );\n }\n if (this.backgroundColor) {\n this.queueConfiguration(\n \"backgroundColor\",\n this.backgroundColor,\n \"set-background-color\",\n );\n }\n if (this.pageBorderColor) {\n this.queueConfiguration(\n \"pageBorderColor\",\n this.pageBorderColor,\n \"set-page-border-color\",\n );\n }\n if (this.pageSpacing) {\n this.queueConfiguration(\n \"pageSpacing\",\n this.pageSpacing,\n \"set-page-spacing\",\n );\n }\n if (this.toolbarColor) {\n this.queueConfiguration(\n \"toolbarColor\",\n this.toolbarColor,\n \"set-toolbar-color\",\n );\n }\n if (this.textColor) {\n this.queueConfiguration(\"textColor\", this.textColor, \"set-text-color\");\n }\n if (this.borderRadius) {\n this.queueConfiguration(\n \"borderRadius\",\n this.borderRadius,\n \"set-border-radius\",\n );\n }\n if (this.customCSS) {\n // Pass both CSS and nonce for CSP support\n const payload = this.cspNonce \n ? { css: this.customCSS, nonce: this.cspNonce }\n : this.customCSS;\n this.queueConfiguration(\"customCSS\", payload, \"set-custom-css\");\n }\n\n // Queue CSS zoom configurations (immediate actions)\n // Note: Locale is now set via URL parameter, not PostMessage\n if (this.useOnlyCssZoom !== undefined) {\n this.queueConfiguration(\n \"useOnlyCssZoom\",\n this.useOnlyCssZoom,\n \"set-css-zoom\",\n );\n }\n\n // Queue event configurations (non-auto-actions)\n if (this.onBeforePrint) {\n this.queueConfiguration(\"beforePrint\", true, \"enable-before-print\");\n }\n if (this.onAfterPrint) {\n this.queueConfiguration(\"afterPrint\", true, \"enable-after-print\");\n }\n if (this.onDocumentLoad) {\n this.queueConfiguration(\"pagesLoaded\", true, \"enable-pages-loaded\");\n }\n if (this.onPageChange) {\n this.queueConfiguration(\"pageChange\", true, \"enable-page-change\");\n }\n\n // Queue new high-value event configurations\n if (this.onDocumentError) {\n this.queueConfiguration(\"documentError\", true, \"enable-document-error\");\n }\n if (this.onDocumentInit) {\n this.queueConfiguration(\"documentInit\", true, \"enable-document-init\");\n }\n if (this.onPagesInit) {\n this.queueConfiguration(\"pagesInit\", true, \"enable-pages-init\");\n }\n if (this.onPresentationModeChanged) {\n this.queueConfiguration(\n \"presentationModeChanged\",\n true,\n \"enable-presentation-mode-changed\",\n );\n }\n if (this.onOpenFile) {\n this.queueConfiguration(\"openFile\", true, \"enable-open-file\");\n }\n if (this.onFind) {\n this.queueConfiguration(\"find\", true, \"enable-find\");\n }\n if (this.onUpdateFindMatchesCount) {\n this.queueConfiguration(\n \"updateFindMatchesCount\",\n true,\n \"enable-update-find-matches-count\",\n );\n }\n if (this.onMetadataLoaded) {\n this.queueConfiguration(\"metadataLoaded\", true, \"enable-metadata-loaded\");\n }\n if (this.onOutlineLoaded) {\n this.queueConfiguration(\"outlineLoaded\", true, \"enable-outline-loaded\");\n }\n if (this.onPageRendered) {\n this.queueConfiguration(\"pageRendered\", true, \"enable-page-rendered\");\n }\n\n // New high-value events\n if (this.onAnnotationLayerRendered) {\n this.queueConfiguration(\n \"annotationLayerRendered\",\n true,\n \"enable-annotation-layer-rendered\",\n );\n }\n if (this.onBookmarkClick) {\n this.queueConfiguration(\"bookmarkClick\", true, \"enable-bookmark-click\");\n }\n if (this.onIdle) {\n this.queueConfiguration(\"idle\", true, \"enable-idle\");\n }\n\n // Note: Auto-actions are now queued when the document loads, not during component initialization\n // This ensures they use the current property values at the time of document load\n }\n\n private queueAutoActionsForDocumentLoad(): void {\n // Use universal dispatcher for auto-actions\n if (this.downloadOnLoad === true) {\n this.dispatchAction(\"trigger-download\", true, \"initial-load\");\n }\n\n if (this.showLastPageOnLoad === true) {\n this.dispatchAction(\"go-to-last-page\", true, \"initial-load\");\n }\n\n // Auto-print is handled in pagesLoadedHandler for timing reasons\n }\n\n private queueConfiguration(\n propertyName: string,\n value: any,\n action: string,\n ): void {\n // Use universal dispatcher for all configuration actions\n this.dispatchAction(action, value, \"initial-load\");\n }\n\n public refresh(): void {\n // Needs to be invoked for external window or when needs to reload pdf\n\n // Clean up existing event listeners\n ComponentUtils.cleanupEventHandlers(this);\n \n // Clear the action queue to ensure clean state\n if (this.actionQueueManager) {\n this.actionQueueManager.clearQueues();\n }\n \n // Reset PostMessage readiness state\n this.isPostMessageReady = false;\n this.postMessageReadiness = 0;\n this.pendingInitialConfig = true;\n this.initialConfigQueued = false; // Reset initial config flag\n \n // Reload the PDF - this will trigger queueAllConfigurations() when PostMessage API is ready\n this.loadPdf();\n }\n\n // Public method for external control messages\n public sendViewerControlMessage(action: string, payload: any): Promise<any> {\n return this.sendControlMessage(action, payload);\n }\n\n // #region Public Methods for On-Demand Actions\n public triggerDownload(): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\n return this.dispatchAction(\"trigger-download\", true, \"user-interaction\");\n }\n\n public triggerPrint(): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\n return this.dispatchAction(\"trigger-print\", true, \"user-interaction\");\n }\n\n public setPage(page: number): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\n return this.dispatchAction(\"set-page\", page, \"user-interaction\");\n }\n\n public setZoom(zoom: string): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\n return this.dispatchAction(\"set-zoom\", zoom, \"user-interaction\");\n }\n\n public goToLastPage(): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\n return this.dispatchAction(\"go-to-last-page\", true, \"user-interaction\");\n }\n\n public setCursor(cursor: string): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions\n return this.dispatchAction(\"set-cursor\", cursor, \"user-interaction\");\n }\n\n public setScroll(scroll: string): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions\n return this.dispatchAction(\"set-scroll\", scroll, \"user-interaction\");\n }\n\n public setSpread(spread: string): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions\n return this.dispatchAction(\"set-spread\", spread, \"user-interaction\");\n }\n\n public triggerRotation(\n direction: \"cw\" | \"ccw\",\n ): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions\n const action =\n direction === \"cw\" ? \"trigger-rotate-cw\" : \"trigger-rotate-ccw\";\n return this.dispatchAction(action, true, \"user-interaction\");\n }\n\n public goToPage(page: number): Promise<ActionExecutionResult> {\n // Alias for setPage for backward compatibility\n return this.setPage(page);\n }\n // #endregion\n\n // Action queue management methods\n public getActionStatus(\n actionId: string,\n ): \"pending\" | \"executing\" | \"completed\" | \"failed\" | \"not-found\" {\n if (!this.actionQueueManager) {\n return \"not-found\";\n }\n return this.actionQueueManager.getActionStatus(actionId);\n }\n\n public getQueueStatus(): { queuedActions: number; executedActions: number } {\n if (!this.actionQueueManager) {\n return {\n queuedActions: 0,\n executedActions: 0,\n };\n }\n return this.actionQueueManager.getQueueStatus();\n }\n\n public clearActionQueue(): void {\n if (this.actionQueueManager) {\n this.actionQueueManager.clearQueues();\n }\n }\n\n /**\n * Enable or disable URL validation security feature\n * When enabled, prevents users from modifying the file parameter in the viewer URL\n * @param enabled - Whether to enable URL validation (default: true)\n * @returns Promise<ActionExecutionResult>\n */\n public setUrlValidation(enabled: boolean = true): Promise<ActionExecutionResult> {\n return this.dispatchAction(\"set-url-validation\", enabled, \"user-interaction\");\n }\n\n /**\n * Dismiss the security warning\n */\n public dismissSecurityWarning(): void {\n this.securityWarning = null;\n }\n // #endregion\n\n // #region PDF Loading and URL Handling\n private loadPdf(): void {\n if (!this.validatePdfSource()) return;\n\n // Show spinner immediately when PDF loading starts (Issue #275)\n this.isLoading = true;\n this.hasError = false;\n this.currentErrorMessage = \"\";\n\n this.setupExternalWindow();\n const fileUrl = this.createFileUrl();\n const viewerUrl = this.buildViewerUrl(fileUrl);\n this.navigateToViewer(viewerUrl);\n }\n\n private validatePdfSource(): boolean {\n return !!this._src;\n }\n\n private setupExternalWindow(): void {\n if (!this.externalWindow) return;\n\n if (typeof this.viewerTab === \"undefined\" || this.viewerTab.closed) {\n this.viewerTab = window.open(\n \"\",\n this.target,\n this.externalWindowOptions || \"\",\n );\n if (this.viewerTab == null) {\n if (this.diagnosticLogs) {\n console.error(\n \"ng2-pdfjs-viewer: For 'externalWindow = true'. i.e opening in new tab to work, pop-ups should be enabled.\",\n );\n }\n return;\n }\n\n if (this.showSpinner) {\n this.renderLoadingSpinner();\n }\n }\n }\n\n private renderLoadingSpinner(): void {\n this.viewerTab.document.write(`\n <style>\n .loader {\n position: fixed;\n left: 40%;\n top: 40%;\n border: 16px solid #f3f3f3;\n border-radius: 50%;\n border-top: 16px solid #3498db;\n width: 120px;\n height: 120px;\n animation: spin 2s linear infinite;\n }\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n </style>\n <div class=\"loader\"></div>\n `);\n }\n\n private createFileUrl(): string {\n this.relaseUrl?.();\n\n if (this._src instanceof Blob) {\n const url = URL.createObjectURL(this._src);\n this.relaseUrl = () => URL.revokeObjectURL(url);\n return encodeURIComponent(url);\n } else if (this._src instanceof Uint8Array) {\n let blob = new Blob([this._src], { type: \"application/pdf\" });\n const url = URL.createObjectURL(blob);\n this.relaseUrl = () => URL.revokeObjectURL(url);\n return encodeURIComponent(url);\n } else {\n return this._src;\n }\n }\n\n private buildViewerUrl(fileUrl: string): string {\n let viewerUrl = this.getBaseViewerUrl();\n viewerUrl = this.addFileParameter(viewerUrl, fileUrl);\n viewerUrl = this.addViewerIdParameter(viewerUrl);\n viewerUrl = this.addCacheBustingIfNeeded(viewerUrl);\n\n return viewerUrl;\n }\n\n private getBaseViewerUrl(): string {\n return this.viewerFolder\n ? `${this.viewerFolder}/web/viewer.html`\n : `assets/pdfjs/web/viewer.html`;\n }\n\n private addFileParameter(viewerUrl: string, fileUrl: string): string {\n return `${viewerUrl}?file=${fileUrl}`;\n }\n\n private addViewerIdParameter(viewerUrl: string): string {\n return typeof this.viewerId !== \"undefined\"\n ? `${viewerUrl}&viewerId=${this.viewerId}`\n : viewerUrl;\n }\n\n private addCacheBustingIfNeeded(viewerUrl: string): string {\n if (this.isDevelopmentMode()) {\n const cacheBuster = Date.now();\n\n return `${viewerUrl}&_t=${cacheBuster}`;\n } else {\n return viewerUrl;\n }\n }\n\n private isDevelopmentMode(): boolean {\n return (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\" ||\n window.location.port === \"4200\" ||\n window.location.href.includes(\"localhost:4200\")\n );\n }\n\n private navigateToViewer(viewerUrl: string): void {\n if (this.externalWindow) {\n this.viewerTab.location.href = viewerUrl;\n } else {\n this.iframe.nativeElement.contentWindow.location.replace(viewerUrl);\n }\n \n if (this.diagnosticLogs) {\n this.logViewerConfiguration(viewerUrl);\n }\n }\n\n private logViewerConfiguration(viewerUrl: string): void {\n console.debug(`PdfJsViewer: Minimal URL configuration:\n pdfSrc = ${this.pdfSrc}\n externalWindow = ${this.externalWindow}\n viewerFolder = ${this.viewerFolder}\n viewerId = ${this.viewerId}\n finalUrl = ${viewerUrl}\n \n All other configurations handled via PostMessage system:\n showOpenFile = ${this.showOpenFile}\n showDownload = ${this.showDownload}\n showViewBookmark = ${this.showViewBookmark}\n showPrint = ${this.showPrint}\n showFullScreen = ${this.showFullScreen}\n showFind = ${this.showFind}\n cursor = ${this.cursor}\n scroll = ${this.scroll}\n spread = ${this.spread}\n page = ${this.page}\n zoom = ${this.zoom}\n namedDest = ${this.namedDest}\n pageMode = ${this.pageMode}\n errorOverride = ${this.errorOverride}\n errorAppend = ${this.errorAppend}\n errorMessage = ${this.errorMessage}\n locale = ${this.locale}\n useOnlyCssZoom = ${this.useOnlyCssZoom}\n \n Auto-actions (handled by action queue):\n downloadOnLoad = ${this.downloadOnLoad}\n printOnLoad = ${this.printOnLoad}\n showLastPageOnLoad = ${this.showLastPageOnLoad}\n `);\n }\n // #endregion\n\n // #region Two-Way Binding Helper Methods\n private applyZoomToViewer(zoom: string): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"set-zoom\", zoom, \"property-change\");\n }\n\n private applyRotationToViewer(rotation: number): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"set-rotation\", rotation, \"property-change\");\n }\n\n private applyCursorToViewer(cursor: string): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"set-cursor\", cursor, \"property-change\");\n }\n\n private applyScrollToViewer(scroll: string): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"set-scroll\", scroll, \"property-change\");\n }\n\n private applySpreadToViewer(spread: string): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"set-spread\", spread, \"property-change\");\n }\n\n private applyPageModeToViewer(pageMode: string): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"update-page-mode\", pageMode, \"property-change\");\n }\n // #endregion\n\n // Universal Action Dispatcher - ALL actions go through readiness-based queuing\n private dispatchAction(\n action: string,\n payload: any,\n source:\n | \"initial-load\"\n | \"property-change\"\n | \"user-interaction\" = \"property-change\",\n ): Promise<ActionExecutionResult> {\n const requiredReadiness = this.getRequiredReadinessLevel(action);\n const actionObj: ViewerAction = {\n id: `${source}-${action}-${Date.now()}`,\n action: action,\n payload: payload,\n };\n\n // Check if we have sufficient readiness to execute immediately\n if (this.hasRequiredReadiness(requiredReadiness)) {\n return this.actionQueueManager.executeAction(actionObj);\n } else {\n // Queue action to execute when readiness is achieved\n this.actionQueueManager.queueAction(actionObj, requiredReadiness);\n\n // Return a promise that resolves when the action eventually executes\n return Promise.resolve({\n actionId: actionObj.id,\n success: true,\n timestamp: Date.now(),\n } as ActionExecutionResult);\n }\n }\n\n private getRequiredReadinessLevel(action: string): number {\n // Define readiness requirements for all actions\n const level1Actions = [\n \"set-theme\",\n \"set-primary-color\",\n \"set-background-color\",\n \"set-page-border-color\",\n \"set-toolbar-color\",\n \"set-text-color\",\n \"set-border-radius\",\n \"set-custom-css\",\n ];\n const level3Actions = [\n \"show-download\",\n \"show-print\",\n \"show-fullscreen\",\n \"show-find\",\n \"show-bookmark\",\n \"show-openfile\",\n \"show-annotations\",\n \"set-error-message\",\n \"set-error-override\",\n \"set-error-append\",\n \"set-css-zoom\",\n // DOM visibility toggles\n \"show-toolbar-left\",\n \"show-toolbar-middle\",\n \"show-toolbar-right\",\n \"show-secondary-toolbar-toggle\",\n \"show-sidebar\",\n \"show-sidebar-left\",\n \"show-sidebar-right\",\n ];\n const level4Actions = [\n \"set-cursor\",\n \"set-scroll\",\n \"set-spread\",\n \"set-zoom\",\n \"update-page-mode\",\n // Layout actions require components ready to measure\n \"set-toolbar-density\",\n \"set-sidebar-width\",\n \"set-toolbar-position\",\n \"set-sidebar-position\",\n \"set-responsive-breakpoint\",\n ];\n const level5Actions = [\n \"set-page\",\n \"set-rotation\",\n \"go-to-last-page\",\n \"go-to-named-dest\",\n \"trigger-download\",\n \"trigger-print\",\n \"trigger-rotate-cw\",\n \"trigger-rotate-ccw\",\n ];\n\n if (level1Actions.includes(action)) return 1; // VIEWER_LOADED - DOM access only\n if (level3Actions.includes(action)) return 3; // EVENTBUS_READY\n if (level4Actions.includes(action)) return 4; // COMPONENTS_READY\n if (level5Actions.includes(action)) return 5; // DOCUMENT_LOADED\n return 3; // Default to EVENTBUS_READY\n }\n\n private hasRequiredReadiness(requiredLevel: number): boolean {\n if (!this.isPostMessageReady) return false;\n if (requiredLevel === 5 && !this.actionQueueManager?.isDocumentLoaded)\n return false;\n return this.postMessageReadiness >= requiredLevel;\n }\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { PdfJsViewerComponent } from \"./ng2-pdfjs-viewer.component\";\n\n@NgModule({\n imports: [CommonModule],\n declarations: [PdfJsViewerComponent],\n exports: [PdfJsViewerComponent],\n})\nexport class PdfJsViewerModule {\n static forRoot(): ModuleWithProviders<PdfJsViewerModule> {\n return {\n ngModule: PdfJsViewerModule,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng2-pdfjs-viewer.mjs","sources":["../../src/managers/ActionQueueManager.ts","../../src/utils/PropertyTransformers.ts","../../src/utils/ComponentUtils.ts","../../src/utils/ChangeOriginTracker.ts","../../src/ng2-pdfjs-viewer.component.ts","../../src/ng2-pdfjs-viewer.module.ts","../../ng2-pdfjs-viewer.ts"],"sourcesContent":["import { ViewerAction, ActionExecutionResult } from \"../interfaces/ViewerTypes\";\r\n\r\n// Simplified Action Queue Manager - Single queue with readiness-based execution\r\nexport class ActionQueueManager {\r\n private actionQueue: Array<{ action: ViewerAction; readinessLevel: number }> =\r\n [];\r\n private executedActions: Map<string, ActionExecutionResult> = new Map();\r\n public isDocumentLoaded = false;\r\n private isPostMessageReady = false;\r\n private postMessageReadiness = 0;\r\n private diagnosticLogs = false;\r\n private postMessageExecutor?: (action: string, payload: any) => Promise<any>;\r\n\r\n constructor(diagnosticLogs = false) {\r\n this.diagnosticLogs = diagnosticLogs;\r\n }\r\n\r\n setDiagnosticLogs(enabled: boolean): void {\r\n this.diagnosticLogs = enabled;\r\n }\r\n\r\n setPostMessageReady(ready: boolean, readiness: number = 0): void {\r\n this.isPostMessageReady = ready;\r\n this.postMessageReadiness = readiness;\r\n\r\n if (ready) {\r\n this.processQueuedActions();\r\n }\r\n }\r\n\r\n updateReadiness(readiness: number): void {\r\n if (this.postMessageReadiness !== readiness) {\r\n this.postMessageReadiness = readiness;\r\n }\r\n }\r\n\r\n // Simplified queue management - single queue with readiness levels\r\n queueAction(action: ViewerAction, readinessLevel: number): void {\r\n this.actionQueue.push({ action, readinessLevel });\r\n }\r\n\r\n // Legacy methods for backward compatibility - now just delegate to main queue\r\n queueImmediateAction(action: ViewerAction): void {\r\n this.queueAction(action, 3);\r\n }\r\n\r\n queueViewerReadyAction(action: ViewerAction): void {\r\n this.queueAction(action, 4);\r\n }\r\n\r\n queueDocumentLoadedAction(action: ViewerAction): void {\r\n this.queueAction(action, 5);\r\n }\r\n\r\n queueOnDemandAction(action: ViewerAction): Promise<ActionExecutionResult> {\r\n return this.executeAction(action);\r\n }\r\n\r\n onDocumentLoaded(): void {\r\n this.isDocumentLoaded = true;\r\n this.processQueuedActions();\r\n }\r\n\r\n // Process all queued actions that now meet readiness requirements\r\n public processQueuedActions(): void {\r\n const executableActions = this.actionQueue.filter((item) => {\r\n const canExecute =\r\n this.postMessageReadiness >= item.readinessLevel &&\r\n (item.readinessLevel < 5 || this.isDocumentLoaded);\r\n\r\n return canExecute;\r\n });\r\n\r\n // Remove executable actions from queue\r\n this.actionQueue = this.actionQueue.filter((item) => {\r\n return !(\r\n this.postMessageReadiness >= item.readinessLevel &&\r\n (item.readinessLevel < 5 || this.isDocumentLoaded)\r\n );\r\n });\r\n\r\n // Execute all ready actions\r\n executableActions.forEach((item) => {\r\n this.executeAction(item.action);\r\n });\r\n }\r\n\r\n public async executeAction(\r\n action: ViewerAction,\r\n ): Promise<ActionExecutionResult> {\r\n const result: ActionExecutionResult = {\r\n actionId: action.id,\r\n success: false,\r\n timestamp: Date.now(),\r\n };\r\n\r\n try {\r\n if (action.condition && !action.condition(null)) {\r\n result.error = \"Condition not met\";\r\n this.executedActions.set(action.id, result);\r\n return result;\r\n }\r\n\r\n const success = await this.executeActionViaPostMessage(action);\r\n result.success = success;\r\n\r\n // If action has a resolver (from user interaction), call it\r\n if (action.resolver) {\r\n action.resolver(result);\r\n }\r\n } catch (error) {\r\n result.error = error instanceof Error ? error.message : String(error);\r\n if (this.diagnosticLogs) {\r\n console.error(\r\n `🔍 ActionQueueManager: Error executing action ${action.action}:`,\r\n error,\r\n );\r\n }\r\n\r\n // If action has a resolver (from user interaction), call it with error\r\n if (action.resolver) {\r\n action.resolver(result);\r\n }\r\n }\r\n\r\n this.executedActions.set(action.id, result);\r\n return result;\r\n }\r\n\r\n private async executeActionViaPostMessage(\r\n action: ViewerAction,\r\n ): Promise<boolean> {\r\n if (!this.postMessageExecutor) {\r\n throw new Error(\"PostMessage executor not set\");\r\n }\r\n\r\n await this.postMessageExecutor(action.action, action.payload);\r\n return true;\r\n }\r\n\r\n setPostMessageExecutor(\r\n executor: (action: string, payload: any) => Promise<any>,\r\n ): void {\r\n this.postMessageExecutor = executor;\r\n }\r\n\r\n getActionStatus(\r\n actionId: string,\r\n ): \"pending\" | \"executing\" | \"completed\" | \"failed\" | \"not-found\" {\r\n const result = this.executedActions.get(actionId);\r\n if (!result) {\r\n const inQueue = this.actionQueue.some(\r\n (item) => item.action.id === actionId,\r\n );\r\n return inQueue ? \"pending\" : \"not-found\";\r\n }\r\n\r\n return result.success ? \"completed\" : \"failed\";\r\n }\r\n\r\n clearQueues(): void {\r\n this.actionQueue = [];\r\n this.executedActions.clear();\r\n }\r\n\r\n getQueueStatus(): { queuedActions: number; executedActions: number } {\r\n return {\r\n queuedActions: this.actionQueue.length,\r\n executedActions: this.executedActions.size,\r\n };\r\n }\r\n}\r\n","// Property transformation utilities\r\nexport class PropertyTransformers {\r\n static transformZoom = {\r\n toViewer: (zoom: string): string => {\r\n if (!zoom) return \"auto\";\r\n\r\n // Convert common zoom values to PDF.js format\r\n const zoomMappings: { [key: string]: string } = {\r\n auto: \"auto\",\r\n \"page-fit\": \"page-fit\",\r\n \"page-width\": \"page-width\",\r\n \"page-actual\": \"page-actual\",\r\n };\r\n\r\n return zoomMappings[zoom.toLowerCase()] || zoom;\r\n },\r\n\r\n fromViewer: (viewerZoom: any): string => {\r\n if (typeof viewerZoom === \"string\") return viewerZoom;\r\n if (typeof viewerZoom === \"number\") {\r\n // Convert numeric zoom to string without % to avoid feedback loop\r\n // PDF.js accepts numeric strings like \"1.25\" directly\r\n return viewerZoom.toString();\r\n }\r\n return \"auto\";\r\n },\r\n };\r\n\r\n static transformRotation = {\r\n toViewer: (rotation: number): number => {\r\n // Normalize rotation to 0, 90, 180, 270\r\n return ((rotation % 360) + 360) % 360;\r\n },\r\n\r\n fromViewer: (viewerRotation: any): number => {\r\n return typeof viewerRotation === \"number\" ? viewerRotation : 0;\r\n },\r\n };\r\n\r\n static transformCursor = {\r\n toViewer: (cursor: string): string => {\r\n if (!cursor) return \"select\";\r\n\r\n const cursorMappings: { [key: string]: string } = {\r\n select: \"select\",\r\n hand: \"hand\",\r\n zoom: \"zoom\",\r\n };\r\n\r\n return cursorMappings[cursor.toLowerCase()] || \"select\";\r\n },\r\n\r\n fromViewer: (viewerCursor: any): string => {\r\n return typeof viewerCursor === \"string\" ? viewerCursor : \"select\";\r\n },\r\n };\r\n\r\n static transformScroll = {\r\n toViewer: (scroll: string): string => {\r\n if (!scroll) return \"vertical\";\r\n\r\n const scrollMappings: { [key: string]: string } = {\r\n vertical: \"vertical\",\r\n horizontal: \"horizontal\",\r\n wrapped: \"wrapped\",\r\n page: \"page\",\r\n };\r\n\r\n return scrollMappings[scroll.toLowerCase()] || \"vertical\";\r\n },\r\n\r\n fromViewer: (viewerScroll: any): string => {\r\n const scrollModes = [\"vertical\", \"horizontal\", \"wrapped\", \"page\"];\r\n if (typeof viewerScroll === \"number\") {\r\n return scrollModes[viewerScroll] || \"vertical\";\r\n }\r\n return typeof viewerScroll === \"string\" ? viewerScroll : \"vertical\";\r\n },\r\n };\r\n\r\n static transformSpread = {\r\n toViewer: (spread: string): string => {\r\n if (!spread) return \"none\";\r\n\r\n const spreadMappings: { [key: string]: string } = {\r\n none: \"none\",\r\n odd: \"odd\",\r\n even: \"even\",\r\n };\r\n\r\n return spreadMappings[spread.toLowerCase()] || \"none\";\r\n },\r\n\r\n fromViewer: (viewerSpread: any): string => {\r\n const spreadModes = [\"none\", \"odd\", \"even\"];\r\n if (typeof viewerSpread === \"number\") {\r\n return spreadModes[viewerSpread] || \"none\";\r\n }\r\n return typeof viewerSpread === \"string\" ? viewerSpread : \"none\";\r\n },\r\n };\r\n\r\n static transformPageMode = {\r\n toViewer: (pageMode: string): string => {\r\n if (!pageMode) return \"none\";\r\n\r\n const pageModeMapping: { [key: string]: string } = {\r\n none: \"none\",\r\n thumbs: \"thumbs\",\r\n bookmarks: \"bookmarks\",\r\n attachments: \"attachments\",\r\n };\r\n\r\n return pageModeMapping[pageMode.toLowerCase()] || \"none\";\r\n },\r\n\r\n fromViewer: (viewerPageMode: any): string => {\r\n return typeof viewerPageMode === \"string\" ? viewerPageMode : \"none\";\r\n },\r\n };\r\n}\r\n","// Common utility functions for the PDF viewer component\r\nexport class ComponentUtils {\r\n // Common PostMessage action mapping\r\n static getActionForProperty(propertyName: string): string | null {\r\n const propertyActionMap: { [key: string]: string } = {\r\n // Control visibility\r\n showOpenFile: \"show-openfile\",\r\n showDownload: \"show-download\",\r\n showPrint: \"show-print\",\r\n showFullScreen: \"show-fullscreen\",\r\n showFind: \"show-find\",\r\n showViewBookmark: \"show-bookmark\",\r\n showAnnotations: \"show-annotations\",\r\n\r\n // Mode controls\r\n cursor: \"set-cursor\",\r\n scroll: \"set-scroll\",\r\n spread: \"set-spread\",\r\n zoom: \"set-zoom\",\r\n pageMode: \"update-page-mode\",\r\n\r\n // Navigation\r\n page: \"set-page\",\r\n rotation: \"set-rotation\",\r\n namedDest: \"go-to-named-dest\",\r\n\r\n // Auto-actions\r\n downloadOnLoad: \"trigger-download\",\r\n printOnLoad: \"trigger-print\",\r\n showLastPageOnLoad: \"go-to-last-page\",\r\n rotateCW: \"trigger-rotate-cw\",\r\n rotateCCW: \"trigger-rotate-ccw\",\r\n\r\n // Error handling\r\n errorMessage: \"set-error-message\",\r\n errorOverride: \"set-error-override\",\r\n errorAppend: \"set-error-append\",\r\n\r\n // Configuration\r\n locale: \"set-locale\",\r\n useOnlyCssZoom: \"set-css-zoom\",\r\n downloadFileName: \"set-download-filename\",\r\n\r\n // Theme & Visual Customization\r\n theme: \"set-theme\",\r\n primaryColor: \"set-primary-color\",\r\n backgroundColor: \"set-background-color\",\r\n pageBorderColor: \"set-page-border-color\",\r\n pageSpacing: \"set-page-spacing\",\r\n toolbarColor: \"set-toolbar-color\",\r\n textColor: \"set-text-color\",\r\n borderRadius: \"set-border-radius\",\r\n customCSS: \"set-custom-css\",\r\n\r\n // Configuration\r\n diagnosticLogs: \"set-diagnostic-logs\",\r\n };\r\n\r\n // Toolbar/Sidebar group visibility\r\n const groupVisibilityMap: { [key: string]: string } = {\r\n showToolbarLeft: \"show-toolbar-left\",\r\n showToolbarMiddle: \"show-toolbar-middle\",\r\n showToolbarRight: \"show-toolbar-right\",\r\n showSecondaryToolbarToggle: \"show-secondary-toolbar-toggle\",\r\n showSidebar: \"show-sidebar\",\r\n showSidebarLeft: \"show-sidebar-left\",\r\n showSidebarRight: \"show-sidebar-right\",\r\n };\r\n\r\n // Layout & responsive customization\r\n const layoutMap: { [key: string]: string } = {\r\n toolbarDensity: \"set-toolbar-density\",\r\n sidebarWidth: \"set-sidebar-width\",\r\n toolbarPosition: \"set-toolbar-position\",\r\n sidebarPosition: \"set-sidebar-position\",\r\n responsiveBreakpoint: \"set-responsive-breakpoint\",\r\n };\r\n\r\n return (\r\n propertyActionMap[propertyName] ||\r\n groupVisibilityMap[propertyName] ||\r\n layoutMap[propertyName] ||\r\n null\r\n );\r\n }\r\n\r\n // Event handler cleanup utility\r\n static cleanupEventHandlers(component: any): void {\r\n // Clean up webviewerloaded handler\r\n if ((component as any)._webviewerLoadedHandler) {\r\n document.removeEventListener(\r\n \"webviewerloaded\",\r\n (component as any)._webviewerLoadedHandler,\r\n );\r\n }\r\n\r\n // Clean up PDF.js event handlers\r\n if ((component as any)._pdfEventHandlers) {\r\n const handlers = (component as any)._pdfEventHandlers;\r\n const eventBus = component.PDFViewerApplication?.eventBus;\r\n\r\n if (eventBus) {\r\n Object.keys(handlers).forEach((eventName) => {\r\n eventBus.off(eventName, handlers[eventName]);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","// Change origin tracking for two-way binding circular update prevention\r\nexport class ChangeOriginTracker {\r\n private userInitiatedChanges = new Set<string>();\r\n private programmaticChanges = new Set<string>();\r\n\r\n markUserInitiated(property: string): void {\r\n this.userInitiatedChanges.add(property);\r\n setTimeout(() => this.userInitiatedChanges.delete(property), 0);\r\n }\r\n\r\n markProgrammatic(property: string): void {\r\n this.programmaticChanges.add(property);\r\n setTimeout(() => this.programmaticChanges.delete(property), 0);\r\n }\r\n\r\n isUserInitiated(property: string): boolean {\r\n return this.userInitiatedChanges.has(property);\r\n }\r\n\r\n isProgrammatic(property: string): boolean {\r\n return this.programmaticChanges.has(property);\r\n }\r\n}\r\n","import {\n Component,\n Input,\n Output,\n OnInit,\n OnDestroy,\n ViewChild,\n EventEmitter,\n ElementRef,\n OnChanges,\n TemplateRef,\n SimpleChanges,\n AfterViewInit,\n} from \"@angular/core\";\n\n// Import extracted modules\nimport {\n ControlMessage,\n ControlResponse,\n PropertyChangeEvent,\n ViewerAction,\n ActionExecutionResult,\n ChangedPage,\n ChangedScale,\n ChangedRotation,\n ControlVisibilityConfig,\n GroupVisibilityConfig,\n LayoutConfig,\n ToolbarDensity,\n ToolbarPosition,\n SidebarPosition,\n AutoActionConfig,\n ErrorConfig,\n ViewerConfig,\n ThemeConfig,\n DocumentError,\n PagesInfo,\n PresentationMode,\n FindOperation,\n FindMatchesCount,\n DocumentMetadata,\n DocumentOutline,\n PageRenderInfo,\n // New high-value events\n AnnotationLayerRenderEvent,\n BookmarkClick,\n} from \"./interfaces/ViewerTypes\";\nimport { ActionQueueManager } from \"./managers/ActionQueueManager\";\nimport { PropertyTransformers } from \"./utils/PropertyTransformers\";\nimport { ComponentUtils } from \"./utils/ComponentUtils\";\nimport { ChangeOriginTracker } from \"./utils/ChangeOriginTracker\";\n\n@Component({\n selector: \"ng2-pdfjs-viewer\",\n standalone: false,\n styles: [\n `\n /* Main container styling */\n .ng2-pdfjs-viewer-container {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n /* Spinner overlay styling */\n .ng2-pdfjs-loading-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.6);\n backdrop-filter: saturate(120%) blur(1px);\n }\n\n /* Default spinner content styling */\n .ng2-pdfjs-spinner-content {\n text-align: center;\n }\n\n .ng2-pdfjs-spinner-icon {\n display: inline-block;\n width: 40px;\n height: 40px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196F3;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n }\n\n .ng2-pdfjs-spinner-text {\n margin-top: 16px;\n color: #666;\n font-size: 16px;\n }\n\n /* Error overlay styling */\n .ng2-pdfjs-error-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.9);\n backdrop-filter: saturate(120%) blur(1px);\n }\n\n /* Default error content styling */\n .ng2-pdfjs-error-content {\n text-align: center;\n max-width: 400px;\n padding: 20px;\n }\n\n .ng2-pdfjs-error-icon {\n font-size: 48px;\n color: #f44336;\n margin-bottom: 16px;\n }\n\n .ng2-pdfjs-error-title {\n color: #333;\n font-size: 18px;\n font-weight: 500;\n margin-bottom: 8px;\n }\n\n .ng2-pdfjs-error-message {\n color: #666;\n font-size: 14px;\n line-height: 1.4;\n }\n\n /* Default spinner animation */\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n\n /* Iframe border styling */\n .ng2-pdfjs-viewer-iframe {\n border: 0;\n }\n \n /* Dynamic border classes */\n .ng2-pdfjs-viewer-iframe.has-border {\n border: 1px solid #ccc;\n }\n `,\n ],\n template: `\n <div class=\"ng2-pdfjs-viewer-container\">\n <iframe\n [title]=\"iframeTitle || 'PDF document viewer'\"\n [hidden]=\"externalWindow || (!externalWindow && !pdfSrc)\"\n sandbox=\"allow-forms allow-scripts allow-same-origin allow-modals\"\n [class]=\"getIframeClasses()\"\n #iframe\n width=\"100%\"\n height=\"100%\"\n ></iframe>\n\n <div\n class=\"ng2-pdfjs-loading-overlay\"\n *ngIf=\"showSpinner && isLoading && !externalWindow\"\n [ngClass]=\"spinnerClass\"\n >\n <ng-container\n *ngIf=\"customSpinnerTpl; else defaultSpinner\"\n [ngTemplateOutlet]=\"customSpinnerTpl\"\n ></ng-container>\n <ng-template #defaultSpinner>\n <div class=\"ng2-pdfjs-spinner-content\">\n <div class=\"ng2-pdfjs-spinner-icon\"></div>\n <div class=\"ng2-pdfjs-spinner-text\">\n Loading PDF...\n </div>\n </div>\n </ng-template>\n </div>\n\n <div\n class=\"ng2-pdfjs-error-overlay\"\n *ngIf=\"errorOverride && hasError && !externalWindow\"\n [ngClass]=\"errorClass\"\n >\n <ng-container\n *ngIf=\"customErrorTpl; else defaultError\"\n [ngTemplateOutlet]=\"customErrorTpl\"\n [ngTemplateOutletContext]=\"getErrorTemplateData()\"\n ></ng-container>\n <ng-template #defaultError>\n <div class=\"ng2-pdfjs-error-content\">\n <div class=\"ng2-pdfjs-error-icon\">\n ⚠️\n </div>\n <div class=\"ng2-pdfjs-error-title\">\n Error Loading PDF\n </div>\n <div class=\"ng2-pdfjs-error-message\">\n {{ currentErrorMessage }}\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n `,\n})\nexport class PdfJsViewerComponent\n implements OnInit, OnDestroy, OnChanges, AfterViewInit\n{\n // #region Component Properties\n @ViewChild(\"iframe\", { static: true }) iframe: ElementRef;\n\n static lastID = 0;\n @Input() public viewerId =\n `ng2-pdfjs-viewer-ID${++PdfJsViewerComponent.lastID}`;\n\n // #region Event Outputs\n @Output() onBeforePrint: EventEmitter<void> = new EventEmitter();\n @Output() onAfterPrint: EventEmitter<void> = new EventEmitter();\n @Output() onDocumentLoad: EventEmitter<void> = new EventEmitter();\n @Output() onPageChange: EventEmitter<ChangedPage> = new EventEmitter();\n @Output() onScaleChange: EventEmitter<ChangedScale> = new EventEmitter();\n @Output() onRotationChange: EventEmitter<ChangedRotation> =\n new EventEmitter();\n\n // New high-value events for enhanced PDF viewer functionality\n @Output() onDocumentError: EventEmitter<DocumentError> = new EventEmitter();\n @Output() onDocumentInit: EventEmitter<void> = new EventEmitter();\n @Output() onPagesInit: EventEmitter<PagesInfo> = new EventEmitter();\n @Output() onPresentationModeChanged: EventEmitter<PresentationMode> =\n new EventEmitter();\n @Output() onOpenFile: EventEmitter<void> = new EventEmitter();\n @Output() onFind: EventEmitter<FindOperation> = new EventEmitter();\n @Output() onUpdateFindMatchesCount: EventEmitter<FindMatchesCount> =\n new EventEmitter();\n @Output() onMetadataLoaded: EventEmitter<DocumentMetadata> =\n new EventEmitter();\n @Output() onOutlineLoaded: EventEmitter<DocumentOutline> = new EventEmitter();\n @Output() onPageRendered: EventEmitter<PageRenderInfo> = new EventEmitter();\n\n // New high-value events\n @Output()\n onAnnotationLayerRendered: EventEmitter<AnnotationLayerRenderEvent> =\n new EventEmitter();\n @Output() onBookmarkClick: EventEmitter<BookmarkClick> = new EventEmitter();\n @Output() onIdle: EventEmitter<void> = new EventEmitter();\n // #endregion\n\n // #region Basic Configuration Properties\n @Input() public viewerFolder: string;\n @Input() public externalWindow: boolean = false;\n @Input() public target: string = \"_blank\";\n @Input() public showSpinner: boolean = true;\n @Input() public downloadFileName: string;\n @Input() public locale: string;\n @Input() public useOnlyCssZoom: boolean = false;\n @Input() public set diagnosticLogs(value: boolean) {\n this._diagnosticLogs = value;\n // Update action queue manager\n this.actionQueueManager.setDiagnosticLogs(value);\n // Send to wrapper\n this.dispatchAction(\"set-diagnostic-logs\", value, \"property-change\");\n }\n \n public get diagnosticLogs(): boolean {\n return this._diagnosticLogs;\n }\n \n private _diagnosticLogs: boolean = false;\n // #endregion\n\n // #region Control Visibility Properties\n @Input() public showOpenFile: boolean = true;\n @Input() public showAnnotations: boolean = false;\n @Input() public showDownload: boolean = true;\n @Input() public showViewBookmark: boolean = true;\n @Input() public showPrint: boolean = true;\n @Input() public showFullScreen: boolean = true;\n @Input() public showFind: boolean = true;\n // #endregion\n\n // #region Auto-Action Properties\n @Input() public downloadOnLoad: boolean = false;\n @Input() public printOnLoad: boolean = false;\n @Input() public rotateCW: boolean = false;\n @Input() public rotateCCW: boolean = false;\n @Input() public showLastPageOnLoad: boolean = false;\n // #endregion\n\n // #region Navigation Properties\n @Input() public namedDest: string;\n // #endregion\n\n // #region Error Handling Properties\n @Input() public errorOverride: boolean = false;\n @Input() public errorAppend: boolean = true;\n @Input() public errorMessage: string;\n @Input() public urlValidation: boolean = true;\n @Input() public customSecurityTpl: TemplateRef<any>;\n \n // Security warning state\n public securityWarning: { message: string; originalUrl: string; currentUrl: string } | null = null;\n // #endregion\n\n // #region Theme & Visual Customization Properties\n @Input() public theme: \"light\" | \"dark\" | \"auto\" = \"light\";\n @Input() public primaryColor?: string;\n @Input() public backgroundColor?: string;\n @Input() public pageBorderColor?: string;\n @Input() public pageSpacing?: {\n margin?: string;\n spreadMargin?: string;\n border?: string;\n };\n @Input() public toolbarColor?: string;\n @Input() public textColor?: string;\n @Input() public borderRadius?: string;\n @Input() public customCSS?: string;\n @Input() public cspNonce?: string;\n @Input() public iframeTitle?: string; // CSP nonce for customCSS (optional)\n // #endregion\n\n // #region Loading & Spinner Customization\n @Input() public customSpinnerTpl?: TemplateRef<any>;\n @Input() public spinnerClass?: string;\n // #endregion\n\n // #region Error Display Customization\n @Input() public customErrorTpl?: TemplateRef<any>;\n @Input() public errorClass?: string;\n // #endregion\n\n // #region Toolbar/Sidebar Group Visibility\n @Input() public showToolbarLeft: boolean = true;\n @Input() public showToolbarMiddle: boolean = true;\n @Input() public showToolbarRight: boolean = true;\n @Input() public showSecondaryToolbarToggle: boolean = true;\n @Input() public showSidebar: boolean = true;\n @Input() public showSidebarLeft: boolean = true;\n @Input() public showSidebarRight: boolean = true;\n // #endregion\n\n // #region Layout & Responsive Customization\n @Input() public toolbarDensity: ToolbarDensity = \"default\";\n @Input() public sidebarWidth?: string; // e.g., '280px'\n @Input() public toolbarPosition: ToolbarPosition = \"top\";\n @Input() public sidebarPosition: SidebarPosition = \"left\";\n @Input() public responsiveBreakpoint?: string | number;\n // #endregion\n\n // Internal loading state for overlay control\n public isLoading: boolean = true;\n private hasFirstRender: boolean = false;\n\n // Internal error state for error display\n public hasError: boolean = false;\n public currentErrorMessage: string = \"\";\n public errorTemplateData: any = {};\n\n // Helper method to get error template data\n public getErrorTemplateData(): any {\n return {\n errorMessage: this.currentErrorMessage,\n errorClass: this.errorClass,\n ...this.errorTemplateData,\n };\n }\n\n // Helper method to get iframe CSS classes\n public getIframeClasses(): string {\n const classes = ['ng2-pdfjs-viewer-iframe'];\n \n // Add border class if iframeBorder is set and not \"0\"\n if (this.iframeBorder && this.iframeBorder !== \"0\" && this.iframeBorder !== 0) {\n classes.push('has-border');\n }\n \n return classes.join(' ');\n }\n\n\n // Error template button actions\n public reloadViewer(): void {\n this.refresh();\n }\n\n public goBack(): void {\n if (window.history.length > 1) {\n window.history.back();\n } else {\n window.close();\n }\n }\n\n public closeViewer(): void {\n window.close();\n }\n\n // #region Convenience Configuration Setters\n @Input() public set controlVisibility(config: ControlVisibilityConfig) {\n if (config.download !== undefined) this.showDownload = config.download;\n if (config.print !== undefined) this.showPrint = config.print;\n if (config.find !== undefined) this.showFind = config.find;\n if (config.fullScreen !== undefined)\n this.showFullScreen = config.fullScreen;\n if (config.openFile !== undefined) this.showOpenFile = config.openFile;\n if (config.viewBookmark !== undefined)\n this.showViewBookmark = config.viewBookmark;\n if (config.annotations !== undefined)\n this.showAnnotations = config.annotations;\n }\n\n @Input() public set autoActions(config: AutoActionConfig) {\n if (config.downloadOnLoad !== undefined)\n this.downloadOnLoad = config.downloadOnLoad;\n if (config.printOnLoad !== undefined) this.printOnLoad = config.printOnLoad;\n if (config.showLastPageOnLoad !== undefined)\n this.showLastPageOnLoad = config.showLastPageOnLoad;\n if (config.rotateCW !== undefined) this.rotateCW = config.rotateCW;\n if (config.rotateCCW !== undefined) this.rotateCCW = config.rotateCCW;\n }\n\n @Input() public set errorHandling(config: ErrorConfig) {\n if (config.override !== undefined) this.errorOverride = config.override;\n if (config.append !== undefined) this.errorAppend = config.append;\n if (config.message !== undefined) this.errorMessage = config.message;\n }\n\n @Input() public set viewerConfig(config: ViewerConfig) {\n if (config.showSpinner !== undefined) this.showSpinner = config.showSpinner;\n if (config.useOnlyCssZoom !== undefined)\n this.useOnlyCssZoom = config.useOnlyCssZoom;\n if (config.diagnosticLogs !== undefined)\n this.diagnosticLogs = config.diagnosticLogs;\n if (config.locale !== undefined) this.locale = config.locale;\n }\n\n @Input() public set themeConfig(config: ThemeConfig) {\n if (config.theme !== undefined) this.theme = config.theme;\n if (config.primaryColor !== undefined)\n this.primaryColor = config.primaryColor;\n if (config.backgroundColor !== undefined)\n this.backgroundColor = config.backgroundColor;\n if (config.pageBorderColor !== undefined)\n this.pageBorderColor = config.pageBorderColor;\n if (config.pageSpacing !== undefined)\n this.pageSpacing = config.pageSpacing;\n if (config.toolbarColor !== undefined)\n this.toolbarColor = config.toolbarColor;\n if (config.textColor !== undefined) this.textColor = config.textColor;\n if (config.borderRadius !== undefined)\n this.borderRadius = config.borderRadius;\n if (config.customCSS !== undefined) this.customCSS = config.customCSS;\n if (config.cspNonce !== undefined) this.cspNonce = config.cspNonce;\n }\n\n @Input() public set groupVisibility(config: GroupVisibilityConfig) {\n if (config.toolbarLeft !== undefined)\n this.showToolbarLeft = config.toolbarLeft;\n if (config.toolbarMiddle !== undefined)\n this.showToolbarMiddle = config.toolbarMiddle;\n if (config.toolbarRight !== undefined)\n this.showToolbarRight = config.toolbarRight;\n if (config.secondaryToolbarToggle !== undefined)\n this.showSecondaryToolbarToggle = config.secondaryToolbarToggle;\n if (config.sidebar !== undefined) this.showSidebar = config.sidebar;\n if (config.sidebarLeft !== undefined)\n this.showSidebarLeft = config.sidebarLeft;\n if (config.sidebarRight !== undefined)\n this.showSidebarRight = config.sidebarRight;\n }\n\n @Input() public set layoutConfig(config: LayoutConfig) {\n if (config.toolbarDensity !== undefined)\n this.toolbarDensity = config.toolbarDensity;\n if (config.sidebarWidth !== undefined)\n this.sidebarWidth = config.sidebarWidth;\n if (config.toolbarPosition !== undefined)\n this.toolbarPosition = config.toolbarPosition;\n if (config.sidebarPosition !== undefined)\n this.sidebarPosition = config.sidebarPosition;\n if (config.responsiveBreakpoint !== undefined)\n this.responsiveBreakpoint = config.responsiveBreakpoint;\n }\n // #endregion\n\n // #region Helper function for deprecated properties\n private setDeprecatedProperty(\n oldName: string,\n newProperty: string,\n value: any,\n ): void {\n if (this.diagnosticLogs) {\n console.warn(\n `⚠️ DEPRECATED: Property \"${oldName}\" is deprecated. Use \"${newProperty}\" instead.`,\n );\n }\n (this as any)[newProperty] = value;\n }\n // #endregion\n\n // #region Deprecated Properties (Simplified)\n /** @deprecated Use `downloadOnLoad` instead. This property will be removed in a future version. */\n @Input() public set startDownload(value: boolean) {\n this.setDeprecatedProperty(\"startDownload\", \"downloadOnLoad\", value);\n }\n\n /** @deprecated Use `printOnLoad` instead. This property will be removed in a future version. */\n @Input() public set startPrint(value: boolean) {\n this.setDeprecatedProperty(\"startPrint\", \"printOnLoad\", value);\n }\n\n /** @deprecated Use `showOpenFile` instead. This property will be removed in a future version. */\n @Input() public set openFile(value: boolean) {\n this.setDeprecatedProperty(\"openFile\", \"showOpenFile\", value);\n }\n\n /** @deprecated Use `showDownload` instead. This property will be removed in a future version. */\n @Input() public set download(value: boolean) {\n this.setDeprecatedProperty(\"download\", \"showDownload\", value);\n }\n\n /** @deprecated Use `showPrint` instead. This property will be removed in a future version. */\n @Input() public set print(value: boolean) {\n this.setDeprecatedProperty(\"print\", \"showPrint\", value);\n }\n\n /** @deprecated Use `showFullScreen` instead. This property will be removed in a future version. */\n @Input() public set fullScreen(value: boolean) {\n this.setDeprecatedProperty(\"fullScreen\", \"showFullScreen\", value);\n }\n\n /** @deprecated Use `showFind` instead. This property will be removed in a future version. */\n @Input() public set find(value: boolean) {\n this.setDeprecatedProperty(\"find\", \"showFind\", value);\n }\n\n /** @deprecated Use `showViewBookmark` instead. This property will be removed in a future version. */\n @Input() public set viewBookmark(value: boolean) {\n this.setDeprecatedProperty(\"viewBookmark\", \"showViewBookmark\", value);\n }\n\n /** @deprecated Use `showLastPageOnLoad` instead. This property will be removed in a future version. */\n @Input() public set lastPage(value: boolean) {\n this.setDeprecatedProperty(\"lastPage\", \"showLastPageOnLoad\", value);\n }\n // #endregion\n\n // #region External Window Properties\n @Input() public externalWindowOptions: string;\n public viewerTab: any;\n // #endregion\n\n // #region Security Properties\n // iframe sandbox is static for security and Angular compliance\n // #endregion\n\n // #region iframe Properties\n @Input() public iframeBorder: string | number = \"0\";\n // #endregion\n\n // #region Private Properties\n private _src: string | Blob | Uint8Array;\n private _page: number;\n private isPostMessageReady = false;\n private postMessageReadiness = 0;\n private pendingInitialConfig = true;\n private initialConfigQueued = false;\n private actionQueueManager: ActionQueueManager = new ActionQueueManager(this._diagnosticLogs);\n private changeOriginTracker = new ChangeOriginTracker();\n private messageIdCounter = 0;\n private pendingMessages = new Map<\n string,\n { resolve: Function; reject: Function }\n >();\n private pendingChanges: SimpleChanges[] = [];\n private relaseUrl?: () => void;\n // #endregion\n\n // #region Two-Way Binding Properties\n // Private backing fields for two-way binding properties\n private _zoom: string = \"auto\";\n private _rotation: number = 0;\n private _cursor: string = \"select\";\n private _scroll: string = \"vertical\";\n private _spread: string = \"none\";\n private _pageMode: string = \"none\";\n\n // Two-way binding Output events\n @Output() zoomChange = new EventEmitter<string>();\n\n @Output() cursorChange = new EventEmitter<string>();\n @Output() scrollChange = new EventEmitter<string>();\n @Output() spreadChange = new EventEmitter<string>();\n @Output() pageModeChange = new EventEmitter<string>();\n\n /**\n * Two-way binding for zoom level\n * Supports: auto, page-fit, page-width, page-actual, percentage values (e.g., \"150%\")\n */\n @Input()\n get zoom(): string {\n return this._zoom;\n }\n set zoom(value: string) {\n const normalizedValue = PropertyTransformers.transformZoom.toViewer(value);\n if (this._zoom !== normalizedValue) {\n this.changeOriginTracker.markProgrammatic(\"zoom\");\n this._zoom = normalizedValue;\n this.applyZoomToViewer(this._zoom);\n this.zoomChange.emit(this._zoom);\n }\n }\n\n /**\n * One-way binding for document rotation\n * Supports: 0, 90, 180, 270 degrees\n */\n @Input()\n set rotation(value: number) {\n const normalizedValue =\n PropertyTransformers.transformRotation.toViewer(value);\n if (this._rotation !== normalizedValue) {\n this._rotation = normalizedValue;\n this.applyRotationToViewer(this._rotation);\n }\n }\n\n get rotation(): number {\n return this._rotation;\n }\n\n /**\n * Two-way binding for cursor mode\n * Supports: select, hand, zoom\n */\n @Input()\n get cursor(): string {\n return this._cursor;\n }\n set cursor(value: string) {\n const normalizedValue =\n PropertyTransformers.transformCursor.toViewer(value);\n if (this._cursor !== normalizedValue) {\n this.changeOriginTracker.markProgrammatic(\"cursor\");\n this._cursor = normalizedValue;\n this.applyCursorToViewer(this._cursor);\n this.cursorChange.emit(this._cursor);\n }\n }\n\n /**\n * Two-way binding for scroll mode\n * Supports: vertical, horizontal, wrapped, page\n */\n @Input()\n get scroll(): string {\n return this._scroll;\n }\n set scroll(value: string) {\n const normalizedValue =\n PropertyTransformers.transformScroll.toViewer(value);\n if (this._scroll !== normalizedValue) {\n this.changeOriginTracker.markProgrammatic(\"scroll\");\n this._scroll = normalizedValue;\n this.applyScrollToViewer(this._scroll);\n this.scrollChange.emit(this._scroll);\n }\n }\n\n /**\n * Two-way binding for spread mode\n * Supports: none, odd, even\n */\n @Input()\n get spread(): string {\n return this._spread;\n }\n set spread(value: string) {\n const normalizedValue =\n PropertyTransformers.transformSpread.toViewer(value);\n if (this._spread !== normalizedValue) {\n this.changeOriginTracker.markProgrammatic(\"spread\");\n this._spread = normalizedValue;\n this.applySpreadToViewer(this._spread);\n this.spreadChange.emit(this._spread);\n }\n }\n\n /**\n * Two-way binding for page mode (sidebar state)\n * Supports: none, thumbs, bookmarks, attachments\n */\n @Input()\n get pageMode(): string {\n return this._pageMode;\n }\n set pageMode(value: string) {\n const normalizedValue =\n PropertyTransformers.transformPageMode.toViewer(value);\n if (this._pageMode !== normalizedValue) {\n this.changeOriginTracker.markProgrammatic(\"pageMode\");\n this._pageMode = normalizedValue;\n this.applyPageModeToViewer(this._pageMode);\n this.pageModeChange.emit(this._pageMode);\n }\n }\n\n @Input()\n public set page(_page: number) {\n this._page = _page;\n if (this.PDFViewerApplication && this.PDFViewerApplication.initialized) {\n this.PDFViewerApplication.page = this._page;\n } else {\n if (this.diagnosticLogs) {\n console.warn(\n \"Document is not loaded yet!!!. Try to set page# after full load. Ignore this warning if you are not setting page# using '.' notation. (E.g. pdfViewer.page = 5;)\",\n );\n }\n }\n }\n\n public get page() {\n if (this.PDFViewerApplication && this.PDFViewerApplication.initialized) {\n return this.PDFViewerApplication.page;\n } else {\n if (this.diagnosticLogs) {\n console.warn(\n \"Document is not loaded yet!!!. Try to retrieve page# after full load.\",\n );\n }\n return this._page || 1;\n }\n }\n\n @Input()\n public set pdfSrc(_src: string | Blob | Uint8Array) {\n this._src = _src;\n }\n\n public get pdfSrc() {\n return this._src;\n }\n // #endregion\n\n // #region PDF.js Application Access Properties\n public get PDFViewerApplicationOptions() {\n let pdfViewerOptions = null;\n if (this.externalWindow) {\n if (this.viewerTab) {\n pdfViewerOptions = this.viewerTab.PDFViewerApplicationOptions;\n }\n } else {\n if (this.iframe.nativeElement.contentWindow) {\n pdfViewerOptions =\n this.iframe.nativeElement.contentWindow.PDFViewerApplicationOptions;\n }\n }\n return pdfViewerOptions;\n }\n\n public get PDFViewerApplication() {\n let pdfViewer = null;\n if (this.externalWindow) {\n if (this.viewerTab) {\n pdfViewer = this.viewerTab.PDFViewerApplication;\n }\n } else {\n if (this.iframe.nativeElement.contentWindow) {\n pdfViewer =\n this.iframe.nativeElement.contentWindow.PDFViewerApplication;\n }\n }\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: Viewer ->\", pdfViewer);\n return pdfViewer;\n }\n\n // #endregion\n // #endregion\n\n // #region Lifecycle Methods\n ngOnInit(): void { \n \n // Connect action queue manager to PostMessage system\n this.actionQueueManager.setPostMessageExecutor((action, payload) =>\n this.sendControlMessage(action, payload),\n );\n\n // Send diagnostic logs setting to wrapper\n this.dispatchAction(\"set-diagnostic-logs\", this._diagnosticLogs, \"initial-load\");\n \n // Send URL validation setting to wrapper\n this.dispatchAction(\"set-url-validation\", this.urlValidation, \"initial-load\");\n \n // Set up PostMessage listener\n this.setupMessageListener();\n \n // Note: PDF loading moved to ngAfterViewInit() to ensure iframe is ready\n // This prevents \"Cannot read properties of null (reading 'location')\" error\n // when pdfSrc is a Blob (Issue #283)\n\n // Bind events.\n this.bindToPdfJsEventBus();\n }\n\n ngAfterViewInit(): void {\n // Load PDF after view is initialized - trust Angular's lifecycle guarantee\n // that iframe.nativeElement.contentWindow is now available\n if (!this.externalWindow) {\n this.loadPdf();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Handle pdfSrc changes - reload the PDF (Issue #283)\n // Trust Angular's change detection event to trigger reload when needed\n if (changes['pdfSrc'] && !changes['pdfSrc'].firstChange) {\n // pdfSrc changed after initialization - reload the PDF\n if (!this.externalWindow) {\n // Show spinner immediately when PDF source changes (Issue #275)\n this.isLoading = true;\n this.hasError = false;\n this.currentErrorMessage = \"\";\n \n // Reset configuration queuing since iframe will reload fresh\n this.initialConfigQueued = false;\n this.isPostMessageReady = false;\n this.loadPdf();\n }\n return; // pdfSrc change requires full reload, skip other change processing\n }\n \n if (this.PDFViewerApplication) {\n // Only apply changes if PostMessage API is ready and viewer is initialized\n if (this.isPostMessageReady && this.PDFViewerApplication.initialized) {\n this.applyChanges(changes);\n } else {\n this.pendingChanges.push(changes);\n }\n } else {\n this.pendingChanges.push(changes);\n }\n }\n\n ngOnDestroy(): void {\n // Clean up pending messages\n this.pendingMessages.clear();\n\n // Clean up event listeners\n ComponentUtils.cleanupEventHandlers(this);\n\n // Reset state flags\n this.initialConfigQueued = false;\n\n // Clean up URL\n this.relaseUrl?.();\n }\n // #endregion\n\n // #region Message Handling Methods\n private generateMessageId(): string {\n return `msg_${++this.messageIdCounter}_${Date.now()}`;\n }\n\n private sendControlMessage(action: string, payload: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const messageId = this.generateMessageId();\n \n const message: ControlMessage = {\n type: \"control-update\",\n action,\n payload,\n id: messageId,\n timestamp: Date.now(),\n };\n\n this.pendingMessages.set(messageId, { resolve, reject });\n\n // Send message to iframe\n if (\n this.iframe &&\n this.iframe.nativeElement &&\n this.iframe.nativeElement.contentWindow\n ) {\n this.iframe.nativeElement.contentWindow.postMessage(message, \"*\");\n } else {\n this.pendingMessages.delete(messageId);\n reject(new Error(\"Iframe not available\"));\n }\n });\n }\n\n private handleControlResponse(response: ControlResponse): void {\n const pendingMessage = this.pendingMessages.get(response.id);\n if (pendingMessage) {\n this.pendingMessages.delete(response.id);\n \n if (response.success) {\n pendingMessage.resolve(response);\n } else {\n pendingMessage.reject(new Error(response.error || \"Unknown error\"));\n }\n }\n }\n\n private setupMessageListener(): void {\n window.addEventListener(\"message\", (event) => {\n // Handle control responses from the viewer\n if (event.data && event.data.type === \"control-response\") {\n this.handleControlResponse(event.data);\n return;\n }\n \n // Handle security warning from viewer\n if (event.data && event.data.type === \"ng2-pdfjs-viewer-security-warning\") {\n this.securityWarning = {\n message: event.data.message,\n originalUrl: event.data.originalUrl,\n currentUrl: event.data.currentUrl\n };\n return;\n }\n \n // Handle PostMessage API ready notification\n if (event.data && event.data.type === \"postmessage-ready\") {\n this.isPostMessageReady = true;\n\n this.postMessageReadiness = event.data.readiness || 0;\n\n // CRITICAL FIX: Process queued actions when readiness level increases\n if (this.actionQueueManager) {\n this.actionQueueManager.updateReadiness(this.postMessageReadiness);\n this.actionQueueManager.processQueuedActions();\n }\n \n // Queue all initial configurations now that PostMessage API is ready (only once)\n if (!this.initialConfigQueued) {\n this.queueAllConfigurations();\n this.initialConfigQueued = true;\n }\n \n // Apply any pending changes that occurred before PostMessage API was ready\n this.applyPendingChanges();\n return;\n }\n \n // Handle state change notifications from PostMessage wrapper\n if (event.data && event.data.type === \"state-change\") {\n this.handleStateChangeNotification(event.data);\n return;\n }\n\n // Handle event notifications from PostMessage wrapper\n if (event.data && event.data.type === \"event-notification\") {\n this.handleEventNotification(event.data);\n return;\n }\n });\n }\n\n private handleStateChangeNotification(notification: any): void {\n const { property, value, source } = notification;\n \n // Internal loading overlay control is system-driven and must be handled unconditionally\n if (property === \"loading\") {\n this.isLoading = !!value;\n // Clear error state when loading starts\n if (value) {\n this.hasError = false;\n this.currentErrorMessage = \"\";\n }\n return;\n }\n\n // Internal error state management\n if (property === \"error\") {\n this.hasError = !!value;\n if (value && typeof value === \"string\") {\n this.currentErrorMessage = value;\n this.errorTemplateData = this.getErrorTemplateData();\n }\n return;\n }\n\n // Only process user-initiated changes to avoid infinite loops\n if (\n source === \"user\" &&\n !this.changeOriginTracker.isProgrammatic(property)\n ) {\n this.changeOriginTracker.markUserInitiated(property);\n \n switch (property) {\n case \"cursor\":\n if (this._cursor !== value) {\n this._cursor =\n PropertyTransformers.transformCursor.fromViewer(value);\n this.cursorChange.emit(this._cursor);\n }\n break;\n \n case \"scroll\":\n if (this._scroll !== value) {\n this._scroll =\n PropertyTransformers.transformScroll.fromViewer(value);\n this.scrollChange.emit(this._scroll);\n }\n break;\n \n case \"spread\":\n if (this._spread !== value) {\n this._spread =\n PropertyTransformers.transformSpread.fromViewer(value);\n this.spreadChange.emit(this._spread);\n }\n break;\n \n case \"pageMode\":\n if (this._pageMode !== value) {\n this._pageMode =\n PropertyTransformers.transformPageMode.fromViewer(value);\n this.pageModeChange.emit(this._pageMode);\n }\n break;\n \n case \"zoom\":\n if (this._zoom !== value) {\n this._zoom = PropertyTransformers.transformZoom.fromViewer(value);\n this.zoomChange.emit(this._zoom);\n }\n break;\n \n case \"rotation\":\n if (this._rotation !== value) {\n this._rotation =\n PropertyTransformers.transformRotation.fromViewer(value);\n }\n break;\n \n // Note: namedDest is now a simple input property, not a two-way binding\n \n default:\n if (this.diagnosticLogs) {\n console.log(\n `🔍 PdfJsViewer: Unknown state change property: ${property}`,\n );\n }\n }\n }\n }\n\n private handleEventNotification(notification: any): void {\n const { eventName, eventData } = notification;\n\n // Emit the appropriate event based on the event name\n switch (eventName) {\n case \"documentError\":\n this.onDocumentError.emit(eventData);\n break;\n\n case \"documentInit\":\n this.onDocumentInit.emit();\n break;\n\n case \"pagesInit\":\n this.onPagesInit.emit(eventData);\n break;\n\n case \"presentationModeChanged\":\n this.onPresentationModeChanged.emit(eventData);\n break;\n\n case \"openFile\":\n this.onOpenFile.emit();\n break;\n\n case \"find\":\n this.onFind.emit(eventData);\n break;\n\n case \"updateFindMatchesCount\":\n this.onUpdateFindMatchesCount.emit(eventData);\n break;\n\n case \"metadataLoaded\":\n this.onMetadataLoaded.emit(eventData);\n break;\n\n case \"outlineLoaded\":\n this.onOutlineLoaded.emit(eventData);\n break;\n\n case \"pageRendered\":\n this.onPageRendered.emit(eventData);\n break;\n\n case \"annotationLayerRendered\":\n this.onAnnotationLayerRendered.emit(eventData);\n break;\n\n case \"bookmarkClick\":\n this.onBookmarkClick.emit(eventData);\n break;\n\n case \"idle\":\n this.onIdle.emit();\n break;\n\n default:\n if (this.diagnosticLogs) {\n console.log(\n `🔍 PdfJsViewer: Unknown event notification: ${eventName}`,\n );\n }\n }\n }\n // #endregion\n\n // #region Property Mapping and Update Methods\n private mapPropertyToAction(propertyName: string): string | null {\n return ComponentUtils.getActionForProperty(propertyName);\n }\n\n private updateViewerControl(propertyName: string, value: any): void {\n const action = this.mapPropertyToAction(propertyName);\n if (action) {\n // Use universal dispatcher instead of direct PostMessage\n this.dispatchAction(action, value, \"property-change\");\n } else {\n // Property is intentionally not mapped (handled via query parameters or direct API)\n }\n }\n\n private applyChanges(changes: SimpleChanges): void {\n Object.keys(changes).forEach((propertyName) => {\n const change = changes[propertyName];\n\n if (change.currentValue !== change.previousValue) {\n // Handle auto-actions - queue for document load, don't execute immediately\n const autoActions = [\n \"downloadOnLoad\",\n \"printOnLoad\",\n \"showLastPageOnLoad\",\n \"rotateCW\",\n \"rotateCCW\",\n ];\n if (autoActions.includes(propertyName)) {\n // Re-queue all configurations when auto-actions change\n this.initialConfigQueued = false;\n if (this.isPostMessageReady) {\n this.queueAllConfigurations();\n this.initialConfigQueued = true;\n }\n return;\n }\n\n // Use universal dispatcher for ALL actions - pure event-driven approach\n const action = this.mapPropertyToAction(propertyName);\n if (action) {\n this.dispatchAction(action, change.currentValue, \"property-change\");\n }\n }\n });\n }\n\n private applyPendingChanges(): void {\n // Only apply pending changes if PostMessage API is ready\n if (!this.isPostMessageReady) {\n return;\n }\n \n if (this.pendingChanges.length > 0) {\n this.pendingChanges.forEach((changes, index) => {\n this.processChangesForQueuing(changes);\n });\n this.pendingChanges = [];\n } else {\n }\n }\n\n private processChangesForQueuing(changes: SimpleChanges): void {\n Object.keys(changes).forEach((propertyName) => {\n const change = changes[propertyName];\n \n if (change.currentValue !== change.previousValue) {\n // Handle auto-actions - queue for document load, don't execute immediately\n const autoActions = [\n \"downloadOnLoad\",\n \"printOnLoad\",\n \"showLastPageOnLoad\",\n \"rotateCW\",\n \"rotateCCW\",\n ];\n if (autoActions.includes(propertyName)) {\n // Re-queue all configurations when auto-actions change\n this.initialConfigQueued = false;\n if (this.isPostMessageReady) {\n this.queueAllConfigurations();\n this.initialConfigQueued = true;\n }\n return;\n }\n \n // Use universal dispatcher for ALL actions - pure event-driven approach\n const action = this.mapPropertyToAction(propertyName);\n if (action) {\n this.dispatchAction(action, change.currentValue, \"property-change\");\n }\n }\n });\n }\n // #endregion\n\n // #region PDF.js Event Binding Methods\n /**\n * Waits for the PDF.js viewer to be ready, and binds the the event bus.\n */\n private bindToPdfJsEventBus() {\n // Store the event listener reference so we can remove it later\n const webviewerLoadedHandler = () => {\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: webviewerloaded event received\");\n\n // Set locale immediately when PDF.js is loaded but before it initializes\n // https://github.com/mozilla/pdf.js/issues/11829#issuecomment-617668679\n if (this.locale && this.iframe?.nativeElement?.contentWindow) {\n try {\n const iframeWindow = this.iframe.nativeElement.contentWindow;\n if (iframeWindow.PDFViewerApplicationOptions) {\n iframeWindow.PDFViewerApplicationOptions.set(\"localeProperties\", {\n lang: this.locale,\n });\n if (this.diagnosticLogs)\n console.debug(\n `PdfJsViewer: Locale set to ${this.locale} before initialization`,\n );\n }\n } catch (error) {\n if (this.diagnosticLogs)\n console.debug(\n \"PdfJsViewer: Could not set locale before initialization:\",\n error,\n );\n }\n }\n\n if (!this.PDFViewerApplication) {\n if (this.diagnosticLogs)\n console.debug(\n \"PdfJsViewer: Viewer not yet (or no longer) available, events can not yet be bound.\",\n );\n return;\n }\n\n // https://github.com/mozilla/pdf.js/issues/9527\n this.PDFViewerApplication.initializedPromise.then(() => {\n // All configurations are now handled via PostMessage system\n // No need to call configureVisibleFeatures() anymore\n \n // Apply any pending changes that occurred before initialization\n this.applyPendingChanges();\n\n const app = this.PDFViewerApplication;\n const eventBus = app.eventBus;\n \n // Store event handler references for cleanup\n const documentLoadedHandler = () => {\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: The document has now been loaded!\");\n this.onDocumentLoad.emit();\n \n // Queue auto-actions for this document load (not from component initialization)\n this.queueAutoActionsForDocumentLoad();\n \n // Execute all queued auto-actions\n this.actionQueueManager.onDocumentLoaded();\n };\n\n // Note: pagesInit event is now handled via the PostMessage wrapper event system\n\n const pagesLoadedHandler = () => {\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: All pages have been fully loaded!\");\n\n // Execute auto-print on pages loaded (ensures PDF is fully ready for printing)\n if (this.printOnLoad === true) {\n this.dispatchAction(\"trigger-print\", true, \"initial-load\");\n }\n };\n\n const beforePrintHandler = () => {\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: The document is about to be printed!\");\n this.onBeforePrint.emit();\n };\n\n const afterPrintHandler = () => {\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: The document has been printed!\");\n this.onAfterPrint.emit();\n };\n\n const pageChangingHandler = (event: any) => {\n if (this.diagnosticLogs)\n console.debug(\n \"PdfJsViewer: The page has changed:\",\n event.pageNumber,\n );\n \n // Update two-way binding for page\n if (\n this._page !== event.pageNumber &&\n !this.changeOriginTracker.isProgrammatic(\"page\")\n ) {\n this.changeOriginTracker.markUserInitiated(\"page\");\n this._page = event.pageNumber;\n // Note: page property uses existing setter/getter, no need to emit pageChange here\n }\n \n this.onPageChange.emit(event.pageNumber);\n };\n\n const rotationChangingHandler = (event: any) => {\n const newRotation: ChangedRotation = {\n rotation: event.pagesRotation,\n page: event.pageNumber,\n };\n if (this.diagnosticLogs)\n console.debug(\"PdfJsViewer: The rotation has changed!\", event);\n \n // Update two-way binding for rotation\n const normalizedRotation =\n PropertyTransformers.transformRotation.fromViewer(\n event.pagesRotation,\n );\n if (\n this._rotation !== normalizedRotation &&\n !this.changeOriginTracker.isProgrammatic(\"rotation\")\n ) {\n this.changeOriginTracker.markUserInitiated(\"rotation\");\n this._rotation = normalizedRotation;\n }\n \n this.onRotationChange.emit(newRotation);\n };\n\n const scaleChangingHandler = (event: any) => {\n const newScale: ChangedScale = event.scale;\n if (this.diagnosticLogs)\n console.debug(\n \"PdfJsViewer: The document has scale has changed!\",\n newScale,\n );\n \n // Update two-way binding for zoom\n const normalizedZoom = PropertyTransformers.transformZoom.fromViewer(\n event.scale,\n );\n if (\n this._zoom !== normalizedZoom &&\n !this.changeOriginTracker.isProgrammatic(\"zoom\")\n ) {\n this.changeOriginTracker.markUserInitiated(\"zoom\");\n this._zoom = normalizedZoom;\n this.zoomChange.emit(normalizedZoom);\n }\n \n this.onScaleChange.emit(newScale);\n };\n \n // Store handlers for cleanup\n (this as any)._pdfEventHandlers = {\n documentloaded: documentLoadedHandler,\n pagesloaded: pagesLoadedHandler,\n beforeprint: beforePrintHandler,\n afterprint: afterPrintHandler,\n pagechanging: pageChangingHandler,\n rotationchanging: rotationChangingHandler,\n scalechanging: scaleChangingHandler,\n };\n \n // Attach event listeners\n eventBus.on(\"documentloaded\", documentLoadedHandler);\n eventBus.on(\"pagesloaded\", pagesLoadedHandler);\n eventBus.on(\"beforeprint\", beforePrintHandler);\n eventBus.on(\"afterprint\", afterPrintHandler);\n eventBus.on(\"pagechanging\", pageChangingHandler);\n eventBus.on(\"rotationchanging\", rotationChangingHandler);\n eventBus.on(\"scalechanging\", scaleChangingHandler);\n });\n };\n \n // Store the handler reference for cleanup\n (this as any)._webviewerLoadedHandler = webviewerLoadedHandler;\n \n document.addEventListener(\"webviewerloaded\", webviewerLoadedHandler);\n }\n // #endregion\n\n // #region Configuration and Action Queue Methods\n private queueAllConfigurations(): void {\n // Queue control visibility configurations (immediate actions)\n this.queueConfiguration(\"showOpenFile\", this.showOpenFile, \"show-openfile\");\n this.queueConfiguration(\"showDownload\", this.showDownload, \"show-download\");\n this.queueConfiguration(\"showPrint\", this.showPrint, \"show-print\");\n this.queueConfiguration(\n \"showFullScreen\",\n this.showFullScreen,\n \"show-fullscreen\",\n );\n this.queueConfiguration(\"showFind\", this.showFind, \"show-find\");\n this.queueConfiguration(\n \"showViewBookmark\",\n this.showViewBookmark,\n \"show-bookmark\",\n );\n this.queueConfiguration(\n \"showAnnotations\",\n this.showAnnotations,\n \"show-annotations\",\n );\n\n // Toolbar/Sidebar group visibility\n this.queueConfiguration(\n \"showToolbarLeft\",\n this.showToolbarLeft,\n \"show-toolbar-left\",\n );\n this.queueConfiguration(\n \"showToolbarMiddle\",\n this.showToolbarMiddle,\n \"show-toolbar-middle\",\n );\n this.queueConfiguration(\n \"showToolbarRight\",\n this.showToolbarRight,\n \"show-toolbar-right\",\n );\n this.queueConfiguration(\n \"showSecondaryToolbarToggle\",\n this.showSecondaryToolbarToggle,\n \"show-secondary-toolbar-toggle\",\n );\n this.queueConfiguration(\"showSidebar\", this.showSidebar, \"show-sidebar\");\n this.queueConfiguration(\n \"showSidebarLeft\",\n this.showSidebarLeft,\n \"show-sidebar-left\",\n );\n this.queueConfiguration(\n \"showSidebarRight\",\n this.showSidebarRight,\n \"show-sidebar-right\",\n );\n\n // Layout customization\n this.queueConfiguration(\n \"toolbarDensity\",\n this.toolbarDensity,\n \"set-toolbar-density\",\n );\n if (this.sidebarWidth) {\n this.queueConfiguration(\n \"sidebarWidth\",\n this.sidebarWidth,\n \"set-sidebar-width\",\n );\n }\n this.queueConfiguration(\n \"toolbarPosition\",\n this.toolbarPosition,\n \"set-toolbar-position\",\n );\n this.queueConfiguration(\n \"sidebarPosition\",\n this.sidebarPosition,\n \"set-sidebar-position\",\n );\n if (this.responsiveBreakpoint !== undefined) {\n this.queueConfiguration(\n \"responsiveBreakpoint\",\n this.responsiveBreakpoint,\n \"set-responsive-breakpoint\",\n );\n }\n\n // Queue mode configurations (immediate actions)\n if (this.cursor) {\n this.queueConfiguration(\"cursor\", this.cursor, \"set-cursor\");\n }\n if (this.scroll) {\n this.queueConfiguration(\"scroll\", this.scroll, \"set-scroll\");\n }\n if (this.spread) {\n this.queueConfiguration(\"spread\", this.spread, \"set-spread\");\n }\n\n // Queue navigation configurations (immediate actions)\n if (this._page) {\n this.queueConfiguration(\"page\", this._page, \"set-page\");\n }\n if (this.zoom) {\n this.queueConfiguration(\"zoom\", this.zoom, \"set-zoom\");\n }\n // Note: zoom is now handled by two-way binding [(zoom)]\n // Queue navigation configuration if specified\n if (this.namedDest && this.namedDest.trim() !== \"\") {\n this.queueConfiguration(\"namedDest\", this.namedDest, \"go-to-named-dest\");\n }\n if (this.pageMode) {\n this.queueConfiguration(\"pageMode\", this.pageMode, \"update-page-mode\");\n }\n\n // Queue rotation configurations (immediate actions)\n if (this.rotateCW === true) {\n this.queueConfiguration(\"rotateCW\", this.rotateCW, \"trigger-rotate-cw\");\n }\n if (this.rotateCCW === true) {\n this.queueConfiguration(\n \"rotateCCW\",\n this.rotateCCW,\n \"trigger-rotate-ccw\",\n );\n }\n\n // Queue error handling configurations (non-auto-actions)\n if (this.errorMessage) {\n this.queueConfiguration(\n \"errorMessage\",\n this.errorMessage,\n \"set-error-message\",\n );\n }\n if (this.errorOverride !== undefined) {\n this.queueConfiguration(\n \"errorOverride\",\n this.errorOverride,\n \"set-error-override\",\n );\n }\n if (this.errorAppend !== undefined) {\n this.queueConfiguration(\n \"errorAppend\",\n this.errorAppend,\n \"set-error-append\",\n );\n }\n\n // Queue theme and visual customization configurations\n // Always queue theme to ensure initial styles are applied\n\n this.queueConfiguration(\"theme\", this.theme || \"light\", \"set-theme\");\n\n if (this.primaryColor) {\n this.queueConfiguration(\n \"primaryColor\",\n this.primaryColor,\n \"set-primary-color\",\n );\n }\n if (this.backgroundColor) {\n this.queueConfiguration(\n \"backgroundColor\",\n this.backgroundColor,\n \"set-background-color\",\n );\n }\n if (this.pageBorderColor) {\n this.queueConfiguration(\n \"pageBorderColor\",\n this.pageBorderColor,\n \"set-page-border-color\",\n );\n }\n if (this.pageSpacing) {\n this.queueConfiguration(\n \"pageSpacing\",\n this.pageSpacing,\n \"set-page-spacing\",\n );\n }\n if (this.toolbarColor) {\n this.queueConfiguration(\n \"toolbarColor\",\n this.toolbarColor,\n \"set-toolbar-color\",\n );\n }\n if (this.textColor) {\n this.queueConfiguration(\"textColor\", this.textColor, \"set-text-color\");\n }\n if (this.borderRadius) {\n this.queueConfiguration(\n \"borderRadius\",\n this.borderRadius,\n \"set-border-radius\",\n );\n }\n if (this.customCSS) {\n // Pass both CSS and nonce for CSP support\n const payload = this.cspNonce \n ? { css: this.customCSS, nonce: this.cspNonce }\n : this.customCSS;\n this.queueConfiguration(\"customCSS\", payload, \"set-custom-css\");\n }\n\n // Queue CSS zoom configurations (immediate actions)\n // Note: Locale is now set via URL parameter, not PostMessage\n if (this.useOnlyCssZoom !== undefined) {\n this.queueConfiguration(\n \"useOnlyCssZoom\",\n this.useOnlyCssZoom,\n \"set-css-zoom\",\n );\n }\n\n // Queue event configurations (non-auto-actions)\n if (this.onBeforePrint) {\n this.queueConfiguration(\"beforePrint\", true, \"enable-before-print\");\n }\n if (this.onAfterPrint) {\n this.queueConfiguration(\"afterPrint\", true, \"enable-after-print\");\n }\n if (this.onDocumentLoad) {\n this.queueConfiguration(\"pagesLoaded\", true, \"enable-pages-loaded\");\n }\n if (this.onPageChange) {\n this.queueConfiguration(\"pageChange\", true, \"enable-page-change\");\n }\n\n // Queue new high-value event configurations\n if (this.onDocumentError) {\n this.queueConfiguration(\"documentError\", true, \"enable-document-error\");\n }\n if (this.onDocumentInit) {\n this.queueConfiguration(\"documentInit\", true, \"enable-document-init\");\n }\n if (this.onPagesInit) {\n this.queueConfiguration(\"pagesInit\", true, \"enable-pages-init\");\n }\n if (this.onPresentationModeChanged) {\n this.queueConfiguration(\n \"presentationModeChanged\",\n true,\n \"enable-presentation-mode-changed\",\n );\n }\n if (this.onOpenFile) {\n this.queueConfiguration(\"openFile\", true, \"enable-open-file\");\n }\n if (this.onFind) {\n this.queueConfiguration(\"find\", true, \"enable-find\");\n }\n if (this.onUpdateFindMatchesCount) {\n this.queueConfiguration(\n \"updateFindMatchesCount\",\n true,\n \"enable-update-find-matches-count\",\n );\n }\n if (this.onMetadataLoaded) {\n this.queueConfiguration(\"metadataLoaded\", true, \"enable-metadata-loaded\");\n }\n if (this.onOutlineLoaded) {\n this.queueConfiguration(\"outlineLoaded\", true, \"enable-outline-loaded\");\n }\n if (this.onPageRendered) {\n this.queueConfiguration(\"pageRendered\", true, \"enable-page-rendered\");\n }\n\n // New high-value events\n if (this.onAnnotationLayerRendered) {\n this.queueConfiguration(\n \"annotationLayerRendered\",\n true,\n \"enable-annotation-layer-rendered\",\n );\n }\n if (this.onBookmarkClick) {\n this.queueConfiguration(\"bookmarkClick\", true, \"enable-bookmark-click\");\n }\n if (this.onIdle) {\n this.queueConfiguration(\"idle\", true, \"enable-idle\");\n }\n\n // Note: Auto-actions are now queued when the document loads, not during component initialization\n // This ensures they use the current property values at the time of document load\n }\n\n private queueAutoActionsForDocumentLoad(): void {\n // Use universal dispatcher for auto-actions\n if (this.downloadOnLoad === true) {\n this.dispatchAction(\"trigger-download\", true, \"initial-load\");\n }\n\n if (this.showLastPageOnLoad === true) {\n this.dispatchAction(\"go-to-last-page\", true, \"initial-load\");\n }\n\n // Auto-print is handled in pagesLoadedHandler for timing reasons\n }\n\n private queueConfiguration(\n propertyName: string,\n value: any,\n action: string,\n ): void {\n // Use universal dispatcher for all configuration actions\n this.dispatchAction(action, value, \"initial-load\");\n }\n\n public refresh(): void {\n // Needs to be invoked for external window or when needs to reload pdf\n\n // Clean up existing event listeners\n ComponentUtils.cleanupEventHandlers(this);\n \n // Clear the action queue to ensure clean state\n if (this.actionQueueManager) {\n this.actionQueueManager.clearQueues();\n }\n \n // Reset PostMessage readiness state\n this.isPostMessageReady = false;\n this.postMessageReadiness = 0;\n this.pendingInitialConfig = true;\n this.initialConfigQueued = false; // Reset initial config flag\n \n // Reload the PDF - this will trigger queueAllConfigurations() when PostMessage API is ready\n this.loadPdf();\n }\n\n // Public method for external control messages\n public sendViewerControlMessage(action: string, payload: any): Promise<any> {\n return this.sendControlMessage(action, payload);\n }\n\n // #region Public Methods for On-Demand Actions\n public triggerDownload(): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\n return this.dispatchAction(\"trigger-download\", true, \"user-interaction\");\n }\n\n public triggerPrint(): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\n return this.dispatchAction(\"trigger-print\", true, \"user-interaction\");\n }\n\n public setPage(page: number): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\n return this.dispatchAction(\"set-page\", page, \"user-interaction\");\n }\n\n public setZoom(zoom: string): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\n return this.dispatchAction(\"set-zoom\", zoom, \"user-interaction\");\n }\n\n public goToLastPage(): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\n return this.dispatchAction(\"go-to-last-page\", true, \"user-interaction\");\n }\n\n public setCursor(cursor: string): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions\n return this.dispatchAction(\"set-cursor\", cursor, \"user-interaction\");\n }\n\n public setScroll(scroll: string): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions\n return this.dispatchAction(\"set-scroll\", scroll, \"user-interaction\");\n }\n\n public setSpread(spread: string): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions\n return this.dispatchAction(\"set-spread\", spread, \"user-interaction\");\n }\n\n public triggerRotation(\n direction: \"cw\" | \"ccw\",\n ): Promise<ActionExecutionResult> {\n // Use universal dispatcher for user interactions\n const action =\n direction === \"cw\" ? \"trigger-rotate-cw\" : \"trigger-rotate-ccw\";\n return this.dispatchAction(action, true, \"user-interaction\");\n }\n\n public goToPage(page: number): Promise<ActionExecutionResult> {\n // Alias for setPage for backward compatibility\n return this.setPage(page);\n }\n // #endregion\n\n // Action queue management methods\n public getActionStatus(\n actionId: string,\n ): \"pending\" | \"executing\" | \"completed\" | \"failed\" | \"not-found\" {\n if (!this.actionQueueManager) {\n return \"not-found\";\n }\n return this.actionQueueManager.getActionStatus(actionId);\n }\n\n public getQueueStatus(): { queuedActions: number; executedActions: number } {\n if (!this.actionQueueManager) {\n return {\n queuedActions: 0,\n executedActions: 0,\n };\n }\n return this.actionQueueManager.getQueueStatus();\n }\n\n public clearActionQueue(): void {\n if (this.actionQueueManager) {\n this.actionQueueManager.clearQueues();\n }\n }\n\n /**\n * Enable or disable URL validation security feature\n * When enabled, prevents users from modifying the file parameter in the viewer URL\n * @param enabled - Whether to enable URL validation (default: true)\n * @returns Promise<ActionExecutionResult>\n */\n public setUrlValidation(enabled: boolean = true): Promise<ActionExecutionResult> {\n return this.dispatchAction(\"set-url-validation\", enabled, \"user-interaction\");\n }\n\n /**\n * Dismiss the security warning\n */\n public dismissSecurityWarning(): void {\n this.securityWarning = null;\n }\n // #endregion\n\n // #region PDF Loading and URL Handling\n private loadPdf(): void {\n if (!this.validatePdfSource()) return;\n\n // Show spinner immediately when PDF loading starts (Issue #275)\n this.isLoading = true;\n this.hasError = false;\n this.currentErrorMessage = \"\";\n\n this.setupExternalWindow();\n const fileUrl = this.createFileUrl();\n const viewerUrl = this.buildViewerUrl(fileUrl);\n this.navigateToViewer(viewerUrl);\n }\n\n private validatePdfSource(): boolean {\n return !!this._src;\n }\n\n private setupExternalWindow(): void {\n if (!this.externalWindow) return;\n\n if (typeof this.viewerTab === \"undefined\" || this.viewerTab.closed) {\n this.viewerTab = window.open(\n \"\",\n this.target,\n this.externalWindowOptions || \"\",\n );\n if (this.viewerTab == null) {\n if (this.diagnosticLogs) {\n console.error(\n \"ng2-pdfjs-viewer: For 'externalWindow = true'. i.e opening in new tab to work, pop-ups should be enabled.\",\n );\n }\n return;\n }\n\n if (this.showSpinner) {\n this.renderLoadingSpinner();\n }\n }\n }\n\n private renderLoadingSpinner(): void {\n this.viewerTab.document.write(`\n <style>\n .loader {\n position: fixed;\n left: 40%;\n top: 40%;\n border: 16px solid #f3f3f3;\n border-radius: 50%;\n border-top: 16px solid #3498db;\n width: 120px;\n height: 120px;\n animation: spin 2s linear infinite;\n }\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n </style>\n <div class=\"loader\"></div>\n `);\n }\n\n private createFileUrl(): string {\n this.relaseUrl?.();\n\n if (this._src instanceof Blob) {\n const url = URL.createObjectURL(this._src);\n this.relaseUrl = () => URL.revokeObjectURL(url);\n return encodeURIComponent(url);\n } else if (this._src instanceof Uint8Array) {\n let blob = new Blob([this._src], { type: \"application/pdf\" });\n const url = URL.createObjectURL(blob);\n this.relaseUrl = () => URL.revokeObjectURL(url);\n return encodeURIComponent(url);\n } else {\n return this._src;\n }\n }\n\n private buildViewerUrl(fileUrl: string): string {\n let viewerUrl = this.getBaseViewerUrl();\n viewerUrl = this.addFileParameter(viewerUrl, fileUrl);\n viewerUrl = this.addViewerIdParameter(viewerUrl);\n viewerUrl = this.addCacheBustingIfNeeded(viewerUrl);\n\n return viewerUrl;\n }\n\n private getBaseViewerUrl(): string {\n return this.viewerFolder\n ? `${this.viewerFolder}/web/viewer.html`\n : `assets/pdfjs/web/viewer.html`;\n }\n\n private addFileParameter(viewerUrl: string, fileUrl: string): string {\n return `${viewerUrl}?file=${fileUrl}`;\n }\n\n private addViewerIdParameter(viewerUrl: string): string {\n return typeof this.viewerId !== \"undefined\"\n ? `${viewerUrl}&viewerId=${this.viewerId}`\n : viewerUrl;\n }\n\n private addCacheBustingIfNeeded(viewerUrl: string): string {\n if (this.isDevelopmentMode()) {\n const cacheBuster = Date.now();\n\n return `${viewerUrl}&_t=${cacheBuster}`;\n } else {\n return viewerUrl;\n }\n }\n\n private isDevelopmentMode(): boolean {\n return (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\" ||\n window.location.port === \"4200\" ||\n window.location.href.includes(\"localhost:4200\")\n );\n }\n\n private navigateToViewer(viewerUrl: string): void {\n if (this.externalWindow) {\n this.viewerTab.location.href = viewerUrl;\n } else {\n this.iframe.nativeElement.contentWindow.location.replace(viewerUrl);\n }\n \n if (this.diagnosticLogs) {\n this.logViewerConfiguration(viewerUrl);\n }\n }\n\n private logViewerConfiguration(viewerUrl: string): void {\n console.debug(`PdfJsViewer: Minimal URL configuration:\n pdfSrc = ${this.pdfSrc}\n externalWindow = ${this.externalWindow}\n viewerFolder = ${this.viewerFolder}\n viewerId = ${this.viewerId}\n finalUrl = ${viewerUrl}\n \n All other configurations handled via PostMessage system:\n showOpenFile = ${this.showOpenFile}\n showDownload = ${this.showDownload}\n showViewBookmark = ${this.showViewBookmark}\n showPrint = ${this.showPrint}\n showFullScreen = ${this.showFullScreen}\n showFind = ${this.showFind}\n cursor = ${this.cursor}\n scroll = ${this.scroll}\n spread = ${this.spread}\n page = ${this.page}\n zoom = ${this.zoom}\n namedDest = ${this.namedDest}\n pageMode = ${this.pageMode}\n errorOverride = ${this.errorOverride}\n errorAppend = ${this.errorAppend}\n errorMessage = ${this.errorMessage}\n locale = ${this.locale}\n useOnlyCssZoom = ${this.useOnlyCssZoom}\n \n Auto-actions (handled by action queue):\n downloadOnLoad = ${this.downloadOnLoad}\n printOnLoad = ${this.printOnLoad}\n showLastPageOnLoad = ${this.showLastPageOnLoad}\n `);\n }\n // #endregion\n\n // #region Two-Way Binding Helper Methods\n private applyZoomToViewer(zoom: string): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"set-zoom\", zoom, \"property-change\");\n }\n\n private applyRotationToViewer(rotation: number): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"set-rotation\", rotation, \"property-change\");\n }\n\n private applyCursorToViewer(cursor: string): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"set-cursor\", cursor, \"property-change\");\n }\n\n private applyScrollToViewer(scroll: string): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"set-scroll\", scroll, \"property-change\");\n }\n\n private applySpreadToViewer(spread: string): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"set-spread\", spread, \"property-change\");\n }\n\n private applyPageModeToViewer(pageMode: string): void {\n // Use universal dispatcher - it will handle readiness checking and queuing\n this.dispatchAction(\"update-page-mode\", pageMode, \"property-change\");\n }\n // #endregion\n\n // Universal Action Dispatcher - ALL actions go through readiness-based queuing\n private dispatchAction(\n action: string,\n payload: any,\n source:\n | \"initial-load\"\n | \"property-change\"\n | \"user-interaction\" = \"property-change\",\n ): Promise<ActionExecutionResult> {\n const requiredReadiness = this.getRequiredReadinessLevel(action);\n const actionObj: ViewerAction = {\n id: `${source}-${action}-${Date.now()}`,\n action: action,\n payload: payload,\n };\n\n // Check if we have sufficient readiness to execute immediately\n if (this.hasRequiredReadiness(requiredReadiness)) {\n return this.actionQueueManager.executeAction(actionObj);\n } else {\n // Queue action to execute when readiness is achieved\n this.actionQueueManager.queueAction(actionObj, requiredReadiness);\n\n // Return a promise that resolves when the action eventually executes\n return Promise.resolve({\n actionId: actionObj.id,\n success: true,\n timestamp: Date.now(),\n } as ActionExecutionResult);\n }\n }\n\n private getRequiredReadinessLevel(action: string): number {\n // Define readiness requirements for all actions\n const level1Actions = [\n \"set-theme\",\n \"set-primary-color\",\n \"set-background-color\",\n \"set-page-border-color\",\n \"set-toolbar-color\",\n \"set-text-color\",\n \"set-border-radius\",\n \"set-custom-css\",\n ];\n const level3Actions = [\n \"show-download\",\n \"show-print\",\n \"show-fullscreen\",\n \"show-find\",\n \"show-bookmark\",\n \"show-openfile\",\n \"show-annotations\",\n \"set-error-message\",\n \"set-error-override\",\n \"set-error-append\",\n \"set-css-zoom\",\n // DOM visibility toggles\n \"show-toolbar-left\",\n \"show-toolbar-middle\",\n \"show-toolbar-right\",\n \"show-secondary-toolbar-toggle\",\n \"show-sidebar\",\n \"show-sidebar-left\",\n \"show-sidebar-right\",\n ];\n const level4Actions = [\n \"set-cursor\",\n \"set-scroll\",\n \"set-spread\",\n \"set-zoom\",\n \"update-page-mode\",\n // Layout actions require components ready to measure\n \"set-toolbar-density\",\n \"set-sidebar-width\",\n \"set-toolbar-position\",\n \"set-sidebar-position\",\n \"set-responsive-breakpoint\",\n ];\n const level5Actions = [\n \"set-page\",\n \"set-rotation\",\n \"go-to-last-page\",\n \"go-to-named-dest\",\n \"trigger-download\",\n \"trigger-print\",\n \"trigger-rotate-cw\",\n \"trigger-rotate-ccw\",\n ];\n\n if (level1Actions.includes(action)) return 1; // VIEWER_LOADED - DOM access only\n if (level3Actions.includes(action)) return 3; // EVENTBUS_READY\n if (level4Actions.includes(action)) return 4; // COMPONENTS_READY\n if (level5Actions.includes(action)) return 5; // DOCUMENT_LOADED\n return 3; // Default to EVENTBUS_READY\n }\n\n private hasRequiredReadiness(requiredLevel: number): boolean {\n if (!this.isPostMessageReady) return false;\n if (requiredLevel === 5 && !this.actionQueueManager?.isDocumentLoaded)\n return false;\n return this.postMessageReadiness >= requiredLevel;\n }\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { PdfJsViewerComponent } from \"./ng2-pdfjs-viewer.component\";\n\n@NgModule({\n imports: [CommonModule],\n declarations: [PdfJsViewerComponent],\n exports: [PdfJsViewerComponent],\n})\nexport class PdfJsViewerModule {\n static forRoot(): ModuleWithProviders<PdfJsViewerModule> {\n return {\n ngModule: PdfJsViewerModule,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -232,6 +232,7 @@ declare class PdfJsViewerComponent implements OnInit, OnDestroy, OnChanges, Afte
|
|
|
232
232
|
currentErrorMessage: string;
|
|
233
233
|
errorTemplateData: any;
|
|
234
234
|
getErrorTemplateData(): any;
|
|
235
|
+
getIframeClasses(): string;
|
|
235
236
|
reloadViewer(): void;
|
|
236
237
|
goBack(): void;
|
|
237
238
|
closeViewer(): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ng2-pdfjs-viewer",
|
|
3
|
-
"version": "25.0.
|
|
3
|
+
"version": "25.0.13",
|
|
4
4
|
"description": "The most comprehensive Angular PDF viewer powered by Mozilla PDF.js. 7M+ downloads, mobile-first, production-ready with complete rewrite in v25.x",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Aneesh Goapalakrishnan",
|
package/pdfjs/web/viewer.css
CHANGED
|
@@ -5299,6 +5299,11 @@ body.wait::before{
|
|
|
5299
5299
|
mask-image:var(--toolbarButton-print-icon);
|
|
5300
5300
|
}
|
|
5301
5301
|
|
|
5302
|
+
/* Print service dialog styling */
|
|
5303
|
+
.print-service-dialog {
|
|
5304
|
+
min-width: 200px;
|
|
5305
|
+
}
|
|
5306
|
+
|
|
5302
5307
|
#downloadButton::before{
|
|
5303
5308
|
-webkit-mask-image:var(--toolbarButton-download-icon);
|
|
5304
5309
|
mask-image:var(--toolbarButton-download-icon);
|
package/pdfjs/web/viewer.html
CHANGED
|
@@ -703,7 +703,7 @@ See https://github.com/adobe-type-tools/cmap-resources
|
|
|
703
703
|
</div>
|
|
704
704
|
</dialog>
|
|
705
705
|
|
|
706
|
-
<dialog id="printServiceDialog"
|
|
706
|
+
<dialog id="printServiceDialog" class="print-service-dialog">
|
|
707
707
|
<div class="row">
|
|
708
708
|
<span data-l10n-id="pdfjs-print-progress-message"></span>
|
|
709
709
|
</div>
|