@ts-core/angular 11.0.89 → 13.0.4
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/VICommonModule.d.ts +34 -2
- package/application/ApplicationBaseComponent.d.ts +9 -5
- package/application/ApplicationComponent.d.ts +2 -6
- package/asset/AssetBackgroundDirective.d.ts +3 -0
- package/asset/AssetBackgroundPipe.d.ts +3 -0
- package/asset/AssetFilePipe.d.ts +3 -0
- package/asset/AssetIconPipe.d.ts +3 -0
- package/asset/AssetImagePipe.d.ts +3 -0
- package/asset/AssetModule.d.ts +12 -0
- package/asset/AssetSoundPipe.d.ts +3 -0
- package/asset/AssetVideoPipe.d.ts +3 -0
- package/bottomSheet/BottomSheetModule.d.ts +10 -0
- package/bottomSheet/BottomSheetService.d.ts +3 -0
- package/bottomSheet/component/bottom-sheet-close-element/bottom-sheet-close-element.component.d.ts +3 -0
- package/component/VIComponentModule.d.ts +28 -0
- package/component/cdk-table/CdkTableBaseComponent.d.ts +6 -3
- package/component/cdk-table/CdkTableFilterableMapCollection.d.ts +5 -5
- package/component/cdk-table/CdkTablePaginableBookmarkMapCollection.d.ts +2 -2
- package/component/cdk-table/CdkTablePaginableMapCollection.d.ts +2 -6
- package/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.d.ts +3 -0
- package/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.d.ts +3 -0
- package/component/cdk-table/column/CdkTableCellClassNamePipe.d.ts +3 -0
- package/component/cdk-table/column/CdkTableColumnClassNamePipe.d.ts +3 -0
- package/component/cdk-table/column/CdkTableColumnStyleNamePipe.d.ts +3 -0
- package/component/cdk-table/column/CdkTableColumnValuePipe.d.ts +3 -0
- package/component/cdk-table/column/ICdkTableColumn.d.ts +1 -1
- package/component/cdk-table/row/CdkTableRowClassNamePipe.d.ts +3 -0
- package/component/cdk-table/row/CdkTableRowStyleNamePipe.d.ts +3 -0
- package/component/language/language-selector/language-selector.component.d.ts +3 -0
- package/component/menu-list/menu-list.component.d.ts +3 -0
- package/component/select-list/select-list.component.d.ts +3 -0
- package/component/tab-group/tab-group.component.d.ts +3 -0
- package/cookie/CookieModule.d.ts +4 -0
- package/directive/AspectRatioResizeDirective.d.ts +3 -0
- package/directive/AutoScrollBottomDirective.d.ts +3 -0
- package/directive/ClickToCopyDirective.d.ts +3 -0
- package/directive/ClickToSelectDirective.d.ts +3 -0
- package/directive/FocusDirective.d.ts +3 -0
- package/directive/HTMLContentTitleDirective.d.ts +3 -0
- package/directive/InfiniteScrollDirective.d.ts +3 -0
- package/directive/ResizeDirective.d.ts +3 -0
- package/directive/ScrollDirective.d.ts +3 -0
- package/directive/SelectOnFocusDirective.d.ts +3 -0
- package/{esm2015/ApplicationInjector.js → esm2020/ApplicationInjector.mjs} +0 -0
- package/esm2020/VICommonModule.mjs +145 -0
- package/esm2020/application/ApplicationBaseComponent.mjs +88 -0
- package/esm2020/application/ApplicationComponent.mjs +53 -0
- package/{esm2015/application/MessageBaseComponent.js → esm2020/application/MessageBaseComponent.mjs} +0 -0
- package/{esm2015/application/ShellBaseComponent.js → esm2020/application/ShellBaseComponent.mjs} +0 -0
- package/esm2020/asset/AssetBackgroundDirective.mjs +150 -0
- package/esm2020/asset/AssetBackgroundPipe.mjs +22 -0
- package/esm2020/asset/AssetFilePipe.mjs +22 -0
- package/esm2020/asset/AssetIconPipe.mjs +22 -0
- package/esm2020/asset/AssetImagePipe.mjs +22 -0
- package/esm2020/asset/AssetModule.mjs +24 -0
- package/esm2020/asset/AssetSoundPipe.mjs +22 -0
- package/esm2020/asset/AssetVideoPipe.mjs +22 -0
- package/esm2020/bottomSheet/BottomSheetImpl.mjs +230 -0
- package/esm2020/bottomSheet/BottomSheetModule.mjs +45 -0
- package/esm2020/bottomSheet/BottomSheetService.mjs +99 -0
- package/{esm2015/bottomSheet/component/BottomSheetBaseComponent.js → esm2020/bottomSheet/component/BottomSheetBaseComponent.mjs} +0 -0
- package/esm2020/bottomSheet/component/bottom-sheet-close-element/bottom-sheet-close-element.component.mjs +60 -0
- package/esm2020/component/VIComponentModule.mjs +105 -0
- package/esm2020/component/cdk-table/CdkTableBaseComponent.mjs +189 -0
- package/{esm2015/component/cdk-table/CdkTableDataSource.js → esm2020/component/cdk-table/CdkTableDataSource.mjs} +0 -0
- package/esm2020/component/cdk-table/CdkTableFilterableMapCollection.mjs +94 -0
- package/esm2020/component/cdk-table/CdkTablePaginableBookmarkMapCollection.mjs +49 -0
- package/esm2020/component/cdk-table/CdkTablePaginableMapCollection.mjs +57 -0
- package/esm2020/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.mjs +35 -0
- package/esm2020/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.mjs +63 -0
- package/esm2020/component/cdk-table/column/CdkTableCellClassNamePipe.mjs +21 -0
- package/esm2020/component/cdk-table/column/CdkTableColumnClassNamePipe.mjs +22 -0
- package/esm2020/component/cdk-table/column/CdkTableColumnStyleNamePipe.mjs +22 -0
- package/esm2020/component/cdk-table/column/CdkTableColumnValuePipe.mjs +22 -0
- package/esm2020/component/cdk-table/column/ICdkTableColumn.mjs +2 -0
- package/esm2020/component/cdk-table/row/CdkTableRowClassNamePipe.mjs +22 -0
- package/esm2020/component/cdk-table/row/CdkTableRowStyleNamePipe.mjs +22 -0
- package/{esm2015/component/cdk-table/row/ICdkTableRow.js → esm2020/component/cdk-table/row/ICdkTableRow.mjs} +0 -0
- package/esm2020/component/language/language-selector/language-selector.component.mjs +79 -0
- package/esm2020/component/menu-list/menu-list.component.mjs +16 -0
- package/esm2020/component/select-list/select-list.component.mjs +17 -0
- package/esm2020/component/tab-group/tab-group.component.mjs +71 -0
- package/esm2020/cookie/CookieModule.mjs +37 -0
- package/{esm2015/cookie/CookieOptions.js → esm2020/cookie/CookieOptions.mjs} +0 -0
- package/{esm2015/cookie/CookieService.js → esm2020/cookie/CookieService.mjs} +1 -1
- package/esm2020/directive/AspectRatioResizeDirective.mjs +127 -0
- package/esm2020/directive/AutoScrollBottomDirective.mjs +115 -0
- package/esm2020/directive/ClickToCopyDirective.mjs +49 -0
- package/esm2020/directive/ClickToSelectDirective.mjs +49 -0
- package/esm2020/directive/FocusDirective.mjs +54 -0
- package/esm2020/directive/HTMLContentTitleDirective.mjs +71 -0
- package/esm2020/directive/InfiniteScrollDirective.mjs +74 -0
- package/esm2020/directive/ResizeDirective.mjs +79 -0
- package/esm2020/directive/ScrollDirective.mjs +128 -0
- package/esm2020/directive/SelectOnFocusDirective.mjs +47 -0
- package/{esm2015/form/FormElementAsync.js → esm2020/form/FormElementAsync.mjs} +0 -0
- package/esm2020/form/FormElementSync.mjs +69 -0
- package/{esm2015/form/ValueAccessor.js → esm2020/form/ValueAccessor.mjs} +0 -0
- package/esm2020/form/validate.mjs +59 -0
- package/esm2020/language/LanguageDirective.mjs +92 -0
- package/esm2020/language/LanguageHasDirective.mjs +93 -0
- package/esm2020/language/LanguageMatPaginatorIntl.mjs +62 -0
- package/esm2020/language/LanguageModule.mjs +67 -0
- package/{esm2015/language/LanguageMomentDateAdapter.js → esm2020/language/LanguageMomentDateAdapter.mjs} +2 -4
- package/esm2020/language/LanguagePipe.mjs +58 -0
- package/esm2020/language/LanguagePipeHas.mjs +56 -0
- package/esm2020/language/LanguagePipeHasPure.mjs +40 -0
- package/esm2020/language/LanguagePipePure.mjs +39 -0
- package/{esm2015/language/LanguageRequireResolver.js → esm2020/language/LanguageRequireResolver.mjs} +0 -0
- package/esm2020/language/LanguageResolver.mjs +21 -0
- package/{esm2015/list/IListItem.js → esm2020/list/IListItem.mjs} +0 -0
- package/{esm2015/list/ListItem.js → esm2020/list/ListItem.mjs} +0 -0
- package/{esm2015/list/ListItems.js → esm2020/list/ListItems.mjs} +0 -0
- package/{esm2015/list/select/ISelectListItem.js → esm2020/list/select/ISelectListItem.mjs} +0 -0
- package/{esm2015/list/select/SelectListItem.js → esm2020/list/select/SelectListItem.mjs} +0 -0
- package/{esm2015/list/select/SelectListItems.js → esm2020/list/select/SelectListItems.mjs} +0 -0
- package/esm2020/login/LoginBaseService.mjs +187 -0
- package/esm2020/login/LoginGuard.mjs +29 -0
- package/esm2020/login/LoginRedirectResolver.mjs +21 -0
- package/{esm2015/login/LoginRequireResolver.js → esm2020/login/LoginRequireResolver.mjs} +0 -0
- package/esm2020/login/LoginResolver.mjs +28 -0
- package/{esm2015/manager/FocusManager.js → esm2020/manager/FocusManager.mjs} +0 -0
- package/{esm2015/manager/ResizeManager.js → esm2020/manager/ResizeManager.mjs} +0 -0
- package/{esm2015/menu/MenuItem.js → esm2020/menu/MenuItem.mjs} +0 -0
- package/{esm2015/menu/MenuItemBase.js → esm2020/menu/MenuItemBase.mjs} +0 -0
- package/{esm2015/menu/MenuItems.js → esm2020/menu/MenuItems.mjs} +0 -0
- package/{esm2015/menu/NavigationMenuItem.js → esm2020/menu/NavigationMenuItem.mjs} +0 -0
- package/esm2020/module/LazyModuleLoader.mjs +89 -0
- package/{esm2015/notification/INotification.js → esm2020/notification/INotification.mjs} +0 -0
- package/esm2020/notification/INotificationContent.mjs +132 -0
- package/{esm2015/notification/NotificationConfig.js → esm2020/notification/NotificationConfig.mjs} +0 -0
- package/{esm2015/notification/NotificationFactory.js → esm2020/notification/NotificationFactory.mjs} +0 -0
- package/esm2020/notification/NotificationImpl.mjs +139 -0
- package/esm2020/notification/NotificationModule.mjs +53 -0
- package/{esm2015/notification/NotificationProperties.js → esm2020/notification/NotificationProperties.mjs} +0 -0
- package/esm2020/notification/NotificationService.mjs +239 -0
- package/{esm2015/notification/component/NotificationBaseComponent.js → esm2020/notification/component/NotificationBaseComponent.mjs} +0 -0
- package/esm2020/notification/component/NotificationQuestionBaseComponent.mjs +50 -0
- package/esm2020/notification/component/notification/notification.component.mjs +61 -0
- package/esm2020/pipe/CamelCasePipe.mjs +31 -0
- package/esm2020/pipe/FinancePipe.mjs +53 -0
- package/esm2020/pipe/MomentDateAdaptivePipe.mjs +51 -0
- package/esm2020/pipe/MomentDateFromNowPipe.mjs +22 -0
- package/esm2020/pipe/MomentDatePipe.mjs +71 -0
- package/esm2020/pipe/MomentTimePipe.mjs +35 -0
- package/esm2020/pipe/NgModelErrorPipe.mjs +42 -0
- package/esm2020/pipe/PrettifyPipe.mjs +38 -0
- package/esm2020/pipe/SanitizePipe.mjs +47 -0
- package/esm2020/pipe/StartCasePipe.mjs +24 -0
- package/esm2020/pipe/TimePipe.mjs +37 -0
- package/esm2020/pipe/TruncatePipe.mjs +25 -0
- package/esm2020/public-api.mjs +160 -0
- package/{esm2015/question/IQuestion.js → esm2020/question/IQuestion.mjs} +0 -0
- package/{esm2015/question/QuestionManager.js → esm2020/question/QuestionManager.mjs} +0 -0
- package/esm2020/service/BootstrapBreakpointService.mjs +116 -0
- package/{esm2015/service/PipeBaseService.js → esm2020/service/PipeBaseService.mjs} +0 -0
- package/esm2020/service/RouterBaseService.mjs +214 -0
- package/{esm2015/service/route/CanDeactivateGuard.js → esm2020/service/route/CanDeactivateGuard.mjs} +0 -0
- package/{esm2015/service/route/IRouterDeactivatable.js → esm2020/service/route/IRouterDeactivatable.mjs} +0 -0
- package/esm2020/theme/ThemeAssetBackgroundDirective.mjs +36 -0
- package/esm2020/theme/ThemeAssetDirective.mjs +219 -0
- package/esm2020/theme/ThemeAssetImageDirective.mjs +34 -0
- package/esm2020/theme/ThemeModule.mjs +62 -0
- package/esm2020/theme/ThemeStyleDirective.mjs +115 -0
- package/esm2020/theme/ThemeStyleHoverDirective.mjs +107 -0
- package/esm2020/theme/ThemeToggleDirective.mjs +62 -0
- package/esm2020/transport/TransportLazy.mjs +91 -0
- package/{esm2015/transport/TransportLazyModule.js → esm2020/transport/TransportLazyModule.mjs} +0 -0
- package/{esm2015/transport/TransportLazyModuleLoadedEvent.js → esm2020/transport/TransportLazyModuleLoadedEvent.mjs} +0 -0
- package/esm2020/ts-core-angular.mjs +5 -0
- package/{esm2015/user/IUser.js → esm2020/user/IUser.mjs} +0 -0
- package/{esm2015/user/UserBaseService.js → esm2020/user/UserBaseService.mjs} +0 -0
- package/{esm2015/util/ViewUtil.js → esm2020/util/ViewUtil.mjs} +0 -0
- package/{esm2015/window/IWindow.js → esm2020/window/IWindow.mjs} +0 -0
- package/esm2020/window/IWindowContent.mjs +128 -0
- package/{esm2015/window/WindowBase.js → esm2020/window/WindowBase.mjs} +0 -0
- package/{esm2015/window/WindowConfig.js → esm2020/window/WindowConfig.mjs} +0 -0
- package/{esm2015/window/WindowFactory.js → esm2020/window/WindowFactory.mjs} +0 -0
- package/esm2020/window/WindowImpl.mjs +319 -0
- package/esm2020/window/WindowModule.mjs +59 -0
- package/{esm2015/window/WindowProperties.js → esm2020/window/WindowProperties.mjs} +0 -0
- package/esm2020/window/WindowService.mjs +338 -0
- package/{esm2015/window/component/WindowBaseComponent.js → esm2020/window/component/WindowBaseComponent.mjs} +0 -0
- package/esm2020/window/component/WindowDragAreaDirective.mjs +97 -0
- package/{esm2015/window/component/WindowDragable.js → esm2020/window/component/WindowDragable.mjs} +1 -1
- package/esm2020/window/component/WindowElement.mjs +86 -0
- package/{esm2015/window/component/WindowQuestionBaseComponent.js → esm2020/window/component/WindowQuestionBaseComponent.mjs} +0 -0
- package/{esm2015/window/component/WindowResizeable.js → esm2020/window/component/WindowResizeable.mjs} +1 -1
- package/esm2020/window/component/window-close-element/window-close-element.component.mjs +60 -0
- package/esm2020/window/component/window-minimize-element/window-minimize-element.component.mjs +80 -0
- package/esm2020/window/component/window-question/window-question.component.mjs +50 -0
- package/esm2020/window/component/window-resize-element/window-resize-element.component.mjs +59 -0
- package/fesm2015/{ts-core-angular.js → ts-core-angular.mjs} +3509 -3319
- package/fesm2015/ts-core-angular.mjs.map +1 -0
- package/fesm2020/ts-core-angular.mjs +9519 -0
- package/fesm2020/ts-core-angular.mjs.map +1 -0
- package/form/FormElementSync.d.ts +3 -0
- package/language/LanguageDirective.d.ts +3 -0
- package/language/LanguageHasDirective.d.ts +3 -0
- package/language/LanguageMatPaginatorIntl.d.ts +3 -0
- package/language/LanguageModule.d.ts +11 -0
- package/language/LanguagePipe.d.ts +3 -0
- package/language/LanguagePipeHas.d.ts +3 -0
- package/language/LanguagePipeHasPure.d.ts +3 -0
- package/language/LanguagePipePure.d.ts +3 -0
- package/language/LanguageResolver.d.ts +3 -0
- package/login/LoginGuard.d.ts +3 -0
- package/login/LoginRedirectResolver.d.ts +3 -0
- package/login/LoginResolver.d.ts +3 -0
- package/module/LazyModuleLoader.d.ts +3 -0
- package/notification/INotificationContent.d.ts +3 -0
- package/notification/NotificationModule.d.ts +14 -0
- package/notification/NotificationService.d.ts +3 -0
- package/notification/component/NotificationQuestionBaseComponent.d.ts +3 -0
- package/notification/component/notification/notification.component.d.ts +3 -0
- package/package.json +44 -30
- package/pipe/CamelCasePipe.d.ts +3 -0
- package/pipe/FinancePipe.d.ts +3 -0
- package/pipe/MomentDateAdaptivePipe.d.ts +3 -0
- package/pipe/MomentDateFromNowPipe.d.ts +3 -0
- package/pipe/MomentDatePipe.d.ts +3 -0
- package/pipe/MomentTimePipe.d.ts +3 -0
- package/pipe/NgModelErrorPipe.d.ts +3 -0
- package/pipe/PrettifyPipe.d.ts +3 -0
- package/pipe/SanitizePipe.d.ts +3 -0
- package/pipe/StartCasePipe.d.ts +3 -0
- package/pipe/TimePipe.d.ts +3 -0
- package/pipe/TruncatePipe.d.ts +3 -0
- package/public-api.d.ts +25 -9
- package/service/BootstrapBreakpointService.d.ts +3 -0
- package/style/mat/vi-mat.scss +48 -1
- package/theme/ThemeAssetBackgroundDirective.d.ts +3 -0
- package/theme/ThemeAssetDirective.d.ts +3 -0
- package/theme/ThemeAssetImageDirective.d.ts +3 -0
- package/theme/ThemeModule.d.ts +10 -0
- package/theme/ThemeStyleDirective.d.ts +3 -0
- package/theme/ThemeStyleHoverDirective.d.ts +3 -0
- package/theme/ThemeToggleDirective.d.ts +3 -0
- package/ts-core-angular.d.ts +1 -24
- package/window/IWindowContent.d.ts +5 -1
- package/window/WindowModule.d.ts +20 -0
- package/window/WindowService.d.ts +3 -0
- package/window/component/WindowDragAreaDirective.d.ts +3 -0
- package/window/component/WindowDragable.d.ts +1 -1
- package/window/component/WindowElement.d.ts +3 -0
- package/window/component/WindowResizeable.d.ts +1 -1
- package/window/component/window-close-element/window-close-element.component.d.ts +3 -0
- package/window/component/window-minimize-element/window-minimize-element.component.d.ts +3 -0
- package/window/component/window-question/window-question.component.d.ts +3 -0
- package/window/component/window-resize-element/window-resize-element.component.d.ts +3 -0
- package/application/ApplicationComponent2.d.ts +0 -19
- package/bundles/ts-core-angular.umd.js +0 -11299
- package/bundles/ts-core-angular.umd.js.map +0 -1
- package/bundles/ts-core-angular.umd.min.js +0 -2
- package/bundles/ts-core-angular.umd.min.js.map +0 -1
- package/esm2015/VICommonModule.js +0 -98
- package/esm2015/application/ApplicationBaseComponent.js +0 -80
- package/esm2015/application/ApplicationComponent.js +0 -57
- package/esm2015/application/ApplicationComponent2.js +0 -53
- package/esm2015/asset/AssetBackgroundDirective.js +0 -144
- package/esm2015/asset/AssetBackgroundPipe.js +0 -18
- package/esm2015/asset/AssetFilePipe.js +0 -18
- package/esm2015/asset/AssetIconPipe.js +0 -18
- package/esm2015/asset/AssetImagePipe.js +0 -18
- package/esm2015/asset/AssetModule.js +0 -19
- package/esm2015/asset/AssetSoundPipe.js +0 -18
- package/esm2015/asset/AssetVideoPipe.js +0 -18
- package/esm2015/bottomSheet/BottomSheetImpl.js +0 -231
- package/esm2015/bottomSheet/BottomSheetModule.js +0 -40
- package/esm2015/bottomSheet/BottomSheetService.js +0 -103
- package/esm2015/bottomSheet/component/bottom-sheet-close-element/bottom-sheet-close-element.component.js +0 -63
- package/esm2015/component/VIComponentModule.js +0 -67
- package/esm2015/component/cdk-table/CdkTableBaseComponent.js +0 -176
- package/esm2015/component/cdk-table/CdkTableFilterableMapCollection.js +0 -94
- package/esm2015/component/cdk-table/CdkTablePaginableBookmarkMapCollection.js +0 -49
- package/esm2015/component/cdk-table/CdkTablePaginableMapCollection.js +0 -57
- package/esm2015/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.js +0 -24
- package/esm2015/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.js +0 -52
- package/esm2015/component/cdk-table/column/CdkTableCellClassNamePipe.js +0 -17
- package/esm2015/component/cdk-table/column/CdkTableColumnClassNamePipe.js +0 -18
- package/esm2015/component/cdk-table/column/CdkTableColumnStyleNamePipe.js +0 -18
- package/esm2015/component/cdk-table/column/CdkTableColumnValuePipe.js +0 -18
- package/esm2015/component/cdk-table/column/ICdkTableColumn.js +0 -2
- package/esm2015/component/cdk-table/row/CdkTableRowClassNamePipe.js +0 -18
- package/esm2015/component/cdk-table/row/CdkTableRowStyleNamePipe.js +0 -18
- package/esm2015/component/language/language-selector/language-selector.component.js +0 -75
- package/esm2015/component/menu-list/menu-list.component.js +0 -14
- package/esm2015/component/select-list/select-list.component.js +0 -14
- package/esm2015/component/tab-group/tab-group.component.js +0 -68
- package/esm2015/cookie/CookieModule.js +0 -33
- package/esm2015/directive/AspectRatioResizeDirective.js +0 -125
- package/esm2015/directive/AutoScrollBottomDirective.js +0 -107
- package/esm2015/directive/ClickToCopyDirective.js +0 -48
- package/esm2015/directive/ClickToSelectDirective.js +0 -48
- package/esm2015/directive/FocusDirective.js +0 -53
- package/esm2015/directive/HTMLContentTitleDirective.js +0 -70
- package/esm2015/directive/InfiniteScrollDirective.js +0 -69
- package/esm2015/directive/ResizeDirective.js +0 -75
- package/esm2015/directive/ScrollDirective.js +0 -124
- package/esm2015/directive/SelectOnFocusDirective.js +0 -46
- package/esm2015/form/FormElementSync.js +0 -62
- package/esm2015/form/validate.js +0 -61
- package/esm2015/language/LanguageDirective.js +0 -90
- package/esm2015/language/LanguageHasDirective.js +0 -93
- package/esm2015/language/LanguageMatPaginatorIntl.js +0 -54
- package/esm2015/language/LanguageModule.js +0 -62
- package/esm2015/language/LanguagePipe.js +0 -57
- package/esm2015/language/LanguagePipeHas.js +0 -55
- package/esm2015/language/LanguagePipeHasPure.js +0 -39
- package/esm2015/language/LanguagePipePure.js +0 -38
- package/esm2015/language/LanguageResolver.js +0 -23
- package/esm2015/login/LoginBaseService.js +0 -197
- package/esm2015/login/LoginGuard.js +0 -31
- package/esm2015/login/LoginRedirectResolver.js +0 -19
- package/esm2015/login/LoginResolver.js +0 -30
- package/esm2015/module/LazyModuleLoader.js +0 -98
- package/esm2015/notification/INotificationContent.js +0 -126
- package/esm2015/notification/NotificationImpl.js +0 -140
- package/esm2015/notification/NotificationModule.js +0 -40
- package/esm2015/notification/NotificationService.js +0 -248
- package/esm2015/notification/component/NotificationQuestionBaseComponent.js +0 -43
- package/esm2015/notification/component/notification/notification.component.js +0 -64
- package/esm2015/pipe/CamelCasePipe.js +0 -28
- package/esm2015/pipe/FinancePipe.js +0 -49
- package/esm2015/pipe/MomentDateAdaptivePipe.js +0 -47
- package/esm2015/pipe/MomentDateFromNowPipe.js +0 -18
- package/esm2015/pipe/MomentDatePipe.js +0 -67
- package/esm2015/pipe/MomentTimePipe.js +0 -31
- package/esm2015/pipe/NgModelErrorPipe.js +0 -41
- package/esm2015/pipe/PrettifyPipe.js +0 -35
- package/esm2015/pipe/SanitizePipe.js +0 -46
- package/esm2015/pipe/StartCasePipe.js +0 -20
- package/esm2015/pipe/TimePipe.js +0 -33
- package/esm2015/pipe/TruncatePipe.js +0 -21
- package/esm2015/public-api.js +0 -161
- package/esm2015/service/BootstrapBreakpointService.js +0 -118
- package/esm2015/service/RouterBaseService.js +0 -223
- package/esm2015/theme/ThemeAssetBackgroundDirective.js +0 -37
- package/esm2015/theme/ThemeAssetDirective.js +0 -204
- package/esm2015/theme/ThemeAssetImageDirective.js +0 -35
- package/esm2015/theme/ThemeModule.js +0 -57
- package/esm2015/theme/ThemeStyleDirective.js +0 -113
- package/esm2015/theme/ThemeStyleHoverDirective.js +0 -105
- package/esm2015/theme/ThemeToggleDirective.js +0 -61
- package/esm2015/transport/TransportLazy.js +0 -98
- package/esm2015/ts-core-angular.js +0 -28
- package/esm2015/window/IWindowContent.js +0 -115
- package/esm2015/window/WindowImpl.js +0 -320
- package/esm2015/window/WindowModule.js +0 -46
- package/esm2015/window/WindowService.js +0 -349
- package/esm2015/window/component/WindowDragAreaDirective.js +0 -96
- package/esm2015/window/component/WindowElement.js +0 -78
- package/esm2015/window/component/window-close-element/window-close-element.component.js +0 -63
- package/esm2015/window/component/window-minimize-element/window-minimize-element.component.js +0 -83
- package/esm2015/window/component/window-question/window-question.component.js +0 -50
- package/esm2015/window/component/window-resize-element/window-resize-element.component.js +0 -62
- package/fesm2015/ts-core-angular.js.map +0 -1
- package/ts-core-angular.metadata.json +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-core-angular.mjs","sources":["../../src/application/ApplicationBaseComponent.ts","../../src/util/ViewUtil.ts","../../src/application/ApplicationComponent.ts","../../src/application/MessageBaseComponent.ts","../../src/question/IQuestion.ts","../../src/question/QuestionManager.ts","../../src/window/IWindow.ts","../../src/window/WindowConfig.ts","../../src/notification/INotification.ts","../../src/notification/NotificationConfig.ts","../../src/notification/NotificationService.ts","../../src/application/ShellBaseComponent.ts","../../src/ApplicationInjector.ts","../../src/asset/AssetBackgroundDirective.ts","../../src/asset/AssetBackgroundPipe.ts","../../src/asset/AssetIconPipe.ts","../../src/asset/AssetFilePipe.ts","../../src/asset/AssetVideoPipe.ts","../../src/asset/AssetSoundPipe.ts","../../src/asset/AssetImagePipe.ts","../../src/asset/AssetModule.ts","../../src/cookie/CookieService.ts","../../src/cookie/CookieModule.ts","../../src/manager/ResizeManager.ts","../../src/directive/AspectRatioResizeDirective.ts","../../src/directive/ScrollDirective.ts","../../src/directive/InfiniteScrollDirective.ts","../../src/directive/AutoScrollBottomDirective.ts","../../src/directive/ClickToCopyDirective.ts","../../src/directive/ClickToSelectDirective.ts","../../src/manager/FocusManager.ts","../../src/directive/FocusDirective.ts","../../src/directive/SelectOnFocusDirective.ts","../../src/directive/HTMLContentTitleDirective.ts","../../src/directive/ResizeDirective.ts","../../src/language/LanguageMatPaginatorIntl.ts","../../src/language/LanguagePipe.ts","../../src/language/LanguagePipePure.ts","../../src/language/LanguageRequireResolver.ts","../../src/language/LanguageResolver.ts","../../src/language/LanguageDirective.ts","../../src/language/LanguagePipeHas.ts","../../src/language/LanguagePipeHasPure.ts","../../src/language/LanguageHasDirective.ts","../../src/language/LanguageModule.ts","../../src/window/WindowFactory.ts","../../src/window/WindowBase.ts","../../src/window/WindowImpl.ts","../../src/bottomSheet/BottomSheetImpl.ts","../../src/window/component/WindowElement.ts","../../src/bottomSheet/component/bottom-sheet-close-element/bottom-sheet-close-element.component.ts","../../src/bottomSheet/component/BottomSheetBaseComponent.ts","../../src/window/WindowService.ts","../../src/window/IWindowContent.ts","../../src/window/component/WindowQuestionBaseComponent.ts","../../src/window/component/window-question/window-question.component.ts","../../src/window/component/window-question/window-question.component.html","../../src/bottomSheet/BottomSheetService.ts","../../src/bottomSheet/BottomSheetModule.ts","../../src/notification/NotificationImpl.ts","../../src/notification/component/NotificationBaseComponent.ts","../../src/notification/INotificationContent.ts","../../src/notification/component/NotificationQuestionBaseComponent.ts","../../src/notification/component/notification/notification.component.ts","../../src/notification/component/notification/notification.component.html","../../src/notification/NotificationFactory.ts","../../src/notification/NotificationModule.ts","../../src/pipe/CamelCasePipe.ts","../../src/pipe/FinancePipe.ts","../../src/pipe/MomentDatePipe.ts","../../src/pipe/MomentDateAdaptivePipe.ts","../../src/pipe/MomentDateFromNowPipe.ts","../../src/pipe/MomentTimePipe.ts","../../src/pipe/NgModelErrorPipe.ts","../../src/pipe/SanitizePipe.ts","../../src/pipe/StartCasePipe.ts","../../src/pipe/TimePipe.ts","../../src/pipe/TruncatePipe.ts","../../src/pipe/PrettifyPipe.ts","../../src/theme/ThemeAssetDirective.ts","../../src/theme/ThemeAssetBackgroundDirective.ts","../../src/theme/ThemeAssetImageDirective.ts","../../src/theme/ThemeToggleDirective.ts","../../src/theme/ThemeStyleDirective.ts","../../src/theme/ThemeStyleHoverDirective.ts","../../src/theme/ThemeModule.ts","../../src/window/component/WindowDragAreaDirective.ts","../../src/window/component/window-close-element/window-close-element.component.ts","../../src/window/component/window-resize-element/window-resize-element.component.ts","../../src/window/component/window-minimize-element/window-minimize-element.component.ts","../../src/window/component/WindowResizeable.ts","../../src/window/component/WindowDragable.ts","../../src/window/component/WindowBaseComponent.ts","../../src/window/WindowModule.ts","../../src/VICommonModule.ts","../../src/component/language/language-selector/language-selector.component.ts","../../src/component/language/language-selector/language-selector.component.html","../../src/component/menu-list/menu-list.component.ts","../../src/component/menu-list/menu-list.component.html","../../src/component/select-list/select-list.component.ts","../../src/component/select-list/select-list.component.html","../../src/component/tab-group/tab-group.component.ts","../../src/component/tab-group/tab-group.component.html","../../src/component/cdk-table/CdkTableDataSource.ts","../../src/component/cdk-table/CdkTableFilterableMapCollection.ts","../../src/component/cdk-table/CdkTableBaseComponent.ts","../../src/component/cdk-table/column/CdkTableColumnClassNamePipe.ts","../../src/component/cdk-table/column/CdkTableColumnStyleNamePipe.ts","../../src/component/cdk-table/column/CdkTableCellClassNamePipe.ts","../../src/component/cdk-table/column/CdkTableColumnValuePipe.ts","../../src/component/cdk-table/row/CdkTableRowClassNamePipe.ts","../../src/component/cdk-table/row/CdkTableRowStyleNamePipe.ts","../../src/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.ts","../../src/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.html","../../src/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.ts","../../src/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.html","../../src/component/VIComponentModule.ts","../../src/component/cdk-table/CdkTablePaginableMapCollection.ts","../../src/component/cdk-table/CdkTablePaginableBookmarkMapCollection.ts","../../src/cookie/CookieOptions.ts","../../src/form/validate.ts","../../src/form/ValueAccessor.ts","../../src/form/FormElementAsync.ts","../../src/form/FormElementSync.ts","../../src/language/LanguageMomentDateAdapter.ts","../../src/login/LoginBaseService.ts","../../src/login/LoginRequireResolver.ts","../../src/login/LoginGuard.ts","../../src/login/LoginResolver.ts","../../src/login/LoginRedirectResolver.ts","../../src/menu/MenuItemBase.ts","../../src/menu/MenuItem.ts","../../src/menu/MenuItems.ts","../../src/menu/NavigationMenuItem.ts","../../src/list/ListItem.ts","../../src/list/ListItems.ts","../../src/list/select/SelectListItem.ts","../../src/list/select/SelectListItems.ts","../../src/service/PipeBaseService.ts","../../src/service/BootstrapBreakpointService.ts","../../src/service/RouterBaseService.ts","../../src/service/route/CanDeactivateGuard.ts","../../src/user/IUser.ts","../../src/user/UserBaseService.ts","../../src/module/LazyModuleLoader.ts","../../src/transport/TransportLazyModuleLoadedEvent.ts","../../src/transport/TransportLazy.ts","../../src/transport/TransportLazyModule.ts","../../src/public-api.ts","../../src/ts-core-angular.ts"],"sourcesContent":["import { AfterViewInit, Component, Inject, Injectable, Optional } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { PromiseHandler } from '@ts-core/common/promise';\nimport * as _ from 'lodash';\n\n@Component({ template: '' })\nexport abstract class ApplicationBaseComponent extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected timeout: any;\n protected isReadyAlreadyCalled: boolean;\n\n protected viewReadyDelay: number = NaN;\n protected viewReadyPromise: PromiseHandler<void, void>;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n this.viewReadyPromise = PromiseHandler.create();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private makeViewReady = (): void => {\n this.viewReadyPromise.resolve();\n this.viewReadyHandler();\n this.checkReady();\n };\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected checkReady(): void {\n if (this.isReadyAlreadyCalled || !this.isReady()) {\n return;\n }\n this.isReadyAlreadyCalled = true;\n this.readyHandler();\n }\n\n protected isReady(): boolean {\n return this.isViewReady;\n }\n\n protected viewReadyHandler(): void {}\n\n protected abstract readyHandler(): void;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n if (this.viewReadyDelay > 0) {\n PromiseHandler.delay(this.viewReadyDelay).then(this.makeViewReady);\n } else {\n this.makeViewReady();\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this.viewReadyPromise)) {\n this.viewReadyPromise.reject();\n this.viewReadyPromise = null;\n }\n\n if (!_.isNil(this.timeout)) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isViewReady(): boolean {\n return !_.isNil(this.viewReadyPromise) ? this.viewReadyPromise.isResolved : false;\n }\n public get viewReady(): Promise<void> {\n return !_.isNil(this.viewReadyPromise) ? this.viewReadyPromise.promise : null;\n }\n}\n","import { ElementRef, Renderer2, RendererStyleFlags2, ViewContainerRef } from '@angular/core';\nimport { ObjectUtil } from '@ts-core/common/util';\nimport * as _ from 'lodash';\n\nexport class ViewUtil {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n private static RENDERER: Renderer2 = null;\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private static copyToClipboard(): void {\n try {\n document.execCommand('copy');\n } catch (error) {}\n }\n\n // --------------------------------------------------------------------------\n //\n //\tCommon Properties\n //\n // --------------------------------------------------------------------------\n\n public static initialize(renderer: Renderer2): void {\n ViewUtil.RENDERER = renderer;\n }\n\n public static parseElement(element: IViewElement): HTMLElement {\n if (element instanceof HTMLElement) {\n return element;\n }\n if (element instanceof ViewContainerRef) {\n element = element.element;\n }\n return !_.isNil(element) ? element.nativeElement : null;\n }\n\n public static createBase64(element: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): string {\n let value = null;\n let canvas = ViewUtil.createElement('canvas');\n ViewUtil.setProperty(canvas, 'width', element.offsetWidth);\n ViewUtil.setProperty(canvas, 'height', element.offsetHeight);\n\n try {\n let context = canvas.getContext('2d');\n context.drawImage(element, 0, 0, element.offsetWidth, element.offsetHeight);\n value = canvas.toDataURL('image/jpeg', 1.0);\n value = value.replace('data:image/jpeg;base64,', '');\n } catch (error) {}\n return value;\n }\n\n public static selectContent(container: HTMLElement, isNeedCopyToClipboard: boolean = false): void {\n if (container instanceof HTMLInputElement || container instanceof HTMLTextAreaElement) {\n let isWasDisabled = container.disabled;\n if (isWasDisabled) {\n container.disabled = false;\n }\n container.select();\n if (isNeedCopyToClipboard) {\n ViewUtil.copyToClipboard();\n }\n if (isWasDisabled) {\n container.disabled = true;\n }\n } else {\n let selection = window.getSelection();\n selection.removeAllRanges();\n\n let range = document.createRange();\n if (!_.isNil(container)) {\n range.selectNodeContents(container);\n }\n selection.addRange(range);\n\n if (isNeedCopyToClipboard) {\n ViewUtil.copyToClipboard();\n }\n }\n }\n\n public static setBackground(container: IViewElement, image: string, repeat: string = 'repeat'): void {\n if (_.isNil(image)) {\n ViewUtil.removeStyle(container, 'backgroundImage');\n ViewUtil.removeStyle(container, 'backgroundRepeat');\n return;\n }\n\n if (!image.includes('url(')) {\n image = 'url(' + image + ')';\n }\n\n ViewUtil.setStyle(container, 'backgroundImage', image);\n ViewUtil.setStyle(container, 'backgroundRepeat', repeat);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tChild Methods\n //\n // --------------------------------------------------------------------------\n\n public static createElement(name: string, className?: string, innerHTML?: string): any {\n let element = ViewUtil.RENDERER.createElement(name);\n if (!_.isNil(name)) {\n ViewUtil.setProperty(element, 'className', className);\n }\n if (!_.isNil(innerHTML)) {\n ViewUtil.setProperty(element, 'innerHTML', innerHTML);\n }\n return element;\n }\n\n public static appendChild(parent: any, child: any): void {\n if (!_.isNil(parent) && !_.isNil(child) && !_.isNil(ViewUtil.RENDERER)) {\n ViewUtil.RENDERER.appendChild(parent, child);\n }\n }\n\n public static removeChild(parent: any, child: any): void {\n if (!_.isNil(parent) && !_.isNil(child) && !_.isNil(ViewUtil.RENDERER)) {\n ViewUtil.RENDERER.removeChild(parent, child);\n }\n }\n\n public static toggleChild(container: Node, child: Node, value: boolean): void {\n let isContains = container.contains(child);\n if (value && !isContains) {\n ViewUtil.appendChild(container, child);\n }\n if (!value && isContains) {\n ViewUtil.removeChild(container, child);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tSize Methods\n //\n // --------------------------------------------------------------------------\n\n public static getStageWidth(): number {\n return window.innerWidth || document.body.clientWidth;\n }\n\n public static getStageHeight(): number {\n return window.innerHeight || document.body.clientHeight;\n }\n\n public static getWidth(container: HTMLElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n let value = parseFloat(ViewUtil.getStyle(container, 'width'));\n if (_.isNaN(value)) {\n value = container.getBoundingClientRect().width;\n }\n if (_.isNaN(value)) {\n value = container.offsetWidth;\n }\n return value;\n }\n\n public static setWidth(container: HTMLElement, value: number, isNeedCheckLimits: boolean): boolean {\n if (_.isNil(container) || _.isNaN(value)) {\n return false;\n }\n\n if (isNeedCheckLimits && (value < ViewUtil.getMinWidth(container) || value > ViewUtil.getMaxWidth(container) || value === ViewUtil.getWidth(container)))\n return false;\n\n container.style.width = '540px';\n ViewUtil.setStyle(container, 'width', value + 'px');\n return true;\n }\n\n public static getMaxWidth(container: HTMLElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\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: HTMLElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\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: HTMLElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n\n let value = parseFloat(ViewUtil.getStyle(container, 'height'));\n if (_.isNaN(value)) {\n value = container.getBoundingClientRect().height;\n }\n if (_.isNaN(value)) {\n value = container.offsetHeight;\n }\n return value;\n }\n public static setHeight(container: HTMLElement, value: number, isNeedCheckLimits: boolean): boolean {\n if (_.isNil(container) || _.isNaN(value)) {\n return false;\n }\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: HTMLElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\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: HTMLElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\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: HTMLElement, 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: HTMLElement): 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: HTMLElement, value: number): void {\n if (!_.isNil(container) && !_.isNaN(value)) {\n ViewUtil.setStyle(container, 'left', value + 'px');\n }\n }\n\n public static getY(container: HTMLElement): number {\n if (_.isNil(container)) {\n return NaN;\n }\n\n let value = parseFloat(ViewUtil.getStyle(container, 'top'));\n return _.isNaN(value) ? 0 : value;\n }\n public static setY(container: HTMLElement, value: number): void {\n if (!_.isNil(container) && !_.isNaN(value)) {\n ViewUtil.setStyle(container, 'top', value + 'px');\n }\n }\n public static move(container: HTMLElement, x: number, y: number): void {\n ViewUtil.setX(container, x);\n ViewUtil.setY(container, y);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tFocus Methods\n //\n // --------------------------------------------------------------------------\n\n public static focusInput(input: HTMLInputElement | HTMLTextAreaElement): void {\n let caretIndex = 0;\n if (!_.isNil(input.value)) {\n caretIndex = Math.max(0, input.value.toString().length);\n }\n input.focus();\n input.setSelectionRange(caretIndex, caretIndex);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tClasses Methods\n //\n // --------------------------------------------------------------------------\n\n public static addClass(container: IViewElement, name: string): void {\n if (_.isNil(name)) {\n return;\n }\n container = ViewUtil.parseElement(container);\n if (!_.isNil(container) && !_.isNil(ViewUtil.RENDERER)) {\n ViewUtil.RENDERER.addClass(container, name);\n }\n }\n\n public static addClasses(container: IViewElement, names: string): void {\n if (_.isEmpty(names)) {\n return;\n }\n names.split(' ').forEach(name => ViewUtil.addClass(container, name));\n }\n\n public static removeClass(container: IViewElement, name: string): void {\n if (_.isNil(name)) {\n return;\n }\n container = ViewUtil.parseElement(container);\n if (!_.isNil(container) && !_.isNil(ViewUtil.RENDERER)) {\n ViewUtil.RENDERER.removeClass(container, name);\n }\n }\n\n public static removeClasses(container: IViewElement, names: string): void {\n if (_.isEmpty(names)) {\n return;\n }\n names.split(' ').forEach(name => ViewUtil.removeClass(container, name));\n }\n\n public static hasClass(container: IViewElement, name: string): boolean {\n if (_.isNil(name)) {\n return false;\n }\n container = ViewUtil.parseElement(container);\n return !_.isNil(container) ? container.classList.contains(name) : false;\n }\n\n public static toggleClass(container: IViewElement, name: string, value: boolean): void {\n if (value) {\n ViewUtil.addClass(container, name);\n } else {\n ViewUtil.removeClass(container, name);\n }\n }\n\n public static getProperty(container: IViewElement, name: string): any {\n if (_.isNil(name)) {\n return null;\n }\n container = ViewUtil.parseElement(container);\n return !_.isNil(container) ? container[name] : null;\n }\n\n public static setProperty(container: IViewElement, name: string, value: any): void {\n if (_.isNil(name)) {\n return;\n }\n container = ViewUtil.parseElement(container);\n if (!_.isNil(container) && !_.isNil(ViewUtil.RENDERER)) {\n ViewUtil.RENDERER.setProperty(container, name, value);\n }\n }\n\n public static removeProperty(container: IViewElement, name: string): void {\n ViewUtil.removeAttribute(container, name);\n }\n\n public static removeAttribute(container: IViewElement, name: string): void {\n if (_.isNil(name)) {\n return;\n }\n container = ViewUtil.parseElement(container);\n if (!_.isNil(container) && !_.isNil(ViewUtil.RENDERER)) {\n ViewUtil.RENDERER.removeAttribute(container, name);\n }\n }\n\n public static setAttribute(container: IViewElement, name: string, value: any): void {\n if (_.isNil(name)) {\n return;\n }\n container = ViewUtil.parseElement(container);\n if (!_.isNil(container) && !_.isNil(ViewUtil.RENDERER)) {\n ViewUtil.RENDERER.setAttribute(container, name, value);\n }\n }\n\n public static getStyle(container: IViewElement, name: string): any {\n if (_.isNil(name)) {\n return null;\n }\n container = ViewUtil.parseElement(container);\n return !_.isNil(container) ? container.style[name] : null;\n }\n\n public static setStyle(container: IViewElement, name: string, value: any, flags?: RendererStyleFlags2): void {\n if (_.isNil(name)) {\n return;\n }\n container = ViewUtil.parseElement(container);\n if (_.isNil(container) || _.isNil(ViewUtil.RENDERER)) {\n return;\n }\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 if (_.isNil(name)) {\n return;\n }\n container = ViewUtil.parseElement(container);\n if (!_.isNil(container) && !_.isNil(ViewUtil.RENDERER)) {\n ViewUtil.RENDERER.removeStyle(container, name, flags);\n }\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: HTMLElement): void {\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: HTMLElement, isIEBrowser?: boolean): void {\n for (let i = container.children.length - 1; i >= 0; i--) {\n let item = container.children.item(i);\n if (item instanceof HTMLObjectElement) {\n ViewUtil.disposeObject(item, isIEBrowser);\n }\n }\n }\n\n public static disposeObject(object: HTMLObjectElement, isIEBrowser?: boolean): void {\n if (isIEBrowser && object['readyState'] === 4) {\n for (let i in object) {\n if (_.isFunction(object[i])) {\n object[i] = null;\n }\n }\n }\n ViewUtil.removeChild(object.parentNode, object);\n }\n}\n\nexport type IViewElement<T extends HTMLElement = HTMLElement> = HTMLElement | ElementRef<T> | ViewContainerRef;\n","import { Renderer2 } from '@angular/core';\nimport { LoadableEvent } from '@ts-core/common';\nimport { Assets } from '@ts-core/frontend/asset';\nimport { Language } from '@ts-core/language';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { SettingsBaseService } from '@ts-core/frontend/service';\nimport { ThemeService } from '@ts-core/frontend/theme';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { ApplicationBaseComponent } from './ApplicationBaseComponent';\nimport * as _ from 'lodash';\nimport moment from 'moment';\nimport numeral from 'numeral';\n\nexport abstract class ApplicationComponent2<T extends SettingsBaseService> extends ApplicationBaseComponent {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private isLanguageLoaded: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n Assets.initialize(this.settings.assetsUrl);\n ViewUtil.initialize(this.renderer);\n\n // Theme\n this.theme.initialize(this.settings.themes);\n\n // Language\n this.language.initialize(Assets.languagesUrl, this.settings.languages);\n this.language.events.pipe(takeUntil(this.destroyed)).subscribe(data => {\n switch (data.type) {\n case LoadableEvent.COMPLETE:\n this.languageLoadingComplete(data.data as Language);\n break;\n case LoadableEvent.ERROR:\n this.languageLoadingError(data.data as Language, data.error);\n break;\n }\n });\n }\n\n protected isReady(): boolean {\n return super.isReady() && this.isLanguageLoaded;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected languageLoadingComplete(item: Language): void {\n this.isLanguageLoaded = true;\n this.setLocale(item);\n this.checkReady();\n }\n\n protected abstract languageLoadingError(item: Language, error: Error): void;\n\n protected viewReadyHandler(): void {\n this.initialize();\n }\n\n protected setLocale(item: Language): void {\n moment.locale(item.locale);\n numeral.locale(item.locale);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Service Properties\n //\n // --------------------------------------------------------------------------\n\n protected abstract get settings(): T;\n\n protected abstract get theme(): ThemeService;\n protected abstract get language(): LanguageService;\n protected abstract get renderer(): Renderer2;\n}\n","import { ActivatedRoute } from '@angular/router';\nimport { DestroyableContainer, LoadableEvent } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\n\nexport abstract class MessageBaseComponent extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n public text: string;\n public refreshText: string = 'Refresh';\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected route: ActivatedRoute, protected language: LanguageService) {\n super();\n // this.login.isAutoLogin = true\n\n this.text = this.getText();\n if (this.language.isLoaded) {\n this.commitLanguageProperties();\n }\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.commitLanguageProperties());\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitLanguageProperties(): void {\n if (this.language.isHasTranslation('general.refresh')) {\n this.refreshText = this.language.translate('general.refresh');\n }\n }\n\n protected getText(): string {\n let value = this.getValue(this.route.snapshot.queryParams);\n if (_.isNil(value)) {\n value = this.getValue(this.route.snapshot.params);\n }\n return value;\n }\n\n protected getValue(data: any): string {\n for (let item of this.getMessageFields()) {\n let value = data[item];\n if (!_.isEmpty(value)) {\n return value;\n }\n }\n return null;\n }\n\n protected getMessageFields(): Array<string> {\n return ['text', 'message', 'error'];\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract refresh(): void;\n}\n","export interface IQuestion {\n readonly mode: QuestionMode;\n readonly isChecked: boolean;\n\n readonly text: string;\n readonly notText: string;\n readonly yesText: string;\n readonly closeText: string;\n readonly checkText: string;\n\n readonly closePromise: Promise<void>;\n readonly yesNotPromise: Promise<void>;\n}\n\nexport interface IQuestionOptions {\n text?: string;\n mode?: QuestionMode;\n isChecked?: boolean;\n yesTextId?: string;\n notTextId?: string;\n checkTextId?: string;\n closeTextId?: string;\n}\n\nexport enum QuestionMode {\n INFO = 'INFO',\n QUESTION = 'QUESTION'\n}\n\nexport enum QuestionEvent {\n YES = 'YES',\n NOT = 'NOT',\n CLOSE = 'CLOSE',\n CHECK = 'CHECK',\n UNCHECK = 'UNCHECK'\n}\n","import * as _ from 'lodash';\nimport { PromiseHandler } from '@ts-core/common/promise';\nimport { Destroyable } from '@ts-core/common';\nimport { IQuestion, IQuestionOptions, QuestionMode } from './IQuestion';\n\nexport class QuestionManager extends Destroyable implements IQuestion {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public text: string;\n public mode: QuestionMode;\n public options: IQuestionOptions;\n\n public notText: string;\n public yesText: string;\n public closeText: string;\n public checkText: string;\n\n protected _isChecked: boolean = false;\n\n protected _closePromise: PromiseHandler<void, void>;\n protected _yesNotPromise: PromiseHandler<void, void>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(options?: IQuestionOptions) {\n super();\n this._closePromise = PromiseHandler.create();\n this._yesNotPromise = PromiseHandler.create();\n\n this.yesText = 'Yes';\n this.notText = 'Not';\n this.closeText = 'Close';\n this.checkText = 'Check';\n this.options = _.assign(\n {\n mode: QuestionMode.INFO,\n isChecked: false,\n yesTextId: 'general.yes',\n notTextId: 'general.not',\n closeTextId: 'general.close'\n },\n options\n );\n this.text = this.options.text;\n this.mode = this.options.mode;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public closeClickHandler(): void {\n this._closePromise.resolve();\n }\n\n public yesClickHandler(): void {\n this._yesNotPromise.resolve();\n this.closeClickHandler();\n }\n\n public notClickHandler(): void {\n this._yesNotPromise.reject();\n this.closeClickHandler();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.notClickHandler();\n this._yesNotPromise = null;\n this._closePromise = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tInterface Properties\n //\n // --------------------------------------------------------------------------\n\n public get yesNotPromise(): Promise<void> {\n return this._yesNotPromise.promise;\n }\n\n public get closePromise(): Promise<void> {\n return this._closePromise.promise;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isInfo(): boolean {\n return this.mode === QuestionMode.INFO;\n }\n\n public get isQuestion(): boolean {\n return this.mode === QuestionMode.QUESTION;\n }\n\n public get isChecked(): boolean {\n return this._isChecked;\n }\n public set isChecked(value: boolean) {\n if (value === this._isChecked) {\n return;\n }\n this._isChecked = value;\n // this.content.emit(value ? QuestionEvent.CHECK : QuestionEvent.UNCHECK);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Destroyable } from '@ts-core/common';\nimport { IWindowContent } from './IWindowContent';\nimport { WindowConfig } from './WindowConfig';\n\nexport abstract class IWindow<T = any> extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n abstract close(): void;\n\n abstract blink(): void;\n abstract shake(): void;\n abstract setOnTop(): void;\n\n abstract getWidth(): number;\n abstract getHeight(): number;\n abstract setWidth(value: number): void;\n abstract setHeight(value: number): void;\n abstract setSize(width: number, height: number): void;\n\n abstract getX(): number;\n abstract getY(): number;\n abstract setX(value: number): void;\n abstract setY(value: number): void;\n abstract move(x: number, y: number): void;\n\n abstract emit(event: string): void;\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public isOnTop: boolean = false;\n public isDisabled: boolean = false;\n public isMinimized: boolean = false;\n\n readonly events: Observable<string>;\n readonly container: HTMLElement;\n readonly wrapper: HTMLElement;\n readonly backdrop: HTMLElement;\n\n readonly config: WindowConfig<T>;\n readonly content: IWindowContent<T>;\n}\n\nexport enum WindowEvent {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n CONTENT_READY = 'CONTENT_READY',\n\n MOVED = 'EVENT_MOVED',\n RESIZED = 'RESIZED',\n DISABLED_CHANGED = 'DISABLED_CHANGED',\n MINIMIZED_CHANGED = 'MINIMIZED_CHANGED',\n\n SET_ON_TOP = 'SET_ON_TOP'\n}\n","import { MatDialogConfig } from '@angular/material/dialog';\nimport { MatBottomSheetConfig } from '@angular/material/bottom-sheet';\nimport * as _ from 'lodash';\nimport { IDestroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\n\nexport class WindowConfig<T = any> extends MatDialogConfig<T> implements MatBottomSheetConfig<T>, IDestroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public id: string;\n public isResizeable: boolean = false;\n public isMinimizable: boolean = false;\n public isContentDragable: boolean = true;\n\n public propertiesId: string;\n\n // Need for match MatDialogConfig and MatBottomSheetConfig\n public backdropClass: string;\n\n public x: number = NaN;\n public y: number = NaN;\n\n public defaultWidth: number = NaN;\n public defaultMinWidth: number = NaN;\n public defaultMaxWidth: number = NaN;\n\n public defaultHeight: number = NaN;\n public defaultMinHeight: number = NaN;\n public defaultMaxHeight: number = NaN;\n\n public paddingTop: number = NaN;\n public paddingLeft: number = NaN;\n public paddingRight: number = NaN;\n public paddingBottom: number = NaN;\n\n public verticalAlign: WindowAlign;\n public horizontalAlign: WindowAlign;\n\n protected _isModal: boolean = false;\n\n protected _elementMaxX: number = NaN;\n protected _elementMinX: number = NaN;\n\n protected _elementMaxY: number = NaN;\n protected _elementMinY: number = NaN;\n\n protected _elementWidth: string;\n protected _elementMinWidth: number = NaN;\n protected _elementMaxWidth: number = NaN;\n\n protected _elementHeight: string;\n protected _elementMinHeight: number = NaN;\n protected _elementMaxHeight: number = NaN;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(isModal: boolean = false, isResizeable: boolean = false, width: number = NaN, height: number = NaN) {\n super();\n\n this.isModal = this.hasBackdrop = isModal;\n this.isResizeable = isResizeable;\n\n if (!_.isNaN(width)) {\n this.defaultWidth = width;\n }\n\n if (!_.isNaN(height)) {\n this.defaultHeight = height;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public setDefaultProperties(): void {\n this.width = this.elementWidth;\n this.maxWidth = this.elementMaxWidth;\n this.minWidth = this.elementMinWidth;\n\n this.height = this.elementHeight;\n this.maxHeight = this.elementMaxHeight;\n this.minHeight = this.elementMinHeight;\n }\n\n public parseX(value: number): number {\n value = Math.max(value, this.elementMinX);\n value = Math.min(value, this.elementMaxX);\n return value;\n }\n\n public parseY(value: number): number {\n value = Math.max(value, this.elementMinY);\n value = Math.min(value, this.elementMaxY);\n return value;\n }\n\n public parseWidth(value: number): number {\n value = Math.max(value, this.elementMinWidth);\n value = Math.min(value, this.elementMaxWidth);\n return value;\n }\n\n public parseHeight(value: number): number {\n value = Math.max(value, this.elementMinHeight);\n value = Math.min(value, this.elementMaxHeight);\n return value;\n }\n\n public destroy(): void {\n IDestroyable.destroy(this.data);\n this.data = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isModal(): boolean {\n return this._isModal;\n }\n public set isModal(value: boolean) {\n if (value === this._isModal) {\n return;\n }\n this._isModal = value;\n this.hasBackdrop = value;\n }\n\n public get elementMinY(): number {\n if (!_.isNaN(this._elementMinY)) {\n return this._elementMinY;\n }\n this._elementMinY = 0 - ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingTop)) {\n this._elementMinY += this.paddingTop;\n }\n return this._elementMinY;\n }\n public get elementMaxY(): number {\n if (!_.isNaN(this._elementMaxY)) {\n return this._elementMaxY;\n }\n this._elementMaxY = ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingBottom)) {\n this._elementMaxY -= this.paddingBottom;\n }\n return this._elementMaxY;\n }\n\n public get elementMinX(): number {\n if (!_.isNaN(this._elementMinX)) {\n return this._elementMinX;\n }\n this._elementMinX = -ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingLeft)) {\n this._elementMinX += this.paddingLeft;\n }\n return this._elementMinX;\n }\n public get elementMaxX(): number {\n if (!_.isNaN(this._elementMaxX)) {\n return this._elementMaxX;\n }\n this._elementMaxX = ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingRight)) {\n this._elementMaxX -= this.paddingRight;\n }\n return this._elementMaxX;\n }\n\n public get elementWidth(): string {\n if (this._elementWidth) {\n return this._elementWidth;\n }\n this._elementWidth = 'auto';\n if (this.defaultWidth) {\n this._elementWidth = this.defaultWidth + 'px';\n }\n return this._elementWidth;\n }\n public get elementMinWidth(): number {\n if (!_.isNaN(this._elementMinWidth)) {\n return this._elementMinWidth;\n }\n this._elementMinWidth = 0;\n if (!_.isNaN(this.defaultMinWidth)) {\n let value = ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingLeft)) {\n value -= this.paddingLeft;\n }\n if (!_.isNaN(this.paddingRight)) {\n value -= this.paddingRight;\n }\n this._elementMinWidth = Math.min(this.defaultMinWidth, value);\n }\n return this._elementMinWidth;\n }\n public get elementMaxWidth(): number {\n if (!_.isNaN(this._elementMaxWidth)) {\n return this._elementMaxWidth;\n }\n this._elementMaxWidth = ViewUtil.getStageWidth();\n if (!_.isNaN(this.paddingLeft)) {\n this._elementMaxWidth -= this.paddingLeft;\n }\n if (!_.isNaN(this.paddingRight)) {\n this._elementMaxWidth -= this.paddingRight;\n }\n if (!_.isNaN(this.defaultMaxWidth)) {\n this._elementMaxWidth = Math.min(this.defaultMaxWidth, this._elementMaxWidth);\n }\n return this._elementMaxWidth;\n }\n\n public get elementHeight(): string {\n if (this._elementHeight) {\n return this._elementHeight;\n }\n this._elementHeight = 'auto';\n if (this.defaultHeight) {\n this._elementHeight = this.defaultHeight + 'px';\n }\n return this._elementHeight;\n }\n public get elementMinHeight(): number {\n if (!_.isNaN(this._elementMinHeight)) {\n return this._elementMinHeight;\n }\n this._elementMinHeight = 0;\n if (!_.isNaN(this.defaultMinHeight)) {\n let value = ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingTop)) {\n value -= this.paddingTop;\n }\n if (!_.isNaN(this.paddingBottom)) {\n value -= this.paddingBottom;\n }\n this._elementMinHeight = Math.min(this.defaultMinHeight, value);\n }\n return this._elementMinHeight;\n }\n\n public get elementMaxHeight(): number {\n if (!_.isNaN(this._elementMaxHeight)) {\n return this._elementMaxHeight;\n }\n this._elementMaxHeight = ViewUtil.getStageHeight();\n if (!_.isNaN(this.paddingTop)) {\n this._elementMaxHeight -= this.paddingTop;\n }\n if (!_.isNaN(this.paddingBottom)) {\n this._elementMaxHeight -= this.paddingBottom;\n }\n if (!_.isNaN(this.defaultMaxHeight)) {\n this._elementMaxHeight = Math.min(this.defaultMaxHeight, this._elementMaxHeight);\n }\n return this._elementMaxHeight;\n }\n}\n\nexport enum WindowAlign {\n START = 'START',\n CENTER = 'CENTER',\n END = 'END'\n}\n\nexport type WindowConfigOptions<T = any> = { [P in keyof WindowConfig<T>]?: any };\n","import { Observable } from 'rxjs';\nimport { INotificationContent } from './INotificationContent';\nimport { NotificationConfig } from './NotificationConfig';\n\nexport abstract class INotification<T = any> {\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n abstract getX(): number;\n abstract getY(): number;\n abstract setX(value: number): void;\n abstract setY(value: number): void;\n abstract move(x: number, y: number): void;\n\n abstract getWidth(): number;\n abstract getHeight(): number;\n abstract setWidth(value: number): void;\n abstract setHeight(value: number): void;\n abstract setSize(width: number, height: number): void;\n\n abstract close(): void;\n abstract remove(): void;\n abstract destroy(): void;\n\n abstract emit(event: string): void;\n\n // --------------------------------------------------------------------------\n //\n // \tInterface Methods\n //\n // --------------------------------------------------------------------------\n\n readonly events: Observable<string>;\n readonly container: HTMLElement;\n\n readonly config: NotificationConfig<T>;\n readonly content: INotificationContent<T>;\n}\n\nexport enum NotificationEvent {\n REMOVED = 'REMOVED'\n}\n","import { WindowConfig } from '../window/WindowConfig';\n\nexport class NotificationConfig<T = any> extends WindowConfig<T> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public icon: string;\n public sound: string;\n public iconId: string;\n public picture: string;\n\n public closeDuration: number = NaN;\n public isRemoveAfterClose: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(data?: T) {\n super();\n this.data = data;\n this.isModal = false;\n }\n}\n\nexport type NotificationConfigOptions<T = any> = { [P in keyof NotificationConfig<T>]?: any };\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { ArrayUtil, DateUtil, ObjectUtil } from '@ts-core/common/util';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { Observable, Subject } from 'rxjs';\nimport { IQuestion, IQuestionOptions, QuestionMode } from '../question/IQuestion';\nimport { QuestionManager } from '../question/QuestionManager';\nimport { WindowEvent } from '../window/IWindow';\nimport { WindowAlign } from '../window/WindowConfig';\nimport { INotification, NotificationEvent } from './INotification';\nimport { INotificationContent } from './INotificationContent';\nimport { NotificationConfig, NotificationConfigOptions } from './NotificationConfig';\nimport { NotificationFactory } from './NotificationFactory';\n\n@Injectable({ providedIn: 'root' })\nexport class NotificationService {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public factory: NotificationFactory<INotification>;\n public questionComponent: ComponentType<INotificationContent<any>>;\n\n protected dialog: MatDialog;\n protected language: LanguageService;\n\n protected _configs: Array<NotificationConfig>;\n protected _closedConfigs: Array<NotificationConfig>;\n protected _notifications: Map<NotificationConfig, INotificationContent<any>>;\n\n private observer: Subject<ObservableData<NotificationServiceEvent, INotification | NotificationConfig>>;\n\n public gapY: number = 25;\n\n public minWidth: number = 25;\n public minHeight: number = 25;\n\n public paddingTop: number = 25;\n public paddingLeft: number = 25;\n public paddingRight: number = 25;\n public paddingBottom: number = 25;\n\n public defaultCloseDuration: number = 10 * DateUtil.MILISECONDS_SECOND;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(dialog: MatDialog, language: LanguageService) {\n this._configs = [];\n this._closedConfigs = [];\n this._notifications = new Map();\n\n this.dialog = dialog;\n this.language = language;\n this.observer = new Subject();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public open<T>(component: ComponentType<INotificationContent<T>>, config: NotificationConfig): INotificationContent<T> {\n let notification = null;\n if (!_.isNil(config.id)) {\n notification = this.getById(config.id);\n if (notification) {\n return notification.content;\n }\n }\n\n this.setDefaultProperties(config);\n\n let reference: MatDialogRef<INotificationContent<T>> = this.dialog.open(component, config);\n notification = this.factory.create({ config, reference, overlay: (reference as any)._overlayRef });\n\n let subscription = notification.events.subscribe(event => {\n switch (event) {\n case WindowEvent.OPENED:\n this.add(config, reference.componentInstance);\n this.checkPosition(notification);\n if (config.sound) {\n // Assets.playSound(config.sound);\n }\n break;\n\n case WindowEvent.CLOSED:\n subscription.unsubscribe();\n this.close(config);\n break;\n\n case NotificationEvent.REMOVED:\n subscription.unsubscribe();\n this.remove(config);\n break;\n }\n });\n return notification.content;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private getById(id: string): INotification {\n let item = _.find(Array.from(this._notifications.values()), item => item.config.id === id);\n return !_.isNil(item) ? item.notification : null;\n }\n\n private setDefaultProperties(config: NotificationConfig): void {\n if (_.isNaN(config.defaultMinWidth)) {\n config.defaultMinWidth = this.minWidth;\n }\n if (_.isNaN(config.defaultMinHeight)) {\n config.defaultMinHeight = this.minHeight;\n }\n\n if (_.isNaN(config.paddingTop)) {\n config.paddingTop = this.paddingTop;\n }\n if (_.isNaN(config.paddingLeft)) {\n config.paddingLeft = this.paddingLeft;\n }\n if (_.isNaN(config.paddingRight)) {\n config.paddingRight = this.paddingRight;\n }\n if (_.isNaN(config.paddingBottom)) {\n config.paddingBottom = this.paddingBottom;\n }\n\n if (_.isNaN(config.closeDuration)) {\n config.closeDuration = this.defaultCloseDuration;\n }\n\n config.verticalAlign = WindowAlign.START;\n config.horizontalAlign = WindowAlign.END;\n config.setDefaultProperties();\n }\n\n private checkPosition(item: INotification): void {\n let previous = this.getPrevious(item);\n if (!_.isNil(previous)) {\n item.setY(previous.getY() + previous.getHeight() + this.gapY);\n }\n }\n\n private getPrevious(value: INotification): INotification {\n if (this.notifications.size === 0) {\n return null;\n }\n\n let items = Array.from(this.notifications.values());\n for (let i = 0; i < items.length; i++) {\n if (items[i].notification === value) {\n if (i === 0) {\n return null;\n }\n return items[i - 1].notification;\n }\n }\n return null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tSetters Methods\n //\n // --------------------------------------------------------------------------\n\n private add<T>(config: NotificationConfig, content: INotificationContent<T>): void {\n this._configs.push(config);\n this.observer.next(new ObservableData(NotificationServiceEvent.ADDED, config));\n\n this._notifications.set(config, content);\n this.observer.next(new ObservableData(NotificationServiceEvent.OPENED, content.notification));\n }\n\n // --------------------------------------------------------------------------\n //\n // \tHelp Methods\n //\n // --------------------------------------------------------------------------\n\n public get(value: NotificationId): NotificationConfig {\n if (_.isNil(value)) {\n return null;\n }\n if (value instanceof NotificationConfig) {\n return value;\n }\n\n let id = value.toString();\n if (ObjectUtil.instanceOf<NotificationConfigOptions>(value, ['id'])) {\n id = value.id;\n }\n for (let item of this.configs) {\n if (item.id === id) {\n return item;\n }\n }\n return null;\n }\n\n public has(value: NotificationId): boolean {\n return !_.isNil(this.get(value));\n }\n\n public remove(value: NotificationId): void {\n let config = this.get(value);\n if (_.isNil(config)) {\n return;\n }\n\n this.close(config);\n ArrayUtil.remove(this._configs, config);\n ArrayUtil.remove(this._closedConfigs, config);\n this.observer.next(new ObservableData(NotificationServiceEvent.REMOVED, config));\n config.destroy();\n }\n\n public removeAll(): void {\n this.configs.forEach(item => this.remove(item));\n }\n\n public close(value: NotificationId): INotification {\n let config = this.get(value);\n if (_.isNil(config)) {\n return null;\n }\n\n let notification = this._notifications.get(config);\n if (_.isNil(notification)) {\n return null;\n }\n\n notification.close();\n this._notifications.delete(config);\n\n this._closedConfigs.push(config);\n this.observer.next(new ObservableData(NotificationServiceEvent.CLOSED, notification.notification));\n return notification.notification;\n }\n\n public info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: NotificationConfigOptions): IQuestion {\n let text = this.language.translate(translationId, translation);\n let data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.INFO, text }));\n let config = _.assign(new NotificationConfig(data), configOptions);\n return this.open(this.questionComponent, config).config.data;\n }\n\n public question(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: NotificationConfigOptions): IQuestion {\n let text = this.language.translate(translationId, translation);\n let data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.QUESTION, text }));\n let config = _.assign(new NotificationConfig(data), configOptions);\n return this.open(this.questionComponent, config).config.data;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get events(): Observable<ObservableData<NotificationServiceEvent, NotificationConfig | INotification>> {\n return this.observer.asObservable();\n }\n\n public get configs(): Array<NotificationConfig> {\n return this._configs;\n }\n\n public get closedConfigs(): Array<NotificationConfig> {\n return this._closedConfigs;\n }\n\n public get notifications(): Map<NotificationConfig, INotificationContent<any>> {\n return this._notifications;\n }\n}\n\nexport type NotificationId = string | NotificationConfig | NotificationConfigOptions;\n\nexport enum NotificationServiceEvent {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n ADDED = 'ADDED',\n REMOVED = 'REMOVED'\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { NotificationConfig } from '../notification/NotificationConfig';\nimport { NotificationService, NotificationServiceEvent } from '../notification/NotificationService';\n\nexport class ShellBaseComponent extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public isNeedSide: boolean = false;\n public isHasNotifications: boolean = false;\n\n public isShowMenu: boolean = true;\n public isShowNotifications: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public notifications: NotificationService, public breakpointObserver: BreakpointObserver) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n // Notifications\n this.isHasNotificationsCheck();\n this.notifications.events\n .pipe(\n filter(data => data.type === NotificationServiceEvent.CLOSED || data.type === NotificationServiceEvent.REMOVED),\n takeUntil(this.destroyed)\n )\n .subscribe(() => this.isHasNotificationsCheck());\n\n // Menu Size\n this.isNeedSideCheck();\n this.breakpointObserver\n .observe(this.sideMediaQueryToCheck)\n .pipe(takeUntil(this.destroyed))\n .subscribe(() => this.isNeedSideCheck());\n }\n\n protected isHasNotificationsCheck(): void {\n this.isHasNotifications = !_.isEmpty(this.notificationItems);\n if (!this.isHasNotifications) {\n this.isShowNotifications = false;\n }\n }\n\n protected isNeedSideCheck(): void {\n this.isNeedSide = this.breakpointObserver.isMatched(this.sideMediaQueryToCheck);\n this.isShowMenu = this.isNeedSide;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public toggleMenu(): void {\n if (!this.isNeedSide) {\n this.isShowMenu = !this.isShowMenu;\n }\n }\n\n public toggleNotifications(): void {\n this.isShowNotifications = !this.isShowNotifications;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n protected get sideMediaQueryToCheck(): string {\n return `(min-width: 1000px)`;\n }\n\n public get notificationItems(): Array<NotificationConfig> {\n return this.notifications.closedConfigs;\n }\n}\n","import { Injector } from '@angular/core';\nimport * as _ from 'lodash';\n\nlet applicationInjector: Injector;\n\nexport const APPLICATION_INJECTOR = (value?: Injector): Injector => {\n if (!_.isNil(value)) {\n applicationInjector = value;\n }\n return applicationInjector;\n};\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { Assets } from '@ts-core/frontend/asset';\nimport * as _ from 'lodash';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-asset-background]'\n})\nexport class AssetBackgroundDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private _isUrl: boolean = false;\n private _isIcon: boolean = false;\n private _isImage: boolean = false;\n\n private _repeat: string = 'repeat';\n private _extension: string = 'png';\n private _background: string;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private element: ElementRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected setStyleProperties(): void {\n let url = this.getUrl(this.background, this.isImage, this.isIcon, this.isUrl);\n ViewUtil.setBackground(this.element, url, this.repeat);\n }\n\n private getUrl(id: string, isImage?: boolean, isIcon?: boolean, isUrl?: boolean): string {\n if (_.isNil(id)) {\n return null;\n }\n if (isUrl) {\n return id;\n }\n if (isImage) {\n return Assets.getImage(id, this.extension);\n }\n if (isIcon) {\n return Assets.getIcon(id, this.extension);\n }\n return Assets.getBackground(id, this.extension);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.element = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public set isIcon(value: boolean) {\n if (value === this._isIcon) {\n return;\n }\n this._isIcon = value;\n this.setStyleProperties();\n }\n public get isIcon(): boolean {\n return this._isIcon;\n }\n\n @Input()\n public set isImage(value: boolean) {\n if (value === this._isImage) {\n return;\n }\n this._isImage = value;\n this.setStyleProperties();\n }\n public get isImage(): boolean {\n return this._isImage;\n }\n\n @Input()\n public set isUrl(value: boolean) {\n if (value === this._isUrl) {\n return;\n }\n this._isUrl = value;\n this.setStyleProperties();\n }\n public get isUrl(): boolean {\n return this._isUrl;\n }\n\n @Input()\n public set repeat(value: string) {\n if (value === this._repeat) {\n return;\n }\n this._repeat = value;\n this.setStyleProperties();\n }\n public get repeat(): string {\n return this._repeat;\n }\n\n @Input()\n public set extension(value: string) {\n if (value === this._extension) {\n return;\n }\n this._extension = value;\n this.setStyleProperties();\n }\n public get extension(): string {\n return this._extension;\n }\n\n @Input('vi-asset-background')\n public set background(value: string) {\n if (value === this._background) {\n return;\n }\n this._background = value;\n this.setStyleProperties();\n }\n public get background(): string {\n return this._background;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetBackground'\n})\nexport class AssetBackgroundPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'png'): string {\n return Assets.getBackground(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetIcon'\n})\nexport class AssetIconPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'png'): string {\n return Assets.getIcon(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetFile'\n})\nexport class AssetFilePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string): string {\n return Assets.getFile(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetVideo'\n})\nexport class AssetVideoPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'mp4'): string {\n return Assets.getVideo(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetSound'\n})\nexport class AssetSoundPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'mp3'): string {\n return Assets.getSound(name, extension);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Assets } from '@ts-core/frontend/asset';\n\n@Pipe({\n name: 'viAssetImage'\n})\nexport class AssetImagePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(name: string, extension: string = 'png'): string {\n return Assets.getImage(name, extension);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AssetBackgroundDirective } from './AssetBackgroundDirective';\nimport { AssetBackgroundPipe } from './AssetBackgroundPipe';\nimport { AssetFilePipe } from './AssetFilePipe';\nimport { AssetIconPipe } from './AssetIconPipe';\nimport { AssetImagePipe } from './AssetImagePipe';\nimport { AssetSoundPipe } from './AssetSoundPipe';\nimport { AssetVideoPipe } from './AssetVideoPipe';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AssetBackgroundDirective, AssetImagePipe, AssetIconPipe, AssetFilePipe, AssetSoundPipe, AssetVideoPipe, AssetBackgroundPipe],\n exports: [AssetBackgroundDirective, AssetImagePipe, AssetIconPipe, AssetFilePipe, AssetSoundPipe, AssetVideoPipe, AssetBackgroundPipe]\n})\nexport class AssetModule {}\n","import { ICookieOptions, ICookieService } from '@ts-core/frontend/cookie';\nimport * as _ from 'lodash';\nimport * as Cookie from 'ngx-cookie';\nimport { CookieOptionsProvider } from 'ngx-cookie';\nimport { CookieOptions } from './CookieOptions';\n\nexport class CookieService extends Cookie.CookieService implements ICookieService {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(options?: CookieOptions) {\n options = _.assign(\n {\n path: '/',\n domain: null,\n expires: null,\n secure: false,\n httpOnly: false\n },\n options\n );\n super({ options } as CookieOptionsProvider);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public has(key: string): boolean {\n return !_.isNil(super.get(key));\n }\n\n public get(key: string, defaultValue?: string): string {\n return this.has(key) ? super.get(key) : defaultValue;\n }\n\n public getObject<T = any>(key: string, defaultValue?: T): T {\n return this.has(key) ? (super.getObject(key) as any) : defaultValue;\n }\n\n public putObject<T = any>(key: string, value: T, options?: CookieOptions): void {\n super.putObject(key, value as any, options);\n }\n\n public update(key: string, value: string, options?: ICookieOptions): void {\n if (!_.isNil(value)) {\n this.put(key, value, options);\n } else {\n this.remove(key);\n }\n }\n\n public updateObject(key: string, value: Object, options?: ICookieOptions): void {\n if (!_.isNil(value)) {\n this.putObject(key, value, options);\n } else {\n this.remove(key);\n }\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieOptions } from '@ts-core/frontend/cookie';\nimport { CookieService } from './CookieService';\n\n@NgModule()\nexport class CookieModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: ICookieOptions): ModuleWithProviders<CookieModule> {\n return {\n ngModule: CookieModule,\n providers: [\n {\n provide: COOKIE_OPTIONS,\n useValue: options || {}\n },\n {\n provide: CookieService,\n deps: [COOKIE_OPTIONS],\n useFactory: cookieServiceFactory\n }\n ]\n };\n }\n}\n\nexport function cookieServiceFactory(options: ICookieOptions): CookieService {\n return new CookieService(options);\n}\n\nexport const COOKIE_OPTIONS = new InjectionToken<ICookieOptions>(`COOKIE_OPTIONS`);\n","import { ResizeSensor } from 'css-element-queries';\nimport { IDestroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\n\nexport class ResizeManager implements IDestroyable {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected timer: any;\n protected sensor: ResizeSensor;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private element: HTMLElement, private handler: () => void, private delay: number = 0, private isForceResize: boolean = false) {\n this.timer = setTimeout(this.initialize);\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n\n private initialize = (): void => {\n this.sensor = new ResizeSensor(this.element, this.resizeHandler);\n if (this.isForceResize) {\n this.resizeHandler();\n }\n };\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n protected callHandler = (): void => {\n this.handler();\n };\n\n protected resizeHandler = () => {\n if (isNaN(this.delay) || this.delay <= 0) {\n this.callHandler();\n return;\n }\n\n clearTimeout(this.timer);\n this.timer = setTimeout(this.callHandler, this.delay);\n };\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (!_.isNil(this.timer)) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (!_.isNil(this.sensor)) {\n this.sensor.detach(this.resizeHandler);\n this.sensor = null;\n }\n this.handler = null;\n this.element = null;\n }\n}\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\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, this.commitResizeProperties, AspectRatioResizeDirective.UPDATE_DELAY);\n\n if (_.isNaN(this.ratio)) {\n this.ratio = 4 / 3;\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.element = null;\n\n if (!_.isNil(this.sensor)) {\n this.sensor.destroy();\n this.sensor = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n private get width(): number {\n return ViewUtil.getWidth(this.element);\n }\n\n private set width(value: number) {\n ViewUtil.setWidth(this.element, value, true);\n }\n\n private get height(): number {\n return ViewUtil.getHeight(this.element);\n }\n\n private set height(value: number) {\n ViewUtil.setHeight(this.element, value, true);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-aspect-ratio')\n public set direction(value: Direction) {\n if (value === this._direction || _.isNil(value)) {\n return;\n }\n this._direction = value;\n this.commitResizeProperties();\n }\n public get direction(): Direction {\n return this._direction;\n }\n\n @Input()\n public set ratio(value: number) {\n if (value === this._ratio) {\n return;\n }\n this._ratio = value;\n this.commitResizeProperties();\n }\n public get ratio(): number {\n return this._ratio;\n }\n}\n\nexport enum Direction {\n VERTICAL = 'VERTICAL',\n HORIZONTAL = 'HORIZONTAL'\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport * as _ from 'lodash';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-scroll]'\n})\nexport class ScrollDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static INITIALIZATION_DELAY: number = 1;\n\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public scrolled: EventEmitter<number> = new EventEmitter();\n @Input()\n public delay: number = 100;\n\n private timer: any;\n protected element: HTMLElement;\n protected isInitialized: boolean = false;\n\n protected _scrollValue: number = 0;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.element = ViewUtil.parseElement(element);\n this.timer = setTimeout(this.initializeHandler, ScrollDirective.INITIALIZATION_DELAY);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n if (this.scrollValue) {\n this.scrollTo(this.scrollValue);\n }\n this.isInitialized = true;\n }\n\n protected scrollTo(value: number): void {\n this._scrollValue = value;\n this.element.scrollTop = value;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('scroll')\n private scrollHandler() {\n if (!this.isInitialized) {\n return;\n }\n clearTimeout(this.timer);\n this.timer = setTimeout(this.scrollChanged, this.delay);\n }\n\n private scrollChanged = (): void => {\n this.scrollChangedHandler();\n };\n\n protected scrollChangedHandler(): void {\n this._scrollValue = this.scrollTop;\n this.scrolled.next(this._scrollValue);\n }\n\n protected initializeHandler = (): void => {\n this.initialize();\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n protected get scrollTop(): number {\n return this.element.scrollTop;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.element = null;\n this.isInitialized = false;\n\n clearTimeout(this.timer);\n this.timer = null;\n\n this._scrollValue = 0;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public set scrollValue(value: number) {\n if (value === this._scrollValue || _.isNaN(value)) {\n return;\n }\n this._scrollValue = value;\n if (this.isInitialized) {\n this.scrollTo(value);\n }\n }\n\n public get scrollValue(): number {\n return this._scrollValue;\n }\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { ScrollDirective } from './ScrollDirective';\n\n@Directive({\n selector: '[vi-infinite-scroll]'\n})\nexport class InfiniteScrollDirective extends ScrollDirective {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public top: EventEmitter<number> = new EventEmitter();\n @Output()\n public bottom: EventEmitter<number> = new EventEmitter();\n\n @Input()\n public elementHeight: number = 50;\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected scrollChangedHandler(): void {\n super.scrollChangedHandler();\n if (!this.isInitialized) {\n return;\n }\n let value = this.scrollTop;\n let bottomValue = value + this.clientHeight + this.elementHeight;\n\n if (bottomValue >= this.scrollHeight) {\n this.bottom.next(value);\n } else if (value <= this.elementHeight) {\n this.top.next(value);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.top = null;\n this.bottom = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n protected get clientHeight(): number {\n return this.element.clientHeight;\n }\n protected get scrollHeight() {\n return this.element.scrollHeight;\n }\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { InfiniteScrollDirective } from './InfiniteScrollDirective';\n@Directive({\n selector: '[vi-auto-scroll-bottom]'\n})\nexport class AutoScrollBottomDirective extends InfiniteScrollDirective {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public triggerChanged: EventEmitter<void> = new EventEmitter<void>();\n\n private _trigger: any;\n private triggerTimer: any;\n private triggerDelta: number = 0;\n\n private isScrollLocked: boolean = false;\n private lastScrollHeight: number;\n\n private isNeedScroll: boolean = true;\n private isNeedRemainScroll: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n if (!this._scrollValue) {\n this._scrollValue = this.scrollHeight;\n }\n super.initialize();\n }\n\n protected checkTrigger = () => {\n this.isScrollLocked = false;\n if (this.isNeedScroll) {\n this.scrollBottom();\n } else if (this.isNeedRemainScroll) {\n this.scrollRemain();\n } else if (this.triggerDelta > 0) {\n this.triggerDelta = 0;\n this.triggerChanged.emit();\n }\n };\n\n protected scrollRemain(): void {\n this.isNeedRemainScroll = false;\n this.scrollTo(this.scrollHeight - this.lastScrollHeight);\n }\n\n public scrollBottom(): void {\n this.scrollTo(this.scrollHeight);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected scrollChangedHandler() {\n super.scrollChangedHandler();\n if (!this.isInitialized || this.isScrollLocked) {\n return;\n }\n\n let value = this.scrollTop;\n let bottomValue = value + this.clientHeight + this.elementHeight;\n\n this.isNeedScroll = bottomValue >= this.scrollHeight;\n this.isNeedRemainScroll = value <= this.elementHeight;\n\n if (this.isNeedRemainScroll) {\n this.lastScrollHeight = this.scrollHeight;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n clearTimeout(this.triggerTimer);\n this.triggerTimer = null;\n this.trigger = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-auto-bottom-scroll')\n public set trigger(value: number) {\n if (value === this._trigger) {\n return;\n }\n if (!isNaN(this._trigger) && !isNaN(value)) {\n this.triggerDelta = value - this._trigger;\n }\n\n this._trigger = value;\n if (!this.isInitialized) {\n return;\n }\n this.isScrollLocked = true;\n clearTimeout(this.triggerTimer);\n this.triggerTimer = setTimeout(this.checkTrigger, InfiniteScrollDirective.INITIALIZATION_DELAY);\n }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { DateUtil } from '@ts-core/common/util';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-click-to-copy]'\n})\nexport class ClickToCopyDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-click-to-copy')\n public element: HTMLElement;\n private selectionClearTimer: any;\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('click', ['$event'])\n private clickHandler(event: MouseEvent) {\n ViewUtil.selectContent(this.element, true);\n\n clearTimeout(this.selectionClearTimer);\n this.selectionClearTimer = setTimeout(this.selectionRemove, DateUtil.MILISECONDS_SECOND / 2);\n }\n\n private selectionRemove = (): void => ViewUtil.selectContent(null);\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.element = null;\n clearTimeout(this.selectionClearTimer);\n }\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-click-to-select]'\n})\nexport class ClickToSelectDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.element = ViewUtil.parseElement(element.nativeElement);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('click', ['$event'])\n private clickHandler(event: MouseEvent) {\n if (event.detail >= 3) {\n ViewUtil.selectContent(this.element, true);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.element = null;\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\nimport * as _ from 'lodash';\n\nexport class FocusManager extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected timer: any;\n protected delay: number;\n protected element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, delay: number = 100) {\n super();\n this.delay = delay;\n this.element = ViewUtil.parseElement(element);\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n\n private focusElement = (): void => {\n if (!_.isNil(this.element)) {\n ViewUtil.focusInput(this.element as any);\n }\n };\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public focus(): void {\n clearTimeout(this.timer);\n this.timer = setTimeout(this.focusElement, this.delay);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this.timer)) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n\n this.element = null;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { FocusManager } from '../manager/FocusManager';\n\n@Directive({\n selector: '[vi-focus]'\n})\nexport class FocusDirective<T = any> extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private manager: FocusManager;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n this.manager = new FocusManager(element);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected focus = (): void => this.manager.focus();\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.manager.destroy();\n this.manager = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-focus')\n public set trigger(value: T) {\n this.focus();\n }\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-select-on-focus]'\n})\nexport class SelectOnFocusDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private element: ElementRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('focus')\n private focusHandler(): void {\n ViewUtil.selectContent(this.element.nativeElement);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.element = null;\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-html-content-title]'\n})\nexport class HTMLContentTitleDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _value: string;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected element: ElementRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitValueProperties(): void {\n let title = this.value;\n if (!_.isEmpty(title)) {\n title = title.replace(/<br\\s*[\\/]?>/g, '\\n');\n title = title.replace(/<[^>]*>/g, '');\n }\n ViewUtil.setProperty(this.element, 'title', title);\n ViewUtil.setProperty(this.element, 'innerHTML', this.value);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this._value = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-html-content-title')\n public set value(value: string) {\n if (value === this._value) {\n return;\n }\n this._value = value;\n if (!_.isNil(value)) {\n this.commitValueProperties();\n }\n }\n public get value(): string {\n return this._value;\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';\nimport { Interactable } from '@interactjs/types';\nimport * as interact from 'interactjs';\nimport { Destroyable } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[vi-resize]'\n})\nexport class ResizeDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Output()\n public resize: EventEmitter<any> = new EventEmitter();\n\n @Input()\n public isTop: boolean = false;\n @Input()\n public isLeft: boolean = false;\n @Input()\n public isRight: boolean = false;\n @Input()\n public isBottom: boolean = false;\n\n private interactable: Interactable;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super();\n\n this.interactable = interact.default(ViewUtil.parseElement(element));\n // this.interactable.styleCursor(false);\n\n let param = {} as any;\n param.top = this.isTop;\n param.left = this.isLeft;\n param.right = this.isRight;\n param.bottom = this.isBottom;\n this.interactable.resizable(param);\n this.interactable.on('resizemove', this.resizeHandler);\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n private resizeHandler = (event: any) => {\n if (event.dx !== 0 || event.dy !== 0) {\n this.resize.emit(event);\n }\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this.interactable)) {\n this.interactable.unset();\n this.interactable = null;\n }\n }\n}\n","import { MatPaginatorIntl } from '@angular/material/paginator';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { Subscription } from 'rxjs';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Injectable()\nexport class LanguageMatPaginatorIntl extends MatPaginatorIntl implements OnDestroy {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n public lastPageLabel: string;\n public nextPageLabel: string;\n public firstPageLabel: string;\n public previousPageLabel: string;\n public itemsPerPageLabel: string;\n\n protected subscription: Subscription;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected language: LanguageService) {\n super();\n\n this.commitLanguageProperties();\n this.subscription = this.language.completed.subscribe(() => this.commitLanguageProperties());\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitLanguageProperties(): void {\n this.lastPageLabel = this.language.translate('paginator.lastPage');\n this.nextPageLabel = this.language.translate('paginator.nextPage');\n this.firstPageLabel = this.language.translate('paginator.firstPage');\n this.previousPageLabel = this.language.translate('paginator.previousPage');\n this.itemsPerPageLabel = this.language.translate('paginator.itemsPerPage');\n this.getRangeLabel = this.languageRangeLabel;\n }\n\n protected languageRangeLabel = (page: number, pageSize: number, length: number): string => {\n let translation = { current: '0', total: '0' };\n if (length === 0 || pageSize === 0) {\n translation.total = length.toString();\n } else {\n length = Math.max(length, 0);\n let startIndex = page * pageSize;\n let endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\n translation.current = `${startIndex + 1} – ${endIndex}`;\n translation.total = length.toString();\n }\n return this.language.translate('paginator.pageRange', translation);\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public ngOnDestroy(): void {\n if (!_.isNil(this.subscription)) {\n this.subscription.unsubscribe();\n this.subscription = null;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTranslate',\n pure: false\n})\nexport class LanguagePipe extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private key: string;\n private params: string;\n private _value: string;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(this.valueUpdate);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private valueUpdate = (): void => {\n this._value = this.language.translate(this.key, this.params);\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string, params?: any): string {\n this.key = key;\n this.params = params;\n if (_.isNil(this._value)) {\n this.valueUpdate();\n }\n return this._value;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n\n this.key = null;\n this.params = null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\n\n@Pipe({\n name: 'viTranslatePure'\n})\nexport class LanguagePipePure extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string, params?: any): string {\n return this.language.translate(key, params);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n }\n}\n","import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';\nimport { LoadableEvent } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { PromiseHandler } from '@ts-core/common/promise';\n\nexport class LanguageRequireResolver implements Resolve<void> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected language: LanguageService) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<void> {\n if (this.language.isLoaded) {\n return Promise.resolve();\n }\n\n let promise = PromiseHandler.create<void>();\n let subscription = this.language.events.subscribe(data => {\n if (data.type === LoadableEvent.COMPLETE) {\n promise.resolve();\n } else if (data.type === LoadableEvent.ERROR) {\n promise.reject(data.error.toString());\n } else if (data.type === LoadableEvent.FINISHED) {\n subscription.unsubscribe();\n }\n });\n return promise.promise;\n }\n}\n","import { LanguageService } from '@ts-core/frontend/language';\nimport { LanguageRequireResolver } from './LanguageRequireResolver';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageResolver extends LanguageRequireResolver {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(language: LanguageService) {\n super(language);\n }\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-translate]'\n})\nexport class LanguageDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public isNeedTitle: boolean;\n\n protected _key: string;\n protected _params: any;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected element: ElementRef, protected language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.translate);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected translate(): void {\n if (_.isNil(this.key)) {\n return;\n }\n\n let value = this.language.translate(this.key, this.params);\n ViewUtil.setProperty(this.element, 'innerHTML', value);\n if (this.isNeedTitle) {\n ViewUtil.setProperty(this.element, 'title', value);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n\n super.destroy();\n this.language = null;\n\n this._key = null;\n this._params = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-translate')\n public set key(value: string) {\n if (value === this._key) {\n return;\n }\n this._key = value;\n if (!_.isNil(value)) {\n this.translate();\n }\n }\n public get key(): string {\n return this._key;\n }\n\n @Input()\n public set params(value: any) {\n if (value === this._params) {\n return;\n }\n this._params = value;\n this.translate();\n }\n public get params(): any {\n return this._params;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTranslateHas',\n pure: false\n})\nexport class LanguagePipeHas extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n private key: string;\n private _value: boolean;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(this.valueUpdate);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private valueUpdate = (): void => {\n this._value = this.language.isHasTranslation(this.key);\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string): boolean {\n this.key = key;\n if (_.isNil(this._value)) {\n this.valueUpdate();\n }\n return this._value;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n\n this.key = null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTranslateHasPure',\n pure: true\n})\nexport class LanguagePipeHasPure extends DestroyableContainer implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(key: string): boolean {\n return this.language.isHasTranslation(key);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.language = null;\n }\n}\n","import { Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[viTranslateHas]'\n})\nexport class LanguageHasDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _key: string;\n\n protected view: any;\n protected index: EmbeddedViewRef<any>;\n\n @Input()\n public isOnlyIfNotEmpty: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private template: TemplateRef<any>, private container: ViewContainerRef, protected language: LanguageService) {\n super();\n language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.check());\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected check(): void {\n let isNeedAdd = false;\n let isNeedRemove = false;\n let isHasTranslation = !_.isNil(this.key) && this.language.isHasTranslation(this.key, this.isOnlyIfNotEmpty);\n\n if (isHasTranslation) {\n if (_.isNil(this.view)) {\n isNeedAdd = true;\n }\n } else {\n if (!_.isNil(this.view)) {\n isNeedRemove = true;\n }\n }\n\n if (isNeedAdd) {\n this.view = this.container.createEmbeddedView(this.template);\n } else if (isNeedRemove) {\n let index = this.container.indexOf(this.view);\n if (index >= 0) {\n this.container.remove(index);\n this.view = null;\n }\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n\n super.destroy();\n this.language = null;\n\n this._key = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('viTranslateHas')\n public set key(value: string) {\n if (value === this._key) {\n return;\n }\n this._key = value;\n this.check();\n }\n public get key(): string {\n return this._key;\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieService } from '@ts-core/frontend/cookie';\nimport { ILanguageServiceOptions, LanguageService } from '@ts-core/frontend/language';\nimport { CookieModule } from '../cookie/CookieModule';\nimport { CookieService } from '../cookie/CookieService';\nimport { LanguageMatPaginatorIntl } from './LanguageMatPaginatorIntl';\nimport { LanguagePipe } from './LanguagePipe';\nimport { LanguagePipePure } from './LanguagePipePure';\nimport { LanguageResolver } from './LanguageResolver';\nimport { LanguageDirective } from './LanguageDirective';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { LanguagePipeHas } from './LanguagePipeHas';\nimport { LanguagePipeHasPure } from './LanguagePipeHasPure';\nimport { LanguageHasDirective } from './LanguageHasDirective';\nimport * as _ from 'lodash';\n\n@NgModule({\n imports: [CookieModule],\n declarations: [LanguagePipe, LanguagePipePure, LanguagePipeHas, LanguagePipeHasPure, LanguageHasDirective, LanguageDirective],\n exports: [LanguagePipe, LanguagePipePure, LanguagePipeHas, LanguagePipeHasPure, LanguageHasDirective, LanguageDirective]\n})\nexport class LanguageModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: ILanguageServiceOptions): ModuleWithProviders<LanguageModule> {\n return {\n ngModule: LanguageModule,\n providers: [\n {\n provide: LANGUAGE_OPTIONS,\n useValue: options || {}\n },\n {\n provide: LanguageService,\n deps: [CookieService, LANGUAGE_OPTIONS],\n useFactory: languageServiceFactory\n },\n {\n provide: LanguageResolver,\n deps: [LanguageService],\n useClass: LanguageResolver\n },\n {\n provide: MatPaginatorIntl,\n deps: [LanguageService],\n useClass: LanguageMatPaginatorIntl\n }\n ]\n };\n }\n}\n\nexport function languageServiceFactory(cookie: ICookieService, options?: ILanguageServiceOptions): LanguageService {\n if (!_.isNil(options) && _.isNil(options.service)) {\n options.service = cookie;\n }\n return new LanguageService(options);\n}\n\nexport const LANGUAGE_OPTIONS = new InjectionToken<ILanguageServiceOptions>(`LANGUAGE_OPTIONS`);\n","import { IWindow } from './IWindow';\nimport { WindowProperties } from './WindowProperties';\n\nexport class WindowFactory<U extends IWindow> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected classType: WindowType<U>) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public create(properties: WindowProperties): U {\n return new this.classType(properties);\n }\n}\n\nexport interface WindowType<T> {\n new (properties: WindowProperties): T;\n}\n","import { MatDialogRef } from '@angular/material/dialog';\nimport * as _ from 'lodash';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowAlign, WindowConfig } from './WindowConfig';\n\nexport abstract class WindowBase<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _x: number = NaN;\n protected _width: number = NaN;\n\n protected _y: number = NaN;\n protected _height: number = NaN;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected abstract getConfig(): WindowConfig<T>;\n protected abstract getReference(): MatDialogRef<any>;\n protected abstract getContainer(): HTMLElement;\n\n protected setProperties(): void {\n let config = this.getConfig();\n if (!_.isNaN(config.defaultWidth)) {\n this.width = config.defaultWidth;\n }\n if (!_.isNaN(config.defaultHeight)) {\n this.height = config.defaultHeight;\n }\n }\n\n protected setPosition(): void {\n let config = this.getConfig();\n\n switch (config.horizontalAlign) {\n case WindowAlign.START:\n this.x = !_.isNaN(this.paddingLeft) ? this.paddingLeft : 0;\n break;\n case WindowAlign.END:\n let value = ViewUtil.getStageWidth() - this.calculateWidth();\n if (!_.isNaN(this.paddingRight)) {\n value -= this.paddingRight;\n }\n this.x = value;\n break;\n default:\n this.x = (ViewUtil.getStageWidth() - this.calculateWidth()) / 2;\n break;\n }\n\n switch (config.verticalAlign) {\n case WindowAlign.START:\n this.y = !_.isNaN(this.paddingTop) ? this.paddingTop : 0;\n break;\n case WindowAlign.END:\n let value = ViewUtil.getStageHeight() - this.calculateHeight();\n if (!_.isNaN(this.paddingBottom)) {\n value -= this.paddingBottom;\n }\n this.y = value;\n break;\n default:\n this.y = (ViewUtil.getStageHeight() - this.calculateHeight()) / 2;\n break;\n }\n }\n\n protected clearSize(): void {\n this._x = NaN;\n this._y = NaN;\n this._width = NaN;\n this._height = NaN;\n }\n\n protected commitSizeProperties(): void {\n let width = !_.isNaN(this.width) ? this.width + 'px' : 'auto';\n let height = !_.isNaN(this.height) ? this.height + 'px' : 'auto';\n this.getReference().updateSize(width, height);\n }\n\n protected commitPositionProperties(): void {\n if (_.isNaN(this._x) && _.isNaN(this._y)) {\n return;\n }\n let position = {} as any;\n if (!_.isNaN(this._y)) {\n position.top = this._y + 'px';\n }\n if (!_.isNaN(this._x)) {\n position.left = this._x + 'px';\n }\n this.getReference().updatePosition(position);\n }\n\n protected updatePosition = (): void => this.setPosition();\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public calculateWidth(): number {\n return !_.isNaN(this.width) ? this.width : ViewUtil.getWidth(this.getContainer());\n }\n public calculateHeight(): number {\n return !_.isNaN(this.height) ? this.height : ViewUtil.getHeight(this.getContainer());\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n protected get width(): number {\n return this._width;\n }\n protected set width(value: number) {\n value = this.getConfig().parseWidth(value);\n if (value === this._width) {\n return;\n }\n this._width = value;\n this.commitSizeProperties();\n }\n\n protected get height(): number {\n return this._height;\n }\n protected set height(value: number) {\n value = this.getConfig().parseHeight(value);\n if (value === this._height) {\n return;\n }\n this._height = value;\n this.commitSizeProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get x(): number {\n return this._x;\n }\n\n public set x(value: number) {\n value = this.getConfig().parseX(value);\n if (value === this._x) {\n return;\n }\n this._x = value;\n this.commitPositionProperties();\n }\n\n public get y(): number {\n return this._y;\n }\n\n public set y(value: number) {\n value = this.getConfig().parseY(value);\n if (value === this._y) {\n return;\n }\n this._y = value;\n this.commitPositionProperties();\n }\n\n public get paddingTop(): number {\n return this.getConfig().paddingTop;\n }\n\n public get paddingLeft(): number {\n return this.getConfig().paddingLeft;\n }\n\n public get paddingRight(): number {\n return this.getConfig().paddingRight;\n }\n\n public get paddingBottom(): number {\n return this.getConfig().paddingBottom;\n }\n}\n","import { MatDialogRef } from '@angular/material/dialog';\nimport { Observable, Subject, Subscription, filter, takeUntil } from 'rxjs';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { IWindow, WindowEvent } from './IWindow';\nimport { IWindowContent } from './IWindowContent';\nimport { WindowBase } from './WindowBase';\nimport { WindowConfig } from './WindowConfig';\nimport { WindowProperties } from './WindowProperties';\nimport * as _ from 'lodash';\n\nexport class WindowImpl<T = any> extends WindowBase<T> implements IWindow {\n // --------------------------------------------------------------------------\n //\n // Constants\n //\n // --------------------------------------------------------------------------\n\n public static BLINK_DELAY = 500;\n public static SHAKE_DELAY = 500;\n public static RESIZE_DELAY = 200;\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n private _isBlink: boolean = false;\n private blinkTimer: any;\n\n private _isShaking: boolean = false;\n private shakeTimer: any;\n\n private resizeTimer: any;\n\n private _isOnTop: boolean = false;\n private _isDisabled: boolean = false;\n private _isMinimized: boolean = false;\n\n private isOpened: boolean = false;\n private isWasOnTop: boolean = false;\n\n private _wrapper: HTMLElement;\n private _backdrop: HTMLElement;\n private _container: HTMLElement;\n\n protected properties: WindowProperties;\n\n protected subscription: Subscription;\n protected observer: Subject<string>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(properties: WindowProperties) {\n super();\n this.observer = new Subject();\n\n this.properties = properties;\n this.content.window = this;\n\n // Have to save for unsubscribe on destroy\n this._wrapper = this.properties.overlay.hostElement;\n this._backdrop = this.properties.overlay.backdropElement;\n this._container = this.properties.overlay.overlayElement;\n\n this.setProperties();\n this.getReference().afterOpened().pipe(takeUntil(this.destroyed)).subscribe(this.setOpened);\n this.getReference().afterClosed().pipe(takeUntil(this.destroyed)).subscribe(this.setClosed);\n\n this.events\n .pipe(\n filter(event => event === WindowEvent.CONTENT_READY),\n takeUntil(this.destroyed)\n )\n .subscribe(this.updatePosition);\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setClosed = (): void => {\n this.isOpened = false;\n this.emit(WindowEvent.CLOSED);\n this.destroy();\n };\n\n protected setOpened = (): void => {\n this.isOpened = true;\n this.emit(WindowEvent.OPENED);\n };\n\n protected blinkToggle = (): void => {\n this.isBlink = !this.isBlink;\n };\n\n protected stopShaking = (): void => {\n this.isShaking = false;\n };\n\n protected emitResize = (): void => {\n this.emit(WindowEvent.RESIZED);\n };\n\n protected setProperties(): void {\n super.setProperties();\n ViewUtil.addClass(this.container, 'vi-window');\n ViewUtil.toggleClass(this.container, 'vi-modal', this.config.isModal);\n\n if (!this.config.isModal) {\n this.container.addEventListener('click', this.mouseClickHandlerProxy, true);\n this.container.addEventListener('mousedown', this.mouseDownHandlerProxy);\n }\n }\n\n protected commitIsBlinkProperties(): void {}\n protected commitIsShakingProperties(): void {}\n protected commitIsDisabledProperties(): void {}\n protected commitIsMinimizedProperties(): void {}\n\n protected getConfig(): WindowConfig {\n return this.properties.config;\n }\n protected getContainer(): HTMLElement {\n return this.container;\n }\n protected getReference(): MatDialogRef<IWindowContent<T>> {\n return this.properties.reference;\n }\n\n protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n return !this.isWasOnTop;\n }\n\n private stopBlinkIfNeed(): void {\n this.isBlink = false;\n if (!this.blinkTimer) {\n return;\n }\n clearInterval(this.blinkTimer);\n this.blinkTimer = null;\n }\n\n protected resizeHandler = (): void => {\n if (!this.isOpened) {\n return;\n }\n clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(this.emitResize, WindowImpl.RESIZE_DELAY);\n };\n\n protected mouseDownHandler(event: MouseEvent): void {\n this.setOnTop();\n }\n\n protected mouseClickHandler(event: MouseEvent): void {\n if (this.isNeedClickStopPropagation(event)) {\n event.stopPropagation();\n }\n if (!this.isWasOnTop) {\n this.isWasOnTop = true;\n }\n }\n\n private mouseDownHandlerProxy = (event: MouseEvent): void => {\n this.mouseDownHandler(event);\n };\n\n private mouseClickHandlerProxy = (event: MouseEvent): void => {\n this.mouseClickHandler(event);\n };\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public emit(event: string): void {\n this.observer.next(event);\n }\n\n public close(): void {\n this.getReference().close();\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this._container.removeEventListener('click', this.mouseClickHandlerProxy, true);\n this._container.removeEventListener('mousedown', this.mouseDownHandlerProxy);\n\n if (!_.isNil(this.content)) {\n this.content.destroy();\n }\n\n if (!_.isNil(this.observer)) {\n this.observer.complete();\n this.observer = null;\n }\n\n this.properties = null;\n\n this._wrapper = null;\n this._backdrop = null;\n this._container = null;\n\n clearInterval(this.blinkTimer);\n this.blinkTimer = null;\n\n clearInterval(this.shakeTimer);\n this.shakeTimer = null;\n\n clearTimeout(this.resizeTimer);\n this.resizeTimer = null;\n }\n\n public blink(): void {\n clearInterval(this.blinkTimer);\n this.blinkTimer = setInterval(this.blinkToggle, WindowImpl.BLINK_DELAY);\n }\n\n public shake(): void {\n if (this.isShaking) {\n return;\n }\n this.isShaking = true;\n clearInterval(this.shakeTimer);\n this.shakeTimer = setInterval(this.stopShaking, WindowImpl.SHAKE_DELAY);\n }\n\n public setOnTop(): void {\n this.isWasOnTop = this.isOnTop;\n this.emit(WindowEvent.SET_ON_TOP);\n }\n\n // --------------------------------------------------------------------------\n //\n // Size Methods\n //\n // --------------------------------------------------------------------------\n\n public getWidth(): number {\n return this.width;\n }\n\n public getHeight(): number {\n return this.height;\n }\n\n public setWidth(value: number, isNeedNotify: boolean = true): void {\n this.width = value;\n if (isNeedNotify) {\n this.resizeHandler();\n }\n }\n\n public setHeight(value: number, isNeedNotify: boolean = true): void {\n this.height = value;\n if (isNeedNotify) {\n this.resizeHandler();\n }\n }\n\n public setSize(width: number, height: number): void {\n this.setWidth(width, false);\n this.setHeight(height, false);\n this.resizeHandler();\n }\n\n // --------------------------------------------------------------------------\n //\n // Move Methods\n //\n // --------------------------------------------------------------------------\n\n public getX(): number {\n return this.x;\n }\n\n public setX(value: number, isNeedNotify: boolean = true): void {\n this.x = value;\n if (isNeedNotify) {\n this.emit(WindowEvent.MOVED);\n }\n }\n\n public getY(): number {\n return this.y;\n }\n public setY(value: number, isNeedNotify: boolean = true): void {\n this.y = value;\n if (isNeedNotify) {\n this.emit(WindowEvent.MOVED);\n }\n }\n\n public move(x: number, y: number): void {\n this.setX(x, false);\n this.setY(y, false);\n this.emit(WindowEvent.MOVED);\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Properties\n //\n // --------------------------------------------------------------------------\n\n protected get isBlink(): boolean {\n return this._isBlink;\n }\n protected set isBlink(value: boolean) {\n if (value === this._isBlink) {\n return;\n }\n this._isBlink = value;\n this.commitIsBlinkProperties();\n }\n\n protected get isShaking(): boolean {\n return this._isShaking;\n }\n protected set isShaking(value: boolean) {\n if (value === this._isShaking) {\n return;\n }\n this._isShaking = value;\n this.commitIsShakingProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get events(): Observable<string> {\n return this.observer.asObservable();\n }\n\n public get config(): WindowConfig {\n return this.properties.config;\n }\n\n public get content(): IWindowContent {\n return this.properties.reference ? this.properties.reference.componentInstance : null;\n }\n\n public get container(): HTMLElement {\n return this._container;\n }\n\n public get wrapper(): HTMLElement {\n return this._wrapper;\n }\n\n public get backdrop(): HTMLElement {\n return this._backdrop;\n }\n\n public get isOnTop(): boolean {\n return this._isOnTop;\n }\n public set isOnTop(value: boolean) {\n if (value === this._isOnTop) {\n return;\n }\n this._isOnTop = value;\n clearInterval(this.blinkTimer);\n this.isBlink = false;\n }\n\n public get isMinimized(): boolean {\n return this._isMinimized;\n }\n public set isMinimized(value: boolean) {\n if (value === this._isMinimized) {\n return;\n }\n this._isMinimized = value;\n this.commitIsMinimizedProperties();\n this.emit(WindowEvent.MINIMIZED_CHANGED);\n this.stopBlinkIfNeed();\n }\n\n public get isDisabled(): boolean {\n return this._isDisabled;\n }\n public set isDisabled(value: boolean) {\n if (value === this._isDisabled) {\n return;\n }\n this._isDisabled = value;\n this.commitIsDisabledProperties();\n this.emit(WindowEvent.DISABLED_CHANGED);\n }\n}\n","import { Observable, Subject, takeUntil, Subscription } from 'rxjs';\nimport * as _ from 'lodash';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { WindowConfig } from '../window/WindowConfig';\nimport { IWindow, WindowEvent } from '../window/IWindow';\nimport { IWindowContent } from '../window/IWindowContent';\nimport { WindowProperties } from '../window/WindowProperties';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowImpl } from '../window/WindowImpl';\n\nexport class BottomSheetImpl<T = any> extends DestroyableContainer implements IWindow {\n // --------------------------------------------------------------------------\n //\n // Constants\n //\n // --------------------------------------------------------------------------\n\n public static BLINK_DELAY = 500;\n public static SHAKE_DELAY = 500;\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n private _isBlink: boolean = false;\n private blinkTimer: any;\n\n private _isDisabled: boolean = false;\n private _wrapper: HTMLElement;\n private _backdrop: HTMLElement;\n private _container: HTMLElement;\n\n protected properties: WindowProperties;\n\n protected subscription: Subscription;\n protected observer: Subject<string>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(properties: WindowProperties) {\n super();\n this.observer = new Subject();\n\n this.properties = properties;\n this.content.window = this;\n\n // Have to save for unsubscribe on destroy\n this._wrapper = this.properties.overlay.hostElement;\n this._backdrop = this.properties.overlay.backdropElement;\n this._container = this.properties.overlay.overlayElement;\n\n this.setProperties();\n this.getReference().afterOpened().pipe(takeUntil(this.destroyed)).subscribe(this.setOpened);\n this.getReference().afterDismissed().pipe(takeUntil(this.destroyed)).subscribe(this.setClosed);\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setClosed = (): void => {\n this.emit(WindowEvent.CLOSED);\n this.destroy();\n };\n\n protected setOpened = (): void => {\n this.emit(WindowEvent.OPENED);\n };\n\n protected blinkToggle = (): void => {\n this.isBlink = !this.isBlink;\n };\n\n protected setProperties(): void {\n ViewUtil.addClass(this.container, 'vi-bottom-sheet');\n ViewUtil.toggleClass(this.container, 'vi-modal', this.config.isModal);\n\n if (!this.config.isModal) {\n this.container.addEventListener('click', this.mouseClickHandlerProxy, true);\n this.container.addEventListener('mousedown', this.mouseDownHandlerProxy);\n }\n }\n\n protected commitIsBlinkProperties(): void {}\n protected commitIsDisabledProperties(): void {}\n\n protected getConfig(): WindowConfig {\n return this.properties.config;\n }\n protected getContainer(): HTMLElement {\n return this.container;\n }\n protected getReference(): MatBottomSheetRef<IWindowContent<T>> {\n return this.properties.reference as any;\n }\n\n protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n return false;\n }\n\n private stopBlinkIfNeed(): void {\n this.isBlink = false;\n if (!this.blinkTimer) {\n return;\n }\n clearInterval(this.blinkTimer);\n this.blinkTimer = null;\n }\n\n protected mouseDownHandler(event: MouseEvent): void {\n this.setOnTop();\n }\n\n protected mouseClickHandler(event: MouseEvent): void {\n if (this.isNeedClickStopPropagation(event)) {\n event.stopPropagation();\n }\n }\n\n private mouseDownHandlerProxy = (event: MouseEvent): void => {\n this.mouseDownHandler(event);\n };\n\n private mouseClickHandlerProxy = (event: MouseEvent): void => {\n this.mouseClickHandler(event);\n };\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public emit(event: string): void {\n this.observer.next(event);\n }\n\n public close(): void {\n this.getReference().dismiss();\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this._container.removeEventListener('click', this.mouseClickHandlerProxy, true);\n this._container.removeEventListener('mousedown', this.mouseDownHandlerProxy);\n\n if (!_.isNil(this.content)) {\n this.content.destroy();\n }\n\n if (!_.isNil(this.observer)) {\n this.observer.complete();\n this.observer = null;\n }\n\n this.properties = null;\n\n this._wrapper = null;\n this._backdrop = null;\n this._container = null;\n\n clearInterval(this.blinkTimer);\n this.blinkTimer = null;\n }\n\n public blink(): void {\n clearInterval(this.blinkTimer);\n this.blinkTimer = setInterval(this.blinkToggle, WindowImpl.BLINK_DELAY);\n }\n\n public shake(): void {}\n\n public setOnTop(): void {}\n\n // --------------------------------------------------------------------------\n //\n // Size Methods\n //\n // --------------------------------------------------------------------------\n\n public getWidth(): number {\n return NaN;\n }\n\n public getHeight(): number {\n return NaN;\n }\n\n public setWidth(value: number, isNeedNotify: boolean = true): void {}\n\n public setHeight(value: number, isNeedNotify: boolean = true): void {}\n\n public setSize(width: number, height: number): void {}\n\n // --------------------------------------------------------------------------\n //\n // Move Methods\n //\n // --------------------------------------------------------------------------\n\n public getX(): number {\n return NaN;\n }\n\n public setX(value: number, isNeedNotify: boolean = true): void {}\n\n public getY(): number {\n return NaN;\n }\n public setY(value: number, isNeedNotify: boolean = true): void {}\n\n public move(x: number, y: number): void {}\n\n // --------------------------------------------------------------------------\n //\n // Private Properties\n //\n // --------------------------------------------------------------------------\n\n protected get reference(): MatBottomSheetRef<IWindowContent<T>> {\n return this.properties.reference as any;\n }\n\n protected get isBlink(): boolean {\n return this._isBlink;\n }\n protected set isBlink(value: boolean) {\n if (value === this._isBlink) {\n return;\n }\n this._isBlink = value;\n this.commitIsBlinkProperties();\n }\n\n protected get isShaking(): boolean {\n return false;\n }\n protected set isShaking(value: boolean) {}\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get events(): Observable<string> {\n return this.observer.asObservable();\n }\n\n public get config(): WindowConfig {\n return this.properties.config;\n }\n\n public get content(): IWindowContent {\n return !_.isNil(this.reference) ? this.reference.instance : null;\n }\n\n public get container(): HTMLElement {\n return this._container;\n }\n\n public get wrapper(): HTMLElement {\n return this._wrapper;\n }\n\n public get backdrop(): HTMLElement {\n return this._backdrop;\n }\n\n public get isOnTop(): boolean {\n return false;\n }\n public set isOnTop(value: boolean) {}\n\n public get isMinimized(): boolean {\n return false;\n }\n public set isMinimized(value: boolean) {}\n\n public get isDisabled(): boolean {\n return this._isDisabled;\n }\n public set isDisabled(value: boolean) {\n if (value === this._isDisabled) {\n return;\n }\n this._isDisabled = value;\n this.commitIsDisabledProperties();\n this.emit(WindowEvent.DISABLED_CHANGED);\n }\n}\n","import { AfterViewInit, Component, ElementRef, Injectable } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { ViewUtil } from '../../util/ViewUtil';\nimport { IWindow } from '../IWindow';\n\n@Component({ template: '' })\nexport class WindowElement extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _window: IWindow;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected element: ElementRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected checkWindowParent(): void {\n let container = this.getContainer();\n if (container) {\n ViewUtil.appendChild(container, this.element.nativeElement);\n }\n }\n\n protected getContainer(): HTMLElement {\n let item = ViewUtil.parseElement(this.element.nativeElement);\n while (item && item.nodeName.toLowerCase() !== 'mat-dialog-container') {\n item = item.parentElement;\n }\n return item;\n }\n\n protected createChildren(): void {}\n\n protected destroyChildren(): void {}\n\n protected commitWindowProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n this.createChildren();\n this.checkWindowParent();\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.destroyChildren();\n\n this.element = null;\n this.window = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Properties\n //\n // --------------------------------------------------------------------------\n\n protected get nativeElement(): HTMLElement {\n return this.element ? this.element.nativeElement : null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get window(): IWindow {\n return this._window;\n }\n public set window(value: IWindow) {\n if (value === this._window) {\n return;\n }\n this._window = value;\n if (this.window) {\n this.commitWindowProperties();\n }\n }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowElement } from '../../../window/component/WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-bottom-sheet-close-element',\n styleUrls: ['bottom-sheet-close-element.component.scss'],\n template: ''\n})\nexport class BottomSheetCloseElementComponent extends WindowElement {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n public static ICON_CLASS: string = 'fas fa-times';\n public static ICON_VALUE: string = null;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super(element);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected createChildren(): void {\n super.createChildren();\n\n if (!_.isNil(BottomSheetCloseElementComponent.ICON_VALUE)) {\n ViewUtil.setProperty(this.nativeElement, 'innerHTML', BottomSheetCloseElementComponent.ICON_VALUE);\n }\n if (!_.isNil(BottomSheetCloseElementComponent.ICON_CLASS)) {\n ViewUtil.addClasses(this.nativeElement, BottomSheetCloseElementComponent.ICON_CLASS);\n }\n ViewUtil.addClass(this.nativeElement, 'mouse-active');\n this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n super.destroyChildren();\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent): void => {\n event.stopPropagation();\n if (!_.isNil(this.window)) {\n this.window.close();\n }\n };\n}\n","import { ComponentFactoryResolver, ComponentRef, ViewContainerRef } from '@angular/core';\nimport { APPLICATION_INJECTOR } from '../../ApplicationInjector';\nimport { ViewUtil } from '../../util/ViewUtil';\nimport { BottomSheetImpl } from '../BottomSheetImpl';\nimport { BottomSheetCloseElementComponent } from './bottom-sheet-close-element/bottom-sheet-close-element.component';\n\nexport class BottomSheetBaseComponent extends BottomSheetImpl {\n // --------------------------------------------------------------------------\n //\n // Static Properties\n //\n // --------------------------------------------------------------------------\n\n public static CLOSE_COMPONENT = BottomSheetCloseElementComponent;\n\n // --------------------------------------------------------------------------\n //\n // Properties Methods\n //\n // --------------------------------------------------------------------------\n\n protected closeWindow: ComponentRef<any>;\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setProperties(): void {\n super.setProperties();\n this.createWindowComponents();\n }\n\n protected createWindowComponents(): void {\n if (!(this.content.container instanceof ViewContainerRef)) {\n return;\n }\n if (!this.config.disableClose && !this.closeWindow) {\n let factory = this.resolver.resolveComponentFactory(BottomSheetBaseComponent.CLOSE_COMPONENT);\n this.closeWindow = this.content.container.createComponent(factory);\n this.closeWindow.instance.window = this;\n }\n }\n\n protected commitIsBlinkProperties(): void {\n ViewUtil.toggleClass(this.container, this.blinkClass, this.isBlink);\n }\n\n protected commitIsDisabledProperties(): void {\n ViewUtil.toggleClass(this.container, this.disabledClass, this.isDisabled);\n ViewUtil.toggleClass(this.content.element, this.disabledClass, this.isDisabled);\n ViewUtil.toggleClass(this.content.element.nativeElement.parentElement, this.disabledClass, this.isDisabled);\n }\n\n protected commitIsShakingProperties(): void {\n ViewUtil.toggleClass(this.container, this.shakingClass, this.isShaking);\n }\n\n protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n if (!super.isNeedClickStopPropagation(event)) {\n return false;\n }\n if (this.closeWindow && this.closeWindow.location.nativeElement === event.target) {\n return false;\n }\n return true;\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Properties\n //\n // --------------------------------------------------------------------------\n\n protected get resolver(): ComponentFactoryResolver {\n return APPLICATION_INJECTOR().get(ComponentFactoryResolver);\n }\n\n protected get blinkClass(): string {\n return 'vi-blink';\n }\n\n protected get disabledClass(): string {\n return 'vi-disabled';\n }\n\n protected get minimizedClass(): string {\n return 'vi-minimized';\n }\n\n protected get shakingClass(): string {\n return 'shake-constant shake-horizontal';\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n // Components will destroy automatically\n this.closeWindow = null;\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Destroyable } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { Observable, Subject } from 'rxjs';\nimport { CookieService } from '../cookie/CookieService';\nimport { IQuestion, IQuestionOptions, QuestionMode } from '../question/IQuestion';\nimport { QuestionManager } from '../question/QuestionManager';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowQuestionComponent } from './component/window-question/window-question.component';\nimport { WindowBaseComponent } from './component/WindowBaseComponent';\nimport { IWindow, WindowEvent } from './IWindow';\nimport { IWindowContent } from './IWindowContent';\nimport { WindowAlign, WindowConfig, WindowConfigOptions } from './WindowConfig';\nimport { WindowFactory } from './WindowFactory';\n\n@Injectable({ providedIn: 'root' })\nexport class WindowService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public factory: WindowFactory<IWindow>;\n public questionComponent: ComponentType<IWindowContent>;\n public isNeedCheckPositionAfterOpen: boolean = true;\n\n protected dialog: MatDialog;\n protected language: LanguageService;\n\n private _windows: Map<WindowConfig, IWindowContent>;\n\n private observer: Subject<ObservableData<WindowServiceEvent, IWindow>>;\n private properties: PropertiesManager;\n\n public gapX: number = 25;\n public gapY: number = 25;\n\n public minWidth: number = 100;\n public minHeight: number = 100;\n\n public paddingTop: number = 25;\n public paddingLeft: number = 25;\n public paddingRight: number = 25;\n public paddingBottom: number = 25;\n\n public defaultVerticalAlign: WindowAlign = WindowAlign.CENTER;\n public defaultHorizontalAlign: WindowAlign = WindowAlign.CENTER;\n\n public topZIndex: number = 999;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(dialog: MatDialog, language: LanguageService, cookies: CookieService) {\n super();\n this._windows = new Map();\n\n this.dialog = dialog;\n this.language = language;\n this.observer = new Subject();\n this.properties = new PropertiesManager(cookies);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private sortFunction(first: IWindow, second: IWindow): number {\n let firstIndex = first.container ? parseInt(ViewUtil.getStyle(first.container.parentElement, 'zIndex'), 10) : -1;\n let secondIndex = second.container ? parseInt(ViewUtil.getStyle(second.container.parentElement, 'zIndex'), 10) : -1;\n return firstIndex > secondIndex ? -1 : 1;\n }\n\n private updateTop(): void {\n let zIndex = 0;\n let topWindow: IWindow = null;\n\n for (let window of this.windowsArray) {\n if (_.isNil(window.container)) {\n continue;\n }\n let index = parseInt(ViewUtil.getStyle(window.container.parentElement, 'zIndex'), 10);\n if (zIndex >= index) {\n continue;\n }\n zIndex = index;\n topWindow = window;\n }\n\n if (_.isNil(topWindow) || topWindow.isOnTop) {\n return;\n }\n topWindow.isOnTop = true;\n this.observer.next(new ObservableData(WindowServiceEvent.SETTED_ON_TOP, topWindow));\n }\n\n private setWindowOnTop(topWindow: IWindow): void {\n let currentIndex = this.topZIndex - 2;\n for (let window of this.windowsArray) {\n if (_.isNil(window.container)) {\n continue;\n }\n window.isOnTop = window === topWindow;\n\n let zIndex = window.isOnTop ? this.topZIndex : currentIndex--;\n ViewUtil.setStyle(window.backdrop, 'zIndex', zIndex);\n ViewUtil.setStyle(window.wrapper, 'zIndex', zIndex);\n }\n\n this.windowsArray.sort(this.sortFunction);\n this.observer.next(new ObservableData(WindowServiceEvent.SETTED_ON_TOP, topWindow));\n }\n\n private checkPosition(item: IWindow): void {\n while (this.hasSamePosition(item)) {\n item.move(item.getX() + this.gapX, item.getY() + this.gapY);\n }\n }\n\n private hasSamePosition(itemWindow: IWindow): boolean {\n let x = itemWindow.getX();\n let y = itemWindow.getY();\n\n let result = false;\n this.windowsArray.forEach(window => {\n if (window !== itemWindow && x === window.getX() && y === window.getY()) {\n result = true;\n }\n });\n return result;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tSetters Methods\n //\n // --------------------------------------------------------------------------\n\n private add(config: WindowConfig, content: IWindowContent): void {\n this._windows.set(config, content);\n this.observer.next(new ObservableData(WindowServiceEvent.OPENED, content.window));\n }\n\n private remove(config: WindowConfig): void {\n let window = this._windows.get(config);\n if (!window) {\n return null;\n }\n\n window.close();\n this._windows.delete(config);\n this.observer.next(new ObservableData(WindowServiceEvent.CLOSED, window.window));\n }\n\n private getById<T>(id: string): IWindow<T> {\n let item = _.find(Array.from(this._windows.values()), item => item.config.id === id);\n return !_.isNil(item) ? item.window : null;\n }\n\n private setDefaultProperties(config: WindowConfig): void {\n if (!config.verticalAlign) {\n config.verticalAlign = this.defaultVerticalAlign;\n }\n if (!config.horizontalAlign) {\n config.horizontalAlign = this.defaultHorizontalAlign;\n }\n\n if (_.isNaN(config.defaultMinWidth)) {\n config.defaultMinWidth = this.minWidth;\n }\n if (_.isNaN(config.defaultMinHeight)) {\n config.defaultMinHeight = this.minHeight;\n }\n\n if (_.isNaN(config.paddingTop)) {\n config.paddingTop = this.paddingTop;\n }\n if (_.isNaN(config.paddingLeft)) {\n config.paddingLeft = this.paddingLeft;\n }\n if (_.isNaN(config.paddingRight)) {\n config.paddingRight = this.paddingRight;\n }\n if (_.isNaN(config.paddingBottom)) {\n config.paddingBottom = this.paddingBottom;\n }\n\n if (config.propertiesId) {\n this.properties.load(config.propertiesId, config);\n }\n\n config.setDefaultProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public open<T extends IWindowContent>(component: ComponentType<T>, config: WindowConfig): T {\n let window: IWindow<T> = null;\n if (config.id) {\n window = this.getById(config.id);\n if (window) {\n return window.content as T;\n }\n }\n\n this.setDefaultProperties(config);\n\n // let dialog = this.dialog as any;\n // dialog._getOverlayState = config.isModal ? dialog.getOverlayStateModal : dialog.getOverlayStateNonModal;\n\n let reference: MatDialogRef<IWindowContent> = this.dialog.open(component, config);\n window = this.factory.create({ config, reference, overlay: (reference as any)._overlayRef });\n\n let subscription = window.events.subscribe(event => {\n switch (event) {\n case WindowEvent.OPENED:\n this.add(config, reference.componentInstance);\n this.setWindowOnTop(window);\n if (this.isNeedCheckPositionAfterOpen) {\n this.checkPosition(window);\n }\n break;\n\n case WindowEvent.CLOSED:\n subscription.unsubscribe();\n this.remove(config);\n if (window.isOnTop && this.windows.size > 0) {\n this.updateTop();\n }\n break;\n\n case WindowEvent.RESIZED:\n if (!_.isNil(config.propertiesId)) {\n this.properties.save(config.propertiesId, window);\n }\n break;\n\n case WindowEvent.SET_ON_TOP:\n this.setWindowOnTop(window);\n break;\n }\n });\n return window.content as T;\n }\n\n public get(value: WindowId): IWindowContent {\n let id = value.toString();\n if (value instanceof WindowConfig) {\n id = value.id;\n }\n if (!id) {\n return null;\n }\n let window = this.getById(id);\n if (_.isNil(window)) {\n return null;\n }\n return window.content;\n }\n\n public has(value: WindowId): boolean {\n return !_.isNil(this.get(value));\n }\n\n public setOnTop(value: WindowId): boolean {\n let content = this.get(value);\n if (!content) {\n return false;\n }\n content.window.setOnTop();\n return true;\n }\n\n public removeAll(): void {\n this.windowsArray.forEach(window => window.close());\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.removeAll();\n\n if (!_.isNil(this.observer)) {\n this.observer.complete();\n this.observer = null;\n }\n\n if (!_.isNil(this.properties)) {\n this.properties.destroy();\n this.properties = null;\n }\n\n this.factory = null;\n this.properties = null;\n this.questionComponent = null;\n\n this.dialog = null;\n this.language = null;\n\n this._windows = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tAdditional Methods\n //\n // --------------------------------------------------------------------------\n\n public info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion {\n let text = this.language.translate(translationId, translation);\n let config: WindowConfig<QuestionManager> = _.assign(new WindowConfig(true, false, 450), configOptions);\n config.data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.INFO, text }));\n return this.open(this.questionComponent, config).config.data;\n }\n\n public question(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion {\n let text = this.language.translate(translationId, translation);\n let config: WindowConfig<QuestionManager> = _.assign(new WindowConfig(true, false, 450), configOptions);\n config.data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.QUESTION, text }));\n return this.open(this.questionComponent, config).config.data;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Properties\n //\n // --------------------------------------------------------------------------\n\n private get windowsArray(): Array<IWindow> {\n return Array.from(this.windows.values()).map(item => item.window);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get events(): Observable<ObservableData<WindowServiceEvent, IWindow>> {\n return this.observer.asObservable();\n }\n\n public get windows(): Map<WindowConfig, IWindowContent> {\n return this._windows;\n }\n}\n\nexport class PropertiesManager extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private cookies: CookieService) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public load(name: string, config: WindowConfig): void {\n let item = this.cookies.getObject(name + 'Window') as any;\n if (!item) {\n return;\n }\n if (item.hasOwnProperty('width')) {\n config.defaultWidth = item.width;\n }\n if (item.hasOwnProperty('height')) {\n config.defaultHeight = item.height;\n }\n }\n\n public save(name: string, window: IWindow): void {\n this.cookies.putObject(name + 'Window', {\n width: window.getWidth(),\n height: window.getHeight()\n });\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.cookies = null;\n }\n}\n\nexport type WindowId = string | WindowConfig;\n\nexport enum WindowServiceEvent {\n OPENED = 'OPENED',\n CLOSED = 'CLOSED',\n SETTED_ON_TOP = 'SETTED_ON_TOP'\n}\n","import { AfterViewInit, ElementRef, Injectable, ViewContainerRef, Inject, Optional, Component, InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { IWindow, WindowEvent } from './IWindow';\nimport { WindowConfig } from './WindowConfig';\nimport * as _ from 'lodash';\n\n@Component({ template: '' })\nexport abstract class IWindowContent<T = any> extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n // Properties=\n //\n // --------------------------------------------------------------------------\n\n protected _window: IWindow<T>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(@Optional() @Inject(WINDOW_CONTENT_CONTAINER) public container: WindowContentContainer) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitWindowProperties(): void {\n this.commitConfigProperties();\n }\n\n protected commitConfigProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n this.emit(WindowEvent.CONTENT_READY);\n }\n\n public ngOnDestroy(): void {\n // do nothing, window will destroy content after closing\n }\n\n public blink(): void {\n if (!_.isNil(this.window)) {\n this.window.blink();\n }\n }\n\n public shake(): void {\n if (!_.isNil(this.window)) {\n this.window.shake();\n }\n }\n\n public emit(event: string): void {\n if (!_.isNil(this.window)) {\n this.window.emit(event);\n }\n }\n\n public close(): void {\n if (!_.isNil(this.window)) {\n this.window.close();\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.window = null;\n this.container = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Proxy Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get data(): T {\n return !_.isNil(this.config) ? this.config.data : null;\n }\n\n public get isOnTop(): boolean {\n return !_.isNil(this.window) ? this.window.isOnTop : false;\n }\n\n public get isMinimized(): boolean {\n return !_.isNil(this.window) ? this.window.isMinimized : false;\n }\n\n public get events(): Observable<string> {\n return !_.isNil(this.window) ? this.window.events : null;\n }\n\n public get isDisabled(): boolean {\n return !_.isNil(this.window) ? this.window.isDisabled : false;\n }\n\n public set isDisabled(value: boolean) {\n if (!_.isNil(this.window)) {\n this.window.isDisabled = value;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get element(): ElementRef {\n if (_.isNil(this.container)) {\n return null;\n }\n return this.container instanceof ViewContainerRef ? this.container.element : this.container;\n }\n\n public get config(): WindowConfig<T> {\n return !_.isNil(this.window) ? this.window.config : null;\n }\n\n public get window(): IWindow<T> {\n return this._window;\n }\n public set window(value: IWindow<T>) {\n if (value === this._window) {\n return;\n }\n this._window = value;\n if (!_.isNil(value)) {\n this.commitWindowProperties();\n }\n }\n}\n\nexport type WindowContentContainer = ElementRef | ViewContainerRef;\nexport const WINDOW_CONTENT_CONTAINER = new InjectionToken<WindowContentContainer>('WINDOW_CONTENT_CONTAINER');\n","import { QuestionManager } from '../../question/QuestionManager';\nimport { IWindowContent } from '../IWindowContent';\n\nexport abstract class WindowQuestionBaseComponent extends IWindowContent<QuestionManager> {\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitConfigProperties(): void {\n super.commitConfigProperties();\n this.data.closePromise.then(() => {\n if (!this.isDestroyed) {\n this.close();\n }\n });\n }\n}\n","import { Component, ViewContainerRef } from '@angular/core';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowQuestionBaseComponent } from '../WindowQuestionBaseComponent';\nimport * as _ from 'lodash';\n\n@Component({\n templateUrl: 'window-question.component.html'\n})\nexport class WindowQuestionComponent extends WindowQuestionBaseComponent {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public text: string;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(container: ViewContainerRef, protected language: LanguageService) {\n super(container);\n ViewUtil.addClasses(container.element, 'd-block');\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitConfigProperties(): void {\n super.commitConfigProperties();\n\n if (!_.isNil(this.data.text)) {\n this.text = this.data.text.replace(/(?:\\r\\n|\\r|\\n)/g, `<br/>`);\n }\n\n if (this.language.isHasTranslation(this.data.options.yesTextId)) {\n this.data.yesText = this.language.translate(this.data.options.yesTextId);\n }\n if (this.language.isHasTranslation(this.data.options.notTextId)) {\n this.data.notText = this.language.translate(this.data.options.notTextId);\n }\n if (this.language.isHasTranslation(this.data.options.checkTextId)) {\n this.data.checkText = this.language.translate(this.data.options.checkTextId);\n }\n if (this.language.isHasTranslation(this.data.options.closeTextId)) {\n this.data.closeText = this.language.translate(this.data.options.closeTextId);\n }\n }\n}\n","<p class=\"text m-4 text-center mouse-inactive text-word-wrap-break-word\" [innerHTML]=\"text\"></p>\n\n<div class=\"text-center border-sm-top p-3\">\n\n <button (click)=\"data?.closeClickHandler()\" mat-stroked-button *ngIf=\"data?.isInfo\">\n <span [innerHTML]=\"data?.closeText\"></span>\n </button>\n\n <button class=\"mr-3\" (click)=\"data?.yesClickHandler()\" color=\"primary\" mat-stroked-button *ngIf=\"data?.isQuestion\">\n <span [innerHTML]=\"data?.yesText\"></span>\n </button>\n\n <button (click)=\"data?.notClickHandler()\" mat-stroked-button *ngIf=\"data?.isQuestion\">\n <span [innerHTML]=\"data?.notText\"></span>\n </button>\n\n</div>","import { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { MatBottomSheet, MatBottomSheetConfig, MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { Destroyable } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { Observable, Subject } from 'rxjs';\nimport { WindowFactory } from '../window/WindowFactory';\nimport { IWindow } from '../window/IWindow';\nimport { BottomSheetBaseComponent } from './component/BottomSheetBaseComponent';\nimport { WindowConfig, WindowConfigOptions } from '../window/WindowConfig';\nimport { IWindowContent } from '../window/IWindowContent';\nimport { WindowServiceEvent } from '../window/WindowService';\nimport { QuestionManager } from '../question/QuestionManager';\nimport { IQuestion, IQuestionOptions, QuestionMode } from '../question/IQuestion';\nimport { WindowQuestionComponent } from '../window/component/window-question/window-question.component';\n\n@Injectable({ providedIn: 'root' })\nexport class BottomSheetService extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public factory: WindowFactory<IWindow>;\n public questionComponent: ComponentType<IWindowContent>;\n\n protected dialog: MatBottomSheet;\n protected language: LanguageService;\n\n private observer: Subject<ObservableData<WindowServiceEvent, IWindow>>;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(dialog: MatBottomSheet, language: LanguageService) {\n super();\n this.dialog = dialog;\n this.language = language;\n this.observer = new Subject();\n\n this.factory = new WindowFactory(BottomSheetBaseComponent);\n this.questionComponent = WindowQuestionComponent;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public open<T extends IWindowContent>(component: ComponentType<T>, config: WindowConfig): T {\n let reference: MatBottomSheetRef<T> = this.dialog.open(component, config as MatBottomSheetConfig<T>);\n\n let window = this.factory.create({ config, reference: reference as any, overlay: (reference as any)._overlayRef });\n let subscription = window.events.subscribe(event => {\n switch (event) {\n case WindowServiceEvent.OPENED:\n this.observer.next(new ObservableData(WindowServiceEvent.OPENED, window));\n break;\n\n case WindowServiceEvent.CLOSED:\n subscription.unsubscribe();\n this.observer.next(new ObservableData(WindowServiceEvent.CLOSED, window));\n break;\n }\n });\n return window.content as T;\n }\n\n public removeAll(): void {}\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.removeAll();\n\n if (!_.isNil(this.observer)) {\n this.observer.complete();\n this.observer = null;\n }\n\n this.factory = null;\n this.questionComponent = null;\n\n this.dialog = null;\n this.language = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tAdditional Methods\n //\n // --------------------------------------------------------------------------\n\n public info(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion {\n let text = this.language.translate(translationId, translation);\n let config: WindowConfig<QuestionManager> = _.assign(new WindowConfig(true, false, 450), configOptions);\n config.data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.INFO, text }));\n return this.open(this.questionComponent, config).config.data;\n }\n\n public question(translationId?: string, translation?: any, questionOptions?: IQuestionOptions, configOptions?: WindowConfigOptions): IQuestion {\n let text = this.language.translate(translationId, translation);\n let config: WindowConfig<QuestionManager> = _.assign(new WindowConfig(true, false, 450), configOptions);\n config.data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.QUESTION, text }));\n return this.open(this.questionComponent, config).config.data;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get events(): Observable<ObservableData<WindowServiceEvent, IWindow>> {\n return this.observer.asObservable();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { LanguageModule } from '../language/LanguageModule';\nimport { BottomSheetService } from './BottomSheetService';\nimport { MatBottomSheet, MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { BottomSheetCloseElementComponent } from './component/bottom-sheet-close-element/bottom-sheet-close-element.component';\n\nconst IMPORTS = [CommonModule, FormsModule, MatBottomSheetModule, MatButtonModule, LanguageModule];\nconst ENTRY_COMPONENTS = [BottomSheetCloseElementComponent];\nconst DECLARATIONS = [...ENTRY_COMPONENTS];\n\nconst EXPORTS = [...DECLARATIONS];\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS\n})\nexport class BottomSheetModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(): ModuleWithProviders<BottomSheetModule> {\n return {\n ngModule: BottomSheetService,\n providers: [\n {\n provide: BottomSheetService,\n deps: [MatBottomSheet, LanguageService],\n useClass: BottomSheetService\n }\n ]\n };\n }\n}\n","import { MatDialogRef } from '@angular/material/dialog';\nimport { Observable, Subject, filter, takeUntil } from 'rxjs';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { WindowEvent } from '../window/IWindow';\nimport { WindowBase } from '../window/WindowBase';\nimport { INotification, NotificationEvent } from './INotification';\nimport { INotificationContent } from './INotificationContent';\nimport { NotificationConfig } from './NotificationConfig';\nimport { NotificationProperties } from './NotificationProperties';\nimport * as _ from 'lodash';\n\nexport class NotificationImpl<T = any> extends WindowBase implements INotification {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n private _container: HTMLElement;\n\n protected properties: NotificationProperties;\n\n protected timer: any;\n protected observer: Subject<string>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(properties: NotificationProperties) {\n super();\n this.observer = new Subject();\n\n this.properties = properties;\n this.content.notification = this;\n\n // Have to save for unsubscribe on destroy\n this._container = this.properties.overlay.overlayElement;\n\n this.setProperties();\n this.getReference().afterOpened().pipe(takeUntil(this.destroyed)).subscribe(this.setOpened);\n this.getReference().afterClosed().pipe(takeUntil(this.destroyed)).subscribe(this.setClosed);\n\n this.observer\n .pipe(\n filter(event => event === WindowEvent.CONTENT_READY),\n takeUntil(this.destroyed)\n )\n .subscribe(this.updatePosition);\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setProperties(): void {\n super.setProperties();\n ViewUtil.addClass(this.container, 'vi-notification');\n }\n\n protected setClosed = (): void => {\n this.emit(WindowEvent.CLOSED);\n this.destroy();\n };\n\n protected setOpened = (): void => {\n this.emit(WindowEvent.OPENED);\n };\n\n protected getConfig(): NotificationConfig {\n return this.properties.config;\n }\n protected getContainer(): HTMLElement {\n return this.container;\n }\n protected getReference(): MatDialogRef<INotificationContent> {\n return this.properties.reference;\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public emit(event: string): void {\n this.observer.next(event);\n }\n\n public close(): void {\n this.getReference().close();\n }\n\n public remove(): void {\n this.close();\n this.observer.next(NotificationEvent.REMOVED);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this.observer)) {\n this.observer.complete();\n this.observer = null;\n }\n this.properties = null;\n this._container = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Size Methods\n //\n // --------------------------------------------------------------------------\n\n public getWidth(): number {\n return this.calculateWidth();\n }\n\n public getHeight(): number {\n return this.calculateHeight();\n }\n\n public setWidth(value: number): void {\n this.width = value;\n }\n\n public setHeight(value: number): void {\n this.height = value;\n }\n\n public setSize(width: number, height: number): void {\n this.setWidth(width);\n this.setHeight(height);\n }\n\n // --------------------------------------------------------------------------\n //\n // Move Methods\n //\n // --------------------------------------------------------------------------\n\n public getX(): number {\n return this.x;\n }\n\n public setX(value: number): void {\n this.x = value;\n }\n\n public getY(): number {\n return this.y;\n }\n public setY(value: number): void {\n this.y = value;\n }\n\n public move(x: number, y: number): void {\n this.setX(x);\n this.setY(y);\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get events(): Observable<string> {\n return this.observer.asObservable();\n }\n\n public get config(): NotificationConfig {\n return this.properties.config;\n }\n\n public get content(): INotificationContent<T> {\n return this.properties.reference ? this.properties.reference.componentInstance : null;\n }\n\n public get container(): HTMLElement {\n return this._container;\n }\n}\n","import { NotificationImpl } from '../../notification/NotificationImpl';\n\nexport class NotificationBaseComponent extends NotificationImpl {}\n","import { AfterViewInit, Component, Directive, Injectable, Input, ViewContainerRef } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { Observable } from 'rxjs';\nimport { WindowEvent } from '../window/IWindow';\nimport { INotification } from './INotification';\nimport { NotificationConfig } from './NotificationConfig';\nimport * as _ from 'lodash';\n\n@Component({ template: '' })\nexport abstract class INotificationContent<T = any> extends DestroyableContainer implements AfterViewInit {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected timer: any;\n protected _config: NotificationConfig<T>;\n protected _notification: INotification<T>;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public container: ViewContainerRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitNotificationProperties(): void {\n this.config = this.notification.config;\n }\n\n protected commitConfigProperties(): void {\n this.clearTimer();\n if (this.config.closeDuration > 0) {\n this.timer = setTimeout(this.timerHandler, this.config.closeDuration);\n }\n }\n\n protected clearTimer(): void {\n if (!_.isNil(this.timer)) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n protected timerHandler = (): void => this.handleCloseClick();\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public close(): void {\n if (!_.isNil(this.notification)) {\n this.notification.close();\n }\n }\n\n public remove(): void {\n if (!_.isNil(this.notification)) {\n this.notification.remove();\n }\n }\n\n public emit(event: string): void {\n if (!_.isNil(this.notification)) {\n this.notification.emit(event);\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.clearTimer();\n this.config = null;\n this.notification = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n public ngAfterViewInit(): void {\n this.emit(WindowEvent.CONTENT_READY);\n }\n\n public handleCloseClick(): void {\n this.clearTimer();\n if (!_.isNil(this.config) && this.config.isRemoveAfterClose) {\n this.remove();\n } else {\n this.close();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Proxy Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get data(): T {\n return this.config ? this.config.data : null;\n }\n\n public get events(): Observable<string> {\n return this.notification ? this.notification.events : null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get notification(): INotification<T> {\n return this._notification;\n }\n public set notification(value: INotification<T>) {\n if (value === this._notification) {\n return;\n }\n this._notification = value;\n if (this._notification) {\n this.commitNotificationProperties();\n }\n }\n\n @Input()\n public set config(value: NotificationConfig<T>) {\n if (value === this._config) {\n return;\n }\n this._config = value;\n if (this._config) {\n this.commitConfigProperties();\n }\n }\n public get config(): NotificationConfig<T> {\n return this._config;\n }\n}\n","import { Component, HostListener, Injectable } from '@angular/core';\nimport { INotificationContent } from '../../notification/INotificationContent';\nimport { QuestionManager } from '../../question/QuestionManager';\nimport { ViewUtil } from '../../util/ViewUtil';\n\n@Component({ template: '' })\nexport abstract class NotificationQuestionBaseComponent extends INotificationContent<QuestionManager> {\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitConfigProperties(): void {\n super.commitConfigProperties();\n\n if (this.isInfo) {\n ViewUtil.addClass(this.container, 'mouse-active');\n }\n\n this.data.closePromise.then(() => {\n if (!this.isDestroyed) {\n this.remove();\n }\n });\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('click')\n public clickHandler(): void {\n if (this.isInfo) {\n this.data.closeClickHandler();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Properties\n //\n // --------------------------------------------------------------------------\n\n protected get isInfo(): boolean {\n return this.data ? this.data.isInfo : false;\n }\n}\n","import { Component, ViewContainerRef } from '@angular/core';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { NotificationService } from '../../NotificationService';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { NotificationQuestionBaseComponent } from '../NotificationQuestionBaseComponent';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-notification',\n templateUrl: 'notification.component.html',\n styleUrls: ['notification.component.scss']\n})\nexport class NotificationComponent extends NotificationQuestionBaseComponent {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(container: ViewContainerRef, private language: LanguageService, private notifications: NotificationService) {\n super(container);\n ViewUtil.addClasses(container.element, 'd-block');\n ViewUtil.setAttribute(container.element, 'tabindex', '-1');\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitConfigProperties(): void {\n super.commitConfigProperties();\n\n if (this.language.isHasTranslation(this.data.options.yesTextId)) {\n this.data.yesText = this.language.translate(this.data.options.yesTextId);\n }\n if (this.language.isHasTranslation(this.data.options.notTextId)) {\n this.data.notText = this.language.translate(this.data.options.notTextId);\n }\n if (this.language.isHasTranslation(this.data.options.checkTextId)) {\n this.data.checkText = this.language.translate(this.data.options.checkTextId);\n }\n if (this.language.isHasTranslation(this.data.options.closeTextId)) {\n this.data.closeText = this.language.translate(this.data.options.closeTextId);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public remove(): void {\n super.remove();\n if (_.isNil(this.notification)) {\n this.notifications.remove(this.config);\n }\n }\n}\n","<p class=\"text m-4 text-center mouse-inactive text-word-wrap-break-word\" [innerHTML]=\"data?.text\"></p>\n\n<div class=\"text-center border-sm-top p-3\" *ngIf=\"data?.isQuestion\">\n\n <button class=\"mr-3\" (click)=\"data?.yesClickHandler()\" tabindex=\"-1\" color=\"primary\" mat-stroked-button>\n <span [innerHTML]=\"data?.yesText\"></span>\n </button>\n\n <button (click)=\"data?.notClickHandler()\" tabindex=\"-1\" mat-stroked-button>\n <span [innerHTML]=\"data?.notText\"></span>\n </button>\n\n</div>","import { INotification } from './INotification';\nimport { NotificationProperties } from './NotificationProperties';\n\nexport class NotificationFactory<U extends INotification> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected classType: { new (properties: NotificationProperties): U }) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public create(properties: NotificationProperties): U {\n return new this.classType(properties);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { LanguageModule } from '../language/LanguageModule';\nimport { NotificationBaseComponent } from './component/NotificationBaseComponent';\nimport { NotificationComponent } from './component/notification/notification.component';\nimport { NotificationFactory } from './NotificationFactory';\nimport { NotificationService } from './NotificationService';\n\nconst IMPORTS = [CommonModule, FormsModule, MatDialogModule, MatButtonModule, LanguageModule];\nconst ENTRY_COMPONENTS = [];\nconst DECLARATIONS = [NotificationComponent, ...ENTRY_COMPONENTS];\n\nconst EXPORTS = [...DECLARATIONS];\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS\n})\nexport class NotificationModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(): ModuleWithProviders<NotificationModule> {\n return {\n ngModule: NotificationService,\n providers: [\n {\n provide: NotificationService,\n deps: [MatDialog, LanguageService],\n useFactory: notificationServiceFactory\n }\n ]\n };\n }\n}\n\nexport function notificationServiceFactory(dialog: MatDialog, language: LanguageService): NotificationService {\n let item = new NotificationService(dialog, language);\n item.factory = new NotificationFactory(NotificationBaseComponent);\n item.questionComponent = NotificationComponent;\n return item;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viCamelCase'\n})\nexport class CamelCasePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any): string {\n if (!value) {\n return '---';\n }\n return _.camelCase(value);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport numeral from 'numeral';\n\n@Pipe({\n name: 'viFinance'\n})\nexport class FinancePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = '0,0';\n\n // --------------------------------------------------------------------------\n //\n //\tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static format(value: number | string, format: string): string {\n value = Number(value);\n try {\n return numeral(value).format(format);\n } catch (error) {\n return value.toString();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: number | string, format?: string, isNeedPlus: boolean = false): string {\n value = Number(value);\n if (_.isNaN(value)) {\n return '---';\n }\n if (_.isNil(format)) {\n format = FinancePipe.DEFAULT_FORMAT;\n }\n if (isNeedPlus) {\n format = '+' + format;\n }\n return FinancePipe.format(value, format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { Moment } from 'moment';\nimport moment from 'moment';\nimport { GetFilterableCondition, RemoveFilterableCondition } from '@ts-core/common/dto';\n\n@Pipe({\n name: 'viMomentDate'\n})\nexport class MomentDatePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = 'LLL';\n\n // --------------------------------------------------------------------------\n //\n //\tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static parseMoment(value: MomentAvailableType, format?: string): Moment {\n if (_.isDate(value)) {\n return moment(value);\n }\n if (_.isString(value)) {\n return moment(value, format);\n }\n if (_.isNumber(value)) {\n return moment().milliseconds(value);\n }\n return value as Moment;\n }\n\n public static fromNow(value: MomentAvailableType, format: string = 'LLL'): string {\n if (_.isNil(value)) {\n return '---';\n }\n\n let item = MomentDatePipe.parseMoment(value);\n let date = item.fromNow();\n date = date.charAt(0).toUpperCase() + date.slice(1);\n if (!_.isNil(format)) {\n date += ' (' + item.format(format) + ')';\n }\n return date;\n }\n\n public static toConditionValue(value: string | Date): string {\n if (_.isNil(value)) {\n return undefined;\n }\n value = value.toString();\n let item = MomentDatePipe.parseMoment(RemoveFilterableCondition(value));\n return item.isValid() ? `${GetFilterableCondition(value) || '='}${item.toDate().toString()}` : undefined;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: MomentAvailableType, format?: string): string {\n if (_.isNil(value)) {\n return '---';\n }\n\n let moment = MomentDatePipe.parseMoment(value);\n return moment.format(format || MomentDatePipe.DEFAULT_FORMAT);\n }\n}\nexport type MomentAvailableType = Date | Moment | string | number;\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { Moment } from 'moment';\nimport moment from 'moment';\nimport { MomentDatePipe } from './MomentDatePipe';\n\n@Pipe({\n name: 'viMomentAdaptiveDate'\n})\nexport class MomentDateAdaptivePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n public static HOUR_FORMAT = 'HH:ss';\n public static DAY_FORMAT = 'DD MMM HH:ss';\n public static MONTH_FORMAT = 'DD MMM HH:ss';\n public static YEAR_FORMAT = 'LLL';\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: Date | Moment): string {\n if (_.isNaN(value)) {\n return '---';\n }\n\n let item = MomentDatePipe.parseMoment(value);\n let duration = moment.duration(moment().diff(item));\n\n let format = null;\n if (Math.abs(duration.asYears()) >= 1) {\n format = MomentDateAdaptivePipe.YEAR_FORMAT;\n } else if (Math.abs(duration.asMonths()) >= 1) {\n format = MomentDateAdaptivePipe.MONTH_FORMAT;\n } else if (Math.abs(duration.asDays()) >= 1) {\n format = MomentDateAdaptivePipe.DAY_FORMAT;\n } else {\n format = MomentDateAdaptivePipe.HOUR_FORMAT;\n }\n return item.format(format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Moment } from 'moment';\nimport { MomentDatePipe } from './MomentDatePipe';\n\n@Pipe({\n name: 'viMomentDateFromNow'\n})\nexport class MomentDateFromNowPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: Date | Moment, format?: string): string {\n return MomentDatePipe.fromNow(value, format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MomentAvailableType, MomentDatePipe } from './MomentDatePipe';\nimport * as _ from 'lodash';\nimport moment from 'moment';\n\n@Pipe({\n name: 'viMomentTime'\n})\nexport class MomentTimePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tConstants\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = 'hh:mm:ss';\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(timeMilliseconds: number, format?: string): string {\n if (_.isNil(timeMilliseconds)) {\n return '---';\n }\n\n return moment()\n .startOf('day')\n .add(timeMilliseconds, 'milliseconds')\n .format(format || MomentTimePipe.DEFAULT_FORMAT);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viNgModelError'\n})\nexport class NgModelErrorPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: ValidationErrors): string {\n if (_.isNil(value)) {\n return null;\n }\n let keys = _.keys(value);\n if (_.isEmpty(keys)) {\n return null;\n }\n let key = keys[0];\n return this.translateError(key, value[key]);\n }\n\n public translateError(key: string, value: any): string {\n return this.language.translate('error.form.' + key, value);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected language: LanguageService) {}\n}\n","import { Pipe } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viSanitize'\n})\nexport class SanitizePipe {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private sanitizer: DomSanitizer) {}\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: string, type: string = 'html'): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n if (_.isNil(value)) {\n return null;\n }\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error('Invalid safe type specified: ' + type);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viStartCase'\n})\nexport class StartCasePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any): string {\n if (!value) {\n return '---';\n }\n return value.charAt(0).toUpperCase() + value.slice(1);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DateUtil } from '@ts-core/common/util';\nimport * as _ from 'lodash';\nimport { FinancePipe } from './FinancePipe';\n\n@Pipe({\n name: 'viTime'\n})\nexport class TimePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_FORMAT = '00:00:00';\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(milliseconds: number | string, format?: string): string {\n milliseconds = Number(milliseconds);\n if (_.isNaN(milliseconds)) {\n return '---';\n }\n if (_.isNil(format)) {\n format = TimePipe.DEFAULT_FORMAT;\n }\n return FinancePipe.format(milliseconds / DateUtil.MILISECONDS_SECOND, format);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viTruncate'\n})\nexport class TruncatePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any, maxLength?: number): string {\n if (!value) {\n return '---';\n }\n return _.truncate(value, { length: maxLength });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'viPrettify'\n})\nexport class PrettifyPipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n // \tStatic Properties\n //\n // --------------------------------------------------------------------------\n\n public static EMPTY_SYMBOL = '-';\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform(value: any): string {\n let isNil = _.isNil(value);\n if (!isNil && !_.isNumber(value)) {\n isNil = _.isEmpty(value);\n }\n return !isNil ? value : PrettifyPipe.EMPTY_SYMBOL;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {}\n}\n","import { Directive, ElementRef, HostListener, Injectable, Input } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { Theme, ThemeAssetService, ThemeService } from '@ts-core/frontend/theme';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive()\nexport abstract class ThemeAssetDirective<T extends HTMLElement = HTMLElement> extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _name: string;\n protected _extension: string = 'png';\n\n protected _isFile: boolean = false;\n protected _isImage: boolean = false;\n protected _isVideo: boolean = false;\n protected _isSound: boolean = false;\n protected _isBackground: boolean = false;\n protected _isIgnoreTheme: boolean = true;\n\n protected source: string;\n protected element: T;\n\n private isTriedThemeDefault: boolean;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, protected theme: ThemeService, protected themeAsset: ThemeAssetService) {\n super();\n this.element = ViewUtil.parseElement(element.nativeElement) as T;\n\n this.theme.changed.pipe(takeUntil(this.destroyed)).subscribe(() => {\n this.isTriedThemeDefault = false;\n this.setSourceProperties();\n });\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected getSource(id: string): string {\n if (_.isNil(id)) {\n return null;\n }\n if (this.isImage) {\n return this.themeAsset.getImage(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isBackground) {\n return this.themeAsset.getBackground(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isSound) {\n return this.themeAsset.getSound(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isVideo) {\n return this.themeAsset.getVideo(id, this.extension, this.isIgnoreTheme);\n }\n if (this.isFile) {\n return this.themeAsset.getFile(id, this.extension, this.isIgnoreTheme);\n }\n return this.themeAsset.getIcon(id, this.extension, this.isIgnoreTheme);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('error', ['$event'])\n private errorLoadingHandler(event: ErrorEvent): void {\n this.errorHandler(event);\n }\n\n protected errorHandler(event: ErrorEvent): void {\n if (this.isTriedThemeDefault) {\n return;\n }\n this.isTriedThemeDefault = true;\n this.source = this.getSource(this.getDefaultSourceId());\n this.commitSourceProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setSourceProperties(): void {\n this.source = this.getSource(this.getSourceId(this.theme.theme));\n this.commitSourceProperties();\n }\n\n protected getSourceId(theme: Theme): string {\n return !_.isNil(theme) ? this.name + _.capitalize(theme.name) : null;\n }\n\n protected getDefaultSourceId(): string {\n return this.themeAsset.getName(this.name, this.isIgnoreTheme);\n }\n\n protected abstract commitSourceProperties(): void;\n\n protected abstract removeSourceProperties(): void;\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.name = null;\n this.theme = null;\n this.element = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public set isSound(value: boolean) {\n if (value === this._isSound) {\n return;\n }\n this._isSound = value;\n this.setSourceProperties();\n }\n public get isSound(): boolean {\n return this._isSound;\n }\n\n @Input()\n public set isVideo(value: boolean) {\n if (value === this._isVideo) {\n return;\n }\n this._isVideo = value;\n this.setSourceProperties();\n }\n public get isVideo(): boolean {\n return this._isVideo;\n }\n\n @Input()\n public set isFile(value: boolean) {\n if (value === this._isFile) {\n return;\n }\n this._isFile = value;\n this.setSourceProperties();\n }\n public get isFile(): boolean {\n return this._isFile;\n }\n\n @Input()\n public set isImage(value: boolean) {\n if (value === this._isImage) {\n return;\n }\n this._isImage = value;\n this.setSourceProperties();\n }\n public get isImage(): boolean {\n return this._isImage;\n }\n\n @Input()\n public set isBackground(value: boolean) {\n if (value === this._isBackground) {\n return;\n }\n this._isBackground = value;\n this.setSourceProperties();\n }\n public get isBackground(): boolean {\n return this._isBackground;\n }\n\n @Input()\n public set isIgnoreTheme(value: boolean) {\n if (value === this._isIgnoreTheme) {\n return;\n }\n this._isIgnoreTheme = value;\n this.setSourceProperties();\n }\n public get isIgnoreTheme(): boolean {\n return this._isIgnoreTheme;\n }\n\n public get name(): string {\n return this._name;\n }\n @Input()\n public set name(value: string) {\n if (value === this._name) {\n return;\n }\n if (!_.isNil(this._name)) {\n this.removeSourceProperties();\n }\n this._name = value;\n if (!_.isNil(value)) {\n this.setSourceProperties();\n }\n }\n\n public get extension(): string {\n return this._extension;\n }\n @Input()\n public set extension(value: string) {\n if (value === this._extension) {\n return;\n }\n this._extension = value;\n if (!_.isNil(value)) {\n this.setSourceProperties();\n }\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend/theme';\nimport { ViewUtil } from '../util/ViewUtil';\nimport { ThemeAssetDirective } from './ThemeAssetDirective';\n\n@Directive({\n selector: '[vi-theme-background]'\n})\nexport class ThemeAssetBackgroundDirective extends ThemeAssetDirective {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, theme: ThemeService, themeAsset: ThemeAssetService) {\n super(element, theme, themeAsset);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitSourceProperties(): void {\n let value = 'url(' + this.source + ')';\n ViewUtil.setStyle(this.element, 'backgroundImage', value);\n }\n\n protected removeSourceProperties(): void {\n ViewUtil.removeStyle(this.element, 'backgroundImage');\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ThemeAssetService, ThemeService } from '@ts-core/frontend/theme';\nimport { ThemeAssetDirective } from './ThemeAssetDirective';\n\n@Directive({\n selector: '[vi-theme-image]'\n})\nexport class ThemeAssetImageDirective extends ThemeAssetDirective<HTMLImageElement> {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, theme: ThemeService, themeAsset: ThemeAssetService) {\n super(element, theme, themeAsset);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitSourceProperties(): void {\n this.element.src = this.source;\n }\n protected removeSourceProperties(): void {\n this.element.src = null;\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeService } from '@ts-core/frontend/theme';\n\n@Directive({\n selector: '[vi-theme-toggle]'\n})\nexport class ThemeToggleDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private theme: ThemeService) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n @HostListener('click', ['$event'])\n private clickHandler(event: MouseEvent) {\n let themes = this.theme.themes.collection;\n let length = themes.length;\n if (length < 2) {\n return;\n }\n\n let index = 0;\n if (this.theme.theme) {\n index = themes.indexOf(this.theme.theme);\n if (index < length - 1) {\n index++;\n } else {\n index = 0;\n }\n }\n\n this.theme.theme = themes[index];\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.theme = null;\n }\n}\n","import { Directive, ElementRef, Input, RendererStyleFlags2 } from '@angular/core';\nimport { Destroyable } from '@ts-core/common';\nimport { ThemeService } from '@ts-core/frontend/theme';\nimport * as _ from 'lodash';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../util/ViewUtil';\n\n@Directive({\n selector: '[vi-theme-style]'\n})\nexport class ThemeStyleDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _key: string;\n protected _flags: RendererStyleFlags2;\n protected _styleName: string;\n\n protected element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, protected theme: ThemeService) {\n super();\n\n this.element = ViewUtil.parseElement(element.nativeElement);\n this.theme.changed.pipe(takeUntil(this.destroyed)).subscribe(() => this.stylePropertiesAdd());\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitStyleProperties(name: string, value: string): void {\n ViewUtil.setStyle(this.element, name, value, this.flags);\n }\n\n protected stylePropertiesCheck(): void {\n if (this.isNeedStyleAdd()) {\n this.stylePropertiesAdd();\n } else if (this.isNeedStyleRemove()) {\n this.stylePropertiesRemove();\n }\n }\n\n protected stylePropertiesRemove(): void {\n ViewUtil.removeStyle(this.element, this.styleName);\n }\n\n protected stylePropertiesAdd(): void {\n this.commitStyleProperties(this.styleName, this.theme.getStyle(this.key));\n }\n\n protected isNeedStyleAdd(): boolean {\n return !_.isNil(this.theme.theme) && !_.isNil(this.styleName);\n }\n\n protected isNeedStyleRemove(): boolean {\n return !_.isNil(this.styleName);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.key = null;\n this.theme = null;\n this.element = null;\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get flags(): RendererStyleFlags2 {\n return this._flags;\n }\n @Input()\n public set flags(value: RendererStyleFlags2) {\n if (value === this._flags) {\n return;\n }\n this._flags = value;\n this.stylePropertiesCheck();\n }\n\n public get styleName(): string {\n return this._styleName;\n }\n @Input()\n public set styleName(value: string) {\n if (value === this._styleName) {\n return;\n }\n this._styleName = value;\n this.stylePropertiesCheck();\n }\n\n public get key(): string {\n return this._key;\n }\n @Input('vi-theme-style')\n public set key(value: string) {\n if (value === this._key) {\n return;\n }\n this._key = value;\n if (!_.isNil(value)) {\n this.stylePropertiesCheck();\n }\n }\n}\n","import { Directive, ElementRef, Input, RendererStyleFlags2 } from '@angular/core';\nimport { ThemeService } from '@ts-core/frontend/theme';\nimport { ThemeStyleDirective } from './ThemeStyleDirective';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[vi-theme-style-hover]'\n})\nexport class ThemeStyleHoverDirective extends ThemeStyleDirective {\n // --------------------------------------------------------------------------\n //\n //\tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _isHover: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef, theme: ThemeService) {\n super(element, theme);\n\n this.flags = RendererStyleFlags2.Important;\n this.element.addEventListener('mouseenter', this.mouseEnter, false);\n this.element.addEventListener('mouseleave', this.mouseLeave, false);\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected isNeedStyleAdd(): boolean {\n return this.isHover && super.isNeedStyleAdd();\n }\n\n protected isNeedStyleRemove(): boolean {\n return !this.isHover || super.isNeedStyleRemove();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n protected mouseEnter = (event: MouseEvent): void => {\n this.isHover = true;\n };\n\n protected mouseLeave = (event: MouseEvent): void => {\n this.isHover = false;\n };\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n this.element.removeEventListener('mouseenter', this.mouseEnter, false);\n this.element.removeEventListener('mouseleave', this.mouseLeave, false);\n super.destroy();\n }\n\n // --------------------------------------------------------------------------\n //\n //\tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isHover(): boolean {\n return this._isHover;\n }\n public set isHover(value: boolean) {\n if (value === this._isHover) {\n return;\n }\n this._isHover = value;\n this.stylePropertiesCheck();\n }\n\n public get key(): string {\n return super.key;\n }\n @Input('vi-theme-style-hover')\n public set key(value: string) {\n super.key = value;\n }\n\n public get styleName(): string {\n return super.styleName;\n }\n @Input()\n public set styleName(value: string) {\n super.styleName = value;\n }\n\n public get flags(): RendererStyleFlags2 {\n return super.flags;\n }\n @Input()\n public set flags(value: RendererStyleFlags2) {\n super.flags = value;\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ICookieService } from '@ts-core/frontend/cookie';\nimport { IThemeServiceOptions, ThemeService, ThemeAssetService } from '@ts-core/frontend/theme';\nimport { CookieModule } from '../cookie/CookieModule';\nimport { CookieService } from '../cookie/CookieService';\nimport { ThemeAssetBackgroundDirective } from './ThemeAssetBackgroundDirective';\nimport { ThemeAssetImageDirective } from './ThemeAssetImageDirective';\nimport { ThemeToggleDirective } from './ThemeToggleDirective';\nimport { ThemeStyleDirective } from './ThemeStyleDirective';\nimport { ThemeStyleHoverDirective } from './ThemeStyleHoverDirective';\nimport * as _ from 'lodash';\n\nlet declarations = [ThemeToggleDirective, ThemeAssetImageDirective, ThemeAssetBackgroundDirective, ThemeStyleDirective, ThemeStyleHoverDirective];\n\n@NgModule({\n imports: [CookieModule],\n declarations,\n exports: declarations\n})\nexport class ThemeModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: IThemeServiceOptions): ModuleWithProviders<ThemeModule> {\n return {\n ngModule: ThemeModule,\n providers: [\n {\n provide: THEME_OPTIONS,\n useValue: options || {}\n },\n {\n provide: ThemeService,\n deps: [CookieService, THEME_OPTIONS],\n useFactory: themeServiceFactory\n },\n {\n provide: ThemeAssetService,\n deps: [ThemeService],\n useFactory: themeAssetServiceFactory\n }\n ]\n };\n }\n}\n\nexport function themeServiceFactory(cookie: ICookieService, options?: IThemeServiceOptions): ThemeService {\n if (!_.isNil(options) && _.isNil(options.service)) {\n options.service = cookie;\n }\n return new ThemeService(options);\n}\n\nexport function themeAssetServiceFactory(theme: ThemeService): ThemeAssetService {\n return new ThemeAssetService(theme);\n}\n\nexport const THEME_OPTIONS = new InjectionToken<IThemeServiceOptions>(`THEME_OPTIONS`);\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { Interactable } from '@interactjs/types';\nimport * as interact from 'interactjs';\nimport { Destroyable } from '@ts-core/common';\nimport { IWindow } from '../IWindow';\nimport { WindowDragable } from './WindowDragable';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[vi-window-drag-area]'\n})\nexport class WindowDragAreaDirective extends Destroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private _window: WindowDragable;\n private _interactable: Interactable;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private element: ElementRef) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this._interactable)) {\n this._interactable.unset();\n this._interactable = null;\n }\n this.element = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private commitWindowProperties(): void {\n if (!this.window.config || this.window.config.isModal) {\n return;\n }\n this.interactable.draggable(true);\n this.interactable.on('dragmove', this.dragMoveHandler);\n this.interactable.on('dragstart', this.dragStartHandler);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private dragStartHandler = (event: any): void => {\n this._window.dragStartHandler(event);\n };\n\n private dragMoveHandler = (event: any): void => {\n this._window.dragMoveHandler(event);\n };\n\n // --------------------------------------------------------------------------\n //\n // Private Properties\n //\n // --------------------------------------------------------------------------\n\n protected get interactable(): any {\n if (!this._interactable) {\n this._interactable = interact.default(this.element.nativeElement);\n //this._interactable.styleCursor(false);\n }\n return this._interactable;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n @Input('vi-window-drag-area')\n public set window(value: IWindow) {\n if (value === this._window) {\n return;\n }\n this._window = value as WindowDragable;\n if (this._window) {\n this.commitWindowProperties();\n }\n }\n\n public get window(): IWindow {\n return this._window;\n }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-window-close-element',\n styleUrls: ['window-close-element.component.scss'],\n template: ''\n})\nexport class WindowCloseElementComponent extends WindowElement {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n public static ICON_CLASS: string = 'fas fa-times';\n public static ICON_VALUE: string = null;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super(element);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected createChildren(): void {\n super.createChildren();\n\n if (!_.isNil(WindowCloseElementComponent.ICON_VALUE)) {\n ViewUtil.setProperty(this.nativeElement, 'innerHTML', WindowCloseElementComponent.ICON_VALUE);\n }\n if (!_.isNil(WindowCloseElementComponent.ICON_CLASS)) {\n ViewUtil.addClasses(this.nativeElement, WindowCloseElementComponent.ICON_CLASS);\n }\n ViewUtil.addClass(this.nativeElement, 'mouse-active');\n this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n super.destroyChildren();\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent): void => {\n event.stopPropagation();\n if (!_.isNil(this.window)) {\n this.window.close();\n }\n };\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-window-resize-element',\n styleUrls: ['window-resize-element.component.scss'],\n template: ''\n})\nexport class WindowResizeElementComponent extends WindowElement {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n public static ICON_CLASS: string = 'fas fa-arrows-alt';\n public static ICON_VALUE: string = null;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super(element);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected createChildren(): void {\n super.createChildren();\n\n if (!_.isNil(WindowResizeElementComponent.ICON_VALUE)) {\n ViewUtil.setProperty(this.nativeElement, 'innerHTML', WindowResizeElementComponent.ICON_VALUE);\n }\n if (!_.isNil(WindowResizeElementComponent.ICON_CLASS)) {\n ViewUtil.addClasses(this.nativeElement, WindowResizeElementComponent.ICON_CLASS);\n }\n\n ViewUtil.setStyle(this.nativeElement, 'cursor', 'pointer');\n this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent) => {\n event.stopPropagation();\n\n if (!_.isNil(this.window)) {\n this.window.isMinimized = !this.window.isMinimized;\n }\n };\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { ViewUtil } from '../../../util/ViewUtil';\nimport { WindowEvent } from '../../../window/IWindow';\nimport { WindowElement } from '../WindowElement';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'vi-window-minimize-element',\n styleUrls: ['window-minimize-element.component.scss'],\n template: ''\n})\nexport class WindowMinimizeElementComponent extends WindowElement {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n public static ICON_CLASS: string = null;\n public static ICON_MINIMIZE_VALUE: string = null;\n public static ICON_MAXIMIZE_VALUE: string = null;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(element: ElementRef) {\n super(element);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private commitIconProperties = (): void => {\n let icon = this.window.isMinimized ? WindowMinimizeElementComponent.ICON_MAXIMIZE_VALUE : WindowMinimizeElementComponent.ICON_MINIMIZE_VALUE;\n ViewUtil.setProperty(this.nativeElement, 'innerHTML', icon);\n };\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitWindowProperties(): void {\n super.commitWindowProperties();\n this.window.events.pipe(takeUntil(this.destroyed)).subscribe(event => {\n if (event === WindowEvent.MINIMIZED_CHANGED) {\n this.commitIconProperties();\n }\n });\n }\n\n protected createChildren(): void {\n super.createChildren();\n\n if (!_.isNil(WindowMinimizeElementComponent.ICON_MINIMIZE_VALUE)) {\n ViewUtil.setProperty(this.nativeElement, 'innerHTML', WindowMinimizeElementComponent.ICON_MINIMIZE_VALUE);\n }\n\n if (!_.isNil(WindowMinimizeElementComponent.ICON_CLASS)) {\n ViewUtil.addClasses(this.nativeElement, WindowMinimizeElementComponent.ICON_CLASS);\n }\n\n ViewUtil.addClass(this.nativeElement, 'mouse-active');\n this.nativeElement.addEventListener('click', this.mouseClickHandler, true);\n }\n\n protected destroyChildren(): void {\n super.destroyChildren();\n this.nativeElement.removeEventListener('click', this.mouseClickHandler, true);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n private mouseClickHandler = (event: MouseEvent): void => {\n event.stopPropagation();\n if (!_.isNil(this.window)) {\n this.window.isMinimized = !this.window.isMinimized;\n }\n };\n}\n","import { EdgeOptions, Interactable, InteractEvent, ResizableOptions } from '@interactjs/types';\nimport * as interact from 'interactjs';\nimport { ViewUtil } from '../../util/ViewUtil';\nimport { WindowImpl } from '../WindowImpl';\nimport * as _ from 'lodash';\n\nexport class WindowResizeable extends WindowImpl {\n // --------------------------------------------------------------------------\n //\n // Properties Methods\n //\n // --------------------------------------------------------------------------\n\n private _interactable: Interactable;\n private resizeMoveHandlerProxy: (...args) => any;\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setProperties(): void {\n super.setProperties();\n\n if (!this.config.isResizeable) {\n return;\n }\n\n ViewUtil.addClass(this.container, 'vi-resizeable');\n if (_.isNil(this.resizeMoveHandlerProxy)) {\n this.resizeMoveHandlerProxy = this.resizeMoveHandler.bind(this);\n }\n\n let edges = {} as EdgeOptions;\n edges.top = true;\n edges.left = true;\n edges.right = true;\n edges.bottom = true;\n\n let param = {} as ResizableOptions;\n param.edges = edges;\n\n this.interactable.resizable(param);\n this.interactable.on('resizemove', this.resizeMoveHandlerProxy);\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n protected resizeMoveHandler(event: InteractEvent): void {\n if (this.isMinimized) {\n return;\n }\n\n let isChanged = event.dx !== 0 || event.dy !== 0;\n if (!isChanged) {\n return;\n }\n\n if (event.dx !== 0) {\n let width = this.getWidth();\n if (_.isNaN(width)) {\n width = this.calculateWidth();\n }\n this.setWidth(width + event.dx, false);\n }\n if (event.dy !== 0) {\n let height = this.getHeight();\n if (_.isNaN(height)) {\n height = this.calculateHeight();\n }\n this.setHeight(height + event.dy, false);\n }\n this.resizeHandler();\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.resizeMoveHandlerProxy = null;\n\n if (!_.isNil(this._interactable)) {\n this._interactable.unset();\n this._interactable = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Properties\n //\n // --------------------------------------------------------------------------\n\n protected get interactable(): Interactable {\n if (_.isNil(this._interactable)) {\n this._interactable = interact.default(this.container);\n // this._interactable.styleCursor(false);\n }\n return this._interactable;\n }\n}\n","import { DraggableOptions, InteractEvent } from '@interactjs/types';\nimport { ViewUtil } from '../../util/ViewUtil';\nimport { WindowResizeable } from './WindowResizeable';\n\nexport class WindowDragable extends WindowResizeable {\n // --------------------------------------------------------------------------\n //\n // Properties Methods\n //\n // --------------------------------------------------------------------------\n\n protected isWasDragged: boolean = false;\n\n private dragMoveHandlerProxy: (...args) => any;\n private dragStartHandlerProxy: (...args) => any;\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setProperties(): void {\n super.setProperties();\n\n if (this.config.isModal) {\n return;\n }\n ViewUtil.addClass(this.container, 'vi-draggable');\n if (!this.config.isContentDragable) {\n return;\n }\n this.dragMoveHandlerProxy = this.dragMoveHandler.bind(this);\n this.dragStartHandlerProxy = this.dragStartHandler.bind(this);\n\n let param = {} as DraggableOptions;\n this.interactable.draggable(param);\n this.interactable.on('dragmove', this.dragMoveHandlerProxy);\n this.interactable.on('dragstart', this.dragStartHandlerProxy);\n }\n\n protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n return this.isWasDragged || super.isNeedClickStopPropagation(event);\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n public dragStartHandler(event: InteractEvent): void {\n this.isWasDragged = true;\n }\n\n public dragMoveHandler(event: InteractEvent): void {\n let x = this.getX() + event.dx;\n let y = this.getY() + event.dy;\n this.move(x, y);\n }\n\n protected mouseClickHandler(event: MouseEvent): void {\n super.mouseClickHandler(event);\n this.isWasDragged = false;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.dragMoveHandlerProxy = null;\n this.dragStartHandlerProxy = null;\n }\n}\n","import { ComponentFactoryResolver, ComponentRef, ViewContainerRef } from '@angular/core';\nimport { APPLICATION_INJECTOR } from '../../ApplicationInjector';\nimport { ViewUtil } from '../../util/ViewUtil';\nimport { WindowCloseElementComponent } from './window-close-element/window-close-element.component';\nimport { WindowMinimizeElementComponent } from './window-minimize-element/window-minimize-element.component';\nimport { WindowResizeElementComponent } from './window-resize-element/window-resize-element.component';\nimport { WindowDragable } from './WindowDragable';\n\nexport class WindowBaseComponent extends WindowDragable {\n // --------------------------------------------------------------------------\n //\n // Static Properties\n //\n // --------------------------------------------------------------------------\n\n public static CLOSE_COMPONENT = WindowCloseElementComponent;\n public static RESIZE_COMPONENT = WindowResizeElementComponent;\n public static MINIMIZE_COMPONENT = WindowMinimizeElementComponent;\n\n // --------------------------------------------------------------------------\n //\n // Properties Methods\n //\n // --------------------------------------------------------------------------\n\n protected closeWindow: ComponentRef<any>;\n protected resizedWindow: ComponentRef<any>;\n protected minimizeWindow: ComponentRef<any>;\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected setProperties(): void {\n super.setProperties();\n this.createWindowComponents();\n }\n\n protected createWindowComponents(): void {\n if (!(this.content.container instanceof ViewContainerRef)) {\n return;\n }\n if (!this.config.disableClose && !this.closeWindow) {\n let factory = this.resolver.resolveComponentFactory(WindowBaseComponent.CLOSE_COMPONENT);\n this.closeWindow = this.content.container.createComponent(factory);\n this.closeWindow.instance.window = this;\n }\n\n if (this.config.isResizeable && !this.resizedWindow) {\n let factory = this.resolver.resolveComponentFactory(WindowBaseComponent.RESIZE_COMPONENT);\n this.resizedWindow = this.content.container.createComponent(factory);\n this.resizedWindow.instance.window = this;\n }\n\n if (this.config.isMinimizable && !this.minimizeWindow) {\n let factory = this.resolver.resolveComponentFactory(WindowBaseComponent.MINIMIZE_COMPONENT);\n this.minimizeWindow = this.content.container.createComponent(factory);\n this.minimizeWindow.instance.window = this;\n }\n }\n\n protected commitIsBlinkProperties(): void {\n ViewUtil.toggleClass(this.container, this.blinkClass, this.isBlink);\n }\n\n protected commitIsDisabledProperties(): void {\n ViewUtil.toggleClass(this.container, this.disabledClass, this.isDisabled);\n ViewUtil.toggleClass(this.content.element, this.disabledClass, this.isDisabled);\n ViewUtil.toggleClass(this.content.element.nativeElement.parentElement, this.disabledClass, this.isDisabled);\n }\n\n protected commitIsShakingProperties(): void {\n ViewUtil.toggleClass(this.container, this.shakingClass, this.isShaking);\n }\n\n protected commitIsMinimizedProperties(): void {\n ViewUtil.toggleClass(this.container, this.minimizedClass, this.isMinimized);\n ViewUtil.toggleClass(this.content.element, this.minimizedClass, this.isMinimized);\n ViewUtil.toggleClass(this.content.element.nativeElement.parentElement, this.minimizedClass, this.isMinimized);\n }\n\n protected isNeedClickStopPropagation(event: MouseEvent): boolean {\n if (!super.isNeedClickStopPropagation(event)) {\n return false;\n }\n if (this.closeWindow && this.closeWindow.location.nativeElement === event.target) {\n return false;\n }\n return true;\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Properties\n //\n // --------------------------------------------------------------------------\n\n protected get resolver(): ComponentFactoryResolver {\n return APPLICATION_INJECTOR().get(ComponentFactoryResolver);\n }\n\n protected get blinkClass(): string {\n return 'vi-blink';\n }\n\n protected get disabledClass(): string {\n return 'vi-disabled';\n }\n\n protected get minimizedClass(): string {\n return 'vi-minimized';\n }\n\n protected get shakingClass(): string {\n return 'shake-constant shake-horizontal';\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n // Components will destroy automatically\n this.closeWindow = null;\n this.resizedWindow = null;\n this.minimizeWindow = null;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { CookieModule } from '../cookie/CookieModule';\nimport { CookieService } from '../cookie/CookieService';\nimport { LanguageModule } from '../language/LanguageModule';\nimport { WindowService } from './WindowService';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { WindowDragAreaDirective } from './component/WindowDragAreaDirective';\nimport { WindowQuestionComponent } from './component/window-question/window-question.component';\nimport { WindowCloseElementComponent } from './component/window-close-element/window-close-element.component';\nimport { WindowResizeElementComponent } from './component/window-resize-element/window-resize-element.component';\nimport { WindowMinimizeElementComponent } from './component/window-minimize-element/window-minimize-element.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { WindowFactory } from './WindowFactory';\nimport { WindowBaseComponent } from './component/WindowBaseComponent';\n\nconst IMPORTS = [CommonModule, FormsModule, MatButtonModule, MatDialogModule, CookieModule, LanguageModule];\nconst ENTRY_COMPONENTS = [WindowQuestionComponent, WindowCloseElementComponent, WindowResizeElementComponent, WindowMinimizeElementComponent];\nconst DECLARATIONS = [WindowDragAreaDirective, ...ENTRY_COMPONENTS];\nconst EXPORTS = [...DECLARATIONS];\n\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS\n})\nexport class WindowModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(): ModuleWithProviders<WindowModule> {\n return {\n ngModule: WindowModule,\n providers: [\n {\n provide: WindowService,\n deps: [MatDialog, LanguageService, CookieService],\n useFactory: windowServiceFactory\n }\n ]\n };\n }\n}\n\nexport function windowServiceFactory(dialog: MatDialog, language: LanguageService, cookies: CookieService): WindowService {\n let item = new WindowService(dialog, language, cookies);\n item.factory = new WindowFactory(WindowBaseComponent);\n item.questionComponent = WindowQuestionComponent;\n return item;\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ILogger, Logger, LoggerLevel } from '@ts-core/common/logger';\nimport { ICookieOptions } from '@ts-core/frontend/cookie';\nimport { ILanguageServiceOptions } from '@ts-core/frontend/language';\nimport { DefaultLogger } from '@ts-core/frontend/logger';\nimport { LoadingService, NativeWindowService } from '@ts-core/frontend/service';\nimport { IThemeServiceOptions } from '@ts-core/frontend/theme';\nimport * as _ from 'lodash';\nimport { AssetModule } from './asset/AssetModule';\nimport { CookieModule } from './cookie/CookieModule';\nimport { AspectRatioResizeDirective } from './directive/AspectRatioResizeDirective';\nimport { AutoScrollBottomDirective } from './directive/AutoScrollBottomDirective';\nimport { ClickToCopyDirective } from './directive/ClickToCopyDirective';\nimport { ClickToSelectDirective } from './directive/ClickToSelectDirective';\nimport { FocusDirective } from './directive/FocusDirective';\nimport { SelectOnFocusDirective } from './directive/SelectOnFocusDirective';\nimport { HTMLContentTitleDirective } from './directive/HTMLContentTitleDirective';\nimport { InfiniteScrollDirective } from './directive/InfiniteScrollDirective';\nimport { ResizeDirective } from './directive/ResizeDirective';\nimport { ScrollDirective } from './directive/ScrollDirective';\nimport { LanguageModule } from './language/LanguageModule';\nimport { BottomSheetModule } from './bottomSheet/BottomSheetModule';\nimport { NotificationModule } from './notification/NotificationModule';\nimport { CamelCasePipe } from './pipe/CamelCasePipe';\nimport { FinancePipe } from './pipe/FinancePipe';\nimport { MomentDateAdaptivePipe } from './pipe/MomentDateAdaptivePipe';\nimport { MomentDateFromNowPipe } from './pipe/MomentDateFromNowPipe';\nimport { MomentDatePipe } from './pipe/MomentDatePipe';\nimport { MomentTimePipe } from './pipe/MomentTimePipe';\nimport { NgModelErrorPipe } from './pipe/NgModelErrorPipe';\nimport { SanitizePipe } from './pipe/SanitizePipe';\nimport { StartCasePipe } from './pipe/StartCasePipe';\nimport { TimePipe } from './pipe/TimePipe';\nimport { TruncatePipe } from './pipe/TruncatePipe';\nimport { PrettifyPipe } from './pipe/PrettifyPipe';\nimport { ThemeModule } from './theme/ThemeModule';\nimport { WindowModule } from './window/WindowModule';\n\nconst IMPORTS = [CookieModule, ThemeModule, LanguageModule, AssetModule, WindowModule, NotificationModule];\n\nconst DECLARATIONS = [\n TimePipe,\n FinancePipe,\n SanitizePipe,\n TruncatePipe,\n PrettifyPipe,\n CamelCasePipe,\n StartCasePipe,\n NgModelErrorPipe,\n\n MomentDatePipe,\n MomentTimePipe,\n MomentDateFromNowPipe,\n MomentDateAdaptivePipe,\n\n FocusDirective,\n ResizeDirective,\n ScrollDirective,\n ClickToCopyDirective,\n SelectOnFocusDirective,\n ClickToSelectDirective,\n InfiniteScrollDirective,\n HTMLContentTitleDirective,\n AutoScrollBottomDirective,\n AspectRatioResizeDirective\n];\n\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: [...IMPORTS, ...DECLARATIONS]\n})\nexport class VICommonModule {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static forRoot(options?: IVICommonOptions): ModuleWithProviders<VICommonModule> {\n return {\n ngModule: VICommonModule,\n providers: [\n LoadingService,\n NativeWindowService,\n\n { provide: VI_ANGULAR_OPTIONS, useValue: options || {} },\n { provide: Logger, deps: [VI_ANGULAR_OPTIONS], useFactory: loggerServiceFactory },\n\n ...WindowModule.forRoot().providers,\n ...BottomSheetModule.forRoot().providers,\n ...NotificationModule.forRoot().providers,\n ...CookieModule.forRoot(options).providers,\n ...ThemeModule.forRoot(options ? options.themeOptions : null).providers,\n ...LanguageModule.forRoot(options ? options.languageOptions : null).providers\n ]\n };\n }\n}\n\nexport class IVICommonOptions extends ICookieOptions {\n loggerLevel?: LoggerLevel;\n themeOptions?: IThemeServiceOptions;\n languageOptions?: ILanguageServiceOptions;\n}\n\nexport function loggerServiceFactory(options: IVICommonOptions): ILogger {\n return new DefaultLogger(!_.isNil(options.loggerLevel) ? options.loggerLevel : LoggerLevel.LOG);\n}\n\nexport const VI_ANGULAR_OPTIONS = new InjectionToken<IVICommonOptions>(`VI_ANGULAR_OPTIONS`);\n","import { Component, ElementRef, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { ViewUtil } from '../../../util/ViewUtil';\n\n@Component({\n selector: 'vi-language-selector',\n templateUrl: 'language-selector.component.html'\n})\nexport class LanguageSelectorComponent extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private _isNeedIcon: boolean = true;\n private _isNeedLabel: boolean = true;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected element: ElementRef, public language: LanguageService) {\n super();\n ViewUtil.addClasses(element, 'd-block');\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitIsNeedLabelProperties(): void {\n ViewUtil.toggleClass(this.element, 'no-label', !this.isNeedLabel);\n }\n\n protected commitIsNeedIconProperties(): void {\n ViewUtil.toggleClass(this.element, 'no-icon', !this.isNeedLabel);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isNeedIcon(): boolean {\n return this._isNeedIcon;\n }\n @Input()\n public set isNeedIcon(value: boolean) {\n if (value === this._isNeedIcon) {\n return;\n }\n this._isNeedIcon = value;\n this.commitIsNeedIconProperties();\n }\n\n public get isNeedLabel(): boolean {\n return this._isNeedLabel;\n }\n @Input()\n public set isNeedLabel(value: boolean) {\n if (value === this._isNeedLabel) {\n return;\n }\n this._isNeedLabel = value;\n this.commitIsNeedLabelProperties();\n }\n}\n","<mat-form-field class=\"d-block no-underline\" [title]=\"'general.locale' | viTranslate\">\n <mat-select [(ngModel)]=\"language.language\">\n <mat-select-trigger>\n <div class=\"d-flex text-one-line align-items-center\">\n <img class=\"mr-2 flex-shrink-0\" style=\"height: 22px; width: 24px\" [src]=\"language.language?.locale + 'Language' | viAssetIcon:'svg'\" *ngIf=\"isNeedIcon\">\n <p class=\"text-one-line mouse-inactive flex-grow-1\" [innerHTML]=\"language.language?.name\" *ngIf=\"isNeedLabel\"></p>\n </div>\n </mat-select-trigger>\n \n <mat-option *ngFor=\"let item of language.languages?.collection\" [value]=\"item\">\n <div class=\"d-flex text-one-line align-items-center\">\n <img class=\"mr-2 flex-shrink-0\" style=\"width: 24px\" [src]=\"item.locale + 'Language' | viAssetIcon:'svg'\">\n <p class=\"text-one-line mouse-inactive flex-grow-1\" [innerHTML]=\"item.name\"></p>\n </div>\n </mat-option>\n </mat-select>\n</mat-form-field>","import { Component, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ListItems } from '../../list/ListItems';\nimport { IListItem } from '../../list/IListItem';\n\n@Component({\n selector: 'vi-menu-list',\n templateUrl: 'menu-list.component.html'\n})\nexport class MenuListComponent<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public list: ListItems<IListItem<T>>;\n}\n","<ng-container *ngFor=\"let item of list?.filtered\">\n <button mat-menu-item [ngClass]=\"item.className\" (click)=\"list?.actionItem(item)\">\n <span [ngClass]=\"item.iconId\" *ngIf=\"item.iconId\"></span>\n <span [innerHTML]=\"item.label\" [title]=\"item.label\"></span>\n </button>\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ISelectListItem } from '../../list/select/ISelectListItem';\nimport { SelectListItems } from '../../list/select/SelectListItems';\n\n@Component({\n selector: 'vi-select-list',\n templateUrl: 'select-list.component.html'\n})\nexport class SelectListComponent<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public list: SelectListItems<ISelectListItem<T>>;\n}\n","<ng-container *ngFor=\"let item of list?.collection\">\n\n <mat-list-item [ngClass]=\"item.isSelected? item.selectedClassName : item.className\" *ngIf=\"item.isEnabled\" (click)=\"list.actionItem(item)\" >\n <span [ngClass]=\"item.iconId\" *ngIf=\"item.iconId\" matListIcon></span>\n <span [innerHTML]=\"item.label\" [title]=\"item.label\" matLine></span>\n </mat-list-item>\n\n</ng-container>\n","import { Component, Input } from '@angular/core';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\nimport { DestroyableContainer } from '@ts-core/common';\n\nimport * as _ from 'lodash';\nimport { ISelectListItem } from '../../list/select/ISelectListItem';\nimport { SelectListItems } from '../../list/select/SelectListItems';\n\n@Component({\n selector: 'vi-tab-group',\n templateUrl: 'tab-group.component.html'\n})\nexport class TabGroupComponent<T = any> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n @Input()\n public className: string;\n protected _list: SelectListItems<ISelectListItem<T>>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitListProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public selectedTabChange(event: MatTabChangeEvent): void {\n if (_.isNil(this.list)) {\n return;\n }\n let index = event.index;\n if (index < 0 || index >= this.list.length) {\n return;\n }\n let item = this.list.collection[index];\n this.list.selectedItem = item;\n this.list.actionItem(item);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.list = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get list(): SelectListItems<ISelectListItem<T>> {\n return this._list;\n }\n @Input()\n public set list(value: SelectListItems<ISelectListItem<T>>) {\n if (value === this._list) {\n return;\n }\n this._list = value;\n if (!_.isNil(value)) {\n this.commitListProperties();\n }\n }\n}\n","<mat-tab-group [ngClass]=\"className\" (selectedIndexChange)=\"list.selectedIndex = $event\" [selectedIndex]=\"list?.selectedIndex\"\n (selectedTabChange)=\"selectedTabChange($event)\">\n <ng-container *ngFor=\"let item of list?.collection\">\n <mat-tab [ngClass]=\"item.className\" [label]=\"item.label\" [disabled]=\"!item.isEnabled\" (click)=\"list?.actionItem(item)\"></mat-tab>\n </ng-container>\n</mat-tab-group>\n","import { DataSourceMapCollection, DataSourceMapCollectionEvent } from '@ts-core/common/map/dataSource';\nimport * as _ from 'lodash';\nimport { Subscription, BehaviorSubject, Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DestroyableContainer, LoadableEvent } from '@ts-core/common';\n\nexport class CdkTableDataSource<U> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected subject: BehaviorSubject<Array<U>>;\n protected subscription: Subscription;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected map: DataSourceMapCollection<U>) {\n super();\n\n this.subject = new BehaviorSubject(map.collection);\n map.events.pipe(takeUntil(this.destroyed)).subscribe(data => {\n switch (data.type) {\n case LoadableEvent.COMPLETE:\n this.parseResponse();\n break;\n case DataSourceMapCollectionEvent.DATA_LOADED_AND_PARSED:\n this.parseParsedResponse();\n break;\n }\n });\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected parseResponse(): void {\n this.subject.next(this.map.collection);\n }\n\n protected parseParsedResponse(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.subject.complete();\n this.subject = null;\n\n this.map = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get dataSource(): Observable<Array<U>> {\n return this.subject.asObservable();\n }\n}\n","import { CdkTableDataSource } from './CdkTableDataSource';\nimport { FilterableDataSourceMapCollection } from '@ts-core/common/map/dataSource';\nimport * as _ from 'lodash';\nimport { ObjectUtil } from '@ts-core/common/util';\nimport { Sort, SortDirection } from '@angular/material/sort';\n\nexport abstract class CdkTableFilterableMapCollection<U, V> extends FilterableDataSourceMapCollection<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tStatic Methods\n //\n // --------------------------------------------------------------------------\n\n public static getSort<U, V = any>(collection: FilterableDataSourceMapCollection<U, V>): Sort {\n if (_.isNil(collection) || _.isEmpty(collection.sort)) {\n return null;\n }\n let active = ObjectUtil.keys(collection.sort)[0].toString();\n let direction: SortDirection = collection.sort[active] ? 'asc' : 'desc';\n return { active, direction };\n }\n\n public static applySortEvent<U, V = any>(item: FilterableDataSourceMapCollection<U, V>, event: Sort): boolean {\n let value = undefined;\n if (event.direction === 'asc') {\n value = true;\n }\n if (event.direction === 'desc') {\n value = false;\n }\n\n if (value === item.sort[event.active]) {\n return false;\n }\n ObjectUtil.clear(item.sort);\n item.sort[event.active] = value;\n return true;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: CdkTableDataSource<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n super.initialize();\n this._table = this.getTable();\n }\n\n protected getTable(): CdkTableDataSource<U> {\n return new CdkTableDataSource(this);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public sortEventHandler(event: Sort): void {\n if (CdkTableFilterableMapCollection.applySortEvent(this, event)) {\n this.reload();\n }\n }\n\n protected sortFunction(first: U, second: U, event: Sort): number {\n if (_.isEmpty(event.direction)) {\n return 0;\n }\n let firstValue = first[event.active];\n let secondValue = second[event.active];\n let isHigher = firstValue > secondValue;\n if (event.direction === 'asc') {\n return isHigher ? -1 : 1;\n } else {\n return isHigher ? 1 : -1;\n }\n }\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this._table)) {\n this._table.destroy();\n this._table = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): CdkTableDataSource<U> {\n return this._table;\n }\n}\n","import { Component, EventEmitter, Injectable, Input, Output } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport * as _ from 'lodash';\nimport { ICdkTableRow } from './row/ICdkTableRow';\nimport { ICdkTableColumn } from './column/ICdkTableColumn';\nimport { CdkTablePaginableMapCollection } from './CdkTablePaginableMapCollection';\nimport { CdkTableFilterableMapCollection } from './CdkTableFilterableMapCollection';\nimport { SortDirection } from '@angular/material/sort';\nimport { FilterableDataSourceMapCollection } from '@ts-core/common/map/dataSource';\n\n@Component({ template: '' })\nexport abstract class CdkTableBaseComponent<\n T extends CdkTablePaginableMapCollection<U, V> | CdkTableFilterableMapCollection<U, V>,\n U,\n V\n> extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: T;\n protected _settings: ICdkTableSettings<U>;\n protected _rows: ICdkTableRow<U>;\n protected _columns: Array<ICdkTableColumn<U>>;\n protected _columnNames: Array<keyof U>;\n\n protected _selectedRow: U;\n protected _selectedRows: Array<U>;\n\n @Output()\n public rowClicked: EventEmitter<U>;\n @Output()\n public cellClicked: EventEmitter<ICdkTableCellEvent<U>>;\n\n public sortActive: string;\n public sortDirection: SortDirection;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n\n this._columnNames = [];\n\n this.settings = {};\n this.rowClicked = new EventEmitter();\n this.cellClicked = new EventEmitter();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitTableProperties(): void {\n let sort = CdkTableFilterableMapCollection.getSort(this.table as FilterableDataSourceMapCollection<U, V>);\n if (!_.isNil(sort)) {\n this.sortActive = sort.active.toString();\n this.sortDirection = sort.direction;\n }\n\n if (!this.table.isDirty) {\n this.table.reload();\n }\n }\n\n protected commitColumnsProperties(): void {\n let value = null;\n\n value = !_.isEmpty(this.columns) ? this.columns.map(item => item.name) : [];\n if (value !== this._columnNames) {\n this._columnNames = value;\n }\n }\n\n protected commitSelectedRowsProperties(): void {\n this._selectedRow = !_.isEmpty(this.selectedRows) && this.selectedRows.length === 1 ? this.selectedRows[0] : null;\n }\n\n protected commitSettingsProperties(): void {\n if (_.isNil(this.settings.noDataId)) {\n this.settings.noDataId = 'general.noDataFound';\n }\n if (_.isNil(this.settings.isInteractive)) {\n this.settings.isInteractive = true;\n }\n if (_.isNil(this.rows) && !_.isEmpty(this.settings.rows)) {\n this.rows = this.settings.rows;\n }\n if (_.isNil(this.columns) && !_.isEmpty(this.settings.columns)) {\n this.columns = this.settings.columns;\n }\n }\n\n protected commitRowProperties(): void {}\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public columnTrackBy(index: number, item: ICdkTableColumn<U>): string {\n return item.name;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.table = null;\n this.selectedRows = null;\n\n if (!_.isNil(this.cellClicked)) {\n this.cellClicked.complete();\n this.cellClicked = null;\n }\n if (!_.isNil(this.rowClicked)) {\n this.rowClicked.complete();\n this.rowClicked = null;\n }\n }\n\n //--------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n //--------------------------------------------------------------------------\n\n public cellClickHandler(item: U, column: ICdkTableColumn<U>): void {\n this.cellClicked.emit({ data: item, column: column.name });\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): T {\n return this._table;\n }\n @Input()\n public set table(value: T) {\n if (value === this._table) {\n return;\n }\n this._table = value;\n if (!_.isNil(value)) {\n this.commitTableProperties();\n }\n }\n\n public get selectedRows(): Array<U> {\n return this._selectedRows;\n }\n @Input()\n public set selectedRows(value: Array<U>) {\n if (value === this._selectedRows) {\n return;\n }\n this._selectedRows = value;\n this.commitSelectedRowsProperties();\n }\n\n public get selectedRow(): U {\n return this._selectedRow;\n }\n @Input()\n public set selectedRow(value: U) {\n if (value === this._selectedRow) {\n return;\n }\n this.selectedRows = !_.isNil(value) ? [value] : [];\n }\n\n public get rows(): ICdkTableRow<U> {\n return this._rows;\n }\n @Input()\n public set rows(value: ICdkTableRow<U>) {\n if (value === this._rows) {\n return;\n }\n this._rows = value;\n if (!_.isNil(value)) {\n this.commitRowProperties();\n }\n }\n\n public get columns(): Array<ICdkTableColumn<U>> {\n return this._columns;\n }\n @Input()\n public set columns(value: Array<ICdkTableColumn<U>>) {\n if (value === this._columns) {\n return;\n }\n this._columns = value;\n if (!_.isNil(value)) {\n this.commitColumnsProperties();\n }\n }\n\n public get settings(): ICdkTableSettings<U> {\n return this._settings;\n }\n @Input()\n public set settings(value: ICdkTableSettings<U>) {\n if (value === this._settings) {\n return;\n }\n this._settings = value;\n if (!_.isNil(value)) {\n this.commitSettingsProperties();\n }\n }\n\n public get columnNames(): Array<keyof U> {\n return this._columnNames;\n }\n}\n\nexport interface ICdkTableCellEvent<U> {\n data: U;\n column: string;\n}\n\nexport interface ICdkTableSettings<U> {\n noDataId?: string;\n isInteractive?: boolean;\n\n rows?: ICdkTableRow<U>;\n columns?: Array<ICdkTableColumn<U>>;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\n\n@Pipe({\n name: 'viCdkTableColumnClassName'\n})\nexport class CdkTableColumnClassNamePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform<U>(item: U, column: ICdkTableColumn<U>): string {\n return !_.isNil(column) && !_.isNil(column.className) ? (_.isString(column.className) ? column.className : column.className(item, column)) : null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\n\n@Pipe({\n name: 'viCdkTableColumnStyleName'\n})\nexport class CdkTableColumnStyleNamePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform<U>(item: U, column: ICdkTableColumn<U>): { [key: string]: any } {\n return !_.isNil(column) && !_.isNil(column.styleName) ? column.styleName(item, column) : null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\n\n@Pipe({\n name: 'viCdkTableCellClassName'\n})\nexport class CdkTableCellClassNamePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform<U>(column: ICdkTableColumn<U>): string {\n return column.isMultiline ? 'text-multi-line' : 'text-one-line';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableColumn } from './ICdkTableColumn';\n\n@Pipe({\n name: 'viCdkTableColumnValue'\n})\nexport class CdkTableColumnValuePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform<U>(item: U, column: ICdkTableColumn<U>): string | number | U[keyof U] {\n return !_.isNil(column) && !_.isNil(column.format) ? column.format(item, column) : item[column.name];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableSettings } from '../CdkTableBaseComponent';\nimport { ICdkTableRow } from './ICdkTableRow';\n\n@Pipe({\n name: 'viCdkTableRowClassName'\n})\nexport class CdkTableRowClassNamePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform<U>(item: U, row: ICdkTableRow<U>, selectedRows: Array<U>): string {\n return !_.isNil(row) && !_.isNil(row.className) ? (_.isString(row.className) ? row.className : row.className(item, selectedRows)) : null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ICdkTableSettings } from '../CdkTableBaseComponent';\nimport { ICdkTableRow } from './ICdkTableRow';\n\n@Pipe({\n name: 'viCdkTableRowStyleName'\n})\nexport class CdkTableRowStyleNamePipe implements PipeTransform {\n // --------------------------------------------------------------------------\n //\n //\tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public transform<U>(item: U, row: ICdkTableRow<U>, selectedRows: Array<U>, isInteractive?: boolean): { [key: string]: any } {\n return !_.isNil(row) && !_.isNil(row.styleName) ? row.styleName(item, selectedRows) : null;\n }\n}\n","import * as _ from 'lodash';\nimport { CdkTableBaseComponent } from '../CdkTableBaseComponent';\nimport { CdkTablePaginableMapCollection } from '../CdkTablePaginableMapCollection';\nimport { Component, Input, ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\n\n@Component({\n selector: 'vi-cdk-table-paginable',\n templateUrl: 'cdk-table-paginable.component.html'\n})\nexport class CdkTablePaginableComponent<U = any, V = any> extends CdkTableBaseComponent<CdkTablePaginableMapCollection<U, V>, U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _paginator: ICdkTablePaginatorSettings;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(container: ViewContainerRef) {\n super();\n ViewUtil.addClasses(container, 'd-flex flex-column scroll-no');\n this._paginator = { pageSizes: [10, 25, 100], hidePageSize: false, showFirstLastButtons: true };\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitPaginatorProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get paginator(): ICdkTablePaginatorSettings {\n return this._paginator;\n }\n @Input()\n public set paginator(value: ICdkTablePaginatorSettings) {\n if (value === this._paginator) {\n return;\n }\n this._paginator = value;\n if (!_.isNil(value)) {\n this.commitPaginatorProperties();\n }\n }\n}\n\nexport interface ICdkTablePaginatorSettings {\n pageSizes?: Array<number>;\n hidePageSize?: boolean;\n showFirstLastButtons?: boolean;\n}\n","<mat-table\n class=\"flex-grow-1 vertical-scroll-only\"\n matSort\n [dataSource]=\"table?.table?.dataSource\"\n [trackBy]=\"table.trackByFn\"\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [class.mat-nav-list]=\"settings?.isInteractive\"\n (matSortChange)=\"table.sortEventHandler($event)\"\n>\n <ng-container *ngFor=\"let column of columns; trackBy: columnTrackBy\">\n <ng-container [matColumnDef]=\"column.name\">\n <mat-header-cell\n class=\"px-2\"\n mat-sort-header\n [disableClear]=\"true\"\n [disabled]=\"column.isDisableSort\"\n [ngClass]=\"column.headerClassName\"\n *matHeaderCellDef\n >\n <span [innerHTML]=\"column.headerId | viTranslate\"></span>\n </mat-header-cell>\n\n <mat-cell\n class=\"px-2\"\n (click)=\"cellClickHandler(row, column)\"\n *matCellDef=\"let row\"\n [ngClass]=\"row | viCdkTableColumnClassName: column\"\n [ngStyle]=\"row | viCdkTableColumnStyleName: column\"\n >\n <span [ngClass]=\"column | viCdkTableCellClassName\" [vi-html-content-title]=\"row | viCdkTableColumnValue: column\"></span>\n </mat-cell>\n </ng-container>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columnNames\"></mat-header-row>\n\n <mat-row\n class=\"mat-list-item\"\n *matRowDef=\"let row; columns: columnNames\"\n [ngClass]=\"row | viCdkTableRowClassName: rows:selectedRows\"\n [ngStyle]=\"row | viCdkTableRowStyleName: rows:selectedRows\"\n (click)=\"rowClicked.emit(row)\"\n ></mat-row>\n\n <p class=\"p-3 flex-shrink-0 text-center mouse-inactive\" [vi-translate]=\"settings?.noDataId\" *matNoDataRow></p>\n \n</mat-table>\n\n<!--\n<p class=\"p-3 flex-shrink-0 text-center mouse-inactive\" *ngIf=\"table?.length === 0\" [innerHTML]=\"settings?.noDataId | viTranslate\"></p>\n-->\n\n<mat-progress-bar class=\"flex-shrink-0 border\" [mode]=\"table?.isLoading ? 'indeterminate' : 'determinate'\"></mat-progress-bar>\n\n<div class=\"paginator-container d-flex align-items-center justify-content-end flex-shrink-0\">\n <ng-content></ng-content>\n <mat-paginator\n class=\"flex-shrink-0\"\n [pageSize]=\"table?.pageSize\"\n [pageIndex]=\"table?.pageIndex\"\n [length]=\"table?.total\"\n (page)=\"table?.pageEventHandler($event)\"\n [pageSizeOptions]=\"paginator?.pageSizes\"\n [showFirstLastButtons]=\"paginator?.showFirstLastButtons\"\n [hidePageSize]=\"paginator?.hidePageSize\"\n *ngIf=\"paginator && table?.length > 0\"\n ></mat-paginator>\n</div>\n","import * as _ from 'lodash';\nimport { CdkTableBaseComponent } from '../CdkTableBaseComponent';\nimport { CdkTableFilterableMapCollection } from '../CdkTableFilterableMapCollection';\nimport { Component, ViewContainerRef } from '@angular/core';\nimport { ViewUtil } from '../../../util/ViewUtil';\n\n@Component({\n selector: 'vi-cdk-table-filterable',\n templateUrl: 'cdk-table-filterable.component.html'\n})\nexport class CdkTableFilterableComponent<U = any, V = any> extends CdkTableBaseComponent<CdkTableFilterableMapCollection<U, V>, U, V> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(container: ViewContainerRef) {\n super();\n ViewUtil.addClasses(container, 'd-flex flex-column scroll-no');\n }\n}\n","<mat-table\n class=\"flex-grow-1 vertical-scroll-only\"\n matSort\n [dataSource]=\"table?.table?.dataSource\"\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [class.mat-nav-list]=\"settings?.isInteractive\"\n (matSortChange)=\"table.sortEventHandler($event)\"\n>\n <ng-container *ngFor=\"let column of columns; trackBy: columnTrackBy\">\n <ng-container [matColumnDef]=\"column.name\">\n <mat-header-cell\n class=\"px-2\"\n mat-sort-header\n [disableClear]=\"true\"\n [disabled]=\"column.isDisableSort\"\n [ngClass]=\"column.headerClassName\"\n *matHeaderCellDef\n >\n <span [innerHTML]=\"column.headerId | viTranslate\"></span>\n </mat-header-cell>\n <mat-cell\n class=\"px-2\"\n (click)=\"cellClickHandler(row, column)\"\n *matCellDef=\"let row\"\n [ngClass]=\"row | viCdkTableColumnClassName: column\"\n [ngStyle]=\"row | viCdkTableColumnStyleName: column\"\n >\n <span [ngClass]=\"column | viCdkTableCellClassName\" [vi-html-content-title]=\"row | viCdkTableColumnValue: column\"></span>\n </mat-cell>\n </ng-container>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columnNames\"></mat-header-row>\n\n <mat-row\n class=\"mat-list-item\"\n *matRowDef=\"let row; columns: columnNames\"\n [ngClass]=\"row | viCdkTableRowClassName: rows:selectedRows\"\n [ngStyle]=\"row | viCdkTableRowStyleName: rows:selectedRows\"\n (click)=\"rowClicked.emit(row)\"\n ></mat-row>\n\n <p class=\"p-3 flex-shrink-0 text-center mouse-inactive\" [vi-translate]=\"settings?.noDataId\" *matNoDataRow></p>\n</mat-table>\n\n<mat-progress-bar class=\"flex-shrink-0 border transparent\" [mode]=\"table?.isLoading ? 'indeterminate' : 'determinate'\"></mat-progress-bar>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { VICommonModule } from '../VICommonModule';\nimport { LanguageSelectorComponent } from './language/language-selector/language-selector.component';\nimport { MenuListComponent } from './menu-list/menu-list.component';\nimport { SelectListComponent } from './select-list/select-list.component';\nimport { TabGroupComponent } from './tab-group/tab-group.component';\n\nimport { CdkTablePaginableComponent } from './cdk-table/cdk-table-paginable/cdk-table-paginable.component';\nimport { CdkTableFilterableComponent } from './cdk-table/cdk-table-filterable/cdk-table-filterable.component';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\nimport { CdkTableColumnValuePipe } from './cdk-table/column/CdkTableColumnValuePipe';\nimport { CdkTableColumnStyleNamePipe } from './cdk-table/column/CdkTableColumnStyleNamePipe';\nimport { CdkTableColumnClassNamePipe } from './cdk-table/column/CdkTableColumnClassNamePipe';\nimport { CdkTableRowClassNamePipe } from './cdk-table/row/CdkTableRowClassNamePipe';\nimport { CdkTableRowStyleNamePipe } from './cdk-table/row/CdkTableRowStyleNamePipe';\nimport { CdkTableCellClassNamePipe } from './cdk-table/column/CdkTableCellClassNamePipe';\n\nconst IMPORTS = [\n CommonModule,\n FormsModule,\n MatTabsModule,\n MatListModule,\n MatMenuModule,\n MatSelectModule,\n MatButtonModule,\n MatSortModule,\n MatTableModule,\n MatPaginatorModule,\n MatProgressBarModule,\n VICommonModule\n];\nconst ENTRY_COMPONENTS = [];\nconst DECLARATIONS = [\n CdkTableColumnValuePipe,\n CdkTableColumnClassNamePipe,\n CdkTableColumnStyleNamePipe,\n CdkTableRowStyleNamePipe,\n CdkTableRowClassNamePipe,\n CdkTableCellClassNamePipe,\n\n LanguageSelectorComponent,\n TabGroupComponent,\n MenuListComponent,\n SelectListComponent,\n CdkTablePaginableComponent,\n CdkTableFilterableComponent,\n ...ENTRY_COMPONENTS\n];\nconst EXPORTS = [...DECLARATIONS];\n\n@NgModule({\n imports: IMPORTS,\n declarations: DECLARATIONS,\n exports: EXPORTS,\n entryComponents: ENTRY_COMPONENTS\n})\nexport class VIComponentModule {}\n","import { CdkTableDataSource } from './CdkTableDataSource';\nimport { PaginableDataSourceMapCollection } from '@ts-core/common/map/dataSource';\nimport { Sort, SortDirection } from '@angular/material/sort';\nimport { PageEvent } from '@angular/material/paginator';\nimport * as _ from 'lodash';\nimport { CdkTableFilterableMapCollection } from './CdkTableFilterableMapCollection';\n\nexport abstract class CdkTablePaginableMapCollection<U, V> extends PaginableDataSourceMapCollection<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: CdkTableDataSource<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n super.initialize();\n this._table = this.getTable();\n }\n\n protected getTable(): CdkTableDataSource<U> {\n return new CdkTableDataSource(this);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public sortEventHandler(event: Sort): void {\n if (CdkTableFilterableMapCollection.applySortEvent(this, event)) {\n this.load();\n }\n }\n\n public pageEventHandler(event: PageEvent): void {\n this.pageIndex = event.pageIndex;\n this.pageSize = event.pageSize;\n this.load();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this._table)) {\n this._table.destroy();\n this._table = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): CdkTableDataSource<U> {\n return this._table;\n }\n}\n","import { PaginableBookmarkDataSourceMapCollection } from '@ts-core/common/map/dataSource';\nimport { CdkTableDataSource } from './CdkTableDataSource';\nimport * as _ from 'lodash';\nimport { CdkTableFilterableMapCollection } from './CdkTableFilterableMapCollection';\nimport { Sort } from '@angular/material/sort';\n\nexport abstract class CdkTablePaginableBookmarkMapCollection<U, V> extends PaginableBookmarkDataSourceMapCollection<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _table: CdkTableDataSource<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(): void {\n super.initialize();\n this._table = this.getTable();\n }\n\n protected getTable(): CdkTableDataSource<U> {\n return new CdkTableDataSource(this);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tEvent Handlers\n //\n // --------------------------------------------------------------------------\n\n public sortEventHandler(event: Sort): void {\n if (CdkTableFilterableMapCollection.applySortEvent(this, event)) {\n this.load();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n super.destroy();\n if (!_.isNil(this._table)) {\n this._table.destroy();\n this._table = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get table(): CdkTableDataSource<U> {\n return this._table;\n }\n}\n","import { ICookieOptions } from '@ts-core/frontend/cookie';\nimport * as Cookie from 'ngx-cookie';\n\nexport class CookieOptions implements ICookieOptions, Cookie.CookieOptions {\n path?: string;\n domain?: string;\n expires?: string | Date;\n secure?: boolean;\n httpOnly?: boolean;\n storeUnencoded?: boolean;\n}\n","import { AbstractControl, AsyncValidatorFn, Validator, ValidatorFn, Validators } from '@angular/forms';\nimport * as _ from 'lodash';\nimport { of } from 'rxjs';\n\n// --------------------------------------------------------------------------\n//\n// Export Properties\n//\n// --------------------------------------------------------------------------\n\nexport type ValidationResult = { [validator: string]: string | boolean };\nexport type ValidatorArray = Array<Validator | ValidatorFn>;\nexport type AsyncValidatorArray = Array<Validator | AsyncValidatorFn>;\n\nlet normalizeValidator = (validator: Validator | ValidatorFn): ValidatorFn | AsyncValidatorFn => {\n let func = (validator as Validator).validate.bind(validator);\n if (typeof func === 'function') {\n return (control: AbstractControl) => func(control);\n } else {\n return <ValidatorFn | AsyncValidatorFn>validator;\n }\n};\n\nexport let composeValidators = (validators: ValidatorArray): AsyncValidatorFn | ValidatorFn => {\n if (_.isEmpty(validators)) {\n return null;\n }\n return Validators.compose(validators.map(normalizeValidator));\n};\n\nexport let validate = (validators: ValidatorArray, asyncValidators: AsyncValidatorArray) => {\n return (control: AbstractControl) => {\n let synchronousValid = () => composeValidators(validators)(control);\n if (asyncValidators) {\n let asyncValidator = composeValidators(asyncValidators);\n return asyncValidator(control).map(v => {\n let secondary = synchronousValid();\n if (secondary || v) {\n return Object.assign({}, secondary, v);\n }\n });\n }\n if (validators) {\n return of(synchronousValid());\n }\n return of(null);\n };\n};\n\nexport const message = (validator: ValidationResult, key: string): string => {\n if (!key) {\n return 'Validation failed: ' + validator.toString();\n }\n\n switch (key) {\n case 'required':\n return 'Please enter a value';\n case 'pattern':\n return 'Value does not match required pattern';\n case 'minlength':\n return 'Value must be N characters';\n case 'maxlength':\n return 'Value must be a maximum of N characters';\n }\n\n let value = validator[key];\n switch (typeof value) {\n case 'string':\n return value as string;\n default:\n return 'Validation failed: ' + key;\n }\n};\n","import { ControlValueAccessor } from '@angular/forms';\nimport { Destroyable } from '@ts-core/common';\n\nexport class ValueAccessor<T> extends Destroyable implements ControlValueAccessor {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n private innerValue: T;\n private changed: Array<(value: T) => void>;\n private touched: Array<() => void>;\n\n // --------------------------------------------------------------------------\n //\n //\tConstuctor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n this.changed = [];\n this.touched = [];\n }\n\n // --------------------------------------------------------------------------\n //\n //\tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected valueChanged(): void {\n this.changed.forEach(f => f(this.innerValue));\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public touch(): void {\n this.touched.forEach(f => f());\n }\n\n public writeValue(value: T): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: T) => void): void {\n this.changed.push(fn);\n }\n\n public registerOnTouched(fn: () => void): void {\n this.touched.push(fn);\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.changed = null;\n this.touched = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Properties\n //\n // --------------------------------------------------------------------------\n\n public get value(): T {\n return this.innerValue;\n }\n\n public set value(value: T) {\n if (value == this.innerValue) {\n return;\n }\n this.innerValue = value;\n this.valueChanged();\n }\n}\n","import { NgModel } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AsyncValidatorArray, message, validate, ValidationResult, ValidatorArray } from './validate';\nimport { ValueAccessor } from './ValueAccessor';\n\nexport abstract class FormElementAsync<T> extends ValueAccessor<T> {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected abstract model: NgModel;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private validators: ValidatorArray, private asyncValidators: AsyncValidatorArray) {\n super();\n }\n\n protected validate(): Observable<ValidationResult> {\n return validate(this.validators, this.asyncValidators)(this.model.control);\n }\n\n protected get invalid(): Observable<boolean> {\n return this.validate().pipe(\n map(v => {\n return Object.keys(v || {}).length > 0;\n })\n );\n }\n\n protected get failures(): Observable<Array<string>> {\n return this.validate().pipe(map(v => Object.keys(v).map(k => message(v, k))));\n }\n}\n","import { AfterContentInit, Directive, Injectable, OnDestroy } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm, NgModel, Validator, ValidatorFn } from '@angular/forms';\nimport { message, ValidationResult } from './validate';\nimport { ValueAccessor } from './ValueAccessor';\n\n@Directive()\nexport abstract class FormElementSync<T> extends ValueAccessor<T> implements AfterContentInit, OnDestroy {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n protected abstract model: NgModel;\n protected _validationError: string;\n protected timer: any;\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private validators: Array<Validator | ValidatorFn>) {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected valueChanged(): void {\n super.valueChanged();\n setTimeout(this.validate);\n }\n\n protected validate = (): ValidationResult => {\n if (!this.validators || this.validators.length === 0) {\n this._validationError = null;\n return null;\n }\n\n let failure: ValidationResult = null;\n for (let item of this.validators) {\n failure = typeof item === 'function' ? item(this.model.control) : item.validate(this.model.control);\n if (failure) {\n break;\n }\n }\n this._validationError = failure ? message(failure, Object.keys(failure)[0]) : null;\n return failure;\n };\n\n public get valid(): boolean {\n return !this.invalid;\n }\n\n public get invalid(): boolean {\n return this._validationError != null;\n }\n\n public get validationError(): string {\n return this._validationError;\n }\n\n protected isErrorState = (control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean => {\n return this.invalid;\n };\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public ngAfterContentInit(): void {\n this.validate();\n }\n\n public ngOnDestroy(): void {\n clearTimeout(this.timer);\n this.timer = null;\n }\n}\n","import { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { LanguageService } from '@ts-core/frontend/language';\n\nexport class LanguageMomentDateAdapter extends MomentDateAdapter {\n // --------------------------------------------------------------------------\n //\n //\tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(language: LanguageService) {\n super(language.locale);\n language.completed.subscribe(item => this.setLocale(item.locale));\n }\n}\n","import { LoadableEvent, Loadable, LoadableStatus } from '@ts-core/common';\nimport { ExtendedError } from '@ts-core/common/error';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { TransportNoConnectionError, TransportTimeoutError } from '@ts-core/common/transport';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\nexport abstract class LoginBaseService<E = any, U = any, V = any> extends Loadable<E | LoginBaseServiceEvent, U | V | ExtendedError> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _sid: string;\n protected _resource: string;\n\n protected _loginData: V;\n protected _isLoggedIn: boolean = false;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor() {\n super();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected async loginByParam<T = any>(param?: T): Promise<U> {\n return this.loginByFunction(() => this.loginRequest(param));\n }\n\n protected async loginByFunction(sidReturnFunction: (...params) => Promise<U>): Promise<U> {\n if (this.isLoggedIn || this.isLoading) {\n return null;\n }\n\n let response: U;\n this.status = LoadableStatus.LOADING;\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_STARTED));\n\n try {\n response = await sidReturnFunction();\n this.parseLoginResponse(response);\n if (!this.isCanLoginWithSid()) {\n this.status = LoadableStatus.LOADED;\n } else {\n this.loginBySid();\n }\n } catch (error) {\n let extendedError = ExtendedError.create(error as any);\n\n this.status = LoadableStatus.ERROR;\n this.parseLoginErrorResponse(extendedError);\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_ERROR, null, extendedError));\n }\n\n if (!this.isLoading) {\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_FINISHED));\n }\n return response;\n }\n\n protected async loginBySid(): Promise<void> {\n if (_.isNil(this.sid)) {\n this._sid = this.getSavedSid();\n }\n\n try {\n let response = await this.loginSidRequest();\n this.parseLoginSidResponse(response);\n\n this._isLoggedIn = true;\n this.status = LoadableStatus.LOADED;\n this.observer.next(new ObservableData(LoadableEvent.COMPLETE, response));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_COMPLETE, response));\n } catch (error) {\n let extendedError = ExtendedError.create(error as any);\n this.parseLoginSidErrorResponse(extendedError);\n\n this._isLoggedIn = false;\n this.status = LoadableStatus.ERROR;\n this.observer.next(new ObservableData(LoadableEvent.ERROR, null, extendedError));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_ERROR, null, extendedError));\n }\n\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_FINISHED));\n }\n\n protected reset(): void {\n this._sid = null;\n this._resource = null;\n this._loginData = null;\n }\n\n protected abstract loginRequest(...params): Promise<U>;\n protected abstract loginSidRequest(): Promise<V>;\n\n protected abstract logoutRequest(): Promise<void>;\n protected abstract getSavedSid(): string;\n\n // --------------------------------------------------------------------------\n //\n // \tParse Methods\n //\n // --------------------------------------------------------------------------\n\n protected abstract parseLoginResponse(response: U): void;\n\n protected parseLoginErrorResponse(error: ExtendedError): void {}\n\n protected parseLogoutErrorResponse(error: ExtendedError): void {}\n\n protected parseLoginSidResponse(response: V): void {\n this._loginData = response;\n }\n\n protected parseLoginSidErrorResponse(error: ExtendedError): void {\n if (error instanceof TransportTimeoutError || error instanceof TransportNoConnectionError) {\n return;\n }\n this.reset();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract login(param: any): void;\n\n public async loginByResponse(param: U): Promise<void> {\n if (this.isLoggedIn || this.isLoading) {\n return;\n }\n\n this.status = LoadableStatus.LOADING;\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_STARTED));\n\n this.parseLoginResponse(param);\n this.status = !this.isCanLoginWithSid() ? LoadableStatus.LOADED : LoadableStatus.LOADING;\n if (this.isLoading) {\n await this.loginBySid();\n }\n }\n\n public tryLoginBySid(): boolean {\n if (!this.isCanLoginWithSid()) {\n return false;\n }\n\n if (!this.isLoggedIn && !this.isLoading) {\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 }\n return true;\n }\n\n public async logout(): Promise<void> {\n if (!this.isLoggedIn) {\n return;\n }\n\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGOUT_STARTED));\n\n try {\n await this.logoutRequest();\n } catch (error) {\n let extendedError = ExtendedError.create(error as any);\n this.parseLogoutErrorResponse(extendedError);\n } finally {\n this.reset();\n this._isLoggedIn = false;\n this.status = LoadableStatus.NOT_LOADED;\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGOUT_FINISHED));\n }\n }\n\n public isCanLoginWithSid(): boolean {\n return this.sid != null || this.getSavedSid() != null;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.reset();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get logined(): Observable<V> {\n return this.events.pipe(\n filter(item => item.type === LoginBaseServiceEvent.LOGIN_COMPLETE),\n map(item => item.data as V)\n );\n }\n\n public get logouted(): Observable<void> {\n return this.events.pipe(\n filter(item => item.type === LoginBaseServiceEvent.LOGOUT_FINISHED),\n map(() => null)\n );\n }\n\n public get sid(): string {\n return this._sid;\n }\n\n public get resource(): string {\n return this._resource;\n }\n\n public get loginData(): V {\n return this._loginData;\n }\n\n public get isLoggedIn(): boolean {\n return this._isLoggedIn;\n }\n}\n\nexport enum LoginBaseServiceEvent {\n LOGIN_ERROR = 'LOGIN_ERROR',\n LOGIN_STARTED = 'LOGIN_STARTED',\n LOGIN_COMPLETE = 'LOGIN_COMPLETE',\n LOGIN_FINISHED = 'LOGIN_FINISHED',\n LOGOUT_STARTED = 'LOGOUT_STARTED',\n LOGOUT_FINISHED = 'LOGOUT_FINISHED',\n\n REGISTRATION_ERROR = 'REGISTRATION_ERROR',\n REGISTRATION_STARTED = 'REGISTRATION_STARTED',\n REGISTRATION_COMPLETE = 'REGISTRATION_COMPLETE',\n REGISTRATION_FINISHED = 'REGISTRATION_FINISHED'\n}\n","import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';\nimport { LoginBaseService, LoginBaseServiceEvent } from './LoginBaseService';\nimport { PromiseHandler } from '@ts-core/common/promise';\n\nexport class LoginRequireResolver implements Resolve<void> {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected login: LoginBaseService) {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public resolve(): Promise<void> {\n if (this.login.isLoggedIn) {\n return Promise.resolve();\n }\n\n let promise = PromiseHandler.create<void>();\n let subscription = this.login.events.subscribe(data => {\n if (data.type === LoginBaseServiceEvent.LOGIN_ERROR) {\n promise.reject(data.error.toString());\n } else if (data.type === LoginBaseServiceEvent.LOGIN_COMPLETE) {\n promise.resolve();\n } else if (data.type === LoginBaseServiceEvent.LOGIN_FINISHED) {\n subscription.unsubscribe();\n }\n });\n return promise.promise;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';\nimport { LoginBaseService } from './LoginBaseService';\nimport { LoginRequireResolver } from './LoginRequireResolver';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginGuard extends LoginRequireResolver implements CanActivate {\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(login: LoginBaseService) {\n super(login);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public canActivate(): boolean {\n return this.login.isLoggedIn;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { LoginBaseService } from './LoginBaseService';\nimport { LoginRequireResolver } from './LoginRequireResolver';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginResolver extends LoginRequireResolver {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public static logoutUrl: string = '/login';\n public static redirectUrl: string = '/';\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(login: LoginBaseService) {\n super(login);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';\nimport { LoginResolver } from './LoginResolver';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginRedirectResolver implements CanActivate {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n LoginResolver.redirectUrl = state.url;\n return true;\n }\n}\n","export class MenuItemBase {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _name: string;\n protected _isEnabled: boolean = true;\n\n public checkEnabled: (item: MenuItemBase) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public nameId: string, public sortIndex: number = NaN, public iconId?: string) {}\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitNameProperties(): void {}\n protected commitIsEnabledProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public get isEnabled(): boolean {\n return this._isEnabled;\n }\n public set isEnabled(value: boolean) {\n if (value === this._isEnabled) {\n return;\n }\n this._isEnabled = value;\n this.commitIsEnabledProperties();\n }\n\n public get name(): string {\n return this._name;\n }\n public set name(value: string) {\n if (value === this._name) {\n return;\n }\n this._name = value;\n this.commitNameProperties();\n }\n}\n","import { MenuItemBase } from './MenuItemBase';\n\nexport class MenuItem extends MenuItemBase {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public flag: string;\n public select: (item: MenuItem) => void;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(nameId?: string, sortIndex?: number, flag?: string, iconId?: string) {\n super(nameId, sortIndex, iconId);\n this.flag = flag || 'none';\n }\n}\n","import { DestroyableContainer, LoadableEvent } from '@ts-core/common';\nimport { ArrayUtil } from '@ts-core/common/util';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { MenuItem } from './MenuItem';\nimport { MenuItemBase } from './MenuItemBase';\n\nexport class MenuItems extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _items: Array<MenuItemBase>;\n protected _enabledItems: Array<MenuItemBase>;\n protected filterFunction: (item: MenuItemBase) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService, filterFunction?: (item: MenuItem) => boolean, isAutoTranslate: boolean = false) {\n super();\n\n this._items = [];\n this._enabledItems = [];\n this.filterFunction = filterFunction;\n\n language.completed\n .pipe(\n filter(() => isAutoTranslate),\n takeUntil(this.destroyed)\n )\n .subscribe(() => this.translateItems(this._items));\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n private translateItems(items: Array<MenuItemBase>): void {\n for (let item of items) {\n this.translateItem(item);\n }\n }\n\n private translateItem(item: MenuItemBase): void {\n item.name = this.language.translate(item.nameId);\n }\n\n private checkEnabledItems(items: Array<MenuItemBase>): boolean {\n ArrayUtil.sort(items);\n let isMainItems = items === this._items;\n let isAllEnabled = true;\n\n if (isMainItems) {\n ArrayUtil.clear(this._enabledItems);\n }\n\n for (let item of items) {\n if (!item.name && item.nameId) {\n this.translateItem(item);\n }\n\n let isEnabled = item.checkEnabled ? item.checkEnabled(item) : true;\n if (isEnabled && this.filterFunction) {\n isEnabled = this.filterFunction(item);\n }\n\n item.isEnabled = isEnabled;\n if (isEnabled) {\n this._enabledItems.push(item);\n }\n\n if (isAllEnabled && !isEnabled) {\n isAllEnabled = false;\n }\n }\n return isAllEnabled;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public add(item: MenuItemBase): MenuItemBase {\n this._items.push(item);\n return item;\n }\n\n public remove(item: MenuItemBase): MenuItemBase {\n let index = this._items.indexOf(item);\n if (index > -1) {\n this._items.slice(index, 1);\n }\n return item;\n }\n\n public checkEnabled(...args): boolean {\n return this.checkEnabledItems(this._items);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tInterface Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this._items = null;\n this._enabledItems = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get items(): Array<MenuItemBase> {\n return this._items;\n }\n\n public get enabledItems(): Array<MenuItemBase> {\n return this._enabledItems;\n }\n}\n","import { MenuItem } from './MenuItem';\n\nexport class NavigationMenuItem extends MenuItem {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n public url: string;\n public isActive: boolean = false;\n public select: (item: NavigationMenuItem) => void;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(nameId?: string, sortIndex?: number, iconId?: string, url?: string) {\n super(nameId, sortIndex, null, iconId);\n this.url = url;\n }\n}\n","import { IListItem } from './IListItem';\nimport * as _ from 'lodash';\nimport { IDestroyable } from '@ts-core/common';\n\nexport class ListItem<T = any> implements IListItem<T>, IDestroyable {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _uid: string;\n\n protected _data: T;\n protected _label: string;\n protected _iconId: string;\n protected _className: string;\n protected _sortIndex: number;\n protected _isEnabled: boolean = true;\n protected _translationId: string;\n\n public action: (item: IListItem, ...params) => void;\n public checkEnabled: (item: IListItem, ...params) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(translationId: string, sortIndex: number = NaN, data?: T, iconId?: string) {\n this.data = data;\n this.iconId = iconId;\n this.sortIndex = sortIndex;\n this.translationId = translationId;\n\n this._uid = this.getUid();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitDataProperties(): void {}\n protected commitLabelProperties(): void {}\n protected commitIsEnabledProperties(): void {}\n protected commitClassNameProperties(): void {}\n\n protected commitIconIdProperties(): void {}\n protected commitSortIndexProperties(): void {}\n protected commitTranslationIdProperties(): void {}\n\n protected getUid(): string {\n return `${this.translationId}_${this.sortIndex}`;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n this._data = null;\n this.action = null;\n this.checkEnabled = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get uid(): string {\n return this._uid;\n }\n\n public get sortIndex(): number {\n return this._sortIndex;\n }\n public set sortIndex(value: number) {\n if (value === this._sortIndex) {\n return;\n }\n this._sortIndex = value;\n if (!_.isNil(value)) {\n this.commitSortIndexProperties();\n }\n }\n\n public get isEnabled(): boolean {\n return this._isEnabled;\n }\n public set isEnabled(value: boolean) {\n if (value === this._isEnabled) {\n return;\n }\n this._isEnabled = value;\n if (_.isBoolean(value)) {\n this.commitIsEnabledProperties();\n }\n }\n\n public get label(): string {\n return this._label;\n }\n public set label(value: string) {\n if (value === this._label) {\n return;\n }\n this._label = value;\n if (!_.isNil(value)) {\n this.commitLabelProperties();\n }\n }\n\n public get translationId(): string {\n return this._translationId;\n }\n public set translationId(value: string) {\n if (value === this._translationId) {\n return;\n }\n this._translationId = value;\n if (!_.isNil(value)) {\n this.commitTranslationIdProperties();\n }\n }\n\n public get iconId(): string {\n return this._iconId;\n }\n public set iconId(value: string) {\n if (value === this._iconId) {\n return;\n }\n this._iconId = value;\n if (!_.isNil(value)) {\n this.commitIconIdProperties();\n }\n }\n\n public get className(): string {\n return this._className;\n }\n public set className(value: string) {\n if (value === this._className) {\n return;\n }\n this._className = value;\n if (!_.isNil(value)) {\n this.commitClassNameProperties();\n }\n }\n\n public get data(): T {\n return this._data;\n }\n public set data(value: T) {\n if (value === this._data) {\n return;\n }\n this._data = value;\n if (!_.isNil(value)) {\n this.commitDataProperties();\n }\n }\n}\n","import { ArrayUtil } from '@ts-core/common/util';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport * as _ from 'lodash';\nimport { IListItem } from './IListItem';\nimport { FilterableMapCollection } from '@ts-core/common/map';\nimport { Subscription } from 'rxjs';\n\nexport class ListItems<U extends IListItem<V>, V = any> extends FilterableMapCollection<U> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected lastRefreshParams: Array<any>;\n protected languageSubscription: Subscription;\n\n protected _isAllEnabled: boolean;\n protected _isLeastOneEnabled: boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(private language: LanguageService, isAutoTranslate: boolean = true) {\n super('uid');\n\n this.lastRefreshParams = new Array();\n if (isAutoTranslate) {\n this.languageSubscription = language.completed.subscribe(this.translateItems);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected translate = (item: U): void => {\n item.label = this.language.translate(item.translationId);\n };\n\n protected translateItems = (): void => {\n this.collection.forEach(this.translate);\n };\n\n protected translateIfNeed = (item: U): void => {\n if (_.isNil(item.label) && !_.isNil(item.translationId)) {\n this.translate(item);\n }\n };\n\n protected translateItemsIfNeed = (): void => {\n this.collection.forEach(this.translateIfNeed);\n };\n\n protected sort(): void {\n ArrayUtil.sort(this.collection);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public complete(): void {\n this.translateItemsIfNeed();\n this.sort();\n }\n\n public refresh(...params): void {\n ArrayUtil.clear(this._filtered);\n this.lastRefreshParams = params;\n\n if (_.isEmpty(this.collection)) {\n return;\n }\n\n this._isAllEnabled = true;\n this._isLeastOneEnabled = false;\n for (let item of this._collection) {\n item.isEnabled = !_.isNil(item.checkEnabled) ? item.checkEnabled(item, ...params) : true;\n if (!item.isEnabled) {\n this._isAllEnabled = false;\n } else if (this.filter(item)) {\n this._filtered.push(item);\n this._isLeastOneEnabled = true;\n }\n }\n }\n\n public actionItem(item: U): void {\n if (!_.isNil(item) && item.isEnabled && !_.isNil(item.action)) {\n item.action(item, ...this.lastRefreshParams);\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n this.language = null;\n this.lastRefreshParams = null;\n\n if (!_.isNil(this.languageSubscription)) {\n this.languageSubscription.unsubscribe();\n this.languageSubscription = null;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isAllEnabled(): boolean {\n return this._isAllEnabled;\n }\n\n public get isLeastOneEnabled(): boolean {\n return this._isLeastOneEnabled;\n }\n}\n","import { ISelectListItem } from './ISelectListItem';\nimport * as _ from 'lodash';\nimport { ListItem } from '../ListItem';\nimport { IListItem } from '../IListItem';\n\nexport class SelectListItem<T = any> extends ListItem<T> implements ISelectListItem<T> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _isSelected: boolean;\n protected _selectedClassName: string;\n\n public checkSelected?: (item: ISelectListItem, ...params) => boolean;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(translationId: string, sortIndex: number, data: T, checkEnabled?: (item: IListItem, ...params) => boolean) {\n super(translationId, sortIndex, data);\n this.checkEnabled = checkEnabled;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitIsSelectProperties(): void {}\n\n protected commitSelectedClassNameProperties(): void {}\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public destroy(): void {\n super.destroy();\n this.checkSelected = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get isSelected(): boolean {\n return this._isSelected;\n }\n public set isSelected(value: boolean) {\n if (value === this._isSelected) {\n return;\n }\n this._isSelected = value;\n if (!_.isNil(value)) {\n this.commitIsSelectProperties();\n }\n }\n\n public get selectedClassName(): string {\n return this._selectedClassName;\n }\n public set selectedClassName(value: string) {\n if (value === this._selectedClassName) {\n return;\n }\n this._selectedClassName = value;\n if (!_.isNil(value)) {\n this.commitSelectedClassNameProperties();\n }\n }\n}\n","import * as _ from 'lodash';\nimport { ISelectListItem } from './ISelectListItem';\nimport { ListItems } from '../ListItems';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { EventEmitter } from '@angular/core';\n\nexport class SelectListItems<U extends ISelectListItem<V>, V = any> extends ListItems<U, V> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _selectedItem: U;\n protected _selectedData: V;\n protected _selectedIndex: number;\n\n protected _changed: EventEmitter<U>;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(language: LanguageService, isAutoTranslate: boolean = true) {\n super(language, isAutoTranslate);\n this._changed = new EventEmitter();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitSelectedItemProperties(): void {\n this.selectedData = !_.isNil(this.selectedItem) ? this.selectedItem.data : null;\n this.selectedIndex = !_.isNil(this.selectedItem) ? this.selectedItem.sortIndex : null;\n\n if (!_.isNil(this.changed)) {\n this.changed.emit(this.selectedItem);\n }\n }\n\n protected commitSelectedDataProperties(): void {\n this.selectedItem = !_.isNil(this.selectedData) ? _.find(this.collection, item => item.data === this.selectedData) : null;\n }\n protected commitSelectedIndexProperties(): void {\n this.selectedItem = !_.isNil(this.selectedIndex) ? _.find(this.collection, item => item.sortIndex === this.selectedIndex) : null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get selectedItem(): U {\n return this._selectedItem;\n }\n public set selectedItem(value: U) {\n if (value === this._selectedItem) {\n return;\n }\n this._selectedItem = value;\n this.commitSelectedItemProperties();\n }\n\n public get selectedIndex(): number {\n return this._selectedIndex;\n }\n public set selectedIndex(value: number) {\n if (value === this._selectedIndex) {\n return;\n }\n this._selectedIndex = value;\n this.commitSelectedIndexProperties();\n }\n\n public get selectedData(): V {\n return this._selectedData;\n }\n public set selectedData(value: V) {\n if (value === this._selectedData) {\n return;\n }\n this._selectedData = value;\n this.commitSelectedDataProperties();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public complete(indexOrDataToSelect?: number | V): void {\n super.complete();\n if (_.isNil(indexOrDataToSelect)) {\n return;\n }\n if (_.isNumber(indexOrDataToSelect)) {\n this.selectedIndex = indexOrDataToSelect;\n } else {\n this.selectedItem = _.find(this.collection, item => item.data === indexOrDataToSelect);\n }\n }\n\n public refresh(...params): void {\n super.refresh(...params);\n this.refreshSelection(...params);\n }\n\n public refreshSelection(...params): void {\n if (_.isEmpty(this.collection)) {\n return;\n }\n for (let item of this._collection) {\n item.isSelected = !_.isNil(item.checkSelected) ? item.checkSelected(item, ...params) : false;\n if (item.isSelected) {\n this.selectedItem = item;\n }\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this._changed)) {\n this._changed.complete();\n this._changed = null;\n }\n this.selectedIndex = null;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get changed(): EventEmitter<U> {\n return this._changed;\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DestroyableContainer, LoadableEvent } from '@ts-core/common';\nimport { LanguageService } from '@ts-core/frontend/language';\nimport { takeUntil } from 'rxjs/operators';\nimport { CamelCasePipe } from '../pipe/CamelCasePipe';\nimport { FinancePipe } from '../pipe/FinancePipe';\nimport { MomentDateAdaptivePipe } from '../pipe/MomentDateAdaptivePipe';\nimport { MomentDateFromNowPipe } from '../pipe/MomentDateFromNowPipe';\nimport { MomentDatePipe } from '../pipe/MomentDatePipe';\nimport { MomentTimePipe } from '../pipe/MomentTimePipe';\nimport { PrettifyPipe } from '../pipe/PrettifyPipe';\nimport { SanitizePipe } from '../pipe/SanitizePipe';\nimport { TimePipe } from '../pipe/TimePipe';\nimport { TruncatePipe } from '../pipe/TruncatePipe';\n\nexport class PipeBaseService extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n private static DATE: DatePipe = null;\n private static TIME: TimePipe = null;\n private static FINANCE: FinancePipe = null;\n private static PRETTIFY: PrettifyPipe = null;\n private static TRUNCATE: TruncatePipe = null;\n private static SANITIZE: SanitizePipe = null;\n\n private static CAMEL_CASE: CamelCasePipe = null;\n\n private static MOMENT_TIME: MomentTimePipe = null;\n private static MOMENT_DATE: MomentDatePipe = null;\n private static MOMENT_DATE_FROM_NOW: MomentDateFromNowPipe = null;\n private static MOMENT_ADAPTIVE_DATE: MomentDateAdaptivePipe = null;\n\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n private _locale: string;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(public language: LanguageService, public sanitizer: DomSanitizer) {\n super();\n\n if (this.language.isLoaded) {\n this.commitLanguageProperties();\n }\n this.language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.commitLanguageProperties());\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected commitLanguageProperties(): void {\n let locale = this.language.locale ? this.language.language.locale : 'en';\n this._locale = locale === 'en' ? 'en-US' : locale;\n\n if (PipeBaseService.DATE) {\n PipeBaseService.DATE = new DatePipe(this.locale);\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get date(): DatePipe {\n if (!PipeBaseService.DATE) {\n PipeBaseService.DATE = new DatePipe(this.locale);\n }\n return PipeBaseService.DATE;\n }\n\n public get time(): TimePipe {\n if (!PipeBaseService.TIME) {\n PipeBaseService.TIME = new TimePipe();\n }\n return PipeBaseService.TIME;\n }\n\n public get finance(): FinancePipe {\n if (!PipeBaseService.FINANCE) {\n PipeBaseService.FINANCE = new FinancePipe();\n }\n return PipeBaseService.FINANCE;\n }\n\n public get truncate(): TruncatePipe {\n if (!PipeBaseService.TRUNCATE) {\n PipeBaseService.TRUNCATE = new TruncatePipe();\n }\n return PipeBaseService.TRUNCATE;\n }\n\n public get prettify(): PrettifyPipe {\n if (!PipeBaseService.PRETTIFY) {\n PipeBaseService.PRETTIFY = new PrettifyPipe();\n }\n return PipeBaseService.PRETTIFY;\n }\n\n public get momentDate(): MomentDatePipe {\n if (!PipeBaseService.MOMENT_DATE) {\n PipeBaseService.MOMENT_DATE = new MomentDatePipe();\n }\n return PipeBaseService.MOMENT_DATE;\n }\n\n public get momentDateFromNow(): MomentDateFromNowPipe {\n if (!PipeBaseService.MOMENT_DATE_FROM_NOW) {\n PipeBaseService.MOMENT_DATE_FROM_NOW = new MomentDateFromNowPipe();\n }\n return PipeBaseService.MOMENT_DATE_FROM_NOW;\n }\n\n public get momentDateAdaptive(): MomentDateAdaptivePipe {\n if (!PipeBaseService.MOMENT_ADAPTIVE_DATE) {\n PipeBaseService.MOMENT_ADAPTIVE_DATE = new MomentDateAdaptivePipe();\n }\n return PipeBaseService.MOMENT_ADAPTIVE_DATE;\n }\n\n public get momentTime(): MomentTimePipe {\n if (!PipeBaseService.MOMENT_TIME) {\n PipeBaseService.MOMENT_TIME = new MomentTimePipe();\n }\n return PipeBaseService.MOMENT_TIME;\n }\n\n public get sanitize(): SanitizePipe {\n if (!PipeBaseService.SANITIZE) {\n PipeBaseService.SANITIZE = new SanitizePipe(this.sanitizer);\n }\n return PipeBaseService.SANITIZE;\n }\n\n public get camelCase(): CamelCasePipe {\n if (!PipeBaseService.CAMEL_CASE) {\n PipeBaseService.CAMEL_CASE = new CamelCasePipe();\n }\n return PipeBaseService.CAMEL_CASE;\n }\n\n public get locale(): string {\n return this._locale;\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Injectable } from '@angular/core';\nimport { DestroyableContainer } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\n\nimport * as _ from 'lodash';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class BootstrapBreakpointService extends DestroyableContainer {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n public static DEFAULT_SM = 576;\n public static DEFAULT_MD = 768;\n public static DEFAULT_LG = 992;\n public static DEFAULT_XL = 1200;\n public static DEFAULT_XXL = 1400;\n\n protected _breakpoint: BootstrapBreakpoint;\n protected items: Array<IBreakpointItem>;\n\n protected observer: Subject<ObservableData<BootstrapBreakpointServiceEvent, BootstrapBreakpoint>>;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected service: BreakpointObserver) {\n super();\n this.observer = new Subject();\n this.initialize();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n // --------------------------------------------------------------------------\n\n protected initialize(\n sm: number = BootstrapBreakpointService.DEFAULT_SM,\n md: number = BootstrapBreakpointService.DEFAULT_MD,\n lg: number = BootstrapBreakpointService.DEFAULT_LG,\n xl: number = BootstrapBreakpointService.DEFAULT_XL,\n xxl: number = BootstrapBreakpointService.DEFAULT_XXL\n ): void {\n this.items = [\n { name: BootstrapBreakpoint.XXL, value: `(min-width: ${xxl}px)` },\n { name: BootstrapBreakpoint.XL, value: `(min-width: ${xl}px)` },\n { name: BootstrapBreakpoint.LG, value: `(min-width: ${lg}px)` },\n { name: BootstrapBreakpoint.MD, value: `(min-width: ${md}px)` },\n { name: BootstrapBreakpoint.SM, value: `(min-width: 0px)` }\n ];\n\n merge(...this.items.map(item => this.service.observe(item.value)))\n .pipe(takeUntil(this.destroyed))\n .subscribe(() => this.setBreakpoint(this.getBreakpoint()));\n }\n\n protected getBreakpoint(): BootstrapBreakpoint {\n for (let item of this.items) {\n if (this.service.isMatched(item.value)) {\n return item.name;\n }\n }\n return null;\n }\n\n protected setBreakpoint(value: BootstrapBreakpoint): void {\n if (value === this._breakpoint) {\n return;\n }\n this._breakpoint = value;\n this.observer.next(new ObservableData(BootstrapBreakpointServiceEvent.CHANGED, this.breakpoint));\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public isEqual(item: BootstrapBreakpoint): boolean {\n return item === this.breakpoint;\n }\n\n public isUp(item: BootstrapBreakpoint): boolean {\n return _.findIndex(this.items, { name: this.breakpoint }) < _.findIndex(this.items, { name: item });\n }\n\n public isUpOrEqual(item: BootstrapBreakpoint): boolean {\n return this.isEqual(item) || this.isUp(item);\n }\n\n public isDown(item: BootstrapBreakpoint): boolean {\n return _.findIndex(this.items, { name: this.breakpoint }) > _.findIndex(this.items, { name: item });\n }\n\n public isDownOrEqual(item: BootstrapBreakpoint): boolean {\n return this.isEqual(item) || this.isDown(item);\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get breakpoint(): BootstrapBreakpoint {\n return this._breakpoint;\n }\n\n public get events(): Observable<ObservableData<BootstrapBreakpointServiceEvent, BootstrapBreakpoint>> {\n return this.observer.asObservable();\n }\n\n public get changed(): Observable<BootstrapBreakpoint> {\n return this.events.pipe(\n filter(item => item.type === BootstrapBreakpointServiceEvent.CHANGED),\n map(item => item.data)\n );\n }\n}\n\ninterface IBreakpointItem {\n name: BootstrapBreakpoint;\n value: string;\n}\n\nexport enum BootstrapBreakpointServiceEvent {\n CHANGED = 'CHANGED'\n}\n\nexport enum BootstrapBreakpoint {\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n XXL = 'xxl'\n}\n","import {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationExtras,\n NavigationStart,\n Router,\n UrlTree\n} from '@angular/router';\nimport { Loadable, LoadableEvent, LoadableStatus } from '@ts-core/common';\nimport { ObservableData } from '@ts-core/common/observer';\nimport { NativeWindowService } from '@ts-core/frontend/service/NativeWindowService';\nimport * as _ from 'lodash';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport class RouterBaseService extends Loadable<void, RouterBaseServiceEventData> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected params: Map<string, string>;\n\n protected extrasToApply: NavigationExtras;\n protected isNeedUpdateExtras: boolean = false;\n\n protected _lastUrl: string;\n protected _previousUrl: string;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected _router: Router, protected window: NativeWindowService) {\n super();\n this.params = new Map();\n this.observer = new Subject();\n\n this._lastUrl = this.url;\n this.window.getParams().forEach((value, key) => this.params.set(key, value));\n this.initializeObservers();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPrivate Methods\n //\n // --------------------------------------------------------------------------\n\n protected initializeObservers(): void {\n this.router.events.pipe(takeUntil(this.destroyed)).subscribe(event => {\n if (event instanceof NavigationStart) {\n this._previousUrl = this.url;\n this.status = LoadableStatus.LOADING;\n } else if (event instanceof NavigationEnd || event instanceof NavigationCancel || event instanceof NavigationError) {\n if (event instanceof NavigationEnd) {\n this._lastUrl = event.url;\n }\n this.status = LoadableStatus.LOADED;\n }\n });\n }\n\n protected async applyExtras(extras?: NavigationExtras): Promise<boolean> {\n let params = {} as NavigationExtras;\n params.queryParams = this.getQueryParams();\n\n if (!_.isNil(extras)) {\n Object.assign(params, extras);\n }\n\n if (!this.isLoading) {\n return this.router.navigate([], params);\n }\n this.extrasToApply = extras;\n this.isNeedUpdateExtras = true;\n return false;\n }\n\n protected getQueryParams(): any {\n let params = {} as any;\n this.params.forEach((value, key) => (params[key] = value));\n return params;\n }\n\n protected commitStatusChangedProperties(oldStatus: LoadableStatus, newStatus: LoadableStatus): void {\n super.commitStatusChangedProperties(oldStatus, newStatus);\n\n switch (newStatus) {\n case LoadableStatus.LOADING:\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n break;\n case LoadableStatus.LOADED:\n if (this.isNeedUpdateExtras) {\n this.isNeedUpdateExtras = false;\n this.applyExtras(this.extrasToApply);\n }\n this.observer.next(new ObservableData(LoadableEvent.COMPLETE, { url: this.url, previousUrl: this.previousUrl }));\n break;\n }\n\n if (newStatus === LoadableStatus.LOADED || newStatus === LoadableStatus.ERROR) {\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // \tNavigate Methods\n //\n // --------------------------------------------------------------------------\n\n public async navigate(url: string, extras?: NavigationExtras, isClearParams?: boolean): Promise<boolean> {\n if (isClearParams) {\n this.params.clear();\n }\n\n let params = {} as NavigationExtras;\n params.queryParams = this.getQueryParams();\n if (!_.isNil(extras)) {\n Object.assign(params, extras);\n }\n return this.router.navigateByUrl(url, params);\n }\n\n public navigateToExternalUrl(url: string, target: string = '_blank'): void {\n this.window.open(url, target);\n }\n\n public navigateToLast(extras?: NavigationExtras): Promise<boolean> {\n return this.navigate(this.lastUrl, extras);\n }\n\n public async navigateIfNotLoading(url: string, extras?: NavigationExtras): Promise<boolean> {\n return !this.isLoading ? this.navigate(url, extras) : false;\n }\n\n public reload(): void {\n location.reload();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public isUrlActive(item: string | UrlTree, isExact: boolean = false): boolean {\n if (isExact) {\n return this.router.isActive(item, isExact);\n }\n if (_.isString(item)) {\n item = this.router.parseUrl(item);\n }\n\n let current = this.router.parseUrl(this.urlTree.toString());\n item.fragment = current.fragment = null;\n item.queryParams = current.queryParams = {};\n return item.toString() === current.toString();\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Param Methods\n //\n // --------------------------------------------------------------------------\n\n public getParams<T = any>(): T {\n let params = {} as any;\n this.params.forEach((value, key) => (params[key] = value));\n return params;\n }\n\n public hasParam(name: string): boolean {\n return this.params.has(name);\n }\n\n public getParam<T = string>(name: string, defaultValue?: T): T {\n return this.hasParam(name) ? (this.params.get(name) as any) : defaultValue;\n }\n\n public setParam(name: string, value: any, extras?: NavigationExtras): void {\n if (!_.isNil(value)) {\n value = value.toString().trim();\n if (_.isEmpty(value)) {\n value = null;\n }\n }\n if (!_.isNil(value)) {\n this.params.set(name, value);\n } else {\n this.params.delete(name);\n }\n if (!_.isNil(extras)) {\n extras = { replaceUrl: true };\n }\n this.applyExtras(extras);\n }\n\n public removeParam(name: string, extras?: NavigationExtras): void {\n if (this.hasParam(name)) {\n this.setParam(name, null, extras);\n }\n }\n\n public clearParams(extras?: NavigationExtras): void {\n this.params.clear();\n if (!_.isNil(extras)) {\n extras = { replaceUrl: true };\n }\n this.applyExtras(extras);\n }\n\n public get hasParams(): boolean {\n return this.params.size > 0;\n }\n\n // --------------------------------------------------------------------------\n //\n // \tFragment Methods\n //\n // --------------------------------------------------------------------------\n\n public getFragment(snapshot: ActivatedRoute | ActivatedRouteSnapshot, defaultValue?: string): string {\n if (snapshot instanceof ActivatedRoute) {\n snapshot = snapshot.snapshot;\n }\n return !_.isNil(snapshot.fragment) ? snapshot.fragment : defaultValue;\n }\n\n public async setFragment(value: string): Promise<boolean> {\n return this.applyExtras({ fragment: value });\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Url Methods\n //\n // --------------------------------------------------------------------------\n\n public get url(): string {\n return this.router.url;\n }\n public get urlTree(): UrlTree {\n return this.router.parseUrl(this.url);\n }\n\n public get lastUrl(): string {\n return this._lastUrl;\n }\n public get lastUrlTree(): UrlTree {\n return this.router.parseUrl(this.lastUrl);\n }\n\n public get previousUrl(): string {\n return this._previousUrl;\n }\n public get previousUrlTree(): UrlTree {\n return this.router.parseUrl(this.previousUrl);\n }\n\n public get router(): Router {\n return this._router;\n }\n}\n\nexport interface RouterBaseServiceEventData {\n url: string;\n previousUrl: string;\n}\n","import { CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport * as _ from 'lodash';\nimport { Observable } from 'rxjs';\nimport { IRouterDeactivatable } from './IRouterDeactivatable';\n\nexport class CanDeactivateGuard<T extends IRouterDeactivatable> implements CanDeactivate<T> {\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public canDeactivate(\n component: IRouterDeactivatable,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return !component.isForceDeactivate ? component.isCanDeactivate(currentRoute, currentState, nextState) : true;\n }\n}\n","import { IDestroyable } from '@ts-core/common';\n\nexport abstract class IUser<T = any> implements IDestroyable {\n // --------------------------------------------------------------------------\n //\n // \tConstants\n //\n // --------------------------------------------------------------------------\n\n public id: UserUid;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public abstract update(data: T): void;\n public abstract destroy(): void;\n}\n\nexport type UserUid = string | number;\n","import { ObservableData } from '@ts-core/common/observer';\nimport * as _ from 'lodash';\nimport { Observable, Subject } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\nimport { LoginBaseService, LoginBaseServiceEvent } from '../login/LoginBaseService';\nimport { IUser, UserUid } from './IUser';\n\nexport abstract class UserBaseService<U extends IUser = any, V = void> {\n // --------------------------------------------------------------------------\n //\n // \tProperties\n //\n // --------------------------------------------------------------------------\n\n protected _user: U;\n protected observer: Subject<ObservableData<V | UserBaseServiceEvent, U>>;\n\n // --------------------------------------------------------------------------\n //\n // \tConstructor\n //\n // --------------------------------------------------------------------------\n\n constructor(protected login: LoginBaseService) {\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.subscribe(data => {\n if (data.type === LoginBaseServiceEvent.LOGIN_COMPLETE) {\n this.loginedHandler();\n } else if (data.type === LoginBaseServiceEvent.LOGOUT_FINISHED) {\n this.logoutedHandler();\n }\n });\n }\n\n protected initializeUser(): void {\n this._user = this.createUser(this.login.loginData);\n }\n\n protected deinitializeUser(): void {\n this._user = null;\n }\n\n protected loginedHandler(): void {\n this.initializeUser();\n this.observer.next(new ObservableData(UserBaseServiceEvent.LOGINED, this.user));\n }\n\n protected logoutedHandler(): void {\n this.deinitializeUser();\n this.observer.next(new ObservableData(UserBaseServiceEvent.LOGOUTED));\n }\n\n protected abstract createUser(data: any): U;\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n // --------------------------------------------------------------------------\n\n public isUser(value: Partial<U> | UserUid): boolean {\n if (_.isNil(value) || _.isNil(this.user)) {\n return false;\n }\n if (_.isString(value) || _.isNumber(value)) {\n return value === this.user.id;\n }\n return value.id === this.user.id;\n }\n\n public userUpdate(data: any): void {\n if (!this.hasUser) {\n return;\n }\n this.user.update(data);\n this.observer.next(new ObservableData(UserBaseServiceEvent.CHANGED, data));\n }\n\n // --------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n // --------------------------------------------------------------------------\n\n public get events(): Observable<ObservableData<V | UserBaseServiceEvent, 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)\n );\n }\n\n public get changed(): Observable<any> {\n return this.events.pipe(\n filter(item => item.type === UserBaseServiceEvent.CHANGED),\n map(item => item.data)\n );\n }\n\n public get logouted(): Observable<void> {\n return this.events.pipe(\n filter(item => item.type === UserBaseServiceEvent.LOGOUTED),\n map(() => null)\n );\n }\n\n public get hasUser(): boolean {\n return !_.isNil(this._user);\n }\n\n public get isLogined(): boolean {\n return this.hasUser;\n }\n\n public get user(): U {\n return this._user;\n }\n\n public get id(): UserUid {\n return this.hasUser ? this.user.id : null;\n }\n}\n\nexport enum UserBaseServiceEvent {\n LOGINED = 'LOGINED',\n CHANGED = 'CHANGED',\n LOGOUTED = 'LOGOUTED'\n}\n","import { Compiler, Injectable, Injector, NgModuleFactory, NgModuleRef, Type } from '@angular/core';\nimport { Loadable, LoadableEvent } from '@ts-core/common';\nimport { ExtendedError } from '@ts-core/common/error';\nimport { MapCollection } from '@ts-core/common/map';\nimport { ObservableData } from '@ts-core/common/observer';\nimport * as _ from 'lodash';\n\n@Injectable({ providedIn: 'root' })\nexport class LazyModuleLoader<T extends ILazyModuleData = ILazyModuleData> extends Loadable {\n //--------------------------------------------------------------------------\n //\n // Properties\n //\n //--------------------------------------------------------------------------\n\n protected _modules: MapCollection<T>;\n\n //--------------------------------------------------------------------------\n //\n // Constructor\n //\n //--------------------------------------------------------------------------\n\n constructor(protected compiler: Compiler, protected injector: Injector) {\n super();\n this._modules = new MapCollection('id');\n }\n\n //--------------------------------------------------------------------------\n //\n // \tProtected Methods\n //\n //--------------------------------------------------------------------------\n\n protected async load(item: T): Promise<void> {\n item.reference = await this.loadReference(item.path);\n }\n\n protected async loadReference<T>(path: LazyModulePath<T>): Promise<NgModuleRef<T>> {\n let moduleFactory: NgModuleFactory<T> = null;\n let elementModuleOrFactory: NgModuleFactory<T> | Type<T> = await path();\n if (elementModuleOrFactory instanceof NgModuleFactory) {\n moduleFactory = elementModuleOrFactory;\n } else {\n moduleFactory = await this.compiler.compileModuleAsync(elementModuleOrFactory);\n }\n return moduleFactory.create(this.injector);\n }\n\n protected isNeedLoad(item: T): boolean {\n return _.isNil(item.reference);\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Methods\n //\n //--------------------------------------------------------------------------\n\n public async loadIfNeed(id: string): Promise<T> {\n let item = this.modules.get(id);\n if (_.isNil(item)) {\n throw new ExtendedError(`Unable to find \"${id}\" module: it must be registered first`);\n }\n if (!this.isNeedLoad(item)) {\n return item;\n }\n try {\n this.observer.next(new ObservableData(LoadableEvent.STARTED));\n await this.load(item);\n } finally {\n this.observer.next(new ObservableData(LoadableEvent.FINISHED));\n }\n return item;\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n\n if (!_.isNil(this._modules)) {\n this._modules.destroy();\n this._modules = null;\n }\n }\n\n //--------------------------------------------------------------------------\n //\n // \tPublic Properties\n //\n //--------------------------------------------------------------------------\n\n public get modules(): MapCollection<T> {\n return this._modules;\n }\n}\n\nexport interface ILazyModuleData<T = any> {\n id: string;\n path?: LazyModulePath<T>;\n reference?: NgModuleRef<T>;\n}\n\nexport type LazyModulePath<T> = () => Promise<NgModuleFactory<T> | Type<T>>;\n","import { TransportEvent } from '@ts-core/common/transport';\nimport { ITransportLazyModuleData } from './TransportLazyModule';\n\nexport class TransportLazyModuleLoadedEvent<T extends ITransportLazyModuleData = ITransportLazyModuleData> extends TransportEvent<T> {\n // --------------------------------------------------------------------------\n //\n // Public Static Properties\n //\n // --------------------------------------------------------------------------\n\n public static readonly NAME = 'TransportLazyModuleLoadedEvent';\n\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n\n constructor(request: T) {\n super(TransportLazyModuleLoadedEvent.NAME, request);\n }\n}\n","import { ITransportCommand, ITransportCommandOptions, ITransportEvent, ITransportSettings } from '@ts-core/common/transport';\nimport { TransportLocal } from '@ts-core/common/transport/local';\nimport * as _ from 'lodash';\nimport { LazyModuleLoader } from '../module/LazyModuleLoader';\nimport { ILogger } from '@ts-core/common/logger';\nimport { ITransportLazyModuleData } from './TransportLazyModule';\nimport { TransportLazyModuleLoadedEvent } from './TransportLazyModuleLoadedEvent';\n\nexport class TransportLazy extends TransportLocal {\n // --------------------------------------------------------------------------\n //\n // Constructor\n //\n // --------------------------------------------------------------------------\n constructor(logger: ILogger, protected loader: LazyModuleLoader<ITransportLazyModuleData>, settings?: ITransportSettings) {\n super(logger, settings, null);\n\n this.getDispatcher<TransportLazyModuleLoadedEvent<ITransportLazyModuleData>>(TransportLazyModuleLoadedEvent.NAME).subscribe(event =>\n this.moduleLoadedHandler(event.data)\n );\n }\n\n // --------------------------------------------------------------------------\n //\n // Event Handlers\n //\n // --------------------------------------------------------------------------\n\n protected moduleLoadedHandler(module: ITransportLazyModuleData): void {\n let item = this.loader.modules.get(module.id);\n if (_.isNil(item)) {\n item = this.loader.modules.add(module);\n }\n if (_.isNil(item.reference)) {\n item.reference = module.reference;\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Protected Methods\n //\n // --------------------------------------------------------------------------\n\n protected async dispatchCommand<U>(command: ITransportCommand<U>, options: ITransportCommandOptions, isNeedReply: boolean): Promise<void> {\n let item = this.getModuleByCommand(command.name);\n if (!_.isNil(item)) {\n await this.loader.loadIfNeed(item.id);\n }\n super.dispatchCommand(command, options, isNeedReply);\n }\n\n protected getModuleByCommand(name: string): ITransportLazyModuleData {\n if (this.loader.modules.length === 0) {\n return null;\n }\n for (let item of this.loader.modules.collection) {\n if (_.isEmpty(item.commands)) {\n continue;\n }\n if (_.includes(item.commands, name)) {\n return item;\n }\n }\n return null;\n }\n\n protected getModuleByEvent(name: string): ITransportLazyModuleData {\n if (_.isNil(this.loader) || this.loader.modules.length === 0) {\n return null;\n }\n for (let item of this.loader.modules.collection) {\n if (_.isEmpty(item.events)) {\n continue;\n }\n if (_.includes(item.events, name)) {\n return item;\n }\n }\n return null;\n }\n\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n\n public dispatch<T>(event: ITransportEvent<T>): void {\n let item = this.getModuleByEvent(event.name);\n if (!_.isNil(this.loader) && !_.isNil(item)) {\n this.loader.loadIfNeed(item.id).then(() => super.dispatch(event));\n } else {\n super.dispatch(event);\n }\n }\n\n public destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n super.destroy();\n this.loader = null;\n }\n}\n","import { NgModuleRef } from '@angular/core';\nimport { Transport } from '@ts-core/common/transport';\nimport { ILazyModuleData } from '../module/LazyModuleLoader';\nimport { TransportLazyModuleLoadedEvent } from './TransportLazyModuleLoadedEvent';\n\nexport abstract class TransportLazyModule<T> implements ITransportLazyModuleData<T> {\n //--------------------------------------------------------------------------\n //\n // Constructor\n //\n //--------------------------------------------------------------------------\n\n constructor(public reference: NgModuleRef<T>, protected transport: Transport) {\n this.moduleLoadedDispatch();\n }\n\n //--------------------------------------------------------------------------\n //\n // Protected Methods\n //\n //--------------------------------------------------------------------------\n\n protected moduleLoadedDispatch(): void {\n this.transport.dispatch(new TransportLazyModuleLoadedEvent(this));\n }\n\n //--------------------------------------------------------------------------\n //\n // Public Properties\n //\n //--------------------------------------------------------------------------\n\n public abstract get id(): string;\n\n public get events(): Array<string> {\n return new Array();\n }\n\n public get commands(): Array<string> {\n return new Array();\n }\n}\n\nexport interface ITransportLazyModuleData<T = any> extends ILazyModuleData<T> {\n events?: Array<string>;\n commands?: Array<string>;\n}\n","/* ======= */\nexport * from './application/ApplicationBaseComponent';\nexport * from './application/ApplicationComponent';\nexport * from './application/MessageBaseComponent';\nexport * from './application/ShellBaseComponent';\n/* ======= */\nexport * from './ApplicationInjector';\n/* ======= */\nexport * from './asset/AssetBackgroundDirective';\nexport * from './asset/AssetBackgroundPipe';\nexport * from './asset/AssetIconPipe';\nexport * from './asset/AssetFilePipe';\nexport * from './asset/AssetVideoPipe';\nexport * from './asset/AssetSoundPipe';\nexport * from './asset/AssetImagePipe';\nexport * from './asset/AssetModule';\n/* ======= */\n\nexport * from './component/VIComponentModule';\n\nexport * from './component/tab-group/tab-group.component';\nexport * from './component/menu-list/menu-list.component';\nexport * from './component/select-list/select-list.component';\nexport * from './component/language/language-selector/language-selector.component';\n\nexport * from './component/cdk-table/CdkTableDataSource';\nexport * from './component/cdk-table/CdkTablePaginableMapCollection';\nexport * from './component/cdk-table/CdkTableFilterableMapCollection';\nexport * from './component/cdk-table/CdkTablePaginableBookmarkMapCollection';\n\nexport * from './component/cdk-table/row/ICdkTableRow';\nexport * from './component/cdk-table/row/CdkTableRowClassNamePipe';\nexport * from './component/cdk-table/row/CdkTableRowStyleNamePipe';\n\nexport * from './component/cdk-table/column/ICdkTableColumn';\nexport * from './component/cdk-table/column/CdkTableColumnValuePipe';\nexport * from './component/cdk-table/column/CdkTableCellClassNamePipe';\nexport * from './component/cdk-table/column/CdkTableColumnClassNamePipe';\nexport * from './component/cdk-table/column/CdkTableColumnStyleNamePipe';\n\nexport * from './component/cdk-table/CdkTableBaseComponent';\nexport * from './component/cdk-table/cdk-table-paginable/cdk-table-paginable.component';\nexport * from './component/cdk-table/cdk-table-filterable/cdk-table-filterable.component';\n\n/* ======= */\nexport * from './cookie/CookieModule';\nexport * from './cookie/CookieOptions';\nexport * from './cookie/CookieService';\n/* ======= */\nexport * from './directive/AspectRatioResizeDirective';\nexport * from './directive/AutoScrollBottomDirective';\nexport * from './directive/ClickToCopyDirective';\nexport * from './directive/ClickToSelectDirective';\nexport * from './directive/FocusDirective';\nexport * from './directive/SelectOnFocusDirective';\nexport * from './directive/InfiniteScrollDirective';\nexport * from './directive/ResizeDirective';\nexport * from './directive/ScrollDirective';\nexport * from './directive/HTMLContentTitleDirective';\n/* ======= */\nexport * from './form/FormElementAsync';\nexport * from './form/FormElementSync';\n/* ======= */\nexport * from './language/LanguageMatPaginatorIntl';\nexport * from './language/LanguageModule';\nexport * from './language/LanguageMomentDateAdapter';\nexport * from './language/LanguagePipe';\nexport * from './language/LanguagePipePure';\nexport * from './language/LanguagePipeHas';\nexport * from './language/LanguagePipeHasPure';\nexport * from './language/LanguageResolver';\nexport * from './language/LanguageRequireResolver';\nexport * from './language/LanguageDirective';\nexport * from './language/LanguageHasDirective';\n/* ======= */\nexport * from './login/LoginBaseService';\nexport * from './login/LoginGuard';\nexport * from './login/LoginRedirectResolver';\nexport * from './login/LoginRequireResolver';\nexport * from './login/LoginResolver';\n/* ======= */\nexport * from './manager/FocusManager';\nexport * from './manager/ResizeManager';\n/* ======= */\nexport * from './menu/MenuItem';\nexport * from './menu/MenuItemBase';\nexport * from './menu/MenuItems';\nexport * from './menu/NavigationMenuItem';\n/* ======= */\nexport * from './list/IListItem';\nexport * from './list/ListItem';\nexport * from './list/ListItems';\nexport * from './list/select/ISelectListItem';\nexport * from './list/select/SelectListItem';\nexport * from './list/select/SelectListItems';\n/* ======= */\nexport * from './notification/INotification';\nexport * from './notification/INotificationContent';\nexport * from './notification/NotificationConfig';\nexport * from './notification/NotificationFactory';\nexport * from './notification/NotificationModule';\nexport * from './notification/NotificationProperties';\nexport * from './notification/NotificationService';\nexport * from './notification/component/NotificationBaseComponent';\nexport * from './notification/component/notification/notification.component';\n/* ======= */\nexport * from './bottomSheet/BottomSheetService';\n/* ======= */\nexport * from './pipe/CamelCasePipe';\nexport * from './pipe/FinancePipe';\nexport * from './pipe/MomentDateAdaptivePipe';\nexport * from './pipe/MomentDateFromNowPipe';\nexport * from './pipe/MomentDatePipe';\nexport * from './pipe/MomentTimePipe';\nexport * from './pipe/NgModelErrorPipe';\nexport * from './pipe/SanitizePipe';\nexport * from './pipe/StartCasePipe';\nexport * from './pipe/TruncatePipe';\nexport * from './pipe/PrettifyPipe';\nexport * from './pipe/TimePipe';\n/* ======= */\nexport * from './question/IQuestion';\nexport * from './question/QuestionManager';\nexport * from './service/PipeBaseService';\nexport * from './service/BootstrapBreakpointService';\n/* ======= */\nexport * from './service/RouterBaseService';\nexport * from './service/route/CanDeactivateGuard';\nexport * from './service/route/IRouterDeactivatable';\n/* ======= */\nexport * from './theme/ThemeStyleHoverDirective';\nexport * from './theme/ThemeStyleDirective';\nexport * from './theme/ThemeAssetBackgroundDirective';\nexport * from './theme/ThemeAssetImageDirective';\nexport * from './theme/ThemeAssetDirective';\nexport * from './theme/ThemeModule';\nexport * from './theme/ThemeToggleDirective';\n/* ======= */\nexport * from './user/IUser';\nexport * from './user/UserBaseService';\n/* ======= */\nexport * from './module/LazyModuleLoader';\n/* ======= */\nexport * from './transport/TransportLazy';\nexport * from './transport/TransportLazyModule';\nexport * from './transport/TransportLazyModuleLoadedEvent';\n/* ======= */\nexport * from './util/ViewUtil';\nexport * from './VICommonModule';\n/* ======= */\nexport * from './window/IWindow';\nexport * from './window/WindowImpl';\nexport * from './window/WindowBase';\nexport * from './window/WindowConfig';\nexport * from './window/WindowFactory';\nexport * from './window/WindowModule';\nexport * from './window/IWindowContent';\nexport * from './window/WindowService';\nexport * from './window/WindowProperties';\nexport * from './window/component/WindowBaseComponent';\nexport * from './window/component/WindowDragAreaDirective';\nexport * from './window/component/WindowQuestionBaseComponent';\nexport * from './window/component/window-question/window-question.component';\nexport * from './window/component/window-close-element/window-close-element.component';\nexport * from './window/component/window-resize-element/window-resize-element.component';\nexport * from './window/component/window-minimize-element/window-minimize-element.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["takeUntil","filter","IMPORTS","ENTRY_COMPONENTS","DECLARATIONS","EXPORTS"],"mappings":"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"}
|