{"version":3,"file":"progress-telerik-angular-native-report-viewer.mjs","sources":["../../src/lib/localization/messages.ts","../../src/lib/reporting-angular-viewer.service.ts","../../src/lib/directives/after-param-value-changed.directive.ts","../../src/lib/parameters/parameters-section.component.ts","../../src/lib/toolbar-tools/pager.component.ts","../../src/lib/directives/after-filter-changed.directive.ts","../../src/lib/search/search-window.component.ts","../../src/lib/aiprompt/aiprompt-window.component.ts","../../src/lib/aiprompt/aiprompt-window.component.html","../../src/lib/models/zoom-level.interface.ts","../../src/lib/toolbar-tools/zoom.component.ts","../../src/lib/components/license-banner/license-banner.component.ts","../../src/lib/components/license-banner/license-banner.component.html","../../src/lib/reporting-angular-viewer.component.ts","../../src/lib/reporting-angular-viewer.module.ts","../../src/index.ts","../../src/progress-telerik-angular-native-report-viewer.ts"],"sourcesContent":["import { LocalizationMessageType } from '@progress/telerik-common-report-viewer';\n\nexport const messages: LocalizationMessageType = {\n    ReportViewer_SendEmailDialogToLabel: 'To:',\n    ReportViewer_SendEmailDialogTitle: 'Send Email',\n    ReportViewer_SearchDialogCaptionText: 'Find',\n    ReportViewer_SearchDialogMatchWholeWordTitle: 'Match Whole Word',\n    ReportViewer_SearchDialogUseRegexTitle: 'Use Regex',\n    ReportViewer_SearchDialogMatchCaseTitle: 'Match Case',\n    ReportViewer_SearchDialogNavigateUpTitle: 'Navigate Up',\n    ReportViewer_SearchDialogNavigateDownTitle: 'Navigate Down',\n    ReportViewer_SearchDialogPageText: 'page',\n    ReportViewer_SearchDialogComboBoxPlaceholderText: 'Search...',\n    ReportViewer_SendEmailDialogClose: 'Close',\n    ReportViewer_SearchDialogTitle: 'Search in report',\n    ReportViewer_SearchDialogClearTitle: 'Clear',\n    ReportViewer_SearchDialogNoResultsLabel: 'No results',\n    ReportViewer_ToolbarNavigateBackwardTitle: 'Navigate Backward',\n    ReportViewer_ToolbarNavigateForwardTitle: 'Navigate Forward',\n    ReportViewer_ToolbarSearchTitle: 'Toggle Search',\n    ReportViewer_ToolbarAiPromptTitle: 'Toggle AI Prompt',\n    ReportViewer_ToolbarExportTitle: 'Export',\n    ReportViewer_ToolbarToggleDocumentMapTitle: 'Toggle Document Map',\n    ReportViewer_ToolbarFirstPageTitle: 'First Page',\n    ReportViewer_ToolbarLastPageTitle: 'Last Page',\n    ReportViewer_ToolbarNextPageTitle: 'Next Page',\n    ReportViewer_ToolbarPreviousPageTitle: 'Previous Page',\n    ReportViewer_ToolbarToggleParametersAreaTitle: 'Toggle Parameters Area',\n    ReportViewer_ToolbarPrintPreviewTitle: 'Print Preview',\n    ReportViewer_ToolbarPrintReportTitle: 'Print',\n    ReportViewer_ToolbarInteractiveViewTitle: 'Interactive View',\n    ReportViewer_ToolbarRefreshTitle: 'Refresh',\n    ReportViewer_ToolbarStopRenderingTitle: 'Stop Rendering',\n    ReportViewer_ToolbarZoomInTitle: 'Zoom In',\n    ReportViewer_ToolbarZoomOutTitle: 'Zoom Out',\n    ReportViewer_ToolbarZoomComboBoxPlaceholderText: 'Choose zoom level',\n    ReportViewer_NoPageToDisplay: 'No page to display.',\n    ReportViewer_LoadingReport: 'Loading report...',\n    ReportViewer_LoadingReportPagesInProgress: '{0} pages loaded so far...',\n    ReportViewer_LoadedReportPagesComplete: 'Done. Total {0} pages loaded.',\n    ReportViewer_RenderingCancelled: 'Report processing was canceled.',\n    ReportViewer_PreparingPrint: 'Preparing document to print. Please wait...',\n    ReportViewer_PreparingDownload: 'Preparing document to download. Please wait...',\n    ReportViewer_MissingOrInvalidParameter: 'Error creating report document. Missing or invalid parameter value. Please input valid data for the following parameters:',\n    ReportViewer_ErrorSendingDocument: 'Error sending document.',\n    ReportViewer_UnableToGetReportParameters: 'Unable to get report parameters.',\n    ReportViewer_ErrorUnauthorizedOrForbidden: \"You don't have permission to access this report document.\",\n    ReportViewer_InvalidParameter: 'Invalid parameter',\n    ReportViewer_ErrorCreatingReportDocument: 'Error creating report document.',\n    ReportViewer_ErrorServiceUrl: \"Cannot access the Reporting REST service. (serviceUrl = '{0}'). Make sure the service address is correct and enable CORS if needed. (https://enable-cors.org)\",\n    ReportViewer_NoReport: 'No report.',\n    ReportViewer_AutoRunDisabled: 'Please validate the report parameter values and press Preview to generate the report.',\n    ReportViewer_TryReportPreview: 'The report may now be previewed.',\n    ReportViewer_AiPromptDialogConsentAccept: 'Consent',\n    ReportViewer_AiPromptDialogConsentReject: 'Cancel',\n    ReportViewer_AiPromptDialogTextAreaPlaceholder: \"Enter your prompt\",\n    ReportViewer_AiPromptDialogNoPredefinedAndCustomPromptsPlaceholder: \"Custom prompts are disabled and there are no predefined prompts configured. Please allow custom prompts or add predefined prompts to use the AI feature.\",\n    ReportViewer_AiPromptDialogNoCustomPromptsPlaceholder: \"Custom prompts are disabled, please select one of the predefined suggestions below\"\n};\n","import { EventEmitter, Injectable } from '@angular/core';\nimport {\n    ContentArea,\n    DocumentInfo,\n    ReportController,\n    ReportControllerOptions,\n    ReportSourceOptions,\n    ScaleMode,\n    ViewMode,\n    ServiceClient,\n    SearchManager,\n    ParameterInfo,\n    reportSourcesAreEqual\n} from '@progress/telerik-common-report-viewer';\nimport { messages } from './localization/messages';\nimport { HistoryItem } from './models/history-item.interface';\n\nconst zoomStep = 0.25;\nconst minScale = 0.25;\nconst maxScale = 4;\n\n@Injectable()\nexport class ReportingAngularViewerService {\n    public options: any = {\n        contentTabIndex: 1000,\n        authenticationToken: '',\n        nonce: '',\n        reportSource: {\n            parameters: {},\n            report: null,\n        },\n        scale: 1,\n        scaleMode: 2,\n        serviceType: 0,\n        serviceUrl: null,\n        viewMode: 0,\n        keepClientAlive: true,\n        messages: messages,\n        pageMode: 0,\n        printMode: 0,\n        reportServer: null,\n    };\n\n    public documentInfo: DocumentInfo = {\n        documentReady: false,\n        documentMapAvailable: false,\n        containsFrozenContent: false,\n        pageCount: 1,\n        documentMapNodes: [],\n        bookmarkNodes: [],\n        renderingExtensions: [],\n    };\n\n    public onZoomChange: EventEmitter<number> = new EventEmitter<number>();\n\n    public parameters: ParameterInfo[] = [];\n    public isSearchWindowOpen: boolean = false;\n    public isAiPromptWindowOpen: boolean = false;\n    public currentHistoryIndex = -1;\n    public history: any[] = [];\n    public currentPageIndex: number = 0;\n    public renderingInProgress: boolean = false;\n    public isBackwardsNavigationInProgress: boolean = false;\n    public isParametersSectionAvailable: boolean = false;\n\n    public reportWidth: number;\n    public windowWidth: number = 310;\n    public windowHeight: number = 390;\n    public totalPages: number = 1;\n    public skip: number = 0;\n\n    public controller!: ReportController;\n    public serviceClient!: ServiceClient;\n    public searchManager!: SearchManager;\n    public contentArea!: ContentArea;\n\n    public getControllerOptions(): ReportControllerOptions {\n        return new ReportControllerOptions(\n            this.options.keepClientAlive,\n            this.options.authenticationToken,\n            this.options.nonce,\n            this.options.reportSource,\n            this.options.printMode,\n            this.options.pageMode,\n            this.options.viewMode,\n            this.options.scaleMode,\n            this.options.scale,\n            this.options.messages\n        );\n    }\n\n    public setOptions(options: any) {\n        this.options = options;\n        this.controller.setOptions(this.getControllerOptions());\n        this.controller.refreshReport(true, '');\n    }\n\n    public applyHistory(reportSource: ReportSourceOptions,\n        page: number,\n        reportDocumentId: string,\n        scale: number,\n        scaleMode: number,\n        viewMode: number) {\n        this.controller.setReportSource(reportSource);\n        this.controller.setReportDocumentId(reportDocumentId);\n\n        if (this.controller.getScale() !== scale) {\n            this.setScale(scale);\n        }\n\n        if (this.controller.getScaleMode() !== scaleMode) {\n            this.setScaleMode(scaleMode);\n        }\n\n        if (this.controller.getViewMode() !== viewMode) {\n            this.setViewMode(viewMode);\n        }\n\n        this.controller.refreshReport(false /* ignoreCache */, reportDocumentId, true /* alwaysRespectAutoRun */);\n        this.controller.navigateToPage(page, undefined);\n    }\n\n    public applyParameter(parameter: ParameterInfo) {\n        this.isSearchWindowOpen = false;\n        this.isAiPromptWindowOpen = false;\n        this.controller.setParameter(parameter.id, parameter.value);\n        if (!parameter.autoRefresh || !this.controller.autoRunEnabled) {\n            return;\n        }\n        this.controller.previewReport();\n    }\n\n    public setScale(scale: number) {\n        this.options.scale = scale;\n        this.controller.setScale(scale);\n        this.onZoomChange.emit(scale);\n    }\n\n    public setScaleMode(scaleMode: ScaleMode) {\n        this.options.scaleMode = scaleMode;\n        this.controller.setScaleMode(scaleMode);\n    }\n\n    public setViewMode(mode?: ViewMode): void {\n        if (mode) {\n            this.options.viewMode = mode;\n        } else {\n            this.options.viewMode ? this.options.viewMode = 0 : this.options.viewMode = 1;\n        }\n\n        this.controller.setViewMode(this.options.viewMode);\n        this.controller.refreshReportCore(false, this.controller.getReportDocumentId());\n    }\n\n    public zoomIn(): void {\n        if (this.options.scale < maxScale) {\n            this.options.scale += zoomStep;\n            this.setScale(this.options.scale);\n        }\n    }\n\n    public zoomOut(): void {\n        if (this.options.scale > minScale) {\n            this.options.scale -= zoomStep;\n            this.setScale(this.options.scale);\n        }\n    }\n\n    public navigateBackwards(): void {\n        this.renderingInProgress = true;\n        this.isSearchWindowOpen = false;\n        this.isAiPromptWindowOpen = false;\n        this.isBackwardsNavigationInProgress = true;\n\n        this.currentHistoryIndex--;\n\n        if (this.history.length >= 0) {\n            const currentHistoryItem = this.history[this.currentHistoryIndex];\n            this.applyHistory(currentHistoryItem.reportSource, currentHistoryItem.page, currentHistoryItem.documentId, currentHistoryItem.scale, currentHistoryItem.scaleMode, currentHistoryItem.viewMode);\n        }\n    }\n\n    public navigateForward(): void {\n        this.renderingInProgress = true;\n        this.isSearchWindowOpen = false;\n        this.isAiPromptWindowOpen = false;\n\n        this.currentHistoryIndex++;\n\n        if (this.currentHistoryIndex < this.history.length) {\n            const currentHistoryItem = this.history[this.currentHistoryIndex];\n            this.applyHistory(currentHistoryItem.reportSource, currentHistoryItem.page, currentHistoryItem.documentId, currentHistoryItem.scale, currentHistoryItem.scaleMode, currentHistoryItem.viewMode);\n        }\n    }\n\n    public addHistoryItem(temp: boolean = false): HistoryItem {\n        this.removeTempHistoryItems();\n\n        const historyItem: HistoryItem = {\n            reportSource: { report: this.controller.getReportSource()?.report, parameters: this.options.reportSource.parameters },\n            documentId: this.controller.getReportDocumentId(),\n            page: this.getPageNumber(),\n            scale: this.controller.getScale(),\n            scaleMode: this.controller.getScaleMode(),\n            viewMode: this.controller.getViewMode(),\n            temp: temp\n        };\n\n        const controllerReportSource = this.controller.getReportSource();\n        if (!this.history.some(item => reportSourcesAreEqual({ firstReportSource: item.reportSource, secondReportSource: controllerReportSource }))) {\n            this.currentHistoryIndex++;\n\n            let deleteCount: number = this.isBackwardsNavigationInProgress ? 0 : this.history.length - this.currentHistoryIndex;\n            this.history.splice(this.currentHistoryIndex, deleteCount, historyItem);\n        }\n\n        this.isBackwardsNavigationInProgress = false\n\n        return historyItem;\n    }\n\n    public removeTempHistoryItems(): void {\n        var lastIndex = this.history.length - 1;\n\n        while (lastIndex >= 0 && this.history[lastIndex].temp) {\n            this.history.splice(lastIndex, 1);\n\n            if (this.currentHistoryIndex >= lastIndex) {\n                this.currentHistoryIndex--;\n            }\n            lastIndex--;\n        }\n    }\n\n    public clearReport(): void {\n        this.isSearchWindowOpen = this.isAiPromptWindowOpen = this.renderingInProgress = false;\n        this.isSearchWindowOpen = this.renderingInProgress = false;\n        this.currentPageIndex = 0;\n        this.totalPages = 0;\n        this.documentInfo = new DocumentInfo();\n    }\n\n    public getPageNumber(): number {\n        return this.currentPageIndex + 1;\n    }\n}\n","import {\n  Directive,\n  Input,\n  HostListener,\n  OnDestroy,\n  Output,\n  EventEmitter,\n} from \"@angular/core\";\nimport { Subject, Subscription } from \"rxjs\";\nimport { debounceTime } from \"rxjs/operators\";\n\n@Directive({\n  selector: \"[afterParamValueChanged]\",\n  standalone: false\n})\nexport class AfterParamValueChangedDirective implements OnDestroy {\n  @Output()\n  public afterParamValueChanged: EventEmitter<any> = new EventEmitter<any>();\n\n  @Input()\n  public valueChangeDelay = 700;\n\n  private stream: Subject<any> = new Subject<any>();\n  private subscription: Subscription;\n\n  constructor() {\n    this.subscription = this.stream\n      .pipe(debounceTime(this.valueChangeDelay))\n      .subscribe((value: any) => this.afterParamValueChanged.next(value));\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  @HostListener(\"valueChange\", [\"$event\"])\n  public onValueChange(value: any): void {\n    this.stream.next(value);\n  }\n}","import { Component, Input, Output, ViewChild, ChangeDetectorRef, OnInit, EventEmitter } from '@angular/core';\nimport { ReportingAngularViewerService } from '../reporting-angular-viewer.service';\nimport { DatePickerComponent } from '@progress/kendo-angular-dateinputs';\nimport { ParameterInfo, ParameterValue } from '@progress/telerik-common-report-viewer';\n\nconst SystemBooleanType = 'System.Boolean';\nconst SystemDateTimeType = 'System.DateTime';\n\n@Component({\n    selector: 'parameters-section',\n    standalone: false,\n    template: `\n        <div *ngIf=\"parameter.isVisible\" class=\"k-card trv-parameter-container\">\n            <div class=\"k-card-header trv-parameter-header\">\n                <div class=\"k-card-title trv-parameter-title\" [title]=\"parameter.text\">{{parameter.text}}</div>\n            </div>\n            <div class=\"k-card-body trv-parameter-value\">\n                <div *ngIf=\"isInvalidInput(parameter)\" class=\"k-notification k-notification-error trv-parameter-error\">\n                    <div class=\"k-notification-wrap\">\n                        <span class=\"k-icon k-i-warning\"></span>\n                        <span class=\"k-notification-content trv-parameter-error-message\">{{' ' + service.options.messages.ReportViewer_InvalidParameter}}</span>\n                    </div>\n                </div>\n                <div class=\"trv-parameter-editor-available-values\">\n                    <kendo-multiselect\n                        *ngIf=\"parameter.multivalue && parameter.availableValues\"\n                        [data]=\"parameter.availableValues\"\n                        [valuePrimitive]=\"true\"\n                        textField=\"name\"\n                        valueField=\"value\"\n                        [value]=\"parameter.value\"\n                        (valueChange)=\"onValueChange(parameter, $event)\"\n                        [disabled]=\"loading\"\n                        [kendoDropDownFilter]=\"{caseSensitive: false, operator: 'contains'}\"\n                        >\n                    </kendo-multiselect>\n                    <kendo-combobox\n                        *ngIf=\"!parameter.multivalue && parameter.availableValues\"\n                        [data]=\"parameter.availableValues\"\n                        [valuePrimitive]=\"true\"\n                        textField=\"name\"\n                        valueField=\"value\"\n                        [value]=\"parameter.value\"\n                        (valueChange)=\"onValueChange(parameter, $event)\"\n                        [disabled]=\"loading\"\n                        >\n                    </kendo-combobox>\n                    <div *ngIf=\"parameter.availableValues\" class=\"k-actions k-actions-end trv-parameter-actions\">\n                        <button kendoButton *ngIf=\"parameter.multivalue\" fillMode=\"outline\" class=\"trv-select-all\" (click)=\"onSelectAllClick(parameter)\">Select all</button>\n                    </div>\n\n                    <kendo-datepicker *ngIf=\"parameter.type === 'System.DateTime' && !parameter.availableValues\"\n                        [value]=\"parameter.valueAsDateObj\"\n                        (afterParamValueChanged)=\"onAfterValueChange(parameter, $event)\"\n                        [disabled]=\"loading\"\n                        >\n                    </kendo-datepicker>\n\n                    <kendo-numerictextbox *ngIf=\"(parameter.type === 'System.Int64' || parameter.type ==='System.Double') && !parameter.availableValues\"\n                        [value]=\"parameter.value\"\n                        (blur)=\"onBlur(parameter)\"\n                        (valueChange)=\"onBlurInputValueChange($event)\"\n                        (keyup.enter)=\"onKeyUpEnter(parameter, $event)\"\n                        [disabled]=\"loading\"\n                        >\n                    </kendo-numerictextbox>\n\n                    <kendo-textbox *ngIf=\"parameter.type === 'System.String' && !parameter.availableValues\"\n                        [value]=\"parameter.value\"\n                        (blur)=\"onBlur(parameter)\"\n                        (valueChange)=\"onBlurInputValueChange($event)\"\n                        (keyup.enter)=\"onKeyUpEnter(parameter, $event)\"\n                        [disabled]=\"loading\"\n                        >\n                    </kendo-textbox>\n\n                    <input *ngIf=\"parameter.type === 'System.Boolean' && !parameter.availableValues\"\n                        type=\"checkbox\"\n                        kendoCheckBox\n                        [id]=\"parameter.id\"\n                        [checked]=\"(parameter.value && parameter.value !== 'False') || parameter.value === 'True'\"\n                        (change)=\"onValueChange(parameter, $event)\"\n                        [disabled]=\"loading\"\n                        />\n                </div>\n            </div>\n        </div>\n    `\n})\nexport class ParametersSectionComponent implements OnInit {\n    @ViewChild(DatePickerComponent) public datePicker: DatePickerComponent;\n\n    @Output() public onParameterChanged: EventEmitter<any> = new EventEmitter();\n    @Input() public loading = true;\n    // valueAsDateObj is of type any because the Kendo DatePicker expects Date | null \n    // and optional params include undefined type which makes the type incompatible\n    @Input() public parameter: ParameterInfo & { valueAsDateObj?: any } = {\n        name: '',\n        type: '',\n        text: '',\n        multivalue: false,\n        allowNull: false, \n        allowBlank: false,\n        isVisible: false, \n        autoRefresh: false,\n        hasChildParameters: false,\n        childParameters: [],\n        availableValues: [],\n        value: '',\n        id: '',\n        label: ''\n    };\n\n    isInvalidInput = ParametersSectionComponent.isInvalidInput\n    blurParamTempValue: any = this.parameter.value; // Used only for string and numeric params\n\n    ngOnInit() {\n        if (this.parameter && this.parameter.type === SystemDateTimeType) {\n            const dateObj = new Date(this.parameter.value);\n            this.parameter.valueAsDateObj = isNaN(dateObj.getTime()) ? adjustTimezone(new Date()) : adjustTimezone(dateObj);\n        }\n    }\n\n    public static isInvalidInput(parameter: ParameterInfo): boolean {\n        if (parameter.allowNull) {\n            return false;\n        }\n\n        if (parameter.multivalue) {\n            return parameter.value == null || parameter.value.length === 0;\n        }\n\n        return parameter.value == null;\n    }\n\n    public constructor(public service: ReportingAngularViewerService,  private cdr: ChangeDetectorRef) {}\n\n    public onClearSelectionClick(param: ParameterInfo): void {\n        param.value = '';\n    }\n\n    public onSelectAllClick(parameter: ParameterInfo): void {\n        parameter.value = parameter.availableValues.map((val: ParameterValue) => val.value);\n\n        this.service.options.reportSource.parameters = JSON.parse(JSON.stringify(this.service.options.reportSource.parameters));\n        this.service.options.reportSource.parameters[parameter.id] = parameter.value;\n\n        this.service.applyParameter(parameter);\n    }\n\n    public onValueChange(parameter: ParameterInfo, value: any): void {\n        this.handleParameterChange(parameter, value);\n    }\n\n    // Debounced equivalent to onValueChanged. Used for date pickers\n    public onAfterValueChange(parameter: ParameterInfo, value: any) {\n        this.handleParameterChange(parameter, value);\n    }\n\n    // Stores the value of string or numeric param input field so it can be passed to the onBlur method\n    public onBlurInputValueChange(value: any): void {\n        this.blurParamTempValue = value;\n    }\n\n    // Updates the report when a string or numeric param input field loses focus\n    public onBlur(parameter: ParameterInfo): void {\n        this.handleParameterChange(parameter, this.blurParamTempValue);\n        this.blurParamTempValue = parameter.value;\n    }\n\n    // Updates the report when the Enter key is pressed while focusing a text or numeric param input field\n    public onKeyUpEnter(parameter: ParameterInfo, event: any): void {\n        this.handleParameterChange(parameter, event?.target?.value);\n    }\n\n    private handleParameterChange(parameter: ParameterInfo, value: any) {\n        //TODO: should be removed once the common viewer accepts lower case true/false values\n        if (parameter.type === SystemBooleanType) {\n            value = value.target.checked ? 'True' : 'False';\n        }\n\n        if (parameter.type === SystemDateTimeType && value !== null) {\n            value = adjustTimezone(value);\n        }\n\n        parameter.value = value;\n        this.service.options.reportSource.parameters = JSON.parse(JSON.stringify(this.service.options.reportSource.parameters));\n\n        // Can't check for all falsy values because 0 is falsy, won't work with integer parameters\n        if (value === undefined || value === null || value.length === 0){\n            parameter.value = value = null;\n\n            if(!parameter.allowNull) return;\n        } \n\n        if (parameter.childParameters?.length > 0) {\n            parameter.childParameters.forEach((param: ParameterInfo) => {\n                delete this.service.options.reportSource.parameters[param.toString()];\n            });\n\n            this.service.options.reportSource.parameters[parameter.id] = parameter.value;\n\n            this.service.controller.setParameters(this.service.options.reportSource.parameters);\n\n            // Refresh the report only if the changed parameter has autoRefresh\n            this.service.controller.refreshReport(true, '', false, !parameter.autoRefresh /* skipRefresh */);\n        } else {\n            this.service.options.reportSource.parameters[parameter.id] = value;\n\n            if (!parameter.autoRefresh || !this.service.controller.autoRunEnabled) {\n                this.onParameterChanged.emit(null);\n            }\n\n            this.service.applyParameter(parameter);\n\n            this.cdr.detectChanges();\n        }\n    }\n}\n\n// TODO: This method is taken from HTML viewer\nexport function adjustTimezone(date: Date) {\n    let result = new Date(\n        Date.UTC(\n            date.getFullYear(),\n            date.getMonth(),\n            date.getDate(),\n            date.getHours(),\n            date.getMinutes(),\n            date.getSeconds(),\n            date.getMilliseconds()\n        )\n    );\n    return result;\n}\n","import {\n    Component,\n    Input,\n    TemplateRef,\n    ViewChild,\n    ElementRef,\n    forwardRef,\n    ViewChildren,\n    QueryList,\n} from '@angular/core';\nimport { ToolBarToolComponent } from '@progress/kendo-angular-toolbar';\nimport { ReportingAngularViewerService } from '../reporting-angular-viewer.service';\nimport { PageChangeEvent, PagerComponent } from '@progress/kendo-angular-pager';\nimport {\n    SVGIcon,\n    caretAltLeftIcon,\n    caretAltRightIcon,\n    caretAltToLeftIcon,\n    caretAltToRightIcon\n} from '@progress/kendo-svg-icons';\nimport { isDocumentAvailable } from '@progress/kendo-angular-common';\n\n@Component({\n    providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => CustomPagerToolComponent) }],\n    selector: 'custom-pager-tool',\n    standalone: false,\n    template: `\n        <ng-template #toolbarTemplate>\n            <span #toolbarElement>\n                <kendo-datapager #pager\n                    fillMode=\"flat\"\n                    [class]=\"{'k-disabled' : this.disabled}\"\n                    [tabindex]=\"tabindex\"\n                    [pageSize]=\"1\"\n                    [skip]=\"service.currentPageIndex\"\n                    [total]=\"service.totalPages\"\n                    [pageSizeValues]=\"false\"\n                    [info]=\"false\"\n                    [previousNext]=\"true\"\n                    type=\"input\"\n                    (pageChange)=\"onPageChange($event)\"\n                    >\n                </kendo-datapager>\n            </span>\n        </ng-template>\n        <ng-template #popupTemplate>\n            <button\n                #navButton\n                kendoButton\n                class=\"toolbar-nav-btn\"\n                icon=\"arrow-end-left\"\n                [svgIcon]=\"caretAltToLeftIcon\"\n                [tabindex]=\"tabindex\"\n                [disabled]=\"service.totalPages <= 1 || service.currentPageIndex === 0\"\n                [title]=\"getLocaleMessage('FirstPage')\"\n                (click)=\"overflowNavButton(0)\"\n                fillMode=\"flat\"> {{ getLocaleMessage('FirstPage') }}\n            </button>\n            <button\n                #navButton\n                kendoButton\n                class=\"toolbar-nav-btn\"\n                icon=\"arrow-60-left\"\n                [svgIcon]=\"caretAltLeftIcon\"\n                [tabindex]=\"tabindex\"\n                [disabled]=\"service.totalPages <= 1 || service.currentPageIndex === 0\"\n                [title]=\"getLocaleMessage('PreviousPage')\"\n                (click)=\"overflowNavButton(service.currentPageIndex - 1)\"\n                fillMode=\"flat\"> {{ getLocaleMessage('PreviousPage') }}\n            </button>\n            <button\n                #navButton\n                kendoButton\n                class=\"toolbar-nav-btn\"\n                icon=\"arrow-60-right\"\n                [svgIcon]=\"caretAltRightIcon\"\n                [tabindex]=\"tabindex\"\n                [disabled]=\"service.totalPages <= 1 || service.currentPageIndex === service.totalPages - 1\"\n                [title]=\"getLocaleMessage('NextPage')\"\n                (click)=\"overflowNavButton(service.currentPageIndex + 1)\"\n                fillMode=\"flat\"> {{ getLocaleMessage('NextPage') }}\n            </button>\n            <button\n                #navButton\n                kendoButton\n                class=\"toolbar-nav-btn\"\n                icon=\"arrow-end-right\"\n                [svgIcon]=\"caretAltToRightIcon\"\n                [tabindex]=\"tabindex\"\n                [disabled]=\"service.totalPages <= 1 || service.currentPageIndex === service.totalPages - 1\"\n                [title]=\"getLocaleMessage('LastPage')\"\n                (click)=\"overflowNavButton(service.totalPages - 1)\"\n                fillMode=\"flat\"> {{ getLocaleMessage('LastPage') }}\n            </button>\n        </ng-template>\n    `,\n    styles: [`\n        .toolbar-nav-btn {\n            width: 100%;\n            justify-content: start;\n        }\n    `]\n})\nexport class CustomPagerToolComponent extends ToolBarToolComponent {\n    @Input() public totalPages: number = 1;\n    @Input() public disabled: boolean = false;\n\n    @ViewChild('toolbarTemplate', { static: true }) public override toolbarTemplate!: TemplateRef<unknown>;\n    @ViewChild('popupTemplate', { static: true }) public override popupTemplate!: TemplateRef<unknown>;\n    @ViewChild('toolbarElement') public toolbarElement?: ElementRef;\n    @ViewChild('popupElement') public popupElement?: ElementRef;\n    @ViewChild('pager', { read: PagerComponent, static: false }) public pager?: PagerComponent;\n    @ViewChildren('navButton') public navButtons!: QueryList<ElementRef>\n\n    public tabindex: number = -1;\n    public prevKey: number = 38\n    public nextKey: number = 40;\n    public focusedIndex: any = -1;\n    public caretAltToLeftIcon: SVGIcon = caretAltToLeftIcon;\n    public caretAltLeftIcon: SVGIcon = caretAltLeftIcon;\n    public caretAltRightIcon: SVGIcon = caretAltRightIcon;\n    public caretAltToRightIcon: SVGIcon = caretAltToRightIcon;\n\n    constructor(public service: ReportingAngularViewerService) {\n        super();\n    }\n\n    public override canFocus(): boolean {\n        return true;\n    }\n\n    public override focus(ev: any): void {\n        this.tabindex = 0;\n\n        if (this.overflows) {\n            if (!isDocumentAvailable()) return;\n\n            if (ev) {\n                this.focusedIndex = this.getIndexOfFocused(this.prevKey, this.nextKey, this.buttonElements)(ev);\n                this.focusButton(this.focusedIndex, ev);\n            }\n        } else {\n            this.pager?.['element'].nativeElement.focus();\n        }\n    }\n\n    public override handleKey(ev: any): boolean {\n        if (this.overflows && isDocumentAvailable()) {\n\n            const peekAtIndex = this.makePeeker(this.buttonElements);\n            const isUnmodified = this.areEqual(this.focusedIndex);\n\n            this.focusedIndex = this.seekFocusedIndex(this.prevKey, this.nextKey, peekAtIndex)(this.focusedIndex, ev);\n            this.focusButton(this.focusedIndex, ev);\n\n            return !isUnmodified(this.focusedIndex);\n        }\n        this.tabindex = -1;\n\n        return false;\n    }\n\n    public overflowNavButton(pageIndex: number) {\n        this.service.currentPageIndex = pageIndex;\n        this.service.controller?.navigateToPage(this.service.getPageNumber(), undefined);\n    }\n\n    public getLocaleMessage(message: string): string {\n        return this.service.options.messages[`ReportViewer_Toolbar${message}Title`];\n    }\n\n    public onPageChange(e: PageChangeEvent): void {\n        this.service.currentPageIndex = e.skip;\n        this.service.controller?.navigateToPage(this.service.getPageNumber(), undefined);\n    }\n\n    private get buttonElements(): HTMLElement[] {\n        return [...this.navButtons.toArray().filter(el => !el.nativeElement.classList.contains('k-disabled'))].map(el => el.nativeElement);\n    }\n\n    private focusButton(index: number, ev: Partial<Event>): void {\n        // Guard against focusing twice on mousedown.\n        if (!ev.type || ev.type === 'focus' || ev.type === 'keydown') {\n            this.buttonElements[index]?.focus();\n        }\n    }\n\n    private getIndexOfFocused = (prevKeyCode: number, nextKeyCode: number, collection: HTMLElement[]): any => (ev: any): any => {\n        switch (ev.type) {\n            case 'keydown':\n                if (ev.keyCode === prevKeyCode) {\n                    return collection.length - 1;\n                }\n    \n                if (ev.keyCode === nextKeyCode) {\n                    return 0;\n                }\n    \n                break;\n    \n            case 'click':\n                return collection.findIndex(be => be === ev.target || be.contains(ev.target as Node));\n    \n            case 'focus':\n                return 0;\n    \n            default:\n                return 0;\n        }\n    };\n\n    private seekFocusedIndex = (prevKeyCode: number, nextKeyCode: number, seeker: (i: number) => boolean) => (\n        startIndex: number,\n        ev: any\n    ): number => {\n        switch (ev.keyCode) {\n            case prevKeyCode:\n                return seeker(startIndex - 1) ? startIndex - 1 : startIndex;\n            case nextKeyCode:\n                return seeker(startIndex + 1) ? startIndex + 1 : startIndex;\n            default:\n                return startIndex;\n        }\n    };\n\n    private isPresent: Function = (value: any): boolean => value !== null && value !== undefined;\n    private makePeeker = (collection: any[]) => (index: number): boolean => this.isPresent(collection[index]);\n    private areEqual = (first: number) => (second: number): boolean => first === second;\n}","import { Directive, Input, HostListener, OnDestroy, Output, EventEmitter } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n  selector: '[afterFilterChanged]',\n  standalone: false\n})\nexport class afterFilterChangedDirective implements OnDestroy {\n  @Output()\n  public afterFilterChanged: EventEmitter<number> = new EventEmitter<number>();\n\n  @Input()\n  public filterChangeDelay = 600;\n\n  private stream: Subject<number> = new Subject<number>();\n  private subscription: Subscription;\n\n  constructor() {\n    this.subscription = this.stream\n      .pipe(debounceTime(this.filterChangeDelay))\n      .subscribe((value: number) => this.afterFilterChanged.next(value));\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  @HostListener('filterChange', [ '$event' ])\n  public onFilterChange(value: number): void {\n    this.stream.next(value);\n  }\n}\n","import { AfterViewInit, Component, Input, NgZone, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ReportingAngularViewerService } from '../reporting-angular-viewer.service';\nimport { SearchInfo, SearchResult } from '@progress/telerik-common-report-viewer';\nimport { ListBoxComponent, ListBoxSelectionEvent } from '@progress/kendo-angular-listbox';\nimport {\n    SVGIcon,\n    chevronDownIcon,\n    chevronUpIcon,\n    convertLowercaseIcon,\n    regularExpressionIcon,\n    wholeWordIcon\n} from '@progress/kendo-svg-icons';\nimport { ComboBoxComponent } from '@progress/kendo-angular-dropdowns';\nimport { Subscription, take } from 'rxjs';\n\n@Component({\n    selector: 'search-window',\n    standalone: false,\n    template: `\n        <kendo-window\n            (close)=\"toggle(false)\"\n            class=\"trv-search trv-search-dialog\"\n            [height]=\"390\"\n            [(top)]=\"windowTop\"\n            [(left)]=\"windowLeft\"\n            (widthChange)=\"onWidthChange($event)\"\n            (heightChange)=\"onHeightChange($event)\"\n            [width]=\"windowWidth\"\n            [height]=\"windowHeight\"\n            [minHeight]=\"390\"\n            [minWidth]=\"330\"\n        >\n            <kendo-window-titlebar>\n                <span class=\"k-window-title\"> {{ getLocaleMessage('Title') }} </span>\n                <button kendoWindowMinimizeAction></button>\n                <button kendoWindowRestoreAction></button>\n                <button kendoWindowCloseAction></button>\n            </kendo-window-titlebar>\n            <div class=\"trv-search-window trv-window k-window-content\">\n                <div class=\"search-dialog-wrapper\">\n                    <kendo-combobox\n                        #comboBox\n                        [data]=\"searchTerms\"\n                        [value]=\"searchText\"\n                        [allowCustom]=\"true\"\n                        [filterable]=\"true\"\n                        [placeholder]=\"getLocaleMessage('ComboBoxPlaceholderText')\"\n                        (afterFilterChanged)=\"handleFilter($event)\"\n                        (click)=\"open($event, comboBox)\"\n                        (close)=\"onClose()\"\n                        (blur)=\"onBlur()\"\n                        (valueChange)=\"search($event)\"\n                        (open)=\"$event.preventDefault()\"\n                    ></kendo-combobox>\n\n                    <div class=\"k-hstack trv-search-buttons\">\n                        <button \n                            kendoButton\n                            fillMode=\"flat\"\n                            icon=\"convert-lowercase\"\n                            [svgIcon]=\"convertToLowerCaseIcon\"\n                            [title]=\"getLocaleMessage('MatchCaseTitle')\"\n                            [selected]=\"searchInfo.matchCase\"\n                            (click)=\"onSearchFilter('matchCase')\">\n                        </button>\n                        <button\n                            kendoButton\n                            fillMode=\"flat\"\n                            icon=\"whole-word\"\n                            [svgIcon]=\"wholeWordIcon\"\n                            [title]=\"getLocaleMessage('MatchWholeWordTitle')\"\n                            [selected]=\"searchInfo.matchWholeWord\"\n                            (click)=\"onSearchFilter('matchWholeWord')\">\n                        </button>\n                        <button\n                            kendoButton\n                            fillMode=\"flat\"\n                            icon=\"regular-expression\"\n                            [svgIcon]=\"regularExpressionIcon\"\n                            [title]=\"getLocaleMessage('UseRegexTitle')\"\n                            [selected]=\"searchInfo.useRegularExpressions\"\n                            (click)=\"onSearchFilter('useRegularExpressions')\">\n                        </button>\n                    </div>\n                </div>\n\n                <div class=\"trv-search-dialog-results k-hstack k-align-items-center\">\n                    <span *ngIf=\"searchResults.length > 0\" class=\"trv-search-dialog-results-label\">\n                        Result {{ (listBox?.selectedIndices && listBox.selectedIndices.length > 0) ? listBox.selectedIndices[0] + 1 : 1 }} of {{ searchResults.length }}\n                    </span>\n                    <span *ngIf=\"searchResults.length === 0\" class=\"trv-search-dialog-results-label\">\n                        {{ getLocaleMessage('NoResultsLabel') }}\n                    </span>\n                    <kendo-buttongroup>\n                        <button\n                            kendoButton\n                            fillMode=\"flat\"\n                            icon=\"chevron-up\"\n                            [svgIcon]=\"chevronUpIcon\"\n                            [title]=\"getLocaleMessage('NavigateUpTitle')\"\n                            (click)=\"onNavigateButtons('up')\"\n                            [disabled]=\"selectedIndex <= 0\">\n                    </button>\n                    <button\n                        kendoButton\n                        fillMode=\"flat\"\n                        icon=\"chevron-down\"\n                        [svgIcon]=\"chevronDownIcon\"\n                        [title]=\"getLocaleMessage('NavigateDownTitle')\"\n                        (click)=\"onNavigateButtons('down');\"\n                        [disabled]=\"selectedIndex + 1 >= searchResults.length\">\n                    </button>\n                    </kendo-buttongroup>\n                </div>\n\n                <kendo-listbox\n                    #listBox\n                    [style.width.%]=\"100\"\n                    [data]=\"searchResults\"\n                    selectable=\"single\"\n                    [toolbar]=\"false\"\n                    (selectionChange)=\"onSelectionChange($event)\"\n                >\n                    <ng-template kendoListBoxItemTemplate let-dataItem>\n                        <div\n                            [attr.data-uid]=\"dataItem.id\"\n                            class=\"trv-search-dialog-results-row k-listview-item k-selected\"\n                            role=\"option\"\n                        >\n                            <span class=\"k-search-dialog-result-desc\">{{dataItem.description}}</span>\n                            <span class=\"trv-search-dialog-results-pageSpan\">page {{dataItem.page}}</span>\n                        </div>\n                    </ng-template>\n                </kendo-listbox>\n            </div>\n        </kendo-window>\n    `,\n    styles: [`\n         .k-window-content .k-listbox {\n            overflow: hidden;\n            position: relative;\n            flex-grow: 1;\n            height: auto;\n        }\n\n        .k-window-content .k-list {\n            max-height: 100%;\n        }\n\n        .trv-search {\n            max-height: 700px;\n        }\n\n        .k-listview-item .k-search-dialog-result-desc {\n            flex: 1;\n            margin-right: 1em;\n        }\n\n        .k-listview-item.trv-search-dialog-results-row {\n            width: 100%;\n            display: flex;\n            justify-content: space-between;\n        }\n    `],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchComponent implements OnInit, AfterViewInit, OnDestroy {\n    @Input() searchTerms: string[];\n\n    @ViewChild('listBox') public listbox!: ListBoxComponent;\n    @ViewChild('comboBox') public comboBox!: ComboBoxComponent;\n\n    public chevronUpIcon: SVGIcon = chevronUpIcon;\n    public wholeWordIcon: SVGIcon = wholeWordIcon;\n    public chevronDownIcon: SVGIcon = chevronDownIcon;\n    public convertToLowerCaseIcon: SVGIcon = convertLowercaseIcon;\n    public regularExpressionIcon: SVGIcon = regularExpressionIcon;\n\n    public windowTop: number = 30;\n    public windowLeft!: number;\n    public windowWidth!: number;\n    public windowHeight!: number;\n\n    public searchResults: SearchResult[] = [];\n    public isComboboxOpen: boolean = false;\n    public searchText: string = '';\n    public opened = true;\n    public selectedIndex: number = 0;\n\n    public searchInfo: SearchInfo = {\n        searchToken: '',\n        matchCase: false,\n        matchWholeWord: false,\n        useRegularExpressions: false\n    }\n\n    private subs: Subscription = new Subscription();\n\n    public constructor(\n        private ngZone: NgZone,\n        public service: ReportingAngularViewerService) {}\n\n    public ngOnInit(): void {\n        const reportElemWidth = this.service.reportWidth;\n\n        this.windowHeight = this.service.windowHeight;\n        this.windowWidth = this.service.windowWidth;\n        this.windowLeft = reportElemWidth - (this.windowWidth + 40);\n    }\n\n    public ngAfterViewInit(): void {\n        this.service.searchManager?.on('searchComplete', (results: SearchResult[]) => this.onSearchComplete(results));\n\n        this.ngZone.onStable.pipe(take(1)).subscribe(_ => this.comboBox?.focus());\n\n        const combobox = this.comboBox?.wrapper?.nativeElement;\n        this.subs.add(combobox.addEventListener('keydown', (event: any) => this.onArrowEvent(event), true));\n    }\n\n    public ngOnDestroy(): void {\n        this.subs.unsubscribe();\n    }\n\n    public toggle(isOpened: boolean): void {\n        this.service.isSearchWindowOpen = isOpened;\n        this.searchResults = [];\n        this.service.searchManager.closeSearch();\n    }\n\n    public handleFilter(value: any) {\n         if(value === \"\") {\n             return;\n         }\n\n        this.searchText = value;\n        this.search(value, true);\n    }\n\n    public onWidthChange(width: number): void {\n        this.service.windowWidth = width;\n    }\n\n    public onHeightChange(height: number): void {\n        this.service.windowHeight = height;\n    }\n\n    public onBlur() {\n        this.searchText = this.comboBox.text = this.comboBox?.searchbar.value;\n    }\n\n    public search(text: string, isTextFilter: boolean = false): void {\n        if (typeof text !== 'string' && !isTextFilter) return;\n\n        if (text && this.searchTerms.indexOf(text) === -1) {\n            this.searchTerms.push(text);\n        }\n\n        if (this.searchInfo.searchToken !== text) {\n            this.selectedIndex = 0;\n        }\n\n        this.comboBox.value = text;\n        this.comboBox.searchBarChange(text);\n        this.searchInfo.searchToken = text;\n\n        this.service.searchManager?.search(this.searchInfo);\n\n        this.ngZone.onStable.pipe(take(1)).subscribe(_ => this.comboBox?.focus());\n    }\n\n    public onSearchFilter(filterName: 'matchCase' | 'matchWholeWord' | 'useRegularExpressions'): void {\n        this.selectedIndex = 0;\n        this.searchInfo[filterName] = !this.searchInfo[filterName];\n\n        this.search(this.searchInfo.searchToken);\n    }\n\n    public onSelectionChange(item: ListBoxSelectionEvent): void {\n        if (item?.selectedIndices && item.selectedIndices.length > 0) {\n            const searchResultItem: SearchResult = this.searchResults[item.selectedIndices[0]];\n            this.service.searchManager?.highlightSearchItem(searchResultItem);\n        }\n    }\n\n    public open(event: any, comboBox: ComboBoxComponent): void {\n        if (event.target.closest('button') && !this.isComboboxOpen) {\n            this.isComboboxOpen = true;\n            comboBox.toggle(true);\n        }\n    }\n\n    public onClose(): void {\n        setTimeout(() => this.isComboboxOpen = false )\n    }\n\n    public onNavigateButtons(direction: 'up' | 'down', sourceTarget: 'comboboxNav' | 'listboxNav' = 'listboxNav'): void {\n        const topReached = direction === 'up' && this.selectedIndex <= 0;\n        const bottomReached = direction === 'down' && this.selectedIndex >= this.searchResults.length - 1;\n\n        if (topReached || bottomReached) {\n            return;\n        }\n\n        this.selectedIndex = this.selectedIndex + (direction === 'up' ? -1 : 1);\n\n        this.listbox?.selectionService.select(this.selectedIndex);\n    }\n\n    public getLocaleMessage(message: string): string {\n        return this.service.options.messages[`ReportViewer_SearchDialog${message}`];\n    }\n\n    private onArrowEvent(event: any): void {\n        event.stopImmediatePropagation();\n        const searchResultItems = this.searchResults.length;\n\n        if (searchResultItems > 0) {\n            const isArrowUp = event.key === 'ArrowUp';\n            const isArrowDown = event.key === 'ArrowDown'\n\n            if (isArrowUp || isArrowDown) {\n                event.preventDefault();\n\n                const dir: 'up' | 'down' = isArrowUp ? 'up' : 'down';\n                this.onNavigateButtons(dir, 'comboboxNav');\n            }\n\n            const currentListboxItem = this.listbox.listboxItems.toArray()[this.selectedIndex].nativeElement;\n            currentListboxItem?.focus();\n\n            this.ngZone.onStable.pipe(take(1)).subscribe(() => this.comboBox?.focus());\n        }\n    }\n\n    private onSearchComplete(results: SearchResult[]): void {\n        let totalCount = results.length;\n\n        if (totalCount > 250) {\n            results = results.slice(0, 250);\n        }\n\n        this.searchResults = results;\n\n        if (results) {\n            this.listbox?.selectionService.setSelectedIndices([0]);\n\n            // setSelectedIndices doesn't trigger the selectionChange event\n            // so we manually highlight the first item in the list\n            this.service.searchManager?.highlightSearchItem(this.searchResults[0]);\n        }\n        \n        if (totalCount > 0) {\n            this.service.searchManager?.navigateToPage(results[0]);\n        }\n    }\n}\n","import { Component, ElementRef, Input, OnInit, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { ReportingAngularViewerService } from '../reporting-angular-viewer.service';\nimport { PromptOutput, PromptRequestEvent } from \"@progress/kendo-angular-conversational-ui\";\nimport { SVGIcon, xIcon } from '@progress/kendo-svg-icons';\nimport { AiInfo } from '@progress/telerik-common-report-viewer/dist/Types/AiInfoType';\n\n@Component({\n    selector: 'aiprompt-window',\n    standalone: false,\n    templateUrl: './aiprompt-window.component.html',\n    styleUrls: ['./aiprompt-window.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class AiPromptComponent implements OnInit {\n    @Input() promptOutputs: Array<PromptOutput>;\n\n    public windowTop: number = 80;\n    public windowLeft!: number;\n    public windowWidth!: number;\n\n    public xIcon: SVGIcon = xIcon;\n    public activeView: number = 0;\n    public showConsent: boolean = false;\n    public aiInfo: AiInfo;\n    public predefinedPrompts: string[];\n    public consentAcceptBtnText: string = \"\";\n    public consentRejectBtnText: string = \"\";\n    private idCounter = 0;\n\n    public constructor(private renderer: Renderer2, private el: ElementRef, private service: ReportingAngularViewerService) {}\n    \n    async ngOnInit(): Promise<void> {\n        const reportElemWidth = this.service.reportWidth;\n        this.windowWidth = 500;\n        this.windowLeft = reportElemWidth - (this.windowWidth + 20);\n\n        this.aiInfo = await this.service.controller.createAIThread();\n        if (this.aiInfo.predefinedPrompts && this.aiInfo.predefinedPrompts.length > 0) {\n            this.predefinedPrompts = this.aiInfo.predefinedPrompts;\n        }\n\n        if (this.aiInfo.requireConsent) {\n            this.showConsent = this.aiInfo.requireConsent && this.service.controller.loadFromSessionStorage(\"trvAiConsent\") !== \"true\";\n            this.consentAcceptBtnText = this.getLocaleMessage('ConsentAccept');;\n            this.consentRejectBtnText = this.getLocaleMessage('ConsentReject');;\n        }\n\n        this.onActiveViewChange(this.activeView);\n    }\n\n    public toggle(isOpened: boolean): void {\n        this.service.isAiPromptWindowOpen = isOpened;\n    }\n\n    public onWidthChange(width: number): void {\n        this.service.windowWidth = width;\n    }\n\n    public onHeightChange(height: number): void {\n        this.service.windowHeight = height;\n    }\n\n    public onPromptRequest(event: PromptRequestEvent): void {\n        const generateButtonEl = this.el.nativeElement.querySelector('.k-prompt-footer .k-actions .k-button');\n        generateButtonEl && this.renderer.addClass(generateButtonEl, 'k-disabled');\n        this.service.controller.getAIResponse(event.prompt)\n            .then(response => {\n                this.promptOutputs.unshift(this.createPromptOutputFromResponse(response, event));\n                generateButtonEl && this.renderer.removeClass(generateButtonEl, 'k-disabled');\n                this.activeView = 1;\n            }).catch(error => {\n                this.promptOutputs.unshift(this.createPromptOutputFromResponse(error?._responseJSON, event));\n                generateButtonEl && this.renderer.removeClass(generateButtonEl, 'k-disabled');\n                this.activeView = 1;\n            });\n    }\n\n    public onActiveViewChange(viewId: number): void {\n        // The Kendo event is triggered before the new AI prompt view is rendered so the textarea doesn't exist\n        // Wrap the call in setTimeout in order to have the textarea element present before setting the disabled class\n        if (viewId === 0 && !this.aiInfo.allowCustomPrompts) {\n            setTimeout(() => {\n                let promptTextAreaPlaceholder = this.getLocaleMessage('TextAreaPlaceholder');\n                if (!(this.predefinedPrompts && this.predefinedPrompts.length > 0)) {\n                    const aiPromptGenerateButton = this.el.nativeElement.querySelector('.k-prompt-footer .k-actions');\n                    aiPromptGenerateButton && this.renderer.addClass(aiPromptGenerateButton, 'k-disabled');\n                    promptTextAreaPlaceholder = this.getLocaleMessage('NoPredefinedAndCustomPromptsPlaceholder');\n                } else {\n                    promptTextAreaPlaceholder = this.getLocaleMessage('NoCustomPromptsPlaceholder');\n                }\n\n                const textAreaEl = this.el.nativeElement.querySelector('.k-textarea textarea');\n                if (textAreaEl) {\n                    this.renderer.addClass(textAreaEl, 'k-disabled')\n                    this.renderer.setAttribute(textAreaEl, 'placeholder', promptTextAreaPlaceholder);\n                }\n            }, 50)\n        }\n    }\n\n    public consentCancel() {\n        this.toggle(false);\n    }\n\n    public async consentAccept() {\n        this.showConsent = false;\n        this.service.controller.saveToSessionStorage('trvAiConsent', 'true');\n        this.onActiveViewChange(this.activeView);\n    }\n\n    public getLocaleMessage(message: string): string {\n        return this.service.options.messages[`ReportViewer_AiPromptDialog${message}`];\n    }\n\n    private createPromptOutputFromResponse(response: string, promptData: PromptRequestEvent) {\n        return {\n            id: this.idCounter++,\n            output: response,\n            prompt: promptData.prompt,\n            isRetry: promptData.isRetry,\n        }; \n    }\n}\n","<kendo-window kendoDragTargetContainer\n    dragHandle=\".k-prompt-header\"\n    dragTargetFilter=\".trv-ai-prompt-dialog\"\n    cursorStyle=\"default\"\n    title=\"Before you start with AI\"\n    (close)=\"toggle(false)\"\n    class=\"trv-ai-prompt-dialog\"\n    [(top)]=\"windowTop\"\n    [(left)]=\"windowLeft\"\n    [width]=\"windowWidth\"\n    (widthChange)=\"onWidthChange($event)\"\n    (heightChange)=\"onHeightChange($event)\">\n    <div class=\"trv-window k-window-content\">\n        <div *ngIf=\"showConsent\" class=\"trv-ai-consent-dialog\">\n            <div class=\"trv-ai-consent-content\" [innerHTML]=\"aiInfo.consentMessage\"></div>\n            <div class=\"trv-ai-consent-actions k-actions k-actions-end\">\n                <button class=\"k-button k-button-md k-rounded-md k-button-solid k-button-solid-primary\"\n                    (click)=\"consentAccept()\"\n                    ariaLabel=\"AI Prompt Consent\"\n                    title=\"Consent\">{{ consentAcceptBtnText }}</button>\n                <button class=\"k-button k-button-md k-rounded-md k-button-solid k-button-solid-base\"\n                    (click)=\"consentCancel()\"\n                    ariaLabel=\"AI Prompt Cancel\"\n                    title=\"Cancel\">{{ consentRejectBtnText }}</button>\n            </div>\n        </div>\n\n        <kendo-aiprompt *ngIf=\"!showConsent\"\n        [(activeView)]=\"activeView\"\n        [promptOutputs]=\"promptOutputs\"\n        [promptSuggestions]=\"predefinedPrompts\"\n        (promptRequest)=\"onPromptRequest($event)\"\n        (activeViewChange)=\"onActiveViewChange($event)\">\n            <kendo-aiprompt-prompt-view></kendo-aiprompt-prompt-view>\n            <kendo-aiprompt-messages promptPlaceholder=\"Enter your prompt\"></kendo-aiprompt-messages>\n            <kendo-aiprompt-output-view></kendo-aiprompt-output-view>\n            <ng-template kendoAIPromptToolbarActionsTemplate>\n                <span class=\"k-spacer\"></span>\n                <button kendoButton\n                [svgIcon]=\"xIcon\"\n                fillMode=\"flat\"\n                rounded=\"full\"\n                (click)=\"toggle(false)\">\n                </button>\n            </ng-template>\n        </kendo-aiprompt>\n    </div>\n</kendo-window>","export interface ZoomLevel {\n    id?: number;\n    text?: string;\n    displayValue?: string;\n    type?: string;\n    value?: number;\n}\n\nexport const zoomOptionsData = [{\n    id: 1,\n    text: 'Fit to width',\n    type: 'fitPageWidth',\n    displayValue: '',\n    value: 0\n}, {\n    id: 2,\n    text: 'Fit to page',\n    type: 'fitPage',\n    displayValue: '',\n    value: 10\n}, {\n    id: 3,\n    text: '25%',\n    type: 'specific',\n    displayValue: '25%',\n    value: 0.25\n}, {\n    id: 4,\n    text: '50%',\n    type: 'specific',\n    displayValue: '50%',\n    value: 0.5\n}, {\n    id: 5,\n    text: '75%',\n    type: 'specific',\n    displayValue: '75%',\n    value: 0.75\n}, {\n    id: 6,\n    text: '100%',\n    type: 'specific',\n    displayValue: '100%',\n    value: 1\n}, {\n    id: 7,\n    text: '125%',\n    type: 'specific',\n    displayValue: '125%',\n    value: 1.25\n}, {\n    id: 8,\n    text: '150%',\n    type: 'specific',\n    displayValue: '150%',\n    value: 1.5\n}, {\n    id: 9,\n    text: '175%',\n    type: 'specific',\n    displayValue: '175%',\n    value: 1.75\n}, {\n    id: 10,\n    text: '200%',\n    type: 'specific',\n    displayValue: '200%',\n    value: 2\n}, {\n    id: 11,\n    text: '225%',\n    type: 'specific',\n    displayValue: '225%',\n    value: 2.25\n}, {\n    id: 12,\n    text: '250%',\n    type: 'specific',\n    displayValue: '250%',\n    value: 2.5\n}, {\n    id: 13,\n    text: '275%',\n    type: 'specific',\n    displayValue: '275%',\n    value: 2.75\n}, {\n    id: 14,\n    text: '300%',\n    type: 'specific',\n    displayValue: '300%',\n    value: 3\n}, {\n    id: 15,\n    text: '325%',\n    type: 'specific',\n    displayValue: '325%',\n    value: 3.25\n}, {\n    id: 16,\n    text: '350%',\n    type: 'specific',\n    displayValue: '350%',\n    value: 3.5\n}, {\n    id: 17,\n    text: '375%',\n    type: 'specific',\n    displayValue: '375%',\n    value: 3.75\n}, {\n    id: 18,\n    text: '400%',\n    type: 'specific',\n    displayValue: '400%',\n    value: 4\n}];\n\n","import {\n    Component,\n    TemplateRef,\n    ViewChild,\n    ElementRef,\n    forwardRef,\n    AfterViewInit,\n    ViewEncapsulation,\n    OnDestroy,\n} from '@angular/core';\nimport { ToolBarToolComponent } from '@progress/kendo-angular-toolbar';\nimport { ReportingAngularViewerService } from '../reporting-angular-viewer.service';\nimport { ScaleMode } from '../models/types';\nimport { ComboBoxComponent } from '@progress/kendo-angular-dropdowns';\nimport { ZoomLevel, zoomOptionsData } from '../models/zoom-level.interface';\nimport { SVGIcon, windowRestoreIcon } from '@progress/kendo-svg-icons';\nimport { isDocumentAvailable } from '@progress/kendo-angular-common';\nimport { Subscription } from 'rxjs';\n\n@Component({\n    providers: [\n        { provide: ToolBarToolComponent, useExisting: forwardRef(() => CustomZoomComponent) }\n    ],\n    selector: 'custom-zoom-tool',\n    standalone: false,\n    template: `\n        <ng-template #toolbarTemplate>\n            <span #toolbarElement>\n                <kendo-combobox\n                    #combobox\n                    textField=\"text\"\n                    valueField=\"value\"\n                    [tabindex]=\"tabindex\"\n                    [placeholder]=\"localeMessage\"\n                    [data]=\"zoomOptionsData\"\n                    [valuePrimitive]=\"false\"\n                    [value]=\"currentZoom\"\n                    (valueChange)=\"zoomLevelChange($event)\">\n                    [title]=\"localeMessage\"\n                </kendo-combobox>\n            </span>\n        </ng-template>\n        <ng-template #popupTemplate>\n            <span #popupElement>\n                <button\n                    #zoomButton\n                    kendoButton\n                    class=\"zoom-level-btn\"\n                    fillMode=\"flat\"\n                    [tabindex]=\"tabindex\"\n                    (click)=\"openDialog = true\"\n                >\n                    <div class=\"zoom-level-btn-content\">\n                        <span> {{ localeMessage }} </span>\n                        <kendo-svgicon name=\"window-restore\" [icon]=\"windowRestoreIcon\"></kendo-svgicon>\n                    </div>\n                </button>\n            </span>\n\n            <kendo-dialog\n                [width]=\"300\"\n                [height]=\"120\"\n                [title]=\"localeMessage\"\n                *ngIf=\"openDialog\"\n                (close)=\"openDialog = false\"\n            >\n                <kendo-dropdownlist\n                    textField=\"text\"\n                    valueField=\"value\"\n                    [tabindex]=\"tabindex\"\n                    [valuePrimitive]=\"false\"\n                    [data]=\"zoomOptionsData\"\n                    [value]=\"currentZoom\"\n                    [title]=\"localeMessage\"\n                    (valueChange)=\"zoomLevelChange($event)\"\n                >\n                </kendo-dropdownlist>\n            </kendo-dialog>\n        </ng-template>\n    `,\n    styles: [`\n        .zoom-level-btn {\n            width: 100%;\n        }\n\n        .zoom-level-btn .k-button-text {\n            width: inherit;\n        }\n\n        .zoom-level-btn .zoom-level-btn-content {\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n        }\n    `],\n    encapsulation: ViewEncapsulation.None\n})\nexport class CustomZoomComponent extends ToolBarToolComponent implements AfterViewInit, OnDestroy {\n\n\n    @ViewChild('toolbarTemplate', { static: true }) public override toolbarTemplate!: TemplateRef<unknown>;\n    @ViewChild('popupTemplate', { static: true }) public override popupTemplate!: TemplateRef<unknown>;\n    @ViewChild('toolbarElement') public toolbarElement?: ElementRef;\n    @ViewChild('popupElement') public popupElement?: ElementRef;\n    @ViewChild('zoomButton') public zoomButton?: ElementRef;\n    @ViewChild('combobox', { read: ComboBoxComponent, static: false }) public combobox?: ComboBoxComponent;\n\n    public openDialog: boolean = false;\n    public tabindex: number = -1;\n    public zoomOptionsData: ZoomLevel[] = zoomOptionsData;\n    public currentZoom: ZoomLevel = zoomOptionsData[5];\n    public windowRestoreIcon: SVGIcon = windowRestoreIcon;\n\n    private subs: Subscription = new Subscription();\n\n    constructor(public service: ReportingAngularViewerService) {\n        super();\n    }\n\n    public override canFocus(): boolean {\n        return true; // marks the tools as focusable\n    }\n\n    public override focus(): void {\n        if (!isDocumentAvailable()) return;\n\n        this.tabindex = 0;\n\n        if (this.overflows) {\n            this.zoomButton?.nativeElement.focus();\n        } else {\n            this.combobox?.focus();\n            this.combobox?.wrapper.nativeElement.focus();\n        }\n    }\n\n    public override handleKey(): boolean {\n        this.tabindex = -1;\n        return false;\n    }\n\n    public ngAfterViewInit(): void {\n        this.subs.add(this.service.onZoomChange.subscribe(zoomLevel => {\n            this.currentZoom = zoomOptionsData?.find(zoomData => zoomData.value === zoomLevel) as ZoomLevel;\n        }));\n    }\n\n    public ngOnDestroy(): void {\n        this.subs.unsubscribe();\n    }\n\n    public zoomLevelChange(zoomLevel: ZoomLevel): void {\n        if (!isDocumentAvailable()) return;\n\n        const defaultZoom = zoomOptionsData.filter(zoom => zoom.value === 1)[0];\n\n        if (!zoomLevel && this.currentZoom === defaultZoom) { \n            this.currentZoom = defaultZoom; \n            return;\n        }\n\n        if (!zoomLevel && this.currentZoom !== defaultZoom) {\n            this.currentZoom = defaultZoom;\n        }\n\n        if (zoomLevel) this.currentZoom = zoomLevel;\n\n        this.service.setScaleMode(this.getScaleModeAsNumber(this.currentZoom.type as ScaleMode));\n\n        if (this.currentZoom.type === 'specific') {\n            this.service.setScale(<number>this.currentZoom.value);\n        }\n    }\n\n    public get localeMessage(): string {\n        return this.service.options.messages[`ReportViewer_ToolbarZoomComboBoxPlaceholderText`];\n    }\n\n    private getScaleModeAsNumber(scaleMode: ScaleMode): number {\n        return scaleMode === 'fitPage' ? 0 : scaleMode === 'fitPageWidth' ? 1 : 2;\n    }\n}","import { Component, Input, Output, EventEmitter, ViewEncapsulation, AfterViewInit, ChangeDetectorRef } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { LicenseInfo } from '@progress/telerik-common-report-viewer/dist/Types/LicenseInfoType';\n\n@Component({\n    selector: 'license-banner',\n    standalone: false,\n    templateUrl: './license-banner.component.html',\n    styleUrls: ['./license-banner.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class LicenseBannerComponent implements AfterViewInit {\n    @Input() bannerInfo: LicenseInfo;\n    @Input() bannerIcon: string;\n    @Output() onCloseEvent = new EventEmitter<void>();\n\n    public trustedBannerIcon: SafeHtml;\n\n    public constructor(private sanitizer: DomSanitizer, private cdr: ChangeDetectorRef) {}\n\n    ngAfterViewInit() {\n        this.trustedBannerIcon = this.sanitizer.bypassSecurityTrustHtml(this.bannerIcon);\n        this.cdr.detectChanges();\n    }\n\n    public onClose() {\n        this.onCloseEvent.emit();\n    }\n}","<div class=\"trv-license-banner\">\n    <span class=\"trv-license-icon\" [innerHTML]=\"trustedBannerIcon\"></span>\n    <div class=\"trv-license-content\">\n        <span class=\"trv-license-title\">{{ bannerInfo.title }}</span>\n        <span class=\"trv-license-description\">\n            <span [innerHTML]=\"bannerInfo.message\"></span>&ngsp;\n            <a *ngIf=\"bannerInfo.actionMessage && bannerInfo.actionLink\" title='{{ bannerInfo.actionMessage }}' href='{{ bannerInfo.actionLink }}' target='_blank'>{{ bannerInfo.actionMessage }}</a>\n        </span>\n    </div>\n    <div class=\"trv-license-actions\">\n        <a *ngIf=\"bannerInfo.callToActionMessage && bannerInfo.callToActionLink\" title='{{ bannerInfo.callToActionMessage }}' class=\"trv-license-cta-button\" href='{{ bannerInfo.callToActionLink }}' target=\"_blank\">{{ bannerInfo.callToActionMessage }}</a>\n        <button title=\"Close\" (click)=\"onClose()\" class=\"trv-license-close-button\">\n            <svg width=\"20\" height=\"20\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                    d=\"M11.9309 3.1838C12.1754 2.93933 12.5712 2.93937 12.8157 3.1838C13.0601 3.4283 13.0601 3.82407 12.8157 4.06857L8.885 7.99923L12.8166 11.9309C13.0611 12.1754 13.0611 12.5721 12.8166 12.8166C12.5721 13.0611 12.1754 13.0611 11.9309 12.8166L7.99925 8.88497L4.06859 12.8166C3.8241 13.0611 3.42732 13.0611 3.18285 12.8166C2.93862 12.5721 2.93851 12.1753 3.18285 11.9309L7.11449 7.99923L3.18382 4.06857C2.93947 3.82413 2.93955 3.42829 3.18382 3.1838C3.42831 2.9393 3.82508 2.9393 4.06957 3.1838L7.99925 7.11349L11.9309 3.1838Z\"\n                    fill=\"#212529\"\n                />\n            </svg>\n        </button>\n    </div>\n</div>","import { ReportingAngularViewerService } from './reporting-angular-viewer.service';\nimport { LicenseMessage, registerLicenseMessage } from '@progress/kendo-licensing';\nimport { Observable, Subscription, fromEvent, of } from 'rxjs';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    NgZone,\n    OnDestroy,\n    Output,\n    Renderer2,\n    SimpleChanges,\n    ViewEncapsulation,\n    ChangeDetectorRef,\n    OnInit\n} from '@angular/core';\nimport {\n    ContentArea,\n    DocumentInfo,\n    PageInfo,\n    ReportController,\n    ServiceClient,\n    ReportSourceOptions,\n    SearchManager,\n    ReportServerSettings,\n    ReportServerTokenSettings,\n    ParameterInfo,\n    PageActionEventArgs,\n    PrintStartedEventArgs,\n    PrintDocumentReadyEventArgs,\n    ExportStartedEventArgs,\n    ExportDocumentReadyEventArgs,\n    CurrentPageChangedEventArgs,\n    TooltipEventArgs\n} from '@progress/telerik-common-report-viewer';\nimport {\n    SVGIcon,\n    alignLeftIcon,\n    arrowRotateCwIcon,\n    caretAltToLeftIcon,\n    caretAltToRightIcon,\n    downloadIcon,\n    fileTxtIcon,\n    forwardIcon,\n    questionCircleIcon,\n    positionLeftIcon,\n    positionRightIcon,\n    printIcon,\n    redoIcon,\n    rewindIcon,\n    searchIcon,\n    sparklesIcon,\n    undoIcon,\n    xCircleIcon,\n    warningTriangleIcon,\n    zoomInIcon,\n    zoomOutIcon\n} from '@progress/kendo-svg-icons';\nimport { PageMode, PrintMode, ScaleMode, ServiceType, ViewMode } from './models/types';\nimport { isDocumentAvailable } from '@progress/kendo-angular-common';\nimport { ParametersSectionComponent } from './parameters/parameters-section.component';\nimport { LicenseInfo } from '@progress/telerik-common-report-viewer/dist/Types/LicenseInfoType';\nimport { ConfigurationInfo } from '@progress/telerik-common-report-viewer/dist/Types/ConfigurationInfoType';\nimport { PromptOutput } from '@progress/kendo-angular-conversational-ui';\nimport { LicenseInfo as KendoLicenseInfo } from '@progress/kendo-licensing';\n\nlet reportingIndex: number = 0;\n\nlet kendoAngularLicenseInfo: { message: KendoLicenseInfo; productCode: string } | null = null;\n// Suppress the Kendo Angular banner but save its info, so we can show our own banner with it\n// Do not move inside a class as it has to execute before the Kendo Angular event is triggered\nconst onKendoLicensingMessage = (e: Event) => {\n    const customEvent = e as CustomEvent;\n    kendoAngularLicenseInfo = customEvent?.detail;\n    e.preventDefault();\n\n    // Self-remove after first capture — we only need one message and the listener is no longer needed\n    document.documentElement.removeEventListener('kendoLicensingMessage', onKendoLicensingMessage);\n};\n\nif (typeof document !== 'undefined') {\n    document.documentElement.addEventListener('kendoLicensingMessage', onKendoLicensingMessage);\n}\n\n/**\n * Native Angular Report Viewer Component.\n * Provides a comprehensive interface for previewing reports\n * from a Telerik Reporting REST Service or a Telerik Report Server instance.\n * @example\n * ```html\n * <reporting-angular-viewer #viewerId\n *   [serviceUrl]=\"serviceUrl\"\n *   [reportSource]=\"reportSource\">\n * </reporting-angular-viewer>\n * ```\n * @example\n * ```typescript\n * import { Component, ViewChild } from '@angular/core';\n * import { ReportingAngularViewerComponent, ReportingAngularViewerModule } from '@progress/telerik-angular-native-report-viewer'\n * import { ReportSourceOptions } from '@progress/telerik-common-report-viewer'\n *\n * @Component({\n *  imports: [ReportingAngularViewerModule]\n * })\n * export class AppComponent {\n *  @ViewChild('viewerId') reportViewer!: ReportingAngularViewerComponent;\n *  serviceUrl: string = 'https://demos.telerik.com/reporting/api/reports';\n *  reportSource: ReportSourceOptions = {\n *    report: 'Report Catalog.trdp',\n *    parameters: {}\n *  };\n * }\n * ```\n */\n@Component({\n    providers: [ReportingAngularViewerService],\n    selector: 'reporting-angular-viewer',\n    standalone: false,\n    template: `\n        <ng-template #tooltipTemplate let-anchor>\n            <div> {{ anchor.nativeElement.getAttribute('data-tooltip-title') }} </div>\n            <div> {{ anchor.nativeElement.getAttribute('data-tooltip-text') }} </div>\n        </ng-template>\n\n        <div\n            class=\"trv-report-viewer\"\n            kendoTooltip\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [filter]=\"tooltipSelector\">\n            <div *ngIf=\"shouldShowLicenseOverlay\" class=\"trv-license-overlay\"></div>\n            <div class=\"trv-report-viewer-wrapper\">\n                <div class=\"trv-license-banners-stack\">\n                    <license-banner *ngIf=\"shouldShowLicenseBanner\" [bannerInfo]=\"licenseInfo\" [bannerIcon]=\"bannerIcon\" (onCloseEvent)=\"hideLicenseBanner()\"></license-banner>\n                    <license-banner *ngIf=\"shouldShowKendoLicenseBanner\" [bannerInfo]=\"kendoLicenseInfo\" [bannerIcon]=\"kendoBannerIcon\" (onCloseEvent)=\"hideKendoLicenseBanner()\"></license-banner>\n                </div>    \n                <div class=\"trv-toolbar\">\n                    <kendo-toolbar>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"menu\"\n                            icon=\"undo\"\n                            [svgIcon]=\"undoIcon\"\n                            [text]=\"getToolbarButtonTitle('NavigateBackward')\"\n                            [disabled]=\"isRenderingInProgress || service.currentHistoryIndex <= 0\"\n                            (click)=\"executeCommand('navigateBackward')\"\n                            [title]=\"getToolbarButtonTitle('NavigateBackward')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"menu\"\n                            icon=\"redo\"\n                            [svgIcon]=\"redoIcon\"\n                            [text]=\"getToolbarButtonTitle('NavigateForward')\"\n                            [disabled]=\"isRenderingInProgress || service.currentHistoryIndex + 1 >= service.history.length\"\n                            (click)=\"executeCommand('navigateForward')\"\n                            [title]=\"getToolbarButtonTitle('NavigateForward')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"menu\"\n                            icon=\"close-circle\"\n                            [svgIcon]=\"xCircleIcon\"\n                            [text]=\"getToolbarButtonTitle('StopRendering')\"\n                            [disabled]=\"!isRenderingInProgress\"\n                            (click)=\"executeCommand('stopRendering')\"\n                            [title]=\"getToolbarButtonTitle('StopRendering')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"menu\"\n                            icon=\"rotate\"\n                            [svgIcon]=\"arrowRotateCwIcon\"\n                            [text]=\"getToolbarButtonTitle('Refresh')\"\n                            [disabled]=\"false\"\n                            (click)=\"executeCommand('refreshReport')\"\n                            [title]=\"getToolbarButtonTitle('Refresh')\">\n                        </kendo-toolbar-button>\n                        <custom-pager-tool [totalPages]=\"totalPages\"></custom-pager-tool>\n                        <kendo-toolbar-buttongroup selection=\"single\">\n                            <kendo-toolbar-button\n                                [toggleable]=\"false\"\n                                fillMode=\"flat\"\n                                showText=\"menu\"\n                                icon=\"align-left\"\n                                [svgIcon]=\"alignLeftIcon\"\n                                [text]=\"getToolbarButtonTitle('InteractiveView')\"\n                                [selected]=\"!isInPrintViewMode\"\n                                [disabled]=\"isRenderingInProgress || !isInPrintViewMode\"\n                                (click)=\"executeCommand('setViewMode')\"\n                                [title]=\"getToolbarButtonTitle('InteractiveView')\"\n                                >\n                            </kendo-toolbar-button>\n                            <kendo-toolbar-button\n                                [toggleable]=\"false\"\n                                fillMode=\"flat\"\n                                showText=\"menu\"\n                                icon=\"file-txt\"\n                                [svgIcon]=\"fileTxtIcon\"\n                                [text]=\"getToolbarButtonTitle('PrintPreview')\"\n                                [selected]=\"isInPrintViewMode\"\n                                [disabled]=\"isRenderingInProgress || isInPrintViewMode\"\n                                (click)=\"executeCommand('setViewMode')\"\n                                [title]=\"getToolbarButtonTitle('PrintPreview')\">\n                            </kendo-toolbar-button>\n                        </kendo-toolbar-buttongroup>\n                        <kendo-toolbar-separator></kendo-toolbar-separator>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"menu\"\n                            icon=\"print\"\n                            [svgIcon]=\"printIcon\"\n                            [text]=\"getToolbarButtonTitle('PrintReport')\"\n                            [disabled]=\"isRenderingInProgress\"\n                            (click)=\"executeCommand('printReport')\"\n                            [title]=\"getToolbarButtonTitle('PrintReport')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-splitbutton\n                            #splitButton\n                            showText=\"menu\"\n                            icon=\"download\"\n                            [svgIcon]=\"downloadIcon\"\n                            [text]=\"getToolbarButtonTitle('Export')\"\n                            [data]=\"getRenderingExtensions\"\n                            textField=\"localizedName\"\n                            (buttonClick)=\"splitButton['toolbarSplitButton'].toggle()\"\n                            (itemClick)=\"executeCommand('exportReport', $event.name)\"\n                            [title]=\"getToolbarButtonTitle('Export')\"\n                            >\n                        </kendo-toolbar-splitbutton>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"menu\"\n                            icon=\"zoom-in\"\n                            [svgIcon]=\"zoomInIcon\"\n                            [text]=\"getToolbarButtonTitle('ZoomIn')\"\n                            [disabled]=\"isRenderingInProgress || service.options.scaleMode !== 2\"\n                            (click)=\"executeCommand('zoomIn')\"\n                            [title]=\"getToolbarButtonTitle('ZoomIn')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"menu\"\n                            icon=\"zoom-out\"\n                            [svgIcon]=\"zoomOutIcon\"\n                            [disabled]=\"isRenderingInProgress || service.options.scaleMode !== 2\"\n                            [text]=\"getToolbarButtonTitle('ZoomOut')\"\n                            (click)=\"executeCommand('zoomOut')\"\n                            [title]=\"getToolbarButtonTitle('ZoomOut')\">\n                        </kendo-toolbar-button>\n                        <custom-zoom-tool></custom-zoom-tool>\n                        <kendo-toolbar-separator></kendo-toolbar-separator>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"menu\"\n                            icon=\"search\"\n                            [svgIcon]=\"searchIcon\"\n                            [disabled]=\"isRenderingInProgress\"\n                            [text]=\"getToolbarButtonTitle('Search')\"\n                            (click)=\"executeCommand('toggleSearchWindow')\"\n                            [selected]=\"isSearchWindowOpen\"\n                            [title]=\"getToolbarButtonTitle('Search')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-button *ngIf=\"aiAvailable\"\n                            fillMode=\"flat\"\n                            showText=\"menu\"\n                            icon=\"sparkles\"\n                            [svgIcon]=\"sparklesIcon\"\n                            [disabled]=\"isRenderingInProgress\"\n                            [text]=\"getToolbarButtonTitle('AiPrompt')\"\n                            (click)=\"executeCommand('toggleAiPromptWindow')\"\n                            [selected]=\"isAiPromptWindowOpen\"\n                            [title]=\"getToolbarButtonTitle('AiPrompt')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-separator></kendo-toolbar-separator>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"menu\"\n                            icon=\"position-left\"\n                            [svgIcon]=\"positionLeftIcon\"\n                            [text]=\"getToolbarButtonTitle('ToggleDocumentMap')\"\n                            [disabled]=\"isRenderingInProgress || !isDocumentMapAvailable\"\n                            [selected]=\"isDocumentMapAvailable && documentMapVisible\"\n                            (click)=\"executeCommand('toggleDocumentMap')\"\n                            [title]=\"getToolbarButtonTitle('ToggleDocumentMap')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"menu\"\n                            icon=\"position-right\"\n                            [svgIcon]=\"positionRightIcon\"\n                            [text]=\"getToolbarButtonTitle('ToggleParametersArea')\"\n                            [disabled]=\"isRenderingInProgress || !isParametersSectionAvailable\"\n                            [selected]=\"isParametersSectionAvailable && parametersAreaVisible\"\n                            (click)=\"executeCommand('toggleParametersSection')\"\n                            [title]=\"getToolbarButtonTitle('ToggleParametersArea')\">\n                        </kendo-toolbar-button>\n                    </kendo-toolbar>\n                </div>\n                <kendo-splitter [class]=\"splitterWrapperClasses\">\n                    <kendo-splitter-pane\n                        class=\"trv-document-map-pane\"\n                        size=\"300px\"\n                        [collapsed]=\"!documentMapVisible\"\n                        [collapsible]=\"true\"\n                        (collapsedChange)=\"documentMapVisible = !documentMapVisible\">\n                        <div class=\"trv-document-map-container\">\n                            <div class=\"trv-document-map-wrapper\">\n                                <kendo-treeview\n                                    [nodes]=\"getDocumentMapNodes\"\n                                    kendoTreeViewExpandable\n                                    kendoTreeViewSelectable\n                                    textField=\"text\"\n                                    [children]=\"children\"\n                                    [hasChildren]=\"hasChildren\"\n                                    (selectionChange)=\"navigateToPage($event)\"\n                                ></kendo-treeview>\n                            </div>\n                        </div>\n                    </kendo-splitter-pane>\n                    <kendo-splitter-pane class=\"trv-pages-pane\">\n                        <div class=\"content-area-wrapper\">\n                            <kendo-loader\n                                *ngIf=\"isRenderingInProgress\"\n                                type=\"pulsing\"\n                                themeColor=\"primary\"\n                                size=\"large\">\n                            </kendo-loader>\n                            <div class=\"trv-page-container\">\n                                <div class=\"trv-page-wrapper\"></div>\n                            </div>\n                        </div>\n                        <div class=\"k-notification k-hidden trv-notification\">\n                            <div class=\"k-notification-wrap\">\n                                <span class=\"k-icon k-i-warning\"></span>\n                                <div class=\"k-notification-content trv-error-message\"></div>\n                            </div>\n                        </div>\n                    </kendo-splitter-pane>\n                    <kendo-splitter-pane\n                        [collapsed]=\"!parametersAreaVisible\"\n                        class=\"trv-parameters-pane\"\n                        [collapsible]=\"true\"\n                        size=\"300px\"\n                        (collapsedChange)=\"parametersAreaVisible = !parametersAreaVisible\">\n                        <div class=\"trv-parameters-container\">\n                            <div class=\"trv-parameters-wrapper\">\n                                <parameters-section\n                                    *ngFor=\"let parameter of service.parameters\"\n                                    (onParameterChanged)=\"onParameterChanged($event)\"\n                                    [parameter]=\"parameter\"\n                                    [loading]=\"isRenderingInProgress\"\n                                    >\n                                </parameters-section>\n                                <div *ngIf=\"hasLazyParameters || !autoRunEnabled\" class=\"trv-parameters-area-footer k-actions\">\n                                    <button kendoButton\n                                        title=\"Preview the report\"\n                                        class=\"trv-parameters-area-preview-button\"\n                                        [disabled]=\"service.controller.hasInvalidParameter(service.parameters)\"\n                                        (click)=\"onApplyButtonClick()\"\n                                        ariaLabel=\"preview\">Preview\n                                    </button>\n                                </div>\n                            </div>\n                        </div>\n                    </kendo-splitter-pane>\n                </kendo-splitter>\n            </div>\n        </div>\n\n        <search-window *ngIf=\"isSearchWindowOpen\" [searchTerms]=\"searchTerms\"></search-window>\n        <aiprompt-window *ngIf=\"isAiPromptWindowOpen\" [promptOutputs]=\"aiPromptOutputs\"></aiprompt-window>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./reporting-angular-viewer.scss']\n})\nexport class ReportingAngularViewerComponent implements OnInit, AfterViewInit, OnDestroy {\n    @HostBinding('class.k-reporting-viewer')\n    public hostClass: boolean = true;\n\n    private readonly historySessionKey = \"history\";\n    private readonly currentHistoryIndexSessionKey = \"currentHistoryIndex\";\n    private readonly currentHistoryItemSessionKey = \"currentHistoryItem\";\n\n    /**\n     * Sets the scale factor for the report pages.\n     * The scale takes effect when the scaleMode is set to 'specific'.\n     * @default 1.0\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  [scale]=\"scale\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * scale: number = 1.5 // 150% scale\n     * ```\n     */\n    @Input() public scale: number = 1;\n\n    /**\n     * Sets the address of the Reporting REST Service.\n     * Required when serviceType is 'REST'.\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  [serviceUrl]=\"serviceUrl\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * serviceUrl: string = 'https://demos.telerik.com/reporting/api/reports';\n     * ```\n     */\n    @Input() public serviceUrl?: string;\n\n    /**\n     * Sets the width of the report viewer container.\n     * @default '100%'\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  [width]=\"width\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * width: string = '800px';\n     * ```\n     */\n    @Input() public width: string = '100%';\n\n    /**\n     * Sets the height of the report viewer container.\n     * @default '700px'\n     * @example\n     * ```html\n     * <reporting-angular-viewer #viewerId\n     *  [height]=\"height\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * height: string = '600px';\n     * ```\n     */\n    @Input() public height: string = '700px';\n\n    /**\n     * A bearer token to be added in the Authorization header of each request.\n     * Used for authentication with the reporting service.\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  [authenticationToken]=\"authenticationToken\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * authenticationToken: string = \"Bearer your-authentication-token\";\n     * ```\n     */\n    @Input() public authenticationToken?: string;\n\n    /**\n     * Sets the tab index for the report viewer content.\n     * @default 1000\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  [contentTabIndex]=\"contentTabIndex\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * contentTabIndex: number = 1500;\n     * ```\n     */\n    @Input() public contentTabIndex: number = 1000;\n\n    /**\n     * Sets how the report pages are scaled.\n     * @default 'specific'\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  [scaleMode]=\"scaleMode\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * scaleMode: ScaleMode = 'fitPageWidth';\n     * ```\n     */\n    @Input() public scaleMode: ScaleMode = 'specific';\n\n    /**\n     * Enables or disables the send email functionality.\n     * @default false\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  [enableSendEmail]=\"enableSendEmail\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * enableSendEmail: boolean = true;\n     * ```\n     */\n    @Input() public enableSendEmail: boolean = false;\n\n    /**\n     * Determines whether to keep the client session alive.\n     * When true, prevents the session from timing out during long periods of inactivity.\n     * @default false\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  [keepClientAlive]=\"keepClientAlive\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * keepClientAlive: boolean = true;\n     * ```\n     */\n    @Input() public keepClientAlive: boolean = false;\n\n    /**\n     * Specifies the type of service that the report viewer will connect to.\n     * @default 'REST'\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  [serviceType]=\"serviceType\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * serviceType: ServiceType = 'reportServer';\n     * ```\n     */\n    @Input() public serviceType: ServiceType = 'REST';\n\n    /**\n     * Sets the view mode of the report viewer.\n     * @default 'interactive'\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  [viewMode]=\"viewMode\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * viewMode: ViewMode = 'printPreview';\n     * ```\n     */\n    @Input() public viewMode: ViewMode = 'interactive';\n\n    /**\n     * Controls the visibility of the document map panel if a document map is available.\n     * @default true\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  [documentMapVisible]=\"documentMapVisible\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * documentMapVisible: boolean = false;\n     * ```\n     */\n    @Input() public documentMapVisible: boolean = true;\n\n    /**\n     * Specifies the report and initial report parameter values to be displayed.\n     * The report property can be a relative path to a physical file (TRDP/TRDX/TRBP) or an assembly qualified name for type definitions.\n     * The ReportSourceOptions type should be imported from '@progress/telerik-common-report-viewer'.\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *   [reportSource]=\"reportSource\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * reportSource: ReportSourceOptions = {\n     *  report: 'Dashboard.trdx', // or '{Category}/{ReportName}' when connected to a Report Server\n     *  parameters: { ReportYear: 2004 }\n     * };\n     * ```\n     */\n    @Input() public reportSource?: ReportSourceOptions;\n\n    /**\n     * Sets the print mode for the report viewer.\n     * @default 'autoSelect'\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *   [printMode]=\"printMode\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * printMode: PrintMode = 'forcePDFFile';\n     * ```\n     */\n    @Input() public printMode: PrintMode = 'autoSelect';\n\n    /**\n     * Controls the visibility of the parameters area if the report has parameters.\n     * @default true\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *   [parametersAreaVisible]=\"parametersAreaVisible\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * parametersAreaVisible: boolean = false;\n     * ```\n     */\n    @Input() public parametersAreaVisible: boolean = true;\n\n    /**\n     * Sets the page display mode of the viewer.\n     * @default 'continuousScroll'\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *   [pageMode]=\"pageMode\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * pageMode: PageMode = 'singlePage';\n     * ```\n     */\n    @Input() public pageMode: PageMode = 'continuousScroll';\n    /**\n     * Configuration for Telerik Report Server connection.\n     * \n     * The authentication method depends on the Report Server version:\n     * - Report Server for .NET: Supports Token authentication (ReportServerTokenSettings) or username/password authentication (ReportServerSettings). The token can be from any user, including the Guest user.\n     * - Report Server for .NET Framework 4.6.2: Supports username/password authentication (ReportServerSettings) or Guest account (url only with ReportServerSettings, if Guest is enabled on the server).\n     * \n     * Required when serviceType is set to 'reportServer'.\n     * The ReportServerSettings or ReportServerTokenSettings types should be imported from '@progress/telerik-common-report-viewer'.\n     * \n     * ReportServerTokenSettings properties:\n     * - url (string, required) - The URL to the Telerik Report Server instance.\n     * - getPersonalAccessToken (function, required) - A callback function that returns the Token for authentication against the Telerik Report Server for .NET instance wrapped in a Promise. This is the recommended authentication method for Report Server for .NET. The token can be from any user account, including the Guest user. Only supported by Report Server for .NET.\n     * \n     * ReportServerSettings properties:\n     * - url (string, required) - The URL to the Telerik Report Server instance.\n     * - username (string, required) - A registered username in the Report Server that will be used to get access to the reports. Supported by both Report Server for .NET and Report Server for .NET Framework 4.6.2.\n     * - password (string, required) - The password for the provided username. Supported by both Report Server for .NET and Report Server for .NET Framework 4.6.2.\n     * \n     * @example\n     * ```html\n     * <!-- Report Server for .NET - Token authentication (recommended) -->\n     * <reporting-angular-viewer\n     *   [reportServer]=\"{\n     *     url: 'https://my-report-server-net/',\n     *     getPersonalAccessToken: getPersonalAccessToken\n     *   }\"\n     *   [reportSource]=\"{\n     *     report: 'Samples/Dashboard'\n     *   }\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * // Report Server for .NET - Token authentication (recommended)\n     * getPersonalAccessToken() {\n     *   return Promise.resolve('<personal-access-token>');\n     * }\n     * ```\n     * \n     * @example\n     * ```html\n     * <!-- Report Server for .NET - Token authentication with secure endpoint -->\n     * <reporting-angular-viewer\n     *   [reportServer]=\"{\n     *     url: 'https://my-report-server-net/',\n     *     getPersonalAccessToken: getPersonalAccessToken\n     *   }\"\n     *   [reportSource]=\"{\n     *     report: 'Samples/Dashboard'\n     *   }\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * // Report Server for .NET - Token authentication with secure endpoint\n     * getPersonalAccessToken() {\n     *   return fetch('/rs-token')\n     *     .then(response => response.text());\n     * }\n     * ```\n     * \n     * @example\n     * ```html\n     * <!-- Report Server for .NET - Token authentication with Guest user token -->\n     * <reporting-angular-viewer\n     *   [reportServer]=\"{\n     *     url: 'https://my-report-server-net/',\n     *     getPersonalAccessToken: getPersonalAccessToken\n     *   }\"\n     *   [reportSource]=\"{\n     *     report: 'Samples/Dashboard'\n     *   }\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * // Report Server for .NET - Token authentication with Guest user token\n     * getPersonalAccessToken() {\n     *   return Promise.resolve('<guest-user-token>');\n     * }\n     * ```\n     * \n     * @example\n     * ```typescript\n     * // Report Server for .NET - Token authentication using ReportServerTokenSettings\n     * import { ReportServerTokenSettings } from '@progress/telerik-common-report-viewer';\n     * \n     * reportServer: ReportServerTokenSettings = new ReportServerTokenSettings(\n     *   'https://my-report-server-net/',\n     *   () => Promise.resolve('<personal-access-token>')\n     * );\n     * ```\n     * \n     * @example\n     * ```html\n     * <!-- Report Server for .NET - Username/password authentication -->\n     * <reporting-angular-viewer\n     *   [reportServer]=\"{\n     *     url: 'https://my-report-server-net/',\n     *     username: 'myUser',\n     *     password: 'myPassword'\n     *   }\"\n     *   [reportSource]=\"{\n     *     report: 'Samples/Dashboard'\n     *   }\">\n     * </reporting-angular-viewer>\n     * ```\n     * \n     * @example\n     * ```typescript\n     * // Report Server for .NET - Username/password authentication using ReportServerSettings\n     * import { ReportServerSettings } from '@progress/telerik-common-report-viewer';\n     * \n     * reportServer: ReportServerSettings = new ReportServerSettings(\n     *   'https://my-report-server-net/',\n     *   'myUser',\n     *   'myPassword'\n     * );\n     * ```\n     * \n     * @example\n     * ```html\n     * <!-- Report Server for .NET Framework 4.6.2 - Username/password authentication -->\n     * <reporting-angular-viewer\n     *   [reportServer]=\"{\n     *     url: 'https://my-report-server-framework/',\n     *     username: 'myUser',\n     *     password: 'myPassword'\n     *   }\"\n     *   [reportSource]=\"{\n     *     report: 'Samples/Dashboard'\n     *   }\">\n     * </reporting-angular-viewer>\n     * ```\n     * \n     * @example\n     * ```typescript\n     * // Report Server for .NET Framework 4.6.2 - Username/password authentication using ReportServerSettings\n     * import { ReportServerSettings } from '@progress/telerik-common-report-viewer';\n     * \n     * reportServer: ReportServerSettings = new ReportServerSettings(\n     *   'https://my-report-server-framework/',\n     *   'myUser',\n     *   'myPassword'\n     * );\n     * ```\n     * \n     * @example\n     * ```html\n     * <!-- Report Server for .NET Framework 4.6.2 - Guest account (requires Guest enabled on server) -->\n     * <reporting-angular-viewer\n     *   [reportServer]=\"{\n     *     url: 'https://my-report-server-framework/'\n     *   }\"\n     *   [reportSource]=\"{\n     *     report: 'Samples/Dashboard'\n     *   }\">\n     * </reporting-angular-viewer>\n     * ```\n     * \n     * @example\n     * ```typescript\n     * // Complete example with Report Server for .NET using Token authentication\n     * import { Component } from '@angular/core';\n     * import { ReportServerTokenSettings, ReportSource } from '@progress/telerik-common-report-viewer';\n     * \n     * @Component({\n     *   selector: 'app-root',\n     *   templateUrl: './app.component.html'\n     * })\n     * export class AppComponent {\n     *   reportServer: ReportServerTokenSettings = {\n     *     url: 'https://my-report-server-net/',\n     *     getPersonalAccessToken: this.getPersonalAccessToken\n     *   };\n     * \n     *   reportSource: ReportSource = {\n     *     report: 'Samples/Dashboard',\n     *     parameters: {\n     *       ReportYear: 2004\n     *     }\n     *   };\n     * \n     *   getPersonalAccessToken() {\n     *     return Promise.resolve('<personal-access-token>');\n     *   }\n     * }\n     * ```\n     */\n    @Input() public reportServer?: ReportServerSettings | ReportServerTokenSettings | null;\n\n    /**\n     * Determines whether to persist the viewer session across browser sessions.\n     * @default false\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *   [persistSession]=\"persistSession\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * persistSession: boolean = true;\n     * ```\n     */\n    @Input() public persistSession: boolean = false;\n\n    /**\n     * Event emitted when the state of the viewer changes.\n     * This event is triggered during various viewer operations and state transitions.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (updateUI)=\"updateUI()\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * updateUI() {\n     *  console.log(\"This event handler will be called when the state of the viewer changes.\");\n     * };\n     * ```\n     */\n    @Output() public updateUI: EventEmitter<any> = new EventEmitter<any>();\n\n    /**\n     * Event emitted when an error occurs in the viewer.\n     * Provides error message details for debugging and user notification.\n     * The event handler receives a 'string' argument containing the error message.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (error)=\"error($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * error(message: string) {\n     *  console.log(\"The error message.\", message);\n     *  console.log(\"This event will be emitted when viewer encounters an error.\");\n     * };\n     * ```\n     */\n    @Output() public error: EventEmitter<string> = new EventEmitter<string>();\n\n    /**\n     * Event emitted when printing starts.\n     * Triggered at the beginning of a print operation.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (printStarted)=\"printStarted($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * printStarted(printStartedEventArgs: PrintStartedEventArgs) {\n     *  console.log(\"This event will be emitted when the printing starts.\", printStartedEventArgs);\n     * };\n     * ```\n     */\n    @Output() public printStarted: EventEmitter<PrintStartedEventArgs> = new EventEmitter<PrintStartedEventArgs>();\n\n    /**\n     * Event emitted when an export operation is triggered.\n     * Fired at the start of any report export process.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (exportStarted)=\"exportStarted($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * exportStarted(exportStartedEventArgs: ExportStartedEventArgs) {\n     *  console.log(\"This event will be emitted when an export operation is triggered.\", exportStartedEventArgs);\n     * };\n     * ```\n     */\n    @Output() public exportStarted: EventEmitter<ExportStartedEventArgs> = new EventEmitter<ExportStartedEventArgs>();\n\n    /**\n     * Event emitted after the rendering of a report begins.\n     * Indicates that the report rendering process has started.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (beginLoadReport)=\"beginLoadReport()\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * beginLoadReport() {\n     *  console.log(\"This event will be emitted after the rendering of a report begins.\");\n     * };\n     * ```\n     */\n    @Output() public beginLoadReport: EventEmitter<any> = new EventEmitter<any>();\n\n    /**\n     * Event emitted before the rendering of a report begins.\n     * Provides an opportunity to perform actions before report loading starts.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (beforeLoadReport)=\"beforeLoadReport()\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * beforeLoadReport() {\n     *  console.log(\"This event will be emitted before the rendering of a report begins.\");\n     * };\n     * ```\n     */\n    @Output() public beforeLoadReport: EventEmitter<any> = new EventEmitter<any>();\n\n    /**\n     * Event emitted when report rendering is stopped.\n     * Triggered when the user stops an ongoing rendering operation.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (renderingStopped)=\"renderingStopped()\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * renderingStopped() {\n     *  console.log(\"This event will be emitted when report rendering is cancelled.\");\n     * };\n     * ```\n     */\n    @Output() public renderingStopped: EventEmitter<any> = new EventEmitter<any>();\n\n    /**\n     * Event emitted when the loaded report changes.\n     * Triggered during navigation between different reports.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (loadedReportChange)=\"loadedReportChange()\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * loadedReportChange() {\n     *  console.log(\"This event will be emitted when the loaded report is changed.\");\n     * };\n     * ```\n     */\n    @Output() public loadedReportChange: EventEmitter<any> = new EventEmitter<any>();\n\n    /**\n     * Event emitted after the viewer finishes printing the report.\n     * Indicates that the print document is ready and the print operation is complete.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (printDocumentReady)=\"printDocumentReady($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * printDocumentReady(printDocumentReadyEventArgs: PrintDocumentReadyEventArgs) {\n     *  console.log(\"This event will be emitted after the viewer finishes printing the report.\", printDocumentReadyEventArgs);\n     * };\n     * ```\n     */\n    @Output() public printDocumentReady: EventEmitter<PrintDocumentReadyEventArgs> = new EventEmitter<PrintDocumentReadyEventArgs>();\n\n    /**\n     * Event emitted when a report page is ready.\n     * Provides information about the rendered page, including page number and content details.\n     * The event handler receives an object of type 'PageInfo' containing details about the rendered page.\n     * The 'PageInfo' type should be imported from '@progress/telerik-common-report-viewer'.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (pageReady)=\"pageReady($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * pageReady(pageInfo: PageInfo) {\n     *  console.log(\"The current page information such as the page number, the page content, etc.\", pageInfo);\n     *  console.log(\"This event will be emitted when the viewer content has been loaded from the template and is ready to display reports or perform any other operations on it.\");\n     * };\n     * ```\n     */\n    @Output() public pageReady: EventEmitter<PageInfo> = new EventEmitter<PageInfo>();\n\n    /**\n     * Event emitted after the viewer finishes exporting the report.\n     * Triggered when an export operation completes successfully.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (exportDocumentReady)=\"exportDocumentReady($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * exportDocumentReady(exportDocumentReadyEventArgs: ExportDocumentReadyEventArgs) {\n     *  console.log(\"This event will be emitted after the viewer finishes exporting the report.\", exportDocumentReadyEventArgs);\n     * };\n     * ```\n     */\n    @Output() public exportDocumentReady: EventEmitter<ExportDocumentReadyEventArgs> = new EventEmitter<ExportDocumentReadyEventArgs>();\n\n    /**\n     * Event emitted when the cursor hovers over an interactive action.\n     * Provides an object containing information about the interactive action.\n     * The event handler receives a PageActionEventArgs object containing information about the interactive action.\n     * The PageActionEventArgs type should be imported from '@progress/telerik-common-report-viewer'.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (interactiveActionEnter)=\"interactiveActionEnter($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * interactiveActionEnter(interactiveActionArgs: PageActionEventArgs) {\n     *  console.log(\"The interactive action arguments.\", interactiveActionArgs);\n     *  console.log(\"This event will be emitted when the cursor hovers over an interactive action.\");\n     * };\n     * ```\n     */\n    @Output() public interactiveActionEnter: EventEmitter<PageActionEventArgs> = new EventEmitter<PageActionEventArgs>();\n\n    /**\n     * Event emitted when an interactive action is being executed.\n     * Triggered for actions like drill-down, bookmarks, and hyperlinks.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (interactiveActionExecuting)=\"interactiveActionExecuting($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * interactiveActionExecuting(pageActionEventArgs: PageActionEventArgs) {\n     *  console.log(\"This event will be emitted before an interactive action is executed.\");\n     * };\n     * ```\n     */\n    @Output() public interactiveActionExecuting: EventEmitter<PageActionEventArgs> = new EventEmitter<PageActionEventArgs>();\n\n    /**\n     * Event emitted when the cursor leaves the interactive action area.\n     * Provides an object containing information about the interactive action.\n     * The event handler receives a PageActionEventArgs object containing information about the interactive action.\n     * The PageActionEventArgs type should be imported from '@progress/telerik-common-report-viewer'.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (interactiveActionLeave)=\"interactiveActionLeave($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * interactiveActionLeave(interactiveActionArgs: PageActionEventArgs) {\n     *  console.log(\"The interactive action arguments.\", interactiveActionArgs);\n     *  console.log(\"This event will be emitted when the cursor leaves the interactive action area.\");\n     * };\n     * ```\n     */\n    @Output() public interactiveActionLeave: EventEmitter<PageActionEventArgs> = new EventEmitter<PageActionEventArgs>();\n\n    /**\n     * Event emitted when a tooltip is opened.\n     * Provides an object containing information about the tooltip.\n     * The event handler receives a TooltipEventArgs object containing information about the tooltip.\n     * The TooltipEventArgs type should be imported from '@progress/telerik-common-report-viewer'.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (toolTipOpening)=\"toolTipOpening($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * toolTipOpening(tooltipEventArgs: TooltipEventArgs) {\n     *  console.log(\"The tooltip arguments.\", tooltipEventArgs);\n     *  console.log(\"This event will be emitted when a tooltip is opened.\");\n     * };\n     * ```\n     */\n    @Output() public toolTipOpening: EventEmitter<TooltipEventArgs> = new EventEmitter<TooltipEventArgs>();\n\n    /**\n     * Event emitted when a tooltip is closed.\n     * Provides an object containing information about the tooltip.\n     * The event handler receives a TooltipEventArgs object containing information about the tooltip.\n     * The TooltipEventArgs type should be imported from '@progress/telerik-common-report-viewer'.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (toolTipClosing)=\"toolTipClosing($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * toolTipClosing(tooltipEventArgs: TooltipEventArgs) {\n     *  console.log(\"The tooltip arguments.\", tooltipEventArgs);\n     *  console.log(\"This event will be emitted when a tooltip is closed.\");\n     * };\n     * ```\n     */\n    @Output() public toolTipClosing: EventEmitter<TooltipEventArgs> = new EventEmitter<TooltipEventArgs>();\n\n    /**\n     * Event emitted when there's a version mismatch between the viewer and REST service.\n     * Provides an error message indicating the version incompatibility.\n     * The event handler receives a 'string' argument containing the version of the Reporting REST service backend.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (reportVersionMismatch)=\"reportVersionMismatch($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * reportVersionMismatch(restVersion: string) {\n     *  console.log(\"REST Service version.\", restVersion);\n     *  console.log(\"This event will be emitted when there is mismatch between the version of the viewer and the reporting service.\");\n     * };\n     * ```\n     */\n    @Output() public reportVersionMismatch: EventEmitter<string> = new EventEmitter<string>();\n\n    /**\n     * Event emitted after each successful Get Document Info request until report rendering is complete.\n     * Provides progress information during the report loading process.\n     * The event handler receives an object of type 'DocumentInfo' containing the document information object.\n     * The DocumentInfo type should be imported from '@progress/telerik-common-report-viewer'.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (reportLoadProgress)=\"reportLoadProgress($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * reportLoadProgress(documentInfo: DocumentInfo) {\n     *  console.log(\"The documentInfo parameter will contain the current information for the report rendering progress.\", documentInfo);\n     *  console.log(\"This event will be emitted after each successful Get Document Info request until the report rendering is complete.\");\n     * };\n     * ```\n     */\n    @Output() public reportLoadProgress: EventEmitter<DocumentInfo> = new EventEmitter<DocumentInfo>();\n\n    /**\n     * Event emitted after the rendering of a report ends.\n     * Provides complete document information including page count, document map availability, etc.\n     * The event handler receives an object of type 'DocumentInfo' containing the document information object.\n     * The DocumentInfo type should be imported from '@progress/telerik-common-report-viewer'.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (reportLoadComplete)=\"reportLoadComplete($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * reportLoadComplete(documentInfo: DocumentInfo) {\n     *  console.log(\"The document information such as the page count, whether it has a document map, etc. will be sent via the documentInfo object.\", documentInfo);\n     *  console.log(\"This event will be emitted after the rendering of a report ends.\");\n     * };\n     * ```\n     */\n    @Output() public reportLoadComplete: EventEmitter<DocumentInfo> = new EventEmitter<DocumentInfo>();\n\n    /**\n     * Event emitted when report auto-run is disabled.\n     * Triggered when the report requires user input for parameters before rendering.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (reportAutoRunOff)=\"reportAutoRunOff()\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * reportAutoRunOff() {\n     *  console.log(\"This event can be emitted once the report parameters are loaded.\");\n     *  console.log(\"This event is emitted if and only if the report's AutoRun setting is set to false.\");\n     * };\n     * ```\n     */\n    @Output() public reportAutoRunOff: EventEmitter<any> = new EventEmitter<any>();\n\n    /**\n     * Event emitted when the current page changes.\n     * Provides information about the new current page and report document ID.\n     * The event handler receives an object of type 'CurrentPageOptions' containing the new current page number and report document ID.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (currentPageChanged)=\"currentPageChanged($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * currentPageChanged(currentPageChangedEventArgs: CurrentPageChangedEventArgs) {\n     *  console.log(\"The page number and document id.\", currentPageChangedEventArgs);\n     *  console.log(\"This event will be emitted when the viewer changes its currently displayed page.\");\n     * };\n     * ```\n     */\n    @Output() public currentPageChanged: EventEmitter<CurrentPageChangedEventArgs> = new EventEmitter<CurrentPageChangedEventArgs>();\n\n    /**\n     * Event emitted when navigating to a different report.\n     * Triggered by interactive actions that load a new report, such as drill-through actions.\n     * The event handler receives an object of type 'ReportSourceOptions' containing the new report source options.\n     * The ReportSourceOptions type should be imported from '@progress/telerik-common-report-viewer'.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (navigateToReport)=\"navigateToReport($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * navigateToReport(reportSourceOptions: ReportSourceOptions) {\n     *  console.log(\"The report source object of the newly loaded report.\", reportSourceOptions);\n     *  console.log(\"This event will be emitted when the viewer navigates to a new report through the Drillthrough/Navigate To Report action.\");\n     * };\n     * ```\n     */\n    @Output() public navigateToReport: EventEmitter<ReportSourceOptions> = new EventEmitter<ReportSourceOptions>();\n\n    /**\n     * Event emitted when report parameters are loaded.\n     * Provides an array of parameter information including their values and metadata.\n     * The event handler receives an array of type 'ParameterInfo[]' containing parameter information objects.\n     * The ParameterInfo type should be imported from '@progress/telerik-common-report-viewer'.\n     * @event\n     * @example\n     * ```html\n     * <reporting-angular-viewer\n     *  (parametersLoaded)=\"parametersLoaded($event)\">\n     * </reporting-angular-viewer>\n     * ```\n     * @example\n     * ```typescript\n     * parametersLoaded(parameterInfos: ParameterInfo[]) {\n     *  console.log(\"An array of the parameter values is sent via the parameterInfos object.\", parameterInfos);\n     *  console.log(\"This event will be emitted after the Get Report Parameters request is made.\");\n     * };\n     * ```\n     */\n    @Output() public parametersLoaded: EventEmitter<ParameterInfo[]> = new EventEmitter<ParameterInfo[]>();\n\n    public redoIcon: SVGIcon = redoIcon;\n    public undoIcon: SVGIcon = undoIcon;\n    public printIcon: SVGIcon = printIcon;\n    public rewindIcon: SVGIcon = rewindIcon;\n    public zoomInIcon: SVGIcon = zoomInIcon;\n    public searchIcon: SVGIcon = searchIcon;\n    public sparklesIcon: SVGIcon = sparklesIcon;\n    public xCircleIcon: SVGIcon = xCircleIcon;\n    public forwardIcon: SVGIcon = forwardIcon;\n    public zoomOutIcon: SVGIcon = zoomOutIcon;\n    public fileTxtIcon: SVGIcon = fileTxtIcon;\n    public downloadIcon: SVGIcon = downloadIcon;\n    public alignLeftIcon: SVGIcon = alignLeftIcon;\n    public positionLeftIcon: SVGIcon = positionLeftIcon;\n    public positionRightIcon: SVGIcon = positionRightIcon;\n    public arrowRotateCwIcon: SVGIcon = arrowRotateCwIcon;\n    public caretAltToLeftIcon: SVGIcon = caretAltToLeftIcon;\n    public caretAltToRightIcon: SVGIcon = caretAltToRightIcon;\n    public questionCircleIcon: SVGIcon = questionCircleIcon;\n    public warningTriangleIcon: SVGIcon = warningTriangleIcon;\n\n    public subs: Subscription = new Subscription();\n    public resizeObservable: Observable<Event>;\n\n    public tooltipSelector: string = '';\n    public searchTerms: string[] = [];\n\n    public shouldShowKendoLicenseBanner: boolean = false;\n    public kendoLicenseInfo: LicenseInfo;\n    public kendoBannerIcon: string;\n    public licenseInfo: LicenseInfo;\n    public bannerIcon: string;\n    public shouldShowLicenseBanner: boolean = false;\n    public shouldShowLicenseOverlay: boolean = false;\n\n    public aiAvailable = false;\n    public aiPromptOutputs: Array<PromptOutput> = [];\n    public aiPredefinedPrompts: Array<string>;\n\n    constructor(\n        private ngZone: NgZone,\n        private renderer: Renderer2,\n        private cdr: ChangeDetectorRef,\n        public hostEl: ElementRef,\n        public service: ReportingAngularViewerService) {\n        reportingIndex++;\n        this.tooltipSelector = `[data-id=\\\"report-viewer-${reportingIndex}\\\"] [data-tooltip-title],[data-id=\\\"report-viewer-${reportingIndex}\\\"] [data-tooltip-text]`;\n    }\n\n    public async ngOnInit() {\n        this.service.serviceClient = new ServiceClient(this.service.options);\n        this.service.controller = new ReportController(this.service.serviceClient, this.service.getControllerOptions());\n\n        try {\n            const configurationInfo: ConfigurationInfo = await this.service.controller.getServiceConfiguration();\n            this.service.controller.setConfigurationInfo(configurationInfo);\n\n            this.handleLicenseBannerAndOverlay(configurationInfo);\n            \n            this.aiAvailable = this.service.controller.isAiInsightsEnabled();\n        } catch(error) {\n            console.error(\"Failed to retrieve the viewer configuration from the REST service.\", error);\n            throw error;\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        if (!isDocumentAvailable()) {\n            return;\n        }\n\n        const elem = this.hostEl.nativeElement;\n        const service = this.service;\n\n        service.reportWidth = elem.getBoundingClientRect().width;\n\n        this.resizeObservable = fromEvent(window, 'resize');\n        this.subs.add(this.resizeObservable.subscribe(_ => {\n            service.reportWidth = elem.getBoundingClientRect().width;\n        }));\n\n        this.renderer.setStyle(elem, 'width', this.width);\n        this.renderer.setStyle(elem, 'height', this.height);\n        this.renderer.setAttribute(elem, 'data-id', `report-viewer-${reportingIndex}`);\n\n        service.searchManager = new SearchManager(elem, service.controller);\n        service.contentArea = new ContentArea(elem, service.controller, service.options.messages);\n\n        this.ngZone.runOutsideAngular(() => this.initReportingSubs());\n\n        if (service.options.authenticationToken) {\n            service.controller.setAuthenticationToken(service.options.authenticationToken);\n        }\n\n        service.controller.init();\n\n        this.restoreSession();\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        const options: any = this.service.options;\n\n        for (const property in changes) {\n            options[property] = changes[property].currentValue;\n        }\n\n        changes['printMode'] && (options.printMode = this.getPrintModeAsNumber());\n        changes['pageMode'] && (options.pageMode = this.getPageModeAsNumber());\n        changes['viewMode'] && (options.viewMode = this.getViewModeAsNumber());\n        changes['scaleMode'] && (options.scaleMode = this.getScaleModeAsNumber());\n        changes['serviceType'] && (options.serviceType = this.getServiceTypeAsNumber());\n    }\n\n    public ngOnDestroy(): void {\n        this.subs.unsubscribe();\n\n        if (this.service.controller) {\n            this.service.controller.destroy();\n        }\n\n        if (this.service.contentArea) {\n            this.service.contentArea.destroy();\n        }\n    }\n\n    public hideLicenseBanner(): void {\n        this.service.controller.saveToSessionStorage('hideBanner', 'true');\n        this.shouldShowLicenseBanner = this.service.controller.shouldShowLicenseBanner();\n    }\n\n    public hideKendoLicenseBanner(): void {\n        this.service.controller.saveToSessionStorage('hideBanner', 'true');\n        this.shouldShowKendoLicenseBanner = false;\n    }\n\n    public async handleLicenseBannerAndOverlay(configurationInfo: ConfigurationInfo): Promise<void> {\n        const hideBanner = this.service.controller.loadFromSessionStorage('hideBanner') === 'true';\n        if (!hideBanner && kendoAngularLicenseInfo && kendoAngularLicenseInfo.message) {\n            this.kendoLicenseInfo = { \n                type: 0,\n                isValid: false,\n                message: kendoAngularLicenseInfo.message.notificationMessage,\n                title: kendoAngularLicenseInfo.message.notificationTitle,\n                callToActionLink: kendoAngularLicenseInfo.message.callToAction?.link,\n                callToActionMessage: kendoAngularLicenseInfo.message.callToAction?.message\n            };\n            this.kendoBannerIcon = kendoAngularLicenseInfo.message.notificationIcon?.content as string;\n            this.shouldShowKendoLicenseBanner = true;\n        }\n\n        this.licenseInfo = configurationInfo.license;\n        this.bannerIcon = this.service.controller.getBannerIconFromId(this.licenseInfo.messageIcon);\n        this.shouldShowLicenseBanner = this.service.controller.shouldShowLicenseBanner();\n        this.shouldShowLicenseOverlay = this.service.controller.shouldShowLicenseOverlay();\n    }\n\n    /**\n     * Gets the current report's document map nodes if any.\n     * @returns an array of DocumentMapNode objects if any.\n     * @example\n     * ```typescript\n     * console.log(\"Document map nodes:\", JSON.stringify(this.viewer.getDocumentMapNodes));\n     * ```\n     */\n    public get getDocumentMapNodes(): any {\n        return this.service.documentInfo.documentMapNodes;\n    }\n\n    /**\n     * Gets the current report's rendering extensions.\n     * @returns an array of RenderingExtension objects if any.\n     * @example\n     * ```typescript\n     * console.log(\"Rendering extensions:\", JSON.stringify(this.viewer.getRenderingExtensions));\n     * ```\n     */\n    public get getRenderingExtensions(): any[] {\n        return this.service.documentInfo.renderingExtensions;\n    }\n\n    public onApplyButtonClick(): void {\n        const parameters = this.service.parameters;\n\n        let invalidParameters: ParameterInfo[] = [];\n        let hasError = false;\n        for (let key in parameters) {\n            if (ParametersSectionComponent.isInvalidInput(parameters[key])) {\n                hasError = true;\n                invalidParameters.push(parameters[key]);\n            }\n        }\n\n        if (hasError) {\n            this.service.controller.missingOrInvalidParameters(invalidParameters);\n        } else {\n            this.service.options.reportSource.parameters = JSON.parse(JSON.stringify(this.service.options.reportSource.parameters));\n            this.service.controller.setParameters(this.service.options.reportSource.parameters);\n            this.service.controller.previewReport();\n        }\n    }\n\n    public onParameterChanged(event: any) {\n        const allParametersValid = !this.service.controller.hasInvalidParameter(this.service.parameters);\n        this.service.controller.handleParametersNotification(allParametersValid);\n    }\n\n    public children = (dataItem: any): Observable<any[]> => of(dataItem.items);\n    public hasChildren = (dataItem: any): boolean => !!dataItem.items;\n\n    public navigateToPage(ev: any) {\n        const node = ev.dataItem;\n        const nodePage = node.page;\n        const target = { id: node.id, type: 'bookmark' };\n\n        this.service.controller.navigateToPage(nodePage, target);\n    }\n\n    public getToolbarButtonTitle(buttonName: string): string {\n        return this.service.options.messages[`ReportViewer_Toolbar${buttonName}Title`];\n    }\n\n    public get splitterWrapperClasses(): string {\n        const documentMapClass = this.isDocumentMapAvailable ? '' : \"trv-document-map-pane-hidden\";\n        const parametersAreaClass = (this.isParametersSectionAvailable || !this.autoRunEnabled) ? '' : \"trv-parameters-pane-hidden\";\n\n        return `trv-content ${documentMapClass} ${parametersAreaClass}`;\n    }\n\n    /**\n     * Gets whether the current report has parameters that have AutoRefresh disabled.\n     * @returns true if at least one parameter has AutoRefresh disabled, false otherwise.\n     * @example\n     * ```typescript\n     * if (this.viewer.hasLazyParameters) {\n     *  console.log(\"This report has lazy parameters.\");\n     * }\n     * ```\n     */\n    public get hasLazyParameters(): boolean {\n        return this.service.parameters.some(param => param.isVisible && !param.autoRefresh);\n    }\n\n    /**\n     * Gets whether the report's AutoRun setting is enabled.\n     * @returns true if the AutoRun setting is enabled, false otherwise.\n     * @example\n     * ```typescript\n     * if (this.viewer.autoRunEnabled) {\n     *  console.log(\"This report's AutoRun setting is enabled.\");\n     * }\n     * ```\n     */\n    public get autoRunEnabled(): boolean {\n        return this.service.controller.autoRunEnabled;\n    }\n\n    /**\n     * Gets whether the parameter area is displayed.\n     * @returns true if the parameter area is displayed, false otherwise.\n     * @example\n     * ```typescript\n     * if (this.viewer.displayParameterArea) {\n     *  console.log(\"This report's parameter area is displayed.\");\n     * }\n     * ```\n     */\n    public get displayParameterArea(): boolean {\n        return !this.isRenderingInProgress && this.isParametersSectionAvailable;\n    }\n\n    /**\n     * Gets whether the document map is displayed.\n     * @returns true if the document map is displayed, false otherwise.\n     * @example\n     * ```typescript\n     * if (this.viewer.displayDocumentMap) {\n     *  console.log(\"This report's document map is displayed.\");\n     * }\n     * ```\n     */\n    public get displayDocumentMap(): boolean {\n        return !this.isRenderingInProgress && this.isDocumentMapAvailable;\n    }\n\n    /**\n     * Gets whether the current report is still being rendered.\n     * @returns true if the report rendering process is ongoing, false otherwise.\n     * @example\n     * ```typescript\n     * if (this.viewer.isRenderingInProgress) {\n     *  console.log(\"This report is still being rendered.\");\n     * }\n     * ```\n     */\n    public get isRenderingInProgress(): boolean {\n        return this.service.renderingInProgress;\n    }\n\n    /**\n     * Gets whether the current report has visible parameters.\n     * @returns true if the report has visible parameters, false otherwise.\n     * @example\n     * ```typescript\n     * if (this.viewer.isParametersSectionAvailable) {\n     *  console.log(\"This report has visible parameters.\");\n     * }\n     * ```\n     */\n    public get isParametersSectionAvailable(): boolean {\n        return this.service.isParametersSectionAvailable;\n    }\n\n    /**\n     * Gets whether the document map is available for the current report.\n     * @returns True if the report has a document map, false otherwise.\n     * @example\n     * ```typescript\n     * if (this.viewer.isDocumentMapAvailable) {\n     *  console.log(\"This report has a document map.\");\n     * }\n     * ```\n     */\n    public get isDocumentMapAvailable(): boolean {\n        return this.service.documentInfo.documentMapAvailable;\n    }\n\n    /**\n     * Gets whether the search window is currently open.\n     * @returns True if the search dialog is visible, false otherwise.\n     * @example\n     * ```typescript\n     * if (this.viewer.isSearchWindowOpen) {\n     *  console.log(\"The search window is currently open.\");\n     * }\n     * ```\n     */\n    public get isSearchWindowOpen(): boolean {\n        return this.service.isSearchWindowOpen;\n    }\n\n    /**\n     * Gets whether the AI prompt window is currently open.\n     * @returns true if the AI assistant dialog is visible, false otherwise.\n     * @example\n     * ```typescript\n     * if (this.viewer.isAiPromptWindowOpen) {\n     *  console.log(\"The AI prompt window is currently open.\");\n     * }\n     * ```\n     */\n    public get isAiPromptWindowOpen(): boolean {\n        return this.service.isAiPromptWindowOpen;\n    }\n\n    /**\n     * Gets the total number of pages in the current report.\n     * @returns The total page count of the rendered report.\n     * @example\n     * ```typescript\n     * console.log(\"The total number of pages in the current report are.\", this.viewer.totalPages);\n     * ```\n     */\n    public get totalPages(): number {\n        return this.service.totalPages;\n    }\n\n    /**\n     * Executes a command on the report viewer.\n     * This method allows you to programmatically trigger various viewer operations\n     * such as navigation, export, zoom, and more. Commands are executed with optional\n     * values that provide additional parameters for the operation.\n     * Available commands:\n     * - 'navigateBackward': Goes back to the previously rendered report from history.\n     * - 'navigateForward': Goes forward to the previously rendered report from history.\n     * - 'refreshReport': Refreshes the report.\n     * - 'navigateToFirstPage': Goes to the first page of the report.\n     * - 'navigateToPrevPage': Goes to the previous page of the report.\n     * - 'navigateToNextPage': Goes to the next page of the report.\n     * - 'navigateToLastPage': Goes to the last page of the report.\n     * - 'setViewMode': Toggles between Print Preview and Interactive view modes.\n     * - 'setScaleMode': Changes the viewer's scale mode. Accepts an object with 'scale' and 'scaleMode' properties which correspond to the viewer's 'scale' and 'scaleMode' settings.\n     * - 'setReportSource': Changes the report source and refreshes the viewer. Accepts a ReportSourceOptions object.\n     * - 'setAuthenticationToken': Sets a bearer token for authentication. Accepts a string value for the authentication token.\n     * - 'exportReport': Exports the report using the specified rendering extension. Accepts a string value for the rendering extension.\n     * - 'printReport': Triggers the report printing.\n     * - 'toggleDocumentMap': Shows or hides the document map.\n     * - 'toggleParametersSection': Shows or hides the parameters area.\n     * - 'toggleSearchWindow': Shows or hides the search dialog.\n     * - 'zoomIn': Zoom-in the report.\n     * - 'zoomOut': Zoom-out the report.\n     * - 'stopRendering': Stops the current rendering operation.\n     * @param commandName - The name of the command to execute\n     * @param commandValue - Optional value/parameters for the command\n     * @example\n     * ```typescript\n     * this.viewer.executeCommand('exportReport', 'pdf'); // Export the report as PDF\n     * ```\n     */\n    public executeCommand(commandName: string, commandValue?: any): void {\n        this.executeCommandInternal(commandName, commandValue);\n    }\n\n    /**\n     * Gets whether the viewer is in print preview mode.\n     * @returns true if the viewer is in print preview mode, false otherwise.\n     * @example\n     * ```typescript\n     * if (this.viewer.isInPrintViewMode) {\n     *  console.log(\"The viewer is currently in print preview mode.\");\n     * }\n     * ```\n     */\n    public get isInPrintViewMode(): boolean {\n        return this.service.options.viewMode === 1;\n    }\n\n    private executeCommandInternal(commandName: string, commandValue: any): void {\n        const service = this.service;\n\n        switch (commandName) {\n            case 'setScaleMode':\n                this.scale = commandValue.scale;\n                this.scaleMode = commandValue.scaleMode;\n\n                const scaleModeAsNumber = this.getScaleModeAsNumber();\n                service.setScaleMode(scaleModeAsNumber);\n\n                if (commandValue.scaleMode.toLowerCase() === 'specific') {\n                    this.service.setScale(this.scale);\n                }\n\n                break;\n\n            case 'setReportSource':\n\n                service.controller.setReportSource(commandValue);\n                service.controller.refreshReport(true, '');\n                break;\n\n            case 'setAuthenticationToken':\n                service.controller.setAuthenticationToken(commandValue);\n                break;\n            case 'exportReport':\n                if (!commandValue) {\n                    commandValue = 'pdf';\n                }\n                service.controller.exportReport(commandValue);\n\n                break;\n            case 'printReport':\n                service.controller.printReport();\n\n                break\n            case 'navigateBackward':\n                if (!this.isRenderingInProgress || service.currentHistoryIndex > 0) {\n                    service.navigateBackwards();\n                }\n\n                break;\n            case 'navigateForward':\n                if (!this.isRenderingInProgress || service.currentHistoryIndex + 1 < service.history.length) {\n                    service.navigateForward();\n                }\n\n                break;\n            case 'stopRendering':\n                if (this.isRenderingInProgress) {\n                    service.clearReport();\n                    service.controller.stopRendering();\n                }\n\n                break;\n            case 'refreshReport':\n                closeSearchWindow();\n                closeAiWindow();\n\n                service.controller.refreshReport(true, '');\n\n                break;\n            case 'navigateToFirstPage':\n                service.controller.navigateToPage(1, undefined);\n\n                break;\n            case 'navigateToPrevPage':\n                if (service.currentPageIndex > 0) {\n                    service.controller.navigateToPage(service.getPageNumber() - 1, undefined);\n                }\n\n                break;\n            case 'navigateToNextPage':\n                if (service.currentPageIndex < this.totalPages - 1) {\n                    service.controller.navigateToPage(service.getPageNumber() + 1, undefined);\n                }\n\n                break;\n            case 'navigateToLastPage':\n                service.controller.navigateToPage(this.totalPages, undefined);\n\n                break;\n            case 'toggleDocumentMap':\n                if (!this.isRenderingInProgress || this.isDocumentMapAvailable) {\n                    this.documentMapVisible = !this.documentMapVisible;\n                }\n\n                break;\n            case 'toggleParametersSection':\n                if (!this.isRenderingInProgress || this.isParametersSectionAvailable) {\n                    this.parametersAreaVisible = !this.parametersAreaVisible;\n                }\n\n                break;\n            case 'setViewMode':\n                closeSearchWindow();\n                closeAiWindow();\n\n                if (!this.isRenderingInProgress) {\n                    service.setViewMode();\n                }\n\n                break;\n            case 'zoomIn':\n                if (!this.isRenderingInProgress) {\n                    service.zoomIn();\n                }\n\n                break;\n            case 'zoomOut':\n                if (!this.isRenderingInProgress) {\n                    service.zoomOut();\n                }\n\n                break;\n            case 'toggleSearchWindow':\n                if (!this.isRenderingInProgress) {\n                    service.isSearchWindowOpen = !service.isSearchWindowOpen;\n                }\n\n                break;\n            case 'toggleAiPromptWindow':\n                if (!this.isRenderingInProgress) {\n                    service.isAiPromptWindowOpen = !service.isAiPromptWindowOpen;\n                }\n\n                break;\n        }\n\n        function closeSearchWindow() {\n            if (service.isSearchWindowOpen) {\n                service.isSearchWindowOpen = false;\n            }\n        }\n\n        function closeAiWindow() {\n            if (service.isAiPromptWindowOpen) {\n                service.isAiPromptWindowOpen = false;\n            }\n        }\n    }\n\n    private getPrintModeAsNumber(): number {\n        return this.printMode === 'autoSelect' ? 0 : this.printMode === 'forcePDFFile' ? 1 : 2;\n    }\n\n    private getScaleModeAsNumber(): number {\n        return this.scaleMode === 'fitPage' ? 0 : this.scaleMode === 'fitPageWidth' ? 1 : 2;\n    }\n\n    private getPageModeAsNumber(): number {\n        return this.pageMode === 'continuousScroll' ? 0 : 1;\n    }\n\n    private getViewModeAsNumber(): number {\n        return this.viewMode === 'interactive' ? 0 : 1;\n    }\n\n\n    private getServiceTypeAsNumber(): number {\n        return this.serviceType === 'REST' ? 0 : 1;\n    }\n\n    private getErrorMessage(reportVersion: string, restVersion: string) {\n        return `The version of the Report Viewer ${reportVersion} does not match the version of the Reporting REST Service ${restVersion}. Please make sure both are running same version.`;\n    }\n\n    private initReportingSubs(): void {\n        const service: ReportingAngularViewerService = this.service;\n        const controller: ReportController = service.controller;\n\n        controller\n            .on('updateUI', () => this.updateUI.emit())\n            .on('printStarted', (printStartedEventArgs: PrintStartedEventArgs) => this.printStarted.emit(printStartedEventArgs))\n            .on('exportStarted', (exportStartedEventArgs: ExportStartedEventArgs) => this.exportStarted.emit(exportStartedEventArgs))\n            .onAsync('beforeLoadReport', () => this.onBeforeLoadReport())\n            .on('error', (message: string) => this.onError(message))\n            .on('renderingStopped', () => this.onRenderingStopped())\n            .on('beginLoadReport', () => this.beginLoadReport.emit())\n            .on('loadedReportChange', () => this.onLoadedReportChange())\n            .on('printDocumentReady', (printDocumentReadyEventArgs: PrintDocumentReadyEventArgs) => this.printDocumentReady.emit(printDocumentReadyEventArgs))\n            .on('exportDocumentReady', (exportDocumentReadyEventArgs: ExportDocumentReadyEventArgs) => this.exportDocumentReady.emit(exportDocumentReadyEventArgs))\n            .on('pageReady', (pageInfo: PageInfo) => this.pageReady.emit(pageInfo))\n            .on('navigateToReport', (reportSourceOptions: ReportSourceOptions) => this.onNavigateToReport(reportSourceOptions))\n            .on('currentPageChanged', (currentPageChangedEventArgs: CurrentPageChangedEventArgs) => this.onCurrentPageChanged(currentPageChangedEventArgs))\n            .on('interactiveActionEnter', (pageActionEventArgs: PageActionEventArgs) => this.interactiveActionEnter.emit(pageActionEventArgs))\n            .on('interactiveActionExecuting', (pageActionEventArgs: PageActionEventArgs) => this.interactiveActionExecuting.emit(pageActionEventArgs))\n            .on('interactiveActionLeave', (pageActionEventArgs: PageActionEventArgs) => this.interactiveActionLeave.emit(pageActionEventArgs))\n            .on('toolTipOpening', (tooltipEventArgs: TooltipEventArgs) => this.toolTipOpening.emit(tooltipEventArgs))\n            .on('toolTipClosing', (tooltipEventArgs: TooltipEventArgs) => this.toolTipClosing.emit(tooltipEventArgs))\n            .on('reportLoadProgress', (info: DocumentInfo) => this.onReportLoadProgress(info))\n            .onAsync('reportLoadComplete', (info: DocumentInfo) => this.onReportLoadComplete(info))\n            .on('reportAutoRunOff', () => this.onReportAutoRunOff())\n            .on('reportVersionMismatch', (restVersion: string) => this.onReportVersionMismatch(restVersion))\n            .on('parametersLoaded', (parameters: ParameterInfo[]) => this.onParametersLoaded(parameters))\n            .on('scaleChanged', this.onScaleChanged.bind(this))\n            .on('scaleModeChanged', this.onScaleModeChanged.bind(this))\n            .on('viewModeChanged', this.onViewModeChanged.bind(this))\n            .on('missingOrInvalidParameters', () => this.onMissingOrInvalidParameters());\n    }\n\n    private onBeforeLoadReport(): void {\n        this.beforeLoadReport.emit();\n\n        this.service.renderingInProgress = true;\n    }\n\n    private onReportVersionMismatch(restVersion: string): void {\n        this.service.controller.getServiceVersion().then((reportVersion: string) => {\n            const errorMessage = this.getErrorMessage(reportVersion, restVersion);\n\n            this.reportVersionMismatch.emit(errorMessage);\n            throw new Error(errorMessage);\n        });\n    }\n\n    private onReportLoadProgress(info: DocumentInfo): void {\n        this.reportLoadProgress.emit(info);\n        this.service.documentInfo = info;\n        this.service.totalPages = info.pageCount;\n    }\n\n    private onLoadedReportChange(): void {\n        this.loadedReportChange.emit();\n        this.service.addHistoryItem(true /* temp */);\n    }\n\n    private onReportLoadComplete(info: DocumentInfo): void {\n        this.reportLoadComplete.emit(info);\n\n        this.service.renderingInProgress = false;\n        this.service.documentInfo = info;\n        this.service.totalPages = this.service.controller.getPageCount();\n        this.service.isParametersSectionAvailable = this.service.parameters.some(p => p.isVisible);\n\n        const historyItem = this.service.addHistoryItem();\n        this.saveSession(this.service, historyItem);\n    }\n\n    private onReportAutoRunOff(): void {\n        this.reportAutoRunOff.emit();\n    }\n\n    private saveSession(service: ReportingAngularViewerService, historyItem: { reportSource: { report: string | undefined; parameters: any; }; documentId: string; page: number; }) {\n        if (this.persistSession) {\n            const storage = window.sessionStorage;\n            storage.setItem(this.historySessionKey, JSON.stringify(service.history));\n            storage.setItem(this.currentHistoryIndexSessionKey, service.currentHistoryIndex.toString());\n            storage.setItem(this.currentHistoryItemSessionKey, JSON.stringify(historyItem));\n        }\n    }\n\n    private restoreSession() {\n        if (this.persistSession) {\n            const storage = window.sessionStorage;\n\n            const historyJson = storage.getItem(this.historySessionKey);\n            if (historyJson) {\n                let history = JSON.parse(historyJson);\n                this.service.history = history;\n            }\n\n            let currentHistoryIndex = storage.getItem(this.currentHistoryIndexSessionKey);\n            if (currentHistoryIndex) {\n                this.service.currentHistoryIndex = Number(currentHistoryIndex);\n            }\n\n            const historyItemJson = storage.getItem(this.currentHistoryItemSessionKey);\n            if (historyItemJson) {\n                let historyItem = JSON.parse(historyItemJson);\n                this.service.applyHistory(historyItem.reportSource, historyItem.page, historyItem.documentId, historyItem.scale, historyItem.scaleMode, historyItem.viewMode);\n            }\n\n            this.cdr.detectChanges();\n        }\n    }\n\n    private onRenderingStopped(): void {\n        this.service.clearReport();\n        this.renderingStopped.emit();\n    }\n\n    private onError(message: string): void {\n        this.service.clearReport();\n        this.error.emit(message);\n    }\n\n    private onParametersLoaded(parameters: ParameterInfo[]): void {\n        this.parametersLoaded.emit(parameters);\n\n        const paramsObj: any = {};\n\n        parameters.forEach((p) => paramsObj[p.id] = p.value);\n\n        this.service.options.reportSource.parameters = paramsObj;\n        this.service.parameters = parameters;\n    }\n\n    private onCurrentPageChanged(currentPageChangedEventArgs: CurrentPageChangedEventArgs): void {\n        this.service.currentPageIndex = currentPageChangedEventArgs.page - 1;\n\n        this.currentPageChanged.emit(currentPageChangedEventArgs);\n        this.updateCurrentHistoryItemPageNumber(currentPageChangedEventArgs.page);\n    }\n\n    private updateCurrentHistoryItemPageNumber(page: number) {\n        let historyItem = this.service.history[this.service.currentHistoryIndex];\n        if (historyItem && historyItem.page !== page) {\n            historyItem.page = page;\n\n            window.sessionStorage.setItem(this.currentHistoryItemSessionKey, JSON.stringify(historyItem));\n            window.sessionStorage.setItem(this.historySessionKey, JSON.stringify(this.service.history));\n        }\n    }\n\n    private onNavigateToReport(reportSourceOptions: ReportSourceOptions): void {\n        this.service.clearReport();\n        this.navigateToReport.emit(reportSourceOptions);\n\n        this.service.controller.setReportSource(reportSourceOptions);\n        this.service.controller.refreshReport(true, '');\n    }\n\n    private onScaleModeChanged() {\n        this.updateScaleModeHistory();\n    }\n\n    private onScaleChanged() {\n        this.updateScaleHistory();\n    }\n\n    private onViewModeChanged() {\n        this.updateViewModeHistory();\n    }\n\n    private updateScaleModeHistory() {\n        let historyItem = this.service.history[this.service.currentHistoryIndex];\n        const scaleMode = this.service.controller.getScaleMode();\n        if (historyItem.scaleMode !== scaleMode) {\n            historyItem.scaleMode = scaleMode;\n            this.saveSession(this.service, historyItem);\n        }\n    }\n\n    private updateScaleHistory() {\n        let historyItem = this.service.history[this.service.currentHistoryIndex];\n        const scale = this.service.controller.getScale();\n        if (historyItem.scale !== scale) {\n            historyItem.scale = scale;\n            this.saveSession(this.service, historyItem);\n        }\n    }\n\n    private updateViewModeHistory() {\n        let historyItem = this.service.history[this.service.currentHistoryIndex];\n        const viewMode = this.service.controller.getViewMode();\n        if (historyItem.viewMode !== viewMode) {\n            historyItem.viewMode = viewMode;\n            this.saveSession(this.service, historyItem);\n        }\n    }\n\n    private onMissingOrInvalidParameters() {\n        this.service.isParametersSectionAvailable = this.service.parameters.some(p => p.isVisible);\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { ReportingAngularViewerComponent } from './reporting-angular-viewer.component';\nimport { SplitterModule } from '@progress/kendo-angular-layout';\nimport { ReportingAngularViewerService } from './reporting-angular-viewer.service';\nimport { ToolBarModule } from '@progress/kendo-angular-toolbar';\nimport { LoaderModule } from '@progress/kendo-angular-indicators';\nimport { CommonModule } from '@angular/common';\nimport { PagerModule } from '@progress/kendo-angular-pager';\nimport { CheckBoxModule, NumericTextBoxModule, TextBoxModule } from '@progress/kendo-angular-inputs';\nimport { CustomPagerToolComponent } from './toolbar-tools/pager.component';\nimport { TreeViewModule } from '@progress/kendo-angular-treeview';\nimport { WindowModule, DialogModule } from '@progress/kendo-angular-dialog';\nimport { SearchComponent } from './search/search-window.component';\nimport { AiPromptComponent } from './aiprompt/aiprompt-window.component';\nimport { ComboBoxModule, MultiSelectModule, DropDownListModule } from '@progress/kendo-angular-dropdowns';\nimport { DatePickerModule } from '@progress/kendo-angular-dateinputs';\nimport { LabelModule } from '@progress/kendo-angular-label';\nimport { ListBoxModule } from \"@progress/kendo-angular-listbox\";\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\nimport { ParametersSectionComponent } from './parameters/parameters-section.component';\nimport { TooltipModule } from '@progress/kendo-angular-tooltip';\nimport { CustomZoomComponent } from './toolbar-tools/zoom.component';\nimport { IconsModule } from '@progress/kendo-angular-icons';\nimport { afterFilterChangedDirective } from './directives/after-filter-changed.directive';\nimport { NotificationModule } from '@progress/kendo-angular-notification';\nimport { AIPromptModule } from '@progress/kendo-angular-conversational-ui';\nimport { DragAndDropModule } from '@progress/kendo-angular-utils';\nimport { AfterParamValueChangedDirective } from './directives/after-param-value-changed.directive';\nimport { LicenseBannerComponent } from './components/license-banner/license-banner.component';\n\n/**\n * @ignore\n * Angular module for the Native Angular Report Viewer.\n *\n * This module provides a native Angular report viewer component that displays\n * reports from Telerik Reporting REST Service or Telerik Report Server.\n *\n * @example\n * ```typescript\n * import { ReportingAngularViewerModule } from '@progress/telerik-angular-native-report-viewer';\n *\n * @NgModule({\n *   imports: [\n *     ReportingAngularViewerModule\n *   ]\n * })\n * export class AppModule { }\n * ```\n */\n@NgModule({\n  declarations: [\n    ReportingAngularViewerComponent,\n    CustomPagerToolComponent,\n    SearchComponent,\n    AiPromptComponent,\n    ParametersSectionComponent,\n    CustomZoomComponent,\n    LicenseBannerComponent,\n    afterFilterChangedDirective,\n    AfterParamValueChangedDirective\n  ],\n  imports: [\n    CommonModule,\n    SplitterModule,\n    ToolBarModule,\n    LoaderModule,\n    DropDownListModule,\n    TreeViewModule,\n    PagerModule,\n    TooltipModule,\n    NumericTextBoxModule,\n    WindowModule,\n    DialogModule,\n    IconsModule,\n    ComboBoxModule,\n    MultiSelectModule,\n    LabelModule,\n    ListBoxModule,\n    ButtonsModule,\n    DatePickerModule,\n    TextBoxModule,\n    CheckBoxModule,\n    NotificationModule,\n    AIPromptModule,\n    DragAndDropModule,\n  ],\n  exports: [\n    ReportingAngularViewerComponent\n  ],\n  providers: [ReportingAngularViewerService]\n})\nexport class ReportingAngularViewerModule { }\n","/*\n * Public API Surface of reporting-angular-viewer\n */\n\nexport * from './lib/reporting-angular-viewer.component';\nexport * from './lib/reporting-angular-viewer.module';\nexport * from './lib/models/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ReportingAngularViewerService","i5","i6","i7.AfterParamValueChangedDirective","i2","i3","i4","i7.afterFilterChangedDirective","i8","i9.CustomPagerToolComponent","i10.SearchComponent","i11.AiPromptComponent","i12.ParametersSectionComponent","i13.CustomZoomComponent","i14.LicenseBannerComponent"],"mappings":"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"}