{"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/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        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.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 { ReportingAngularViewerService } from './reporting-angular-viewer.service';\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    ViewChild,\n    ViewContainerRef,\n    TemplateRef\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 { NotificationRef, NotificationService } from \"@progress/kendo-angular-notification\";\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';\n\nlet reportingIndex: number = 0;\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=\"showLicenseOverlay\" class=\"trv-license-overlay\"></div>\n            <div class=\"trv-report-viewer-wrapper\">\n                <span #licenseBannerAppendTo *ngIf=\"showLicenseBanner\" class=\"trv-license-banner\"></span>\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        <ng-template #licenseBanner>\n            <kendo-svgicon [icon]=\"warningTriangleIcon\" size=\"medium\"></kendo-svgicon>\n            <span class='trv-license-message'>{{ licenseBannerData?.title || licenseBannerData?.message }} {{ licenseBannerData?.actionMessage }}</span>\n            <a class='trv-license-link' target='_blank' href='{{ licenseBannerData?.actionLink }}'>\n                <kendo-svgicon [icon]=\"questionCircleIcon\" size=\"medium\"></kendo-svgicon>\n            </a>\n        </ng-template>\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 (100% - original size of the report)\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 updateUI\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 error\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 printStarted\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 exportStarted\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 beginLoadReport\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 beforeLoadReport\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 renderingStopped\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 loadedReportChange\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 printDocumentReady\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 pageReady\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 exportDocumentReady\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 interactiveActionEnter\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 interactiveActionExecuting\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 interactiveActionLeave\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 toolTipOpening\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 toolTipClosing\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 reportVersionMismatch\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 reportLoadProgress\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 reportLoadComplete\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 reportAutoRunOff\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 currentPageChanged\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 navigateToReport\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 parametersLoaded\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    @ViewChild(\"licenseBannerAppendTo\", { read: ViewContainerRef, static: false })\n    public licenseBannerAppendTo: ViewContainerRef;\n    @ViewChild(\"licenseBanner\", { read: TemplateRef })\n    public licenseBannerTemplate: TemplateRef<unknown>;\n    public licenseBannerData: LicenseInfo | null;\n    public showLicenseBanner: boolean = false;\n    public showLicenseOverlay: 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        private kendoNotificationService: NotificationService) {\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 ngOnInit() {\n        this.service.serviceClient = new ServiceClient(this.service.options);\n        this.service.controller = new ReportController(this.service.serviceClient, this.service.getControllerOptions());\n\n        this.service.controller.getServiceConfiguration().then((configurationInfo: ConfigurationInfo) => {\n            this.service.controller.setConfigurationInfo(configurationInfo);\n\n            this.licenseBannerData = configurationInfo?.license;\n            this.showLicenseBanner = this.service.controller.shouldShowLicenseBanner();\n            this.showLicenseOverlay = this.service.controller.shouldShowLicenseOverlay();\n\n            if (this.showLicenseBanner) {\n                const notification: NotificationRef = this.kendoNotificationService.show({\n                    appendTo: this.licenseBannerAppendTo,\n                    content: this.licenseBannerTemplate,\n                    cssClass: 'trv-license-banner',\n                    type: { style: \"warning\", icon: false },\n                    closable: true,\n                    hideAfter: 0,\n                });\n\n                notification.afterHide?.subscribe(() => this.service.controller.saveToSessionStorage('hideBanner', 'true'));\n            }\n\n            this.aiAvailable = this.service.controller.isAiInsightsEnabled();\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    /**\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';\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    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","i9","i10","i11.CustomPagerToolComponent","i12.SearchComponent","i13.AiPromptComponent","i14.ParametersSectionComponent","i15.CustomZoomComponent"],"mappings":"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"}