@ts-core/angular 17.0.21 → 17.0.23
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/VIModule.d.ts +1 -2
- package/esm2022/VIModule.mjs +8 -8
- package/esm2022/application/ApplicationBaseComponent.mjs +4 -4
- package/esm2022/asset/AssetBackgroundDirective.mjs +4 -4
- package/esm2022/asset/AssetBackgroundPipe.mjs +4 -4
- package/esm2022/asset/AssetFilePipe.mjs +4 -4
- package/esm2022/asset/AssetIconPipe.mjs +4 -4
- package/esm2022/asset/AssetImagePipe.mjs +4 -4
- package/esm2022/asset/AssetModule.mjs +5 -5
- package/esm2022/asset/AssetSoundPipe.mjs +4 -4
- package/esm2022/asset/AssetVideoPipe.mjs +4 -4
- package/esm2022/cookie/CookieModule.mjs +5 -5
- package/esm2022/directive/AspectRatioResizeDirective.mjs +4 -4
- package/esm2022/directive/AutoScrollBottomDirective.mjs +4 -4
- package/esm2022/directive/ClickToCopyDirective.mjs +4 -4
- package/esm2022/directive/ClickToSelectDirective.mjs +4 -4
- package/esm2022/directive/FocusDirective.mjs +4 -4
- package/esm2022/directive/HTMLContentTitleDirective.mjs +4 -4
- package/esm2022/directive/HTMLTitleDirective.mjs +4 -4
- package/esm2022/directive/InfiniteScrollDirective.mjs +4 -4
- package/esm2022/directive/IsBrowserDirective.mjs +4 -4
- package/esm2022/directive/IsServerDirective.mjs +4 -4
- package/esm2022/directive/ResizeDirective.mjs +4 -4
- package/esm2022/directive/ScrollCheckDirective.mjs +4 -4
- package/esm2022/directive/ScrollDirective.mjs +4 -4
- package/esm2022/directive/SelectOnFocusDirective.mjs +4 -4
- package/esm2022/language/LanguageDirective.mjs +4 -4
- package/esm2022/language/LanguageHasDirective.mjs +4 -4
- package/esm2022/language/LanguageModule.mjs +5 -5
- package/esm2022/language/LanguagePipe.mjs +4 -4
- package/esm2022/language/LanguagePipeHas.mjs +4 -4
- package/esm2022/language/LanguagePipeHasPure.mjs +4 -4
- package/esm2022/language/LanguagePipePure.mjs +4 -4
- package/esm2022/language/LanguageResolver.mjs +4 -4
- package/esm2022/login/LoginGuard.mjs +4 -4
- package/esm2022/login/LoginIfCanGuard.mjs +4 -4
- package/esm2022/login/LoginNotGuard.mjs +4 -4
- package/esm2022/login/LoginResolver.mjs +4 -4
- package/esm2022/module/LazyModuleLoader.mjs +4 -4
- package/esm2022/notification/INotificationContent.mjs +4 -4
- package/esm2022/pipe/CamelCasePipe.mjs +4 -4
- package/esm2022/pipe/FinancePipe.mjs +4 -4
- package/esm2022/pipe/MomentDateAdaptivePipe.mjs +4 -4
- package/esm2022/pipe/MomentDateFromNowPipe.mjs +4 -4
- package/esm2022/pipe/MomentDatePipe.mjs +4 -4
- package/esm2022/pipe/MomentTimePipe.mjs +4 -4
- package/esm2022/pipe/NgModelErrorPipe.mjs +4 -4
- package/esm2022/pipe/PrettifyPipe.mjs +4 -4
- package/esm2022/pipe/SanitizePipe.mjs +4 -4
- package/esm2022/pipe/StartCasePipe.mjs +4 -4
- package/esm2022/pipe/TimePipe.mjs +4 -4
- package/esm2022/pipe/TruncatePipe.mjs +4 -4
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/service/PlatformService.mjs +5 -6
- package/esm2022/service/RouterBaseService.mjs +3 -5
- package/esm2022/service/ServiceWorkerService.mjs +104 -0
- package/esm2022/storage/LocalStorageService.mjs +24 -6
- package/esm2022/theme/ThemeAssetBackgroundDirective.mjs +4 -4
- package/esm2022/theme/ThemeAssetDirective.mjs +4 -4
- package/esm2022/theme/ThemeAssetIconDirective.mjs +4 -4
- package/esm2022/theme/ThemeAssetImageDirective.mjs +4 -4
- package/esm2022/theme/ThemeModule.mjs +5 -5
- package/esm2022/theme/ThemeStyleDirective.mjs +4 -4
- package/esm2022/theme/ThemeStyleHoverDirective.mjs +4 -4
- package/esm2022/theme/ThemeToggleDirective.mjs +4 -4
- package/esm2022/window/IWindowContent.mjs +4 -4
- package/fesm2022/ts-core-angular.mjs +315 -197
- package/fesm2022/ts-core-angular.mjs.map +1 -1
- package/package.json +2 -1
- package/public-api.d.ts +1 -0
- package/service/ServiceWorkerService.d.ts +20 -0
- package/storage/LocalStorageService.d.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-core-angular.mjs","sources":["../../src/application/ApplicationBaseComponent.ts","../../src/application/ApplicationComponent.ts","../../src/application/MessageBaseComponent.ts","../../src/ApplicationInjector.ts","../../src/util/ViewUtil.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/service/PlatformService.ts","../../src/cookie/CookieModule.ts","../../src/cookie/CookieOptions.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/ResizeDirective.ts","../../src/directive/StructureDirective.ts","../../src/directive/ScrollCheckDirective.ts","../../src/language/LanguagePipe.ts","../../src/directive/HTMLTitleDirective.ts","../../src/directive/HTMLContentTitleDirective.ts","../../src/directive/IsBrowserDirective.ts","../../src/directive/IsServerDirective.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/login/LoginBaseService.ts","../../src/login/LoginRequireResolver.ts","../../src/login/LoginGuard.ts","../../src/login/LoginNotGuard.ts","../../src/login/LoginIfCanGuard.ts","../../src/login/LoginResolver.ts","../../src/storage/ValueStorage.ts","../../src/login/LoginTokenStorage.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/list/select/RouterSelectListItems.ts","../../src/pipe/PrettifyPipe.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/TruncatePipe.ts","../../src/pipe/TimePipe.ts","../../src/question/IQuestion.ts","../../src/question/QuestionManager.ts","../../src/service/PipeBaseService.ts","../../src/service/RouterBaseService.ts","../../src/service/route/CanDeactivateGuard.ts","../../src/theme/ThemeStyleDirective.ts","../../src/theme/ThemeStyleHoverDirective.ts","../../src/theme/ThemeAssetDirective.ts","../../src/theme/ThemeAssetBackgroundDirective.ts","../../src/theme/ThemeAssetImageDirective.ts","../../src/theme/ThemeAssetIconDirective.ts","../../src/theme/ThemeToggleDirective.ts","../../src/theme/ThemeModule.ts","../../src/user/IUser.ts","../../src/user/UserBaseService.ts","../../src/window/IWindow.ts","../../src/window/IWindowConfig.ts","../../src/window/WindowBase.ts","../../src/window/WindowConfig.ts","../../src/window/WindowService.ts","../../src/window/WindowServiceEvent.ts","../../src/window/IWindowContent.ts","../../src/window/WindowClosedError.ts","../../src/notification/INotification.ts","../../src/notification/INotificationContent.ts","../../src/notification/NotificationConfig.ts","../../src/notification/NotificationService.ts","../../src/notification/NotificationServiceEvent.ts","../../src/bottomSheet/BottomSheetService.ts","../../src/storage/LocalStorageService.ts","../../src/storage/DateValueStorage.ts","../../src/storage/BooleanValueStorage.ts","../../src/module/LazyModuleLoader.ts","../../src/transport/TransportLazyModuleLoadedEvent.ts","../../src/transport/TransportLazy.ts","../../src/transport/TransportLazyModule.ts","../../src/VIModule.ts","../../src/public-api.ts","../../src/ts-core-angular.ts"],"sourcesContent":["import { AfterViewInit, Component } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { PromiseHandler } from '@ts-core/common';\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 | Promise<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 { LoadableEvent } from '@ts-core/common';\nimport { Assets, AssetUrlProvider, ThemeService, LanguageService, SettingsBaseService } from '@ts-core/frontend';\nimport { Language } from '@ts-core/language';\nimport { takeUntil } from 'rxjs';\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 this.initializeAssets();\n this.initializeTheme();\n this.initializeLanguage();\n }\n\n protected initializeAssets(): void {\n Assets.provider = new AssetUrlProvider(this.settings.assetsUrl);\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}\n","import { ActivatedRoute } from '@angular/router';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs';\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","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 { ElementRef, Renderer2, RendererStyleFlags2, ViewContainerRef } from '@angular/core';\nimport { ExtendedError } from '@ts-core/common';\nimport * as _ from 'lodash';\n\nexport class ViewUtil {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n private static _renderer: Renderer2 = null;\n private static _document: Document = null;\n\n public 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 public static set renderer(value: Renderer2) {\n if (value === ViewUtil._renderer) {\n return;\n }\n ViewUtil._renderer = value;\n }\n\n public static get document(): Document {\n return !_.isNil(ViewUtil._document) ? ViewUtil._document : document;\n }\n public static set document(value: Document) {\n ViewUtil._document = value;\n }\n\n public static get window(): Window {\n return this.document.defaultView;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private static copyToClipboard(): void {\n try {\n ViewUtil.document.execCommand('copy');\n } catch (error) {}\n }\n\n // --------------------------------------------------------------------------\n //\n //\tCommon Properties\n //\n // --------------------------------------------------------------------------\n\n public static parseElement<T extends HTMLElement = HTMLElement>(element: IViewElement<T>): T {\n if (element instanceof HTMLElement) {\n return element as T;\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 = ViewUtil.window.getSelection();\n selection.removeAllRanges();\n\n let range = ViewUtil.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', error?: string): void {\n if (_.isNil(image)) {\n ViewUtil.removeStyle(container, 'backgroundImage');\n ViewUtil.removeStyle(container, 'backgroundRepeat');\n return;\n }\n\n image = ViewUtil.getBackgroundUrl(image);\n if (!_.isEmpty(error)) {\n image += `, ${ViewUtil.getBackgroundUrl(error)}`;\n }\n\n ViewUtil.setStyle(container, 'backgroundImage', image);\n ViewUtil.setStyle(container, 'backgroundRepeat', repeat);\n }\n\n public static getBackgroundUrl(item: string): string {\n return !item.includes('url(') ? `url(${item})` : item;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tChild Methods\n //\n // --------------------------------------------------------------------------\n\n public static createElement<T = any>(name: string, className?: string, innerHTML?: string): T {\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 ViewUtil.window.innerWidth || ViewUtil.document.body.clientWidth;\n }\n\n public static getStageHeight(): number {\n return ViewUtil.window.innerHeight || ViewUtil.document.body.clientHeight;\n }\n\n public static getCanvasContext2d(container: IViewElement<HTMLCanvasElement>, options?: CanvasRenderingContext2DSettings): CanvasRenderingContext2D {\n let canvas = ViewUtil.parseElement(container);\n try {\n return canvas.getContext('2d', options);\n } catch (error) {\n return null;\n }\n }\n\n public static getBoundingRectangle(container: IViewElement): DOMRect {\n container = ViewUtil.parseElement(container);\n if (_.isNil(container) || _.isNil(container.getBoundingClientRect)) {\n return {\n x: NaN,\n y: NaN,\n width: NaN,\n height: NaN,\n top: NaN,\n right: NaN,\n left: NaN,\n bottom: NaN\n } as DOMRect;\n }\n return container.getBoundingClientRect();\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 = ViewUtil.getBoundingRectangle(container).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 = ViewUtil.getBoundingRectangle(container).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 (_.isEmpty(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 (_.isEmpty(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 toggleClasses(container: IViewElement, name: string, value: boolean): void {\n if (value) {\n ViewUtil.addClasses(container, name);\n } else {\n ViewUtil.removeClasses(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 getAttribute(container: IViewElement, name: string): any {\n if (_.isNil(name)) {\n return null;\n }\n container = ViewUtil.parseElement(container);\n return !_.isNil(container) ? container.getAttribute(name) : null;\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 { Directive, ElementRef, Input, booleanAttribute } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { Assets } from '@ts-core/frontend';\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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';\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';\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';\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';\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';\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';\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\nlet declarations = [AssetImagePipe, AssetIconPipe, AssetFilePipe, AssetSoundPipe, AssetVideoPipe, AssetBackgroundPipe, AssetBackgroundDirective];\n\n@NgModule({\n imports: [CommonModule],\n exports: declarations,\n declarations\n})\nexport class AssetModule {}\n","import { ICookieOptions, ICookieService } from '@ts-core/frontend';\nimport { CookieOptionsProvider } from 'ngx-cookie';\nimport { CookieOptions } from './CookieOptions';\nimport * as Cookie from 'ngx-cookie';\nimport * as _ from 'lodash';\n\nexport class CookieService extends Cookie.CookieService implements ICookieService {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(document: Document, options: CookieOptions, isPlatformBrowser: boolean) {\n super(document, { options } as CookieOptionsProvider, new CookieWriterService(document, isPlatformBrowser));\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<T = string>(key: string, defaultValue?: T): T {\n return this.has(key) ? (super.get(key) as T) : defaultValue;\n }\n\n public getObject<T = any>(key: string, defaultValue?: T): T {\n return this.has(key) ? (super.getObject(key) as T) : defaultValue;\n }\n\n public put<T = string>(key: string, value: T, options?: CookieOptions): void {\n super.put(key, value as string, options);\n }\n\n public putObject<T = any>(key: string, value: T, options?: CookieOptions): void {\n super.putObject(key, value as object, options);\n }\n\n public update(key: string, value: string, options?: ICookieOptions): void {\n this.put(key, value, options);\n }\n\n public updateObject(key: string, value: Object, options?: ICookieOptions): void {\n this.putObject(key, value, options);\n }\n}\n\nclass CookieWriterService extends Cookie.CookieWriterService {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private isPlatformBrowser: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(document: Document, isPlatformBrowser: boolean) {\n super(document);\n this.isPlatformBrowser = isPlatformBrowser;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public readAllAsString(): string {\n return this.isPlatformBrowser ? super.readAllAsString() : '';\n }\n\n public write(name: string, value: string | undefined, options?: CookieOptions): void {\n if (this.isPlatformBrowser) {\n super.write(name, value, options);\n }\n }\n}\n","import { PLATFORM_ID, Inject } from '@angular/core';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\n\n@Injectable({ providedIn: 'root' })\nexport class PlatformService extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n private _isPlatformServer: boolean;\n private _isPlatformBrowser: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Inject(PLATFORM_ID) platformId: string) {\n super();\n this._isPlatformServer = isPlatformServer(platformId);\n this._isPlatformBrowser = isPlatformBrowser(platformId);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isPlatformServer(): boolean {\n return this._isPlatformServer;\n }\n\n public get isPlatformBrowser(): boolean {\n return this._isPlatformBrowser;\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieOptions, NativeWindowService } from '@ts-core/frontend';\nimport { CookieService } from './CookieService';\nimport { PlatformService } from '../service/PlatformService';\nimport * as _ from 'lodash';\nimport { DOCUMENT } from '@angular/common';\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: [NativeWindowService, COOKIE_OPTIONS, PlatformService],\n useFactory: cookieServiceFactory\n }\n ]\n };\n }\n}\n\nexport function cookieServiceFactory(nativeWindow: NativeWindowService, options: ICookieOptions, platform: PlatformService): CookieService {\n options = _.assign(\n {\n path: '/',\n domain: null,\n expires: null,\n secure: false,\n httpOnly: false\n },\n options\n );\n return new CookieService(nativeWindow.document, options, platform.isPlatformBrowser);\n}\n\nexport const COOKIE_OPTIONS = new InjectionToken<ICookieOptions>(`COOKIE_OPTIONS`);\n","import { ICookieOptions } from '@ts-core/frontend';\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 { 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 // Static Methods\n //\n // --------------------------------------------------------------------------\n\n public static isSizeValid(item: ISize): boolean {\n if (_.isNil(item) || item.width <= 0 || item.height <= 0) {\n return false;\n }\n return true;\n }\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected size: ISize;\n protected sensor: ResizeObserver;\n protected subject: BehaviorSubject<ISize>;\n protected element: HTMLElement;\n\n // protected sensor: ResizeSensor;\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\n // Could be undefined in ssr\n try {\n this.sensor = new ResizeObserver(this.handler2);\n this.sensor.observe(this.element);\n } catch (error) {}\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n protected handlerItem = (item: ISize) => {\n if (!ResizeManager.isSizeValid(item)) {\n return;\n }\n if (!_.isNil(this.size) && item.width === this.size.width && item.height === this.size.height) {\n return;\n }\n this.size = item;\n this.subject.next(item);\n };\n\n protected handler2 = (items: Array<ResizeObserverEntry>) => {\n if (!_.isEmpty(items)) {\n this.handlerItem(items[0].contentRect);\n }\n };\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.unobserve(this.element);\n this.sensor.disconnect();\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, numberAttribute } 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({ transform: numberAttribute })\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, EventEmitter, ElementRef, HostListener, Input, Output, numberAttribute } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ViewUtil } from '../public-api';\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 (!_.isNil(this.scrollValue)) {\n this.scrollTo(this.scrollValue);\n }\n this.isInitialized = true;\n }\n\n protected scrollTo(value: number, behavior?: ScrollBehavior): void {\n this._scrollValue = value;\n this.element.scroll({ top: value, behavior });\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({ transform: numberAttribute })\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, numberAttribute } 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({ transform: numberAttribute })\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';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[vi-auto-scroll-bottom]'\n})\nexport class AutoScrollBottomDirective extends InfiniteScrollDirective {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public behavior: ScrollBehavior = 'auto';\n\n @Output()\n public triggerChanged: EventEmitter<number> = new EventEmitter<number>();\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 //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n if (!_.isNil(this.scrollHeight)) {\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.triggerChanged.emit(this.triggerDelta);\n this.triggerDelta = 0;\n }\n };\n\n protected scrollRemain(): void {\n this.isNeedRemainScroll = false;\n this.scrollTo(this.scrollHeight - this.lastScrollHeight);\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 scrollCheck(): void {\n clearTimeout(this.triggerTimer);\n this.triggerTimer = setTimeout(this.checkTrigger, InfiniteScrollDirective.INITIALIZATION_DELAY);\n }\n\n public scrollBottom(): void {\n this.scrollTo(this.scrollHeight, this.behavior);\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-scroll-bottom')\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 this.scrollCheck();\n }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { DateUtil } from '@ts-core/common';\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.MILLISECONDS_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 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 public focusHandler(): void {\n ViewUtil.selectContent(this.element);\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, EventEmitter, Input, Output, booleanAttribute } 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 resized: EventEmitter<any> = new EventEmitter();\n\n @Input({ transform: booleanAttribute })\n public isTop: boolean = false;\n @Input({ transform: booleanAttribute })\n public isLeft: boolean = false;\n @Input({ transform: booleanAttribute })\n public isRight: boolean = false;\n @Input({ transform: booleanAttribute })\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.resized.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 { EmbeddedViewRef, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\n\nexport class StructureDirective<T = any> extends DestroyableContainer {\n //--------------------------------------------------------------------------\n //\n //\tProperties\n //\n //--------------------------------------------------------------------------\n\n protected view: EmbeddedViewRef<T>;\n protected _isNeedAdd: boolean;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected template: TemplateRef<T>, protected container: ViewContainerRef) {\n super();\n }\n\n protected commitIsNeedAddProperties(): void {\n if (this.isDestroyed) {\n return;\n }\n\n let isNeedAdd = false;\n let isNeedRemove = false;\n if (this.isNeedAdd) {\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 super.destroy();\n this.view = null;\n this.template = null;\n this.container = null;\n }\n\n //--------------------------------------------------------------------------\n //\n //\tProtected Properties\n //\n //--------------------------------------------------------------------------\n\n protected set isNeedAdd(value: boolean) {\n if (value == this._isNeedAdd) {\n return;\n }\n this._isNeedAdd = value;\n this.commitIsNeedAddProperties();\n }\n protected get isNeedAdd(): boolean {\n return this._isNeedAdd;\n }\n}\n","import { Directive, ElementRef, Input, EventEmitter, Output, numberAttribute } from '@angular/core';\nimport { DateUtil, DestroyableContainer } from '@ts-core/common';\nimport { fromEvent, debounceTime, takeUntil } from 'rxjs';\nimport * as _ from 'lodash';\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 top: EventEmitter<boolean> = new EventEmitter();\n @Output()\n public bottom: EventEmitter<boolean> = new EventEmitter();\n @Output()\n public limitExceed: EventEmitter<boolean> = new EventEmitter();\n\n private _scrollLimit: number;\n\n private element: HTMLElement;\n private isExceedLimit: boolean = false;\n\n @Input({ transform: numberAttribute })\n public delay: number = DateUtil.MILLISECONDS_SECOND / 10;\n\n @Input({ transform: numberAttribute })\n public offset: number = 50;\n\n //--------------------------------------------------------------------------\n //\n //\tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.delay = DateUtil.MILLISECONDS_SECOND / 10;\n this.element = element.nativeElement;\n\n fromEvent(this.element, 'scroll').pipe(debounceTime(this.delay), takeUntil(this.destroyed)).subscribe(this.check);\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(value);\n }\n\n let offset = !_.isNaN(this.offset) ? this.offset : 0;\n value = this.scrollValue + this.clientHeight + offset >= this.scrollHeight;\n this.bottom.next(value);\n\n value = this.scrollValue <= offset;\n this.top.next(value);\n };\n\n //--------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n //--------------------------------------------------------------------------\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n protected get scrollValue(): number {\n return this.element.scrollTop;\n }\n protected get scrollHeight() {\n return this.element.scrollHeight;\n }\n protected get clientHeight(): number {\n return this.element.clientHeight;\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 { ChangeDetectorRef, Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport { takeUntil } from 'rxjs';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTranslate',\n pure: false\n})\nexport class LanguagePipe extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static removeTags(item: string): string {\n if (_.isEmpty(item)) {\n return item;\n }\n item = item.replace(/<br\\s*[\\/]?>/g, '\\n');\n item = item.replace(/<[^>]*>/g, '');\n return item;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private lastKey: string;\n private lastParams: any;\n\n private lastValue: string;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private detection: ChangeDetectorRef, private language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(this.lastValueUpdate);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private lastValueUpdate = (): void => {\n this.lastValue = this.language.translate(this.lastKey, this.lastParams);\n this.detection.markForCheck();\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string, params?: any): string {\n if (key === this.lastKey) {\n if (params === this.lastParams || (_.isNil(params) && _.isNil(this.lastParams))) {\n return this.lastValue;\n }\n }\n\n this.lastKey = key;\n this.lastParams = params;\n this.lastValueUpdate();\n\n return this.lastValue;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n this.detection = null;\n\n this.lastKey = null;\n this.lastParams = null;\n\n this.lastValue = null;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { LanguagePipe } from '../language/LanguagePipe';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-html-title]'\n})\nexport class HTMLTitleDirective 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 ViewUtil.setProperty(this.element, 'title', LanguagePipe.removeTags(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-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, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { LanguagePipe } from '../language/LanguagePipe';\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 ViewUtil.setProperty(this.element, 'title', LanguagePipe.removeTags(this.value));\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, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { PlatformService } from '../service/PlatformService';\nimport { StructureDirective } from './StructureDirective';\n\n@Directive({\n selector: '[viIsBrowser]'\n})\nexport class IsBrowserDirective extends StructureDirective {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(templateRef: TemplateRef<any>, container: ViewContainerRef, platform: PlatformService) {\n super(templateRef, container);\n this.isNeedAdd = platform.isPlatformBrowser;\n }\n}\n","import { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { PlatformService } from '../service/PlatformService';\nimport { StructureDirective } from './StructureDirective';\n\n@Directive({\n selector: '[viIsServer]'\n})\nexport class IsServerDirective extends StructureDirective {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(templateRef: TemplateRef<any>, container: ViewContainerRef, platform: PlatformService) {\n super(templateRef, container);\n this.isNeedAdd = platform.isPlatformServer;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\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';\nimport { PromiseHandler } from '@ts-core/common';\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';\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, booleanAttribute } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs';\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({ transform: booleanAttribute })\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';\nimport { takeUntil } from 'rxjs';\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';\nimport { takeUntil } from 'rxjs';\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, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { LanguageService } from '@ts-core/frontend';\nimport { takeUntil } from 'rxjs';\nimport { StructureDirective } from '../directive/StructureDirective';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[viTranslateHas]'\n})\nexport class LanguageHasDirective<T = any> extends StructureDirective<T> {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _viTranslateHas: string;\n protected _isOnlyIfNotEmpty: boolean = true;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(template: TemplateRef<T>, container: ViewContainerRef, protected language: LanguageService) {\n super(template, container);\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 this.isNeedAdd = !_.isNil(this.viTranslateHas) && this.language.isHasTranslation(this.viTranslateHas, this.viTranslateHasIsOnlyIfNotEmpty);\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 this._viTranslateHas = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('viTranslateHas')\n public set viTranslateHas(value: string) {\n if (value === this._viTranslateHas) {\n return;\n }\n this._viTranslateHas = value;\n this.check();\n }\n public get viTranslateHas(): string {\n return this._viTranslateHas;\n }\n\n @Input('viTranslateHasIsOnlyIfNotEmpty')\n public set viTranslateHasIsOnlyIfNotEmpty(value: boolean) {\n if (value === this._isOnlyIfNotEmpty) {\n return;\n }\n this._isOnlyIfNotEmpty = value;\n this.check();\n }\n public get viTranslateHasIsOnlyIfNotEmpty(): boolean {\n return this._isOnlyIfNotEmpty;\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieService } from '@ts-core/frontend';\nimport { ILanguageServiceOptions, LanguageService } from '@ts-core/frontend';\nimport { CookieService } from '../cookie/CookieService';\nimport { LanguagePipe } from './LanguagePipe';\nimport { LanguagePipePure } from './LanguagePipePure';\nimport { LanguageResolver } from './LanguageResolver';\nimport { LanguageDirective } from './LanguageDirective';\nimport { LanguagePipeHas } from './LanguagePipeHas';\nimport { LanguagePipeHasPure } from './LanguagePipeHasPure';\nimport { LanguageHasDirective } from './LanguageHasDirective';\nimport { CookieModule } from '../cookie/CookieModule';\nimport * as _ from 'lodash';\n\nlet declarations = [LanguagePipe, LanguagePipePure, LanguagePipeHas, LanguagePipeHasPure, LanguageHasDirective, LanguageDirective];\n\n@NgModule({\n imports: [CookieModule],\n exports: declarations,\n declarations\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 };\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 { LoadableEvent, Loadable, LoadableStatus } from '@ts-core/common';\nimport { ExtendedError } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common';\nimport { TransportNoConnectionError, TransportTimeoutError } from '@ts-core/common';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs';\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 _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<any, number>(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<any, number>(error);\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._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<any, number>(error);\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 !_.isNil(this.sid) || !_.isNil(this.getSavedSid());\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n this.reset();\n super.destroy();\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 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';\n\nexport class LoginRequireResolver<U extends LoginBaseService = LoginBaseService, V = void> implements Resolve<V> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected login: U) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public resolve(...params): Promise<V> {\n if (this.isLoggedIn()) {\n return Promise.resolve(null);\n }\n\n let promise = PromiseHandler.create<null>();\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';\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(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree | Promise<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';\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(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): 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);\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","import { DestroyableContainer } from '@ts-core/common';\nimport { CookieService } from '../cookie/CookieService';\nimport { LocalStorageService } from '../storage/LocalStorageService';\nimport { IValueStorage } from './IValueStorage';\nimport * as _ from 'lodash';\n\nexport class ValueStorage<T = string> extends DestroyableContainer implements IValueStorage<T> {\n //--------------------------------------------------------------------------\n //\n // \tProperties\n //\n //--------------------------------------------------------------------------\n\n protected _name: string;\n\n //--------------------------------------------------------------------------\n //\n // \tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(name: string, protected storage: LocalStorageService, protected cookies: CookieService) {\n super();\n this._name = name;\n }\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected serialize(value: string): T {\n return value as T;\n }\n\n protected deserialize(value: T): string {\n return value as string;\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public get(defaultValue?: T): T {\n if (this.isDestroyed) {\n return null;\n }\n let item = null;\n if (this.storage.has(this.name)) {\n item = this.storage.get(this.name);\n } else if (this.cookies.has(this.name)) {\n item = this.cookies.get(this.name);\n }\n return !_.isNil(item) ? this.serialize(item) : defaultValue;\n }\n\n public has(): boolean {\n if (this.isDestroyed) {\n return false;\n }\n return this.storage.has(this.name) || this.cookies.has(this.name);\n }\n\n public set(value: T): T {\n if (this.isDestroyed) {\n return null;\n }\n let item = !_.isNil(value) ? this.deserialize(value) : null;\n this.cookies.put(this.name, item);\n this.storage.set(this.name, item);\n return value;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.cookies = null;\n this.storage = null;\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n //--------------------------------------------------------------------------\n\n public get name(): string {\n return this._name;\n }\n}\n","import { CookieService } from '../cookie/CookieService';\nimport { ValueStorage } from '../storage/ValueStorage';\nimport { LocalStorageService } from '../storage/LocalStorageService';\nimport * as _ from 'lodash';\n\nexport class LoginTokenStorage extends ValueStorage {\n //--------------------------------------------------------------------------\n //\n // \tProperties\n //\n //--------------------------------------------------------------------------\n\n public static TOKEN_KEY = 'sid';\n\n //--------------------------------------------------------------------------\n //\n // \tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(local: LocalStorageService, cookies: CookieService) {\n super(LoginTokenStorage.TOKEN_KEY, local, cookies);\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';\nimport { LanguageService } from '@ts-core/frontend';\nimport { filter, takeUntil } from 'rxjs';\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 declare 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';\nimport { LanguageService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { IListItem } from './IListItem';\nimport { FilterableMapCollection } from '@ts-core/common';\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';\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\n protected commitSelectedIndexProperties(): void {\n this.selectedItem = !_.isNil(this.selectedIndex) ? _.find(this.collection, item => item.sortIndex === this.selectedIndex) : null;\n }\n\n protected selectIndexOrData(indexOrDataToSelect: number | V): void {\n if (_.isNumber(indexOrDataToSelect)) {\n this.selectedIndex = indexOrDataToSelect;\n } else {\n this.selectedItem = _.find(this.collection, item => item.data === indexOrDataToSelect);\n }\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 this.selectIndexOrData(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 { LanguageService } from '@ts-core/frontend';\nimport { SelectListItems } from './SelectListItems';\nimport { ISelectListItem } from './ISelectListItem';\nimport { RouterBaseService } from '../../service/RouterBaseService';\nimport { filter, takeUntil } from 'rxjs';\nimport * as _ from 'lodash';\n\nexport class RouterSelectListItems<U = string> extends SelectListItems<ISelectListItem<U>, U> {\n //--------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n //--------------------------------------------------------------------------\n\n public isDisabled: boolean;\n\n //--------------------------------------------------------------------------\n //\n // \tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(protected router: RouterBaseService, language: LanguageService) {\n super(language, true);\n this.changed\n .pipe(\n filter(() => !this.isDisabled),\n takeUntil(this.destroyed)\n )\n .subscribe(item => this.setFragment(item));\n this.router.completed\n .pipe(\n filter(() => !this.isDisabled),\n takeUntil(this.destroyed)\n )\n .subscribe(() => this.setData());\n }\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected setData(): void {\n let item = this.getRouterSelectedItem();\n this.selectedItem = !_.isNil(item) ? item : _.first(this.collection);\n }\n\n protected setFragment(item: ISelectListItem<U>): void {\n let index = _.indexOf(this.collection, item);\n this.router.setFragment(index > 0 ? item.data.toString() : null);\n }\n\n protected getRouterSelectedItem(): ISelectListItem<U> {\n return _.find(this.collection, { data: this.router.getFragment() }) as ISelectListItem<U>;\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public complete(): void {\n let item = this.getRouterSelectedItem();\n super.complete(!_.isNil(item) ? item.data : 0);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.router = null;\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 { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { PrettifyPipe } from './PrettifyPipe';\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 return !_.isNil(value) ? _.camelCase(value) : PrettifyPipe.EMPTY_SYMBOL;\n }\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';\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 //\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';\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';\nimport { PrettifyPipe } from './PrettifyPipe';\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 return !_.isEmpty(value) ? value.charAt(0).toUpperCase() + value.slice(1) : PrettifyPipe.EMPTY_SYMBOL;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { PrettifyPipe } from './PrettifyPipe';\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 return !_.isEmpty(value) ? _.truncate(value, { length: maxLength }) : PrettifyPipe.EMPTY_SYMBOL;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DateUtil } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { FinancePipe } from './FinancePipe';\nimport { PrettifyPipe } from './PrettifyPipe';\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 PrettifyPipe.EMPTY_SYMBOL;\n }\n if (_.isNil(format)) {\n format = TimePipe.DEFAULT_FORMAT;\n }\n return FinancePipe.format(milliseconds / DateUtil.MILLISECONDS_SECOND, format);\n }\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';\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 { DatePipe } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport { takeUntil } from 'rxjs';\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 {\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';\nimport { NativeWindowService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs';\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 _route: ActivatedRoute, 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?: ActivatedRouteSnapshot, defaultValue?: string): string {\n if (_.isNil(snapshot)) {\n snapshot = this.route.snapshot;\n }\n if (_.isNil(defaultValue)) {\n defaultValue = null;\n }\n return !_.isNil(snapshot.fragment) ? snapshot.fragment : defaultValue;\n }\n\n public hasFragment(snapshot?: ActivatedRouteSnapshot): boolean {\n return !_.isNil(this.getFragment(snapshot));\n }\n\n public async setFragment(value: string): Promise<boolean> {\n return value !== this.getFragment() ? this.applyExtras({ fragment: value }) : false;\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 route(): ActivatedRoute {\n return this._route;\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 = IRouterDeactivatable> implements CanDeactivate<T> {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public canDeactivate(\n component: T,\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 { Directive, ElementRef, Input, RendererStyleFlags2 } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs';\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.stylePropertiesCheck());\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';\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 { Directive, ElementRef, HostListener, Input, booleanAttribute } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs';\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 _source: 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 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 public 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.setDefaultSourceProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setSourceProperties(): void {\n this.source = this.getSource(this.getSourceId());\n }\n\n protected setDefaultSourceProperties(): void {\n this.source = this.getSource(this.getDefaultSourceId());\n }\n\n protected getSourceId(): string {\n if (_.isNil(this.name) || _.isNil(this.theme) || _.isNil(this.theme.theme)) {\n return null;\n }\n return this.name + _.capitalize(this.theme.theme.name);\n }\n\n protected getDefaultSourceId(): string {\n return this.themeAsset.getName(this.name, this.isIgnoreTheme);\n }\n\n protected abstract addSourceProperties(): 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 //\tProtected Properties\n //\n // --------------------------------------------------------------------------\n\n protected get source(): string {\n return this._source;\n }\n protected set source(value: string) {\n if (value === this._source) {\n return;\n }\n this._source = value;\n if (!_.isNil(value)) {\n this.addSourceProperties();\n } else {\n this.removeSourceProperties();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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 this._name = value;\n this.setSourceProperties();\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 this.setSourceProperties();\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend';\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 this.isBackground = true;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected addSourceProperties(): 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 // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-theme-background')\n public set name(value: string) {\n super.name = value;\n }\n public get name(): string {\n return super.name;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend';\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 this.isImage = true;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected addSourceProperties(): void {\n this.element.src = this.source;\n }\n protected removeSourceProperties(): void {\n this.element.src = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-theme-image')\n public set name(value: string) {\n super.name = value;\n }\n public get name(): string {\n return super.name;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend';\nimport { ThemeAssetDirective } from './ThemeAssetDirective';\n\n@Directive({\n selector: '[vi-theme-icon]'\n})\nexport class ThemeAssetIconDirective 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 addSourceProperties(): void {\n this.element.src = this.source;\n }\n protected removeSourceProperties(): void {\n this.element.src = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-theme-icon')\n public set name(value: string) {\n super.name = value;\n }\n public get name(): string {\n return super.name;\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeService } from '@ts-core/frontend';\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 { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieService, NativeWindowService } from '@ts-core/frontend';\nimport { IThemeServiceOptions, ThemeService, ThemeAssetService } from '@ts-core/frontend';\nimport { CookieModule } from '../cookie/CookieModule';\nimport { CookieService } from '../cookie/CookieService';\nimport { ThemeAssetBackgroundDirective } from './ThemeAssetBackgroundDirective';\nimport { ThemeAssetImageDirective } from './ThemeAssetImageDirective';\nimport { ThemeAssetIconDirective } from './ThemeAssetIconDirective';\nimport { ThemeToggleDirective } from './ThemeToggleDirective';\nimport { ThemeStyleDirective } from './ThemeStyleDirective';\nimport { ThemeStyleHoverDirective } from './ThemeStyleHoverDirective';\nimport * as _ from 'lodash';\n\nlet declarations = [\n ThemeToggleDirective,\n ThemeAssetImageDirective,\n ThemeAssetIconDirective,\n ThemeAssetBackgroundDirective,\n ThemeStyleDirective,\n ThemeStyleHoverDirective\n];\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: [NativeWindowService, CookieService, THEME_OPTIONS],\n useFactory: themeServiceFactory\n },\n {\n provide: ThemeAssetService,\n deps: [ThemeService, NativeWindowService],\n useFactory: themeAssetServiceFactory\n }\n ]\n };\n }\n}\n\nexport function themeServiceFactory(nativeWindow: NativeWindowService, cookie: ICookieService, options?: IThemeServiceOptions): ThemeService {\n if (!_.isNil(options) && _.isNil(options.service)) {\n options.service = cookie;\n }\n return new ThemeService(options, nativeWindow.document);\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 { 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';\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(data: any): void {\n this._user = this.createUser(data);\n }\n\n protected deinitializeUser(): void {\n this._user = null;\n }\n\n protected loginedHandler(): void {\n this.initializeUser(this.login.loginData);\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 { Observable } from 'rxjs';\nimport { Destroyable } from '@ts-core/common';\nimport { IWindowContent } from './IWindowContent';\nimport { IWindowConfig } from './IWindowConfig';\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: IWindowConfig<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 = 'MOVED',\n RESIZED = 'RESIZED',\n DISABLED_CHANGED = 'DISABLED_CHANGED',\n MINIMIZED_CHANGED = 'MINIMIZED_CHANGED',\n IS_ON_TOP_CHANGED = 'IS_ON_TOP_CHANGED',\n\n EXPAND = 'EXPAND',\n SET_ON_TOP = 'SET_ON_TOP'\n}\n","export interface IWindowConfig<T = any> {\n id: string;\n isModal: boolean;\n isExpandable: boolean;\n isResizeable: boolean;\n isMinimizable: boolean;\n isDisableClose: boolean;\n isContentDragable: boolean;\n\n x: number;\n y: number;\n elementMinX: number;\n elementMaxX: number;\n elementMinY: number;\n elementMaxY: number;\n elementMinWidth: number;\n elementMaxWidth: number;\n elementMinHeight: number;\n elementMaxHeight: number;\n\n width: string;\n defaultWidth: number;\n defaultMinWidth: number;\n defaultMaxWidth: number;\n\n height: string;\n defaultHeight: number;\n defaultMinHeight: number;\n defaultMaxHeight: number;\n\n paddingTop: number;\n paddingLeft: number;\n paddingRight: number;\n paddingBottom: number;\n\n propertiesId: string;\n verticalAlign: WindowAlign;\n horizontalAlign: WindowAlign;\n\n data?: T;\n autoFocus: string;\n restoreFocus: boolean;\n delayFocusTrap: boolean;\n}\n\nexport enum WindowAlign {\n START = 'START',\n CENTER = 'CENTER',\n END = 'END'\n}\n","import * as _ from 'lodash';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { IWindowConfig, WindowAlign } from './IWindowConfig';\nimport { ViewUtil } from '../util/ViewUtil';\n\nexport abstract class WindowBase<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n protected static parseX<T>(value: number, config: IWindowConfig<T>): number {\n value = Math.max(value, config.elementMinX);\n value = Math.min(value, config.elementMaxX);\n return value;\n }\n\n protected static parseY<T>(value: number, config: IWindowConfig<T>): number {\n value = Math.max(value, config.elementMinY);\n value = Math.min(value, config.elementMaxY);\n return value;\n }\n\n protected static parseWidth<T>(value: number, config: IWindowConfig<T>): number {\n value = Math.max(value, config.elementMinWidth);\n value = Math.min(value, config.elementMaxWidth);\n return value;\n }\n\n protected static parseHeight<T>(value: number, config: IWindowConfig<T>): number {\n value = Math.max(value, config.elementMinHeight);\n value = Math.min(value, config.elementMaxHeight);\n return value;\n }\n\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(): IWindowConfig<T>;\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\n protected commitPositionProperties(): void {}\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 = WindowBase.parseWidth(value, this.getConfig());\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 = WindowBase.parseWidth(value, this.getConfig());\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 = WindowBase.parseX(value, this.getConfig());\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 = WindowBase.parseY(value, this.getConfig());\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 * as _ from 'lodash';\nimport { IDestroyable } from '@ts-core/common';\nimport { IWindowConfig, WindowAlign } from './IWindowConfig';\nimport { ViewUtil } from '../util/ViewUtil';\n\nexport class WindowConfig<T = any> implements IWindowConfig<T>, IDestroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public id: string;\n public isModal: boolean = false;\n public isExpandable: boolean = false;\n public isResizeable: boolean = false;\n public isMinimizable: boolean = false;\n public isDisableClose: boolean = false;\n public isContentDragable: boolean = true;\n\n public x: number = NaN;\n public y: number = NaN;\n public data: T;\n public propertiesId: string;\n\n public width: string;\n public minWidth: number;\n public maxWidth: number;\n public defaultWidth: number = NaN;\n public defaultMinWidth: number = NaN;\n public defaultMaxWidth: number = NaN;\n\n public height: string;\n public minHeight: number;\n public maxHeight: number;\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 autoFocus: string;\n public restoreFocus: boolean;\n public delayFocusTrap: boolean;\n\n public verticalAlign: WindowAlign;\n public horizontalAlign: WindowAlign;\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 this.isModal = isModal;\n this.isResizeable = isResizeable;\n if (!_.isNaN(width)) {\n this.defaultWidth = width;\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 destroy(): void {\n if (!_.isNil(this.data) && IDestroyable.instanceOf(this.data)) {\n this.data.destroy();\n }\n this.data = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\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 type WindowConfigOptions<T = any> = { [P in keyof WindowConfig<T>]?: any };\n","import { ObservableData, ClassType, Destroyable } from '@ts-core/common';\nimport { WindowConfigOptions } from './WindowConfig';\nimport { IWindow } from './IWindow';\nimport { Observable } from 'rxjs';\nimport { IWindowContent } from './IWindowContent';\nimport { IWindowConfig } from './IWindowConfig';\nimport { IQuestion, IQuestionOptions } from '../question/IQuestion';\nimport { WindowServiceEvent } from './WindowServiceEvent';\n\nexport abstract class WindowService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract open<U extends IWindowContent<T>, T>(component: ClassType<U>, config: IWindowConfig<T>): U;\n\n public abstract get<T>(value: WindowId<T>): IWindowContent<T>;\n\n public abstract has<T>(value: WindowId<T>): boolean;\n\n public abstract setOnTop<T>(value: WindowId<T>): boolean;\n\n public abstract close<T>(value: WindowId<T>): void;\n\n public abstract closeAll(): void;\n\n // --------------------------------------------------------------------------\n //\n // \tAdditional Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion;\n\n public abstract question(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public abstract get events(): Observable<ObservableData<WindowServiceEvent, IWindow>>;\n\n public abstract get windows(): Map<IWindowConfig, IWindowContent>;\n}\n\nexport type WindowId<T> = string | IWindowConfig<T>;\n","export enum WindowServiceEvent {\n OPEN_STARTED = 'OPEN_STARTED',\n OPENED = 'OPENED',\n OPEN_FINISHED = 'OPEN_FINISHED',\n\n CLOSED = 'CLOSED',\n SETTED_ON_TOP = 'SETTED_ON_TOP'\n}\n","import { AfterViewInit, ElementRef, ViewContainerRef, Inject, Optional, Component, InjectionToken, Input, booleanAttribute } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { IWindow, WindowEvent } from './IWindow';\nimport { IWindowConfig } from './IWindowConfig';\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 if (_.isNil(this.window)) {\n super.ngOnDestroy();\n }\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 @Input({ transform: booleanAttribute })\n public set isDisabled(value: boolean) {\n if (!_.isNil(this.window)) {\n this.window.isDisabled = value;\n }\n }\n public get isDisabled(): boolean {\n return !_.isNil(this.window) ? this.window.isDisabled : false;\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(): IWindowConfig<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 { ExtendedError } from '@ts-core/common';\nimport * as _ from 'lodash';\n\nexport class WindowClosedError extends ExtendedError<void, number> {\n // --------------------------------------------------------------------------\n //\n // Static Methods\n //\n // --------------------------------------------------------------------------\n\n public static CODE = ExtendedError.DEFAULT_ERROR_CODE;\n public static MESSAGE = 'WINDOW_CLOSED';\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(message: string = WindowClosedError.MESSAGE, code: number = WindowClosedError.CODE) {\n super(message, code);\n }\n}\n","import { IDestroyable } from '@ts-core/common';\nimport { INotificationContent } from './INotificationContent';\nimport { INotificationConfig } from './INotificationConfig';\nimport { Observable } from 'rxjs';\n\nexport abstract class INotification<T = any> implements IDestroyable {\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: INotificationConfig<T>;\n readonly content: INotificationContent<T>;\n}\n\nexport enum NotificationEvent {\n REMOVED = 'REMOVED'\n}\n","import { AfterViewInit, Component, Input, ViewContainerRef } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { Observable } from 'rxjs';\nimport { INotification } from './INotification';\nimport { INotificationConfig } from './INotificationConfig';\nimport { WindowEvent } from '../window/IWindow';\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: INotificationConfig<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: INotificationConfig<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(): INotificationConfig<T> {\n return this._config;\n }\n}\n","import { WindowConfig } from '../window/WindowConfig';\nimport { INotificationConfig } from './INotificationConfig';\n\nexport class NotificationConfig<T = any> extends WindowConfig<T> implements INotificationConfig<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;\n public isRemoveAfterClose: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(data?: T) {\n super();\n this.data = data;\n this.isModal = false;\n this.closeDuration = NaN;\n this.isRemoveAfterClose = false;\n }\n}\n\nexport type NotificationConfigOptions<T = any> = { [P in keyof NotificationConfig<T>]?: any };\n","import { ObservableData, ClassType, Destroyable } from '@ts-core/common';\nimport { IQuestion, IQuestionOptions } from '../question/IQuestion';\nimport { INotification } from './INotification';\nimport { INotificationConfig } from './INotificationConfig';\nimport { INotificationContent } from './INotificationContent';\nimport { NotificationConfigOptions } from './NotificationConfig';\nimport { NotificationServiceEvent } from './NotificationServiceEvent';\nimport { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nexport abstract class NotificationService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract open<U extends INotificationContent<T>, T>(component: ClassType<U>, config: INotificationConfig<T>): U;\n\n // --------------------------------------------------------------------------\n //\n // \tHelp Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract get<T>(value: NotificationId<T>): INotificationConfig<T>;\n\n public abstract has<T>(value: NotificationId<T>): boolean;\n\n public abstract remove<T>(value: NotificationId<T>): void;\n\n public abstract closeAll(): void;\n\n public abstract close<T>(value: NotificationId<T>): INotification<T>;\n\n // --------------------------------------------------------------------------\n //\n // \tAdditional Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: NotificationConfigOptions): IQuestion;\n\n public abstract question(\n translationId?: string,\n translation?: any,\n questionOptions?: IQuestionOptions,\n configOptions?: NotificationConfigOptions\n ): IQuestion;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public abstract get events(): Observable<ObservableData<NotificationServiceEvent, INotificationConfig | INotification>>;\n\n public abstract get configs(): Array<INotificationConfig>;\n\n public abstract get closedConfigs(): Array<INotificationConfig>;\n\n public abstract get notifications(): Map<INotificationConfig, INotificationContent>;\n}\n\nexport type NotificationId<T> = string | INotificationConfig<T> | NotificationConfigOptions<T>;\n","export enum NotificationServiceEvent {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n ADDED = 'ADDED',\n REMOVED = 'REMOVED'\n}\n","import { ObservableData, ClassType, Destroyable } from '@ts-core/common';\nimport { WindowConfigOptions } from '../window/WindowConfig';\nimport { IWindow } from '../window/IWindow';\nimport { Observable } from 'rxjs';\nimport { IWindowContent } from '../window/IWindowContent';\nimport { IWindowConfig } from '../window/IWindowConfig';\nimport { IQuestion, IQuestionOptions } from '../question/IQuestion';\nimport { WindowServiceEvent } from '../window/WindowServiceEvent';\nimport { WindowId } from '../window/WindowService';\n\nexport abstract class BottomSheetService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract open<U extends IWindowContent<T>, T>(component: ClassType<U>, config: IWindowConfig<T>): U;\n\n public abstract get<T>(value: WindowId<T>): IWindowContent<T>;\n\n public abstract has<T>(value: WindowId<T>): boolean;\n\n public abstract close<T>(value: WindowId<T>): void;\n\n public abstract closeAll(): void;\n\n // --------------------------------------------------------------------------\n //\n // \tAdditional Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion;\n\n public abstract question(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion;\n\n public abstract setOnTop<T>(value: WindowId<T>): boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public abstract get window(): IWindow;\n\n public abstract get events(): Observable<ObservableData<WindowServiceEvent, IWindow>>;\n}\n","import { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\n\nexport class LocalStorageService extends DestroyableContainer {\n //--------------------------------------------------------------------------\n //\n // \tProperties\n //\n //--------------------------------------------------------------------------\n\n protected storage: Storage;\n protected isPlatformBrowser: boolean;\n\n //--------------------------------------------------------------------------\n //\n // \tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(storage: Storage, isPlatformBrowser: boolean) {\n super();\n this.storage = storage;\n this.isPlatformBrowser = isPlatformBrowser;\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public get(key: string, defaultValue?: string): string {\n return this.has(key) ? this.storage.getItem(key) : defaultValue;\n }\n\n public has(key: string): boolean {\n return !_.isNil(this.storage.getItem(key));\n }\n\n public set(key: string, value: string): void {\n if (!_.isNil(value)) {\n this.storage.setItem(key, value);\n } else {\n this.remove(key);\n }\n }\n\n public remove(key: string): void {\n this.storage.removeItem(key);\n }\n\n public clear(): void {\n this.storage.clear();\n }\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Properties\n //\n //--------------------------------------------------------------------------\n\n protected get length(): number {\n return this.storage.length;\n }\n}\n","import { DateUtil } from '@ts-core/common';\nimport { ValueStorage } from './ValueStorage';\nimport * as _ from 'lodash';\n\nexport class DateValueStorage extends ValueStorage<Date> {\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public defaultExpirationDelta: number = 0;\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected serialize(value: string): Date {\n return new Date(value);\n }\n\n protected deserialize(value: Date): string {\n return value.toISOString();\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public isMore(item: Date): boolean {\n return this.has() ? this.get().getTime() > item.getTime() : false;\n }\n\n public isLess(item: Date): boolean {\n return this.has() ? this.get().getTime() < item.getTime() : false;\n }\n\n public isEqual(item: Date): boolean {\n return this.has() ? this.get().getTime() === item.getTime() : false;\n }\n\n public isExpired(item: Date): boolean {\n return this.has() ? this.isLess(item) : true;\n }\n\n public isExpiredFromNow(delta?: number): boolean {\n if (_.isNil(delta)) {\n delta = this.defaultExpirationDelta;\n }\n return this.isExpired(DateUtil.getDate(Date.now() + delta));\n }\n}\n","import { ValueStorage } from './ValueStorage';\nimport * as _ from 'lodash';\n\nexport class BooleanValueStorage extends ValueStorage<boolean> {\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected serialize(value: string): boolean {\n return value === 'true';\n }\n\n protected deserialize(value: boolean): string {\n return value ? 'true' : 'false';\n }\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';\nimport { MapCollection } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common';\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';\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';\nimport { TransportLocal } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { LazyModuleLoader } from '../module/LazyModuleLoader';\nimport { ILogger } from '@ts-core/common';\nimport { ITransportLazyModuleData } from './TransportLazyModule';\nimport { TransportLazyModuleLoadedEvent } from './TransportLazyModuleLoadedEvent';\n\nexport class TransportLazy extends TransportLocal {\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(logger: ILogger, protected loader: LazyModuleLoader<ITransportLazyModuleData>, settings?: ITransportSettings) {\n super(logger, settings, null);\n this.getDispatcher<TransportLazyModuleLoadedEvent<ITransportLazyModuleData>>(TransportLazyModuleLoadedEvent.NAME).subscribe(event =>\n this.moduleLoadedHandler(event.data)\n );\n this.logEventFilters.push(item => item.name !== TransportLazyModuleLoadedEvent.NAME);\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 commandResponseRequestDispatch<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 return super.commandResponseRequestDispatch(command, options, isNeedReply);\n }\n\n protected async eventRequestExecute<U>(event: ITransportEvent<U>): Promise<void> {\n let item = this.getModuleByEvent(event.name);\n if (!_.isNil(this.loader) && !_.isNil(item)) {\n this.loader.loadIfNeed(item.id).then(() => super.eventRequestExecute(event));\n } else {\n super.eventRequestExecute(event);\n }\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 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';\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","import { APP_INITIALIZER, InjectionToken, ModuleWithProviders, NgModule, Renderer2, RendererFactory2 } from '@angular/core';\nimport { ILogger, Logger, LoggerLevel } from '@ts-core/common';\nimport { ICookieOptions } from '@ts-core/frontend';\nimport { ILanguageServiceOptions } from '@ts-core/frontend';\nimport { DefaultLogger } from '@ts-core/frontend';\nimport { LoadingService, NativeWindowService } from '@ts-core/frontend';\nimport { IThemeServiceOptions } from '@ts-core/frontend';\nimport { AssetModule } from './asset/AssetModule';\nimport { CookieModule } from './cookie/CookieModule';\nimport { CanDeactivateGuard } from './service/route/CanDeactivateGuard';\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 { HTMLTitleDirective } from './directive/HTMLTitleDirective';\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 { 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 { IsServerDirective } from './directive/IsServerDirective';\nimport { IsBrowserDirective } from './directive/IsBrowserDirective';\nimport { DOCUMENT } from '@angular/common';\nimport { PlatformService } from './service/PlatformService';\nimport { ViewUtil } from './util/ViewUtil';\nimport { CookieService } from './cookie/CookieService';\nimport { LoginTokenStorage } from './login/LoginTokenStorage';\nimport { LocalStorageService } from './storage/LocalStorageService';\nimport * as _ from 'lodash';\n\nlet imports = [CookieModule, ThemeModule, LanguageModule, AssetModule];\n\nlet declarations = [\n TimePipe,\n FinancePipe,\n SanitizePipe,\n TruncatePipe,\n PrettifyPipe,\n CamelCasePipe,\n StartCasePipe,\n NgModelErrorPipe,\n\n IsServerDirective,\n IsBrowserDirective,\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 InfiniteScrollDirective,\n HTMLTitleDirective,\n HTMLContentTitleDirective,\n AutoScrollBottomDirective,\n AspectRatioResizeDirective\n];\n\nlet exports = [...imports, ...declarations];\n\n@NgModule({\n imports,\n declarations,\n exports\n})\nexport class VIModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: IVIOptions): ModuleWithProviders<VIModule> {\n return {\n ngModule: VIModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n deps: [NativeWindowService, RendererFactory2],\n useFactory: initializerFactory,\n multi: true\n },\n\n LoadingService,\n PlatformService,\n CanDeactivateGuard,\n\n { provide: VI_ANGULAR_OPTIONS, useValue: options || {} },\n { provide: Logger, deps: [VI_ANGULAR_OPTIONS], useFactory: loggerServiceFactory },\n { provide: NativeWindowService, deps: [DOCUMENT], useFactory: nativeWindowServiceFactory },\n { provide: LocalStorageService, deps: [NativeWindowService, PlatformService], useFactory: localStorageServiceFactory },\n { provide: LoginTokenStorage, deps: [LocalStorageService, CookieService], useFactory: loginTokenStorageServiceFactory },\n\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 IVIOptions extends ICookieOptions {\n loggerLevel?: LoggerLevel;\n themeOptions?: IThemeServiceOptions;\n languageOptions?: ILanguageServiceOptions;\n}\n\nexport function initializerFactory(nativeWindow: NativeWindowService, rendererFactory2: RendererFactory2): ViewUtil {\n ViewUtil.renderer = rendererFactory2.createRenderer(null, null);\n ViewUtil.document = nativeWindow.document;\n return () => Promise.resolve();\n}\n\nexport function loggerServiceFactory(options: IVIOptions): ILogger {\n return new DefaultLogger(!_.isNil(options.loggerLevel) ? options.loggerLevel : LoggerLevel.ALL);\n}\n\nexport function nativeWindowServiceFactory(document: Document): NativeWindowService {\n return new NativeWindowService(document);\n}\n\nexport function localStorageServiceFactory(nativeWindow: NativeWindowService, platform: PlatformService): LocalStorageService {\n return new LocalStorageService(nativeWindow.window.localStorage, platform.isPlatformBrowser);\n}\n\nexport function loginTokenStorageServiceFactory(local: LocalStorageService, cookies: CookieService): LoginTokenStorage {\n return new LoginTokenStorage(local, cookies);\n}\n\nexport const VI_ANGULAR_OPTIONS = new InjectionToken<IVIOptions>(`VI_ANGULAR_OPTIONS`);\n","//\nexport * from './application/ApplicationBaseComponent';\nexport * from './application/ApplicationComponent';\nexport * from './application/MessageBaseComponent';\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//\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/StructureDirective';\nexport * from './directive/ScrollDirective';\nexport * from './directive/ScrollCheckDirective';\nexport * from './directive/HTMLTitleDirective';\nexport * from './directive/HTMLContentTitleDirective';\nexport * from './directive/IsBrowserDirective';\nexport * from './directive/IsServerDirective';\n//\nexport * from './language/LanguageModule';\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';\nexport * from './login/LoginTokenStorage';\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';\nexport * from './list/select/RouterSelectListItems';\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';\n//\nexport * from './service/PipeBaseService';\nexport * from './service/PlatformService';\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/ThemeAssetIconDirective';\nexport * from './theme/ThemeAssetDirective';\nexport * from './theme/ThemeModule';\nexport * from './theme/ThemeToggleDirective';\n//\nexport * from './user/IUser';\nexport * from './user/UserBaseService';\n//\nexport * from './window/IWindow';\nexport * from './window/WindowBase';\nexport * from './window/WindowConfig';\nexport * from './window/WindowService';\nexport * from './window/WindowServiceEvent';\nexport * from './window/IWindowConfig';\nexport * from './window/IWindowContent';\nexport * from './window/WindowClosedError';\n//\nexport * from './notification/INotification';\nexport * from './notification/INotificationConfig';\nexport * from './notification/INotificationContent';\nexport * from './notification/NotificationConfig';\nexport * from './notification/NotificationService';\nexport * from './notification/NotificationServiceEvent';\n//\nexport * from './bottomSheet/BottomSheetService';\n//\nexport * from './storage/LocalStorageService';\nexport * from './storage/ValueStorage';\nexport * from './storage/IValueStorage';\nexport * from './storage/DateValueStorage';\nexport * from './storage/BooleanValueStorage';\n//\nexport * from './module/LazyModuleLoader';\n//\nexport * from './transport/TransportLazy';\nexport * from './transport/TransportLazyModule';\nexport * from './transport/TransportLazyModuleLoadedEvent';\n//\nexport * from './util/ViewUtil';\n//\nexport * from './VIModule';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["declarations","i1.PlatformService","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ts-core-angular.mjs","sources":["../../src/application/ApplicationBaseComponent.ts","../../src/application/ApplicationComponent.ts","../../src/application/MessageBaseComponent.ts","../../src/ApplicationInjector.ts","../../src/util/ViewUtil.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/service/PlatformService.ts","../../src/cookie/CookieModule.ts","../../src/cookie/CookieOptions.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/ResizeDirective.ts","../../src/directive/StructureDirective.ts","../../src/directive/ScrollCheckDirective.ts","../../src/language/LanguagePipe.ts","../../src/directive/HTMLTitleDirective.ts","../../src/directive/HTMLContentTitleDirective.ts","../../src/directive/IsBrowserDirective.ts","../../src/directive/IsServerDirective.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/login/LoginBaseService.ts","../../src/login/LoginRequireResolver.ts","../../src/login/LoginGuard.ts","../../src/login/LoginNotGuard.ts","../../src/login/LoginIfCanGuard.ts","../../src/login/LoginResolver.ts","../../src/storage/ValueStorage.ts","../../src/login/LoginTokenStorage.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/list/select/RouterSelectListItems.ts","../../src/pipe/PrettifyPipe.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/TruncatePipe.ts","../../src/pipe/TimePipe.ts","../../src/question/IQuestion.ts","../../src/question/QuestionManager.ts","../../src/service/PipeBaseService.ts","../../src/service/RouterBaseService.ts","../../src/service/ServiceWorkerService.ts","../../src/service/route/CanDeactivateGuard.ts","../../src/theme/ThemeStyleDirective.ts","../../src/theme/ThemeStyleHoverDirective.ts","../../src/theme/ThemeAssetDirective.ts","../../src/theme/ThemeAssetBackgroundDirective.ts","../../src/theme/ThemeAssetImageDirective.ts","../../src/theme/ThemeAssetIconDirective.ts","../../src/theme/ThemeToggleDirective.ts","../../src/theme/ThemeModule.ts","../../src/user/IUser.ts","../../src/user/UserBaseService.ts","../../src/window/IWindow.ts","../../src/window/IWindowConfig.ts","../../src/window/WindowBase.ts","../../src/window/WindowConfig.ts","../../src/window/WindowService.ts","../../src/window/WindowServiceEvent.ts","../../src/window/IWindowContent.ts","../../src/window/WindowClosedError.ts","../../src/notification/INotification.ts","../../src/notification/INotificationContent.ts","../../src/notification/NotificationConfig.ts","../../src/notification/NotificationService.ts","../../src/notification/NotificationServiceEvent.ts","../../src/bottomSheet/BottomSheetService.ts","../../src/storage/LocalStorageService.ts","../../src/storage/DateValueStorage.ts","../../src/storage/BooleanValueStorage.ts","../../src/module/LazyModuleLoader.ts","../../src/transport/TransportLazyModuleLoadedEvent.ts","../../src/transport/TransportLazy.ts","../../src/transport/TransportLazyModule.ts","../../src/VIModule.ts","../../src/public-api.ts","../../src/ts-core-angular.ts"],"sourcesContent":["import { AfterViewInit, Component } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { PromiseHandler } from '@ts-core/common';\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 | Promise<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 { LoadableEvent } from '@ts-core/common';\nimport { Assets, AssetUrlProvider, ThemeService, LanguageService, SettingsBaseService } from '@ts-core/frontend';\nimport { Language } from '@ts-core/language';\nimport { takeUntil } from 'rxjs';\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 this.initializeAssets();\n this.initializeTheme();\n this.initializeLanguage();\n }\n\n protected initializeAssets(): void {\n Assets.provider = new AssetUrlProvider(this.settings.assetsUrl);\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}\n","import { ActivatedRoute } from '@angular/router';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs';\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","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 { ElementRef, Renderer2, RendererStyleFlags2, ViewContainerRef } from '@angular/core';\nimport { ExtendedError } from '@ts-core/common';\nimport * as _ from 'lodash';\n\nexport class ViewUtil {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n private static _renderer: Renderer2 = null;\n private static _document: Document = null;\n\n public 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 public static set renderer(value: Renderer2) {\n if (value === ViewUtil._renderer) {\n return;\n }\n ViewUtil._renderer = value;\n }\n\n public static get document(): Document {\n return !_.isNil(ViewUtil._document) ? ViewUtil._document : document;\n }\n public static set document(value: Document) {\n ViewUtil._document = value;\n }\n\n public static get window(): Window {\n return this.document.defaultView;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private static copyToClipboard(): void {\n try {\n ViewUtil.document.execCommand('copy');\n } catch (error) {}\n }\n\n // --------------------------------------------------------------------------\n //\n //\tCommon Properties\n //\n // --------------------------------------------------------------------------\n\n public static parseElement<T extends HTMLElement = HTMLElement>(element: IViewElement<T>): T {\n if (element instanceof HTMLElement) {\n return element as T;\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 = ViewUtil.window.getSelection();\n selection.removeAllRanges();\n\n let range = ViewUtil.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', error?: string): void {\n if (_.isNil(image)) {\n ViewUtil.removeStyle(container, 'backgroundImage');\n ViewUtil.removeStyle(container, 'backgroundRepeat');\n return;\n }\n\n image = ViewUtil.getBackgroundUrl(image);\n if (!_.isEmpty(error)) {\n image += `, ${ViewUtil.getBackgroundUrl(error)}`;\n }\n\n ViewUtil.setStyle(container, 'backgroundImage', image);\n ViewUtil.setStyle(container, 'backgroundRepeat', repeat);\n }\n\n public static getBackgroundUrl(item: string): string {\n return !item.includes('url(') ? `url(${item})` : item;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tChild Methods\n //\n // --------------------------------------------------------------------------\n\n public static createElement<T = any>(name: string, className?: string, innerHTML?: string): T {\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 ViewUtil.window.innerWidth || ViewUtil.document.body.clientWidth;\n }\n\n public static getStageHeight(): number {\n return ViewUtil.window.innerHeight || ViewUtil.document.body.clientHeight;\n }\n\n public static getCanvasContext2d(container: IViewElement<HTMLCanvasElement>, options?: CanvasRenderingContext2DSettings): CanvasRenderingContext2D {\n let canvas = ViewUtil.parseElement(container);\n try {\n return canvas.getContext('2d', options);\n } catch (error) {\n return null;\n }\n }\n\n public static getBoundingRectangle(container: IViewElement): DOMRect {\n container = ViewUtil.parseElement(container);\n if (_.isNil(container) || _.isNil(container.getBoundingClientRect)) {\n return {\n x: NaN,\n y: NaN,\n width: NaN,\n height: NaN,\n top: NaN,\n right: NaN,\n left: NaN,\n bottom: NaN\n } as DOMRect;\n }\n return container.getBoundingClientRect();\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 = ViewUtil.getBoundingRectangle(container).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 = ViewUtil.getBoundingRectangle(container).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 (_.isEmpty(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 (_.isEmpty(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 toggleClasses(container: IViewElement, name: string, value: boolean): void {\n if (value) {\n ViewUtil.addClasses(container, name);\n } else {\n ViewUtil.removeClasses(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 getAttribute(container: IViewElement, name: string): any {\n if (_.isNil(name)) {\n return null;\n }\n container = ViewUtil.parseElement(container);\n return !_.isNil(container) ? container.getAttribute(name) : null;\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 { Directive, ElementRef, Input, booleanAttribute } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { Assets } from '@ts-core/frontend';\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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';\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';\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';\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';\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';\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';\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\nlet declarations = [AssetImagePipe, AssetIconPipe, AssetFilePipe, AssetSoundPipe, AssetVideoPipe, AssetBackgroundPipe, AssetBackgroundDirective];\n\n@NgModule({\n imports: [CommonModule],\n exports: declarations,\n declarations\n})\nexport class AssetModule {}\n","import { ICookieOptions, ICookieService } from '@ts-core/frontend';\nimport { CookieOptionsProvider } from 'ngx-cookie';\nimport { CookieOptions } from './CookieOptions';\nimport * as Cookie from 'ngx-cookie';\nimport * as _ from 'lodash';\n\nexport class CookieService extends Cookie.CookieService implements ICookieService {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(document: Document, options: CookieOptions, isPlatformBrowser: boolean) {\n super(document, { options } as CookieOptionsProvider, new CookieWriterService(document, isPlatformBrowser));\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<T = string>(key: string, defaultValue?: T): T {\n return this.has(key) ? (super.get(key) as T) : defaultValue;\n }\n\n public getObject<T = any>(key: string, defaultValue?: T): T {\n return this.has(key) ? (super.getObject(key) as T) : defaultValue;\n }\n\n public put<T = string>(key: string, value: T, options?: CookieOptions): void {\n super.put(key, value as string, options);\n }\n\n public putObject<T = any>(key: string, value: T, options?: CookieOptions): void {\n super.putObject(key, value as object, options);\n }\n\n public update(key: string, value: string, options?: ICookieOptions): void {\n this.put(key, value, options);\n }\n\n public updateObject(key: string, value: Object, options?: ICookieOptions): void {\n this.putObject(key, value, options);\n }\n}\n\nclass CookieWriterService extends Cookie.CookieWriterService {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private isPlatformBrowser: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(document: Document, isPlatformBrowser: boolean) {\n super(document);\n this.isPlatformBrowser = isPlatformBrowser;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public readAllAsString(): string {\n return this.isPlatformBrowser ? super.readAllAsString() : '';\n }\n\n public write(name: string, value: string | undefined, options?: CookieOptions): void {\n if (this.isPlatformBrowser) {\n super.write(name, value, options);\n }\n }\n}\n","import { Injectable, PLATFORM_ID, Inject } from '@angular/core';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { DestroyableContainer } from '@ts-core/common';\n\n@Injectable({ providedIn: 'root' })\nexport class PlatformService extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n private _isPlatformServer: boolean;\n private _isPlatformBrowser: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Inject(PLATFORM_ID) platformId: string) {\n super();\n this._isPlatformServer = isPlatformServer(platformId);\n this._isPlatformBrowser = isPlatformBrowser(platformId);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isPlatformServer(): boolean {\n return this._isPlatformServer;\n }\n\n public get isPlatformBrowser(): boolean {\n return this._isPlatformBrowser;\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieOptions, NativeWindowService } from '@ts-core/frontend';\nimport { CookieService } from './CookieService';\nimport { PlatformService } from '../service/PlatformService';\nimport * as _ from 'lodash';\nimport { DOCUMENT } from '@angular/common';\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: [NativeWindowService, COOKIE_OPTIONS, PlatformService],\n useFactory: cookieServiceFactory\n }\n ]\n };\n }\n}\n\nexport function cookieServiceFactory(nativeWindow: NativeWindowService, options: ICookieOptions, platform: PlatformService): CookieService {\n options = _.assign(\n {\n path: '/',\n domain: null,\n expires: null,\n secure: false,\n httpOnly: false\n },\n options\n );\n return new CookieService(nativeWindow.document, options, platform.isPlatformBrowser);\n}\n\nexport const COOKIE_OPTIONS = new InjectionToken<ICookieOptions>(`COOKIE_OPTIONS`);\n","import { ICookieOptions } from '@ts-core/frontend';\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 { 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 // Static Methods\n //\n // --------------------------------------------------------------------------\n\n public static isSizeValid(item: ISize): boolean {\n if (_.isNil(item) || item.width <= 0 || item.height <= 0) {\n return false;\n }\n return true;\n }\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected size: ISize;\n protected sensor: ResizeObserver;\n protected subject: BehaviorSubject<ISize>;\n protected element: HTMLElement;\n\n // protected sensor: ResizeSensor;\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\n // Could be undefined in ssr\n try {\n this.sensor = new ResizeObserver(this.handler2);\n this.sensor.observe(this.element);\n } catch (error) {}\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n protected handlerItem = (item: ISize) => {\n if (!ResizeManager.isSizeValid(item)) {\n return;\n }\n if (!_.isNil(this.size) && item.width === this.size.width && item.height === this.size.height) {\n return;\n }\n this.size = item;\n this.subject.next(item);\n };\n\n protected handler2 = (items: Array<ResizeObserverEntry>) => {\n if (!_.isEmpty(items)) {\n this.handlerItem(items[0].contentRect);\n }\n };\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.unobserve(this.element);\n this.sensor.disconnect();\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, numberAttribute } 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({ transform: numberAttribute })\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, EventEmitter, ElementRef, HostListener, Input, Output, numberAttribute } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ViewUtil } from '../public-api';\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 (!_.isNil(this.scrollValue)) {\n this.scrollTo(this.scrollValue);\n }\n this.isInitialized = true;\n }\n\n protected scrollTo(value: number, behavior?: ScrollBehavior): void {\n this._scrollValue = value;\n this.element.scroll({ top: value, behavior });\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({ transform: numberAttribute })\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, numberAttribute } 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({ transform: numberAttribute })\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';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[vi-auto-scroll-bottom]'\n})\nexport class AutoScrollBottomDirective extends InfiniteScrollDirective {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public behavior: ScrollBehavior = 'auto';\n\n @Output()\n public triggerChanged: EventEmitter<number> = new EventEmitter<number>();\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 //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n if (!_.isNil(this.scrollHeight)) {\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.triggerChanged.emit(this.triggerDelta);\n this.triggerDelta = 0;\n }\n };\n\n protected scrollRemain(): void {\n this.isNeedRemainScroll = false;\n this.scrollTo(this.scrollHeight - this.lastScrollHeight);\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 scrollCheck(): void {\n clearTimeout(this.triggerTimer);\n this.triggerTimer = setTimeout(this.checkTrigger, InfiniteScrollDirective.INITIALIZATION_DELAY);\n }\n\n public scrollBottom(): void {\n this.scrollTo(this.scrollHeight, this.behavior);\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-scroll-bottom')\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 this.scrollCheck();\n }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { DateUtil } from '@ts-core/common';\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.MILLISECONDS_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 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 public focusHandler(): void {\n ViewUtil.selectContent(this.element);\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, EventEmitter, Input, Output, booleanAttribute } 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 resized: EventEmitter<any> = new EventEmitter();\n\n @Input({ transform: booleanAttribute })\n public isTop: boolean = false;\n @Input({ transform: booleanAttribute })\n public isLeft: boolean = false;\n @Input({ transform: booleanAttribute })\n public isRight: boolean = false;\n @Input({ transform: booleanAttribute })\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.resized.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 { EmbeddedViewRef, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\n\nexport class StructureDirective<T = any> extends DestroyableContainer {\n //--------------------------------------------------------------------------\n //\n //\tProperties\n //\n //--------------------------------------------------------------------------\n\n protected view: EmbeddedViewRef<T>;\n protected _isNeedAdd: boolean;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected template: TemplateRef<T>, protected container: ViewContainerRef) {\n super();\n }\n\n protected commitIsNeedAddProperties(): void {\n if (this.isDestroyed) {\n return;\n }\n\n let isNeedAdd = false;\n let isNeedRemove = false;\n if (this.isNeedAdd) {\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 super.destroy();\n this.view = null;\n this.template = null;\n this.container = null;\n }\n\n //--------------------------------------------------------------------------\n //\n //\tProtected Properties\n //\n //--------------------------------------------------------------------------\n\n protected set isNeedAdd(value: boolean) {\n if (value == this._isNeedAdd) {\n return;\n }\n this._isNeedAdd = value;\n this.commitIsNeedAddProperties();\n }\n protected get isNeedAdd(): boolean {\n return this._isNeedAdd;\n }\n}\n","import { Directive, ElementRef, Input, EventEmitter, Output, numberAttribute } from '@angular/core';\nimport { DateUtil, DestroyableContainer } from '@ts-core/common';\nimport { fromEvent, debounceTime, takeUntil } from 'rxjs';\nimport * as _ from 'lodash';\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 top: EventEmitter<boolean> = new EventEmitter();\n @Output()\n public bottom: EventEmitter<boolean> = new EventEmitter();\n @Output()\n public limitExceed: EventEmitter<boolean> = new EventEmitter();\n\n private _scrollLimit: number;\n\n private element: HTMLElement;\n private isExceedLimit: boolean = false;\n\n @Input({ transform: numberAttribute })\n public delay: number = DateUtil.MILLISECONDS_SECOND / 10;\n\n @Input({ transform: numberAttribute })\n public offset: number = 50;\n\n //--------------------------------------------------------------------------\n //\n //\tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.delay = DateUtil.MILLISECONDS_SECOND / 10;\n this.element = element.nativeElement;\n\n fromEvent(this.element, 'scroll').pipe(debounceTime(this.delay), takeUntil(this.destroyed)).subscribe(this.check);\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(value);\n }\n\n let offset = !_.isNaN(this.offset) ? this.offset : 0;\n value = this.scrollValue + this.clientHeight + offset >= this.scrollHeight;\n this.bottom.next(value);\n\n value = this.scrollValue <= offset;\n this.top.next(value);\n };\n\n //--------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n //--------------------------------------------------------------------------\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n protected get scrollValue(): number {\n return this.element.scrollTop;\n }\n protected get scrollHeight() {\n return this.element.scrollHeight;\n }\n protected get clientHeight(): number {\n return this.element.clientHeight;\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 { ChangeDetectorRef, Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport { takeUntil } from 'rxjs';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTranslate',\n pure: false\n})\nexport class LanguagePipe extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static removeTags(item: string): string {\n if (_.isEmpty(item)) {\n return item;\n }\n item = item.replace(/<br\\s*[\\/]?>/g, '\\n');\n item = item.replace(/<[^>]*>/g, '');\n return item;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private lastKey: string;\n private lastParams: any;\n\n private lastValue: string;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private detection: ChangeDetectorRef, private language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(this.lastValueUpdate);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private lastValueUpdate = (): void => {\n this.lastValue = this.language.translate(this.lastKey, this.lastParams);\n this.detection.markForCheck();\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string, params?: any): string {\n if (key === this.lastKey) {\n if (params === this.lastParams || (_.isNil(params) && _.isNil(this.lastParams))) {\n return this.lastValue;\n }\n }\n\n this.lastKey = key;\n this.lastParams = params;\n this.lastValueUpdate();\n\n return this.lastValue;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n this.detection = null;\n\n this.lastKey = null;\n this.lastParams = null;\n\n this.lastValue = null;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { LanguagePipe } from '../language/LanguagePipe';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-html-title]'\n})\nexport class HTMLTitleDirective 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 ViewUtil.setProperty(this.element, 'title', LanguagePipe.removeTags(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-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, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { LanguagePipe } from '../language/LanguagePipe';\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 ViewUtil.setProperty(this.element, 'title', LanguagePipe.removeTags(this.value));\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, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { PlatformService } from '../service/PlatformService';\nimport { StructureDirective } from './StructureDirective';\n\n@Directive({\n selector: '[viIsBrowser]'\n})\nexport class IsBrowserDirective extends StructureDirective {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(templateRef: TemplateRef<any>, container: ViewContainerRef, platform: PlatformService) {\n super(templateRef, container);\n this.isNeedAdd = platform.isPlatformBrowser;\n }\n}\n","import { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { PlatformService } from '../service/PlatformService';\nimport { StructureDirective } from './StructureDirective';\n\n@Directive({\n selector: '[viIsServer]'\n})\nexport class IsServerDirective extends StructureDirective {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(templateRef: TemplateRef<any>, container: ViewContainerRef, platform: PlatformService) {\n super(templateRef, container);\n this.isNeedAdd = platform.isPlatformServer;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\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';\nimport { PromiseHandler } from '@ts-core/common';\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';\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, booleanAttribute } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs';\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({ transform: booleanAttribute })\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';\nimport { takeUntil } from 'rxjs';\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';\nimport { takeUntil } from 'rxjs';\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, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { LanguageService } from '@ts-core/frontend';\nimport { takeUntil } from 'rxjs';\nimport { StructureDirective } from '../directive/StructureDirective';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[viTranslateHas]'\n})\nexport class LanguageHasDirective<T = any> extends StructureDirective<T> {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _viTranslateHas: string;\n protected _isOnlyIfNotEmpty: boolean = true;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(template: TemplateRef<T>, container: ViewContainerRef, protected language: LanguageService) {\n super(template, container);\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 this.isNeedAdd = !_.isNil(this.viTranslateHas) && this.language.isHasTranslation(this.viTranslateHas, this.viTranslateHasIsOnlyIfNotEmpty);\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 this._viTranslateHas = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('viTranslateHas')\n public set viTranslateHas(value: string) {\n if (value === this._viTranslateHas) {\n return;\n }\n this._viTranslateHas = value;\n this.check();\n }\n public get viTranslateHas(): string {\n return this._viTranslateHas;\n }\n\n @Input('viTranslateHasIsOnlyIfNotEmpty')\n public set viTranslateHasIsOnlyIfNotEmpty(value: boolean) {\n if (value === this._isOnlyIfNotEmpty) {\n return;\n }\n this._isOnlyIfNotEmpty = value;\n this.check();\n }\n public get viTranslateHasIsOnlyIfNotEmpty(): boolean {\n return this._isOnlyIfNotEmpty;\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieService } from '@ts-core/frontend';\nimport { ILanguageServiceOptions, LanguageService } from '@ts-core/frontend';\nimport { CookieService } from '../cookie/CookieService';\nimport { LanguagePipe } from './LanguagePipe';\nimport { LanguagePipePure } from './LanguagePipePure';\nimport { LanguageResolver } from './LanguageResolver';\nimport { LanguageDirective } from './LanguageDirective';\nimport { LanguagePipeHas } from './LanguagePipeHas';\nimport { LanguagePipeHasPure } from './LanguagePipeHasPure';\nimport { LanguageHasDirective } from './LanguageHasDirective';\nimport { CookieModule } from '../cookie/CookieModule';\nimport * as _ from 'lodash';\n\nlet declarations = [LanguagePipe, LanguagePipePure, LanguagePipeHas, LanguagePipeHasPure, LanguageHasDirective, LanguageDirective];\n\n@NgModule({\n imports: [CookieModule],\n exports: declarations,\n declarations\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 };\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 { LoadableEvent, Loadable, LoadableStatus } from '@ts-core/common';\nimport { ExtendedError } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common';\nimport { TransportNoConnectionError, TransportTimeoutError } from '@ts-core/common';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs';\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 _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<any, number>(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<any, number>(error);\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._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<any, number>(error);\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 !_.isNil(this.sid) || !_.isNil(this.getSavedSid());\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n this.reset();\n super.destroy();\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 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';\n\nexport class LoginRequireResolver<U extends LoginBaseService = LoginBaseService, V = void> implements Resolve<V> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected login: U) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public resolve(...params): Promise<V> {\n if (this.isLoggedIn()) {\n return Promise.resolve(null);\n }\n\n let promise = PromiseHandler.create<null>();\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';\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(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree | Promise<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';\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(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): 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);\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","import { DestroyableContainer } from '@ts-core/common';\nimport { CookieService } from '../cookie/CookieService';\nimport { LocalStorageService } from '../storage/LocalStorageService';\nimport { IValueStorage } from './IValueStorage';\nimport * as _ from 'lodash';\n\nexport class ValueStorage<T = string> extends DestroyableContainer implements IValueStorage<T> {\n //--------------------------------------------------------------------------\n //\n // \tProperties\n //\n //--------------------------------------------------------------------------\n\n protected _name: string;\n\n //--------------------------------------------------------------------------\n //\n // \tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(name: string, protected storage: LocalStorageService, protected cookies: CookieService) {\n super();\n this._name = name;\n }\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected serialize(value: string): T {\n return value as T;\n }\n\n protected deserialize(value: T): string {\n return value as string;\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public get(defaultValue?: T): T {\n if (this.isDestroyed) {\n return null;\n }\n let item = null;\n if (this.storage.has(this.name)) {\n item = this.storage.get(this.name);\n } else if (this.cookies.has(this.name)) {\n item = this.cookies.get(this.name);\n }\n return !_.isNil(item) ? this.serialize(item) : defaultValue;\n }\n\n public has(): boolean {\n if (this.isDestroyed) {\n return false;\n }\n return this.storage.has(this.name) || this.cookies.has(this.name);\n }\n\n public set(value: T): T {\n if (this.isDestroyed) {\n return null;\n }\n let item = !_.isNil(value) ? this.deserialize(value) : null;\n this.cookies.put(this.name, item);\n this.storage.set(this.name, item);\n return value;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.cookies = null;\n this.storage = null;\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n //--------------------------------------------------------------------------\n\n public get name(): string {\n return this._name;\n }\n}\n","import { CookieService } from '../cookie/CookieService';\nimport { ValueStorage } from '../storage/ValueStorage';\nimport { LocalStorageService } from '../storage/LocalStorageService';\nimport * as _ from 'lodash';\n\nexport class LoginTokenStorage extends ValueStorage {\n //--------------------------------------------------------------------------\n //\n // \tProperties\n //\n //--------------------------------------------------------------------------\n\n public static TOKEN_KEY = 'sid';\n\n //--------------------------------------------------------------------------\n //\n // \tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(local: LocalStorageService, cookies: CookieService) {\n super(LoginTokenStorage.TOKEN_KEY, local, cookies);\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';\nimport { LanguageService } from '@ts-core/frontend';\nimport { filter, takeUntil } from 'rxjs';\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 declare 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';\nimport { LanguageService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { IListItem } from './IListItem';\nimport { FilterableMapCollection } from '@ts-core/common';\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';\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\n protected commitSelectedIndexProperties(): void {\n this.selectedItem = !_.isNil(this.selectedIndex) ? _.find(this.collection, item => item.sortIndex === this.selectedIndex) : null;\n }\n\n protected selectIndexOrData(indexOrDataToSelect: number | V): void {\n if (_.isNumber(indexOrDataToSelect)) {\n this.selectedIndex = indexOrDataToSelect;\n } else {\n this.selectedItem = _.find(this.collection, item => item.data === indexOrDataToSelect);\n }\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 this.selectIndexOrData(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 { LanguageService } from '@ts-core/frontend';\nimport { SelectListItems } from './SelectListItems';\nimport { ISelectListItem } from './ISelectListItem';\nimport { RouterBaseService } from '../../service/RouterBaseService';\nimport { filter, takeUntil } from 'rxjs';\nimport * as _ from 'lodash';\n\nexport class RouterSelectListItems<U = string> extends SelectListItems<ISelectListItem<U>, U> {\n //--------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n //--------------------------------------------------------------------------\n\n public isDisabled: boolean;\n\n //--------------------------------------------------------------------------\n //\n // \tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(protected router: RouterBaseService, language: LanguageService) {\n super(language, true);\n this.changed\n .pipe(\n filter(() => !this.isDisabled),\n takeUntil(this.destroyed)\n )\n .subscribe(item => this.setFragment(item));\n this.router.completed\n .pipe(\n filter(() => !this.isDisabled),\n takeUntil(this.destroyed)\n )\n .subscribe(() => this.setData());\n }\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected setData(): void {\n let item = this.getRouterSelectedItem();\n this.selectedItem = !_.isNil(item) ? item : _.first(this.collection);\n }\n\n protected setFragment(item: ISelectListItem<U>): void {\n let index = _.indexOf(this.collection, item);\n this.router.setFragment(index > 0 ? item.data.toString() : null);\n }\n\n protected getRouterSelectedItem(): ISelectListItem<U> {\n return _.find(this.collection, { data: this.router.getFragment() }) as ISelectListItem<U>;\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public complete(): void {\n let item = this.getRouterSelectedItem();\n super.complete(!_.isNil(item) ? item.data : 0);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.router = null;\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 { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { PrettifyPipe } from './PrettifyPipe';\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 return !_.isNil(value) ? _.camelCase(value) : PrettifyPipe.EMPTY_SYMBOL;\n }\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';\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 //\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';\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';\nimport { PrettifyPipe } from './PrettifyPipe';\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 return !_.isEmpty(value) ? value.charAt(0).toUpperCase() + value.slice(1) : PrettifyPipe.EMPTY_SYMBOL;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { PrettifyPipe } from './PrettifyPipe';\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 return !_.isEmpty(value) ? _.truncate(value, { length: maxLength }) : PrettifyPipe.EMPTY_SYMBOL;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DateUtil } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { FinancePipe } from './FinancePipe';\nimport { PrettifyPipe } from './PrettifyPipe';\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 PrettifyPipe.EMPTY_SYMBOL;\n }\n if (_.isNil(format)) {\n format = TimePipe.DEFAULT_FORMAT;\n }\n return FinancePipe.format(milliseconds / DateUtil.MILLISECONDS_SECOND, format);\n }\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';\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 { DatePipe } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend';\nimport { takeUntil } from 'rxjs';\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 {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationExtras,\n NavigationStart,\n Router,\n UrlTree\n} from '@angular/router';\nimport { ObservableData, Loadable, LoadableEvent, LoadableStatus } from '@ts-core/common';\nimport { NativeWindowService } from '@ts-core/frontend';\nimport { Subject, takeUntil } from 'rxjs';\nimport * as _ from 'lodash';\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 _route: ActivatedRoute, 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?: ActivatedRouteSnapshot, defaultValue?: string): string {\n if (_.isNil(snapshot)) {\n snapshot = this.route.snapshot;\n }\n if (_.isNil(defaultValue)) {\n defaultValue = null;\n }\n return !_.isNil(snapshot.fragment) ? snapshot.fragment : defaultValue;\n }\n\n public hasFragment(snapshot?: ActivatedRouteSnapshot): boolean {\n return !_.isNil(this.getFragment(snapshot));\n }\n\n public async setFragment(value: string): Promise<boolean> {\n return value !== this.getFragment() ? this.applyExtras({ fragment: value }) : false;\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 route(): ActivatedRoute {\n return this._route;\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 { Injectable } from '@angular/core';\nimport {\n NoNewVersionDetectedEvent,\n SwUpdate,\n UnrecoverableStateEvent,\n VersionDetectedEvent,\n VersionEvent,\n VersionInstallationFailedEvent,\n VersionReadyEvent\n} from '@angular/service-worker';\nimport { Loadable, LoadableEvent, LoadableStatus, Logger, ObservableData } from '@ts-core/common';\nimport { takeUntil, filter } from 'rxjs';\nimport * as _ from 'lodash';\n\n@Injectable({ providedIn: 'root' })\nexport class ServiceWorkerService extends Loadable {\n //--------------------------------------------------------------------------\n //\n // \tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(protected updates: SwUpdate, protected logger: Logger) {\n super();\n\n updates.unrecoverable.pipe(takeUntil(this.destroyed)).subscribe(event => this.unrecoverableHandler(event));\n updates.versionUpdates\n .pipe(\n filter(event => event.type === 'VERSION_READY'),\n takeUntil(this.destroyed)\n )\n .subscribe(event => this.readyHandler(event as VersionReadyEvent));\n updates.versionUpdates\n .pipe(\n filter(event => event.type === 'VERSION_DETECTED'),\n takeUntil(this.destroyed)\n )\n .subscribe(event => this.detectedHandler(event as VersionDetectedEvent));\n updates.versionUpdates\n .pipe(\n filter(event => event.type === 'NO_NEW_VERSION_DETECTED'),\n takeUntil(this.destroyed)\n )\n .subscribe(event => this.noNewVersionDetectedHandler(event as NoNewVersionDetectedEvent));\n updates.versionUpdates\n .pipe(\n filter(event => event.type === 'VERSION_INSTALLATION_FAILED'),\n takeUntil(this.destroyed)\n )\n .subscribe(event => this.installationFailedHandler(event as VersionInstallationFailedEvent));\n }\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected start(status: LoadableStatus): void {\n this.status = status;\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n }\n\n protected finish(status: LoadableStatus): void {\n this.status = status;\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n }\n\n //--------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n //--------------------------------------------------------------------------\n\n protected async readyHandler(event: VersionReadyEvent): Promise<void> {\n let status = null;\n try {\n await this.updates.activateUpdate();\n status = LoadableStatus.LOADED;\n } catch (error) {\n status = LoadableStatus.ERROR;\n this.logger.error(`Unable to activate version: ${error}`);\n } finally {\n this.finish(status);\n }\n }\n\n protected async unrecoverableHandler(event: UnrecoverableStateEvent): Promise<void> {\n this.finish(LoadableStatus.ERROR);\n this.logger.error(`Unable to update version: ${event.reason}`);\n }\n\n protected async detectedHandler(event: VersionDetectedEvent): Promise<void> {\n this.start(LoadableStatus.LOADING);\n }\n\n protected async installationFailedHandler(event: VersionInstallationFailedEvent): Promise<void> {\n this.finish(LoadableStatus.ERROR);\n }\n\n protected async noNewVersionDetectedHandler(event: NoNewVersionDetectedEvent): Promise<void> {\n this.finish(LoadableStatus.LOADED);\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public activateUpdate(): Promise<boolean> {\n return this.updates.activateUpdate();\n }\n\n public checkForUpdate(): Promise<boolean> {\n return this.updates.checkForUpdate();\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n //--------------------------------------------------------------------------\n\n public get isEnabled(): boolean {\n return this.updates.isEnabled;\n }\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 = IRouterDeactivatable> implements CanDeactivate<T> {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public canDeactivate(\n component: T,\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 { Directive, ElementRef, Input, RendererStyleFlags2 } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs';\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.stylePropertiesCheck());\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';\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 { Directive, ElementRef, HostListener, Input, booleanAttribute } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs';\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 _source: 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 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 public 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.setDefaultSourceProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setSourceProperties(): void {\n this.source = this.getSource(this.getSourceId());\n }\n\n protected setDefaultSourceProperties(): void {\n this.source = this.getSource(this.getDefaultSourceId());\n }\n\n protected getSourceId(): string {\n if (_.isNil(this.name) || _.isNil(this.theme) || _.isNil(this.theme.theme)) {\n return null;\n }\n return this.name + _.capitalize(this.theme.theme.name);\n }\n\n protected getDefaultSourceId(): string {\n return this.themeAsset.getName(this.name, this.isIgnoreTheme);\n }\n\n protected abstract addSourceProperties(): 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 //\tProtected Properties\n //\n // --------------------------------------------------------------------------\n\n protected get source(): string {\n return this._source;\n }\n protected set source(value: string) {\n if (value === this._source) {\n return;\n }\n this._source = value;\n if (!_.isNil(value)) {\n this.addSourceProperties();\n } else {\n this.removeSourceProperties();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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({ transform: booleanAttribute })\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 this._name = value;\n this.setSourceProperties();\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 this.setSourceProperties();\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend';\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 this.isBackground = true;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected addSourceProperties(): 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 // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-theme-background')\n public set name(value: string) {\n super.name = value;\n }\n public get name(): string {\n return super.name;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend';\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 this.isImage = true;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected addSourceProperties(): void {\n this.element.src = this.source;\n }\n protected removeSourceProperties(): void {\n this.element.src = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-theme-image')\n public set name(value: string) {\n super.name = value;\n }\n public get name(): string {\n return super.name;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend';\nimport { ThemeAssetDirective } from './ThemeAssetDirective';\n\n@Directive({\n selector: '[vi-theme-icon]'\n})\nexport class ThemeAssetIconDirective 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 addSourceProperties(): void {\n this.element.src = this.source;\n }\n protected removeSourceProperties(): void {\n this.element.src = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-theme-icon')\n public set name(value: string) {\n super.name = value;\n }\n public get name(): string {\n return super.name;\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeService } from '@ts-core/frontend';\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 { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieService, NativeWindowService } from '@ts-core/frontend';\nimport { IThemeServiceOptions, ThemeService, ThemeAssetService } from '@ts-core/frontend';\nimport { CookieModule } from '../cookie/CookieModule';\nimport { CookieService } from '../cookie/CookieService';\nimport { ThemeAssetBackgroundDirective } from './ThemeAssetBackgroundDirective';\nimport { ThemeAssetImageDirective } from './ThemeAssetImageDirective';\nimport { ThemeAssetIconDirective } from './ThemeAssetIconDirective';\nimport { ThemeToggleDirective } from './ThemeToggleDirective';\nimport { ThemeStyleDirective } from './ThemeStyleDirective';\nimport { ThemeStyleHoverDirective } from './ThemeStyleHoverDirective';\nimport * as _ from 'lodash';\n\nlet declarations = [\n ThemeToggleDirective,\n ThemeAssetImageDirective,\n ThemeAssetIconDirective,\n ThemeAssetBackgroundDirective,\n ThemeStyleDirective,\n ThemeStyleHoverDirective\n];\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: [NativeWindowService, CookieService, THEME_OPTIONS],\n useFactory: themeServiceFactory\n },\n {\n provide: ThemeAssetService,\n deps: [ThemeService, NativeWindowService],\n useFactory: themeAssetServiceFactory\n }\n ]\n };\n }\n}\n\nexport function themeServiceFactory(nativeWindow: NativeWindowService, cookie: ICookieService, options?: IThemeServiceOptions): ThemeService {\n if (!_.isNil(options) && _.isNil(options.service)) {\n options.service = cookie;\n }\n return new ThemeService(options, nativeWindow.document);\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 { 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';\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(data: any): void {\n this._user = this.createUser(data);\n }\n\n protected deinitializeUser(): void {\n this._user = null;\n }\n\n protected loginedHandler(): void {\n this.initializeUser(this.login.loginData);\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 { Observable } from 'rxjs';\nimport { Destroyable } from '@ts-core/common';\nimport { IWindowContent } from './IWindowContent';\nimport { IWindowConfig } from './IWindowConfig';\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: IWindowConfig<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 = 'MOVED',\n RESIZED = 'RESIZED',\n DISABLED_CHANGED = 'DISABLED_CHANGED',\n MINIMIZED_CHANGED = 'MINIMIZED_CHANGED',\n IS_ON_TOP_CHANGED = 'IS_ON_TOP_CHANGED',\n\n EXPAND = 'EXPAND',\n SET_ON_TOP = 'SET_ON_TOP'\n}\n","export interface IWindowConfig<T = any> {\n id: string;\n isModal: boolean;\n isExpandable: boolean;\n isResizeable: boolean;\n isMinimizable: boolean;\n isDisableClose: boolean;\n isContentDragable: boolean;\n\n x: number;\n y: number;\n elementMinX: number;\n elementMaxX: number;\n elementMinY: number;\n elementMaxY: number;\n elementMinWidth: number;\n elementMaxWidth: number;\n elementMinHeight: number;\n elementMaxHeight: number;\n\n width: string;\n defaultWidth: number;\n defaultMinWidth: number;\n defaultMaxWidth: number;\n\n height: string;\n defaultHeight: number;\n defaultMinHeight: number;\n defaultMaxHeight: number;\n\n paddingTop: number;\n paddingLeft: number;\n paddingRight: number;\n paddingBottom: number;\n\n propertiesId: string;\n verticalAlign: WindowAlign;\n horizontalAlign: WindowAlign;\n\n data?: T;\n autoFocus: string;\n restoreFocus: boolean;\n delayFocusTrap: boolean;\n}\n\nexport enum WindowAlign {\n START = 'START',\n CENTER = 'CENTER',\n END = 'END'\n}\n","import * as _ from 'lodash';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { IWindowConfig, WindowAlign } from './IWindowConfig';\nimport { ViewUtil } from '../util/ViewUtil';\n\nexport abstract class WindowBase<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n protected static parseX<T>(value: number, config: IWindowConfig<T>): number {\n value = Math.max(value, config.elementMinX);\n value = Math.min(value, config.elementMaxX);\n return value;\n }\n\n protected static parseY<T>(value: number, config: IWindowConfig<T>): number {\n value = Math.max(value, config.elementMinY);\n value = Math.min(value, config.elementMaxY);\n return value;\n }\n\n protected static parseWidth<T>(value: number, config: IWindowConfig<T>): number {\n value = Math.max(value, config.elementMinWidth);\n value = Math.min(value, config.elementMaxWidth);\n return value;\n }\n\n protected static parseHeight<T>(value: number, config: IWindowConfig<T>): number {\n value = Math.max(value, config.elementMinHeight);\n value = Math.min(value, config.elementMaxHeight);\n return value;\n }\n\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(): IWindowConfig<T>;\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\n protected commitPositionProperties(): void {}\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 = WindowBase.parseWidth(value, this.getConfig());\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 = WindowBase.parseWidth(value, this.getConfig());\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 = WindowBase.parseX(value, this.getConfig());\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 = WindowBase.parseY(value, this.getConfig());\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 * as _ from 'lodash';\nimport { IDestroyable } from '@ts-core/common';\nimport { IWindowConfig, WindowAlign } from './IWindowConfig';\nimport { ViewUtil } from '../util/ViewUtil';\n\nexport class WindowConfig<T = any> implements IWindowConfig<T>, IDestroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public id: string;\n public isModal: boolean = false;\n public isExpandable: boolean = false;\n public isResizeable: boolean = false;\n public isMinimizable: boolean = false;\n public isDisableClose: boolean = false;\n public isContentDragable: boolean = true;\n\n public x: number = NaN;\n public y: number = NaN;\n public data: T;\n public propertiesId: string;\n\n public width: string;\n public minWidth: number;\n public maxWidth: number;\n public defaultWidth: number = NaN;\n public defaultMinWidth: number = NaN;\n public defaultMaxWidth: number = NaN;\n\n public height: string;\n public minHeight: number;\n public maxHeight: number;\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 autoFocus: string;\n public restoreFocus: boolean;\n public delayFocusTrap: boolean;\n\n public verticalAlign: WindowAlign;\n public horizontalAlign: WindowAlign;\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 this.isModal = isModal;\n this.isResizeable = isResizeable;\n if (!_.isNaN(width)) {\n this.defaultWidth = width;\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 destroy(): void {\n if (!_.isNil(this.data) && IDestroyable.instanceOf(this.data)) {\n this.data.destroy();\n }\n this.data = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\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 type WindowConfigOptions<T = any> = { [P in keyof WindowConfig<T>]?: any };\n","import { ObservableData, ClassType, Destroyable } from '@ts-core/common';\nimport { WindowConfigOptions } from './WindowConfig';\nimport { IWindow } from './IWindow';\nimport { Observable } from 'rxjs';\nimport { IWindowContent } from './IWindowContent';\nimport { IWindowConfig } from './IWindowConfig';\nimport { IQuestion, IQuestionOptions } from '../question/IQuestion';\nimport { WindowServiceEvent } from './WindowServiceEvent';\n\nexport abstract class WindowService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract open<U extends IWindowContent<T>, T>(component: ClassType<U>, config: IWindowConfig<T>): U;\n\n public abstract get<T>(value: WindowId<T>): IWindowContent<T>;\n\n public abstract has<T>(value: WindowId<T>): boolean;\n\n public abstract setOnTop<T>(value: WindowId<T>): boolean;\n\n public abstract close<T>(value: WindowId<T>): void;\n\n public abstract closeAll(): void;\n\n // --------------------------------------------------------------------------\n //\n // \tAdditional Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion;\n\n public abstract question(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public abstract get events(): Observable<ObservableData<WindowServiceEvent, IWindow>>;\n\n public abstract get windows(): Map<IWindowConfig, IWindowContent>;\n}\n\nexport type WindowId<T> = string | IWindowConfig<T>;\n","export enum WindowServiceEvent {\n OPEN_STARTED = 'OPEN_STARTED',\n OPENED = 'OPENED',\n OPEN_FINISHED = 'OPEN_FINISHED',\n\n CLOSED = 'CLOSED',\n SETTED_ON_TOP = 'SETTED_ON_TOP'\n}\n","import { AfterViewInit, ElementRef, ViewContainerRef, Inject, Optional, Component, InjectionToken, Input, booleanAttribute } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { IWindow, WindowEvent } from './IWindow';\nimport { IWindowConfig } from './IWindowConfig';\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 if (_.isNil(this.window)) {\n super.ngOnDestroy();\n }\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 @Input({ transform: booleanAttribute })\n public set isDisabled(value: boolean) {\n if (!_.isNil(this.window)) {\n this.window.isDisabled = value;\n }\n }\n public get isDisabled(): boolean {\n return !_.isNil(this.window) ? this.window.isDisabled : false;\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(): IWindowConfig<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 { ExtendedError } from '@ts-core/common';\nimport * as _ from 'lodash';\n\nexport class WindowClosedError extends ExtendedError<void, number> {\n // --------------------------------------------------------------------------\n //\n // Static Methods\n //\n // --------------------------------------------------------------------------\n\n public static CODE = ExtendedError.DEFAULT_ERROR_CODE;\n public static MESSAGE = 'WINDOW_CLOSED';\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(message: string = WindowClosedError.MESSAGE, code: number = WindowClosedError.CODE) {\n super(message, code);\n }\n}\n","import { IDestroyable } from '@ts-core/common';\nimport { INotificationContent } from './INotificationContent';\nimport { INotificationConfig } from './INotificationConfig';\nimport { Observable } from 'rxjs';\n\nexport abstract class INotification<T = any> implements IDestroyable {\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: INotificationConfig<T>;\n readonly content: INotificationContent<T>;\n}\n\nexport enum NotificationEvent {\n REMOVED = 'REMOVED'\n}\n","import { AfterViewInit, Component, Input, ViewContainerRef } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { Observable } from 'rxjs';\nimport { INotification } from './INotification';\nimport { INotificationConfig } from './INotificationConfig';\nimport { WindowEvent } from '../window/IWindow';\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: INotificationConfig<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: INotificationConfig<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(): INotificationConfig<T> {\n return this._config;\n }\n}\n","import { WindowConfig } from '../window/WindowConfig';\nimport { INotificationConfig } from './INotificationConfig';\n\nexport class NotificationConfig<T = any> extends WindowConfig<T> implements INotificationConfig<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;\n public isRemoveAfterClose: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(data?: T) {\n super();\n this.data = data;\n this.isModal = false;\n this.closeDuration = NaN;\n this.isRemoveAfterClose = false;\n }\n}\n\nexport type NotificationConfigOptions<T = any> = { [P in keyof NotificationConfig<T>]?: any };\n","import { ObservableData, ClassType, Destroyable } from '@ts-core/common';\nimport { IQuestion, IQuestionOptions } from '../question/IQuestion';\nimport { INotification } from './INotification';\nimport { INotificationConfig } from './INotificationConfig';\nimport { INotificationContent } from './INotificationContent';\nimport { NotificationConfigOptions } from './NotificationConfig';\nimport { NotificationServiceEvent } from './NotificationServiceEvent';\nimport { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nexport abstract class NotificationService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract open<U extends INotificationContent<T>, T>(component: ClassType<U>, config: INotificationConfig<T>): U;\n\n // --------------------------------------------------------------------------\n //\n // \tHelp Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract get<T>(value: NotificationId<T>): INotificationConfig<T>;\n\n public abstract has<T>(value: NotificationId<T>): boolean;\n\n public abstract remove<T>(value: NotificationId<T>): void;\n\n public abstract closeAll(): void;\n\n public abstract close<T>(value: NotificationId<T>): INotification<T>;\n\n // --------------------------------------------------------------------------\n //\n // \tAdditional Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: NotificationConfigOptions): IQuestion;\n\n public abstract question(\n translationId?: string,\n translation?: any,\n questionOptions?: IQuestionOptions,\n configOptions?: NotificationConfigOptions\n ): IQuestion;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public abstract get events(): Observable<ObservableData<NotificationServiceEvent, INotificationConfig | INotification>>;\n\n public abstract get configs(): Array<INotificationConfig>;\n\n public abstract get closedConfigs(): Array<INotificationConfig>;\n\n public abstract get notifications(): Map<INotificationConfig, INotificationContent>;\n}\n\nexport type NotificationId<T> = string | INotificationConfig<T> | NotificationConfigOptions<T>;\n","export enum NotificationServiceEvent {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n ADDED = 'ADDED',\n REMOVED = 'REMOVED'\n}\n","import { ObservableData, ClassType, Destroyable } from '@ts-core/common';\nimport { WindowConfigOptions } from '../window/WindowConfig';\nimport { IWindow } from '../window/IWindow';\nimport { Observable } from 'rxjs';\nimport { IWindowContent } from '../window/IWindowContent';\nimport { IWindowConfig } from '../window/IWindowConfig';\nimport { IQuestion, IQuestionOptions } from '../question/IQuestion';\nimport { WindowServiceEvent } from '../window/WindowServiceEvent';\nimport { WindowId } from '../window/WindowService';\n\nexport abstract class BottomSheetService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract open<U extends IWindowContent<T>, T>(component: ClassType<U>, config: IWindowConfig<T>): U;\n\n public abstract get<T>(value: WindowId<T>): IWindowContent<T>;\n\n public abstract has<T>(value: WindowId<T>): boolean;\n\n public abstract close<T>(value: WindowId<T>): void;\n\n public abstract closeAll(): void;\n\n // --------------------------------------------------------------------------\n //\n // \tAdditional Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion;\n\n public abstract question(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion;\n\n public abstract setOnTop<T>(value: WindowId<T>): boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public abstract get window(): IWindow;\n\n public abstract get events(): Observable<ObservableData<WindowServiceEvent, IWindow>>;\n}\n","import { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\n\nexport class LocalStorageService extends DestroyableContainer {\n //--------------------------------------------------------------------------\n //\n // \tProperties\n //\n //--------------------------------------------------------------------------\n\n protected storage: Storage;\n\n //--------------------------------------------------------------------------\n //\n // \tConstructor\n //\n //--------------------------------------------------------------------------\n\n constructor(storage: Storage) {\n super();\n this.storage = storage;\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public get(key: string, defaultValue?: string): string {\n if (_.isNil(this.storage)) {\n return null;\n }\n return this.has(key) ? this.storage.getItem(key) : defaultValue;\n }\n\n public has(key: string): boolean {\n if (_.isNil(this.storage)) {\n return false;\n }\n return !_.isNil(this.storage.getItem(key));\n }\n\n public set(key: string, value: string): void {\n if (_.isNil(this.storage)) {\n return;\n }\n if (!_.isNil(value)) {\n this.storage.setItem(key, value);\n } else {\n this.remove(key);\n }\n }\n\n public remove(key: string): void {\n if (!_.isNil(this.storage)) {\n this.storage.removeItem(key);\n }\n }\n\n public clear(): void {\n if (!_.isNil(this.storage)) {\n this.storage.clear();\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.storage = null;\n }\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Properties\n //\n //--------------------------------------------------------------------------\n\n protected get length(): number {\n return this.storage.length;\n }\n}\n","import { DateUtil } from '@ts-core/common';\nimport { ValueStorage } from './ValueStorage';\nimport * as _ from 'lodash';\n\nexport class DateValueStorage extends ValueStorage<Date> {\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public defaultExpirationDelta: number = 0;\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected serialize(value: string): Date {\n return new Date(value);\n }\n\n protected deserialize(value: Date): string {\n return value.toISOString();\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public isMore(item: Date): boolean {\n return this.has() ? this.get().getTime() > item.getTime() : false;\n }\n\n public isLess(item: Date): boolean {\n return this.has() ? this.get().getTime() < item.getTime() : false;\n }\n\n public isEqual(item: Date): boolean {\n return this.has() ? this.get().getTime() === item.getTime() : false;\n }\n\n public isExpired(item: Date): boolean {\n return this.has() ? this.isLess(item) : true;\n }\n\n public isExpiredFromNow(delta?: number): boolean {\n if (_.isNil(delta)) {\n delta = this.defaultExpirationDelta;\n }\n return this.isExpired(DateUtil.getDate(Date.now() + delta));\n }\n}\n","import { ValueStorage } from './ValueStorage';\nimport * as _ from 'lodash';\n\nexport class BooleanValueStorage extends ValueStorage<boolean> {\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected serialize(value: string): boolean {\n return value === 'true';\n }\n\n protected deserialize(value: boolean): string {\n return value ? 'true' : 'false';\n }\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';\nimport { MapCollection } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common';\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';\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';\nimport { TransportLocal } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { LazyModuleLoader } from '../module/LazyModuleLoader';\nimport { ILogger } from '@ts-core/common';\nimport { ITransportLazyModuleData } from './TransportLazyModule';\nimport { TransportLazyModuleLoadedEvent } from './TransportLazyModuleLoadedEvent';\n\nexport class TransportLazy extends TransportLocal {\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(logger: ILogger, protected loader: LazyModuleLoader<ITransportLazyModuleData>, settings?: ITransportSettings) {\n super(logger, settings, null);\n this.getDispatcher<TransportLazyModuleLoadedEvent<ITransportLazyModuleData>>(TransportLazyModuleLoadedEvent.NAME).subscribe(event =>\n this.moduleLoadedHandler(event.data)\n );\n this.logEventFilters.push(item => item.name !== TransportLazyModuleLoadedEvent.NAME);\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 commandResponseRequestDispatch<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 return super.commandResponseRequestDispatch(command, options, isNeedReply);\n }\n\n protected async eventRequestExecute<U>(event: ITransportEvent<U>): Promise<void> {\n let item = this.getModuleByEvent(event.name);\n if (!_.isNil(this.loader) && !_.isNil(item)) {\n this.loader.loadIfNeed(item.id).then(() => super.eventRequestExecute(event));\n } else {\n super.eventRequestExecute(event);\n }\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 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';\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","import { APP_INITIALIZER, InjectionToken, ModuleWithProviders, NgModule, Renderer2, RendererFactory2 } from '@angular/core';\nimport { ILogger, Logger, LoggerLevel } from '@ts-core/common';\nimport { ICookieOptions } from '@ts-core/frontend';\nimport { ILanguageServiceOptions } from '@ts-core/frontend';\nimport { DefaultLogger } from '@ts-core/frontend';\nimport { LoadingService, NativeWindowService } from '@ts-core/frontend';\nimport { IThemeServiceOptions } from '@ts-core/frontend';\nimport { AssetModule } from './asset/AssetModule';\nimport { CookieModule } from './cookie/CookieModule';\nimport { CanDeactivateGuard } from './service/route/CanDeactivateGuard';\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 { HTMLTitleDirective } from './directive/HTMLTitleDirective';\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 { 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 { IsServerDirective } from './directive/IsServerDirective';\nimport { IsBrowserDirective } from './directive/IsBrowserDirective';\nimport { DOCUMENT } from '@angular/common';\nimport { PlatformService } from './service/PlatformService';\nimport { ViewUtil } from './util/ViewUtil';\nimport { CookieService } from './cookie/CookieService';\nimport { LoginTokenStorage } from './login/LoginTokenStorage';\nimport { LocalStorageService } from './storage/LocalStorageService';\nimport * as _ from 'lodash';\n\nlet imports = [CookieModule, ThemeModule, LanguageModule, AssetModule];\n\nlet declarations = [\n TimePipe,\n FinancePipe,\n SanitizePipe,\n TruncatePipe,\n PrettifyPipe,\n CamelCasePipe,\n StartCasePipe,\n NgModelErrorPipe,\n\n IsServerDirective,\n IsBrowserDirective,\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 InfiniteScrollDirective,\n HTMLTitleDirective,\n HTMLContentTitleDirective,\n AutoScrollBottomDirective,\n AspectRatioResizeDirective\n];\n\nlet exports = [...imports, ...declarations];\n\n@NgModule({\n imports,\n declarations,\n exports\n})\nexport class VIModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: IVIOptions): ModuleWithProviders<VIModule> {\n return {\n ngModule: VIModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n deps: [NativeWindowService, RendererFactory2],\n useFactory: initializerFactory,\n multi: true\n },\n\n LoadingService,\n PlatformService,\n CanDeactivateGuard,\n\n { provide: VI_ANGULAR_OPTIONS, useValue: options || {} },\n { provide: Logger, deps: [VI_ANGULAR_OPTIONS], useFactory: loggerServiceFactory },\n { provide: NativeWindowService, deps: [DOCUMENT], useFactory: nativeWindowServiceFactory },\n { provide: LocalStorageService, deps: [NativeWindowService], useFactory: localStorageServiceFactory },\n { provide: LoginTokenStorage, deps: [LocalStorageService, CookieService], useFactory: loginTokenStorageServiceFactory },\n\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 IVIOptions extends ICookieOptions {\n loggerLevel?: LoggerLevel;\n themeOptions?: IThemeServiceOptions;\n languageOptions?: ILanguageServiceOptions;\n}\n\nexport function initializerFactory(nativeWindow: NativeWindowService, rendererFactory2: RendererFactory2): ViewUtil {\n ViewUtil.renderer = rendererFactory2.createRenderer(null, null);\n ViewUtil.document = nativeWindow.document;\n return () => Promise.resolve();\n}\n\nexport function loggerServiceFactory(options: IVIOptions): ILogger {\n return new DefaultLogger(!_.isNil(options.loggerLevel) ? options.loggerLevel : LoggerLevel.ALL);\n}\n\nexport function nativeWindowServiceFactory(document: Document): NativeWindowService {\n return new NativeWindowService(document);\n}\n\nexport function localStorageServiceFactory(nativeWindow: NativeWindowService): LocalStorageService {\n return new LocalStorageService(nativeWindow.window.localStorage);\n}\n\nexport function loginTokenStorageServiceFactory(local: LocalStorageService, cookies: CookieService): LoginTokenStorage {\n return new LoginTokenStorage(local, cookies);\n}\n\nexport const VI_ANGULAR_OPTIONS = new InjectionToken<IVIOptions>(`VI_ANGULAR_OPTIONS`);\n","//\nexport * from './application/ApplicationBaseComponent';\nexport * from './application/ApplicationComponent';\nexport * from './application/MessageBaseComponent';\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//\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/StructureDirective';\nexport * from './directive/ScrollDirective';\nexport * from './directive/ScrollCheckDirective';\nexport * from './directive/HTMLTitleDirective';\nexport * from './directive/HTMLContentTitleDirective';\nexport * from './directive/IsBrowserDirective';\nexport * from './directive/IsServerDirective';\n//\nexport * from './language/LanguageModule';\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';\nexport * from './login/LoginTokenStorage';\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';\nexport * from './list/select/RouterSelectListItems';\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';\n//\nexport * from './service/PipeBaseService';\nexport * from './service/PlatformService';\nexport * from './service/RouterBaseService';\nexport * from './service/ServiceWorkerService';\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/ThemeAssetIconDirective';\nexport * from './theme/ThemeAssetDirective';\nexport * from './theme/ThemeModule';\nexport * from './theme/ThemeToggleDirective';\n//\nexport * from './user/IUser';\nexport * from './user/UserBaseService';\n//\nexport * from './window/IWindow';\nexport * from './window/WindowBase';\nexport * from './window/WindowConfig';\nexport * from './window/WindowService';\nexport * from './window/WindowServiceEvent';\nexport * from './window/IWindowConfig';\nexport * from './window/IWindowContent';\nexport * from './window/WindowClosedError';\n//\nexport * from './notification/INotification';\nexport * from './notification/INotificationConfig';\nexport * from './notification/INotificationContent';\nexport * from './notification/NotificationConfig';\nexport * from './notification/NotificationService';\nexport * from './notification/NotificationServiceEvent';\n//\nexport * from './bottomSheet/BottomSheetService';\n//\nexport * from './storage/LocalStorageService';\nexport * from './storage/ValueStorage';\nexport * from './storage/IValueStorage';\nexport * from './storage/DateValueStorage';\nexport * from './storage/BooleanValueStorage';\n//\nexport * from './module/LazyModuleLoader';\n//\nexport * from './transport/TransportLazy';\nexport * from './transport/TransportLazyModule';\nexport * from './transport/TransportLazyModuleLoadedEvent';\n//\nexport * from './util/ViewUtil';\n//\nexport * from './VIModule';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["declarations","i1.PlatformService","i1"],"mappings":"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"}
|