@ts-core/angular 13.0.20 → 13.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/application/ApplicationComponent.d.ts +2 -0
- package/esm2020/application/ApplicationComponent.mjs +8 -4
- package/fesm2015/ts-core-angular.mjs +7 -3
- package/fesm2015/ts-core-angular.mjs.map +1 -1
- package/fesm2020/ts-core-angular.mjs +7 -3
- package/fesm2020/ts-core-angular.mjs.map +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-core-angular.mjs","sources":["../../src/application/ApplicationBaseComponent.ts","../../src/util/ViewUtil.ts","../../src/application/ApplicationComponent.ts","../../src/application/MessageBaseComponent.ts","../../src/question/IQuestion.ts","../../src/question/QuestionManager.ts","../../src/window/IWindow.ts","../../src/window/WindowConfig.ts","../../src/notification/INotification.ts","../../src/notification/NotificationConfig.ts","../../src/notification/NotificationService.ts","../../src/application/ShellBaseComponent.ts","../../src/ApplicationInjector.ts","../../src/asset/AssetBackgroundDirective.ts","../../src/asset/AssetBackgroundPipe.ts","../../src/asset/AssetIconPipe.ts","../../src/asset/AssetFilePipe.ts","../../src/asset/AssetVideoPipe.ts","../../src/asset/AssetSoundPipe.ts","../../src/asset/AssetImagePipe.ts","../../src/asset/AssetModule.ts","../../src/cookie/CookieService.ts","../../src/cookie/CookieModule.ts","../../src/manager/ResizeManager.ts","../../src/directive/AspectRatioResizeDirective.ts","../../src/directive/ScrollDirective.ts","../../src/directive/InfiniteScrollDirective.ts","../../src/directive/AutoScrollBottomDirective.ts","../../src/directive/ClickToCopyDirective.ts","../../src/directive/ClickToSelectDirective.ts","../../src/manager/FocusManager.ts","../../src/directive/FocusDirective.ts","../../src/directive/SelectOnFocusDirective.ts","../../src/directive/HTMLContentTitleDirective.ts","../../src/directive/ResizeDirective.ts","../../src/directive/ScrollCheckDirective.ts","../../src/language/LanguageMatPaginatorIntl.ts","../../src/language/LanguagePipe.ts","../../src/language/LanguagePipePure.ts","../../src/language/LanguageRequireResolver.ts","../../src/language/LanguageResolver.ts","../../src/language/LanguageDirective.ts","../../src/language/LanguagePipeHas.ts","../../src/language/LanguagePipeHasPure.ts","../../src/language/LanguageHasDirective.ts","../../src/language/LanguageModule.ts","../../src/window/WindowFactory.ts","../../src/window/WindowBase.ts","../../src/window/WindowImpl.ts","../../src/bottomSheet/BottomSheetImpl.ts","../../src/window/component/WindowElement.ts","../../src/bottomSheet/component/bottom-sheet-close-element/bottom-sheet-close-element.component.ts","../../src/bottomSheet/component/BottomSheetBaseComponent.ts","../../src/window/WindowService.ts","../../src/window/IWindowContent.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/BottomSheetService.ts","../../src/bottomSheet/BottomSheetModule.ts","../../src/notification/NotificationImpl.ts","../../src/notification/component/NotificationBaseComponent.ts","../../src/notification/INotificationContent.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/NotificationModule.ts","../../src/pipe/CamelCasePipe.ts","../../src/pipe/FinancePipe.ts","../../src/pipe/MomentDatePipe.ts","../../src/pipe/MomentDateAdaptivePipe.ts","../../src/pipe/MomentDateFromNowPipe.ts","../../src/pipe/MomentTimePipe.ts","../../src/pipe/NgModelErrorPipe.ts","../../src/pipe/SanitizePipe.ts","../../src/pipe/StartCasePipe.ts","../../src/pipe/TimePipe.ts","../../src/pipe/TruncatePipe.ts","../../src/pipe/PrettifyPipe.ts","../../src/theme/ThemeAssetDirective.ts","../../src/theme/ThemeAssetBackgroundDirective.ts","../../src/theme/ThemeAssetImageDirective.ts","../../src/theme/ThemeToggleDirective.ts","../../src/theme/ThemeStyleDirective.ts","../../src/theme/ThemeStyleHoverDirective.ts","../../src/theme/ThemeModule.ts","../../src/window/component/WindowDragAreaDirective.ts","../../src/window/component/window-close-element/window-close-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/component/WindowResizeable.ts","../../src/window/component/WindowDragable.ts","../../src/window/component/WindowBaseComponent.ts","../../src/window/WindowModule.ts","../../src/directive/MenuTriggerForDirective.ts","../../src/VICommonModule.ts","../../src/component/language/language-selector/language-selector.component.ts","../../src/component/language/language-selector/language-selector.component.html","../../src/component/menu-list/menu-list.component.ts","../../src/component/menu-list/menu-list.component.html","../../src/component/select-list/select-list.component.ts","../../src/component/select-list/select-list.component.html","../../src/component/tab-group/tab-group.component.ts","../../src/component/tab-group/tab-group.component.html","../../src/component/cdk-table/CdkTableDataSource.ts","../../src/component/cdk-table/CdkTableFilterableMapCollection.ts","../../src/component/cdk-table/CdkTableBaseComponent.ts","../../src/component/cdk-table/column/CdkTableColumnClassNamePipe.ts","../../src/component/cdk-table/column/CdkTableColumnStyleNamePipe.ts","../../src/component/cdk-table/column/CdkTableCellClassNamePipe.ts","../../src/component/cdk-table/column/CdkTableColumnValuePipe.ts","../../src/component/cdk-table/row/CdkTableRowClassNamePipe.ts","../../src/component/cdk-table/row/CdkTableRowStyleNamePipe.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/component/VIComponentModule.ts","../../src/component/cdk-table/CdkTablePaginableMapCollection.ts","../../src/component/cdk-table/CdkTablePaginableBookmarkMapCollection.ts","../../src/cookie/CookieOptions.ts","../../src/form/validate.ts","../../src/form/ValueAccessor.ts","../../src/form/FormElementAsync.ts","../../src/form/FormElementSync.ts","../../src/language/LanguageMomentDateAdapter.ts","../../src/login/LoginBaseService.ts","../../src/login/LoginRequireResolver.ts","../../src/login/LoginGuard.ts","../../src/login/LoginNotGuard.ts","../../src/login/LoginIfCanGuard.ts","../../src/login/LoginResolver.ts","../../src/menu/MenuItemBase.ts","../../src/menu/MenuItem.ts","../../src/menu/MenuItems.ts","../../src/menu/NavigationMenuItem.ts","../../src/list/ListItem.ts","../../src/list/ListItems.ts","../../src/list/select/SelectListItem.ts","../../src/list/select/SelectListItems.ts","../../src/service/PipeBaseService.ts","../../src/service/BootstrapBreakpointService.ts","../../src/service/RouterBaseService.ts","../../src/service/route/CanDeactivateGuard.ts","../../src/user/IUser.ts","../../src/user/UserBaseService.ts","../../src/module/LazyModuleLoader.ts","../../src/transport/TransportLazyModuleLoadedEvent.ts","../../src/transport/TransportLazy.ts","../../src/transport/TransportLazyModule.ts","../../src/public-api.ts","../../src/ts-core-angular.ts"],"sourcesContent":["import { AfterViewInit, Component, Inject, Injectable, Optional } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { PromiseHandler } from '@ts-core/common/promise';\nimport * as _ from 'lodash';\n\n@Component({ template: '' })\nexport abstract class ApplicationBaseComponent extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected timeout: any;\n protected isReadyAlreadyCalled: boolean;\n\n protected viewReadyDelay: number = NaN;\n protected viewReadyPromise: PromiseHandler<void, void>;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n this.viewReadyPromise = PromiseHandler.create();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private makeViewReady = (): void => {\n this.viewReadyPromise.resolve();\n this.viewReadyHandler();\n this.checkReady();\n };\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected checkReady(): void {\n if (this.isReadyAlreadyCalled || !this.isReady()) {\n return;\n }\n this.isReadyAlreadyCalled = true;\n this.readyHandler();\n }\n\n protected isReady(): boolean {\n return this.isViewReady;\n }\n\n protected viewReadyHandler(): void {}\n\n protected abstract readyHandler(): void;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n if (this.viewReadyDelay > 0) {\n PromiseHandler.delay(this.viewReadyDelay).then(this.makeViewReady);\n } else {\n this.makeViewReady();\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this.viewReadyPromise)) {\n this.viewReadyPromise.reject();\n this.viewReadyPromise = null;\n }\n\n if (!_.isNil(this.timeout)) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isViewReady(): boolean {\n return !_.isNil(this.viewReadyPromise) ? this.viewReadyPromise.isResolved : false;\n }\n public get viewReady(): Promise<void> {\n return !_.isNil(this.viewReadyPromise) ? this.viewReadyPromise.promise : null;\n }\n}\n","import { ElementRef, Renderer2, RendererStyleFlags2, ViewContainerRef } from '@angular/core';\nimport { ExtendedError } from '@ts-core/common/error';\nimport * as _ from 'lodash';\n\nexport class ViewUtil {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n private static _renderer: Renderer2 = null;\n private static get renderer(): Renderer2 {\n if (_.isNil(ViewUtil._renderer)) {\n throw new ExtendedError(`ViewUtil is not initialized: renderer in nil`);\n }\n return ViewUtil._renderer;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private static copyToClipboard(): void {\n try {\n document.execCommand('copy');\n } catch (error) {}\n }\n\n // --------------------------------------------------------------------------\n //\n //\tCommon Properties\n //\n // --------------------------------------------------------------------------\n\n public static initialize(renderer: Renderer2): void {\n ViewUtil._renderer = renderer;\n }\n\n public static parseElement(element: IViewElement): HTMLElement {\n if (element instanceof HTMLElement) {\n return element;\n }\n if (element instanceof ViewContainerRef) {\n element = element.element;\n }\n return !_.isNil(element) ? element.nativeElement : null;\n }\n\n public static createBase64(element: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): string {\n let value = null;\n let canvas = ViewUtil.createElement('canvas');\n ViewUtil.setProperty(canvas, 'width', element.offsetWidth);\n ViewUtil.setProperty(canvas, 'height', element.offsetHeight);\n\n try {\n let context = canvas.getContext('2d');\n context.drawImage(element, 0, 0, element.offsetWidth, element.offsetHeight);\n value = canvas.toDataURL('image/jpeg', 1.0);\n value = value.replace('data:image/jpeg;base64,', '');\n } catch (error) {}\n return value;\n }\n\n public static selectContent(container: IViewElement, isNeedCopyToClipboard: boolean = false): void {\n container = ViewUtil.parseElement(container);\n if (container instanceof HTMLInputElement || container instanceof HTMLTextAreaElement) {\n let isWasDisabled = container.disabled;\n if (isWasDisabled) {\n container.disabled = false;\n }\n container.select();\n if (isNeedCopyToClipboard) {\n ViewUtil.copyToClipboard();\n }\n if (isWasDisabled) {\n container.disabled = true;\n }\n } else {\n let selection = window.getSelection();\n selection.removeAllRanges();\n\n let range = document.createRange();\n if (!_.isNil(container)) {\n range.selectNodeContents(container);\n }\n selection.addRange(range);\n\n if (isNeedCopyToClipboard) {\n ViewUtil.copyToClipboard();\n }\n }\n }\n\n public static setBackground(container: IViewElement, image: string, repeat: string = 'repeat'): void {\n if (_.isNil(image)) {\n ViewUtil.removeStyle(container, 'backgroundImage');\n ViewUtil.removeStyle(container, 'backgroundRepeat');\n return;\n }\n\n if (!image.includes('url(')) {\n image = 'url(' + image + ')';\n }\n\n ViewUtil.setStyle(container, 'backgroundImage', image);\n ViewUtil.setStyle(container, 'backgroundRepeat', repeat);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tChild Methods\n //\n // --------------------------------------------------------------------------\n\n public static createElement(name: string, className?: string, innerHTML?: string): any {\n let element = ViewUtil.renderer.createElement(name);\n if (!_.isNil(name)) {\n ViewUtil.setProperty(element, 'className', className);\n }\n if (!_.isNil(innerHTML)) {\n ViewUtil.setProperty(element, 'innerHTML', innerHTML);\n }\n return element;\n }\n\n public static appendChild(parent: any, child: any): void {\n if (!_.isNil(parent) && !_.isNil(child)) {\n ViewUtil.renderer.appendChild(parent, child);\n }\n }\n\n public static removeChild(parent: any, child: any): void {\n if (!_.isNil(parent) && !_.isNil(child)) {\n ViewUtil.renderer.removeChild(parent, child);\n }\n }\n\n public static toggleChild(container: Node, child: Node, value: boolean): void {\n let isContains = container.contains(child);\n if (value && !isContains) {\n ViewUtil.appendChild(container, child);\n }\n if (!value && isContains) {\n ViewUtil.removeChild(container, child);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tSize Methods\n //\n // --------------------------------------------------------------------------\n\n public static getStageWidth(): number {\n return window.innerWidth || document.body.clientWidth;\n }\n\n public static getStageHeight(): number {\n return window.innerHeight || document.body.clientHeight;\n }\n\n public static getWidth(container: IViewElement): number {\n container = ViewUtil.parseElement(container);\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'width'));\n if (_.isNaN(value)) {\n value = container.getBoundingClientRect().width;\n }\n if (_.isNaN(value)) {\n value = container.offsetWidth;\n }\n return value;\n }\n\n public static setWidth(container: IViewElement, value: number, isNeedCheckLimits: boolean = false): boolean {\n if (_.isNil(container) || _.isNaN(value)) {\n return false;\n }\n\n if (\n isNeedCheckLimits &&\n (value < ViewUtil.getMinWidth(container) || value > ViewUtil.getMaxWidth(container) || value === ViewUtil.getWidth(container))\n ) {\n return false;\n }\n\n ViewUtil.setStyle(container, 'width', value + 'px');\n return true;\n }\n\n public static getMaxWidth(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'maxWidth'));\n if (_.isNaN(value)) {\n value = Number.POSITIVE_INFINITY;\n }\n return value;\n }\n\n public static getMinWidth(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'minWidth'));\n if (_.isNaN(value)) {\n value = 0;\n }\n return value;\n }\n\n public static getHeight(container: IViewElement): number {\n container = ViewUtil.parseElement(container);\n if (_.isNil(container)) {\n return NaN;\n }\n\n let value = parseFloat(ViewUtil.getStyle(container, 'height'));\n if (_.isNaN(value)) {\n value = container.getBoundingClientRect().height;\n }\n if (_.isNaN(value)) {\n value = container.offsetHeight;\n }\n return value;\n }\n public static setHeight(container: IViewElement, value: number, isNeedCheckLimits: boolean = false): boolean {\n if (_.isNil(container) || _.isNaN(value)) {\n return false;\n }\n if (\n isNeedCheckLimits &&\n (value < ViewUtil.getMinHeight(container) || value > ViewUtil.getMaxHeight(container) || value === ViewUtil.getHeight(container))\n ) {\n return false;\n }\n ViewUtil.setStyle(container, 'height', value + 'px');\n return true;\n }\n public static getMaxHeight(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'maxHeight'));\n if (_.isNaN(value)) {\n value = Number.POSITIVE_INFINITY;\n }\n return value;\n }\n public static getMinHeight(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'minHeight'));\n if (isNaN(value)) {\n value = 0;\n }\n return value;\n }\n\n public static size(container: IViewElement, width: number, height: number, isNeedCheckLimits: boolean): void {\n ViewUtil.setWidth(container, width, isNeedCheckLimits);\n ViewUtil.setHeight(container, height, isNeedCheckLimits);\n }\n\n public static getX(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'left'));\n return _.isNaN(value) ? 0 : value;\n }\n\n public static setX(container: IViewElement, value: number): void {\n if (!_.isNil(container) && !_.isNaN(value)) {\n ViewUtil.setStyle(container, 'left', value + 'px');\n }\n }\n\n public static getY(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'top'));\n return _.isNaN(value) ? 0 : value;\n }\n public static setY(container: IViewElement, value: number): void {\n if (!_.isNil(container) && !_.isNaN(value)) {\n ViewUtil.setStyle(container, 'top', value + 'px');\n }\n }\n public static move(container: IViewElement, x: number, y: number): void {\n ViewUtil.setX(container, x);\n ViewUtil.setY(container, y);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tFocus Methods\n //\n // --------------------------------------------------------------------------\n\n public static focusInput(input: HTMLInputElement | HTMLTextAreaElement): void {\n let caretIndex = 0;\n if (!_.isNil(input.value)) {\n caretIndex = Math.max(0, input.value.toString().length);\n }\n input.focus();\n input.setSelectionRange(caretIndex, caretIndex);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tClasses Methods\n //\n // --------------------------------------------------------------------------\n\n public static addClass(container: IViewElement, name: string): void {\n if (_.isNil(name)) {\n return;\n }\n container = ViewUtil.parseElement(container);\n if (!_.isNil(container)) {\n ViewUtil.renderer.addClass(container, name);\n }\n }\n\n public static addClasses(container: IViewElement, names: string): void {\n if (_.isEmpty(names)) {\n return;\n }\n names.split(' ').forEach(name => ViewUtil.addClass(container, name));\n }\n\n public static removeClass(container: IViewElement, name: string): void {\n if (_.isNil(name)) {\n return;\n }\n container = ViewUtil.parseElement(container);\n if (!_.isNil(container)) {\n ViewUtil.renderer.removeClass(container, name);\n }\n }\n\n public static removeClasses(container: IViewElement, names: string): void {\n if (_.isEmpty(names)) {\n return;\n }\n names.split(' ').forEach(name => ViewUtil.removeClass(container, name));\n }\n\n public static hasClass(container: IViewElement, name: string): boolean {\n if (_.isNil(name)) {\n return false;\n }\n container = ViewUtil.parseElement(container);\n return !_.isNil(container) ? container.classList.contains(name) : false;\n }\n\n public static toggleClass(container: IViewElement, name: string, value: boolean): void {\n if (value) {\n ViewUtil.addClass(container, name);\n } else {\n ViewUtil.removeClass(container, name);\n }\n }\n\n public static getProperty(container: IViewElement, name: string): any {\n if (_.isNil(name)) {\n return null;\n }\n container = ViewUtil.parseElement(container);\n return !_.isNil(container) ? container[name] : null;\n }\n\n public static setProperty(container: IViewElement, name: string, value: any): void {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return;\n }\n if (!_.isNil(value)) {\n ViewUtil.renderer.setProperty(container, name, value);\n } else {\n ViewUtil.removeProperty(container, name);\n }\n }\n\n public static removeProperty(container: IViewElement, name: string): void {\n ViewUtil.removeAttribute(container, name);\n }\n\n public static removeAttribute(container: IViewElement, name: string): void {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return;\n }\n ViewUtil.renderer.removeAttribute(container, name);\n }\n\n public static setAttribute(container: IViewElement, name: string, value: any): void {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return;\n }\n if (!_.isNil(value)) {\n ViewUtil.renderer.setAttribute(container, name, value);\n } else {\n ViewUtil.removeAttribute(container, name);\n }\n }\n\n public static getStyle(container: IViewElement, name: string): any {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return null;\n }\n return container.style[name];\n }\n\n public static setStyle(container: IViewElement, name: string, value: any, flags?: RendererStyleFlags2): void {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return;\n }\n if (value !== ViewUtil.getStyle(container, name)) {\n ViewUtil.renderer.setStyle(container, name, value, flags);\n }\n }\n\n public static removeStyle(container: IViewElement, name: string, flags?: RendererStyleFlags2): void {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return;\n }\n ViewUtil.renderer.removeStyle(container, name, flags);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tVideo Methods\n //\n // --------------------------------------------------------------------------\n\n public static createVideo(isMute: boolean = true, isInline: boolean = false): HTMLVideoElement {\n let video = ViewUtil.createElement('video');\n ViewUtil.setProperty(video, 'autoplay', true);\n if (isMute) {\n ViewUtil.setVideoMuteParameters(video, isMute);\n }\n if (isInline) {\n ViewUtil.setVideoInlineParameters(video);\n }\n return video;\n }\n\n public static setVideoMuteParameters(video: HTMLVideoElement, isMute: boolean = true): void {\n if (!_.isNil(video)) {\n video.muted = video.defaultMuted = isMute;\n }\n }\n\n public static setVideoInlineParameters(video: HTMLVideoElement): void {\n ViewUtil.setAttribute(video, 'webkit-playsinline', 1);\n ViewUtil.setAttribute(video, 'playsinline', true);\n }\n\n public static getVideoError(video: HTMLVideoElement): string {\n if (_.isNil(video) || _.isNil(video.error)) {\n return null;\n }\n\n let error: MediaError = video.error;\n let value = 'Video error ' + video.src + ', ';\n switch (error.code) {\n case MediaError.MEDIA_ERR_ABORTED:\n value += 'media aborted';\n break;\n case MediaError.MEDIA_ERR_DECODE:\n value += 'error to decode';\n break;\n case MediaError.MEDIA_ERR_NETWORK:\n value += 'network error';\n break;\n case MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED:\n value += 'source not supported';\n break;\n }\n return value;\n }\n\n public static playVideo(video: HTMLVideoElement): Promise<void> {\n if (_.isNil(video)) {\n return null;\n }\n\n try {\n return video.play();\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n public static playAudio(audio: HTMLAudioElement): Promise<void> {\n if (_.isNil(audio)) {\n return null;\n }\n try {\n return audio.play();\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n public static pauseVideo(video: HTMLVideoElement): void {\n if (!_.isNil(video)) {\n video.pause();\n }\n }\n\n public static isVideoPlaying(video: HTMLVideoElement): boolean {\n return !_.isNil(video) ? !video.paused && !video.ended : false;\n }\n\n public static loadVideo(video: HTMLVideoElement): void {\n if (!_.isNil(video)) {\n video.load();\n }\n }\n\n public static stopVideoIfNeed(video: HTMLVideoElement): void {\n if (!_.isNil(video) && (!_.isNil(video.src) || !_.isNil(video.srcObject))) {\n ViewUtil.stopVideo(video);\n }\n }\n\n public static stopVideo(video: HTMLVideoElement): void {\n if (_.isNil(video)) {\n return;\n }\n\n if (video.srcObject instanceof MediaStream) {\n let tracks = video.srcObject.getTracks();\n tracks.forEach(track => track.stop());\n }\n\n video.srcObject = null;\n\n video.pause();\n video.src = '';\n video.load();\n }\n\n public static disposeVideo(video: HTMLVideoElement): void {\n ViewUtil.stopVideo(video);\n ViewUtil.removeChild(video.parentNode, video);\n video.remove();\n }\n\n public static disposeVideos(container: IViewElement): void {\n container = ViewUtil.parseElement(container);\n for (let i = container.children.length - 1; i >= 0; i--) {\n let item = container.children.item(i);\n if (item instanceof HTMLVideoElement) {\n ViewUtil.disposeVideo(item);\n }\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tObject Methods\n //\n // --------------------------------------------------------------------------\n\n public static disposeObjects(container: IViewElement, isIEBrowser?: boolean): void {\n container = ViewUtil.parseElement(container);\n for (let i = container.children.length - 1; i >= 0; i--) {\n let item = container.children.item(i);\n if (item instanceof HTMLObjectElement) {\n ViewUtil.disposeObject(item, isIEBrowser);\n }\n }\n }\n\n public static disposeObject(object: HTMLObjectElement, isIEBrowser?: boolean): void {\n if (isIEBrowser && object['readyState'] === 4) {\n for (let i in object) {\n if (_.isFunction(object[i])) {\n object[i] = null;\n }\n }\n }\n ViewUtil.removeChild(object.parentNode, object);\n }\n}\n\nexport type IViewElement<T extends HTMLElement = HTMLElement> = HTMLElement | ElementRef<T> | ViewContainerRef;\n","import { Renderer2 } from '@angular/core';\nimport { LoadableEvent } from '@ts-core/common';\nimport { Assets } from '@ts-core/frontend/asset';\nimport { Language } from '@ts-core/language';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { SettingsBaseService } from '@ts-core/frontend/service';\nimport { ThemeService } from '@ts-core/frontend/theme';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { ApplicationBaseComponent } from './ApplicationBaseComponent';\nimport * as _ from 'lodash';\nimport moment from 'moment';\nimport numeral from 'numeral';\n\nexport abstract class ApplicationComponent<T extends SettingsBaseService> extends ApplicationBaseComponent {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private isLanguageLoaded: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n Assets.initialize(this.settings.assetsUrl);\n ViewUtil.initialize(this.renderer);\n\n // Theme\n this.theme.initialize(this.settings.themes);\n\n // Language\n this.language.initialize(Assets.languagesUrl, this.settings.languages);\n this.language.events.pipe(takeUntil(this.destroyed)).subscribe(data => {\n switch (data.type) {\n case LoadableEvent.COMPLETE:\n this.languageLoadingComplete(data.data as Language);\n break;\n case LoadableEvent.ERROR:\n this.languageLoadingError(data.data as Language, data.error);\n break;\n }\n });\n }\n\n protected isReady(): boolean {\n return super.isReady() && this.isLanguageLoaded;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected languageLoadingComplete(item: Language): void {\n this.isLanguageLoaded = true;\n this.setLocale(item);\n this.checkReady();\n }\n\n protected abstract languageLoadingError(item: Language, error: Error): void;\n\n protected viewReadyHandler(): void {\n this.initialize();\n }\n\n protected setLocale(item: Language): void {\n moment.locale(item.locale);\n numeral.locale(item.locale);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Service Properties\n //\n // --------------------------------------------------------------------------\n\n protected abstract get settings(): T;\n\n protected abstract get theme(): ThemeService;\n protected abstract get language(): LanguageService;\n protected abstract get renderer(): Renderer2;\n}\n","import { ActivatedRoute } from '@angular/router';\nimport { DestroyableContainer, LoadableEvent } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\n\nexport abstract class MessageBaseComponent extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n public text: string;\n public refreshText: string = 'Refresh';\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected route: ActivatedRoute, protected language: LanguageService) {\n super();\n // this.login.isAutoLogin = true\n\n this.text = this.getText();\n if (this.language.isLoaded) {\n this.commitLanguageProperties();\n }\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.commitLanguageProperties());\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitLanguageProperties(): void {\n if (this.language.isHasTranslation('general.refresh')) {\n this.refreshText = this.language.translate('general.refresh');\n }\n }\n\n protected getText(): string {\n let value = this.getValue(this.route.snapshot.queryParams);\n if (_.isNil(value)) {\n value = this.getValue(this.route.snapshot.params);\n }\n return value;\n }\n\n protected getValue(data: any): string {\n for (let item of this.getMessageFields()) {\n let value = data[item];\n if (!_.isEmpty(value)) {\n return value;\n }\n }\n return null;\n }\n\n protected getMessageFields(): Array<string> {\n return ['text', 'message', 'error'];\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract refresh(): void;\n}\n","export interface IQuestion {\n readonly mode: QuestionMode;\n readonly isChecked: boolean;\n\n readonly text: string;\n readonly notText: string;\n readonly yesText: string;\n readonly closeText: string;\n readonly checkText: string;\n\n readonly closePromise: Promise<void>;\n readonly yesNotPromise: Promise<void>;\n}\n\nexport interface IQuestionOptions {\n text?: string;\n mode?: QuestionMode;\n isChecked?: boolean;\n yesTextId?: string;\n notTextId?: string;\n checkTextId?: string;\n closeTextId?: string;\n}\n\nexport enum QuestionMode {\n INFO = 'INFO',\n QUESTION = 'QUESTION'\n}\n\nexport enum QuestionEvent {\n YES = 'YES',\n NOT = 'NOT',\n CLOSE = 'CLOSE',\n CHECK = 'CHECK',\n UNCHECK = 'UNCHECK'\n}\n","import * as _ from 'lodash';\nimport { PromiseHandler } from '@ts-core/common/promise';\nimport { Destroyable } from '@ts-core/common';\nimport { IQuestion, IQuestionOptions, QuestionMode } from './IQuestion';\n\nexport class QuestionManager extends Destroyable implements IQuestion {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public text: string;\n public mode: QuestionMode;\n public options: IQuestionOptions;\n\n public notText: string;\n public yesText: string;\n public closeText: string;\n public checkText: string;\n\n protected _isChecked: boolean = false;\n\n protected _closePromise: PromiseHandler<void, void>;\n protected _yesNotPromise: PromiseHandler<void, void>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(options?: IQuestionOptions) {\n super();\n this._closePromise = PromiseHandler.create();\n this._yesNotPromise = PromiseHandler.create();\n\n this.yesText = 'Yes';\n this.notText = 'Not';\n this.closeText = 'Close';\n this.checkText = 'Check';\n this.options = _.assign(\n {\n mode: QuestionMode.INFO,\n isChecked: false,\n yesTextId: 'general.yes',\n notTextId: 'general.not',\n closeTextId: 'general.close'\n },\n options\n );\n this.text = this.options.text;\n this.mode = this.options.mode;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public closeClickHandler(): void {\n this._closePromise.resolve();\n }\n\n public yesClickHandler(): void {\n this._yesNotPromise.resolve();\n this.closeClickHandler();\n }\n\n public notClickHandler(): void {\n this._yesNotPromise.reject();\n this.closeClickHandler();\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.notClickHandler();\n this._yesNotPromise = null;\n this._closePromise = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tInterface Properties\n //\n // --------------------------------------------------------------------------\n\n public get yesNotPromise(): Promise<void> {\n return this._yesNotPromise.promise;\n }\n\n public get closePromise(): Promise<void> {\n return this._closePromise.promise;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isInfo(): boolean {\n return this.mode === QuestionMode.INFO;\n }\n\n public get isQuestion(): boolean {\n return this.mode === QuestionMode.QUESTION;\n }\n\n public get isChecked(): boolean {\n return this._isChecked;\n }\n public set isChecked(value: boolean) {\n if (value === this._isChecked) {\n return;\n }\n this._isChecked = value;\n // this.content.emit(value ? QuestionEvent.CHECK : QuestionEvent.UNCHECK);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Destroyable } from '@ts-core/common';\nimport { IWindowContent } from './IWindowContent';\nimport { WindowConfig } from './WindowConfig';\n\nexport abstract class IWindow<T = any> extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n abstract close(): void;\n\n abstract blink(): void;\n abstract shake(): void;\n abstract setOnTop(): void;\n\n abstract getWidth(): number;\n abstract getHeight(): number;\n abstract setWidth(value: number): void;\n abstract setHeight(value: number): void;\n abstract setSize(width: number, height: number): void;\n\n abstract getX(): number;\n abstract getY(): number;\n abstract setX(value: number): void;\n abstract setY(value: number): void;\n abstract move(x: number, y: number): void;\n\n abstract emit(event: string): void;\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public isOnTop: boolean = false;\n public isDisabled: boolean = false;\n public isMinimized: boolean = false;\n\n readonly events: Observable<string>;\n readonly container: HTMLElement;\n readonly wrapper: HTMLElement;\n readonly backdrop: HTMLElement;\n\n readonly config: WindowConfig<T>;\n readonly content: IWindowContent<T>;\n}\n\nexport enum WindowEvent {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n CONTENT_READY = 'CONTENT_READY',\n\n MOVED = 'EVENT_MOVED',\n RESIZED = 'RESIZED',\n DISABLED_CHANGED = 'DISABLED_CHANGED',\n MINIMIZED_CHANGED = 'MINIMIZED_CHANGED',\n\n SET_ON_TOP = 'SET_ON_TOP'\n}\n","import { MatDialogConfig } from '@angular/material/dialog';\nimport { MatBottomSheetConfig } from '@angular/material/bottom-sheet';\nimport * as _ from 'lodash';\nimport { IDestroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\n\nexport class WindowConfig<T = any> extends MatDialogConfig<T> implements MatBottomSheetConfig<T>, IDestroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public id: string;\n public isResizeable: boolean = false;\n public isMinimizable: boolean = false;\n public isContentDragable: boolean = true;\n\n public propertiesId: string;\n\n // Need for match MatDialogConfig and MatBottomSheetConfig\n public backdropClass: string;\n\n public x: number = NaN;\n public y: number = NaN;\n\n public defaultWidth: number = NaN;\n public defaultMinWidth: number = NaN;\n public defaultMaxWidth: number = NaN;\n\n public defaultHeight: number = NaN;\n public defaultMinHeight: number = NaN;\n public defaultMaxHeight: number = NaN;\n\n public paddingTop: number = NaN;\n public paddingLeft: number = NaN;\n public paddingRight: number = NaN;\n public paddingBottom: number = NaN;\n\n public verticalAlign: WindowAlign;\n public horizontalAlign: WindowAlign;\n\n protected _isModal: boolean = false;\n\n protected _elementMaxX: number = NaN;\n protected _elementMinX: number = NaN;\n\n protected _elementMaxY: number = NaN;\n protected _elementMinY: number = NaN;\n\n protected _elementWidth: string;\n protected _elementMinWidth: number = NaN;\n protected _elementMaxWidth: number = NaN;\n\n protected _elementHeight: string;\n protected _elementMinHeight: number = NaN;\n protected _elementMaxHeight: number = NaN;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(isModal: boolean = false, isResizeable: boolean = false, width: number = NaN, height: number = NaN) {\n super();\n\n this.isModal = this.hasBackdrop = isModal;\n this.isResizeable = isResizeable;\n\n if (!_.isNaN(width)) {\n this.defaultWidth = width;\n }\n\n if (!_.isNaN(height)) {\n this.defaultHeight = height;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public setDefaultProperties(): void {\n this.width = this.elementWidth;\n this.maxWidth = this.elementMaxWidth;\n this.minWidth = this.elementMinWidth;\n\n this.height = this.elementHeight;\n this.maxHeight = this.elementMaxHeight;\n this.minHeight = this.elementMinHeight;\n }\n\n public parseX(value: number): number {\n value = Math.max(value, this.elementMinX);\n value = Math.min(value, this.elementMaxX);\n return value;\n }\n\n public parseY(value: number): number {\n value = Math.max(value, this.elementMinY);\n value = Math.min(value, this.elementMaxY);\n return value;\n }\n\n public parseWidth(value: number): number {\n value = Math.max(value, this.elementMinWidth);\n value = Math.min(value, this.elementMaxWidth);\n return value;\n }\n\n public parseHeight(value: number): number {\n value = Math.max(value, this.elementMinHeight);\n value = Math.min(value, this.elementMaxHeight);\n return value;\n }\n\n public destroy(): void {\n IDestroyable.destroy(this.data);\n this.data = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isModal(): boolean {\n return this._isModal;\n }\n public set isModal(value: boolean) {\n if (value === this._isModal) {\n return;\n }\n this._isModal = value;\n this.hasBackdrop = value;\n }\n\n public get elementMinY(): number {\n if (!_.isNaN(this._elementMinY)) {\n return this._elementMinY;\n }\n this._elementMinY = 0 - ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingTop)) {\n this._elementMinY += this.paddingTop;\n }\n return this._elementMinY;\n }\n public get elementMaxY(): number {\n if (!_.isNaN(this._elementMaxY)) {\n return this._elementMaxY;\n }\n this._elementMaxY = ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingBottom)) {\n this._elementMaxY -= this.paddingBottom;\n }\n return this._elementMaxY;\n }\n\n public get elementMinX(): number {\n if (!_.isNaN(this._elementMinX)) {\n return this._elementMinX;\n }\n this._elementMinX = -ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingLeft)) {\n this._elementMinX += this.paddingLeft;\n }\n return this._elementMinX;\n }\n public get elementMaxX(): number {\n if (!_.isNaN(this._elementMaxX)) {\n return this._elementMaxX;\n }\n this._elementMaxX = ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingRight)) {\n this._elementMaxX -= this.paddingRight;\n }\n return this._elementMaxX;\n }\n\n public get elementWidth(): string {\n if (this._elementWidth) {\n return this._elementWidth;\n }\n this._elementWidth = 'auto';\n if (this.defaultWidth) {\n this._elementWidth = this.defaultWidth + 'px';\n }\n return this._elementWidth;\n }\n public get elementMinWidth(): number {\n if (!_.isNaN(this._elementMinWidth)) {\n return this._elementMinWidth;\n }\n this._elementMinWidth = 0;\n if (!_.isNaN(this.defaultMinWidth)) {\n let value = ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingLeft)) {\n value -= this.paddingLeft;\n }\n if (!_.isNaN(this.paddingRight)) {\n value -= this.paddingRight;\n }\n this._elementMinWidth = Math.min(this.defaultMinWidth, value);\n }\n return this._elementMinWidth;\n }\n public get elementMaxWidth(): number {\n if (!_.isNaN(this._elementMaxWidth)) {\n return this._elementMaxWidth;\n }\n this._elementMaxWidth = ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingLeft)) {\n this._elementMaxWidth -= this.paddingLeft;\n }\n if (!_.isNaN(this.paddingRight)) {\n this._elementMaxWidth -= this.paddingRight;\n }\n if (!_.isNaN(this.defaultMaxWidth)) {\n this._elementMaxWidth = Math.min(this.defaultMaxWidth, this._elementMaxWidth);\n }\n return this._elementMaxWidth;\n }\n\n public get elementHeight(): string {\n if (this._elementHeight) {\n return this._elementHeight;\n }\n this._elementHeight = 'auto';\n if (this.defaultHeight) {\n this._elementHeight = this.defaultHeight + 'px';\n }\n return this._elementHeight;\n }\n public get elementMinHeight(): number {\n if (!_.isNaN(this._elementMinHeight)) {\n return this._elementMinHeight;\n }\n this._elementMinHeight = 0;\n if (!_.isNaN(this.defaultMinHeight)) {\n let value = ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingTop)) {\n value -= this.paddingTop;\n }\n if (!_.isNaN(this.paddingBottom)) {\n value -= this.paddingBottom;\n }\n this._elementMinHeight = Math.min(this.defaultMinHeight, value);\n }\n return this._elementMinHeight;\n }\n\n public get elementMaxHeight(): number {\n if (!_.isNaN(this._elementMaxHeight)) {\n return this._elementMaxHeight;\n }\n this._elementMaxHeight = ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingTop)) {\n this._elementMaxHeight -= this.paddingTop;\n }\n if (!_.isNaN(this.paddingBottom)) {\n this._elementMaxHeight -= this.paddingBottom;\n }\n if (!_.isNaN(this.defaultMaxHeight)) {\n this._elementMaxHeight = Math.min(this.defaultMaxHeight, this._elementMaxHeight);\n }\n return this._elementMaxHeight;\n }\n}\n\nexport enum WindowAlign {\n START = 'START',\n CENTER = 'CENTER',\n END = 'END'\n}\n\nexport type WindowConfigOptions<T = any> = { [P in keyof WindowConfig<T>]?: any };\n","import { Observable } from 'rxjs';\nimport { INotificationContent } from './INotificationContent';\nimport { NotificationConfig } from './NotificationConfig';\n\nexport abstract class INotification<T = any> {\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n abstract getX(): number;\n abstract getY(): number;\n abstract setX(value: number): void;\n abstract setY(value: number): void;\n abstract move(x: number, y: number): void;\n\n abstract getWidth(): number;\n abstract getHeight(): number;\n abstract setWidth(value: number): void;\n abstract setHeight(value: number): void;\n abstract setSize(width: number, height: number): void;\n\n abstract close(): void;\n abstract remove(): void;\n abstract destroy(): void;\n\n abstract emit(event: string): void;\n\n // --------------------------------------------------------------------------\n //\n // \tInterface Methods\n //\n // --------------------------------------------------------------------------\n\n readonly events: Observable<string>;\n readonly container: HTMLElement;\n\n readonly config: NotificationConfig<T>;\n readonly content: INotificationContent<T>;\n}\n\nexport enum NotificationEvent {\n REMOVED = 'REMOVED'\n}\n","import { WindowConfig } from '../window/WindowConfig';\n\nexport class NotificationConfig<T = any> extends WindowConfig<T> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public icon: string;\n public sound: string;\n public iconId: string;\n public picture: string;\n\n public closeDuration: number = NaN;\n public isRemoveAfterClose: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(data?: T) {\n super();\n this.data = data;\n this.isModal = false;\n }\n}\n\nexport type NotificationConfigOptions<T = any> = { [P in keyof NotificationConfig<T>]?: any };\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { ArrayUtil, DateUtil, ObjectUtil } from '@ts-core/common/util';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { Observable, Subject } from 'rxjs';\nimport { IQuestion, IQuestionOptions, QuestionMode } from '../question/IQuestion';\nimport { QuestionManager } from '../question/QuestionManager';\nimport { WindowEvent } from '../window/IWindow';\nimport { WindowAlign } from '../window/WindowConfig';\nimport { INotification, NotificationEvent } from './INotification';\nimport { INotificationContent } from './INotificationContent';\nimport { NotificationConfig, NotificationConfigOptions } from './NotificationConfig';\nimport { NotificationFactory } from './NotificationFactory';\n\n@Injectable({ providedIn: 'root' })\nexport class NotificationService {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public factory: NotificationFactory<INotification>;\n public questionComponent: ComponentType<INotificationContent<any>>;\n\n protected dialog: MatDialog;\n protected language: LanguageService;\n\n protected _configs: Array<NotificationConfig>;\n protected _closedConfigs: Array<NotificationConfig>;\n protected _notifications: Map<NotificationConfig, INotificationContent<any>>;\n\n private observer: Subject<ObservableData<NotificationServiceEvent, INotification | NotificationConfig>>;\n\n public gapY: number = 25;\n\n public minWidth: number = 25;\n public minHeight: number = 25;\n\n public paddingTop: number = 25;\n public paddingLeft: number = 25;\n public paddingRight: number = 25;\n public paddingBottom: number = 25;\n\n public defaultCloseDuration: number = 10 * DateUtil.MILISECONDS_SECOND;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(dialog: MatDialog, language: LanguageService) {\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\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public open<T>(component: ComponentType<INotificationContent<T>>, config: NotificationConfig): INotificationContent<T> {\n let notification = null;\n if (!_.isNil(config.id)) {\n notification = this.getById(config.id);\n if (notification) {\n return notification.content;\n }\n }\n\n this.setDefaultProperties(config);\n\n let reference: MatDialogRef<INotificationContent<T>> = this.dialog.open(component, config);\n notification = this.factory.create({ config, reference, overlay: (reference as any)._overlayRef });\n\n let subscription = notification.events.subscribe(event => {\n switch (event) {\n case WindowEvent.OPENED:\n this.add(config, reference.componentInstance);\n this.checkPosition(notification);\n if (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 notification.content;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private getById(id: string): INotification {\n let item = _.find(Array.from(this._notifications.values()), item => item.config.id === id);\n return !_.isNil(item) ? item.notification : null;\n }\n\n private setDefaultProperties(config: NotificationConfig): void {\n if (_.isNaN(config.defaultMinWidth)) {\n config.defaultMinWidth = this.minWidth;\n }\n if (_.isNaN(config.defaultMinHeight)) {\n config.defaultMinHeight = this.minHeight;\n }\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 if (_.isNaN(config.closeDuration)) {\n config.closeDuration = this.defaultCloseDuration;\n }\n\n config.verticalAlign = WindowAlign.START;\n config.horizontalAlign = WindowAlign.END;\n config.setDefaultProperties();\n }\n\n private checkPosition(item: INotification): void {\n let previous = this.getPrevious(item);\n if (!_.isNil(previous)) {\n item.setY(previous.getY() + previous.getHeight() + this.gapY);\n }\n }\n\n private getPrevious(value: INotification): 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 // --------------------------------------------------------------------------\n //\n // \tSetters Methods\n //\n // --------------------------------------------------------------------------\n\n private add<T>(config: NotificationConfig, 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(value: NotificationId): NotificationConfig {\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(value: NotificationId): boolean {\n return !_.isNil(this.get(value));\n }\n\n public remove(value: NotificationId): 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 config.destroy();\n }\n\n public removeAll(): void {\n this.configs.forEach(item => this.remove(item));\n }\n\n public close(value: NotificationId): INotification {\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, NotificationConfig | INotification>> {\n return this.observer.asObservable();\n }\n\n public get configs(): Array<NotificationConfig> {\n return this._configs;\n }\n\n public get closedConfigs(): Array<NotificationConfig> {\n return this._closedConfigs;\n }\n\n public get notifications(): Map<NotificationConfig, INotificationContent<any>> {\n return this._notifications;\n }\n}\n\nexport type NotificationId = string | NotificationConfig | NotificationConfigOptions;\n\nexport enum NotificationServiceEvent {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n ADDED = 'ADDED',\n REMOVED = 'REMOVED'\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { NotificationConfig } from '../notification/NotificationConfig';\nimport { NotificationService, NotificationServiceEvent } from '../notification/NotificationService';\n\nexport class ShellBaseComponent extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public isNeedSide: boolean = false;\n public isHasNotifications: boolean = false;\n\n public isShowMenu: boolean = true;\n public isShowNotifications: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public notifications: NotificationService, public breakpointObserver: BreakpointObserver) {\n super();\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.isHasNotifications = !_.isEmpty(this.notificationItems);\n if (!this.isHasNotifications) {\n this.isShowNotifications = false;\n }\n }\n\n protected isNeedSideCheck(): void {\n this.isNeedSide = this.breakpointObserver.isMatched(this.sideMediaQueryToCheck);\n this.isShowMenu = this.isNeedSide;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public toggleMenu(): void {\n if (!this.isNeedSide) {\n this.isShowMenu = !this.isShowMenu;\n }\n }\n\n public toggleNotifications(): void {\n this.isShowNotifications = !this.isShowNotifications;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n protected get sideMediaQueryToCheck(): string {\n return `(min-width: 1000px)`;\n }\n\n public get notificationItems(): Array<NotificationConfig> {\n return this.notifications.closedConfigs;\n }\n}\n","import { Injector } from '@angular/core';\nimport * as _ from 'lodash';\n\nlet applicationInjector: Injector;\n\nexport const APPLICATION_INJECTOR = (value?: Injector): Injector => {\n if (!_.isNil(value)) {\n applicationInjector = value;\n }\n return applicationInjector;\n};\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { Assets } from '@ts-core/frontend/asset';\nimport * as _ from 'lodash';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-asset-background]'\n})\nexport class AssetBackgroundDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private _isUrl: boolean = false;\n private _isIcon: boolean = false;\n private _isImage: boolean = false;\n\n private _repeat: string = 'repeat';\n private _extension: string = 'png';\n private _background: string;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private element: ElementRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected setStyleProperties(): void {\n let url = this.getUrl(this.background, this.isImage, this.isIcon, this.isUrl);\n ViewUtil.setBackground(this.element, url, this.repeat);\n }\n\n private getUrl(id: string, isImage?: boolean, isIcon?: boolean, isUrl?: boolean): string {\n if (_.isNil(id)) {\n return null;\n }\n if (isUrl) {\n return id;\n }\n if (isImage) {\n return Assets.getImage(id, this.extension);\n }\n if (isIcon) {\n return Assets.getIcon(id, this.extension);\n }\n return Assets.getBackground(id, this.extension);\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.element = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public set isIcon(value: boolean) {\n if (value === this._isIcon) {\n return;\n }\n this._isIcon = value;\n this.setStyleProperties();\n }\n public get isIcon(): boolean {\n return this._isIcon;\n }\n\n @Input()\n public set isImage(value: boolean) {\n if (value === this._isImage) {\n return;\n }\n this._isImage = value;\n this.setStyleProperties();\n }\n public get isImage(): boolean {\n return this._isImage;\n }\n\n @Input()\n public set isUrl(value: boolean) {\n if (value === this._isUrl) {\n return;\n }\n this._isUrl = value;\n this.setStyleProperties();\n }\n public get isUrl(): boolean {\n return this._isUrl;\n }\n\n @Input()\n public set repeat(value: string) {\n if (value === this._repeat) {\n return;\n }\n this._repeat = value;\n this.setStyleProperties();\n }\n public get repeat(): string {\n return this._repeat;\n }\n\n @Input()\n public set extension(value: string) {\n if (value === this._extension) {\n return;\n }\n this._extension = value;\n this.setStyleProperties();\n }\n public get extension(): string {\n return this._extension;\n }\n\n @Input('vi-asset-background')\n public set background(value: string) {\n if (value === this._background) {\n return;\n }\n this._background = value;\n this.setStyleProperties();\n }\n public get background(): string {\n return this._background;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetBackground'\n})\nexport class AssetBackgroundPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'png'): string {\n return Assets.getBackground(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetIcon'\n})\nexport class AssetIconPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'png'): string {\n return Assets.getIcon(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetFile'\n})\nexport class AssetFilePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string): string {\n return Assets.getFile(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetVideo'\n})\nexport class AssetVideoPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'mp4'): string {\n return Assets.getVideo(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetSound'\n})\nexport class AssetSoundPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'mp3'): string {\n return Assets.getSound(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetImage'\n})\nexport class AssetImagePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'png'): string {\n return Assets.getImage(name, extension);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AssetBackgroundDirective } from './AssetBackgroundDirective';\nimport { AssetBackgroundPipe } from './AssetBackgroundPipe';\nimport { AssetFilePipe } from './AssetFilePipe';\nimport { AssetIconPipe } from './AssetIconPipe';\nimport { AssetImagePipe } from './AssetImagePipe';\nimport { AssetSoundPipe } from './AssetSoundPipe';\nimport { AssetVideoPipe } from './AssetVideoPipe';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AssetBackgroundDirective, AssetImagePipe, AssetIconPipe, AssetFilePipe, AssetSoundPipe, AssetVideoPipe, AssetBackgroundPipe],\n exports: [AssetBackgroundDirective, AssetImagePipe, AssetIconPipe, AssetFilePipe, AssetSoundPipe, AssetVideoPipe, AssetBackgroundPipe]\n})\nexport class AssetModule {}\n","import { ICookieOptions, ICookieService } from '@ts-core/frontend/cookie';\nimport * as _ from 'lodash';\nimport * as Cookie from 'ngx-cookie';\nimport { CookieOptionsProvider } from 'ngx-cookie';\nimport { CookieOptions } from './CookieOptions';\n\nexport class CookieService extends Cookie.CookieService implements ICookieService {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(options?: CookieOptions) {\n options = _.assign(\n {\n path: '/',\n domain: null,\n expires: null,\n secure: false,\n httpOnly: false\n },\n options\n );\n super({ options } as CookieOptionsProvider);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public has(key: string): boolean {\n return !_.isNil(super.get(key));\n }\n\n public get(key: string, defaultValue?: string): string {\n return this.has(key) ? super.get(key) : defaultValue;\n }\n\n public getObject<T = any>(key: string, defaultValue?: T): T {\n return this.has(key) ? (super.getObject(key) as any) : defaultValue;\n }\n\n public putObject<T = any>(key: string, value: T, options?: CookieOptions): void {\n super.putObject(key, value as any, options);\n }\n\n public update(key: string, value: string, options?: ICookieOptions): void {\n if (!_.isNil(value)) {\n this.put(key, value, options);\n } else {\n this.remove(key);\n }\n }\n\n public updateObject(key: string, value: Object, options?: ICookieOptions): void {\n if (!_.isNil(value)) {\n this.putObject(key, value, options);\n } else {\n this.remove(key);\n }\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieOptions } from '@ts-core/frontend/cookie';\nimport { CookieService } from './CookieService';\n\n@NgModule()\nexport class CookieModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: ICookieOptions): ModuleWithProviders<CookieModule> {\n return {\n ngModule: CookieModule,\n providers: [\n {\n provide: COOKIE_OPTIONS,\n useValue: options || {}\n },\n {\n provide: CookieService,\n deps: [COOKIE_OPTIONS],\n useFactory: cookieServiceFactory\n }\n ]\n };\n }\n}\n\nexport function cookieServiceFactory(options: ICookieOptions): CookieService {\n return new CookieService(options);\n}\n\nexport const COOKIE_OPTIONS = new InjectionToken<ICookieOptions>(`COOKIE_OPTIONS`);\n","import { ResizeSensor } from 'css-element-queries';\nimport { IDestroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { BehaviorSubject, distinctUntilChanged, Observable } from 'rxjs';\nimport { IViewElement, ViewUtil } from '../util/ViewUtil';\n\nexport class ResizeManager implements IDestroyable {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected sensor: ResizeSensor;\n protected subject: BehaviorSubject<ISize>;\n protected element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: IViewElement) {\n this.element = ViewUtil.parseElement(element);\n this.subject = new BehaviorSubject({ width: ViewUtil.getWidth(this.element), height: ViewUtil.getHeight(this.element) });\n this.sensor = new ResizeSensor(this.element, this.handler);\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n protected handler = (item: ISize) => this.subject.next(item);\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get changed(): Observable<ISize> {\n return this.subject.asObservable().pipe(distinctUntilChanged(_.isEqual));\n }\n\n public get value(): ISize {\n return this.subject.getValue();\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (!_.isNil(this.sensor)) {\n this.sensor.detach(this.handler);\n this.sensor.reset();\n this.sensor = null;\n }\n if (!_.isNil(this.subject)) {\n this.subject.complete();\n this.subject = null;\n }\n this.element = null;\n }\n}\n\nexport interface ISize {\n width: number;\n height: number;\n}\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { debounceTime, takeUntil } from 'rxjs';\nimport { ResizeManager } from '../manager/ResizeManager';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-aspect-ratio]'\n})\nexport class AspectRatioResizeDirective extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n //\tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n protected static UPDATE_DELAY: number = 100;\n\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private _ratio: number = NaN;\n private _direction: Direction;\n\n private sensor: ResizeManager;\n private element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.element = ViewUtil.parseElement(element.nativeElement);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private commitResizeProperties = (): void => {\n switch (this.direction) {\n case Direction.HORIZONTAL:\n this.width = this.height / this.ratio;\n break;\n case Direction.VERTICAL:\n this.height = this.width * this.ratio;\n break;\n }\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n this.sensor = new ResizeManager(this.element);\n this.sensor.changed\n .pipe(debounceTime(AspectRatioResizeDirective.UPDATE_DELAY), takeUntil(this.destroyed))\n .subscribe(() => this.commitResizeProperties());\n if (_.isNaN(this.ratio)) {\n this.ratio = 4 / 3;\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.element = null;\n\n if (!_.isNil(this.sensor)) {\n this.sensor.destroy();\n this.sensor = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n private get width(): number {\n return ViewUtil.getWidth(this.element);\n }\n\n private set width(value: number) {\n ViewUtil.setWidth(this.element, value, true);\n }\n\n private get height(): number {\n return ViewUtil.getHeight(this.element);\n }\n\n private set height(value: number) {\n ViewUtil.setHeight(this.element, value, true);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-aspect-ratio')\n public set direction(value: Direction) {\n if (value === this._direction || _.isNil(value)) {\n return;\n }\n this._direction = value;\n this.commitResizeProperties();\n }\n public get direction(): Direction {\n return this._direction;\n }\n\n @Input()\n public set ratio(value: number) {\n if (value === this._ratio) {\n return;\n }\n this._ratio = value;\n this.commitResizeProperties();\n }\n public get ratio(): number {\n return this._ratio;\n }\n}\n\nexport enum Direction {\n VERTICAL = 'VERTICAL',\n HORIZONTAL = 'HORIZONTAL'\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport * as _ from 'lodash';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-scroll]'\n})\nexport class ScrollDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static INITIALIZATION_DELAY: number = 1;\n\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public scrolled: EventEmitter<number> = new EventEmitter();\n\n private timer: any;\n protected element: HTMLElement;\n protected isInitialized: boolean = false;\n\n protected _scrollValue: number = 0;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.element = ViewUtil.parseElement(element);\n this.timer = setTimeout(this.initializeHandler, ScrollDirective.INITIALIZATION_DELAY);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n if (this.scrollValue) {\n this.scrollTo(this.scrollValue);\n }\n this.isInitialized = true;\n }\n\n protected scrollTo(value: number): void {\n this._scrollValue = value;\n this.element.scrollTop = value;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('scroll')\n public scrollHandler() {\n if (this.isInitialized) {\n this.scrollChangedHandler();\n }\n }\n\n protected scrollChangedHandler(): void {\n this._scrollValue = this.scrollTop;\n this.scrolled.next(this._scrollValue);\n }\n\n protected initializeHandler = (): void => this.initialize();\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n protected get scrollTop(): number {\n return this.element.scrollTop;\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.element = null;\n this.isInitialized = false;\n\n clearTimeout(this.timer);\n this.timer = null;\n\n this._scrollValue = 0;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public set scrollValue(value: number) {\n if (value === this._scrollValue || _.isNaN(value)) {\n return;\n }\n this._scrollValue = value;\n if (this.isInitialized) {\n this.scrollTo(value);\n }\n }\n\n public get scrollValue(): number {\n return this._scrollValue;\n }\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { ScrollDirective } from './ScrollDirective';\n\n@Directive({\n selector: '[vi-infinite-scroll]'\n})\nexport class InfiniteScrollDirective extends ScrollDirective {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public top: EventEmitter<number> = new EventEmitter();\n @Output()\n public bottom: EventEmitter<number> = new EventEmitter();\n\n @Input()\n public elementHeight: number = 50;\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected scrollChangedHandler(): void {\n super.scrollChangedHandler();\n if (!this.isInitialized) {\n return;\n }\n let value = this.scrollTop;\n let bottomValue = value + this.clientHeight + this.elementHeight;\n\n if (bottomValue >= this.scrollHeight) {\n this.bottom.next(value);\n } else if (value <= this.elementHeight) {\n this.top.next(value);\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.top = null;\n this.bottom = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n protected get clientHeight(): number {\n return this.element.clientHeight;\n }\n protected get scrollHeight() {\n return this.element.scrollHeight;\n }\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { InfiniteScrollDirective } from './InfiniteScrollDirective';\n@Directive({\n selector: '[vi-auto-scroll-bottom]'\n})\nexport class AutoScrollBottomDirective extends InfiniteScrollDirective {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public triggerChanged: EventEmitter<void> = new EventEmitter<void>();\n\n private _trigger: any;\n private triggerTimer: any;\n private triggerDelta: number = 0;\n\n private isScrollLocked: boolean = false;\n private lastScrollHeight: number;\n\n private isNeedScroll: boolean = true;\n private isNeedRemainScroll: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n if (!this._scrollValue) {\n this._scrollValue = this.scrollHeight;\n }\n super.initialize();\n }\n\n protected checkTrigger = () => {\n this.isScrollLocked = false;\n if (this.isNeedScroll) {\n this.scrollBottom();\n } else if (this.isNeedRemainScroll) {\n this.scrollRemain();\n } else if (this.triggerDelta > 0) {\n this.triggerDelta = 0;\n this.triggerChanged.emit();\n }\n };\n\n protected scrollRemain(): void {\n this.isNeedRemainScroll = false;\n this.scrollTo(this.scrollHeight - this.lastScrollHeight);\n }\n\n public scrollBottom(): void {\n this.scrollTo(this.scrollHeight);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected scrollChangedHandler() {\n super.scrollChangedHandler();\n if (!this.isInitialized || this.isScrollLocked) {\n return;\n }\n\n let value = this.scrollTop;\n let bottomValue = value + this.clientHeight + this.elementHeight;\n\n this.isNeedScroll = bottomValue >= this.scrollHeight;\n this.isNeedRemainScroll = value <= this.elementHeight;\n\n if (this.isNeedRemainScroll) {\n this.lastScrollHeight = this.scrollHeight;\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 clearTimeout(this.triggerTimer);\n this.triggerTimer = null;\n this.trigger = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-auto-bottom-scroll')\n public set trigger(value: number) {\n if (value === this._trigger) {\n return;\n }\n if (!isNaN(this._trigger) && !isNaN(value)) {\n this.triggerDelta = value - this._trigger;\n }\n\n this._trigger = value;\n if (!this.isInitialized) {\n return;\n }\n this.isScrollLocked = true;\n clearTimeout(this.triggerTimer);\n this.triggerTimer = setTimeout(this.checkTrigger, InfiniteScrollDirective.INITIALIZATION_DELAY);\n }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { DateUtil } from '@ts-core/common/util';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-click-to-copy]'\n})\nexport class ClickToCopyDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-click-to-copy')\n public element: HTMLElement;\n private selectionClearTimer: any;\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('click', ['$event'])\n private clickHandler(event: MouseEvent) {\n ViewUtil.selectContent(this.element, true);\n\n clearTimeout(this.selectionClearTimer);\n this.selectionClearTimer = setTimeout(this.selectionRemove, DateUtil.MILISECONDS_SECOND / 2);\n }\n\n private selectionRemove = (): void => ViewUtil.selectContent(null);\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.element = null;\n clearTimeout(this.selectionClearTimer);\n }\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-click-to-select]'\n})\nexport class ClickToSelectDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.element = ViewUtil.parseElement(element.nativeElement);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('click', ['$event'])\n private clickHandler(event: MouseEvent) {\n if (event.detail >= 3) {\n ViewUtil.selectContent(this.element, true);\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.element = null;\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\nimport * as _ from 'lodash';\n\nexport class FocusManager extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected timer: any;\n protected delay: number;\n protected element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, delay: number = 100) {\n super();\n this.delay = delay;\n this.element = ViewUtil.parseElement(element);\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n\n private focusElement = (): void => {\n if (!_.isNil(this.element)) {\n ViewUtil.focusInput(this.element as any);\n }\n };\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public focus(): void {\n clearTimeout(this.timer);\n this.timer = setTimeout(this.focusElement, this.delay);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this.timer)) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n\n this.element = null;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { FocusManager } from '../manager/FocusManager';\n\n@Directive({\n selector: '[vi-focus]'\n})\nexport class FocusDirective<T = any> extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private manager: FocusManager;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.manager = new FocusManager(element);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected focus = (): void => this.manager.focus();\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.manager.destroy();\n this.manager = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-focus')\n public set trigger(value: T) {\n this.focus();\n }\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-select-on-focus]'\n})\nexport class SelectOnFocusDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private element: ElementRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('focus')\n private focusHandler(): void {\n ViewUtil.selectContent(this.element.nativeElement);\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.element = null;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-html-content-title]'\n})\nexport class HTMLContentTitleDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _value: string;\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 commitValueProperties(): void {\n let title = this.value;\n if (!_.isEmpty(title)) {\n title = title.replace(/<br\\s*[\\/]?>/g, '\\n');\n title = title.replace(/<[^>]*>/g, '');\n }\n ViewUtil.setProperty(this.element, 'title', title);\n ViewUtil.setProperty(this.element, 'innerHTML', this.value);\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._value = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-html-content-title')\n public set value(value: string) {\n if (value === this._value) {\n return;\n }\n this._value = value;\n if (!_.isNil(value)) {\n this.commitValueProperties();\n }\n }\n public get value(): string {\n return this._value;\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';\nimport { Interactable } from '@interactjs/types';\nimport * as interact from 'interactjs';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[vi-resize]'\n})\nexport class ResizeDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public resize: EventEmitter<any> = new EventEmitter();\n\n @Input()\n public isTop: boolean = false;\n @Input()\n public isLeft: boolean = false;\n @Input()\n public isRight: boolean = false;\n @Input()\n public isBottom: boolean = false;\n\n private interactable: Interactable;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n\n this.interactable = interact.default(ViewUtil.parseElement(element));\n // this.interactable.styleCursor(false);\n\n let param = {} as any;\n param.top = this.isTop;\n param.left = this.isLeft;\n param.right = this.isRight;\n param.bottom = this.isBottom;\n this.interactable.resizable(param);\n this.interactable.on('resizemove', this.resizeHandler);\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n private resizeHandler = (event: any) => {\n if (event.dx !== 0 || event.dy !== 0) {\n this.resize.emit(event);\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 if (!_.isNil(this.interactable)) {\n this.interactable.unset();\n this.interactable = null;\n }\n }\n}\n","import { Directive, ElementRef, Input, EventEmitter, Output } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { DateUtil } from '@ts-core/common/util';\nimport * as _ from 'lodash';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[vi-scroll-check]'\n})\nexport class ScrollCheckDirective extends DestroyableContainer {\n //--------------------------------------------------------------------------\n //\n //\tProperties\n //\n //--------------------------------------------------------------------------\n\n @Output()\n public limitExceed: EventEmitter<boolean> = new EventEmitter();\n\n private _scrollLimit: number;\n private _scrollValue: number;\n private isExceedLimit: boolean = false;\n\n //--------------------------------------------------------------------------\n //\n //\tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n\n this._scrollValue = element.nativeElement.scrollTop;\n fromEvent(element.nativeElement, 'scroll')\n .pipe(debounceTime(DateUtil.MILISECONDS_SECOND / 10), takeUntil(this.destroyed))\n .subscribe(() => {\n this._scrollValue = element.nativeElement.scrollTop;\n this.check();\n });\n }\n\n //--------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected check(): void {\n let value = this._scrollValue >= this.scrollLimit;\n if (value !== this.isExceedLimit) {\n this.isExceedLimit = value;\n this.limitExceed.emit(this.isExceedLimit);\n }\n }\n\n //--------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n //--------------------------------------------------------------------------\n\n @Input('vi-scroll-check')\n public set scrollLimit(value: number) {\n if (value == this._scrollLimit) {\n return;\n }\n this._scrollLimit = value;\n this.check();\n }\n public get scrollLimit(): number {\n return this._scrollLimit;\n }\n}\n","import { MatPaginatorIntl } from '@angular/material/paginator';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { Subscription } from 'rxjs';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Injectable()\nexport class LanguageMatPaginatorIntl extends MatPaginatorIntl implements OnDestroy {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n public lastPageLabel: string;\n public nextPageLabel: string;\n public firstPageLabel: string;\n public previousPageLabel: string;\n public itemsPerPageLabel: string;\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.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.getRangeLabel = this.languageRangeLabel;\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 translation.total = length.toString();\n } else {\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 translation.total = length.toString();\n }\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 { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTranslate',\n pure: false\n})\nexport class LanguagePipe extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private key: string;\n private params: string;\n private _value: string;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(this.valueUpdate);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private valueUpdate = (): void => {\n this._value = this.language.translate(this.key, this.params);\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string, params?: any): string {\n this.key = key;\n this.params = params;\n if (_.isNil(this._value)) {\n this.valueUpdate();\n }\n return this._value;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n\n this.key = null;\n this.params = null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\n\n@Pipe({\n name: 'viTranslatePure'\n})\nexport class LanguagePipePure extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string, params?: any): string {\n return this.language.translate(key, params);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n }\n}\n","import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';\nimport { LoadableEvent } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { PromiseHandler } from '@ts-core/common/promise';\n\nexport class LanguageRequireResolver implements Resolve<void> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected language: LanguageService) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<void> {\n if (this.language.isLoaded) {\n return Promise.resolve();\n }\n\n let promise = PromiseHandler.create<void>();\n let subscription = this.language.events.subscribe(data => {\n if (data.type === LoadableEvent.COMPLETE) {\n promise.resolve();\n } else if (data.type === LoadableEvent.ERROR) {\n promise.reject(data.error.toString());\n } else if (data.type === LoadableEvent.FINISHED) {\n subscription.unsubscribe();\n }\n });\n return promise.promise;\n }\n}\n","import { LanguageService } from '@ts-core/frontend/language';\nimport { LanguageRequireResolver } from './LanguageRequireResolver';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageResolver extends LanguageRequireResolver {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(language: LanguageService) {\n super(language);\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-translate]'\n})\nexport class LanguageDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public isNeedTitle: boolean;\n\n protected _key: string;\n protected _params: any;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected element: ElementRef, protected language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.translate);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected translate(): void {\n if (_.isNil(this.key)) {\n return;\n }\n\n let value = this.language.translate(this.key, this.params);\n ViewUtil.setProperty(this.element, 'innerHTML', value);\n if (this.isNeedTitle) {\n ViewUtil.setProperty(this.element, 'title', value);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n\n super.destroy();\n this.language = null;\n\n this._key = null;\n this._params = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-translate')\n public set key(value: string) {\n if (value === this._key) {\n return;\n }\n this._key = value;\n if (!_.isNil(value)) {\n this.translate();\n }\n }\n public get key(): string {\n return this._key;\n }\n\n @Input()\n public set params(value: any) {\n if (value === this._params) {\n return;\n }\n this._params = value;\n this.translate();\n }\n public get params(): any {\n return this._params;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTranslateHas',\n pure: false\n})\nexport class LanguagePipeHas extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private key: string;\n private _value: boolean;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(this.valueUpdate);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private valueUpdate = (): void => {\n this._value = this.language.isHasTranslation(this.key);\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string): boolean {\n this.key = key;\n if (_.isNil(this._value)) {\n this.valueUpdate();\n }\n return this._value;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n\n this.key = null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTranslateHasPure',\n pure: true\n})\nexport class LanguagePipeHasPure extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string): boolean {\n return this.language.isHasTranslation(key);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n }\n}\n","import { Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[viTranslateHas]'\n})\nexport class LanguageHasDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _key: string;\n\n protected view: any;\n protected index: EmbeddedViewRef<any>;\n\n @Input()\n public isOnlyIfNotEmpty: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private template: TemplateRef<any>, private container: ViewContainerRef, protected language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.check());\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected check(): void {\n let isNeedAdd = false;\n let isNeedRemove = false;\n let isHasTranslation = !_.isNil(this.key) && this.language.isHasTranslation(this.key, this.isOnlyIfNotEmpty);\n\n if (isHasTranslation) {\n if (_.isNil(this.view)) {\n isNeedAdd = true;\n }\n } else {\n if (!_.isNil(this.view)) {\n isNeedRemove = true;\n }\n }\n\n if (isNeedAdd) {\n this.view = this.container.createEmbeddedView(this.template);\n } else if (isNeedRemove) {\n let index = this.container.indexOf(this.view);\n if (index >= 0) {\n this.container.remove(index);\n this.view = null;\n }\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n\n super.destroy();\n this.language = null;\n\n this._key = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('viTranslateHas')\n public set key(value: string) {\n if (value === this._key) {\n return;\n }\n this._key = value;\n this.check();\n }\n public get key(): string {\n return this._key;\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieService } from '@ts-core/frontend/cookie';\nimport { ILanguageServiceOptions, LanguageService } from '@ts-core/frontend/language';\nimport { CookieModule } from '../cookie/CookieModule';\nimport { CookieService } from '../cookie/CookieService';\nimport { LanguageMatPaginatorIntl } from './LanguageMatPaginatorIntl';\nimport { LanguagePipe } from './LanguagePipe';\nimport { LanguagePipePure } from './LanguagePipePure';\nimport { LanguageResolver } from './LanguageResolver';\nimport { LanguageDirective } from './LanguageDirective';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { LanguagePipeHas } from './LanguagePipeHas';\nimport { LanguagePipeHasPure } from './LanguagePipeHasPure';\nimport { LanguageHasDirective } from './LanguageHasDirective';\nimport * as _ from 'lodash';\n\n@NgModule({\n imports: [CookieModule],\n declarations: [LanguagePipe, LanguagePipePure, LanguagePipeHas, LanguagePipeHasPure, LanguageHasDirective, LanguageDirective],\n exports: [LanguagePipe, LanguagePipePure, LanguagePipeHas, LanguagePipeHasPure, LanguageHasDirective, LanguageDirective]\n})\nexport class LanguageModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: ILanguageServiceOptions): ModuleWithProviders<LanguageModule> {\n return {\n ngModule: LanguageModule,\n providers: [\n {\n provide: LANGUAGE_OPTIONS,\n useValue: options || {}\n },\n {\n provide: LanguageService,\n deps: [CookieService, LANGUAGE_OPTIONS],\n useFactory: languageServiceFactory\n },\n {\n provide: LanguageResolver,\n deps: [LanguageService],\n useClass: LanguageResolver\n },\n {\n provide: MatPaginatorIntl,\n deps: [LanguageService],\n useClass: LanguageMatPaginatorIntl\n }\n ]\n };\n }\n}\n\nexport function languageServiceFactory(cookie: ICookieService, options?: ILanguageServiceOptions): LanguageService {\n if (!_.isNil(options) && _.isNil(options.service)) {\n options.service = cookie;\n }\n return new LanguageService(options);\n}\n\nexport const LANGUAGE_OPTIONS = new InjectionToken<ILanguageServiceOptions>(`LANGUAGE_OPTIONS`);\n","import { IWindow } from './IWindow';\nimport { WindowProperties } from './WindowProperties';\n\nexport class WindowFactory<U extends IWindow> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected classType: WindowType<U>) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public create(properties: WindowProperties): U {\n return new this.classType(properties);\n }\n}\n\nexport interface WindowType<T> {\n new (properties: WindowProperties): T;\n}\n","import { MatDialogRef } from '@angular/material/dialog';\nimport * as _ from 'lodash';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowAlign, WindowConfig } from './WindowConfig';\n\nexport abstract class WindowBase<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _x: number = NaN;\n protected _width: number = NaN;\n\n protected _y: number = NaN;\n protected _height: number = NaN;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected abstract getConfig(): WindowConfig<T>;\n protected abstract getReference(): MatDialogRef<any>;\n protected abstract getContainer(): HTMLElement;\n\n protected setProperties(): void {\n let config = this.getConfig();\n if (!_.isNaN(config.defaultWidth)) {\n this.width = config.defaultWidth;\n }\n if (!_.isNaN(config.defaultHeight)) {\n this.height = config.defaultHeight;\n }\n }\n\n protected setPosition(): void {\n let config = this.getConfig();\n\n switch (config.horizontalAlign) {\n case WindowAlign.START:\n this.x = !_.isNaN(this.paddingLeft) ? this.paddingLeft : 0;\n break;\n case WindowAlign.END:\n let value = ViewUtil.getStageWidth() - this.calculateWidth();\n if (!_.isNaN(this.paddingRight)) {\n value -= this.paddingRight;\n }\n this.x = value;\n break;\n default:\n this.x = (ViewUtil.getStageWidth() - this.calculateWidth()) / 2;\n break;\n }\n\n switch (config.verticalAlign) {\n case WindowAlign.START:\n this.y = !_.isNaN(this.paddingTop) ? this.paddingTop : 0;\n break;\n case WindowAlign.END:\n let value = ViewUtil.getStageHeight() - this.calculateHeight();\n if (!_.isNaN(this.paddingBottom)) {\n value -= this.paddingBottom;\n }\n this.y = value;\n break;\n default:\n this.y = (ViewUtil.getStageHeight() - this.calculateHeight()) / 2;\n break;\n }\n }\n\n protected clearSize(): void {\n this._x = NaN;\n this._y = NaN;\n this._width = NaN;\n this._height = NaN;\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 updatePosition = (): void => this.setPosition();\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public calculateWidth(): number {\n return !_.isNaN(this.width) ? this.width : ViewUtil.getWidth(this.getContainer());\n }\n public calculateHeight(): number {\n return !_.isNaN(this.height) ? this.height : ViewUtil.getHeight(this.getContainer());\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n protected get width(): number {\n return this._width;\n }\n protected set width(value: number) {\n value = this.getConfig().parseWidth(value);\n if (value === this._width) {\n return;\n }\n this._width = value;\n this.commitSizeProperties();\n }\n\n protected get height(): number {\n return this._height;\n }\n protected set height(value: number) {\n value = this.getConfig().parseHeight(value);\n if (value === this._height) {\n return;\n }\n this._height = value;\n this.commitSizeProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get x(): number {\n return this._x;\n }\n\n public set x(value: number) {\n value = this.getConfig().parseX(value);\n if (value === this._x) {\n return;\n }\n this._x = value;\n this.commitPositionProperties();\n }\n\n public get y(): number {\n return this._y;\n }\n\n public set y(value: number) {\n value = this.getConfig().parseY(value);\n if (value === this._y) {\n return;\n }\n this._y = value;\n this.commitPositionProperties();\n }\n\n public get paddingTop(): number {\n return this.getConfig().paddingTop;\n }\n\n public get paddingLeft(): number {\n return this.getConfig().paddingLeft;\n }\n\n public get paddingRight(): number {\n return this.getConfig().paddingRight;\n }\n\n public get paddingBottom(): number {\n return this.getConfig().paddingBottom;\n }\n}\n","import { MatDialogRef } from '@angular/material/dialog';\nimport { Observable, Subject, Subscription, filter, takeUntil } from 'rxjs';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { IWindow, WindowEvent } from './IWindow';\nimport { IWindowContent } from './IWindowContent';\nimport { WindowBase } from './WindowBase';\nimport { WindowConfig } from './WindowConfig';\nimport { WindowProperties } from './WindowProperties';\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 BLINK_DELAY = 500;\n public static SHAKE_DELAY = 500;\n public static RESIZE_DELAY = 200;\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n private _isBlink: boolean = false;\n private blinkTimer: any;\n\n private _isShaking: boolean = false;\n private shakeTimer: any;\n\n private resizeTimer: any;\n\n private _isOnTop: boolean = false;\n private _isDisabled: boolean = false;\n private _isMinimized: boolean = false;\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 properties: WindowProperties;\n\n protected subscription: Subscription;\n protected observer: Subject<string>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(properties: WindowProperties) {\n super();\n this.observer = new Subject();\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.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 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 if (!this.config.isModal) {\n this.container.addEventListener('click', this.mouseClickHandlerProxy, true);\n this.container.addEventListener('mousedown', this.mouseDownHandlerProxy);\n }\n }\n\n protected commitIsBlinkProperties(): void {}\n protected commitIsShakingProperties(): void {}\n protected commitIsDisabledProperties(): void {}\n protected commitIsMinimizedProperties(): void {}\n\n protected getConfig(): WindowConfig {\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 return !this.isWasOnTop;\n }\n\n private stopBlinkIfNeed(): void {\n this.isBlink = false;\n if (!this.blinkTimer) {\n return;\n }\n clearInterval(this.blinkTimer);\n this.blinkTimer = null;\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\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 clearInterval(this.blinkTimer);\n this.blinkTimer = null;\n\n clearInterval(this.shakeTimer);\n this.shakeTimer = null;\n\n clearTimeout(this.resizeTimer);\n this.resizeTimer = null;\n }\n\n public blink(): void {\n clearInterval(this.blinkTimer);\n this.blinkTimer = setInterval(this.blinkToggle, WindowImpl.BLINK_DELAY);\n }\n\n public shake(): void {\n if (this.isShaking) {\n return;\n }\n this.isShaking = true;\n clearInterval(this.shakeTimer);\n this.shakeTimer = setInterval(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.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.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(): WindowConfig {\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 clearInterval(this.blinkTimer);\n this.isBlink = false;\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.commitIsMinimizedProperties();\n this.emit(WindowEvent.MINIMIZED_CHANGED);\n this.stopBlinkIfNeed();\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.commitIsDisabledProperties();\n this.emit(WindowEvent.DISABLED_CHANGED);\n }\n}\n","import { Observable, Subject, takeUntil, Subscription } from 'rxjs';\nimport * as _ from 'lodash';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { WindowConfig } from '../window/WindowConfig';\nimport { IWindow, WindowEvent } from '../window/IWindow';\nimport { IWindowContent } from '../window/IWindowContent';\nimport { WindowProperties } from '../window/WindowProperties';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowImpl } from '../window/WindowImpl';\n\nexport class BottomSheetImpl<T = any> extends DestroyableContainer implements IWindow {\n // --------------------------------------------------------------------------\n //\n // Constants\n //\n // --------------------------------------------------------------------------\n\n public static BLINK_DELAY = 500;\n public static SHAKE_DELAY = 500;\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n private _isBlink: boolean = false;\n private blinkTimer: any;\n\n private _isDisabled: boolean = false;\n private _wrapper: HTMLElement;\n private _backdrop: HTMLElement;\n private _container: HTMLElement;\n\n protected properties: WindowProperties;\n\n protected subscription: Subscription;\n protected observer: Subject<string>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(properties: WindowProperties) {\n super();\n this.observer = new Subject();\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.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 // 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 blinkToggle = (): void => {\n this.isBlink = !this.isBlink;\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 if (!this.config.isModal) {\n this.container.addEventListener('click', this.mouseClickHandlerProxy, true);\n this.container.addEventListener('mousedown', this.mouseDownHandlerProxy);\n }\n }\n\n protected commitIsBlinkProperties(): void {}\n protected commitIsDisabledProperties(): void {}\n\n protected getConfig(): WindowConfig {\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 return false;\n }\n\n private stopBlinkIfNeed(): void {\n this.isBlink = false;\n if (!this.blinkTimer) {\n return;\n }\n clearInterval(this.blinkTimer);\n this.blinkTimer = null;\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\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 clearInterval(this.blinkTimer);\n this.blinkTimer = null;\n }\n\n public blink(): void {\n clearInterval(this.blinkTimer);\n this.blinkTimer = setInterval(this.blinkToggle, WindowImpl.BLINK_DELAY);\n }\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 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.commitIsBlinkProperties();\n }\n\n protected get isShaking(): boolean {\n return false;\n }\n protected set isShaking(value: boolean) {}\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(): WindowConfig {\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 false;\n }\n public set isOnTop(value: boolean) {}\n\n public get isMinimized(): boolean {\n return false;\n }\n public set isMinimized(value: boolean) {}\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.commitIsDisabledProperties();\n this.emit(WindowEvent.DISABLED_CHANGED);\n }\n}\n","import { AfterViewInit, Component, ElementRef, Injectable } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { ViewUtil } from '../../util/ViewUtil';\nimport { IWindow } from '../IWindow';\n\n@Component({ template: '' })\nexport 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 (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 (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\n this.destroyChildren();\n\n this.element = null;\n this.window = null;\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 '../../../util/ViewUtil';\nimport { WindowElement } from '../../../window/component/WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-bottom-sheet-close-element',\n styleUrls: ['bottom-sheet-close-element.component.scss'],\n template: ''\n})\nexport class BottomSheetCloseElementComponent 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(BottomSheetCloseElementComponent.ICON_VALUE)) {\n ViewUtil.setProperty(this.nativeElement, 'innerHTML', BottomSheetCloseElementComponent.ICON_VALUE);\n }\n if (!_.isNil(BottomSheetCloseElementComponent.ICON_CLASS)) {\n ViewUtil.addClasses(this.nativeElement, BottomSheetCloseElementComponent.ICON_CLASS);\n }\n ViewUtil.addClass(this.nativeElement, 'mouse-active');\n this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n super.destroyChildren();\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent): void => {\n event.stopPropagation();\n if (!_.isNil(this.window)) {\n this.window.close();\n }\n };\n}\n","import { ComponentFactoryResolver, ComponentRef, ViewContainerRef } from '@angular/core';\nimport { APPLICATION_INJECTOR } from '../../ApplicationInjector';\nimport { ViewUtil } from '../../util/ViewUtil';\nimport { BottomSheetImpl } from '../BottomSheetImpl';\nimport { BottomSheetCloseElementComponent } from './bottom-sheet-close-element/bottom-sheet-close-element.component';\n\nexport class BottomSheetBaseComponent extends BottomSheetImpl {\n // --------------------------------------------------------------------------\n //\n // Static Properties\n //\n // --------------------------------------------------------------------------\n\n public static CLOSE_COMPONENT = BottomSheetCloseElementComponent;\n\n // --------------------------------------------------------------------------\n //\n // Properties Methods\n //\n // --------------------------------------------------------------------------\n\n protected closeWindow: ComponentRef<any>;\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setProperties(): void {\n super.setProperties();\n this.createWindowComponents();\n }\n\n protected createWindowComponents(): void {\n if (!(this.content.container instanceof ViewContainerRef)) {\n return;\n }\n if (!this.config.disableClose && !this.closeWindow) {\n let factory = this.resolver.resolveComponentFactory(BottomSheetBaseComponent.CLOSE_COMPONENT);\n this.closeWindow = this.content.container.createComponent(factory);\n this.closeWindow.instance.window = this;\n }\n }\n\n protected commitIsBlinkProperties(): void {\n ViewUtil.toggleClass(this.container, this.blinkClass, this.isBlink);\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 protected commitIsShakingProperties(): void {\n ViewUtil.toggleClass(this.container, this.shakingClass, this.isShaking);\n }\n\n protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n if (!super.isNeedClickStopPropagation(event)) {\n return false;\n }\n if (this.closeWindow && this.closeWindow.location.nativeElement === event.target) {\n return false;\n }\n return true;\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Properties\n //\n // --------------------------------------------------------------------------\n\n protected get resolver(): ComponentFactoryResolver {\n return APPLICATION_INJECTOR().get(ComponentFactoryResolver);\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 // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n // Components will destroy automatically\n this.closeWindow = null;\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Destroyable } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { Observable, Subject } from 'rxjs';\nimport { CookieService } from '../cookie/CookieService';\nimport { IQuestion, IQuestionOptions, QuestionMode } from '../question/IQuestion';\nimport { QuestionManager } from '../question/QuestionManager';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowQuestionComponent } from './component/window-question/window-question.component';\nimport { WindowBaseComponent } from './component/WindowBaseComponent';\nimport { IWindow, WindowEvent } from './IWindow';\nimport { IWindowContent } from './IWindowContent';\nimport { WindowAlign, WindowConfig, WindowConfigOptions } from './WindowConfig';\nimport { WindowFactory } from './WindowFactory';\n\n@Injectable({ providedIn: 'root' })\nexport class WindowService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public factory: WindowFactory<IWindow>;\n public questionComponent: ComponentType<IWindowContent>;\n public isNeedCheckPositionAfterOpen: boolean = true;\n\n protected dialog: MatDialog;\n protected language: LanguageService;\n\n private _windows: Map<WindowConfig, IWindowContent>;\n\n private observer: Subject<ObservableData<WindowServiceEvent, IWindow>>;\n private properties: PropertiesManager;\n\n public gapX: number = 25;\n public gapY: number = 25;\n\n public minWidth: number = 100;\n public minHeight: number = 100;\n\n public paddingTop: number = 25;\n public paddingLeft: number = 25;\n public paddingRight: number = 25;\n public paddingBottom: number = 25;\n\n public defaultVerticalAlign: WindowAlign = WindowAlign.CENTER;\n public defaultHorizontalAlign: WindowAlign = WindowAlign.CENTER;\n\n public topZIndex: number = 999;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(dialog: MatDialog, language: LanguageService, cookies: CookieService) {\n super();\n this._windows = new Map();\n\n this.dialog = dialog;\n this.language = language;\n this.observer = new Subject();\n this.properties = new PropertiesManager(cookies);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private sortFunction(first: IWindow, second: IWindow): number {\n let firstIndex = first.container ? parseInt(ViewUtil.getStyle(first.container.parentElement, 'zIndex'), 10) : -1;\n let secondIndex = second.container ? parseInt(ViewUtil.getStyle(second.container.parentElement, 'zIndex'), 10) : -1;\n return firstIndex > secondIndex ? -1 : 1;\n }\n\n private updateTop(): void {\n let zIndex = 0;\n let topWindow: IWindow = null;\n\n for (let window of this.windowsArray) {\n if (_.isNil(window.container)) {\n continue;\n }\n let index = parseInt(ViewUtil.getStyle(window.container.parentElement, 'zIndex'), 10);\n if (zIndex >= index) {\n continue;\n }\n zIndex = index;\n topWindow = window;\n }\n\n if (_.isNil(topWindow) || topWindow.isOnTop) {\n return;\n }\n topWindow.isOnTop = true;\n this.observer.next(new ObservableData(WindowServiceEvent.SETTED_ON_TOP, topWindow));\n }\n\n private setWindowOnTop(topWindow: IWindow): void {\n let currentIndex = this.topZIndex - 2;\n for (let window of this.windowsArray) {\n if (_.isNil(window.container)) {\n continue;\n }\n window.isOnTop = window === topWindow;\n\n let zIndex = window.isOnTop ? this.topZIndex : currentIndex--;\n ViewUtil.setStyle(window.backdrop, 'zIndex', zIndex);\n ViewUtil.setStyle(window.wrapper, 'zIndex', zIndex);\n }\n\n this.windowsArray.sort(this.sortFunction);\n this.observer.next(new ObservableData(WindowServiceEvent.SETTED_ON_TOP, topWindow));\n }\n\n private checkPosition(item: IWindow): void {\n while (this.hasSamePosition(item)) {\n item.move(item.getX() + this.gapX, item.getY() + this.gapY);\n }\n }\n\n private hasSamePosition(itemWindow: IWindow): boolean {\n let x = itemWindow.getX();\n let y = itemWindow.getY();\n\n let result = false;\n this.windowsArray.forEach(window => {\n if (window !== itemWindow && x === window.getX() && y === window.getY()) {\n result = true;\n }\n });\n return result;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tSetters Methods\n //\n // --------------------------------------------------------------------------\n\n private add(config: WindowConfig, content: IWindowContent): void {\n this._windows.set(config, content);\n this.observer.next(new ObservableData(WindowServiceEvent.OPENED, content.window));\n }\n\n private remove(config: WindowConfig): void {\n let window = this._windows.get(config);\n if (!window) {\n return null;\n }\n\n window.close();\n this._windows.delete(config);\n this.observer.next(new ObservableData(WindowServiceEvent.CLOSED, window.window));\n }\n\n private 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 private setDefaultProperties(config: WindowConfig): void {\n if (!config.verticalAlign) {\n config.verticalAlign = this.defaultVerticalAlign;\n }\n if (!config.horizontalAlign) {\n config.horizontalAlign = this.defaultHorizontalAlign;\n }\n\n if (_.isNaN(config.defaultMinWidth)) {\n config.defaultMinWidth = this.minWidth;\n }\n if (_.isNaN(config.defaultMinHeight)) {\n config.defaultMinHeight = this.minHeight;\n }\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 if (config.propertiesId) {\n this.properties.load(config.propertiesId, config);\n }\n\n config.setDefaultProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public open<T extends IWindowContent>(component: ComponentType<T>, config: WindowConfig): T {\n let window: IWindow<T> = null;\n if (config.id) {\n window = this.getById(config.id);\n if (window) {\n return window.content as T;\n }\n }\n\n this.setDefaultProperties(config);\n\n // let dialog = this.dialog as any;\n // dialog._getOverlayState = config.isModal ? dialog.getOverlayStateModal : dialog.getOverlayStateNonModal;\n\n let reference: MatDialogRef<IWindowContent> = this.dialog.open(component, config);\n window = this.factory.create({ config, reference, overlay: (reference as any)._overlayRef });\n\n let subscription = window.events.subscribe(event => {\n switch (event) {\n case WindowEvent.OPENED:\n this.add(config, reference.componentInstance);\n this.setWindowOnTop(window);\n if (this.isNeedCheckPositionAfterOpen) {\n this.checkPosition(window);\n }\n break;\n\n case WindowEvent.CLOSED:\n subscription.unsubscribe();\n this.remove(config);\n if (window.isOnTop && this.windows.size > 0) {\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 window.content as T;\n }\n\n public get(value: WindowId): IWindowContent {\n let id = value.toString();\n if (value instanceof WindowConfig) {\n id = value.id;\n }\n if (!id) {\n return null;\n }\n let window = this.getById(id);\n if (_.isNil(window)) {\n return null;\n }\n return window.content;\n }\n\n public has(value: WindowId): boolean {\n return !_.isNil(this.get(value));\n }\n\n public setOnTop(value: WindowId): boolean {\n let content = this.get(value);\n if (!content) {\n return false;\n }\n content.window.setOnTop();\n return true;\n }\n\n public removeAll(): void {\n this.windowsArray.forEach(window => window.close());\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.removeAll();\n\n if (!_.isNil(this.observer)) {\n this.observer.complete();\n this.observer = null;\n }\n\n if (!_.isNil(this.properties)) {\n this.properties.destroy();\n this.properties = null;\n }\n\n this.factory = null;\n this.properties = null;\n this.questionComponent = null;\n\n this.dialog = null;\n this.language = null;\n\n this._windows = 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: WindowConfig<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 // \tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n private get windowsArray(): Array<IWindow> {\n return Array.from(this.windows.values()).map(item => item.window);\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<WindowConfig, IWindowContent> {\n return this._windows;\n }\n}\n\nexport class PropertiesManager 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(name: string, config: WindowConfig): void {\n let item = this.cookies.getObject(name + 'Window') as any;\n if (!item) {\n return;\n }\n if (item.hasOwnProperty('width')) {\n config.defaultWidth = item.width;\n }\n if (item.hasOwnProperty('height')) {\n config.defaultHeight = item.height;\n }\n }\n\n public save(name: string, window: IWindow): void {\n this.cookies.putObject(name + 'Window', {\n width: window.getWidth(),\n height: window.getHeight()\n });\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.cookies = null;\n }\n}\n\nexport type WindowId = string | WindowConfig;\n\nexport enum WindowServiceEvent {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n SETTED_ON_TOP = 'SETTED_ON_TOP'\n}\n","import { AfterViewInit, ElementRef, ViewContainerRef, Inject, Optional, Component, InjectionToken, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { IWindow, WindowEvent } from './IWindow';\nimport { WindowConfig } from './WindowConfig';\nimport * as _ from 'lodash';\n\n@Component({ template: '' })\nexport abstract class IWindowContent<T = any> extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n // Properties=\n //\n // --------------------------------------------------------------------------\n\n protected _window: IWindow<T>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Optional() @Inject(WINDOW_CONTENT_CONTAINER) public container: WindowContentContainer) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitWindowProperties(): void {\n this.commitConfigProperties();\n }\n\n protected commitConfigProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n this.emit(WindowEvent.CONTENT_READY);\n }\n\n public ngOnDestroy(): void {\n // do nothing, window will destroy content after closing\n }\n\n public blink(): void {\n if (!_.isNil(this.window)) {\n this.window.blink();\n }\n }\n\n public shake(): void {\n if (!_.isNil(this.window)) {\n this.window.shake();\n }\n }\n\n public emit(event: string): void {\n if (!_.isNil(this.window)) {\n this.window.emit(event);\n }\n }\n\n public close(): 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\n this.window = null;\n this.container = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Proxy Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get data(): T {\n return !_.isNil(this.config) ? this.config.data : null;\n }\n\n public get isOnTop(): boolean {\n return !_.isNil(this.window) ? this.window.isOnTop : false;\n }\n\n public get isMinimized(): boolean {\n return !_.isNil(this.window) ? this.window.isMinimized : false;\n }\n\n public get events(): Observable<string> {\n return !_.isNil(this.window) ? this.window.events : null;\n }\n\n public get isDisabled(): boolean {\n return !_.isNil(this.window) ? this.window.isDisabled : false;\n }\n @Input()\n public set isDisabled(value: boolean) {\n if (!_.isNil(this.window)) {\n this.window.isDisabled = value;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get element(): ElementRef {\n if (_.isNil(this.container)) {\n return null;\n }\n return this.container instanceof ViewContainerRef ? this.container.element : this.container;\n }\n\n public get config(): WindowConfig<T> {\n return !_.isNil(this.window) ? this.window.config : null;\n }\n\n public get window(): IWindow<T> {\n return this._window;\n }\n @Input()\n public set window(value: IWindow<T>) {\n if (value === this._window) {\n return;\n }\n this._window = value;\n if (!_.isNil(value)) {\n this.commitWindowProperties();\n }\n }\n}\n\nexport type WindowContentContainer = ElementRef | ViewContainerRef;\nexport const WINDOW_CONTENT_CONTAINER = new InjectionToken<WindowContentContainer>('WINDOW_CONTENT_CONTAINER');\n","import { QuestionManager } from '../../question/QuestionManager';\nimport { IWindowContent } from '../IWindowContent';\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 { Component, ViewContainerRef } from '@angular/core';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowQuestionBaseComponent } from '../WindowQuestionBaseComponent';\nimport * as _ from 'lodash';\n\n@Component({\n templateUrl: 'window-question.component.html'\n})\nexport class WindowQuestionComponent extends WindowQuestionBaseComponent {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public text: string;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(container: ViewContainerRef, protected language: LanguageService) {\n super(container);\n ViewUtil.addClasses(container.element, 'd-block');\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitConfigProperties(): void {\n super.commitConfigProperties();\n\n if (!_.isNil(this.data.text)) {\n this.text = this.data.text.replace(/(?:\\r\\n|\\r|\\n)/g, `<br/>`);\n }\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","<p class=\"text m-4 text-center mouse-inactive text-word-wrap-break-word\" [innerHTML]=\"text\"></p>\n\n<div class=\"text-center border-sm-top p-3\">\n\n <button (click)=\"data?.closeClickHandler()\" mat-stroked-button *ngIf=\"data?.isInfo\">\n <span [innerHTML]=\"data?.closeText\"></span>\n </button>\n\n <button class=\"mr-3 me-3\" (click)=\"data?.yesClickHandler()\" color=\"primary\" mat-stroked-button *ngIf=\"data?.isQuestion\">\n <span [innerHTML]=\"data?.yesText\"></span>\n </button>\n\n <button (click)=\"data?.notClickHandler()\" mat-stroked-button *ngIf=\"data?.isQuestion\">\n <span [innerHTML]=\"data?.notText\"></span>\n </button>\n\n</div>","import { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { MatBottomSheet, MatBottomSheetConfig, MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { Destroyable } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { Observable, Subject } from 'rxjs';\nimport { WindowFactory } from '../window/WindowFactory';\nimport { IWindow } from '../window/IWindow';\nimport { BottomSheetBaseComponent } from './component/BottomSheetBaseComponent';\nimport { WindowConfig, WindowConfigOptions } from '../window/WindowConfig';\nimport { IWindowContent } from '../window/IWindowContent';\nimport { WindowServiceEvent } from '../window/WindowService';\nimport { QuestionManager } from '../question/QuestionManager';\nimport { IQuestion, IQuestionOptions, QuestionMode } from '../question/IQuestion';\nimport { WindowQuestionComponent } from '../window/component/window-question/window-question.component';\n\n@Injectable({ providedIn: 'root' })\nexport class BottomSheetService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public factory: WindowFactory<IWindow>;\n public questionComponent: ComponentType<IWindowContent>;\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(dialog: MatBottomSheet, language: LanguageService) {\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 // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public open<T extends IWindowContent>(component: ComponentType<T>, config: WindowConfig): T {\n let reference: MatBottomSheetRef<T> = this.dialog.open(component, config as MatBottomSheetConfig<T>);\n\n let window = this.factory.create({ config, reference: reference as any, overlay: (reference as any)._overlayRef });\n let subscription = window.events.subscribe(event => {\n switch (event) {\n case WindowServiceEvent.OPENED:\n this.observer.next(new ObservableData(WindowServiceEvent.OPENED, window));\n break;\n\n case WindowServiceEvent.CLOSED:\n subscription.unsubscribe();\n this.observer.next(new ObservableData(WindowServiceEvent.CLOSED, window));\n break;\n }\n });\n return window.content as T;\n }\n\n public removeAll(): void {}\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.removeAll();\n\n if (!_.isNil(this.observer)) {\n this.observer.complete();\n this.observer = null;\n }\n\n this.factory = null;\n this.questionComponent = null;\n\n this.dialog = null;\n this.language = 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: WindowConfig<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 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 { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { LanguageModule } from '../language/LanguageModule';\nimport { BottomSheetService } from './BottomSheetService';\nimport { MatBottomSheet, MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { BottomSheetCloseElementComponent } from './component/bottom-sheet-close-element/bottom-sheet-close-element.component';\n\nconst IMPORTS = [CommonModule, FormsModule, MatBottomSheetModule, MatButtonModule, LanguageModule];\nconst ENTRY_COMPONENTS = [BottomSheetCloseElementComponent];\nconst DECLARATIONS = [...ENTRY_COMPONENTS];\n\nconst EXPORTS = [...DECLARATIONS];\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS\n})\nexport class BottomSheetModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(): ModuleWithProviders<BottomSheetModule> {\n return {\n ngModule: BottomSheetService,\n providers: [\n {\n provide: BottomSheetService,\n deps: [MatBottomSheet, LanguageService],\n useClass: BottomSheetService\n }\n ]\n };\n }\n}\n","import { MatDialogRef } from '@angular/material/dialog';\nimport { Observable, Subject, filter, takeUntil } from 'rxjs';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowEvent } from '../window/IWindow';\nimport { WindowBase } from '../window/WindowBase';\nimport { INotification, NotificationEvent } from './INotification';\nimport { INotificationContent } from './INotificationContent';\nimport { NotificationConfig } from './NotificationConfig';\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;\n\n protected timer: any;\n protected observer: Subject<string>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(properties: NotificationProperties) {\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.observer\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 getConfig(): NotificationConfig {\n return this.properties.config;\n }\n protected getContainer(): HTMLElement {\n return this.container;\n }\n protected getReference(): MatDialogRef<INotificationContent> {\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(): NotificationConfig {\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 { AfterViewInit, Component, Directive, Injectable, Input, ViewContainerRef } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { Observable } from 'rxjs';\nimport { WindowEvent } from '../window/IWindow';\nimport { INotification } from './INotification';\nimport { NotificationConfig } from './NotificationConfig';\nimport * as _ from 'lodash';\n\n@Component({ template: '' })\nexport abstract class INotificationContent<T = any> extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected timer: any;\n protected _config: NotificationConfig<T>;\n protected _notification: INotification<T>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public container: ViewContainerRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitNotificationProperties(): void {\n this.config = this.notification.config;\n }\n\n protected commitConfigProperties(): void {\n this.clearTimer();\n if (this.config.closeDuration > 0) {\n this.timer = setTimeout(this.timerHandler, this.config.closeDuration);\n }\n }\n\n protected clearTimer(): void {\n if (!_.isNil(this.timer)) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n protected timerHandler = (): void => this.handleCloseClick();\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public close(): void {\n if (!_.isNil(this.notification)) {\n this.notification.close();\n }\n }\n\n public remove(): void {\n if (!_.isNil(this.notification)) {\n this.notification.remove();\n }\n }\n\n public emit(event: string): void {\n if (!_.isNil(this.notification)) {\n this.notification.emit(event);\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.clearTimer();\n this.config = null;\n this.notification = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n this.emit(WindowEvent.CONTENT_READY);\n }\n\n public handleCloseClick(): void {\n this.clearTimer();\n if (!_.isNil(this.config) && this.config.isRemoveAfterClose) {\n this.remove();\n } else {\n this.close();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Proxy Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get data(): T {\n return this.config ? this.config.data : null;\n }\n\n public get events(): Observable<string> {\n return this.notification ? this.notification.events : null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get notification(): INotification<T> {\n return this._notification;\n }\n public set notification(value: INotification<T>) {\n if (value === this._notification) {\n return;\n }\n this._notification = value;\n if (this._notification) {\n this.commitNotificationProperties();\n }\n }\n\n @Input()\n public set config(value: NotificationConfig<T>) {\n if (value === this._config) {\n return;\n }\n this._config = value;\n if (this._config) {\n this.commitConfigProperties();\n }\n }\n public get config(): NotificationConfig<T> {\n return this._config;\n }\n}\n","import { Component, HostListener, Injectable } from '@angular/core';\nimport { INotificationContent } from '../../notification/INotificationContent';\nimport { QuestionManager } from '../../question/QuestionManager';\nimport { ViewUtil } from '../../util/ViewUtil';\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 { Component, ViewContainerRef } from '@angular/core';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { NotificationService } from '../../NotificationService';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { NotificationQuestionBaseComponent } from '../NotificationQuestionBaseComponent';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-notification',\n templateUrl: 'notification.component.html',\n styleUrls: ['notification.component.scss']\n})\nexport class NotificationComponent extends NotificationQuestionBaseComponent {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(container: ViewContainerRef, private language: LanguageService, private notifications: NotificationService) {\n super(container);\n ViewUtil.addClasses(container.element, 'd-block');\n ViewUtil.setAttribute(container.element, 'tabindex', '-1');\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitConfigProperties(): void {\n super.commitConfigProperties();\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","<p class=\"text m-4 text-center mouse-inactive text-word-wrap-break-word\" [innerHTML]=\"data?.text\"></p>\n\n<div class=\"text-center border-sm-top p-3\" *ngIf=\"data?.isQuestion\">\n\n <button class=\"mr-3 me-3\" (click)=\"data?.yesClickHandler()\" tabindex=\"-1\" color=\"primary\" mat-stroked-button>\n <span [innerHTML]=\"data?.yesText\"></span>\n </button>\n\n <button (click)=\"data?.notClickHandler()\" tabindex=\"-1\" mat-stroked-button>\n <span [innerHTML]=\"data?.notText\"></span>\n </button>\n\n</div>","import { INotification } from './INotification';\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 { 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/language';\nimport { LanguageModule } from '../language/LanguageModule';\nimport { NotificationBaseComponent } from './component/NotificationBaseComponent';\nimport { NotificationComponent } from './component/notification/notification.component';\nimport { NotificationFactory } from './NotificationFactory';\nimport { NotificationService } from './NotificationService';\n\nconst IMPORTS = [CommonModule, FormsModule, MatDialogModule, MatButtonModule, LanguageModule];\nconst ENTRY_COMPONENTS = [];\nconst DECLARATIONS = [NotificationComponent, ...ENTRY_COMPONENTS];\n\nconst EXPORTS = [...DECLARATIONS];\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS\n})\nexport class NotificationModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(): ModuleWithProviders<NotificationModule> {\n return {\n ngModule: NotificationService,\n providers: [\n {\n provide: NotificationService,\n deps: [MatDialog, LanguageService],\n useFactory: notificationServiceFactory\n }\n ]\n };\n }\n}\n\nexport function notificationServiceFactory(dialog: MatDialog, language: LanguageService): NotificationService {\n let item = new NotificationService(dialog, language);\n item.factory = new NotificationFactory(NotificationBaseComponent);\n item.questionComponent = NotificationComponent;\n return item;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viCamelCase'\n})\nexport class CamelCasePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any): string {\n if (!value) {\n return '---';\n }\n return _.camelCase(value);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport numeral from 'numeral';\n\n@Pipe({\n name: 'viFinance'\n})\nexport class FinancePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = '0,0';\n\n // --------------------------------------------------------------------------\n //\n //\tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static format(value: number | string, format: string): string {\n value = Number(value);\n try {\n return numeral(value).format(format);\n } catch (error) {\n return value.toString();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: number | string, format?: string, isNeedPlus: boolean = false): string {\n value = Number(value);\n if (_.isNaN(value)) {\n return '---';\n }\n if (_.isNil(format)) {\n format = FinancePipe.DEFAULT_FORMAT;\n }\n if (isNeedPlus) {\n format = '+' + format;\n }\n return FinancePipe.format(value, format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { Moment } from 'moment';\nimport moment from 'moment';\nimport { GetFilterableCondition, RemoveFilterableCondition } from '@ts-core/common/dto';\n\n@Pipe({\n name: 'viMomentDate'\n})\nexport class MomentDatePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = 'LLL';\n\n // --------------------------------------------------------------------------\n //\n //\tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static parseMoment(value: MomentAvailableType, format?: string): Moment {\n if (_.isDate(value)) {\n return moment(value);\n }\n if (_.isString(value)) {\n return moment(value, format);\n }\n if (_.isNumber(value)) {\n return moment().milliseconds(value);\n }\n return value as Moment;\n }\n\n public static fromNow(value: MomentAvailableType, format: string = 'LLL'): string {\n if (_.isNil(value)) {\n return '---';\n }\n\n let item = MomentDatePipe.parseMoment(value);\n let date = item.fromNow();\n date = date.charAt(0).toUpperCase() + date.slice(1);\n if (!_.isNil(format)) {\n date += ' (' + item.format(format) + ')';\n }\n return date;\n }\n\n public static toConditionValue(value: string | Date): string {\n if (_.isNil(value)) {\n return undefined;\n }\n value = value.toString();\n let item = MomentDatePipe.parseMoment(RemoveFilterableCondition(value));\n return item.isValid() ? `${GetFilterableCondition(value) || '='}${item.toDate().toString()}` : undefined;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: MomentAvailableType, format?: string): string {\n if (_.isNil(value)) {\n return '---';\n }\n\n let moment = MomentDatePipe.parseMoment(value);\n return moment.format(format || MomentDatePipe.DEFAULT_FORMAT);\n }\n}\nexport type MomentAvailableType = Date | Moment | string | number;\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { Moment } from 'moment';\nimport moment from 'moment';\nimport { MomentDatePipe } from './MomentDatePipe';\n\n@Pipe({\n name: 'viMomentAdaptiveDate'\n})\nexport class MomentDateAdaptivePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n public static HOUR_FORMAT = 'HH:ss';\n public static DAY_FORMAT = 'DD MMM HH:ss';\n public static MONTH_FORMAT = 'DD MMM HH:ss';\n public static YEAR_FORMAT = 'LLL';\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: Date | Moment): string {\n if (_.isNaN(value)) {\n return '---';\n }\n\n let item = MomentDatePipe.parseMoment(value);\n let duration = moment.duration(moment().diff(item));\n\n let format = null;\n if (Math.abs(duration.asYears()) >= 1) {\n format = MomentDateAdaptivePipe.YEAR_FORMAT;\n } else if (Math.abs(duration.asMonths()) >= 1) {\n format = MomentDateAdaptivePipe.MONTH_FORMAT;\n } else if (Math.abs(duration.asDays()) >= 1) {\n format = MomentDateAdaptivePipe.DAY_FORMAT;\n } else {\n format = MomentDateAdaptivePipe.HOUR_FORMAT;\n }\n return item.format(format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Moment } from 'moment';\nimport { MomentDatePipe } from './MomentDatePipe';\n\n@Pipe({\n name: 'viMomentDateFromNow'\n})\nexport class MomentDateFromNowPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: Date | Moment, format?: string): string {\n return MomentDatePipe.fromNow(value, format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MomentAvailableType, MomentDatePipe } from './MomentDatePipe';\nimport * as _ from 'lodash';\nimport moment from 'moment';\n\n@Pipe({\n name: 'viMomentTime'\n})\nexport class MomentTimePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = 'hh:mm:ss';\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(timeMilliseconds: number, format?: string): string {\n if (_.isNil(timeMilliseconds)) {\n return '---';\n }\n\n return moment()\n .startOf('day')\n .add(timeMilliseconds, 'milliseconds')\n .format(format || MomentTimePipe.DEFAULT_FORMAT);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viNgModelError'\n})\nexport class NgModelErrorPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: ValidationErrors): string {\n if (_.isNil(value)) {\n return null;\n }\n let keys = _.keys(value);\n if (_.isEmpty(keys)) {\n return null;\n }\n let key = keys[0];\n return this.translateError(key, value[key]);\n }\n\n public translateError(key: string, value: any): string {\n return this.language.translate('error.form.' + key, value);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected language: LanguageService) {}\n}\n","import { Pipe } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viSanitize'\n})\nexport class SanitizePipe {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private sanitizer: DomSanitizer) {}\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: string, type: string = 'html'): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n if (_.isNil(value)) {\n return null;\n }\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error('Invalid safe type specified: ' + type);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viStartCase'\n})\nexport class StartCasePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any): string {\n if (!value) {\n return '---';\n }\n return value.charAt(0).toUpperCase() + value.slice(1);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DateUtil } from '@ts-core/common/util';\nimport * as _ from 'lodash';\nimport { FinancePipe } from './FinancePipe';\n\n@Pipe({\n name: 'viTime'\n})\nexport class TimePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = '00:00:00';\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(milliseconds: number | string, format?: string): string {\n milliseconds = Number(milliseconds);\n if (_.isNaN(milliseconds)) {\n return '---';\n }\n if (_.isNil(format)) {\n format = TimePipe.DEFAULT_FORMAT;\n }\n return FinancePipe.format(milliseconds / DateUtil.MILISECONDS_SECOND, format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTruncate'\n})\nexport class TruncatePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any, maxLength?: number): string {\n if (!value) {\n return '---';\n }\n return _.truncate(value, { length: maxLength });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viPrettify'\n})\nexport class PrettifyPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static EMPTY_SYMBOL = '-';\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any): string {\n let isNil = _.isNil(value);\n if (!isNil && !_.isNumber(value)) {\n isNil = _.isEmpty(value);\n }\n return !isNil ? value : PrettifyPipe.EMPTY_SYMBOL;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {}\n}\n","import { Directive, ElementRef, HostListener, Injectable, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { Theme, ThemeAssetService, ThemeService } from '@ts-core/frontend/theme';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive()\nexport abstract class ThemeAssetDirective<T extends HTMLElement = HTMLElement> extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _name: string;\n protected _extension: string = 'png';\n\n protected _isFile: boolean = false;\n protected _isImage: boolean = false;\n protected _isVideo: boolean = false;\n protected _isSound: boolean = false;\n protected _isBackground: boolean = false;\n protected _isIgnoreTheme: boolean = true;\n\n protected source: string;\n protected element: T;\n\n private isTriedThemeDefault: boolean;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, protected theme: ThemeService, protected themeAsset: ThemeAssetService) {\n super();\n this.element = ViewUtil.parseElement(element.nativeElement) as T;\n\n this.theme.changed.pipe(takeUntil(this.destroyed)).subscribe(() => {\n this.isTriedThemeDefault = false;\n this.setSourceProperties();\n });\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected getSource(id: string): string {\n if (_.isNil(id)) {\n return null;\n }\n if (this.isImage) {\n return this.themeAsset.getImage(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isBackground) {\n return this.themeAsset.getBackground(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isSound) {\n return this.themeAsset.getSound(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isVideo) {\n return this.themeAsset.getVideo(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isFile) {\n return this.themeAsset.getFile(id, this.extension, this.isIgnoreTheme);\n }\n return this.themeAsset.getIcon(id, this.extension, this.isIgnoreTheme);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('error', ['$event'])\n private errorLoadingHandler(event: ErrorEvent): void {\n this.errorHandler(event);\n }\n\n protected errorHandler(event: ErrorEvent): void {\n if (this.isTriedThemeDefault) {\n return;\n }\n this.isTriedThemeDefault = true;\n this.source = this.getSource(this.getDefaultSourceId());\n this.commitSourceProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setSourceProperties(): void {\n this.source = this.getSource(this.getSourceId(this.theme.theme));\n this.commitSourceProperties();\n }\n\n protected getSourceId(theme: Theme): string {\n return !_.isNil(theme) ? this.name + _.capitalize(theme.name) : null;\n }\n\n protected getDefaultSourceId(): string {\n return this.themeAsset.getName(this.name, this.isIgnoreTheme);\n }\n\n protected abstract commitSourceProperties(): void;\n\n protected abstract removeSourceProperties(): void;\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.name = null;\n this.theme = null;\n this.element = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public set isSound(value: boolean) {\n if (value === this._isSound) {\n return;\n }\n this._isSound = value;\n this.setSourceProperties();\n }\n public get isSound(): boolean {\n return this._isSound;\n }\n\n @Input()\n public set isVideo(value: boolean) {\n if (value === this._isVideo) {\n return;\n }\n this._isVideo = value;\n this.setSourceProperties();\n }\n public get isVideo(): boolean {\n return this._isVideo;\n }\n\n @Input()\n public set isFile(value: boolean) {\n if (value === this._isFile) {\n return;\n }\n this._isFile = value;\n this.setSourceProperties();\n }\n public get isFile(): boolean {\n return this._isFile;\n }\n\n @Input()\n public set isImage(value: boolean) {\n if (value === this._isImage) {\n return;\n }\n this._isImage = value;\n this.setSourceProperties();\n }\n public get isImage(): boolean {\n return this._isImage;\n }\n\n @Input()\n public set isBackground(value: boolean) {\n if (value === this._isBackground) {\n return;\n }\n this._isBackground = value;\n this.setSourceProperties();\n }\n public get isBackground(): boolean {\n return this._isBackground;\n }\n\n @Input()\n public set isIgnoreTheme(value: boolean) {\n if (value === this._isIgnoreTheme) {\n return;\n }\n this._isIgnoreTheme = value;\n this.setSourceProperties();\n }\n public get isIgnoreTheme(): boolean {\n return this._isIgnoreTheme;\n }\n\n public get name(): string {\n return this._name;\n }\n @Input()\n public set name(value: string) {\n if (value === this._name) {\n return;\n }\n if (!_.isNil(this._name)) {\n this.removeSourceProperties();\n }\n this._name = value;\n if (!_.isNil(value)) {\n this.setSourceProperties();\n }\n }\n\n public get extension(): string {\n return this._extension;\n }\n @Input()\n public set extension(value: string) {\n if (value === this._extension) {\n return;\n }\n this._extension = value;\n if (!_.isNil(value)) {\n this.setSourceProperties();\n }\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend/theme';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { ThemeAssetDirective } from './ThemeAssetDirective';\n\n@Directive({\n selector: '[vi-theme-background]'\n})\nexport class ThemeAssetBackgroundDirective extends ThemeAssetDirective {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, theme: ThemeService, themeAsset: ThemeAssetService) {\n super(element, theme, themeAsset);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitSourceProperties(): void {\n let value = 'url(' + this.source + ')';\n ViewUtil.setStyle(this.element, 'backgroundImage', value);\n }\n\n protected removeSourceProperties(): void {\n ViewUtil.removeStyle(this.element, 'backgroundImage');\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend/theme';\nimport { ThemeAssetDirective } from './ThemeAssetDirective';\n\n@Directive({\n selector: '[vi-theme-image]'\n})\nexport class ThemeAssetImageDirective extends ThemeAssetDirective<HTMLImageElement> {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, theme: ThemeService, themeAsset: ThemeAssetService) {\n super(element, theme, themeAsset);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitSourceProperties(): void {\n this.element.src = this.source;\n }\n protected removeSourceProperties(): void {\n this.element.src = null;\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeService } from '@ts-core/frontend/theme';\n\n@Directive({\n selector: '[vi-theme-toggle]'\n})\nexport class ThemeToggleDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private theme: ThemeService) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('click', ['$event'])\n private clickHandler(event: MouseEvent) {\n let themes = this.theme.themes.collection;\n let length = themes.length;\n if (length < 2) {\n return;\n }\n\n let index = 0;\n if (this.theme.theme) {\n index = themes.indexOf(this.theme.theme);\n if (index < length - 1) {\n index++;\n } else {\n index = 0;\n }\n }\n\n this.theme.theme = themes[index];\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.theme = null;\n }\n}\n","import { Directive, ElementRef, Input, RendererStyleFlags2 } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeService } from '@ts-core/frontend/theme';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-theme-style]'\n})\nexport class ThemeStyleDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _key: string;\n protected _flags: RendererStyleFlags2;\n protected _styleName: string;\n\n protected element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, protected theme: ThemeService) {\n super();\n\n this.element = ViewUtil.parseElement(element.nativeElement);\n this.theme.changed.pipe(takeUntil(this.destroyed)).subscribe(() => this.stylePropertiesAdd());\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitStyleProperties(name: string, value: string): void {\n ViewUtil.setStyle(this.element, name, value, this.flags);\n }\n\n protected stylePropertiesCheck(): void {\n if (this.isNeedStyleAdd()) {\n this.stylePropertiesAdd();\n } else if (this.isNeedStyleRemove()) {\n this.stylePropertiesRemove();\n }\n }\n\n protected stylePropertiesRemove(): void {\n ViewUtil.removeStyle(this.element, this.styleName);\n }\n\n protected stylePropertiesAdd(): void {\n this.commitStyleProperties(this.styleName, this.theme.getStyle(this.key));\n }\n\n protected isNeedStyleAdd(): boolean {\n return !_.isNil(this.theme.theme) && !_.isNil(this.styleName);\n }\n\n protected isNeedStyleRemove(): boolean {\n return !_.isNil(this.styleName);\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.key = null;\n this.theme = null;\n this.element = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get flags(): RendererStyleFlags2 {\n return this._flags;\n }\n @Input()\n public set flags(value: RendererStyleFlags2) {\n if (value === this._flags) {\n return;\n }\n this._flags = value;\n this.stylePropertiesCheck();\n }\n\n public get styleName(): string {\n return this._styleName;\n }\n @Input()\n public set styleName(value: string) {\n if (value === this._styleName) {\n return;\n }\n this._styleName = value;\n this.stylePropertiesCheck();\n }\n\n public get key(): string {\n return this._key;\n }\n @Input('vi-theme-style')\n public set key(value: string) {\n if (value === this._key) {\n return;\n }\n this._key = value;\n if (!_.isNil(value)) {\n this.stylePropertiesCheck();\n }\n }\n}\n","import { Directive, ElementRef, Input, RendererStyleFlags2 } from '@angular/core';\nimport { ThemeService } from '@ts-core/frontend/theme';\nimport { ThemeStyleDirective } from './ThemeStyleDirective';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[vi-theme-style-hover]'\n})\nexport class ThemeStyleHoverDirective extends ThemeStyleDirective {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _isHover: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, theme: ThemeService) {\n super(element, theme);\n\n this.flags = RendererStyleFlags2.Important;\n this.element.addEventListener('mouseenter', this.mouseEnter, false);\n this.element.addEventListener('mouseleave', this.mouseLeave, false);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected isNeedStyleAdd(): boolean {\n return this.isHover && super.isNeedStyleAdd();\n }\n\n protected isNeedStyleRemove(): boolean {\n return !this.isHover || super.isNeedStyleRemove();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected mouseEnter = (event: MouseEvent): void => {\n this.isHover = true;\n };\n\n protected mouseLeave = (event: MouseEvent): void => {\n this.isHover = false;\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n this.element.removeEventListener('mouseenter', this.mouseEnter, false);\n this.element.removeEventListener('mouseleave', this.mouseLeave, false);\n super.destroy();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isHover(): boolean {\n return this._isHover;\n }\n public set isHover(value: boolean) {\n if (value === this._isHover) {\n return;\n }\n this._isHover = value;\n this.stylePropertiesCheck();\n }\n\n public get key(): string {\n return super.key;\n }\n @Input('vi-theme-style-hover')\n public set key(value: string) {\n super.key = value;\n }\n\n public get styleName(): string {\n return super.styleName;\n }\n @Input()\n public set styleName(value: string) {\n super.styleName = value;\n }\n\n public get flags(): RendererStyleFlags2 {\n return super.flags;\n }\n @Input()\n public set flags(value: RendererStyleFlags2) {\n super.flags = value;\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieService } from '@ts-core/frontend/cookie';\nimport { IThemeServiceOptions, ThemeService, ThemeAssetService } from '@ts-core/frontend/theme';\nimport { CookieModule } from '../cookie/CookieModule';\nimport { CookieService } from '../cookie/CookieService';\nimport { ThemeAssetBackgroundDirective } from './ThemeAssetBackgroundDirective';\nimport { ThemeAssetImageDirective } from './ThemeAssetImageDirective';\nimport { ThemeToggleDirective } from './ThemeToggleDirective';\nimport { ThemeStyleDirective } from './ThemeStyleDirective';\nimport { ThemeStyleHoverDirective } from './ThemeStyleHoverDirective';\nimport * as _ from 'lodash';\n\nlet declarations = [ThemeToggleDirective, ThemeAssetImageDirective, ThemeAssetBackgroundDirective, ThemeStyleDirective, ThemeStyleHoverDirective];\n\n@NgModule({\n imports: [CookieModule],\n declarations,\n exports: declarations\n})\nexport class ThemeModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: IThemeServiceOptions): ModuleWithProviders<ThemeModule> {\n return {\n ngModule: ThemeModule,\n providers: [\n {\n provide: THEME_OPTIONS,\n useValue: options || {}\n },\n {\n provide: ThemeService,\n deps: [CookieService, THEME_OPTIONS],\n useFactory: themeServiceFactory\n },\n {\n provide: ThemeAssetService,\n deps: [ThemeService],\n useFactory: themeAssetServiceFactory\n }\n ]\n };\n }\n}\n\nexport function themeServiceFactory(cookie: ICookieService, options?: IThemeServiceOptions): ThemeService {\n if (!_.isNil(options) && _.isNil(options.service)) {\n options.service = cookie;\n }\n return new ThemeService(options);\n}\n\nexport function themeAssetServiceFactory(theme: ThemeService): ThemeAssetService {\n return new ThemeAssetService(theme);\n}\n\nexport const THEME_OPTIONS = new InjectionToken<IThemeServiceOptions>(`THEME_OPTIONS`);\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Interactable } from '@interactjs/types';\nimport * as interact from 'interactjs';\nimport { Destroyable } from '@ts-core/common';\nimport { IWindow } from '../IWindow';\nimport { WindowDragable } from './WindowDragable';\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 { Component, ElementRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-window-close-element',\n styleUrls: ['window-close-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 this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n super.destroyChildren();\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent): void => {\n event.stopPropagation();\n if (!_.isNil(this.window)) {\n this.window.close();\n }\n };\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-window-resize-element',\n styleUrls: ['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 this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent) => {\n event.stopPropagation();\n\n if (!_.isNil(this.window)) {\n this.window.isMinimized = !this.window.isMinimized;\n }\n };\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowEvent } from '../../../window/IWindow';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-window-minimize-element',\n styleUrls: ['window-minimize-element.component.scss'],\n template: ''\n})\nexport class WindowMinimizeElementComponent extends WindowElement {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n public static ICON_CLASS: string = null;\n public static ICON_MINIMIZE_VALUE: string = null;\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 };\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.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_CLASS)) {\n ViewUtil.addClasses(this.nativeElement, WindowMinimizeElementComponent.ICON_CLASS);\n }\n\n ViewUtil.addClass(this.nativeElement, 'mouse-active');\n this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n super.destroyChildren();\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent): void => {\n event.stopPropagation();\n if (!_.isNil(this.window)) {\n this.window.isMinimized = !this.window.isMinimized;\n }\n };\n}\n","import { EdgeOptions, Interactable, InteractEvent, ResizableOptions } from '@interactjs/types';\nimport * as interact from 'interactjs';\nimport { ViewUtil } from '../../util/ViewUtil';\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 { DraggableOptions, InteractEvent } from '@interactjs/types';\nimport { ViewUtil } from '../../util/ViewUtil';\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 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 { ComponentFactoryResolver, ComponentRef, ViewContainerRef } from '@angular/core';\nimport { APPLICATION_INJECTOR } from '../../ApplicationInjector';\nimport { ViewUtil } from '../../util/ViewUtil';\nimport { WindowCloseElementComponent } from './window-close-element/window-close-element.component';\nimport { WindowMinimizeElementComponent } from './window-minimize-element/window-minimize-element.component';\nimport { WindowResizeElementComponent } from './window-resize-element/window-resize-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 RESIZE_COMPONENT = WindowResizeElementComponent;\n public static MINIMIZE_COMPONENT = WindowMinimizeElementComponent;\n\n // --------------------------------------------------------------------------\n //\n // Properties Methods\n //\n // --------------------------------------------------------------------------\n\n protected closeWindow: ComponentRef<any>;\n protected resizedWindow: ComponentRef<any>;\n protected minimizeWindow: ComponentRef<any>;\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setProperties(): void {\n super.setProperties();\n this.createWindowComponents();\n }\n\n protected createWindowComponents(): void {\n if (!(this.content.container instanceof ViewContainerRef)) {\n return;\n }\n if (!this.config.disableClose && !this.closeWindow) {\n let factory = this.resolver.resolveComponentFactory(WindowBaseComponent.CLOSE_COMPONENT);\n this.closeWindow = this.content.container.createComponent(factory);\n this.closeWindow.instance.window = this;\n }\n\n if (this.config.isResizeable && !this.resizedWindow) {\n let factory = this.resolver.resolveComponentFactory(WindowBaseComponent.RESIZE_COMPONENT);\n this.resizedWindow = this.content.container.createComponent(factory);\n this.resizedWindow.instance.window = this;\n }\n\n if (this.config.isMinimizable && !this.minimizeWindow) {\n let factory = this.resolver.resolveComponentFactory(WindowBaseComponent.MINIMIZE_COMPONENT);\n this.minimizeWindow = this.content.container.createComponent(factory);\n this.minimizeWindow.instance.window = this;\n }\n }\n\n protected commitIsBlinkProperties(): void {\n ViewUtil.toggleClass(this.container, this.blinkClass, this.isBlink);\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 protected commitIsShakingProperties(): void {\n ViewUtil.toggleClass(this.container, this.shakingClass, this.isShaking);\n }\n\n protected commitIsMinimizedProperties(): void {\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 protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n if (!super.isNeedClickStopPropagation(event)) {\n return false;\n }\n if (this.closeWindow && this.closeWindow.location.nativeElement === event.target) {\n return false;\n }\n return true;\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Properties\n //\n // --------------------------------------------------------------------------\n\n protected get resolver(): ComponentFactoryResolver {\n return APPLICATION_INJECTOR().get(ComponentFactoryResolver);\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 // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n // Components will destroy automatically\n this.closeWindow = null;\n this.resizedWindow = null;\n this.minimizeWindow = null;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { CookieModule } from '../cookie/CookieModule';\nimport { CookieService } from '../cookie/CookieService';\nimport { LanguageModule } from '../language/LanguageModule';\nimport { WindowService } from './WindowService';\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 { 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 { WindowFactory } from './WindowFactory';\nimport { WindowBaseComponent } from './component/WindowBaseComponent';\n\nconst IMPORTS = [CommonModule, FormsModule, MatButtonModule, MatDialogModule, CookieModule, LanguageModule];\nconst ENTRY_COMPONENTS = [WindowQuestionComponent, WindowCloseElementComponent, WindowResizeElementComponent, WindowMinimizeElementComponent];\nconst DECLARATIONS = [WindowDragAreaDirective, ...ENTRY_COMPONENTS];\nconst EXPORTS = [...DECLARATIONS];\n\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS\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: [MatDialog, LanguageService, CookieService],\n useFactory: windowServiceFactory\n }\n ]\n };\n }\n}\n\nexport function windowServiceFactory(dialog: MatDialog, language: LanguageService, cookies: CookieService): WindowService {\n let item = new WindowService(dialog, language, cookies);\n item.factory = new WindowFactory(WindowBaseComponent);\n item.questionComponent = WindowQuestionComponent;\n return item;\n}\n","import { MatMenuPanel, MatMenuTrigger } from '@angular/material/menu';\nimport { FlexibleConnectedPositionStrategy, PositionStrategy } from '@angular/cdk/overlay';\nimport * as _ from 'lodash';\nimport { Directive, Input } from '@angular/core';\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)) return;\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 return !_.isNil(this['_overlayRef']) ? this['_overlayRef'].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 { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ILogger, Logger, LoggerLevel } from '@ts-core/common/logger';\nimport { ICookieOptions } from '@ts-core/frontend/cookie';\nimport { ILanguageServiceOptions } from '@ts-core/frontend/language';\nimport { DefaultLogger } from '@ts-core/frontend/logger';\nimport { LoadingService, NativeWindowService } from '@ts-core/frontend/service';\nimport { IThemeServiceOptions } from '@ts-core/frontend/theme';\nimport * as _ from 'lodash';\nimport { AssetModule } from './asset/AssetModule';\nimport { CookieModule } from './cookie/CookieModule';\nimport { AspectRatioResizeDirective } from './directive/AspectRatioResizeDirective';\nimport { AutoScrollBottomDirective } from './directive/AutoScrollBottomDirective';\nimport { ClickToCopyDirective } from './directive/ClickToCopyDirective';\nimport { ClickToSelectDirective } from './directive/ClickToSelectDirective';\nimport { FocusDirective } from './directive/FocusDirective';\nimport { SelectOnFocusDirective } from './directive/SelectOnFocusDirective';\nimport { HTMLContentTitleDirective } from './directive/HTMLContentTitleDirective';\nimport { InfiniteScrollDirective } from './directive/InfiniteScrollDirective';\nimport { ResizeDirective } from './directive/ResizeDirective';\nimport { ScrollCheckDirective } from './directive/ScrollCheckDirective';\nimport { ScrollDirective } from './directive/ScrollDirective';\nimport { LanguageModule } from './language/LanguageModule';\nimport { BottomSheetModule } from './bottomSheet/BottomSheetModule';\nimport { NotificationModule } from './notification/NotificationModule';\nimport { CamelCasePipe } from './pipe/CamelCasePipe';\nimport { FinancePipe } from './pipe/FinancePipe';\nimport { MomentDateAdaptivePipe } from './pipe/MomentDateAdaptivePipe';\nimport { MomentDateFromNowPipe } from './pipe/MomentDateFromNowPipe';\nimport { MomentDatePipe } from './pipe/MomentDatePipe';\nimport { MomentTimePipe } from './pipe/MomentTimePipe';\nimport { NgModelErrorPipe } from './pipe/NgModelErrorPipe';\nimport { SanitizePipe } from './pipe/SanitizePipe';\nimport { StartCasePipe } from './pipe/StartCasePipe';\nimport { TimePipe } from './pipe/TimePipe';\nimport { TruncatePipe } from './pipe/TruncatePipe';\nimport { PrettifyPipe } from './pipe/PrettifyPipe';\nimport { ThemeModule } from './theme/ThemeModule';\nimport { WindowModule } from './window/WindowModule';\nimport { MenuTriggerForDirective } from './directive/MenuTriggerForDirective';\n\nconst IMPORTS = [CookieModule, ThemeModule, LanguageModule, AssetModule, WindowModule, NotificationModule];\n\nconst DECLARATIONS = [\n TimePipe,\n FinancePipe,\n SanitizePipe,\n TruncatePipe,\n PrettifyPipe,\n CamelCasePipe,\n StartCasePipe,\n NgModelErrorPipe,\n\n MomentDatePipe,\n MomentTimePipe,\n MomentDateFromNowPipe,\n MomentDateAdaptivePipe,\n\n FocusDirective,\n ResizeDirective,\n ScrollDirective,\n ScrollCheckDirective,\n ClickToCopyDirective,\n SelectOnFocusDirective,\n ClickToSelectDirective,\n MenuTriggerForDirective,\n InfiniteScrollDirective,\n HTMLContentTitleDirective,\n AutoScrollBottomDirective,\n AspectRatioResizeDirective\n];\n\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: [...IMPORTS, ...DECLARATIONS]\n})\nexport class VICommonModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: IVICommonOptions): ModuleWithProviders<VICommonModule> {\n return {\n ngModule: VICommonModule,\n providers: [\n LoadingService,\n NativeWindowService,\n\n { provide: VI_ANGULAR_OPTIONS, useValue: options || {} },\n { provide: Logger, deps: [VI_ANGULAR_OPTIONS], useFactory: loggerServiceFactory },\n\n ...WindowModule.forRoot().providers,\n ...BottomSheetModule.forRoot().providers,\n ...NotificationModule.forRoot().providers,\n ...CookieModule.forRoot(options).providers,\n ...ThemeModule.forRoot(options ? options.themeOptions : null).providers,\n ...LanguageModule.forRoot(options ? options.languageOptions : null).providers\n ]\n };\n }\n}\n\nexport class IVICommonOptions extends ICookieOptions {\n loggerLevel?: LoggerLevel;\n themeOptions?: IThemeServiceOptions;\n languageOptions?: ILanguageServiceOptions;\n}\n\nexport function loggerServiceFactory(options: IVICommonOptions): ILogger {\n return new DefaultLogger(!_.isNil(options.loggerLevel) ? options.loggerLevel : LoggerLevel.LOG);\n}\n\nexport const VI_ANGULAR_OPTIONS = new InjectionToken<IVICommonOptions>(`VI_ANGULAR_OPTIONS`);\n","import { Component, ElementRef, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { ViewUtil } from '../../../util/ViewUtil';\n\n@Component({\n selector: 'vi-language-selector',\n templateUrl: 'language-selector.component.html'\n})\nexport class LanguageSelectorComponent extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private _isNeedIcon: boolean = true;\n private _isNeedLabel: boolean = true;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected element: ElementRef, public language: LanguageService) {\n super();\n ViewUtil.addClasses(element, 'd-block');\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitIsNeedLabelProperties(): void {\n ViewUtil.toggleClass(this.element, 'no-label', !this.isNeedLabel);\n }\n\n protected commitIsNeedIconProperties(): void {\n ViewUtil.toggleClass(this.element, 'no-icon', !this.isNeedLabel);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isNeedIcon(): boolean {\n return this._isNeedIcon;\n }\n @Input()\n public set isNeedIcon(value: boolean) {\n if (value === this._isNeedIcon) {\n return;\n }\n this._isNeedIcon = value;\n this.commitIsNeedIconProperties();\n }\n\n public get isNeedLabel(): boolean {\n return this._isNeedLabel;\n }\n @Input()\n public set isNeedLabel(value: boolean) {\n if (value === this._isNeedLabel) {\n return;\n }\n this._isNeedLabel = value;\n this.commitIsNeedLabelProperties();\n }\n}\n","<mat-form-field class=\"d-block no-underline\" [title]=\"'general.locale' | viTranslate\">\n <mat-select [(ngModel)]=\"language.language\">\n <mat-select-trigger>\n <div class=\"d-flex text-one-line align-items-center\">\n <img class=\"mr-2 me-2 flex-shrink-0\" style=\"height: 22px; width: 24px\" [src]=\"language.language?.locale + 'Language' | viAssetIcon:'svg'\" *ngIf=\"isNeedIcon\">\n <p class=\"text-one-line mouse-inactive flex-grow-1\" [innerHTML]=\"language.language?.name\" *ngIf=\"isNeedLabel\"></p>\n </div>\n </mat-select-trigger>\n \n <mat-option *ngFor=\"let item of language.languages?.collection\" [value]=\"item\">\n <div class=\"d-flex text-one-line align-items-center\">\n <img class=\"mr-2 me-2 flex-shrink-0\" style=\"width: 24px\" [src]=\"item.locale + 'Language' | viAssetIcon:'svg'\">\n <p class=\"text-one-line mouse-inactive flex-grow-1\" [innerHTML]=\"item.name\"></p>\n </div>\n </mat-option>\n </mat-select>\n</mat-form-field>","import { Component, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ListItems } from '../../list/ListItems';\nimport { IListItem } from '../../list/IListItem';\n\n@Component({\n selector: 'vi-menu-list',\n templateUrl: 'menu-list.component.html'\n})\nexport class MenuListComponent<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public list: ListItems<IListItem<T>>;\n}\n","<ng-container *ngFor=\"let item of list?.filtered\">\n <button mat-menu-item [ngClass]=\"item.className\" (click)=\"list?.actionItem(item)\">\n <span [ngClass]=\"item.iconId\" *ngIf=\"item.iconId\"></span>\n <span [innerHTML]=\"item.label\" [title]=\"item.label\"></span>\n </button>\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ISelectListItem } from '../../list/select/ISelectListItem';\nimport { SelectListItems } from '../../list/select/SelectListItems';\n\n@Component({\n selector: 'vi-select-list',\n templateUrl: 'select-list.component.html'\n})\nexport class SelectListComponent<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public list: SelectListItems<ISelectListItem<T>>;\n}\n","<ng-container *ngFor=\"let item of list?.collection\">\n\n <mat-list-item [ngClass]=\"item.isSelected? item.selectedClassName : item.className\" *ngIf=\"item.isEnabled\" (click)=\"list.actionItem(item)\" >\n <span [ngClass]=\"item.iconId\" *ngIf=\"item.iconId\" matListIcon></span>\n <span [innerHTML]=\"item.label\" [title]=\"item.label\" matLine></span>\n </mat-list-item>\n\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\nimport { DestroyableContainer } from '@ts-core/common';\n\nimport * as _ from 'lodash';\nimport { ISelectListItem } from '../../list/select/ISelectListItem';\nimport { SelectListItems } from '../../list/select/SelectListItems';\n\n@Component({\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 protected _list: SelectListItems<ISelectListItem<T>>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitListProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public selectedTabChange(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 // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.list = 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 this._list = value;\n if (!_.isNil(value)) {\n this.commitListProperties();\n }\n }\n}\n","<mat-tab-group [ngClass]=\"className\" (selectedIndexChange)=\"list.selectedIndex = $event\" [selectedIndex]=\"list?.selectedIndex\"\n (selectedTabChange)=\"selectedTabChange($event)\">\n <ng-container *ngFor=\"let item of list?.collection\">\n <mat-tab [ngClass]=\"item.className\" [label]=\"item.label\" [disabled]=\"!item.isEnabled\" (click)=\"list?.actionItem(item)\"></mat-tab>\n </ng-container>\n</mat-tab-group>\n","import { DataSourceMapCollection, DataSourceMapCollectionEvent } from '@ts-core/common/map/dataSource';\nimport * as _ from 'lodash';\nimport { Subscription, BehaviorSubject, Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DestroyableContainer, LoadableEvent } from '@ts-core/common';\n\nexport class CdkTableDataSource<U> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected subject: BehaviorSubject<Array<U>>;\n protected subscription: Subscription;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected map: DataSourceMapCollection<U>) {\n super();\n\n this.subject = new BehaviorSubject(map.collection);\n map.events.pipe(takeUntil(this.destroyed)).subscribe(data => {\n switch (data.type) {\n case LoadableEvent.COMPLETE:\n this.parseResponse();\n break;\n case DataSourceMapCollectionEvent.DATA_LOADED_AND_PARSED:\n this.parseParsedResponse();\n break;\n }\n });\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected parseResponse(): void {\n this.subject.next(this.map.collection);\n }\n\n protected parseParsedResponse(): void {}\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.subject.complete();\n this.subject = null;\n\n this.map = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get dataSource(): Observable<Array<U>> {\n return this.subject.asObservable();\n }\n}\n","import { CdkTableDataSource } from './CdkTableDataSource';\nimport { FilterableDataSourceMapCollection } from '@ts-core/common/map/dataSource';\nimport * as _ from 'lodash';\nimport { ObjectUtil } from '@ts-core/common/util';\nimport { Sort, SortDirection } from '@angular/material/sort';\n\nexport abstract class CdkTableFilterableMapCollection<U, V> extends FilterableDataSourceMapCollection<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static getSort<U, V = any>(collection: FilterableDataSourceMapCollection<U, V>): 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 applySortEvent<U, V = any>(item: FilterableDataSourceMapCollection<U, V>, event: Sort): boolean {\n let value = undefined;\n if (event.direction === 'asc') {\n value = true;\n }\n if (event.direction === 'desc') {\n value = false;\n }\n\n if (value === item.sort[event.active]) {\n return false;\n }\n ObjectUtil.clear(item.sort);\n item.sort[event.active] = value;\n return true;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: CdkTableDataSource<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n super.initialize();\n this._table = this.getTable();\n }\n\n protected getTable(): CdkTableDataSource<U> {\n return new CdkTableDataSource(this);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public sortEventHandler(event: Sort): void {\n if (CdkTableFilterableMapCollection.applySortEvent(this, event)) {\n this.reload();\n }\n }\n\n protected sortFunction(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 // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this._table)) {\n this._table.destroy();\n this._table = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): CdkTableDataSource<U> {\n return this._table;\n }\n}\n","import { Component, EventEmitter, Injectable, Input, Output } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ICdkTableRow } from './row/ICdkTableRow';\nimport { ICdkTableColumn } from './column/ICdkTableColumn';\nimport { CdkTablePaginableMapCollection } from './CdkTablePaginableMapCollection';\nimport { CdkTableFilterableMapCollection } from './CdkTableFilterableMapCollection';\nimport { SortDirection } from '@angular/material/sort';\nimport { FilterableDataSourceMapCollection } from '@ts-core/common/map/dataSource';\nimport { CdkTablePaginableBookmarkMapCollection } from './CdkTablePaginableBookmarkMapCollection';\n\n@Component({ template: '' })\nexport abstract class CdkTableBaseComponent<\n T extends CdkTablePaginableMapCollection<U, V> | CdkTableFilterableMapCollection<U, V> | CdkTablePaginableBookmarkMapCollection<U, V>,\n U,\n V\n> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: T;\n protected _settings: ICdkTableSettings<U>;\n protected _rows: ICdkTableRow<U>;\n protected _columns: Array<ICdkTableColumn<U>>;\n protected _columnNames: Array<keyof U>;\n\n protected _selectedRow: U;\n protected _selectedRows: Array<U>;\n\n @Output()\n public rowClicked: EventEmitter<ICdkTableRowEvent<U>>;\n @Output()\n public cellClicked: EventEmitter<ICdkTableCellEvent<U>>;\n\n public sortActive: string;\n public sortDirection: SortDirection;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n\n this._columnNames = [];\n\n this.settings = {};\n this.rowClicked = new EventEmitter();\n this.cellClicked = new EventEmitter();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitTableProperties(): void {\n let sort = CdkTableFilterableMapCollection.getSort(this.table as FilterableDataSourceMapCollection<U, V>);\n if (!_.isNil(sort)) {\n this.sortActive = sort.active.toString();\n this.sortDirection = sort.direction;\n }\n\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 if (value !== this._columnNames) {\n this._columnNames = value;\n }\n }\n\n protected commitSelectedRowsProperties(): void {\n this._selectedRow = !_.isEmpty(this.selectedRows) && this.selectedRows.length === 1 ? this.selectedRows[0] : null;\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 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.selectedRows = 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 // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): T {\n return this._table;\n }\n @Input()\n public set table(value: T) {\n if (value === this._table) {\n return;\n }\n this._table = value;\n if (!_.isNil(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.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 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 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 if (!_.isNil(value)) {\n this.commitSettingsProperties();\n }\n }\n\n public get columnNames(): Array<keyof U> {\n return this._columnNames;\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 isInteractive?: boolean;\n\n rows?: ICdkTableRow<U>;\n columns?: Array<ICdkTableColumn<U>>;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\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 * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\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 * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\n\n@Pipe({\n name: 'viCdkTableCellClassName'\n})\nexport class CdkTableCellClassNamePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform<U>(column: ICdkTableColumn<U>): string {\n return column.isMultiline ? 'text-multi-line' : 'text-one-line';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\n\n@Pipe({\n name: 'viCdkTableColumnValue'\n})\nexport class CdkTableColumnValuePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform<U>(item: U, column: ICdkTableColumn<U>): string | number | U[keyof U] {\n return !_.isNil(column) && !_.isNil(column.format) ? column.format(item, column) : item[column.name];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableSettings } from '../CdkTableBaseComponent';\nimport { ICdkTableRow } from './ICdkTableRow';\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 * as _ from 'lodash';\nimport { ICdkTableSettings } from '../CdkTableBaseComponent';\nimport { ICdkTableRow } from './ICdkTableRow';\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>, isInteractive?: boolean): { [key: string]: any } {\n return !_.isNil(row) && !_.isNil(row.styleName) ? row.styleName(item, selectedRows) : null;\n }\n}\n","import * as _ from 'lodash';\nimport { CdkTableBaseComponent } from '../CdkTableBaseComponent';\nimport { CdkTablePaginableMapCollection } from '../CdkTablePaginableMapCollection';\nimport { Component, Input, ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\n\n@Component({\n selector: 'vi-cdk-table-paginable',\n templateUrl: 'cdk-table-paginable.component.html'\n})\nexport class CdkTablePaginableComponent<U = any, V = any> extends CdkTableBaseComponent<CdkTablePaginableMapCollection<U, V>, U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _paginator: 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 }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitPaginatorProperties(): void {}\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 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 class=\"flex-grow-1 vertical-scroll-only\"\n matSort\n [dataSource]=\"table?.table?.dataSource\"\n [trackBy]=\"table.trackByFn\"\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [class.mat-nav-list]=\"settings?.isInteractive\"\n (matSortChange)=\"table.sortEventHandler($event)\"\n>\n <ng-container *ngFor=\"let column of columns; trackBy: columnTrackBy\">\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 [ngClass]=\"column.headerClassName\"\n *matHeaderCellDef\n >\n <span [innerHTML]=\"column.headerId | viTranslate\"></span>\n </mat-header-cell>\n\n <mat-cell\n class=\"p-2\"\n (click)=\"cellClickHandler(row, column, $event)\"\n *matCellDef=\"let row\"\n [ngClass]=\"row | viCdkTableColumnClassName: column\"\n [ngStyle]=\"row | viCdkTableColumnStyleName: column\"\n >\n <span [ngClass]=\"column | viCdkTableCellClassName\" [vi-html-content-title]=\"row | viCdkTableColumnValue: column\"></span>\n </mat-cell>\n </ng-container>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columnNames\"></mat-header-row>\n\n <mat-row\n class=\"mat-list-item\"\n *matRowDef=\"let row; columns: columnNames\"\n [ngClass]=\"row | viCdkTableRowClassName: rows:selectedRows\"\n [ngStyle]=\"row | viCdkTableRowStyleName: rows:selectedRows\"\n (click)=\"rowClickHandler(row, $event)\"\n ></mat-row>\n\n <p class=\"p-3 flex-shrink-0 text-center mouse-inactive\" [vi-translate]=\"settings?.noDataId\" *matNoDataRow></p>\n</mat-table>\n\n\n<mat-progress-bar class=\"flex-shrink-0 border\" [mode]=\"table?.isLoading ? '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 <mat-paginator\n class=\"flex-shrink-0\"\n [pageSize]=\"table?.pageSize\"\n [pageIndex]=\"table?.pageIndex\"\n [length]=\"table?.total\"\n (page)=\"table?.pageEventHandler($event)\"\n [pageSizeOptions]=\"paginator?.pageSizes\"\n [showFirstLastButtons]=\"paginator?.showFirstLastButtons\"\n [hidePageSize]=\"paginator?.hidePageSize\"\n *ngIf=\"paginator\"\n ></mat-paginator>\n</div>\n\n<!-- *ngIf=\"paginator && table?.length > 0\" -->\n","import * as _ from 'lodash';\nimport { CdkTableBaseComponent } from '../CdkTableBaseComponent';\nimport { CdkTableFilterableMapCollection } from '../CdkTableFilterableMapCollection';\nimport { Component, ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\n\n@Component({\n selector: 'vi-cdk-table-filterable',\n templateUrl: 'cdk-table-filterable.component.html'\n})\nexport class CdkTableFilterableComponent<U = any, V = any> extends CdkTableBaseComponent<CdkTableFilterableMapCollection<U, V>, U, V> {\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 class=\"flex-grow-1 vertical-scroll-only\"\n matSort\n [dataSource]=\"table?.table?.dataSource\"\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [class.mat-nav-list]=\"settings?.isInteractive\"\n (matSortChange)=\"table.sortEventHandler($event)\"\n>\n <ng-container *ngFor=\"let column of columns; trackBy: columnTrackBy\">\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 [ngClass]=\"column.headerClassName\"\n *matHeaderCellDef\n >\n <span [innerHTML]=\"column.headerId | viTranslate\"></span>\n </mat-header-cell>\n <mat-cell\n class=\"p-2\"\n (click)=\"cellClickHandler(row, column, $event)\"\n *matCellDef=\"let row\"\n [ngClass]=\"row | viCdkTableColumnClassName: column\"\n [ngStyle]=\"row | viCdkTableColumnStyleName: column\"\n >\n <span [ngClass]=\"column | viCdkTableCellClassName\" [vi-html-content-title]=\"row | viCdkTableColumnValue: column\"></span>\n </mat-cell>\n </ng-container>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columnNames\"></mat-header-row>\n\n <mat-row\n class=\"mat-list-item\"\n *matRowDef=\"let row; columns: columnNames\"\n [ngClass]=\"row | viCdkTableRowClassName: rows:selectedRows\"\n [ngStyle]=\"row | viCdkTableRowStyleName: rows:selectedRows\"\n (click)=\"rowClickHandler(row, $event)\"\n ></mat-row>\n\n <p class=\"p-3 flex-shrink-0 text-center mouse-inactive\" [vi-translate]=\"settings?.noDataId\" *matNoDataRow></p>\n</mat-table>\n\n<mat-progress-bar class=\"flex-shrink-0 border transparent\" [mode]=\"table?.isLoading ? 'indeterminate' : 'determinate'\"></mat-progress-bar>\n","import * as _ from 'lodash';\nimport { CdkTableBaseComponent } from '../CdkTableBaseComponent';\nimport { Component, ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { CdkTablePaginableBookmarkMapCollection } from '../CdkTablePaginableBookmarkMapCollection';\n\n@Component({\n selector: 'vi-cdk-table-paginable-bookmark',\n templateUrl: 'cdk-table-paginable-bookmark.component.html'\n})\nexport class CdkTablePaginableBookmarkComponent<U = any, V = any> extends CdkTableBaseComponent<CdkTablePaginableBookmarkMapCollection<U, V>, U, V> {\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 class=\"flex-grow-1 vertical-scroll-only\"\n matSort\n [dataSource]=\"table?.table?.dataSource\"\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [class.mat-nav-list]=\"settings?.isInteractive\"\n (matSortChange)=\"table.sortEventHandler($event)\"\n>\n <ng-container *ngFor=\"let column of columns; trackBy: columnTrackBy\">\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 [ngClass]=\"column.headerClassName\"\n *matHeaderCellDef\n >\n <span [innerHTML]=\"column.headerId | viTranslate\"></span>\n </mat-header-cell>\n <mat-cell\n class=\"p-2\"\n (click)=\"cellClickHandler(row, column, $event)\"\n *matCellDef=\"let row\"\n [ngClass]=\"row | viCdkTableColumnClassName: column\"\n [ngStyle]=\"row | viCdkTableColumnStyleName: column\"\n >\n <span [ngClass]=\"column | viCdkTableCellClassName\" [vi-html-content-title]=\"row | viCdkTableColumnValue: column\"></span>\n </mat-cell>\n </ng-container>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columnNames\"></mat-header-row>\n\n <mat-row\n class=\"mat-list-item\"\n *matRowDef=\"let row; columns: columnNames\"\n [ngClass]=\"row | viCdkTableRowClassName: rows:selectedRows\"\n [ngStyle]=\"row | viCdkTableRowStyleName: rows:selectedRows\"\n (click)=\"rowClickHandler(row, $event)\"\n ></mat-row>\n\n <p class=\"p-3 flex-shrink-0 text-center mouse-inactive\" [vi-translate]=\"settings?.noDataId\" *matNoDataRow></p>\n</mat-table>\n\n<mat-progress-bar class=\"flex-shrink-0 border transparent\" [mode]=\"table?.isLoading ? 'indeterminate' : 'determinate'\"></mat-progress-bar>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { VICommonModule } from '../VICommonModule';\nimport { LanguageSelectorComponent } from './language/language-selector/language-selector.component';\nimport { MenuListComponent } from './menu-list/menu-list.component';\nimport { SelectListComponent } from './select-list/select-list.component';\nimport { TabGroupComponent } from './tab-group/tab-group.component';\n\nimport { CdkTablePaginableComponent } from './cdk-table/cdk-table-paginable/cdk-table-paginable.component';\nimport { CdkTableFilterableComponent } from './cdk-table/cdk-table-filterable/cdk-table-filterable.component';\nimport { CdkTablePaginableBookmarkComponent } from './cdk-table/cdk-table-paginable-bookmark/cdk-table-paginable-bookmark.component';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatListModule } from '@angular/material/list';\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 { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\nimport { CdkTableColumnValuePipe } from './cdk-table/column/CdkTableColumnValuePipe';\nimport { CdkTableColumnStyleNamePipe } from './cdk-table/column/CdkTableColumnStyleNamePipe';\nimport { CdkTableColumnClassNamePipe } from './cdk-table/column/CdkTableColumnClassNamePipe';\nimport { CdkTableRowClassNamePipe } from './cdk-table/row/CdkTableRowClassNamePipe';\nimport { CdkTableRowStyleNamePipe } from './cdk-table/row/CdkTableRowStyleNamePipe';\nimport { CdkTableCellClassNamePipe } from './cdk-table/column/CdkTableCellClassNamePipe';\n\nconst IMPORTS = [\n CommonModule,\n FormsModule,\n MatTabsModule,\n MatListModule,\n MatMenuModule,\n MatSelectModule,\n MatButtonModule,\n MatSortModule,\n MatTableModule,\n MatPaginatorModule,\n MatProgressBarModule,\n VICommonModule\n];\nconst ENTRY_COMPONENTS = [];\nconst DECLARATIONS = [\n CdkTableColumnValuePipe,\n CdkTableColumnClassNamePipe,\n CdkTableColumnStyleNamePipe,\n CdkTableRowStyleNamePipe,\n CdkTableRowClassNamePipe,\n CdkTableCellClassNamePipe,\n\n LanguageSelectorComponent,\n TabGroupComponent,\n MenuListComponent,\n SelectListComponent,\n CdkTablePaginableComponent,\n CdkTableFilterableComponent,\n CdkTablePaginableBookmarkComponent,\n ...ENTRY_COMPONENTS\n];\nconst EXPORTS = [...DECLARATIONS];\n\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS,\n entryComponents: ENTRY_COMPONENTS\n})\nexport class VIComponentModule {}\n","import { CdkTableDataSource } from './CdkTableDataSource';\nimport { PaginableDataSourceMapCollection } from '@ts-core/common/map/dataSource';\nimport { Sort, SortDirection } from '@angular/material/sort';\nimport { PageEvent } from '@angular/material/paginator';\nimport * as _ from 'lodash';\nimport { CdkTableFilterableMapCollection } from './CdkTableFilterableMapCollection';\n\nexport abstract class CdkTablePaginableMapCollection<U, V> extends PaginableDataSourceMapCollection<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: CdkTableDataSource<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n super.initialize();\n this._table = this.getTable();\n }\n\n protected getTable(): CdkTableDataSource<U> {\n return new CdkTableDataSource(this);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public sortEventHandler(event: Sort): void {\n if (CdkTableFilterableMapCollection.applySortEvent(this, event)) {\n this.load();\n }\n }\n\n public pageEventHandler(event: PageEvent): void {\n this.pageIndex = event.pageIndex;\n this.pageSize = event.pageSize;\n this.load();\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._table)) {\n this._table.destroy();\n this._table = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): CdkTableDataSource<U> {\n return this._table;\n }\n}\n","import { PaginableBookmarkDataSourceMapCollection } from '@ts-core/common/map/dataSource';\nimport { CdkTableDataSource } from './CdkTableDataSource';\nimport * as _ from 'lodash';\nimport { CdkTableFilterableMapCollection } from './CdkTableFilterableMapCollection';\nimport { Sort } from '@angular/material/sort';\n\nexport abstract class CdkTablePaginableBookmarkMapCollection<U, V> extends PaginableBookmarkDataSourceMapCollection<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: CdkTableDataSource<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n super.initialize();\n this._table = this.getTable();\n }\n\n protected getTable(): CdkTableDataSource<U> {\n return new CdkTableDataSource(this);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public sortEventHandler(event: Sort): void {\n if (CdkTableFilterableMapCollection.applySortEvent(this, event)) {\n this.reload();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n super.destroy();\n if (!_.isNil(this._table)) {\n this._table.destroy();\n this._table = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): CdkTableDataSource<U> {\n return this._table;\n }\n}\n","import { ICookieOptions } from '@ts-core/frontend/cookie';\nimport * as Cookie from 'ngx-cookie';\n\nexport class CookieOptions implements ICookieOptions, Cookie.CookieOptions {\n path?: string;\n domain?: string;\n expires?: string | Date;\n secure?: boolean;\n httpOnly?: boolean;\n storeUnencoded?: boolean;\n}\n","import { AbstractControl, AsyncValidatorFn, Validator, ValidatorFn, Validators } from '@angular/forms';\nimport * as _ from 'lodash';\nimport { of } from 'rxjs';\n\n// --------------------------------------------------------------------------\n//\n// Export Properties\n//\n// --------------------------------------------------------------------------\n\nexport type ValidationResult = { [validator: string]: string | boolean };\nexport type ValidatorArray = Array<Validator | ValidatorFn>;\nexport type AsyncValidatorArray = Array<Validator | AsyncValidatorFn>;\n\nlet normalizeValidator = (validator: Validator | ValidatorFn): ValidatorFn | AsyncValidatorFn => {\n let func = (validator as Validator).validate.bind(validator);\n if (typeof func === 'function') {\n return (control: AbstractControl) => func(control);\n } else {\n return <ValidatorFn | AsyncValidatorFn>validator;\n }\n};\n\nexport let composeValidators = (validators: ValidatorArray): AsyncValidatorFn | ValidatorFn => {\n if (_.isEmpty(validators)) {\n return null;\n }\n return Validators.compose(validators.map(normalizeValidator));\n};\n\nexport let validate = (validators: ValidatorArray, asyncValidators: AsyncValidatorArray) => {\n return (control: AbstractControl) => {\n let synchronousValid = () => composeValidators(validators)(control);\n if (asyncValidators) {\n let asyncValidator = composeValidators(asyncValidators);\n return asyncValidator(control).map(v => {\n let secondary = synchronousValid();\n if (secondary || v) {\n return Object.assign({}, secondary, v);\n }\n });\n }\n if (validators) {\n return of(synchronousValid());\n }\n return of(null);\n };\n};\n\nexport const message = (validator: ValidationResult, key: string): string => {\n if (!key) {\n return 'Validation failed: ' + validator.toString();\n }\n\n switch (key) {\n case 'required':\n return 'Please enter a value';\n case 'pattern':\n return 'Value does not match required pattern';\n case 'minlength':\n return 'Value must be N characters';\n case 'maxlength':\n return 'Value must be a maximum of N characters';\n }\n\n let value = validator[key];\n switch (typeof value) {\n case 'string':\n return value as string;\n default:\n return 'Validation failed: ' + key;\n }\n};\n","import { ControlValueAccessor } from '@angular/forms';\nimport { Destroyable } from '@ts-core/common';\n\nexport class ValueAccessor<T> extends Destroyable implements ControlValueAccessor {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n private innerValue: T;\n private changed: Array<(value: T) => void>;\n private touched: Array<() => void>;\n\n // --------------------------------------------------------------------------\n //\n //\tConstuctor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n this.changed = [];\n this.touched = [];\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected valueChanged(): void {\n this.changed.forEach(f => f(this.innerValue));\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public touch(): void {\n this.touched.forEach(f => f());\n }\n\n public writeValue(value: T): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: T) => void): void {\n this.changed.push(fn);\n }\n\n public registerOnTouched(fn: () => void): void {\n this.touched.push(fn);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.changed = null;\n this.touched = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get value(): T {\n return this.innerValue;\n }\n\n public set value(value: T) {\n if (value == this.innerValue) {\n return;\n }\n this.innerValue = value;\n this.valueChanged();\n }\n}\n","import { NgModel } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AsyncValidatorArray, message, validate, ValidationResult, ValidatorArray } from './validate';\nimport { ValueAccessor } from './ValueAccessor';\n\nexport abstract class FormElementAsync<T> extends ValueAccessor<T> {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected abstract model: NgModel;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private validators: ValidatorArray, private asyncValidators: AsyncValidatorArray) {\n super();\n }\n\n protected validate(): Observable<ValidationResult> {\n return validate(this.validators, this.asyncValidators)(this.model.control);\n }\n\n protected get invalid(): Observable<boolean> {\n return this.validate().pipe(\n map(v => {\n return Object.keys(v || {}).length > 0;\n })\n );\n }\n\n protected get failures(): Observable<Array<string>> {\n return this.validate().pipe(map(v => Object.keys(v).map(k => message(v, k))));\n }\n}\n","import { AfterContentInit, Directive, Injectable, OnDestroy } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm, NgModel, Validator, ValidatorFn } from '@angular/forms';\nimport { message, ValidationResult } from './validate';\nimport { ValueAccessor } from './ValueAccessor';\n\n@Directive()\nexport abstract class FormElementSync<T> extends ValueAccessor<T> implements AfterContentInit, OnDestroy {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected abstract model: NgModel;\n protected _validationError: string;\n protected timer: any;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private validators: Array<Validator | ValidatorFn>) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected valueChanged(): void {\n super.valueChanged();\n setTimeout(this.validate);\n }\n\n protected validate = (): ValidationResult => {\n if (!this.validators || this.validators.length === 0) {\n this._validationError = null;\n return null;\n }\n\n let failure: ValidationResult = null;\n for (let item of this.validators) {\n failure = typeof item === 'function' ? item(this.model.control) : item.validate(this.model.control);\n if (failure) {\n break;\n }\n }\n this._validationError = failure ? message(failure, Object.keys(failure)[0]) : null;\n return failure;\n };\n\n public get valid(): boolean {\n return !this.invalid;\n }\n\n public get invalid(): boolean {\n return this._validationError != null;\n }\n\n public get validationError(): string {\n return this._validationError;\n }\n\n protected isErrorState = (control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean => {\n return this.invalid;\n };\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterContentInit(): void {\n this.validate();\n }\n\n public ngOnDestroy(): void {\n clearTimeout(this.timer);\n this.timer = null;\n }\n}\n","import { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { LanguageService } from '@ts-core/frontend/language';\n\nexport class LanguageMomentDateAdapter extends MomentDateAdapter {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(language: LanguageService) {\n super(language.locale);\n language.completed.subscribe(item => this.setLocale(item.locale));\n }\n}\n","import { LoadableEvent, Loadable, LoadableStatus } from '@ts-core/common';\nimport { ExtendedError } from '@ts-core/common/error';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { TransportNoConnectionError, TransportTimeoutError } from '@ts-core/common/transport';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\nexport abstract class LoginBaseService<E = any, U = any, V = any> extends Loadable<E | LoginBaseServiceEvent, U | V | ExtendedError> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _sid: string;\n protected _resource: string;\n\n protected _loginData: V;\n protected _isLoggedIn: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected async loginByParam<T = any>(param?: T): Promise<U> {\n return this.loginByFunction(() => this.loginRequest(param));\n }\n\n protected async loginByFunction(sidReturnFunction: (...params) => Promise<U>): Promise<U> {\n if (this.isLoggedIn || this.isLoading) {\n return null;\n }\n\n let response: U;\n this.status = LoadableStatus.LOADING;\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_STARTED));\n\n try {\n response = await sidReturnFunction();\n this.parseLoginResponse(response);\n if (!this.isCanLoginWithSid()) {\n this.status = LoadableStatus.LOADED;\n } else {\n this.loginBySid();\n }\n } catch (error) {\n let extendedError = ExtendedError.create(error as any);\n\n this.status = LoadableStatus.ERROR;\n this.parseLoginErrorResponse(extendedError);\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_ERROR, null, extendedError));\n }\n\n if (!this.isLoading) {\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_FINISHED));\n }\n return response;\n }\n\n protected async loginBySid(): Promise<void> {\n if (_.isNil(this.sid)) {\n this._sid = this.getSavedSid();\n }\n\n try {\n let response = await this.loginSidRequest();\n this.parseLoginSidResponse(response);\n\n this._isLoggedIn = true;\n this.status = LoadableStatus.LOADED;\n this.observer.next(new ObservableData(LoadableEvent.COMPLETE, response));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_COMPLETE, response));\n } catch (error) {\n let extendedError = ExtendedError.create(error as any);\n this.parseLoginSidErrorResponse(extendedError);\n\n this._isLoggedIn = false;\n this.status = LoadableStatus.ERROR;\n this.observer.next(new ObservableData(LoadableEvent.ERROR, null, extendedError));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_ERROR, null, extendedError));\n }\n\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_FINISHED));\n }\n\n protected reset(): void {\n this._sid = null;\n this._resource = null;\n this._loginData = null;\n }\n\n protected abstract loginRequest(...params): Promise<U>;\n protected abstract loginSidRequest(): Promise<V>;\n\n protected abstract logoutRequest(): Promise<void>;\n protected abstract getSavedSid(): string;\n\n // --------------------------------------------------------------------------\n //\n // \tParse Methods\n //\n // --------------------------------------------------------------------------\n\n protected abstract parseLoginResponse(response: U): void;\n\n protected parseLoginErrorResponse(error: ExtendedError): void {}\n\n protected parseLogoutErrorResponse(error: ExtendedError): void {}\n\n protected parseLoginSidResponse(response: V): void {\n this._loginData = response;\n }\n\n protected parseLoginSidErrorResponse(error: ExtendedError): void {\n if (error instanceof TransportTimeoutError || error instanceof TransportNoConnectionError) {\n return;\n }\n this.reset();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract login(param: any): void;\n\n public async loginByResponse(param: U): Promise<void> {\n if (this.isLoggedIn || this.isLoading) {\n return;\n }\n\n this.status = LoadableStatus.LOADING;\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_STARTED));\n\n this.parseLoginResponse(param);\n this.status = !this.isCanLoginWithSid() ? LoadableStatus.LOADED : LoadableStatus.LOADING;\n if (this.isLoading) {\n await this.loginBySid();\n }\n }\n\n public loginBySidIfCan(): boolean {\n if (!this.isCanLoginWithSid()) {\n return false;\n }\n\n if (this.isLoggedIn || this.isLoading) {\n return true;\n }\n\n this.status = LoadableStatus.LOADING;\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_STARTED));\n this.loginBySid();\n return true;\n }\n\n public async logout(): Promise<void> {\n if (!this.isLoggedIn) {\n return;\n }\n\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGOUT_STARTED));\n\n try {\n await this.logoutRequest();\n } catch (error) {\n let extendedError = ExtendedError.create(error as any);\n this.parseLogoutErrorResponse(extendedError);\n } finally {\n this.reset();\n this._isLoggedIn = false;\n this.status = LoadableStatus.NOT_LOADED;\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGOUT_FINISHED));\n }\n }\n\n public isCanLoginWithSid(): boolean {\n return this.sid != null || this.getSavedSid() != null;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.reset();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get logined(): Observable<V> {\n return this.events.pipe(\n filter(item => item.type === LoginBaseServiceEvent.LOGIN_COMPLETE),\n map(item => item.data as V)\n );\n }\n\n public get logouted(): Observable<void> {\n return this.events.pipe(\n filter(item => item.type === LoginBaseServiceEvent.LOGOUT_FINISHED),\n map(() => null)\n );\n }\n\n public get sid(): string {\n return this._sid;\n }\n\n public get resource(): string {\n return this._resource;\n }\n\n public get loginData(): V {\n return this._loginData;\n }\n\n public get isLoggedIn(): boolean {\n return this._isLoggedIn;\n }\n}\n\nexport enum LoginBaseServiceEvent {\n LOGIN_ERROR = 'LOGIN_ERROR',\n LOGIN_STARTED = 'LOGIN_STARTED',\n LOGIN_COMPLETE = 'LOGIN_COMPLETE',\n LOGIN_FINISHED = 'LOGIN_FINISHED',\n LOGOUT_STARTED = 'LOGOUT_STARTED',\n LOGOUT_FINISHED = 'LOGOUT_FINISHED',\n\n REGISTRATION_ERROR = 'REGISTRATION_ERROR',\n REGISTRATION_STARTED = 'REGISTRATION_STARTED',\n REGISTRATION_COMPLETE = 'REGISTRATION_COMPLETE',\n REGISTRATION_FINISHED = 'REGISTRATION_FINISHED'\n}\n","import { Resolve } from '@angular/router';\nimport { LoginBaseService, LoginBaseServiceEvent } from './LoginBaseService';\nimport { PromiseHandler } from '@ts-core/common/promise';\n\nexport class LoginRequireResolver<T extends LoginBaseService = LoginBaseService> implements Resolve<void> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected login: T) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public resolve(): Promise<void> {\n if (this.isLoggedIn()) {\n return Promise.resolve();\n }\n\n let promise = PromiseHandler.create<void>();\n let subscription = this.login.events.subscribe(data => {\n if (data.type === LoginBaseServiceEvent.LOGIN_ERROR) {\n promise.reject(data.error.toString());\n } else if (data.type === LoginBaseServiceEvent.LOGIN_COMPLETE) {\n promise.resolve();\n } else if (data.type === LoginBaseServiceEvent.LOGIN_FINISHED) {\n subscription.unsubscribe();\n }\n });\n return promise.promise;\n }\n\n public isLoggedIn(): boolean {\n return this.login.isLoggedIn;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { LoginBaseService } from './LoginBaseService';\nimport { LoginRequireResolver } from './LoginRequireResolver';\nimport * as _ from 'lodash';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginGuard<T extends LoginBaseService = LoginBaseService> extends LoginRequireResolver<T> implements CanActivate {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public static redirectUrl: string = '/login';\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Inject(LoginBaseService) login: T, protected router: Router) {\n super(login);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this.isLoggedIn() ? true : this.router.parseUrl(LoginGuard.redirectUrl);\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { LoginBaseService } from './LoginBaseService';\nimport { LoginRequireResolver } from './LoginRequireResolver';\nimport * as _ from 'lodash';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginNotGuard<T extends LoginBaseService = LoginBaseService> extends LoginRequireResolver<T> implements CanActivate {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public static redirectUrl: string = '/';\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Inject(LoginBaseService) login: T, protected router: Router) {\n super(login);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return !this.isLoggedIn() ? true : this.router.parseUrl(LoginNotGuard.redirectUrl);\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport * as _ from 'lodash';\nimport { LoginBaseService } from './LoginBaseService';\nimport { LoginGuard } from './LoginGuard';\nimport { LoginNotGuard } from './LoginNotGuard';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginIfCanGuard<T extends LoginBaseService = LoginBaseService> extends LoginGuard<T> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Inject(LoginBaseService) login: T, protected router: Router) {\n super(login, router);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected async loginIfCan(): Promise<void> {\n if (this.login.loginBySidIfCan()) {\n try {\n await this.resolve();\n } catch (error) {}\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n if (state.url !== LoginGuard.redirectUrl) {\n LoginNotGuard.redirectUrl = state.url;\n }\n if (!this.isLoggedIn()) {\n await this.loginIfCan();\n }\n return super.canActivate(route, state) as Promise<boolean | UrlTree>;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { LoginBaseService } from './LoginBaseService';\nimport { LoginRequireResolver } from './LoginRequireResolver';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginResolver<T extends LoginBaseService> extends LoginRequireResolver<T> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Inject(LoginBaseService) login: T) {\n super(login);\n }\n}\n","export class MenuItemBase {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _name: string;\n protected _isEnabled: boolean = true;\n\n public checkEnabled: (item: MenuItemBase) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public nameId: string, public sortIndex: number = NaN, public iconId?: string) {}\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitNameProperties(): void {}\n protected commitIsEnabledProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public get isEnabled(): boolean {\n return this._isEnabled;\n }\n public set isEnabled(value: boolean) {\n if (value === this._isEnabled) {\n return;\n }\n this._isEnabled = value;\n this.commitIsEnabledProperties();\n }\n\n public get name(): string {\n return this._name;\n }\n public set name(value: string) {\n if (value === this._name) {\n return;\n }\n this._name = value;\n this.commitNameProperties();\n }\n}\n","import { MenuItemBase } from './MenuItemBase';\n\nexport class MenuItem extends MenuItemBase {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public flag: string;\n public select: (item: MenuItem) => void;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(nameId?: string, sortIndex?: number, flag?: string, iconId?: string) {\n super(nameId, sortIndex, iconId);\n this.flag = flag || 'none';\n }\n}\n","import { DestroyableContainer, LoadableEvent } from '@ts-core/common';\nimport { ArrayUtil } from '@ts-core/common/util';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { MenuItem } from './MenuItem';\nimport { MenuItemBase } from './MenuItemBase';\n\nexport class MenuItems extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _items: Array<MenuItemBase>;\n protected _enabledItems: Array<MenuItemBase>;\n protected filterFunction: (item: MenuItemBase) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService, filterFunction?: (item: MenuItem) => boolean, isAutoTranslate: boolean = false) {\n super();\n\n this._items = [];\n this._enabledItems = [];\n this.filterFunction = filterFunction;\n\n language.completed\n .pipe(\n filter(() => isAutoTranslate),\n takeUntil(this.destroyed)\n )\n .subscribe(() => this.translateItems(this._items));\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private translateItems(items: Array<MenuItemBase>): void {\n for (let item of items) {\n this.translateItem(item);\n }\n }\n\n private translateItem(item: MenuItemBase): void {\n item.name = this.language.translate(item.nameId);\n }\n\n private checkEnabledItems(items: Array<MenuItemBase>): boolean {\n ArrayUtil.sort(items);\n let isMainItems = items === this._items;\n let isAllEnabled = true;\n\n if (isMainItems) {\n ArrayUtil.clear(this._enabledItems);\n }\n\n for (let item of items) {\n if (!item.name && item.nameId) {\n this.translateItem(item);\n }\n\n let isEnabled = item.checkEnabled ? item.checkEnabled(item) : true;\n if (isEnabled && this.filterFunction) {\n isEnabled = this.filterFunction(item);\n }\n\n item.isEnabled = isEnabled;\n if (isEnabled) {\n this._enabledItems.push(item);\n }\n\n if (isAllEnabled && !isEnabled) {\n isAllEnabled = false;\n }\n }\n return isAllEnabled;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public add(item: MenuItemBase): MenuItemBase {\n this._items.push(item);\n return item;\n }\n\n public remove(item: MenuItemBase): MenuItemBase {\n let index = this._items.indexOf(item);\n if (index > -1) {\n this._items.slice(index, 1);\n }\n return item;\n }\n\n public checkEnabled(...args): boolean {\n return this.checkEnabledItems(this._items);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tInterface Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this._items = null;\n this._enabledItems = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get items(): Array<MenuItemBase> {\n return this._items;\n }\n\n public get enabledItems(): Array<MenuItemBase> {\n return this._enabledItems;\n }\n}\n","import { MenuItem } from './MenuItem';\n\nexport class NavigationMenuItem extends MenuItem {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public url: string;\n public isActive: boolean = false;\n public select: (item: NavigationMenuItem) => void;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(nameId?: string, sortIndex?: number, iconId?: string, url?: string) {\n super(nameId, sortIndex, null, iconId);\n this.url = url;\n }\n}\n","import { IListItem } from './IListItem';\nimport * as _ from 'lodash';\nimport { IDestroyable } from '@ts-core/common';\n\nexport class ListItem<T = any> implements IListItem<T>, IDestroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _uid: string;\n\n protected _data: T;\n protected _label: string;\n protected _iconId: string;\n protected _className: string;\n protected _sortIndex: number;\n protected _isEnabled: boolean = true;\n protected _translationId: string;\n\n public action: (item: IListItem, ...params) => void;\n public checkEnabled: (item: IListItem, ...params) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(translationId: string, sortIndex: number = NaN, data?: T, iconId?: string) {\n this.data = data;\n this.iconId = iconId;\n this.sortIndex = sortIndex;\n this.translationId = translationId;\n\n this._uid = this.getUid();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitDataProperties(): void {}\n protected commitLabelProperties(): void {}\n protected commitIsEnabledProperties(): void {}\n protected commitClassNameProperties(): void {}\n\n protected commitIconIdProperties(): void {}\n protected commitSortIndexProperties(): void {}\n protected commitTranslationIdProperties(): void {}\n\n protected getUid(): string {\n return `${this.translationId}_${this.sortIndex}`;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n this._data = null;\n this.action = null;\n this.checkEnabled = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get uid(): string {\n return this._uid;\n }\n\n public get sortIndex(): number {\n return this._sortIndex;\n }\n public set sortIndex(value: number) {\n if (value === this._sortIndex) {\n return;\n }\n this._sortIndex = value;\n if (!_.isNil(value)) {\n this.commitSortIndexProperties();\n }\n }\n\n public get isEnabled(): boolean {\n return this._isEnabled;\n }\n public set isEnabled(value: boolean) {\n if (value === this._isEnabled) {\n return;\n }\n this._isEnabled = value;\n if (_.isBoolean(value)) {\n this.commitIsEnabledProperties();\n }\n }\n\n public get label(): string {\n return this._label;\n }\n public set label(value: string) {\n if (value === this._label) {\n return;\n }\n this._label = value;\n if (!_.isNil(value)) {\n this.commitLabelProperties();\n }\n }\n\n public get translationId(): string {\n return this._translationId;\n }\n public set translationId(value: string) {\n if (value === this._translationId) {\n return;\n }\n this._translationId = value;\n if (!_.isNil(value)) {\n this.commitTranslationIdProperties();\n }\n }\n\n public get iconId(): string {\n return this._iconId;\n }\n public set iconId(value: string) {\n if (value === this._iconId) {\n return;\n }\n this._iconId = value;\n if (!_.isNil(value)) {\n this.commitIconIdProperties();\n }\n }\n\n public get className(): string {\n return this._className;\n }\n public set className(value: string) {\n if (value === this._className) {\n return;\n }\n this._className = value;\n if (!_.isNil(value)) {\n this.commitClassNameProperties();\n }\n }\n\n public get data(): T {\n return this._data;\n }\n public set data(value: T) {\n if (value === this._data) {\n return;\n }\n this._data = value;\n if (!_.isNil(value)) {\n this.commitDataProperties();\n }\n }\n}\n","import { ArrayUtil } from '@ts-core/common/util';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { IListItem } from './IListItem';\nimport { FilterableMapCollection } from '@ts-core/common/map';\nimport { Subscription } from 'rxjs';\n\nexport class ListItems<U extends IListItem<V>, V = any> extends FilterableMapCollection<U> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected lastRefreshParams: Array<any>;\n protected languageSubscription: Subscription;\n\n protected _isAllEnabled: boolean;\n protected _isLeastOneEnabled: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService, isAutoTranslate: boolean = true) {\n super('uid');\n\n this.lastRefreshParams = new Array();\n if (isAutoTranslate) {\n this.languageSubscription = language.completed.subscribe(this.translateItems);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected translate = (item: U): void => {\n item.label = this.language.translate(item.translationId);\n };\n\n protected translateItems = (): void => {\n this.collection.forEach(this.translate);\n };\n\n protected translateIfNeed = (item: U): void => {\n if (_.isNil(item.label) && !_.isNil(item.translationId)) {\n this.translate(item);\n }\n };\n\n protected translateItemsIfNeed = (): void => {\n this.collection.forEach(this.translateIfNeed);\n };\n\n protected sort(): void {\n ArrayUtil.sort(this.collection);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public complete(): void {\n this.translateItemsIfNeed();\n this.sort();\n }\n\n public refresh(...params): void {\n ArrayUtil.clear(this._filtered);\n this.lastRefreshParams = params;\n\n if (_.isEmpty(this.collection)) {\n return;\n }\n\n this._isAllEnabled = true;\n this._isLeastOneEnabled = false;\n for (let item of this._collection) {\n item.isEnabled = !_.isNil(item.checkEnabled) ? item.checkEnabled(item, ...params) : true;\n if (!item.isEnabled) {\n this._isAllEnabled = false;\n } else if (this.filter(item)) {\n this._filtered.push(item);\n this._isLeastOneEnabled = true;\n }\n }\n }\n\n public actionItem(item: U): void {\n if (!_.isNil(item) && item.isEnabled && !_.isNil(item.action)) {\n item.action(item, ...this.lastRefreshParams);\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.language = null;\n this.lastRefreshParams = null;\n\n if (!_.isNil(this.languageSubscription)) {\n this.languageSubscription.unsubscribe();\n this.languageSubscription = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isAllEnabled(): boolean {\n return this._isAllEnabled;\n }\n\n public get isLeastOneEnabled(): boolean {\n return this._isLeastOneEnabled;\n }\n}\n","import { ISelectListItem } from './ISelectListItem';\nimport * as _ from 'lodash';\nimport { ListItem } from '../ListItem';\nimport { IListItem } from '../IListItem';\n\nexport class SelectListItem<T = any> extends ListItem<T> implements ISelectListItem<T> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _isSelected: boolean;\n protected _selectedClassName: string;\n\n public checkSelected?: (item: ISelectListItem, ...params) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(translationId: string, sortIndex: number, data: T, checkEnabled?: (item: IListItem, ...params) => boolean) {\n super(translationId, sortIndex, data);\n this.checkEnabled = checkEnabled;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitIsSelectProperties(): void {}\n\n protected commitSelectedClassNameProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n super.destroy();\n this.checkSelected = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isSelected(): boolean {\n return this._isSelected;\n }\n public set isSelected(value: boolean) {\n if (value === this._isSelected) {\n return;\n }\n this._isSelected = value;\n if (!_.isNil(value)) {\n this.commitIsSelectProperties();\n }\n }\n\n public get selectedClassName(): string {\n return this._selectedClassName;\n }\n public set selectedClassName(value: string) {\n if (value === this._selectedClassName) {\n return;\n }\n this._selectedClassName = value;\n if (!_.isNil(value)) {\n this.commitSelectedClassNameProperties();\n }\n }\n}\n","import * as _ from 'lodash';\nimport { ISelectListItem } from './ISelectListItem';\nimport { ListItems } from '../ListItems';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { EventEmitter } from '@angular/core';\n\nexport class SelectListItems<U extends ISelectListItem<V>, V = any> extends ListItems<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _selectedItem: U;\n protected _selectedData: V;\n protected _selectedIndex: number;\n\n protected _changed: EventEmitter<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(language: LanguageService, isAutoTranslate: boolean = true) {\n super(language, isAutoTranslate);\n this._changed = new EventEmitter();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitSelectedItemProperties(): void {\n this.selectedData = !_.isNil(this.selectedItem) ? this.selectedItem.data : null;\n this.selectedIndex = !_.isNil(this.selectedItem) ? this.selectedItem.sortIndex : null;\n\n if (!_.isNil(this.changed)) {\n this.changed.emit(this.selectedItem);\n }\n }\n\n protected commitSelectedDataProperties(): void {\n this.selectedItem = !_.isNil(this.selectedData) ? _.find(this.collection, item => item.data === this.selectedData) : null;\n }\n protected commitSelectedIndexProperties(): void {\n this.selectedItem = !_.isNil(this.selectedIndex) ? _.find(this.collection, item => item.sortIndex === this.selectedIndex) : null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get selectedItem(): U {\n return this._selectedItem;\n }\n public set selectedItem(value: U) {\n if (value === this._selectedItem) {\n return;\n }\n this._selectedItem = value;\n this.commitSelectedItemProperties();\n }\n\n public get selectedIndex(): number {\n return this._selectedIndex;\n }\n public set selectedIndex(value: number) {\n if (value === this._selectedIndex) {\n return;\n }\n this._selectedIndex = value;\n this.commitSelectedIndexProperties();\n }\n\n public get selectedData(): V {\n return this._selectedData;\n }\n public set selectedData(value: V) {\n if (value === this._selectedData) {\n return;\n }\n this._selectedData = value;\n this.commitSelectedDataProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public complete(indexOrDataToSelect?: number | V): void {\n super.complete();\n if (_.isNil(indexOrDataToSelect)) {\n return;\n }\n if (_.isNumber(indexOrDataToSelect)) {\n this.selectedIndex = indexOrDataToSelect;\n } else {\n this.selectedItem = _.find(this.collection, item => item.data === indexOrDataToSelect);\n }\n }\n\n public refresh(...params): void {\n super.refresh(...params);\n this.refreshSelection(...params);\n }\n\n public refreshSelection(...params): void {\n if (_.isEmpty(this.collection)) {\n return;\n }\n for (let item of this._collection) {\n item.isSelected = !_.isNil(item.checkSelected) ? item.checkSelected(item, ...params) : false;\n if (item.isSelected) {\n this.selectedItem = item;\n }\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this._changed)) {\n this._changed.complete();\n this._changed = null;\n }\n this.selectedIndex = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get changed(): EventEmitter<U> {\n return this._changed;\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DestroyableContainer, LoadableEvent } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport { CamelCasePipe } from '../pipe/CamelCasePipe';\nimport { FinancePipe } from '../pipe/FinancePipe';\nimport { MomentDateAdaptivePipe } from '../pipe/MomentDateAdaptivePipe';\nimport { MomentDateFromNowPipe } from '../pipe/MomentDateFromNowPipe';\nimport { MomentDatePipe } from '../pipe/MomentDatePipe';\nimport { MomentTimePipe } from '../pipe/MomentTimePipe';\nimport { PrettifyPipe } from '../pipe/PrettifyPipe';\nimport { SanitizePipe } from '../pipe/SanitizePipe';\nimport { TimePipe } from '../pipe/TimePipe';\nimport { TruncatePipe } from '../pipe/TruncatePipe';\n\nexport class PipeBaseService extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n private static DATE: DatePipe = null;\n private static TIME: TimePipe = null;\n private static FINANCE: FinancePipe = null;\n private static PRETTIFY: PrettifyPipe = null;\n private static TRUNCATE: TruncatePipe = null;\n private static SANITIZE: SanitizePipe = null;\n\n private static CAMEL_CASE: CamelCasePipe = null;\n\n private static MOMENT_TIME: MomentTimePipe = null;\n private static MOMENT_DATE: MomentDatePipe = null;\n private static MOMENT_DATE_FROM_NOW: MomentDateFromNowPipe = null;\n private static MOMENT_ADAPTIVE_DATE: MomentDateAdaptivePipe = null;\n\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private _locale: string;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public language: LanguageService, public sanitizer: DomSanitizer) {\n super();\n\n if (this.language.isLoaded) {\n this.commitLanguageProperties();\n }\n this.language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.commitLanguageProperties());\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitLanguageProperties(): void {\n let locale = this.language.locale ? this.language.language.locale : 'en';\n this._locale = locale === 'en' ? 'en-US' : locale;\n\n if (PipeBaseService.DATE) {\n PipeBaseService.DATE = new DatePipe(this.locale);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get date(): DatePipe {\n if (!PipeBaseService.DATE) {\n PipeBaseService.DATE = new DatePipe(this.locale);\n }\n return PipeBaseService.DATE;\n }\n\n public get time(): TimePipe {\n if (!PipeBaseService.TIME) {\n PipeBaseService.TIME = new TimePipe();\n }\n return PipeBaseService.TIME;\n }\n\n public get finance(): FinancePipe {\n if (!PipeBaseService.FINANCE) {\n PipeBaseService.FINANCE = new FinancePipe();\n }\n return PipeBaseService.FINANCE;\n }\n\n public get truncate(): TruncatePipe {\n if (!PipeBaseService.TRUNCATE) {\n PipeBaseService.TRUNCATE = new TruncatePipe();\n }\n return PipeBaseService.TRUNCATE;\n }\n\n public get prettify(): PrettifyPipe {\n if (!PipeBaseService.PRETTIFY) {\n PipeBaseService.PRETTIFY = new PrettifyPipe();\n }\n return PipeBaseService.PRETTIFY;\n }\n\n public get momentDate(): MomentDatePipe {\n if (!PipeBaseService.MOMENT_DATE) {\n PipeBaseService.MOMENT_DATE = new MomentDatePipe();\n }\n return PipeBaseService.MOMENT_DATE;\n }\n\n public get momentDateFromNow(): MomentDateFromNowPipe {\n if (!PipeBaseService.MOMENT_DATE_FROM_NOW) {\n PipeBaseService.MOMENT_DATE_FROM_NOW = new MomentDateFromNowPipe();\n }\n return PipeBaseService.MOMENT_DATE_FROM_NOW;\n }\n\n public get momentDateAdaptive(): MomentDateAdaptivePipe {\n if (!PipeBaseService.MOMENT_ADAPTIVE_DATE) {\n PipeBaseService.MOMENT_ADAPTIVE_DATE = new MomentDateAdaptivePipe();\n }\n return PipeBaseService.MOMENT_ADAPTIVE_DATE;\n }\n\n public get momentTime(): MomentTimePipe {\n if (!PipeBaseService.MOMENT_TIME) {\n PipeBaseService.MOMENT_TIME = new MomentTimePipe();\n }\n return PipeBaseService.MOMENT_TIME;\n }\n\n public get sanitize(): SanitizePipe {\n if (!PipeBaseService.SANITIZE) {\n PipeBaseService.SANITIZE = new SanitizePipe(this.sanitizer);\n }\n return PipeBaseService.SANITIZE;\n }\n\n public get camelCase(): CamelCasePipe {\n if (!PipeBaseService.CAMEL_CASE) {\n PipeBaseService.CAMEL_CASE = new CamelCasePipe();\n }\n return PipeBaseService.CAMEL_CASE;\n }\n\n public get locale(): string {\n return this._locale;\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Injectable } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\n\nimport * as _ from 'lodash';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\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: 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.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 = value;\n this.observer.next(new ObservableData(BootstrapBreakpointServiceEvent.CHANGED, this.breakpoint));\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(): 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 {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationExtras,\n NavigationStart,\n Router,\n UrlTree\n} from '@angular/router';\nimport { Loadable, LoadableEvent, LoadableStatus } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { NativeWindowService } from '@ts-core/frontend/service/NativeWindowService';\nimport * as _ from 'lodash';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport class RouterBaseService extends Loadable<void, RouterBaseServiceEventData> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected params: Map<string, string>;\n\n protected extrasToApply: NavigationExtras;\n protected isNeedUpdateExtras: boolean = false;\n\n protected _lastUrl: string;\n protected _previousUrl: string;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected _router: Router, protected window: NativeWindowService) {\n super();\n this.params = new Map();\n this.observer = new Subject();\n\n this._lastUrl = this.url;\n this.window.getParams().forEach((value, key) => this.params.set(key, value));\n this.initializeObservers();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initializeObservers(): void {\n this.router.events.pipe(takeUntil(this.destroyed)).subscribe(event => {\n if (event instanceof NavigationStart) {\n this._previousUrl = this.url;\n this.status = LoadableStatus.LOADING;\n } else if (event instanceof NavigationEnd || event instanceof NavigationCancel || event instanceof NavigationError) {\n if (event instanceof NavigationEnd) {\n this._lastUrl = event.url;\n }\n this.status = LoadableStatus.LOADED;\n }\n });\n }\n\n protected async applyExtras(extras?: NavigationExtras): Promise<boolean> {\n let params = {} as NavigationExtras;\n params.queryParams = this.getQueryParams();\n\n if (!_.isNil(extras)) {\n Object.assign(params, extras);\n }\n\n if (!this.isLoading) {\n return this.router.navigate([], params);\n }\n this.extrasToApply = extras;\n this.isNeedUpdateExtras = true;\n return false;\n }\n\n protected getQueryParams(): any {\n let params = {} as any;\n this.params.forEach((value, key) => (params[key] = value));\n return params;\n }\n\n protected commitStatusChangedProperties(oldStatus: LoadableStatus, newStatus: LoadableStatus): void {\n super.commitStatusChangedProperties(oldStatus, newStatus);\n\n switch (newStatus) {\n case LoadableStatus.LOADING:\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n break;\n case LoadableStatus.LOADED:\n if (this.isNeedUpdateExtras) {\n this.isNeedUpdateExtras = false;\n this.applyExtras(this.extrasToApply);\n }\n this.observer.next(new ObservableData(LoadableEvent.COMPLETE, { url: this.url, previousUrl: this.previousUrl }));\n break;\n }\n\n if (newStatus === LoadableStatus.LOADED || newStatus === LoadableStatus.ERROR) {\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tNavigate Methods\n //\n // --------------------------------------------------------------------------\n\n public async navigate(url: string, extras?: NavigationExtras, isClearParams?: boolean): Promise<boolean> {\n if (isClearParams) {\n this.params.clear();\n }\n\n let params = {} as NavigationExtras;\n params.queryParams = this.getQueryParams();\n if (!_.isNil(extras)) {\n Object.assign(params, extras);\n }\n return this.router.navigateByUrl(url, params);\n }\n\n public navigateToExternalUrl(url: string, target: string = '_blank'): void {\n this.window.open(url, target);\n }\n\n public navigateToLast(extras?: NavigationExtras): Promise<boolean> {\n return this.navigate(this.lastUrl, extras);\n }\n\n public async navigateIfNotLoading(url: string, extras?: NavigationExtras): Promise<boolean> {\n return !this.isLoading ? this.navigate(url, extras) : false;\n }\n\n public reload(): void {\n location.reload();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public isUrlActive(item: string | UrlTree, isExact: boolean = false): boolean {\n if (isExact) {\n return this.router.isActive(item, isExact);\n }\n if (_.isString(item)) {\n item = this.router.parseUrl(item);\n }\n\n let current = this.router.parseUrl(this.urlTree.toString());\n item.fragment = current.fragment = null;\n item.queryParams = current.queryParams = {};\n return item.toString() === current.toString();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Param Methods\n //\n // --------------------------------------------------------------------------\n\n public getParams<T = any>(): T {\n let params = {} as any;\n this.params.forEach((value, key) => (params[key] = value));\n return params;\n }\n\n public hasParam(name: string): boolean {\n return this.params.has(name);\n }\n\n public getParam<T = string>(name: string, defaultValue?: T): T {\n return this.hasParam(name) ? (this.params.get(name) as any) : defaultValue;\n }\n\n public setParam(name: string, value: any, extras?: NavigationExtras): void {\n if (!_.isNil(value)) {\n value = value.toString().trim();\n if (_.isEmpty(value)) {\n value = null;\n }\n }\n if (!_.isNil(value)) {\n this.params.set(name, value);\n } else {\n this.params.delete(name);\n }\n if (!_.isNil(extras)) {\n extras = { replaceUrl: true };\n }\n this.applyExtras(extras);\n }\n\n public removeParam(name: string, extras?: NavigationExtras): void {\n if (this.hasParam(name)) {\n this.setParam(name, null, extras);\n }\n }\n\n public clearParams(extras?: NavigationExtras): void {\n this.params.clear();\n if (!_.isNil(extras)) {\n extras = { replaceUrl: true };\n }\n this.applyExtras(extras);\n }\n\n public get hasParams(): boolean {\n return this.params.size > 0;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tFragment Methods\n //\n // --------------------------------------------------------------------------\n\n public getFragment(snapshot: ActivatedRoute | ActivatedRouteSnapshot, defaultValue?: string): string {\n if (snapshot instanceof ActivatedRoute) {\n snapshot = snapshot.snapshot;\n }\n return !_.isNil(snapshot.fragment) ? snapshot.fragment : defaultValue;\n }\n\n public async setFragment(value: string): Promise<boolean> {\n return this.applyExtras({ fragment: value });\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Url Methods\n //\n // --------------------------------------------------------------------------\n\n public get url(): string {\n return this.router.url;\n }\n public get urlTree(): UrlTree {\n return this.router.parseUrl(this.url);\n }\n\n public get lastUrl(): string {\n return this._lastUrl;\n }\n public get lastUrlTree(): UrlTree {\n return this.router.parseUrl(this.lastUrl);\n }\n\n public get previousUrl(): string {\n return this._previousUrl;\n }\n public get previousUrlTree(): UrlTree {\n return this.router.parseUrl(this.previousUrl);\n }\n\n public get router(): Router {\n return this._router;\n }\n}\n\nexport interface RouterBaseServiceEventData {\n url: string;\n previousUrl: string;\n}\n","import { CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport * as _ from 'lodash';\nimport { Observable } from 'rxjs';\nimport { IRouterDeactivatable } from './IRouterDeactivatable';\n\nexport class CanDeactivateGuard<T extends IRouterDeactivatable> implements CanDeactivate<T> {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public canDeactivate(\n component: IRouterDeactivatable,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return !component.isForceDeactivate ? component.isCanDeactivate(currentRoute, currentState, nextState) : true;\n }\n}\n","import { IDestroyable } from '@ts-core/common';\n\nexport abstract class IUser<T = any> implements IDestroyable {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n public id: UserUid;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract update(data: T): void;\n public abstract destroy(): void;\n}\n\nexport type UserUid = string | number;\n","import { DestroyableContainer } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\nimport * as _ from 'lodash';\nimport { Observable, takeUntil, Subject, filter, map } from 'rxjs';\nimport { LoginBaseService, LoginBaseServiceEvent } from '../login/LoginBaseService';\nimport { IUser, UserUid } from './IUser';\n\nexport abstract class UserBaseService<U extends IUser = any, V = void> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _user: U;\n protected observer: Subject<ObservableData<V | UserBaseServiceEvent, U | Partial<U>>>;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected login: LoginBaseService) {\n super();\n this.observer = new Subject();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n if (this.login.isLoggedIn) {\n this.loginedHandler();\n }\n\n this.login.events.pipe(takeUntil(this.destroyed)).subscribe(data => {\n if (data.type === LoginBaseServiceEvent.LOGIN_COMPLETE) {\n this.loginedHandler();\n } else if (data.type === LoginBaseServiceEvent.LOGOUT_FINISHED) {\n this.logoutedHandler();\n }\n });\n }\n\n protected initializeUser(): void {\n this._user = this.createUser(this.login.loginData);\n }\n\n protected deinitializeUser(): void {\n this._user = null;\n }\n\n protected loginedHandler(): void {\n this.initializeUser();\n this.observer.next(new ObservableData(UserBaseServiceEvent.LOGINED, this.user));\n }\n\n protected logoutedHandler(): void {\n this.deinitializeUser();\n this.observer.next(new ObservableData(UserBaseServiceEvent.LOGOUTED));\n }\n\n protected abstract createUser(data: any): U;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public isUser(value: Partial<U> | UserUid): boolean {\n if (_.isNil(value) || _.isNil(this.user)) {\n return false;\n }\n if (_.isString(value) || _.isNumber(value)) {\n return value === this.user.id;\n }\n return value.id === this.user.id;\n }\n\n public userUpdate(data: any): void {\n if (!this.hasUser) {\n return;\n }\n this.user.update(data);\n this.observer.next(new ObservableData(UserBaseServiceEvent.CHANGED, data));\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 }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get events(): Observable<ObservableData<V | UserBaseServiceEvent, U | Partial<U>>> {\n return this.observer.asObservable();\n }\n\n public get logined(): Observable<U> {\n return this.events.pipe(\n filter(item => item.type === UserBaseServiceEvent.LOGINED),\n map(item => item.data as U)\n );\n }\n\n public get changed(): Observable<Partial<U>> {\n return this.events.pipe(\n filter(item => item.type === UserBaseServiceEvent.CHANGED),\n map(item => item.data)\n );\n }\n\n public get logouted(): Observable<void> {\n return this.events.pipe(\n filter(item => item.type === UserBaseServiceEvent.LOGOUTED),\n map(() => null)\n );\n }\n\n public get hasUser(): boolean {\n return !_.isNil(this._user);\n }\n\n public get isLogined(): boolean {\n return this.hasUser;\n }\n\n public get user(): U {\n return this._user;\n }\n\n public get id(): UserUid {\n return this.hasUser ? this.user.id : null;\n }\n}\n\nexport enum UserBaseServiceEvent {\n LOGINED = 'LOGINED',\n CHANGED = 'CHANGED',\n LOGOUTED = 'LOGOUTED'\n}\n","import { Compiler, Injectable, Injector, NgModuleFactory, NgModuleRef, Type } from '@angular/core';\nimport { Loadable, LoadableEvent } from '@ts-core/common';\nimport { ExtendedError } from '@ts-core/common/error';\nimport { MapCollection } from '@ts-core/common/map';\nimport { ObservableData } from '@ts-core/common/observer';\nimport * as _ from 'lodash';\n\n@Injectable({ providedIn: 'root' })\nexport class LazyModuleLoader<T extends ILazyModuleData = ILazyModuleData> extends Loadable {\n //--------------------------------------------------------------------------\n //\n // Properties\n //\n //--------------------------------------------------------------------------\n\n protected _modules: MapCollection<T>;\n\n //--------------------------------------------------------------------------\n //\n // Constructor\n //\n //--------------------------------------------------------------------------\n\n constructor(protected compiler: Compiler, protected injector: Injector) {\n super();\n this._modules = new MapCollection('id');\n }\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected async load(item: T): Promise<void> {\n item.reference = await this.loadReference(item.path);\n }\n\n protected async loadReference<T>(path: LazyModulePath<T>): Promise<NgModuleRef<T>> {\n let moduleFactory: NgModuleFactory<T> = null;\n let elementModuleOrFactory: NgModuleFactory<T> | Type<T> = await path();\n if (elementModuleOrFactory instanceof NgModuleFactory) {\n moduleFactory = elementModuleOrFactory;\n } else {\n moduleFactory = await this.compiler.compileModuleAsync(elementModuleOrFactory);\n }\n return moduleFactory.create(this.injector);\n }\n\n protected isNeedLoad(item: T): boolean {\n return _.isNil(item.reference);\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public async loadIfNeed(id: string): Promise<T> {\n let item = this.modules.get(id);\n if (_.isNil(item)) {\n throw new ExtendedError(`Unable to find \"${id}\" module: it must be registered first`);\n }\n if (!this.isNeedLoad(item)) {\n return item;\n }\n try {\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n await this.load(item);\n } finally {\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n }\n return item;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this._modules)) {\n this._modules.destroy();\n this._modules = null;\n }\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n //--------------------------------------------------------------------------\n\n public get modules(): MapCollection<T> {\n return this._modules;\n }\n}\n\nexport interface ILazyModuleData<T = any> {\n id: string;\n path?: LazyModulePath<T>;\n reference?: NgModuleRef<T>;\n}\n\nexport type LazyModulePath<T> = () => Promise<NgModuleFactory<T> | Type<T>>;\n","import { TransportEvent } from '@ts-core/common/transport';\nimport { ITransportLazyModuleData } from './TransportLazyModule';\n\nexport class TransportLazyModuleLoadedEvent<T extends ITransportLazyModuleData = ITransportLazyModuleData> extends TransportEvent<T> {\n // --------------------------------------------------------------------------\n //\n // Public Static Properties\n //\n // --------------------------------------------------------------------------\n\n public static readonly NAME = 'TransportLazyModuleLoadedEvent';\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(request: T) {\n super(TransportLazyModuleLoadedEvent.NAME, request);\n }\n}\n","import { ITransportCommand, ITransportCommandOptions, ITransportEvent, ITransportSettings } from '@ts-core/common/transport';\nimport { TransportLocal } from '@ts-core/common/transport/local';\nimport * as _ from 'lodash';\nimport { LazyModuleLoader } from '../module/LazyModuleLoader';\nimport { ILogger } from '@ts-core/common/logger';\nimport { ITransportLazyModuleData } from './TransportLazyModule';\nimport { TransportLazyModuleLoadedEvent } from './TransportLazyModuleLoadedEvent';\n\nexport class TransportLazy extends TransportLocal {\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n constructor(logger: ILogger, protected loader: LazyModuleLoader<ITransportLazyModuleData>, settings?: ITransportSettings) {\n super(logger, settings, null);\n\n this.getDispatcher<TransportLazyModuleLoadedEvent<ITransportLazyModuleData>>(TransportLazyModuleLoadedEvent.NAME).subscribe(event =>\n this.moduleLoadedHandler(event.data)\n );\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n protected moduleLoadedHandler(module: ITransportLazyModuleData): void {\n let item = this.loader.modules.get(module.id);\n if (_.isNil(item)) {\n item = this.loader.modules.add(module);\n }\n if (_.isNil(item.reference)) {\n item.reference = module.reference;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected async dispatchCommand<U>(command: ITransportCommand<U>, options: ITransportCommandOptions, isNeedReply: boolean): Promise<void> {\n let item = this.getModuleByCommand(command.name);\n if (!_.isNil(item)) {\n await this.loader.loadIfNeed(item.id);\n }\n super.dispatchCommand(command, options, isNeedReply);\n }\n\n protected getModuleByCommand(name: string): ITransportLazyModuleData {\n if (this.loader.modules.length === 0) {\n return null;\n }\n for (let item of this.loader.modules.collection) {\n if (_.isEmpty(item.commands)) {\n continue;\n }\n if (_.includes(item.commands, name)) {\n return item;\n }\n }\n return null;\n }\n\n protected getModuleByEvent(name: string): ITransportLazyModuleData {\n if (_.isNil(this.loader) || this.loader.modules.length === 0) {\n return null;\n }\n for (let item of this.loader.modules.collection) {\n if (_.isEmpty(item.events)) {\n continue;\n }\n if (_.includes(item.events, name)) {\n return item;\n }\n }\n return null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public dispatch<T>(event: ITransportEvent<T>): void {\n let item = this.getModuleByEvent(event.name);\n if (!_.isNil(this.loader) && !_.isNil(item)) {\n this.loader.loadIfNeed(item.id).then(() => super.dispatch(event));\n } else {\n super.dispatch(event);\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.loader = null;\n }\n}\n","import { NgModuleRef } from '@angular/core';\nimport { Transport } from '@ts-core/common/transport';\nimport { ILazyModuleData } from '../module/LazyModuleLoader';\nimport { TransportLazyModuleLoadedEvent } from './TransportLazyModuleLoadedEvent';\n\nexport abstract class TransportLazyModule<T> implements ITransportLazyModuleData<T> {\n //--------------------------------------------------------------------------\n //\n // Constructor\n //\n //--------------------------------------------------------------------------\n\n constructor(public reference: NgModuleRef<T>, protected transport: Transport) {\n this.moduleLoadedDispatch();\n }\n\n //--------------------------------------------------------------------------\n //\n // Protected Methods\n //\n //--------------------------------------------------------------------------\n\n protected moduleLoadedDispatch(): void {\n this.transport.dispatch(new TransportLazyModuleLoadedEvent(this));\n }\n\n //--------------------------------------------------------------------------\n //\n // Public Properties\n //\n //--------------------------------------------------------------------------\n\n public abstract get id(): string;\n\n public get events(): Array<string> {\n return new Array();\n }\n\n public get commands(): Array<string> {\n return new Array();\n }\n}\n\nexport interface ITransportLazyModuleData<T = any> extends ILazyModuleData<T> {\n events?: Array<string>;\n commands?: Array<string>;\n}\n","/* ======= */\nexport * from './application/ApplicationBaseComponent';\nexport * from './application/ApplicationComponent';\nexport * from './application/MessageBaseComponent';\nexport * from './application/ShellBaseComponent';\n/* ======= */\nexport * from './ApplicationInjector';\n/* ======= */\nexport * from './asset/AssetBackgroundDirective';\nexport * from './asset/AssetBackgroundPipe';\nexport * from './asset/AssetIconPipe';\nexport * from './asset/AssetFilePipe';\nexport * from './asset/AssetVideoPipe';\nexport * from './asset/AssetSoundPipe';\nexport * from './asset/AssetImagePipe';\nexport * from './asset/AssetModule';\n/* ======= */\n\nexport * from './component/VIComponentModule';\n\nexport * from './component/tab-group/tab-group.component';\nexport * from './component/menu-list/menu-list.component';\nexport * from './component/select-list/select-list.component';\nexport * from './component/language/language-selector/language-selector.component';\n\nexport * from './component/cdk-table/CdkTableDataSource';\nexport * from './component/cdk-table/CdkTablePaginableMapCollection';\nexport * from './component/cdk-table/CdkTableFilterableMapCollection';\nexport * from './component/cdk-table/CdkTablePaginableBookmarkMapCollection';\n\nexport * from './component/cdk-table/row/ICdkTableRow';\nexport * from './component/cdk-table/row/CdkTableRowClassNamePipe';\nexport * from './component/cdk-table/row/CdkTableRowStyleNamePipe';\n\nexport * from './component/cdk-table/column/ICdkTableColumn';\nexport * from './component/cdk-table/column/CdkTableColumnValuePipe';\nexport * from './component/cdk-table/column/CdkTableCellClassNamePipe';\nexport * from './component/cdk-table/column/CdkTableColumnClassNamePipe';\nexport * from './component/cdk-table/column/CdkTableColumnStyleNamePipe';\n\nexport * from './component/cdk-table/CdkTableBaseComponent';\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\n/* ======= */\nexport * from './cookie/CookieModule';\nexport * from './cookie/CookieOptions';\nexport * from './cookie/CookieService';\n/* ======= */\nexport * from './directive/AspectRatioResizeDirective';\nexport * from './directive/AutoScrollBottomDirective';\nexport * from './directive/ClickToCopyDirective';\nexport * from './directive/ClickToSelectDirective';\nexport * from './directive/FocusDirective';\nexport * from './directive/SelectOnFocusDirective';\nexport * from './directive/InfiniteScrollDirective';\nexport * from './directive/ResizeDirective';\nexport * from './directive/ScrollDirective';\nexport * from './directive/ScrollCheckDirective';\nexport * from './directive/MenuTriggerForDirective';\nexport * from './directive/HTMLContentTitleDirective';\n/* ======= */\nexport * from './form/FormElementAsync';\nexport * from './form/FormElementSync';\n/* ======= */\nexport * from './language/LanguageMatPaginatorIntl';\nexport * from './language/LanguageModule';\nexport * from './language/LanguageMomentDateAdapter';\nexport * from './language/LanguagePipe';\nexport * from './language/LanguagePipePure';\nexport * from './language/LanguagePipeHas';\nexport * from './language/LanguagePipeHasPure';\nexport * from './language/LanguageResolver';\nexport * from './language/LanguageRequireResolver';\nexport * from './language/LanguageDirective';\nexport * from './language/LanguageHasDirective';\n/* ======= */\nexport * from './login/LoginGuard';\nexport * from './login/LoginIfCanGuard';\nexport * from './login/LoginNotGuard';\nexport * from './login/LoginResolver';\nexport * from './login/LoginBaseService';\nexport * from './login/LoginRequireResolver';\n/* ======= */\nexport * from './manager/FocusManager';\nexport * from './manager/ResizeManager';\n/* ======= */\nexport * from './menu/MenuItem';\nexport * from './menu/MenuItemBase';\nexport * from './menu/MenuItems';\nexport * from './menu/NavigationMenuItem';\n/* ======= */\nexport * from './list/IListItem';\nexport * from './list/ListItem';\nexport * from './list/ListItems';\nexport * from './list/select/ISelectListItem';\nexport * from './list/select/SelectListItem';\nexport * from './list/select/SelectListItems';\n/* ======= */\nexport * from './notification/INotification';\nexport * from './notification/INotificationContent';\nexport * from './notification/NotificationConfig';\nexport * from './notification/NotificationFactory';\nexport * from './notification/NotificationModule';\nexport * from './notification/NotificationProperties';\nexport * from './notification/NotificationService';\nexport * from './notification/component/NotificationBaseComponent';\nexport * from './notification/component/notification/notification.component';\n/* ======= */\nexport * from './bottomSheet/BottomSheetService';\n/* ======= */\nexport * from './pipe/CamelCasePipe';\nexport * from './pipe/FinancePipe';\nexport * from './pipe/MomentDateAdaptivePipe';\nexport * from './pipe/MomentDateFromNowPipe';\nexport * from './pipe/MomentDatePipe';\nexport * from './pipe/MomentTimePipe';\nexport * from './pipe/NgModelErrorPipe';\nexport * from './pipe/SanitizePipe';\nexport * from './pipe/StartCasePipe';\nexport * from './pipe/TruncatePipe';\nexport * from './pipe/PrettifyPipe';\nexport * from './pipe/TimePipe';\n/* ======= */\nexport * from './question/IQuestion';\nexport * from './question/QuestionManager';\nexport * from './service/PipeBaseService';\nexport * from './service/BootstrapBreakpointService';\n/* ======= */\nexport * from './service/RouterBaseService';\nexport * from './service/route/CanDeactivateGuard';\nexport * from './service/route/IRouterDeactivatable';\n/* ======= */\nexport * from './theme/ThemeStyleHoverDirective';\nexport * from './theme/ThemeStyleDirective';\nexport * from './theme/ThemeAssetBackgroundDirective';\nexport * from './theme/ThemeAssetImageDirective';\nexport * from './theme/ThemeAssetDirective';\nexport * from './theme/ThemeModule';\nexport * from './theme/ThemeToggleDirective';\n/* ======= */\nexport * from './user/IUser';\nexport * from './user/UserBaseService';\n/* ======= */\nexport * from './module/LazyModuleLoader';\n/* ======= */\nexport * from './transport/TransportLazy';\nexport * from './transport/TransportLazyModule';\nexport * from './transport/TransportLazyModuleLoadedEvent';\n/* ======= */\nexport * from './util/ViewUtil';\nexport * from './VICommonModule';\n/* ======= */\nexport * from './window/IWindow';\nexport * from './window/WindowImpl';\nexport * from './window/WindowBase';\nexport * from './window/WindowConfig';\nexport * from './window/WindowFactory';\nexport * from './window/WindowModule';\nexport * from './window/IWindowContent';\nexport * from './window/WindowService';\nexport * from './window/WindowProperties';\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-minimize-element/window-minimize-element.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["takeUntil","debounceTime","filter","IMPORTS","ENTRY_COMPONENTS","DECLARATIONS","EXPORTS","map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ts-core-angular.mjs","sources":["../../src/application/ApplicationBaseComponent.ts","../../src/util/ViewUtil.ts","../../src/application/ApplicationComponent.ts","../../src/application/MessageBaseComponent.ts","../../src/question/IQuestion.ts","../../src/question/QuestionManager.ts","../../src/window/IWindow.ts","../../src/window/WindowConfig.ts","../../src/notification/INotification.ts","../../src/notification/NotificationConfig.ts","../../src/notification/NotificationService.ts","../../src/application/ShellBaseComponent.ts","../../src/ApplicationInjector.ts","../../src/asset/AssetBackgroundDirective.ts","../../src/asset/AssetBackgroundPipe.ts","../../src/asset/AssetIconPipe.ts","../../src/asset/AssetFilePipe.ts","../../src/asset/AssetVideoPipe.ts","../../src/asset/AssetSoundPipe.ts","../../src/asset/AssetImagePipe.ts","../../src/asset/AssetModule.ts","../../src/cookie/CookieService.ts","../../src/cookie/CookieModule.ts","../../src/manager/ResizeManager.ts","../../src/directive/AspectRatioResizeDirective.ts","../../src/directive/ScrollDirective.ts","../../src/directive/InfiniteScrollDirective.ts","../../src/directive/AutoScrollBottomDirective.ts","../../src/directive/ClickToCopyDirective.ts","../../src/directive/ClickToSelectDirective.ts","../../src/manager/FocusManager.ts","../../src/directive/FocusDirective.ts","../../src/directive/SelectOnFocusDirective.ts","../../src/directive/HTMLContentTitleDirective.ts","../../src/directive/ResizeDirective.ts","../../src/directive/ScrollCheckDirective.ts","../../src/language/LanguageMatPaginatorIntl.ts","../../src/language/LanguagePipe.ts","../../src/language/LanguagePipePure.ts","../../src/language/LanguageRequireResolver.ts","../../src/language/LanguageResolver.ts","../../src/language/LanguageDirective.ts","../../src/language/LanguagePipeHas.ts","../../src/language/LanguagePipeHasPure.ts","../../src/language/LanguageHasDirective.ts","../../src/language/LanguageModule.ts","../../src/window/WindowFactory.ts","../../src/window/WindowBase.ts","../../src/window/WindowImpl.ts","../../src/bottomSheet/BottomSheetImpl.ts","../../src/window/component/WindowElement.ts","../../src/bottomSheet/component/bottom-sheet-close-element/bottom-sheet-close-element.component.ts","../../src/bottomSheet/component/BottomSheetBaseComponent.ts","../../src/window/WindowService.ts","../../src/window/IWindowContent.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/BottomSheetService.ts","../../src/bottomSheet/BottomSheetModule.ts","../../src/notification/NotificationImpl.ts","../../src/notification/component/NotificationBaseComponent.ts","../../src/notification/INotificationContent.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/NotificationModule.ts","../../src/pipe/CamelCasePipe.ts","../../src/pipe/FinancePipe.ts","../../src/pipe/MomentDatePipe.ts","../../src/pipe/MomentDateAdaptivePipe.ts","../../src/pipe/MomentDateFromNowPipe.ts","../../src/pipe/MomentTimePipe.ts","../../src/pipe/NgModelErrorPipe.ts","../../src/pipe/SanitizePipe.ts","../../src/pipe/StartCasePipe.ts","../../src/pipe/TimePipe.ts","../../src/pipe/TruncatePipe.ts","../../src/pipe/PrettifyPipe.ts","../../src/theme/ThemeAssetDirective.ts","../../src/theme/ThemeAssetBackgroundDirective.ts","../../src/theme/ThemeAssetImageDirective.ts","../../src/theme/ThemeToggleDirective.ts","../../src/theme/ThemeStyleDirective.ts","../../src/theme/ThemeStyleHoverDirective.ts","../../src/theme/ThemeModule.ts","../../src/window/component/WindowDragAreaDirective.ts","../../src/window/component/window-close-element/window-close-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/component/WindowResizeable.ts","../../src/window/component/WindowDragable.ts","../../src/window/component/WindowBaseComponent.ts","../../src/window/WindowModule.ts","../../src/directive/MenuTriggerForDirective.ts","../../src/VICommonModule.ts","../../src/component/language/language-selector/language-selector.component.ts","../../src/component/language/language-selector/language-selector.component.html","../../src/component/menu-list/menu-list.component.ts","../../src/component/menu-list/menu-list.component.html","../../src/component/select-list/select-list.component.ts","../../src/component/select-list/select-list.component.html","../../src/component/tab-group/tab-group.component.ts","../../src/component/tab-group/tab-group.component.html","../../src/component/cdk-table/CdkTableDataSource.ts","../../src/component/cdk-table/CdkTableFilterableMapCollection.ts","../../src/component/cdk-table/CdkTableBaseComponent.ts","../../src/component/cdk-table/column/CdkTableColumnClassNamePipe.ts","../../src/component/cdk-table/column/CdkTableColumnStyleNamePipe.ts","../../src/component/cdk-table/column/CdkTableCellClassNamePipe.ts","../../src/component/cdk-table/column/CdkTableColumnValuePipe.ts","../../src/component/cdk-table/row/CdkTableRowClassNamePipe.ts","../../src/component/cdk-table/row/CdkTableRowStyleNamePipe.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/component/VIComponentModule.ts","../../src/component/cdk-table/CdkTablePaginableMapCollection.ts","../../src/component/cdk-table/CdkTablePaginableBookmarkMapCollection.ts","../../src/cookie/CookieOptions.ts","../../src/form/validate.ts","../../src/form/ValueAccessor.ts","../../src/form/FormElementAsync.ts","../../src/form/FormElementSync.ts","../../src/language/LanguageMomentDateAdapter.ts","../../src/login/LoginBaseService.ts","../../src/login/LoginRequireResolver.ts","../../src/login/LoginGuard.ts","../../src/login/LoginNotGuard.ts","../../src/login/LoginIfCanGuard.ts","../../src/login/LoginResolver.ts","../../src/menu/MenuItemBase.ts","../../src/menu/MenuItem.ts","../../src/menu/MenuItems.ts","../../src/menu/NavigationMenuItem.ts","../../src/list/ListItem.ts","../../src/list/ListItems.ts","../../src/list/select/SelectListItem.ts","../../src/list/select/SelectListItems.ts","../../src/service/PipeBaseService.ts","../../src/service/BootstrapBreakpointService.ts","../../src/service/RouterBaseService.ts","../../src/service/route/CanDeactivateGuard.ts","../../src/user/IUser.ts","../../src/user/UserBaseService.ts","../../src/module/LazyModuleLoader.ts","../../src/transport/TransportLazyModuleLoadedEvent.ts","../../src/transport/TransportLazy.ts","../../src/transport/TransportLazyModule.ts","../../src/public-api.ts","../../src/ts-core-angular.ts"],"sourcesContent":["import { AfterViewInit, Component, Inject, Injectable, Optional } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { PromiseHandler } from '@ts-core/common/promise';\nimport * as _ from 'lodash';\n\n@Component({ template: '' })\nexport abstract class ApplicationBaseComponent extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected timeout: any;\n protected isReadyAlreadyCalled: boolean;\n\n protected viewReadyDelay: number = NaN;\n protected viewReadyPromise: PromiseHandler<void, void>;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n this.viewReadyPromise = PromiseHandler.create();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private makeViewReady = (): void => {\n this.viewReadyPromise.resolve();\n this.viewReadyHandler();\n this.checkReady();\n };\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected checkReady(): void {\n if (this.isReadyAlreadyCalled || !this.isReady()) {\n return;\n }\n this.isReadyAlreadyCalled = true;\n this.readyHandler();\n }\n\n protected isReady(): boolean {\n return this.isViewReady;\n }\n\n protected viewReadyHandler(): void {}\n\n protected abstract readyHandler(): void;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n if (this.viewReadyDelay > 0) {\n PromiseHandler.delay(this.viewReadyDelay).then(this.makeViewReady);\n } else {\n this.makeViewReady();\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this.viewReadyPromise)) {\n this.viewReadyPromise.reject();\n this.viewReadyPromise = null;\n }\n\n if (!_.isNil(this.timeout)) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isViewReady(): boolean {\n return !_.isNil(this.viewReadyPromise) ? this.viewReadyPromise.isResolved : false;\n }\n public get viewReady(): Promise<void> {\n return !_.isNil(this.viewReadyPromise) ? this.viewReadyPromise.promise : null;\n }\n}\n","import { ElementRef, Renderer2, RendererStyleFlags2, ViewContainerRef } from '@angular/core';\nimport { ExtendedError } from '@ts-core/common/error';\nimport * as _ from 'lodash';\n\nexport class ViewUtil {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n private static _renderer: Renderer2 = null;\n private static get renderer(): Renderer2 {\n if (_.isNil(ViewUtil._renderer)) {\n throw new ExtendedError(`ViewUtil is not initialized: renderer in nil`);\n }\n return ViewUtil._renderer;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private static copyToClipboard(): void {\n try {\n document.execCommand('copy');\n } catch (error) {}\n }\n\n // --------------------------------------------------------------------------\n //\n //\tCommon Properties\n //\n // --------------------------------------------------------------------------\n\n public static initialize(renderer: Renderer2): void {\n ViewUtil._renderer = renderer;\n }\n\n public static parseElement(element: IViewElement): HTMLElement {\n if (element instanceof HTMLElement) {\n return element;\n }\n if (element instanceof ViewContainerRef) {\n element = element.element;\n }\n return !_.isNil(element) ? element.nativeElement : null;\n }\n\n public static createBase64(element: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): string {\n let value = null;\n let canvas = ViewUtil.createElement('canvas');\n ViewUtil.setProperty(canvas, 'width', element.offsetWidth);\n ViewUtil.setProperty(canvas, 'height', element.offsetHeight);\n\n try {\n let context = canvas.getContext('2d');\n context.drawImage(element, 0, 0, element.offsetWidth, element.offsetHeight);\n value = canvas.toDataURL('image/jpeg', 1.0);\n value = value.replace('data:image/jpeg;base64,', '');\n } catch (error) {}\n return value;\n }\n\n public static selectContent(container: IViewElement, isNeedCopyToClipboard: boolean = false): void {\n container = ViewUtil.parseElement(container);\n if (container instanceof HTMLInputElement || container instanceof HTMLTextAreaElement) {\n let isWasDisabled = container.disabled;\n if (isWasDisabled) {\n container.disabled = false;\n }\n container.select();\n if (isNeedCopyToClipboard) {\n ViewUtil.copyToClipboard();\n }\n if (isWasDisabled) {\n container.disabled = true;\n }\n } else {\n let selection = window.getSelection();\n selection.removeAllRanges();\n\n let range = document.createRange();\n if (!_.isNil(container)) {\n range.selectNodeContents(container);\n }\n selection.addRange(range);\n\n if (isNeedCopyToClipboard) {\n ViewUtil.copyToClipboard();\n }\n }\n }\n\n public static setBackground(container: IViewElement, image: string, repeat: string = 'repeat'): void {\n if (_.isNil(image)) {\n ViewUtil.removeStyle(container, 'backgroundImage');\n ViewUtil.removeStyle(container, 'backgroundRepeat');\n return;\n }\n\n if (!image.includes('url(')) {\n image = 'url(' + image + ')';\n }\n\n ViewUtil.setStyle(container, 'backgroundImage', image);\n ViewUtil.setStyle(container, 'backgroundRepeat', repeat);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tChild Methods\n //\n // --------------------------------------------------------------------------\n\n public static createElement(name: string, className?: string, innerHTML?: string): any {\n let element = ViewUtil.renderer.createElement(name);\n if (!_.isNil(name)) {\n ViewUtil.setProperty(element, 'className', className);\n }\n if (!_.isNil(innerHTML)) {\n ViewUtil.setProperty(element, 'innerHTML', innerHTML);\n }\n return element;\n }\n\n public static appendChild(parent: any, child: any): void {\n if (!_.isNil(parent) && !_.isNil(child)) {\n ViewUtil.renderer.appendChild(parent, child);\n }\n }\n\n public static removeChild(parent: any, child: any): void {\n if (!_.isNil(parent) && !_.isNil(child)) {\n ViewUtil.renderer.removeChild(parent, child);\n }\n }\n\n public static toggleChild(container: Node, child: Node, value: boolean): void {\n let isContains = container.contains(child);\n if (value && !isContains) {\n ViewUtil.appendChild(container, child);\n }\n if (!value && isContains) {\n ViewUtil.removeChild(container, child);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tSize Methods\n //\n // --------------------------------------------------------------------------\n\n public static getStageWidth(): number {\n return window.innerWidth || document.body.clientWidth;\n }\n\n public static getStageHeight(): number {\n return window.innerHeight || document.body.clientHeight;\n }\n\n public static getWidth(container: IViewElement): number {\n container = ViewUtil.parseElement(container);\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'width'));\n if (_.isNaN(value)) {\n value = container.getBoundingClientRect().width;\n }\n if (_.isNaN(value)) {\n value = container.offsetWidth;\n }\n return value;\n }\n\n public static setWidth(container: IViewElement, value: number, isNeedCheckLimits: boolean = false): boolean {\n if (_.isNil(container) || _.isNaN(value)) {\n return false;\n }\n\n if (\n isNeedCheckLimits &&\n (value < ViewUtil.getMinWidth(container) || value > ViewUtil.getMaxWidth(container) || value === ViewUtil.getWidth(container))\n ) {\n return false;\n }\n\n ViewUtil.setStyle(container, 'width', value + 'px');\n return true;\n }\n\n public static getMaxWidth(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'maxWidth'));\n if (_.isNaN(value)) {\n value = Number.POSITIVE_INFINITY;\n }\n return value;\n }\n\n public static getMinWidth(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'minWidth'));\n if (_.isNaN(value)) {\n value = 0;\n }\n return value;\n }\n\n public static getHeight(container: IViewElement): number {\n container = ViewUtil.parseElement(container);\n if (_.isNil(container)) {\n return NaN;\n }\n\n let value = parseFloat(ViewUtil.getStyle(container, 'height'));\n if (_.isNaN(value)) {\n value = container.getBoundingClientRect().height;\n }\n if (_.isNaN(value)) {\n value = container.offsetHeight;\n }\n return value;\n }\n public static setHeight(container: IViewElement, value: number, isNeedCheckLimits: boolean = false): boolean {\n if (_.isNil(container) || _.isNaN(value)) {\n return false;\n }\n if (\n isNeedCheckLimits &&\n (value < ViewUtil.getMinHeight(container) || value > ViewUtil.getMaxHeight(container) || value === ViewUtil.getHeight(container))\n ) {\n return false;\n }\n ViewUtil.setStyle(container, 'height', value + 'px');\n return true;\n }\n public static getMaxHeight(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'maxHeight'));\n if (_.isNaN(value)) {\n value = Number.POSITIVE_INFINITY;\n }\n return value;\n }\n public static getMinHeight(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'minHeight'));\n if (isNaN(value)) {\n value = 0;\n }\n return value;\n }\n\n public static size(container: IViewElement, width: number, height: number, isNeedCheckLimits: boolean): void {\n ViewUtil.setWidth(container, width, isNeedCheckLimits);\n ViewUtil.setHeight(container, height, isNeedCheckLimits);\n }\n\n public static getX(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'left'));\n return _.isNaN(value) ? 0 : value;\n }\n\n public static setX(container: IViewElement, value: number): void {\n if (!_.isNil(container) && !_.isNaN(value)) {\n ViewUtil.setStyle(container, 'left', value + 'px');\n }\n }\n\n public static getY(container: IViewElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'top'));\n return _.isNaN(value) ? 0 : value;\n }\n public static setY(container: IViewElement, value: number): void {\n if (!_.isNil(container) && !_.isNaN(value)) {\n ViewUtil.setStyle(container, 'top', value + 'px');\n }\n }\n public static move(container: IViewElement, x: number, y: number): void {\n ViewUtil.setX(container, x);\n ViewUtil.setY(container, y);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tFocus Methods\n //\n // --------------------------------------------------------------------------\n\n public static focusInput(input: HTMLInputElement | HTMLTextAreaElement): void {\n let caretIndex = 0;\n if (!_.isNil(input.value)) {\n caretIndex = Math.max(0, input.value.toString().length);\n }\n input.focus();\n input.setSelectionRange(caretIndex, caretIndex);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tClasses Methods\n //\n // --------------------------------------------------------------------------\n\n public static addClass(container: IViewElement, name: string): void {\n if (_.isNil(name)) {\n return;\n }\n container = ViewUtil.parseElement(container);\n if (!_.isNil(container)) {\n ViewUtil.renderer.addClass(container, name);\n }\n }\n\n public static addClasses(container: IViewElement, names: string): void {\n if (_.isEmpty(names)) {\n return;\n }\n names.split(' ').forEach(name => ViewUtil.addClass(container, name));\n }\n\n public static removeClass(container: IViewElement, name: string): void {\n if (_.isNil(name)) {\n return;\n }\n container = ViewUtil.parseElement(container);\n if (!_.isNil(container)) {\n ViewUtil.renderer.removeClass(container, name);\n }\n }\n\n public static removeClasses(container: IViewElement, names: string): void {\n if (_.isEmpty(names)) {\n return;\n }\n names.split(' ').forEach(name => ViewUtil.removeClass(container, name));\n }\n\n public static hasClass(container: IViewElement, name: string): boolean {\n if (_.isNil(name)) {\n return false;\n }\n container = ViewUtil.parseElement(container);\n return !_.isNil(container) ? container.classList.contains(name) : false;\n }\n\n public static toggleClass(container: IViewElement, name: string, value: boolean): void {\n if (value) {\n ViewUtil.addClass(container, name);\n } else {\n ViewUtil.removeClass(container, name);\n }\n }\n\n public static getProperty(container: IViewElement, name: string): any {\n if (_.isNil(name)) {\n return null;\n }\n container = ViewUtil.parseElement(container);\n return !_.isNil(container) ? container[name] : null;\n }\n\n public static setProperty(container: IViewElement, name: string, value: any): void {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return;\n }\n if (!_.isNil(value)) {\n ViewUtil.renderer.setProperty(container, name, value);\n } else {\n ViewUtil.removeProperty(container, name);\n }\n }\n\n public static removeProperty(container: IViewElement, name: string): void {\n ViewUtil.removeAttribute(container, name);\n }\n\n public static removeAttribute(container: IViewElement, name: string): void {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return;\n }\n ViewUtil.renderer.removeAttribute(container, name);\n }\n\n public static setAttribute(container: IViewElement, name: string, value: any): void {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return;\n }\n if (!_.isNil(value)) {\n ViewUtil.renderer.setAttribute(container, name, value);\n } else {\n ViewUtil.removeAttribute(container, name);\n }\n }\n\n public static getStyle(container: IViewElement, name: string): any {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return null;\n }\n return container.style[name];\n }\n\n public static setStyle(container: IViewElement, name: string, value: any, flags?: RendererStyleFlags2): void {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return;\n }\n if (value !== ViewUtil.getStyle(container, name)) {\n ViewUtil.renderer.setStyle(container, name, value, flags);\n }\n }\n\n public static removeStyle(container: IViewElement, name: string, flags?: RendererStyleFlags2): void {\n container = ViewUtil.parseElement(container);\n if (_.isNil(name) || _.isNil(container)) {\n return;\n }\n ViewUtil.renderer.removeStyle(container, name, flags);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tVideo Methods\n //\n // --------------------------------------------------------------------------\n\n public static createVideo(isMute: boolean = true, isInline: boolean = false): HTMLVideoElement {\n let video = ViewUtil.createElement('video');\n ViewUtil.setProperty(video, 'autoplay', true);\n if (isMute) {\n ViewUtil.setVideoMuteParameters(video, isMute);\n }\n if (isInline) {\n ViewUtil.setVideoInlineParameters(video);\n }\n return video;\n }\n\n public static setVideoMuteParameters(video: HTMLVideoElement, isMute: boolean = true): void {\n if (!_.isNil(video)) {\n video.muted = video.defaultMuted = isMute;\n }\n }\n\n public static setVideoInlineParameters(video: HTMLVideoElement): void {\n ViewUtil.setAttribute(video, 'webkit-playsinline', 1);\n ViewUtil.setAttribute(video, 'playsinline', true);\n }\n\n public static getVideoError(video: HTMLVideoElement): string {\n if (_.isNil(video) || _.isNil(video.error)) {\n return null;\n }\n\n let error: MediaError = video.error;\n let value = 'Video error ' + video.src + ', ';\n switch (error.code) {\n case MediaError.MEDIA_ERR_ABORTED:\n value += 'media aborted';\n break;\n case MediaError.MEDIA_ERR_DECODE:\n value += 'error to decode';\n break;\n case MediaError.MEDIA_ERR_NETWORK:\n value += 'network error';\n break;\n case MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED:\n value += 'source not supported';\n break;\n }\n return value;\n }\n\n public static playVideo(video: HTMLVideoElement): Promise<void> {\n if (_.isNil(video)) {\n return null;\n }\n\n try {\n return video.play();\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n public static playAudio(audio: HTMLAudioElement): Promise<void> {\n if (_.isNil(audio)) {\n return null;\n }\n try {\n return audio.play();\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n public static pauseVideo(video: HTMLVideoElement): void {\n if (!_.isNil(video)) {\n video.pause();\n }\n }\n\n public static isVideoPlaying(video: HTMLVideoElement): boolean {\n return !_.isNil(video) ? !video.paused && !video.ended : false;\n }\n\n public static loadVideo(video: HTMLVideoElement): void {\n if (!_.isNil(video)) {\n video.load();\n }\n }\n\n public static stopVideoIfNeed(video: HTMLVideoElement): void {\n if (!_.isNil(video) && (!_.isNil(video.src) || !_.isNil(video.srcObject))) {\n ViewUtil.stopVideo(video);\n }\n }\n\n public static stopVideo(video: HTMLVideoElement): void {\n if (_.isNil(video)) {\n return;\n }\n\n if (video.srcObject instanceof MediaStream) {\n let tracks = video.srcObject.getTracks();\n tracks.forEach(track => track.stop());\n }\n\n video.srcObject = null;\n\n video.pause();\n video.src = '';\n video.load();\n }\n\n public static disposeVideo(video: HTMLVideoElement): void {\n ViewUtil.stopVideo(video);\n ViewUtil.removeChild(video.parentNode, video);\n video.remove();\n }\n\n public static disposeVideos(container: IViewElement): void {\n container = ViewUtil.parseElement(container);\n for (let i = container.children.length - 1; i >= 0; i--) {\n let item = container.children.item(i);\n if (item instanceof HTMLVideoElement) {\n ViewUtil.disposeVideo(item);\n }\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tObject Methods\n //\n // --------------------------------------------------------------------------\n\n public static disposeObjects(container: IViewElement, isIEBrowser?: boolean): void {\n container = ViewUtil.parseElement(container);\n for (let i = container.children.length - 1; i >= 0; i--) {\n let item = container.children.item(i);\n if (item instanceof HTMLObjectElement) {\n ViewUtil.disposeObject(item, isIEBrowser);\n }\n }\n }\n\n public static disposeObject(object: HTMLObjectElement, isIEBrowser?: boolean): void {\n if (isIEBrowser && object['readyState'] === 4) {\n for (let i in object) {\n if (_.isFunction(object[i])) {\n object[i] = null;\n }\n }\n }\n ViewUtil.removeChild(object.parentNode, object);\n }\n}\n\nexport type IViewElement<T extends HTMLElement = HTMLElement> = HTMLElement | ElementRef<T> | ViewContainerRef;\n","import { Renderer2 } from '@angular/core';\nimport { LoadableEvent } from '@ts-core/common';\nimport { Assets } from '@ts-core/frontend/asset';\nimport { Language } from '@ts-core/language';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { SettingsBaseService } from '@ts-core/frontend/service';\nimport { ThemeService } from '@ts-core/frontend/theme';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { ApplicationBaseComponent } from './ApplicationBaseComponent';\nimport * as _ from 'lodash';\nimport moment from 'moment';\nimport numeral from 'numeral';\nimport { UrlUtil } from '@ts-core/common/util';\n\nexport abstract class ApplicationComponent<T extends SettingsBaseService> extends ApplicationBaseComponent {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private isLanguageLoaded: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n Assets.initialize(this.settings.assetsUrl);\n ViewUtil.initialize(this.renderer);\n\n this.initializeTheme();\n this.initializeLanguage();\n }\n\n protected initializeTheme(): void {\n this.theme.initialize(this.settings.themes);\n }\n\n protected initializeLanguage(): void {\n this.language.initialize(`${this.settings.assetsUrl}language/`, this.settings.languages);\n this.language.events.pipe(takeUntil(this.destroyed)).subscribe(data => {\n switch (data.type) {\n case LoadableEvent.COMPLETE:\n this.languageLoadingComplete(data.data as Language);\n break;\n case LoadableEvent.ERROR:\n this.languageLoadingError(data.data as Language, data.error);\n break;\n }\n });\n }\n\n protected isReady(): boolean {\n return super.isReady() && this.isLanguageLoaded;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected languageLoadingComplete(item: Language): void {\n this.isLanguageLoaded = true;\n this.setLocale(item);\n this.checkReady();\n }\n\n protected abstract languageLoadingError(item: Language, error: Error): void;\n\n protected viewReadyHandler(): void {\n this.initialize();\n }\n\n protected setLocale(item: Language): void {\n moment.locale(item.locale);\n numeral.locale(item.locale);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Service Properties\n //\n // --------------------------------------------------------------------------\n\n protected abstract get settings(): T;\n\n protected abstract get theme(): ThemeService;\n protected abstract get language(): LanguageService;\n protected abstract get renderer(): Renderer2;\n}\n","import { ActivatedRoute } from '@angular/router';\nimport { DestroyableContainer, LoadableEvent } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\n\nexport abstract class MessageBaseComponent extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n public text: string;\n public refreshText: string = 'Refresh';\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected route: ActivatedRoute, protected language: LanguageService) {\n super();\n // this.login.isAutoLogin = true\n\n this.text = this.getText();\n if (this.language.isLoaded) {\n this.commitLanguageProperties();\n }\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.commitLanguageProperties());\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitLanguageProperties(): void {\n if (this.language.isHasTranslation('general.refresh')) {\n this.refreshText = this.language.translate('general.refresh');\n }\n }\n\n protected getText(): string {\n let value = this.getValue(this.route.snapshot.queryParams);\n if (_.isNil(value)) {\n value = this.getValue(this.route.snapshot.params);\n }\n return value;\n }\n\n protected getValue(data: any): string {\n for (let item of this.getMessageFields()) {\n let value = data[item];\n if (!_.isEmpty(value)) {\n return value;\n }\n }\n return null;\n }\n\n protected getMessageFields(): Array<string> {\n return ['text', 'message', 'error'];\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract refresh(): void;\n}\n","export interface IQuestion {\n readonly mode: QuestionMode;\n readonly isChecked: boolean;\n\n readonly text: string;\n readonly notText: string;\n readonly yesText: string;\n readonly closeText: string;\n readonly checkText: string;\n\n readonly closePromise: Promise<void>;\n readonly yesNotPromise: Promise<void>;\n}\n\nexport interface IQuestionOptions {\n text?: string;\n mode?: QuestionMode;\n isChecked?: boolean;\n yesTextId?: string;\n notTextId?: string;\n checkTextId?: string;\n closeTextId?: string;\n}\n\nexport enum QuestionMode {\n INFO = 'INFO',\n QUESTION = 'QUESTION'\n}\n\nexport enum QuestionEvent {\n YES = 'YES',\n NOT = 'NOT',\n CLOSE = 'CLOSE',\n CHECK = 'CHECK',\n UNCHECK = 'UNCHECK'\n}\n","import * as _ from 'lodash';\nimport { PromiseHandler } from '@ts-core/common/promise';\nimport { Destroyable } from '@ts-core/common';\nimport { IQuestion, IQuestionOptions, QuestionMode } from './IQuestion';\n\nexport class QuestionManager extends Destroyable implements IQuestion {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public text: string;\n public mode: QuestionMode;\n public options: IQuestionOptions;\n\n public notText: string;\n public yesText: string;\n public closeText: string;\n public checkText: string;\n\n protected _isChecked: boolean = false;\n\n protected _closePromise: PromiseHandler<void, void>;\n protected _yesNotPromise: PromiseHandler<void, void>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(options?: IQuestionOptions) {\n super();\n this._closePromise = PromiseHandler.create();\n this._yesNotPromise = PromiseHandler.create();\n\n this.yesText = 'Yes';\n this.notText = 'Not';\n this.closeText = 'Close';\n this.checkText = 'Check';\n this.options = _.assign(\n {\n mode: QuestionMode.INFO,\n isChecked: false,\n yesTextId: 'general.yes',\n notTextId: 'general.not',\n closeTextId: 'general.close'\n },\n options\n );\n this.text = this.options.text;\n this.mode = this.options.mode;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public closeClickHandler(): void {\n this._closePromise.resolve();\n }\n\n public yesClickHandler(): void {\n this._yesNotPromise.resolve();\n this.closeClickHandler();\n }\n\n public notClickHandler(): void {\n this._yesNotPromise.reject();\n this.closeClickHandler();\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.notClickHandler();\n this._yesNotPromise = null;\n this._closePromise = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tInterface Properties\n //\n // --------------------------------------------------------------------------\n\n public get yesNotPromise(): Promise<void> {\n return this._yesNotPromise.promise;\n }\n\n public get closePromise(): Promise<void> {\n return this._closePromise.promise;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isInfo(): boolean {\n return this.mode === QuestionMode.INFO;\n }\n\n public get isQuestion(): boolean {\n return this.mode === QuestionMode.QUESTION;\n }\n\n public get isChecked(): boolean {\n return this._isChecked;\n }\n public set isChecked(value: boolean) {\n if (value === this._isChecked) {\n return;\n }\n this._isChecked = value;\n // this.content.emit(value ? QuestionEvent.CHECK : QuestionEvent.UNCHECK);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Destroyable } from '@ts-core/common';\nimport { IWindowContent } from './IWindowContent';\nimport { WindowConfig } from './WindowConfig';\n\nexport abstract class IWindow<T = any> extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n abstract close(): void;\n\n abstract blink(): void;\n abstract shake(): void;\n abstract setOnTop(): void;\n\n abstract getWidth(): number;\n abstract getHeight(): number;\n abstract setWidth(value: number): void;\n abstract setHeight(value: number): void;\n abstract setSize(width: number, height: number): void;\n\n abstract getX(): number;\n abstract getY(): number;\n abstract setX(value: number): void;\n abstract setY(value: number): void;\n abstract move(x: number, y: number): void;\n\n abstract emit(event: string): void;\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public isOnTop: boolean = false;\n public isDisabled: boolean = false;\n public isMinimized: boolean = false;\n\n readonly events: Observable<string>;\n readonly container: HTMLElement;\n readonly wrapper: HTMLElement;\n readonly backdrop: HTMLElement;\n\n readonly config: WindowConfig<T>;\n readonly content: IWindowContent<T>;\n}\n\nexport enum WindowEvent {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n CONTENT_READY = 'CONTENT_READY',\n\n MOVED = 'EVENT_MOVED',\n RESIZED = 'RESIZED',\n DISABLED_CHANGED = 'DISABLED_CHANGED',\n MINIMIZED_CHANGED = 'MINIMIZED_CHANGED',\n\n SET_ON_TOP = 'SET_ON_TOP'\n}\n","import { MatDialogConfig } from '@angular/material/dialog';\nimport { MatBottomSheetConfig } from '@angular/material/bottom-sheet';\nimport * as _ from 'lodash';\nimport { IDestroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\n\nexport class WindowConfig<T = any> extends MatDialogConfig<T> implements MatBottomSheetConfig<T>, IDestroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public id: string;\n public isResizeable: boolean = false;\n public isMinimizable: boolean = false;\n public isContentDragable: boolean = true;\n\n public propertiesId: string;\n\n // Need for match MatDialogConfig and MatBottomSheetConfig\n public backdropClass: string;\n\n public x: number = NaN;\n public y: number = NaN;\n\n public defaultWidth: number = NaN;\n public defaultMinWidth: number = NaN;\n public defaultMaxWidth: number = NaN;\n\n public defaultHeight: number = NaN;\n public defaultMinHeight: number = NaN;\n public defaultMaxHeight: number = NaN;\n\n public paddingTop: number = NaN;\n public paddingLeft: number = NaN;\n public paddingRight: number = NaN;\n public paddingBottom: number = NaN;\n\n public verticalAlign: WindowAlign;\n public horizontalAlign: WindowAlign;\n\n protected _isModal: boolean = false;\n\n protected _elementMaxX: number = NaN;\n protected _elementMinX: number = NaN;\n\n protected _elementMaxY: number = NaN;\n protected _elementMinY: number = NaN;\n\n protected _elementWidth: string;\n protected _elementMinWidth: number = NaN;\n protected _elementMaxWidth: number = NaN;\n\n protected _elementHeight: string;\n protected _elementMinHeight: number = NaN;\n protected _elementMaxHeight: number = NaN;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(isModal: boolean = false, isResizeable: boolean = false, width: number = NaN, height: number = NaN) {\n super();\n\n this.isModal = this.hasBackdrop = isModal;\n this.isResizeable = isResizeable;\n\n if (!_.isNaN(width)) {\n this.defaultWidth = width;\n }\n\n if (!_.isNaN(height)) {\n this.defaultHeight = height;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public setDefaultProperties(): void {\n this.width = this.elementWidth;\n this.maxWidth = this.elementMaxWidth;\n this.minWidth = this.elementMinWidth;\n\n this.height = this.elementHeight;\n this.maxHeight = this.elementMaxHeight;\n this.minHeight = this.elementMinHeight;\n }\n\n public parseX(value: number): number {\n value = Math.max(value, this.elementMinX);\n value = Math.min(value, this.elementMaxX);\n return value;\n }\n\n public parseY(value: number): number {\n value = Math.max(value, this.elementMinY);\n value = Math.min(value, this.elementMaxY);\n return value;\n }\n\n public parseWidth(value: number): number {\n value = Math.max(value, this.elementMinWidth);\n value = Math.min(value, this.elementMaxWidth);\n return value;\n }\n\n public parseHeight(value: number): number {\n value = Math.max(value, this.elementMinHeight);\n value = Math.min(value, this.elementMaxHeight);\n return value;\n }\n\n public destroy(): void {\n IDestroyable.destroy(this.data);\n this.data = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isModal(): boolean {\n return this._isModal;\n }\n public set isModal(value: boolean) {\n if (value === this._isModal) {\n return;\n }\n this._isModal = value;\n this.hasBackdrop = value;\n }\n\n public get elementMinY(): number {\n if (!_.isNaN(this._elementMinY)) {\n return this._elementMinY;\n }\n this._elementMinY = 0 - ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingTop)) {\n this._elementMinY += this.paddingTop;\n }\n return this._elementMinY;\n }\n public get elementMaxY(): number {\n if (!_.isNaN(this._elementMaxY)) {\n return this._elementMaxY;\n }\n this._elementMaxY = ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingBottom)) {\n this._elementMaxY -= this.paddingBottom;\n }\n return this._elementMaxY;\n }\n\n public get elementMinX(): number {\n if (!_.isNaN(this._elementMinX)) {\n return this._elementMinX;\n }\n this._elementMinX = -ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingLeft)) {\n this._elementMinX += this.paddingLeft;\n }\n return this._elementMinX;\n }\n public get elementMaxX(): number {\n if (!_.isNaN(this._elementMaxX)) {\n return this._elementMaxX;\n }\n this._elementMaxX = ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingRight)) {\n this._elementMaxX -= this.paddingRight;\n }\n return this._elementMaxX;\n }\n\n public get elementWidth(): string {\n if (this._elementWidth) {\n return this._elementWidth;\n }\n this._elementWidth = 'auto';\n if (this.defaultWidth) {\n this._elementWidth = this.defaultWidth + 'px';\n }\n return this._elementWidth;\n }\n public get elementMinWidth(): number {\n if (!_.isNaN(this._elementMinWidth)) {\n return this._elementMinWidth;\n }\n this._elementMinWidth = 0;\n if (!_.isNaN(this.defaultMinWidth)) {\n let value = ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingLeft)) {\n value -= this.paddingLeft;\n }\n if (!_.isNaN(this.paddingRight)) {\n value -= this.paddingRight;\n }\n this._elementMinWidth = Math.min(this.defaultMinWidth, value);\n }\n return this._elementMinWidth;\n }\n public get elementMaxWidth(): number {\n if (!_.isNaN(this._elementMaxWidth)) {\n return this._elementMaxWidth;\n }\n this._elementMaxWidth = ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingLeft)) {\n this._elementMaxWidth -= this.paddingLeft;\n }\n if (!_.isNaN(this.paddingRight)) {\n this._elementMaxWidth -= this.paddingRight;\n }\n if (!_.isNaN(this.defaultMaxWidth)) {\n this._elementMaxWidth = Math.min(this.defaultMaxWidth, this._elementMaxWidth);\n }\n return this._elementMaxWidth;\n }\n\n public get elementHeight(): string {\n if (this._elementHeight) {\n return this._elementHeight;\n }\n this._elementHeight = 'auto';\n if (this.defaultHeight) {\n this._elementHeight = this.defaultHeight + 'px';\n }\n return this._elementHeight;\n }\n public get elementMinHeight(): number {\n if (!_.isNaN(this._elementMinHeight)) {\n return this._elementMinHeight;\n }\n this._elementMinHeight = 0;\n if (!_.isNaN(this.defaultMinHeight)) {\n let value = ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingTop)) {\n value -= this.paddingTop;\n }\n if (!_.isNaN(this.paddingBottom)) {\n value -= this.paddingBottom;\n }\n this._elementMinHeight = Math.min(this.defaultMinHeight, value);\n }\n return this._elementMinHeight;\n }\n\n public get elementMaxHeight(): number {\n if (!_.isNaN(this._elementMaxHeight)) {\n return this._elementMaxHeight;\n }\n this._elementMaxHeight = ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingTop)) {\n this._elementMaxHeight -= this.paddingTop;\n }\n if (!_.isNaN(this.paddingBottom)) {\n this._elementMaxHeight -= this.paddingBottom;\n }\n if (!_.isNaN(this.defaultMaxHeight)) {\n this._elementMaxHeight = Math.min(this.defaultMaxHeight, this._elementMaxHeight);\n }\n return this._elementMaxHeight;\n }\n}\n\nexport enum WindowAlign {\n START = 'START',\n CENTER = 'CENTER',\n END = 'END'\n}\n\nexport type WindowConfigOptions<T = any> = { [P in keyof WindowConfig<T>]?: any };\n","import { Observable } from 'rxjs';\nimport { INotificationContent } from './INotificationContent';\nimport { NotificationConfig } from './NotificationConfig';\n\nexport abstract class INotification<T = any> {\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n abstract getX(): number;\n abstract getY(): number;\n abstract setX(value: number): void;\n abstract setY(value: number): void;\n abstract move(x: number, y: number): void;\n\n abstract getWidth(): number;\n abstract getHeight(): number;\n abstract setWidth(value: number): void;\n abstract setHeight(value: number): void;\n abstract setSize(width: number, height: number): void;\n\n abstract close(): void;\n abstract remove(): void;\n abstract destroy(): void;\n\n abstract emit(event: string): void;\n\n // --------------------------------------------------------------------------\n //\n // \tInterface Methods\n //\n // --------------------------------------------------------------------------\n\n readonly events: Observable<string>;\n readonly container: HTMLElement;\n\n readonly config: NotificationConfig<T>;\n readonly content: INotificationContent<T>;\n}\n\nexport enum NotificationEvent {\n REMOVED = 'REMOVED'\n}\n","import { WindowConfig } from '../window/WindowConfig';\n\nexport class NotificationConfig<T = any> extends WindowConfig<T> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public icon: string;\n public sound: string;\n public iconId: string;\n public picture: string;\n\n public closeDuration: number = NaN;\n public isRemoveAfterClose: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(data?: T) {\n super();\n this.data = data;\n this.isModal = false;\n }\n}\n\nexport type NotificationConfigOptions<T = any> = { [P in keyof NotificationConfig<T>]?: any };\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { ArrayUtil, DateUtil, ObjectUtil } from '@ts-core/common/util';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { Observable, Subject } from 'rxjs';\nimport { IQuestion, IQuestionOptions, QuestionMode } from '../question/IQuestion';\nimport { QuestionManager } from '../question/QuestionManager';\nimport { WindowEvent } from '../window/IWindow';\nimport { WindowAlign } from '../window/WindowConfig';\nimport { INotification, NotificationEvent } from './INotification';\nimport { INotificationContent } from './INotificationContent';\nimport { NotificationConfig, NotificationConfigOptions } from './NotificationConfig';\nimport { NotificationFactory } from './NotificationFactory';\n\n@Injectable({ providedIn: 'root' })\nexport class NotificationService {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public factory: NotificationFactory<INotification>;\n public questionComponent: ComponentType<INotificationContent<any>>;\n\n protected dialog: MatDialog;\n protected language: LanguageService;\n\n protected _configs: Array<NotificationConfig>;\n protected _closedConfigs: Array<NotificationConfig>;\n protected _notifications: Map<NotificationConfig, INotificationContent<any>>;\n\n private observer: Subject<ObservableData<NotificationServiceEvent, INotification | NotificationConfig>>;\n\n public gapY: number = 25;\n\n public minWidth: number = 25;\n public minHeight: number = 25;\n\n public paddingTop: number = 25;\n public paddingLeft: number = 25;\n public paddingRight: number = 25;\n public paddingBottom: number = 25;\n\n public defaultCloseDuration: number = 10 * DateUtil.MILISECONDS_SECOND;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(dialog: MatDialog, language: LanguageService) {\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\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public open<T>(component: ComponentType<INotificationContent<T>>, config: NotificationConfig): INotificationContent<T> {\n let notification = null;\n if (!_.isNil(config.id)) {\n notification = this.getById(config.id);\n if (notification) {\n return notification.content;\n }\n }\n\n this.setDefaultProperties(config);\n\n let reference: MatDialogRef<INotificationContent<T>> = this.dialog.open(component, config);\n notification = this.factory.create({ config, reference, overlay: (reference as any)._overlayRef });\n\n let subscription = notification.events.subscribe(event => {\n switch (event) {\n case WindowEvent.OPENED:\n this.add(config, reference.componentInstance);\n this.checkPosition(notification);\n if (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 notification.content;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private getById(id: string): INotification {\n let item = _.find(Array.from(this._notifications.values()), item => item.config.id === id);\n return !_.isNil(item) ? item.notification : null;\n }\n\n private setDefaultProperties(config: NotificationConfig): void {\n if (_.isNaN(config.defaultMinWidth)) {\n config.defaultMinWidth = this.minWidth;\n }\n if (_.isNaN(config.defaultMinHeight)) {\n config.defaultMinHeight = this.minHeight;\n }\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 if (_.isNaN(config.closeDuration)) {\n config.closeDuration = this.defaultCloseDuration;\n }\n\n config.verticalAlign = WindowAlign.START;\n config.horizontalAlign = WindowAlign.END;\n config.setDefaultProperties();\n }\n\n private checkPosition(item: INotification): void {\n let previous = this.getPrevious(item);\n if (!_.isNil(previous)) {\n item.setY(previous.getY() + previous.getHeight() + this.gapY);\n }\n }\n\n private getPrevious(value: INotification): 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 // --------------------------------------------------------------------------\n //\n // \tSetters Methods\n //\n // --------------------------------------------------------------------------\n\n private add<T>(config: NotificationConfig, 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(value: NotificationId): NotificationConfig {\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(value: NotificationId): boolean {\n return !_.isNil(this.get(value));\n }\n\n public remove(value: NotificationId): 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 config.destroy();\n }\n\n public removeAll(): void {\n this.configs.forEach(item => this.remove(item));\n }\n\n public close(value: NotificationId): INotification {\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, NotificationConfig | INotification>> {\n return this.observer.asObservable();\n }\n\n public get configs(): Array<NotificationConfig> {\n return this._configs;\n }\n\n public get closedConfigs(): Array<NotificationConfig> {\n return this._closedConfigs;\n }\n\n public get notifications(): Map<NotificationConfig, INotificationContent<any>> {\n return this._notifications;\n }\n}\n\nexport type NotificationId = string | NotificationConfig | NotificationConfigOptions;\n\nexport enum NotificationServiceEvent {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n ADDED = 'ADDED',\n REMOVED = 'REMOVED'\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { NotificationConfig } from '../notification/NotificationConfig';\nimport { NotificationService, NotificationServiceEvent } from '../notification/NotificationService';\n\nexport class ShellBaseComponent extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public isNeedSide: boolean = false;\n public isHasNotifications: boolean = false;\n\n public isShowMenu: boolean = true;\n public isShowNotifications: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public notifications: NotificationService, public breakpointObserver: BreakpointObserver) {\n super();\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.isHasNotifications = !_.isEmpty(this.notificationItems);\n if (!this.isHasNotifications) {\n this.isShowNotifications = false;\n }\n }\n\n protected isNeedSideCheck(): void {\n this.isNeedSide = this.breakpointObserver.isMatched(this.sideMediaQueryToCheck);\n this.isShowMenu = this.isNeedSide;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public toggleMenu(): void {\n if (!this.isNeedSide) {\n this.isShowMenu = !this.isShowMenu;\n }\n }\n\n public toggleNotifications(): void {\n this.isShowNotifications = !this.isShowNotifications;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n protected get sideMediaQueryToCheck(): string {\n return `(min-width: 1000px)`;\n }\n\n public get notificationItems(): Array<NotificationConfig> {\n return this.notifications.closedConfigs;\n }\n}\n","import { Injector } from '@angular/core';\nimport * as _ from 'lodash';\n\nlet applicationInjector: Injector;\n\nexport const APPLICATION_INJECTOR = (value?: Injector): Injector => {\n if (!_.isNil(value)) {\n applicationInjector = value;\n }\n return applicationInjector;\n};\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { Assets } from '@ts-core/frontend/asset';\nimport * as _ from 'lodash';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-asset-background]'\n})\nexport class AssetBackgroundDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private _isUrl: boolean = false;\n private _isIcon: boolean = false;\n private _isImage: boolean = false;\n\n private _repeat: string = 'repeat';\n private _extension: string = 'png';\n private _background: string;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private element: ElementRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected setStyleProperties(): void {\n let url = this.getUrl(this.background, this.isImage, this.isIcon, this.isUrl);\n ViewUtil.setBackground(this.element, url, this.repeat);\n }\n\n private getUrl(id: string, isImage?: boolean, isIcon?: boolean, isUrl?: boolean): string {\n if (_.isNil(id)) {\n return null;\n }\n if (isUrl) {\n return id;\n }\n if (isImage) {\n return Assets.getImage(id, this.extension);\n }\n if (isIcon) {\n return Assets.getIcon(id, this.extension);\n }\n return Assets.getBackground(id, this.extension);\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.element = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public set isIcon(value: boolean) {\n if (value === this._isIcon) {\n return;\n }\n this._isIcon = value;\n this.setStyleProperties();\n }\n public get isIcon(): boolean {\n return this._isIcon;\n }\n\n @Input()\n public set isImage(value: boolean) {\n if (value === this._isImage) {\n return;\n }\n this._isImage = value;\n this.setStyleProperties();\n }\n public get isImage(): boolean {\n return this._isImage;\n }\n\n @Input()\n public set isUrl(value: boolean) {\n if (value === this._isUrl) {\n return;\n }\n this._isUrl = value;\n this.setStyleProperties();\n }\n public get isUrl(): boolean {\n return this._isUrl;\n }\n\n @Input()\n public set repeat(value: string) {\n if (value === this._repeat) {\n return;\n }\n this._repeat = value;\n this.setStyleProperties();\n }\n public get repeat(): string {\n return this._repeat;\n }\n\n @Input()\n public set extension(value: string) {\n if (value === this._extension) {\n return;\n }\n this._extension = value;\n this.setStyleProperties();\n }\n public get extension(): string {\n return this._extension;\n }\n\n @Input('vi-asset-background')\n public set background(value: string) {\n if (value === this._background) {\n return;\n }\n this._background = value;\n this.setStyleProperties();\n }\n public get background(): string {\n return this._background;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetBackground'\n})\nexport class AssetBackgroundPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'png'): string {\n return Assets.getBackground(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetIcon'\n})\nexport class AssetIconPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'png'): string {\n return Assets.getIcon(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetFile'\n})\nexport class AssetFilePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string): string {\n return Assets.getFile(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetVideo'\n})\nexport class AssetVideoPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'mp4'): string {\n return Assets.getVideo(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetSound'\n})\nexport class AssetSoundPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'mp3'): string {\n return Assets.getSound(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetImage'\n})\nexport class AssetImagePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'png'): string {\n return Assets.getImage(name, extension);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AssetBackgroundDirective } from './AssetBackgroundDirective';\nimport { AssetBackgroundPipe } from './AssetBackgroundPipe';\nimport { AssetFilePipe } from './AssetFilePipe';\nimport { AssetIconPipe } from './AssetIconPipe';\nimport { AssetImagePipe } from './AssetImagePipe';\nimport { AssetSoundPipe } from './AssetSoundPipe';\nimport { AssetVideoPipe } from './AssetVideoPipe';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AssetBackgroundDirective, AssetImagePipe, AssetIconPipe, AssetFilePipe, AssetSoundPipe, AssetVideoPipe, AssetBackgroundPipe],\n exports: [AssetBackgroundDirective, AssetImagePipe, AssetIconPipe, AssetFilePipe, AssetSoundPipe, AssetVideoPipe, AssetBackgroundPipe]\n})\nexport class AssetModule {}\n","import { ICookieOptions, ICookieService } from '@ts-core/frontend/cookie';\nimport * as _ from 'lodash';\nimport * as Cookie from 'ngx-cookie';\nimport { CookieOptionsProvider } from 'ngx-cookie';\nimport { CookieOptions } from './CookieOptions';\n\nexport class CookieService extends Cookie.CookieService implements ICookieService {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(options?: CookieOptions) {\n options = _.assign(\n {\n path: '/',\n domain: null,\n expires: null,\n secure: false,\n httpOnly: false\n },\n options\n );\n super({ options } as CookieOptionsProvider);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public has(key: string): boolean {\n return !_.isNil(super.get(key));\n }\n\n public get(key: string, defaultValue?: string): string {\n return this.has(key) ? super.get(key) : defaultValue;\n }\n\n public getObject<T = any>(key: string, defaultValue?: T): T {\n return this.has(key) ? (super.getObject(key) as any) : defaultValue;\n }\n\n public putObject<T = any>(key: string, value: T, options?: CookieOptions): void {\n super.putObject(key, value as any, options);\n }\n\n public update(key: string, value: string, options?: ICookieOptions): void {\n if (!_.isNil(value)) {\n this.put(key, value, options);\n } else {\n this.remove(key);\n }\n }\n\n public updateObject(key: string, value: Object, options?: ICookieOptions): void {\n if (!_.isNil(value)) {\n this.putObject(key, value, options);\n } else {\n this.remove(key);\n }\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieOptions } from '@ts-core/frontend/cookie';\nimport { CookieService } from './CookieService';\n\n@NgModule()\nexport class CookieModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: ICookieOptions): ModuleWithProviders<CookieModule> {\n return {\n ngModule: CookieModule,\n providers: [\n {\n provide: COOKIE_OPTIONS,\n useValue: options || {}\n },\n {\n provide: CookieService,\n deps: [COOKIE_OPTIONS],\n useFactory: cookieServiceFactory\n }\n ]\n };\n }\n}\n\nexport function cookieServiceFactory(options: ICookieOptions): CookieService {\n return new CookieService(options);\n}\n\nexport const COOKIE_OPTIONS = new InjectionToken<ICookieOptions>(`COOKIE_OPTIONS`);\n","import { ResizeSensor } from 'css-element-queries';\nimport { IDestroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { BehaviorSubject, distinctUntilChanged, Observable } from 'rxjs';\nimport { IViewElement, ViewUtil } from '../util/ViewUtil';\n\nexport class ResizeManager implements IDestroyable {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected sensor: ResizeSensor;\n protected subject: BehaviorSubject<ISize>;\n protected element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: IViewElement) {\n this.element = ViewUtil.parseElement(element);\n this.subject = new BehaviorSubject({ width: ViewUtil.getWidth(this.element), height: ViewUtil.getHeight(this.element) });\n this.sensor = new ResizeSensor(this.element, this.handler);\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n protected handler = (item: ISize) => this.subject.next(item);\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get changed(): Observable<ISize> {\n return this.subject.asObservable().pipe(distinctUntilChanged(_.isEqual));\n }\n\n public get value(): ISize {\n return this.subject.getValue();\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (!_.isNil(this.sensor)) {\n this.sensor.detach(this.handler);\n this.sensor.reset();\n this.sensor = null;\n }\n if (!_.isNil(this.subject)) {\n this.subject.complete();\n this.subject = null;\n }\n this.element = null;\n }\n}\n\nexport interface ISize {\n width: number;\n height: number;\n}\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { debounceTime, takeUntil } from 'rxjs';\nimport { ResizeManager } from '../manager/ResizeManager';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-aspect-ratio]'\n})\nexport class AspectRatioResizeDirective extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n //\tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n protected static UPDATE_DELAY: number = 100;\n\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private _ratio: number = NaN;\n private _direction: Direction;\n\n private sensor: ResizeManager;\n private element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.element = ViewUtil.parseElement(element.nativeElement);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private commitResizeProperties = (): void => {\n switch (this.direction) {\n case Direction.HORIZONTAL:\n this.width = this.height / this.ratio;\n break;\n case Direction.VERTICAL:\n this.height = this.width * this.ratio;\n break;\n }\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n this.sensor = new ResizeManager(this.element);\n this.sensor.changed\n .pipe(debounceTime(AspectRatioResizeDirective.UPDATE_DELAY), takeUntil(this.destroyed))\n .subscribe(() => this.commitResizeProperties());\n if (_.isNaN(this.ratio)) {\n this.ratio = 4 / 3;\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.element = null;\n\n if (!_.isNil(this.sensor)) {\n this.sensor.destroy();\n this.sensor = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n private get width(): number {\n return ViewUtil.getWidth(this.element);\n }\n\n private set width(value: number) {\n ViewUtil.setWidth(this.element, value, true);\n }\n\n private get height(): number {\n return ViewUtil.getHeight(this.element);\n }\n\n private set height(value: number) {\n ViewUtil.setHeight(this.element, value, true);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-aspect-ratio')\n public set direction(value: Direction) {\n if (value === this._direction || _.isNil(value)) {\n return;\n }\n this._direction = value;\n this.commitResizeProperties();\n }\n public get direction(): Direction {\n return this._direction;\n }\n\n @Input()\n public set ratio(value: number) {\n if (value === this._ratio) {\n return;\n }\n this._ratio = value;\n this.commitResizeProperties();\n }\n public get ratio(): number {\n return this._ratio;\n }\n}\n\nexport enum Direction {\n VERTICAL = 'VERTICAL',\n HORIZONTAL = 'HORIZONTAL'\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport * as _ from 'lodash';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-scroll]'\n})\nexport class ScrollDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static INITIALIZATION_DELAY: number = 1;\n\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public scrolled: EventEmitter<number> = new EventEmitter();\n\n private timer: any;\n protected element: HTMLElement;\n protected isInitialized: boolean = false;\n\n protected _scrollValue: number = 0;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.element = ViewUtil.parseElement(element);\n this.timer = setTimeout(this.initializeHandler, ScrollDirective.INITIALIZATION_DELAY);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n if (this.scrollValue) {\n this.scrollTo(this.scrollValue);\n }\n this.isInitialized = true;\n }\n\n protected scrollTo(value: number): void {\n this._scrollValue = value;\n this.element.scrollTop = value;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('scroll')\n public scrollHandler() {\n if (this.isInitialized) {\n this.scrollChangedHandler();\n }\n }\n\n protected scrollChangedHandler(): void {\n this._scrollValue = this.scrollTop;\n this.scrolled.next(this._scrollValue);\n }\n\n protected initializeHandler = (): void => this.initialize();\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n protected get scrollTop(): number {\n return this.element.scrollTop;\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.element = null;\n this.isInitialized = false;\n\n clearTimeout(this.timer);\n this.timer = null;\n\n this._scrollValue = 0;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public set scrollValue(value: number) {\n if (value === this._scrollValue || _.isNaN(value)) {\n return;\n }\n this._scrollValue = value;\n if (this.isInitialized) {\n this.scrollTo(value);\n }\n }\n\n public get scrollValue(): number {\n return this._scrollValue;\n }\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { ScrollDirective } from './ScrollDirective';\n\n@Directive({\n selector: '[vi-infinite-scroll]'\n})\nexport class InfiniteScrollDirective extends ScrollDirective {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public top: EventEmitter<number> = new EventEmitter();\n @Output()\n public bottom: EventEmitter<number> = new EventEmitter();\n\n @Input()\n public elementHeight: number = 50;\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected scrollChangedHandler(): void {\n super.scrollChangedHandler();\n if (!this.isInitialized) {\n return;\n }\n let value = this.scrollTop;\n let bottomValue = value + this.clientHeight + this.elementHeight;\n\n if (bottomValue >= this.scrollHeight) {\n this.bottom.next(value);\n } else if (value <= this.elementHeight) {\n this.top.next(value);\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.top = null;\n this.bottom = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n protected get clientHeight(): number {\n return this.element.clientHeight;\n }\n protected get scrollHeight() {\n return this.element.scrollHeight;\n }\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { InfiniteScrollDirective } from './InfiniteScrollDirective';\n@Directive({\n selector: '[vi-auto-scroll-bottom]'\n})\nexport class AutoScrollBottomDirective extends InfiniteScrollDirective {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public triggerChanged: EventEmitter<void> = new EventEmitter<void>();\n\n private _trigger: any;\n private triggerTimer: any;\n private triggerDelta: number = 0;\n\n private isScrollLocked: boolean = false;\n private lastScrollHeight: number;\n\n private isNeedScroll: boolean = true;\n private isNeedRemainScroll: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n if (!this._scrollValue) {\n this._scrollValue = this.scrollHeight;\n }\n super.initialize();\n }\n\n protected checkTrigger = () => {\n this.isScrollLocked = false;\n if (this.isNeedScroll) {\n this.scrollBottom();\n } else if (this.isNeedRemainScroll) {\n this.scrollRemain();\n } else if (this.triggerDelta > 0) {\n this.triggerDelta = 0;\n this.triggerChanged.emit();\n }\n };\n\n protected scrollRemain(): void {\n this.isNeedRemainScroll = false;\n this.scrollTo(this.scrollHeight - this.lastScrollHeight);\n }\n\n public scrollBottom(): void {\n this.scrollTo(this.scrollHeight);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected scrollChangedHandler() {\n super.scrollChangedHandler();\n if (!this.isInitialized || this.isScrollLocked) {\n return;\n }\n\n let value = this.scrollTop;\n let bottomValue = value + this.clientHeight + this.elementHeight;\n\n this.isNeedScroll = bottomValue >= this.scrollHeight;\n this.isNeedRemainScroll = value <= this.elementHeight;\n\n if (this.isNeedRemainScroll) {\n this.lastScrollHeight = this.scrollHeight;\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 clearTimeout(this.triggerTimer);\n this.triggerTimer = null;\n this.trigger = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-auto-bottom-scroll')\n public set trigger(value: number) {\n if (value === this._trigger) {\n return;\n }\n if (!isNaN(this._trigger) && !isNaN(value)) {\n this.triggerDelta = value - this._trigger;\n }\n\n this._trigger = value;\n if (!this.isInitialized) {\n return;\n }\n this.isScrollLocked = true;\n clearTimeout(this.triggerTimer);\n this.triggerTimer = setTimeout(this.checkTrigger, InfiniteScrollDirective.INITIALIZATION_DELAY);\n }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { DateUtil } from '@ts-core/common/util';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-click-to-copy]'\n})\nexport class ClickToCopyDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-click-to-copy')\n public element: HTMLElement;\n private selectionClearTimer: any;\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('click', ['$event'])\n private clickHandler(event: MouseEvent) {\n ViewUtil.selectContent(this.element, true);\n\n clearTimeout(this.selectionClearTimer);\n this.selectionClearTimer = setTimeout(this.selectionRemove, DateUtil.MILISECONDS_SECOND / 2);\n }\n\n private selectionRemove = (): void => ViewUtil.selectContent(null);\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.element = null;\n clearTimeout(this.selectionClearTimer);\n }\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-click-to-select]'\n})\nexport class ClickToSelectDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.element = ViewUtil.parseElement(element.nativeElement);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('click', ['$event'])\n private clickHandler(event: MouseEvent) {\n if (event.detail >= 3) {\n ViewUtil.selectContent(this.element, true);\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.element = null;\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\nimport * as _ from 'lodash';\n\nexport class FocusManager extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected timer: any;\n protected delay: number;\n protected element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, delay: number = 100) {\n super();\n this.delay = delay;\n this.element = ViewUtil.parseElement(element);\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n\n private focusElement = (): void => {\n if (!_.isNil(this.element)) {\n ViewUtil.focusInput(this.element as any);\n }\n };\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public focus(): void {\n clearTimeout(this.timer);\n this.timer = setTimeout(this.focusElement, this.delay);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this.timer)) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n\n this.element = null;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { FocusManager } from '../manager/FocusManager';\n\n@Directive({\n selector: '[vi-focus]'\n})\nexport class FocusDirective<T = any> extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private manager: FocusManager;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.manager = new FocusManager(element);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected focus = (): void => this.manager.focus();\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.manager.destroy();\n this.manager = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-focus')\n public set trigger(value: T) {\n this.focus();\n }\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-select-on-focus]'\n})\nexport class SelectOnFocusDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private element: ElementRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('focus')\n private focusHandler(): void {\n ViewUtil.selectContent(this.element.nativeElement);\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.element = null;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-html-content-title]'\n})\nexport class HTMLContentTitleDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _value: string;\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 commitValueProperties(): void {\n let title = this.value;\n if (!_.isEmpty(title)) {\n title = title.replace(/<br\\s*[\\/]?>/g, '\\n');\n title = title.replace(/<[^>]*>/g, '');\n }\n ViewUtil.setProperty(this.element, 'title', title);\n ViewUtil.setProperty(this.element, 'innerHTML', this.value);\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._value = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-html-content-title')\n public set value(value: string) {\n if (value === this._value) {\n return;\n }\n this._value = value;\n if (!_.isNil(value)) {\n this.commitValueProperties();\n }\n }\n public get value(): string {\n return this._value;\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';\nimport { Interactable } from '@interactjs/types';\nimport * as interact from 'interactjs';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[vi-resize]'\n})\nexport class ResizeDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public resize: EventEmitter<any> = new EventEmitter();\n\n @Input()\n public isTop: boolean = false;\n @Input()\n public isLeft: boolean = false;\n @Input()\n public isRight: boolean = false;\n @Input()\n public isBottom: boolean = false;\n\n private interactable: Interactable;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n\n this.interactable = interact.default(ViewUtil.parseElement(element));\n // this.interactable.styleCursor(false);\n\n let param = {} as any;\n param.top = this.isTop;\n param.left = this.isLeft;\n param.right = this.isRight;\n param.bottom = this.isBottom;\n this.interactable.resizable(param);\n this.interactable.on('resizemove', this.resizeHandler);\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n private resizeHandler = (event: any) => {\n if (event.dx !== 0 || event.dy !== 0) {\n this.resize.emit(event);\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 if (!_.isNil(this.interactable)) {\n this.interactable.unset();\n this.interactable = null;\n }\n }\n}\n","import { Directive, ElementRef, Input, EventEmitter, Output } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { DateUtil } from '@ts-core/common/util';\nimport * as _ from 'lodash';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[vi-scroll-check]'\n})\nexport class ScrollCheckDirective extends DestroyableContainer {\n //--------------------------------------------------------------------------\n //\n //\tProperties\n //\n //--------------------------------------------------------------------------\n\n @Output()\n public limitExceed: EventEmitter<boolean> = new EventEmitter();\n\n private _scrollLimit: number;\n private _scrollValue: number;\n private isExceedLimit: boolean = false;\n\n //--------------------------------------------------------------------------\n //\n //\tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n\n this._scrollValue = element.nativeElement.scrollTop;\n fromEvent(element.nativeElement, 'scroll')\n .pipe(debounceTime(DateUtil.MILISECONDS_SECOND / 10), takeUntil(this.destroyed))\n .subscribe(() => {\n this._scrollValue = element.nativeElement.scrollTop;\n this.check();\n });\n }\n\n //--------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected check(): void {\n let value = this._scrollValue >= this.scrollLimit;\n if (value !== this.isExceedLimit) {\n this.isExceedLimit = value;\n this.limitExceed.emit(this.isExceedLimit);\n }\n }\n\n //--------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n //--------------------------------------------------------------------------\n\n @Input('vi-scroll-check')\n public set scrollLimit(value: number) {\n if (value == this._scrollLimit) {\n return;\n }\n this._scrollLimit = value;\n this.check();\n }\n public get scrollLimit(): number {\n return this._scrollLimit;\n }\n}\n","import { MatPaginatorIntl } from '@angular/material/paginator';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { Subscription } from 'rxjs';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Injectable()\nexport class LanguageMatPaginatorIntl extends MatPaginatorIntl implements OnDestroy {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n public lastPageLabel: string;\n public nextPageLabel: string;\n public firstPageLabel: string;\n public previousPageLabel: string;\n public itemsPerPageLabel: string;\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.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.getRangeLabel = this.languageRangeLabel;\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 translation.total = length.toString();\n } else {\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 translation.total = length.toString();\n }\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 { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTranslate',\n pure: false\n})\nexport class LanguagePipe extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private key: string;\n private params: string;\n private _value: string;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(this.valueUpdate);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private valueUpdate = (): void => {\n this._value = this.language.translate(this.key, this.params);\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string, params?: any): string {\n this.key = key;\n this.params = params;\n if (_.isNil(this._value)) {\n this.valueUpdate();\n }\n return this._value;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n\n this.key = null;\n this.params = null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\n\n@Pipe({\n name: 'viTranslatePure'\n})\nexport class LanguagePipePure extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string, params?: any): string {\n return this.language.translate(key, params);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n }\n}\n","import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';\nimport { LoadableEvent } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { PromiseHandler } from '@ts-core/common/promise';\n\nexport class LanguageRequireResolver implements Resolve<void> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected language: LanguageService) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<void> {\n if (this.language.isLoaded) {\n return Promise.resolve();\n }\n\n let promise = PromiseHandler.create<void>();\n let subscription = this.language.events.subscribe(data => {\n if (data.type === LoadableEvent.COMPLETE) {\n promise.resolve();\n } else if (data.type === LoadableEvent.ERROR) {\n promise.reject(data.error.toString());\n } else if (data.type === LoadableEvent.FINISHED) {\n subscription.unsubscribe();\n }\n });\n return promise.promise;\n }\n}\n","import { LanguageService } from '@ts-core/frontend/language';\nimport { LanguageRequireResolver } from './LanguageRequireResolver';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageResolver extends LanguageRequireResolver {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(language: LanguageService) {\n super(language);\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-translate]'\n})\nexport class LanguageDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public isNeedTitle: boolean;\n\n protected _key: string;\n protected _params: any;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected element: ElementRef, protected language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.translate);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected translate(): void {\n if (_.isNil(this.key)) {\n return;\n }\n\n let value = this.language.translate(this.key, this.params);\n ViewUtil.setProperty(this.element, 'innerHTML', value);\n if (this.isNeedTitle) {\n ViewUtil.setProperty(this.element, 'title', value);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n\n super.destroy();\n this.language = null;\n\n this._key = null;\n this._params = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-translate')\n public set key(value: string) {\n if (value === this._key) {\n return;\n }\n this._key = value;\n if (!_.isNil(value)) {\n this.translate();\n }\n }\n public get key(): string {\n return this._key;\n }\n\n @Input()\n public set params(value: any) {\n if (value === this._params) {\n return;\n }\n this._params = value;\n this.translate();\n }\n public get params(): any {\n return this._params;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTranslateHas',\n pure: false\n})\nexport class LanguagePipeHas extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private key: string;\n private _value: boolean;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(this.valueUpdate);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private valueUpdate = (): void => {\n this._value = this.language.isHasTranslation(this.key);\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string): boolean {\n this.key = key;\n if (_.isNil(this._value)) {\n this.valueUpdate();\n }\n return this._value;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n\n this.key = null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTranslateHasPure',\n pure: true\n})\nexport class LanguagePipeHasPure extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string): boolean {\n return this.language.isHasTranslation(key);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n }\n}\n","import { Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[viTranslateHas]'\n})\nexport class LanguageHasDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _key: string;\n\n protected view: any;\n protected index: EmbeddedViewRef<any>;\n\n @Input()\n public isOnlyIfNotEmpty: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private template: TemplateRef<any>, private container: ViewContainerRef, protected language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.check());\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected check(): void {\n let isNeedAdd = false;\n let isNeedRemove = false;\n let isHasTranslation = !_.isNil(this.key) && this.language.isHasTranslation(this.key, this.isOnlyIfNotEmpty);\n\n if (isHasTranslation) {\n if (_.isNil(this.view)) {\n isNeedAdd = true;\n }\n } else {\n if (!_.isNil(this.view)) {\n isNeedRemove = true;\n }\n }\n\n if (isNeedAdd) {\n this.view = this.container.createEmbeddedView(this.template);\n } else if (isNeedRemove) {\n let index = this.container.indexOf(this.view);\n if (index >= 0) {\n this.container.remove(index);\n this.view = null;\n }\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n\n super.destroy();\n this.language = null;\n\n this._key = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('viTranslateHas')\n public set key(value: string) {\n if (value === this._key) {\n return;\n }\n this._key = value;\n this.check();\n }\n public get key(): string {\n return this._key;\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieService } from '@ts-core/frontend/cookie';\nimport { ILanguageServiceOptions, LanguageService } from '@ts-core/frontend/language';\nimport { CookieModule } from '../cookie/CookieModule';\nimport { CookieService } from '../cookie/CookieService';\nimport { LanguageMatPaginatorIntl } from './LanguageMatPaginatorIntl';\nimport { LanguagePipe } from './LanguagePipe';\nimport { LanguagePipePure } from './LanguagePipePure';\nimport { LanguageResolver } from './LanguageResolver';\nimport { LanguageDirective } from './LanguageDirective';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { LanguagePipeHas } from './LanguagePipeHas';\nimport { LanguagePipeHasPure } from './LanguagePipeHasPure';\nimport { LanguageHasDirective } from './LanguageHasDirective';\nimport * as _ from 'lodash';\n\n@NgModule({\n imports: [CookieModule],\n declarations: [LanguagePipe, LanguagePipePure, LanguagePipeHas, LanguagePipeHasPure, LanguageHasDirective, LanguageDirective],\n exports: [LanguagePipe, LanguagePipePure, LanguagePipeHas, LanguagePipeHasPure, LanguageHasDirective, LanguageDirective]\n})\nexport class LanguageModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: ILanguageServiceOptions): ModuleWithProviders<LanguageModule> {\n return {\n ngModule: LanguageModule,\n providers: [\n {\n provide: LANGUAGE_OPTIONS,\n useValue: options || {}\n },\n {\n provide: LanguageService,\n deps: [CookieService, LANGUAGE_OPTIONS],\n useFactory: languageServiceFactory\n },\n {\n provide: LanguageResolver,\n deps: [LanguageService],\n useClass: LanguageResolver\n },\n {\n provide: MatPaginatorIntl,\n deps: [LanguageService],\n useClass: LanguageMatPaginatorIntl\n }\n ]\n };\n }\n}\n\nexport function languageServiceFactory(cookie: ICookieService, options?: ILanguageServiceOptions): LanguageService {\n if (!_.isNil(options) && _.isNil(options.service)) {\n options.service = cookie;\n }\n return new LanguageService(options);\n}\n\nexport const LANGUAGE_OPTIONS = new InjectionToken<ILanguageServiceOptions>(`LANGUAGE_OPTIONS`);\n","import { IWindow } from './IWindow';\nimport { WindowProperties } from './WindowProperties';\n\nexport class WindowFactory<U extends IWindow> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected classType: WindowType<U>) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public create(properties: WindowProperties): U {\n return new this.classType(properties);\n }\n}\n\nexport interface WindowType<T> {\n new (properties: WindowProperties): T;\n}\n","import { MatDialogRef } from '@angular/material/dialog';\nimport * as _ from 'lodash';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowAlign, WindowConfig } from './WindowConfig';\n\nexport abstract class WindowBase<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _x: number = NaN;\n protected _width: number = NaN;\n\n protected _y: number = NaN;\n protected _height: number = NaN;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected abstract getConfig(): WindowConfig<T>;\n protected abstract getReference(): MatDialogRef<any>;\n protected abstract getContainer(): HTMLElement;\n\n protected setProperties(): void {\n let config = this.getConfig();\n if (!_.isNaN(config.defaultWidth)) {\n this.width = config.defaultWidth;\n }\n if (!_.isNaN(config.defaultHeight)) {\n this.height = config.defaultHeight;\n }\n }\n\n protected setPosition(): void {\n let config = this.getConfig();\n\n switch (config.horizontalAlign) {\n case WindowAlign.START:\n this.x = !_.isNaN(this.paddingLeft) ? this.paddingLeft : 0;\n break;\n case WindowAlign.END:\n let value = ViewUtil.getStageWidth() - this.calculateWidth();\n if (!_.isNaN(this.paddingRight)) {\n value -= this.paddingRight;\n }\n this.x = value;\n break;\n default:\n this.x = (ViewUtil.getStageWidth() - this.calculateWidth()) / 2;\n break;\n }\n\n switch (config.verticalAlign) {\n case WindowAlign.START:\n this.y = !_.isNaN(this.paddingTop) ? this.paddingTop : 0;\n break;\n case WindowAlign.END:\n let value = ViewUtil.getStageHeight() - this.calculateHeight();\n if (!_.isNaN(this.paddingBottom)) {\n value -= this.paddingBottom;\n }\n this.y = value;\n break;\n default:\n this.y = (ViewUtil.getStageHeight() - this.calculateHeight()) / 2;\n break;\n }\n }\n\n protected clearSize(): void {\n this._x = NaN;\n this._y = NaN;\n this._width = NaN;\n this._height = NaN;\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 updatePosition = (): void => this.setPosition();\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public calculateWidth(): number {\n return !_.isNaN(this.width) ? this.width : ViewUtil.getWidth(this.getContainer());\n }\n public calculateHeight(): number {\n return !_.isNaN(this.height) ? this.height : ViewUtil.getHeight(this.getContainer());\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n protected get width(): number {\n return this._width;\n }\n protected set width(value: number) {\n value = this.getConfig().parseWidth(value);\n if (value === this._width) {\n return;\n }\n this._width = value;\n this.commitSizeProperties();\n }\n\n protected get height(): number {\n return this._height;\n }\n protected set height(value: number) {\n value = this.getConfig().parseHeight(value);\n if (value === this._height) {\n return;\n }\n this._height = value;\n this.commitSizeProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get x(): number {\n return this._x;\n }\n\n public set x(value: number) {\n value = this.getConfig().parseX(value);\n if (value === this._x) {\n return;\n }\n this._x = value;\n this.commitPositionProperties();\n }\n\n public get y(): number {\n return this._y;\n }\n\n public set y(value: number) {\n value = this.getConfig().parseY(value);\n if (value === this._y) {\n return;\n }\n this._y = value;\n this.commitPositionProperties();\n }\n\n public get paddingTop(): number {\n return this.getConfig().paddingTop;\n }\n\n public get paddingLeft(): number {\n return this.getConfig().paddingLeft;\n }\n\n public get paddingRight(): number {\n return this.getConfig().paddingRight;\n }\n\n public get paddingBottom(): number {\n return this.getConfig().paddingBottom;\n }\n}\n","import { MatDialogRef } from '@angular/material/dialog';\nimport { Observable, Subject, Subscription, filter, takeUntil } from 'rxjs';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { IWindow, WindowEvent } from './IWindow';\nimport { IWindowContent } from './IWindowContent';\nimport { WindowBase } from './WindowBase';\nimport { WindowConfig } from './WindowConfig';\nimport { WindowProperties } from './WindowProperties';\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 BLINK_DELAY = 500;\n public static SHAKE_DELAY = 500;\n public static RESIZE_DELAY = 200;\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n private _isBlink: boolean = false;\n private blinkTimer: any;\n\n private _isShaking: boolean = false;\n private shakeTimer: any;\n\n private resizeTimer: any;\n\n private _isOnTop: boolean = false;\n private _isDisabled: boolean = false;\n private _isMinimized: boolean = false;\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 properties: WindowProperties;\n\n protected subscription: Subscription;\n protected observer: Subject<string>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(properties: WindowProperties) {\n super();\n this.observer = new Subject();\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.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 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 if (!this.config.isModal) {\n this.container.addEventListener('click', this.mouseClickHandlerProxy, true);\n this.container.addEventListener('mousedown', this.mouseDownHandlerProxy);\n }\n }\n\n protected commitIsBlinkProperties(): void {}\n protected commitIsShakingProperties(): void {}\n protected commitIsDisabledProperties(): void {}\n protected commitIsMinimizedProperties(): void {}\n\n protected getConfig(): WindowConfig {\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 return !this.isWasOnTop;\n }\n\n private stopBlinkIfNeed(): void {\n this.isBlink = false;\n if (!this.blinkTimer) {\n return;\n }\n clearInterval(this.blinkTimer);\n this.blinkTimer = null;\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\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 clearInterval(this.blinkTimer);\n this.blinkTimer = null;\n\n clearInterval(this.shakeTimer);\n this.shakeTimer = null;\n\n clearTimeout(this.resizeTimer);\n this.resizeTimer = null;\n }\n\n public blink(): void {\n clearInterval(this.blinkTimer);\n this.blinkTimer = setInterval(this.blinkToggle, WindowImpl.BLINK_DELAY);\n }\n\n public shake(): void {\n if (this.isShaking) {\n return;\n }\n this.isShaking = true;\n clearInterval(this.shakeTimer);\n this.shakeTimer = setInterval(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.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.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(): WindowConfig {\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 clearInterval(this.blinkTimer);\n this.isBlink = false;\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.commitIsMinimizedProperties();\n this.emit(WindowEvent.MINIMIZED_CHANGED);\n this.stopBlinkIfNeed();\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.commitIsDisabledProperties();\n this.emit(WindowEvent.DISABLED_CHANGED);\n }\n}\n","import { Observable, Subject, takeUntil, Subscription } from 'rxjs';\nimport * as _ from 'lodash';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { WindowConfig } from '../window/WindowConfig';\nimport { IWindow, WindowEvent } from '../window/IWindow';\nimport { IWindowContent } from '../window/IWindowContent';\nimport { WindowProperties } from '../window/WindowProperties';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowImpl } from '../window/WindowImpl';\n\nexport class BottomSheetImpl<T = any> extends DestroyableContainer implements IWindow {\n // --------------------------------------------------------------------------\n //\n // Constants\n //\n // --------------------------------------------------------------------------\n\n public static BLINK_DELAY = 500;\n public static SHAKE_DELAY = 500;\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n private _isBlink: boolean = false;\n private blinkTimer: any;\n\n private _isDisabled: boolean = false;\n private _wrapper: HTMLElement;\n private _backdrop: HTMLElement;\n private _container: HTMLElement;\n\n protected properties: WindowProperties;\n\n protected subscription: Subscription;\n protected observer: Subject<string>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(properties: WindowProperties) {\n super();\n this.observer = new Subject();\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.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 // 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 blinkToggle = (): void => {\n this.isBlink = !this.isBlink;\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 if (!this.config.isModal) {\n this.container.addEventListener('click', this.mouseClickHandlerProxy, true);\n this.container.addEventListener('mousedown', this.mouseDownHandlerProxy);\n }\n }\n\n protected commitIsBlinkProperties(): void {}\n protected commitIsDisabledProperties(): void {}\n\n protected getConfig(): WindowConfig {\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 return false;\n }\n\n private stopBlinkIfNeed(): void {\n this.isBlink = false;\n if (!this.blinkTimer) {\n return;\n }\n clearInterval(this.blinkTimer);\n this.blinkTimer = null;\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\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 clearInterval(this.blinkTimer);\n this.blinkTimer = null;\n }\n\n public blink(): void {\n clearInterval(this.blinkTimer);\n this.blinkTimer = setInterval(this.blinkToggle, WindowImpl.BLINK_DELAY);\n }\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 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.commitIsBlinkProperties();\n }\n\n protected get isShaking(): boolean {\n return false;\n }\n protected set isShaking(value: boolean) {}\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(): WindowConfig {\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 false;\n }\n public set isOnTop(value: boolean) {}\n\n public get isMinimized(): boolean {\n return false;\n }\n public set isMinimized(value: boolean) {}\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.commitIsDisabledProperties();\n this.emit(WindowEvent.DISABLED_CHANGED);\n }\n}\n","import { AfterViewInit, Component, ElementRef, Injectable } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { ViewUtil } from '../../util/ViewUtil';\nimport { IWindow } from '../IWindow';\n\n@Component({ template: '' })\nexport 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 (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 (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\n this.destroyChildren();\n\n this.element = null;\n this.window = null;\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 '../../../util/ViewUtil';\nimport { WindowElement } from '../../../window/component/WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-bottom-sheet-close-element',\n styleUrls: ['bottom-sheet-close-element.component.scss'],\n template: ''\n})\nexport class BottomSheetCloseElementComponent 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(BottomSheetCloseElementComponent.ICON_VALUE)) {\n ViewUtil.setProperty(this.nativeElement, 'innerHTML', BottomSheetCloseElementComponent.ICON_VALUE);\n }\n if (!_.isNil(BottomSheetCloseElementComponent.ICON_CLASS)) {\n ViewUtil.addClasses(this.nativeElement, BottomSheetCloseElementComponent.ICON_CLASS);\n }\n ViewUtil.addClass(this.nativeElement, 'mouse-active');\n this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n super.destroyChildren();\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent): void => {\n event.stopPropagation();\n if (!_.isNil(this.window)) {\n this.window.close();\n }\n };\n}\n","import { ComponentFactoryResolver, ComponentRef, ViewContainerRef } from '@angular/core';\nimport { APPLICATION_INJECTOR } from '../../ApplicationInjector';\nimport { ViewUtil } from '../../util/ViewUtil';\nimport { BottomSheetImpl } from '../BottomSheetImpl';\nimport { BottomSheetCloseElementComponent } from './bottom-sheet-close-element/bottom-sheet-close-element.component';\n\nexport class BottomSheetBaseComponent extends BottomSheetImpl {\n // --------------------------------------------------------------------------\n //\n // Static Properties\n //\n // --------------------------------------------------------------------------\n\n public static CLOSE_COMPONENT = BottomSheetCloseElementComponent;\n\n // --------------------------------------------------------------------------\n //\n // Properties Methods\n //\n // --------------------------------------------------------------------------\n\n protected closeWindow: ComponentRef<any>;\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setProperties(): void {\n super.setProperties();\n this.createWindowComponents();\n }\n\n protected createWindowComponents(): void {\n if (!(this.content.container instanceof ViewContainerRef)) {\n return;\n }\n if (!this.config.disableClose && !this.closeWindow) {\n let factory = this.resolver.resolveComponentFactory(BottomSheetBaseComponent.CLOSE_COMPONENT);\n this.closeWindow = this.content.container.createComponent(factory);\n this.closeWindow.instance.window = this;\n }\n }\n\n protected commitIsBlinkProperties(): void {\n ViewUtil.toggleClass(this.container, this.blinkClass, this.isBlink);\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 protected commitIsShakingProperties(): void {\n ViewUtil.toggleClass(this.container, this.shakingClass, this.isShaking);\n }\n\n protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n if (!super.isNeedClickStopPropagation(event)) {\n return false;\n }\n if (this.closeWindow && this.closeWindow.location.nativeElement === event.target) {\n return false;\n }\n return true;\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Properties\n //\n // --------------------------------------------------------------------------\n\n protected get resolver(): ComponentFactoryResolver {\n return APPLICATION_INJECTOR().get(ComponentFactoryResolver);\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 // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n // Components will destroy automatically\n this.closeWindow = null;\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Destroyable } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { Observable, Subject } from 'rxjs';\nimport { CookieService } from '../cookie/CookieService';\nimport { IQuestion, IQuestionOptions, QuestionMode } from '../question/IQuestion';\nimport { QuestionManager } from '../question/QuestionManager';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowQuestionComponent } from './component/window-question/window-question.component';\nimport { WindowBaseComponent } from './component/WindowBaseComponent';\nimport { IWindow, WindowEvent } from './IWindow';\nimport { IWindowContent } from './IWindowContent';\nimport { WindowAlign, WindowConfig, WindowConfigOptions } from './WindowConfig';\nimport { WindowFactory } from './WindowFactory';\n\n@Injectable({ providedIn: 'root' })\nexport class WindowService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public factory: WindowFactory<IWindow>;\n public questionComponent: ComponentType<IWindowContent>;\n public isNeedCheckPositionAfterOpen: boolean = true;\n\n protected dialog: MatDialog;\n protected language: LanguageService;\n\n private _windows: Map<WindowConfig, IWindowContent>;\n\n private observer: Subject<ObservableData<WindowServiceEvent, IWindow>>;\n private properties: PropertiesManager;\n\n public gapX: number = 25;\n public gapY: number = 25;\n\n public minWidth: number = 100;\n public minHeight: number = 100;\n\n public paddingTop: number = 25;\n public paddingLeft: number = 25;\n public paddingRight: number = 25;\n public paddingBottom: number = 25;\n\n public defaultVerticalAlign: WindowAlign = WindowAlign.CENTER;\n public defaultHorizontalAlign: WindowAlign = WindowAlign.CENTER;\n\n public topZIndex: number = 999;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(dialog: MatDialog, language: LanguageService, cookies: CookieService) {\n super();\n this._windows = new Map();\n\n this.dialog = dialog;\n this.language = language;\n this.observer = new Subject();\n this.properties = new PropertiesManager(cookies);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private sortFunction(first: IWindow, second: IWindow): number {\n let firstIndex = first.container ? parseInt(ViewUtil.getStyle(first.container.parentElement, 'zIndex'), 10) : -1;\n let secondIndex = second.container ? parseInt(ViewUtil.getStyle(second.container.parentElement, 'zIndex'), 10) : -1;\n return firstIndex > secondIndex ? -1 : 1;\n }\n\n private updateTop(): void {\n let zIndex = 0;\n let topWindow: IWindow = null;\n\n for (let window of this.windowsArray) {\n if (_.isNil(window.container)) {\n continue;\n }\n let index = parseInt(ViewUtil.getStyle(window.container.parentElement, 'zIndex'), 10);\n if (zIndex >= index) {\n continue;\n }\n zIndex = index;\n topWindow = window;\n }\n\n if (_.isNil(topWindow) || topWindow.isOnTop) {\n return;\n }\n topWindow.isOnTop = true;\n this.observer.next(new ObservableData(WindowServiceEvent.SETTED_ON_TOP, topWindow));\n }\n\n private setWindowOnTop(topWindow: IWindow): void {\n let currentIndex = this.topZIndex - 2;\n for (let window of this.windowsArray) {\n if (_.isNil(window.container)) {\n continue;\n }\n window.isOnTop = window === topWindow;\n\n let zIndex = window.isOnTop ? this.topZIndex : currentIndex--;\n ViewUtil.setStyle(window.backdrop, 'zIndex', zIndex);\n ViewUtil.setStyle(window.wrapper, 'zIndex', zIndex);\n }\n\n this.windowsArray.sort(this.sortFunction);\n this.observer.next(new ObservableData(WindowServiceEvent.SETTED_ON_TOP, topWindow));\n }\n\n private checkPosition(item: IWindow): void {\n while (this.hasSamePosition(item)) {\n item.move(item.getX() + this.gapX, item.getY() + this.gapY);\n }\n }\n\n private hasSamePosition(itemWindow: IWindow): boolean {\n let x = itemWindow.getX();\n let y = itemWindow.getY();\n\n let result = false;\n this.windowsArray.forEach(window => {\n if (window !== itemWindow && x === window.getX() && y === window.getY()) {\n result = true;\n }\n });\n return result;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tSetters Methods\n //\n // --------------------------------------------------------------------------\n\n private add(config: WindowConfig, content: IWindowContent): void {\n this._windows.set(config, content);\n this.observer.next(new ObservableData(WindowServiceEvent.OPENED, content.window));\n }\n\n private remove(config: WindowConfig): void {\n let window = this._windows.get(config);\n if (!window) {\n return null;\n }\n\n window.close();\n this._windows.delete(config);\n this.observer.next(new ObservableData(WindowServiceEvent.CLOSED, window.window));\n }\n\n private 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 private setDefaultProperties(config: WindowConfig): void {\n if (!config.verticalAlign) {\n config.verticalAlign = this.defaultVerticalAlign;\n }\n if (!config.horizontalAlign) {\n config.horizontalAlign = this.defaultHorizontalAlign;\n }\n\n if (_.isNaN(config.defaultMinWidth)) {\n config.defaultMinWidth = this.minWidth;\n }\n if (_.isNaN(config.defaultMinHeight)) {\n config.defaultMinHeight = this.minHeight;\n }\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 if (config.propertiesId) {\n this.properties.load(config.propertiesId, config);\n }\n\n config.setDefaultProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public open<T extends IWindowContent>(component: ComponentType<T>, config: WindowConfig): T {\n let window: IWindow<T> = null;\n if (config.id) {\n window = this.getById(config.id);\n if (window) {\n return window.content as T;\n }\n }\n\n this.setDefaultProperties(config);\n\n // let dialog = this.dialog as any;\n // dialog._getOverlayState = config.isModal ? dialog.getOverlayStateModal : dialog.getOverlayStateNonModal;\n\n let reference: MatDialogRef<IWindowContent> = this.dialog.open(component, config);\n window = this.factory.create({ config, reference, overlay: (reference as any)._overlayRef });\n\n let subscription = window.events.subscribe(event => {\n switch (event) {\n case WindowEvent.OPENED:\n this.add(config, reference.componentInstance);\n this.setWindowOnTop(window);\n if (this.isNeedCheckPositionAfterOpen) {\n this.checkPosition(window);\n }\n break;\n\n case WindowEvent.CLOSED:\n subscription.unsubscribe();\n this.remove(config);\n if (window.isOnTop && this.windows.size > 0) {\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 window.content as T;\n }\n\n public get(value: WindowId): IWindowContent {\n let id = value.toString();\n if (value instanceof WindowConfig) {\n id = value.id;\n }\n if (!id) {\n return null;\n }\n let window = this.getById(id);\n if (_.isNil(window)) {\n return null;\n }\n return window.content;\n }\n\n public has(value: WindowId): boolean {\n return !_.isNil(this.get(value));\n }\n\n public setOnTop(value: WindowId): boolean {\n let content = this.get(value);\n if (!content) {\n return false;\n }\n content.window.setOnTop();\n return true;\n }\n\n public removeAll(): void {\n this.windowsArray.forEach(window => window.close());\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.removeAll();\n\n if (!_.isNil(this.observer)) {\n this.observer.complete();\n this.observer = null;\n }\n\n if (!_.isNil(this.properties)) {\n this.properties.destroy();\n this.properties = null;\n }\n\n this.factory = null;\n this.properties = null;\n this.questionComponent = null;\n\n this.dialog = null;\n this.language = null;\n\n this._windows = 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: WindowConfig<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 // \tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n private get windowsArray(): Array<IWindow> {\n return Array.from(this.windows.values()).map(item => item.window);\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<WindowConfig, IWindowContent> {\n return this._windows;\n }\n}\n\nexport class PropertiesManager 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(name: string, config: WindowConfig): void {\n let item = this.cookies.getObject(name + 'Window') as any;\n if (!item) {\n return;\n }\n if (item.hasOwnProperty('width')) {\n config.defaultWidth = item.width;\n }\n if (item.hasOwnProperty('height')) {\n config.defaultHeight = item.height;\n }\n }\n\n public save(name: string, window: IWindow): void {\n this.cookies.putObject(name + 'Window', {\n width: window.getWidth(),\n height: window.getHeight()\n });\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.cookies = null;\n }\n}\n\nexport type WindowId = string | WindowConfig;\n\nexport enum WindowServiceEvent {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n SETTED_ON_TOP = 'SETTED_ON_TOP'\n}\n","import { AfterViewInit, ElementRef, ViewContainerRef, Inject, Optional, Component, InjectionToken, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { IWindow, WindowEvent } from './IWindow';\nimport { WindowConfig } from './WindowConfig';\nimport * as _ from 'lodash';\n\n@Component({ template: '' })\nexport abstract class IWindowContent<T = any> extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n // Properties=\n //\n // --------------------------------------------------------------------------\n\n protected _window: IWindow<T>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Optional() @Inject(WINDOW_CONTENT_CONTAINER) public container: WindowContentContainer) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitWindowProperties(): void {\n this.commitConfigProperties();\n }\n\n protected commitConfigProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n this.emit(WindowEvent.CONTENT_READY);\n }\n\n public ngOnDestroy(): void {\n // do nothing, window will destroy content after closing\n }\n\n public blink(): void {\n if (!_.isNil(this.window)) {\n this.window.blink();\n }\n }\n\n public shake(): void {\n if (!_.isNil(this.window)) {\n this.window.shake();\n }\n }\n\n public emit(event: string): void {\n if (!_.isNil(this.window)) {\n this.window.emit(event);\n }\n }\n\n public close(): 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\n this.window = null;\n this.container = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Proxy Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get data(): T {\n return !_.isNil(this.config) ? this.config.data : null;\n }\n\n public get isOnTop(): boolean {\n return !_.isNil(this.window) ? this.window.isOnTop : false;\n }\n\n public get isMinimized(): boolean {\n return !_.isNil(this.window) ? this.window.isMinimized : false;\n }\n\n public get events(): Observable<string> {\n return !_.isNil(this.window) ? this.window.events : null;\n }\n\n public get isDisabled(): boolean {\n return !_.isNil(this.window) ? this.window.isDisabled : false;\n }\n @Input()\n public set isDisabled(value: boolean) {\n if (!_.isNil(this.window)) {\n this.window.isDisabled = value;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get element(): ElementRef {\n if (_.isNil(this.container)) {\n return null;\n }\n return this.container instanceof ViewContainerRef ? this.container.element : this.container;\n }\n\n public get config(): WindowConfig<T> {\n return !_.isNil(this.window) ? this.window.config : null;\n }\n\n public get window(): IWindow<T> {\n return this._window;\n }\n @Input()\n public set window(value: IWindow<T>) {\n if (value === this._window) {\n return;\n }\n this._window = value;\n if (!_.isNil(value)) {\n this.commitWindowProperties();\n }\n }\n}\n\nexport type WindowContentContainer = ElementRef | ViewContainerRef;\nexport const WINDOW_CONTENT_CONTAINER = new InjectionToken<WindowContentContainer>('WINDOW_CONTENT_CONTAINER');\n","import { QuestionManager } from '../../question/QuestionManager';\nimport { IWindowContent } from '../IWindowContent';\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 { Component, ViewContainerRef } from '@angular/core';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowQuestionBaseComponent } from '../WindowQuestionBaseComponent';\nimport * as _ from 'lodash';\n\n@Component({\n templateUrl: 'window-question.component.html'\n})\nexport class WindowQuestionComponent extends WindowQuestionBaseComponent {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public text: string;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(container: ViewContainerRef, protected language: LanguageService) {\n super(container);\n ViewUtil.addClasses(container.element, 'd-block');\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitConfigProperties(): void {\n super.commitConfigProperties();\n\n if (!_.isNil(this.data.text)) {\n this.text = this.data.text.replace(/(?:\\r\\n|\\r|\\n)/g, `<br/>`);\n }\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","<p class=\"text m-4 text-center mouse-inactive text-word-wrap-break-word\" [innerHTML]=\"text\"></p>\n\n<div class=\"text-center border-sm-top p-3\">\n\n <button (click)=\"data?.closeClickHandler()\" mat-stroked-button *ngIf=\"data?.isInfo\">\n <span [innerHTML]=\"data?.closeText\"></span>\n </button>\n\n <button class=\"mr-3 me-3\" (click)=\"data?.yesClickHandler()\" color=\"primary\" mat-stroked-button *ngIf=\"data?.isQuestion\">\n <span [innerHTML]=\"data?.yesText\"></span>\n </button>\n\n <button (click)=\"data?.notClickHandler()\" mat-stroked-button *ngIf=\"data?.isQuestion\">\n <span [innerHTML]=\"data?.notText\"></span>\n </button>\n\n</div>","import { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { MatBottomSheet, MatBottomSheetConfig, MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { Destroyable } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { Observable, Subject } from 'rxjs';\nimport { WindowFactory } from '../window/WindowFactory';\nimport { IWindow } from '../window/IWindow';\nimport { BottomSheetBaseComponent } from './component/BottomSheetBaseComponent';\nimport { WindowConfig, WindowConfigOptions } from '../window/WindowConfig';\nimport { IWindowContent } from '../window/IWindowContent';\nimport { WindowServiceEvent } from '../window/WindowService';\nimport { QuestionManager } from '../question/QuestionManager';\nimport { IQuestion, IQuestionOptions, QuestionMode } from '../question/IQuestion';\nimport { WindowQuestionComponent } from '../window/component/window-question/window-question.component';\n\n@Injectable({ providedIn: 'root' })\nexport class BottomSheetService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public factory: WindowFactory<IWindow>;\n public questionComponent: ComponentType<IWindowContent>;\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(dialog: MatBottomSheet, language: LanguageService) {\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 // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public open<T extends IWindowContent>(component: ComponentType<T>, config: WindowConfig): T {\n let reference: MatBottomSheetRef<T> = this.dialog.open(component, config as MatBottomSheetConfig<T>);\n\n let window = this.factory.create({ config, reference: reference as any, overlay: (reference as any)._overlayRef });\n let subscription = window.events.subscribe(event => {\n switch (event) {\n case WindowServiceEvent.OPENED:\n this.observer.next(new ObservableData(WindowServiceEvent.OPENED, window));\n break;\n\n case WindowServiceEvent.CLOSED:\n subscription.unsubscribe();\n this.observer.next(new ObservableData(WindowServiceEvent.CLOSED, window));\n break;\n }\n });\n return window.content as T;\n }\n\n public removeAll(): void {}\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.removeAll();\n\n if (!_.isNil(this.observer)) {\n this.observer.complete();\n this.observer = null;\n }\n\n this.factory = null;\n this.questionComponent = null;\n\n this.dialog = null;\n this.language = 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: WindowConfig<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 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 { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { LanguageModule } from '../language/LanguageModule';\nimport { BottomSheetService } from './BottomSheetService';\nimport { MatBottomSheet, MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { BottomSheetCloseElementComponent } from './component/bottom-sheet-close-element/bottom-sheet-close-element.component';\n\nconst IMPORTS = [CommonModule, FormsModule, MatBottomSheetModule, MatButtonModule, LanguageModule];\nconst ENTRY_COMPONENTS = [BottomSheetCloseElementComponent];\nconst DECLARATIONS = [...ENTRY_COMPONENTS];\n\nconst EXPORTS = [...DECLARATIONS];\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS\n})\nexport class BottomSheetModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(): ModuleWithProviders<BottomSheetModule> {\n return {\n ngModule: BottomSheetService,\n providers: [\n {\n provide: BottomSheetService,\n deps: [MatBottomSheet, LanguageService],\n useClass: BottomSheetService\n }\n ]\n };\n }\n}\n","import { MatDialogRef } from '@angular/material/dialog';\nimport { Observable, Subject, filter, takeUntil } from 'rxjs';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowEvent } from '../window/IWindow';\nimport { WindowBase } from '../window/WindowBase';\nimport { INotification, NotificationEvent } from './INotification';\nimport { INotificationContent } from './INotificationContent';\nimport { NotificationConfig } from './NotificationConfig';\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;\n\n protected timer: any;\n protected observer: Subject<string>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(properties: NotificationProperties) {\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.observer\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 getConfig(): NotificationConfig {\n return this.properties.config;\n }\n protected getContainer(): HTMLElement {\n return this.container;\n }\n protected getReference(): MatDialogRef<INotificationContent> {\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(): NotificationConfig {\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 { AfterViewInit, Component, Directive, Injectable, Input, ViewContainerRef } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { Observable } from 'rxjs';\nimport { WindowEvent } from '../window/IWindow';\nimport { INotification } from './INotification';\nimport { NotificationConfig } from './NotificationConfig';\nimport * as _ from 'lodash';\n\n@Component({ template: '' })\nexport abstract class INotificationContent<T = any> extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected timer: any;\n protected _config: NotificationConfig<T>;\n protected _notification: INotification<T>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public container: ViewContainerRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitNotificationProperties(): void {\n this.config = this.notification.config;\n }\n\n protected commitConfigProperties(): void {\n this.clearTimer();\n if (this.config.closeDuration > 0) {\n this.timer = setTimeout(this.timerHandler, this.config.closeDuration);\n }\n }\n\n protected clearTimer(): void {\n if (!_.isNil(this.timer)) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n protected timerHandler = (): void => this.handleCloseClick();\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public close(): void {\n if (!_.isNil(this.notification)) {\n this.notification.close();\n }\n }\n\n public remove(): void {\n if (!_.isNil(this.notification)) {\n this.notification.remove();\n }\n }\n\n public emit(event: string): void {\n if (!_.isNil(this.notification)) {\n this.notification.emit(event);\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.clearTimer();\n this.config = null;\n this.notification = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n this.emit(WindowEvent.CONTENT_READY);\n }\n\n public handleCloseClick(): void {\n this.clearTimer();\n if (!_.isNil(this.config) && this.config.isRemoveAfterClose) {\n this.remove();\n } else {\n this.close();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Proxy Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get data(): T {\n return this.config ? this.config.data : null;\n }\n\n public get events(): Observable<string> {\n return this.notification ? this.notification.events : null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get notification(): INotification<T> {\n return this._notification;\n }\n public set notification(value: INotification<T>) {\n if (value === this._notification) {\n return;\n }\n this._notification = value;\n if (this._notification) {\n this.commitNotificationProperties();\n }\n }\n\n @Input()\n public set config(value: NotificationConfig<T>) {\n if (value === this._config) {\n return;\n }\n this._config = value;\n if (this._config) {\n this.commitConfigProperties();\n }\n }\n public get config(): NotificationConfig<T> {\n return this._config;\n }\n}\n","import { Component, HostListener, Injectable } from '@angular/core';\nimport { INotificationContent } from '../../notification/INotificationContent';\nimport { QuestionManager } from '../../question/QuestionManager';\nimport { ViewUtil } from '../../util/ViewUtil';\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 { Component, ViewContainerRef } from '@angular/core';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { NotificationService } from '../../NotificationService';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { NotificationQuestionBaseComponent } from '../NotificationQuestionBaseComponent';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-notification',\n templateUrl: 'notification.component.html',\n styleUrls: ['notification.component.scss']\n})\nexport class NotificationComponent extends NotificationQuestionBaseComponent {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(container: ViewContainerRef, private language: LanguageService, private notifications: NotificationService) {\n super(container);\n ViewUtil.addClasses(container.element, 'd-block');\n ViewUtil.setAttribute(container.element, 'tabindex', '-1');\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitConfigProperties(): void {\n super.commitConfigProperties();\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","<p class=\"text m-4 text-center mouse-inactive text-word-wrap-break-word\" [innerHTML]=\"data?.text\"></p>\n\n<div class=\"text-center border-sm-top p-3\" *ngIf=\"data?.isQuestion\">\n\n <button class=\"mr-3 me-3\" (click)=\"data?.yesClickHandler()\" tabindex=\"-1\" color=\"primary\" mat-stroked-button>\n <span [innerHTML]=\"data?.yesText\"></span>\n </button>\n\n <button (click)=\"data?.notClickHandler()\" tabindex=\"-1\" mat-stroked-button>\n <span [innerHTML]=\"data?.notText\"></span>\n </button>\n\n</div>","import { INotification } from './INotification';\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 { 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/language';\nimport { LanguageModule } from '../language/LanguageModule';\nimport { NotificationBaseComponent } from './component/NotificationBaseComponent';\nimport { NotificationComponent } from './component/notification/notification.component';\nimport { NotificationFactory } from './NotificationFactory';\nimport { NotificationService } from './NotificationService';\n\nconst IMPORTS = [CommonModule, FormsModule, MatDialogModule, MatButtonModule, LanguageModule];\nconst ENTRY_COMPONENTS = [];\nconst DECLARATIONS = [NotificationComponent, ...ENTRY_COMPONENTS];\n\nconst EXPORTS = [...DECLARATIONS];\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS\n})\nexport class NotificationModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(): ModuleWithProviders<NotificationModule> {\n return {\n ngModule: NotificationService,\n providers: [\n {\n provide: NotificationService,\n deps: [MatDialog, LanguageService],\n useFactory: notificationServiceFactory\n }\n ]\n };\n }\n}\n\nexport function notificationServiceFactory(dialog: MatDialog, language: LanguageService): NotificationService {\n let item = new NotificationService(dialog, language);\n item.factory = new NotificationFactory(NotificationBaseComponent);\n item.questionComponent = NotificationComponent;\n return item;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viCamelCase'\n})\nexport class CamelCasePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any): string {\n if (!value) {\n return '---';\n }\n return _.camelCase(value);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport numeral from 'numeral';\n\n@Pipe({\n name: 'viFinance'\n})\nexport class FinancePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = '0,0';\n\n // --------------------------------------------------------------------------\n //\n //\tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static format(value: number | string, format: string): string {\n value = Number(value);\n try {\n return numeral(value).format(format);\n } catch (error) {\n return value.toString();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: number | string, format?: string, isNeedPlus: boolean = false): string {\n value = Number(value);\n if (_.isNaN(value)) {\n return '---';\n }\n if (_.isNil(format)) {\n format = FinancePipe.DEFAULT_FORMAT;\n }\n if (isNeedPlus) {\n format = '+' + format;\n }\n return FinancePipe.format(value, format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { Moment } from 'moment';\nimport moment from 'moment';\nimport { GetFilterableCondition, RemoveFilterableCondition } from '@ts-core/common/dto';\n\n@Pipe({\n name: 'viMomentDate'\n})\nexport class MomentDatePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = 'LLL';\n\n // --------------------------------------------------------------------------\n //\n //\tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static parseMoment(value: MomentAvailableType, format?: string): Moment {\n if (_.isDate(value)) {\n return moment(value);\n }\n if (_.isString(value)) {\n return moment(value, format);\n }\n if (_.isNumber(value)) {\n return moment().milliseconds(value);\n }\n return value as Moment;\n }\n\n public static fromNow(value: MomentAvailableType, format: string = 'LLL'): string {\n if (_.isNil(value)) {\n return '---';\n }\n\n let item = MomentDatePipe.parseMoment(value);\n let date = item.fromNow();\n date = date.charAt(0).toUpperCase() + date.slice(1);\n if (!_.isNil(format)) {\n date += ' (' + item.format(format) + ')';\n }\n return date;\n }\n\n public static toConditionValue(value: string | Date): string {\n if (_.isNil(value)) {\n return undefined;\n }\n value = value.toString();\n let item = MomentDatePipe.parseMoment(RemoveFilterableCondition(value));\n return item.isValid() ? `${GetFilterableCondition(value) || '='}${item.toDate().toString()}` : undefined;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: MomentAvailableType, format?: string): string {\n if (_.isNil(value)) {\n return '---';\n }\n\n let moment = MomentDatePipe.parseMoment(value);\n return moment.format(format || MomentDatePipe.DEFAULT_FORMAT);\n }\n}\nexport type MomentAvailableType = Date | Moment | string | number;\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { Moment } from 'moment';\nimport moment from 'moment';\nimport { MomentDatePipe } from './MomentDatePipe';\n\n@Pipe({\n name: 'viMomentAdaptiveDate'\n})\nexport class MomentDateAdaptivePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n public static HOUR_FORMAT = 'HH:ss';\n public static DAY_FORMAT = 'DD MMM HH:ss';\n public static MONTH_FORMAT = 'DD MMM HH:ss';\n public static YEAR_FORMAT = 'LLL';\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: Date | Moment): string {\n if (_.isNaN(value)) {\n return '---';\n }\n\n let item = MomentDatePipe.parseMoment(value);\n let duration = moment.duration(moment().diff(item));\n\n let format = null;\n if (Math.abs(duration.asYears()) >= 1) {\n format = MomentDateAdaptivePipe.YEAR_FORMAT;\n } else if (Math.abs(duration.asMonths()) >= 1) {\n format = MomentDateAdaptivePipe.MONTH_FORMAT;\n } else if (Math.abs(duration.asDays()) >= 1) {\n format = MomentDateAdaptivePipe.DAY_FORMAT;\n } else {\n format = MomentDateAdaptivePipe.HOUR_FORMAT;\n }\n return item.format(format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Moment } from 'moment';\nimport { MomentDatePipe } from './MomentDatePipe';\n\n@Pipe({\n name: 'viMomentDateFromNow'\n})\nexport class MomentDateFromNowPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: Date | Moment, format?: string): string {\n return MomentDatePipe.fromNow(value, format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MomentAvailableType, MomentDatePipe } from './MomentDatePipe';\nimport * as _ from 'lodash';\nimport moment from 'moment';\n\n@Pipe({\n name: 'viMomentTime'\n})\nexport class MomentTimePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = 'hh:mm:ss';\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(timeMilliseconds: number, format?: string): string {\n if (_.isNil(timeMilliseconds)) {\n return '---';\n }\n\n return moment()\n .startOf('day')\n .add(timeMilliseconds, 'milliseconds')\n .format(format || MomentTimePipe.DEFAULT_FORMAT);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viNgModelError'\n})\nexport class NgModelErrorPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: ValidationErrors): string {\n if (_.isNil(value)) {\n return null;\n }\n let keys = _.keys(value);\n if (_.isEmpty(keys)) {\n return null;\n }\n let key = keys[0];\n return this.translateError(key, value[key]);\n }\n\n public translateError(key: string, value: any): string {\n return this.language.translate('error.form.' + key, value);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected language: LanguageService) {}\n}\n","import { Pipe } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viSanitize'\n})\nexport class SanitizePipe {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private sanitizer: DomSanitizer) {}\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: string, type: string = 'html'): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n if (_.isNil(value)) {\n return null;\n }\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error('Invalid safe type specified: ' + type);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viStartCase'\n})\nexport class StartCasePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any): string {\n if (!value) {\n return '---';\n }\n return value.charAt(0).toUpperCase() + value.slice(1);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DateUtil } from '@ts-core/common/util';\nimport * as _ from 'lodash';\nimport { FinancePipe } from './FinancePipe';\n\n@Pipe({\n name: 'viTime'\n})\nexport class TimePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = '00:00:00';\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(milliseconds: number | string, format?: string): string {\n milliseconds = Number(milliseconds);\n if (_.isNaN(milliseconds)) {\n return '---';\n }\n if (_.isNil(format)) {\n format = TimePipe.DEFAULT_FORMAT;\n }\n return FinancePipe.format(milliseconds / DateUtil.MILISECONDS_SECOND, format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTruncate'\n})\nexport class TruncatePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any, maxLength?: number): string {\n if (!value) {\n return '---';\n }\n return _.truncate(value, { length: maxLength });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viPrettify'\n})\nexport class PrettifyPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static EMPTY_SYMBOL = '-';\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any): string {\n let isNil = _.isNil(value);\n if (!isNil && !_.isNumber(value)) {\n isNil = _.isEmpty(value);\n }\n return !isNil ? value : PrettifyPipe.EMPTY_SYMBOL;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {}\n}\n","import { Directive, ElementRef, HostListener, Injectable, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { Theme, ThemeAssetService, ThemeService } from '@ts-core/frontend/theme';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive()\nexport abstract class ThemeAssetDirective<T extends HTMLElement = HTMLElement> extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _name: string;\n protected _extension: string = 'png';\n\n protected _isFile: boolean = false;\n protected _isImage: boolean = false;\n protected _isVideo: boolean = false;\n protected _isSound: boolean = false;\n protected _isBackground: boolean = false;\n protected _isIgnoreTheme: boolean = true;\n\n protected source: string;\n protected element: T;\n\n private isTriedThemeDefault: boolean;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, protected theme: ThemeService, protected themeAsset: ThemeAssetService) {\n super();\n this.element = ViewUtil.parseElement(element.nativeElement) as T;\n\n this.theme.changed.pipe(takeUntil(this.destroyed)).subscribe(() => {\n this.isTriedThemeDefault = false;\n this.setSourceProperties();\n });\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected getSource(id: string): string {\n if (_.isNil(id)) {\n return null;\n }\n if (this.isImage) {\n return this.themeAsset.getImage(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isBackground) {\n return this.themeAsset.getBackground(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isSound) {\n return this.themeAsset.getSound(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isVideo) {\n return this.themeAsset.getVideo(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isFile) {\n return this.themeAsset.getFile(id, this.extension, this.isIgnoreTheme);\n }\n return this.themeAsset.getIcon(id, this.extension, this.isIgnoreTheme);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('error', ['$event'])\n private errorLoadingHandler(event: ErrorEvent): void {\n this.errorHandler(event);\n }\n\n protected errorHandler(event: ErrorEvent): void {\n if (this.isTriedThemeDefault) {\n return;\n }\n this.isTriedThemeDefault = true;\n this.source = this.getSource(this.getDefaultSourceId());\n this.commitSourceProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setSourceProperties(): void {\n this.source = this.getSource(this.getSourceId(this.theme.theme));\n this.commitSourceProperties();\n }\n\n protected getSourceId(theme: Theme): string {\n return !_.isNil(theme) ? this.name + _.capitalize(theme.name) : null;\n }\n\n protected getDefaultSourceId(): string {\n return this.themeAsset.getName(this.name, this.isIgnoreTheme);\n }\n\n protected abstract commitSourceProperties(): void;\n\n protected abstract removeSourceProperties(): void;\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.name = null;\n this.theme = null;\n this.element = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public set isSound(value: boolean) {\n if (value === this._isSound) {\n return;\n }\n this._isSound = value;\n this.setSourceProperties();\n }\n public get isSound(): boolean {\n return this._isSound;\n }\n\n @Input()\n public set isVideo(value: boolean) {\n if (value === this._isVideo) {\n return;\n }\n this._isVideo = value;\n this.setSourceProperties();\n }\n public get isVideo(): boolean {\n return this._isVideo;\n }\n\n @Input()\n public set isFile(value: boolean) {\n if (value === this._isFile) {\n return;\n }\n this._isFile = value;\n this.setSourceProperties();\n }\n public get isFile(): boolean {\n return this._isFile;\n }\n\n @Input()\n public set isImage(value: boolean) {\n if (value === this._isImage) {\n return;\n }\n this._isImage = value;\n this.setSourceProperties();\n }\n public get isImage(): boolean {\n return this._isImage;\n }\n\n @Input()\n public set isBackground(value: boolean) {\n if (value === this._isBackground) {\n return;\n }\n this._isBackground = value;\n this.setSourceProperties();\n }\n public get isBackground(): boolean {\n return this._isBackground;\n }\n\n @Input()\n public set isIgnoreTheme(value: boolean) {\n if (value === this._isIgnoreTheme) {\n return;\n }\n this._isIgnoreTheme = value;\n this.setSourceProperties();\n }\n public get isIgnoreTheme(): boolean {\n return this._isIgnoreTheme;\n }\n\n public get name(): string {\n return this._name;\n }\n @Input()\n public set name(value: string) {\n if (value === this._name) {\n return;\n }\n if (!_.isNil(this._name)) {\n this.removeSourceProperties();\n }\n this._name = value;\n if (!_.isNil(value)) {\n this.setSourceProperties();\n }\n }\n\n public get extension(): string {\n return this._extension;\n }\n @Input()\n public set extension(value: string) {\n if (value === this._extension) {\n return;\n }\n this._extension = value;\n if (!_.isNil(value)) {\n this.setSourceProperties();\n }\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend/theme';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { ThemeAssetDirective } from './ThemeAssetDirective';\n\n@Directive({\n selector: '[vi-theme-background]'\n})\nexport class ThemeAssetBackgroundDirective extends ThemeAssetDirective {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, theme: ThemeService, themeAsset: ThemeAssetService) {\n super(element, theme, themeAsset);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitSourceProperties(): void {\n let value = 'url(' + this.source + ')';\n ViewUtil.setStyle(this.element, 'backgroundImage', value);\n }\n\n protected removeSourceProperties(): void {\n ViewUtil.removeStyle(this.element, 'backgroundImage');\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend/theme';\nimport { ThemeAssetDirective } from './ThemeAssetDirective';\n\n@Directive({\n selector: '[vi-theme-image]'\n})\nexport class ThemeAssetImageDirective extends ThemeAssetDirective<HTMLImageElement> {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, theme: ThemeService, themeAsset: ThemeAssetService) {\n super(element, theme, themeAsset);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitSourceProperties(): void {\n this.element.src = this.source;\n }\n protected removeSourceProperties(): void {\n this.element.src = null;\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeService } from '@ts-core/frontend/theme';\n\n@Directive({\n selector: '[vi-theme-toggle]'\n})\nexport class ThemeToggleDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private theme: ThemeService) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('click', ['$event'])\n private clickHandler(event: MouseEvent) {\n let themes = this.theme.themes.collection;\n let length = themes.length;\n if (length < 2) {\n return;\n }\n\n let index = 0;\n if (this.theme.theme) {\n index = themes.indexOf(this.theme.theme);\n if (index < length - 1) {\n index++;\n } else {\n index = 0;\n }\n }\n\n this.theme.theme = themes[index];\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.theme = null;\n }\n}\n","import { Directive, ElementRef, Input, RendererStyleFlags2 } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeService } from '@ts-core/frontend/theme';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-theme-style]'\n})\nexport class ThemeStyleDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _key: string;\n protected _flags: RendererStyleFlags2;\n protected _styleName: string;\n\n protected element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, protected theme: ThemeService) {\n super();\n\n this.element = ViewUtil.parseElement(element.nativeElement);\n this.theme.changed.pipe(takeUntil(this.destroyed)).subscribe(() => this.stylePropertiesAdd());\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitStyleProperties(name: string, value: string): void {\n ViewUtil.setStyle(this.element, name, value, this.flags);\n }\n\n protected stylePropertiesCheck(): void {\n if (this.isNeedStyleAdd()) {\n this.stylePropertiesAdd();\n } else if (this.isNeedStyleRemove()) {\n this.stylePropertiesRemove();\n }\n }\n\n protected stylePropertiesRemove(): void {\n ViewUtil.removeStyle(this.element, this.styleName);\n }\n\n protected stylePropertiesAdd(): void {\n this.commitStyleProperties(this.styleName, this.theme.getStyle(this.key));\n }\n\n protected isNeedStyleAdd(): boolean {\n return !_.isNil(this.theme.theme) && !_.isNil(this.styleName);\n }\n\n protected isNeedStyleRemove(): boolean {\n return !_.isNil(this.styleName);\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.key = null;\n this.theme = null;\n this.element = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get flags(): RendererStyleFlags2 {\n return this._flags;\n }\n @Input()\n public set flags(value: RendererStyleFlags2) {\n if (value === this._flags) {\n return;\n }\n this._flags = value;\n this.stylePropertiesCheck();\n }\n\n public get styleName(): string {\n return this._styleName;\n }\n @Input()\n public set styleName(value: string) {\n if (value === this._styleName) {\n return;\n }\n this._styleName = value;\n this.stylePropertiesCheck();\n }\n\n public get key(): string {\n return this._key;\n }\n @Input('vi-theme-style')\n public set key(value: string) {\n if (value === this._key) {\n return;\n }\n this._key = value;\n if (!_.isNil(value)) {\n this.stylePropertiesCheck();\n }\n }\n}\n","import { Directive, ElementRef, Input, RendererStyleFlags2 } from '@angular/core';\nimport { ThemeService } from '@ts-core/frontend/theme';\nimport { ThemeStyleDirective } from './ThemeStyleDirective';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[vi-theme-style-hover]'\n})\nexport class ThemeStyleHoverDirective extends ThemeStyleDirective {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _isHover: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, theme: ThemeService) {\n super(element, theme);\n\n this.flags = RendererStyleFlags2.Important;\n this.element.addEventListener('mouseenter', this.mouseEnter, false);\n this.element.addEventListener('mouseleave', this.mouseLeave, false);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected isNeedStyleAdd(): boolean {\n return this.isHover && super.isNeedStyleAdd();\n }\n\n protected isNeedStyleRemove(): boolean {\n return !this.isHover || super.isNeedStyleRemove();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected mouseEnter = (event: MouseEvent): void => {\n this.isHover = true;\n };\n\n protected mouseLeave = (event: MouseEvent): void => {\n this.isHover = false;\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n this.element.removeEventListener('mouseenter', this.mouseEnter, false);\n this.element.removeEventListener('mouseleave', this.mouseLeave, false);\n super.destroy();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isHover(): boolean {\n return this._isHover;\n }\n public set isHover(value: boolean) {\n if (value === this._isHover) {\n return;\n }\n this._isHover = value;\n this.stylePropertiesCheck();\n }\n\n public get key(): string {\n return super.key;\n }\n @Input('vi-theme-style-hover')\n public set key(value: string) {\n super.key = value;\n }\n\n public get styleName(): string {\n return super.styleName;\n }\n @Input()\n public set styleName(value: string) {\n super.styleName = value;\n }\n\n public get flags(): RendererStyleFlags2 {\n return super.flags;\n }\n @Input()\n public set flags(value: RendererStyleFlags2) {\n super.flags = value;\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieService } from '@ts-core/frontend/cookie';\nimport { IThemeServiceOptions, ThemeService, ThemeAssetService } from '@ts-core/frontend/theme';\nimport { CookieModule } from '../cookie/CookieModule';\nimport { CookieService } from '../cookie/CookieService';\nimport { ThemeAssetBackgroundDirective } from './ThemeAssetBackgroundDirective';\nimport { ThemeAssetImageDirective } from './ThemeAssetImageDirective';\nimport { ThemeToggleDirective } from './ThemeToggleDirective';\nimport { ThemeStyleDirective } from './ThemeStyleDirective';\nimport { ThemeStyleHoverDirective } from './ThemeStyleHoverDirective';\nimport * as _ from 'lodash';\n\nlet declarations = [ThemeToggleDirective, ThemeAssetImageDirective, ThemeAssetBackgroundDirective, ThemeStyleDirective, ThemeStyleHoverDirective];\n\n@NgModule({\n imports: [CookieModule],\n declarations,\n exports: declarations\n})\nexport class ThemeModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: IThemeServiceOptions): ModuleWithProviders<ThemeModule> {\n return {\n ngModule: ThemeModule,\n providers: [\n {\n provide: THEME_OPTIONS,\n useValue: options || {}\n },\n {\n provide: ThemeService,\n deps: [CookieService, THEME_OPTIONS],\n useFactory: themeServiceFactory\n },\n {\n provide: ThemeAssetService,\n deps: [ThemeService],\n useFactory: themeAssetServiceFactory\n }\n ]\n };\n }\n}\n\nexport function themeServiceFactory(cookie: ICookieService, options?: IThemeServiceOptions): ThemeService {\n if (!_.isNil(options) && _.isNil(options.service)) {\n options.service = cookie;\n }\n return new ThemeService(options);\n}\n\nexport function themeAssetServiceFactory(theme: ThemeService): ThemeAssetService {\n return new ThemeAssetService(theme);\n}\n\nexport const THEME_OPTIONS = new InjectionToken<IThemeServiceOptions>(`THEME_OPTIONS`);\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Interactable } from '@interactjs/types';\nimport * as interact from 'interactjs';\nimport { Destroyable } from '@ts-core/common';\nimport { IWindow } from '../IWindow';\nimport { WindowDragable } from './WindowDragable';\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 { Component, ElementRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-window-close-element',\n styleUrls: ['window-close-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 this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n super.destroyChildren();\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent): void => {\n event.stopPropagation();\n if (!_.isNil(this.window)) {\n this.window.close();\n }\n };\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-window-resize-element',\n styleUrls: ['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 this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent) => {\n event.stopPropagation();\n\n if (!_.isNil(this.window)) {\n this.window.isMinimized = !this.window.isMinimized;\n }\n };\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowEvent } from '../../../window/IWindow';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-window-minimize-element',\n styleUrls: ['window-minimize-element.component.scss'],\n template: ''\n})\nexport class WindowMinimizeElementComponent extends WindowElement {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n public static ICON_CLASS: string = null;\n public static ICON_MINIMIZE_VALUE: string = null;\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 };\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.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_CLASS)) {\n ViewUtil.addClasses(this.nativeElement, WindowMinimizeElementComponent.ICON_CLASS);\n }\n\n ViewUtil.addClass(this.nativeElement, 'mouse-active');\n this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n super.destroyChildren();\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent): void => {\n event.stopPropagation();\n if (!_.isNil(this.window)) {\n this.window.isMinimized = !this.window.isMinimized;\n }\n };\n}\n","import { EdgeOptions, Interactable, InteractEvent, ResizableOptions } from '@interactjs/types';\nimport * as interact from 'interactjs';\nimport { ViewUtil } from '../../util/ViewUtil';\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 { DraggableOptions, InteractEvent } from '@interactjs/types';\nimport { ViewUtil } from '../../util/ViewUtil';\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 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 { ComponentFactoryResolver, ComponentRef, ViewContainerRef } from '@angular/core';\nimport { APPLICATION_INJECTOR } from '../../ApplicationInjector';\nimport { ViewUtil } from '../../util/ViewUtil';\nimport { WindowCloseElementComponent } from './window-close-element/window-close-element.component';\nimport { WindowMinimizeElementComponent } from './window-minimize-element/window-minimize-element.component';\nimport { WindowResizeElementComponent } from './window-resize-element/window-resize-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 RESIZE_COMPONENT = WindowResizeElementComponent;\n public static MINIMIZE_COMPONENT = WindowMinimizeElementComponent;\n\n // --------------------------------------------------------------------------\n //\n // Properties Methods\n //\n // --------------------------------------------------------------------------\n\n protected closeWindow: ComponentRef<any>;\n protected resizedWindow: ComponentRef<any>;\n protected minimizeWindow: ComponentRef<any>;\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setProperties(): void {\n super.setProperties();\n this.createWindowComponents();\n }\n\n protected createWindowComponents(): void {\n if (!(this.content.container instanceof ViewContainerRef)) {\n return;\n }\n if (!this.config.disableClose && !this.closeWindow) {\n let factory = this.resolver.resolveComponentFactory(WindowBaseComponent.CLOSE_COMPONENT);\n this.closeWindow = this.content.container.createComponent(factory);\n this.closeWindow.instance.window = this;\n }\n\n if (this.config.isResizeable && !this.resizedWindow) {\n let factory = this.resolver.resolveComponentFactory(WindowBaseComponent.RESIZE_COMPONENT);\n this.resizedWindow = this.content.container.createComponent(factory);\n this.resizedWindow.instance.window = this;\n }\n\n if (this.config.isMinimizable && !this.minimizeWindow) {\n let factory = this.resolver.resolveComponentFactory(WindowBaseComponent.MINIMIZE_COMPONENT);\n this.minimizeWindow = this.content.container.createComponent(factory);\n this.minimizeWindow.instance.window = this;\n }\n }\n\n protected commitIsBlinkProperties(): void {\n ViewUtil.toggleClass(this.container, this.blinkClass, this.isBlink);\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 protected commitIsShakingProperties(): void {\n ViewUtil.toggleClass(this.container, this.shakingClass, this.isShaking);\n }\n\n protected commitIsMinimizedProperties(): void {\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 protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n if (!super.isNeedClickStopPropagation(event)) {\n return false;\n }\n if (this.closeWindow && this.closeWindow.location.nativeElement === event.target) {\n return false;\n }\n return true;\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Properties\n //\n // --------------------------------------------------------------------------\n\n protected get resolver(): ComponentFactoryResolver {\n return APPLICATION_INJECTOR().get(ComponentFactoryResolver);\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 // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n // Components will destroy automatically\n this.closeWindow = null;\n this.resizedWindow = null;\n this.minimizeWindow = null;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { CookieModule } from '../cookie/CookieModule';\nimport { CookieService } from '../cookie/CookieService';\nimport { LanguageModule } from '../language/LanguageModule';\nimport { WindowService } from './WindowService';\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 { 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 { WindowFactory } from './WindowFactory';\nimport { WindowBaseComponent } from './component/WindowBaseComponent';\n\nconst IMPORTS = [CommonModule, FormsModule, MatButtonModule, MatDialogModule, CookieModule, LanguageModule];\nconst ENTRY_COMPONENTS = [WindowQuestionComponent, WindowCloseElementComponent, WindowResizeElementComponent, WindowMinimizeElementComponent];\nconst DECLARATIONS = [WindowDragAreaDirective, ...ENTRY_COMPONENTS];\nconst EXPORTS = [...DECLARATIONS];\n\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS\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: [MatDialog, LanguageService, CookieService],\n useFactory: windowServiceFactory\n }\n ]\n };\n }\n}\n\nexport function windowServiceFactory(dialog: MatDialog, language: LanguageService, cookies: CookieService): WindowService {\n let item = new WindowService(dialog, language, cookies);\n item.factory = new WindowFactory(WindowBaseComponent);\n item.questionComponent = WindowQuestionComponent;\n return item;\n}\n","import { MatMenuPanel, MatMenuTrigger } from '@angular/material/menu';\nimport { FlexibleConnectedPositionStrategy, PositionStrategy } from '@angular/cdk/overlay';\nimport * as _ from 'lodash';\nimport { Directive, Input } from '@angular/core';\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)) return;\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 return !_.isNil(this['_overlayRef']) ? this['_overlayRef'].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 { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ILogger, Logger, LoggerLevel } from '@ts-core/common/logger';\nimport { ICookieOptions } from '@ts-core/frontend/cookie';\nimport { ILanguageServiceOptions } from '@ts-core/frontend/language';\nimport { DefaultLogger } from '@ts-core/frontend/logger';\nimport { LoadingService, NativeWindowService } from '@ts-core/frontend/service';\nimport { IThemeServiceOptions } from '@ts-core/frontend/theme';\nimport * as _ from 'lodash';\nimport { AssetModule } from './asset/AssetModule';\nimport { CookieModule } from './cookie/CookieModule';\nimport { AspectRatioResizeDirective } from './directive/AspectRatioResizeDirective';\nimport { AutoScrollBottomDirective } from './directive/AutoScrollBottomDirective';\nimport { ClickToCopyDirective } from './directive/ClickToCopyDirective';\nimport { ClickToSelectDirective } from './directive/ClickToSelectDirective';\nimport { FocusDirective } from './directive/FocusDirective';\nimport { SelectOnFocusDirective } from './directive/SelectOnFocusDirective';\nimport { HTMLContentTitleDirective } from './directive/HTMLContentTitleDirective';\nimport { InfiniteScrollDirective } from './directive/InfiniteScrollDirective';\nimport { ResizeDirective } from './directive/ResizeDirective';\nimport { ScrollCheckDirective } from './directive/ScrollCheckDirective';\nimport { ScrollDirective } from './directive/ScrollDirective';\nimport { LanguageModule } from './language/LanguageModule';\nimport { BottomSheetModule } from './bottomSheet/BottomSheetModule';\nimport { NotificationModule } from './notification/NotificationModule';\nimport { CamelCasePipe } from './pipe/CamelCasePipe';\nimport { FinancePipe } from './pipe/FinancePipe';\nimport { MomentDateAdaptivePipe } from './pipe/MomentDateAdaptivePipe';\nimport { MomentDateFromNowPipe } from './pipe/MomentDateFromNowPipe';\nimport { MomentDatePipe } from './pipe/MomentDatePipe';\nimport { MomentTimePipe } from './pipe/MomentTimePipe';\nimport { NgModelErrorPipe } from './pipe/NgModelErrorPipe';\nimport { SanitizePipe } from './pipe/SanitizePipe';\nimport { StartCasePipe } from './pipe/StartCasePipe';\nimport { TimePipe } from './pipe/TimePipe';\nimport { TruncatePipe } from './pipe/TruncatePipe';\nimport { PrettifyPipe } from './pipe/PrettifyPipe';\nimport { ThemeModule } from './theme/ThemeModule';\nimport { WindowModule } from './window/WindowModule';\nimport { MenuTriggerForDirective } from './directive/MenuTriggerForDirective';\n\nconst IMPORTS = [CookieModule, ThemeModule, LanguageModule, AssetModule, WindowModule, NotificationModule];\n\nconst DECLARATIONS = [\n TimePipe,\n FinancePipe,\n SanitizePipe,\n TruncatePipe,\n PrettifyPipe,\n CamelCasePipe,\n StartCasePipe,\n NgModelErrorPipe,\n\n MomentDatePipe,\n MomentTimePipe,\n MomentDateFromNowPipe,\n MomentDateAdaptivePipe,\n\n FocusDirective,\n ResizeDirective,\n ScrollDirective,\n ScrollCheckDirective,\n ClickToCopyDirective,\n SelectOnFocusDirective,\n ClickToSelectDirective,\n MenuTriggerForDirective,\n InfiniteScrollDirective,\n HTMLContentTitleDirective,\n AutoScrollBottomDirective,\n AspectRatioResizeDirective\n];\n\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: [...IMPORTS, ...DECLARATIONS]\n})\nexport class VICommonModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: IVICommonOptions): ModuleWithProviders<VICommonModule> {\n return {\n ngModule: VICommonModule,\n providers: [\n LoadingService,\n NativeWindowService,\n\n { provide: VI_ANGULAR_OPTIONS, useValue: options || {} },\n { provide: Logger, deps: [VI_ANGULAR_OPTIONS], useFactory: loggerServiceFactory },\n\n ...WindowModule.forRoot().providers,\n ...BottomSheetModule.forRoot().providers,\n ...NotificationModule.forRoot().providers,\n ...CookieModule.forRoot(options).providers,\n ...ThemeModule.forRoot(options ? options.themeOptions : null).providers,\n ...LanguageModule.forRoot(options ? options.languageOptions : null).providers\n ]\n };\n }\n}\n\nexport class IVICommonOptions extends ICookieOptions {\n loggerLevel?: LoggerLevel;\n themeOptions?: IThemeServiceOptions;\n languageOptions?: ILanguageServiceOptions;\n}\n\nexport function loggerServiceFactory(options: IVICommonOptions): ILogger {\n return new DefaultLogger(!_.isNil(options.loggerLevel) ? options.loggerLevel : LoggerLevel.LOG);\n}\n\nexport const VI_ANGULAR_OPTIONS = new InjectionToken<IVICommonOptions>(`VI_ANGULAR_OPTIONS`);\n","import { Component, ElementRef, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { ViewUtil } from '../../../util/ViewUtil';\n\n@Component({\n selector: 'vi-language-selector',\n templateUrl: 'language-selector.component.html'\n})\nexport class LanguageSelectorComponent extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private _isNeedIcon: boolean = true;\n private _isNeedLabel: boolean = true;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected element: ElementRef, public language: LanguageService) {\n super();\n ViewUtil.addClasses(element, 'd-block');\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitIsNeedLabelProperties(): void {\n ViewUtil.toggleClass(this.element, 'no-label', !this.isNeedLabel);\n }\n\n protected commitIsNeedIconProperties(): void {\n ViewUtil.toggleClass(this.element, 'no-icon', !this.isNeedLabel);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isNeedIcon(): boolean {\n return this._isNeedIcon;\n }\n @Input()\n public set isNeedIcon(value: boolean) {\n if (value === this._isNeedIcon) {\n return;\n }\n this._isNeedIcon = value;\n this.commitIsNeedIconProperties();\n }\n\n public get isNeedLabel(): boolean {\n return this._isNeedLabel;\n }\n @Input()\n public set isNeedLabel(value: boolean) {\n if (value === this._isNeedLabel) {\n return;\n }\n this._isNeedLabel = value;\n this.commitIsNeedLabelProperties();\n }\n}\n","<mat-form-field class=\"d-block no-underline\" [title]=\"'general.locale' | viTranslate\">\n <mat-select [(ngModel)]=\"language.language\">\n <mat-select-trigger>\n <div class=\"d-flex text-one-line align-items-center\">\n <img class=\"mr-2 me-2 flex-shrink-0\" style=\"height: 22px; width: 24px\" [src]=\"language.language?.locale + 'Language' | viAssetIcon:'svg'\" *ngIf=\"isNeedIcon\">\n <p class=\"text-one-line mouse-inactive flex-grow-1\" [innerHTML]=\"language.language?.name\" *ngIf=\"isNeedLabel\"></p>\n </div>\n </mat-select-trigger>\n \n <mat-option *ngFor=\"let item of language.languages?.collection\" [value]=\"item\">\n <div class=\"d-flex text-one-line align-items-center\">\n <img class=\"mr-2 me-2 flex-shrink-0\" style=\"width: 24px\" [src]=\"item.locale + 'Language' | viAssetIcon:'svg'\">\n <p class=\"text-one-line mouse-inactive flex-grow-1\" [innerHTML]=\"item.name\"></p>\n </div>\n </mat-option>\n </mat-select>\n</mat-form-field>","import { Component, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ListItems } from '../../list/ListItems';\nimport { IListItem } from '../../list/IListItem';\n\n@Component({\n selector: 'vi-menu-list',\n templateUrl: 'menu-list.component.html'\n})\nexport class MenuListComponent<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public list: ListItems<IListItem<T>>;\n}\n","<ng-container *ngFor=\"let item of list?.filtered\">\n <button mat-menu-item [ngClass]=\"item.className\" (click)=\"list?.actionItem(item)\">\n <span [ngClass]=\"item.iconId\" *ngIf=\"item.iconId\"></span>\n <span [innerHTML]=\"item.label\" [title]=\"item.label\"></span>\n </button>\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ISelectListItem } from '../../list/select/ISelectListItem';\nimport { SelectListItems } from '../../list/select/SelectListItems';\n\n@Component({\n selector: 'vi-select-list',\n templateUrl: 'select-list.component.html'\n})\nexport class SelectListComponent<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public list: SelectListItems<ISelectListItem<T>>;\n}\n","<ng-container *ngFor=\"let item of list?.collection\">\n\n <mat-list-item [ngClass]=\"item.isSelected? item.selectedClassName : item.className\" *ngIf=\"item.isEnabled\" (click)=\"list.actionItem(item)\" >\n <span [ngClass]=\"item.iconId\" *ngIf=\"item.iconId\" matListIcon></span>\n <span [innerHTML]=\"item.label\" [title]=\"item.label\" matLine></span>\n </mat-list-item>\n\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\nimport { DestroyableContainer } from '@ts-core/common';\n\nimport * as _ from 'lodash';\nimport { ISelectListItem } from '../../list/select/ISelectListItem';\nimport { SelectListItems } from '../../list/select/SelectListItems';\n\n@Component({\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 protected _list: SelectListItems<ISelectListItem<T>>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitListProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public selectedTabChange(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 // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.list = 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 this._list = value;\n if (!_.isNil(value)) {\n this.commitListProperties();\n }\n }\n}\n","<mat-tab-group [ngClass]=\"className\" (selectedIndexChange)=\"list.selectedIndex = $event\" [selectedIndex]=\"list?.selectedIndex\"\n (selectedTabChange)=\"selectedTabChange($event)\">\n <ng-container *ngFor=\"let item of list?.collection\">\n <mat-tab [ngClass]=\"item.className\" [label]=\"item.label\" [disabled]=\"!item.isEnabled\" (click)=\"list?.actionItem(item)\"></mat-tab>\n </ng-container>\n</mat-tab-group>\n","import { DataSourceMapCollection, DataSourceMapCollectionEvent } from '@ts-core/common/map/dataSource';\nimport * as _ from 'lodash';\nimport { Subscription, BehaviorSubject, Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DestroyableContainer, LoadableEvent } from '@ts-core/common';\n\nexport class CdkTableDataSource<U> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected subject: BehaviorSubject<Array<U>>;\n protected subscription: Subscription;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected map: DataSourceMapCollection<U>) {\n super();\n\n this.subject = new BehaviorSubject(map.collection);\n map.events.pipe(takeUntil(this.destroyed)).subscribe(data => {\n switch (data.type) {\n case LoadableEvent.COMPLETE:\n this.parseResponse();\n break;\n case DataSourceMapCollectionEvent.DATA_LOADED_AND_PARSED:\n this.parseParsedResponse();\n break;\n }\n });\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected parseResponse(): void {\n this.subject.next(this.map.collection);\n }\n\n protected parseParsedResponse(): void {}\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.subject.complete();\n this.subject = null;\n\n this.map = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get dataSource(): Observable<Array<U>> {\n return this.subject.asObservable();\n }\n}\n","import { CdkTableDataSource } from './CdkTableDataSource';\nimport { FilterableDataSourceMapCollection } from '@ts-core/common/map/dataSource';\nimport * as _ from 'lodash';\nimport { ObjectUtil } from '@ts-core/common/util';\nimport { Sort, SortDirection } from '@angular/material/sort';\n\nexport abstract class CdkTableFilterableMapCollection<U, V> extends FilterableDataSourceMapCollection<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static getSort<U, V = any>(collection: FilterableDataSourceMapCollection<U, V>): 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 applySortEvent<U, V = any>(item: FilterableDataSourceMapCollection<U, V>, event: Sort): boolean {\n let value = undefined;\n if (event.direction === 'asc') {\n value = true;\n }\n if (event.direction === 'desc') {\n value = false;\n }\n\n if (value === item.sort[event.active]) {\n return false;\n }\n ObjectUtil.clear(item.sort);\n item.sort[event.active] = value;\n return true;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: CdkTableDataSource<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n super.initialize();\n this._table = this.getTable();\n }\n\n protected getTable(): CdkTableDataSource<U> {\n return new CdkTableDataSource(this);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public sortEventHandler(event: Sort): void {\n if (CdkTableFilterableMapCollection.applySortEvent(this, event)) {\n this.reload();\n }\n }\n\n protected sortFunction(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 // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this._table)) {\n this._table.destroy();\n this._table = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): CdkTableDataSource<U> {\n return this._table;\n }\n}\n","import { Component, EventEmitter, Injectable, Input, Output } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ICdkTableRow } from './row/ICdkTableRow';\nimport { ICdkTableColumn } from './column/ICdkTableColumn';\nimport { CdkTablePaginableMapCollection } from './CdkTablePaginableMapCollection';\nimport { CdkTableFilterableMapCollection } from './CdkTableFilterableMapCollection';\nimport { SortDirection } from '@angular/material/sort';\nimport { FilterableDataSourceMapCollection } from '@ts-core/common/map/dataSource';\nimport { CdkTablePaginableBookmarkMapCollection } from './CdkTablePaginableBookmarkMapCollection';\n\n@Component({ template: '' })\nexport abstract class CdkTableBaseComponent<\n T extends CdkTablePaginableMapCollection<U, V> | CdkTableFilterableMapCollection<U, V> | CdkTablePaginableBookmarkMapCollection<U, V>,\n U,\n V\n> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: T;\n protected _settings: ICdkTableSettings<U>;\n protected _rows: ICdkTableRow<U>;\n protected _columns: Array<ICdkTableColumn<U>>;\n protected _columnNames: Array<keyof U>;\n\n protected _selectedRow: U;\n protected _selectedRows: Array<U>;\n\n @Output()\n public rowClicked: EventEmitter<ICdkTableRowEvent<U>>;\n @Output()\n public cellClicked: EventEmitter<ICdkTableCellEvent<U>>;\n\n public sortActive: string;\n public sortDirection: SortDirection;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n\n this._columnNames = [];\n\n this.settings = {};\n this.rowClicked = new EventEmitter();\n this.cellClicked = new EventEmitter();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitTableProperties(): void {\n let sort = CdkTableFilterableMapCollection.getSort(this.table as FilterableDataSourceMapCollection<U, V>);\n if (!_.isNil(sort)) {\n this.sortActive = sort.active.toString();\n this.sortDirection = sort.direction;\n }\n\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 if (value !== this._columnNames) {\n this._columnNames = value;\n }\n }\n\n protected commitSelectedRowsProperties(): void {\n this._selectedRow = !_.isEmpty(this.selectedRows) && this.selectedRows.length === 1 ? this.selectedRows[0] : null;\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 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.selectedRows = 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 // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): T {\n return this._table;\n }\n @Input()\n public set table(value: T) {\n if (value === this._table) {\n return;\n }\n this._table = value;\n if (!_.isNil(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.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 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 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 if (!_.isNil(value)) {\n this.commitSettingsProperties();\n }\n }\n\n public get columnNames(): Array<keyof U> {\n return this._columnNames;\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 isInteractive?: boolean;\n\n rows?: ICdkTableRow<U>;\n columns?: Array<ICdkTableColumn<U>>;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\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 * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\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 * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\n\n@Pipe({\n name: 'viCdkTableCellClassName'\n})\nexport class CdkTableCellClassNamePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform<U>(column: ICdkTableColumn<U>): string {\n return column.isMultiline ? 'text-multi-line' : 'text-one-line';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\n\n@Pipe({\n name: 'viCdkTableColumnValue'\n})\nexport class CdkTableColumnValuePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform<U>(item: U, column: ICdkTableColumn<U>): string | number | U[keyof U] {\n return !_.isNil(column) && !_.isNil(column.format) ? column.format(item, column) : item[column.name];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableSettings } from '../CdkTableBaseComponent';\nimport { ICdkTableRow } from './ICdkTableRow';\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 * as _ from 'lodash';\nimport { ICdkTableSettings } from '../CdkTableBaseComponent';\nimport { ICdkTableRow } from './ICdkTableRow';\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>, isInteractive?: boolean): { [key: string]: any } {\n return !_.isNil(row) && !_.isNil(row.styleName) ? row.styleName(item, selectedRows) : null;\n }\n}\n","import * as _ from 'lodash';\nimport { CdkTableBaseComponent } from '../CdkTableBaseComponent';\nimport { CdkTablePaginableMapCollection } from '../CdkTablePaginableMapCollection';\nimport { Component, Input, ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\n\n@Component({\n selector: 'vi-cdk-table-paginable',\n templateUrl: 'cdk-table-paginable.component.html'\n})\nexport class CdkTablePaginableComponent<U = any, V = any> extends CdkTableBaseComponent<CdkTablePaginableMapCollection<U, V>, U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _paginator: 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 }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitPaginatorProperties(): void {}\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 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 class=\"flex-grow-1 vertical-scroll-only\"\n matSort\n [dataSource]=\"table?.table?.dataSource\"\n [trackBy]=\"table.trackByFn\"\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [class.mat-nav-list]=\"settings?.isInteractive\"\n (matSortChange)=\"table.sortEventHandler($event)\"\n>\n <ng-container *ngFor=\"let column of columns; trackBy: columnTrackBy\">\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 [ngClass]=\"column.headerClassName\"\n *matHeaderCellDef\n >\n <span [innerHTML]=\"column.headerId | viTranslate\"></span>\n </mat-header-cell>\n\n <mat-cell\n class=\"p-2\"\n (click)=\"cellClickHandler(row, column, $event)\"\n *matCellDef=\"let row\"\n [ngClass]=\"row | viCdkTableColumnClassName: column\"\n [ngStyle]=\"row | viCdkTableColumnStyleName: column\"\n >\n <span [ngClass]=\"column | viCdkTableCellClassName\" [vi-html-content-title]=\"row | viCdkTableColumnValue: column\"></span>\n </mat-cell>\n </ng-container>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columnNames\"></mat-header-row>\n\n <mat-row\n class=\"mat-list-item\"\n *matRowDef=\"let row; columns: columnNames\"\n [ngClass]=\"row | viCdkTableRowClassName: rows:selectedRows\"\n [ngStyle]=\"row | viCdkTableRowStyleName: rows:selectedRows\"\n (click)=\"rowClickHandler(row, $event)\"\n ></mat-row>\n\n <p class=\"p-3 flex-shrink-0 text-center mouse-inactive\" [vi-translate]=\"settings?.noDataId\" *matNoDataRow></p>\n</mat-table>\n\n\n<mat-progress-bar class=\"flex-shrink-0 border\" [mode]=\"table?.isLoading ? '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 <mat-paginator\n class=\"flex-shrink-0\"\n [pageSize]=\"table?.pageSize\"\n [pageIndex]=\"table?.pageIndex\"\n [length]=\"table?.total\"\n (page)=\"table?.pageEventHandler($event)\"\n [pageSizeOptions]=\"paginator?.pageSizes\"\n [showFirstLastButtons]=\"paginator?.showFirstLastButtons\"\n [hidePageSize]=\"paginator?.hidePageSize\"\n *ngIf=\"paginator\"\n ></mat-paginator>\n</div>\n\n<!-- *ngIf=\"paginator && table?.length > 0\" -->\n","import * as _ from 'lodash';\nimport { CdkTableBaseComponent } from '../CdkTableBaseComponent';\nimport { CdkTableFilterableMapCollection } from '../CdkTableFilterableMapCollection';\nimport { Component, ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\n\n@Component({\n selector: 'vi-cdk-table-filterable',\n templateUrl: 'cdk-table-filterable.component.html'\n})\nexport class CdkTableFilterableComponent<U = any, V = any> extends CdkTableBaseComponent<CdkTableFilterableMapCollection<U, V>, U, V> {\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 class=\"flex-grow-1 vertical-scroll-only\"\n matSort\n [dataSource]=\"table?.table?.dataSource\"\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [class.mat-nav-list]=\"settings?.isInteractive\"\n (matSortChange)=\"table.sortEventHandler($event)\"\n>\n <ng-container *ngFor=\"let column of columns; trackBy: columnTrackBy\">\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 [ngClass]=\"column.headerClassName\"\n *matHeaderCellDef\n >\n <span [innerHTML]=\"column.headerId | viTranslate\"></span>\n </mat-header-cell>\n <mat-cell\n class=\"p-2\"\n (click)=\"cellClickHandler(row, column, $event)\"\n *matCellDef=\"let row\"\n [ngClass]=\"row | viCdkTableColumnClassName: column\"\n [ngStyle]=\"row | viCdkTableColumnStyleName: column\"\n >\n <span [ngClass]=\"column | viCdkTableCellClassName\" [vi-html-content-title]=\"row | viCdkTableColumnValue: column\"></span>\n </mat-cell>\n </ng-container>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columnNames\"></mat-header-row>\n\n <mat-row\n class=\"mat-list-item\"\n *matRowDef=\"let row; columns: columnNames\"\n [ngClass]=\"row | viCdkTableRowClassName: rows:selectedRows\"\n [ngStyle]=\"row | viCdkTableRowStyleName: rows:selectedRows\"\n (click)=\"rowClickHandler(row, $event)\"\n ></mat-row>\n\n <p class=\"p-3 flex-shrink-0 text-center mouse-inactive\" [vi-translate]=\"settings?.noDataId\" *matNoDataRow></p>\n</mat-table>\n\n<mat-progress-bar class=\"flex-shrink-0 border transparent\" [mode]=\"table?.isLoading ? 'indeterminate' : 'determinate'\"></mat-progress-bar>\n","import * as _ from 'lodash';\nimport { CdkTableBaseComponent } from '../CdkTableBaseComponent';\nimport { Component, ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { CdkTablePaginableBookmarkMapCollection } from '../CdkTablePaginableBookmarkMapCollection';\n\n@Component({\n selector: 'vi-cdk-table-paginable-bookmark',\n templateUrl: 'cdk-table-paginable-bookmark.component.html'\n})\nexport class CdkTablePaginableBookmarkComponent<U = any, V = any> extends CdkTableBaseComponent<CdkTablePaginableBookmarkMapCollection<U, V>, U, V> {\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 class=\"flex-grow-1 vertical-scroll-only\"\n matSort\n [dataSource]=\"table?.table?.dataSource\"\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [class.mat-nav-list]=\"settings?.isInteractive\"\n (matSortChange)=\"table.sortEventHandler($event)\"\n>\n <ng-container *ngFor=\"let column of columns; trackBy: columnTrackBy\">\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 [ngClass]=\"column.headerClassName\"\n *matHeaderCellDef\n >\n <span [innerHTML]=\"column.headerId | viTranslate\"></span>\n </mat-header-cell>\n <mat-cell\n class=\"p-2\"\n (click)=\"cellClickHandler(row, column, $event)\"\n *matCellDef=\"let row\"\n [ngClass]=\"row | viCdkTableColumnClassName: column\"\n [ngStyle]=\"row | viCdkTableColumnStyleName: column\"\n >\n <span [ngClass]=\"column | viCdkTableCellClassName\" [vi-html-content-title]=\"row | viCdkTableColumnValue: column\"></span>\n </mat-cell>\n </ng-container>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columnNames\"></mat-header-row>\n\n <mat-row\n class=\"mat-list-item\"\n *matRowDef=\"let row; columns: columnNames\"\n [ngClass]=\"row | viCdkTableRowClassName: rows:selectedRows\"\n [ngStyle]=\"row | viCdkTableRowStyleName: rows:selectedRows\"\n (click)=\"rowClickHandler(row, $event)\"\n ></mat-row>\n\n <p class=\"p-3 flex-shrink-0 text-center mouse-inactive\" [vi-translate]=\"settings?.noDataId\" *matNoDataRow></p>\n</mat-table>\n\n<mat-progress-bar class=\"flex-shrink-0 border transparent\" [mode]=\"table?.isLoading ? 'indeterminate' : 'determinate'\"></mat-progress-bar>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { VICommonModule } from '../VICommonModule';\nimport { LanguageSelectorComponent } from './language/language-selector/language-selector.component';\nimport { MenuListComponent } from './menu-list/menu-list.component';\nimport { SelectListComponent } from './select-list/select-list.component';\nimport { TabGroupComponent } from './tab-group/tab-group.component';\n\nimport { CdkTablePaginableComponent } from './cdk-table/cdk-table-paginable/cdk-table-paginable.component';\nimport { CdkTableFilterableComponent } from './cdk-table/cdk-table-filterable/cdk-table-filterable.component';\nimport { CdkTablePaginableBookmarkComponent } from './cdk-table/cdk-table-paginable-bookmark/cdk-table-paginable-bookmark.component';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatListModule } from '@angular/material/list';\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 { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\nimport { CdkTableColumnValuePipe } from './cdk-table/column/CdkTableColumnValuePipe';\nimport { CdkTableColumnStyleNamePipe } from './cdk-table/column/CdkTableColumnStyleNamePipe';\nimport { CdkTableColumnClassNamePipe } from './cdk-table/column/CdkTableColumnClassNamePipe';\nimport { CdkTableRowClassNamePipe } from './cdk-table/row/CdkTableRowClassNamePipe';\nimport { CdkTableRowStyleNamePipe } from './cdk-table/row/CdkTableRowStyleNamePipe';\nimport { CdkTableCellClassNamePipe } from './cdk-table/column/CdkTableCellClassNamePipe';\n\nconst IMPORTS = [\n CommonModule,\n FormsModule,\n MatTabsModule,\n MatListModule,\n MatMenuModule,\n MatSelectModule,\n MatButtonModule,\n MatSortModule,\n MatTableModule,\n MatPaginatorModule,\n MatProgressBarModule,\n VICommonModule\n];\nconst ENTRY_COMPONENTS = [];\nconst DECLARATIONS = [\n CdkTableColumnValuePipe,\n CdkTableColumnClassNamePipe,\n CdkTableColumnStyleNamePipe,\n CdkTableRowStyleNamePipe,\n CdkTableRowClassNamePipe,\n CdkTableCellClassNamePipe,\n\n LanguageSelectorComponent,\n TabGroupComponent,\n MenuListComponent,\n SelectListComponent,\n CdkTablePaginableComponent,\n CdkTableFilterableComponent,\n CdkTablePaginableBookmarkComponent,\n ...ENTRY_COMPONENTS\n];\nconst EXPORTS = [...DECLARATIONS];\n\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS,\n entryComponents: ENTRY_COMPONENTS\n})\nexport class VIComponentModule {}\n","import { CdkTableDataSource } from './CdkTableDataSource';\nimport { PaginableDataSourceMapCollection } from '@ts-core/common/map/dataSource';\nimport { Sort, SortDirection } from '@angular/material/sort';\nimport { PageEvent } from '@angular/material/paginator';\nimport * as _ from 'lodash';\nimport { CdkTableFilterableMapCollection } from './CdkTableFilterableMapCollection';\n\nexport abstract class CdkTablePaginableMapCollection<U, V> extends PaginableDataSourceMapCollection<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: CdkTableDataSource<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n super.initialize();\n this._table = this.getTable();\n }\n\n protected getTable(): CdkTableDataSource<U> {\n return new CdkTableDataSource(this);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public sortEventHandler(event: Sort): void {\n if (CdkTableFilterableMapCollection.applySortEvent(this, event)) {\n this.load();\n }\n }\n\n public pageEventHandler(event: PageEvent): void {\n this.pageIndex = event.pageIndex;\n this.pageSize = event.pageSize;\n this.load();\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._table)) {\n this._table.destroy();\n this._table = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): CdkTableDataSource<U> {\n return this._table;\n }\n}\n","import { PaginableBookmarkDataSourceMapCollection } from '@ts-core/common/map/dataSource';\nimport { CdkTableDataSource } from './CdkTableDataSource';\nimport * as _ from 'lodash';\nimport { CdkTableFilterableMapCollection } from './CdkTableFilterableMapCollection';\nimport { Sort } from '@angular/material/sort';\n\nexport abstract class CdkTablePaginableBookmarkMapCollection<U, V> extends PaginableBookmarkDataSourceMapCollection<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: CdkTableDataSource<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n super.initialize();\n this._table = this.getTable();\n }\n\n protected getTable(): CdkTableDataSource<U> {\n return new CdkTableDataSource(this);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public sortEventHandler(event: Sort): void {\n if (CdkTableFilterableMapCollection.applySortEvent(this, event)) {\n this.reload();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n super.destroy();\n if (!_.isNil(this._table)) {\n this._table.destroy();\n this._table = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): CdkTableDataSource<U> {\n return this._table;\n }\n}\n","import { ICookieOptions } from '@ts-core/frontend/cookie';\nimport * as Cookie from 'ngx-cookie';\n\nexport class CookieOptions implements ICookieOptions, Cookie.CookieOptions {\n path?: string;\n domain?: string;\n expires?: string | Date;\n secure?: boolean;\n httpOnly?: boolean;\n storeUnencoded?: boolean;\n}\n","import { AbstractControl, AsyncValidatorFn, Validator, ValidatorFn, Validators } from '@angular/forms';\nimport * as _ from 'lodash';\nimport { of } from 'rxjs';\n\n// --------------------------------------------------------------------------\n//\n// Export Properties\n//\n// --------------------------------------------------------------------------\n\nexport type ValidationResult = { [validator: string]: string | boolean };\nexport type ValidatorArray = Array<Validator | ValidatorFn>;\nexport type AsyncValidatorArray = Array<Validator | AsyncValidatorFn>;\n\nlet normalizeValidator = (validator: Validator | ValidatorFn): ValidatorFn | AsyncValidatorFn => {\n let func = (validator as Validator).validate.bind(validator);\n if (typeof func === 'function') {\n return (control: AbstractControl) => func(control);\n } else {\n return <ValidatorFn | AsyncValidatorFn>validator;\n }\n};\n\nexport let composeValidators = (validators: ValidatorArray): AsyncValidatorFn | ValidatorFn => {\n if (_.isEmpty(validators)) {\n return null;\n }\n return Validators.compose(validators.map(normalizeValidator));\n};\n\nexport let validate = (validators: ValidatorArray, asyncValidators: AsyncValidatorArray) => {\n return (control: AbstractControl) => {\n let synchronousValid = () => composeValidators(validators)(control);\n if (asyncValidators) {\n let asyncValidator = composeValidators(asyncValidators);\n return asyncValidator(control).map(v => {\n let secondary = synchronousValid();\n if (secondary || v) {\n return Object.assign({}, secondary, v);\n }\n });\n }\n if (validators) {\n return of(synchronousValid());\n }\n return of(null);\n };\n};\n\nexport const message = (validator: ValidationResult, key: string): string => {\n if (!key) {\n return 'Validation failed: ' + validator.toString();\n }\n\n switch (key) {\n case 'required':\n return 'Please enter a value';\n case 'pattern':\n return 'Value does not match required pattern';\n case 'minlength':\n return 'Value must be N characters';\n case 'maxlength':\n return 'Value must be a maximum of N characters';\n }\n\n let value = validator[key];\n switch (typeof value) {\n case 'string':\n return value as string;\n default:\n return 'Validation failed: ' + key;\n }\n};\n","import { ControlValueAccessor } from '@angular/forms';\nimport { Destroyable } from '@ts-core/common';\n\nexport class ValueAccessor<T> extends Destroyable implements ControlValueAccessor {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n private innerValue: T;\n private changed: Array<(value: T) => void>;\n private touched: Array<() => void>;\n\n // --------------------------------------------------------------------------\n //\n //\tConstuctor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n this.changed = [];\n this.touched = [];\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected valueChanged(): void {\n this.changed.forEach(f => f(this.innerValue));\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public touch(): void {\n this.touched.forEach(f => f());\n }\n\n public writeValue(value: T): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: T) => void): void {\n this.changed.push(fn);\n }\n\n public registerOnTouched(fn: () => void): void {\n this.touched.push(fn);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.changed = null;\n this.touched = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get value(): T {\n return this.innerValue;\n }\n\n public set value(value: T) {\n if (value == this.innerValue) {\n return;\n }\n this.innerValue = value;\n this.valueChanged();\n }\n}\n","import { NgModel } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AsyncValidatorArray, message, validate, ValidationResult, ValidatorArray } from './validate';\nimport { ValueAccessor } from './ValueAccessor';\n\nexport abstract class FormElementAsync<T> extends ValueAccessor<T> {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected abstract model: NgModel;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private validators: ValidatorArray, private asyncValidators: AsyncValidatorArray) {\n super();\n }\n\n protected validate(): Observable<ValidationResult> {\n return validate(this.validators, this.asyncValidators)(this.model.control);\n }\n\n protected get invalid(): Observable<boolean> {\n return this.validate().pipe(\n map(v => {\n return Object.keys(v || {}).length > 0;\n })\n );\n }\n\n protected get failures(): Observable<Array<string>> {\n return this.validate().pipe(map(v => Object.keys(v).map(k => message(v, k))));\n }\n}\n","import { AfterContentInit, Directive, Injectable, OnDestroy } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm, NgModel, Validator, ValidatorFn } from '@angular/forms';\nimport { message, ValidationResult } from './validate';\nimport { ValueAccessor } from './ValueAccessor';\n\n@Directive()\nexport abstract class FormElementSync<T> extends ValueAccessor<T> implements AfterContentInit, OnDestroy {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected abstract model: NgModel;\n protected _validationError: string;\n protected timer: any;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private validators: Array<Validator | ValidatorFn>) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected valueChanged(): void {\n super.valueChanged();\n setTimeout(this.validate);\n }\n\n protected validate = (): ValidationResult => {\n if (!this.validators || this.validators.length === 0) {\n this._validationError = null;\n return null;\n }\n\n let failure: ValidationResult = null;\n for (let item of this.validators) {\n failure = typeof item === 'function' ? item(this.model.control) : item.validate(this.model.control);\n if (failure) {\n break;\n }\n }\n this._validationError = failure ? message(failure, Object.keys(failure)[0]) : null;\n return failure;\n };\n\n public get valid(): boolean {\n return !this.invalid;\n }\n\n public get invalid(): boolean {\n return this._validationError != null;\n }\n\n public get validationError(): string {\n return this._validationError;\n }\n\n protected isErrorState = (control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean => {\n return this.invalid;\n };\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterContentInit(): void {\n this.validate();\n }\n\n public ngOnDestroy(): void {\n clearTimeout(this.timer);\n this.timer = null;\n }\n}\n","import { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { LanguageService } from '@ts-core/frontend/language';\n\nexport class LanguageMomentDateAdapter extends MomentDateAdapter {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(language: LanguageService) {\n super(language.locale);\n language.completed.subscribe(item => this.setLocale(item.locale));\n }\n}\n","import { LoadableEvent, Loadable, LoadableStatus } from '@ts-core/common';\nimport { ExtendedError } from '@ts-core/common/error';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { TransportNoConnectionError, TransportTimeoutError } from '@ts-core/common/transport';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\nexport abstract class LoginBaseService<E = any, U = any, V = any> extends Loadable<E | LoginBaseServiceEvent, U | V | ExtendedError> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _sid: string;\n protected _resource: string;\n\n protected _loginData: V;\n protected _isLoggedIn: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected async loginByParam<T = any>(param?: T): Promise<U> {\n return this.loginByFunction(() => this.loginRequest(param));\n }\n\n protected async loginByFunction(sidReturnFunction: (...params) => Promise<U>): Promise<U> {\n if (this.isLoggedIn || this.isLoading) {\n return null;\n }\n\n let response: U;\n this.status = LoadableStatus.LOADING;\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_STARTED));\n\n try {\n response = await sidReturnFunction();\n this.parseLoginResponse(response);\n if (!this.isCanLoginWithSid()) {\n this.status = LoadableStatus.LOADED;\n } else {\n this.loginBySid();\n }\n } catch (error) {\n let extendedError = ExtendedError.create(error as any);\n\n this.status = LoadableStatus.ERROR;\n this.parseLoginErrorResponse(extendedError);\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_ERROR, null, extendedError));\n }\n\n if (!this.isLoading) {\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_FINISHED));\n }\n return response;\n }\n\n protected async loginBySid(): Promise<void> {\n if (_.isNil(this.sid)) {\n this._sid = this.getSavedSid();\n }\n\n try {\n let response = await this.loginSidRequest();\n this.parseLoginSidResponse(response);\n\n this._isLoggedIn = true;\n this.status = LoadableStatus.LOADED;\n this.observer.next(new ObservableData(LoadableEvent.COMPLETE, response));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_COMPLETE, response));\n } catch (error) {\n let extendedError = ExtendedError.create(error as any);\n this.parseLoginSidErrorResponse(extendedError);\n\n this._isLoggedIn = false;\n this.status = LoadableStatus.ERROR;\n this.observer.next(new ObservableData(LoadableEvent.ERROR, null, extendedError));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_ERROR, null, extendedError));\n }\n\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_FINISHED));\n }\n\n protected reset(): void {\n this._sid = null;\n this._resource = null;\n this._loginData = null;\n }\n\n protected abstract loginRequest(...params): Promise<U>;\n protected abstract loginSidRequest(): Promise<V>;\n\n protected abstract logoutRequest(): Promise<void>;\n protected abstract getSavedSid(): string;\n\n // --------------------------------------------------------------------------\n //\n // \tParse Methods\n //\n // --------------------------------------------------------------------------\n\n protected abstract parseLoginResponse(response: U): void;\n\n protected parseLoginErrorResponse(error: ExtendedError): void {}\n\n protected parseLogoutErrorResponse(error: ExtendedError): void {}\n\n protected parseLoginSidResponse(response: V): void {\n this._loginData = response;\n }\n\n protected parseLoginSidErrorResponse(error: ExtendedError): void {\n if (error instanceof TransportTimeoutError || error instanceof TransportNoConnectionError) {\n return;\n }\n this.reset();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract login(param: any): void;\n\n public async loginByResponse(param: U): Promise<void> {\n if (this.isLoggedIn || this.isLoading) {\n return;\n }\n\n this.status = LoadableStatus.LOADING;\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_STARTED));\n\n this.parseLoginResponse(param);\n this.status = !this.isCanLoginWithSid() ? LoadableStatus.LOADED : LoadableStatus.LOADING;\n if (this.isLoading) {\n await this.loginBySid();\n }\n }\n\n public loginBySidIfCan(): boolean {\n if (!this.isCanLoginWithSid()) {\n return false;\n }\n\n if (this.isLoggedIn || this.isLoading) {\n return true;\n }\n\n this.status = LoadableStatus.LOADING;\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_STARTED));\n this.loginBySid();\n return true;\n }\n\n public async logout(): Promise<void> {\n if (!this.isLoggedIn) {\n return;\n }\n\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGOUT_STARTED));\n\n try {\n await this.logoutRequest();\n } catch (error) {\n let extendedError = ExtendedError.create(error as any);\n this.parseLogoutErrorResponse(extendedError);\n } finally {\n this.reset();\n this._isLoggedIn = false;\n this.status = LoadableStatus.NOT_LOADED;\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGOUT_FINISHED));\n }\n }\n\n public isCanLoginWithSid(): boolean {\n return this.sid != null || this.getSavedSid() != null;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.reset();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get logined(): Observable<V> {\n return this.events.pipe(\n filter(item => item.type === LoginBaseServiceEvent.LOGIN_COMPLETE),\n map(item => item.data as V)\n );\n }\n\n public get logouted(): Observable<void> {\n return this.events.pipe(\n filter(item => item.type === LoginBaseServiceEvent.LOGOUT_FINISHED),\n map(() => null)\n );\n }\n\n public get sid(): string {\n return this._sid;\n }\n\n public get resource(): string {\n return this._resource;\n }\n\n public get loginData(): V {\n return this._loginData;\n }\n\n public get isLoggedIn(): boolean {\n return this._isLoggedIn;\n }\n}\n\nexport enum LoginBaseServiceEvent {\n LOGIN_ERROR = 'LOGIN_ERROR',\n LOGIN_STARTED = 'LOGIN_STARTED',\n LOGIN_COMPLETE = 'LOGIN_COMPLETE',\n LOGIN_FINISHED = 'LOGIN_FINISHED',\n LOGOUT_STARTED = 'LOGOUT_STARTED',\n LOGOUT_FINISHED = 'LOGOUT_FINISHED',\n\n REGISTRATION_ERROR = 'REGISTRATION_ERROR',\n REGISTRATION_STARTED = 'REGISTRATION_STARTED',\n REGISTRATION_COMPLETE = 'REGISTRATION_COMPLETE',\n REGISTRATION_FINISHED = 'REGISTRATION_FINISHED'\n}\n","import { Resolve } from '@angular/router';\nimport { LoginBaseService, LoginBaseServiceEvent } from './LoginBaseService';\nimport { PromiseHandler } from '@ts-core/common/promise';\n\nexport class LoginRequireResolver<T extends LoginBaseService = LoginBaseService> implements Resolve<void> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected login: T) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public resolve(): Promise<void> {\n if (this.isLoggedIn()) {\n return Promise.resolve();\n }\n\n let promise = PromiseHandler.create<void>();\n let subscription = this.login.events.subscribe(data => {\n if (data.type === LoginBaseServiceEvent.LOGIN_ERROR) {\n promise.reject(data.error.toString());\n } else if (data.type === LoginBaseServiceEvent.LOGIN_COMPLETE) {\n promise.resolve();\n } else if (data.type === LoginBaseServiceEvent.LOGIN_FINISHED) {\n subscription.unsubscribe();\n }\n });\n return promise.promise;\n }\n\n public isLoggedIn(): boolean {\n return this.login.isLoggedIn;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { LoginBaseService } from './LoginBaseService';\nimport { LoginRequireResolver } from './LoginRequireResolver';\nimport * as _ from 'lodash';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginGuard<T extends LoginBaseService = LoginBaseService> extends LoginRequireResolver<T> implements CanActivate {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public static redirectUrl: string = '/login';\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Inject(LoginBaseService) login: T, protected router: Router) {\n super(login);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this.isLoggedIn() ? true : this.router.parseUrl(LoginGuard.redirectUrl);\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { LoginBaseService } from './LoginBaseService';\nimport { LoginRequireResolver } from './LoginRequireResolver';\nimport * as _ from 'lodash';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginNotGuard<T extends LoginBaseService = LoginBaseService> extends LoginRequireResolver<T> implements CanActivate {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public static redirectUrl: string = '/';\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Inject(LoginBaseService) login: T, protected router: Router) {\n super(login);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return !this.isLoggedIn() ? true : this.router.parseUrl(LoginNotGuard.redirectUrl);\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport * as _ from 'lodash';\nimport { LoginBaseService } from './LoginBaseService';\nimport { LoginGuard } from './LoginGuard';\nimport { LoginNotGuard } from './LoginNotGuard';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginIfCanGuard<T extends LoginBaseService = LoginBaseService> extends LoginGuard<T> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Inject(LoginBaseService) login: T, protected router: Router) {\n super(login, router);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected async loginIfCan(): Promise<void> {\n if (this.login.loginBySidIfCan()) {\n try {\n await this.resolve();\n } catch (error) {}\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n if (state.url !== LoginGuard.redirectUrl) {\n LoginNotGuard.redirectUrl = state.url;\n }\n if (!this.isLoggedIn()) {\n await this.loginIfCan();\n }\n return super.canActivate(route, state) as Promise<boolean | UrlTree>;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { LoginBaseService } from './LoginBaseService';\nimport { LoginRequireResolver } from './LoginRequireResolver';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginResolver<T extends LoginBaseService> extends LoginRequireResolver<T> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Inject(LoginBaseService) login: T) {\n super(login);\n }\n}\n","export class MenuItemBase {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _name: string;\n protected _isEnabled: boolean = true;\n\n public checkEnabled: (item: MenuItemBase) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public nameId: string, public sortIndex: number = NaN, public iconId?: string) {}\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitNameProperties(): void {}\n protected commitIsEnabledProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public get isEnabled(): boolean {\n return this._isEnabled;\n }\n public set isEnabled(value: boolean) {\n if (value === this._isEnabled) {\n return;\n }\n this._isEnabled = value;\n this.commitIsEnabledProperties();\n }\n\n public get name(): string {\n return this._name;\n }\n public set name(value: string) {\n if (value === this._name) {\n return;\n }\n this._name = value;\n this.commitNameProperties();\n }\n}\n","import { MenuItemBase } from './MenuItemBase';\n\nexport class MenuItem extends MenuItemBase {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public flag: string;\n public select: (item: MenuItem) => void;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(nameId?: string, sortIndex?: number, flag?: string, iconId?: string) {\n super(nameId, sortIndex, iconId);\n this.flag = flag || 'none';\n }\n}\n","import { DestroyableContainer, LoadableEvent } from '@ts-core/common';\nimport { ArrayUtil } from '@ts-core/common/util';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { MenuItem } from './MenuItem';\nimport { MenuItemBase } from './MenuItemBase';\n\nexport class MenuItems extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _items: Array<MenuItemBase>;\n protected _enabledItems: Array<MenuItemBase>;\n protected filterFunction: (item: MenuItemBase) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService, filterFunction?: (item: MenuItem) => boolean, isAutoTranslate: boolean = false) {\n super();\n\n this._items = [];\n this._enabledItems = [];\n this.filterFunction = filterFunction;\n\n language.completed\n .pipe(\n filter(() => isAutoTranslate),\n takeUntil(this.destroyed)\n )\n .subscribe(() => this.translateItems(this._items));\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private translateItems(items: Array<MenuItemBase>): void {\n for (let item of items) {\n this.translateItem(item);\n }\n }\n\n private translateItem(item: MenuItemBase): void {\n item.name = this.language.translate(item.nameId);\n }\n\n private checkEnabledItems(items: Array<MenuItemBase>): boolean {\n ArrayUtil.sort(items);\n let isMainItems = items === this._items;\n let isAllEnabled = true;\n\n if (isMainItems) {\n ArrayUtil.clear(this._enabledItems);\n }\n\n for (let item of items) {\n if (!item.name && item.nameId) {\n this.translateItem(item);\n }\n\n let isEnabled = item.checkEnabled ? item.checkEnabled(item) : true;\n if (isEnabled && this.filterFunction) {\n isEnabled = this.filterFunction(item);\n }\n\n item.isEnabled = isEnabled;\n if (isEnabled) {\n this._enabledItems.push(item);\n }\n\n if (isAllEnabled && !isEnabled) {\n isAllEnabled = false;\n }\n }\n return isAllEnabled;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public add(item: MenuItemBase): MenuItemBase {\n this._items.push(item);\n return item;\n }\n\n public remove(item: MenuItemBase): MenuItemBase {\n let index = this._items.indexOf(item);\n if (index > -1) {\n this._items.slice(index, 1);\n }\n return item;\n }\n\n public checkEnabled(...args): boolean {\n return this.checkEnabledItems(this._items);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tInterface Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this._items = null;\n this._enabledItems = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get items(): Array<MenuItemBase> {\n return this._items;\n }\n\n public get enabledItems(): Array<MenuItemBase> {\n return this._enabledItems;\n }\n}\n","import { MenuItem } from './MenuItem';\n\nexport class NavigationMenuItem extends MenuItem {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public url: string;\n public isActive: boolean = false;\n public select: (item: NavigationMenuItem) => void;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(nameId?: string, sortIndex?: number, iconId?: string, url?: string) {\n super(nameId, sortIndex, null, iconId);\n this.url = url;\n }\n}\n","import { IListItem } from './IListItem';\nimport * as _ from 'lodash';\nimport { IDestroyable } from '@ts-core/common';\n\nexport class ListItem<T = any> implements IListItem<T>, IDestroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _uid: string;\n\n protected _data: T;\n protected _label: string;\n protected _iconId: string;\n protected _className: string;\n protected _sortIndex: number;\n protected _isEnabled: boolean = true;\n protected _translationId: string;\n\n public action: (item: IListItem, ...params) => void;\n public checkEnabled: (item: IListItem, ...params) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(translationId: string, sortIndex: number = NaN, data?: T, iconId?: string) {\n this.data = data;\n this.iconId = iconId;\n this.sortIndex = sortIndex;\n this.translationId = translationId;\n\n this._uid = this.getUid();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitDataProperties(): void {}\n protected commitLabelProperties(): void {}\n protected commitIsEnabledProperties(): void {}\n protected commitClassNameProperties(): void {}\n\n protected commitIconIdProperties(): void {}\n protected commitSortIndexProperties(): void {}\n protected commitTranslationIdProperties(): void {}\n\n protected getUid(): string {\n return `${this.translationId}_${this.sortIndex}`;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n this._data = null;\n this.action = null;\n this.checkEnabled = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get uid(): string {\n return this._uid;\n }\n\n public get sortIndex(): number {\n return this._sortIndex;\n }\n public set sortIndex(value: number) {\n if (value === this._sortIndex) {\n return;\n }\n this._sortIndex = value;\n if (!_.isNil(value)) {\n this.commitSortIndexProperties();\n }\n }\n\n public get isEnabled(): boolean {\n return this._isEnabled;\n }\n public set isEnabled(value: boolean) {\n if (value === this._isEnabled) {\n return;\n }\n this._isEnabled = value;\n if (_.isBoolean(value)) {\n this.commitIsEnabledProperties();\n }\n }\n\n public get label(): string {\n return this._label;\n }\n public set label(value: string) {\n if (value === this._label) {\n return;\n }\n this._label = value;\n if (!_.isNil(value)) {\n this.commitLabelProperties();\n }\n }\n\n public get translationId(): string {\n return this._translationId;\n }\n public set translationId(value: string) {\n if (value === this._translationId) {\n return;\n }\n this._translationId = value;\n if (!_.isNil(value)) {\n this.commitTranslationIdProperties();\n }\n }\n\n public get iconId(): string {\n return this._iconId;\n }\n public set iconId(value: string) {\n if (value === this._iconId) {\n return;\n }\n this._iconId = value;\n if (!_.isNil(value)) {\n this.commitIconIdProperties();\n }\n }\n\n public get className(): string {\n return this._className;\n }\n public set className(value: string) {\n if (value === this._className) {\n return;\n }\n this._className = value;\n if (!_.isNil(value)) {\n this.commitClassNameProperties();\n }\n }\n\n public get data(): T {\n return this._data;\n }\n public set data(value: T) {\n if (value === this._data) {\n return;\n }\n this._data = value;\n if (!_.isNil(value)) {\n this.commitDataProperties();\n }\n }\n}\n","import { ArrayUtil } from '@ts-core/common/util';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { IListItem } from './IListItem';\nimport { FilterableMapCollection } from '@ts-core/common/map';\nimport { Subscription } from 'rxjs';\n\nexport class ListItems<U extends IListItem<V>, V = any> extends FilterableMapCollection<U> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected lastRefreshParams: Array<any>;\n protected languageSubscription: Subscription;\n\n protected _isAllEnabled: boolean;\n protected _isLeastOneEnabled: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService, isAutoTranslate: boolean = true) {\n super('uid');\n\n this.lastRefreshParams = new Array();\n if (isAutoTranslate) {\n this.languageSubscription = language.completed.subscribe(this.translateItems);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected translate = (item: U): void => {\n item.label = this.language.translate(item.translationId);\n };\n\n protected translateItems = (): void => {\n this.collection.forEach(this.translate);\n };\n\n protected translateIfNeed = (item: U): void => {\n if (_.isNil(item.label) && !_.isNil(item.translationId)) {\n this.translate(item);\n }\n };\n\n protected translateItemsIfNeed = (): void => {\n this.collection.forEach(this.translateIfNeed);\n };\n\n protected sort(): void {\n ArrayUtil.sort(this.collection);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public complete(): void {\n this.translateItemsIfNeed();\n this.sort();\n }\n\n public refresh(...params): void {\n ArrayUtil.clear(this._filtered);\n this.lastRefreshParams = params;\n\n if (_.isEmpty(this.collection)) {\n return;\n }\n\n this._isAllEnabled = true;\n this._isLeastOneEnabled = false;\n for (let item of this._collection) {\n item.isEnabled = !_.isNil(item.checkEnabled) ? item.checkEnabled(item, ...params) : true;\n if (!item.isEnabled) {\n this._isAllEnabled = false;\n } else if (this.filter(item)) {\n this._filtered.push(item);\n this._isLeastOneEnabled = true;\n }\n }\n }\n\n public actionItem(item: U): void {\n if (!_.isNil(item) && item.isEnabled && !_.isNil(item.action)) {\n item.action(item, ...this.lastRefreshParams);\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.language = null;\n this.lastRefreshParams = null;\n\n if (!_.isNil(this.languageSubscription)) {\n this.languageSubscription.unsubscribe();\n this.languageSubscription = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isAllEnabled(): boolean {\n return this._isAllEnabled;\n }\n\n public get isLeastOneEnabled(): boolean {\n return this._isLeastOneEnabled;\n }\n}\n","import { ISelectListItem } from './ISelectListItem';\nimport * as _ from 'lodash';\nimport { ListItem } from '../ListItem';\nimport { IListItem } from '../IListItem';\n\nexport class SelectListItem<T = any> extends ListItem<T> implements ISelectListItem<T> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _isSelected: boolean;\n protected _selectedClassName: string;\n\n public checkSelected?: (item: ISelectListItem, ...params) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(translationId: string, sortIndex: number, data: T, checkEnabled?: (item: IListItem, ...params) => boolean) {\n super(translationId, sortIndex, data);\n this.checkEnabled = checkEnabled;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitIsSelectProperties(): void {}\n\n protected commitSelectedClassNameProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n super.destroy();\n this.checkSelected = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isSelected(): boolean {\n return this._isSelected;\n }\n public set isSelected(value: boolean) {\n if (value === this._isSelected) {\n return;\n }\n this._isSelected = value;\n if (!_.isNil(value)) {\n this.commitIsSelectProperties();\n }\n }\n\n public get selectedClassName(): string {\n return this._selectedClassName;\n }\n public set selectedClassName(value: string) {\n if (value === this._selectedClassName) {\n return;\n }\n this._selectedClassName = value;\n if (!_.isNil(value)) {\n this.commitSelectedClassNameProperties();\n }\n }\n}\n","import * as _ from 'lodash';\nimport { ISelectListItem } from './ISelectListItem';\nimport { ListItems } from '../ListItems';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { EventEmitter } from '@angular/core';\n\nexport class SelectListItems<U extends ISelectListItem<V>, V = any> extends ListItems<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _selectedItem: U;\n protected _selectedData: V;\n protected _selectedIndex: number;\n\n protected _changed: EventEmitter<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(language: LanguageService, isAutoTranslate: boolean = true) {\n super(language, isAutoTranslate);\n this._changed = new EventEmitter();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitSelectedItemProperties(): void {\n this.selectedData = !_.isNil(this.selectedItem) ? this.selectedItem.data : null;\n this.selectedIndex = !_.isNil(this.selectedItem) ? this.selectedItem.sortIndex : null;\n\n if (!_.isNil(this.changed)) {\n this.changed.emit(this.selectedItem);\n }\n }\n\n protected commitSelectedDataProperties(): void {\n this.selectedItem = !_.isNil(this.selectedData) ? _.find(this.collection, item => item.data === this.selectedData) : null;\n }\n protected commitSelectedIndexProperties(): void {\n this.selectedItem = !_.isNil(this.selectedIndex) ? _.find(this.collection, item => item.sortIndex === this.selectedIndex) : null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get selectedItem(): U {\n return this._selectedItem;\n }\n public set selectedItem(value: U) {\n if (value === this._selectedItem) {\n return;\n }\n this._selectedItem = value;\n this.commitSelectedItemProperties();\n }\n\n public get selectedIndex(): number {\n return this._selectedIndex;\n }\n public set selectedIndex(value: number) {\n if (value === this._selectedIndex) {\n return;\n }\n this._selectedIndex = value;\n this.commitSelectedIndexProperties();\n }\n\n public get selectedData(): V {\n return this._selectedData;\n }\n public set selectedData(value: V) {\n if (value === this._selectedData) {\n return;\n }\n this._selectedData = value;\n this.commitSelectedDataProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public complete(indexOrDataToSelect?: number | V): void {\n super.complete();\n if (_.isNil(indexOrDataToSelect)) {\n return;\n }\n if (_.isNumber(indexOrDataToSelect)) {\n this.selectedIndex = indexOrDataToSelect;\n } else {\n this.selectedItem = _.find(this.collection, item => item.data === indexOrDataToSelect);\n }\n }\n\n public refresh(...params): void {\n super.refresh(...params);\n this.refreshSelection(...params);\n }\n\n public refreshSelection(...params): void {\n if (_.isEmpty(this.collection)) {\n return;\n }\n for (let item of this._collection) {\n item.isSelected = !_.isNil(item.checkSelected) ? item.checkSelected(item, ...params) : false;\n if (item.isSelected) {\n this.selectedItem = item;\n }\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this._changed)) {\n this._changed.complete();\n this._changed = null;\n }\n this.selectedIndex = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get changed(): EventEmitter<U> {\n return this._changed;\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DestroyableContainer, LoadableEvent } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport { CamelCasePipe } from '../pipe/CamelCasePipe';\nimport { FinancePipe } from '../pipe/FinancePipe';\nimport { MomentDateAdaptivePipe } from '../pipe/MomentDateAdaptivePipe';\nimport { MomentDateFromNowPipe } from '../pipe/MomentDateFromNowPipe';\nimport { MomentDatePipe } from '../pipe/MomentDatePipe';\nimport { MomentTimePipe } from '../pipe/MomentTimePipe';\nimport { PrettifyPipe } from '../pipe/PrettifyPipe';\nimport { SanitizePipe } from '../pipe/SanitizePipe';\nimport { TimePipe } from '../pipe/TimePipe';\nimport { TruncatePipe } from '../pipe/TruncatePipe';\n\nexport class PipeBaseService extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n private static DATE: DatePipe = null;\n private static TIME: TimePipe = null;\n private static FINANCE: FinancePipe = null;\n private static PRETTIFY: PrettifyPipe = null;\n private static TRUNCATE: TruncatePipe = null;\n private static SANITIZE: SanitizePipe = null;\n\n private static CAMEL_CASE: CamelCasePipe = null;\n\n private static MOMENT_TIME: MomentTimePipe = null;\n private static MOMENT_DATE: MomentDatePipe = null;\n private static MOMENT_DATE_FROM_NOW: MomentDateFromNowPipe = null;\n private static MOMENT_ADAPTIVE_DATE: MomentDateAdaptivePipe = null;\n\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private _locale: string;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public language: LanguageService, public sanitizer: DomSanitizer) {\n super();\n\n if (this.language.isLoaded) {\n this.commitLanguageProperties();\n }\n this.language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.commitLanguageProperties());\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitLanguageProperties(): void {\n let locale = this.language.locale ? this.language.language.locale : 'en';\n this._locale = locale === 'en' ? 'en-US' : locale;\n\n if (PipeBaseService.DATE) {\n PipeBaseService.DATE = new DatePipe(this.locale);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get date(): DatePipe {\n if (!PipeBaseService.DATE) {\n PipeBaseService.DATE = new DatePipe(this.locale);\n }\n return PipeBaseService.DATE;\n }\n\n public get time(): TimePipe {\n if (!PipeBaseService.TIME) {\n PipeBaseService.TIME = new TimePipe();\n }\n return PipeBaseService.TIME;\n }\n\n public get finance(): FinancePipe {\n if (!PipeBaseService.FINANCE) {\n PipeBaseService.FINANCE = new FinancePipe();\n }\n return PipeBaseService.FINANCE;\n }\n\n public get truncate(): TruncatePipe {\n if (!PipeBaseService.TRUNCATE) {\n PipeBaseService.TRUNCATE = new TruncatePipe();\n }\n return PipeBaseService.TRUNCATE;\n }\n\n public get prettify(): PrettifyPipe {\n if (!PipeBaseService.PRETTIFY) {\n PipeBaseService.PRETTIFY = new PrettifyPipe();\n }\n return PipeBaseService.PRETTIFY;\n }\n\n public get momentDate(): MomentDatePipe {\n if (!PipeBaseService.MOMENT_DATE) {\n PipeBaseService.MOMENT_DATE = new MomentDatePipe();\n }\n return PipeBaseService.MOMENT_DATE;\n }\n\n public get momentDateFromNow(): MomentDateFromNowPipe {\n if (!PipeBaseService.MOMENT_DATE_FROM_NOW) {\n PipeBaseService.MOMENT_DATE_FROM_NOW = new MomentDateFromNowPipe();\n }\n return PipeBaseService.MOMENT_DATE_FROM_NOW;\n }\n\n public get momentDateAdaptive(): MomentDateAdaptivePipe {\n if (!PipeBaseService.MOMENT_ADAPTIVE_DATE) {\n PipeBaseService.MOMENT_ADAPTIVE_DATE = new MomentDateAdaptivePipe();\n }\n return PipeBaseService.MOMENT_ADAPTIVE_DATE;\n }\n\n public get momentTime(): MomentTimePipe {\n if (!PipeBaseService.MOMENT_TIME) {\n PipeBaseService.MOMENT_TIME = new MomentTimePipe();\n }\n return PipeBaseService.MOMENT_TIME;\n }\n\n public get sanitize(): SanitizePipe {\n if (!PipeBaseService.SANITIZE) {\n PipeBaseService.SANITIZE = new SanitizePipe(this.sanitizer);\n }\n return PipeBaseService.SANITIZE;\n }\n\n public get camelCase(): CamelCasePipe {\n if (!PipeBaseService.CAMEL_CASE) {\n PipeBaseService.CAMEL_CASE = new CamelCasePipe();\n }\n return PipeBaseService.CAMEL_CASE;\n }\n\n public get locale(): string {\n return this._locale;\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Injectable } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\n\nimport * as _ from 'lodash';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\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: 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.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 = value;\n this.observer.next(new ObservableData(BootstrapBreakpointServiceEvent.CHANGED, this.breakpoint));\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(): 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 {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationExtras,\n NavigationStart,\n Router,\n UrlTree\n} from '@angular/router';\nimport { Loadable, LoadableEvent, LoadableStatus } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { NativeWindowService } from '@ts-core/frontend/service/NativeWindowService';\nimport * as _ from 'lodash';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport class RouterBaseService extends Loadable<void, RouterBaseServiceEventData> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected params: Map<string, string>;\n\n protected extrasToApply: NavigationExtras;\n protected isNeedUpdateExtras: boolean = false;\n\n protected _lastUrl: string;\n protected _previousUrl: string;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected _router: Router, protected window: NativeWindowService) {\n super();\n this.params = new Map();\n this.observer = new Subject();\n\n this._lastUrl = this.url;\n this.window.getParams().forEach((value, key) => this.params.set(key, value));\n this.initializeObservers();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initializeObservers(): void {\n this.router.events.pipe(takeUntil(this.destroyed)).subscribe(event => {\n if (event instanceof NavigationStart) {\n this._previousUrl = this.url;\n this.status = LoadableStatus.LOADING;\n } else if (event instanceof NavigationEnd || event instanceof NavigationCancel || event instanceof NavigationError) {\n if (event instanceof NavigationEnd) {\n this._lastUrl = event.url;\n }\n this.status = LoadableStatus.LOADED;\n }\n });\n }\n\n protected async applyExtras(extras?: NavigationExtras): Promise<boolean> {\n let params = {} as NavigationExtras;\n params.queryParams = this.getQueryParams();\n\n if (!_.isNil(extras)) {\n Object.assign(params, extras);\n }\n\n if (!this.isLoading) {\n return this.router.navigate([], params);\n }\n this.extrasToApply = extras;\n this.isNeedUpdateExtras = true;\n return false;\n }\n\n protected getQueryParams(): any {\n let params = {} as any;\n this.params.forEach((value, key) => (params[key] = value));\n return params;\n }\n\n protected commitStatusChangedProperties(oldStatus: LoadableStatus, newStatus: LoadableStatus): void {\n super.commitStatusChangedProperties(oldStatus, newStatus);\n\n switch (newStatus) {\n case LoadableStatus.LOADING:\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n break;\n case LoadableStatus.LOADED:\n if (this.isNeedUpdateExtras) {\n this.isNeedUpdateExtras = false;\n this.applyExtras(this.extrasToApply);\n }\n this.observer.next(new ObservableData(LoadableEvent.COMPLETE, { url: this.url, previousUrl: this.previousUrl }));\n break;\n }\n\n if (newStatus === LoadableStatus.LOADED || newStatus === LoadableStatus.ERROR) {\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tNavigate Methods\n //\n // --------------------------------------------------------------------------\n\n public async navigate(url: string, extras?: NavigationExtras, isClearParams?: boolean): Promise<boolean> {\n if (isClearParams) {\n this.params.clear();\n }\n\n let params = {} as NavigationExtras;\n params.queryParams = this.getQueryParams();\n if (!_.isNil(extras)) {\n Object.assign(params, extras);\n }\n return this.router.navigateByUrl(url, params);\n }\n\n public navigateToExternalUrl(url: string, target: string = '_blank'): void {\n this.window.open(url, target);\n }\n\n public navigateToLast(extras?: NavigationExtras): Promise<boolean> {\n return this.navigate(this.lastUrl, extras);\n }\n\n public async navigateIfNotLoading(url: string, extras?: NavigationExtras): Promise<boolean> {\n return !this.isLoading ? this.navigate(url, extras) : false;\n }\n\n public reload(): void {\n location.reload();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public isUrlActive(item: string | UrlTree, isExact: boolean = false): boolean {\n if (isExact) {\n return this.router.isActive(item, isExact);\n }\n if (_.isString(item)) {\n item = this.router.parseUrl(item);\n }\n\n let current = this.router.parseUrl(this.urlTree.toString());\n item.fragment = current.fragment = null;\n item.queryParams = current.queryParams = {};\n return item.toString() === current.toString();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Param Methods\n //\n // --------------------------------------------------------------------------\n\n public getParams<T = any>(): T {\n let params = {} as any;\n this.params.forEach((value, key) => (params[key] = value));\n return params;\n }\n\n public hasParam(name: string): boolean {\n return this.params.has(name);\n }\n\n public getParam<T = string>(name: string, defaultValue?: T): T {\n return this.hasParam(name) ? (this.params.get(name) as any) : defaultValue;\n }\n\n public setParam(name: string, value: any, extras?: NavigationExtras): void {\n if (!_.isNil(value)) {\n value = value.toString().trim();\n if (_.isEmpty(value)) {\n value = null;\n }\n }\n if (!_.isNil(value)) {\n this.params.set(name, value);\n } else {\n this.params.delete(name);\n }\n if (!_.isNil(extras)) {\n extras = { replaceUrl: true };\n }\n this.applyExtras(extras);\n }\n\n public removeParam(name: string, extras?: NavigationExtras): void {\n if (this.hasParam(name)) {\n this.setParam(name, null, extras);\n }\n }\n\n public clearParams(extras?: NavigationExtras): void {\n this.params.clear();\n if (!_.isNil(extras)) {\n extras = { replaceUrl: true };\n }\n this.applyExtras(extras);\n }\n\n public get hasParams(): boolean {\n return this.params.size > 0;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tFragment Methods\n //\n // --------------------------------------------------------------------------\n\n public getFragment(snapshot: ActivatedRoute | ActivatedRouteSnapshot, defaultValue?: string): string {\n if (snapshot instanceof ActivatedRoute) {\n snapshot = snapshot.snapshot;\n }\n return !_.isNil(snapshot.fragment) ? snapshot.fragment : defaultValue;\n }\n\n public async setFragment(value: string): Promise<boolean> {\n return this.applyExtras({ fragment: value });\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Url Methods\n //\n // --------------------------------------------------------------------------\n\n public get url(): string {\n return this.router.url;\n }\n public get urlTree(): UrlTree {\n return this.router.parseUrl(this.url);\n }\n\n public get lastUrl(): string {\n return this._lastUrl;\n }\n public get lastUrlTree(): UrlTree {\n return this.router.parseUrl(this.lastUrl);\n }\n\n public get previousUrl(): string {\n return this._previousUrl;\n }\n public get previousUrlTree(): UrlTree {\n return this.router.parseUrl(this.previousUrl);\n }\n\n public get router(): Router {\n return this._router;\n }\n}\n\nexport interface RouterBaseServiceEventData {\n url: string;\n previousUrl: string;\n}\n","import { CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport * as _ from 'lodash';\nimport { Observable } from 'rxjs';\nimport { IRouterDeactivatable } from './IRouterDeactivatable';\n\nexport class CanDeactivateGuard<T extends IRouterDeactivatable> implements CanDeactivate<T> {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public canDeactivate(\n component: IRouterDeactivatable,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return !component.isForceDeactivate ? component.isCanDeactivate(currentRoute, currentState, nextState) : true;\n }\n}\n","import { IDestroyable } from '@ts-core/common';\n\nexport abstract class IUser<T = any> implements IDestroyable {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n public id: UserUid;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract update(data: T): void;\n public abstract destroy(): void;\n}\n\nexport type UserUid = string | number;\n","import { DestroyableContainer } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\nimport * as _ from 'lodash';\nimport { Observable, takeUntil, Subject, filter, map } from 'rxjs';\nimport { LoginBaseService, LoginBaseServiceEvent } from '../login/LoginBaseService';\nimport { IUser, UserUid } from './IUser';\n\nexport abstract class UserBaseService<U extends IUser = any, V = void> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _user: U;\n protected observer: Subject<ObservableData<V | UserBaseServiceEvent, U | Partial<U>>>;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected login: LoginBaseService) {\n super();\n this.observer = new Subject();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n if (this.login.isLoggedIn) {\n this.loginedHandler();\n }\n\n this.login.events.pipe(takeUntil(this.destroyed)).subscribe(data => {\n if (data.type === LoginBaseServiceEvent.LOGIN_COMPLETE) {\n this.loginedHandler();\n } else if (data.type === LoginBaseServiceEvent.LOGOUT_FINISHED) {\n this.logoutedHandler();\n }\n });\n }\n\n protected initializeUser(): void {\n this._user = this.createUser(this.login.loginData);\n }\n\n protected deinitializeUser(): void {\n this._user = null;\n }\n\n protected loginedHandler(): void {\n this.initializeUser();\n this.observer.next(new ObservableData(UserBaseServiceEvent.LOGINED, this.user));\n }\n\n protected logoutedHandler(): void {\n this.deinitializeUser();\n this.observer.next(new ObservableData(UserBaseServiceEvent.LOGOUTED));\n }\n\n protected abstract createUser(data: any): U;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public isUser(value: Partial<U> | UserUid): boolean {\n if (_.isNil(value) || _.isNil(this.user)) {\n return false;\n }\n if (_.isString(value) || _.isNumber(value)) {\n return value === this.user.id;\n }\n return value.id === this.user.id;\n }\n\n public userUpdate(data: any): void {\n if (!this.hasUser) {\n return;\n }\n this.user.update(data);\n this.observer.next(new ObservableData(UserBaseServiceEvent.CHANGED, data));\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 }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get events(): Observable<ObservableData<V | UserBaseServiceEvent, U | Partial<U>>> {\n return this.observer.asObservable();\n }\n\n public get logined(): Observable<U> {\n return this.events.pipe(\n filter(item => item.type === UserBaseServiceEvent.LOGINED),\n map(item => item.data as U)\n );\n }\n\n public get changed(): Observable<Partial<U>> {\n return this.events.pipe(\n filter(item => item.type === UserBaseServiceEvent.CHANGED),\n map(item => item.data)\n );\n }\n\n public get logouted(): Observable<void> {\n return this.events.pipe(\n filter(item => item.type === UserBaseServiceEvent.LOGOUTED),\n map(() => null)\n );\n }\n\n public get hasUser(): boolean {\n return !_.isNil(this._user);\n }\n\n public get isLogined(): boolean {\n return this.hasUser;\n }\n\n public get user(): U {\n return this._user;\n }\n\n public get id(): UserUid {\n return this.hasUser ? this.user.id : null;\n }\n}\n\nexport enum UserBaseServiceEvent {\n LOGINED = 'LOGINED',\n CHANGED = 'CHANGED',\n LOGOUTED = 'LOGOUTED'\n}\n","import { Compiler, Injectable, Injector, NgModuleFactory, NgModuleRef, Type } from '@angular/core';\nimport { Loadable, LoadableEvent } from '@ts-core/common';\nimport { ExtendedError } from '@ts-core/common/error';\nimport { MapCollection } from '@ts-core/common/map';\nimport { ObservableData } from '@ts-core/common/observer';\nimport * as _ from 'lodash';\n\n@Injectable({ providedIn: 'root' })\nexport class LazyModuleLoader<T extends ILazyModuleData = ILazyModuleData> extends Loadable {\n //--------------------------------------------------------------------------\n //\n // Properties\n //\n //--------------------------------------------------------------------------\n\n protected _modules: MapCollection<T>;\n\n //--------------------------------------------------------------------------\n //\n // Constructor\n //\n //--------------------------------------------------------------------------\n\n constructor(protected compiler: Compiler, protected injector: Injector) {\n super();\n this._modules = new MapCollection('id');\n }\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected async load(item: T): Promise<void> {\n item.reference = await this.loadReference(item.path);\n }\n\n protected async loadReference<T>(path: LazyModulePath<T>): Promise<NgModuleRef<T>> {\n let moduleFactory: NgModuleFactory<T> = null;\n let elementModuleOrFactory: NgModuleFactory<T> | Type<T> = await path();\n if (elementModuleOrFactory instanceof NgModuleFactory) {\n moduleFactory = elementModuleOrFactory;\n } else {\n moduleFactory = await this.compiler.compileModuleAsync(elementModuleOrFactory);\n }\n return moduleFactory.create(this.injector);\n }\n\n protected isNeedLoad(item: T): boolean {\n return _.isNil(item.reference);\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public async loadIfNeed(id: string): Promise<T> {\n let item = this.modules.get(id);\n if (_.isNil(item)) {\n throw new ExtendedError(`Unable to find \"${id}\" module: it must be registered first`);\n }\n if (!this.isNeedLoad(item)) {\n return item;\n }\n try {\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n await this.load(item);\n } finally {\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n }\n return item;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this._modules)) {\n this._modules.destroy();\n this._modules = null;\n }\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n //--------------------------------------------------------------------------\n\n public get modules(): MapCollection<T> {\n return this._modules;\n }\n}\n\nexport interface ILazyModuleData<T = any> {\n id: string;\n path?: LazyModulePath<T>;\n reference?: NgModuleRef<T>;\n}\n\nexport type LazyModulePath<T> = () => Promise<NgModuleFactory<T> | Type<T>>;\n","import { TransportEvent } from '@ts-core/common/transport';\nimport { ITransportLazyModuleData } from './TransportLazyModule';\n\nexport class TransportLazyModuleLoadedEvent<T extends ITransportLazyModuleData = ITransportLazyModuleData> extends TransportEvent<T> {\n // --------------------------------------------------------------------------\n //\n // Public Static Properties\n //\n // --------------------------------------------------------------------------\n\n public static readonly NAME = 'TransportLazyModuleLoadedEvent';\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(request: T) {\n super(TransportLazyModuleLoadedEvent.NAME, request);\n }\n}\n","import { ITransportCommand, ITransportCommandOptions, ITransportEvent, ITransportSettings } from '@ts-core/common/transport';\nimport { TransportLocal } from '@ts-core/common/transport/local';\nimport * as _ from 'lodash';\nimport { LazyModuleLoader } from '../module/LazyModuleLoader';\nimport { ILogger } from '@ts-core/common/logger';\nimport { ITransportLazyModuleData } from './TransportLazyModule';\nimport { TransportLazyModuleLoadedEvent } from './TransportLazyModuleLoadedEvent';\n\nexport class TransportLazy extends TransportLocal {\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n constructor(logger: ILogger, protected loader: LazyModuleLoader<ITransportLazyModuleData>, settings?: ITransportSettings) {\n super(logger, settings, null);\n\n this.getDispatcher<TransportLazyModuleLoadedEvent<ITransportLazyModuleData>>(TransportLazyModuleLoadedEvent.NAME).subscribe(event =>\n this.moduleLoadedHandler(event.data)\n );\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n protected moduleLoadedHandler(module: ITransportLazyModuleData): void {\n let item = this.loader.modules.get(module.id);\n if (_.isNil(item)) {\n item = this.loader.modules.add(module);\n }\n if (_.isNil(item.reference)) {\n item.reference = module.reference;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected async dispatchCommand<U>(command: ITransportCommand<U>, options: ITransportCommandOptions, isNeedReply: boolean): Promise<void> {\n let item = this.getModuleByCommand(command.name);\n if (!_.isNil(item)) {\n await this.loader.loadIfNeed(item.id);\n }\n super.dispatchCommand(command, options, isNeedReply);\n }\n\n protected getModuleByCommand(name: string): ITransportLazyModuleData {\n if (this.loader.modules.length === 0) {\n return null;\n }\n for (let item of this.loader.modules.collection) {\n if (_.isEmpty(item.commands)) {\n continue;\n }\n if (_.includes(item.commands, name)) {\n return item;\n }\n }\n return null;\n }\n\n protected getModuleByEvent(name: string): ITransportLazyModuleData {\n if (_.isNil(this.loader) || this.loader.modules.length === 0) {\n return null;\n }\n for (let item of this.loader.modules.collection) {\n if (_.isEmpty(item.events)) {\n continue;\n }\n if (_.includes(item.events, name)) {\n return item;\n }\n }\n return null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public dispatch<T>(event: ITransportEvent<T>): void {\n let item = this.getModuleByEvent(event.name);\n if (!_.isNil(this.loader) && !_.isNil(item)) {\n this.loader.loadIfNeed(item.id).then(() => super.dispatch(event));\n } else {\n super.dispatch(event);\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.loader = null;\n }\n}\n","import { NgModuleRef } from '@angular/core';\nimport { Transport } from '@ts-core/common/transport';\nimport { ILazyModuleData } from '../module/LazyModuleLoader';\nimport { TransportLazyModuleLoadedEvent } from './TransportLazyModuleLoadedEvent';\n\nexport abstract class TransportLazyModule<T> implements ITransportLazyModuleData<T> {\n //--------------------------------------------------------------------------\n //\n // Constructor\n //\n //--------------------------------------------------------------------------\n\n constructor(public reference: NgModuleRef<T>, protected transport: Transport) {\n this.moduleLoadedDispatch();\n }\n\n //--------------------------------------------------------------------------\n //\n // Protected Methods\n //\n //--------------------------------------------------------------------------\n\n protected moduleLoadedDispatch(): void {\n this.transport.dispatch(new TransportLazyModuleLoadedEvent(this));\n }\n\n //--------------------------------------------------------------------------\n //\n // Public Properties\n //\n //--------------------------------------------------------------------------\n\n public abstract get id(): string;\n\n public get events(): Array<string> {\n return new Array();\n }\n\n public get commands(): Array<string> {\n return new Array();\n }\n}\n\nexport interface ITransportLazyModuleData<T = any> extends ILazyModuleData<T> {\n events?: Array<string>;\n commands?: Array<string>;\n}\n","/* ======= */\nexport * from './application/ApplicationBaseComponent';\nexport * from './application/ApplicationComponent';\nexport * from './application/MessageBaseComponent';\nexport * from './application/ShellBaseComponent';\n/* ======= */\nexport * from './ApplicationInjector';\n/* ======= */\nexport * from './asset/AssetBackgroundDirective';\nexport * from './asset/AssetBackgroundPipe';\nexport * from './asset/AssetIconPipe';\nexport * from './asset/AssetFilePipe';\nexport * from './asset/AssetVideoPipe';\nexport * from './asset/AssetSoundPipe';\nexport * from './asset/AssetImagePipe';\nexport * from './asset/AssetModule';\n/* ======= */\n\nexport * from './component/VIComponentModule';\n\nexport * from './component/tab-group/tab-group.component';\nexport * from './component/menu-list/menu-list.component';\nexport * from './component/select-list/select-list.component';\nexport * from './component/language/language-selector/language-selector.component';\n\nexport * from './component/cdk-table/CdkTableDataSource';\nexport * from './component/cdk-table/CdkTablePaginableMapCollection';\nexport * from './component/cdk-table/CdkTableFilterableMapCollection';\nexport * from './component/cdk-table/CdkTablePaginableBookmarkMapCollection';\n\nexport * from './component/cdk-table/row/ICdkTableRow';\nexport * from './component/cdk-table/row/CdkTableRowClassNamePipe';\nexport * from './component/cdk-table/row/CdkTableRowStyleNamePipe';\n\nexport * from './component/cdk-table/column/ICdkTableColumn';\nexport * from './component/cdk-table/column/CdkTableColumnValuePipe';\nexport * from './component/cdk-table/column/CdkTableCellClassNamePipe';\nexport * from './component/cdk-table/column/CdkTableColumnClassNamePipe';\nexport * from './component/cdk-table/column/CdkTableColumnStyleNamePipe';\n\nexport * from './component/cdk-table/CdkTableBaseComponent';\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\n/* ======= */\nexport * from './cookie/CookieModule';\nexport * from './cookie/CookieOptions';\nexport * from './cookie/CookieService';\n/* ======= */\nexport * from './directive/AspectRatioResizeDirective';\nexport * from './directive/AutoScrollBottomDirective';\nexport * from './directive/ClickToCopyDirective';\nexport * from './directive/ClickToSelectDirective';\nexport * from './directive/FocusDirective';\nexport * from './directive/SelectOnFocusDirective';\nexport * from './directive/InfiniteScrollDirective';\nexport * from './directive/ResizeDirective';\nexport * from './directive/ScrollDirective';\nexport * from './directive/ScrollCheckDirective';\nexport * from './directive/MenuTriggerForDirective';\nexport * from './directive/HTMLContentTitleDirective';\n/* ======= */\nexport * from './form/FormElementAsync';\nexport * from './form/FormElementSync';\n/* ======= */\nexport * from './language/LanguageMatPaginatorIntl';\nexport * from './language/LanguageModule';\nexport * from './language/LanguageMomentDateAdapter';\nexport * from './language/LanguagePipe';\nexport * from './language/LanguagePipePure';\nexport * from './language/LanguagePipeHas';\nexport * from './language/LanguagePipeHasPure';\nexport * from './language/LanguageResolver';\nexport * from './language/LanguageRequireResolver';\nexport * from './language/LanguageDirective';\nexport * from './language/LanguageHasDirective';\n/* ======= */\nexport * from './login/LoginGuard';\nexport * from './login/LoginIfCanGuard';\nexport * from './login/LoginNotGuard';\nexport * from './login/LoginResolver';\nexport * from './login/LoginBaseService';\nexport * from './login/LoginRequireResolver';\n/* ======= */\nexport * from './manager/FocusManager';\nexport * from './manager/ResizeManager';\n/* ======= */\nexport * from './menu/MenuItem';\nexport * from './menu/MenuItemBase';\nexport * from './menu/MenuItems';\nexport * from './menu/NavigationMenuItem';\n/* ======= */\nexport * from './list/IListItem';\nexport * from './list/ListItem';\nexport * from './list/ListItems';\nexport * from './list/select/ISelectListItem';\nexport * from './list/select/SelectListItem';\nexport * from './list/select/SelectListItems';\n/* ======= */\nexport * from './notification/INotification';\nexport * from './notification/INotificationContent';\nexport * from './notification/NotificationConfig';\nexport * from './notification/NotificationFactory';\nexport * from './notification/NotificationModule';\nexport * from './notification/NotificationProperties';\nexport * from './notification/NotificationService';\nexport * from './notification/component/NotificationBaseComponent';\nexport * from './notification/component/notification/notification.component';\n/* ======= */\nexport * from './bottomSheet/BottomSheetService';\n/* ======= */\nexport * from './pipe/CamelCasePipe';\nexport * from './pipe/FinancePipe';\nexport * from './pipe/MomentDateAdaptivePipe';\nexport * from './pipe/MomentDateFromNowPipe';\nexport * from './pipe/MomentDatePipe';\nexport * from './pipe/MomentTimePipe';\nexport * from './pipe/NgModelErrorPipe';\nexport * from './pipe/SanitizePipe';\nexport * from './pipe/StartCasePipe';\nexport * from './pipe/TruncatePipe';\nexport * from './pipe/PrettifyPipe';\nexport * from './pipe/TimePipe';\n/* ======= */\nexport * from './question/IQuestion';\nexport * from './question/QuestionManager';\nexport * from './service/PipeBaseService';\nexport * from './service/BootstrapBreakpointService';\n/* ======= */\nexport * from './service/RouterBaseService';\nexport * from './service/route/CanDeactivateGuard';\nexport * from './service/route/IRouterDeactivatable';\n/* ======= */\nexport * from './theme/ThemeStyleHoverDirective';\nexport * from './theme/ThemeStyleDirective';\nexport * from './theme/ThemeAssetBackgroundDirective';\nexport * from './theme/ThemeAssetImageDirective';\nexport * from './theme/ThemeAssetDirective';\nexport * from './theme/ThemeModule';\nexport * from './theme/ThemeToggleDirective';\n/* ======= */\nexport * from './user/IUser';\nexport * from './user/UserBaseService';\n/* ======= */\nexport * from './module/LazyModuleLoader';\n/* ======= */\nexport * from './transport/TransportLazy';\nexport * from './transport/TransportLazyModule';\nexport * from './transport/TransportLazyModuleLoadedEvent';\n/* ======= */\nexport * from './util/ViewUtil';\nexport * from './VICommonModule';\n/* ======= */\nexport * from './window/IWindow';\nexport * from './window/WindowImpl';\nexport * from './window/WindowBase';\nexport * from './window/WindowConfig';\nexport * from './window/WindowFactory';\nexport * from './window/WindowModule';\nexport * from './window/IWindowContent';\nexport * from './window/WindowService';\nexport * from './window/WindowProperties';\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-minimize-element/window-minimize-element.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["takeUntil","debounceTime","filter","IMPORTS","ENTRY_COMPONENTS","DECLARATIONS","EXPORTS","map"],"mappings":"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"}
|