ng2-pdfjs-viewer 25.0.8 → 25.0.9

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.
@@ -279,6 +279,7 @@ class ComponentUtils {
279
279
  primaryColor: "set-primary-color",
280
280
  backgroundColor: "set-background-color",
281
281
  pageBorderColor: "set-page-border-color",
282
+ pageSpacing: "set-page-spacing",
282
283
  toolbarColor: "set-toolbar-color",
283
284
  textColor: "set-text-color",
284
285
  borderRadius: "set-border-radius",
@@ -427,6 +428,7 @@ class PdfJsViewerComponent {
427
428
  primaryColor;
428
429
  backgroundColor;
429
430
  pageBorderColor;
431
+ pageSpacing;
430
432
  toolbarColor;
431
433
  textColor;
432
434
  borderRadius;
@@ -542,6 +544,8 @@ class PdfJsViewerComponent {
542
544
  this.backgroundColor = config.backgroundColor;
543
545
  if (config.pageBorderColor !== undefined)
544
546
  this.pageBorderColor = config.pageBorderColor;
547
+ if (config.pageSpacing !== undefined)
548
+ this.pageSpacing = config.pageSpacing;
545
549
  if (config.toolbarColor !== undefined)
546
550
  this.toolbarColor = config.toolbarColor;
547
551
  if (config.textColor !== undefined)
@@ -1370,6 +1374,9 @@ class PdfJsViewerComponent {
1370
1374
  if (this.pageBorderColor) {
1371
1375
  this.queueConfiguration("pageBorderColor", this.pageBorderColor, "set-page-border-color");
1372
1376
  }
1377
+ if (this.pageSpacing) {
1378
+ this.queueConfiguration("pageSpacing", this.pageSpacing, "set-page-spacing");
1379
+ }
1373
1380
  if (this.toolbarColor) {
1374
1381
  this.queueConfiguration("toolbarColor", this.toolbarColor, "set-toolbar-color");
1375
1382
  }
@@ -1818,7 +1825,7 @@ class PdfJsViewerComponent {
1818
1825
  return this.postMessageReadiness >= requiredLevel;
1819
1826
  }
1820
1827
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PdfJsViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1821
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: PdfJsViewerComponent, isStandalone: false, selector: "ng2-pdfjs-viewer", inputs: { viewerId: "viewerId", viewerFolder: "viewerFolder", externalWindow: "externalWindow", target: "target", showSpinner: "showSpinner", downloadFileName: "downloadFileName", locale: "locale", useOnlyCssZoom: "useOnlyCssZoom", diagnosticLogs: "diagnosticLogs", showOpenFile: "showOpenFile", showAnnotations: "showAnnotations", showDownload: "showDownload", showViewBookmark: "showViewBookmark", showPrint: "showPrint", showFullScreen: "showFullScreen", showFind: "showFind", downloadOnLoad: "downloadOnLoad", printOnLoad: "printOnLoad", rotateCW: "rotateCW", rotateCCW: "rotateCCW", showLastPageOnLoad: "showLastPageOnLoad", namedDest: "namedDest", errorOverride: "errorOverride", errorAppend: "errorAppend", errorMessage: "errorMessage", theme: "theme", primaryColor: "primaryColor", backgroundColor: "backgroundColor", pageBorderColor: "pageBorderColor", toolbarColor: "toolbarColor", textColor: "textColor", borderRadius: "borderRadius", customCSS: "customCSS", customSpinnerTpl: "customSpinnerTpl", spinnerClass: "spinnerClass", customErrorTpl: "customErrorTpl", errorClass: "errorClass", showToolbarLeft: "showToolbarLeft", showToolbarMiddle: "showToolbarMiddle", showToolbarRight: "showToolbarRight", showSecondaryToolbarToggle: "showSecondaryToolbarToggle", showSidebar: "showSidebar", showSidebarLeft: "showSidebarLeft", showSidebarRight: "showSidebarRight", toolbarDensity: "toolbarDensity", sidebarWidth: "sidebarWidth", toolbarPosition: "toolbarPosition", sidebarPosition: "sidebarPosition", responsiveBreakpoint: "responsiveBreakpoint", controlVisibility: "controlVisibility", autoActions: "autoActions", errorHandling: "errorHandling", viewerConfig: "viewerConfig", themeConfig: "themeConfig", groupVisibility: "groupVisibility", layoutConfig: "layoutConfig", startDownload: "startDownload", startPrint: "startPrint", openFile: "openFile", download: "download", print: "print", fullScreen: "fullScreen", find: "find", viewBookmark: "viewBookmark", lastPage: "lastPage", externalWindowOptions: "externalWindowOptions", zoom: "zoom", rotation: "rotation", cursor: "cursor", scroll: "scroll", spread: "spread", pageMode: "pageMode", page: "page", pdfSrc: "pdfSrc" }, outputs: { onBeforePrint: "onBeforePrint", onAfterPrint: "onAfterPrint", onDocumentLoad: "onDocumentLoad", onPageChange: "onPageChange", onScaleChange: "onScaleChange", onRotationChange: "onRotationChange", onDocumentError: "onDocumentError", onDocumentInit: "onDocumentInit", onPagesInit: "onPagesInit", onPresentationModeChanged: "onPresentationModeChanged", onOpenFile: "onOpenFile", onFind: "onFind", onUpdateFindMatchesCount: "onUpdateFindMatchesCount", onMetadataLoaded: "onMetadataLoaded", onOutlineLoaded: "onOutlineLoaded", onPageRendered: "onPageRendered", onAnnotationLayerRendered: "onAnnotationLayerRendered", onBookmarkClick: "onBookmarkClick", onIdle: "onIdle", zoomChange: "zoomChange", cursorChange: "cursorChange", scrollChange: "scrollChange", spreadChange: "spreadChange", pageModeChange: "pageModeChange" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
1828
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: PdfJsViewerComponent, isStandalone: false, selector: "ng2-pdfjs-viewer", inputs: { viewerId: "viewerId", viewerFolder: "viewerFolder", externalWindow: "externalWindow", target: "target", showSpinner: "showSpinner", downloadFileName: "downloadFileName", locale: "locale", useOnlyCssZoom: "useOnlyCssZoom", diagnosticLogs: "diagnosticLogs", showOpenFile: "showOpenFile", showAnnotations: "showAnnotations", showDownload: "showDownload", showViewBookmark: "showViewBookmark", showPrint: "showPrint", showFullScreen: "showFullScreen", showFind: "showFind", downloadOnLoad: "downloadOnLoad", printOnLoad: "printOnLoad", rotateCW: "rotateCW", rotateCCW: "rotateCCW", showLastPageOnLoad: "showLastPageOnLoad", namedDest: "namedDest", errorOverride: "errorOverride", errorAppend: "errorAppend", errorMessage: "errorMessage", theme: "theme", primaryColor: "primaryColor", backgroundColor: "backgroundColor", pageBorderColor: "pageBorderColor", pageSpacing: "pageSpacing", toolbarColor: "toolbarColor", textColor: "textColor", borderRadius: "borderRadius", customCSS: "customCSS", customSpinnerTpl: "customSpinnerTpl", spinnerClass: "spinnerClass", customErrorTpl: "customErrorTpl", errorClass: "errorClass", showToolbarLeft: "showToolbarLeft", showToolbarMiddle: "showToolbarMiddle", showToolbarRight: "showToolbarRight", showSecondaryToolbarToggle: "showSecondaryToolbarToggle", showSidebar: "showSidebar", showSidebarLeft: "showSidebarLeft", showSidebarRight: "showSidebarRight", toolbarDensity: "toolbarDensity", sidebarWidth: "sidebarWidth", toolbarPosition: "toolbarPosition", sidebarPosition: "sidebarPosition", responsiveBreakpoint: "responsiveBreakpoint", controlVisibility: "controlVisibility", autoActions: "autoActions", errorHandling: "errorHandling", viewerConfig: "viewerConfig", themeConfig: "themeConfig", groupVisibility: "groupVisibility", layoutConfig: "layoutConfig", startDownload: "startDownload", startPrint: "startPrint", openFile: "openFile", download: "download", print: "print", fullScreen: "fullScreen", find: "find", viewBookmark: "viewBookmark", lastPage: "lastPage", externalWindowOptions: "externalWindowOptions", zoom: "zoom", rotation: "rotation", cursor: "cursor", scroll: "scroll", spread: "spread", pageMode: "pageMode", page: "page", pdfSrc: "pdfSrc" }, outputs: { onBeforePrint: "onBeforePrint", onAfterPrint: "onAfterPrint", onDocumentLoad: "onDocumentLoad", onPageChange: "onPageChange", onScaleChange: "onScaleChange", onRotationChange: "onRotationChange", onDocumentError: "onDocumentError", onDocumentInit: "onDocumentInit", onPagesInit: "onPagesInit", onPresentationModeChanged: "onPresentationModeChanged", onOpenFile: "onOpenFile", onFind: "onFind", onUpdateFindMatchesCount: "onUpdateFindMatchesCount", onMetadataLoaded: "onMetadataLoaded", onOutlineLoaded: "onOutlineLoaded", onPageRendered: "onPageRendered", onAnnotationLayerRendered: "onAnnotationLayerRendered", onBookmarkClick: "onBookmarkClick", onIdle: "onIdle", zoomChange: "zoomChange", cursorChange: "cursorChange", scrollChange: "scrollChange", spreadChange: "spreadChange", pageModeChange: "pageModeChange" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
1822
1829
  <div
1823
1830
  class="ng2-pdfjs-viewer-container"
1824
1831
  style="position:relative;width:100%;height:100%;"
@@ -2048,6 +2055,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
2048
2055
  type: Input
2049
2056
  }], pageBorderColor: [{
2050
2057
  type: Input
2058
+ }], pageSpacing: [{
2059
+ type: Input
2051
2060
  }], toolbarColor: [{
2052
2061
  type: Input
2053
2062
  }], textColor: [{
@@ -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 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 {\r\n Component,\r\n Input,\r\n Output,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild,\r\n EventEmitter,\r\n ElementRef,\r\n OnChanges,\r\n SimpleChanges,\r\n AfterViewInit,\r\n TemplateRef,\r\n} from \"@angular/core\";\r\n\r\n// Import extracted modules\r\nimport {\r\n ControlMessage,\r\n ControlResponse,\r\n PropertyChangeEvent,\r\n ViewerAction,\r\n ActionExecutionResult,\r\n ChangedPage,\r\n ChangedScale,\r\n ChangedRotation,\r\n ControlVisibilityConfig,\r\n GroupVisibilityConfig,\r\n LayoutConfig,\r\n ToolbarDensity,\r\n ToolbarPosition,\r\n SidebarPosition,\r\n AutoActionConfig,\r\n ErrorConfig,\r\n ViewerConfig,\r\n ThemeConfig,\r\n DocumentError,\r\n PagesInfo,\r\n PresentationMode,\r\n FindOperation,\r\n FindMatchesCount,\r\n DocumentMetadata,\r\n DocumentOutline,\r\n PageRenderInfo,\r\n // New high-value events\r\n AnnotationLayerRenderEvent,\r\n BookmarkClick,\r\n} from \"./interfaces/ViewerTypes\";\r\nimport { ActionQueueManager } from \"./managers/ActionQueueManager\";\r\nimport { PropertyTransformers } from \"./utils/PropertyTransformers\";\r\nimport { ComponentUtils } from \"./utils/ComponentUtils\";\r\nimport { ChangeOriginTracker } from \"./utils/ChangeOriginTracker\";\r\n\r\n@Component({\r\n selector: \"ng2-pdfjs-viewer\",\r\n standalone: false,\r\n styles: [\r\n `\r\n /* Spinner overlay styling */\r\n .ng2-pdfjs-loading-overlay {\r\n position: absolute;\r\n inset: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: rgba(255, 255, 255, 0.6);\r\n backdrop-filter: saturate(120%) blur(1px);\r\n }\r\n\r\n /* Error overlay styling */\r\n .ng2-pdfjs-error-overlay {\r\n position: absolute;\r\n inset: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: rgba(255, 255, 255, 0.9);\r\n backdrop-filter: saturate(120%) blur(1px);\r\n }\r\n\r\n /* Default spinner animation */\r\n @keyframes spin {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n `,\r\n ],\r\n template: `\r\n <div\r\n class=\"ng2-pdfjs-viewer-container\"\r\n style=\"position:relative;width:100%;height:100%;\"\r\n >\r\n <iframe\r\n title=\"ng2-pdfjs-viewer\"\r\n [hidden]=\"externalWindow || (!externalWindow && !pdfSrc)\"\r\n #iframe\r\n width=\"100%\"\r\n height=\"100%\"\r\n ></iframe>\r\n\r\n <div\r\n class=\"ng2-pdfjs-loading-overlay\"\r\n *ngIf=\"showSpinner && isLoading && !externalWindow\"\r\n [ngClass]=\"spinnerClass\"\r\n style=\"position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,0.6);backdrop-filter:saturate(120%) blur(1px);\"\r\n >\r\n <ng-container\r\n *ngIf=\"customSpinnerTpl; else defaultSpinner\"\r\n [ngTemplateOutlet]=\"customSpinnerTpl\"\r\n ></ng-container>\r\n <ng-template #defaultSpinner>\r\n <div style=\"text-align:center;\">\r\n <div\r\n style=\"display:inline-block;width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #2196F3;border-radius:50%;animation:spin 1s linear infinite;\"\r\n ></div>\r\n <div style=\"margin-top:16px;color:#666;font-size:16px;\">\r\n Loading PDF...\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <div\r\n class=\"ng2-pdfjs-error-overlay\"\r\n *ngIf=\"errorOverride && hasError && !externalWindow\"\r\n [ngClass]=\"errorClass\"\r\n style=\"position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,0.9);backdrop-filter:saturate(120%) blur(1px);\"\r\n >\r\n <ng-container\r\n *ngIf=\"customErrorTpl; else defaultError\"\r\n [ngTemplateOutlet]=\"customErrorTpl\"\r\n [ngTemplateOutletContext]=\"getErrorTemplateData()\"\r\n ></ng-container>\r\n <ng-template #defaultError>\r\n <div style=\"text-align:center;max-width:400px;padding:20px;\">\r\n <div style=\"font-size:48px;color:#f44336;margin-bottom:16px;\">\r\n ⚠️\r\n </div>\r\n <div\r\n style=\"color:#333;font-size:18px;font-weight:500;margin-bottom:8px;\"\r\n >\r\n Error Loading PDF\r\n </div>\r\n <div style=\"color:#666;font-size:14px;line-height:1.4;\">\r\n {{ currentErrorMessage }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n `,\r\n})\r\nexport class PdfJsViewerComponent\r\n implements OnInit, OnDestroy, OnChanges, AfterViewInit\r\n{\r\n // #region Component Properties\r\n @ViewChild(\"iframe\", { static: true }) iframe: ElementRef;\r\n\r\n static lastID = 0;\r\n @Input() public viewerId =\r\n `ng2-pdfjs-viewer-ID${++PdfJsViewerComponent.lastID}`;\r\n\r\n // #region Event Outputs\r\n @Output() onBeforePrint: EventEmitter<void> = new EventEmitter();\r\n @Output() onAfterPrint: EventEmitter<void> = new EventEmitter();\r\n @Output() onDocumentLoad: EventEmitter<void> = new EventEmitter();\r\n @Output() onPageChange: EventEmitter<ChangedPage> = new EventEmitter();\r\n @Output() onScaleChange: EventEmitter<ChangedScale> = new EventEmitter();\r\n @Output() onRotationChange: EventEmitter<ChangedRotation> =\r\n new EventEmitter();\r\n\r\n // New high-value events for enhanced PDF viewer functionality\r\n @Output() onDocumentError: EventEmitter<DocumentError> = new EventEmitter();\r\n @Output() onDocumentInit: EventEmitter<void> = new EventEmitter();\r\n @Output() onPagesInit: EventEmitter<PagesInfo> = new EventEmitter();\r\n @Output() onPresentationModeChanged: EventEmitter<PresentationMode> =\r\n new EventEmitter();\r\n @Output() onOpenFile: EventEmitter<void> = new EventEmitter();\r\n @Output() onFind: EventEmitter<FindOperation> = new EventEmitter();\r\n @Output() onUpdateFindMatchesCount: EventEmitter<FindMatchesCount> =\r\n new EventEmitter();\r\n @Output() onMetadataLoaded: EventEmitter<DocumentMetadata> =\r\n new EventEmitter();\r\n @Output() onOutlineLoaded: EventEmitter<DocumentOutline> = new EventEmitter();\r\n @Output() onPageRendered: EventEmitter<PageRenderInfo> = new EventEmitter();\r\n\r\n // New high-value events\r\n @Output()\r\n onAnnotationLayerRendered: EventEmitter<AnnotationLayerRenderEvent> =\r\n new EventEmitter();\r\n @Output() onBookmarkClick: EventEmitter<BookmarkClick> = new EventEmitter();\r\n @Output() onIdle: EventEmitter<void> = new EventEmitter();\r\n // #endregion\r\n\r\n // #region Basic Configuration Properties\r\n @Input() public viewerFolder: string;\r\n @Input() public externalWindow: boolean = false;\r\n @Input() public target: string = \"_blank\";\r\n @Input() public showSpinner: boolean = true;\r\n @Input() public downloadFileName: string;\r\n @Input() public locale: string;\r\n @Input() public useOnlyCssZoom: boolean = false;\r\n @Input() public set diagnosticLogs(value: boolean) {\r\n this._diagnosticLogs = value;\r\n // Update action queue manager\r\n if (this.actionQueueManager) {\r\n this.actionQueueManager.setDiagnosticLogs(value);\r\n }\r\n // Send to wrapper\r\n this.dispatchAction(\"set-diagnostic-logs\", value, \"property-change\");\r\n }\r\n \r\n public get diagnosticLogs(): boolean {\r\n return this._diagnosticLogs;\r\n }\r\n \r\n private _diagnosticLogs: boolean = false;\r\n // #endregion\r\n\r\n // #region Control Visibility Properties\r\n @Input() public showOpenFile: boolean = true;\r\n @Input() public showAnnotations: boolean = false;\r\n @Input() public showDownload: boolean = true;\r\n @Input() public showViewBookmark: boolean = true;\r\n @Input() public showPrint: boolean = true;\r\n @Input() public showFullScreen: boolean = true;\r\n @Input() public showFind: boolean = true;\r\n // #endregion\r\n\r\n // #region Auto-Action Properties\r\n @Input() public downloadOnLoad: boolean = false;\r\n @Input() public printOnLoad: boolean = false;\r\n @Input() public rotateCW: boolean = false;\r\n @Input() public rotateCCW: boolean = false;\r\n @Input() public showLastPageOnLoad: boolean = false;\r\n // #endregion\r\n\r\n // #region Navigation Properties\r\n @Input() public namedDest: string;\r\n // #endregion\r\n\r\n // #region Error Handling Properties\r\n @Input() public errorOverride: boolean = false;\r\n @Input() public errorAppend: boolean = true;\r\n @Input() public errorMessage: string;\r\n // #endregion\r\n\r\n // #region Theme & Visual Customization Properties\r\n @Input() public theme: \"light\" | \"dark\" | \"auto\" = \"light\";\r\n @Input() public primaryColor?: string;\r\n @Input() public backgroundColor?: string;\r\n @Input() public pageBorderColor?: string;\r\n @Input() public toolbarColor?: string;\r\n @Input() public textColor?: string;\r\n @Input() public borderRadius?: string;\r\n @Input() public customCSS?: string;\r\n // #endregion\r\n\r\n // #region Loading & Spinner Customization\r\n @Input() public customSpinnerTpl?: TemplateRef<any>;\r\n @Input() public spinnerClass?: string;\r\n // #endregion\r\n\r\n // #region Error Display Customization\r\n @Input() public customErrorTpl?: TemplateRef<any>;\r\n @Input() public errorClass?: string;\r\n // #endregion\r\n\r\n // #region Toolbar/Sidebar Group Visibility\r\n @Input() public showToolbarLeft: boolean = true;\r\n @Input() public showToolbarMiddle: boolean = true;\r\n @Input() public showToolbarRight: boolean = true;\r\n @Input() public showSecondaryToolbarToggle: boolean = true;\r\n @Input() public showSidebar: boolean = true;\r\n @Input() public showSidebarLeft: boolean = true;\r\n @Input() public showSidebarRight: boolean = true;\r\n // #endregion\r\n\r\n // #region Layout & Responsive Customization\r\n @Input() public toolbarDensity: ToolbarDensity = \"default\";\r\n @Input() public sidebarWidth?: string; // e.g., '280px'\r\n @Input() public toolbarPosition: ToolbarPosition = \"top\";\r\n @Input() public sidebarPosition: SidebarPosition = \"left\";\r\n @Input() public responsiveBreakpoint?: string | number;\r\n // #endregion\r\n\r\n // Internal loading state for overlay control\r\n public isLoading: boolean = true;\r\n private hasFirstRender: boolean = false;\r\n\r\n // Internal error state for error display\r\n public hasError: boolean = false;\r\n public currentErrorMessage: string = \"\";\r\n public errorTemplateData: any = {};\r\n\r\n // Helper method to get error template data\r\n public getErrorTemplateData(): any {\r\n return {\r\n errorMessage: this.currentErrorMessage,\r\n errorClass: this.errorClass,\r\n ...this.errorTemplateData,\r\n };\r\n }\r\n\r\n // Error template button actions\r\n public reloadViewer(): void {\r\n this.refresh();\r\n }\r\n\r\n public goBack(): void {\r\n if (window.history.length > 1) {\r\n window.history.back();\r\n } else {\r\n window.close();\r\n }\r\n }\r\n\r\n public closeViewer(): void {\r\n window.close();\r\n }\r\n\r\n // #region Convenience Configuration Setters\r\n @Input() public set controlVisibility(config: ControlVisibilityConfig) {\r\n if (config.download !== undefined) this.showDownload = config.download;\r\n if (config.print !== undefined) this.showPrint = config.print;\r\n if (config.find !== undefined) this.showFind = config.find;\r\n if (config.fullScreen !== undefined)\r\n this.showFullScreen = config.fullScreen;\r\n if (config.openFile !== undefined) this.showOpenFile = config.openFile;\r\n if (config.viewBookmark !== undefined)\r\n this.showViewBookmark = config.viewBookmark;\r\n if (config.annotations !== undefined)\r\n this.showAnnotations = config.annotations;\r\n }\r\n\r\n @Input() public set autoActions(config: AutoActionConfig) {\r\n if (config.downloadOnLoad !== undefined)\r\n this.downloadOnLoad = config.downloadOnLoad;\r\n if (config.printOnLoad !== undefined) this.printOnLoad = config.printOnLoad;\r\n if (config.showLastPageOnLoad !== undefined)\r\n this.showLastPageOnLoad = config.showLastPageOnLoad;\r\n if (config.rotateCW !== undefined) this.rotateCW = config.rotateCW;\r\n if (config.rotateCCW !== undefined) this.rotateCCW = config.rotateCCW;\r\n }\r\n\r\n @Input() public set errorHandling(config: ErrorConfig) {\r\n if (config.override !== undefined) this.errorOverride = config.override;\r\n if (config.append !== undefined) this.errorAppend = config.append;\r\n if (config.message !== undefined) this.errorMessage = config.message;\r\n }\r\n\r\n @Input() public set viewerConfig(config: ViewerConfig) {\r\n if (config.showSpinner !== undefined) this.showSpinner = config.showSpinner;\r\n if (config.useOnlyCssZoom !== undefined)\r\n this.useOnlyCssZoom = config.useOnlyCssZoom;\r\n if (config.diagnosticLogs !== undefined)\r\n this.diagnosticLogs = config.diagnosticLogs;\r\n if (config.locale !== undefined) this.locale = config.locale;\r\n }\r\n\r\n @Input() public set themeConfig(config: ThemeConfig) {\r\n if (config.theme !== undefined) this.theme = config.theme;\r\n if (config.primaryColor !== undefined)\r\n this.primaryColor = config.primaryColor;\r\n if (config.backgroundColor !== undefined)\r\n this.backgroundColor = config.backgroundColor;\r\n if (config.pageBorderColor !== undefined)\r\n this.pageBorderColor = config.pageBorderColor;\r\n if (config.toolbarColor !== undefined)\r\n this.toolbarColor = config.toolbarColor;\r\n if (config.textColor !== undefined) this.textColor = config.textColor;\r\n if (config.borderRadius !== undefined)\r\n this.borderRadius = config.borderRadius;\r\n if (config.customCSS !== undefined) this.customCSS = config.customCSS;\r\n }\r\n\r\n @Input() public set groupVisibility(config: GroupVisibilityConfig) {\r\n if (config.toolbarLeft !== undefined)\r\n this.showToolbarLeft = config.toolbarLeft;\r\n if (config.toolbarMiddle !== undefined)\r\n this.showToolbarMiddle = config.toolbarMiddle;\r\n if (config.toolbarRight !== undefined)\r\n this.showToolbarRight = config.toolbarRight;\r\n if (config.secondaryToolbarToggle !== undefined)\r\n this.showSecondaryToolbarToggle = config.secondaryToolbarToggle;\r\n if (config.sidebar !== undefined) this.showSidebar = config.sidebar;\r\n if (config.sidebarLeft !== undefined)\r\n this.showSidebarLeft = config.sidebarLeft;\r\n if (config.sidebarRight !== undefined)\r\n this.showSidebarRight = config.sidebarRight;\r\n }\r\n\r\n @Input() public set layoutConfig(config: LayoutConfig) {\r\n if (config.toolbarDensity !== undefined)\r\n this.toolbarDensity = config.toolbarDensity;\r\n if (config.sidebarWidth !== undefined)\r\n this.sidebarWidth = config.sidebarWidth;\r\n if (config.toolbarPosition !== undefined)\r\n this.toolbarPosition = config.toolbarPosition;\r\n if (config.sidebarPosition !== undefined)\r\n this.sidebarPosition = config.sidebarPosition;\r\n if (config.responsiveBreakpoint !== undefined)\r\n this.responsiveBreakpoint = config.responsiveBreakpoint;\r\n }\r\n // #endregion\r\n\r\n // #region Helper function for deprecated properties\r\n private setDeprecatedProperty(\r\n oldName: string,\r\n newProperty: string,\r\n value: any,\r\n ): void {\r\n if (this.diagnosticLogs) {\r\n console.warn(\r\n `⚠️ DEPRECATED: Property \"${oldName}\" is deprecated. Use \"${newProperty}\" instead.`,\r\n );\r\n }\r\n (this as any)[newProperty] = value;\r\n }\r\n // #endregion\r\n\r\n // #region Deprecated Properties (Simplified)\r\n /** @deprecated Use `downloadOnLoad` instead. This property will be removed in a future version. */\r\n @Input() public set startDownload(value: boolean) {\r\n this.setDeprecatedProperty(\"startDownload\", \"downloadOnLoad\", value);\r\n }\r\n\r\n /** @deprecated Use `printOnLoad` instead. This property will be removed in a future version. */\r\n @Input() public set startPrint(value: boolean) {\r\n this.setDeprecatedProperty(\"startPrint\", \"printOnLoad\", value);\r\n }\r\n\r\n /** @deprecated Use `showOpenFile` instead. This property will be removed in a future version. */\r\n @Input() public set openFile(value: boolean) {\r\n this.setDeprecatedProperty(\"openFile\", \"showOpenFile\", value);\r\n }\r\n\r\n /** @deprecated Use `showDownload` instead. This property will be removed in a future version. */\r\n @Input() public set download(value: boolean) {\r\n this.setDeprecatedProperty(\"download\", \"showDownload\", value);\r\n }\r\n\r\n /** @deprecated Use `showPrint` instead. This property will be removed in a future version. */\r\n @Input() public set print(value: boolean) {\r\n this.setDeprecatedProperty(\"print\", \"showPrint\", value);\r\n }\r\n\r\n /** @deprecated Use `showFullScreen` instead. This property will be removed in a future version. */\r\n @Input() public set fullScreen(value: boolean) {\r\n this.setDeprecatedProperty(\"fullScreen\", \"showFullScreen\", value);\r\n }\r\n\r\n /** @deprecated Use `showFind` instead. This property will be removed in a future version. */\r\n @Input() public set find(value: boolean) {\r\n this.setDeprecatedProperty(\"find\", \"showFind\", value);\r\n }\r\n\r\n /** @deprecated Use `showViewBookmark` instead. This property will be removed in a future version. */\r\n @Input() public set viewBookmark(value: boolean) {\r\n this.setDeprecatedProperty(\"viewBookmark\", \"showViewBookmark\", value);\r\n }\r\n\r\n /** @deprecated Use `showLastPageOnLoad` instead. This property will be removed in a future version. */\r\n @Input() public set lastPage(value: boolean) {\r\n this.setDeprecatedProperty(\"lastPage\", \"showLastPageOnLoad\", value);\r\n }\r\n // #endregion\r\n\r\n // #region External Window Properties\r\n @Input() public externalWindowOptions: string;\r\n public viewerTab: any;\r\n // #endregion\r\n\r\n // #region Private Properties\r\n private _src: string | Blob | Uint8Array;\r\n private _page: number;\r\n private isPostMessageReady = false;\r\n private postMessageReadiness = 0;\r\n private pendingInitialConfig = true;\r\n private initialConfigQueued = false;\r\n private actionQueueManager: ActionQueueManager;\r\n private changeOriginTracker = new ChangeOriginTracker();\r\n private messageIdCounter = 0;\r\n private pendingMessages = new Map<\r\n string,\r\n { resolve: Function; reject: Function }\r\n >();\r\n private pendingChanges: SimpleChanges[] = [];\r\n private relaseUrl?: () => void;\r\n // #endregion\r\n\r\n // #region Two-Way Binding Properties\r\n // Private backing fields for two-way binding properties\r\n private _zoom: string = \"auto\";\r\n private _rotation: number = 0;\r\n private _cursor: string = \"select\";\r\n private _scroll: string = \"vertical\";\r\n private _spread: string = \"none\";\r\n private _pageMode: string = \"none\";\r\n\r\n // Two-way binding Output events\r\n @Output() zoomChange = new EventEmitter<string>();\r\n\r\n @Output() cursorChange = new EventEmitter<string>();\r\n @Output() scrollChange = new EventEmitter<string>();\r\n @Output() spreadChange = new EventEmitter<string>();\r\n @Output() pageModeChange = new EventEmitter<string>();\r\n\r\n /**\r\n * Two-way binding for zoom level\r\n * Supports: auto, page-fit, page-width, page-actual, percentage values (e.g., \"150%\")\r\n */\r\n @Input()\r\n get zoom(): string {\r\n return this._zoom;\r\n }\r\n set zoom(value: string) {\r\n const normalizedValue = PropertyTransformers.transformZoom.toViewer(value);\r\n if (this._zoom !== normalizedValue) {\r\n this.changeOriginTracker.markProgrammatic(\"zoom\");\r\n this._zoom = normalizedValue;\r\n this.applyZoomToViewer(this._zoom);\r\n this.zoomChange.emit(this._zoom);\r\n }\r\n }\r\n\r\n /**\r\n * One-way binding for document rotation\r\n * Supports: 0, 90, 180, 270 degrees\r\n */\r\n @Input()\r\n set rotation(value: number) {\r\n const normalizedValue =\r\n PropertyTransformers.transformRotation.toViewer(value);\r\n if (this._rotation !== normalizedValue) {\r\n this._rotation = normalizedValue;\r\n this.applyRotationToViewer(this._rotation);\r\n }\r\n }\r\n\r\n get rotation(): number {\r\n return this._rotation;\r\n }\r\n\r\n /**\r\n * Two-way binding for cursor mode\r\n * Supports: select, hand, zoom\r\n */\r\n @Input()\r\n get cursor(): string {\r\n return this._cursor;\r\n }\r\n set cursor(value: string) {\r\n const normalizedValue =\r\n PropertyTransformers.transformCursor.toViewer(value);\r\n if (this._cursor !== normalizedValue) {\r\n this.changeOriginTracker.markProgrammatic(\"cursor\");\r\n this._cursor = normalizedValue;\r\n this.applyCursorToViewer(this._cursor);\r\n this.cursorChange.emit(this._cursor);\r\n }\r\n }\r\n\r\n /**\r\n * Two-way binding for scroll mode\r\n * Supports: vertical, horizontal, wrapped, page\r\n */\r\n @Input()\r\n get scroll(): string {\r\n return this._scroll;\r\n }\r\n set scroll(value: string) {\r\n const normalizedValue =\r\n PropertyTransformers.transformScroll.toViewer(value);\r\n if (this._scroll !== normalizedValue) {\r\n this.changeOriginTracker.markProgrammatic(\"scroll\");\r\n this._scroll = normalizedValue;\r\n this.applyScrollToViewer(this._scroll);\r\n this.scrollChange.emit(this._scroll);\r\n }\r\n }\r\n\r\n /**\r\n * Two-way binding for spread mode\r\n * Supports: none, odd, even\r\n */\r\n @Input()\r\n get spread(): string {\r\n return this._spread;\r\n }\r\n set spread(value: string) {\r\n const normalizedValue =\r\n PropertyTransformers.transformSpread.toViewer(value);\r\n if (this._spread !== normalizedValue) {\r\n this.changeOriginTracker.markProgrammatic(\"spread\");\r\n this._spread = normalizedValue;\r\n this.applySpreadToViewer(this._spread);\r\n this.spreadChange.emit(this._spread);\r\n }\r\n }\r\n\r\n /**\r\n * Two-way binding for page mode (sidebar state)\r\n * Supports: none, thumbs, bookmarks, attachments\r\n */\r\n @Input()\r\n get pageMode(): string {\r\n return this._pageMode;\r\n }\r\n set pageMode(value: string) {\r\n const normalizedValue =\r\n PropertyTransformers.transformPageMode.toViewer(value);\r\n if (this._pageMode !== normalizedValue) {\r\n this.changeOriginTracker.markProgrammatic(\"pageMode\");\r\n this._pageMode = normalizedValue;\r\n this.applyPageModeToViewer(this._pageMode);\r\n this.pageModeChange.emit(this._pageMode);\r\n }\r\n }\r\n\r\n @Input()\r\n public set page(_page: number) {\r\n this._page = _page;\r\n if (this.PDFViewerApplication && this.PDFViewerApplication.initialized) {\r\n this.PDFViewerApplication.page = this._page;\r\n } else {\r\n if (this.diagnosticLogs) {\r\n console.warn(\r\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;)\",\r\n );\r\n }\r\n }\r\n }\r\n\r\n public get page() {\r\n if (this.PDFViewerApplication && this.PDFViewerApplication.initialized) {\r\n return this.PDFViewerApplication.page;\r\n } else {\r\n if (this.diagnosticLogs) {\r\n console.warn(\r\n \"Document is not loaded yet!!!. Try to retrieve page# after full load.\",\r\n );\r\n }\r\n return this._page || 1;\r\n }\r\n }\r\n\r\n @Input()\r\n public set pdfSrc(_src: string | Blob | Uint8Array) {\r\n this._src = _src;\r\n }\r\n\r\n public get pdfSrc() {\r\n return this._src;\r\n }\r\n // #endregion\r\n\r\n // #region PDF.js Application Access Properties\r\n public get PDFViewerApplicationOptions() {\r\n let pdfViewerOptions = null;\r\n if (this.externalWindow) {\r\n if (this.viewerTab) {\r\n pdfViewerOptions = this.viewerTab.PDFViewerApplicationOptions;\r\n }\r\n } else {\r\n if (this.iframe.nativeElement.contentWindow) {\r\n pdfViewerOptions =\r\n this.iframe.nativeElement.contentWindow.PDFViewerApplicationOptions;\r\n }\r\n }\r\n return pdfViewerOptions;\r\n }\r\n\r\n public get PDFViewerApplication() {\r\n let pdfViewer = null;\r\n if (this.externalWindow) {\r\n if (this.viewerTab) {\r\n pdfViewer = this.viewerTab.PDFViewerApplication;\r\n }\r\n } else {\r\n if (this.iframe.nativeElement.contentWindow) {\r\n pdfViewer =\r\n this.iframe.nativeElement.contentWindow.PDFViewerApplication;\r\n }\r\n }\r\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: Viewer ->\", pdfViewer);\r\n return pdfViewer;\r\n }\r\n\r\n // #endregion\r\n // #endregion\r\n\r\n // #region Lifecycle Methods\r\n ngOnInit(): void { \r\n // 🟢 TEST LOG - Build verification (BUILD_ID from separate file)\r\n if (this.diagnosticLogs) {\r\n console.log(\r\n \"🟢 ng2-pdfjs-viewer.component.ts: TEST LOG - BUILD_ID:\",\r\n (window as any).NG2_PDF_VIEWER_BUILD_ID || \"BUILD_ID_NOT_LOADED\",\r\n );\r\n }\r\n \r\n // Configure action queue manager with diagnostic logs\r\n this.actionQueueManager = new ActionQueueManager(this._diagnosticLogs);\r\n \r\n // Connect action queue manager to PostMessage system\r\n this.actionQueueManager.setPostMessageExecutor((action, payload) =>\r\n this.sendControlMessage(action, payload),\r\n );\r\n\r\n // Send diagnostic logs setting to wrapper\r\n this.dispatchAction(\"set-diagnostic-logs\", this._diagnosticLogs, \"initial-load\");\r\n \r\n // Set up PostMessage listener\r\n this.setupMessageListener();\r\n \r\n // Load PDF for embedded views.\r\n if (!this.externalWindow) {\r\n this.loadPdf();\r\n }\r\n\r\n // Bind events.\r\n this.bindToPdfJsEventBus();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // Minimal initialization - rely on event-driven readiness notifications\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.PDFViewerApplication) {\r\n // Only apply changes if PostMessage API is ready and viewer is initialized\r\n if (this.isPostMessageReady && this.PDFViewerApplication.initialized) {\r\n this.applyChanges(changes);\r\n } else {\r\n this.pendingChanges.push(changes);\r\n }\r\n } else {\r\n this.pendingChanges.push(changes);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // Clean up pending messages\r\n this.pendingMessages.clear();\r\n\r\n // Clean up event listeners\r\n ComponentUtils.cleanupEventHandlers(this);\r\n\r\n // Reset state flags\r\n this.initialConfigQueued = false;\r\n\r\n // Clean up URL\r\n this.relaseUrl?.();\r\n }\r\n // #endregion\r\n\r\n // #region Message Handling Methods\r\n private generateMessageId(): string {\r\n return `msg_${++this.messageIdCounter}_${Date.now()}`;\r\n }\r\n\r\n private sendControlMessage(action: string, payload: any): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n const messageId = this.generateMessageId();\r\n \r\n const message: ControlMessage = {\r\n type: \"control-update\",\r\n action,\r\n payload,\r\n id: messageId,\r\n timestamp: Date.now(),\r\n };\r\n\r\n this.pendingMessages.set(messageId, { resolve, reject });\r\n\r\n // Send message to iframe\r\n if (\r\n this.iframe &&\r\n this.iframe.nativeElement &&\r\n this.iframe.nativeElement.contentWindow\r\n ) {\r\n this.iframe.nativeElement.contentWindow.postMessage(message, \"*\");\r\n } else {\r\n this.pendingMessages.delete(messageId);\r\n reject(new Error(\"Iframe not available\"));\r\n }\r\n });\r\n }\r\n\r\n private handleControlResponse(response: ControlResponse): void {\r\n const pendingMessage = this.pendingMessages.get(response.id);\r\n if (pendingMessage) {\r\n this.pendingMessages.delete(response.id);\r\n \r\n if (response.success) {\r\n pendingMessage.resolve(response);\r\n } else {\r\n pendingMessage.reject(new Error(response.error || \"Unknown error\"));\r\n }\r\n }\r\n }\r\n\r\n private setupMessageListener(): void {\r\n window.addEventListener(\"message\", (event) => {\r\n // Handle control responses from the viewer\r\n if (event.data && event.data.type === \"control-response\") {\r\n this.handleControlResponse(event.data);\r\n return;\r\n }\r\n \r\n // Handle PostMessage API ready notification\r\n if (event.data && event.data.type === \"postmessage-ready\") {\r\n this.isPostMessageReady = true;\r\n\r\n this.postMessageReadiness = event.data.readiness || 0;\r\n\r\n // CRITICAL FIX: Process queued actions when readiness level increases\r\n if (this.actionQueueManager) {\r\n this.actionQueueManager.updateReadiness(this.postMessageReadiness);\r\n this.actionQueueManager.processQueuedActions();\r\n }\r\n \r\n // Queue all initial configurations now that PostMessage API is ready (only once)\r\n if (!this.initialConfigQueued) {\r\n this.queueAllConfigurations();\r\n this.initialConfigQueued = true;\r\n }\r\n \r\n // Apply any pending changes that occurred before PostMessage API was ready\r\n this.applyPendingChanges();\r\n return;\r\n }\r\n \r\n // Handle state change notifications from PostMessage wrapper\r\n if (event.data && event.data.type === \"state-change\") {\r\n this.handleStateChangeNotification(event.data);\r\n return;\r\n }\r\n\r\n // Handle event notifications from PostMessage wrapper\r\n if (event.data && event.data.type === \"event-notification\") {\r\n this.handleEventNotification(event.data);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n private handleStateChangeNotification(notification: any): void {\r\n const { property, value, source } = notification;\r\n \r\n // Internal loading overlay control is system-driven and must be handled unconditionally\r\n if (property === \"loading\") {\r\n this.isLoading = !!value;\r\n // Clear error state when loading starts\r\n if (value) {\r\n this.hasError = false;\r\n this.currentErrorMessage = \"\";\r\n }\r\n return;\r\n }\r\n\r\n // Internal error state management\r\n if (property === \"error\") {\r\n this.hasError = !!value;\r\n if (value && typeof value === \"string\") {\r\n this.currentErrorMessage = value;\r\n this.errorTemplateData = this.getErrorTemplateData();\r\n }\r\n return;\r\n }\r\n\r\n // Only process user-initiated changes to avoid infinite loops\r\n if (\r\n source === \"user\" &&\r\n !this.changeOriginTracker.isProgrammatic(property)\r\n ) {\r\n this.changeOriginTracker.markUserInitiated(property);\r\n \r\n switch (property) {\r\n case \"cursor\":\r\n if (this._cursor !== value) {\r\n this._cursor =\r\n PropertyTransformers.transformCursor.fromViewer(value);\r\n this.cursorChange.emit(this._cursor);\r\n }\r\n break;\r\n \r\n case \"scroll\":\r\n if (this._scroll !== value) {\r\n this._scroll =\r\n PropertyTransformers.transformScroll.fromViewer(value);\r\n this.scrollChange.emit(this._scroll);\r\n }\r\n break;\r\n \r\n case \"spread\":\r\n if (this._spread !== value) {\r\n this._spread =\r\n PropertyTransformers.transformSpread.fromViewer(value);\r\n this.spreadChange.emit(this._spread);\r\n }\r\n break;\r\n \r\n case \"pageMode\":\r\n if (this._pageMode !== value) {\r\n this._pageMode =\r\n PropertyTransformers.transformPageMode.fromViewer(value);\r\n this.pageModeChange.emit(this._pageMode);\r\n }\r\n break;\r\n \r\n case \"zoom\":\r\n if (this._zoom !== value) {\r\n this._zoom = PropertyTransformers.transformZoom.fromViewer(value);\r\n this.zoomChange.emit(this._zoom);\r\n }\r\n break;\r\n \r\n case \"rotation\":\r\n if (this._rotation !== value) {\r\n this._rotation =\r\n PropertyTransformers.transformRotation.fromViewer(value);\r\n }\r\n break;\r\n \r\n // Note: namedDest is now a simple input property, not a two-way binding\r\n \r\n default:\r\n if (this.diagnosticLogs) {\r\n console.log(\r\n `🔍 PdfJsViewer: Unknown state change property: ${property}`,\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n private handleEventNotification(notification: any): void {\r\n const { eventName, eventData } = notification;\r\n\r\n // Emit the appropriate event based on the event name\r\n switch (eventName) {\r\n case \"documentError\":\r\n this.onDocumentError.emit(eventData);\r\n break;\r\n\r\n case \"documentInit\":\r\n this.onDocumentInit.emit();\r\n break;\r\n\r\n case \"pagesInit\":\r\n this.onPagesInit.emit(eventData);\r\n break;\r\n\r\n case \"presentationModeChanged\":\r\n this.onPresentationModeChanged.emit(eventData);\r\n break;\r\n\r\n case \"openFile\":\r\n this.onOpenFile.emit();\r\n break;\r\n\r\n case \"find\":\r\n this.onFind.emit(eventData);\r\n break;\r\n\r\n case \"updateFindMatchesCount\":\r\n this.onUpdateFindMatchesCount.emit(eventData);\r\n break;\r\n\r\n case \"metadataLoaded\":\r\n this.onMetadataLoaded.emit(eventData);\r\n break;\r\n\r\n case \"outlineLoaded\":\r\n this.onOutlineLoaded.emit(eventData);\r\n break;\r\n\r\n case \"pageRendered\":\r\n this.onPageRendered.emit(eventData);\r\n break;\r\n\r\n case \"annotationLayerRendered\":\r\n this.onAnnotationLayerRendered.emit(eventData);\r\n break;\r\n\r\n case \"bookmarkClick\":\r\n this.onBookmarkClick.emit(eventData);\r\n break;\r\n\r\n case \"idle\":\r\n this.onIdle.emit();\r\n break;\r\n\r\n default:\r\n if (this.diagnosticLogs) {\r\n console.log(\r\n `🔍 PdfJsViewer: Unknown event notification: ${eventName}`,\r\n );\r\n }\r\n }\r\n }\r\n // #endregion\r\n\r\n // #region Property Mapping and Update Methods\r\n private mapPropertyToAction(propertyName: string): string | null {\r\n return ComponentUtils.getActionForProperty(propertyName);\r\n }\r\n\r\n private updateViewerControl(propertyName: string, value: any): void {\r\n const action = this.mapPropertyToAction(propertyName);\r\n if (action) {\r\n // Use universal dispatcher instead of direct PostMessage\r\n this.dispatchAction(action, value, \"property-change\");\r\n } else {\r\n // Property is intentionally not mapped (handled via query parameters or direct API)\r\n }\r\n }\r\n\r\n private applyChanges(changes: SimpleChanges): void {\r\n Object.keys(changes).forEach((propertyName) => {\r\n const change = changes[propertyName];\r\n\r\n if (change.currentValue !== change.previousValue) {\r\n // Handle auto-actions - queue for document load, don't execute immediately\r\n const autoActions = [\r\n \"downloadOnLoad\",\r\n \"printOnLoad\",\r\n \"showLastPageOnLoad\",\r\n \"rotateCW\",\r\n \"rotateCCW\",\r\n ];\r\n if (autoActions.includes(propertyName)) {\r\n // Re-queue all configurations when auto-actions change\r\n this.initialConfigQueued = false;\r\n if (this.isPostMessageReady) {\r\n this.queueAllConfigurations();\r\n this.initialConfigQueued = true;\r\n }\r\n return;\r\n }\r\n\r\n // Use universal dispatcher for ALL actions - pure event-driven approach\r\n const action = this.mapPropertyToAction(propertyName);\r\n if (action) {\r\n this.dispatchAction(action, change.currentValue, \"property-change\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n private applyPendingChanges(): void {\r\n // Only apply pending changes if PostMessage API is ready\r\n if (!this.isPostMessageReady) {\r\n return;\r\n }\r\n \r\n if (this.pendingChanges.length > 0) {\r\n this.pendingChanges.forEach((changes, index) => {\r\n this.processChangesForQueuing(changes);\r\n });\r\n this.pendingChanges = [];\r\n } else {\r\n }\r\n }\r\n\r\n private processChangesForQueuing(changes: SimpleChanges): void {\r\n Object.keys(changes).forEach((propertyName) => {\r\n const change = changes[propertyName];\r\n \r\n if (change.currentValue !== change.previousValue) {\r\n // Handle auto-actions - queue for document load, don't execute immediately\r\n const autoActions = [\r\n \"downloadOnLoad\",\r\n \"printOnLoad\",\r\n \"showLastPageOnLoad\",\r\n \"rotateCW\",\r\n \"rotateCCW\",\r\n ];\r\n if (autoActions.includes(propertyName)) {\r\n // Re-queue all configurations when auto-actions change\r\n this.initialConfigQueued = false;\r\n if (this.isPostMessageReady) {\r\n this.queueAllConfigurations();\r\n this.initialConfigQueued = true;\r\n }\r\n return;\r\n }\r\n \r\n // Use universal dispatcher for ALL actions - pure event-driven approach\r\n const action = this.mapPropertyToAction(propertyName);\r\n if (action) {\r\n this.dispatchAction(action, change.currentValue, \"property-change\");\r\n }\r\n }\r\n });\r\n }\r\n // #endregion\r\n\r\n // #region PDF.js Event Binding Methods\r\n /**\r\n * Waits for the PDF.js viewer to be ready, and binds the the event bus.\r\n */\r\n private bindToPdfJsEventBus() {\r\n // Store the event listener reference so we can remove it later\r\n const webviewerLoadedHandler = () => {\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: webviewerloaded event received\");\r\n\r\n // Set locale immediately when PDF.js is loaded but before it initializes\r\n // https://github.com/mozilla/pdf.js/issues/11829#issuecomment-617668679\r\n if (this.locale && this.iframe?.nativeElement?.contentWindow) {\r\n try {\r\n const iframeWindow = this.iframe.nativeElement.contentWindow;\r\n if (iframeWindow.PDFViewerApplicationOptions) {\r\n iframeWindow.PDFViewerApplicationOptions.set(\"localeProperties\", {\r\n lang: this.locale,\r\n });\r\n if (this.diagnosticLogs)\r\n console.debug(\r\n `PdfJsViewer: Locale set to ${this.locale} before initialization`,\r\n );\r\n }\r\n } catch (error) {\r\n if (this.diagnosticLogs)\r\n console.debug(\r\n \"PdfJsViewer: Could not set locale before initialization:\",\r\n error,\r\n );\r\n }\r\n }\r\n\r\n if (!this.PDFViewerApplication) {\r\n if (this.diagnosticLogs)\r\n console.debug(\r\n \"PdfJsViewer: Viewer not yet (or no longer) available, events can not yet be bound.\",\r\n );\r\n return;\r\n }\r\n\r\n // https://github.com/mozilla/pdf.js/issues/9527\r\n this.PDFViewerApplication.initializedPromise.then(() => {\r\n // All configurations are now handled via PostMessage system\r\n // No need to call configureVisibleFeatures() anymore\r\n \r\n // Apply any pending changes that occurred before initialization\r\n this.applyPendingChanges();\r\n\r\n const app = this.PDFViewerApplication;\r\n const eventBus = app.eventBus;\r\n \r\n // Store event handler references for cleanup\r\n const documentLoadedHandler = () => {\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: The document has now been loaded!\");\r\n this.onDocumentLoad.emit();\r\n \r\n // Queue auto-actions for this document load (not from component initialization)\r\n this.queueAutoActionsForDocumentLoad();\r\n \r\n // Execute all queued auto-actions\r\n this.actionQueueManager.onDocumentLoaded();\r\n };\r\n\r\n // Note: pagesInit event is now handled via the PostMessage wrapper event system\r\n\r\n const pagesLoadedHandler = () => {\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: All pages have been fully loaded!\");\r\n\r\n // Execute auto-print on pages loaded (ensures PDF is fully ready for printing)\r\n if (this.printOnLoad === true) {\r\n this.dispatchAction(\"trigger-print\", true, \"initial-load\");\r\n }\r\n };\r\n\r\n const beforePrintHandler = () => {\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: The document is about to be printed!\");\r\n this.onBeforePrint.emit();\r\n };\r\n\r\n const afterPrintHandler = () => {\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: The document has been printed!\");\r\n this.onAfterPrint.emit();\r\n };\r\n\r\n const pageChangingHandler = (event: any) => {\r\n if (this.diagnosticLogs)\r\n console.debug(\r\n \"PdfJsViewer: The page has changed:\",\r\n event.pageNumber,\r\n );\r\n \r\n // Update two-way binding for page\r\n if (\r\n this._page !== event.pageNumber &&\r\n !this.changeOriginTracker.isProgrammatic(\"page\")\r\n ) {\r\n this.changeOriginTracker.markUserInitiated(\"page\");\r\n this._page = event.pageNumber;\r\n // Note: page property uses existing setter/getter, no need to emit pageChange here\r\n }\r\n \r\n this.onPageChange.emit(event.pageNumber);\r\n };\r\n\r\n const rotationChangingHandler = (event: any) => {\r\n const newRotation: ChangedRotation = {\r\n rotation: event.pagesRotation,\r\n page: event.pageNumber,\r\n };\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: The rotation has changed!\", event);\r\n \r\n // Update two-way binding for rotation\r\n const normalizedRotation =\r\n PropertyTransformers.transformRotation.fromViewer(\r\n event.pagesRotation,\r\n );\r\n if (\r\n this._rotation !== normalizedRotation &&\r\n !this.changeOriginTracker.isProgrammatic(\"rotation\")\r\n ) {\r\n this.changeOriginTracker.markUserInitiated(\"rotation\");\r\n this._rotation = normalizedRotation;\r\n }\r\n \r\n this.onRotationChange.emit(newRotation);\r\n };\r\n\r\n const scaleChangingHandler = (event: any) => {\r\n const newScale: ChangedScale = event.scale;\r\n if (this.diagnosticLogs)\r\n console.debug(\r\n \"PdfJsViewer: The document has scale has changed!\",\r\n newScale,\r\n );\r\n \r\n // Update two-way binding for zoom\r\n const normalizedZoom = PropertyTransformers.transformZoom.fromViewer(\r\n event.scale,\r\n );\r\n if (\r\n this._zoom !== normalizedZoom &&\r\n !this.changeOriginTracker.isProgrammatic(\"zoom\")\r\n ) {\r\n this.changeOriginTracker.markUserInitiated(\"zoom\");\r\n this._zoom = normalizedZoom;\r\n this.zoomChange.emit(normalizedZoom);\r\n }\r\n \r\n this.onScaleChange.emit(newScale);\r\n };\r\n \r\n // Store handlers for cleanup\r\n (this as any)._pdfEventHandlers = {\r\n documentloaded: documentLoadedHandler,\r\n pagesloaded: pagesLoadedHandler,\r\n beforeprint: beforePrintHandler,\r\n afterprint: afterPrintHandler,\r\n pagechanging: pageChangingHandler,\r\n rotationchanging: rotationChangingHandler,\r\n scalechanging: scaleChangingHandler,\r\n };\r\n \r\n // Attach event listeners\r\n eventBus.on(\"documentloaded\", documentLoadedHandler);\r\n eventBus.on(\"pagesloaded\", pagesLoadedHandler);\r\n eventBus.on(\"beforeprint\", beforePrintHandler);\r\n eventBus.on(\"afterprint\", afterPrintHandler);\r\n eventBus.on(\"pagechanging\", pageChangingHandler);\r\n eventBus.on(\"rotationchanging\", rotationChangingHandler);\r\n eventBus.on(\"scalechanging\", scaleChangingHandler);\r\n });\r\n };\r\n \r\n // Store the handler reference for cleanup\r\n (this as any)._webviewerLoadedHandler = webviewerLoadedHandler;\r\n \r\n document.addEventListener(\"webviewerloaded\", webviewerLoadedHandler);\r\n }\r\n // #endregion\r\n\r\n // #region Configuration and Action Queue Methods\r\n private queueAllConfigurations(): void {\r\n // Queue control visibility configurations (immediate actions)\r\n this.queueConfiguration(\"showOpenFile\", this.showOpenFile, \"show-openfile\");\r\n this.queueConfiguration(\"showDownload\", this.showDownload, \"show-download\");\r\n this.queueConfiguration(\"showPrint\", this.showPrint, \"show-print\");\r\n this.queueConfiguration(\r\n \"showFullScreen\",\r\n this.showFullScreen,\r\n \"show-fullscreen\",\r\n );\r\n this.queueConfiguration(\"showFind\", this.showFind, \"show-find\");\r\n this.queueConfiguration(\r\n \"showViewBookmark\",\r\n this.showViewBookmark,\r\n \"show-bookmark\",\r\n );\r\n this.queueConfiguration(\r\n \"showAnnotations\",\r\n this.showAnnotations,\r\n \"show-annotations\",\r\n );\r\n\r\n // Toolbar/Sidebar group visibility\r\n this.queueConfiguration(\r\n \"showToolbarLeft\",\r\n this.showToolbarLeft,\r\n \"show-toolbar-left\",\r\n );\r\n this.queueConfiguration(\r\n \"showToolbarMiddle\",\r\n this.showToolbarMiddle,\r\n \"show-toolbar-middle\",\r\n );\r\n this.queueConfiguration(\r\n \"showToolbarRight\",\r\n this.showToolbarRight,\r\n \"show-toolbar-right\",\r\n );\r\n this.queueConfiguration(\r\n \"showSecondaryToolbarToggle\",\r\n this.showSecondaryToolbarToggle,\r\n \"show-secondary-toolbar-toggle\",\r\n );\r\n this.queueConfiguration(\"showSidebar\", this.showSidebar, \"show-sidebar\");\r\n this.queueConfiguration(\r\n \"showSidebarLeft\",\r\n this.showSidebarLeft,\r\n \"show-sidebar-left\",\r\n );\r\n this.queueConfiguration(\r\n \"showSidebarRight\",\r\n this.showSidebarRight,\r\n \"show-sidebar-right\",\r\n );\r\n\r\n // Layout customization\r\n this.queueConfiguration(\r\n \"toolbarDensity\",\r\n this.toolbarDensity,\r\n \"set-toolbar-density\",\r\n );\r\n if (this.sidebarWidth) {\r\n this.queueConfiguration(\r\n \"sidebarWidth\",\r\n this.sidebarWidth,\r\n \"set-sidebar-width\",\r\n );\r\n }\r\n this.queueConfiguration(\r\n \"toolbarPosition\",\r\n this.toolbarPosition,\r\n \"set-toolbar-position\",\r\n );\r\n this.queueConfiguration(\r\n \"sidebarPosition\",\r\n this.sidebarPosition,\r\n \"set-sidebar-position\",\r\n );\r\n if (this.responsiveBreakpoint !== undefined) {\r\n this.queueConfiguration(\r\n \"responsiveBreakpoint\",\r\n this.responsiveBreakpoint,\r\n \"set-responsive-breakpoint\",\r\n );\r\n }\r\n\r\n // Queue mode configurations (immediate actions)\r\n if (this.cursor) {\r\n this.queueConfiguration(\"cursor\", this.cursor, \"set-cursor\");\r\n }\r\n if (this.scroll) {\r\n this.queueConfiguration(\"scroll\", this.scroll, \"set-scroll\");\r\n }\r\n if (this.spread) {\r\n this.queueConfiguration(\"spread\", this.spread, \"set-spread\");\r\n }\r\n\r\n // Queue navigation configurations (immediate actions)\r\n if (this._page) {\r\n this.queueConfiguration(\"page\", this._page, \"set-page\");\r\n }\r\n if (this.zoom) {\r\n this.queueConfiguration(\"zoom\", this.zoom, \"set-zoom\");\r\n }\r\n // Note: zoom is now handled by two-way binding [(zoom)]\r\n // Queue navigation configuration if specified\r\n if (this.namedDest && this.namedDest.trim() !== \"\") {\r\n this.queueConfiguration(\"namedDest\", this.namedDest, \"go-to-named-dest\");\r\n }\r\n if (this.pageMode) {\r\n this.queueConfiguration(\"pageMode\", this.pageMode, \"update-page-mode\");\r\n }\r\n\r\n // Queue rotation configurations (immediate actions)\r\n if (this.rotateCW === true) {\r\n this.queueConfiguration(\"rotateCW\", this.rotateCW, \"trigger-rotate-cw\");\r\n }\r\n if (this.rotateCCW === true) {\r\n this.queueConfiguration(\r\n \"rotateCCW\",\r\n this.rotateCCW,\r\n \"trigger-rotate-ccw\",\r\n );\r\n }\r\n\r\n // Queue error handling configurations (non-auto-actions)\r\n if (this.errorMessage) {\r\n this.queueConfiguration(\r\n \"errorMessage\",\r\n this.errorMessage,\r\n \"set-error-message\",\r\n );\r\n }\r\n if (this.errorOverride !== undefined) {\r\n this.queueConfiguration(\r\n \"errorOverride\",\r\n this.errorOverride,\r\n \"set-error-override\",\r\n );\r\n }\r\n if (this.errorAppend !== undefined) {\r\n this.queueConfiguration(\r\n \"errorAppend\",\r\n this.errorAppend,\r\n \"set-error-append\",\r\n );\r\n }\r\n\r\n // Queue theme and visual customization configurations\r\n // Always queue theme to ensure initial styles are applied\r\n\r\n this.queueConfiguration(\"theme\", this.theme || \"light\", \"set-theme\");\r\n\r\n if (this.primaryColor) {\r\n this.queueConfiguration(\r\n \"primaryColor\",\r\n this.primaryColor,\r\n \"set-primary-color\",\r\n );\r\n }\r\n if (this.backgroundColor) {\r\n this.queueConfiguration(\r\n \"backgroundColor\",\r\n this.backgroundColor,\r\n \"set-background-color\",\r\n );\r\n }\r\n if (this.pageBorderColor) {\r\n this.queueConfiguration(\r\n \"pageBorderColor\",\r\n this.pageBorderColor,\r\n \"set-page-border-color\",\r\n );\r\n }\r\n if (this.toolbarColor) {\r\n this.queueConfiguration(\r\n \"toolbarColor\",\r\n this.toolbarColor,\r\n \"set-toolbar-color\",\r\n );\r\n }\r\n if (this.textColor) {\r\n this.queueConfiguration(\"textColor\", this.textColor, \"set-text-color\");\r\n }\r\n if (this.borderRadius) {\r\n this.queueConfiguration(\r\n \"borderRadius\",\r\n this.borderRadius,\r\n \"set-border-radius\",\r\n );\r\n }\r\n if (this.customCSS) {\r\n this.queueConfiguration(\"customCSS\", this.customCSS, \"set-custom-css\");\r\n }\r\n\r\n // Queue CSS zoom configurations (immediate actions)\r\n // Note: Locale is now set via URL parameter, not PostMessage\r\n if (this.useOnlyCssZoom !== undefined) {\r\n this.queueConfiguration(\r\n \"useOnlyCssZoom\",\r\n this.useOnlyCssZoom,\r\n \"set-css-zoom\",\r\n );\r\n }\r\n\r\n // Queue event configurations (non-auto-actions)\r\n if (this.onBeforePrint) {\r\n this.queueConfiguration(\"beforePrint\", true, \"enable-before-print\");\r\n }\r\n if (this.onAfterPrint) {\r\n this.queueConfiguration(\"afterPrint\", true, \"enable-after-print\");\r\n }\r\n if (this.onDocumentLoad) {\r\n this.queueConfiguration(\"pagesLoaded\", true, \"enable-pages-loaded\");\r\n }\r\n if (this.onPageChange) {\r\n this.queueConfiguration(\"pageChange\", true, \"enable-page-change\");\r\n }\r\n\r\n // Queue new high-value event configurations\r\n if (this.onDocumentError) {\r\n this.queueConfiguration(\"documentError\", true, \"enable-document-error\");\r\n }\r\n if (this.onDocumentInit) {\r\n this.queueConfiguration(\"documentInit\", true, \"enable-document-init\");\r\n }\r\n if (this.onPagesInit) {\r\n this.queueConfiguration(\"pagesInit\", true, \"enable-pages-init\");\r\n }\r\n if (this.onPresentationModeChanged) {\r\n this.queueConfiguration(\r\n \"presentationModeChanged\",\r\n true,\r\n \"enable-presentation-mode-changed\",\r\n );\r\n }\r\n if (this.onOpenFile) {\r\n this.queueConfiguration(\"openFile\", true, \"enable-open-file\");\r\n }\r\n if (this.onFind) {\r\n this.queueConfiguration(\"find\", true, \"enable-find\");\r\n }\r\n if (this.onUpdateFindMatchesCount) {\r\n this.queueConfiguration(\r\n \"updateFindMatchesCount\",\r\n true,\r\n \"enable-update-find-matches-count\",\r\n );\r\n }\r\n if (this.onMetadataLoaded) {\r\n this.queueConfiguration(\"metadataLoaded\", true, \"enable-metadata-loaded\");\r\n }\r\n if (this.onOutlineLoaded) {\r\n this.queueConfiguration(\"outlineLoaded\", true, \"enable-outline-loaded\");\r\n }\r\n if (this.onPageRendered) {\r\n this.queueConfiguration(\"pageRendered\", true, \"enable-page-rendered\");\r\n }\r\n\r\n // New high-value events\r\n if (this.onAnnotationLayerRendered) {\r\n this.queueConfiguration(\r\n \"annotationLayerRendered\",\r\n true,\r\n \"enable-annotation-layer-rendered\",\r\n );\r\n }\r\n if (this.onBookmarkClick) {\r\n this.queueConfiguration(\"bookmarkClick\", true, \"enable-bookmark-click\");\r\n }\r\n if (this.onIdle) {\r\n this.queueConfiguration(\"idle\", true, \"enable-idle\");\r\n }\r\n\r\n // Note: Auto-actions are now queued when the document loads, not during component initialization\r\n // This ensures they use the current property values at the time of document load\r\n }\r\n\r\n private queueAutoActionsForDocumentLoad(): void {\r\n // Use universal dispatcher for auto-actions\r\n if (this.downloadOnLoad === true) {\r\n this.dispatchAction(\"trigger-download\", true, \"initial-load\");\r\n }\r\n\r\n if (this.showLastPageOnLoad === true) {\r\n this.dispatchAction(\"go-to-last-page\", true, \"initial-load\");\r\n }\r\n\r\n // Auto-print is handled in pagesLoadedHandler for timing reasons\r\n }\r\n\r\n private queueConfiguration(\r\n propertyName: string,\r\n value: any,\r\n action: string,\r\n ): void {\r\n // Use universal dispatcher for all configuration actions\r\n this.dispatchAction(action, value, \"initial-load\");\r\n }\r\n\r\n public refresh(): void {\r\n // Needs to be invoked for external window or when needs to reload pdf\r\n\r\n // Clean up existing event listeners\r\n ComponentUtils.cleanupEventHandlers(this);\r\n \r\n // Clear the action queue to ensure clean state\r\n if (this.actionQueueManager) {\r\n this.actionQueueManager.clearQueues();\r\n }\r\n \r\n // Reset PostMessage readiness state\r\n this.isPostMessageReady = false;\r\n this.postMessageReadiness = 0;\r\n this.pendingInitialConfig = true;\r\n this.initialConfigQueued = false; // Reset initial config flag\r\n \r\n // Reload the PDF - this will trigger queueAllConfigurations() when PostMessage API is ready\r\n this.loadPdf();\r\n }\r\n\r\n // Public method for external control messages\r\n public sendViewerControlMessage(action: string, payload: any): Promise<any> {\r\n return this.sendControlMessage(action, payload);\r\n }\r\n\r\n // #region Public Methods for On-Demand Actions\r\n public triggerDownload(): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\r\n return this.dispatchAction(\"trigger-download\", true, \"user-interaction\");\r\n }\r\n\r\n public triggerPrint(): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\r\n return this.dispatchAction(\"trigger-print\", true, \"user-interaction\");\r\n }\r\n\r\n public setPage(page: number): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\r\n return this.dispatchAction(\"set-page\", page, \"user-interaction\");\r\n }\r\n\r\n public setZoom(zoom: string): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\r\n return this.dispatchAction(\"set-zoom\", zoom, \"user-interaction\");\r\n }\r\n\r\n public goToLastPage(): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\r\n return this.dispatchAction(\"go-to-last-page\", true, \"user-interaction\");\r\n }\r\n\r\n public setCursor(cursor: string): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions\r\n return this.dispatchAction(\"set-cursor\", cursor, \"user-interaction\");\r\n }\r\n\r\n public setScroll(scroll: string): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions\r\n return this.dispatchAction(\"set-scroll\", scroll, \"user-interaction\");\r\n }\r\n\r\n public setSpread(spread: string): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions\r\n return this.dispatchAction(\"set-spread\", spread, \"user-interaction\");\r\n }\r\n\r\n public triggerRotation(\r\n direction: \"cw\" | \"ccw\",\r\n ): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions\r\n const action =\r\n direction === \"cw\" ? \"trigger-rotate-cw\" : \"trigger-rotate-ccw\";\r\n return this.dispatchAction(action, true, \"user-interaction\");\r\n }\r\n\r\n public goToPage(page: number): Promise<ActionExecutionResult> {\r\n // Alias for setPage for backward compatibility\r\n return this.setPage(page);\r\n }\r\n // #endregion\r\n\r\n // Action queue management methods\r\n public getActionStatus(\r\n actionId: string,\r\n ): \"pending\" | \"executing\" | \"completed\" | \"failed\" | \"not-found\" {\r\n if (!this.actionQueueManager) {\r\n return \"not-found\";\r\n }\r\n return this.actionQueueManager.getActionStatus(actionId);\r\n }\r\n\r\n public getQueueStatus(): { queuedActions: number; executedActions: number } {\r\n if (!this.actionQueueManager) {\r\n return {\r\n queuedActions: 0,\r\n executedActions: 0,\r\n };\r\n }\r\n return this.actionQueueManager.getQueueStatus();\r\n }\r\n\r\n public clearActionQueue(): void {\r\n if (this.actionQueueManager) {\r\n this.actionQueueManager.clearQueues();\r\n }\r\n }\r\n // #endregion\r\n\r\n // #region PDF Loading and URL Handling\r\n private loadPdf(): void {\r\n if (!this.validatePdfSource()) return;\r\n\r\n this.setupExternalWindow();\r\n const fileUrl = this.createFileUrl();\r\n const viewerUrl = this.buildViewerUrl(fileUrl);\r\n this.navigateToViewer(viewerUrl);\r\n }\r\n\r\n private validatePdfSource(): boolean {\r\n return !!this._src;\r\n }\r\n\r\n private setupExternalWindow(): void {\r\n if (!this.externalWindow) return;\r\n\r\n if (typeof this.viewerTab === \"undefined\" || this.viewerTab.closed) {\r\n this.viewerTab = window.open(\r\n \"\",\r\n this.target,\r\n this.externalWindowOptions || \"\",\r\n );\r\n if (this.viewerTab == null) {\r\n if (this.diagnosticLogs) {\r\n console.error(\r\n \"ng2-pdfjs-viewer: For 'externalWindow = true'. i.e opening in new tab to work, pop-ups should be enabled.\",\r\n );\r\n }\r\n return;\r\n }\r\n\r\n if (this.showSpinner) {\r\n this.renderLoadingSpinner();\r\n }\r\n }\r\n }\r\n\r\n private renderLoadingSpinner(): void {\r\n this.viewerTab.document.write(`\r\n <style>\r\n .loader {\r\n position: fixed;\r\n left: 40%;\r\n top: 40%;\r\n border: 16px solid #f3f3f3;\r\n border-radius: 50%;\r\n border-top: 16px solid #3498db;\r\n width: 120px;\r\n height: 120px;\r\n animation: spin 2s linear infinite;\r\n }\r\n @keyframes spin {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n </style>\r\n <div class=\"loader\"></div>\r\n `);\r\n }\r\n\r\n private createFileUrl(): string {\r\n this.relaseUrl?.();\r\n\r\n if (this._src instanceof Blob) {\r\n const url = URL.createObjectURL(this._src);\r\n this.relaseUrl = () => URL.revokeObjectURL(url);\r\n return encodeURIComponent(url);\r\n } else if (this._src instanceof Uint8Array) {\r\n let blob = new Blob([this._src], { type: \"application/pdf\" });\r\n const url = URL.createObjectURL(blob);\r\n this.relaseUrl = () => URL.revokeObjectURL(url);\r\n return encodeURIComponent(url);\r\n } else {\r\n return this._src;\r\n }\r\n }\r\n\r\n private buildViewerUrl(fileUrl: string): string {\r\n let viewerUrl = this.getBaseViewerUrl();\r\n viewerUrl = this.addFileParameter(viewerUrl, fileUrl);\r\n viewerUrl = this.addViewerIdParameter(viewerUrl);\r\n viewerUrl = this.addCacheBustingIfNeeded(viewerUrl);\r\n\r\n return viewerUrl;\r\n }\r\n\r\n private getBaseViewerUrl(): string {\r\n return this.viewerFolder\r\n ? `${this.viewerFolder}/web/viewer.html`\r\n : `assets/pdfjs/web/viewer.html`;\r\n }\r\n\r\n private addFileParameter(viewerUrl: string, fileUrl: string): string {\r\n return `${viewerUrl}?file=${fileUrl}`;\r\n }\r\n\r\n private addViewerIdParameter(viewerUrl: string): string {\r\n return typeof this.viewerId !== \"undefined\"\r\n ? `${viewerUrl}&viewerId=${this.viewerId}`\r\n : viewerUrl;\r\n }\r\n\r\n private addCacheBustingIfNeeded(viewerUrl: string): string {\r\n if (this.isDevelopmentMode()) {\r\n const cacheBuster = Date.now();\r\n\r\n return `${viewerUrl}&_t=${cacheBuster}`;\r\n } else {\r\n return viewerUrl;\r\n }\r\n }\r\n\r\n private isDevelopmentMode(): boolean {\r\n return (\r\n window.location.hostname === \"localhost\" ||\r\n window.location.hostname === \"127.0.0.1\" ||\r\n window.location.port === \"4200\" ||\r\n window.location.href.includes(\"localhost:4200\")\r\n );\r\n }\r\n\r\n private navigateToViewer(viewerUrl: string): void {\r\n if (this.externalWindow) {\r\n this.viewerTab.location.href = viewerUrl;\r\n } else {\r\n this.iframe.nativeElement.contentWindow.location.replace(viewerUrl);\r\n }\r\n \r\n if (this.diagnosticLogs) {\r\n this.logViewerConfiguration(viewerUrl);\r\n }\r\n }\r\n\r\n private logViewerConfiguration(viewerUrl: string): void {\r\n console.debug(`PdfJsViewer: Minimal URL configuration:\r\n pdfSrc = ${this.pdfSrc}\r\n externalWindow = ${this.externalWindow}\r\n viewerFolder = ${this.viewerFolder}\r\n viewerId = ${this.viewerId}\r\n finalUrl = ${viewerUrl}\r\n \r\n All other configurations handled via PostMessage system:\r\n showOpenFile = ${this.showOpenFile}\r\n showDownload = ${this.showDownload}\r\n showViewBookmark = ${this.showViewBookmark}\r\n showPrint = ${this.showPrint}\r\n showFullScreen = ${this.showFullScreen}\r\n showFind = ${this.showFind}\r\n cursor = ${this.cursor}\r\n scroll = ${this.scroll}\r\n spread = ${this.spread}\r\n page = ${this.page}\r\n zoom = ${this.zoom}\r\n namedDest = ${this.namedDest}\r\n pageMode = ${this.pageMode}\r\n errorOverride = ${this.errorOverride}\r\n errorAppend = ${this.errorAppend}\r\n errorMessage = ${this.errorMessage}\r\n locale = ${this.locale}\r\n useOnlyCssZoom = ${this.useOnlyCssZoom}\r\n \r\n Auto-actions (handled by action queue):\r\n downloadOnLoad = ${this.downloadOnLoad}\r\n printOnLoad = ${this.printOnLoad}\r\n showLastPageOnLoad = ${this.showLastPageOnLoad}\r\n `);\r\n }\r\n // #endregion\r\n\r\n // #region Two-Way Binding Helper Methods\r\n private applyZoomToViewer(zoom: string): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"set-zoom\", zoom, \"property-change\");\r\n }\r\n\r\n private applyRotationToViewer(rotation: number): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"set-rotation\", rotation, \"property-change\");\r\n }\r\n\r\n private applyCursorToViewer(cursor: string): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"set-cursor\", cursor, \"property-change\");\r\n }\r\n\r\n private applyScrollToViewer(scroll: string): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"set-scroll\", scroll, \"property-change\");\r\n }\r\n\r\n private applySpreadToViewer(spread: string): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"set-spread\", spread, \"property-change\");\r\n }\r\n\r\n private applyPageModeToViewer(pageMode: string): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"update-page-mode\", pageMode, \"property-change\");\r\n }\r\n // #endregion\r\n\r\n // Universal Action Dispatcher - ALL actions go through readiness-based queuing\r\n private dispatchAction(\r\n action: string,\r\n payload: any,\r\n source:\r\n | \"initial-load\"\r\n | \"property-change\"\r\n | \"user-interaction\" = \"property-change\",\r\n ): Promise<ActionExecutionResult> {\r\n const requiredReadiness = this.getRequiredReadinessLevel(action);\r\n const actionObj: ViewerAction = {\r\n id: `${source}-${action}-${Date.now()}`,\r\n action: action,\r\n payload: payload,\r\n };\r\n\r\n // Check if we have sufficient readiness to execute immediately\r\n if (this.hasRequiredReadiness(requiredReadiness)) {\r\n return this.actionQueueManager.executeAction(actionObj);\r\n } else {\r\n // Queue action to execute when readiness is achieved\r\n this.actionQueueManager.queueAction(actionObj, requiredReadiness);\r\n\r\n // Return a promise that resolves when the action eventually executes\r\n return Promise.resolve({\r\n actionId: actionObj.id,\r\n success: true,\r\n timestamp: Date.now(),\r\n } as ActionExecutionResult);\r\n }\r\n }\r\n\r\n private getRequiredReadinessLevel(action: string): number {\r\n // Define readiness requirements for all actions\r\n const level1Actions = [\r\n \"set-theme\",\r\n \"set-primary-color\",\r\n \"set-background-color\",\r\n \"set-page-border-color\",\r\n \"set-toolbar-color\",\r\n \"set-text-color\",\r\n \"set-border-radius\",\r\n \"set-custom-css\",\r\n ];\r\n const level3Actions = [\r\n \"show-download\",\r\n \"show-print\",\r\n \"show-fullscreen\",\r\n \"show-find\",\r\n \"show-bookmark\",\r\n \"show-openfile\",\r\n \"show-annotations\",\r\n \"set-error-message\",\r\n \"set-error-override\",\r\n \"set-error-append\",\r\n \"set-css-zoom\",\r\n // DOM visibility toggles\r\n \"show-toolbar-left\",\r\n \"show-toolbar-middle\",\r\n \"show-toolbar-right\",\r\n \"show-secondary-toolbar-toggle\",\r\n \"show-sidebar\",\r\n \"show-sidebar-left\",\r\n \"show-sidebar-right\",\r\n ];\r\n const level4Actions = [\r\n \"set-cursor\",\r\n \"set-scroll\",\r\n \"set-spread\",\r\n \"set-zoom\",\r\n \"update-page-mode\",\r\n // Layout actions require components ready to measure\r\n \"set-toolbar-density\",\r\n \"set-sidebar-width\",\r\n \"set-toolbar-position\",\r\n \"set-sidebar-position\",\r\n \"set-responsive-breakpoint\",\r\n ];\r\n const level5Actions = [\r\n \"set-page\",\r\n \"set-rotation\",\r\n \"go-to-last-page\",\r\n \"go-to-named-dest\",\r\n \"trigger-download\",\r\n \"trigger-print\",\r\n \"trigger-rotate-cw\",\r\n \"trigger-rotate-ccw\",\r\n ];\r\n\r\n if (level1Actions.includes(action)) return 1; // VIEWER_LOADED - DOM access only\r\n if (level3Actions.includes(action)) return 3; // EVENTBUS_READY\r\n if (level4Actions.includes(action)) return 4; // COMPONENTS_READY\r\n if (level5Actions.includes(action)) return 5; // DOCUMENT_LOADED\r\n return 3; // Default to EVENTBUS_READY\r\n }\r\n\r\n private hasRequiredReadiness(requiredLevel: number): boolean {\r\n if (!this.isPostMessageReady) return false;\r\n if (requiredLevel === 5 && !this.actionQueueManager?.isDocumentLoaded)\r\n return false;\r\n return this.postMessageReadiness >= requiredLevel;\r\n }\r\n}\r\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 {\r\n Component,\r\n Input,\r\n Output,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild,\r\n EventEmitter,\r\n ElementRef,\r\n OnChanges,\r\n SimpleChanges,\r\n AfterViewInit,\r\n TemplateRef,\r\n} from \"@angular/core\";\r\n\r\n// Import extracted modules\r\nimport {\r\n ControlMessage,\r\n ControlResponse,\r\n PropertyChangeEvent,\r\n ViewerAction,\r\n ActionExecutionResult,\r\n ChangedPage,\r\n ChangedScale,\r\n ChangedRotation,\r\n ControlVisibilityConfig,\r\n GroupVisibilityConfig,\r\n LayoutConfig,\r\n ToolbarDensity,\r\n ToolbarPosition,\r\n SidebarPosition,\r\n AutoActionConfig,\r\n ErrorConfig,\r\n ViewerConfig,\r\n ThemeConfig,\r\n DocumentError,\r\n PagesInfo,\r\n PresentationMode,\r\n FindOperation,\r\n FindMatchesCount,\r\n DocumentMetadata,\r\n DocumentOutline,\r\n PageRenderInfo,\r\n // New high-value events\r\n AnnotationLayerRenderEvent,\r\n BookmarkClick,\r\n} from \"./interfaces/ViewerTypes\";\r\nimport { ActionQueueManager } from \"./managers/ActionQueueManager\";\r\nimport { PropertyTransformers } from \"./utils/PropertyTransformers\";\r\nimport { ComponentUtils } from \"./utils/ComponentUtils\";\r\nimport { ChangeOriginTracker } from \"./utils/ChangeOriginTracker\";\r\n\r\n@Component({\r\n selector: \"ng2-pdfjs-viewer\",\r\n standalone: false,\r\n styles: [\r\n `\r\n /* Spinner overlay styling */\r\n .ng2-pdfjs-loading-overlay {\r\n position: absolute;\r\n inset: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: rgba(255, 255, 255, 0.6);\r\n backdrop-filter: saturate(120%) blur(1px);\r\n }\r\n\r\n /* Error overlay styling */\r\n .ng2-pdfjs-error-overlay {\r\n position: absolute;\r\n inset: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: rgba(255, 255, 255, 0.9);\r\n backdrop-filter: saturate(120%) blur(1px);\r\n }\r\n\r\n /* Default spinner animation */\r\n @keyframes spin {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n `,\r\n ],\r\n template: `\r\n <div\r\n class=\"ng2-pdfjs-viewer-container\"\r\n style=\"position:relative;width:100%;height:100%;\"\r\n >\r\n <iframe\r\n title=\"ng2-pdfjs-viewer\"\r\n [hidden]=\"externalWindow || (!externalWindow && !pdfSrc)\"\r\n #iframe\r\n width=\"100%\"\r\n height=\"100%\"\r\n ></iframe>\r\n\r\n <div\r\n class=\"ng2-pdfjs-loading-overlay\"\r\n *ngIf=\"showSpinner && isLoading && !externalWindow\"\r\n [ngClass]=\"spinnerClass\"\r\n style=\"position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,0.6);backdrop-filter:saturate(120%) blur(1px);\"\r\n >\r\n <ng-container\r\n *ngIf=\"customSpinnerTpl; else defaultSpinner\"\r\n [ngTemplateOutlet]=\"customSpinnerTpl\"\r\n ></ng-container>\r\n <ng-template #defaultSpinner>\r\n <div style=\"text-align:center;\">\r\n <div\r\n style=\"display:inline-block;width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #2196F3;border-radius:50%;animation:spin 1s linear infinite;\"\r\n ></div>\r\n <div style=\"margin-top:16px;color:#666;font-size:16px;\">\r\n Loading PDF...\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <div\r\n class=\"ng2-pdfjs-error-overlay\"\r\n *ngIf=\"errorOverride && hasError && !externalWindow\"\r\n [ngClass]=\"errorClass\"\r\n style=\"position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,0.9);backdrop-filter:saturate(120%) blur(1px);\"\r\n >\r\n <ng-container\r\n *ngIf=\"customErrorTpl; else defaultError\"\r\n [ngTemplateOutlet]=\"customErrorTpl\"\r\n [ngTemplateOutletContext]=\"getErrorTemplateData()\"\r\n ></ng-container>\r\n <ng-template #defaultError>\r\n <div style=\"text-align:center;max-width:400px;padding:20px;\">\r\n <div style=\"font-size:48px;color:#f44336;margin-bottom:16px;\">\r\n ⚠️\r\n </div>\r\n <div\r\n style=\"color:#333;font-size:18px;font-weight:500;margin-bottom:8px;\"\r\n >\r\n Error Loading PDF\r\n </div>\r\n <div style=\"color:#666;font-size:14px;line-height:1.4;\">\r\n {{ currentErrorMessage }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n `,\r\n})\r\nexport class PdfJsViewerComponent\r\n implements OnInit, OnDestroy, OnChanges, AfterViewInit\r\n{\r\n // #region Component Properties\r\n @ViewChild(\"iframe\", { static: true }) iframe: ElementRef;\r\n\r\n static lastID = 0;\r\n @Input() public viewerId =\r\n `ng2-pdfjs-viewer-ID${++PdfJsViewerComponent.lastID}`;\r\n\r\n // #region Event Outputs\r\n @Output() onBeforePrint: EventEmitter<void> = new EventEmitter();\r\n @Output() onAfterPrint: EventEmitter<void> = new EventEmitter();\r\n @Output() onDocumentLoad: EventEmitter<void> = new EventEmitter();\r\n @Output() onPageChange: EventEmitter<ChangedPage> = new EventEmitter();\r\n @Output() onScaleChange: EventEmitter<ChangedScale> = new EventEmitter();\r\n @Output() onRotationChange: EventEmitter<ChangedRotation> =\r\n new EventEmitter();\r\n\r\n // New high-value events for enhanced PDF viewer functionality\r\n @Output() onDocumentError: EventEmitter<DocumentError> = new EventEmitter();\r\n @Output() onDocumentInit: EventEmitter<void> = new EventEmitter();\r\n @Output() onPagesInit: EventEmitter<PagesInfo> = new EventEmitter();\r\n @Output() onPresentationModeChanged: EventEmitter<PresentationMode> =\r\n new EventEmitter();\r\n @Output() onOpenFile: EventEmitter<void> = new EventEmitter();\r\n @Output() onFind: EventEmitter<FindOperation> = new EventEmitter();\r\n @Output() onUpdateFindMatchesCount: EventEmitter<FindMatchesCount> =\r\n new EventEmitter();\r\n @Output() onMetadataLoaded: EventEmitter<DocumentMetadata> =\r\n new EventEmitter();\r\n @Output() onOutlineLoaded: EventEmitter<DocumentOutline> = new EventEmitter();\r\n @Output() onPageRendered: EventEmitter<PageRenderInfo> = new EventEmitter();\r\n\r\n // New high-value events\r\n @Output()\r\n onAnnotationLayerRendered: EventEmitter<AnnotationLayerRenderEvent> =\r\n new EventEmitter();\r\n @Output() onBookmarkClick: EventEmitter<BookmarkClick> = new EventEmitter();\r\n @Output() onIdle: EventEmitter<void> = new EventEmitter();\r\n // #endregion\r\n\r\n // #region Basic Configuration Properties\r\n @Input() public viewerFolder: string;\r\n @Input() public externalWindow: boolean = false;\r\n @Input() public target: string = \"_blank\";\r\n @Input() public showSpinner: boolean = true;\r\n @Input() public downloadFileName: string;\r\n @Input() public locale: string;\r\n @Input() public useOnlyCssZoom: boolean = false;\r\n @Input() public set diagnosticLogs(value: boolean) {\r\n this._diagnosticLogs = value;\r\n // Update action queue manager\r\n if (this.actionQueueManager) {\r\n this.actionQueueManager.setDiagnosticLogs(value);\r\n }\r\n // Send to wrapper\r\n this.dispatchAction(\"set-diagnostic-logs\", value, \"property-change\");\r\n }\r\n \r\n public get diagnosticLogs(): boolean {\r\n return this._diagnosticLogs;\r\n }\r\n \r\n private _diagnosticLogs: boolean = false;\r\n // #endregion\r\n\r\n // #region Control Visibility Properties\r\n @Input() public showOpenFile: boolean = true;\r\n @Input() public showAnnotations: boolean = false;\r\n @Input() public showDownload: boolean = true;\r\n @Input() public showViewBookmark: boolean = true;\r\n @Input() public showPrint: boolean = true;\r\n @Input() public showFullScreen: boolean = true;\r\n @Input() public showFind: boolean = true;\r\n // #endregion\r\n\r\n // #region Auto-Action Properties\r\n @Input() public downloadOnLoad: boolean = false;\r\n @Input() public printOnLoad: boolean = false;\r\n @Input() public rotateCW: boolean = false;\r\n @Input() public rotateCCW: boolean = false;\r\n @Input() public showLastPageOnLoad: boolean = false;\r\n // #endregion\r\n\r\n // #region Navigation Properties\r\n @Input() public namedDest: string;\r\n // #endregion\r\n\r\n // #region Error Handling Properties\r\n @Input() public errorOverride: boolean = false;\r\n @Input() public errorAppend: boolean = true;\r\n @Input() public errorMessage: string;\r\n // #endregion\r\n\r\n // #region Theme & Visual Customization Properties\r\n @Input() public theme: \"light\" | \"dark\" | \"auto\" = \"light\";\r\n @Input() public primaryColor?: string;\r\n @Input() public backgroundColor?: string;\r\n @Input() public pageBorderColor?: string;\r\n @Input() public pageSpacing?: {\r\n margin?: string;\r\n spreadMargin?: string;\r\n border?: string;\r\n };\r\n @Input() public toolbarColor?: string;\r\n @Input() public textColor?: string;\r\n @Input() public borderRadius?: string;\r\n @Input() public customCSS?: string;\r\n // #endregion\r\n\r\n // #region Loading & Spinner Customization\r\n @Input() public customSpinnerTpl?: TemplateRef<any>;\r\n @Input() public spinnerClass?: string;\r\n // #endregion\r\n\r\n // #region Error Display Customization\r\n @Input() public customErrorTpl?: TemplateRef<any>;\r\n @Input() public errorClass?: string;\r\n // #endregion\r\n\r\n // #region Toolbar/Sidebar Group Visibility\r\n @Input() public showToolbarLeft: boolean = true;\r\n @Input() public showToolbarMiddle: boolean = true;\r\n @Input() public showToolbarRight: boolean = true;\r\n @Input() public showSecondaryToolbarToggle: boolean = true;\r\n @Input() public showSidebar: boolean = true;\r\n @Input() public showSidebarLeft: boolean = true;\r\n @Input() public showSidebarRight: boolean = true;\r\n // #endregion\r\n\r\n // #region Layout & Responsive Customization\r\n @Input() public toolbarDensity: ToolbarDensity = \"default\";\r\n @Input() public sidebarWidth?: string; // e.g., '280px'\r\n @Input() public toolbarPosition: ToolbarPosition = \"top\";\r\n @Input() public sidebarPosition: SidebarPosition = \"left\";\r\n @Input() public responsiveBreakpoint?: string | number;\r\n // #endregion\r\n\r\n // Internal loading state for overlay control\r\n public isLoading: boolean = true;\r\n private hasFirstRender: boolean = false;\r\n\r\n // Internal error state for error display\r\n public hasError: boolean = false;\r\n public currentErrorMessage: string = \"\";\r\n public errorTemplateData: any = {};\r\n\r\n // Helper method to get error template data\r\n public getErrorTemplateData(): any {\r\n return {\r\n errorMessage: this.currentErrorMessage,\r\n errorClass: this.errorClass,\r\n ...this.errorTemplateData,\r\n };\r\n }\r\n\r\n // Error template button actions\r\n public reloadViewer(): void {\r\n this.refresh();\r\n }\r\n\r\n public goBack(): void {\r\n if (window.history.length > 1) {\r\n window.history.back();\r\n } else {\r\n window.close();\r\n }\r\n }\r\n\r\n public closeViewer(): void {\r\n window.close();\r\n }\r\n\r\n // #region Convenience Configuration Setters\r\n @Input() public set controlVisibility(config: ControlVisibilityConfig) {\r\n if (config.download !== undefined) this.showDownload = config.download;\r\n if (config.print !== undefined) this.showPrint = config.print;\r\n if (config.find !== undefined) this.showFind = config.find;\r\n if (config.fullScreen !== undefined)\r\n this.showFullScreen = config.fullScreen;\r\n if (config.openFile !== undefined) this.showOpenFile = config.openFile;\r\n if (config.viewBookmark !== undefined)\r\n this.showViewBookmark = config.viewBookmark;\r\n if (config.annotations !== undefined)\r\n this.showAnnotations = config.annotations;\r\n }\r\n\r\n @Input() public set autoActions(config: AutoActionConfig) {\r\n if (config.downloadOnLoad !== undefined)\r\n this.downloadOnLoad = config.downloadOnLoad;\r\n if (config.printOnLoad !== undefined) this.printOnLoad = config.printOnLoad;\r\n if (config.showLastPageOnLoad !== undefined)\r\n this.showLastPageOnLoad = config.showLastPageOnLoad;\r\n if (config.rotateCW !== undefined) this.rotateCW = config.rotateCW;\r\n if (config.rotateCCW !== undefined) this.rotateCCW = config.rotateCCW;\r\n }\r\n\r\n @Input() public set errorHandling(config: ErrorConfig) {\r\n if (config.override !== undefined) this.errorOverride = config.override;\r\n if (config.append !== undefined) this.errorAppend = config.append;\r\n if (config.message !== undefined) this.errorMessage = config.message;\r\n }\r\n\r\n @Input() public set viewerConfig(config: ViewerConfig) {\r\n if (config.showSpinner !== undefined) this.showSpinner = config.showSpinner;\r\n if (config.useOnlyCssZoom !== undefined)\r\n this.useOnlyCssZoom = config.useOnlyCssZoom;\r\n if (config.diagnosticLogs !== undefined)\r\n this.diagnosticLogs = config.diagnosticLogs;\r\n if (config.locale !== undefined) this.locale = config.locale;\r\n }\r\n\r\n @Input() public set themeConfig(config: ThemeConfig) {\r\n if (config.theme !== undefined) this.theme = config.theme;\r\n if (config.primaryColor !== undefined)\r\n this.primaryColor = config.primaryColor;\r\n if (config.backgroundColor !== undefined)\r\n this.backgroundColor = config.backgroundColor;\r\n if (config.pageBorderColor !== undefined)\r\n this.pageBorderColor = config.pageBorderColor;\r\n if (config.pageSpacing !== undefined)\r\n this.pageSpacing = config.pageSpacing;\r\n if (config.toolbarColor !== undefined)\r\n this.toolbarColor = config.toolbarColor;\r\n if (config.textColor !== undefined) this.textColor = config.textColor;\r\n if (config.borderRadius !== undefined)\r\n this.borderRadius = config.borderRadius;\r\n if (config.customCSS !== undefined) this.customCSS = config.customCSS;\r\n }\r\n\r\n @Input() public set groupVisibility(config: GroupVisibilityConfig) {\r\n if (config.toolbarLeft !== undefined)\r\n this.showToolbarLeft = config.toolbarLeft;\r\n if (config.toolbarMiddle !== undefined)\r\n this.showToolbarMiddle = config.toolbarMiddle;\r\n if (config.toolbarRight !== undefined)\r\n this.showToolbarRight = config.toolbarRight;\r\n if (config.secondaryToolbarToggle !== undefined)\r\n this.showSecondaryToolbarToggle = config.secondaryToolbarToggle;\r\n if (config.sidebar !== undefined) this.showSidebar = config.sidebar;\r\n if (config.sidebarLeft !== undefined)\r\n this.showSidebarLeft = config.sidebarLeft;\r\n if (config.sidebarRight !== undefined)\r\n this.showSidebarRight = config.sidebarRight;\r\n }\r\n\r\n @Input() public set layoutConfig(config: LayoutConfig) {\r\n if (config.toolbarDensity !== undefined)\r\n this.toolbarDensity = config.toolbarDensity;\r\n if (config.sidebarWidth !== undefined)\r\n this.sidebarWidth = config.sidebarWidth;\r\n if (config.toolbarPosition !== undefined)\r\n this.toolbarPosition = config.toolbarPosition;\r\n if (config.sidebarPosition !== undefined)\r\n this.sidebarPosition = config.sidebarPosition;\r\n if (config.responsiveBreakpoint !== undefined)\r\n this.responsiveBreakpoint = config.responsiveBreakpoint;\r\n }\r\n // #endregion\r\n\r\n // #region Helper function for deprecated properties\r\n private setDeprecatedProperty(\r\n oldName: string,\r\n newProperty: string,\r\n value: any,\r\n ): void {\r\n if (this.diagnosticLogs) {\r\n console.warn(\r\n `⚠️ DEPRECATED: Property \"${oldName}\" is deprecated. Use \"${newProperty}\" instead.`,\r\n );\r\n }\r\n (this as any)[newProperty] = value;\r\n }\r\n // #endregion\r\n\r\n // #region Deprecated Properties (Simplified)\r\n /** @deprecated Use `downloadOnLoad` instead. This property will be removed in a future version. */\r\n @Input() public set startDownload(value: boolean) {\r\n this.setDeprecatedProperty(\"startDownload\", \"downloadOnLoad\", value);\r\n }\r\n\r\n /** @deprecated Use `printOnLoad` instead. This property will be removed in a future version. */\r\n @Input() public set startPrint(value: boolean) {\r\n this.setDeprecatedProperty(\"startPrint\", \"printOnLoad\", value);\r\n }\r\n\r\n /** @deprecated Use `showOpenFile` instead. This property will be removed in a future version. */\r\n @Input() public set openFile(value: boolean) {\r\n this.setDeprecatedProperty(\"openFile\", \"showOpenFile\", value);\r\n }\r\n\r\n /** @deprecated Use `showDownload` instead. This property will be removed in a future version. */\r\n @Input() public set download(value: boolean) {\r\n this.setDeprecatedProperty(\"download\", \"showDownload\", value);\r\n }\r\n\r\n /** @deprecated Use `showPrint` instead. This property will be removed in a future version. */\r\n @Input() public set print(value: boolean) {\r\n this.setDeprecatedProperty(\"print\", \"showPrint\", value);\r\n }\r\n\r\n /** @deprecated Use `showFullScreen` instead. This property will be removed in a future version. */\r\n @Input() public set fullScreen(value: boolean) {\r\n this.setDeprecatedProperty(\"fullScreen\", \"showFullScreen\", value);\r\n }\r\n\r\n /** @deprecated Use `showFind` instead. This property will be removed in a future version. */\r\n @Input() public set find(value: boolean) {\r\n this.setDeprecatedProperty(\"find\", \"showFind\", value);\r\n }\r\n\r\n /** @deprecated Use `showViewBookmark` instead. This property will be removed in a future version. */\r\n @Input() public set viewBookmark(value: boolean) {\r\n this.setDeprecatedProperty(\"viewBookmark\", \"showViewBookmark\", value);\r\n }\r\n\r\n /** @deprecated Use `showLastPageOnLoad` instead. This property will be removed in a future version. */\r\n @Input() public set lastPage(value: boolean) {\r\n this.setDeprecatedProperty(\"lastPage\", \"showLastPageOnLoad\", value);\r\n }\r\n // #endregion\r\n\r\n // #region External Window Properties\r\n @Input() public externalWindowOptions: string;\r\n public viewerTab: any;\r\n // #endregion\r\n\r\n // #region Private Properties\r\n private _src: string | Blob | Uint8Array;\r\n private _page: number;\r\n private isPostMessageReady = false;\r\n private postMessageReadiness = 0;\r\n private pendingInitialConfig = true;\r\n private initialConfigQueued = false;\r\n private actionQueueManager: ActionQueueManager;\r\n private changeOriginTracker = new ChangeOriginTracker();\r\n private messageIdCounter = 0;\r\n private pendingMessages = new Map<\r\n string,\r\n { resolve: Function; reject: Function }\r\n >();\r\n private pendingChanges: SimpleChanges[] = [];\r\n private relaseUrl?: () => void;\r\n // #endregion\r\n\r\n // #region Two-Way Binding Properties\r\n // Private backing fields for two-way binding properties\r\n private _zoom: string = \"auto\";\r\n private _rotation: number = 0;\r\n private _cursor: string = \"select\";\r\n private _scroll: string = \"vertical\";\r\n private _spread: string = \"none\";\r\n private _pageMode: string = \"none\";\r\n\r\n // Two-way binding Output events\r\n @Output() zoomChange = new EventEmitter<string>();\r\n\r\n @Output() cursorChange = new EventEmitter<string>();\r\n @Output() scrollChange = new EventEmitter<string>();\r\n @Output() spreadChange = new EventEmitter<string>();\r\n @Output() pageModeChange = new EventEmitter<string>();\r\n\r\n /**\r\n * Two-way binding for zoom level\r\n * Supports: auto, page-fit, page-width, page-actual, percentage values (e.g., \"150%\")\r\n */\r\n @Input()\r\n get zoom(): string {\r\n return this._zoom;\r\n }\r\n set zoom(value: string) {\r\n const normalizedValue = PropertyTransformers.transformZoom.toViewer(value);\r\n if (this._zoom !== normalizedValue) {\r\n this.changeOriginTracker.markProgrammatic(\"zoom\");\r\n this._zoom = normalizedValue;\r\n this.applyZoomToViewer(this._zoom);\r\n this.zoomChange.emit(this._zoom);\r\n }\r\n }\r\n\r\n /**\r\n * One-way binding for document rotation\r\n * Supports: 0, 90, 180, 270 degrees\r\n */\r\n @Input()\r\n set rotation(value: number) {\r\n const normalizedValue =\r\n PropertyTransformers.transformRotation.toViewer(value);\r\n if (this._rotation !== normalizedValue) {\r\n this._rotation = normalizedValue;\r\n this.applyRotationToViewer(this._rotation);\r\n }\r\n }\r\n\r\n get rotation(): number {\r\n return this._rotation;\r\n }\r\n\r\n /**\r\n * Two-way binding for cursor mode\r\n * Supports: select, hand, zoom\r\n */\r\n @Input()\r\n get cursor(): string {\r\n return this._cursor;\r\n }\r\n set cursor(value: string) {\r\n const normalizedValue =\r\n PropertyTransformers.transformCursor.toViewer(value);\r\n if (this._cursor !== normalizedValue) {\r\n this.changeOriginTracker.markProgrammatic(\"cursor\");\r\n this._cursor = normalizedValue;\r\n this.applyCursorToViewer(this._cursor);\r\n this.cursorChange.emit(this._cursor);\r\n }\r\n }\r\n\r\n /**\r\n * Two-way binding for scroll mode\r\n * Supports: vertical, horizontal, wrapped, page\r\n */\r\n @Input()\r\n get scroll(): string {\r\n return this._scroll;\r\n }\r\n set scroll(value: string) {\r\n const normalizedValue =\r\n PropertyTransformers.transformScroll.toViewer(value);\r\n if (this._scroll !== normalizedValue) {\r\n this.changeOriginTracker.markProgrammatic(\"scroll\");\r\n this._scroll = normalizedValue;\r\n this.applyScrollToViewer(this._scroll);\r\n this.scrollChange.emit(this._scroll);\r\n }\r\n }\r\n\r\n /**\r\n * Two-way binding for spread mode\r\n * Supports: none, odd, even\r\n */\r\n @Input()\r\n get spread(): string {\r\n return this._spread;\r\n }\r\n set spread(value: string) {\r\n const normalizedValue =\r\n PropertyTransformers.transformSpread.toViewer(value);\r\n if (this._spread !== normalizedValue) {\r\n this.changeOriginTracker.markProgrammatic(\"spread\");\r\n this._spread = normalizedValue;\r\n this.applySpreadToViewer(this._spread);\r\n this.spreadChange.emit(this._spread);\r\n }\r\n }\r\n\r\n /**\r\n * Two-way binding for page mode (sidebar state)\r\n * Supports: none, thumbs, bookmarks, attachments\r\n */\r\n @Input()\r\n get pageMode(): string {\r\n return this._pageMode;\r\n }\r\n set pageMode(value: string) {\r\n const normalizedValue =\r\n PropertyTransformers.transformPageMode.toViewer(value);\r\n if (this._pageMode !== normalizedValue) {\r\n this.changeOriginTracker.markProgrammatic(\"pageMode\");\r\n this._pageMode = normalizedValue;\r\n this.applyPageModeToViewer(this._pageMode);\r\n this.pageModeChange.emit(this._pageMode);\r\n }\r\n }\r\n\r\n @Input()\r\n public set page(_page: number) {\r\n this._page = _page;\r\n if (this.PDFViewerApplication && this.PDFViewerApplication.initialized) {\r\n this.PDFViewerApplication.page = this._page;\r\n } else {\r\n if (this.diagnosticLogs) {\r\n console.warn(\r\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;)\",\r\n );\r\n }\r\n }\r\n }\r\n\r\n public get page() {\r\n if (this.PDFViewerApplication && this.PDFViewerApplication.initialized) {\r\n return this.PDFViewerApplication.page;\r\n } else {\r\n if (this.diagnosticLogs) {\r\n console.warn(\r\n \"Document is not loaded yet!!!. Try to retrieve page# after full load.\",\r\n );\r\n }\r\n return this._page || 1;\r\n }\r\n }\r\n\r\n @Input()\r\n public set pdfSrc(_src: string | Blob | Uint8Array) {\r\n this._src = _src;\r\n }\r\n\r\n public get pdfSrc() {\r\n return this._src;\r\n }\r\n // #endregion\r\n\r\n // #region PDF.js Application Access Properties\r\n public get PDFViewerApplicationOptions() {\r\n let pdfViewerOptions = null;\r\n if (this.externalWindow) {\r\n if (this.viewerTab) {\r\n pdfViewerOptions = this.viewerTab.PDFViewerApplicationOptions;\r\n }\r\n } else {\r\n if (this.iframe.nativeElement.contentWindow) {\r\n pdfViewerOptions =\r\n this.iframe.nativeElement.contentWindow.PDFViewerApplicationOptions;\r\n }\r\n }\r\n return pdfViewerOptions;\r\n }\r\n\r\n public get PDFViewerApplication() {\r\n let pdfViewer = null;\r\n if (this.externalWindow) {\r\n if (this.viewerTab) {\r\n pdfViewer = this.viewerTab.PDFViewerApplication;\r\n }\r\n } else {\r\n if (this.iframe.nativeElement.contentWindow) {\r\n pdfViewer =\r\n this.iframe.nativeElement.contentWindow.PDFViewerApplication;\r\n }\r\n }\r\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: Viewer ->\", pdfViewer);\r\n return pdfViewer;\r\n }\r\n\r\n // #endregion\r\n // #endregion\r\n\r\n // #region Lifecycle Methods\r\n ngOnInit(): void { \r\n // 🟢 TEST LOG - Build verification (BUILD_ID from separate file)\r\n if (this.diagnosticLogs) {\r\n console.log(\r\n \"🟢 ng2-pdfjs-viewer.component.ts: TEST LOG - BUILD_ID:\",\r\n (window as any).NG2_PDF_VIEWER_BUILD_ID || \"BUILD_ID_NOT_LOADED\",\r\n );\r\n }\r\n \r\n // Configure action queue manager with diagnostic logs\r\n this.actionQueueManager = new ActionQueueManager(this._diagnosticLogs);\r\n \r\n // Connect action queue manager to PostMessage system\r\n this.actionQueueManager.setPostMessageExecutor((action, payload) =>\r\n this.sendControlMessage(action, payload),\r\n );\r\n\r\n // Send diagnostic logs setting to wrapper\r\n this.dispatchAction(\"set-diagnostic-logs\", this._diagnosticLogs, \"initial-load\");\r\n \r\n // Set up PostMessage listener\r\n this.setupMessageListener();\r\n \r\n // Load PDF for embedded views.\r\n if (!this.externalWindow) {\r\n this.loadPdf();\r\n }\r\n\r\n // Bind events.\r\n this.bindToPdfJsEventBus();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // Minimal initialization - rely on event-driven readiness notifications\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.PDFViewerApplication) {\r\n // Only apply changes if PostMessage API is ready and viewer is initialized\r\n if (this.isPostMessageReady && this.PDFViewerApplication.initialized) {\r\n this.applyChanges(changes);\r\n } else {\r\n this.pendingChanges.push(changes);\r\n }\r\n } else {\r\n this.pendingChanges.push(changes);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // Clean up pending messages\r\n this.pendingMessages.clear();\r\n\r\n // Clean up event listeners\r\n ComponentUtils.cleanupEventHandlers(this);\r\n\r\n // Reset state flags\r\n this.initialConfigQueued = false;\r\n\r\n // Clean up URL\r\n this.relaseUrl?.();\r\n }\r\n // #endregion\r\n\r\n // #region Message Handling Methods\r\n private generateMessageId(): string {\r\n return `msg_${++this.messageIdCounter}_${Date.now()}`;\r\n }\r\n\r\n private sendControlMessage(action: string, payload: any): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n const messageId = this.generateMessageId();\r\n \r\n const message: ControlMessage = {\r\n type: \"control-update\",\r\n action,\r\n payload,\r\n id: messageId,\r\n timestamp: Date.now(),\r\n };\r\n\r\n this.pendingMessages.set(messageId, { resolve, reject });\r\n\r\n // Send message to iframe\r\n if (\r\n this.iframe &&\r\n this.iframe.nativeElement &&\r\n this.iframe.nativeElement.contentWindow\r\n ) {\r\n this.iframe.nativeElement.contentWindow.postMessage(message, \"*\");\r\n } else {\r\n this.pendingMessages.delete(messageId);\r\n reject(new Error(\"Iframe not available\"));\r\n }\r\n });\r\n }\r\n\r\n private handleControlResponse(response: ControlResponse): void {\r\n const pendingMessage = this.pendingMessages.get(response.id);\r\n if (pendingMessage) {\r\n this.pendingMessages.delete(response.id);\r\n \r\n if (response.success) {\r\n pendingMessage.resolve(response);\r\n } else {\r\n pendingMessage.reject(new Error(response.error || \"Unknown error\"));\r\n }\r\n }\r\n }\r\n\r\n private setupMessageListener(): void {\r\n window.addEventListener(\"message\", (event) => {\r\n // Handle control responses from the viewer\r\n if (event.data && event.data.type === \"control-response\") {\r\n this.handleControlResponse(event.data);\r\n return;\r\n }\r\n \r\n // Handle PostMessage API ready notification\r\n if (event.data && event.data.type === \"postmessage-ready\") {\r\n this.isPostMessageReady = true;\r\n\r\n this.postMessageReadiness = event.data.readiness || 0;\r\n\r\n // CRITICAL FIX: Process queued actions when readiness level increases\r\n if (this.actionQueueManager) {\r\n this.actionQueueManager.updateReadiness(this.postMessageReadiness);\r\n this.actionQueueManager.processQueuedActions();\r\n }\r\n \r\n // Queue all initial configurations now that PostMessage API is ready (only once)\r\n if (!this.initialConfigQueued) {\r\n this.queueAllConfigurations();\r\n this.initialConfigQueued = true;\r\n }\r\n \r\n // Apply any pending changes that occurred before PostMessage API was ready\r\n this.applyPendingChanges();\r\n return;\r\n }\r\n \r\n // Handle state change notifications from PostMessage wrapper\r\n if (event.data && event.data.type === \"state-change\") {\r\n this.handleStateChangeNotification(event.data);\r\n return;\r\n }\r\n\r\n // Handle event notifications from PostMessage wrapper\r\n if (event.data && event.data.type === \"event-notification\") {\r\n this.handleEventNotification(event.data);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n private handleStateChangeNotification(notification: any): void {\r\n const { property, value, source } = notification;\r\n \r\n // Internal loading overlay control is system-driven and must be handled unconditionally\r\n if (property === \"loading\") {\r\n this.isLoading = !!value;\r\n // Clear error state when loading starts\r\n if (value) {\r\n this.hasError = false;\r\n this.currentErrorMessage = \"\";\r\n }\r\n return;\r\n }\r\n\r\n // Internal error state management\r\n if (property === \"error\") {\r\n this.hasError = !!value;\r\n if (value && typeof value === \"string\") {\r\n this.currentErrorMessage = value;\r\n this.errorTemplateData = this.getErrorTemplateData();\r\n }\r\n return;\r\n }\r\n\r\n // Only process user-initiated changes to avoid infinite loops\r\n if (\r\n source === \"user\" &&\r\n !this.changeOriginTracker.isProgrammatic(property)\r\n ) {\r\n this.changeOriginTracker.markUserInitiated(property);\r\n \r\n switch (property) {\r\n case \"cursor\":\r\n if (this._cursor !== value) {\r\n this._cursor =\r\n PropertyTransformers.transformCursor.fromViewer(value);\r\n this.cursorChange.emit(this._cursor);\r\n }\r\n break;\r\n \r\n case \"scroll\":\r\n if (this._scroll !== value) {\r\n this._scroll =\r\n PropertyTransformers.transformScroll.fromViewer(value);\r\n this.scrollChange.emit(this._scroll);\r\n }\r\n break;\r\n \r\n case \"spread\":\r\n if (this._spread !== value) {\r\n this._spread =\r\n PropertyTransformers.transformSpread.fromViewer(value);\r\n this.spreadChange.emit(this._spread);\r\n }\r\n break;\r\n \r\n case \"pageMode\":\r\n if (this._pageMode !== value) {\r\n this._pageMode =\r\n PropertyTransformers.transformPageMode.fromViewer(value);\r\n this.pageModeChange.emit(this._pageMode);\r\n }\r\n break;\r\n \r\n case \"zoom\":\r\n if (this._zoom !== value) {\r\n this._zoom = PropertyTransformers.transformZoom.fromViewer(value);\r\n this.zoomChange.emit(this._zoom);\r\n }\r\n break;\r\n \r\n case \"rotation\":\r\n if (this._rotation !== value) {\r\n this._rotation =\r\n PropertyTransformers.transformRotation.fromViewer(value);\r\n }\r\n break;\r\n \r\n // Note: namedDest is now a simple input property, not a two-way binding\r\n \r\n default:\r\n if (this.diagnosticLogs) {\r\n console.log(\r\n `🔍 PdfJsViewer: Unknown state change property: ${property}`,\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n private handleEventNotification(notification: any): void {\r\n const { eventName, eventData } = notification;\r\n\r\n // Emit the appropriate event based on the event name\r\n switch (eventName) {\r\n case \"documentError\":\r\n this.onDocumentError.emit(eventData);\r\n break;\r\n\r\n case \"documentInit\":\r\n this.onDocumentInit.emit();\r\n break;\r\n\r\n case \"pagesInit\":\r\n this.onPagesInit.emit(eventData);\r\n break;\r\n\r\n case \"presentationModeChanged\":\r\n this.onPresentationModeChanged.emit(eventData);\r\n break;\r\n\r\n case \"openFile\":\r\n this.onOpenFile.emit();\r\n break;\r\n\r\n case \"find\":\r\n this.onFind.emit(eventData);\r\n break;\r\n\r\n case \"updateFindMatchesCount\":\r\n this.onUpdateFindMatchesCount.emit(eventData);\r\n break;\r\n\r\n case \"metadataLoaded\":\r\n this.onMetadataLoaded.emit(eventData);\r\n break;\r\n\r\n case \"outlineLoaded\":\r\n this.onOutlineLoaded.emit(eventData);\r\n break;\r\n\r\n case \"pageRendered\":\r\n this.onPageRendered.emit(eventData);\r\n break;\r\n\r\n case \"annotationLayerRendered\":\r\n this.onAnnotationLayerRendered.emit(eventData);\r\n break;\r\n\r\n case \"bookmarkClick\":\r\n this.onBookmarkClick.emit(eventData);\r\n break;\r\n\r\n case \"idle\":\r\n this.onIdle.emit();\r\n break;\r\n\r\n default:\r\n if (this.diagnosticLogs) {\r\n console.log(\r\n `🔍 PdfJsViewer: Unknown event notification: ${eventName}`,\r\n );\r\n }\r\n }\r\n }\r\n // #endregion\r\n\r\n // #region Property Mapping and Update Methods\r\n private mapPropertyToAction(propertyName: string): string | null {\r\n return ComponentUtils.getActionForProperty(propertyName);\r\n }\r\n\r\n private updateViewerControl(propertyName: string, value: any): void {\r\n const action = this.mapPropertyToAction(propertyName);\r\n if (action) {\r\n // Use universal dispatcher instead of direct PostMessage\r\n this.dispatchAction(action, value, \"property-change\");\r\n } else {\r\n // Property is intentionally not mapped (handled via query parameters or direct API)\r\n }\r\n }\r\n\r\n private applyChanges(changes: SimpleChanges): void {\r\n Object.keys(changes).forEach((propertyName) => {\r\n const change = changes[propertyName];\r\n\r\n if (change.currentValue !== change.previousValue) {\r\n // Handle auto-actions - queue for document load, don't execute immediately\r\n const autoActions = [\r\n \"downloadOnLoad\",\r\n \"printOnLoad\",\r\n \"showLastPageOnLoad\",\r\n \"rotateCW\",\r\n \"rotateCCW\",\r\n ];\r\n if (autoActions.includes(propertyName)) {\r\n // Re-queue all configurations when auto-actions change\r\n this.initialConfigQueued = false;\r\n if (this.isPostMessageReady) {\r\n this.queueAllConfigurations();\r\n this.initialConfigQueued = true;\r\n }\r\n return;\r\n }\r\n\r\n // Use universal dispatcher for ALL actions - pure event-driven approach\r\n const action = this.mapPropertyToAction(propertyName);\r\n if (action) {\r\n this.dispatchAction(action, change.currentValue, \"property-change\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n private applyPendingChanges(): void {\r\n // Only apply pending changes if PostMessage API is ready\r\n if (!this.isPostMessageReady) {\r\n return;\r\n }\r\n \r\n if (this.pendingChanges.length > 0) {\r\n this.pendingChanges.forEach((changes, index) => {\r\n this.processChangesForQueuing(changes);\r\n });\r\n this.pendingChanges = [];\r\n } else {\r\n }\r\n }\r\n\r\n private processChangesForQueuing(changes: SimpleChanges): void {\r\n Object.keys(changes).forEach((propertyName) => {\r\n const change = changes[propertyName];\r\n \r\n if (change.currentValue !== change.previousValue) {\r\n // Handle auto-actions - queue for document load, don't execute immediately\r\n const autoActions = [\r\n \"downloadOnLoad\",\r\n \"printOnLoad\",\r\n \"showLastPageOnLoad\",\r\n \"rotateCW\",\r\n \"rotateCCW\",\r\n ];\r\n if (autoActions.includes(propertyName)) {\r\n // Re-queue all configurations when auto-actions change\r\n this.initialConfigQueued = false;\r\n if (this.isPostMessageReady) {\r\n this.queueAllConfigurations();\r\n this.initialConfigQueued = true;\r\n }\r\n return;\r\n }\r\n \r\n // Use universal dispatcher for ALL actions - pure event-driven approach\r\n const action = this.mapPropertyToAction(propertyName);\r\n if (action) {\r\n this.dispatchAction(action, change.currentValue, \"property-change\");\r\n }\r\n }\r\n });\r\n }\r\n // #endregion\r\n\r\n // #region PDF.js Event Binding Methods\r\n /**\r\n * Waits for the PDF.js viewer to be ready, and binds the the event bus.\r\n */\r\n private bindToPdfJsEventBus() {\r\n // Store the event listener reference so we can remove it later\r\n const webviewerLoadedHandler = () => {\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: webviewerloaded event received\");\r\n\r\n // Set locale immediately when PDF.js is loaded but before it initializes\r\n // https://github.com/mozilla/pdf.js/issues/11829#issuecomment-617668679\r\n if (this.locale && this.iframe?.nativeElement?.contentWindow) {\r\n try {\r\n const iframeWindow = this.iframe.nativeElement.contentWindow;\r\n if (iframeWindow.PDFViewerApplicationOptions) {\r\n iframeWindow.PDFViewerApplicationOptions.set(\"localeProperties\", {\r\n lang: this.locale,\r\n });\r\n if (this.diagnosticLogs)\r\n console.debug(\r\n `PdfJsViewer: Locale set to ${this.locale} before initialization`,\r\n );\r\n }\r\n } catch (error) {\r\n if (this.diagnosticLogs)\r\n console.debug(\r\n \"PdfJsViewer: Could not set locale before initialization:\",\r\n error,\r\n );\r\n }\r\n }\r\n\r\n if (!this.PDFViewerApplication) {\r\n if (this.diagnosticLogs)\r\n console.debug(\r\n \"PdfJsViewer: Viewer not yet (or no longer) available, events can not yet be bound.\",\r\n );\r\n return;\r\n }\r\n\r\n // https://github.com/mozilla/pdf.js/issues/9527\r\n this.PDFViewerApplication.initializedPromise.then(() => {\r\n // All configurations are now handled via PostMessage system\r\n // No need to call configureVisibleFeatures() anymore\r\n \r\n // Apply any pending changes that occurred before initialization\r\n this.applyPendingChanges();\r\n\r\n const app = this.PDFViewerApplication;\r\n const eventBus = app.eventBus;\r\n \r\n // Store event handler references for cleanup\r\n const documentLoadedHandler = () => {\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: The document has now been loaded!\");\r\n this.onDocumentLoad.emit();\r\n \r\n // Queue auto-actions for this document load (not from component initialization)\r\n this.queueAutoActionsForDocumentLoad();\r\n \r\n // Execute all queued auto-actions\r\n this.actionQueueManager.onDocumentLoaded();\r\n };\r\n\r\n // Note: pagesInit event is now handled via the PostMessage wrapper event system\r\n\r\n const pagesLoadedHandler = () => {\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: All pages have been fully loaded!\");\r\n\r\n // Execute auto-print on pages loaded (ensures PDF is fully ready for printing)\r\n if (this.printOnLoad === true) {\r\n this.dispatchAction(\"trigger-print\", true, \"initial-load\");\r\n }\r\n };\r\n\r\n const beforePrintHandler = () => {\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: The document is about to be printed!\");\r\n this.onBeforePrint.emit();\r\n };\r\n\r\n const afterPrintHandler = () => {\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: The document has been printed!\");\r\n this.onAfterPrint.emit();\r\n };\r\n\r\n const pageChangingHandler = (event: any) => {\r\n if (this.diagnosticLogs)\r\n console.debug(\r\n \"PdfJsViewer: The page has changed:\",\r\n event.pageNumber,\r\n );\r\n \r\n // Update two-way binding for page\r\n if (\r\n this._page !== event.pageNumber &&\r\n !this.changeOriginTracker.isProgrammatic(\"page\")\r\n ) {\r\n this.changeOriginTracker.markUserInitiated(\"page\");\r\n this._page = event.pageNumber;\r\n // Note: page property uses existing setter/getter, no need to emit pageChange here\r\n }\r\n \r\n this.onPageChange.emit(event.pageNumber);\r\n };\r\n\r\n const rotationChangingHandler = (event: any) => {\r\n const newRotation: ChangedRotation = {\r\n rotation: event.pagesRotation,\r\n page: event.pageNumber,\r\n };\r\n if (this.diagnosticLogs)\r\n console.debug(\"PdfJsViewer: The rotation has changed!\", event);\r\n \r\n // Update two-way binding for rotation\r\n const normalizedRotation =\r\n PropertyTransformers.transformRotation.fromViewer(\r\n event.pagesRotation,\r\n );\r\n if (\r\n this._rotation !== normalizedRotation &&\r\n !this.changeOriginTracker.isProgrammatic(\"rotation\")\r\n ) {\r\n this.changeOriginTracker.markUserInitiated(\"rotation\");\r\n this._rotation = normalizedRotation;\r\n }\r\n \r\n this.onRotationChange.emit(newRotation);\r\n };\r\n\r\n const scaleChangingHandler = (event: any) => {\r\n const newScale: ChangedScale = event.scale;\r\n if (this.diagnosticLogs)\r\n console.debug(\r\n \"PdfJsViewer: The document has scale has changed!\",\r\n newScale,\r\n );\r\n \r\n // Update two-way binding for zoom\r\n const normalizedZoom = PropertyTransformers.transformZoom.fromViewer(\r\n event.scale,\r\n );\r\n if (\r\n this._zoom !== normalizedZoom &&\r\n !this.changeOriginTracker.isProgrammatic(\"zoom\")\r\n ) {\r\n this.changeOriginTracker.markUserInitiated(\"zoom\");\r\n this._zoom = normalizedZoom;\r\n this.zoomChange.emit(normalizedZoom);\r\n }\r\n \r\n this.onScaleChange.emit(newScale);\r\n };\r\n \r\n // Store handlers for cleanup\r\n (this as any)._pdfEventHandlers = {\r\n documentloaded: documentLoadedHandler,\r\n pagesloaded: pagesLoadedHandler,\r\n beforeprint: beforePrintHandler,\r\n afterprint: afterPrintHandler,\r\n pagechanging: pageChangingHandler,\r\n rotationchanging: rotationChangingHandler,\r\n scalechanging: scaleChangingHandler,\r\n };\r\n \r\n // Attach event listeners\r\n eventBus.on(\"documentloaded\", documentLoadedHandler);\r\n eventBus.on(\"pagesloaded\", pagesLoadedHandler);\r\n eventBus.on(\"beforeprint\", beforePrintHandler);\r\n eventBus.on(\"afterprint\", afterPrintHandler);\r\n eventBus.on(\"pagechanging\", pageChangingHandler);\r\n eventBus.on(\"rotationchanging\", rotationChangingHandler);\r\n eventBus.on(\"scalechanging\", scaleChangingHandler);\r\n });\r\n };\r\n \r\n // Store the handler reference for cleanup\r\n (this as any)._webviewerLoadedHandler = webviewerLoadedHandler;\r\n \r\n document.addEventListener(\"webviewerloaded\", webviewerLoadedHandler);\r\n }\r\n // #endregion\r\n\r\n // #region Configuration and Action Queue Methods\r\n private queueAllConfigurations(): void {\r\n // Queue control visibility configurations (immediate actions)\r\n this.queueConfiguration(\"showOpenFile\", this.showOpenFile, \"show-openfile\");\r\n this.queueConfiguration(\"showDownload\", this.showDownload, \"show-download\");\r\n this.queueConfiguration(\"showPrint\", this.showPrint, \"show-print\");\r\n this.queueConfiguration(\r\n \"showFullScreen\",\r\n this.showFullScreen,\r\n \"show-fullscreen\",\r\n );\r\n this.queueConfiguration(\"showFind\", this.showFind, \"show-find\");\r\n this.queueConfiguration(\r\n \"showViewBookmark\",\r\n this.showViewBookmark,\r\n \"show-bookmark\",\r\n );\r\n this.queueConfiguration(\r\n \"showAnnotations\",\r\n this.showAnnotations,\r\n \"show-annotations\",\r\n );\r\n\r\n // Toolbar/Sidebar group visibility\r\n this.queueConfiguration(\r\n \"showToolbarLeft\",\r\n this.showToolbarLeft,\r\n \"show-toolbar-left\",\r\n );\r\n this.queueConfiguration(\r\n \"showToolbarMiddle\",\r\n this.showToolbarMiddle,\r\n \"show-toolbar-middle\",\r\n );\r\n this.queueConfiguration(\r\n \"showToolbarRight\",\r\n this.showToolbarRight,\r\n \"show-toolbar-right\",\r\n );\r\n this.queueConfiguration(\r\n \"showSecondaryToolbarToggle\",\r\n this.showSecondaryToolbarToggle,\r\n \"show-secondary-toolbar-toggle\",\r\n );\r\n this.queueConfiguration(\"showSidebar\", this.showSidebar, \"show-sidebar\");\r\n this.queueConfiguration(\r\n \"showSidebarLeft\",\r\n this.showSidebarLeft,\r\n \"show-sidebar-left\",\r\n );\r\n this.queueConfiguration(\r\n \"showSidebarRight\",\r\n this.showSidebarRight,\r\n \"show-sidebar-right\",\r\n );\r\n\r\n // Layout customization\r\n this.queueConfiguration(\r\n \"toolbarDensity\",\r\n this.toolbarDensity,\r\n \"set-toolbar-density\",\r\n );\r\n if (this.sidebarWidth) {\r\n this.queueConfiguration(\r\n \"sidebarWidth\",\r\n this.sidebarWidth,\r\n \"set-sidebar-width\",\r\n );\r\n }\r\n this.queueConfiguration(\r\n \"toolbarPosition\",\r\n this.toolbarPosition,\r\n \"set-toolbar-position\",\r\n );\r\n this.queueConfiguration(\r\n \"sidebarPosition\",\r\n this.sidebarPosition,\r\n \"set-sidebar-position\",\r\n );\r\n if (this.responsiveBreakpoint !== undefined) {\r\n this.queueConfiguration(\r\n \"responsiveBreakpoint\",\r\n this.responsiveBreakpoint,\r\n \"set-responsive-breakpoint\",\r\n );\r\n }\r\n\r\n // Queue mode configurations (immediate actions)\r\n if (this.cursor) {\r\n this.queueConfiguration(\"cursor\", this.cursor, \"set-cursor\");\r\n }\r\n if (this.scroll) {\r\n this.queueConfiguration(\"scroll\", this.scroll, \"set-scroll\");\r\n }\r\n if (this.spread) {\r\n this.queueConfiguration(\"spread\", this.spread, \"set-spread\");\r\n }\r\n\r\n // Queue navigation configurations (immediate actions)\r\n if (this._page) {\r\n this.queueConfiguration(\"page\", this._page, \"set-page\");\r\n }\r\n if (this.zoom) {\r\n this.queueConfiguration(\"zoom\", this.zoom, \"set-zoom\");\r\n }\r\n // Note: zoom is now handled by two-way binding [(zoom)]\r\n // Queue navigation configuration if specified\r\n if (this.namedDest && this.namedDest.trim() !== \"\") {\r\n this.queueConfiguration(\"namedDest\", this.namedDest, \"go-to-named-dest\");\r\n }\r\n if (this.pageMode) {\r\n this.queueConfiguration(\"pageMode\", this.pageMode, \"update-page-mode\");\r\n }\r\n\r\n // Queue rotation configurations (immediate actions)\r\n if (this.rotateCW === true) {\r\n this.queueConfiguration(\"rotateCW\", this.rotateCW, \"trigger-rotate-cw\");\r\n }\r\n if (this.rotateCCW === true) {\r\n this.queueConfiguration(\r\n \"rotateCCW\",\r\n this.rotateCCW,\r\n \"trigger-rotate-ccw\",\r\n );\r\n }\r\n\r\n // Queue error handling configurations (non-auto-actions)\r\n if (this.errorMessage) {\r\n this.queueConfiguration(\r\n \"errorMessage\",\r\n this.errorMessage,\r\n \"set-error-message\",\r\n );\r\n }\r\n if (this.errorOverride !== undefined) {\r\n this.queueConfiguration(\r\n \"errorOverride\",\r\n this.errorOverride,\r\n \"set-error-override\",\r\n );\r\n }\r\n if (this.errorAppend !== undefined) {\r\n this.queueConfiguration(\r\n \"errorAppend\",\r\n this.errorAppend,\r\n \"set-error-append\",\r\n );\r\n }\r\n\r\n // Queue theme and visual customization configurations\r\n // Always queue theme to ensure initial styles are applied\r\n\r\n this.queueConfiguration(\"theme\", this.theme || \"light\", \"set-theme\");\r\n\r\n if (this.primaryColor) {\r\n this.queueConfiguration(\r\n \"primaryColor\",\r\n this.primaryColor,\r\n \"set-primary-color\",\r\n );\r\n }\r\n if (this.backgroundColor) {\r\n this.queueConfiguration(\r\n \"backgroundColor\",\r\n this.backgroundColor,\r\n \"set-background-color\",\r\n );\r\n }\r\n if (this.pageBorderColor) {\r\n this.queueConfiguration(\r\n \"pageBorderColor\",\r\n this.pageBorderColor,\r\n \"set-page-border-color\",\r\n );\r\n }\r\n if (this.pageSpacing) {\r\n this.queueConfiguration(\r\n \"pageSpacing\",\r\n this.pageSpacing,\r\n \"set-page-spacing\",\r\n );\r\n }\r\n if (this.toolbarColor) {\r\n this.queueConfiguration(\r\n \"toolbarColor\",\r\n this.toolbarColor,\r\n \"set-toolbar-color\",\r\n );\r\n }\r\n if (this.textColor) {\r\n this.queueConfiguration(\"textColor\", this.textColor, \"set-text-color\");\r\n }\r\n if (this.borderRadius) {\r\n this.queueConfiguration(\r\n \"borderRadius\",\r\n this.borderRadius,\r\n \"set-border-radius\",\r\n );\r\n }\r\n if (this.customCSS) {\r\n this.queueConfiguration(\"customCSS\", this.customCSS, \"set-custom-css\");\r\n }\r\n\r\n // Queue CSS zoom configurations (immediate actions)\r\n // Note: Locale is now set via URL parameter, not PostMessage\r\n if (this.useOnlyCssZoom !== undefined) {\r\n this.queueConfiguration(\r\n \"useOnlyCssZoom\",\r\n this.useOnlyCssZoom,\r\n \"set-css-zoom\",\r\n );\r\n }\r\n\r\n // Queue event configurations (non-auto-actions)\r\n if (this.onBeforePrint) {\r\n this.queueConfiguration(\"beforePrint\", true, \"enable-before-print\");\r\n }\r\n if (this.onAfterPrint) {\r\n this.queueConfiguration(\"afterPrint\", true, \"enable-after-print\");\r\n }\r\n if (this.onDocumentLoad) {\r\n this.queueConfiguration(\"pagesLoaded\", true, \"enable-pages-loaded\");\r\n }\r\n if (this.onPageChange) {\r\n this.queueConfiguration(\"pageChange\", true, \"enable-page-change\");\r\n }\r\n\r\n // Queue new high-value event configurations\r\n if (this.onDocumentError) {\r\n this.queueConfiguration(\"documentError\", true, \"enable-document-error\");\r\n }\r\n if (this.onDocumentInit) {\r\n this.queueConfiguration(\"documentInit\", true, \"enable-document-init\");\r\n }\r\n if (this.onPagesInit) {\r\n this.queueConfiguration(\"pagesInit\", true, \"enable-pages-init\");\r\n }\r\n if (this.onPresentationModeChanged) {\r\n this.queueConfiguration(\r\n \"presentationModeChanged\",\r\n true,\r\n \"enable-presentation-mode-changed\",\r\n );\r\n }\r\n if (this.onOpenFile) {\r\n this.queueConfiguration(\"openFile\", true, \"enable-open-file\");\r\n }\r\n if (this.onFind) {\r\n this.queueConfiguration(\"find\", true, \"enable-find\");\r\n }\r\n if (this.onUpdateFindMatchesCount) {\r\n this.queueConfiguration(\r\n \"updateFindMatchesCount\",\r\n true,\r\n \"enable-update-find-matches-count\",\r\n );\r\n }\r\n if (this.onMetadataLoaded) {\r\n this.queueConfiguration(\"metadataLoaded\", true, \"enable-metadata-loaded\");\r\n }\r\n if (this.onOutlineLoaded) {\r\n this.queueConfiguration(\"outlineLoaded\", true, \"enable-outline-loaded\");\r\n }\r\n if (this.onPageRendered) {\r\n this.queueConfiguration(\"pageRendered\", true, \"enable-page-rendered\");\r\n }\r\n\r\n // New high-value events\r\n if (this.onAnnotationLayerRendered) {\r\n this.queueConfiguration(\r\n \"annotationLayerRendered\",\r\n true,\r\n \"enable-annotation-layer-rendered\",\r\n );\r\n }\r\n if (this.onBookmarkClick) {\r\n this.queueConfiguration(\"bookmarkClick\", true, \"enable-bookmark-click\");\r\n }\r\n if (this.onIdle) {\r\n this.queueConfiguration(\"idle\", true, \"enable-idle\");\r\n }\r\n\r\n // Note: Auto-actions are now queued when the document loads, not during component initialization\r\n // This ensures they use the current property values at the time of document load\r\n }\r\n\r\n private queueAutoActionsForDocumentLoad(): void {\r\n // Use universal dispatcher for auto-actions\r\n if (this.downloadOnLoad === true) {\r\n this.dispatchAction(\"trigger-download\", true, \"initial-load\");\r\n }\r\n\r\n if (this.showLastPageOnLoad === true) {\r\n this.dispatchAction(\"go-to-last-page\", true, \"initial-load\");\r\n }\r\n\r\n // Auto-print is handled in pagesLoadedHandler for timing reasons\r\n }\r\n\r\n private queueConfiguration(\r\n propertyName: string,\r\n value: any,\r\n action: string,\r\n ): void {\r\n // Use universal dispatcher for all configuration actions\r\n this.dispatchAction(action, value, \"initial-load\");\r\n }\r\n\r\n public refresh(): void {\r\n // Needs to be invoked for external window or when needs to reload pdf\r\n\r\n // Clean up existing event listeners\r\n ComponentUtils.cleanupEventHandlers(this);\r\n \r\n // Clear the action queue to ensure clean state\r\n if (this.actionQueueManager) {\r\n this.actionQueueManager.clearQueues();\r\n }\r\n \r\n // Reset PostMessage readiness state\r\n this.isPostMessageReady = false;\r\n this.postMessageReadiness = 0;\r\n this.pendingInitialConfig = true;\r\n this.initialConfigQueued = false; // Reset initial config flag\r\n \r\n // Reload the PDF - this will trigger queueAllConfigurations() when PostMessage API is ready\r\n this.loadPdf();\r\n }\r\n\r\n // Public method for external control messages\r\n public sendViewerControlMessage(action: string, payload: any): Promise<any> {\r\n return this.sendControlMessage(action, payload);\r\n }\r\n\r\n // #region Public Methods for On-Demand Actions\r\n public triggerDownload(): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\r\n return this.dispatchAction(\"trigger-download\", true, \"user-interaction\");\r\n }\r\n\r\n public triggerPrint(): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\r\n return this.dispatchAction(\"trigger-print\", true, \"user-interaction\");\r\n }\r\n\r\n public setPage(page: number): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\r\n return this.dispatchAction(\"set-page\", page, \"user-interaction\");\r\n }\r\n\r\n public setZoom(zoom: string): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\r\n return this.dispatchAction(\"set-zoom\", zoom, \"user-interaction\");\r\n }\r\n\r\n public goToLastPage(): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions - now always returns Promise<ActionExecutionResult>\r\n return this.dispatchAction(\"go-to-last-page\", true, \"user-interaction\");\r\n }\r\n\r\n public setCursor(cursor: string): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions\r\n return this.dispatchAction(\"set-cursor\", cursor, \"user-interaction\");\r\n }\r\n\r\n public setScroll(scroll: string): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions\r\n return this.dispatchAction(\"set-scroll\", scroll, \"user-interaction\");\r\n }\r\n\r\n public setSpread(spread: string): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions\r\n return this.dispatchAction(\"set-spread\", spread, \"user-interaction\");\r\n }\r\n\r\n public triggerRotation(\r\n direction: \"cw\" | \"ccw\",\r\n ): Promise<ActionExecutionResult> {\r\n // Use universal dispatcher for user interactions\r\n const action =\r\n direction === \"cw\" ? \"trigger-rotate-cw\" : \"trigger-rotate-ccw\";\r\n return this.dispatchAction(action, true, \"user-interaction\");\r\n }\r\n\r\n public goToPage(page: number): Promise<ActionExecutionResult> {\r\n // Alias for setPage for backward compatibility\r\n return this.setPage(page);\r\n }\r\n // #endregion\r\n\r\n // Action queue management methods\r\n public getActionStatus(\r\n actionId: string,\r\n ): \"pending\" | \"executing\" | \"completed\" | \"failed\" | \"not-found\" {\r\n if (!this.actionQueueManager) {\r\n return \"not-found\";\r\n }\r\n return this.actionQueueManager.getActionStatus(actionId);\r\n }\r\n\r\n public getQueueStatus(): { queuedActions: number; executedActions: number } {\r\n if (!this.actionQueueManager) {\r\n return {\r\n queuedActions: 0,\r\n executedActions: 0,\r\n };\r\n }\r\n return this.actionQueueManager.getQueueStatus();\r\n }\r\n\r\n public clearActionQueue(): void {\r\n if (this.actionQueueManager) {\r\n this.actionQueueManager.clearQueues();\r\n }\r\n }\r\n // #endregion\r\n\r\n // #region PDF Loading and URL Handling\r\n private loadPdf(): void {\r\n if (!this.validatePdfSource()) return;\r\n\r\n this.setupExternalWindow();\r\n const fileUrl = this.createFileUrl();\r\n const viewerUrl = this.buildViewerUrl(fileUrl);\r\n this.navigateToViewer(viewerUrl);\r\n }\r\n\r\n private validatePdfSource(): boolean {\r\n return !!this._src;\r\n }\r\n\r\n private setupExternalWindow(): void {\r\n if (!this.externalWindow) return;\r\n\r\n if (typeof this.viewerTab === \"undefined\" || this.viewerTab.closed) {\r\n this.viewerTab = window.open(\r\n \"\",\r\n this.target,\r\n this.externalWindowOptions || \"\",\r\n );\r\n if (this.viewerTab == null) {\r\n if (this.diagnosticLogs) {\r\n console.error(\r\n \"ng2-pdfjs-viewer: For 'externalWindow = true'. i.e opening in new tab to work, pop-ups should be enabled.\",\r\n );\r\n }\r\n return;\r\n }\r\n\r\n if (this.showSpinner) {\r\n this.renderLoadingSpinner();\r\n }\r\n }\r\n }\r\n\r\n private renderLoadingSpinner(): void {\r\n this.viewerTab.document.write(`\r\n <style>\r\n .loader {\r\n position: fixed;\r\n left: 40%;\r\n top: 40%;\r\n border: 16px solid #f3f3f3;\r\n border-radius: 50%;\r\n border-top: 16px solid #3498db;\r\n width: 120px;\r\n height: 120px;\r\n animation: spin 2s linear infinite;\r\n }\r\n @keyframes spin {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n </style>\r\n <div class=\"loader\"></div>\r\n `);\r\n }\r\n\r\n private createFileUrl(): string {\r\n this.relaseUrl?.();\r\n\r\n if (this._src instanceof Blob) {\r\n const url = URL.createObjectURL(this._src);\r\n this.relaseUrl = () => URL.revokeObjectURL(url);\r\n return encodeURIComponent(url);\r\n } else if (this._src instanceof Uint8Array) {\r\n let blob = new Blob([this._src], { type: \"application/pdf\" });\r\n const url = URL.createObjectURL(blob);\r\n this.relaseUrl = () => URL.revokeObjectURL(url);\r\n return encodeURIComponent(url);\r\n } else {\r\n return this._src;\r\n }\r\n }\r\n\r\n private buildViewerUrl(fileUrl: string): string {\r\n let viewerUrl = this.getBaseViewerUrl();\r\n viewerUrl = this.addFileParameter(viewerUrl, fileUrl);\r\n viewerUrl = this.addViewerIdParameter(viewerUrl);\r\n viewerUrl = this.addCacheBustingIfNeeded(viewerUrl);\r\n\r\n return viewerUrl;\r\n }\r\n\r\n private getBaseViewerUrl(): string {\r\n return this.viewerFolder\r\n ? `${this.viewerFolder}/web/viewer.html`\r\n : `assets/pdfjs/web/viewer.html`;\r\n }\r\n\r\n private addFileParameter(viewerUrl: string, fileUrl: string): string {\r\n return `${viewerUrl}?file=${fileUrl}`;\r\n }\r\n\r\n private addViewerIdParameter(viewerUrl: string): string {\r\n return typeof this.viewerId !== \"undefined\"\r\n ? `${viewerUrl}&viewerId=${this.viewerId}`\r\n : viewerUrl;\r\n }\r\n\r\n private addCacheBustingIfNeeded(viewerUrl: string): string {\r\n if (this.isDevelopmentMode()) {\r\n const cacheBuster = Date.now();\r\n\r\n return `${viewerUrl}&_t=${cacheBuster}`;\r\n } else {\r\n return viewerUrl;\r\n }\r\n }\r\n\r\n private isDevelopmentMode(): boolean {\r\n return (\r\n window.location.hostname === \"localhost\" ||\r\n window.location.hostname === \"127.0.0.1\" ||\r\n window.location.port === \"4200\" ||\r\n window.location.href.includes(\"localhost:4200\")\r\n );\r\n }\r\n\r\n private navigateToViewer(viewerUrl: string): void {\r\n if (this.externalWindow) {\r\n this.viewerTab.location.href = viewerUrl;\r\n } else {\r\n this.iframe.nativeElement.contentWindow.location.replace(viewerUrl);\r\n }\r\n \r\n if (this.diagnosticLogs) {\r\n this.logViewerConfiguration(viewerUrl);\r\n }\r\n }\r\n\r\n private logViewerConfiguration(viewerUrl: string): void {\r\n console.debug(`PdfJsViewer: Minimal URL configuration:\r\n pdfSrc = ${this.pdfSrc}\r\n externalWindow = ${this.externalWindow}\r\n viewerFolder = ${this.viewerFolder}\r\n viewerId = ${this.viewerId}\r\n finalUrl = ${viewerUrl}\r\n \r\n All other configurations handled via PostMessage system:\r\n showOpenFile = ${this.showOpenFile}\r\n showDownload = ${this.showDownload}\r\n showViewBookmark = ${this.showViewBookmark}\r\n showPrint = ${this.showPrint}\r\n showFullScreen = ${this.showFullScreen}\r\n showFind = ${this.showFind}\r\n cursor = ${this.cursor}\r\n scroll = ${this.scroll}\r\n spread = ${this.spread}\r\n page = ${this.page}\r\n zoom = ${this.zoom}\r\n namedDest = ${this.namedDest}\r\n pageMode = ${this.pageMode}\r\n errorOverride = ${this.errorOverride}\r\n errorAppend = ${this.errorAppend}\r\n errorMessage = ${this.errorMessage}\r\n locale = ${this.locale}\r\n useOnlyCssZoom = ${this.useOnlyCssZoom}\r\n \r\n Auto-actions (handled by action queue):\r\n downloadOnLoad = ${this.downloadOnLoad}\r\n printOnLoad = ${this.printOnLoad}\r\n showLastPageOnLoad = ${this.showLastPageOnLoad}\r\n `);\r\n }\r\n // #endregion\r\n\r\n // #region Two-Way Binding Helper Methods\r\n private applyZoomToViewer(zoom: string): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"set-zoom\", zoom, \"property-change\");\r\n }\r\n\r\n private applyRotationToViewer(rotation: number): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"set-rotation\", rotation, \"property-change\");\r\n }\r\n\r\n private applyCursorToViewer(cursor: string): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"set-cursor\", cursor, \"property-change\");\r\n }\r\n\r\n private applyScrollToViewer(scroll: string): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"set-scroll\", scroll, \"property-change\");\r\n }\r\n\r\n private applySpreadToViewer(spread: string): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"set-spread\", spread, \"property-change\");\r\n }\r\n\r\n private applyPageModeToViewer(pageMode: string): void {\r\n // Use universal dispatcher - it will handle readiness checking and queuing\r\n this.dispatchAction(\"update-page-mode\", pageMode, \"property-change\");\r\n }\r\n // #endregion\r\n\r\n // Universal Action Dispatcher - ALL actions go through readiness-based queuing\r\n private dispatchAction(\r\n action: string,\r\n payload: any,\r\n source:\r\n | \"initial-load\"\r\n | \"property-change\"\r\n | \"user-interaction\" = \"property-change\",\r\n ): Promise<ActionExecutionResult> {\r\n const requiredReadiness = this.getRequiredReadinessLevel(action);\r\n const actionObj: ViewerAction = {\r\n id: `${source}-${action}-${Date.now()}`,\r\n action: action,\r\n payload: payload,\r\n };\r\n\r\n // Check if we have sufficient readiness to execute immediately\r\n if (this.hasRequiredReadiness(requiredReadiness)) {\r\n return this.actionQueueManager.executeAction(actionObj);\r\n } else {\r\n // Queue action to execute when readiness is achieved\r\n this.actionQueueManager.queueAction(actionObj, requiredReadiness);\r\n\r\n // Return a promise that resolves when the action eventually executes\r\n return Promise.resolve({\r\n actionId: actionObj.id,\r\n success: true,\r\n timestamp: Date.now(),\r\n } as ActionExecutionResult);\r\n }\r\n }\r\n\r\n private getRequiredReadinessLevel(action: string): number {\r\n // Define readiness requirements for all actions\r\n const level1Actions = [\r\n \"set-theme\",\r\n \"set-primary-color\",\r\n \"set-background-color\",\r\n \"set-page-border-color\",\r\n \"set-toolbar-color\",\r\n \"set-text-color\",\r\n \"set-border-radius\",\r\n \"set-custom-css\",\r\n ];\r\n const level3Actions = [\r\n \"show-download\",\r\n \"show-print\",\r\n \"show-fullscreen\",\r\n \"show-find\",\r\n \"show-bookmark\",\r\n \"show-openfile\",\r\n \"show-annotations\",\r\n \"set-error-message\",\r\n \"set-error-override\",\r\n \"set-error-append\",\r\n \"set-css-zoom\",\r\n // DOM visibility toggles\r\n \"show-toolbar-left\",\r\n \"show-toolbar-middle\",\r\n \"show-toolbar-right\",\r\n \"show-secondary-toolbar-toggle\",\r\n \"show-sidebar\",\r\n \"show-sidebar-left\",\r\n \"show-sidebar-right\",\r\n ];\r\n const level4Actions = [\r\n \"set-cursor\",\r\n \"set-scroll\",\r\n \"set-spread\",\r\n \"set-zoom\",\r\n \"update-page-mode\",\r\n // Layout actions require components ready to measure\r\n \"set-toolbar-density\",\r\n \"set-sidebar-width\",\r\n \"set-toolbar-position\",\r\n \"set-sidebar-position\",\r\n \"set-responsive-breakpoint\",\r\n ];\r\n const level5Actions = [\r\n \"set-page\",\r\n \"set-rotation\",\r\n \"go-to-last-page\",\r\n \"go-to-named-dest\",\r\n \"trigger-download\",\r\n \"trigger-print\",\r\n \"trigger-rotate-cw\",\r\n \"trigger-rotate-ccw\",\r\n ];\r\n\r\n if (level1Actions.includes(action)) return 1; // VIEWER_LOADED - DOM access only\r\n if (level3Actions.includes(action)) return 3; // EVENTBUS_READY\r\n if (level4Actions.includes(action)) return 4; // COMPONENTS_READY\r\n if (level5Actions.includes(action)) return 5; // DOCUMENT_LOADED\r\n return 3; // Default to EVENTBUS_READY\r\n }\r\n\r\n private hasRequiredReadiness(requiredLevel: number): boolean {\r\n if (!this.isPostMessageReady) return false;\r\n if (requiredLevel === 5 && !this.actionQueueManager?.isDocumentLoaded)\r\n return false;\r\n return this.postMessageReadiness >= requiredLevel;\r\n }\r\n}\r\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
@@ -65,6 +65,11 @@ interface ThemeConfig {
65
65
  primaryColor?: string;
66
66
  backgroundColor?: string;
67
67
  pageBorderColor?: string;
68
+ pageSpacing?: {
69
+ margin?: string;
70
+ spreadMargin?: string;
71
+ border?: string;
72
+ };
68
73
  toolbarColor?: string;
69
74
  textColor?: string;
70
75
  borderRadius?: string;
@@ -185,6 +190,11 @@ declare class PdfJsViewerComponent implements OnInit, OnDestroy, OnChanges, Afte
185
190
  primaryColor?: string;
186
191
  backgroundColor?: string;
187
192
  pageBorderColor?: string;
193
+ pageSpacing?: {
194
+ margin?: string;
195
+ spreadMargin?: string;
196
+ border?: string;
197
+ };
188
198
  toolbarColor?: string;
189
199
  textColor?: string;
190
200
  borderRadius?: string;
@@ -370,7 +380,7 @@ declare class PdfJsViewerComponent implements OnInit, OnDestroy, OnChanges, Afte
370
380
  private getRequiredReadinessLevel;
371
381
  private hasRequiredReadiness;
372
382
  static ɵfac: i0.ɵɵFactoryDeclaration<PdfJsViewerComponent, never>;
373
- static ɵcmp: i0.ɵɵComponentDeclaration<PdfJsViewerComponent, "ng2-pdfjs-viewer", never, { "viewerId": { "alias": "viewerId"; "required": false; }; "viewerFolder": { "alias": "viewerFolder"; "required": false; }; "externalWindow": { "alias": "externalWindow"; "required": false; }; "target": { "alias": "target"; "required": false; }; "showSpinner": { "alias": "showSpinner"; "required": false; }; "downloadFileName": { "alias": "downloadFileName"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "useOnlyCssZoom": { "alias": "useOnlyCssZoom"; "required": false; }; "diagnosticLogs": { "alias": "diagnosticLogs"; "required": false; }; "showOpenFile": { "alias": "showOpenFile"; "required": false; }; "showAnnotations": { "alias": "showAnnotations"; "required": false; }; "showDownload": { "alias": "showDownload"; "required": false; }; "showViewBookmark": { "alias": "showViewBookmark"; "required": false; }; "showPrint": { "alias": "showPrint"; "required": false; }; "showFullScreen": { "alias": "showFullScreen"; "required": false; }; "showFind": { "alias": "showFind"; "required": false; }; "downloadOnLoad": { "alias": "downloadOnLoad"; "required": false; }; "printOnLoad": { "alias": "printOnLoad"; "required": false; }; "rotateCW": { "alias": "rotateCW"; "required": false; }; "rotateCCW": { "alias": "rotateCCW"; "required": false; }; "showLastPageOnLoad": { "alias": "showLastPageOnLoad"; "required": false; }; "namedDest": { "alias": "namedDest"; "required": false; }; "errorOverride": { "alias": "errorOverride"; "required": false; }; "errorAppend": { "alias": "errorAppend"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "primaryColor": { "alias": "primaryColor"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "pageBorderColor": { "alias": "pageBorderColor"; "required": false; }; "toolbarColor": { "alias": "toolbarColor"; "required": false; }; "textColor": { "alias": "textColor"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "customCSS": { "alias": "customCSS"; "required": false; }; "customSpinnerTpl": { "alias": "customSpinnerTpl"; "required": false; }; "spinnerClass": { "alias": "spinnerClass"; "required": false; }; "customErrorTpl": { "alias": "customErrorTpl"; "required": false; }; "errorClass": { "alias": "errorClass"; "required": false; }; "showToolbarLeft": { "alias": "showToolbarLeft"; "required": false; }; "showToolbarMiddle": { "alias": "showToolbarMiddle"; "required": false; }; "showToolbarRight": { "alias": "showToolbarRight"; "required": false; }; "showSecondaryToolbarToggle": { "alias": "showSecondaryToolbarToggle"; "required": false; }; "showSidebar": { "alias": "showSidebar"; "required": false; }; "showSidebarLeft": { "alias": "showSidebarLeft"; "required": false; }; "showSidebarRight": { "alias": "showSidebarRight"; "required": false; }; "toolbarDensity": { "alias": "toolbarDensity"; "required": false; }; "sidebarWidth": { "alias": "sidebarWidth"; "required": false; }; "toolbarPosition": { "alias": "toolbarPosition"; "required": false; }; "sidebarPosition": { "alias": "sidebarPosition"; "required": false; }; "responsiveBreakpoint": { "alias": "responsiveBreakpoint"; "required": false; }; "controlVisibility": { "alias": "controlVisibility"; "required": false; }; "autoActions": { "alias": "autoActions"; "required": false; }; "errorHandling": { "alias": "errorHandling"; "required": false; }; "viewerConfig": { "alias": "viewerConfig"; "required": false; }; "themeConfig": { "alias": "themeConfig"; "required": false; }; "groupVisibility": { "alias": "groupVisibility"; "required": false; }; "layoutConfig": { "alias": "layoutConfig"; "required": false; }; "startDownload": { "alias": "startDownload"; "required": false; }; "startPrint": { "alias": "startPrint"; "required": false; }; "openFile": { "alias": "openFile"; "required": false; }; "download": { "alias": "download"; "required": false; }; "print": { "alias": "print"; "required": false; }; "fullScreen": { "alias": "fullScreen"; "required": false; }; "find": { "alias": "find"; "required": false; }; "viewBookmark": { "alias": "viewBookmark"; "required": false; }; "lastPage": { "alias": "lastPage"; "required": false; }; "externalWindowOptions": { "alias": "externalWindowOptions"; "required": false; }; "zoom": { "alias": "zoom"; "required": false; }; "rotation": { "alias": "rotation"; "required": false; }; "cursor": { "alias": "cursor"; "required": false; }; "scroll": { "alias": "scroll"; "required": false; }; "spread": { "alias": "spread"; "required": false; }; "pageMode": { "alias": "pageMode"; "required": false; }; "page": { "alias": "page"; "required": false; }; "pdfSrc": { "alias": "pdfSrc"; "required": false; }; }, { "onBeforePrint": "onBeforePrint"; "onAfterPrint": "onAfterPrint"; "onDocumentLoad": "onDocumentLoad"; "onPageChange": "onPageChange"; "onScaleChange": "onScaleChange"; "onRotationChange": "onRotationChange"; "onDocumentError": "onDocumentError"; "onDocumentInit": "onDocumentInit"; "onPagesInit": "onPagesInit"; "onPresentationModeChanged": "onPresentationModeChanged"; "onOpenFile": "onOpenFile"; "onFind": "onFind"; "onUpdateFindMatchesCount": "onUpdateFindMatchesCount"; "onMetadataLoaded": "onMetadataLoaded"; "onOutlineLoaded": "onOutlineLoaded"; "onPageRendered": "onPageRendered"; "onAnnotationLayerRendered": "onAnnotationLayerRendered"; "onBookmarkClick": "onBookmarkClick"; "onIdle": "onIdle"; "zoomChange": "zoomChange"; "cursorChange": "cursorChange"; "scrollChange": "scrollChange"; "spreadChange": "spreadChange"; "pageModeChange": "pageModeChange"; }, never, never, false, never>;
383
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdfJsViewerComponent, "ng2-pdfjs-viewer", never, { "viewerId": { "alias": "viewerId"; "required": false; }; "viewerFolder": { "alias": "viewerFolder"; "required": false; }; "externalWindow": { "alias": "externalWindow"; "required": false; }; "target": { "alias": "target"; "required": false; }; "showSpinner": { "alias": "showSpinner"; "required": false; }; "downloadFileName": { "alias": "downloadFileName"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "useOnlyCssZoom": { "alias": "useOnlyCssZoom"; "required": false; }; "diagnosticLogs": { "alias": "diagnosticLogs"; "required": false; }; "showOpenFile": { "alias": "showOpenFile"; "required": false; }; "showAnnotations": { "alias": "showAnnotations"; "required": false; }; "showDownload": { "alias": "showDownload"; "required": false; }; "showViewBookmark": { "alias": "showViewBookmark"; "required": false; }; "showPrint": { "alias": "showPrint"; "required": false; }; "showFullScreen": { "alias": "showFullScreen"; "required": false; }; "showFind": { "alias": "showFind"; "required": false; }; "downloadOnLoad": { "alias": "downloadOnLoad"; "required": false; }; "printOnLoad": { "alias": "printOnLoad"; "required": false; }; "rotateCW": { "alias": "rotateCW"; "required": false; }; "rotateCCW": { "alias": "rotateCCW"; "required": false; }; "showLastPageOnLoad": { "alias": "showLastPageOnLoad"; "required": false; }; "namedDest": { "alias": "namedDest"; "required": false; }; "errorOverride": { "alias": "errorOverride"; "required": false; }; "errorAppend": { "alias": "errorAppend"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "primaryColor": { "alias": "primaryColor"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "pageBorderColor": { "alias": "pageBorderColor"; "required": false; }; "pageSpacing": { "alias": "pageSpacing"; "required": false; }; "toolbarColor": { "alias": "toolbarColor"; "required": false; }; "textColor": { "alias": "textColor"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "customCSS": { "alias": "customCSS"; "required": false; }; "customSpinnerTpl": { "alias": "customSpinnerTpl"; "required": false; }; "spinnerClass": { "alias": "spinnerClass"; "required": false; }; "customErrorTpl": { "alias": "customErrorTpl"; "required": false; }; "errorClass": { "alias": "errorClass"; "required": false; }; "showToolbarLeft": { "alias": "showToolbarLeft"; "required": false; }; "showToolbarMiddle": { "alias": "showToolbarMiddle"; "required": false; }; "showToolbarRight": { "alias": "showToolbarRight"; "required": false; }; "showSecondaryToolbarToggle": { "alias": "showSecondaryToolbarToggle"; "required": false; }; "showSidebar": { "alias": "showSidebar"; "required": false; }; "showSidebarLeft": { "alias": "showSidebarLeft"; "required": false; }; "showSidebarRight": { "alias": "showSidebarRight"; "required": false; }; "toolbarDensity": { "alias": "toolbarDensity"; "required": false; }; "sidebarWidth": { "alias": "sidebarWidth"; "required": false; }; "toolbarPosition": { "alias": "toolbarPosition"; "required": false; }; "sidebarPosition": { "alias": "sidebarPosition"; "required": false; }; "responsiveBreakpoint": { "alias": "responsiveBreakpoint"; "required": false; }; "controlVisibility": { "alias": "controlVisibility"; "required": false; }; "autoActions": { "alias": "autoActions"; "required": false; }; "errorHandling": { "alias": "errorHandling"; "required": false; }; "viewerConfig": { "alias": "viewerConfig"; "required": false; }; "themeConfig": { "alias": "themeConfig"; "required": false; }; "groupVisibility": { "alias": "groupVisibility"; "required": false; }; "layoutConfig": { "alias": "layoutConfig"; "required": false; }; "startDownload": { "alias": "startDownload"; "required": false; }; "startPrint": { "alias": "startPrint"; "required": false; }; "openFile": { "alias": "openFile"; "required": false; }; "download": { "alias": "download"; "required": false; }; "print": { "alias": "print"; "required": false; }; "fullScreen": { "alias": "fullScreen"; "required": false; }; "find": { "alias": "find"; "required": false; }; "viewBookmark": { "alias": "viewBookmark"; "required": false; }; "lastPage": { "alias": "lastPage"; "required": false; }; "externalWindowOptions": { "alias": "externalWindowOptions"; "required": false; }; "zoom": { "alias": "zoom"; "required": false; }; "rotation": { "alias": "rotation"; "required": false; }; "cursor": { "alias": "cursor"; "required": false; }; "scroll": { "alias": "scroll"; "required": false; }; "spread": { "alias": "spread"; "required": false; }; "pageMode": { "alias": "pageMode"; "required": false; }; "page": { "alias": "page"; "required": false; }; "pdfSrc": { "alias": "pdfSrc"; "required": false; }; }, { "onBeforePrint": "onBeforePrint"; "onAfterPrint": "onAfterPrint"; "onDocumentLoad": "onDocumentLoad"; "onPageChange": "onPageChange"; "onScaleChange": "onScaleChange"; "onRotationChange": "onRotationChange"; "onDocumentError": "onDocumentError"; "onDocumentInit": "onDocumentInit"; "onPagesInit": "onPagesInit"; "onPresentationModeChanged": "onPresentationModeChanged"; "onOpenFile": "onOpenFile"; "onFind": "onFind"; "onUpdateFindMatchesCount": "onUpdateFindMatchesCount"; "onMetadataLoaded": "onMetadataLoaded"; "onOutlineLoaded": "onOutlineLoaded"; "onPageRendered": "onPageRendered"; "onAnnotationLayerRendered": "onAnnotationLayerRendered"; "onBookmarkClick": "onBookmarkClick"; "onIdle": "onIdle"; "zoomChange": "zoomChange"; "cursorChange": "cursorChange"; "scrollChange": "scrollChange"; "spreadChange": "spreadChange"; "pageModeChange": "pageModeChange"; }, never, never, false, never>;
374
384
  }
375
385
 
376
386
  declare class PdfJsViewerModule {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng2-pdfjs-viewer",
3
- "version": "25.0.8",
3
+ "version": "25.0.9",
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",
@@ -845,6 +845,9 @@
845
845
  case 'set-page-border-color':
846
846
  setPageBorderColor(payload);
847
847
  break;
848
+ case 'set-page-spacing':
849
+ setPageSpacing(payload.margin, payload.spreadMargin, payload.border);
850
+ break;
848
851
  case 'set-toolbar-color':
849
852
  setToolbarColor(payload);
850
853
  break;
@@ -1314,6 +1317,18 @@
1314
1317
  setCSSVariable('--ng2-background-color', color);
1315
1318
  }
1316
1319
 
1320
+ function setPageSpacing(margin, spreadMargin, border) {
1321
+ if (margin !== undefined) {
1322
+ setCSSVariable('--page-margin', margin);
1323
+ }
1324
+ if (spreadMargin !== undefined) {
1325
+ setCSSVariable('--spreadHorizontalWrapped-margin-LR', spreadMargin);
1326
+ }
1327
+ if (border !== undefined) {
1328
+ setCSSVariable('--page-border', border);
1329
+ }
1330
+ }
1331
+
1317
1332
  function setPageBorderColor(color) {
1318
1333
  setCSSVariable('--ng2-page-border-color', color);
1319
1334
  }
@@ -1374,9 +1389,9 @@
1374
1389
  const style = document.createElement('style');
1375
1390
  style.id = styleId;
1376
1391
  style.textContent = `
1377
- /* Base theme styles */
1392
+ /* Base theme styles - Preserve PDF.js defaults */
1378
1393
  .ng2-theme-light {
1379
- --ng2-default-bg: #ffffff;
1394
+ --ng2-default-bg: #d4d4d7; /* PDF.js original grey background */
1380
1395
  --ng2-default-text: #000000;
1381
1396
  --ng2-default-toolbar: #f9f9f9;
1382
1397
  --ng2-default-border: #cccccc;
@@ -1391,7 +1406,7 @@
1391
1406
  }
1392
1407
 
1393
1408
  .ng2-theme-light-active {
1394
- --ng2-default-bg: #ffffff;
1409
+ --ng2-default-bg: #d4d4d7; /* PDF.js original grey background */
1395
1410
  --ng2-default-text: #000000;
1396
1411
  --ng2-default-toolbar: #f9f9f9;
1397
1412
  --ng2-default-border: #cccccc;
@@ -1418,11 +1433,12 @@
1418
1433
  border-color: var(--ng2-default-border) !important;
1419
1434
  }
1420
1435
 
1421
- /* PDF page styling */
1436
+ /* PDF page styling - Clean appearance with proper spacing */
1422
1437
  .page, .pdfViewer .page {
1423
1438
  background-color: var(--ng2-page-border-color, #ffffff) !important;
1424
1439
  border-radius: var(--ng2-border-radius, 0) !important;
1425
- box-shadow: 0 0 0 1px var(--ng2-default-border) !important;
1440
+ border: var(--page-border) !important;
1441
+ box-shadow: none !important;
1426
1442
  }
1427
1443
 
1428
1444
  /* Canvas within pages */
@@ -1493,7 +1509,7 @@
1493
1509
  filter: invert(1) hue-rotate(180deg);
1494
1510
  }
1495
1511
 
1496
- /* Force override PDF.js default styles */
1512
+ /* Force override PDF.js default styles - Preserve original spacing */
1497
1513
  body {
1498
1514
  --toolbar-bg-color: var(--ng2-toolbar-color, var(--ng2-default-toolbar)) !important;
1499
1515
  --body-bg-color: var(--ng2-background-color, var(--ng2-default-bg)) !important;
@@ -1502,6 +1518,11 @@
1502
1518
  --field-bg-color: var(--ng2-background-color, #ffffff) !important;
1503
1519
  --field-color: var(--ng2-text-color, #000000) !important;
1504
1520
  --button-hover-color: var(--ng2-primary-color, rgba(0, 0, 0, 0.1)) !important;
1521
+
1522
+ /* Preserve PDF.js original page spacing variables - Invisible borders for spacing */
1523
+ --page-margin: 1px auto -8px !important;
1524
+ --spreadHorizontalWrapped-margin-LR: -3.5px !important;
1525
+ --page-border: 9px solid transparent !important;
1505
1526
  }
1506
1527
 
1507
1528
  /* Additional specificity for stubborn elements */
@@ -1509,6 +1530,12 @@
1509
1530
  background-color: var(--ng2-background-color, var(--ng2-default-bg)) !important;
1510
1531
  }
1511
1532
 
1533
+ /* Ensure clean appearance with proper spacing */
1534
+ .pdfViewer .page {
1535
+ box-shadow: none !important;
1536
+ outline: none !important;
1537
+ }
1538
+
1512
1539
  body #toolbarViewer #toolbarContainer {
1513
1540
  background-color: var(--ng2-toolbar-color, var(--ng2-default-toolbar)) !important;
1514
1541
  }