{"version":3,"file":"mosaic-design-infosec-components-components-server-errors.mjs","sources":["../../../libs/components/server-errors/src/lib/types/error-type.ts","../../../libs/components/server-errors/src/lib/types/icon.ts","../../../libs/components/server-errors/src/lib/types/view-mode.ts","../../../libs/components/server-errors/src/lib/types/view-style.ts","../../../libs/components/server-errors/src/lib/components/error-message/error-message.component.ts","../../../libs/components/server-errors/src/lib/components/error-message/error-message.component.html","../../../libs/components/server-errors/src/lib/components/client-error/client-error.component.ts","../../../libs/components/server-errors/src/lib/components/client-error/client-error.component.html","../../../libs/components/server-errors/src/lib/utils/error.ts","../../../libs/components/server-errors/src/lib/utils/error-message.ts","../../../libs/components/server-errors/src/lib/components/copy-details-button/copy-details-button.component.ts","../../../libs/components/server-errors/src/lib/components/copy-details-button/copy-details-button.component.html","../../../libs/components/server-errors/src/lib/components/legacy-server-errors/legacy-server-errors.component.ts","../../../libs/components/server-errors/src/lib/components/legacy-server-errors/legacy-server-errors.component.html","../../../libs/components/server-errors/src/lib/components/server-error-details/server-error-details.component.ts","../../../libs/components/server-errors/src/lib/components/server-error-details/server-error-details.component.html","../../../libs/components/server-errors/src/lib/modals/server-error-details-modal/server-error-details-modal.component.ts","../../../libs/components/server-errors/src/lib/modals/server-error-details-modal/server-error-details-modal.component.html","../../../libs/components/server-errors/src/lib/components/server-error/server-error.component.ts","../../../libs/components/server-errors/src/lib/components/server-error/server-error.component.html","../../../libs/components/server-errors/src/lib/tokens/config.ts","../../../libs/components/server-errors/src/lib/components/server-errors/server-errors.component.ts","../../../libs/components/server-errors/src/lib/components/server-errors/server-errors.component.html","../../../libs/components/server-errors/src/lib/constants/i18n.ts","../../../libs/components/server-errors/src/lib/server-errors.module.ts","../../../libs/components/server-errors/mosaic-design-infosec-components-components-server-errors.ts"],"sourcesContent":["export enum ErrorType {\n    Client = 'client',\n    Server = 'server'\n}\n","export enum IconType {\n    None = 'none',\n    Small = 'small',\n    Large = 'large'\n}\n","export enum ViewMode {\n    /**\n     * Обычный вариант отображения.\n     * Весь список 400-ых ошибок сконкатенирован, 500-ые ошибки показываются с расхлопыванием деталей.\n     */\n\n    Normal = 'normal',\n    /**\n     * Компактный вариант отображения.\n     * Список 400-ых ошибок отображается с прокруткой, детали 500-ых ошибок показываются в модальном окне.\n     */\n    Compact = 'compact'\n}\n","export enum ViewStyle {\n    /**\n     * Обычный вариант отображения (ошибки для всей формы).\n     * Список ошибок отображается внутри kbq-alert.\n     */\n    Normal = 'normal',\n\n    /**\n     * Контекстный вариант отображения (ошибки для конкретного поля).\n     * Список ошибок отображается красным текстом.\n     */\n    Context = 'context'\n}\n","import { Component, ChangeDetectionStrategy, Input, ViewEncapsulation, OnChanges } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nimport { Error } from '@mosaic-design/infosec-components/types';\n\nimport { ErrorItemMessageTranslateProvider } from '../../types';\n\n@Component({\n    selector: 'ic-error-message',\n    templateUrl: './error-message.component.html',\n    styleUrls: ['./error-message.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class ErrorMessageComponent implements OnChanges {\n    @Input() translateProvider: ErrorItemMessageTranslateProvider | undefined;\n    @Input() errorItem: Error | undefined;\n\n    errorMessageTranslate$: Observable<string> = of('');\n\n    ngOnChanges(): void {\n        this.errorMessageTranslate$ = this.translateErrorMessage();\n    }\n\n    private translateErrorMessage(): Observable<string> {\n        if (this.translateProvider && this.errorItem) {\n            const translate = this.translateProvider(this.errorItem);\n\n            return typeof translate === 'string' ? of(translate) : translate;\n        } else {\n            return of('');\n        }\n    }\n}\n","<span>{{ errorMessageTranslate$ | icPush }}</span>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { KbqComponentColors } from '@koobiq/components/core';\n\nimport { Error, ErrorResponse, IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nimport { ErrorItemMessageTranslateProvider, PositionFromTotalTemplateContext, ViewMode, ViewStyle } from '../../types';\n\n@Component({\n    selector: 'ic-client-error',\n    templateUrl: './client-error.component.html',\n    styleUrls: ['./client-error.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class ClientErrorComponent {\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n    protected readonly KbqComponentColors = KbqComponentColors;\n    protected readonly ViewMode = ViewMode;\n    protected readonly ViewStyle = ViewStyle;\n\n    @Input() set error(value: ErrorResponse | undefined) {\n        this.errors = value?.errors.reverse() || [];\n        this.selectError();\n    }\n\n    @Input() viewMode = ViewMode.Normal;\n    @Input() viewStyle = ViewStyle.Normal;\n\n    @Input() translateProvider!: ErrorItemMessageTranslateProvider;\n\n    errors: Error[] = [];\n    currentIndex = 0;\n    currentError: Error | undefined;\n\n    get positionFromTotalTemplateContext(): PositionFromTotalTemplateContext {\n        return {\n            index: this.currentIndex,\n            length: this.errors.length\n        };\n    }\n\n    toPrevious(): void {\n        if (this.currentIndex > 0) {\n            this.currentIndex--;\n            this.selectError();\n        }\n    }\n\n    toNext(): void {\n        if (this.currentIndex < this.errors.length - 1) {\n            this.currentIndex++;\n            this.selectError();\n        }\n    }\n\n    private selectError(): void {\n        if (this.errors.length !== 0) {\n            this.currentError = this.errors[this.currentIndex];\n        }\n    }\n}\n","<div class=\"ic-client-error\" [ngClass]=\"{ 'ic-client-error_context': viewStyle === ViewStyle.Context }\">\n    <div *ngIf=\"viewMode === ViewMode.Normal\" class=\"ic-client-error__normal\">\n        <div *ngFor=\"let error of errors\" class=\"ic-client-error__message\">\n            <ic-error-message [errorItem]=\"error\" [translateProvider]=\"translateProvider\"> </ic-error-message>\n        </div>\n    </div>\n\n    <div *ngIf=\"viewMode === ViewMode.Compact\" class=\"ic-client-error__compact\">\n        <div class=\"ic-client-error__current-message\">\n            <ic-error-message [errorItem]=\"currentError\" [translateProvider]=\"translateProvider\"></ic-error-message>\n        </div>\n\n        <ng-container *ngIf=\"errors.length !== 1\">\n            <div class=\"ic-client-error__counter\">\n                <i\n                    kbq-icon=\"kbq-chevron-left_16\"\n                    class=\"ic-client-error__previous\"\n                    [color]=\"KbqComponentColors.Contrast\"\n                    (click)=\"toPrevious()\"\n                ></i>\n\n                <span>\n                    <ic-coalesce-content\n                        *icLet=\"positionFromTotalTemplateContext; let context\"\n                        [items]=\"[\n                            {\n                                alias: IcTranslocoScopeAlias.ServerErrors,\n                                key: 'ServerErrors.Error.Label.Position',\n                                params: { position: context.index + 1, total: context.length }\n                            }\n                        ]\"\n                    ></ic-coalesce-content>\n                </span>\n\n                <i\n                    kbq-icon=\"kbq-chevron-right_16\"\n                    class=\"ic-client-error__next\"\n                    [color]=\"KbqComponentColors.Contrast\"\n                    (click)=\"toNext()\"\n                ></i>\n            </div>\n        </ng-container>\n    </div>\n</div>\n","import { HttpErrorResponse } from '@angular/common/http';\n\nimport { Error, ErrorResponse, HttpResponseCode } from '@mosaic-design/infosec-components/types';\nimport { isNonNullable } from '@mosaic-design/infosec-components/utils';\n\nimport { ErrorType, ServerError } from '../types';\n\nexport function isHttpErrorResponse(error: ServerError): error is HttpErrorResponse {\n    return error instanceof HttpErrorResponse;\n}\n\nexport function isServerError(error: ServerError): error is ErrorResponse {\n    return !isHttpErrorResponse(error);\n}\n\nexport function mapErrors(error: ErrorResponse | undefined): Error[] {\n    const errors = error?.errors ?? [];\n\n    return [...errors].reverse();\n}\n\nexport function mapErrorType(error: ErrorResponse | undefined): ErrorType | undefined {\n    const code = error?.code || 0;\n    if (code >= HttpResponseCode.ServerError500InternalServerError) {\n        return ErrorType.Server;\n    } else if (code >= HttpResponseCode.ClientError400BadRequest) {\n        return ErrorType.Client;\n    }\n\n    return undefined;\n}\n\nexport function mapIsCopyDetailsButtonVisible(errorType: ErrorType | undefined, isDetailsVisible: boolean): boolean {\n    if (isNonNullable(errorType)) {\n        return errorType === ErrorType.Server && isDetailsVisible;\n    } else {\n        return false;\n    }\n}\n","import { map } from 'rxjs';\n\nimport { Error } from '@mosaic-design/infosec-components/types';\n\nimport {\n    ErrorItemMessageForClipboardFormatter,\n    ErrorItemMessageTranslate,\n    ErrorItemMessageTranslateProvider\n} from '../types';\n\nfunction formatForClipBoard(translate: string, errorItem: Error): string {\n    return `${translate}\\n${errorItem.error.type}\\n${errorItem.source.displayName}\\n\\n`;\n}\n\nexport const defaultErrorItemToClipboardFormatter: ErrorItemMessageForClipboardFormatter = (\n    errorItem: Error,\n    translateProvider: ErrorItemMessageTranslateProvider\n): ErrorItemMessageTranslate => {\n    const translate = translateProvider(errorItem);\n\n    if (typeof translate === 'string') {\n        return formatForClipBoard(translate, errorItem);\n    } else {\n        return translate.pipe(map((translated) => formatForClipBoard(translated, errorItem)));\n    }\n};\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BehaviorSubject, map, Observable, of, switchMap, zip } from 'rxjs';\n\nimport { Error } from '@mosaic-design/infosec-components/types';\n\nimport { ErrorItemMessageForClipboardFormatter, ErrorItemMessageTranslateProvider } from '../../types';\nimport { defaultErrorItemToClipboardFormatter } from '../../utils';\n\n@Component({\n    selector: 'ic-copy-details-button',\n    templateUrl: './copy-details-button.component.html',\n    styleUrl: './copy-details-button.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CopyDetailsButtonComponent {\n    @Input() set errors(value: Error[] | undefined) {\n        this.#errors.next(value ?? []);\n    }\n\n    @Input() translateProvider!: ErrorItemMessageTranslateProvider;\n    @Input() clipboardFormatter: ErrorItemMessageForClipboardFormatter | undefined =\n        defaultErrorItemToClipboardFormatter;\n\n    #errors = new BehaviorSubject<Error[]>([]);\n\n    clipboardValue$: Observable<string>;\n\n    constructor() {\n        const clipboardFormatter = this.clipboardFormatter ?? defaultErrorItemToClipboardFormatter;\n\n        this.clipboardValue$ = this.#errors.pipe(\n            map((items) => items.map((item) => clipboardFormatter(item, this.translateProvider))),\n            map((formattedItems) => formattedItems.map((item) => (typeof item === 'string' ? of(item) : item))),\n            switchMap((formattedItems) => zip(...formattedItems).pipe(map((items) => items.join(''))))\n        );\n    }\n}\n","<ic-copy-to-clipboard-button [textToCopy]=\"clipboardValue$ | icPush\"></ic-copy-to-clipboard-button>\n","import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef } from '@angular/core';\nimport { KbqAlertColors, KbqAlertStyles } from '@koobiq/components/alert';\n\nimport { ErrorResponse } from '@mosaic-design/infosec-components/types';\n\nimport { ServerError, ServerErrorTemplateContext } from '../../types';\nimport { isHttpErrorResponse } from '../../utils';\n\n@Component({\n    selector: 'ic-legacy-server-errors',\n    templateUrl: './legacy-server-errors.component.html',\n    styleUrls: ['./legacy-server-errors.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class LegacyServerErrorsComponent {\n    @Input() containerClass = '';\n    @Input() error: ServerError | undefined;\n    @Input() unknownErrorTemplate: TemplateRef<ServerErrorTemplateContext> | undefined;\n\n    readonly KbqAlertColors = KbqAlertColors;\n    readonly KbqAlertStyles = KbqAlertStyles;\n\n    get hasError(): boolean {\n        return !!this.error;\n    }\n\n    get errorMessage(): string | undefined {\n        const errorToProcess =\n            this.error && isHttpErrorResponse(this.error) ? (this.error.error as ErrorResponse) : this.error;\n\n        return errorToProcess?.message && typeof errorToProcess.message === 'string'\n            ? errorToProcess.message\n            : undefined;\n    }\n\n    get unknownErrorTemplateContext(): ServerErrorTemplateContext {\n        return {\n            error: this.error\n        };\n    }\n}\n","<div *ngIf=\"hasError\" class=\"ic-legacy-server-errors {{ containerClass }}\">\n    <kbq-alert [alertColor]=\"KbqAlertColors.Error\" [alertStyle]=\"KbqAlertStyles.Colored\">\n        <ng-container *ngIf=\"errorMessage as errorMessage; else wrappedUnknownErrorTemplate\">\n            {{ errorMessage }}\n        </ng-container>\n\n        <ng-template #wrappedUnknownErrorTemplate>\n            <ng-container *ngIf=\"unknownErrorTemplate\">\n                <ng-container *ngTemplateOutlet=\"unknownErrorTemplate; context: unknownErrorTemplateContext\">\n                </ng-container>\n            </ng-container>\n        </ng-template>\n    </kbq-alert>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Error, IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\nimport { isObject } from '@mosaic-design/infosec-components/utils';\n\nimport { ErrorItemMessageTranslateProvider } from '../../types';\n\n@Component({\n    selector: 'ic-server-error-details',\n    styleUrls: ['./server-error-details.component.scss'],\n    templateUrl: './server-error-details.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class ServerErrorDetailsComponent {\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n\n    @Input() set errors(value: Error[] | undefined) {\n        this._errors.next(value ?? []);\n    }\n\n    @Input() translateProvider!: ErrorItemMessageTranslateProvider;\n\n    private _errors = new BehaviorSubject<Error[]>([]);\n\n    get errorsToShow(): Error[] {\n        return this._errors.value;\n    }\n\n    formatIpAddresses(error: Error): string | undefined {\n        return isObject(error.source) && Array.isArray(error.source.ipAddresses)\n            ? error.source.ipAddresses.join(', ')\n            : undefined;\n    }\n}\n","<div class=\"ic-server-error-details\">\n    <div class=\"ic-server-error-details__content\">\n        <div *ngFor=\"let error of errorsToShow; first as first\" class=\"ic-server-error-details__item\">\n            <div *ngIf=\"!first\" class=\"ic-server-error-details__item-header\">\n                <kbq-divider class=\"ic-server-error-details__divider\"></kbq-divider>\n\n                <i kbq-icon=\"kbq-chevron-down-s_16\" class=\"ic-server-error-details__arrow\"></i>\n\n                <kbq-divider class=\"ic-server-error-details__divider\"></kbq-divider>\n            </div>\n\n            <div class=\"ic-server-error-details__item-body\">\n                <div class=\"ic-server-error-details__item-message\">\n                    <ic-error-message [errorItem]=\"error\" [translateProvider]=\"translateProvider\"></ic-error-message>\n                </div>\n\n                <kbq-dl class=\"ic-server-error-details__item-parameters\">\n                    <kbq-dt>\n                        <ic-coalesce-content\n                            [items]=\"[\n                                {\n                                    alias: IcTranslocoScopeAlias.ServerErrors,\n                                    key: 'ServerErrors.ErrorDetails.Label.Error'\n                                }\n                            ]\"\n                        ></ic-coalesce-content>\n                    </kbq-dt>\n                    <kbq-dd>{{ error.error.type }}</kbq-dd>\n\n                    <kbq-dt>\n                        <ic-coalesce-content\n                            [items]=\"[\n                                {\n                                    alias: IcTranslocoScopeAlias.ServerErrors,\n                                    key: 'ServerErrors.ErrorDetails.Label.Source'\n                                }\n                            ]\"\n                        ></ic-coalesce-content>\n                    </kbq-dt>\n                    <kbq-dd>{{ error.source.displayName }}</kbq-dd>\n\n                    <ng-container *ngIf=\"error.sensitive\">\n                        <kbq-dt>\n                            <ic-coalesce-content\n                                [items]=\"[\n                                    {\n                                        alias: IcTranslocoScopeAlias.ServerErrors,\n                                        key: 'ServerErrors.ErrorDetails.Label.Hostname'\n                                    }\n                                ]\"\n                            ></ic-coalesce-content>\n                        </kbq-dt>\n                        <kbq-dd>{{ error.source.hostName }}</kbq-dd>\n\n                        <kbq-dt>\n                            <ic-coalesce-content\n                                [items]=\"[\n                                    {\n                                        alias: IcTranslocoScopeAlias.ServerErrors,\n                                        key: 'ServerErrors.ErrorDetails.Label.IpAddresses'\n                                    }\n                                ]\"\n                            ></ic-coalesce-content>\n                        </kbq-dt>\n                        <kbq-dd>{{ formatIpAddresses(error) }}</kbq-dd>\n                    </ng-container>\n                </kbq-dl>\n            </div>\n        </div>\n    </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqModalService } from '@koobiq/components/modal';\n\nimport { Error, IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nimport { ErrorItemMessageForClipboardFormatter, ErrorItemMessageTranslateProvider } from '../../types';\nimport { defaultErrorItemToClipboardFormatter } from '../../utils';\n\n@Component({\n    selector: 'ic-server-error-details-modal',\n    styleUrls: ['./server-error-details-modal.component.scss'],\n    templateUrl: './server-error-details-modal.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class ServerErrorDetailsModalComponent {\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n    protected readonly KbqComponentColors = KbqComponentColors;\n    protected readonly KbqButtonStyles = KbqButtonStyles;\n\n    @Input() errors: Error[] = [];\n    @Input() modalTitle = '';\n\n    @Input() translateProvider!: ErrorItemMessageTranslateProvider;\n\n    @Input() clipboardFormatter: ErrorItemMessageForClipboardFormatter | undefined =\n        defaultErrorItemToClipboardFormatter;\n\n    constructor(private modalService: KbqModalService) {}\n\n    close(): void {\n        this.modalService.closeAll();\n    }\n}\n","<kbq-modal-title>\n    <div *ngIf=\"modalTitle; else defaultTitle\">{{ modalTitle }}</div>\n\n    <ng-template #defaultTitle>\n        <ic-coalesce-content\n            [items]=\"[{ alias: IcTranslocoScopeAlias.ServerErrors, key: 'ServerErrors.ErrorDetails.Modal.Title' }]\"\n        ></ic-coalesce-content>\n    </ng-template>\n\n    <button\n        kbq-button\n        class=\"kbq-modal-close\"\n        [kbqStyle]=\"KbqButtonStyles.Transparent\"\n        [color]=\"KbqComponentColors.Contrast\"\n        (click)=\"close()\"\n    >\n        <i kbq-icon=\"kbq-xmark_16\" [color]=\"KbqComponentColors.Contrast\"></i>\n    </button>\n</kbq-modal-title>\n\n<kbq-modal-body class=\"ic-server-error-details-modal-body\">\n    <div class=\"ic-server-error-details-modal-body__content\">\n        <ic-server-error-details\n            class=\"ic-server-error-details-modal-body__details\"\n            [errors]=\"errors\"\n            [translateProvider]=\"translateProvider\"\n        >\n        </ic-server-error-details>\n\n        <ic-copy-details-button\n            [errors]=\"errors\"\n            [translateProvider]=\"translateProvider\"\n            [clipboardFormatter]=\"clipboardFormatter\"\n        ></ic-copy-details-button>\n    </div>\n</kbq-modal-body>\n\n<kbq-modal-footer>\n    <button type=\"button\" kbq-button [color]=\"KbqComponentColors.Contrast\" autofocus (click)=\"close()\">\n        <ic-coalesce-content\n            [items]=\"[{ alias: IcTranslocoScopeAlias.ServerErrors, key: 'ServerErrors.Error.Button.Close' }]\"\n        ></ic-coalesce-content>\n    </button>\n</kbq-modal-footer>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { KbqModalService } from '@koobiq/components/modal';\n\nimport { Error, IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nimport { ServerErrorDetailsModalComponent } from '../../modals';\nimport { ErrorItemMessageForClipboardFormatter, ErrorItemMessageTranslateProvider, ViewMode } from '../../types';\nimport { defaultErrorItemToClipboardFormatter } from '../../utils';\n\n@Component({\n    selector: 'ic-server-error',\n    templateUrl: './server-error.component.html',\n    styleUrls: ['./server-error.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class ServerErrorComponent {\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n    protected readonly ViewMode = ViewMode;\n\n    @Input() set errors(value: Error[] | undefined) {\n        this.#errors = value ?? [];\n    }\n\n    get errors(): Error[] {\n        return this.#errors;\n    }\n\n    @Input() viewMode = ViewMode.Normal;\n\n    @Input() translateProvider!: ErrorItemMessageTranslateProvider;\n    @Input() clipboardFormatter: ErrorItemMessageForClipboardFormatter = defaultErrorItemToClipboardFormatter;\n\n    @Output() isDetailsVisibleChange = new EventEmitter<boolean>();\n\n    #errors: Error[] = [];\n    isDetailsVisible = false;\n\n    constructor(private modalService: KbqModalService) {}\n\n    showDetails(event: Event): void {\n        // Данные операции нужны для обработки случая, если компонент находится в popover'e и он не закрывался.\n        event.stopPropagation();\n        event.preventDefault();\n\n        if (this.viewMode === ViewMode.Compact) {\n            this.openDetailsModal();\n        } else {\n            this.isDetailsVisible = true;\n            this.isDetailsVisibleChange.emit(this.isDetailsVisible);\n        }\n    }\n\n    hideDetails(event: Event): void {\n        event.stopPropagation();\n        event.preventDefault();\n\n        this.isDetailsVisible = false;\n        this.isDetailsVisibleChange.emit(this.isDetailsVisible);\n    }\n\n    openDetailsModal(): void {\n        const data: Partial<ServerErrorDetailsModalComponent> = {\n            errors: this.errors,\n            translateProvider: this.translateProvider,\n            clipboardFormatter: this.clipboardFormatter\n        };\n\n        this.modalService.open({\n            kbqComponent: ServerErrorDetailsModalComponent,\n            kbqClosable: false,\n            kbqCloseByESC: true,\n            kbqComponentParams: data\n        });\n    }\n}\n","<div class=\"ic-server-error\" [ngClass]=\"{ 'ic-server-error_compact': viewMode === ViewMode.Compact }\">\n    <div class=\"ic-server-error__details\">\n        <ic-server-error-details\n            *ngIf=\"isDetailsVisible; else collapsedDetailsBlock\"\n            [errors]=\"errors\"\n            [translateProvider]=\"translateProvider\"\n        >\n        </ic-server-error-details>\n\n        <ng-template #collapsedDetailsBlock>\n            <div class=\"ic-server-error__single-message\">\n                <ic-error-message\n                    kbq-title\n                    class=\"ic-server-error__collapsed-details-message\"\n                    [errorItem]=\"errors[0]\"\n                    [translateProvider]=\"translateProvider\"\n                >\n                </ic-error-message>\n            </div>\n        </ng-template>\n    </div>\n\n    <div class=\"ic-server-error__controls\">\n        <span *ngIf=\"isDetailsVisible; else details\" kbq-link pseudo (click)=\"hideDetails($event)\">\n            <ic-coalesce-content\n                [items]=\"[{ alias: IcTranslocoScopeAlias.ServerErrors, key: 'ServerErrors.Error.Link.HideDetails' }]\"\n            ></ic-coalesce-content>\n        </span>\n\n        <ng-template #details>\n            <span kbq-link pseudo (click)=\"showDetails($event)\">\n                <ic-coalesce-content\n                    [items]=\"[{ alias: IcTranslocoScopeAlias.ServerErrors, key: 'ServerErrors.Error.Link.ShowDetails' }]\"\n                ></ic-coalesce-content>\n            </span>\n        </ng-template>\n    </div>\n</div>\n","import { InjectionToken } from '@angular/core';\n\nimport { IcServerErrorConfig } from '../types';\n\nexport const IC_SERVER_ERROR_CONFIG = new InjectionToken<IcServerErrorConfig>('Конфиг серверной ошибки');\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    Inject,\n    Input,\n    OnChanges,\n    Optional,\n    ViewEncapsulation\n} from '@angular/core';\nimport { KbqAlertColors, KbqAlertStyles } from '@koobiq/components/alert';\nimport { KbqComponentColors } from '@koobiq/components/core';\n\nimport { Error, ErrorResponse } from '@mosaic-design/infosec-components/types';\nimport { cloneDeep, isIpAddress, isNonNullable, isObject, isString } from '@mosaic-design/infosec-components/utils';\n\nimport { IC_SERVER_ERROR_CONFIG } from '../../tokens';\nimport {\n    ErrorItemMessageForClipboardFormatter,\n    ErrorItemMessageTranslateProvider,\n    ErrorType,\n    IconType,\n    IcServerErrorConfig,\n    ViewMode,\n    ViewStyle\n} from '../../types';\nimport {\n    defaultErrorItemToClipboardFormatter,\n    mapErrors,\n    mapErrorType,\n    mapIsCopyDetailsButtonVisible\n} from '../../utils';\n\n/**\n * @ngdoc overview\n * @description\n * Компонент отображения 400-ых и 500-ых ошибок по текущему контракту WebApi 2.1\n * https://wiki.ptsecurity.com/pages/viewpage.action?pageId=37405624\n * @param error Содержание одноименного свойства в HttpResponseError\n * @param containerClass Класс, добавляемый к контейнеру.\n * Например, с его помощью можно задать отступы для отображенного контейнера ошибок.\n * @param viewMode Режим отображения, normal(по умолчанию) или compact.\n * В нормальном режиме каждая ошибка отображается на отдельной строке.\n * В компактном режиме появляется листалка влево-вправо для клиентских ошибок и модальное окно для серверных.\n * @param viewStyle Стиль компонента, normal(по умолчанию) или context.\n * В нормальном режиме ошибки отображаются внутри kbq-alert.\n * В контекстном режиме (ошибка для конкретного поля) отображается только красный текст ошибки.\n * @param compact Задает компактное отображение kbq-alert, по умолчанию - true\n * Если нет иконки, всегда используется компактное отображение\n * @param withIcon Показывать ли иконку ошибки, по умолчанию - false\n * Если при этом параметр compact=true, то отображается маленькая иконка, если compact=false - большая\n */\n@Component({\n    selector: 'ic-server-errors',\n    templateUrl: './server-errors.component.html',\n    styleUrls: ['./server-errors.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class ServerErrorsComponent implements OnChanges {\n    protected readonly ErrorType = ErrorType;\n    protected readonly ViewStyle = ViewStyle;\n    protected readonly KbqComponentColors = KbqComponentColors;\n    protected readonly KbqAlertStyles = KbqAlertStyles;\n    protected readonly KbqAlertColors = KbqAlertColors;\n    protected readonly IconType = IconType;\n\n    @Input() containerClass = '';\n    @Input() viewMode = ViewMode.Normal;\n    @Input() viewStyle = ViewStyle.Normal;\n    @Input() withIcon = false;\n    @Input() compact = true;\n\n    @Input() set error(value: ErrorResponse | undefined) {\n        const copy = cloneDeep(value);\n        this.#processedError = this.processError(copy);\n        this.#processedErrors = mapErrors(this.#processedError);\n        this.#errorType = mapErrorType(this.#processedError);\n        this.#isCopyDetailsButtonVisible = mapIsCopyDetailsButtonVisible(this.#errorType, this.#isDetailsVisible);\n    }\n\n    @Input() set defaultErrorSource(value: string) {\n        this.#defaultErrorSource = value;\n    }\n\n    get defaultErrorSource(): string {\n        return this.#defaultErrorSource ?? this.config?.defaultErrorSource ?? '';\n    }\n\n    #defaultErrorSource: string | undefined;\n\n    get translateProvider(): ErrorItemMessageTranslateProvider {\n        return this.config?.translateProvider ?? (() => '');\n    }\n\n    get clipboardFormatter(): ErrorItemMessageForClipboardFormatter {\n        return this.config?.clipboardFormatter ?? defaultErrorItemToClipboardFormatter;\n    }\n\n    protected iconType = IconType.None;\n\n    #processedError: ErrorResponse | undefined;\n    #processedErrors: Error[] = [];\n    #errorType: ErrorType | undefined;\n    #isDetailsVisible = false;\n    #isCopyDetailsButtonVisible = false;\n\n    private hostname = window.location.hostname;\n\n    private static isCorrectError(error: ErrorResponse): boolean {\n        if (!isObject(error) || !Array.isArray(error.errors)) {\n            return false;\n        }\n\n        for (const errorInfo of error.errors) {\n            if (!isObject(errorInfo.error) || !isString(errorInfo.error.type)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    private static isServerUnavailable(status: number): boolean {\n        return status === -1 || !status;\n    }\n\n    get processedError(): ErrorResponse | undefined {\n        return this.#processedError;\n    }\n\n    get processedErrors(): Error[] {\n        return this.#processedErrors;\n    }\n\n    get errorType(): ErrorType | undefined {\n        return this.#errorType;\n    }\n\n    get isCopyDetailsButtonVisible(): boolean {\n        return this.#isCopyDetailsButtonVisible;\n    }\n\n    constructor(@Optional() @Inject(IC_SERVER_ERROR_CONFIG) private config: IcServerErrorConfig | null) {}\n\n    ngOnChanges(): void {\n        this.iconType = this.getIconType();\n    }\n\n    onIsDetailsVisibleChange(isDetailsVisible: boolean): void {\n        this.#isDetailsVisible = isDetailsVisible;\n        this.#isCopyDetailsButtonVisible = mapIsCopyDetailsButtonVisible(this.#errorType, this.#isDetailsVisible);\n    }\n\n    private processError(error: ErrorResponse | undefined): ErrorResponse | undefined {\n        if (!error) {\n            return undefined;\n        }\n\n        if (ServerErrorsComponent.isCorrectError(error)) {\n            if (ServerErrorsComponent.isServerUnavailable(error.code)) {\n                return this.getServerUnavailableError();\n            } else {\n                return error;\n            }\n        } else {\n            return this.getErrorIfIncorrectFormat(error);\n        }\n    }\n\n    private getServerUnavailableError(): ErrorResponse {\n        const networkAddress = this.getNetworkAddress();\n\n        return {\n            errors: [\n                {\n                    error: {\n                        type: 'mp-ui.backend.unavailable',\n                        url: networkAddress\n                    },\n                    source: {\n                        displayName: this.defaultErrorSource,\n                        hostName: '',\n                        ipAddresses: []\n                    },\n                    sensitive: false\n                }\n            ],\n            message: 'Server unavailable',\n            code: 503\n        };\n    }\n\n    private getErrorIfIncorrectFormat(error: ErrorResponse | undefined): ErrorResponse {\n        const formatOriginalError = (): string => {\n            if (isNonNullable(error)) {\n                if (isString(error)) {\n                    return error;\n                } else {\n                    return JSON.stringify(error);\n                }\n            } else {\n                return '';\n            }\n        };\n\n        const originalError = formatOriginalError();\n        const networkAddress = this.getNetworkAddress();\n\n        return {\n            errors: [\n                {\n                    error: {\n                        type: 'unknown.error',\n                        url: networkAddress\n                    },\n                    source: {\n                        displayName: this.defaultErrorSource,\n                        hostName: networkAddress,\n                        ipAddresses: []\n                    },\n                    sensitive: false\n                }\n            ],\n            message: originalError,\n            code: 500\n        };\n    }\n\n    private getNetworkAddress(): string {\n        let networkAddress: string;\n\n        if (isIpAddress(this.hostname)) {\n            networkAddress = this.hostname;\n        } else {\n            // Обрезаем до первой точки, для получения результата, аналогичного бэкенду.\n            networkAddress = this.hostname.replace(/([^.]+)\\..+/, '$1');\n        }\n\n        return networkAddress;\n    }\n\n    private getIconType(): IconType {\n        if (this.withIcon) {\n            return this.compact ? IconType.Small : IconType.Large;\n        } else {\n            return IconType.None;\n        }\n    }\n}\n","<div\n    *ngIf=\"processedError\"\n    class=\"ic-server-errors {{ containerClass }}\"\n    [ngClass]=\"{\n        'ic-server-errors_context': viewStyle === ViewStyle.Context,\n        'ic-server-errors_content-offset': isCopyDetailsButtonVisible\n    }\"\n>\n    <ng-container *ngIf=\"viewStyle === ViewStyle.Context; else alertMode\">\n        <ng-container *ngTemplateOutlet=\"serverErrorsContent\"></ng-container>\n    </ng-container>\n\n    <ng-template #alertMode>\n        <kbq-alert\n            [alertStyle]=\"KbqAlertStyles.Colored\"\n            [alertColor]=\"KbqAlertColors.Error\"\n            [compact]=\"compact || !withIcon\"\n            class=\"ic-server-errors__alert\"\n            [ngClass]=\"{ 'ic-server-errors__alert_large-icon': iconType === IconType.Large }\"\n        >\n            <i *ngIf=\"iconType === IconType.Small\" kbq-icon=\"kbq-exclamation-triangle_16\"></i>\n            <i *ngIf=\"iconType === IconType.Large\" kbq-icon-item=\"kbq-exclamation-triangle_16\"></i>\n\n            <ng-container *ngTemplateOutlet=\"serverErrorsContent\"></ng-container>\n        </kbq-alert>\n    </ng-template>\n\n    <ng-template #serverErrorsContent>\n        <div class=\"ic-server-errors__content\" *ngIf=\"errorType === ErrorType.Server; else clientError\">\n            <ic-server-error\n                [errors]=\"processedErrors\"\n                [viewMode]=\"viewMode\"\n                [translateProvider]=\"translateProvider\"\n                [clipboardFormatter]=\"clipboardFormatter\"\n                (isDetailsVisibleChange)=\"onIsDetailsVisibleChange($event)\"\n            >\n            </ic-server-error>\n\n            <ic-copy-details-button\n                *ngIf=\"isCopyDetailsButtonVisible\"\n                [errors]=\"processedErrors\"\n                [translateProvider]=\"translateProvider\"\n                [clipboardFormatter]=\"clipboardFormatter\"\n            ></ic-copy-details-button>\n        </div>\n\n        <ng-template #clientError>\n            <ic-client-error\n                [error]=\"processedError\"\n                [viewMode]=\"viewMode\"\n                [viewStyle]=\"viewStyle\"\n                [translateProvider]=\"translateProvider\"\n            >\n            </ic-client-error>\n        </ng-template>\n    </ng-template>\n</div>\n","import { serverErrorsTranslates } from '@mosaic-design/infosec-components/i18n-resources';\nimport { LocalizationScopeConfig, IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nexport const scopeConfig: LocalizationScopeConfig = {\n    alias: IcTranslocoScopeAlias.ServerErrors,\n    localTranslates: serverErrorsTranslates\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { KbqAlertModule } from '@koobiq/components/alert';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqDlModule } from '@koobiq/components/dl';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqModalModule } from '@koobiq/components/modal';\nimport { KbqTitleModule } from '@koobiq/components/title';\n\nimport { IcCoalesceContentModule } from '@mosaic-design/infosec-components/components/coalesce-content';\nimport { IcCopyToClipboardButtonModule } from '@mosaic-design/infosec-components/components/copy-to-clipboard-button';\nimport { IcLetDirective } from '@mosaic-design/infosec-components/directives';\nimport { IcPushPipe } from '@mosaic-design/infosec-components/external/ngrx-component/pipes';\n\nimport {\n    ClientErrorComponent,\n    CopyDetailsButtonComponent,\n    ErrorMessageComponent,\n    LegacyServerErrorsComponent,\n    ServerErrorComponent,\n    ServerErrorDetailsComponent,\n    ServerErrorsComponent\n} from './components';\nimport { ServerErrorDetailsModalComponent } from './modals';\n\n/**\n * @deprecated Будет удален в 19 версии. Компоненты будут standalone\n */\n@NgModule({\n    imports: [\n        CommonModule,\n        TranslocoDirective,\n        KbqAlertModule,\n        KbqIconModule,\n        KbqLinkModule,\n        KbqModalModule,\n        KbqButtonModule,\n        KbqDividerModule,\n        KbqDlModule,\n        KbqTitleModule,\n\n        IcCopyToClipboardButtonModule,\n        IcPushPipe,\n        IcLetDirective,\n        IcCoalesceContentModule\n    ],\n    declarations: [\n        ClientErrorComponent,\n        ErrorMessageComponent,\n        LegacyServerErrorsComponent,\n        ServerErrorComponent,\n        ServerErrorDetailsComponent,\n        ServerErrorsComponent,\n        ServerErrorDetailsModalComponent,\n        CopyDetailsButtonComponent\n    ],\n    exports: [ServerErrorsComponent, LegacyServerErrorsComponent]\n})\nexport class IcServerErrorsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5.ErrorMessageComponent","i6.ErrorMessageComponent","i6.ServerErrorDetailsComponent","i7.CopyDetailsButtonComponent","i7.ServerErrorDetailsComponent","i4.ClientErrorComponent","i5.ServerErrorComponent","i6.CopyDetailsButtonComponent"],"mappings":"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"}