{"version":3,"file":"dbg-riskit-angular-testing.mjs","sources":["../../../../pkg/dbg-riskit/angular-testing/src/lib/environment.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/events.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/http.service.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/message.def.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/page.base.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/download.menu.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/data.table.definition.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/highlighter.directive.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/by.util.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/layout.component.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/link.definition.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/link.only.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/login.menu.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/login.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/message.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/auth/auth.routing.flow.service.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/auth/auth.service.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/auth/well.known.service.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/router.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/login.menu.stub.component.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/utils.ts","../../../../pkg/dbg-riskit/angular-testing/src/public_api.ts","../../../../pkg/dbg-riskit/angular-testing/src/dbg-riskit-angular-testing.ts"],"sourcesContent":["// Has to be first in this order\nimport '@dbg-riskit/angular-polyfill';\n\n// Other modules follow\nimport {getTestBed} from '@angular/core/testing';\nimport {BrowserDynamicTestingModule, platformBrowserDynamicTesting} from '@angular/platform-browser-dynamic/testing';\n\nexport const COMPILE_TIMEOUT_INTERVAL = Math.pow(2, 31) - 1;\n\nexport function initTestEnvironment() {\n    Error.stackTraceLimit = 10;\n\n    jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000;\n\n    // TODO: Quick fix for memory leaks\n    window.addEventListener = () => {\n        return;\n    };\n    window.document.addEventListener = () => {\n        return;\n    };\n\n    // First, initialize the Angular testing environment.\n    getTestBed().initTestEnvironment(\n        BrowserDynamicTestingModule,\n        platformBrowserDynamicTesting(), {\n            teardown: {destroyAfterEach: false}\n        }\n    );\n}\n","import {DebugElement} from '@angular/core';\n\nimport {tick} from '@angular/core/testing';\n\n/** Button events to pass to `DebugElement.triggerEventHandler` for RouterLink event handler */\nexport const BUTTON_CLICK_EVENTS = {\n    left : {button: 0},\n    right: {button: 2}\n};\n\n/** Simulate element click. Defaults to mouse left-button click event. */\nexport function click(el: DebugElement | HTMLElement, eventObj: any = BUTTON_CLICK_EVENTS.left): void {\n    if (el instanceof HTMLElement) {\n        el.click();\n    } else {\n        el.triggerEventHandler('click', eventObj);\n    }\n}\n\nexport function setNgModelValue(element: DebugElement, value: string, realAsync = false): void {\n    if (!(element.nativeElement instanceof HTMLInputElement)) {\n        throw new Error('Not an instance of HTMLInputElement');\n    }\n    const input: HTMLInputElement = element.nativeElement;\n    input.value = value;\n\n    dispatchEvent(input, 'input'); // tell Angular\n    if (!realAsync) {\n        tick();\n    }\n}\n\nexport function setNgModelSelectValue(element: DebugElement, selectedIndex: number, realAsync = false): void {\n    if (!(element.nativeElement instanceof HTMLSelectElement)) {\n        throw new Error('Not an instance of HTMLInputElement');\n    }\n    const input: HTMLSelectElement = element.nativeElement;\n    input.selectedIndex = selectedIndex;\n\n    dispatchEvent(input, 'change'); // tell Angular\n    if (!realAsync) {\n        tick();\n    }\n}\n\nexport function dispatchEvent(element: DebugElement | HTMLElement | Window, eventName: string): void {\n    if (element instanceof HTMLElement) {\n        element.dispatchEvent(newEvent(eventName));\n    } else if (element instanceof Window) {\n        element.dispatchEvent(newEvent(eventName));\n    } else {\n        element.nativeElement.dispatchEvent(newEvent(eventName));\n    }\n}\n\n/**\n * Create custom DOM event the old fashioned way\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Event/initEvent\n * Although officially deprecated, some browsers (phantom) don't accept the preferred \"new Event(eventName)\"\n */\nexport function newEvent(eventName: string, bubbles = false, cancelable = false): CustomEvent {\n    const evt = document.createEvent('CustomEvent');  // MUST be 'CustomEvent'\n    evt.initCustomEvent(eventName, bubbles, cancelable, null);\n    return evt;\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {Request, RequestWithData} from '@dbg-riskit/angular-common';\nimport {ErrorMessage} from '@dbg-riskit/common';\nimport {Observable, of, throwError as _throwError, timer} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\n\nexport const FAKE_HTTP_ASYNC_TIMEOUT = 1000;\n\n@Injectable()\nexport class HttpServiceStub<T> {\n\n    private value: T[] = [];\n    private error: ErrorMessage[] = [];\n\n    public unauthorized: EventEmitter<ErrorMessage> = new EventEmitter();\n\n    public returnValue(value: T) {\n        this.value.push(value);\n    }\n\n    public popReturnValue(): T | undefined {\n        return this.value.pop();\n    }\n\n    public shiftReturnValue(): T | undefined {\n        return this.value.shift();\n    }\n\n    public throwError(value: ErrorMessage) {\n        this.error.push(value);\n    }\n\n    public get(request: Request<T>): Observable<T | undefined> {\n        if (this.error.length) {\n            const error = this.error.shift();\n            return _throwError(error);\n        }\n        const value: T | undefined = this.value.shift();\n        return of(value);\n    }\n\n    public post(request: RequestWithData<T>): Observable<T | undefined> {\n        return this.get(request);\n    }\n}\n\n@Injectable()\nexport class HttpAsyncServiceStub<T> extends HttpServiceStub<T> {\n\n    public get(request: Request<T>, auth = true): Observable<T | undefined> {\n        return timer(FAKE_HTTP_ASYNC_TIMEOUT).pipe(\n            switchMap(() => super.get(request))\n        );\n    }\n\n    public post(request: RequestWithData<T>): Observable<T | undefined> {\n        return this.get(request);\n    }\n}\n","import {DebugElement} from '@angular/core';\nimport {MatCard} from '@angular/material/card';\nimport {By} from '@angular/platform-browser';\n\nexport class RiskMessageComponentDef {\n\n    public constructor(public debugElement: DebugElement) {\n        if (debugElement == null) {\n            throw new Error('Debug element not found!');\n        }\n    }\n\n    public get text(): string {\n        return this.debugElement.query(By.directive(MatCard)).nativeElement.textContent.replace(/\\n\\s*/g, ' ')\n            .replace(/\\r\\s*/g, ' ').trim();\n    }\n}\n","import {DebugElement} from '@angular/core';\nimport {ComponentFixture, discardPeriodicTasks, tick} from '@angular/core/testing';\nimport {By} from '@angular/platform-browser';\nimport {RISK_INITIAL_LOAD_SELECTOR, RISK_NO_DATA_SELECTOR} from '@dbg-riskit/angular-view';\nimport {FAKE_HTTP_ASYNC_TIMEOUT} from '../stubs/http.service.stub';\nimport {RiskMessageComponentDef} from './message.def';\n\nexport class Page<T> {\n\n    public debugElement: DebugElement;\n    public component: T;\n    private _timeOffset = 0;\n\n    public constructor(protected fixture: ComponentFixture<T>) {\n        this.debugElement = fixture.debugElement;\n        this.component = this.debugElement.componentInstance;\n    }\n\n    public detectChanges(millis = 0): void {\n        this.fixture.detectChanges();\n        tick(millis);\n        this._timeOffset += millis;\n    }\n\n    public advanceAndDetectChanges(millis = 0): void {\n        tick(millis);\n        this._timeOffset += millis;\n        this.detectChanges();\n    }\n\n    public advanceHTTP(): void {\n        this.advanceAndDetectChanges(FAKE_HTTP_ASYNC_TIMEOUT);\n    }\n\n    public advanceAndDetectChangesUsingOffset(millis: number): void {\n        this.advanceAndDetectChanges(millis - this._timeOffset);\n        this.resetTimeOffset();\n    }\n\n    public resetTimeOffset(): void {\n        this._timeOffset = 0;\n    }\n\n    public destroy() {\n        this.fixture.destroy();\n        try {\n            // Move a lot into fututre ;)\n            tick(60 * 60 * 1000);\n            discardPeriodicTasks();\n        } catch (ignore) {\n            // Nothing to do...\n        }\n    }\n\n    public setInput(inputName: string, value: unknown): void {\n        this.fixture.componentRef.setInput(inputName, value);\n        this.detectChanges();\n    }\n}\n\nexport class PageWithLoading<T> extends Page<T> {\n\n    public constructor(fixture: ComponentFixture<T>) {\n        super(fixture);\n    }\n\n    public get initialLoadComponent(): RiskMessageComponentDef | null {\n        const element = this.debugElement.query(By.css(RISK_INITIAL_LOAD_SELECTOR));\n        if (element) {\n            return new RiskMessageComponentDef(element);\n        }\n        return null;\n    }\n\n    public get noDataComponent(): RiskMessageComponentDef | null {\n        const element = this.debugElement.query(By.css(RISK_NO_DATA_SELECTOR));\n        if (element) {\n            return new RiskMessageComponentDef(element);\n        }\n        return null;\n    }\n}\n","import {Component, DebugElement} from '@angular/core';\nimport {ComponentFixture} from '@angular/core/testing';\nimport {MatMenuItem, MatMenuTrigger} from '@angular/material/menu';\nimport {By} from '@angular/platform-browser';\nimport {\n    AbstractRiskFileDownloadDirective,\n    RiskCSVDownloadMenuComponent,\n    RiskCSVFileDownloadDirective,\n    RiskFileDownloadDirective\n} from '@dbg-riskit/angular-file';\nimport 'file-saver';\nimport {Observable} from 'rxjs';\nimport {click} from '../events';\nimport {Page} from './page.base';\nimport Spy = jasmine.Spy;\n\nexport class RiskCSVDownloadMenuPage extends Page<RiskCSVDownloadMenuComponent> {\n\n    public constructor(fixture: ComponentFixture<RiskCSVDownloadMenuComponent>) {\n        super(fixture);\n    }\n\n    public get downloadWindowsLink(): DownloadLink {\n        // Open the menu first\n        click(this.debugElement.query(By.directive(MatMenuTrigger)));\n        this.detectChanges(500);\n\n        return new DownloadLink(this.debugElement.queryAll(By.directive(MatMenuItem))[0], this);\n    }\n\n    public get downloadUnixLink(): DownloadLink {\n        // Open the menu first\n        click(this.debugElement.query(By.directive(MatMenuTrigger)));\n        this.detectChanges(500);\n\n        return new DownloadLink(this.debugElement.queryAll(By.directive(MatMenuItem))[1], this);\n    }\n}\n\nexport class DownloadLink {\n    private _saveBlobSpy?: jasmine.Spy;\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    private _blobSpy?: jasmine.Spy;\n\n    public get blobSpy(): Spy {\n        this.setupBlobConstructorSpy();\n        return this._blobSpy!;\n    }\n\n    public get saveSpy(): Spy {\n        this.setupSaveBlobSpy();\n        return this._saveBlobSpy!;\n    }\n\n    public click(): void {\n        this.setupBlobConstructorSpy();\n        this.setupSaveBlobSpy();\n        click(this.element);\n        this.page.detectChanges();\n    }\n\n    private setupBlobConstructorSpy() {\n        if (!this._blobSpy) {\n            let downloadDirective: AbstractRiskFileDownloadDirective<unknown>;\n            try {\n                downloadDirective = this.element.injector.get(RiskCSVFileDownloadDirective);\n            } catch (_) {\n                downloadDirective = this.element.injector.get(RiskFileDownloadDirective);\n            }\n            this._blobSpy = spyOn(downloadDirective, 'createBlob').and.callThrough();\n        }\n    }\n\n    private setupSaveBlobSpy() {\n        if (!this._saveBlobSpy) {\n            this._saveBlobSpy = spyOn(window, 'saveAs');\n        }\n    }\n}\n\n@Component({\n    template: `\n        <a [risk-download]=\"data\"\n           [risk-download-content-type]=\"contentType\"\n           [risk-download-filename]=\"filename\">Download</a>\n    `,\n    imports : [RiskFileDownloadDirective]\n})\nexport class DownloadTestComponent {\n    public data: any | Observable<any>;\n\n    public contentType?: string;\n\n    public filename?: string;\n}\n\nexport class DownloadTestComponentPage extends Page<DownloadTestComponent> {\n\n    public constructor(fixture: ComponentFixture<DownloadTestComponent>) {\n        super(fixture);\n    }\n\n    public get downloadLink(): DownloadLink {\n        return new DownloadLink(this.debugElement.query(By.directive(RiskFileDownloadDirective)), this);\n    }\n}\n","import {Component, DebugElement, DebugNode, input, signal} from '@angular/core';\nimport {ComponentFixture} from '@angular/core/testing';\nimport {MatIconAnchor, MatIconButton} from '@angular/material/button';\nimport {MatButtonToggle} from '@angular/material/button-toggle';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {By} from '@angular/platform-browser';\nimport {\n    HIGHLIGHTER_CLASS,\n    OrderingCriteria,\n    RiskDataTableColumnCellDirective,\n    RiskDataTableColumnDirective,\n    RiskDataTableColumnFooterDirective,\n    RiskDataTableColumnGroupDirective,\n    RiskDataTableComponent,\n    RiskDataTablePagingComponent,\n    RiskDataTableRowDetailDirective,\n    RiskDataTableRowDetailExpanderComponent\n} from '@dbg-riskit/angular-datatable';\nimport {secureRandom, ValueGetter} from '@dbg-riskit/common';\nimport {click} from '../events';\nimport {Page} from './page.base';\n\nexport class RiskDataTableDefinition {\n\n    public constructor(public debugElement: DebugElement,\n                       private page: { detectChanges: () => void, advanceAndDetectChanges: () => void }) {\n    }\n\n    public get component(): RiskDataTableComponent<unknown, unknown> {\n        return this.debugElement.componentInstance;\n    }\n\n    public get data(): any[] {\n        return this.component.plainData;\n    }\n\n    public get element(): DebugElement {\n        return this.debugElement.query(By.css('.risk-data-table-wrapper > table'));\n    }\n\n    public get header(): TableHeader {\n        return new TableHeader(this.debugElement.query((de) => de.references.mainHeader), this.page);\n    }\n\n    public get sorting(): TableSorting {\n        return new TableSorting(this, this.page);\n    }\n\n    public get body(): TableBody {\n        return new TableBody(this.debugElement.query((de) => de.references.mainBody), this.page);\n    }\n\n    public get footer(): TableFooter {\n        return new TableFooter(this.debugElement.query((de) => de.references.mainFooter));\n    }\n\n    public get recordsCount(): RecordsCount {\n        return new RecordsCount(this.debugElement.query(By.css('.risk-data-table-page-count')));\n    }\n\n    public get pager(): Pager {\n        return new Pager(this.debugElement.query(By.directive(RiskDataTablePagingComponent)), this.page);\n    }\n}\n\n// <editor-fold defaultstate=\"collapsed\" desc=\"Table header\">\n\nexport class TableHeader {\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public get rows(): TableHeaderRow[] {\n        return this.element.queryAll(By.css('tr')).map((element: DebugElement) => {\n            return new TableHeaderRow(element, this.page);\n        });\n    }\n\n    public get cells(): TableHeaderCell[] {\n        return this.element.queryAll(By.css('th')).map((element: DebugElement) => {\n            return new TableHeaderCell(element, this.page);\n        });\n    }\n\n}\n\nexport class TableHeaderRow {\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public get cells(): TableHeaderCell[] {\n        return this.element.queryAll(By.css('th')).map((element: DebugElement) => {\n            return new TableHeaderCell(element, this.page);\n        });\n    }\n}\n\nexport class TableHeaderCell {\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public get sortingHandle(): SortingHandle | null {\n        const handle = this.element.query(By.directive(MatIconButton));\n        if (handle) {\n            return new SortingHandle(this.page, handle);\n        }\n        return null;\n    }\n\n    public get tooltip(): string | null {\n        const handle = this.element.query(By.directive(MatTooltip));\n        if (handle) {\n            return handle.injector.get(MatTooltip).message;\n        }\n        return null;\n    }\n\n    public get title(): string {\n        const textNode = this.element.childNodes.find((node: DebugNode) => node.nativeNode.nodeType === Node.TEXT_NODE);\n        if (textNode != null) {\n            return textNode\n                .nativeNode.textContent.trim();\n        }\n        return '';\n    }\n\n    public get colspan(): number {\n        return this.element.nativeElement.colspan;\n    }\n\n    public get rowspan(): number {\n        return this.element.nativeElement.rowspan;\n    }\n\n}\n\n// <editor-fold defaultstate=\"collapsed\" desc=\"Sorting\">\n\nexport class TableSorting {\n\n    public constructor(private table: RiskDataTableDefinition, private page: { detectChanges: () => void }) {\n    }\n\n    public get handles(): SortingHandle[] {\n        const handles = this.table.debugElement.query((de) => de.references.mainHeader)\n            .queryAll(By.directive(MatIconButton));\n        if (!handles) {\n            return [];\n        }\n        return handles.map((handle: DebugElement) => {\n            return new SortingHandle(this.page, handle);\n        });\n    }\n\n    public get detailRowHandles(): SortingHandle[] | null {\n        const handles = this.table.debugElement.query(By.css('.risk-data-table-detail')).query(By.css('thead'))\n            .queryAll(By.directive(MatIconButton));\n        if (!handles) {\n            return null;\n        }\n        return handles.map((handle: DebugElement) => {\n            return new SortingHandle(this.page, handle);\n        });\n    }\n\n    public get currentOrdering(): Array<OrderingCriteria<any>> {\n        return (this.table.component as any).ordering();\n    }\n\n    public checkSorting(firstNRows: number = this.table.component.rows.length,\n                        criterium?: OrderingCriteria<any>): void {\n        // WARN: call data once as it calls .map on all table rows\n        const data = this.table.data;\n\n        let ordering: Array<OrderingCriteria<any>>;\n        if (criterium) {\n            ordering = [criterium].concat((this.table.component as any)._defaultOrdering());\n        } else {\n            ordering = this.currentOrdering;\n        }\n        for (let i = 1; i < Math.min(data.length, firstNRows); i++) {\n            ordering.some((criteria: OrderingCriteria<any>) => {\n                //noinspection EqualityComparisonWithCoercionJS\n                const valueA: any = criteria.get(data[i - 1]);\n                const valueB: any = criteria.get(data[i]);\n                if (valueA == null && valueB == null) {\n                    return false;\n                }\n                expect(valueA).not.toBeNull();\n                expect(valueA).not.toBeUndefined();\n                if (valueB != null) {\n                    if (criteria.descending) {\n                        expect(valueA >= valueB)\n                            .toBeTruthy('Expect: ' + valueA + ' >= '\n                                        + valueB);\n                    } else {\n                        expect(valueA <= valueB)\n                            .toBeTruthy('Expect: ' + valueA + ' <= '\n                                        + valueB);\n                    }\n                }\n                return valueA !== valueB;\n            });\n        }\n    }\n}\n\nexport class SortingHandle {\n\n    public constructor(private page: { detectChanges: () => void }, private handle: DebugElement) {\n    }\n\n    public click() {\n        click(this.handle);\n        this.page.detectChanges();\n    }\n}\n\n// </editor-fold>\n\n// </editor-fold>\n\n// <editor-fold defaultstate=\"collapsed\" desc=\"Table body\">\n\nexport class TableBody {\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public get rows(): TableBodyRow[] {\n        return this.element.queryAll((de) => de.references.masterRow).map((element: DebugElement) => {\n            return new TableBodyRow(element, this.page);\n        });\n    }\n\n    public get cells(): TableBodyCell[] {\n        let cells: TableBodyCell[] = [];\n        this.element.queryAll((de) => de.references.masterRow).forEach((row: DebugElement) => {\n            cells = cells.concat(row.queryAll(By.css('td')).map((cell: DebugElement) => {\n                return new TableBodyCell(cell);\n            }));\n        });\n        return cells;\n    }\n}\n\nexport class TableBodyRow {\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public get expander(): RowExpander {\n        return new RowExpander(\n            this.element.query(By.directive(RiskDataTableRowDetailExpanderComponent))\n                .query(By.directive(MatIconAnchor)));\n    }\n\n    public get cells(): TableBodyCell[] {\n        return this.element.queryAll(By.css('td')).map((element: DebugElement) => {\n            return new TableBodyCell(element);\n        });\n    }\n\n    public get rowDetail(): TableBodyDetail | null {\n        const parent = this.element.parent;\n        if (parent != null) {\n            const next = parent.children[parent.children.indexOf(this.element) + 1];\n            if (next && !next.references.masterRow) {\n                return new TableBodyDetail(next, this.page);\n            }\n        }\n        return null;\n    }\n\n    public get highlighted(): boolean {\n        return this.element.nativeElement.classList.contains(HIGHLIGHTER_CLASS);\n    }\n\n    public expandRow(): void {\n        click(this.element);\n        this.page.detectChanges();\n    }\n}\n\nexport class RowExpander {\n    public constructor(public element: DebugElement) {\n    }\n\n    public get icon(): string {\n        return this.element.query(By.directive(MatIcon)).nativeElement.textContent.trim();\n    }\n\n    public get opened(): boolean {\n        return this.icon === 'expand_less';\n    }\n\n    public get closed(): boolean {\n        return this.icon === 'expand_more';\n    }\n}\n\nexport class TableBodyCell {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get colspan(): number {\n        return this.element.nativeElement.colspan;\n    }\n\n    public get rowspan(): number {\n        return this.element.nativeElement.rowspan;\n    }\n}\n\n// <editor-fold defaultstate=\"collapsed\" desc=\"Row detail\">\n\nexport class TableBodyDetail {\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public get body(): TableBodyDetailBody {\n        return new TableBodyDetailBody(this.element.query(By.css('tbody')));\n    }\n\n    public get highlighted(): boolean {\n        return this.element.nativeElement.classList.contains(HIGHLIGHTER_CLASS);\n    }\n\n    public get colspan(): number {\n        return this.element.children[0].nativeElement.colspan;\n    }\n\n    public header(): TableHeader {\n        return new TableHeader(this.element.query(By.css('thead')), this.page);\n    }\n}\n\nexport class TableBodyDetailBody {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get rows(): TableBodyDetailRow[] {\n        return this.element.queryAll(By.css('tr')).map((element: DebugElement) => {\n            return new TableBodyDetailRow(element);\n        });\n    }\n\n    public get cells(): TableBodyCell[] {\n        let cells: TableBodyCell[] = [];\n        this.element.queryAll(By.css('tr')).forEach((row: DebugElement) => {\n            cells = cells.concat(row.queryAll(By.css('td')).map((cell: DebugElement) => {\n                return new TableBodyCell(cell);\n            }));\n        });\n        return cells;\n    }\n}\n\nexport class TableBodyDetailRow {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get cells(): TableBodyCell[] {\n        return this.element.queryAll(By.css('td')).map((element: DebugElement) => {\n            return new TableBodyCell(element);\n        });\n    }\n}\n\n// </editor-fold>\n\n// </editor-fold>\n\n// <editor-fold defaultstate=\"collapsed\" desc=\"Table footer\">\n\nexport class TableFooter {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get rows(): TableFooterRow[] {\n        return this.element.queryAll(By.css('tr')).map((element: DebugElement) => {\n            return new TableFooterRow(element);\n        });\n    }\n\n    public get cells(): TableBodyCell[] {\n        let cells: TableBodyCell[] = [];\n        this.element.queryAll(By.css('tr')).forEach((row: DebugElement) => {\n            cells = cells.concat(row.queryAll(By.css('th')).map((cell: DebugElement) => {\n                return new TableBodyCell(cell);\n            }));\n        });\n        return cells;\n    }\n}\n\nexport class TableFooterRow {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get cells(): TableBodyCell[] {\n        return this.element.queryAll(By.css('th')).map((element: DebugElement) => {\n            return new TableBodyCell(element);\n        });\n    }\n}\n\n// </editor-fold>\n\nexport class RecordsCount {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get message(): string {\n        return this.element.nativeElement.textContent;\n    }\n}\n\nexport class Pager {\n\n    public constructor(public element: DebugElement,\n                       private page: { detectChanges: () => void, advanceAndDetectChanges: () => void }) {\n    }\n\n    public get pageButtons(): DebugElement[] {\n        return this.element.queryAll(By.directive(MatButtonToggle));\n    }\n\n    public expectLeadingButtonsDisabled() {\n        for (let i = 0; i < 2; i++) {\n            expect(this.pageButtons[i].classes['mat-button-toggle-disabled'])\n                .toBe(true, 'First two are disabled.');\n        }\n    }\n\n    public expectLeadingButtonsNotDisabled() {\n        for (let i = 0; i < 2; i++) {\n            expect(this.pageButtons[i].classes['mat-button-toggle-disabled'])\n                .not.toBe(true, 'First two are not disabled.');\n        }\n    }\n\n    public expectTrailingButtonsDisabled() {\n        for (let i = this.pageButtons.length - 1; i > this.pageButtons.length - 3; i--) {\n            expect(this.pageButtons[i].classes['mat-button-toggle-disabled'])\n                .toBe(true, 'Last two are disabled.');\n        }\n    }\n\n    public expectTrailingButtonsNotDisabled() {\n        for (let i = this.pageButtons.length - 1; i > this.pageButtons.length - 3; i--) {\n            expect(this.pageButtons[i].classes['mat-button-toggle-disabled'])\n                .not.toBe(true, 'Last two are not disabled.');\n        }\n    }\n\n    public expectButtonNumbers(numbers: number[]) {\n        for (let i = 0; i < numbers.length; i++) {\n            expect(this.pageButtons[i + 2].query(By.css('.mat-button-toggle-label-content'))\n                .nativeElement.textContent.trim())\n                .toEqual(numbers[i] + '', 'Button numbers are correct');\n        }\n    }\n\n    public expectButtonActive(index: number) {\n        expect(this.pageButtons[index].classes['mat-button-toggle-checked'])\n            .toBe(true, 'Button is active.');\n    }\n\n    public click(index: number) {\n        click(this.pageButtons[index].query(By.css('.mat-button-toggle-label-content')).nativeElement);\n        this.page.detectChanges();\n        this.page.advanceAndDetectChanges();\n    }\n}\n\nexport function chceckSorting(page: { detectChanges: () => void, dataTable: RiskDataTableDefinition },\n                              criteria: Array<ValueGetter<any>>) {\n    page.dataTable.sorting.checkSorting(150);\n\n    page.dataTable.sorting.handles.forEach((handle: SortingHandle, index: number) => {\n        // Tigger sort based on a handle\n        handle.click();\n        page.detectChanges();\n\n        // Check the sorting\n        page.dataTable.sorting.checkSorting(150, {\n            get: criteria[index]\n        });\n\n        // Tigger sort based on a handle\n        handle.click();\n        page.detectChanges();\n\n        // Check the sorting\n        page.dataTable.sorting.checkSorting(150, {\n            get       : criteria[index],\n            descending: true\n        });\n    });\n}\n\nexport class DataTableDefinitionHosted extends Page<TestDataTableHostComponent> {\n\n    public constructor(fixture: ComponentFixture<TestDataTableHostComponent>) {\n        super(fixture);\n    }\n\n    public get dataTable(): RiskDataTableDefinition {\n        return new RiskDataTableDefinition(this.debugElement.query(By.directive(RiskDataTableComponent)), this);\n    }\n\n    public setData(data: any): void {\n        this.fixture.componentRef.setInput('data', data);\n        this.detectChanges();\n    }\n\n    public setPageSize(size: number): void {\n        this.fixture.componentRef.setInput('pageSize', size);\n        this.detectChanges();\n    }\n}\n\n@Component({\n    template: `\n        <risk-data-table [data]=\"data()\"\n                         [footer]=\"footer()\"\n                         [pageSize]=\"pageSize()\"\n                         [defaultOrdering]=\"defaultOrdering\"\n                         [striped]=\"true\">\n            <risk-data-table-column title=\"Test Column 1\"\n                                    [sortingKey]=\"valueGetter\">\n                <ng-template let-record=\"row\" risk-data-table-cell>\n                    {{ record.value1 }}\n                </ng-template>\n            </risk-data-table-column>\n            <risk-data-table-column>\n                <ng-template risk-data-table-cell let-record=\"row\" let-expanded=\"expanded\">\n                    <risk-data-table-detail-expander [expanded]=\"expanded\"/>\n                </ng-template>\n                <ng-template risk-data-table-footer-cell let-footer=\"footer\">\n                    {{ footer.value1 }}\n                </ng-template>\n            </risk-data-table-column>\n            <!-- Sub detail -->\n            <risk-data-table-detail-row>\n                <risk-data-table-column-group>\n                    <risk-data-table-column title=\"Test Detail Column 1\"\n                                            [sortingKey]=\"valueGetter\">\n                        <ng-template risk-data-table-cell let-record=\"row\">\n                            {{ record.value1 }}\n                        </ng-template>\n                    </risk-data-table-column>\n                </risk-data-table-column-group>\n                <risk-data-table-column-group>\n                    <risk-data-table-column title=\"Test Detail Column 2\">\n                        <ng-template risk-data-table-cell let-record=\"row\">\n                            {{ record.value2 }}\n                        </ng-template>\n                    </risk-data-table-column>\n                    <risk-data-table-column title=\"Test Detail Column 3\">\n                        <ng-template risk-data-table-cell let-record=\"row\">\n                            {{ record.value3 }}\n                        </ng-template>\n                    </risk-data-table-column>\n                </risk-data-table-column-group>\n                <risk-data-table-column-group/>\n            </risk-data-table-detail-row>\n        </risk-data-table>`,\n    imports : [\n        RiskDataTableColumnCellDirective,\n        RiskDataTableColumnDirective,\n        RiskDataTableColumnFooterDirective,\n        RiskDataTableColumnGroupDirective,\n        RiskDataTableComponent,\n        RiskDataTableRowDetailDirective,\n        RiskDataTableRowDetailExpanderComponent\n    ]\n})\nexport class TestDataTableHostComponent {\n    private static readonly defaultData: any[] = (() => {\n        const data = [];\n        for (let i = 0; i < 500; i++) {\n            data.push({\n                value1: Math.floor(secureRandom() * 20) + ' - value 1',\n                value2: Math.floor(secureRandom() * 20) + ' - value 2',\n                value3: Math.floor(secureRandom() * 20) + ' - value 3'\n            });\n        }\n        return data;\n    })();\n\n    public readonly data = input<any[]>(TestDataTableHostComponent.defaultData);\n    public readonly pageSize = input(20);\n    public readonly footer = signal<any>(TestDataTableHostComponent.defaultData[0]);\n\n    public readonly defaultOrdering = [\n        {\n            get       : (record: any) => {\n                return record.value3;\n            },\n            descending: true\n        },\n        (record: any) => {\n            return record.value2;\n        }\n    ];\n\n    public readonly valueGetter = (record: any) => {\n        return record.value1;\n    };\n}\n","import {Component, DebugElement} from '@angular/core';\nimport {ComponentFixture} from '@angular/core/testing';\nimport {By} from '@angular/platform-browser';\nimport {RiskHighlighterDirective, Row} from '@dbg-riskit/angular-datatable';\nimport {Page} from './page.base';\n\n@Component({\n    template: `\n        <div [risk-data-table-highlighter]=\"trackBy\" [risk-data-table-highlighter-context]=\"context\"></div>`,\n    imports : [RiskHighlighterDirective]\n})\nexport class RiskHighLighterDirectiveTestComponent {\n\n    public context?: { row: any, storage?: any, index: number, enabled: boolean };\n\n    public trackBy(index: number, row: Row<any>): any {\n        return row.rowData;\n    }\n}\n\nexport class HighLighterDirectivePage extends Page<RiskHighLighterDirectiveTestComponent> {\n\n    public constructor(fixture: ComponentFixture<RiskHighLighterDirectiveTestComponent>) {\n        super(fixture);\n    }\n\n    public get highlightedElement(): DebugElement {\n        return this.debugElement.query(By.directive(RiskHighlighterDirective));\n    }\n\n    public get classList(): DOMTokenList {\n        return this.highlightedElement.nativeElement.classList;\n    }\n\n    public get highlighter(): RiskHighlighterDirective<unknown> {\n        return this.highlightedElement.injector.get(RiskHighlighterDirective);\n    }\n}\n","import {Predicate} from '@angular/core';\n\n// @dynamic\nexport class ByUtil {\n\n    public static and<T>(...predicates: Array<Predicate<T>>): Predicate<T> {\n        return (val: T) => {\n            return predicates.every((predicate: Predicate<T>) => predicate(val));\n        };\n    }\n\n    public static or<T>(...predicates: Array<Predicate<T>>): Predicate<T> {\n        return (val: T) => {\n            return predicates.some((predicate: Predicate<T>) => predicate(val));\n        };\n    }\n\n    public static not<T>(predicate: Predicate<T>): Predicate<T> {\n        return (val: T) => {\n            return !predicate(val);\n        };\n    }\n}\n","import {Component, DebugElement} from '@angular/core';\nimport {MatSidenav, MatSidenavContainer} from '@angular/material/sidenav';\nimport {MatToolbar} from '@angular/material/toolbar';\nimport {By} from '@angular/platform-browser';\nimport {\n    RiskLayoutComponent,\n    RiskLayoutHorizontalDirective,\n    RiskLayoutVerticalDirective\n} from '@dbg-riskit/angular-view';\nimport {ByUtil} from '../by.util';\nimport {Page} from './page.base';\n\nexport class RiskLayoutComponentDefinition {\n\n    public constructor(public debugElement: DebugElement,\n                       private page: { advanceAndDetectChanges: (milis?: number) => void }) {\n    }\n\n    public get component(): RiskLayoutComponent {\n        return this.debugElement.componentInstance;\n    }\n\n    public get headToolbar(): DebugElement {\n        return this.debugElement.query(ByUtil.and(By.directive(MatToolbar), By.css('.mat-elevation-z2')));\n    }\n\n    public get logo(): DebugElement {\n        return this.headToolbar.query(By.css('.risk-layout-logo'));\n    }\n\n    public get menu(): DebugElement[] {\n        return this.headToolbar.queryAll(ByUtil.or(\n            By.css('[menu-horizontal]'),\n            By.css('risk-layout-horizontal')));\n    }\n\n    public get sideNavContainer(): DebugElement {\n        return this.debugElement.query(By.directive(MatSidenavContainer));\n    }\n\n    public get sideNav(): DebugElement {\n        return this.sideNavContainer.query(By.directive(MatSidenav));\n    }\n\n    public get sideNavMenu(): DebugElement[] {\n        return this.sideNav.queryAll(ByUtil.or(\n            By.css('[menu-vertical]'),\n            By.css('risk-layout-vertical')));\n    }\n\n    public get content(): DebugElement {\n        return this.sideNavContainer.query(By.css('.risk-layout-content'));\n    }\n\n    public openSideNav(): void {\n        (this.sideNav.componentInstance as MatSidenav).open();\n        this.page.advanceAndDetectChanges();\n    }\n\n    public closeSideNav(): void {\n        (this.sideNav.componentInstance as MatSidenav).close();\n        this.page.advanceAndDetectChanges(1);\n    }\n\n}\n\nexport class RiskLayoutTestComponentHostPage extends Page<RiskLayoutTestHostComponent> {\n\n    public get layoutComponent(): RiskLayoutComponentDefinition {\n        return new RiskLayoutComponentDefinition(this.debugElement.query(By.directive(RiskLayoutComponent)), this);\n    }\n}\n\n@Component({\n    template: `\n        <risk-layout>\n            <!--  menu-horizontal -->\n            <risk-layout-horizontal>\n                HorizontalMenu\n            </risk-layout-horizontal>\n            <!--  menu-horizontal -->\n\n            <!--  menu-vertical -->\n            <risk-layout-vertical>\n                Vertical menu\n            </risk-layout-vertical>\n\n            <span>Content</span>\n        </risk-layout>\n    `,\n    imports : [\n        RiskLayoutComponent,\n        RiskLayoutHorizontalDirective,\n        RiskLayoutVerticalDirective\n    ]\n})\nexport class RiskLayoutTestHostComponent {\n\n}\n","import {DebugElement} from '@angular/core';\nimport {RouterLink} from '@angular/router';\nimport {click} from '../events';\nimport {Page} from './page.base';\n\nexport class LinkDefinition {\n\n    public constructor(private page: Page<any>, public link: DebugElement) {\n    }\n\n    public get stub(): RouterLink {\n        return this.link.injector.get(RouterLink);\n    }\n\n    public get text(): string {\n        return this.link.nativeElement.textContent.trim();\n    }\n\n    public click() {\n        click(this.link.nativeElement);\n        this.page.advanceAndDetectChanges();\n    }\n}\n","import {ComponentFixture} from '@angular/core/testing';\nimport {By} from '@angular/platform-browser';\nimport {RouterLink} from '@angular/router';\nimport {LinkDefinition} from './link.definition';\nimport {Page} from './page.base';\n\nexport class LinkOnlyPage<T> extends Page<T> {\n\n    public constructor(fixture: ComponentFixture<T>) {\n        super(fixture);\n    }\n\n    public get link(): LinkDefinition {\n        return new LinkDefinition(this, this.debugElement.query(By.directive(RouterLink)));\n    }\n}\n","import {DebugElement} from '@angular/core';\nimport {MatMenuItem, MatMenuTrigger} from '@angular/material/menu';\nimport {By} from '@angular/platform-browser';\nimport {RiskLoginMenuComponent} from '@dbg-riskit/angular-login';\nimport {ByUtil} from '../by.util';\nimport {click} from '../events';\nimport {LinkDefinition} from './link.definition';\nimport {Page} from './page.base';\n\nexport class LoginMenuPage extends Page<RiskLoginMenuComponent> {\n\n    public get menuTrigger(): DebugElement {\n        return this.debugElement.query(By.directive(MatMenuTrigger));\n    }\n\n    public clickMenuTrigger(): void {\n        click(this.menuTrigger);\n        this.waitForMenu();\n    }\n\n    public waitForMenu(): void {\n        this.detectChanges(500);\n    }\n\n    public get loginLink(): LinkDefinition {\n        return new LinkDefinition(this, this.debugElement.query(\n            ByUtil.and(\n                By.directive(MatMenuItem),\n                (value: DebugElement) => value.nativeElement.textContent.trim().endsWith('Login'))));\n    }\n\n    public get logoutLink(): LinkDefinition {\n        return new LinkDefinition(this, this.debugElement.query(\n            ByUtil.and(\n                By.directive(MatMenuItem),\n                (value: DebugElement) => value.nativeElement.textContent.trim().endsWith('Logout'))));\n    }\n}\n","import {DebugElement} from '@angular/core';\nimport {ComponentFixture, tick} from '@angular/core/testing';\nimport {MatButton} from '@angular/material/button';\nimport {By} from '@angular/platform-browser';\nimport {RiskLoginComponent} from '@dbg-riskit/angular-login';\nimport {RISK_ERROR_SELECTOR, RISK_GOOD_SELECTOR, RiskMessageComponent} from '@dbg-riskit/angular-view';\nimport {ByUtil} from '../by.util';\nimport {click, setNgModelValue} from '../events';\nimport {RiskMessageComponentDef} from './message.def';\nimport {Page} from './page.base';\n\nexport class RiskLoginPage extends Page<RiskLoginComponent> {\n\n    public constructor(fixture: ComponentFixture<RiskLoginComponent>) {\n        super(fixture);\n    }\n\n    public get formElement(): DebugElement {\n        return this.debugElement.query(By.css('form'));\n    }\n\n    public get usernameElement(): DebugElement {\n        return this.formElement.query(By.css('input[name=username]'));\n    }\n\n    public set username(username: string) {\n        setNgModelValue(this.usernameElement, username);\n        this.fixture.detectChanges();\n    }\n\n    public get passwordElement(): DebugElement {\n        return this.formElement.query(By.css('input[name=password]'));\n    }\n\n    public set password(password: string) {\n        setNgModelValue(this.passwordElement, password);\n        this.fixture.detectChanges();\n    }\n\n    public get loginButtonElement(): DebugElement {\n        return this.formElement.query(By.directive(MatButton));\n    }\n\n    public get successMessage(): RiskMessageComponentDef | null {\n        const debugElement = this.debugElement.query(\n            ByUtil.and(\n                By.directive(RiskMessageComponent),\n                By.css(RISK_GOOD_SELECTOR)));\n        if (!debugElement) {\n            return null;\n        }\n        return new RiskMessageComponentDef(debugElement);\n    }\n\n    public get errorMessage(): RiskMessageComponentDef | null {\n        const debugElement = this.debugElement.query(\n            ByUtil.or(\n                ByUtil.and(\n                    By.directive(RiskMessageComponent),\n                    By.css(RISK_ERROR_SELECTOR)),\n                By.css('h3')));\n        if (!debugElement) {\n            return null;\n        }\n        return new RiskMessageComponentDef(debugElement);\n    }\n\n    public clickLogin() {\n        click(this.loginButtonElement.nativeElement);\n        tick();\n        this.detectChanges();\n    }\n}\n","import {Component} from '@angular/core';\nimport {ComponentFixture} from '@angular/core/testing';\nimport {By} from '@angular/platform-browser';\nimport {\n    RISK_ERROR_SELECTOR,\n    RISK_GOOD_SELECTOR,\n    RISK_INFO_SELECTOR,\n    RISK_INITIAL_LOAD_SELECTOR,\n    RISK_MESSAGE_SELECTOR,\n    RISK_NO_DATA_SELECTOR,\n    RISK_UPDATE_FAILED_SELECTOR,\n    RISK_WARN_SELECTOR,\n    RiskMessageComponent\n} from '@dbg-riskit/angular-view';\nimport {RiskMessageComponentDef} from './message.def';\nimport {Page} from './page.base';\n\n@Component({\n    template: `\n        <risk-error [message]=\"message\"/>\n        <risk-good [message]=\"message\"/>\n        <risk-info [message]=\"message\"/>\n        <risk-message [message]=\"message\"/>\n        <risk-warn [message]=\"message\"/>\n        <risk-initial-load [message]=\"message\"/>\n        <risk-update-failed [message]=\"message\"/>\n        <risk-no-data [message]=\"message\"/>\n    `,\n    imports: [\n        RiskMessageComponent\n    ]\n})\nexport class TestMessageHostComponent {\n    public message = 'custom message';\n}\n\nexport class MessageHostedPage extends Page<TestMessageHostComponent> {\n\n    public constructor(fixture: ComponentFixture<TestMessageHostComponent>) {\n        super(fixture);\n    }\n\n    public get error(): RiskMessageComponentDef {\n        return new RiskMessageComponentDef(this.debugElement.query(By.css(RISK_ERROR_SELECTOR)));\n    }\n\n    public get good(): RiskMessageComponentDef {\n        return new RiskMessageComponentDef(this.debugElement.query(By.css(RISK_GOOD_SELECTOR)));\n    }\n\n    public get info(): RiskMessageComponentDef {\n        return new RiskMessageComponentDef(this.debugElement.query(By.css(RISK_INFO_SELECTOR)));\n    }\n\n    public get message(): RiskMessageComponentDef {\n        return new RiskMessageComponentDef(this.debugElement.query(By.css(RISK_MESSAGE_SELECTOR)));\n    }\n\n    public get warn(): RiskMessageComponentDef {\n        return new RiskMessageComponentDef(this.debugElement.query(By.css(RISK_WARN_SELECTOR)));\n    }\n\n    public get initialLoad(): RiskMessageComponentDef {\n        return new RiskMessageComponentDef(this.debugElement.query(By.css(RISK_INITIAL_LOAD_SELECTOR)));\n    }\n\n    public get noData(): RiskMessageComponentDef {\n        return new RiskMessageComponentDef(this.debugElement.query(By.css(RISK_NO_DATA_SELECTOR)));\n    }\n\n    public get updateFailed(): RiskMessageComponentDef {\n        return new RiskMessageComponentDef(this.debugElement.query(By.css(RISK_UPDATE_FAILED_SELECTOR)));\n    }\n}\n","import {inject, Injectable} from '@angular/core';\nimport {RouterStateSnapshot} from '@angular/router';\n\nimport {AUTH_CONFIG, AuthConfig, AuthFlow, AuthService} from '@dbg-riskit/angular-auth';\nimport {AUTH_PROVIDER} from '@dbg-riskit/angular-common';\n\nimport {Observable} from 'rxjs';\nimport {defaultIfEmpty, map} from 'rxjs/operators';\n\nexport const storage: { authRequestedPath: string | null; }\n    = {authRequestedPath: null};\n\n@Injectable()\nexport class AuthRoutingFlowServiceStub {\n    private authServiceStub = inject<AuthService>(AUTH_PROVIDER);\n    private readonly authConfig = inject<AuthConfig>(AUTH_CONFIG);\n\n    public constructor() {\n        // cleanup\n        storage.authRequestedPath = null;\n    }\n\n    public get authFlow(): AuthFlow {\n        return this.authConfig.flow;\n    }\n\n    public get authorizationCodeFlow(): boolean {\n        return this.authFlow === AuthFlow.AUTHORIZATION_CODE;\n    }\n\n    public get implicitFlow(): boolean {\n        return this.authFlow === AuthFlow.IMPLICIT;\n    }\n\n    public get hybridFlow(): boolean {\n        return this.authFlow === AuthFlow.HYBRID;\n    }\n\n    public get directFlow(): boolean {\n        return this.authFlow === AuthFlow.DIRECT;\n    }\n\n    public logout(): Observable<boolean> {\n        return this.authServiceStub.logout().pipe(\n            defaultIfEmpty(0),\n            map(() => true));\n    }\n\n    public login(username?: string, password?: string): Observable<boolean> {\n        return this.authServiceStub.directLogin(username as any, password as any);\n    }\n\n    public loginViaService(): Observable<boolean> {\n        return this.authServiceStub.loginViaAuthService();\n    }\n\n    public storeRequestedPath(state?: RouterStateSnapshot): void {\n        storage.authRequestedPath = state?.url || null;\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {AuthProvider, ReplaySubjectExt, UserInfo} from '@dbg-riskit/common';\nimport {defer, EMPTY, Observable, of} from 'rxjs';\n\n@Injectable()\nexport class AuthServiceStub implements AuthProvider {\n    private user?: string;\n\n    private readonly _loggedInStream: ReplaySubjectExt<boolean> = new ReplaySubjectExt<boolean>(1);\n\n    public get loggedIn(): Observable<boolean> {\n        return defer(() => of(!!this.user));\n    }\n\n    public get userProfile(): Observable<UserInfo | undefined> {\n        return defer(() => of(this.user ? {\n            name: this.user\n        } : undefined));\n    }\n\n    public get loggedInStream(): Observable<boolean> {\n        return this._loggedInStream.asObservable();\n    }\n\n    public loginViaAuthService(): Observable<boolean> {\n        return of(true);\n    }\n\n    public checkLocationForLoginData(): Observable<boolean> {\n        return of(true);\n    }\n\n    public directLogin(username: string, password: string): Observable<boolean> {\n        this.user = username;\n        this.emitLoginStatusChange(true);\n        return of(true);\n    }\n\n    public logout(): Observable<never> {\n        this.emitLoginStatusChange(false);\n        delete this.user;\n        return EMPTY;\n    }\n\n    public emitLoginStatusChange(status: boolean) {\n        if (this._loggedInStream.lastValue !== status) {\n            this._loggedInStream.next(status);\n        }\n    }\n\n    public refreshToken() {\n    }\n}\n","import {Injectable} from '@angular/core';\n\nimport {WellKnown} from '@dbg-riskit/angular-auth';\n\nimport {Observable, of} from 'rxjs';\n\nexport const WELL_KNOWN: WellKnown = {\n    endpoints: {\n        auth  : '/auth',\n        token : '/token',\n        logout: '/logout'\n    },\n    issuer   : 'risk-auth'\n};\n\n@Injectable()\nexport class WellKnownServiceStub {\n    public get wellKnown(): Observable<WellKnown> {\n        return of(WELL_KNOWN);\n    }\n\n}\n","import {Injectable} from '@angular/core';\nimport {Event as RouterEvent, NavigationExtras, RouterState, UrlTree} from '@angular/router';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n/**\n * A lightweight Router stub for testing that doesn't require actual routing infrastructure.\n * Use this when you want complete isolation from the Router and only need to verify navigation calls.\n */\n@Injectable()\nexport class RouterStub {\n    private _url = '/';\n    private _events$ = new BehaviorSubject<RouterEvent | null>(null);\n\n    public get url(): string {\n        return this._url;\n    }\n\n    public get events(): Observable<RouterEvent | null> {\n        return this._events$.asObservable();\n    }\n\n    public get routerState(): RouterState {\n        return {\n            snapshot: {\n                url: this._url,\n                root: {} as any\n            }\n        } as RouterState;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    public navigate(commands: unknown[], _extras?: NavigationExtras): Promise<boolean> {\n        this._url = commands.join('/');\n        return Promise.resolve(true);\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    public navigateByUrl(url: string | UrlTree, _extras?: NavigationExtras): Promise<boolean> {\n        this._url = typeof url === 'string' ? url : url.toString();\n        return Promise.resolve(true);\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    public createUrlTree(_commands: unknown[], _navigationExtras?: NavigationExtras): UrlTree {\n        return {} as UrlTree;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    public serializeUrl(_url: UrlTree): string {\n        return '';\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    public parseUrl(_url: string): UrlTree {\n        return {} as UrlTree;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    public isActive(_url: string | UrlTree, _exact: boolean): boolean {\n        return false;\n    }\n}\n","import {ChangeDetectionStrategy, Component, input} from '@angular/core';\n\n@Component({\n    selector: 'risk-login-menu',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: ''\n})\nexport class RiskLoginMenuStubComponent {\n    public readonly orientation = input<'row' | 'column'>('row');\n}\n","import {COMPILE_TIMEOUT_INTERVAL} from './environment';\n\nexport function compileTestBed(compileFunction: () => Promise<any>, destroyFunction?: () => void,\n                               stubMatchMedia = true) {\n    let matchMedia: any;\n    beforeEach((done: DoneFn) => {\n        if (stubMatchMedia) {\n            matchMedia = window.matchMedia;\n            window.matchMedia = fakeMatchMedia();\n        }\n\n        compileFunction()\n            .then(done)\n            .catch((err: any) => {\n                done.fail(err);\n            });\n    }, COMPILE_TIMEOUT_INTERVAL);\n\n    afterEach(() => {\n        if (destroyFunction) {\n            destroyFunction();\n        }\n\n        if (stubMatchMedia) {\n            window.matchMedia = matchMedia;\n        }\n    }, COMPILE_TIMEOUT_INTERVAL);\n}\n\nfunction fakeMatchMedia(matches = false) {\n    return (mediaQuery: string): MediaQueryList => ({\n        matches,\n        media              : mediaQuery,\n        onchange           : () => null as any,\n        addListener        : () => null as any,\n        addEventListener   : () => null as any,\n        removeListener     : () => null as any,\n        removeEventListener: () => null as any,\n        dispatchEvent      : () => true\n    });\n}\n","// WARNING: Do not change order in this file!!! Environment has to be first as it includes polyfills\nexport * from './lib/environment';\n\nexport * from './lib/definitions/download.menu.page';\nexport * from './lib/definitions/data.table.definition';\nexport * from './lib/definitions/highlighter.directive.page';\nexport * from './lib/definitions/layout.component.page';\nexport * from './lib/definitions/link.definition';\nexport * from './lib/definitions/link.only.page';\nexport * from './lib/definitions/login.menu.page';\nexport * from './lib/definitions/login.page';\nexport * from './lib/definitions/message.def';\nexport * from './lib/definitions/message.page';\nexport * from './lib/definitions/page.base';\n\nexport * from './lib/stubs/auth/auth.routing.flow.service.stub';\nexport * from './lib/stubs/auth/auth.service.stub';\nexport * from './lib/stubs/auth/well.known.service.stub';\n\nexport * from './lib/stubs/http.service.stub';\nexport * from './lib/stubs/router.stub';\nexport * from './lib/stubs/login.menu.stub.component';\n\nexport * from './lib/by.util';\nexport * from './lib/events';\nexport * from './lib/utils';\n\nexport {\n    RiskLayoutComponent\n} from '@dbg-riskit/angular-view';\n\nimport {globalScope} from '@dbg-riskit/common';\n\n// Add CachedResourceProviderImpl to compiler configuration\nif ('beforeEach' in globalScope && globalScope.beforeEach) {\n    globalScope.beforeEach(() => {\n        // Disable logging in Safari as the Selenium WebDriver is not working there correctly....\n        if ('navigator' in globalScope) {\n            const ua = globalScope.navigator.userAgent.toLowerCase();\n            if ('spyOn' in globalScope && globalScope.spyOn\n                && ua.indexOf('safari') > -1\n                && ua.indexOf('chrome') === -1) {\n                globalScope.spyOn(console, 'log').and.stub();\n                globalScope.spyOn(console, 'info').and.stub();\n                globalScope.spyOn(console, 'warn').and.stub();\n                globalScope.spyOn(console, 'debug').and.stub();\n                globalScope.spyOn(console, 'error').and.stub();\n            }\n        }\n    });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_throwError"],"mappings":"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"}