{"version":3,"file":"dbg-riskit-angular-view.mjs","sources":["../../../../pkg/dbg-riskit/angular-view/src/lib/message.component.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/message.component.html","../../../../pkg/dbg-riskit/angular-view/src/lib/date.formatter.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/flex.component.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/flex.spacer.component.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/loader.component.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/message.dialog.component.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/message.dialog.component.html","../../../../pkg/dbg-riskit/angular-view/src/lib/percent.pipe.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/progress.loader.component.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/dialog.service.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/match.media.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/layout.component.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/layout.component.html","../../../../pkg/dbg-riskit/angular-view/src/lib/sub.link.directive.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/link.active.directive.ts","../../../../pkg/dbg-riskit/angular-view/src/lib/toolbar.component.ts","../../../../pkg/dbg-riskit/angular-view/src/dbg-riskit-angular-view.ts"],"sourcesContent":["import {NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, signal} from '@angular/core';\nimport {MatCard, MatCardContent} from '@angular/material/card';\nimport {MatProgressSpinner} from '@angular/material/progress-spinner';\n\nexport const RISK_ERROR_SELECTOR = 'risk-error';\nexport const RISK_GOOD_SELECTOR = 'risk-good';\nexport const RISK_INFO_SELECTOR = 'risk-info';\nexport const RISK_MESSAGE_SELECTOR = 'risk-message';\nexport const RISK_WARN_SELECTOR = 'risk-warn';\n\nexport const RISK_INITIAL_LOAD_SELECTOR = 'risk-initial-load';\nexport const RISK_NO_DATA_SELECTOR = 'risk-no-data';\nexport const RISK_UPDATE_FAILED_SELECTOR = 'risk-update-failed';\n\nexport const COMPONENT_SELECTOR = RISK_ERROR_SELECTOR + ', ' + RISK_GOOD_SELECTOR + ', ' + RISK_INFO_SELECTOR + ', '\n                                  + RISK_MESSAGE_SELECTOR + ', ' + RISK_WARN_SELECTOR + ', '\n                                  + RISK_INITIAL_LOAD_SELECTOR + ', ' + RISK_NO_DATA_SELECTOR + ', '\n                                  + RISK_UPDATE_FAILED_SELECTOR;\n\n@Component({\n    selector       : COMPONENT_SELECTOR,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    templateUrl    : 'message.component.html',\n    styleUrls      : [\n        '../../../component.scss',\n        'message.component.scss'\n    ],\n    host           : {\n        '[class.risk-message]'             : 'true',\n        '[class.risk-message-error]'       : 'color() === \"' + RISK_ERROR_SELECTOR + '\"',\n        '[class.risk-message-warn]'        : 'color() === \"' + RISK_WARN_SELECTOR + '\"',\n        '[class.risk-message-good]'        : 'color() === \"' + RISK_GOOD_SELECTOR + '\"',\n        '[class.risk-message-info]'        : 'color() === \"' + RISK_INFO_SELECTOR + '\"',\n        '[class.risk-message-initial-load]': 'initialLoad()',\n        '[class.risk-message-no-data]'     : 'noData()',\n        '[class.risk-message-update-error]': 'updateError()'\n    },\n    imports        : [\n        MatCard,\n        MatCardContent,\n        MatProgressSpinner,\n        NgClass\n    ]\n})\nexport class RiskMessageComponent {\n\n    public readonly message = input<string>();\n\n    public readonly initialLoad = computed(() => this.tagName() === RISK_INITIAL_LOAD_SELECTOR);\n    public readonly noData = computed(() => this.tagName() === RISK_NO_DATA_SELECTOR);\n    public readonly updateError = computed(() => this.tagName() === RISK_UPDATE_FAILED_SELECTOR);\n\n    public readonly color = computed<string | null>(() => {\n        switch (this.tagName()) {\n            case RISK_INFO_SELECTOR:\n            case RISK_NO_DATA_SELECTOR:\n                return RISK_INFO_SELECTOR;\n            case RISK_WARN_SELECTOR:\n            case RISK_INITIAL_LOAD_SELECTOR:\n                return RISK_WARN_SELECTOR;\n            case RISK_ERROR_SELECTOR:\n            case RISK_UPDATE_FAILED_SELECTOR:\n                return RISK_ERROR_SELECTOR;\n            case RISK_GOOD_SELECTOR:\n                return RISK_GOOD_SELECTOR;\n            default:\n                return null;\n        }\n    });\n\n    private readonly tagName = signal('');\n\n    public constructor() {\n        const elementRef = inject(ElementRef);\n        this.tagName.set(elementRef.nativeElement.tagName.toLowerCase());\n    }\n}\n","<mat-card [ngClass]=\"color()\">\n    <mat-card-content>\n        @if (initialLoad()) {\n            <mat-spinner [diameter]=\"50\"/>\n            Loading...\n        }\n        @if (noData()) {\n            No data available.\n        }\n        @if (updateError()) {\n            Failed to update the data: {{ message() }}.\n        }\n        @if (!initialLoad() && !noData() && !updateError()) {\n            {{ message() }}\n        }\n        <ng-content/>\n    </mat-card-content>\n</mat-card>\n","import {DatePipe} from '@angular/common';\nimport {inject, Injectable, Provider} from '@angular/core';\nimport {provideNativeDateAdapter} from '@angular/material/core';\nimport {DATE_FORMAT} from '@dbg-riskit/angular-common';\n\n@Injectable()\nexport class RiskDateFormatter {\n    private readonly format = inject(DATE_FORMAT);\n    private readonly datePipe = inject(DatePipe);\n\n    public transform(value: Date): string | null {\n        return this.datePipe.transform(value, this.format);\n    }\n}\n\nexport function provideDateFormatter(format: string): Provider[] {\n    return [\n        DatePipe,\n        RiskDateFormatter,\n        ...provideNativeDateAdapter(),\n        {\n            provide : DATE_FORMAT,\n            useValue: format\n        }\n    ];\n}\n","import {ChangeDetectionStrategy, Component, input} from '@angular/core';\n\n@Component({\n    selector       : 'risk-flex',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template       : '<ng-content />',\n    styleUrls      : [\n        '../../../component.scss',\n        'flex.component.scss'\n    ],\n    host           : {\n        '[class.risk-flex]'     : '!wrapContent()',\n        '[class.risk-flex-wrap]': 'wrapContent()'\n    }\n})\nexport class RiskFlexComponent {\n    public readonly wrapContent = input(false);\n}\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\n@Component({\n    selector       : 'risk-flex-spacer',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template       : '',\n    styleUrls      : [\n        '../../../component.scss'\n    ],\n    host           : {\n        '[class.risk-flex-spacer]': 'true'\n    }\n})\nexport class RiskFlexSpacerComponent {\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {MatButton} from '@angular/material/button';\nimport {MAT_DIALOG_DATA, MatDialogContent, MatDialogRef} from '@angular/material/dialog';\nimport {MatProgressSpinner} from '@angular/material/progress-spinner';\nimport {RiskDialogComponent} from './dialog.service';\nimport {RiskFlexComponent} from './flex.component';\nimport {RiskFlexSpacerComponent} from './flex.spacer.component';\n\nexport interface RiskLoaderDialogData {\n    title?: string;\n    cancel?: () => void;\n}\n\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template       : `\n        <mat-dialog-content>\n            <risk-flex [wrapContent]=\"true\">\n                <risk-flex-spacer/>\n                <mat-spinner/>\n                <risk-flex-spacer/>\n            </risk-flex>\n            @if (dialogData.title) {\n                <risk-flex [wrapContent]=\"true\">\n                    <risk-flex-spacer/>\n                    <h3>{{ dialogData.title }}</h3>\n                    <risk-flex-spacer/>\n                </risk-flex>\n            }\n            @if (dialogData.cancel != null) {\n                <risk-flex [wrapContent]=\"true\">\n                    <risk-flex-spacer/>\n                    <button mat-button color=\"warn\" (click)=\"dialogData.cancel()\">Cancel</button>\n                    <risk-flex-spacer/>\n                </risk-flex>\n            }\n        </mat-dialog-content>\n    `,\n    styles         : [\n        `\n            h3 {\n                margin-bottom: 0;\n            }`\n    ],\n    host           : {\n        '[class.risk-loader-dialog]': 'true'\n    },\n    imports        : [\n        MatButton,\n        MatDialogContent,\n        MatProgressSpinner,\n        RiskFlexComponent,\n        RiskFlexSpacerComponent\n    ]\n})\nexport class RiskLoaderComponent implements RiskDialogComponent<RiskLoaderDialogData, void> {\n    private readonly dialogRef = inject<MatDialogRef<RiskLoaderComponent, void>>(MatDialogRef);\n    private readonly data = inject<RiskLoaderDialogData>(MAT_DIALOG_DATA);\n\n    public get dialogData(): RiskLoaderDialogData {\n        return this.data;\n    }\n\n    public close() {\n        this.dialogRef.close();\n    }\n}\n","import {ChangeDetectionStrategy, Component, computed, inject} from '@angular/core';\nimport {MatButton} from '@angular/material/button';\nimport {MAT_DIALOG_DATA, MatDialogContent, MatDialogRef} from '@angular/material/dialog';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatColorTheme} from '@dbg-riskit/angular-common';\nimport {RiskDialogComponent} from './dialog.service';\n\nexport interface RiskMessageDialogConfig<R> {\n    dialogType: RiskMessageDialogType;\n    buttons?: Array<RiskMessageDialogButton<R>>;\n    title?: string;\n    message: string;\n    note?: string;\n    icon?: string;\n}\n\nexport type RiskMessageDialogType = 'error' | 'warning' | 'info' | 'success' | 'question';\n\nexport interface RiskMessageDialogButton<R> {\n    label: string;\n    value?: R;\n    primary?: boolean;\n}\n\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    templateUrl    : 'message.dialog.component.html',\n    styleUrls      : [\n        '../../../component.scss',\n        'message.dialog.component.scss'\n    ],\n    host           : {\n        '[class.risk-message-dialog]': 'true'\n    },\n    imports        : [\n        MatButton,\n        MatDialogContent,\n        MatIcon\n    ]\n})\nexport class RiskMessageDialogComponent<R> implements RiskDialogComponent<RiskMessageDialogConfig<R>, R> {\n    readonly dialogRef = inject<MatDialogRef<RiskMessageDialogComponent<R>, R>>(MatDialogRef);\n    public readonly dialogData = inject<RiskMessageDialogConfig<R>>(MAT_DIALOG_DATA);\n\n    public readonly customIcon = computed(() => this.dialogData.icon);\n\n    public readonly dialogType = computed<RiskMessageDialogType>(() => this.dialogData.dialogType || 'info');\n\n    public readonly buttons = computed<Array<RiskMessageDialogButton<R>>>(() =>\n        this.dialogData.buttons || [{label: 'OK'}]\n    );\n\n    public readonly color = computed<MatColorTheme>(() => {\n        switch (this.dialogType()) {\n            case 'error':\n            case 'warning':\n                return 'warn';\n            case 'info':\n            case 'question':\n                return 'accent';\n            case 'success':\n                return 'primary';\n        }\n        return null;\n    });\n\n    public readonly icon = computed<string>(() => {\n        if (this.customIcon()) {\n            return this.customIcon()!;\n        }\n        switch (this.dialogType()) {\n            case 'error':\n                return 'error';\n            case 'warning':\n                return 'warning';\n            case 'info':\n                return 'info';\n            case 'question':\n                return 'help';\n            case 'success':\n                return 'check';\n        }\n        return 'info';\n    });\n\n    public close(button: RiskMessageDialogButton<R>) {\n        this.dialogRef.close(button.value);\n    }\n}\n","<mat-dialog-content>\n    <div class=\"risk-message-dialog-message\">\n        @if (dialogData.title) {\n            <h3>\n                <mat-icon [color]=\"color()\">{{ icon() }}</mat-icon>\n                <strong>{{ dialogData.title }}</strong>\n            </h3>\n        }\n        <h3>\n            @if (!dialogData.title) {\n                <mat-icon [color]=\"color()\">{{ icon() }}</mat-icon>\n            }\n            {{ dialogData.message }}\n        </h3>\n        @if (dialogData.note) {\n            <small>NOTE: {{ dialogData.note }}</small>\n        }\n    </div>\n    @for (button of buttons(); track button) {\n        <a\n            (click)=\"close(button)\"\n            [color]=\"button.primary ? color() : null\"\n            mat-button>{{ button.label }}</a>\n    }\n</mat-dialog-content>\n","import {DecimalPipe} from '@angular/common';\nimport {inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';\nimport {Maybe} from '@dbg-riskit/common';\n\n@Pipe({name: 'percent'})\nexport class RiskPercentPipe implements PipeTransform {\n    private readonly decimalPipe = new DecimalPipe(inject(LOCALE_ID));\n\n    public transform(value: Maybe<number | string>, digits?: string): string | undefined {\n        const transformedNumber = this.decimalPipe.transform(value, digits);\n        if (transformedNumber) {\n            return transformedNumber + '%';\n        }\n\n        return undefined;\n    }\n}\n","import {ChangeDetectionStrategy, Component, computed, inject, PipeTransform, signal} from '@angular/core';\nimport {MatButton} from '@angular/material/button';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {MatProgressSpinner} from '@angular/material/progress-spinner';\nimport {RiskDialogComponent} from './dialog.service';\nimport {RiskFlexComponent} from './flex.component';\nimport {RiskFlexSpacerComponent} from './flex.spacer.component';\nimport {RiskPercentPipe} from './percent.pipe';\n\nexport interface RiskProgressLoaderDialogData {\n    title?: string;\n    value?: number;\n    total?: number;\n    valueFormatter?: PipeTransform;\n    cancel?: () => void;\n}\n\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template       : `\n        @let tot = total();\n        @let val = value();\n        <risk-flex [wrapContent]=\"true\">\n            <risk-flex-spacer/>\n            <mat-progress-spinner\n                [mode]=\"mode()\"\n                [value]=\"(val / (tot || 1)) * 100\"/>\n            <risk-flex-spacer/>\n        </risk-flex>\n        @if (dialogData.title) {\n            <risk-flex [wrapContent]=\"true\">\n                <risk-flex-spacer/>\n                <h3>{{ dialogData.title }}</h3>\n                <risk-flex-spacer/>\n            </risk-flex>\n        }\n        <risk-flex [wrapContent]=\"true\">\n            <risk-flex-spacer/>\n            @if (tot != null && tot > 0) {\n                <h5>{{ valueFormatter.transform(val) }}\n                    /{{ valueFormatter.transform(tot) }}\n                    - {{ val / tot * 100 | percent:'.1-1' }}</h5>\n            } @else {\n                <h5>{{ valueFormatter.transform(val) }}</h5>\n            }\n            <risk-flex-spacer/>\n        </risk-flex>\n        @if (dialogData.cancel != null) {\n            <risk-flex [wrapContent]=\"true\">\n                <risk-flex-spacer/>\n                <button mat-button color=\"warn\" (click)=\"dialogData.cancel()\">Cancel</button>\n                <risk-flex-spacer/>\n            </risk-flex>\n        }\n    `,\n    styles         : [\n        `\n            h3 {\n                margin-bottom: 0;\n            }`\n    ],\n    host           : {\n        '[class.risk-progress-loader-dialog]': 'true'\n    },\n    imports        : [\n        MatButton,\n        MatProgressSpinner,\n        RiskFlexComponent,\n        RiskFlexSpacerComponent,\n        RiskPercentPipe\n    ]\n})\nexport class RiskProgressLoaderComponent implements RiskDialogComponent<RiskProgressLoaderDialogData, void> {\n    private readonly dialogRef = inject<MatDialogRef<RiskProgressLoaderComponent, void>>(MatDialogRef);\n    public readonly dialogData = inject<RiskProgressLoaderDialogData>(MAT_DIALOG_DATA);\n\n    public readonly value = signal(this.dialogData.value ?? 0);\n    public readonly total = signal(this.dialogData.total);\n\n    public readonly mode = computed(() => {\n        const totalVal = this.total();\n        const valueVal = this.value();\n        switch (true) {\n            case totalVal == null:\n            case totalVal != null && totalVal <= 0:\n            case valueVal <= 0:\n            case valueVal === totalVal:\n                return 'indeterminate';\n            default:\n                return 'determinate';\n        }\n    });\n\n    public setValue(v: number) {\n        this.dialogData.value = v;\n        this.value.set(v < 0 ? 0 : v);\n    }\n\n    public setTotal(v: number | undefined) {\n        this.dialogData.total = v;\n        this.total.set(v);\n    }\n\n    public get valueFormatter(): PipeTransform {\n        return this.dialogData.valueFormatter || {transform: (data) => data};\n    }\n\n    public close() {\n        this.dialogRef.close();\n    }\n}\n","import {inject, Injectable, Type} from '@angular/core';\nimport {MatDialog} from '@angular/material/dialog';\nimport {first} from 'rxjs/operators';\nimport {RiskLoaderComponent, RiskLoaderDialogData as LoaderConfig} from './loader.component';\nimport {\n    RiskMessageDialogButton,\n    RiskMessageDialogComponent,\n    RiskMessageDialogConfig as MessageDialogConfig,\n    RiskMessageDialogType\n} from './message.dialog.component';\nimport {\n    RiskProgressLoaderComponent,\n    RiskProgressLoaderDialogData as ProgressLoaderConfig\n} from './progress.loader.component';\n\nexport interface RiskDialogConfig<T> {\n    /** Custom class for the overlay pane. */\n    readonly panelClass?: string;\n    /** Whether the dialog has a backdrop. */\n    readonly hasBackdrop?: boolean;\n    /** Custom class for the backdrop, */\n    readonly backdropClass?: string;\n    /** Whether the user can use escape or clicking outside to close a modal. */\n    readonly disableClose?: boolean;\n\n    readonly data?: T;\n}\n\nexport interface RiskDialogComponent<T, R = unknown> {\n    readonly dialogData: T;\n}\n\n@Injectable({providedIn: 'root'})\nexport class RiskDialogService {\n    readonly dialog = inject(MatDialog);\n\n    public showWarnDialog(message: string, note?: string) {\n        return this.showMessageDialog({\n            dialogType: 'warning',\n            message,\n            note\n        });\n    }\n\n    public showWarnQuestionDialog(destroyCallback: () => void,\n                                  destructiveButtonLabel: string,\n                                  message: string,\n                                  note?: string) {\n        return this.showMessageDialog({\n            dialogType: 'warning',\n            message,\n            note,\n            buttons   : [\n                {\n                    label  : destructiveButtonLabel,\n                    value  : true,\n                    primary: true\n                },\n                {\n                    label: 'Cancel',\n                    value: false\n                }\n            ],\n            answerCallback(result?: boolean) {\n                if (result) {\n                    destroyCallback();\n                }\n            }\n        });\n    }\n\n    public showErrorDialog(message: string, note?: string) {\n        return this.showMessageDialog({\n            dialogType: 'error',\n            message,\n            note\n        });\n    }\n\n    public showInfoDialog(message: string, note?: string) {\n        return this.showMessageDialog({\n            dialogType: 'info',\n            message,\n            note\n        });\n    }\n\n    public showSuccessDialog(message: string, note?: string) {\n        return this.showMessageDialog({\n            dialogType: 'success',\n            message,\n            note\n        });\n    }\n\n    public showQuestionDialog<R>(buttons: Array<RiskMessageDialogButton<R>>,\n                                 answerCallback: (value?: R) => void,\n                                 message: string,\n                                 note?: string) {\n        return this.showMessageDialog({\n            dialogType: 'question',\n            message,\n            note,\n            buttons,\n            answerCallback\n        });\n    }\n\n    public showMessageDialog<R>(config: {\n        dialogType: RiskMessageDialogType;\n        buttons?: Array<RiskMessageDialogButton<R>>;\n        answerCallback?: (value?: R) => void;\n        config?: RiskDialogConfig<undefined>;\n        title?: string,\n        message: string;\n        note?: string;\n        icon?: string;\n    }) {\n        return this.showDialog(RiskMessageDialogComponent, {\n                ...config.config,\n                data: {\n                    dialogType: config.dialogType,\n                    buttons   : config.buttons,\n                    title     : config.title,\n                    message   : config.message,\n                    note      : config.note,\n                    icon      : config.icon\n                } as MessageDialogConfig<R>\n            },\n            config.answerCallback);\n    }\n\n    /* eslint-disable @typescript-eslint/unified-signatures */\n    public showLoaderDialog(title: string): RiskLoaderComponent;\n    public showLoaderDialog(data: LoaderConfig): RiskLoaderComponent;\n    /* eslint-enable */\n    public showLoaderDialog(data: string | LoaderConfig): RiskLoaderComponent {\n        if (typeof data === 'string') {\n            data = {\n                title: data\n            };\n        }\n        return this.showDialog(RiskLoaderComponent, {\n            disableClose: true,\n            hasBackdrop : true,\n            data\n        });\n    }\n\n    /* eslint-disable @typescript-eslint/unified-signatures */\n    public showProgressLoaderDialog(title: string): RiskProgressLoaderComponent;\n    public showProgressLoaderDialog(data: ProgressLoaderConfig): RiskProgressLoaderComponent;\n    /* eslint-enable */\n    public showProgressLoaderDialog(data: string | ProgressLoaderConfig): RiskProgressLoaderComponent {\n        if (typeof data === 'string') {\n            data = {\n                title: data\n            };\n        }\n\n        return this.showDialog(RiskProgressLoaderComponent, {\n            disableClose: true,\n            hasBackdrop : true,\n            data\n        });\n    }\n\n    /* eslint-disable @typescript-eslint/unified-signatures */\n    public showDialog<T extends RiskDialogComponent<D, R>, D, R>(dialogClass: Type<T>): T;\n    public showDialog<T extends RiskDialogComponent<D, R>, D, R>(dialogClass: Type<T>,\n                                                                 config?: RiskDialogConfig<D>): T;\n    public showDialog<T extends RiskDialogComponent<D, R>, D, R>(dialogClass: Type<T>,\n                                                                 callback?: (result?: R) => void): T;\n    public showDialog<T extends RiskDialogComponent<D, R>, D, R>(dialogClass: Type<T>,\n                                                                 config?: RiskDialogConfig<D>,\n                                                                 callback?: (result?: R) => void): T;\n    /* eslint-enable */\n    public showDialog<T extends RiskDialogComponent<D, R>, D, R>(dialogClass: Type<T>,\n                                                                 configOrCallback?: RiskDialogConfig<D>\n                                                                     | ((result?: R) => void),\n                                                                 callback?: (result?: R) => void): T {\n        let config: RiskDialogConfig<D> | undefined;\n        if (typeof configOrCallback === 'function') {\n            callback = configOrCallback;\n        } else {\n            config = configOrCallback;\n        }\n        const dialogRef = this.dialog.open(dialogClass, config);\n\n        dialogRef.afterClosed().pipe(\n            first()\n        ).subscribe((result?: R) => {\n            if (callback) {\n                callback(result);\n            }\n        });\n\n        return dialogRef.componentInstance;\n    }\n}\n","import {inject, Injectable, NgZone} from '@angular/core';\nimport {CONTENT_TYPE, Logger} from '@dbg-riskit/common';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\n/**\n * Class instances emitted [to observers] for each mql notification\n */\nexport class MediaChange {\n    public constructor(public readonly mediaQuery = 'all') {\n    }\n}\n\n/**\n * MediaMonitor configures listeners to mediaQuery changes and publishes an Observable facade to\n * convert mediaQuery change callbacks to subscriber notifications. These notifications will be\n * performed within the ng Zone to trigger change detections and component updates.\n *\n * NOTE: both mediaQuery activations and de-activations are announced in notifications\n */\n@Injectable({providedIn: 'root'})\nexport class MatchMedia {\n    protected readonly ngZone = inject(NgZone);\n    private readonly logger = inject(Logger);\n\n    protected readonly _registry: Map<string, MediaQueryList>;\n    protected readonly _source: BehaviorSubject<MediaChange>;\n    protected readonly _observable$: Observable<MediaChange>;\n\n    public constructor() {\n        this._registry = new Map<string, MediaQueryList>();\n        this._source = new BehaviorSubject<MediaChange>(new MediaChange());\n        this._observable$ = this._source.asObservable();\n    }\n\n    /**\n     * For the specified mediaQuery?\n     */\n    public isActive(mediaQuery: string): boolean {\n        if (this._registry.has(mediaQuery)) {\n            const mql = this._registry.get(mediaQuery);\n            return mql!.matches;\n        }\n        return false;\n    }\n\n    /**\n     * External observers can watch for all (or a specific) mql changes.\n     * Typically used by the MediaQueryAdaptor; optionally available to components\n     * who wish to use the MediaMonitor as mediaMonitor$ observable service.\n     *\n     * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will\n     *       be announced.\n     */\n    public observe(mediaQuery?: string): Observable<MediaChange> {\n        this.registerQuery(mediaQuery);\n\n        return this._observable$.pipe(\n            filter((change: MediaChange) => {\n                return mediaQuery ? (change.mediaQuery === mediaQuery) : true;\n            })\n        );\n    }\n\n    /**\n     * Based on the BreakPointRegistry provider, register internal listeners for each unique\n     * mediaQuery. Each listener emits specific MediaChange data to observers\n     */\n    private registerQuery(mediaQuery?: string | string[]) {\n        const list = normalizeQuery(mediaQuery);\n\n        if (list.length > 0) {\n            prepareQueryCSS(list, this.logger);\n\n            list.forEach((query) => {\n                let mql = this._registry.get(query);\n                const onMQLEvent = () => {\n                    this.ngZone.run(() => {\n                        const change = new MediaChange(query);\n                        this._source.next(change);\n                    });\n                };\n\n                if (!mql) {\n                    mql = this._buildMQL(query);\n                    mql.addEventListener('change', onMQLEvent);\n                    this._registry.set(query, mql);\n                }\n\n                if (mql.matches) {\n                    onMQLEvent();  // Announce activate range for initial subscribers\n                }\n            });\n        }\n    }\n\n    /**\n     * Call window.matchMedia() to build a MediaQueryList; which\n     * supports 0..n listeners for activation/deactivation\n     */\n    protected _buildMQL(query: string): MediaQueryList {\n        const canListen = !!window.matchMedia('all').addEventListener;\n        return canListen ? window.matchMedia(query) : {\n            matches            : query === 'all' || query === '',\n            media              : query,\n            addListener        : () => undefined,\n            addEventListener   : () => undefined,\n            removeListener     : () => undefined,\n            removeEventListener: () => undefined,\n            dispatchEvent      : () => false,\n            onchange           : () => undefined\n        } as MediaQueryList;\n    }\n}\n\n/**\n * Private global registry for all dynamically-created, injected style tags\n * @see prepare(query)\n */\nconst ALL_STYLES: { [key: string]: HTMLStyleElement } = {};\n\n/**\n * For Webkit engines that only trigger the MediaQueryList Listener\n * when there is at least one CSS selector for the respective media query.\n *\n * @param mediaQueries string[] The mediaQueries used to create a faux CSS selector\n *\n */\nfunction prepareQueryCSS(mediaQueries: string[], logger: Logger) {\n    const list = mediaQueries.filter((it) => !ALL_STYLES[it]);\n    if (list.length > 0) {\n        const query = list.join(', ');\n        try {\n            const style: HTMLStyleElement = document.createElement('style');\n\n            style.setAttribute('type', CONTENT_TYPE.TEXT_CSS);\n            // Older IEs\n            if (!(style as any).styleSheet) {\n                const cssText = `/*\n  @angular/flex-layout - workaround for possible browser quirk with mediaQuery listeners\n  see http://bit.ly/2sd4HMP\n*/\n@media ${query} {.fx-query-test{ }}`;\n                style.appendChild(document.createTextNode(cssText));\n            }\n\n            document.getElementsByTagName('head')[0].appendChild(style);\n\n            // Store in private global registry\n            list.forEach((mq) => ALL_STYLES[mq] = style);\n\n        } catch (e) {\n            logger.error(e);\n        }\n    }\n}\n\n/**\n * Always convert to unique list of queries; for iteration in ::registerQuery()\n */\nfunction normalizeQuery(mediaQuery?: string | string[]): string[] {\n    return (typeof mediaQuery === 'undefined') ? [] :\n        (typeof mediaQuery === 'string') ? [mediaQuery] : unique(mediaQuery);\n}\n\n/**\n * Filter duplicate mediaQueries in the list\n */\nfunction unique(list: string[]): string[] {\n    const seen: { [key: string]: boolean } = {};\n    return list.filter((item) => {\n        return seen.hasOwnProperty(item) ? false : (seen[item] = true);\n    });\n}\n","import {ChangeDetectionStrategy, Component, Directive, effect, inject, input, Signal, signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {MatIconButton} from '@angular/material/button';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatSidenav, MatSidenavContainer} from '@angular/material/sidenav';\nimport {MatToolbar} from '@angular/material/toolbar';\nimport {AUTH_PROVIDER, MAIN_LOGO} from '@dbg-riskit/angular-common';\nimport {AuthProvider} from '@dbg-riskit/common';\nimport {RiskFlexSpacerComponent} from './flex.spacer.component';\nimport {MatchMedia} from './match.media';\n\nconst SMALL_SCREEN_MEDIA_QUERY = (width: number) => `screen and (max-width:${width}px)`;\n\n@Directive({\n    selector: 'risk-layout-vertical',\n    host    : {\n        '[class.risk-layout-vertical]': 'true'\n    }\n})\nexport class RiskLayoutVerticalDirective {\n}\n\n@Directive({\n    selector: 'risk-layout-vertical-title',\n    host    : {\n        '[class.risk-layout-vertical-title]': 'true'\n    }\n})\nexport class RiskLayoutVerticalTitleDirective {\n}\n\n@Directive({\n    selector: 'risk-layout-vertical-icon',\n    host    : {\n        '[class.risk-layout-vertical-icon]': 'true'\n    }\n})\nexport class RiskLayoutVerticalIconDirective {\n}\n\n@Directive({\n    selector: 'risk-layout-horizontal',\n    host    : {\n        '[class.mat-toolbar-row]': 'true',\n        '[class.mat-toolbar-single-row]': 'true',\n        '[class.risk-layout-horizontal]': 'true'\n    }\n})\nexport class RiskLayoutHorizontalDirective {\n}\n\n@Directive({\n    selector: 'risk-layout-footer',\n    host    : {\n        '[class.risk-layout-footer]': 'true'\n    }\n})\nexport class RiskLayoutFooterDirective {\n}\n\n@Component({\n    selector       : 'risk-layout',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    templateUrl    : 'layout.component.html',\n    styleUrls      : [\n        '../../../component.scss',\n        'layout.component.scss'\n    ],\n    host           : {\n        '[class.risk-layout]': 'true'\n    },\n    imports        : [\n        MatIcon,\n        MatIconButton,\n        MatSidenav,\n        MatSidenavContainer,\n        MatToolbar,\n        RiskFlexSpacerComponent\n    ]\n})\nexport class RiskLayoutComponent {\n    private readonly authProvider = inject<AuthProvider>(AUTH_PROVIDER, {optional: true});\n    private readonly mainLogo = inject(MAIN_LOGO);\n    private readonly matchMedia = inject(MatchMedia);\n\n    public readonly smallScreenMenuVisible = input(true);\n\n    public readonly smallScreenWidth = input(600);\n    public readonly footerVisible = input(true);\n    public readonly toolbarBackgroundColor = input<string>();\n    public readonly backgroundColor = input<string>();\n\n    public readonly authStatus: Signal<boolean>;\n    public readonly mediaSmall = signal(false);\n\n    public constructor() {\n        this.authStatus = this.authProvider == null\n            ? signal(true)\n            : toSignal(this.authProvider.loggedInStream, {initialValue: false});\n\n        effect((onCleanup) => {\n            const query = SMALL_SCREEN_MEDIA_QUERY(this.smallScreenWidth());\n\n            const subscription = this.matchMedia.observe(query).subscribe(() => {\n                this.mediaSmall.set(this.matchMedia.isActive(query));\n            });\n\n            onCleanup(() => subscription.unsubscribe());\n        });\n    }\n\n    public get logo(): string {\n        return this.mainLogo;\n    }\n\n    public closeSideNav(sidenav: MatSidenav): void {\n        if (!this.authStatus()) {\n            sidenav.close();\n        }\n    }\n}\n","<mat-toolbar [style.backgroundColor]=\"toolbarBackgroundColor()\"\n             class=\"mat-elevation-z2\">\n    <div class=\"risk-layout-logo\">\n        <img [src]=\"logo\" alt=\"Company logo\">\n    </div>\n\n    @if (authStatus()) {\n        @if (!mediaSmall()) {\n            <ng-content select=\"[menu-horizontal], risk-layout-horizontal > *\"/>\n        }\n        @if (mediaSmall()) {\n            <ng-content select=\"[menu-vertical-title], risk-layout-vertical-title > *\"/>\n            <risk-flex-spacer/>\n            <ng-content select=\"[menu-vertical-icon], risk-layout-vertical-icon > *\"/>\n            @if (smallScreenMenuVisible()) {\n                <button (click)=\"sidenav.toggle()\"\n                        mat-icon-button\n                        type=\"button\"\n                >\n                    <mat-icon>menu</mat-icon>\n                </button>\n            }\n        }\n    }\n</mat-toolbar>\n\n<mat-sidenav-container [class.risk-layout-with-footer]=\"footerVisible()\"\n                       [style.backgroundColor]=\"backgroundColor()\">\n    <mat-sidenav #sidenav=\"matSidenav\" (click)=\"closeSideNav(sidenav)\">\n        <ng-content select=\"[menu-vertical], risk-layout-vertical > *\"/>\n    </mat-sidenav>\n\n    <div class=\"risk-layout-content\">\n        <ng-content/>\n    </div>\n</mat-sidenav-container>\n\n@if (footerVisible()) {\n    <div class=\"risk-layout-footer\">\n        <ng-content select=\"risk-layout-footer > *\"/>\n    </div>\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {ActivatedRoute, Router, UrlTree} from '@angular/router';\n\n@Directive({selector: '[riskSubLink]'})\nexport class RiskSubLinkDirective {\n    private readonly router = inject(Router);\n    private readonly route = inject(ActivatedRoute);\n\n    public readonly riskSubLink = input.required<unknown[] | string>();\n\n    public get urlTree(): UrlTree {\n        const value = this.riskSubLink();\n        let commands: unknown[];\n        if (value == null) {\n            commands = [];\n        } else {\n            commands = Array.isArray(value) ? value : [value];\n        }\n        return this.router.createUrlTree(commands, {\n            relativeTo: this.route\n        });\n    }\n}\n","import {computed, contentChildren, Directive, effect, ElementRef, inject, input, Renderer2} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {NavigationEnd, Router, RouterLink} from '@angular/router';\nimport {filter} from 'rxjs/operators';\nimport {RiskSubLinkDirective} from './sub.link.directive';\n\n@Directive({\n    selector: '[riskLinkActive]',\n    exportAs: 'riskLinkActive'\n})\nexport class RiskLinkActiveDirective {\n    private readonly router = inject(Router);\n    private readonly element = inject(ElementRef<HTMLElement>);\n    private readonly renderer = inject(Renderer2);\n\n    private readonly selfRouterLink = inject(RouterLink, {\n        self    : true,\n        optional: true\n    });\n    private readonly selfSubLink = inject(RiskSubLinkDirective, {\n        self    : true,\n        optional: true\n    });\n\n    public readonly links = contentChildren(RouterLink, {descendants: true});\n    public readonly subLinks = contentChildren(RiskSubLinkDirective, {descendants: true});\n\n    // Classes to toggle\n    private classes = computed<string[]>(() => {\n        const value = this.menuLinkActive();\n        const classes = Array.isArray(value) ? value : value.split(' ');\n        return classes.filter((c) => !!c);\n    });\n\n    // TODO: Find more signal-native way to do this when available\n    private readonly routerNavigated = toSignal(\n        this.router.events.pipe(\n            filter(e => e instanceof NavigationEnd)\n        )\n    );\n\n    public readonly menuLinkActive = input.required<string[] | string>({alias: 'riskLinkActive'});\n    public readonly riskLinkActiveOptions = input<{ exact: boolean }>({exact: false}, {alias: 'riskLinkActiveOptions'});\n\n    public readonly isActive = computed(() => {\n        // Track all reactive dependencies\n        this.routerNavigated();\n\n        if (!this.router.navigated) {\n            return false;\n        }\n\n        const activeFn = (link: RouterLink | RiskSubLinkDirective | null) =>\n            link?.urlTree ? this.router.isActive(link.urlTree, this.riskLinkActiveOptions().exact) : false;\n        const selfActive = activeFn(this.selfRouterLink)\n                           || activeFn(this.selfSubLink);\n        const descendantActive = this.links().some(activeFn)\n                                 || this.subLinks().some(activeFn);\n        return selfActive\n               || descendantActive;\n    });\n\n    public constructor() {\n        effect(() => {\n            const active = this.isActive();\n            const classList = this.classes();\n\n            classList.forEach(c => {\n                if (active) {\n                    this.renderer.addClass(this.element.nativeElement, c);\n                } else {\n                    this.renderer.removeClass(this.element.nativeElement, c);\n                }\n            });\n        });\n    }\n\n}\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {MatToolbar} from '@angular/material/toolbar';\n\n@Component({\n    selector       : 'risk-toolbar',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template       : '<mat-toolbar class=\"mat-elevation-z1\"><ng-content /></mat-toolbar>',\n    styleUrls      : [\n        '../../../component.scss',\n        'toolbar.component.scss'\n    ],\n    host           : {\n        '[class.risk-toolbar]': 'true'\n    },\n    imports        : [MatToolbar]\n})\nexport class RiskToolbarComponent {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}