{"version":3,"file":"ts-core-angular-material.mjs","sources":["../../src/window/WindowFactory.ts","../../src/window/component/WindowQuestionBaseComponent.ts","../../src/window/component/window-question/window-question.component.ts","../../src/window/component/window-question/window-question.component.html","../../src/bottomSheet/BottomSheetImpl.ts","../../src/window/component/WindowElement.ts","../../src/window/component/window-close-element/window-close-element.component.ts","../../src/window/component/window-expand-element/window-expand-element.component.ts","../../src/window/component/window-resize-element/window-resize-element.component.ts","../../src/window/component/window-minimize-element/window-minimize-element.component.ts","../../src/window/WindowImpl.ts","../../src/window/component/WindowResizeable.ts","../../src/window/component/WindowDragable.ts","../../src/window/component/WindowBaseComponent.ts","../../src/bottomSheet/component/BottomSheetBaseComponent.ts","../../src/bottomSheet/BottomSheetServiceImpl.ts","../../src/bottomSheet/BottomSheetModule.ts","../../src/notification/component/NotificationQuestionBaseComponent.ts","../../src/notification/component/notification/notification.component.ts","../../src/notification/component/notification/notification.component.html","../../src/notification/NotificationFactory.ts","../../src/notification/NotificationImpl.ts","../../src/notification/component/NotificationBaseComponent.ts","../../src/notification/NotificationServiceImpl.ts","../../src/notification/NotificationModule.ts","../../src/window/component/WindowDragAreaDirective.ts","../../src/window/WindowServiceBase.ts","../../src/window/WindowServiceImpl.ts","../../src/window/WindowModule.ts","../../src/directive/MenuTriggerForDirective.ts","../../src/service/VoiceRecognitionService.ts","../../src/directive/VoiceRecognitionButtonDirective.ts","../../src/component/menu-list/menu-list.component.ts","../../src/component/menu-list/menu-list.component.html","../../src/component/tab-group/tab-group.component.ts","../../src/component/tab-group/tab-group.component.html","../../src/component/cdk-table/row/CdkTableRowStyleNamePipe.ts","../../src/component/cdk-table/row/CdkTableRowClassNamePipe.ts","../../src/component/cdk-table/column/CdkTableColumnStyleNamePipe.ts","../../src/component/cdk-table/column/CdkTableColumnClassNamePipe.ts","../../src/component/cdk-table/cell/CdkTableCellStyleNamePipe.ts","../../src/component/cdk-table/cell/CdkTableCellClassNamePipe.ts","../../src/component/cdk-table/cell/CdkTableCellValuePipePure.ts","../../src/component/cdk-table/cell/CdkTableCellValuePipe.ts","../../src/component/cdk-table/CdkTableDataSource.ts","../../src/component/cdk-table/CdkTableBaseComponent.ts","../../src/component/cdk-table/CdkPaginableTableDataSource.ts","../../src/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.ts","../../src/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.html","../../src/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.ts","../../src/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.html","../../src/component/cdk-table/cdk-table-paginable-bookmark/cdk-table-paginable-bookmark.component.ts","../../src/component/cdk-table/cdk-table-paginable-bookmark/cdk-table-paginable-bookmark.component.html","../../src/language/LanguageMatPaginatorIntl.ts","../../src/service/BootstrapBreakpointService.ts","../../src/service/PortalService.ts","../../src/VIMatModule.ts","../../src/component/ShellBaseComponent.ts","../../src/component/cdk-table/column/ICdkTableColumn.ts","../../src/language/LanguageMomentDateAdapter.ts","../../src/service/ScrollService.ts","../../src/public-api.ts","../../src/ts-core-angular-material.ts"],"sourcesContent":["import { WindowProperties } from './WindowProperties';\nimport * as _ from 'lodash';\nimport { IWindow } from '@ts-core/angular';\n\nexport class WindowFactory<U extends IWindow> {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    public createFunction: CreateFunction;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(protected defaultType: WindowType<U>) {}\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public create(properties: WindowProperties): U {\n        let item: U = null;\n        if (!_.isNil(this.createFunction)) {\n            item = this.createFunction(properties);\n        }\n        if (_.isNil(item)) {\n            item = new this.defaultType(properties);\n        }\n        return item;\n    }\n}\n\nexport type CreateFunction = <U extends IWindow>(properties: WindowProperties) => U;\n\nexport interface WindowType<T> {\n    new (properties: WindowProperties): T;\n}\n","import { IWindowContent, QuestionManager } from '@ts-core/angular';\n\nexport abstract class WindowQuestionBaseComponent extends IWindowContent<QuestionManager> {\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected commitConfigProperties(): void {\n        super.commitConfigProperties();\n        this.data.closePromise.then(() => {\n            if (!this.isDestroyed) {\n                this.close();\n            }\n        });\n    }\n}\n","import { MatButtonModule } from '@angular/material/button';\nimport { Component, signal, ViewContainerRef, WritableSignal } from '@angular/core';\nimport { LanguageService } from '@ts-core/frontend';\nimport { QuestionManager, ViewUtil } from '@ts-core/angular';\nimport { WindowQuestionBaseComponent } from '../WindowQuestionBaseComponent';\nimport * as _ from 'lodash';\n\n@Component({\n    imports: [MatButtonModule],\n    templateUrl: 'window-question.component.html'\n})\nexport class WindowQuestionComponent extends WindowQuestionBaseComponent {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    public textSignal: WritableSignal<string>;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(\n        container: ViewContainerRef,\n        protected language: LanguageService\n    ) {\n        super(container);\n        ViewUtil.addClasses(container.element, 'd-block');\n\n        this.textSignal = signal(null);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected commitConfigProperties(): void {\n        super.commitConfigProperties();\n\n        if (!_.isNil(this.data.text)) {\n            this.textSignal.set(this.data.text.replace(/(?:\\r\\n|\\r|\\n)/g, `<br/>`));\n        }\n        if (this.language.isHasTranslation(this.data.options.yesTextId)) {\n            this.data.yesText = this.language.translate(this.data.options.yesTextId);\n        }\n        if (this.language.isHasTranslation(this.data.options.notTextId)) {\n            this.data.notText = this.language.translate(this.data.options.notTextId);\n        }\n        if (this.language.isHasTranslation(this.data.options.checkTextId)) {\n            this.data.checkText = this.language.translate(this.data.options.checkTextId);\n        }\n        if (this.language.isHasTranslation(this.data.options.closeTextId)) {\n            this.data.closeText = this.language.translate(this.data.options.closeTextId);\n        }\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.textSignal = null;\n    }\n}\n","<p class=\"text m-4 text-center mouse-disabled text-word-wrap-break-word\" [innerHTML]=\"textSignal()\"></p>\n\n<div class=\"text-center border-top variant p-3\">\n    @if (data?.isInfo) {\n        <button (click)=\"data?.closeClickHandler()\" mat-stroked-button>\n            <span [innerHTML]=\"data?.closeText\"></span>\n        </button>\n    }\n\n    @if (data?.isQuestion) {\n        <button class=\"mr-3 me-3\" (click)=\"data?.yesClickHandler()\" color=\"primary\" mat-stroked-button>\n            <span [innerHTML]=\"data?.yesText\"></span>\n        </button>\n\n        <button (click)=\"data?.notClickHandler()\" mat-stroked-button>\n            <span [innerHTML]=\"data?.notText\"></span>\n        </button>\n    }\n</div>\n","import { Observable, Subject, takeUntil, Subscription } from 'rxjs';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { WindowProperties } from '../window/WindowProperties';\nimport { IWindow, IWindowConfig, IWindowContent, ViewUtil, WindowEvent } from '@ts-core/angular';\nimport { WindowElement } from '../window/component/WindowElement';\nimport { ArrayUtil } from '@ts-core/common';\nimport { ComponentRef, signal, WritableSignal } from '@angular/core';\nimport * as _ from 'lodash';\n\nexport class BottomSheetImpl<T = any> extends DestroyableContainer implements IWindow {\n    // --------------------------------------------------------------------------\n    //\n    //  Properties\n    //\n    // --------------------------------------------------------------------------\n\n    private _wrapper: HTMLElement;\n    private _backdrop: HTMLElement;\n    private _container: HTMLElement;\n\n    private _isBlink: boolean = false;\n    private _isOnTop: boolean = false;\n    private _isShaking: boolean = false;\n    private _isDisabled: boolean = false;\n    private _isMinimized: boolean = false;\n\n    public isBlinkSignal: WritableSignal<boolean>;\n    public isOnTopSignal: WritableSignal<boolean>;\n    public isShakingSignal: WritableSignal<boolean>;\n    public isDisabledSignal: WritableSignal<boolean>;\n    public isMinimizedSignal: WritableSignal<boolean>;\n\n    protected elements: Array<ComponentRef<WindowElement>>;\n    protected properties: WindowProperties;\n\n    protected observer: Subject<string>;\n    protected subscription: Subscription;\n\n    // --------------------------------------------------------------------------\n    //\n    //  Constructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(properties: WindowProperties) {\n        super();\n        this.observer = new Subject();\n\n        this.isBlinkSignal = signal(false);\n        this.isOnTopSignal = signal(false);\n        this.isShakingSignal = signal(false);\n        this.isDisabledSignal = signal(false);\n        this.isMinimizedSignal = signal(false);\n\n        this.properties = properties;\n        this.content.window = this;\n\n        // Have to save for unsubscribe on destroy\n        this._wrapper = this.properties.overlay.hostElement;\n        this._backdrop = this.properties.overlay.backdropElement;\n        this._container = this.properties.overlay.overlayElement;\n\n        this.setProperties();\n        this.elementsCreate();\n\n        this.getReference().afterOpened().pipe(takeUntil(this.destroyed)).subscribe(this.setOpened);\n        this.getReference().afterDismissed().pipe(takeUntil(this.destroyed)).subscribe(this.setClosed);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Elements Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected elementsCreate(): void {\n        this.elements = new Array();\n    }\n\n    protected elementsDestroy(): void {\n        this.elements.forEach(item => this.elementDestroy(item));\n        this.elements = null;\n    }\n\n    protected elementAdd(item: ComponentRef<WindowElement>): ComponentRef<WindowElement> {\n        this.elements.push(item);\n        item.instance.window = this;\n        return item;\n    }\n\n    protected elementRemove(item: ComponentRef<WindowElement>): ComponentRef<WindowElement> {\n        ArrayUtil.remove(this.elements, item);\n        this.elementDestroy(item);\n        return item;\n    }\n\n    protected elementDestroy(item: ComponentRef<WindowElement>): ComponentRef<WindowElement> {\n        item.instance.window = null;\n        item.destroy();\n        return item;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Protected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected setClosed = (): void => {\n        this.emit(WindowEvent.CLOSED);\n        this.destroy();\n    };\n\n    protected setOpened = (): void => {\n        this.emit(WindowEvent.OPENED);\n    };\n\n    protected setProperties(): void {\n        ViewUtil.addClass(this.container, 'vi-bottom-sheet');\n        ViewUtil.toggleClass(this.container, 'vi-modal', this.config.isModal);\n\n        this.container.addEventListener('click', this.mouseClickHandlerProxy, true);\n        this.container.addEventListener('mousedown', this.mouseDownHandlerProxy);\n        /*\n        if (!this.config.isModal) {\n            this.container.addEventListener('mousedown', this.mouseDownHandlerProxy);\n        }\n        */\n    }\n\n    protected commitIsDisabledProperties(): void {}\n\n    protected getConfig<T>(): IWindowConfig<T> {\n        return this.properties.config;\n    }\n    protected getContainer(): HTMLElement {\n        return this.container;\n    }\n    protected getReference(): MatBottomSheetRef<IWindowContent<T>> {\n        return this.properties.reference as any;\n    }\n\n    protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n        let element = _.find(this.elements, item => item.location.nativeElement === event.target);\n        if (_.isNil(element)) {\n            return false;\n        }\n        element.instance.clickHandler(event);\n        return true;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Event Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    protected mouseDownHandler(event: MouseEvent): void {\n        this.setOnTop();\n    }\n\n    protected mouseClickHandler(event: MouseEvent): void {\n        if (this.isNeedClickStopPropagation(event)) {\n            event.stopPropagation();\n        }\n    }\n\n    private mouseDownHandlerProxy = (event: MouseEvent): void => {\n        this.mouseDownHandler(event);\n    };\n\n    private mouseClickHandlerProxy = (event: MouseEvent): void => {\n        this.mouseClickHandler(event);\n    };\n\n    // --------------------------------------------------------------------------\n    //\n    //  Public Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public emit(event: string): void {\n        this.observer.next(event);\n    }\n\n    public close(): void {\n        this.getReference().dismiss();\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.elementsDestroy();\n\n        this._container.removeEventListener('click', this.mouseClickHandlerProxy, true);\n        this._container.removeEventListener('mousedown', this.mouseDownHandlerProxy);\n\n        if (!_.isNil(this.content)) {\n            this.content.destroy();\n        }\n\n        if (!_.isNil(this.observer)) {\n            this.observer.complete();\n            this.observer = null;\n        }\n\n        this.properties = null;\n\n        this._wrapper = null;\n        this._backdrop = null;\n        this._container = null;\n\n        this.isBlinkSignal = null;\n        this.isOnTopSignal = null;\n        this.isShakingSignal = null;\n        this.isDisabledSignal = null;\n        this.isMinimizedSignal = null;\n    }\n\n    public blink(): void {}\n\n    public shake(): void {}\n\n    public setOnTop(): void {}\n\n    // --------------------------------------------------------------------------\n    //\n    //  Size Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public getWidth(): number {\n        return NaN;\n    }\n\n    public getHeight(): number {\n        return NaN;\n    }\n\n    public setWidth(value: number, isNeedNotify: boolean = true): void {}\n\n    public setHeight(value: number, isNeedNotify: boolean = true): void {}\n\n    public setSize(width: number, height: number): void {}\n\n    // --------------------------------------------------------------------------\n    //\n    //  Move Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public getX(): number {\n        return NaN;\n    }\n\n    public setX(value: number, isNeedNotify: boolean = true): void {}\n\n    public getY(): number {\n        return NaN;\n    }\n\n    public setY(value: number, isNeedNotify: boolean = true): void {}\n\n    public move(x: number, y: number): void {}\n\n    // --------------------------------------------------------------------------\n    //\n    //  Private Properties\n    //\n    // --------------------------------------------------------------------------\n\n    protected get reference(): MatBottomSheetRef<IWindowContent<T>> {\n        return this.properties.reference as any;\n    }\n\n    protected get isBlink(): boolean {\n        return this._isBlink;\n    }\n    protected set isBlink(value: boolean) {\n        if (value === this._isBlink) {\n            return;\n        }\n        this._isBlink = value;\n        this.isBlinkSignal?.set(value);\n    }\n\n    protected get isShaking(): boolean {\n        return this._isShaking;\n    }\n    protected set isShaking(value: boolean) {\n        if (value === this._isShaking) {\n            return;\n        }\n        this._isShaking = value;\n        this.isShakingSignal?.set(value);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Public Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get events(): Observable<string> {\n        return this.observer.asObservable();\n    }\n\n    public get config(): IWindowConfig {\n        return this.properties.config;\n    }\n\n    public get content(): IWindowContent {\n        return !_.isNil(this.reference) ? this.reference.instance : null;\n    }\n\n    public get container(): HTMLElement {\n        return this._container;\n    }\n\n    public get wrapper(): HTMLElement {\n        return this._wrapper;\n    }\n\n    public get backdrop(): HTMLElement {\n        return this._backdrop;\n    }\n\n    public get isOnTop(): boolean {\n        return this._isOnTop;\n    }\n    public set isOnTop(value: boolean) {\n        if (value === this._isOnTop) {\n            return;\n        }\n        this._isOnTop = value;\n        this.isOnTopSignal?.set(value);\n        this.emit(WindowEvent.IS_ON_TOP_CHANGED);\n    }\n\n    public get isMinimized(): boolean {\n        return this._isMinimized;\n    }\n    public set isMinimized(value: boolean) {\n        if (value === this._isMinimized) {\n            return;\n        }\n        this._isMinimized = value;\n        this.isMinimizedSignal?.set(value);\n        this.emit(WindowEvent.IS_MINIMIZED_CHANGED);\n    }\n\n    public get isDisabled(): boolean {\n        return this._isDisabled;\n    }\n    public set isDisabled(value: boolean) {\n        if (value === this._isDisabled) {\n            return;\n        }\n        this._isDisabled = value;\n        this.isDisabledSignal?.set(value);\n        this.commitIsDisabledProperties();\n        this.emit(WindowEvent.IS_DISABLED_CHANGED);\n    }\n}\n","import { AfterViewInit, Component, ElementRef } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { IWindow, ViewUtil } from '@ts-core/angular';\nimport * as _ from 'lodash';\n\n@Component({ template: '' })\nexport abstract class WindowElement extends DestroyableContainer implements AfterViewInit {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    protected _window: IWindow;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(protected element: ElementRef) {\n        super();\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPrivate Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected checkWindowParent(): void {\n        let container = this.getContainer();\n        if (!_.isNil(container)) {\n            ViewUtil.appendChild(container, this.element.nativeElement);\n        }\n    }\n\n    protected getContainer(): HTMLElement {\n        let item = ViewUtil.parseElement(this.element.nativeElement);\n        while (!_.isNil(item) && item.nodeName.toLowerCase() !== 'mat-dialog-container') {\n            item = item.parentElement;\n        }\n        return item;\n    }\n\n    protected createChildren(): void {}\n\n    protected destroyChildren(): void {}\n\n    protected commitWindowProperties(): void {}\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public ngAfterViewInit(): void {\n        this.createChildren();\n        this.checkWindowParent();\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.destroyChildren();\n\n        this.element = null;\n        this.window = null;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tEvent Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    public clickHandler(event: MouseEvent): void {\n        event.stopPropagation();\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Properties\n    //\n    // --------------------------------------------------------------------------\n\n    protected get nativeElement(): HTMLElement {\n        return this.element ? this.element.nativeElement : null;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get window(): IWindow {\n        return this._window;\n    }\n    public set window(value: IWindow) {\n        if (value === this._window) {\n            return;\n        }\n        this._window = value;\n        if (this.window) {\n            this.commitWindowProperties();\n        }\n    }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { ViewUtil } from '@ts-core/angular';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n    selector: 'vi-window-close-element',\n    styleUrl: '../window-element/window-element.component.scss',\n    template: ''\n})\nexport class WindowCloseElementComponent extends WindowElement {\n    // --------------------------------------------------------------------------\n    //\n    // \tConstants\n    //\n    // --------------------------------------------------------------------------\n\n    public static ICON_CLASS: string = 'fas fa-times';\n    public static ICON_VALUE: string = null;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(element: ElementRef) {\n        super(element);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPrivate Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected createChildren(): void {\n        super.createChildren();\n\n        if (!_.isNil(WindowCloseElementComponent.ICON_VALUE)) {\n            ViewUtil.setProperty(this.nativeElement, 'innerHTML', WindowCloseElementComponent.ICON_VALUE);\n        }\n        if (!_.isNil(WindowCloseElementComponent.ICON_CLASS)) {\n            ViewUtil.addClasses(this.nativeElement, WindowCloseElementComponent.ICON_CLASS);\n        }\n        ViewUtil.addClass(this.nativeElement, 'mouse-active');\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tEvent Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    public clickHandler(event: MouseEvent): void {\n        super.clickHandler(event);\n        if (!_.isNil(this.window)) {\n            this.window.close();\n        }\n    }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { ViewUtil, WindowEvent } from '@ts-core/angular';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n    selector: 'vi-window-expand-element',\n    styleUrl: 'window-expand-element.component.scss',\n    template: ''\n})\nexport class WindowExpandElementComponent extends WindowElement {\n    // --------------------------------------------------------------------------\n    //\n    // \tConstants\n    //\n    // --------------------------------------------------------------------------\n\n    public static ICON_CLASS: string = 'fas fa-angle-double-up';\n    public static ICON_VALUE: string = null;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(element: ElementRef) {\n        super(element);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPrivate Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected createChildren(): void {\n        super.createChildren();\n\n        if (!_.isNil(WindowExpandElementComponent.ICON_VALUE)) {\n            ViewUtil.setProperty(this.nativeElement, 'innerHTML', WindowExpandElementComponent.ICON_VALUE);\n        }\n        if (!_.isNil(WindowExpandElementComponent.ICON_CLASS)) {\n            ViewUtil.addClasses(this.nativeElement, WindowExpandElementComponent.ICON_CLASS);\n        }\n        ViewUtil.addClass(this.nativeElement, 'mouse-active');\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tEvent Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    public clickHandler(event: MouseEvent): void {\n        super.clickHandler(event);\n        if (!_.isNil(this.window)) {\n            this.window.emit(WindowEvent.EXPAND);\n        }\n    }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { ViewUtil, WindowEvent } from '@ts-core/angular';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n    selector: 'vi-window-resize-element',\n    styleUrl: 'window-resize-element.component.scss',\n    template: ''\n})\nexport class WindowResizeElementComponent extends WindowElement {\n    // --------------------------------------------------------------------------\n    //\n    // \tConstants\n    //\n    // --------------------------------------------------------------------------\n\n    public static ICON_CLASS: string = 'fas fa-arrows-alt';\n    public static ICON_VALUE: string = null;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(element: ElementRef) {\n        super(element);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPrivate Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected createChildren(): void {\n        super.createChildren();\n\n        if (!_.isNil(WindowResizeElementComponent.ICON_VALUE)) {\n            ViewUtil.setProperty(this.nativeElement, 'innerHTML', WindowResizeElementComponent.ICON_VALUE);\n        }\n        if (!_.isNil(WindowResizeElementComponent.ICON_CLASS)) {\n            ViewUtil.addClasses(this.nativeElement, WindowResizeElementComponent.ICON_CLASS);\n        }\n\n        ViewUtil.setStyle(this.nativeElement, 'cursor', 'pointer');\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tEvent Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    public clickHandler(event: MouseEvent): void {\n        super.clickHandler(event);\n        if (!_.isNil(this.window)) {\n            this.window.emit(WindowEvent.EXPAND);\n        }\n    }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { takeUntil } from 'rxjs';\nimport { ViewUtil, WindowEvent } from '@ts-core/angular';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n    selector: 'vi-window-minimize-element',\n    styleUrl: 'window-minimize-element.component.scss',\n    template: ''\n})\nexport class WindowMinimizeElementComponent extends WindowElement {\n    // --------------------------------------------------------------------------\n    //\n    // \tConstants\n    //\n    // --------------------------------------------------------------------------\n\n    public static ICON_MINIMIZE_CLASS: string = 'fas fa-minimize';\n    public static ICON_MINIMIZE_VALUE: string = null;\n\n    public static ICON_MAXIMIZE_CLASS: string = 'fas fa-maximize';\n    public static ICON_MAXIMIZE_VALUE: string = null;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(element: ElementRef) {\n        super(element);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPrivate Methods\n    //\n    // --------------------------------------------------------------------------\n\n    private commitIconProperties = (): void => {\n        let icon = this.window.isMinimized ? WindowMinimizeElementComponent.ICON_MAXIMIZE_VALUE : WindowMinimizeElementComponent.ICON_MINIMIZE_VALUE;\n        ViewUtil.setProperty(this.nativeElement, 'innerHTML', icon);\n        ViewUtil.toggleClass(this.nativeElement, WindowMinimizeElementComponent.ICON_MAXIMIZE_CLASS, this.window.isMinimized);\n        ViewUtil.toggleClass(this.nativeElement, WindowMinimizeElementComponent.ICON_MINIMIZE_CLASS, !this.window.isMinimized);\n    };\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected commitWindowProperties(): void {\n        super.commitWindowProperties();\n        this.window.events.pipe(takeUntil(this.destroyed)).subscribe(event => {\n            if (event === WindowEvent.IS_MINIMIZED_CHANGED) {\n                this.commitIconProperties();\n            }\n        });\n    }\n\n    protected createChildren(): void {\n        super.createChildren();\n\n        if (!_.isNil(WindowMinimizeElementComponent.ICON_MINIMIZE_VALUE)) {\n            ViewUtil.setProperty(this.nativeElement, 'innerHTML', WindowMinimizeElementComponent.ICON_MINIMIZE_VALUE);\n        }\n\n        if (!_.isNil(WindowMinimizeElementComponent.ICON_MINIMIZE_CLASS)) {\n            ViewUtil.addClasses(this.nativeElement, WindowMinimizeElementComponent.ICON_MINIMIZE_CLASS);\n        }\n\n        ViewUtil.addClass(this.nativeElement, 'mouse-active');\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tEvent Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    public clickHandler(event: MouseEvent): void {\n        super.clickHandler(event);\n        if (!_.isNil(this.window)) {\n            this.window.isMinimized = !this.window.isMinimized;\n        }\n    }\n}\n","import { MatDialogRef } from '@angular/material/dialog';\nimport { Observable, Subject, Subscription, filter, takeUntil } from 'rxjs';\nimport { IWindow, IWindowConfig, IWindowContent, ViewUtil, WindowBase, WindowEvent } from '@ts-core/angular';\nimport { WindowProperties } from './WindowProperties';\nimport { WindowElement } from './component/WindowElement';\nimport { ArrayUtil } from '@ts-core/common';\nimport { ComponentRef, signal, WritableSignal } from '@angular/core';\nimport * as _ from 'lodash';\n\nexport class WindowImpl<T = any> extends WindowBase<T> implements IWindow {\n    // --------------------------------------------------------------------------\n    //\n    //  Constants\n    //\n    // --------------------------------------------------------------------------\n\n    public static SHAKE_DELAY = 500;\n    public static RESIZE_DELAY = 200;\n\n    // --------------------------------------------------------------------------\n    //\n    //  Properties\n    //\n    // --------------------------------------------------------------------------\n\n    private shakeTimer: any;\n    private resizeTimer: any;\n\n    private _isBlink: boolean = false;\n    private _isOnTop: boolean = false;\n    private _isShaking: boolean = false;\n    private _isDisabled: boolean = false;\n    private _isMinimized: boolean = false;\n\n    public isBlinkSignal: WritableSignal<boolean>;\n    public isOnTopSignal: WritableSignal<boolean>;\n    public isShakingSignal: WritableSignal<boolean>;\n    public isDisabledSignal: WritableSignal<boolean>;\n    public isMinimizedSignal: WritableSignal<boolean>;\n\n    private isOpened: boolean = false;\n    private isWasOnTop: boolean = false;\n\n    private _wrapper: HTMLElement;\n    private _backdrop: HTMLElement;\n    private _container: HTMLElement;\n\n    protected elements: Array<ComponentRef<WindowElement>>;\n    protected properties: WindowProperties;\n\n    protected observer: Subject<string>;\n    protected subscription: Subscription;\n\n    // --------------------------------------------------------------------------\n    //\n    //  Constructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(properties: WindowProperties) {\n        super();\n        this.elements = new Array();\n        this.observer = new Subject();\n        this.properties = properties;\n\n        if (!_.isNil(this.content)) {\n            this.content.window = this;\n        }\n\n        this.isBlinkSignal = signal(false);\n        this.isOnTopSignal = signal(false);\n        this.isShakingSignal = signal(false);\n        this.isDisabledSignal = signal(false);\n        this.isMinimizedSignal = signal(false);\n\n        // Have to save for unsubscribe on destroy\n        this._wrapper = this.properties.overlay.hostElement;\n        this._backdrop = this.properties.overlay.backdropElement;\n        this._container = this.properties.overlay.overlayElement;\n\n        this.setProperties();\n        this.getReference().afterOpened().pipe(takeUntil(this.destroyed)).subscribe(this.setOpened);\n        this.getReference().afterClosed().pipe(takeUntil(this.destroyed)).subscribe(this.setClosed);\n\n        this.events\n            .pipe(\n                filter(event => event === WindowEvent.CONTENT_READY),\n                takeUntil(this.destroyed)\n            )\n            .subscribe(this.updatePosition);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Elements Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected elementsCreate(): void {\n        this.elements = new Array();\n    }\n\n    protected elementsDestroy(): void {\n        this.elements.forEach(item => this.elementDestroy(item));\n        this.elements = null;\n    }\n\n    protected elementAdd(item: ComponentRef<WindowElement>): ComponentRef<WindowElement> {\n        this.elements.push(item);\n        item.instance.window = this;\n        return item;\n    }\n\n    protected elementRemove(item: ComponentRef<WindowElement>): ComponentRef<WindowElement> {\n        ArrayUtil.remove(this.elements, item);\n        this.elementDestroy(item);\n        return item;\n    }\n\n    protected elementDestroy(item: ComponentRef<WindowElement>): ComponentRef<WindowElement> {\n        item.instance.window = null;\n        item.destroy();\n        return item;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Protected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected setClosed = (): void => {\n        this.isOpened = false;\n        this.emit(WindowEvent.CLOSED);\n        this.destroy();\n    };\n\n    protected setOpened = (): void => {\n        this.isOpened = true;\n        this.emit(WindowEvent.OPENED);\n    };\n\n    protected blinkToggle = (): void => {\n        this.isBlink = !this.isBlink;\n    };\n\n    protected stopShaking = (): void => {\n        this.isShaking = false;\n    };\n\n    protected emitResize = (): void => {\n        this.emit(WindowEvent.RESIZED);\n    };\n\n    protected setProperties(): void {\n        super.setProperties();\n        ViewUtil.addClass(this.container, 'vi-window');\n        ViewUtil.toggleClass(this.container, 'vi-modal', this.config.isModal);\n\n        this.container.addEventListener('click', this.mouseClickHandlerProxy, true);\n        this.container.addEventListener('mousedown', this.mouseDownHandlerProxy);\n\n        this.elementsCreate();\n    }\n\n    protected commitIsBlinkProperties(): void {}\n    protected commitIsShakingProperties(): void {}\n    protected commitIsDisabledProperties(): void {}\n\n    protected commitIsOnTopProperties(): void {\n        this.isBlink = false;\n    }\n    protected commitIsMinimizedProperties(): void {\n        this.isBlink = false;\n    }\n\n    protected commitSizeProperties(): void {\n        let width = !_.isNaN(this.width) ? `${this.width}px` : 'auto';\n        let height = !_.isNaN(this.height) ? `${this.height}px` : 'auto';\n        this.getReference().updateSize(width, height);\n    }\n\n    protected commitPositionProperties(): void {\n        if (_.isNaN(this._x) && _.isNaN(this._y)) {\n            return;\n        }\n        let position = {} as any;\n        if (!_.isNaN(this._y)) {\n            position.top = `${this._y}px`;\n        }\n        if (!_.isNaN(this._x)) {\n            position.left = `${this._x}px`;\n        }\n        this.getReference().updatePosition(position);\n    }\n\n    protected getConfig(): IWindowConfig<T> {\n        return this.properties.config;\n    }\n    protected getContainer(): HTMLElement {\n        return this.container;\n    }\n    protected getReference(): MatDialogRef<IWindowContent<T>> {\n        return this.properties.reference;\n    }\n\n    protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n        if (!this.isWasOnTop) {\n            return true;\n        }\n        let element = _.find(this.elements, item => item.location.nativeElement === event.target);\n        if (_.isNil(element)) {\n            return false;\n        }\n        element.instance.clickHandler(event);\n        return true;\n    }\n\n    protected resizeHandler = (): void => {\n        if (!this.isOpened) {\n            return;\n        }\n        clearTimeout(this.resizeTimer);\n        this.resizeTimer = setTimeout(this.emitResize, WindowImpl.RESIZE_DELAY);\n    };\n\n    protected mouseDownHandler(event: MouseEvent): void {\n        this.setOnTop();\n    }\n\n    protected mouseClickHandler(event: MouseEvent): void {\n        if (this.isNeedClickStopPropagation(event)) {\n            event.stopPropagation();\n        }\n        if (!this.isWasOnTop) {\n            this.isWasOnTop = true;\n        }\n    }\n\n    private mouseDownHandlerProxy = (event: MouseEvent): void => {\n        this.mouseDownHandler(event);\n    };\n\n    private mouseClickHandlerProxy = (event: MouseEvent): void => {\n        this.mouseClickHandler(event);\n    };\n\n    // --------------------------------------------------------------------------\n    //\n    //  Public Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public emit(event: string): void {\n        this.observer.next(event);\n    }\n\n    public close(): void {\n        this.getReference().close();\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.elementsDestroy();\n\n        this._container.removeEventListener('click', this.mouseClickHandlerProxy, true);\n        this._container.removeEventListener('mousedown', this.mouseDownHandlerProxy);\n\n        if (!_.isNil(this.content)) {\n            this.content.destroy();\n        }\n\n        if (!_.isNil(this.observer)) {\n            this.observer.complete();\n            this.observer = null;\n        }\n\n        this.properties = null;\n\n        this._wrapper = null;\n        this._backdrop = null;\n        this._container = null;\n\n        this.isBlinkSignal = null;\n        this.isOnTopSignal = null;\n        this.isShakingSignal = null;\n        this.isDisabledSignal = null;\n        this.isMinimizedSignal = null;\n\n        clearTimeout(this.shakeTimer);\n        this.shakeTimer = null;\n\n        clearTimeout(this.resizeTimer);\n        this.resizeTimer = null;\n    }\n\n    public blink(): void {\n        this.isBlink = true;\n    }\n\n    public shake(): void {\n        if (this.isShaking) {\n            return;\n        }\n        this.isShaking = true;\n        clearTimeout(this.shakeTimer);\n        this.shakeTimer = setTimeout(this.stopShaking, WindowImpl.SHAKE_DELAY);\n    }\n\n    public setOnTop(): void {\n        this.isWasOnTop = this.isOnTop;\n        this.emit(WindowEvent.SET_ON_TOP);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Size Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public getWidth(): number {\n        return this.width;\n    }\n\n    public getHeight(): number {\n        return this.height;\n    }\n\n    public setWidth(value: number, isNeedNotify: boolean = true): void {\n        this.width = value;\n        if (isNeedNotify) {\n            this.resizeHandler();\n        }\n    }\n\n    public setHeight(value: number, isNeedNotify: boolean = true): void {\n        this.height = value;\n        if (isNeedNotify) {\n            this.resizeHandler();\n        }\n    }\n\n    public setSize(width: number, height: number): void {\n        this.setWidth(width, false);\n        this.setHeight(height, false);\n        this.resizeHandler();\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Move Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public getX(): number {\n        return this.x;\n    }\n\n    public setX(value: number, isNeedNotify: boolean = true): void {\n        this.x = value;\n        if (isNeedNotify) {\n            this.emit(WindowEvent.MOVED);\n        }\n    }\n\n    public getY(): number {\n        return this.y;\n    }\n    public setY(value: number, isNeedNotify: boolean = true): void {\n        this.y = value;\n        if (isNeedNotify) {\n            this.emit(WindowEvent.MOVED);\n        }\n    }\n\n    public move(x: number, y: number): void {\n        this.setX(x, false);\n        this.setY(y, false);\n        this.emit(WindowEvent.MOVED);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Private Properties\n    //\n    // --------------------------------------------------------------------------\n\n    protected get isBlink(): boolean {\n        return this._isBlink;\n    }\n    protected set isBlink(value: boolean) {\n        if (value === this._isBlink) {\n            return;\n        }\n        this._isBlink = value;\n        this.isBlinkSignal?.set(value);\n        this.commitIsBlinkProperties();\n    }\n\n    protected get isShaking(): boolean {\n        return this._isShaking;\n    }\n    protected set isShaking(value: boolean) {\n        if (value === this._isShaking) {\n            return;\n        }\n        this._isShaking = value;\n        this.isShakingSignal?.set(value);\n        this.commitIsShakingProperties();\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Public Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get events(): Observable<string> {\n        return this.observer.asObservable();\n    }\n\n    public get config(): IWindowConfig<T> {\n        return this.properties.config;\n    }\n\n    public get content(): IWindowContent {\n        return this.properties.reference ? this.properties.reference.componentInstance : null;\n    }\n\n    public get container(): HTMLElement {\n        return this._container;\n    }\n\n    public get wrapper(): HTMLElement {\n        return this._wrapper;\n    }\n\n    public get backdrop(): HTMLElement {\n        return this._backdrop;\n    }\n\n    public get isOnTop(): boolean {\n        return this._isOnTop;\n    }\n    public set isOnTop(value: boolean) {\n        if (value === this._isOnTop) {\n            return;\n        }\n        this._isOnTop = value;\n        this.isOnTopSignal?.set(value);\n        this.commitIsOnTopProperties();\n        this.emit(WindowEvent.IS_ON_TOP_CHANGED);\n    }\n\n    public get isMinimized(): boolean {\n        return this._isMinimized;\n    }\n    public set isMinimized(value: boolean) {\n        if (value === this._isMinimized) {\n            return;\n        }\n        this._isMinimized = value;\n        this.isMinimizedSignal?.set(value);\n        this.commitIsMinimizedProperties();\n        this.emit(WindowEvent.IS_MINIMIZED_CHANGED);\n    }\n\n    public get isDisabled(): boolean {\n        return this._isDisabled;\n    }\n    public set isDisabled(value: boolean) {\n        if (value === this._isDisabled) {\n            return;\n        }\n        this._isDisabled = value;\n        this.isDisabledSignal?.set(value);\n        this.commitIsDisabledProperties();\n        this.emit(WindowEvent.IS_DISABLED_CHANGED);\n    }\n}\n","import { EdgeOptions, Interactable, InteractEvent, ResizableOptions } from '@interactjs/types';\nimport * as interact from 'interactjs';\nimport { ViewUtil } from '@ts-core/angular';\nimport { WindowImpl } from '../WindowImpl';\nimport * as _ from 'lodash';\n\nexport class WindowResizeable extends WindowImpl {\n    // --------------------------------------------------------------------------\n    //\n    //  Properties Methods\n    //\n    // --------------------------------------------------------------------------\n\n    private _interactable: Interactable;\n    private resizeMoveHandlerProxy: (...args) => any;\n\n    // --------------------------------------------------------------------------\n    //\n    //  Protected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected setProperties(): void {\n        super.setProperties();\n\n        if (!this.config.isResizeable) {\n            return;\n        }\n\n        ViewUtil.addClass(this.container, 'vi-resizeable');\n        if (_.isNil(this.resizeMoveHandlerProxy)) {\n            this.resizeMoveHandlerProxy = this.resizeMoveHandler.bind(this);\n        }\n\n        let edges = {} as EdgeOptions;\n        edges.top = true;\n        edges.left = true;\n        edges.right = true;\n        edges.bottom = true;\n\n        let param = {} as ResizableOptions;\n        param.edges = edges;\n\n        this.interactable.resizable(param);\n        this.interactable.on('resizemove', this.resizeMoveHandlerProxy);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Event Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    protected resizeMoveHandler(event: InteractEvent): void {\n        if (this.isMinimized) {\n            return;\n        }\n\n        let isChanged = event.dx !== 0 || event.dy !== 0;\n        if (!isChanged) {\n            return;\n        }\n\n        if (event.dx !== 0) {\n            let width = this.getWidth();\n            if (_.isNaN(width)) {\n                width = this.calculateWidth();\n            }\n            this.setWidth(width + event.dx, false);\n        }\n        if (event.dy !== 0) {\n            let height = this.getHeight();\n            if (_.isNaN(height)) {\n                height = this.calculateHeight();\n            }\n            this.setHeight(height + event.dy, false);\n        }\n        this.resizeHandler();\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Public Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.resizeMoveHandlerProxy = null;\n\n        if (!_.isNil(this._interactable)) {\n            this._interactable.unset();\n            this._interactable = null;\n        }\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Private Properties\n    //\n    // --------------------------------------------------------------------------\n\n    protected get interactable(): Interactable {\n        if (_.isNil(this._interactable)) {\n            this._interactable = interact.default(this.container);\n            // this._interactable.styleCursor(false);\n        }\n        return this._interactable;\n    }\n}\n","import { InteractEvent, DraggableOptions } from '@interactjs/types';\nimport { ViewUtil } from '@ts-core/angular';\nimport { WindowResizeable } from './WindowResizeable';\n\nexport class WindowDragable extends WindowResizeable {\n    // --------------------------------------------------------------------------\n    //\n    //  Properties Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected isWasDragged: boolean = false;\n\n    private dragMoveHandlerProxy: (...args) => any;\n    private dragStartHandlerProxy: (...args) => any;\n\n    // --------------------------------------------------------------------------\n    //\n    //  Protected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected setProperties(): void {\n        super.setProperties();\n\n        if (this.config.isModal) {\n            return;\n        }\n        ViewUtil.addClass(this.container, 'vi-draggable');\n        if (!this.config.isContentDragable) {\n            return;\n        }\n        this.dragMoveHandlerProxy = this.dragMoveHandler.bind(this);\n        this.dragStartHandlerProxy = this.dragStartHandler.bind(this);\n\n        let param = {} as DraggableOptions;\n        // let param = {} as any;\n        this.interactable.draggable(param);\n        this.interactable.on('dragmove', this.dragMoveHandlerProxy);\n        this.interactable.on('dragstart', this.dragStartHandlerProxy);\n    }\n\n    protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n        return this.isWasDragged || super.isNeedClickStopPropagation(event);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Event Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    public dragStartHandler(event: InteractEvent): void {\n        this.isWasDragged = true;\n    }\n\n    public dragMoveHandler(event: InteractEvent): void {\n        let x = this.getX() + event.dx;\n        let y = this.getY() + event.dy;\n        this.move(x, y);\n    }\n\n    protected mouseClickHandler(event: MouseEvent): void {\n        super.mouseClickHandler(event);\n        this.isWasDragged = false;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n\n        this.dragMoveHandlerProxy = null;\n        this.dragStartHandlerProxy = null;\n    }\n}\n","import { ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '@ts-core/angular';\nimport { WindowCloseElementComponent } from './window-close-element/window-close-element.component';\nimport { WindowExpandElementComponent } from './window-expand-element/window-expand-element.component';\nimport { WindowResizeElementComponent } from './window-resize-element/window-resize-element.component';\nimport { WindowMinimizeElementComponent } from './window-minimize-element/window-minimize-element.component';\nimport { WindowDragable } from './WindowDragable';\n\nexport class WindowBaseComponent extends WindowDragable {\n    // --------------------------------------------------------------------------\n    //\n    //  Static Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public static CLOSE_COMPONENT = WindowCloseElementComponent;\n    public static EXPAND_COMPONENT = WindowExpandElementComponent;\n    public static RESIZE_COMPONENT = WindowResizeElementComponent;\n    public static MINIMIZE_COMPONENT = WindowMinimizeElementComponent;\n\n    // --------------------------------------------------------------------------\n    //\n    //  Protected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected elementsCreate(): void {\n        super.elementsCreate();\n        if (!(this.content.container instanceof ViewContainerRef)) {\n            return;\n        }\n\n        if (!this.config.isDisableClose) {\n            this.elementAdd(this.content.container.createComponent(WindowBaseComponent.CLOSE_COMPONENT));\n        }\n        if (this.config.isResizeable) {\n            this.elementAdd(this.content.container.createComponent(WindowBaseComponent.RESIZE_COMPONENT));\n        }\n        if (this.config.isMinimizable) {\n            this.elementAdd(this.content.container.createComponent(WindowBaseComponent.MINIMIZE_COMPONENT));\n        }\n        if (this.config.isExpandable) {\n            this.elementAdd(this.content.container.createComponent(WindowBaseComponent.EXPAND_COMPONENT));\n        }\n    }\n\n    protected commitIsBlinkProperties(): void {\n        super.commitIsBlinkProperties();\n        ViewUtil.toggleClass(this.container, this.blinkClass, this.isBlink);\n    }\n\n    protected commitIsDisabledProperties(): void {\n        super.commitIsDisabledProperties();\n        ViewUtil.toggleClass(this.container, this.disabledClass, this.isDisabled);\n        ViewUtil.toggleClass(this.content.element, this.disabledClass, this.isDisabled);\n        ViewUtil.toggleClass(this.content.element.nativeElement.parentElement, this.disabledClass, this.isDisabled);\n    }\n\n    protected commitIsShakingProperties(): void {\n        super.commitIsShakingProperties();\n        ViewUtil.toggleClasses(this.container, this.shakingClass, this.isShaking);\n    }\n\n    protected commitIsMinimizedProperties(): void {\n        // super.commitIsMinimizedProperties();\n        ViewUtil.toggleClass(this.container, this.minimizedClass, this.isMinimized);\n        ViewUtil.toggleClass(this.content.element, this.minimizedClass, this.isMinimized);\n        ViewUtil.toggleClass(this.content.element.nativeElement.parentElement, this.minimizedClass, this.isMinimized);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Protected Properties\n    //\n    // --------------------------------------------------------------------------\n\n    protected get blinkClass(): string {\n        return 'vi-blink';\n    }\n\n    protected get disabledClass(): string {\n        return 'vi-disabled';\n    }\n\n    protected get minimizedClass(): string {\n        return 'vi-minimized';\n    }\n\n    protected get shakingClass(): string {\n        return 'shake-constant shake-horizontal';\n    }\n}\n","import { ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '@ts-core/angular';\nimport { BottomSheetImpl } from '../BottomSheetImpl';\nimport { WindowBaseComponent } from '../../window/component/WindowBaseComponent';\n\nexport class BottomSheetBaseComponent extends BottomSheetImpl {\n    // --------------------------------------------------------------------------\n    //\n    //  Static Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public static CLOSE_COMPONENT = WindowBaseComponent.CLOSE_COMPONENT;\n    public static EXPAND_COMPONENT = WindowBaseComponent.EXPAND_COMPONENT;\n\n    // --------------------------------------------------------------------------\n    //\n    //  Protected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected elementsCreate(): void {\n        super.elementsCreate();\n\n        if (!(this.content.container instanceof ViewContainerRef)) {\n            return;\n        }\n        if (!this.config.isDisableClose) {\n            this.elementAdd(this.content.container.createComponent(BottomSheetBaseComponent.CLOSE_COMPONENT));\n        }\n        if (this.config.isExpandable) {\n            this.elementAdd(this.content.container.createComponent(BottomSheetBaseComponent.EXPAND_COMPONENT));\n        }\n    }\n\n    protected commitIsDisabledProperties(): void {\n        ViewUtil.toggleClass(this.container, this.disabledClass, this.isDisabled);\n        ViewUtil.toggleClass(this.content.element, this.disabledClass, this.isDisabled);\n        ViewUtil.toggleClass(this.content.element.nativeElement.parentElement, this.disabledClass, this.isDisabled);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Protected Properties\n    //\n    // --------------------------------------------------------------------------\n\n    protected get disabledClass(): string {\n        return 'vi-disabled';\n    }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { MatBottomSheet, MatBottomSheetConfig, MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { ClassType } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { Observable, Subject } from 'rxjs';\nimport { WindowFactory } from '../window/WindowFactory';\nimport {\n    QuestionManager,\n    IQuestion,\n    IQuestionOptions,\n    QuestionMode,\n    IWindowContent,\n    IWindow,\n    WindowServiceEvent,\n    IWindowConfig,\n    WindowConfig,\n    WindowConfigOptions,\n    BottomSheetService,\n    WindowEvent,\n    WindowId\n} from '@ts-core/angular';\nimport { WindowQuestionComponent } from '../window/component/window-question/window-question.component';\nimport { BottomSheetBaseComponent } from './component/BottomSheetBaseComponent';\nimport { IWindowInfo } from '../window/WindowServiceBase';\n\nexport class BottomSheetServiceImpl extends BottomSheetService {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    public factory: WindowFactory<IWindow>;\n    public questionComponent: ComponentType<IWindowContent>;\n\n    protected _window: IWindow;\n\n    protected dialog: MatBottomSheet;\n    protected language: LanguageService;\n\n    private observer: Subject<ObservableData<WindowServiceEvent, IWindow>>;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(language: LanguageService, dialog: MatBottomSheet) {\n        super();\n        this.dialog = dialog;\n        this.language = language;\n        this.observer = new Subject();\n\n        this.factory = new WindowFactory(BottomSheetBaseComponent);\n        this.questionComponent = WindowQuestionComponent;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected setDefaultProperties<T>(config: IWindowConfig<T>): void {\n        config['hasBackdrop'] = config.isModal;\n        config['disableClose'] = config.isDisableClose;\n    }\n\n    protected openWindow<U extends IWindowContent<T>, T>(component: ClassType<U>, config: IWindowConfig<T>): IWindowInfo<T> {\n        let reference: MatBottomSheetRef<U> = this.dialog.open(component, config as MatBottomSheetConfig<T>);\n        let window = this.factory.create({ config, reference: reference as any, overlay: reference['_ref'].overlayRef });\n        return { window, content: reference.instance };\n    }\n\n    protected getById<T>(id: string): IWindow<T> {\n        return !_.isNil(this.window) && this.window.config.id === id ? this.window : null;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public open<U extends IWindowContent<T>, T>(component: ClassType<U>, config: IWindowConfig<T>): U {\n        let window: IWindow<T> = null;\n        let content: IWindowContent<T> = null;\n\n        this.setDefaultProperties(config);\n\n        let info = this.openWindow<U, T>(component, config);\n        window = info.window;\n        content = info.content;\n\n        this.observer.next(new ObservableData(WindowServiceEvent.OPEN_STARTED, window));\n        let subscription = window.events.subscribe(event => {\n            switch (event) {\n                case WindowEvent.OPENED:\n                    this._window = window;\n                    this.observer.next(new ObservableData(WindowServiceEvent.OPENED, window));\n                    this.observer.next(new ObservableData(WindowServiceEvent.OPEN_FINISHED, window));\n                    break;\n\n                case WindowEvent.CLOSED:\n                    subscription.unsubscribe();\n                    this._window = null;\n                    this.observer.next(new ObservableData(WindowServiceEvent.CLOSED, window));\n                    break;\n            }\n        });\n        return content as U;\n    }\n\n    public get<T>(value: WindowId<T>): IWindowContent<T> {\n        let id = value.toString();\n        if (_.isObject(value)) {\n            id = value.id;\n        }\n        if (_.isNil(id)) {\n            return null;\n        }\n        let window = this.getById<T>(id);\n        return !_.isNil(window) ? window.content : null;\n    }\n\n    public has<T>(value: WindowId<T>): boolean {\n        return !_.isNil(this.get(value));\n    }\n\n    public setOnTop<T>(value: WindowId<T>): boolean {\n        let content = this.get(value);\n        if (_.isNil(content)) {\n            return false;\n        }\n        content.window.setOnTop();\n        return true;\n    }\n\n    public close<T>(value: WindowId<T>): void {\n        let item = this.get(value);\n        if (!_.isNil(item)) {\n            item.close();\n        }\n    }\n\n    public closeAll(): void {\n        if (!_.isNil(this.window)) {\n            this.window.close();\n        }\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.closeAll();\n\n        if (!_.isNil(this.observer)) {\n            this.observer.complete();\n            this.observer = null;\n        }\n\n        this._window = null;\n\n        this.dialog = null;\n        this.factory = null;\n        this.language = null;\n        this.questionComponent = null;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tAdditional Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion {\n        let text = this.language.translate(translationId, translation);\n        let config: IWindowConfig<QuestionManager> = _.assign(new WindowConfig(true, false, 450), configOptions);\n        config.data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.INFO, text }));\n        return this.open(this.questionComponent, config).config.data;\n    }\n\n    public question(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion {\n        let text = this.language.translate(translationId, translation);\n        let config: WindowConfig<QuestionManager> = _.assign(new WindowConfig(true, false, 450), configOptions);\n        config.data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.QUESTION, text }));\n        return this.open(this.questionComponent, config).config.data;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get window(): IWindow {\n        return this._window;\n    }\n\n    public get events(): Observable<ObservableData<WindowServiceEvent, IWindow>> {\n        return this.observer.asObservable();\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { BottomSheetService, LanguageModule } from '@ts-core/angular';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatBottomSheet, MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { BottomSheetServiceImpl } from './BottomSheetServiceImpl';\nimport { LanguageService } from '@ts-core/frontend';\n\nlet declarations = [];\n@NgModule({\n    imports: [CommonModule, FormsModule, MatBottomSheetModule, MatButtonModule, LanguageModule, ...declarations],\n    exports: declarations\n})\nexport class BottomSheetModule {\n    // --------------------------------------------------------------------------\n    //\n    // \tStatic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public static forRoot(): ModuleWithProviders<BottomSheetModule> {\n        return {\n            ngModule: BottomSheetModule,\n            providers: [\n                {\n                    provide: BottomSheetService,\n                    deps: [LanguageService, MatBottomSheet],\n                    useFactory: bottomSheetServiceFactory\n                }\n            ]\n        };\n    }\n}\nexport function bottomSheetServiceFactory(language: LanguageService, dialog: MatBottomSheet): BottomSheetService {\n    return new BottomSheetServiceImpl(language, dialog);\n}\n","import { Component, HostListener } from '@angular/core';\nimport { ViewUtil, QuestionManager, INotificationContent } from '@ts-core/angular';\n\n@Component({ template: '' })\nexport abstract class NotificationQuestionBaseComponent extends INotificationContent<QuestionManager> {\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected commitConfigProperties(): void {\n        super.commitConfigProperties();\n\n        if (this.isInfo) {\n            ViewUtil.addClass(this.container, 'mouse-active');\n        }\n\n        this.data.closePromise.then(() => {\n            if (!this.isDestroyed) {\n                this.remove();\n            }\n        });\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tEvent Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    @HostListener('click')\n    public clickHandler(): void {\n        if (this.isInfo) {\n            this.data.closeClickHandler();\n        }\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Properties\n    //\n    // --------------------------------------------------------------------------\n\n    protected get isInfo(): boolean {\n        return this.data ? this.data.isInfo : false;\n    }\n}\n","import { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Component, signal, ViewContainerRef, WritableSignal } from '@angular/core';\nimport { LanguageService } from '@ts-core/frontend';\nimport { NotificationService, ViewUtil } from '@ts-core/angular';\nimport { NotificationQuestionBaseComponent } from '../NotificationQuestionBaseComponent';\nimport * as _ from 'lodash';\n\n@Component({\n    imports: [MatButtonModule, MatDialogModule],\n    selector: 'vi-notification',\n    styleUrl: 'notification.component.scss',\n    templateUrl: 'notification.component.html'\n})\nexport class NotificationComponent extends NotificationQuestionBaseComponent {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    public textSignal: WritableSignal<string>;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(\n        container: ViewContainerRef,\n        private language: LanguageService,\n        private notifications: NotificationService\n    ) {\n        super(container);\n        ViewUtil.addClasses(container.element, 'd-block');\n\n        this.textSignal = signal(null);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected commitConfigProperties(): void {\n        super.commitConfigProperties();\n\n        if (!_.isNil(this.data.text)) {\n            this.textSignal.set(this.data.text.replace(/(?:\\r\\n|\\r|\\n)/g, `<br/>`));\n        }\n        if (this.language.isHasTranslation(this.data.options.yesTextId)) {\n            this.data.yesText = this.language.translate(this.data.options.yesTextId);\n        }\n        if (this.language.isHasTranslation(this.data.options.notTextId)) {\n            this.data.notText = this.language.translate(this.data.options.notTextId);\n        }\n        if (this.language.isHasTranslation(this.data.options.checkTextId)) {\n            this.data.checkText = this.language.translate(this.data.options.checkTextId);\n        }\n        if (this.language.isHasTranslation(this.data.options.closeTextId)) {\n            this.data.closeText = this.language.translate(this.data.options.closeTextId);\n        }\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public remove(): void {\n        super.remove();\n        if (_.isNil(this.notification)) {\n            this.notifications.remove(this.config);\n        }\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.textSignal = null;\n    }\n}\n","<p class=\"text m-4 text-center mouse-disabled text-word-wrap-break-word\" [innerHTML]=\"textSignal()\"></p>\n\n@if (data?.isQuestion) {\n    <div class=\"text-center border-top variant p-3\">\n        <button class=\"mr-3 me-3\" (click)=\"data?.yesClickHandler()\" color=\"primary\" mat-stroked-button>\n            <span [innerHTML]=\"data?.yesText\"></span>\n        </button>\n\n        <button (click)=\"data?.notClickHandler()\" mat-stroked-button>\n            <span [innerHTML]=\"data?.notText\"></span>\n        </button>\n    </div>\n}\n","import { INotification } from '@ts-core/angular';\nimport { NotificationProperties } from './NotificationProperties';\n\nexport class NotificationFactory<U extends INotification> {\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(protected classType: { new (properties: NotificationProperties): U }) {}\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public create(properties: NotificationProperties): U {\n        return new this.classType(properties);\n    }\n}\n","import { MatDialogRef } from '@angular/material/dialog';\nimport { Observable, Subject, filter, takeUntil } from 'rxjs';\nimport { INotification, INotificationConfig, INotificationContent, NotificationEvent, ViewUtil, WindowBase, WindowEvent } from '@ts-core/angular';\nimport { NotificationProperties } from './NotificationProperties';\nimport * as _ from 'lodash';\n\nexport class NotificationImpl<T = any> extends WindowBase implements INotification {\n    // --------------------------------------------------------------------------\n    //\n    //  Properties\n    //\n    // --------------------------------------------------------------------------\n\n    private _container: HTMLElement;\n\n    protected properties: NotificationProperties<T>;\n\n    protected timer: any;\n    protected observer: Subject<string>;\n\n    // --------------------------------------------------------------------------\n    //\n    //  Constructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(properties: NotificationProperties<T>) {\n        super();\n        this.observer = new Subject();\n\n        this.properties = properties;\n        this.content.notification = this;\n\n        // Have to save for unsubscribe on destroy\n        this._container = this.properties.overlay.overlayElement;\n\n        this.setProperties();\n        this.getReference().afterOpened().pipe(takeUntil(this.destroyed)).subscribe(this.setOpened);\n        this.getReference().afterClosed().pipe(takeUntil(this.destroyed)).subscribe(this.setClosed);\n\n        this.events\n            .pipe(\n                filter(event => event === WindowEvent.CONTENT_READY),\n                takeUntil(this.destroyed)\n            )\n            .subscribe(this.updatePosition);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Protected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected setProperties(): void {\n        super.setProperties();\n        ViewUtil.addClass(this.container, 'vi-notification');\n    }\n\n    protected setClosed = (): void => {\n        this.emit(WindowEvent.CLOSED);\n        this.destroy();\n    };\n\n    protected setOpened = (): void => {\n        this.emit(WindowEvent.OPENED);\n    };\n\n    protected commitSizeProperties(): void {\n        let width = !_.isNaN(this.width) ? `${this.width}px` : 'auto';\n        let height = !_.isNaN(this.height) ? `${this.height}px` : 'auto';\n        this.getReference().updateSize(width, height);\n    }\n\n    protected commitPositionProperties(): void {\n        if (_.isNaN(this._x) && _.isNaN(this._y)) {\n            return;\n        }\n        let position = {} as any;\n        if (!_.isNaN(this._y)) {\n            position.top = `${this._y}px`;\n        }\n        if (!_.isNaN(this._x)) {\n            position.left = `${this._x}px`;\n        }\n        this.getReference().updatePosition(position);\n    }\n\n    protected getConfig(): INotificationConfig<T> {\n        return this.properties.config;\n    }\n    protected getContainer(): HTMLElement {\n        return this.container;\n    }\n    protected getReference(): MatDialogRef<INotificationContent<T>> {\n        return this.properties.reference;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Public Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public emit(event: string): void {\n        this.observer.next(event);\n    }\n\n    public close(): void {\n        this.getReference().close();\n    }\n\n    public remove(): void {\n        this.close();\n        this.observer.next(NotificationEvent.REMOVED);\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n\n        if (!_.isNil(this.observer)) {\n            this.observer.complete();\n            this.observer = null;\n        }\n        this.properties = null;\n        this._container = null;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Size Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public getWidth(): number {\n        return this.calculateWidth();\n    }\n\n    public getHeight(): number {\n        return this.calculateHeight();\n    }\n\n    public setWidth(value: number): void {\n        this.width = value;\n    }\n\n    public setHeight(value: number): void {\n        this.height = value;\n    }\n\n    public setSize(width: number, height: number): void {\n        this.setWidth(width);\n        this.setHeight(height);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Move Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public getX(): number {\n        return this.x;\n    }\n\n    public setX(value: number): void {\n        this.x = value;\n    }\n\n    public getY(): number {\n        return this.y;\n    }\n    public setY(value: number): void {\n        this.y = value;\n    }\n\n    public move(x: number, y: number): void {\n        this.setX(x);\n        this.setY(y);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //  Public Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get events(): Observable<string> {\n        return this.observer.asObservable();\n    }\n\n    public get config(): INotificationConfig<T> {\n        return this.properties.config;\n    }\n\n    public get content(): INotificationContent<T> {\n        return this.properties.reference ? this.properties.reference.componentInstance : null;\n    }\n\n    public get container(): HTMLElement {\n        return this._container;\n    }\n}\n","import { NotificationImpl } from '../../notification/NotificationImpl';\n\nexport class NotificationBaseComponent extends NotificationImpl {}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ClassType, IDestroyable, ObservableData } from '@ts-core/common';\nimport { ArrayUtil, DateUtil, ObjectUtil } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport { Observable, Subject } from 'rxjs';\nimport {\n    QuestionManager,\n    IQuestion,\n    IQuestionOptions,\n    QuestionMode,\n    WindowEvent,\n    WindowAlign,\n    NotificationService,\n    INotification,\n    INotificationContent,\n    NotificationConfig,\n    NotificationServiceEvent,\n    INotificationConfig,\n    NotificationEvent,\n    NotificationConfigOptions,\n    NotificationId\n} from '@ts-core/angular';\nimport { NotificationFactory } from './NotificationFactory';\nimport { NotificationBaseComponent } from './component/NotificationBaseComponent';\nimport { NotificationComponent } from './component/notification/notification.component';\nimport * as _ from 'lodash';\n\nexport class NotificationServiceImpl extends NotificationService {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    public factory: NotificationFactory<INotification>;\n    public questionComponent: ComponentType<INotificationContent>;\n\n    public gapY: number;\n    public closeDuration: number;\n\n    public minWidth: number;\n    public minHeight: number;\n\n    public paddingTop: number;\n    public paddingLeft: number;\n    public paddingRight: number;\n    public paddingBottom: number;\n\n    public verticalAlign: WindowAlign;\n    public horizontalAlign: WindowAlign;\n\n    protected dialog: MatDialog;\n    protected language: LanguageService;\n    protected observer: Subject<ObservableData<NotificationServiceEvent, INotification | INotificationConfig>>;\n\n    protected _configs: Array<INotificationConfig>;\n    protected _closedConfigs: Array<INotificationConfig>;\n    protected _notifications: Map<INotificationConfig, INotificationContent>;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(language: LanguageService, dialog: MatDialog) {\n        super();\n\n        this._configs = [];\n        this._closedConfigs = [];\n        this._notifications = new Map();\n\n        this.dialog = dialog;\n        this.language = language;\n        this.observer = new Subject();\n\n        this.factory = new NotificationFactory(NotificationBaseComponent);\n        this.questionComponent = NotificationComponent;\n\n        this.verticalAlign = WindowAlign.START;\n        this.horizontalAlign = WindowAlign.END;\n\n        this.gapY = 25;\n        this.minWidth = this.minHeight = 25;\n        this.paddingTop = this.paddingLeft = this.paddingRight = this.paddingBottom = 25;\n        this.closeDuration = 10 * DateUtil.MILLISECONDS_SECOND;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public open<U extends INotificationContent<T>, T>(component: ClassType<U>, config: INotificationConfig<T>): U {\n        let notification: INotification<T> = null;\n        let content: INotificationContent<T> = null;\n        if (!_.isNil(config.id)) {\n            notification = this.getById<T>(config.id);\n            if (!_.isNil(notification)) {\n                content = notification.content;\n                return content as U;\n            }\n        }\n\n        this.setDefaultProperties(config);\n\n        let info = this.openNotification<U, T>(component, config);\n        notification = info.notification;\n        content = info.content;\n\n        let subscription = notification.events.subscribe(event => {\n            switch (event) {\n                case WindowEvent.OPENED:\n                    this.add(config, content);\n                    this.checkPosition(notification);\n                    if (!_.isNil(config.sound)) {\n                        // Assets.playSound(config.sound);\n                    }\n                    break;\n\n                case WindowEvent.CLOSED:\n                    subscription.unsubscribe();\n                    this.close(config);\n                    break;\n\n                case NotificationEvent.REMOVED:\n                    subscription.unsubscribe();\n                    this.remove(config);\n                    break;\n            }\n        });\n        return content as U;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPrivate Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected getById<T>(id: string): INotification<T> {\n        let item = _.find(Array.from(this._notifications.values()), item => item.config.id === id);\n        return !_.isNil(item) ? item.notification : null;\n    }\n\n    protected setDefaultProperties<T>(config: INotificationConfig<T>): void {\n        if (_.isNaN(config.defaultMinWidth)) {\n            config.defaultMinWidth = this.minWidth;\n        }\n        if (_.isNaN(config.defaultMinHeight)) {\n            config.defaultMinHeight = this.minHeight;\n        }\n        if (_.isNaN(config.paddingTop)) {\n            config.paddingTop = this.paddingTop;\n        }\n        if (_.isNaN(config.paddingLeft)) {\n            config.paddingLeft = this.paddingLeft;\n        }\n        if (_.isNaN(config.paddingRight)) {\n            config.paddingRight = this.paddingRight;\n        }\n        if (_.isNaN(config.paddingBottom)) {\n            config.paddingBottom = this.paddingBottom;\n        }\n        if (_.isNaN(config.closeDuration)) {\n            config.closeDuration = this.closeDuration;\n        }\n        if (_.isNil(config.verticalAlign)) {\n            config.verticalAlign = this.verticalAlign;\n        }\n        if (_.isNil(config.horizontalAlign)) {\n            config.horizontalAlign = this.horizontalAlign;\n        }\n\n        config.isModal = config['hasBackdrop'] = false;\n\n        if (config instanceof NotificationConfig) {\n            config.setDefaultProperties();\n        }\n    }\n\n    protected checkPosition<T>(item: INotification<T>): void {\n        let previous = this.getPrevious(item);\n        if (!_.isNil(previous)) {\n            item.setY(previous.getY() + previous.getHeight() + this.gapY);\n        }\n    }\n\n    protected getPrevious<T>(value: INotification<T>): INotification {\n        if (this.notifications.size === 0) {\n            return null;\n        }\n\n        let items = Array.from(this.notifications.values());\n        for (let i = 0; i < items.length; i++) {\n            if (items[i].notification === value) {\n                if (i === 0) {\n                    return null;\n                }\n                return items[i - 1].notification;\n            }\n        }\n        return null;\n    }\n\n    protected openNotification<U extends INotificationContent<T>, T>(component: ClassType<U>, config: INotificationConfig<T>): INotificationInfo<T> {\n        let reference = this.dialog.open<INotificationContent<T>>(component, config);\n        let notification = this.factory.create({ config, reference, overlay: reference['_ref'].overlayRef });\n        return { notification, content: reference.componentInstance };\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tSetters Methods\n    //\n    // --------------------------------------------------------------------------\n\n    private add<T>(config: INotificationConfig<T>, content: INotificationContent<T>): void {\n        this._configs.push(config);\n        this.observer.next(new ObservableData(NotificationServiceEvent.ADDED, config));\n\n        this._notifications.set(config, content);\n        this.observer.next(new ObservableData(NotificationServiceEvent.OPENED, content.notification));\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tHelp Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public get<T>(value: NotificationId<T>): INotificationConfig<T> {\n        if (_.isNil(value)) {\n            return null;\n        }\n        if (value instanceof NotificationConfig) {\n            return value;\n        }\n\n        let id = value.toString();\n        if (ObjectUtil.instanceOf<NotificationConfigOptions>(value, ['id'])) {\n            id = value.id;\n        }\n        for (let item of this.configs) {\n            if (item.id === id) {\n                return item;\n            }\n        }\n        return null;\n    }\n\n    public has<T>(value: NotificationId<T>): boolean {\n        return !_.isNil(this.get(value));\n    }\n\n    public remove<T>(value: NotificationId<T>): void {\n        let config = this.get(value);\n        if (_.isNil(config)) {\n            return;\n        }\n\n        this.close(config);\n        ArrayUtil.remove(this._configs, config);\n        ArrayUtil.remove(this._closedConfigs, config);\n        this.observer.next(new ObservableData(NotificationServiceEvent.REMOVED, config));\n\n        if (IDestroyable.instanceOf(config)) {\n            config.destroy();\n        }\n    }\n\n    public closeAll(): void {\n        this.configs.forEach(item => this.remove(item));\n    }\n\n    public close<T>(value: NotificationId<T>): INotification<T> {\n        let config = this.get(value);\n        if (_.isNil(config)) {\n            return null;\n        }\n\n        let notification = this._notifications.get(config);\n        if (_.isNil(notification)) {\n            return null;\n        }\n\n        notification.close();\n        this._notifications.delete(config);\n\n        this._closedConfigs.push(config);\n        this.observer.next(new ObservableData(NotificationServiceEvent.CLOSED, notification.notification));\n        return notification.notification;\n    }\n\n    public info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: NotificationConfigOptions): IQuestion {\n        let text = this.language.translate(translationId, translation);\n        let data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.INFO, text }));\n        let config = _.assign(new NotificationConfig(data), configOptions);\n        return this.open(this.questionComponent, config).config.data;\n    }\n\n    public question(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: NotificationConfigOptions): IQuestion {\n        let text = this.language.translate(translationId, translation);\n        let data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.QUESTION, text }));\n        let config = _.assign(new NotificationConfig(data), configOptions);\n        return this.open(this.questionComponent, config).config.data;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get events(): Observable<ObservableData<NotificationServiceEvent, INotificationConfig | INotification>> {\n        return this.observer.asObservable();\n    }\n\n    public get configs(): Array<INotificationConfig> {\n        return this._configs;\n    }\n\n    public get closedConfigs(): Array<INotificationConfig> {\n        return this._closedConfigs;\n    }\n\n    public get notifications(): Map<INotificationConfig, INotificationContent> {\n        return this._notifications;\n    }\n}\n\nexport interface INotificationInfo<T> {\n    notification: INotification<T>;\n    content: INotificationContent<T>;\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { LanguageService } from '@ts-core/frontend';\nimport { LanguageModule, NotificationService } from '@ts-core/angular';\nimport { NotificationComponent } from './component/notification/notification.component';\nimport { NotificationServiceImpl } from './NotificationServiceImpl';\n\nlet declarations = [NotificationComponent];\n@NgModule({\n    imports: [CommonModule, FormsModule, MatDialogModule, MatButtonModule, LanguageModule, ...declarations],\n    exports: declarations\n})\nexport class NotificationModule {\n    // --------------------------------------------------------------------------\n    //\n    // \tStatic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public static forRoot(): ModuleWithProviders<NotificationModule> {\n        return {\n            ngModule: NotificationModule,\n            providers: [\n                {\n                    provide: NotificationService,\n                    deps: [LanguageService, MatDialog],\n                    useFactory: notificationServiceFactory\n                }\n            ]\n        };\n    }\n}\nexport function notificationServiceFactory(language: LanguageService, dialog: MatDialog): NotificationService {\n    return new NotificationServiceImpl(language, dialog);\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Interactable } from '@interactjs/types';\nimport { Destroyable } from '@ts-core/common';\nimport { WindowDragable } from './WindowDragable';\nimport { IWindow } from '@ts-core/angular';\nimport * as interact from 'interactjs';\nimport * as _ from 'lodash';\n\n@Directive({\n    selector: '[vi-window-drag-area]'\n})\nexport class WindowDragAreaDirective extends Destroyable {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    private _window: WindowDragable;\n    private _interactable: Interactable;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(private element: ElementRef) {\n        super();\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n\n        if (!_.isNil(this._interactable)) {\n            this._interactable.unset();\n            this._interactable = null;\n        }\n        this.element = null;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPrivate Methods\n    //\n    // --------------------------------------------------------------------------\n\n    private commitWindowProperties(): void {\n        if (!this.window.config || this.window.config.isModal) {\n            return;\n        }\n        this.interactable.draggable(true);\n        this.interactable.on('dragmove', this.dragMoveHandler);\n        this.interactable.on('dragstart', this.dragStartHandler);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tEvent Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    private dragStartHandler = (event: any): void => {\n        this._window.dragStartHandler(event);\n    };\n\n    private dragMoveHandler = (event: any): void => {\n        this._window.dragMoveHandler(event);\n    };\n\n    // --------------------------------------------------------------------------\n    //\n    //  Private Properties\n    //\n    // --------------------------------------------------------------------------\n\n    protected get interactable(): any {\n        if (!this._interactable) {\n            this._interactable = interact.default(this.element.nativeElement);\n            //this._interactable.styleCursor(false);\n        }\n        return this._interactable;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    @Input('vi-window-drag-area')\n    public set window(value: IWindow) {\n        if (value === this._window) {\n            return;\n        }\n        this._window = value as WindowDragable;\n        if (this._window) {\n            this.commitWindowProperties();\n        }\n    }\n\n    public get window(): IWindow {\n        return this._window;\n    }\n}\n","import { ObservableData, ClassType, Destroyable, ArrayUtil } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport { Observable, Subject } from 'rxjs';\nimport {\n    CookieService,\n    IQuestion,\n    IQuestionOptions,\n    IWindow,\n    IWindowConfig,\n    IWindowContent,\n    QuestionManager,\n    QuestionMode,\n    ViewUtil,\n    WindowAlign,\n    WindowConfig,\n    WindowConfigOptions,\n    WindowEvent,\n    WindowId,\n    WindowService,\n    WindowServiceEvent\n} from '@ts-core/angular';\nimport * as _ from 'lodash';\n\nexport abstract class WindowServiceBase extends WindowService {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // ---------------------------------------------------------------------------\n\n    public gapX: number;\n    public gapY: number;\n\n    public minWidth: number;\n    public minHeight: number;\n\n    public paddingTop: number;\n    public paddingLeft: number;\n    public paddingRight: number;\n    public paddingBottom: number;\n\n    public autoFocus: string;\n    public delayFocusTrap: boolean;\n\n    public verticalAlign: WindowAlign;\n    public horizontalAlign: WindowAlign;\n\n    public topZIndex: number;\n    public isNeedCheckPositionAfterOpen: boolean;\n\n    protected language: LanguageService;\n    protected observer: Subject<ObservableData<WindowServiceEvent, IWindow>>;\n    protected properties: WindowPropertiesManager;\n\n    protected _windows: Map<IWindowConfig, IWindowContent>;\n    protected _windowsArray: Array<IWindow>;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(language: LanguageService, cookies: CookieService) {\n        super();\n        this.language = language;\n\n        this._windows = new Map();\n        this._windowsArray = new Array();\n\n        this.observer = new Subject();\n        this.properties = new WindowPropertiesManager(cookies);\n\n        this.topZIndex = 1000;\n        this.autoFocus = 'dialog';\n        this.verticalAlign = this.horizontalAlign = WindowAlign.CENTER;\n        this.delayFocusTrap = true;\n        this.isNeedCheckPositionAfterOpen = true;\n\n        this.gapX = this.gapY = 25;\n        this.minWidth = this.minHeight = 100;\n        this.paddingTop = this.paddingLeft = this.paddingRight = this.paddingBottom = 25;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPrivate Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected updateTop(): void {\n        let items = this.windowsGet();\n        if (_.isEmpty(items)) {\n            return;\n        }\n        let item = items[0];\n        item.isOnTop = true;\n        this.observer.next(new ObservableData(WindowServiceEvent.SETTED_ON_TOP, item));\n    }\n\n    protected setWindowOnTop(window: IWindow): void {\n        let index = this.windowsArray.indexOf(window);\n        ArrayUtil.move(this.windowsArray, index, 0);\n\n        let items = this.windowsGet();\n        for (let i = 0; i < items.length; i++) {\n            let item = items[i];\n            item.isOnTop = item === window;\n            let zIndex = this.topZIndex;\n            if (!item.isOnTop) {\n                zIndex -= i;\n            }\n            this.zIndexSet(item, zIndex);\n        }\n\n        this.windowsArray.sort(this.zIndexSortFunction);\n        this.observer.next(new ObservableData(WindowServiceEvent.SETTED_ON_TOP, window));\n    }\n\n    protected checkPosition<T>(item: IWindow<T>): void {\n        while (this.hasSamePosition(item)) {\n            item.move(item.getX() + this.gapX, item.getY() + this.gapY);\n        }\n    }\n\n    protected hasSamePosition<T>(window: IWindow<T>): boolean {\n        let x = window.getX();\n        let y = window.getY();\n        return this.windowsArray.some(item => item !== window && x === item.getX() && y === item.getY());\n    }\n\n    protected zIndexGet(item: IWindow): number {\n        return !_.isNil(item) && !_.isNil(item.container) ? parseInt(ViewUtil.getStyle(item.container.parentElement, 'zIndex'), 10) : -1;\n    }\n\n    protected zIndexSet(item: IWindow, index: number): void {\n        if (_.isNil(item)) {\n            return;\n        }\n        if (!_.isNil(item.wrapper)) {\n            ViewUtil.setStyle(item.wrapper, 'zIndex', index);\n        }\n        if (!_.isNil(item.backdrop)) {\n            ViewUtil.setStyle(item.backdrop, 'zIndex', index);\n        }\n    }\n\n    protected zIndexSortFunction = (first: IWindow, second: IWindow): number => {\n        return this.zIndexGet(first) > this.zIndexGet(second) ? -1 : 1;\n    };\n\n    // --------------------------------------------------------------------------\n    //\n    // \tSetters Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected add<T>(config: IWindowConfig<T>, content: IWindowContent<T>): void {\n        this.windows.set(config, content);\n\n        let { window } = content;\n        this.windowsArray.push(window);\n        this.observer.next(new ObservableData(WindowServiceEvent.OPENED, window));\n    }\n\n    protected remove<T>(config: IWindowConfig<T>): void {\n        let content = this.windows.get(config);\n        if (_.isNil(content)) {\n            return null;\n        }\n\n        content.close();\n        this.windows.delete(config);\n\n        let { window } = content;\n        ArrayUtil.remove(this.windowsArray, window);\n        this.observer.next(new ObservableData(WindowServiceEvent.CLOSED, window));\n    }\n\n    protected getById<T>(id: string): IWindow<T> {\n        let item = _.find(Array.from(this.windows.values()), item => item.config.id === id);\n        return !_.isNil(item) ? item.window : null;\n    }\n\n    protected setDefaultProperties<T>(config: IWindowConfig<T>): void {\n        if (_.isNil(config.delayFocusTrap)) {\n            config.delayFocusTrap = this.delayFocusTrap;\n        }\n        if (_.isNil(config.autoFocus)) {\n            config.autoFocus = this.autoFocus;\n        }\n        if (_.isNil(config.verticalAlign)) {\n            config.verticalAlign = this.verticalAlign;\n        }\n        if (_.isNil(config.horizontalAlign)) {\n            config.horizontalAlign = this.horizontalAlign;\n        }\n        if (_.isNaN(config.defaultMinWidth)) {\n            config.defaultMinWidth = this.minWidth;\n        }\n        if (_.isNaN(config.defaultMinHeight)) {\n            config.defaultMinHeight = this.minHeight;\n        }\n        if (_.isNaN(config.paddingTop)) {\n            config.paddingTop = this.paddingTop;\n        }\n        if (_.isNaN(config.paddingLeft)) {\n            config.paddingLeft = this.paddingLeft;\n        }\n        if (_.isNaN(config.paddingRight)) {\n            config.paddingRight = this.paddingRight;\n        }\n        if (_.isNaN(config.paddingBottom)) {\n            config.paddingBottom = this.paddingBottom;\n        }\n\n        config['hasBackdrop'] = config.isModal;\n        config['disableClose'] = config.isDisableClose;\n\n        if (!_.isNil(config.propertiesId)) {\n            this.properties.load(config.propertiesId, config);\n        }\n        if (config instanceof WindowConfig) {\n            config.setDefaultProperties();\n        }\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public open<U extends IWindowContent<T>, T>(component: ClassType<U>, config: IWindowConfig<T>): U {\n        let window: IWindow<T> = null;\n        let content: IWindowContent<T> = null;\n        if (!_.isNil(config.id)) {\n            window = this.getById<T>(config.id);\n            if (!_.isNil(window)) {\n                content = window.content;\n                return content as U;\n            }\n        }\n\n        this.setDefaultProperties(config);\n\n        let info = this.openWindow<U, T>(component, config);\n        window = info.window;\n        content = info.content;\n\n        this.observer.next(new ObservableData(WindowServiceEvent.OPEN_STARTED, window));\n        let subscription = window.events.subscribe(event => {\n            switch (event) {\n                case WindowEvent.OPENED:\n                    this.add(config, content);\n                    this.setWindowOnTop(window);\n                    if (this.isNeedCheckPositionAfterOpen) {\n                        this.checkPosition(window);\n                    }\n                    this.observer.next(new ObservableData(WindowServiceEvent.OPEN_FINISHED, window));\n                    break;\n\n                case WindowEvent.CLOSED:\n                    subscription.unsubscribe();\n                    this.remove(config);\n                    if (window.isOnTop) {\n                        this.updateTop();\n                    }\n                    break;\n\n                case WindowEvent.RESIZED:\n                    if (!_.isNil(config.propertiesId)) {\n                        this.properties.save(config.propertiesId, window);\n                    }\n                    break;\n\n                case WindowEvent.SET_ON_TOP:\n                    this.setWindowOnTop(window);\n                    break;\n            }\n        });\n        return content as U;\n    }\n\n    public get<T>(value: WindowId<T>): IWindowContent<T> {\n        let id = value.toString();\n        if (_.isObject(value)) {\n            id = value.id;\n        }\n        if (_.isNil(id)) {\n            return null;\n        }\n        let window = this.getById<T>(id);\n        return !_.isNil(window) ? window.content : null;\n    }\n\n    public has<T>(value: WindowId<T>): boolean {\n        return !_.isNil(this.get(value));\n    }\n\n    public setOnTop<T>(value: WindowId<T>): boolean {\n        let content = this.get(value);\n        if (_.isNil(content)) {\n            return false;\n        }\n        content.window.setOnTop();\n        return true;\n    }\n\n    public close<T>(value: WindowId<T>): void {\n        let item = this.get(value);\n        if (!_.isNil(item)) {\n            item.close();\n        }\n    }\n\n    public closeAll(): void {\n        this.windowsArray.forEach(item => item.close());\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.closeAll();\n        this.windows.clear();\n\n        if (!_.isNil(this.observer)) {\n            this.observer.complete();\n            this.observer = null;\n        }\n        if (!_.isNil(this.properties)) {\n            this.properties.destroy();\n            this.properties = null;\n        }\n\n        this.language = null;\n    }\n\n    protected abstract openWindow<U extends IWindowContent<T>, T>(component: ClassType<U>, config: IWindowConfig<T>): IWindowInfo<T>;\n\n    protected abstract openInfo<T>(config: IWindowConfig<T>): IQuestion;\n\n    protected abstract openQuestion<T>(config: IWindowConfig<T>): IQuestion;\n\n    protected windowsGet(): Array<IWindow> {\n        return this.windowsArray;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tAdditional Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion {\n        let text = this.language.translate(translationId, translation);\n        let config: IWindowConfig<QuestionManager> = _.assign(new WindowConfig(true, false, 450), configOptions);\n        config.data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.INFO, text }));\n        return this.openQuestion(config);\n    }\n\n    public question(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion {\n        let text = this.language.translate(translationId, translation);\n        let config: IWindowConfig<QuestionManager> = _.assign(new WindowConfig(true, false, 450), configOptions);\n        config.data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.QUESTION, text }));\n        return this.openQuestion(config);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get events(): Observable<ObservableData<WindowServiceEvent, IWindow>> {\n        return this.observer.asObservable();\n    }\n\n    public get windows(): Map<IWindowConfig, IWindowContent> {\n        return this._windows;\n    }\n\n    public get windowsArray(): Array<IWindow> {\n        return this._windowsArray;\n    }\n\n    /*\n    public get windowsArray(): Array<IWindow> {\n        return Array.from(this.windows.values()).map(item => item.window);\n    }\n    */\n}\n\nclass WindowPropertiesManager extends Destroyable {\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(private cookies: CookieService) {\n        super();\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public load<T>(name: string, config: IWindowConfig<T>): void {\n        let item = this.cookies.getObject(`${name}Window`) as IWindowConfig<T>;\n        if (_.isNil(item)) {\n            return;\n        }\n        if (item.hasOwnProperty('width')) {\n            config.defaultWidth = item.width as any;\n        }\n        if (item.hasOwnProperty('height')) {\n            config.defaultHeight = item.height as any;\n        }\n    }\n\n    public save(name: string, window: IWindow): void {\n        this.cookies.putObject(name + 'Window', { width: window.getWidth(), height: window.getHeight() });\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.cookies = null;\n    }\n}\n\nexport interface IWindowInfo<T> {\n    window: IWindow<T>;\n    content: IWindowContent<T>;\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ClassType } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport { BottomSheetService, CookieService, IQuestion, IWindowConfig } from '@ts-core/angular';\nimport { WindowQuestionComponent } from './component/window-question/window-question.component';\nimport { WindowBaseComponent } from './component/WindowBaseComponent';\nimport { IWindowContent, IWindow } from '@ts-core/angular';\nimport { WindowFactory } from './WindowFactory';\nimport { IWindowInfo, WindowServiceBase } from './WindowServiceBase';\nimport * as _ from 'lodash';\n\nexport class WindowServiceImpl extends WindowServiceBase {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    public factory: WindowFactory<IWindow>;\n    public questionComponent: ComponentType<IWindowContent>;\n\n    protected sheet: BottomSheetService;\n    protected dialog: MatDialog;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(language: LanguageService, cookies: CookieService, dialog: MatDialog, sheet: BottomSheetService) {\n        super(language, cookies);\n        this.sheet = sheet;\n        this.dialog = dialog;\n        this.factory = new WindowFactory(WindowBaseComponent);\n        this.questionComponent = WindowQuestionComponent;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected openInfo<T>(config: IWindowConfig<T>): IQuestion {\n        return this.openQuestion(config);\n    }\n\n    protected openWindow<U extends IWindowContent<T>, T>(component: ClassType<U>, config: IWindowConfig<T>): IWindowInfo<T> {\n        let reference = this.dialog.open<IWindowContent>(component, config);\n        let window = this.factory.create({ config: config, reference, overlay: reference['_ref'].overlayRef });\n        return { window, content: reference.componentInstance };\n    }\n\n    protected openQuestion<T>(config: IWindowConfig<T>): IQuestion {\n        return this.open(this.questionComponent, config).config.data;\n    }\n\n    protected windowsGet(): Array<IWindow> {\n        let items = super.windowsGet().concat();\n        if (!_.isNil(this.sheet.window)) {\n            items.push(this.sheet.window);\n        }\n        return items;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.dialog = null;\n        this.factory = null;\n        this.questionComponent = null;\n    }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { LanguageModule, CookieModule, CookieService, WindowService, BottomSheetService } from '@ts-core/angular';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { WindowDragAreaDirective } from './component/WindowDragAreaDirective';\nimport { WindowQuestionComponent } from './component/window-question/window-question.component';\nimport { WindowCloseElementComponent } from './component/window-close-element/window-close-element.component';\nimport { WindowExpandElementComponent } from './component/window-expand-element/window-expand-element.component';\nimport { WindowResizeElementComponent } from './component/window-resize-element/window-resize-element.component';\nimport { WindowMinimizeElementComponent } from './component/window-minimize-element/window-minimize-element.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { WindowServiceImpl } from './WindowServiceImpl';\nimport { LanguageService } from '@ts-core/frontend';\nimport { BottomSheetModule } from '../bottomSheet/BottomSheetModule';\n\nlet declarations = [\n    WindowDragAreaDirective,\n    WindowQuestionComponent,\n    WindowCloseElementComponent,\n    WindowExpandElementComponent,\n    WindowResizeElementComponent,\n    WindowMinimizeElementComponent\n];\n@NgModule({\n    imports: [CommonModule, FormsModule, MatButtonModule, MatDialogModule, CookieModule, LanguageModule, BottomSheetModule, ...declarations],\n    exports: declarations\n})\nexport class WindowModule {\n    // --------------------------------------------------------------------------\n    //\n    // \tStatic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public static forRoot(): ModuleWithProviders<WindowModule> {\n        return {\n            ngModule: WindowModule,\n            providers: [\n                {\n                    provide: WindowService,\n                    deps: [LanguageService, CookieService, MatDialog, BottomSheetService],\n                    useFactory: windowServiceFactory\n                }\n            ]\n        };\n    }\n}\n\nexport function windowServiceFactory(language: LanguageService, cookies: CookieService, dialog: MatDialog, sheet: BottomSheetService): WindowService {\n    return new WindowServiceImpl(language, cookies, dialog, sheet);\n}\n","import { MatMenuPanel, MatMenuTrigger } from '@angular/material/menu';\nimport { FlexibleConnectedPositionStrategy, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { Directive, Input } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Directive({\n    selector: '[vi-menu-trigger-for]'\n})\nexport class MenuTriggerForDirective extends MatMenuTrigger {\n    //--------------------------------------------------------------------------\n    //\n    //\tPublic Methods\n    //\n    //--------------------------------------------------------------------------\n\n    public openMenuOn(target: any): void {\n        if (_.isNil(target)) {\n            return;\n        }\n\n        this.openMenu();\n        let strategy = this.getPositionStrategy();\n        if (strategy instanceof FlexibleConnectedPositionStrategy) {\n            strategy['_origin'] = target;\n            strategy.apply();\n        }\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    //\tProtected Methods\n    //\n    //--------------------------------------------------------------------------\n\n    protected getPositionStrategy(): PositionStrategy {\n        let reference: OverlayRef = this['_overlayRef'];\n        return !_.isNil(reference) ? reference.getConfig().positionStrategy : null;\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    //\tPublic Properties\n    //\n    //--------------------------------------------------------------------------\n\n    @Input('vi-menu-trigger-for')\n    public set menu(value: MatMenuPanel) {\n        super.menu = value;\n    }\n    public get menu(): MatMenuPanel {\n        return super.menu;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { ArrayUtil, ClassType, Loadable, LoadableEvent, LoadableStatus, ObservableData } from '@ts-core/common';\nimport { NativeWindowService } from '@ts-core/frontend';\nimport { filter, map, Observable } from 'rxjs';\nimport { Platform } from '@angular/cdk/platform';\nimport * as _ from 'lodash';\n\n@Injectable({ providedIn: 'root' })\nexport class VoiceRecognitionService extends Loadable<VoiceRecognitionEvent, string> {\n    //--------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    //--------------------------------------------------------------------------\n\n    protected _isSupported: boolean;\n\n    protected chunks: Array<string>;\n    protected dictionary: VoiceRecognitionDictionary;\n    protected recognition: any;\n    protected dictionaries: VoiceRecognitionDictionaries;\n\n    //--------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    //--------------------------------------------------------------------------\n\n    constructor(\n        protected nativeWindow: NativeWindowService,\n        protected platform: Platform\n    ) {\n        super();\n        this.chunks = new Array();\n        this.status = LoadableStatus.LOADED;\n\n        this.initialize();\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    // \tPrivate Methods\n    //\n    //--------------------------------------------------------------------------\n\n    protected initialize(): void {\n        this._isSupported = !_.isNil(this.SpeechRecognitionClass);\n        if (!this.isSupported) {\n            return;\n        }\n\n        this.recognition = this.createSpeechRecognition();\n        this.dictionaries = this.createDictionaries();\n        this.setLanguage();\n\n        this.recognition.addEventListener('end', this.recognitionEndHandler);\n        this.recognition.addEventListener('error', this.recognitionErrorHandler);\n        this.recognition.addEventListener('result', this.recognitionResultHandler);\n    }\n\n    protected createDictionaries(): VoiceRecognitionDictionaries {\n        let item = {} as VoiceRecognitionDictionaries;\n        item[VoiceRecognitionDictionaryLanguage.RU] = VoiceRecognitionDictionaryRu;\n        item[VoiceRecognitionDictionaryLanguage.EN] = VoiceRecognitionDictionaryEn;\n        return item;\n    }\n\n    protected createSpeechRecognition(): any {\n        let item = new this.SpeechRecognitionClass();\n        item.continuous = this.isContinuous;\n        item.interimResults = this.isIntermediateResults;\n        item.maxAlternatives = 1;\n        return item;\n    }\n\n    protected setLanguage(): void {\n        if (!this.isSupported || _.isNil(this.recognition)) {\n            return;\n        }\n        let language = this.getLanguage();\n        this.dictionary = this.dictionaries[language];\n        this.recognition.lang = language;\n    }\n\n    protected replaceFinal(item: string): string {\n        if (_.isNil(this.dictionary)) {\n            return item;\n        }\n        return item.replace(/\\s{1,}([\\.+,?!:-])/g, '$1');\n    }\n\n    protected replaceIntermediate(item: string): string {\n        if (_.isNil(this.dictionary)) {\n            return item;\n        }\n        return item\n            .split(' ')\n            .map(word => {\n                word = word.trim();\n                let lower = word.toLowerCase();\n                return !_.isNil(this.dictionary[lower]) ? this.dictionary[lower] : word;\n            })\n            .join(' ');\n    }\n\n    protected getLanguage(): string {\n        return 'ru-RU';\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    // \tEvent Handlers\n    //\n    //--------------------------------------------------------------------------\n\n    protected recognitionResultHandler = (event: any): void => {\n        let isFinal = false;\n        let transcript = '';\n        for (let i = event.resultIndex; i < event.results.length; i++) {\n            let item = event.results[i];\n            if (item.isFinal) {\n                isFinal = true;\n            }\n            transcript += this.replaceIntermediate(_.first<any>(item).transcript);\n        }\n        if (isFinal) {\n            transcript = this.replaceFinal(transcript);\n        }\n        let text = transcript;\n        if (!_.isEmpty(this.chunks)) {\n            text = this.replaceFinal(`${this.chunks.join(' ')} ${text}`);\n        }\n        if (isFinal) {\n            this.chunks.push(transcript);\n        }\n        this.observer.next(new ObservableData(VoiceRecognitionEvent.PROGRESS, text));\n    };\n\n    protected recognitionEndHandler = (event: Event): void => {\n        if (this.isLoading) {\n            this.recognition.start();\n        }\n    };\n\n    protected recognitionErrorHandler = (event: Event): void => {\n        this.stop();\n    };\n\n    //--------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    //--------------------------------------------------------------------------\n\n    public async start(): Promise<void> {\n        if (this.isLoading) {\n            return;\n        }\n        this.recognition.start();\n        ArrayUtil.clear(this.chunks);\n        this.status = LoadableStatus.LOADING;\n        this.observer.next(new ObservableData(LoadableEvent.STARTED));\n    }\n\n    public async stop(): Promise<void> {\n        if (!this.isLoading) {\n            return;\n        }\n        this.recognition.stop();\n        this.status = LoadableStatus.LOADED;\n        this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    // \tPrivate Properties\n    //\n    //--------------------------------------------------------------------------\n\n    protected get SpeechRecognitionClass(): ClassType<any> {\n        return this.nativeWindow.window['SpeechRecognition'] || this.nativeWindow.window['webkitSpeechRecognition'];\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    //--------------------------------------------------------------------------\n\n    public get progress(): Observable<string> {\n        return this.observer.asObservable().pipe(\n            filter(item => item.type === VoiceRecognitionEvent.PROGRESS),\n            map(item => item.data.toString())\n        );\n    }\n\n    public get isSupported(): boolean {\n        return this._isSupported;\n    }\n\n    public get isContinuous(): boolean {\n        return true;\n    }\n\n    public get isIntermediateResults(): boolean {\n        return !this.platform.ANDROID && !this.platform.IOS;\n    }\n}\n\nexport enum VoiceRecognitionEvent {\n    PROGRESS = 'PROGRESS'\n}\n\nexport type VoiceRecognitionDictionary = Record<string, string>;\n\nexport type VoiceRecognitionDictionaries = Record<VoiceRecognitionDictionaryLanguage, VoiceRecognitionDictionary>;\n\nexport enum VoiceRecognitionDictionaryLanguage {\n    RU = 'ru',\n    EN = 'en'\n}\n\nexport let VoiceRecognitionDictionaryRu: VoiceRecognitionDictionary = {\n    точка: '.',\n    запятая: ',',\n    вопрос: '?',\n    восклицание: '!',\n    двоеточие: ':',\n    тире: '-',\n    абзац: '\\n',\n    отступ: '\\t'\n};\n\nexport let VoiceRecognitionDictionaryEn: VoiceRecognitionDictionary = {\n    dot: '.',\n    comma: ',',\n    question: '?',\n    exclamation: '!',\n    colon: ':',\n    dash: '-',\n    paragraph: '\\n',\n    indent: '\\t'\n};\n","import { Directive, ElementRef, HostListener, Output } from '@angular/core';\nimport { DateUtil, Loadable, LoadableEvent, LoadableStatus, ObservableData } from '@ts-core/common';\nimport { filter, Observable } from 'rxjs';\nimport { ViewUtil } from '@ts-core/angular';\nimport { VoiceRecognitionService } from '../service/VoiceRecognitionService';\nimport * as _ from 'lodash';\n\n@Directive({\n    selector: '[vi-voice-recognition-button]'\n})\nexport class VoiceRecognitionButtonDirective extends Loadable<void> {\n    //--------------------------------------------------------------------------\n    //\n    //\tProperties\n    //\n    //--------------------------------------------------------------------------\n\n    protected _timer: any;\n\n    //--------------------------------------------------------------------------\n    //\n    //\tConstructor\n    //\n    //--------------------------------------------------------------------------\n\n    constructor(\n        private element: ElementRef,\n        private recognition: VoiceRecognitionService\n    ) {\n        super();\n        this.initialize();\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    //\tPrivate Methods\n    //\n    //--------------------------------------------------------------------------\n\n    protected initialize(): void {\n        this._status = LoadableStatus.LOADED;\n        if (!this.isSupported) {\n            ViewUtil.addClass(this.element, 'd-none');\n        }\n    }\n\n    protected commitStatusChangedProperties(oldStatus: LoadableStatus, newStatus: LoadableStatus): void {\n        super.commitStatusChangedProperties(oldStatus, newStatus);\n\n        ViewUtil.toggleClass(this.element, 'color-base', this.isLoading);\n\n        switch (newStatus) {\n            case LoadableStatus.LOADING:\n                this.observer.next(new ObservableData(LoadableEvent.STARTED));\n                break;\n            case LoadableStatus.LOADED:\n                this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n                break;\n        }\n    }\n\n    protected activate(): void {\n        this.status = LoadableStatus.LOADING;\n    }\n\n    protected deactivate(): void {\n        if (this.isNeedDeactivationDelay) {\n            this.timer = setTimeout(this.deactivateHandler, this.delay);\n        } else {\n            this.deactivateHandler();\n        }\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    //\tPublic Methods\n    //\n    //--------------------------------------------------------------------------\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        if (this.isLoading) {\n            this.recognition.stop();\n        }\n        super.destroy();\n        this.timer = null;\n        this.recognition = null;\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    //\tEvent Handlers\n    //\n    //--------------------------------------------------------------------------\n\n    @HostListener('click', ['$event'])\n    protected clickHandler(event: MouseEvent): void {\n        event.stopPropagation();\n    }\n\n    @HostListener('pointerup', ['$event'])\n    protected pointerUpHandler(event: MouseEvent): void {\n        this.recognition.stop();\n        this.deactivate();\n    }\n\n    @HostListener('pointerleave')\n    protected pointerLeaveHandler(): void {\n        this.recognition.stop();\n        this.deactivate();\n    }\n\n    @HostListener('pointerdown')\n    protected pointerDownHandler(): void {\n        this.recognition.start();\n        this.activate();\n    }\n\n    protected deactivateHandler = (): void => {\n        this.status = LoadableStatus.LOADED;\n    };\n\n    //--------------------------------------------------------------------------\n    //\n    //\tPrivate Properties\n    //\n    //--------------------------------------------------------------------------\n\n    protected get delay(): number {\n        return DateUtil.MILLISECONDS_SECOND / 2;\n    }\n\n    protected get isDisabled(): boolean {\n        return !this.isSupported || this.isLoading;\n    }\n\n    protected get isSupported(): boolean {\n        return this.recognition.isSupported;\n    }\n\n    protected get isNeedDeactivationDelay(): boolean {\n        return !this.recognition.isIntermediateResults;\n    }\n\n    protected get timer(): any {\n        return this._timer;\n    }\n    protected set timer(value: any) {\n        if (value === this._timer) {\n            return;\n        }\n        clearTimeout(this._timer);\n        this._timer = value;\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    //\tPublic Properties\n    //\n    //--------------------------------------------------------------------------\n\n    @Output()\n    public get started(): Observable<void> {\n        return super.started;\n    }\n    @Output()\n    public get progress(): Observable<string> {\n        return this.recognition.progress.pipe(filter(() => this.isLoading));\n    }\n    @Output()\n    public get finished(): Observable<void> {\n        return super.finished;\n    }\n}\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { booleanAttribute, ChangeDetectorRef, Component, inject, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport { ListItems, IListItem } from '@ts-core/angular';\nimport { takeUntil } from 'rxjs';\nimport * as _ from 'lodash';\n\n@Component({\n    imports: [MatMenuModule, MatIconModule, MatButtonModule],\n    selector: 'vi-menu-list',\n    templateUrl: 'menu-list.component.html'\n})\nexport class MenuListComponent<U extends IListItem<V>, V = any> extends DestroyableContainer {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    @Input()\n    public list: ListItems<U>;\n\n    @Input({ transform: booleanAttribute })\n    public isMaterialIcon: boolean;\n\n    private cd: ChangeDetectorRef;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    //\n    // Подписи пунктов переводятся внутри списка, а он про отрисовку ничего не знает:\n    // без этого при смене языка на экране остались бы прежние слова\n    //\n    constructor() {\n        super();\n        this.cd = inject(ChangeDetectorRef);\n\n        let language = inject(LanguageService, { optional: true });\n        if (!_.isNil(language)) {\n            language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.cd.markForCheck());\n        }\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n\n        this.cd = null;\n        this.list = null;\n    }\n}\n","@for (item of list?.filtered; track item.uid) {\n    <button mat-menu-item [class]=\"item.className\" (click)=\"list?.actionItem(item)\">\n        @if (isMaterialIcon) {\n            <mat-icon [fontIcon]=\"item.iconId\"></mat-icon>\n        } @else {\n            <span [class]=\"item.iconId\"></span>\n        }\n        <span [innerHTML]=\"item.label\" [title]=\"item.label\"></span>\n    </button>\n}\n","import { MatTabsModule } from '@angular/material/tabs';\nimport { ChangeDetectorRef, Component, Input, WritableSignal, booleanAttribute, inject, signal } from '@angular/core';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport { SelectListItems, ISelectListItem } from '@ts-core/angular';\nimport { Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\n@Component({\n    imports: [MatTabsModule],\n    selector: 'vi-tab-group',\n    templateUrl: 'tab-group.component.html'\n})\nexport class TabGroupComponent<T = any> extends DestroyableContainer {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    @Input()\n    public className: string;\n\n    protected _list: SelectListItems<ISelectListItem<T>>;\n    protected _isStretch: boolean = true;\n\n    public isStretchSignal: WritableSignal<boolean>;\n    public selectedIndexSignal: WritableSignal<number>;\n\n    protected listSubscription?: Subscription;\n    private cd: ChangeDetectorRef;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    constructor() {\n        super();\n        this.isStretchSignal = signal(true);\n        this.selectedIndexSignal = signal(null);\n        this.cd = inject(ChangeDetectorRef);\n\n        // Названия вкладок переводятся внутри списка, а он про отрисовку ничего не знает:\n        // без этого при смене языка на экране остались бы прежние слова\n        let language = inject(LanguageService, { optional: true });\n        if (!_.isNil(language)) {\n            language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.cd.markForCheck());\n        }\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected commitListProperties(): void {\n        this.listSelectedIndexChanged();\n        this.listSubscription = this.list.changed.pipe(takeUntil(this.destroyed)).subscribe(() => this.listSelectedIndexChanged());\n    }\n\n    protected commitIsStretchProperties(): void {}\n\n    // --------------------------------------------------------------------------\n    //\n    // \tEvent Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    public selectedIndexChanged(event: number): void {\n        if (!_.isNil(this.list)) {\n            this.list.selectedIndex = event;\n        }\n    }\n\n    public selectedTabChanged(event: MatTabChangeEvent): void {\n        if (_.isNil(this.list)) {\n            return;\n        }\n        let index = event.index;\n        if (index < 0 || index >= this.list.length) {\n            return;\n        }\n        let item = this.list.collection[index];\n        this.list.selectedItem = item;\n        this.list.actionItem(item);\n    }\n\n    protected listSelectedIndexChanged(): void {\n        this.selectedIndexSignal.set(this.list?.selectedIndex);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n\n        this.cd = null;\n        this.list = null;\n        this.isStretchSignal = null;\n        this.selectedIndexSignal = null;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get list(): SelectListItems<ISelectListItem<T>> {\n        return this._list;\n    }\n    @Input()\n    public set list(value: SelectListItems<ISelectListItem<T>>) {\n        if (value === this._list) {\n            return;\n        }\n\n        if (!_.isNil(this.listSubscription)) {\n            this.listSubscription.unsubscribe();\n            this.listSubscription = null;\n        }\n        this._list = value;\n        if (!_.isNil(value)) {\n            this.commitListProperties();\n        }\n    }\n\n    public get isStretch(): boolean {\n        return this._isStretch;\n    }\n    @Input({ transform: booleanAttribute })\n    public set isStretch(value: boolean) {\n        if (value === this._isStretch) {\n            return;\n        }\n        this._isStretch = value;\n        this.isStretchSignal?.set(value);\n        this.commitIsStretchProperties();\n    }\n}\n","<mat-tab-group\n    [class]=\"className\"\n    [mat-stretch-tabs]=\"isStretchSignal()\"\n    [selectedIndex]=\"selectedIndexSignal()\"\n    (selectedIndexChange)=\"selectedIndexChanged($event)\"\n    (selectedTabChange)=\"selectedTabChanged($event)\"\n>\n    @for (item of list?.collection; track item.uid) {\n        <mat-tab [class]=\"item.className\" [label]=\"item.label\" [disabled]=\"!item.isEnabled\" (click)=\"list?.actionItem(item)\"></mat-tab>\n    }\n</mat-tab-group>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ICdkTableRow } from './ICdkTableRow';\nimport * as _ from 'lodash';\n\n@Pipe({\n    name: 'viCdkTableRowStyleName'\n})\nexport class CdkTableRowStyleNamePipe implements PipeTransform {\n    // --------------------------------------------------------------------------\n    //\n    //\tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public transform<U>(item: U, row: ICdkTableRow<U>, selectedRows: Array<U>): { [key: string]: any } {\n        return !_.isNil(row) && !_.isNil(row.styleName) ? row.styleName(item, selectedRows) : null;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ICdkTableRow } from './ICdkTableRow';\nimport * as _ from 'lodash';\n\n@Pipe({\n    name: 'viCdkTableRowClassName'\n})\nexport class CdkTableRowClassNamePipe implements PipeTransform {\n    // --------------------------------------------------------------------------\n    //\n    //\tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public transform<U>(item: U, row: ICdkTableRow<U>, selectedRows: Array<U>): string {\n        return !_.isNil(row) && !_.isNil(row.className) ? (_.isString(row.className) ? row.className : row.className(item, selectedRows)) : null;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ICdkTableColumn } from './ICdkTableColumn';\nimport * as _ from 'lodash';\n\n@Pipe({\n    name: 'viCdkTableColumnStyleName'\n})\nexport class CdkTableColumnStyleNamePipe implements PipeTransform {\n    // --------------------------------------------------------------------------\n    //\n    //\tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public transform<U>(item: U, column: ICdkTableColumn<U>): { [key: string]: any } {\n        return !_.isNil(column) && !_.isNil(column.styleName) ? column.styleName(item, column) : null;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ICdkTableColumn } from './ICdkTableColumn';\nimport * as _ from 'lodash';\n\n@Pipe({\n    name: 'viCdkTableColumnClassName'\n})\nexport class CdkTableColumnClassNamePipe implements PipeTransform {\n    // --------------------------------------------------------------------------\n    //\n    //\tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public transform<U>(item: U, column: ICdkTableColumn<U>): string {\n        return !_.isNil(column) && !_.isNil(column.className) ? (_.isString(column.className) ? column.className : column.className(item, column)) : null;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ICdkTableColumn } from '../column/ICdkTableColumn';\nimport * as _ from 'lodash';\n\n@Pipe({\n    name: 'viCdkTableCellStyleName'\n})\nexport class CdkTableCellStyleNamePipe implements PipeTransform {\n    // --------------------------------------------------------------------------\n    //\n    //\tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public transform<U>(item: U, column: ICdkTableColumn<U>): { [key: string]: any } {\n        return !_.isNil(column) && !_.isNil(column.cellStyleName) ? column.cellStyleName(item, column) : null;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ICdkTableColumn } from '../column/ICdkTableColumn';\nimport * as _ from 'lodash';\n\n@Pipe({\n    name: 'viCdkTableCellClassName'\n})\nexport class CdkTableCellClassNamePipe implements PipeTransform {\n    // --------------------------------------------------------------------------\n    //\n    //\tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public transform<U>(item: U, column: ICdkTableColumn<U>): string {\n        if (_.isNil(column.cellClassName)) {\n            return column.isMultiline ? 'text-multi-line' : 'text-one-line';\n        }\n        return _.isString(column.cellClassName) ? column.cellClassName : column.cellClassName(item, column);\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CdkTableCellValue, ICdkTableColumn } from '../column/ICdkTableColumn';\nimport * as _ from 'lodash';\n\n@Pipe({\n    name: 'viCdkTableCellValuePure'\n})\nexport class CdkTableCellValuePipePure implements PipeTransform {\n    // --------------------------------------------------------------------------\n    //\n    //\tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public transform<U>(item: U, column: ICdkTableColumn<U>): CdkTableCellValue<U> | Promise<CdkTableCellValue<U>> {\n        return !_.isNil(column.format) ? column.format(item, column) : item[column.name];\n    }\n}\n","import { ChangeDetectorRef, Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { CdkTableCellValue, ICdkTableColumn } from '../column/ICdkTableColumn';\nimport * as _ from 'lodash';\n\n@Pipe({\n    name: 'viCdkTableCellValue',\n    pure: false\n})\nexport class CdkTableCellValuePipe<U> extends DestroyableContainer implements PipeTransform {\n    // --------------------------------------------------------------------------\n    //\n    // \tStatic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public static ERROR_SYMBOL = 'x';\n    public static PENDING_SYMBOL = '⧗';\n\n    // --------------------------------------------------------------------------\n    //\n    //\tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    private lastItem: U;\n    private lastColumn: ICdkTableColumn<U>;\n\n    private lastValue: CdkTableCellValue<U>;\n\n    // --------------------------------------------------------------------------\n    //\n    //\tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(private detection: ChangeDetectorRef) {\n        super();\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //\tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public transform(item: U, column: ICdkTableColumn<U>): CdkTableCellValue<U> | Promise<CdkTableCellValue<U>> {\n        if (item === this.lastItem && column === this.lastColumn) {\n            return this.lastValue;\n        }\n\n        if (_.isNil(column.format)) {\n            this.lastValue = item[column.name];\n            return this.lastValue;\n        }\n\n        this.lastItem = item;\n        this.lastColumn = column;\n\n        this.lastValue = CdkTableCellValuePipe.PENDING_SYMBOL;\n\n        let result = column.format(item, column);\n        if (!(result instanceof Promise)) {\n            this.lastValue = result;\n            return this.lastValue;\n        }\n\n        result\n            .then(item => {\n                this.lastValue = item;\n            })\n            .catch(error => {\n                this.lastValue = CdkTableCellValuePipe.ERROR_SYMBOL;\n            })\n            .finally(() => {\n                if (!_.isNil(this.detection)) {\n                    this.detection.markForCheck();\n                }\n            });\n        return this.lastValue;\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.detection = null;\n\n        this.lastItem = null;\n        this.lastColumn = null;\n\n        this.lastValue = null;\n    }\n}\n","import {\n    FilterableDataSourceMapCollection,\n    DestroyableContainer,\n    ObjectUtil,\n    ObservableData,\n    LoadableEvent,\n    DataSourceMapCollectionEvent\n} from '@ts-core/common';\nimport { Sort, SortDirection } from '@angular/material/sort';\nimport { Subscription, Observable, Subject, map, filter } from 'rxjs';\nimport { signal, WritableSignal } from '@angular/core';\nimport * as _ from 'lodash';\n\nexport class CdkTableDataSource<M extends FilterableDataSourceMapCollection<U>, U> extends DestroyableContainer {\n    // --------------------------------------------------------------------------\n    //\n    // \tStatic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public static getSort<U>(collection: FilterableDataSourceMapCollection<U>): Sort {\n        if (_.isNil(collection) || _.isEmpty(collection.sort)) {\n            return null;\n        }\n        let active = ObjectUtil.keys(collection.sort)[0].toString();\n        let direction: SortDirection = collection.sort[active] ? 'asc' : 'desc';\n        return { active, direction };\n    }\n\n    public static sortFunction<U>(first: U, second: U, event: Sort): number {\n        if (_.isEmpty(event.direction)) {\n            return 0;\n        }\n        let firstValue = first[event.active];\n        let secondValue = second[event.active];\n        let isHigher = firstValue > secondValue;\n        if (event.direction === 'asc') {\n            return isHigher ? -1 : 1;\n        } else {\n            return isHigher ? 1 : -1;\n        }\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    protected _map: M;\n    protected _observer: Subject<ObservableData<CdkTableDataSourceEvent, U>>;\n\n    public itemsSignal: WritableSignal<Array<U>>;\n    public isLoadingSignal: WritableSignal<boolean>;\n    public sortActiveSignal: WritableSignal<string>;\n    public sortDirectionSignal: WritableSignal<SortDirection>;\n\n    protected subscription: Subscription;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor() {\n        super();\n        this.itemsSignal = signal(null);\n        this.isLoadingSignal = signal(false);\n        this.sortActiveSignal = signal(null);\n        this.sortDirectionSignal = signal(null);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected commitMapProperties(): void {\n        this.updateData();\n        this.updateSort();\n        this.updateLoading();\n    }\n\n    protected applySort(): void {\n        this.map?.reload();\n    }\n\n    protected updateData(): void {\n        this.itemsSignal?.set(this.map?.collection?.concat());\n    }\n\n    protected updateSort(): void {\n        let sort = CdkTableDataSource.getSort(this.map);\n        this.sortActiveSignal?.set(sort?.active);\n        this.sortDirectionSignal?.set(sort?.direction);\n    }\n\n    protected updateLoading(): void {\n        this.isLoadingSignal?.set(this.map?.isLoading);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tEvent Handler\n    //\n    // --------------------------------------------------------------------------\n\n    protected mapEventHandler = (data: ObservableData<string, any>): void => {\n        switch (data.type) {\n            case LoadableEvent.STARTED:\n                this.mapStartedHandler();\n                break;\n            case LoadableEvent.FINISHED:\n                this.mapFinishedHandler();\n                break;\n            case LoadableEvent.COMPLETE:\n                this.mapCompletedHandler();\n                break;\n            case DataSourceMapCollectionEvent.ITEM_CHANGED:\n                this.mapItemChangedHandler(data.data);\n                break;\n            case DataSourceMapCollectionEvent.ITEM_REPLACED:\n                this.mapItemReplacedHandler(data.data);\n                break;\n        }\n    };\n\n    protected mapStartedHandler(): void {\n        this.updateLoading();\n    }\n\n    protected mapFinishedHandler(): void {\n        this.updateLoading();\n    }\n\n    protected mapCompletedHandler(): void {\n        this.updateData();\n    }\n\n    protected mapItemChangedHandler(item: U): void {\n        this.observer.next(new ObservableData(CdkTableDataSourceEvent.ITEM_CHANGED, item));\n    }\n\n    protected mapItemReplacedHandler(item: U): void {\n        this.observer.next(new ObservableData(CdkTableDataSourceEvent.ITEM_REPLACED, item));\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public applySortIfNeed(event: Sort): void {\n        if (_.isNil(this.map)) {\n            return;\n        }\n        let value = undefined;\n        if (event.direction === 'asc') {\n            value = true;\n        }\n        if (event.direction === 'desc') {\n            value = false;\n        }\n        let name = event.active;\n        let sort = this.map.getSortByName(name);\n        if (value === sort[name]) {\n            return;\n        }\n        ObjectUtil.clear(sort);\n        sort[name] = value;\n        this.applySort();\n    }\n\n    public trackBy(index: number, item: U): any {\n        return !_.isNil(this.map) ? this.map.trackBy(index, item) : index;\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        if (!_.isNil(this._observer)) {\n            this._observer.complete();\n            this._observer = null;\n        }\n        this.map = null;\n        this.itemsSignal = null;\n        this.isLoadingSignal = null;\n        this.sortActiveSignal = null;\n        this.sortDirectionSignal = null;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Properties\n    //\n    // --------------------------------------------------------------------------\n\n    protected get observer(): Subject<ObservableData<CdkTableDataSourceEvent, U>> {\n        if (_.isNil(this._observer)) {\n            this._observer = new Subject();\n        }\n        return this._observer;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get map(): M {\n        return this._map;\n    }\n\n    public set map(value: M) {\n        if (value === this._map) {\n            return;\n        }\n        if (!_.isNil(this.subscription)) {\n            this.subscription.unsubscribe();\n            this.subscription = null;\n        }\n        this._map = value;\n        if (!_.isNil(value)) {\n            this.commitMapProperties();\n            this.subscription = value.events.subscribe(this.mapEventHandler);\n        }\n    }\n\n    public get itemChanged(): Observable<U> {\n        return this.observer.pipe(\n            filter(item => item.type === CdkTableDataSourceEvent.ITEM_CHANGED),\n            map(item => item.data)\n        );\n    }\n\n    public get itemReplaced(): Observable<U> {\n        return this.observer.pipe(\n            filter(item => item.type === CdkTableDataSourceEvent.ITEM_REPLACED),\n            map(item => item.data)\n        );\n    }\n}\n\nexport enum CdkTableDataSourceEvent {\n    ITEM_CHANGED = 'ITEM_CHANGED',\n    ITEM_REPLACED = 'ITEM_REPLACED'\n}\n","import { Component, EventEmitter, Input, Output, signal, ViewChild, WritableSignal } from '@angular/core';\nimport { DestroyableContainer, FilterableDataSourceMapCollection } from '@ts-core/common';\nimport { ICdkTableRow } from './row/ICdkTableRow';\nimport { ICdkTableColumn } from './column/ICdkTableColumn';\nimport { Sort } from '@angular/material/sort';\nimport { CdkTableDataSource } from './CdkTableDataSource';\nimport { merge, takeUntil } from 'rxjs';\nimport { MatTable } from '@angular/material/table';\nimport * as _ from 'lodash';\n\n@Component({ template: '' })\nexport abstract class CdkTableBaseComponent<\n    M extends FilterableDataSourceMapCollection<U>,\n    U,\n    S extends CdkTableDataSource<M, U> = CdkTableDataSource<M, U>\n> extends DestroyableContainer {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    protected _table: M;\n    protected _settings: ICdkTableSettings<U>;\n\n    protected _rows: ICdkTableRow<U>;\n    protected _columns: Array<ICdkTableColumn<U>>;\n\n    protected _source: S;\n    protected _selectedRow: U;\n    protected _selectedRows: Array<U>;\n\n    @ViewChild(MatTable)\n    protected _component: MatTable<U>;\n\n    @Output()\n    public rowClicked: EventEmitter<ICdkTableRowEvent<U>>;\n    @Output()\n    public cellClicked: EventEmitter<ICdkTableCellEvent<U>>;\n\n    public settingsSignal: WritableSignal<ICdkTableSettings<U>>;\n    public selectedRowSignal: WritableSignal<U>;\n    public selectedRowsSignal: WritableSignal<Array<U>>;\n\n    public rowsSignal: WritableSignal<ICdkTableRow<U>>;\n    public columnsSignal: WritableSignal<Array<ICdkTableColumn<U>>>;\n    public columnNamesSignal: WritableSignal<Array<keyof U>>;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor() {\n        super();\n\n        this._source = this.createSource();\n\n        this.settings = {};\n        this.rowClicked = new EventEmitter();\n        this.cellClicked = new EventEmitter();\n\n        this.columnsSignal = signal(null);\n        this.settingsSignal = signal(this.settings);\n        this.columnNamesSignal = signal(null);\n\n        this.rowsSignal = signal(this.rows);\n        this.selectedRowSignal = signal(this.selectedRow);\n        this.selectedRowsSignal = signal(this.selectedRows);\n\n        merge(this.source.itemChanged, this.source.itemReplaced)\n            .pipe(takeUntil(this.destroyed))\n            .subscribe(() => this.render());\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected createSource(): S {\n        return new CdkTableDataSource() as S;\n    }\n\n    protected commitTableProperties(): void {\n        if (!this.table.isDirty) {\n            this.table.reload();\n        }\n    }\n\n    protected commitColumnsProperties(): void {\n        let value = null;\n\n        value = !_.isEmpty(this.columns) ? this.columns.map(item => item.name) : [];\n        this.columnNamesSignal.set(value);\n    }\n\n    protected commitSelectedRowsProperties(): void {\n        this._selectedRow = !_.isEmpty(this.selectedRows) && this.selectedRows.length === 1 ? this.selectedRows[0] : null;\n        this.selectedRowSignal?.set(this.selectedRow);\n    }\n\n    protected commitComponentProperties(): void {\n        // dataSource is bound via template [dataSource]=\"source.items()\"\n    }\n\n    protected commitSettingsProperties(): void {\n        if (_.isNil(this.settings.noDataId)) {\n            this.settings.noDataId = 'general.noDataFound';\n        }\n        if (_.isNil(this.settings.isInteractive)) {\n            this.settings.isInteractive = true;\n        }\n        if (_.isNil(this.rows) && !_.isEmpty(this.settings.rows)) {\n            this.rows = this.settings.rows;\n        }\n        if (_.isNil(this.columns) && !_.isEmpty(this.settings.columns)) {\n            this.columns = this.settings.columns;\n        }\n    }\n\n    protected commitRowProperties(): void {}\n\n    //--------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    //--------------------------------------------------------------------------\n\n    public render(): void {\n        if (_.isNil(this.component)) {\n            return;\n        }\n        this.component.dataSource = null;\n        this.component.dataSource = this.source.itemsSignal();\n    }\n\n    public columnTrackBy(index: number, item: ICdkTableColumn<U>): string {\n        return item.name;\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n\n        this.table = null;\n        this.component = null;\n        this.selectedRows = null;\n\n        if (!_.isNil(this.source)) {\n            this.source.destroy();\n            this._source = null;\n        }\n        if (!_.isNil(this.cellClicked)) {\n            this.cellClicked.complete();\n            this.cellClicked = null;\n        }\n        if (!_.isNil(this.rowClicked)) {\n            this.rowClicked.complete();\n            this.rowClicked = null;\n        }\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    // \tEvent Handlers\n    //\n    //--------------------------------------------------------------------------\n\n    public rowClickHandler(item: U, event: MouseEvent): void {\n        this.rowClicked.emit({ data: item, event });\n    }\n\n    public cellClickHandler(item: U, column: ICdkTableColumn<U>, event: MouseEvent): void {\n        this.cellClicked.emit({ data: item, column: column.name, event });\n    }\n\n    public sortEventHandler(event: Sort): void {\n        this.source.applySortIfNeed(event);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get source(): S {\n        return this._source;\n    }\n\n    public get table(): M {\n        return this._table;\n    }\n    @Input()\n    public set table(value: M) {\n        if (value === this._table) {\n            return;\n        }\n        if (!_.isNil(this.source)) {\n            this.source.map = null;\n        }\n        this._table = value;\n        if (!_.isNil(value)) {\n            this.source.map = value;\n            this.commitTableProperties();\n        }\n    }\n\n    public get selectedRows(): Array<U> {\n        return this._selectedRows;\n    }\n    @Input()\n    public set selectedRows(value: Array<U>) {\n        if (value === this._selectedRows) {\n            return;\n        }\n        this._selectedRows = value;\n        this.selectedRowsSignal?.set(value);\n        this.commitSelectedRowsProperties();\n    }\n\n    public get selectedRow(): U {\n        return this._selectedRow;\n    }\n    @Input()\n    public set selectedRow(value: U) {\n        if (value === this._selectedRow) {\n            return;\n        }\n        this.selectedRows = !_.isNil(value) ? [value] : [];\n    }\n\n    public get rows(): ICdkTableRow<U> {\n        return this._rows;\n    }\n    @Input()\n    public set rows(value: ICdkTableRow<U>) {\n        if (value === this._rows) {\n            return;\n        }\n        this._rows = value;\n        this.rowsSignal?.set(value);\n        if (!_.isNil(value)) {\n            this.commitRowProperties();\n        }\n    }\n\n    public get columns(): Array<ICdkTableColumn<U>> {\n        return this._columns;\n    }\n    @Input()\n    public set columns(value: Array<ICdkTableColumn<U>>) {\n        if (value === this._columns) {\n            return;\n        }\n        this._columns = value;\n        this.columnsSignal?.set(value);\n        if (!_.isNil(value)) {\n            this.commitColumnsProperties();\n        }\n    }\n\n    public get settings(): ICdkTableSettings<U> {\n        return this._settings;\n    }\n    @Input()\n    public set settings(value: ICdkTableSettings<U>) {\n        if (value === this._settings) {\n            return;\n        }\n        this._settings = value;\n        this.settingsSignal?.set(value);\n        if (!_.isNil(value)) {\n            this.commitSettingsProperties();\n        }\n    }\n\n    public get component(): MatTable<U> {\n        return this._component;\n    }\n    @Input()\n    public set component(value: MatTable<U>) {\n        if (value === this._component) {\n            return;\n        }\n        this._component = value;\n        if (!_.isNil(value)) {\n            this.commitComponentProperties();\n        }\n    }\n}\n\nexport interface ICdkTableRowEvent<U> {\n    data: U;\n    event: MouseEvent;\n}\n\nexport interface ICdkTableCellEvent<U> extends ICdkTableRowEvent<U> {\n    column: string;\n}\n\nexport interface ICdkTableSettings<U> {\n    noDataId?: string;\n    isHideHeader?: boolean;\n    isInteractive?: boolean;\n\n    rows?: ICdkTableRow<U>;\n    columns?: Array<ICdkTableColumn<U>>;\n}\n","import { PaginableDataSourceMapCollection } from '@ts-core/common';\nimport { CdkTableDataSource } from './CdkTableDataSource';\nimport { signal, Signal, WritableSignal } from '@angular/core';\n\nexport class CdkPaginableTableDataSource<M extends PaginableDataSourceMapCollection<U>, U> extends CdkTableDataSource<M, U> {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    public totalSignal: WritableSignal<number>;\n    public pagesSignal: WritableSignal<number>;\n    public pageSizeSignal: WritableSignal<number>;\n    public pageIndexSignal: WritableSignal<number>;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor() {\n        super();\n        this.totalSignal = signal(0);\n        this.pagesSignal = signal(0);\n        this.pageSizeSignal = signal(0);\n        this.pageIndexSignal = signal(0);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tEvent Handler\n    //\n    // --------------------------------------------------------------------------\n\n    protected applySort(): void {\n        this.map.load();\n    }\n\n    protected updateData(): void {\n        super.updateData();\n        this.totalSignal?.set(this.map.total);\n        this.pagesSignal?.set(this.map.pages);\n        this.pageSizeSignal?.set(this.map.pageSize);\n        this.pageIndexSignal?.set(this.map.pageIndex);\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n        this.totalSignal = null;\n        this.pagesSignal = null;\n        this.pageSizeSignal = null;\n        this.pageIndexSignal = null;\n    }\n}\n","import { HTMLContentTitleDirective, LanguageModule } from '@ts-core/angular';\nimport { CdkTableRowStyleNamePipe } from '../row/CdkTableRowStyleNamePipe';\nimport { CdkTableRowClassNamePipe } from '../row/CdkTableRowClassNamePipe';\nimport { CdkTableColumnStyleNamePipe } from '../column/CdkTableColumnStyleNamePipe';\nimport { CdkTableColumnClassNamePipe } from '../column/CdkTableColumnClassNamePipe';\nimport { CdkTableCellStyleNamePipe } from '../cell/CdkTableCellStyleNamePipe';\nimport { CdkTableCellClassNamePipe } from '../cell/CdkTableCellClassNamePipe';\nimport { CdkTableCellValuePipePure } from '../cell/CdkTableCellValuePipePure';\nimport { CdkTableCellValuePipe } from '../cell/CdkTableCellValuePipe';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { CdkTableBaseComponent } from '../CdkTableBaseComponent';\nimport { Component, Input, signal, ViewContainerRef, WritableSignal } from '@angular/core';\nimport { ViewUtil } from '@ts-core/angular';\nimport { PageEvent } from '@angular/material/paginator';\nimport { PaginableDataSourceMapCollection } from '@ts-core/common';\nimport { CdkPaginableTableDataSource } from '../CdkPaginableTableDataSource';\nimport * as _ from 'lodash';\n\n@Component({\n    imports: [MatTableModule, MatSortModule, MatPaginatorModule, MatProgressBarModule, LanguageModule, HTMLContentTitleDirective, CdkTableCellValuePipe, CdkTableCellValuePipePure, CdkTableCellClassNamePipe, CdkTableCellStyleNamePipe, CdkTableColumnClassNamePipe, CdkTableColumnStyleNamePipe, CdkTableRowClassNamePipe, CdkTableRowStyleNamePipe],\n    selector: 'vi-cdk-table-paginable',\n    templateUrl: 'cdk-table-paginable.component.html'\n})\nexport class CdkTablePaginableComponent<U> extends CdkTableBaseComponent<\n    PaginableDataSourceMapCollection<U>,\n    U,\n    CdkPaginableTableDataSource<PaginableDataSourceMapCollection<U>, U>\n> {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    protected _paginator: ICdkTablePaginatorSettings;\n    public paginatorSignal: WritableSignal<ICdkTablePaginatorSettings>;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(container: ViewContainerRef) {\n        super();\n        ViewUtil.addClasses(container, 'd-flex flex-column scroll-no');\n        this._paginator = { pageSizes: [10, 25, 100], hidePageSize: false, showFirstLastButtons: true };\n        this.paginatorSignal = signal(this.paginator);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected createSource(): CdkPaginableTableDataSource<PaginableDataSourceMapCollection<U>, U> {\n        return new CdkPaginableTableDataSource();\n    }\n\n    protected commitPaginatorProperties(): void {}\n\n    // --------------------------------------------------------------------------\n    //\n    // \tEvent Handlers\n    //\n    // --------------------------------------------------------------------------\n\n    public pageEventHandler(event: PageEvent): void {\n        this.table.pageIndex = event.pageIndex;\n        this.table.pageSize = event.pageSize;\n        this.table.load();\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get paginator(): ICdkTablePaginatorSettings {\n        return this._paginator;\n    }\n    @Input()\n    public set paginator(value: ICdkTablePaginatorSettings) {\n        if (value === this._paginator) {\n            return;\n        }\n        this._paginator = value;\n        this.paginatorSignal?.set(value);\n        if (!_.isNil(value)) {\n            this.commitPaginatorProperties();\n        }\n    }\n}\n\nexport interface ICdkTablePaginatorSettings {\n    pageSizes?: Array<number>;\n    hidePageSize?: boolean;\n    showFirstLastButtons?: boolean;\n}\n","<mat-table\n    matSort\n    class=\"flex-grow-1 scroll-vertical\"\n    [trackBy]=\"source.trackBy\"\n    [dataSource]=\"source.itemsSignal()\"\n    [class.header-hidden]=\"settingsSignal()?.isHideHeader\"\n    [matSortActive]=\"source.sortActiveSignal()\"\n    [matSortDirection]=\"source.sortDirectionSignal()\"\n    (matSortChange)=\"sortEventHandler($event)\"\n>\n    @for (column of columnsSignal(); track column.name) {\n        <ng-container [matColumnDef]=\"column.name\">\n            <mat-header-cell\n                class=\"px-2\"\n                mat-sort-header\n                [disableClear]=\"true\"\n                [disabled]=\"column.isDisableSort\"\n                [class]=\"column.headerClassName\"\n                *matHeaderCellDef\n            >\n                <span [innerHTML]=\"column.headerId | viTranslate\"></span>\n            </mat-header-cell>\n\n            <mat-cell\n                *matCellDef=\"let row\"\n                (click)=\"cellClickHandler(row, column, $event)\"\n                class=\"p-2\"\n                [class]=\"row | viCdkTableColumnClassName: column\"\n                [style]=\"row | viCdkTableColumnStyleName: column\"\n            >\n                @if (column.isImage) {\n                    <img\n                        [class]=\"row | viCdkTableCellClassName: column\"\n                        [style]=\"row | viCdkTableCellStyleName: column\"\n                        [src]=\"column.isAsync ? (row | viCdkTableCellValue: column) : (row | viCdkTableCellValuePure: column)\"\n                    />\n                } @else {\n                    <span\n                        [class]=\"row | viCdkTableCellClassName: column\"\n                        [style]=\"row | viCdkTableCellStyleName: column\"\n                        [vi-html-content-title]=\"column.isAsync ? (row | viCdkTableCellValue: column) : (row | viCdkTableCellValuePure: column)\"\n                    ></span>\n                }\n            </mat-cell>\n        </ng-container>\n    }\n\n    <mat-header-row *matHeaderRowDef=\"columnNamesSignal()\"></mat-header-row>\n\n    <mat-row\n        *matRowDef=\"let row; columns: columnNamesSignal()\"\n        class=\"mat-list-item\"\n        [class.active]=\"settingsSignal()?.isInteractive\"\n        [class]=\"row | viCdkTableRowClassName: rowsSignal() : selectedRowsSignal()\"\n        [style]=\"row | viCdkTableRowStyleName: rowsSignal() : selectedRowsSignal()\"\n        (click)=\"rowClickHandler(row, $event)\"\n    ></mat-row>\n\n    <p class=\"p-5 flex-shrink-0 text-center mouse-disabled\" [vi-translate]=\"settingsSignal()?.noDataId\" *matNoDataRow></p>\n</mat-table>\n\n<mat-progress-bar class=\"flex-shrink-0 border-line variant\" [mode]=\"source.isLoadingSignal() ? 'indeterminate' : 'determinate'\"></mat-progress-bar>\n\n<div class=\"paginator-container d-flex align-items-center justify-content-end flex-shrink-0\">\n    <ng-content></ng-content>\n    @if (paginatorSignal()) {\n        <mat-paginator\n            class=\"flex-shrink-0\"\n            [pageSize]=\"source.pageSizeSignal()\"\n            [pageIndex]=\"source.pageIndexSignal()\"\n            [length]=\"source.totalSignal()\"\n            (page)=\"pageEventHandler($event)\"\n            [pageSizeOptions]=\"paginatorSignal()?.pageSizes\"\n            [showFirstLastButtons]=\"paginatorSignal()?.showFirstLastButtons\"\n            [hidePageSize]=\"paginatorSignal()?.hidePageSize\"\n        ></mat-paginator>\n    }\n</div>\n","import { HTMLContentTitleDirective, LanguageModule } from '@ts-core/angular';\nimport { CdkTableRowStyleNamePipe } from '../row/CdkTableRowStyleNamePipe';\nimport { CdkTableRowClassNamePipe } from '../row/CdkTableRowClassNamePipe';\nimport { CdkTableColumnStyleNamePipe } from '../column/CdkTableColumnStyleNamePipe';\nimport { CdkTableColumnClassNamePipe } from '../column/CdkTableColumnClassNamePipe';\nimport { CdkTableCellStyleNamePipe } from '../cell/CdkTableCellStyleNamePipe';\nimport { CdkTableCellClassNamePipe } from '../cell/CdkTableCellClassNamePipe';\nimport { CdkTableCellValuePipePure } from '../cell/CdkTableCellValuePipePure';\nimport { CdkTableCellValuePipe } from '../cell/CdkTableCellValuePipe';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { CdkTableBaseComponent } from '../CdkTableBaseComponent';\nimport { Component, ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '@ts-core/angular';\nimport { FilterableDataSourceMapCollection } from '@ts-core/common';\nimport * as _ from 'lodash';\n\n@Component({\n    imports: [MatTableModule, MatSortModule, MatProgressBarModule, LanguageModule, HTMLContentTitleDirective, CdkTableCellValuePipe, CdkTableCellValuePipePure, CdkTableCellClassNamePipe, CdkTableCellStyleNamePipe, CdkTableColumnClassNamePipe, CdkTableColumnStyleNamePipe, CdkTableRowClassNamePipe, CdkTableRowStyleNamePipe],\n    selector: 'vi-cdk-table-filterable',\n    templateUrl: 'cdk-table-filterable.component.html'\n})\nexport class CdkTableFilterableComponent<U = any> extends CdkTableBaseComponent<FilterableDataSourceMapCollection<U>, U> {\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(container: ViewContainerRef) {\n        super();\n        ViewUtil.addClasses(container, 'd-flex flex-column scroll-no');\n    }\n}\n","<mat-table\n    matSort\n    class=\"flex-grow-1 scroll-vertical\"\n    [trackBy]=\"source.trackBy\"\n    [dataSource]=\"source.itemsSignal()\"\n    [class.header-hidden]=\"settingsSignal()?.isHideHeader\"\n    [matSortActive]=\"source.sortActiveSignal()\"\n    [matSortDirection]=\"source.sortDirectionSignal()\"\n    (matSortChange)=\"sortEventHandler($event)\"\n>\n    @for (column of columnsSignal(); track column.name) {\n        <ng-container [matColumnDef]=\"column.name\">\n            <mat-header-cell\n                class=\"px-2\"\n                mat-sort-header\n                [disableClear]=\"true\"\n                [disabled]=\"column.isDisableSort\"\n                [class]=\"column.headerClassName\"\n                *matHeaderCellDef\n            >\n                <span [innerHTML]=\"column.headerId | viTranslate\"></span>\n            </mat-header-cell>\n            <mat-cell\n                *matCellDef=\"let row\"\n                (click)=\"cellClickHandler(row, column, $event)\"\n                class=\"p-2\"\n                [class]=\"row | viCdkTableColumnClassName : column\"\n                [style]=\"row | viCdkTableColumnStyleName : column\"\n            >\n                @if (column.isImage) {\n                    <img\n                        [class]=\"row | viCdkTableCellClassName : column\"\n                        [style]=\"row | viCdkTableCellStyleName : column\"\n                        [src]=\"column.isAsync ? (row | viCdkTableCellValue : column) : (row | viCdkTableCellValuePure : column)\"\n                    />\n                } @else {\n                    <span\n                        [class]=\"row | viCdkTableCellClassName : column\"\n                        [style]=\"row | viCdkTableCellStyleName : column\"\n                        [vi-html-content-title]=\"column.isAsync ? (row | viCdkTableCellValue : column) : (row | viCdkTableCellValuePure : column)\"\n                    ></span>\n                }\n            </mat-cell>\n        </ng-container>\n    }\n\n    <mat-header-row *matHeaderRowDef=\"columnNamesSignal()\"></mat-header-row>\n\n    <mat-row\n        *matRowDef=\"let row; columns: columnNamesSignal()\"\n        class=\"mat-list-item\"\n        [class.active]=\"settingsSignal()?.isInteractive\"\n        [class]=\"row | viCdkTableRowClassName : rowsSignal() : selectedRowsSignal()\"\n        [style]=\"row | viCdkTableRowStyleName : rowsSignal() : selectedRowsSignal()\"\n        (click)=\"rowClickHandler(row, $event)\"\n    ></mat-row>\n\n    <p class=\"p-5 flex-shrink-0 text-center mouse-inactive\" [vi-translate]=\"settingsSignal()?.noDataId\" *matNoDataRow></p>\n</mat-table>\n\n<mat-progress-bar class=\"flex-shrink-0 border-line transparent\" [mode]=\"source.isLoadingSignal() ? 'indeterminate' : 'determinate'\"></mat-progress-bar>\n\n<div class=\"paginator-container d-flex align-items-center justify-content-end flex-shrink-0\">\n    <ng-content></ng-content>\n</div>\n","import { HTMLContentTitleDirective, LanguageModule } from '@ts-core/angular';\nimport { CdkTableRowStyleNamePipe } from '../row/CdkTableRowStyleNamePipe';\nimport { CdkTableRowClassNamePipe } from '../row/CdkTableRowClassNamePipe';\nimport { CdkTableColumnStyleNamePipe } from '../column/CdkTableColumnStyleNamePipe';\nimport { CdkTableColumnClassNamePipe } from '../column/CdkTableColumnClassNamePipe';\nimport { CdkTableCellStyleNamePipe } from '../cell/CdkTableCellStyleNamePipe';\nimport { CdkTableCellClassNamePipe } from '../cell/CdkTableCellClassNamePipe';\nimport { CdkTableCellValuePipePure } from '../cell/CdkTableCellValuePipePure';\nimport { CdkTableCellValuePipe } from '../cell/CdkTableCellValuePipe';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { CdkTableBaseComponent } from '../CdkTableBaseComponent';\nimport { Component, ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '@ts-core/angular';\nimport { FilterableDataSourceMapCollection } from '@ts-core/common';\nimport * as _ from 'lodash';\n\n@Component({\n    imports: [MatTableModule, MatSortModule, MatProgressBarModule, LanguageModule, HTMLContentTitleDirective, CdkTableCellValuePipe, CdkTableCellValuePipePure, CdkTableCellClassNamePipe, CdkTableCellStyleNamePipe, CdkTableColumnClassNamePipe, CdkTableColumnStyleNamePipe, CdkTableRowClassNamePipe, CdkTableRowStyleNamePipe],\n    selector: 'vi-cdk-table-paginable-bookmark',\n    templateUrl: 'cdk-table-paginable-bookmark.component.html'\n})\nexport class CdkTablePaginableBookmarkComponent<U> extends CdkTableBaseComponent<FilterableDataSourceMapCollection<U>, U> {\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(container: ViewContainerRef) {\n        super();\n        ViewUtil.addClasses(container, 'd-flex flex-column scroll-no');\n    }\n}\n","<mat-table\n    matSort\n    class=\"flex-grow-1 scroll-vertical\"\n    [trackBy]=\"source.trackBy\"\n    [dataSource]=\"source.itemsSignal()\"\n    [class.header-hidden]=\"settingsSignal()?.isHideHeader\"\n    [matSortActive]=\"source.sortActiveSignal()\"\n    [matSortDirection]=\"source.sortDirectionSignal()\"\n    (matSortChange)=\"sortEventHandler($event)\"\n>\n    @for (column of columnsSignal(); track column.name) {\n        <ng-container [matColumnDef]=\"column.name\">\n            <mat-header-cell\n                class=\"px-2\"\n                mat-sort-header\n                [disableClear]=\"true\"\n                [disabled]=\"column.isDisableSort\"\n                [class]=\"column.headerClassName\"\n                *matHeaderCellDef\n            >\n                <span [innerHTML]=\"column.headerId | viTranslate\"></span>\n            </mat-header-cell>\n            <mat-cell\n                *matCellDef=\"let row\"\n                (click)=\"cellClickHandler(row, column, $event)\"\n                class=\"p-2\"\n                [class]=\"row | viCdkTableColumnClassName: column\"\n                [style]=\"row | viCdkTableColumnStyleName: column\"\n            >\n                @if (column.isImage) {\n                    <img\n                        [class]=\"row | viCdkTableCellClassName: column\"\n                        [style]=\"row | viCdkTableCellStyleName: column\"\n                        [src]=\"column.isAsync ? (row | viCdkTableCellValue: column) : (row | viCdkTableCellValuePure: column)\"\n                    />\n                } @else {\n                    <span\n                        [class]=\"row | viCdkTableCellClassName: column\"\n                        [style]=\"row | viCdkTableCellStyleName: column\"\n                        [vi-html-content-title]=\"column.isAsync ? (row | viCdkTableCellValue: column) : (row | viCdkTableCellValuePure: column)\"\n                    ></span>\n                }\n            </mat-cell>\n        </ng-container>\n    }\n\n    <mat-header-row *matHeaderRowDef=\"columnNamesSignal()\"></mat-header-row>\n\n    <mat-row\n        *matRowDef=\"let row; columns: columnNamesSignal()\"\n        class=\"mat-list-item\"\n        [class.active]=\"settingsSignal()?.isInteractive\"\n        [class]=\"row | viCdkTableRowClassName: rowsSignal() : selectedRowsSignal()\"\n        [style]=\"row | viCdkTableRowStyleName: rowsSignal() : selectedRowsSignal()\"\n        (click)=\"rowClickHandler(row, $event)\"\n    ></mat-row>\n\n    <p class=\"p-5 flex-shrink-0 text-center mouse-disabled\" [vi-translate]=\"settingsSignal()?.noDataId\" *matNoDataRow></p>\n</mat-table>\n\n<mat-progress-bar class=\"flex-shrink-0 border-line transparent\" [mode]=\"source.isLoadingSignal() ? 'indeterminate' : 'determinate'\"></mat-progress-bar>\n","import { MatPaginatorIntl } from '@angular/material/paginator';\nimport { LanguageService } from '@ts-core/frontend';\nimport { Subscription } from 'rxjs';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { FinancePipe } from '@ts-core/angular';\nimport * as _ from 'lodash';\n\n@Injectable()\nexport class LanguageMatPaginatorIntl extends MatPaginatorIntl implements OnDestroy {\n    // --------------------------------------------------------------------------\n    //\n    //\tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    protected subscription: Subscription;\n\n    // --------------------------------------------------------------------------\n    //\n    //\tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(protected language: LanguageService) {\n        super();\n\n        this.commitLanguageProperties();\n        this.subscription = this.language.completed.subscribe(() => this.commitLanguageProperties());\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    //\tPrivate Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected commitLanguageProperties(): void {\n        this.getRangeLabel = this.languageRangeLabel;\n        this.lastPageLabel = this.language.translate('paginator.lastPage');\n        this.nextPageLabel = this.language.translate('paginator.nextPage');\n        this.firstPageLabel = this.language.translate('paginator.firstPage');\n        this.previousPageLabel = this.language.translate('paginator.previousPage');\n        this.itemsPerPageLabel = this.language.translate('paginator.itemsPerPage');\n        this.changes.next();\n    }\n\n    protected languageRangeLabel = (page: number, pageSize: number, length: number): string => {\n        let translation = { current: '0', total: '0' };\n        if (length > 0 && pageSize > 0) {\n            length = Math.max(length, 0);\n            let startIndex = page * pageSize;\n            let endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\n            translation.current = `${startIndex + 1} – ${endIndex}`;\n        }\n        translation.total = FinancePipe.format(length, FinancePipe.DEFAULT_FORMAT);\n        return this.language.translate('paginator.pageRange', translation);\n    };\n\n    // --------------------------------------------------------------------------\n    //\n    //\tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public ngOnDestroy(): void {\n        if (!_.isNil(this.subscription)) {\n            this.subscription.unsubscribe();\n            this.subscription = null;\n        }\n    }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Injectable, Signal, signal, WritableSignal } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs';\nimport * as _ from 'lodash';\n\n@Injectable({ providedIn: 'root' })\nexport class BootstrapBreakpointService extends DestroyableContainer {\n    // --------------------------------------------------------------------------\n    //\n    // \tConstants\n    //\n    // --------------------------------------------------------------------------\n\n    public static DEFAULT_SM = 576;\n    public static DEFAULT_MD = 768;\n    public static DEFAULT_LG = 992;\n    public static DEFAULT_XL = 1200;\n    public static DEFAULT_XXL = 1400;\n\n    protected _breakpoint: WritableSignal<BootstrapBreakpoint>;\n    protected items: Array<IBreakpointItem>;\n\n    protected observer: Subject<ObservableData<BootstrapBreakpointServiceEvent, BootstrapBreakpoint>>;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(protected service: BreakpointObserver) {\n        super();\n        this._breakpoint = signal(null);\n        this.observer = new Subject();\n        this.initialize();\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected initialize(\n        sm: number = BootstrapBreakpointService.DEFAULT_SM,\n        md: number = BootstrapBreakpointService.DEFAULT_MD,\n        lg: number = BootstrapBreakpointService.DEFAULT_LG,\n        xl: number = BootstrapBreakpointService.DEFAULT_XL,\n        xxl: number = BootstrapBreakpointService.DEFAULT_XXL\n    ): void {\n        this.items = [\n            { name: BootstrapBreakpoint.XXL, value: `(min-width: ${xxl}px)` },\n            { name: BootstrapBreakpoint.XL, value: `(min-width: ${xl}px)` },\n            { name: BootstrapBreakpoint.LG, value: `(min-width: ${lg}px)` },\n            { name: BootstrapBreakpoint.MD, value: `(min-width: ${md}px)` },\n            { name: BootstrapBreakpoint.SM, value: `(min-width: 0px)` }\n        ];\n\n        merge(...this.items.map(item => this.service.observe(item.value)))\n            .pipe(takeUntil(this.destroyed))\n            .subscribe(() => this.setBreakpoint(this.getBreakpoint()));\n    }\n\n    protected getBreakpoint(): BootstrapBreakpoint {\n        for (let item of this.items) {\n            if (this.service.isMatched(item.value)) {\n                return item.name;\n            }\n        }\n        return null;\n    }\n\n    protected setBreakpoint(value: BootstrapBreakpoint): void {\n        if (value === this._breakpoint()) {\n            return;\n        }\n        this._breakpoint.set(value);\n        this.observer.next(new ObservableData(BootstrapBreakpointServiceEvent.CHANGED, value));\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public isEqual(item: BootstrapBreakpoint): boolean {\n        return item === this._breakpoint();\n    }\n\n    public isUp(item: BootstrapBreakpoint): boolean {\n        return _.findIndex(this.items, { name: this._breakpoint() }) < _.findIndex(this.items, { name: item });\n    }\n\n    public isUpOrEqual(item: BootstrapBreakpoint): boolean {\n        return this.isEqual(item) || this.isUp(item);\n    }\n\n    public isDown(item: BootstrapBreakpoint): boolean {\n        return _.findIndex(this.items, { name: this._breakpoint() }) > _.findIndex(this.items, { name: item });\n    }\n\n    public isDownOrEqual(item: BootstrapBreakpoint): boolean {\n        return this.isEqual(item) || this.isDown(item);\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get breakpoint(): Signal<BootstrapBreakpoint> {\n        return this._breakpoint;\n    }\n\n    public get events(): Observable<ObservableData<BootstrapBreakpointServiceEvent, BootstrapBreakpoint>> {\n        return this.observer.asObservable();\n    }\n\n    public get changed(): Observable<BootstrapBreakpoint> {\n        return this.events.pipe(\n            filter(item => item.type === BootstrapBreakpointServiceEvent.CHANGED),\n            map(item => item.data)\n        );\n    }\n}\n\ninterface IBreakpointItem {\n    name: BootstrapBreakpoint;\n    value: string;\n}\n\nexport enum BootstrapBreakpointServiceEvent {\n    CHANGED = 'CHANGED'\n}\n\nexport enum BootstrapBreakpoint {\n    SM = 'sm',\n    MD = 'md',\n    LG = 'lg',\n    XL = 'xl',\n    XXL = 'xxl'\n}\n","import { BottomSheetService, IQuestion, IQuestionOptions, IWindowConfig, IWindowContent, WindowConfigOptions, WindowId, WindowService } from '@ts-core/angular';\nimport { ClassType, DestroyableContainer } from '@ts-core/common';\nimport { BootstrapBreakpoint, BootstrapBreakpointService } from './BootstrapBreakpointService';\nimport * as _ from 'lodash';\n\nexport class PortalService extends DestroyableContainer {\n    //--------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    //--------------------------------------------------------------------------\n\n    constructor(\n        protected windows: WindowService,\n        protected sheet: BottomSheetService,\n        protected breakpoint: BootstrapBreakpointService\n    ) {\n        super();\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    //--------------------------------------------------------------------------\n\n    protected isOpenAsWindow(isOpenAsWindowIfBottomOccupied?: boolean): boolean {\n        if (this.breakpoint.isUp(BootstrapBreakpoint.SM)) {\n            return true;\n        }\n        return isOpenAsWindowIfBottomOccupied ? !_.isNil(this.sheet.window) : false;\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    //--------------------------------------------------------------------------\n\n    public open<U extends IWindowContent<T>, T>(component: ClassType<U>, config: IWindowConfig<T>, isOpenAsWindowIfBottomOccupied?: boolean): U {\n        return this.isOpenAsWindow(isOpenAsWindowIfBottomOccupied) ? this.windows.open(component, config) : this.sheet.open(component, config);\n    }\n\n    public info(\n        translationId?: string,\n        translation?: any,\n        questionOptions?: IQuestionOptions,\n        configOptions?: WindowConfigOptions,\n        isOpenAsWindowIfBottomOccupied?: boolean\n    ): IQuestion {\n        return this.isOpenAsWindow(isOpenAsWindowIfBottomOccupied)\n            ? this.windows.info(translationId, translation, questionOptions, configOptions)\n            : this.sheet.info(translationId, translation, questionOptions, configOptions);\n    }\n\n    public question(\n        translationId?: string,\n        translation?: any,\n        questionOptions?: IQuestionOptions,\n        configOptions?: WindowConfigOptions,\n        isOpenAsWindowIfBottomOccupied?: boolean\n    ): IQuestion {\n        return this.isOpenAsWindow(isOpenAsWindowIfBottomOccupied)\n            ? this.windows.question(translationId, translation, questionOptions, configOptions)\n            : this.sheet.question(translationId, translation, questionOptions, configOptions);\n    }\n\n    public setOnTop<T>(value: WindowId<T>, isOpenAsWindowIfBottomOccupied?: boolean): boolean {\n        return this.isOpenAsWindow(isOpenAsWindowIfBottomOccupied) ? this.windows.setOnTop(value) : false;\n    }\n\n    public get<T>(value: WindowId<T>): IWindowContent<T> {\n        let item = this.windows.get(value);\n        return !_.isNil(item) ? item : this.sheet.get(value);\n    }\n\n    public has<T>(value: WindowId<T>): boolean {\n        return !_.isNil(this.get(value));\n    }\n\n    public close<T>(value: WindowId<T>): void {\n        this.windows.close(value);\n        this.sheet.close(value);\n    }\n\n    public closeAll(): void {\n        this.windows.closeAll();\n        this.sheet.closeAll();\n    }\n}\n","import { EnvironmentProviders, ModuleWithProviders, NgModule, Provider, makeEnvironmentProviders } from '@angular/core';\nimport { BottomSheetService, IVIOptions, VIModule, WindowService, viProviders } from '@ts-core/angular';\nimport { BottomSheetModule } from './bottomSheet/BottomSheetModule';\nimport { NotificationModule } from './notification/NotificationModule';\nimport { WindowModule } from './window/WindowModule';\nimport { MenuTriggerForDirective } from './directive/MenuTriggerForDirective';\nimport { VoiceRecognitionButtonDirective } from './directive/VoiceRecognitionButtonDirective';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MenuListComponent } from './component/menu-list/menu-list.component';\nimport { TabGroupComponent } from './component/tab-group/tab-group.component';\n\nimport { CdkTablePaginableComponent } from './component/cdk-table/cdk-table-paginable/cdk-table-paginable.component';\nimport { CdkTableFilterableComponent } from './component/cdk-table/cdk-table-filterable/cdk-table-filterable.component';\nimport { CdkTablePaginableBookmarkComponent } from './component/cdk-table/cdk-table-paginable-bookmark/cdk-table-paginable-bookmark.component';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatListModule } from '@angular/material/list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\nimport { CdkTableCellValuePipe } from './component/cdk-table/cell/CdkTableCellValuePipe';\nimport { CdkTableCellValuePipePure } from './component/cdk-table/cell/CdkTableCellValuePipePure';\nimport { CdkTableCellClassNamePipe } from './component/cdk-table/cell/CdkTableCellClassNamePipe';\nimport { CdkTableCellStyleNamePipe } from './component/cdk-table/cell/CdkTableCellStyleNamePipe';\nimport { CdkTableColumnStyleNamePipe } from './component/cdk-table/column/CdkTableColumnStyleNamePipe';\nimport { CdkTableColumnClassNamePipe } from './component/cdk-table/column/CdkTableColumnClassNamePipe';\nimport { CdkTableRowClassNamePipe } from './component/cdk-table/row/CdkTableRowClassNamePipe';\nimport { CdkTableRowStyleNamePipe } from './component/cdk-table/row/CdkTableRowStyleNamePipe';\nimport { LanguageMatPaginatorIntl } from './language/LanguageMatPaginatorIntl';\nimport { BootstrapBreakpointService } from './service/BootstrapBreakpointService';\nimport { PortalService } from './service/PortalService';\nimport { LanguageService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\n\nlet declarations = [\n    CdkTableCellValuePipe,\n    CdkTableCellValuePipePure,\n    CdkTableCellClassNamePipe,\n    CdkTableCellStyleNamePipe,\n    CdkTableColumnClassNamePipe,\n    CdkTableColumnStyleNamePipe,\n    CdkTableRowStyleNamePipe,\n    CdkTableRowClassNamePipe,\n\n    TabGroupComponent,\n    MenuListComponent,\n\n    CdkTablePaginableComponent,\n    CdkTableFilterableComponent,\n    CdkTablePaginableBookmarkComponent,\n\n    MenuTriggerForDirective,\n    VoiceRecognitionButtonDirective\n];\n\n@NgModule({\n    imports: [\n        VIModule,\n        WindowModule,\n        BottomSheetModule,\n        NotificationModule,\n\n        CommonModule,\n        FormsModule,\n        MatTabsModule,\n        MatIconModule,\n        MatListModule,\n        MatMenuModule,\n        MatSelectModule,\n        MatButtonModule,\n        MatSortModule,\n        MatTableModule,\n        MatPaginatorModule,\n        MatProgressBarModule,\n\n        ...declarations\n    ],\n    exports: [VIModule, WindowModule, BottomSheetModule, NotificationModule, ...declarations]\n})\nexport class VIMatModule {\n    // --------------------------------------------------------------------------\n    //\n    // \tStatic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public static forRoot(options?: IVIOptions): ModuleWithProviders<VIMatModule> {\n        return { ngModule: VIMatModule, providers: viMatProviders(options) };\n    }\n}\n\n//\n// Настройка для приложения на самостоятельных компонентах: то же, что VIMatModule.forRoot,\n// но без модуля — включает в себя и настройку @ts-core/angular\n//\nexport function provideVIMat(options?: IVIOptions): EnvironmentProviders {\n    return makeEnvironmentProviders(viMatProviders(options));\n}\n\nexport function viMatProviders(options?: IVIOptions): Array<Provider | EnvironmentProviders> {\n    return [\n        {\n            provide: MatPaginatorIntl,\n            deps: [LanguageService],\n            useClass: LanguageMatPaginatorIntl\n        },\n        {\n            provide: PortalService,\n            deps: [WindowService, BottomSheetService, BootstrapBreakpointService],\n            useClass: PortalService\n        },\n\n        ...viProviders(options),\n\n        ...WindowModule.forRoot().providers,\n        ...BottomSheetModule.forRoot().providers,\n        ...NotificationModule.forRoot().providers\n    ];\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { filter, takeUntil } from 'rxjs';\nimport { INotificationConfig, NotificationService, NotificationServiceEvent } from '@ts-core/angular';\nimport { computed, Signal, signal, WritableSignal } from '@angular/core';\nimport * as _ from 'lodash';\n\nexport class ShellBaseComponent extends DestroyableContainer {\n    // --------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    // --------------------------------------------------------------------------\n\n    public isNeedSide: WritableSignal<boolean>;\n    public isShowMenu: WritableSignal<boolean>;\n    public isShowNotifications: WritableSignal<boolean>;\n\n    protected _notificationItems: WritableSignal<Array<INotificationConfig>>;\n    protected _isHasNotifications: Signal<boolean>;\n\n    // --------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(\n        public notifications: NotificationService,\n        public breakpointObserver: BreakpointObserver\n    ) {\n        super();\n        this.isNeedSide = signal(false);\n        this.isShowMenu = signal(true);\n        this.isShowNotifications = signal(false);\n\n        this._notificationItems = signal(new Array());\n        this._isHasNotifications = computed(() => !_.isEmpty(this._notificationItems()));\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    // --------------------------------------------------------------------------\n\n    protected initialize(): void {\n        // Notifications\n        this.isHasNotificationsCheck();\n        this.notifications.events\n            .pipe(\n                filter(data => data.type === NotificationServiceEvent.CLOSED || data.type === NotificationServiceEvent.REMOVED),\n                takeUntil(this.destroyed)\n            )\n            .subscribe(() => this.isHasNotificationsCheck());\n\n        // Menu Size\n        this.isNeedSideCheck();\n        this.breakpointObserver\n            .observe(this.sideMediaQueryToCheck)\n            .pipe(takeUntil(this.destroyed))\n            .subscribe(() => this.isNeedSideCheck());\n    }\n\n    protected isHasNotificationsCheck(): void {\n        this._notificationItems.set(this.notifications.closedConfigs);\n        if (!this.isHasNotifications()) {\n            this.isShowNotifications.set(false);\n        }\n    }\n\n    protected isNeedSideCheck(): void {\n        this.isNeedSide.set(this.breakpointObserver.isMatched(this.sideMediaQueryToCheck));\n        this.isShowMenu.set(this.isNeedSide());\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    // --------------------------------------------------------------------------\n\n    public toggleMenu(): void {\n        if (!this.isNeedSide()) {\n            this.isShowMenu.update(value => !value);\n        }\n    }\n\n    public toggleNotifications(): void {\n        this.isShowNotifications.update(value => !value);\n    }\n\n    public destroy(): void {\n        if (this.isDestroyed) {\n            return;\n        }\n        super.destroy();\n\n        this.isNeedSide = null;\n        this.isShowMenu = null;\n        this.isShowNotifications = null;\n\n        this._notificationItems = null;\n        this._isHasNotifications = null;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tProtected Properties\n    //\n    // --------------------------------------------------------------------------\n\n    protected get sideMediaQueryToCheck(): string {\n        return `(min-width: 1000px)`;\n    }\n\n    // --------------------------------------------------------------------------\n    //\n    // \tPublic Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public get notificationItems(): Signal<Array<INotificationConfig>> {\n        return this._notificationItems;\n    }\n\n    public get isHasNotifications(): Signal<boolean> {\n        return this._isHasNotifications;\n    }\n}\n","export interface ICdkTableColumn<U = any> {\n    name: string;\n\n    className?: ICdkTableColumnClassNameFunction<U> | string;\n    styleName?: ICdkTableColumnStyleNameFunction<U>;\n\n    format?: ICdkTableCellValueFunction<U>;\n    cellStyleName?: ICdkTableColumnStyleNameFunction<U>;\n    cellClassName?: ICdkTableCellClassNameFunction<U> | string;\n\n    headerId?: string;\n    headerClassName?: string;\n    headerStyleName?: string;\n\n    isImage?: boolean;\n    isAsync?: boolean;\n    isMultiline?: boolean;\n    isDisableSort?: boolean;\n}\n\nexport type CdkTableCellValue<U = any> = string | number | U[keyof U];\n\nexport type ICdkTableCellValueFunction<U> = (item: U, column: ICdkTableColumn<U>) => CdkTableCellValue<U> | Promise<CdkTableCellValue<U>>;\nexport type ICdkTableCellClassNameFunction<U> = (item: U, column: ICdkTableColumn<U>) => string;\nexport type ICdkTableCellStyleNameFunction<U> = (item: U, column: ICdkTableColumn<U>) => { [key: string]: any };\n\nexport type ICdkTableColumnClassNameFunction<U> = (item: U, column: ICdkTableColumn<U>) => string;\nexport type ICdkTableColumnStyleNameFunction<U> = (item: U, column: ICdkTableColumn<U>) => { [key: string]: any };\n\nexport const CDK_TABLE_COLUMN_MENU_NAME = 'item-menu';\nexport const CdkTableColumnMenu = { name: CDK_TABLE_COLUMN_MENU_NAME, format: () => '⋮', headerId: '', isDisableSort: true };\n","import { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { LanguageService } from '@ts-core/frontend';\n\nexport class LanguageMomentDateAdapter extends MomentDateAdapter {\n    // --------------------------------------------------------------------------\n    //\n    //\tConstructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(language: LanguageService) {\n        // В двадцать второй версии адаптер берёт локаль из внедрения, поэтому её ставим явно\n        super();\n        this.setLocale(language.locale);\n        language.completed.subscribe(() => this.setLocale(language.locale));\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Transport, Destroyable, TransportCommand, TransportEvent } from '@ts-core/common';\nimport { CdkScrollable, ExtendedScrollToOptions } from '@angular/cdk/scrolling';\nimport { NativeWindowService } from '@ts-core/frontend';\nimport { map, filter } from 'rxjs';\nimport * as _ from 'lodash';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollService extends Destroyable {\n    //--------------------------------------------------------------------------\n    //\n    // \tProperties\n    //\n    //--------------------------------------------------------------------------\n\n    public container: CdkScrollable;\n\n    //--------------------------------------------------------------------------\n    //\n    // \tConstructor\n    //\n    //--------------------------------------------------------------------------\n\n    constructor(\n        transport: Transport,\n        private nativeWindow: NativeWindowService\n    ) {\n        super();\n        transport\n            .listen<ScrollCommand>(ScrollCommand.NAME)\n            .pipe(\n                filter(() => !_.isNil(this.container)),\n                map(command => command.request)\n            )\n            .subscribe(data => this.execute(data));\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    // \tProtected Methods\n    //\n    //--------------------------------------------------------------------------\n\n    protected getElementPositionTop(id: string): number {\n        let element = this.nativeWindow.document.getElementById(id);\n        if (_.isNil(element)) {\n            return null;\n        }\n        let item = element.getBoundingClientRect();\n        return element.offsetTop + item.top;\n    }\n\n    //--------------------------------------------------------------------------\n    //\n    // \tPublic Methods\n    //\n    //--------------------------------------------------------------------------\n\n    public execute(item: IScrollDto): void {\n        if (!_.isNil(item.elementId)) {\n            let position = this.getElementPositionTop(item.elementId);\n            if (!_.isNil(position)) {\n                item.top = position;\n            }\n        }\n        if (_.isNil(item.top)) {\n            item.top = 0;\n        }\n        if (_.isNil(item.behavior)) {\n            item.behavior = 'smooth';\n        }\n        this.container.scrollTo(item);\n    }\n\n    public toElement(id: string, options?: ScrollIntoViewOptions): void {\n        let element = this.nativeWindow.document.getElementById(id);\n        if (!_.isNil(element)) {\n            element.scrollIntoView(options);\n        }\n    }\n}\n\nexport class ScrollCommand extends TransportCommand<IScrollDto> {\n    // --------------------------------------------------------------------------\n    //\n    //  Public Static Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public static readonly NAME = 'ScrollCommand';\n\n    // --------------------------------------------------------------------------\n    //\n    //  Constructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(request?: IScrollDto) {\n        super(ScrollCommand.NAME, request);\n    }\n}\n\nexport type IScrollDto = ExtendedScrollToOptions & { elementId?: string };\n\nexport class ScrolledEvent extends TransportEvent<IScrolledEventDto> {\n    // --------------------------------------------------------------------------\n    //\n    //  Public Static Properties\n    //\n    // --------------------------------------------------------------------------\n\n    public static readonly NAME = 'ScrolledEvent';\n\n    // --------------------------------------------------------------------------\n    //\n    //  Constructor\n    //\n    // --------------------------------------------------------------------------\n\n    constructor(request: IScrolledEventDto) {\n        super(ScrolledEvent.NAME, request);\n    }\n}\n\nexport interface IScrolledEventDto {\n    isTop?: boolean;\n    isLeft?: boolean;\n    isRight?: boolean;\n    isBottom?: boolean;\n}\n","//\nexport * from './VIMatModule';\n//\nexport * from './component/ShellBaseComponent';\nexport * from './component/tab-group/tab-group.component';\nexport * from './component/menu-list/menu-list.component';\n//\nexport * from './component/cdk-table/CdkTableBaseComponent';\nexport * from './component/cdk-table/CdkTableDataSource';\nexport * from './component/cdk-table/CdkPaginableTableDataSource';\nexport * from './component/cdk-table/row/ICdkTableRow';\nexport * from './component/cdk-table/row/CdkTableRowClassNamePipe';\nexport * from './component/cdk-table/row/CdkTableRowStyleNamePipe';\nexport * from './component/cdk-table/cell/CdkTableCellValuePipe';\nexport * from './component/cdk-table/cell/CdkTableCellValuePipePure';\nexport * from './component/cdk-table/cell/CdkTableCellClassNamePipe';\nexport * from './component/cdk-table/cell/CdkTableCellStyleNamePipe';\nexport * from './component/cdk-table/column/ICdkTableColumn';\nexport * from './component/cdk-table/column/CdkTableColumnClassNamePipe';\nexport * from './component/cdk-table/column/CdkTableColumnStyleNamePipe';\nexport * from './component/cdk-table/cdk-table-paginable/cdk-table-paginable.component';\nexport * from './component/cdk-table/cdk-table-filterable/cdk-table-filterable.component';\nexport * from './component/cdk-table/cdk-table-paginable-bookmark/cdk-table-paginable-bookmark.component';\n//\nexport * from './directive/MenuTriggerForDirective';\nexport * from './directive/VoiceRecognitionButtonDirective';\n//\nexport * from './language/LanguageMatPaginatorIntl';\nexport * from './language/LanguageMomentDateAdapter';\n//\nexport * from './notification/NotificationFactory';\nexport * from './notification/NotificationModule';\nexport * from './notification/NotificationProperties';\nexport * from './notification/NotificationServiceImpl';\nexport * from './notification/component/NotificationBaseComponent';\nexport * from './notification/component/notification/notification.component';\n//\nexport * from './bottomSheet/BottomSheetModule';\nexport * from './bottomSheet/BottomSheetServiceImpl';\nexport * from './bottomSheet/component/BottomSheetBaseComponent';\n//\nexport * from './service/PortalService';\nexport * from './service/ScrollService';\nexport * from './service/VoiceRecognitionService';\nexport * from './service/BootstrapBreakpointService';\n//\nexport * from './window/WindowImpl';\nexport * from './window/WindowModule';\nexport * from './window/WindowFactory';\nexport * from './window/WindowServiceImpl';\nexport * from './window/WindowProperties';\nexport * from './window/component/WindowElement';\nexport * from './window/component/WindowBaseComponent';\nexport * from './window/component/WindowDragAreaDirective';\nexport * from './window/component/WindowQuestionBaseComponent';\nexport * from './window/component/window-question/window-question.component';\nexport * from './window/component/window-close-element/window-close-element.component';\nexport * from './window/component/window-resize-element/window-resize-element.component';\nexport * from './window/component/window-expand-element/window-expand-element.component';\nexport * from './window/component/window-minimize-element/window-minimize-element.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["declarations","i2","i1.VoiceRecognitionService","i1","takeUntil","i4","i5","i3"],"mappings":"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"}