{"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  TemplateRef,\r\n  SimpleChanges,\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\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      /* Main container styling */\r\n      .ng2-pdfjs-viewer-container {\r\n        position: relative;\r\n        width: 100%;\r\n        height: 100%;\r\n      }\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      /* Default spinner content styling */\r\n      .ng2-pdfjs-spinner-content {\r\n        text-align: center;\r\n      }\r\n\r\n      .ng2-pdfjs-spinner-icon {\r\n        display: inline-block;\r\n        width: 40px;\r\n        height: 40px;\r\n        border: 4px solid #f3f3f3;\r\n        border-top: 4px solid #2196F3;\r\n        border-radius: 50%;\r\n        animation: spin 1s linear infinite;\r\n      }\r\n\r\n      .ng2-pdfjs-spinner-text {\r\n        margin-top: 16px;\r\n        color: #666;\r\n        font-size: 16px;\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 error content styling */\r\n      .ng2-pdfjs-error-content {\r\n        text-align: center;\r\n        max-width: 400px;\r\n        padding: 20px;\r\n      }\r\n\r\n      .ng2-pdfjs-error-icon {\r\n        font-size: 48px;\r\n        color: #f44336;\r\n        margin-bottom: 16px;\r\n      }\r\n\r\n      .ng2-pdfjs-error-title {\r\n        color: #333;\r\n        font-size: 18px;\r\n        font-weight: 500;\r\n        margin-bottom: 8px;\r\n      }\r\n\r\n      .ng2-pdfjs-error-message {\r\n        color: #666;\r\n        font-size: 14px;\r\n        line-height: 1.4;\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      /* Iframe border styling */\r\n      .ng2-pdfjs-viewer-iframe {\r\n        border: 0;\r\n      }\r\n      \r\n      /* Dynamic border classes */\r\n      .ng2-pdfjs-viewer-iframe.has-border {\r\n        border: 1px solid #ccc;\r\n      }\r\n    `,\r\n  ],\r\n  template: `\r\n    <div class=\"ng2-pdfjs-viewer-container\">\r\n      <iframe\r\n        [title]=\"iframeTitle || 'PDF document viewer'\"\r\n        [hidden]=\"externalWindow || (!externalWindow && !pdfSrc)\"\r\n        sandbox=\"allow-forms allow-scripts allow-same-origin allow-modals allow-downloads\"\r\n        [class]=\"getIframeClasses()\"\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      >\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 class=\"ng2-pdfjs-spinner-content\">\r\n            <div class=\"ng2-pdfjs-spinner-icon\"></div>\r\n            <div class=\"ng2-pdfjs-spinner-text\">\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      >\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 class=\"ng2-pdfjs-error-content\">\r\n            <div class=\"ng2-pdfjs-error-icon\">\r\n              ⚠️\r\n            </div>\r\n            <div class=\"ng2-pdfjs-error-title\">\r\n              Error Loading PDF\r\n            </div>\r\n            <div class=\"ng2-pdfjs-error-message\">\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    this.actionQueueManager.setDiagnosticLogs(value);\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  @Input() public urlValidation: boolean = true;\r\n  @Input() public customSecurityTpl: TemplateRef<any>;\r\n  \r\n  // Security warning state\r\n  public securityWarning: { message: string; originalUrl: string; currentUrl: string } | null = null;\r\n  // #endregion\r\n\r\n  // #region Theme & Visual Customization Properties\r\n  @Input() public theme: \"light\" | \"dark\" | \"auto\" = \"auto\";\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  @Input() public cspNonce?: string;\r\n  @Input() public iframeTitle?: string; // CSP nonce for customCSS (optional)\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  // Helper method to get iframe CSS classes\r\n  public getIframeClasses(): string {\r\n    const classes = ['ng2-pdfjs-viewer-iframe'];\r\n    \r\n    // Add border class if iframeBorder is set and not \"0\"\r\n    if (this.iframeBorder && this.iframeBorder !== \"0\" && this.iframeBorder !== 0) {\r\n      classes.push('has-border');\r\n    }\r\n    \r\n    return classes.join(' ');\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    if (config.cspNonce !== undefined) this.cspNonce = config.cspNonce;\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 Security Properties\r\n  // iframe sandbox is static for security and Angular compliance\r\n  // #endregion\r\n\r\n  // #region iframe Properties\r\n  @Input() public iframeBorder: string | number = \"0\";\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 = new ActionQueueManager(this._diagnosticLogs);\r\n  private changeOriginTracker = new ChangeOriginTracker();\r\n  private cdr: ChangeDetectorRef;\r\n\r\n  constructor(cdr: ChangeDetectorRef) {\r\n    this.cdr = cdr;\r\n  }\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    \r\n    // Connect action queue manager to PostMessage system\r\n    // Wrap sendControlMessage to handle iframe unavailability by re-queuing actions\r\n    this.actionQueueManager.setPostMessageExecutor((action, payload) =>\r\n      this.sendControlMessageWithRequeue(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    // Send URL validation setting to wrapper\r\n    this.dispatchAction(\"set-url-validation\", this.urlValidation, \"initial-load\");\r\n    \r\n    // Set up PostMessage listener\r\n    this.setupMessageListener();\r\n    \r\n    // Note: PDF loading moved to ngAfterViewInit() to ensure iframe is ready\r\n    // This prevents \"Cannot read properties of null (reading 'location')\" error\r\n    // when pdfSrc is a Blob (Issue #283)\r\n\r\n    // Bind events.\r\n    this.bindToPdfJsEventBus();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    // Load PDF after view is initialized - trust Angular's lifecycle guarantee\r\n    // that iframe.nativeElement.contentWindow is now available\r\n    if (!this.externalWindow) {\r\n      this.loadPdf();\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // Handle pdfSrc changes - reload the PDF (Issue #283)\r\n    // Trust Angular's change detection event to trigger reload when needed\r\n    if (changes['pdfSrc'] && !changes['pdfSrc'].firstChange) {\r\n      // pdfSrc changed after initialization - reload the PDF\r\n      if (!this.externalWindow) {\r\n        // Show spinner immediately when PDF source changes (Issue #275)\r\n        this.isLoading = true;\r\n        this.hasError = false;\r\n        this.currentErrorMessage = \"\";\r\n        \r\n        // Reset configuration queuing since iframe will reload fresh\r\n        this.initialConfigQueued = false;\r\n        this.isPostMessageReady = false;\r\n        this.loadPdf();\r\n      }\r\n      return; // pdfSrc change requires full reload, skip other change processing\r\n    }\r\n    \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 - verify accessibility (event-driven check)\r\n      if (this.isIframeAccessible()) {\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  // Wrapper for sendControlMessage that re-queues actions on iframe unavailability\r\n  // This ensures actions are retried when iframe becomes available (event-driven)\r\n  private async sendControlMessageWithRequeue(action: string, payload: any): Promise<any> {\r\n    try {\r\n      return await this.sendControlMessage(action, payload);\r\n    } catch (error) {\r\n      // If iframe is not available, re-queue the action for retry\r\n      // This handles the edge case where iframe becomes unavailable between checks\r\n      if (error instanceof Error && error.message === \"Iframe not available\") {\r\n        // Re-queue the action - it will be retried when processQueuedActions() is called again\r\n        // This happens when iframe becomes available or readiness increases\r\n        const requiredReadiness = this.getRequiredReadinessLevel(action);\r\n        const actionObj: ViewerAction = {\r\n          id: `requeue-${action}-${Date.now()}`,\r\n          action: action,\r\n          payload: payload,\r\n        };\r\n        this.actionQueueManager.queueAction(actionObj, requiredReadiness);\r\n        \r\n        // Trigger processing if iframe becomes available soon (event-driven, no polling)\r\n        Promise.resolve().then(() => {\r\n          if (this.isIframeAccessible() && this.isPostMessageReady) {\r\n            this.actionQueueManager.processQueuedActions();\r\n          }\r\n        });\r\n        \r\n        // Re-throw to maintain error handling in ActionQueueManager\r\n        throw error;\r\n      }\r\n      // Re-throw other errors\r\n      throw error;\r\n    }\r\n  }\r\n\r\n  // Event-driven iframe accessibility check (no polling, trust-based)\r\n  private isIframeAccessible(): boolean {\r\n    return !!(\r\n      this.iframe &&\r\n      this.iframe.nativeElement &&\r\n      this.iframe.nativeElement.contentWindow\r\n    );\r\n  }\r\n\r\n  // Process actions when PostMessage API is ready (extracted for reuse)\r\n  private processPostMessageReadyActions(): void {\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    // Always (re)apply initial configurations when PostMessage API is ready.\r\n    // This makes reloads idempotently reconfigure the viewer.\r\n    this.queueAllConfigurations();\r\n    this.initialConfigQueued = true;\r\n    \r\n    // Apply any pending changes that occurred before PostMessage API was ready\r\n    this.applyPendingChanges();\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 security warning from viewer\r\n      if (event.data && event.data.type === \"ng2-pdfjs-viewer-security-warning\") {\r\n        this.securityWarning = {\r\n          message: event.data.message,\r\n          originalUrl: event.data.originalUrl,\r\n          currentUrl: event.data.currentUrl\r\n        };\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        // Verify iframe is accessible before processing actions (event-driven readiness check)\r\n        // This prevents \"Iframe not available\" errors when dialog reopens quickly\r\n        if (this.isIframeAccessible()) {\r\n          // Iframe is ready - process actions immediately\r\n          this.processPostMessageReadyActions();\r\n        } else {\r\n          // Iframe not accessible yet - defer to next change detection cycle (event-driven)\r\n          // This handles Material Dialog lifecycle timing issues\r\n          Promise.resolve().then(() => {\r\n            if (this.isIframeAccessible()) {\r\n              this.processPostMessageReadyActions();\r\n            }\r\n          });\r\n        }\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      // Trigger change detection for OnPush scenarios (PostMessage runs outside Angular zone)\r\n      this.cdr.markForCheck();\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 || \"auto\", \"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      // Pass both CSS and nonce for CSP support\r\n      const payload = this.cspNonce \r\n        ? { css: this.customCSS, nonce: this.cspNonce }\r\n        : this.customCSS;\r\n      this.queueConfiguration(\"customCSS\", payload, \"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\r\n  /**\r\n   * Enable or disable URL validation security feature\r\n   * When enabled, prevents users from modifying the file parameter in the viewer URL\r\n   * @param enabled - Whether to enable URL validation (default: true)\r\n   * @returns Promise<ActionExecutionResult>\r\n   */\r\n  public setUrlValidation(enabled: boolean = true): Promise<ActionExecutionResult> {\r\n    return this.dispatchAction(\"set-url-validation\", enabled, \"user-interaction\");\r\n  }\r\n\r\n  /**\r\n   * Dismiss the security warning\r\n   */\r\n  public dismissSecurityWarning(): void {\r\n    this.securityWarning = null;\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    // Show spinner immediately when PDF loading starts (Issue #275)\r\n    this.isLoading = true;\r\n    this.hasError = false;\r\n    this.currentErrorMessage = \"\";\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      // Ensure BlobPart type safety by passing ArrayBuffer\r\n      const arrayBuffer = (this._src as Uint8Array).buffer as ArrayBuffer;\r\n      let blob = new Blob([arrayBuffer], { 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.addUrlValidationParameter(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 addUrlValidationParameter(viewerUrl: string): string {\r\n    const flag = this.urlValidation === false ? 0 : 1;\r\n    return `${viewerUrl}&urlValidation=${flag}`;\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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"}