@ts-core/angular 15.0.60 → 17.0.9

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.
Files changed (239) hide show
  1. package/asset/AssetBackgroundDirective.d.ts +1 -1
  2. package/cookie/CookieService.d.ts +1 -3
  3. package/directive/AspectRatioResizeDirective.d.ts +1 -1
  4. package/directive/AutoScrollBottomDirective.d.ts +1 -1
  5. package/directive/ClickToCopyDirective.d.ts +1 -1
  6. package/directive/FocusDirective.d.ts +1 -1
  7. package/directive/HTMLContentTitleDirective.d.ts +1 -1
  8. package/directive/HTMLTitleDirective.d.ts +1 -1
  9. package/directive/InfiniteScrollDirective.d.ts +1 -1
  10. package/directive/ResizeDirective.d.ts +1 -1
  11. package/directive/ScrollCheckDirective.d.ts +1 -1
  12. package/directive/ScrollDirective.d.ts +1 -1
  13. package/esm2022/VIModule.mjs +190 -0
  14. package/esm2022/application/ApplicationBaseComponent.mjs +96 -0
  15. package/esm2022/application/ApplicationComponent.mjs +64 -0
  16. package/esm2022/application/MessageBaseComponent.mjs +60 -0
  17. package/esm2022/asset/AssetBackgroundDirective.mjs +152 -0
  18. package/{esm2020 → esm2022}/asset/AssetBackgroundPipe.mjs +4 -4
  19. package/{esm2020 → esm2022}/asset/AssetFilePipe.mjs +4 -4
  20. package/{esm2020 → esm2022}/asset/AssetIconPipe.mjs +4 -4
  21. package/{esm2020 → esm2022}/asset/AssetImagePipe.mjs +4 -4
  22. package/{esm2020 → esm2022}/asset/AssetModule.mjs +5 -5
  23. package/{esm2020 → esm2022}/asset/AssetSoundPipe.mjs +4 -4
  24. package/{esm2020 → esm2022}/asset/AssetVideoPipe.mjs +4 -4
  25. package/{esm2020 → esm2022}/cookie/CookieModule.mjs +5 -5
  26. package/{esm2020 → esm2022}/cookie/CookieOptions.mjs +7 -1
  27. package/esm2022/cookie/CookieService.mjs +71 -0
  28. package/esm2022/directive/AspectRatioResizeDirective.mjs +134 -0
  29. package/esm2022/directive/AutoScrollBottomDirective.mjs +122 -0
  30. package/esm2022/directive/ClickToCopyDirective.mjs +53 -0
  31. package/esm2022/directive/ClickToSelectDirective.mjs +55 -0
  32. package/esm2022/directive/FocusDirective.mjs +60 -0
  33. package/esm2022/directive/HTMLContentTitleDirective.mjs +74 -0
  34. package/esm2022/directive/HTMLTitleDirective.mjs +73 -0
  35. package/esm2022/directive/InfiniteScrollDirective.mjs +71 -0
  36. package/{esm2020 → esm2022}/directive/IsBrowserDirective.mjs +5 -5
  37. package/{esm2020 → esm2022}/directive/IsServerDirective.mjs +5 -5
  38. package/esm2022/directive/ResizeDirective.mjs +80 -0
  39. package/esm2022/directive/ScrollCheckDirective.mjs +104 -0
  40. package/esm2022/directive/ScrollDirective.mjs +120 -0
  41. package/esm2022/directive/SelectOnFocusDirective.mjs +48 -0
  42. package/esm2022/directive/StructureDirective.mjs +80 -0
  43. package/esm2022/language/LanguageDirective.mjs +102 -0
  44. package/esm2022/language/LanguageHasDirective.mjs +87 -0
  45. package/{esm2020 → esm2022}/language/LanguageModule.mjs +5 -5
  46. package/esm2022/language/LanguagePipe.mjs +88 -0
  47. package/esm2022/language/LanguagePipeHas.mjs +64 -0
  48. package/esm2022/language/LanguagePipeHasPure.mjs +41 -0
  49. package/esm2022/language/LanguagePipePure.mjs +40 -0
  50. package/esm2022/language/LanguageRequireResolver.mjs +37 -0
  51. package/{esm2020 → esm2022}/language/LanguageResolver.mjs +5 -5
  52. package/esm2022/list/ListItem.mjs +148 -0
  53. package/esm2022/list/ListItems.mjs +107 -0
  54. package/esm2022/list/select/RouterSelectListItems.mjs +60 -0
  55. package/esm2022/list/select/SelectListItem.mjs +67 -0
  56. package/esm2022/list/select/SelectListItems.mjs +130 -0
  57. package/esm2022/login/LoginBaseService.mjs +191 -0
  58. package/esm2022/login/LoginGuard.mjs +41 -0
  59. package/esm2022/login/LoginIfCanGuard.mjs +55 -0
  60. package/esm2022/login/LoginNotGuard.mjs +41 -0
  61. package/esm2022/login/LoginRequireResolver.mjs +40 -0
  62. package/{esm2020 → esm2022}/login/LoginResolver.mjs +6 -6
  63. package/esm2022/login/LoginTokenStorage.mjs +18 -0
  64. package/esm2022/manager/FocusManager.mjs +54 -0
  65. package/esm2022/manager/ResizeManager.mjs +90 -0
  66. package/esm2022/menu/MenuItem.mjs +20 -0
  67. package/esm2022/menu/MenuItemBase.mjs +56 -0
  68. package/esm2022/menu/MenuItems.mjs +111 -0
  69. package/esm2022/menu/NavigationMenuItem.mjs +20 -0
  70. package/esm2022/module/LazyModuleLoader.mjs +97 -0
  71. package/esm2022/notification/INotification.mjs +16 -0
  72. package/esm2022/notification/INotificationContent.mjs +141 -0
  73. package/esm2022/notification/NotificationConfig.mjs +27 -0
  74. package/{esm2020 → esm2022}/pipe/CamelCasePipe.mjs +4 -4
  75. package/esm2022/pipe/FinancePipe.mjs +53 -0
  76. package/esm2022/pipe/MomentDateAdaptivePipe.mjs +51 -0
  77. package/{esm2020 → esm2022}/pipe/MomentDateFromNowPipe.mjs +4 -4
  78. package/esm2022/pipe/MomentDatePipe.mjs +71 -0
  79. package/esm2022/pipe/MomentTimePipe.mjs +35 -0
  80. package/esm2022/pipe/NgModelErrorPipe.mjs +43 -0
  81. package/esm2022/pipe/PrettifyPipe.mjs +38 -0
  82. package/esm2022/pipe/SanitizePipe.mjs +48 -0
  83. package/{esm2020 → esm2022}/pipe/StartCasePipe.mjs +4 -4
  84. package/esm2022/pipe/TimePipe.mjs +38 -0
  85. package/{esm2020 → esm2022}/pipe/TruncatePipe.mjs +4 -4
  86. package/esm2022/public-api.mjs +138 -0
  87. package/esm2022/question/QuestionManager.mjs +107 -0
  88. package/esm2022/service/PipeBaseService.mjs +140 -0
  89. package/esm2022/service/PlatformService.mjs +45 -0
  90. package/esm2022/service/RouterBaseService.mjs +236 -0
  91. package/esm2022/storage/DateValueStorage.mjs +46 -0
  92. package/esm2022/storage/LocalStorageService.mjs +58 -0
  93. package/esm2022/storage/ValueStorage.mjs +75 -0
  94. package/{esm2020 → esm2022}/theme/ThemeAssetBackgroundDirective.mjs +5 -5
  95. package/esm2022/theme/ThemeAssetDirective.mjs +251 -0
  96. package/{esm2020 → esm2022}/theme/ThemeAssetIconDirective.mjs +5 -5
  97. package/{esm2020 → esm2022}/theme/ThemeAssetImageDirective.mjs +5 -5
  98. package/{esm2020 → esm2022}/theme/ThemeModule.mjs +15 -15
  99. package/esm2022/theme/ThemeStyleDirective.mjs +125 -0
  100. package/esm2022/theme/ThemeStyleHoverDirective.mjs +107 -0
  101. package/esm2022/theme/ThemeToggleDirective.mjs +63 -0
  102. package/esm2022/transport/TransportLazy.mjs +93 -0
  103. package/esm2022/transport/TransportLazyModule.mjs +30 -0
  104. package/esm2022/transport/TransportLazyModuleLoadedEvent.mjs +18 -0
  105. package/esm2022/user/IUser.mjs +9 -0
  106. package/esm2022/user/UserBaseService.mjs +124 -0
  107. package/esm2022/util/ViewUtil.mjs +589 -0
  108. package/esm2022/window/IWindow.mjs +31 -0
  109. package/esm2022/window/IWindowContent.mjs +142 -0
  110. package/esm2022/window/WindowBase.mjs +177 -0
  111. package/esm2022/window/WindowClosedError.mjs +19 -0
  112. package/esm2022/window/WindowConfig.mjs +218 -0
  113. package/{fesm2020 → fesm2022}/ts-core-angular.mjs +1118 -958
  114. package/fesm2022/ts-core-angular.mjs.map +1 -0
  115. package/language/LanguageDirective.d.ts +1 -1
  116. package/language/LanguageHasDirective.d.ts +1 -1
  117. package/module/LazyModuleLoader.d.ts +1 -1
  118. package/notification/INotificationContent.d.ts +1 -1
  119. package/notification/NotificationConfig.d.ts +1 -1
  120. package/notification/NotificationService.d.ts +1 -1
  121. package/package.json +19 -26
  122. package/pipe/MomentDatePipe.d.ts +1 -1
  123. package/public-api.d.ts +0 -2
  124. package/theme/ThemeAssetBackgroundDirective.d.ts +1 -1
  125. package/theme/ThemeAssetDirective.d.ts +1 -1
  126. package/theme/ThemeAssetIconDirective.d.ts +1 -1
  127. package/theme/ThemeAssetImageDirective.d.ts +1 -1
  128. package/theme/ThemeStyleDirective.d.ts +1 -1
  129. package/theme/ThemeStyleHoverDirective.d.ts +1 -1
  130. package/user/IUser.d.ts +1 -1
  131. package/util/ViewUtil.d.ts +1 -1
  132. package/window/IWindowContent.d.ts +2 -2
  133. package/window/WindowConfig.d.ts +1 -1
  134. package/window/WindowService.d.ts +1 -1
  135. package/esm2020/VIModule.mjs +0 -187
  136. package/esm2020/application/ApplicationBaseComponent.mjs +0 -88
  137. package/esm2020/application/ApplicationComponent.mjs +0 -58
  138. package/esm2020/application/MessageBaseComponent.mjs +0 -52
  139. package/esm2020/asset/AssetBackgroundDirective.mjs +0 -150
  140. package/esm2020/cookie/CookieService.mjs +0 -79
  141. package/esm2020/directive/AspectRatioResizeDirective.mjs +0 -131
  142. package/esm2020/directive/AutoScrollBottomDirective.mjs +0 -122
  143. package/esm2020/directive/ClickToCopyDirective.mjs +0 -49
  144. package/esm2020/directive/ClickToSelectDirective.mjs +0 -49
  145. package/esm2020/directive/FocusDirective.mjs +0 -54
  146. package/esm2020/directive/HTMLContentTitleDirective.mjs +0 -67
  147. package/esm2020/directive/HTMLTitleDirective.mjs +0 -66
  148. package/esm2020/directive/InfiniteScrollDirective.mjs +0 -74
  149. package/esm2020/directive/ResizeDirective.mjs +0 -79
  150. package/esm2020/directive/ScrollCheckDirective.mjs +0 -102
  151. package/esm2020/directive/ScrollDirective.mjs +0 -118
  152. package/esm2020/directive/SelectOnFocusDirective.mjs +0 -47
  153. package/esm2020/directive/StructureDirective.mjs +0 -71
  154. package/esm2020/form/FormElementAsync.mjs +0 -27
  155. package/esm2020/form/FormElementSync.mjs +0 -69
  156. package/esm2020/form/ValueAccessor.mjs +0 -62
  157. package/esm2020/form/validate.mjs +0 -59
  158. package/esm2020/language/LanguageDirective.mjs +0 -92
  159. package/esm2020/language/LanguageHasDirective.mjs +0 -80
  160. package/esm2020/language/LanguagePipe.mjs +0 -78
  161. package/esm2020/language/LanguagePipeHas.mjs +0 -56
  162. package/esm2020/language/LanguagePipeHasPure.mjs +0 -40
  163. package/esm2020/language/LanguagePipePure.mjs +0 -39
  164. package/esm2020/language/LanguageRequireResolver.mjs +0 -36
  165. package/esm2020/list/ListItem.mjs +0 -134
  166. package/esm2020/list/ListItems.mjs +0 -97
  167. package/esm2020/list/select/RouterSelectListItems.mjs +0 -53
  168. package/esm2020/list/select/SelectListItem.mjs +0 -59
  169. package/esm2020/list/select/SelectListItems.mjs +0 -121
  170. package/esm2020/login/LoginBaseService.mjs +0 -184
  171. package/esm2020/login/LoginGuard.mjs +0 -40
  172. package/esm2020/login/LoginIfCanGuard.mjs +0 -54
  173. package/esm2020/login/LoginNotGuard.mjs +0 -40
  174. package/esm2020/login/LoginRequireResolver.mjs +0 -39
  175. package/esm2020/login/LoginTokenStorage.mjs +0 -18
  176. package/esm2020/manager/FocusManager.mjs +0 -46
  177. package/esm2020/manager/ResizeManager.mjs +0 -81
  178. package/esm2020/menu/MenuItem.mjs +0 -13
  179. package/esm2020/menu/MenuItemBase.mjs +0 -46
  180. package/esm2020/menu/MenuItems.mjs +0 -102
  181. package/esm2020/menu/NavigationMenuItem.mjs +0 -14
  182. package/esm2020/module/LazyModuleLoader.mjs +0 -89
  183. package/esm2020/notification/INotification.mjs +0 -7
  184. package/esm2020/notification/INotificationContent.mjs +0 -132
  185. package/esm2020/notification/NotificationConfig.mjs +0 -16
  186. package/esm2020/pipe/FinancePipe.mjs +0 -53
  187. package/esm2020/pipe/MomentDateAdaptivePipe.mjs +0 -51
  188. package/esm2020/pipe/MomentDatePipe.mjs +0 -71
  189. package/esm2020/pipe/MomentTimePipe.mjs +0 -35
  190. package/esm2020/pipe/NgModelErrorPipe.mjs +0 -42
  191. package/esm2020/pipe/PrettifyPipe.mjs +0 -38
  192. package/esm2020/pipe/SanitizePipe.mjs +0 -47
  193. package/esm2020/pipe/TimePipe.mjs +0 -38
  194. package/esm2020/public-api.mjs +0 -141
  195. package/esm2020/question/QuestionManager.mjs +0 -93
  196. package/esm2020/service/PipeBaseService.mjs +0 -132
  197. package/esm2020/service/PlatformService.mjs +0 -38
  198. package/esm2020/service/RouterBaseService.mjs +0 -224
  199. package/esm2020/storage/DateValueStorage.mjs +0 -49
  200. package/esm2020/storage/LocalStorageService.mjs +0 -57
  201. package/esm2020/storage/ValueStorage.mjs +0 -67
  202. package/esm2020/theme/ThemeAssetDirective.mjs +0 -240
  203. package/esm2020/theme/ThemeStyleDirective.mjs +0 -115
  204. package/esm2020/theme/ThemeStyleHoverDirective.mjs +0 -107
  205. package/esm2020/theme/ThemeToggleDirective.mjs +0 -62
  206. package/esm2020/transport/TransportLazy.mjs +0 -92
  207. package/esm2020/transport/TransportLazyModule.mjs +0 -28
  208. package/esm2020/transport/TransportLazyModuleLoadedEvent.mjs +0 -18
  209. package/esm2020/user/IUser.mjs +0 -3
  210. package/esm2020/user/UserBaseService.mjs +0 -116
  211. package/esm2020/util/ViewUtil.mjs +0 -589
  212. package/esm2020/window/IWindow.mjs +0 -33
  213. package/esm2020/window/IWindowContent.mjs +0 -135
  214. package/esm2020/window/WindowBase.mjs +0 -177
  215. package/esm2020/window/WindowClosedError.mjs +0 -19
  216. package/esm2020/window/WindowConfig.mjs +0 -197
  217. package/fesm2015/ts-core-angular.mjs +0 -7015
  218. package/fesm2015/ts-core-angular.mjs.map +0 -1
  219. package/fesm2020/ts-core-angular.mjs.map +0 -1
  220. package/form/FormElementAsync.d.ts +0 -13
  221. package/form/FormElementSync.d.ts +0 -22
  222. package/form/ValueAccessor.d.ts +0 -16
  223. package/form/validate.d.ts +0 -9
  224. /package/{esm2020 → esm2022}/ApplicationInjector.mjs +0 -0
  225. /package/{esm2020 → esm2022}/bottomSheet/BottomSheetService.mjs +0 -0
  226. /package/{esm2020 → esm2022}/list/IListItem.mjs +0 -0
  227. /package/{esm2020 → esm2022}/list/select/ISelectListItem.mjs +0 -0
  228. /package/{esm2020 → esm2022}/notification/INotificationConfig.mjs +0 -0
  229. /package/{esm2020 → esm2022}/notification/NotificationService.mjs +0 -0
  230. /package/{esm2020 → esm2022}/notification/NotificationServiceEvent.mjs +0 -0
  231. /package/{esm2020 → esm2022}/question/IQuestion.mjs +0 -0
  232. /package/{esm2020 → esm2022}/service/route/CanDeactivateGuard.mjs +0 -0
  233. /package/{esm2020 → esm2022}/service/route/IRouterDeactivatable.mjs +0 -0
  234. /package/{esm2020 → esm2022}/storage/BooleanValueStorage.mjs +0 -0
  235. /package/{esm2020 → esm2022}/storage/IValueStorage.mjs +0 -0
  236. /package/{esm2020 → esm2022}/ts-core-angular.mjs +0 -0
  237. /package/{esm2020 → esm2022}/window/IWindowConfig.mjs +0 -0
  238. /package/{esm2020 → esm2022}/window/WindowService.mjs +0 -0
  239. /package/{esm2020 → esm2022}/window/WindowServiceEvent.mjs +0 -0
@@ -26,5 +26,5 @@ export declare class AssetBackgroundDirective extends Destroyable {
26
26
  set background(value: string);
27
27
  get background(): string;
28
28
  static ɵfac: i0.ɵɵFactoryDeclaration<AssetBackgroundDirective, never>;
29
- static ɵdir: i0.ɵɵDirectiveDeclaration<AssetBackgroundDirective, "[vi-asset-background]", never, { "isIcon": "isIcon"; "isImage": "isImage"; "isUrl": "isUrl"; "repeat": "repeat"; "extension": "extension"; "background": "vi-asset-background"; }, {}, never, never, false, never>;
29
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AssetBackgroundDirective, "[vi-asset-background]", never, { "isIcon": { "alias": "isIcon"; "required": false; }; "isImage": { "alias": "isImage"; "required": false; }; "isUrl": { "alias": "isUrl"; "required": false; }; "repeat": { "alias": "repeat"; "required": false; }; "extension": { "alias": "extension"; "required": false; }; "background": { "alias": "vi-asset-background"; "required": false; }; }, {}, never, never, false, never>;
30
30
  }
@@ -3,8 +3,7 @@ import * as Cookie from 'ngx-cookie';
3
3
  import { PlatformService } from '../service/PlatformService';
4
4
  import { CookieOptions } from './CookieOptions';
5
5
  export declare class CookieService extends Cookie.CookieService implements ICookieService {
6
- private _document;
7
- constructor(options: CookieOptions, platform: PlatformService, item?: Document);
6
+ constructor(options: CookieOptions, platform: PlatformService, document: Document);
8
7
  has(key: string): boolean;
9
8
  get<T = string>(key: string, defaultValue?: T): T;
10
9
  getObject<T = any>(key: string, defaultValue?: T): T;
@@ -12,5 +11,4 @@ export declare class CookieService extends Cookie.CookieService implements ICook
12
11
  putObject<T = any>(key: string, value: T, options?: CookieOptions): void;
13
12
  update(key: string, value: string, options?: ICookieOptions): void;
14
13
  updateObject(key: string, value: Object, options?: ICookieOptions): void;
15
- private get document();
16
14
  }
@@ -20,7 +20,7 @@ export declare class AspectRatioResizeDirective extends DestroyableContainer imp
20
20
  set ratio(value: number);
21
21
  get ratio(): number;
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<AspectRatioResizeDirective, never>;
23
- static ɵdir: i0.ɵɵDirectiveDeclaration<AspectRatioResizeDirective, "[vi-aspect-ratio]", never, { "direction": "vi-aspect-ratio"; "ratio": "ratio"; }, {}, never, never, false, never>;
23
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AspectRatioResizeDirective, "[vi-aspect-ratio]", never, { "direction": { "alias": "vi-aspect-ratio"; "required": false; }; "ratio": { "alias": "ratio"; "required": false; }; }, {}, never, never, false, never>;
24
24
  }
25
25
  export declare enum Direction {
26
26
  VERTICAL = "VERTICAL",
@@ -20,5 +20,5 @@ export declare class AutoScrollBottomDirective extends InfiniteScrollDirective {
20
20
  destroy(): void;
21
21
  set trigger(value: number);
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<AutoScrollBottomDirective, never>;
23
- static ɵdir: i0.ɵɵDirectiveDeclaration<AutoScrollBottomDirective, "[vi-auto-scroll-bottom]", never, { "behavior": "behavior"; "trigger": "vi-auto-scroll-bottom"; }, { "triggerChanged": "triggerChanged"; }, never, never, false, never>;
23
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AutoScrollBottomDirective, "[vi-auto-scroll-bottom]", never, { "behavior": { "alias": "behavior"; "required": false; }; "trigger": { "alias": "vi-auto-scroll-bottom"; "required": false; }; }, { "triggerChanged": "triggerChanged"; }, never, never, false, never>;
24
24
  }
@@ -7,5 +7,5 @@ export declare class ClickToCopyDirective extends Destroyable {
7
7
  private selectionRemove;
8
8
  destroy(): void;
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<ClickToCopyDirective, never>;
10
- static ɵdir: i0.ɵɵDirectiveDeclaration<ClickToCopyDirective, "[vi-click-to-copy]", never, { "element": "vi-click-to-copy"; }, {}, never, never, false, never>;
10
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ClickToCopyDirective, "[vi-click-to-copy]", never, { "element": { "alias": "vi-click-to-copy"; "required": false; }; }, {}, never, never, false, never>;
11
11
  }
@@ -8,5 +8,5 @@ export declare class FocusDirective<T = any> extends Destroyable {
8
8
  destroy(): void;
9
9
  set trigger(value: T);
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<FocusDirective<any>, never>;
11
- static ɵdir: i0.ɵɵDirectiveDeclaration<FocusDirective<any>, "[vi-focus]", never, { "trigger": "vi-focus"; }, {}, never, never, false, never>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FocusDirective<any>, "[vi-focus]", never, { "trigger": { "alias": "vi-focus"; "required": false; }; }, {}, never, never, false, never>;
12
12
  }
@@ -10,5 +10,5 @@ export declare class HTMLContentTitleDirective extends Destroyable {
10
10
  set value(value: string);
11
11
  get value(): string;
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<HTMLContentTitleDirective, never>;
13
- static ɵdir: i0.ɵɵDirectiveDeclaration<HTMLContentTitleDirective, "[vi-html-content-title]", never, { "value": "vi-html-content-title"; }, {}, never, never, false, never>;
13
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HTMLContentTitleDirective, "[vi-html-content-title]", never, { "value": { "alias": "vi-html-content-title"; "required": false; }; }, {}, never, never, false, never>;
14
14
  }
@@ -10,5 +10,5 @@ export declare class HTMLTitleDirective extends Destroyable {
10
10
  set value(value: string);
11
11
  get value(): string;
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<HTMLTitleDirective, never>;
13
- static ɵdir: i0.ɵɵDirectiveDeclaration<HTMLTitleDirective, "[vi-html-title]", never, { "value": "vi-html-title"; }, {}, never, never, false, never>;
13
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HTMLTitleDirective, "[vi-html-title]", never, { "value": { "alias": "vi-html-title"; "required": false; }; }, {}, never, never, false, never>;
14
14
  }
@@ -10,5 +10,5 @@ export declare class InfiniteScrollDirective extends ScrollDirective {
10
10
  protected get clientHeight(): number;
11
11
  protected get scrollHeight(): number;
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<InfiniteScrollDirective, never>;
13
- static ɵdir: i0.ɵɵDirectiveDeclaration<InfiniteScrollDirective, "[vi-infinite-scroll]", never, { "elementHeight": "elementHeight"; }, { "top": "top"; "bottom": "bottom"; }, never, never, false, never>;
13
+ static ɵdir: i0.ɵɵDirectiveDeclaration<InfiniteScrollDirective, "[vi-infinite-scroll]", never, { "elementHeight": { "alias": "elementHeight"; "required": false; }; }, { "top": "top"; "bottom": "bottom"; }, never, never, false, never>;
14
14
  }
@@ -12,5 +12,5 @@ export declare class ResizeDirective extends Destroyable {
12
12
  private resizeHandler;
13
13
  destroy(): void;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<ResizeDirective, never>;
15
- static ɵdir: i0.ɵɵDirectiveDeclaration<ResizeDirective, "[vi-resize]", never, { "isTop": "isTop"; "isLeft": "isLeft"; "isRight": "isRight"; "isBottom": "isBottom"; }, { "resized": "resized"; }, never, never, false, never>;
15
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ResizeDirective, "[vi-resize]", never, { "isTop": { "alias": "isTop"; "required": false; }; "isLeft": { "alias": "isLeft"; "required": false; }; "isRight": { "alias": "isRight"; "required": false; }; "isBottom": { "alias": "isBottom"; "required": false; }; }, { "resized": "resized"; }, never, never, false, never>;
16
16
  }
@@ -18,5 +18,5 @@ export declare class ScrollCheckDirective extends DestroyableContainer {
18
18
  set scrollLimit(value: number);
19
19
  get scrollLimit(): number;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<ScrollCheckDirective, never>;
21
- static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollCheckDirective, "[vi-scroll-check]", never, { "delay": "delay"; "offset": "offset"; "scrollLimit": "vi-scroll-check"; }, { "top": "top"; "bottom": "bottom"; "limitExceed": "limitExceed"; }, never, never, false, never>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollCheckDirective, "[vi-scroll-check]", never, { "delay": { "alias": "delay"; "required": false; }; "offset": { "alias": "offset"; "required": false; }; "scrollLimit": { "alias": "vi-scroll-check"; "required": false; }; }, { "top": "top"; "bottom": "bottom"; "limitExceed": "limitExceed"; }, never, never, false, never>;
22
22
  }
@@ -19,5 +19,5 @@ export declare class ScrollDirective extends Destroyable {
19
19
  set scrollValue(value: number);
20
20
  get scrollValue(): number;
21
21
  static ɵfac: i0.ɵɵFactoryDeclaration<ScrollDirective, never>;
22
- static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollDirective, "[vi-scroll]", never, { "scrollValue": "scrollValue"; }, { "scrolled": "scrolled"; }, never, never, false, never>;
22
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollDirective, "[vi-scroll]", never, { "scrollValue": { "alias": "scrollValue"; "required": false; }; }, { "scrolled": "scrolled"; }, never, never, false, never>;
23
23
  }
@@ -0,0 +1,190 @@
1
+ import { APP_INITIALIZER, InjectionToken, NgModule, RendererFactory2 } from '@angular/core';
2
+ import { Logger, LoggerLevel } from '@ts-core/common';
3
+ import { ICookieOptions } from '@ts-core/frontend';
4
+ import { DefaultLogger } from '@ts-core/frontend';
5
+ import { LoadingService, NativeWindowService } from '@ts-core/frontend';
6
+ import { AssetModule } from './asset/AssetModule';
7
+ import { CookieModule } from './cookie/CookieModule';
8
+ import { CanDeactivateGuard } from './service/route/CanDeactivateGuard';
9
+ import { AspectRatioResizeDirective } from './directive/AspectRatioResizeDirective';
10
+ import { AutoScrollBottomDirective } from './directive/AutoScrollBottomDirective';
11
+ import { ClickToCopyDirective } from './directive/ClickToCopyDirective';
12
+ import { ClickToSelectDirective } from './directive/ClickToSelectDirective';
13
+ import { FocusDirective } from './directive/FocusDirective';
14
+ import { SelectOnFocusDirective } from './directive/SelectOnFocusDirective';
15
+ import { HTMLTitleDirective } from './directive/HTMLTitleDirective';
16
+ import { HTMLContentTitleDirective } from './directive/HTMLContentTitleDirective';
17
+ import { InfiniteScrollDirective } from './directive/InfiniteScrollDirective';
18
+ import { ResizeDirective } from './directive/ResizeDirective';
19
+ import { ScrollCheckDirective } from './directive/ScrollCheckDirective';
20
+ import { ScrollDirective } from './directive/ScrollDirective';
21
+ import { LanguageModule } from './language/LanguageModule';
22
+ import { CamelCasePipe } from './pipe/CamelCasePipe';
23
+ import { FinancePipe } from './pipe/FinancePipe';
24
+ import { MomentDateAdaptivePipe } from './pipe/MomentDateAdaptivePipe';
25
+ import { MomentDateFromNowPipe } from './pipe/MomentDateFromNowPipe';
26
+ import { MomentDatePipe } from './pipe/MomentDatePipe';
27
+ import { MomentTimePipe } from './pipe/MomentTimePipe';
28
+ import { NgModelErrorPipe } from './pipe/NgModelErrorPipe';
29
+ import { SanitizePipe } from './pipe/SanitizePipe';
30
+ import { StartCasePipe } from './pipe/StartCasePipe';
31
+ import { TimePipe } from './pipe/TimePipe';
32
+ import { TruncatePipe } from './pipe/TruncatePipe';
33
+ import { PrettifyPipe } from './pipe/PrettifyPipe';
34
+ import { ThemeModule } from './theme/ThemeModule';
35
+ import { IsServerDirective } from './directive/IsServerDirective';
36
+ import { IsBrowserDirective } from './directive/IsBrowserDirective';
37
+ import { DOCUMENT } from '@angular/common';
38
+ import { PlatformService } from './service/PlatformService';
39
+ import { ViewUtil } from './util/ViewUtil';
40
+ import { CookieService } from './cookie/CookieService';
41
+ import { LoginTokenStorage } from './login/LoginTokenStorage';
42
+ import { LocalStorageService } from './storage/LocalStorageService';
43
+ import * as _ from 'lodash';
44
+ import * as i0 from "@angular/core";
45
+ let imports = [CookieModule, ThemeModule, LanguageModule, AssetModule];
46
+ let declarations = [
47
+ TimePipe,
48
+ FinancePipe,
49
+ SanitizePipe,
50
+ TruncatePipe,
51
+ PrettifyPipe,
52
+ CamelCasePipe,
53
+ StartCasePipe,
54
+ NgModelErrorPipe,
55
+ IsServerDirective,
56
+ IsBrowserDirective,
57
+ MomentDatePipe,
58
+ MomentTimePipe,
59
+ MomentDateFromNowPipe,
60
+ MomentDateAdaptivePipe,
61
+ FocusDirective,
62
+ ResizeDirective,
63
+ ScrollDirective,
64
+ ScrollCheckDirective,
65
+ ClickToCopyDirective,
66
+ SelectOnFocusDirective,
67
+ ClickToSelectDirective,
68
+ InfiniteScrollDirective,
69
+ HTMLTitleDirective,
70
+ HTMLContentTitleDirective,
71
+ AutoScrollBottomDirective,
72
+ AspectRatioResizeDirective
73
+ ];
74
+ let exports = [...imports, ...declarations];
75
+ export class VIModule {
76
+ // --------------------------------------------------------------------------
77
+ //
78
+ // Static Methods
79
+ //
80
+ // --------------------------------------------------------------------------
81
+ static forRoot(options) {
82
+ return {
83
+ ngModule: VIModule,
84
+ providers: [
85
+ {
86
+ provide: APP_INITIALIZER,
87
+ deps: [NativeWindowService, RendererFactory2],
88
+ useFactory: initializerFactory,
89
+ multi: true
90
+ },
91
+ LoadingService,
92
+ PlatformService,
93
+ CanDeactivateGuard,
94
+ { provide: VI_ANGULAR_OPTIONS, useValue: options || {} },
95
+ { provide: Logger, deps: [VI_ANGULAR_OPTIONS], useFactory: loggerServiceFactory },
96
+ { provide: NativeWindowService, deps: [DOCUMENT], useFactory: nativeWindowServiceFactory },
97
+ { provide: LocalStorageService, deps: [NativeWindowService], useFactory: localStorageServiceFactory },
98
+ { provide: LoginTokenStorage, deps: [LocalStorageService, CookieService], useFactory: loginTokenStorageServiceFactory },
99
+ ...CookieModule.forRoot(options).providers,
100
+ ...ThemeModule.forRoot(options ? options.themeOptions : null).providers,
101
+ ...LanguageModule.forRoot(options ? options.languageOptions : null).providers
102
+ ]
103
+ };
104
+ }
105
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: VIModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
106
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: VIModule, declarations: [TimePipe,
107
+ FinancePipe,
108
+ SanitizePipe,
109
+ TruncatePipe,
110
+ PrettifyPipe,
111
+ CamelCasePipe,
112
+ StartCasePipe,
113
+ NgModelErrorPipe,
114
+ IsServerDirective,
115
+ IsBrowserDirective,
116
+ MomentDatePipe,
117
+ MomentTimePipe,
118
+ MomentDateFromNowPipe,
119
+ MomentDateAdaptivePipe,
120
+ FocusDirective,
121
+ ResizeDirective,
122
+ ScrollDirective,
123
+ ScrollCheckDirective,
124
+ ClickToCopyDirective,
125
+ SelectOnFocusDirective,
126
+ ClickToSelectDirective,
127
+ InfiniteScrollDirective,
128
+ HTMLTitleDirective,
129
+ HTMLContentTitleDirective,
130
+ AutoScrollBottomDirective,
131
+ AspectRatioResizeDirective], imports: [CookieModule, ThemeModule, LanguageModule, AssetModule], exports: [CookieModule, ThemeModule, LanguageModule, AssetModule, TimePipe,
132
+ FinancePipe,
133
+ SanitizePipe,
134
+ TruncatePipe,
135
+ PrettifyPipe,
136
+ CamelCasePipe,
137
+ StartCasePipe,
138
+ NgModelErrorPipe,
139
+ IsServerDirective,
140
+ IsBrowserDirective,
141
+ MomentDatePipe,
142
+ MomentTimePipe,
143
+ MomentDateFromNowPipe,
144
+ MomentDateAdaptivePipe,
145
+ FocusDirective,
146
+ ResizeDirective,
147
+ ScrollDirective,
148
+ ScrollCheckDirective,
149
+ ClickToCopyDirective,
150
+ SelectOnFocusDirective,
151
+ ClickToSelectDirective,
152
+ InfiniteScrollDirective,
153
+ HTMLTitleDirective,
154
+ HTMLContentTitleDirective,
155
+ AutoScrollBottomDirective,
156
+ AspectRatioResizeDirective] });
157
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: VIModule, imports: [imports, CookieModule, ThemeModule, LanguageModule, AssetModule] });
158
+ }
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: VIModule, decorators: [{
160
+ type: NgModule,
161
+ args: [{
162
+ imports,
163
+ declarations,
164
+ exports
165
+ }]
166
+ }] });
167
+ export class IVIOptions extends ICookieOptions {
168
+ loggerLevel;
169
+ themeOptions;
170
+ languageOptions;
171
+ }
172
+ export function initializerFactory(nativeWindow, rendererFactory2) {
173
+ ViewUtil.renderer = rendererFactory2.createRenderer(null, null);
174
+ ViewUtil.document = nativeWindow.document;
175
+ return () => Promise.resolve();
176
+ }
177
+ export function loggerServiceFactory(options) {
178
+ return new DefaultLogger(!_.isNil(options.loggerLevel) ? options.loggerLevel : LoggerLevel.ALL);
179
+ }
180
+ export function nativeWindowServiceFactory(document) {
181
+ return new NativeWindowService(document);
182
+ }
183
+ export function localStorageServiceFactory(nativeWindow) {
184
+ return new LocalStorageService(nativeWindow);
185
+ }
186
+ export function loginTokenStorageServiceFactory(storage, cookies) {
187
+ return new LoginTokenStorage(storage, cookies);
188
+ }
189
+ export const VI_ANGULAR_OPTIONS = new InjectionToken(`VI_ANGULAR_OPTIONS`);
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVklNb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVklNb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQXVCLFFBQVEsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SCxPQUFPLEVBQVcsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFD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QWtDO0lBQ3BHLFFBQVEsQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDMUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxPQUFtQjtJQUNwRCxPQUFPLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFFBQWtCO0lBQ3pELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFlBQWlDO0lBQ3hFLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLCtCQUErQixDQUFDLE9BQTRCLEVBQUUsT0FBc0I7SUFDaEcsT0FBTyxJQUFJLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQWEsb0JBQW9CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMb2dnZXIsIExvZ2dlciwgTG9nZ2VyTGV2ZWwgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgSUNvb2tpZU9wdGlvbnMgfSBmcm9tICdAdHMtY29yZS9mcm9udGVuZCc7XG5pbXBvcnQgeyBJTGFuZ3VhZ2VTZXJ2aWNlT3B0aW9ucyB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kJztcbmltcG9ydCB7IERlZmF1bHRMb2dnZXIgfSBmcm9tICdAdHMtY29yZS9mcm9udGVuZCc7XG5pbXBvcnQgeyBMb2FkaW5nU2VydmljZSwgTmF0aXZlV2luZG93U2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kJztcbmltcG9ydCB7IElUaGVtZVNlcnZpY2VPcHRpb25zIH0gZnJvbSAnQHRzLWNvcmUvZnJvbnRlbmQnO1xuaW1wb3J0IHsgQXNzZXRNb2R1bGUgfSBmcm9tICcuL2Fzc2V0L0Fzc2V0TW9kdWxlJztcbmltcG9ydCB7IENvb2tpZU1vZHVsZSB9IGZyb20gJy4vY29va2llL0Nvb2tpZU1vZHVsZSc7XG5pbXBvcnQgeyBDYW5EZWFjdGl2YXRlR3VhcmQgfSBmcm9tICcuL3NlcnZpY2Uvcm91dGUvQ2FuRGVhY3RpdmF0ZUd1YXJkJztcbmltcG9ydCB7IEFzcGVjdFJhdGlvUmVzaXplRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUvQXNwZWN0UmF0aW9SZXNpemVEaXJlY3RpdmUnO1xuaW1wb3J0IHsgQXV0b1Njcm9sbEJvdHRvbURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL0F1dG9TY3JvbGxCb3R0b21EaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2xpY2tUb0NvcHlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZS9DbGlja1RvQ29weURpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDbGlja1RvU2VsZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUvQ2xpY2tUb1NlbGVjdERpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL0ZvY3VzRGlyZWN0aXZlJztcbmltcG9ydCB7IFNlbGVjdE9uRm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZS9TZWxlY3RPbkZvY3VzRGlyZWN0aXZlJztcbmltcG9ydCB7IEhUTUxUaXRsZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL0hUTUxUaXRsZURpcmVjdGl2ZSc7XG5pbXBvcnQgeyBIVE1MQ29udGVudFRpdGxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUvSFRNTENvbnRlbnRUaXRsZURpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL0luZmluaXRlU2Nyb2xsRGlyZWN0aXZlJztcbmltcG9ydCB7IFJlc2l6ZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL1Jlc2l6ZURpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTY3JvbGxDaGVja0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL1Njcm9sbENoZWNrRGlyZWN0aXZlJztcbmltcG9ydCB7IFNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlL1Njcm9sbERpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMYW5ndWFnZU1vZHVsZSB9IGZyb20gJy4vbGFuZ3VhZ2UvTGFuZ3VhZ2VNb2R1bGUnO1xuaW1wb3J0IHsgQ2FtZWxDYXNlUGlwZSB9IGZyb20gJy4vcGlwZS9DYW1lbENhc2VQaXBlJztcbmltcG9ydCB7IEZpbmFuY2VQaXBlIH0gZnJvbSAnLi9waXBlL0ZpbmFuY2VQaXBlJztcbmltcG9ydCB7IE1vbWVudERhdGVBZGFwdGl2ZVBpcGUgfSBmcm9tICcuL3BpcGUvTW9tZW50RGF0ZUFkYXB0aXZlUGlwZSc7XG5pbXBvcnQgeyBNb21lbnREYXRlRnJvbU5vd1BpcGUgfSBmcm9tICcuL3BpcGUvTW9tZW50RGF0ZUZyb21Ob3dQaXBlJztcbmltcG9ydCB7IE1vbWVudERhdGVQaXBlIH0gZnJvbSAnLi9waXBlL01vbWVudERhdGVQaXBlJztcbmltcG9ydCB7IE1vbWVudFRpbWVQaXBlIH0gZnJvbSAnLi9waXBlL01vbWVudFRpbWVQaXBlJztcbmltcG9ydCB7IE5nTW9kZWxFcnJvclBpcGUgfSBmcm9tICcuL3BpcGUvTmdNb2RlbEVycm9yUGlwZSc7XG5pbXBvcnQgeyBTYW5pdGl6ZVBpcGUgfSBmcm9tICcuL3BpcGUvU2FuaXRpemVQaXBlJztcbmltcG9ydCB7IFN0YXJ0Q2FzZVBpcGUgfSBmcm9tICcuL3BpcGUvU3RhcnRDYXNlUGlwZSc7XG5pbXBvcnQgeyBUaW1lUGlwZSB9IGZyb20gJy4vcGlwZS9UaW1lUGlwZSc7XG5pbXBvcnQgeyBUcnVuY2F0ZVBpcGUgfSBmcm9tICcuL3BpcGUvVHJ1bmNhdGVQaXBlJztcbmltcG9ydCB7IFByZXR0aWZ5UGlwZSB9IGZyb20gJy4vcGlwZS9QcmV0dGlmeVBpcGUnO1xuaW1wb3J0IHsgVGhlbWVNb2R1bGUgfSBmcm9tICcuL3RoZW1lL1RoZW1lTW9kdWxlJztcbmltcG9ydCB7IElzU2VydmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUvSXNTZXJ2ZXJEaXJlY3RpdmUnO1xuaW1wb3J0IHsgSXNCcm93c2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUvSXNCcm93c2VyRGlyZWN0aXZlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9QbGF0Zm9ybVNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld1V0aWwgfSBmcm9tICcuL3V0aWwvVmlld1V0aWwnO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJy4vY29va2llL0Nvb2tpZVNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5Ub2tlblN0b3JhZ2UgfSBmcm9tICcuL2xvZ2luL0xvZ2luVG9rZW5TdG9yYWdlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2UvTG9jYWxTdG9yYWdlU2VydmljZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmxldCBpbXBvcnRzID0gW0Nvb2tpZU1vZHVsZSwgVGhlbWVNb2R1bGUsIExhbmd1YWdlTW9kdWxlLCBBc3NldE1vZHVsZV07XG5cbmxldCBkZWNsYXJhdGlvbnMgPSBbXG4gICAgVGltZVBpcGUsXG4gICAgRmluYW5jZVBpcGUsXG4gICAgU2FuaXRpemVQaXBlLFxuICAgIFRydW5jYXRlUGlwZSxcbiAgICBQcmV0dGlmeVBpcGUsXG4gICAgQ2FtZWxDYXNlUGlwZSxcbiAgICBTdGFydENhc2VQaXBlLFxuICAgIE5nTW9kZWxFcnJvclBpcGUsXG5cbiAgICBJc1NlcnZlckRpcmVjdGl2ZSxcbiAgICBJc0Jyb3dzZXJEaXJlY3RpdmUsXG5cbiAgICBNb21lbnREYXRlUGlwZSxcbiAgICBNb21lbnRUaW1lUGlwZSxcbiAgICBNb21lbnREYXRlRnJvbU5vd1BpcGUsXG4gICAgTW9tZW50RGF0ZUFkYXB0aXZlUGlwZSxcblxuICAgIEZvY3VzRGlyZWN0aXZlLFxuICAgIFJlc2l6ZURpcmVjdGl2ZSxcbiAgICBTY3JvbGxEaXJlY3RpdmUsXG4gICAgU2Nyb2xsQ2hlY2tEaXJlY3RpdmUsXG4gICAgQ2xpY2tUb0NvcHlEaXJlY3RpdmUsXG4gICAgU2VsZWN0T25Gb2N1c0RpcmVjdGl2ZSxcbiAgICBDbGlja1RvU2VsZWN0RGlyZWN0aXZlLFxuICAgIEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgIEhUTUxUaXRsZURpcmVjdGl2ZSxcbiAgICBIVE1MQ29udGVudFRpdGxlRGlyZWN0aXZlLFxuICAgIEF1dG9TY3JvbGxCb3R0b21EaXJlY3RpdmUsXG4gICAgQXNwZWN0UmF0aW9SZXNpemVEaXJlY3RpdmVcbl07XG5cbmxldCBleHBvcnRzID0gWy4uLmltcG9ydHMsIC4uLmRlY2xhcmF0aW9uc107XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0cyxcbiAgICBkZWNsYXJhdGlvbnMsXG4gICAgZXhwb3J0c1xufSlcbmV4cG9ydCBjbGFzcyBWSU1vZHVsZSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0U3RhdGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGZvclJvb3Qob3B0aW9ucz86IElWSU9wdGlvbnMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFZJTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogVklNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICAgICAgICAgICAgZGVwczogW05hdGl2ZVdpbmRvd1NlcnZpY2UsIFJlbmRlcmVyRmFjdG9yeTJdLFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiBpbml0aWFsaXplckZhY3RvcnksXG4gICAgICAgICAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIExvYWRpbmdTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIFBsYXRmb3JtU2VydmljZSxcbiAgICAgICAgICAgICAgICBDYW5EZWFjdGl2YXRlR3VhcmQsXG5cbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IFZJX0FOR1VMQVJfT1BUSU9OUywgdXNlVmFsdWU6IG9wdGlvbnMgfHwge30gfSxcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IExvZ2dlciwgZGVwczogW1ZJX0FOR1VMQVJfT1BUSU9OU10sIHVzZUZhY3Rvcnk6IGxvZ2dlclNlcnZpY2VGYWN0b3J5IH0sXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBOYXRpdmVXaW5kb3dTZXJ2aWNlLCBkZXBzOiBbRE9DVU1FTlRdLCB1c2VGYWN0b3J5OiBuYXRpdmVXaW5kb3dTZXJ2aWNlRmFjdG9yeSB9LFxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTG9jYWxTdG9yYWdlU2VydmljZSwgZGVwczogW05hdGl2ZVdpbmRvd1NlcnZpY2VdLCB1c2VGYWN0b3J5OiBsb2NhbFN0b3JhZ2VTZXJ2aWNlRmFjdG9yeSB9LFxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTG9naW5Ub2tlblN0b3JhZ2UsIGRlcHM6IFtMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBDb29raWVTZXJ2aWNlXSwgdXNlRmFjdG9yeTogbG9naW5Ub2tlblN0b3JhZ2VTZXJ2aWNlRmFjdG9yeSB9LFxuXG4gICAgICAgICAgICAgICAgLi4uQ29va2llTW9kdWxlLmZvclJvb3Qob3B0aW9ucykucHJvdmlkZXJzLFxuICAgICAgICAgICAgICAgIC4uLlRoZW1lTW9kdWxlLmZvclJvb3Qob3B0aW9ucyA/IG9wdGlvbnMudGhlbWVPcHRpb25zIDogbnVsbCkucHJvdmlkZXJzLFxuICAgICAgICAgICAgICAgIC4uLkxhbmd1YWdlTW9kdWxlLmZvclJvb3Qob3B0aW9ucyA/IG9wdGlvbnMubGFuZ3VhZ2VPcHRpb25zIDogbnVsbCkucHJvdmlkZXJzXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSVZJT3B0aW9ucyBleHRlbmRzIElDb29raWVPcHRpb25zIHtcbiAgICBsb2dnZXJMZXZlbD86IExvZ2dlckxldmVsO1xuICAgIHRoZW1lT3B0aW9ucz86IElUaGVtZVNlcnZpY2VPcHRpb25zO1xuICAgIGxhbmd1YWdlT3B0aW9ucz86IElMYW5ndWFnZVNlcnZpY2VPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZXJGYWN0b3J5KG5hdGl2ZVdpbmRvdzogTmF0aXZlV2luZG93U2VydmljZSwgcmVuZGVyZXJGYWN0b3J5MjogUmVuZGVyZXJGYWN0b3J5Mik6IFZpZXdVdGlsIHtcbiAgICBWaWV3VXRpbC5yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeTIuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gICAgVmlld1V0aWwuZG9jdW1lbnQgPSBuYXRpdmVXaW5kb3cuZG9jdW1lbnQ7XG4gICAgcmV0dXJuICgpID0+IFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9nZ2VyU2VydmljZUZhY3Rvcnkob3B0aW9uczogSVZJT3B0aW9ucyk6IElMb2dnZXIge1xuICAgIHJldHVybiBuZXcgRGVmYXVsdExvZ2dlcighXy5pc05pbChvcHRpb25zLmxvZ2dlckxldmVsKSA/IG9wdGlvbnMubG9nZ2VyTGV2ZWwgOiBMb2dnZXJMZXZlbC5BTEwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmF0aXZlV2luZG93U2VydmljZUZhY3RvcnkoZG9jdW1lbnQ6IERvY3VtZW50KTogTmF0aXZlV2luZG93U2VydmljZSB7XG4gICAgcmV0dXJuIG5ldyBOYXRpdmVXaW5kb3dTZXJ2aWNlKGRvY3VtZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZVNlcnZpY2VGYWN0b3J5KG5hdGl2ZVdpbmRvdzogTmF0aXZlV2luZG93U2VydmljZSk6IExvY2FsU3RvcmFnZVNlcnZpY2Uge1xuICAgIHJldHVybiBuZXcgTG9jYWxTdG9yYWdlU2VydmljZShuYXRpdmVXaW5kb3cpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9naW5Ub2tlblN0b3JhZ2VTZXJ2aWNlRmFjdG9yeShzdG9yYWdlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBjb29raWVzOiBDb29raWVTZXJ2aWNlKTogTG9naW5Ub2tlblN0b3JhZ2Uge1xuICAgIHJldHVybiBuZXcgTG9naW5Ub2tlblN0b3JhZ2Uoc3RvcmFnZSwgY29va2llcyk7XG59XG5cbmV4cG9ydCBjb25zdCBWSV9BTkdVTEFSX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVZJT3B0aW9ucz4oYFZJX0FOR1VMQVJfT1BUSU9OU2ApO1xuIl19
@@ -0,0 +1,96 @@
1
+ import { Component } from '@angular/core';
2
+ import { DestroyableContainer } from '@ts-core/common';
3
+ import { PromiseHandler } from '@ts-core/common';
4
+ import * as _ from 'lodash';
5
+ import * as i0 from "@angular/core";
6
+ export class ApplicationBaseComponent extends DestroyableContainer {
7
+ // --------------------------------------------------------------------------
8
+ //
9
+ // Properties
10
+ //
11
+ // --------------------------------------------------------------------------
12
+ timeout;
13
+ isReadyAlreadyCalled;
14
+ viewReadyDelay = NaN;
15
+ viewReadyPromise;
16
+ // --------------------------------------------------------------------------
17
+ //
18
+ // Constructor
19
+ //
20
+ // --------------------------------------------------------------------------
21
+ constructor() {
22
+ super();
23
+ this.viewReadyPromise = PromiseHandler.create();
24
+ }
25
+ // --------------------------------------------------------------------------
26
+ //
27
+ // Private Methods
28
+ //
29
+ // --------------------------------------------------------------------------
30
+ makeViewReady = () => {
31
+ this.viewReadyPromise.resolve();
32
+ this.viewReadyHandler();
33
+ this.checkReady();
34
+ };
35
+ // --------------------------------------------------------------------------
36
+ //
37
+ // Protected Methods
38
+ //
39
+ // --------------------------------------------------------------------------
40
+ checkReady() {
41
+ if (this.isReadyAlreadyCalled || !this.isReady()) {
42
+ return;
43
+ }
44
+ this.isReadyAlreadyCalled = true;
45
+ this.readyHandler();
46
+ }
47
+ isReady() {
48
+ return this.isViewReady;
49
+ }
50
+ viewReadyHandler() { }
51
+ // --------------------------------------------------------------------------
52
+ //
53
+ // Public Methods
54
+ //
55
+ // --------------------------------------------------------------------------
56
+ ngAfterViewInit() {
57
+ if (this.viewReadyDelay > 0) {
58
+ PromiseHandler.delay(this.viewReadyDelay).then(this.makeViewReady);
59
+ }
60
+ else {
61
+ this.makeViewReady();
62
+ }
63
+ }
64
+ destroy() {
65
+ if (this.isDestroyed) {
66
+ return;
67
+ }
68
+ super.destroy();
69
+ if (!_.isNil(this.viewReadyPromise)) {
70
+ this.viewReadyPromise.reject();
71
+ this.viewReadyPromise = null;
72
+ }
73
+ if (!_.isNil(this.timeout)) {
74
+ clearTimeout(this.timeout);
75
+ this.timeout = null;
76
+ }
77
+ }
78
+ // --------------------------------------------------------------------------
79
+ //
80
+ // Public Properties
81
+ //
82
+ // --------------------------------------------------------------------------
83
+ get isViewReady() {
84
+ return !_.isNil(this.viewReadyPromise) ? this.viewReadyPromise.isResolved : false;
85
+ }
86
+ get viewReady() {
87
+ return !_.isNil(this.viewReadyPromise) ? this.viewReadyPromise.promise : null;
88
+ }
89
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ApplicationBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
90
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: ApplicationBaseComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
91
+ }
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ApplicationBaseComponent, decorators: [{
93
+ type: Component,
94
+ args: [{ template: '' }]
95
+ }], ctorParameters: () => [] });
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25CYXNlQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL0FwcGxpY2F0aW9uQmFzZUNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7O0FBRzVCLE1BQU0sT0FBZ0Isd0JBQXlCLFNBQVEsb0JBQW9CO0lBQ3ZFLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsY0FBYztJQUNkLEVBQUU7SUFDRiw2RUFBNkU7SUFFbkUsT0FBTyxDQUFNO0lBQ2Isb0JBQW9CLENBQVU7SUFFOUIsY0FBYyxHQUFXLEdBQUcsQ0FBQztJQUM3QixnQkFBZ0IsQ0FBNkI7SUFFdkQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixlQUFlO0lBQ2YsRUFBRTtJQUNGLDZFQUE2RTtJQUU3RTtRQUNJLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixtQkFBbUI7SUFDbkIsRUFBRTtJQUNGLDZFQUE2RTtJQUVyRSxhQUFhLEdBQUcsR0FBUyxFQUFFO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQyxDQUFDO0lBRUYsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixxQkFBcUI7SUFDckIsRUFBRTtJQUNGLDZFQUE2RTtJQUVuRSxVQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzlDLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFUyxPQUFPO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFUyxnQkFBZ0IsS0FBVSxDQUFDO0lBSXJDLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRiw2RUFBNkU7SUFFdEUsZUFBZTtRQUNsQixJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDdEU7YUFBTTtZQUNILElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4QjtJQUNMLENBQUM7SUFFTSxPQUFPO1FBQ1YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE9BQU87U0FDVjtRQUNELEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVoQixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QixZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YscUJBQXFCO0lBQ3JCLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEYsQ0FBQztJQUNELElBQVcsU0FBUztRQUNoQixPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xGLENBQUM7dUdBcEdpQix3QkFBd0I7MkZBQXhCLHdCQUF3QiwyRUFEdkIsRUFBRTs7MkZBQ0gsd0JBQXdCO2tCQUQ3QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzdHJveWFibGVDb250YWluZXIgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgUHJvbWlzZUhhbmRsZXIgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwbGljYXRpb25CYXNlQ29tcG9uZW50IGV4dGVuZHMgRGVzdHJveWFibGVDb250YWluZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIHRpbWVvdXQ6IGFueTtcbiAgICBwcm90ZWN0ZWQgaXNSZWFkeUFscmVhZHlDYWxsZWQ6IGJvb2xlYW47XG5cbiAgICBwcm90ZWN0ZWQgdmlld1JlYWR5RGVsYXk6IG51bWJlciA9IE5hTjtcbiAgICBwcm90ZWN0ZWQgdmlld1JlYWR5UHJvbWlzZTogUHJvbWlzZUhhbmRsZXI8dm9pZCwgdm9pZD47XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnZpZXdSZWFkeVByb21pc2UgPSBQcm9taXNlSGFuZGxlci5jcmVhdGUoKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcml2YXRlIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIG1ha2VWaWV3UmVhZHkgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMudmlld1JlYWR5UHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIHRoaXMudmlld1JlYWR5SGFuZGxlcigpO1xuICAgICAgICB0aGlzLmNoZWNrUmVhZHkoKTtcbiAgICB9O1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvdGVjdGVkIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgY2hlY2tSZWFkeSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeUFscmVhZHlDYWxsZWQgfHwgIXRoaXMuaXNSZWFkeSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1JlYWR5QWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVhZHlIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmlld1JlYWR5O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2aWV3UmVhZHlIYW5kbGVyKCk6IHZvaWQge31cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkeUhhbmRsZXIoKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnZpZXdSZWFkeURlbGF5ID4gMCkge1xuICAgICAgICAgICAgUHJvbWlzZUhhbmRsZXIuZGVsYXkodGhpcy52aWV3UmVhZHlEZWxheSkudGhlbih0aGlzLm1ha2VWaWV3UmVhZHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tYWtlVmlld1JlYWR5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG5cbiAgICAgICAgaWYgKCFfLmlzTmlsKHRoaXMudmlld1JlYWR5UHJvbWlzZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmlld1JlYWR5UHJvbWlzZS5yZWplY3QoKTtcbiAgICAgICAgICAgIHRoaXMudmlld1JlYWR5UHJvbWlzZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIV8uaXNOaWwodGhpcy50aW1lb3V0KSkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLnRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlld1JlYWR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwodGhpcy52aWV3UmVhZHlQcm9taXNlKSA/IHRoaXMudmlld1JlYWR5UHJvbWlzZS5pc1Jlc29sdmVkIDogZmFsc2U7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdmlld1JlYWR5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwodGhpcy52aWV3UmVhZHlQcm9taXNlKSA/IHRoaXMudmlld1JlYWR5UHJvbWlzZS5wcm9taXNlIDogbnVsbDtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,64 @@
1
+ import { LoadableEvent } from '@ts-core/common';
2
+ import { Assets, AssetUrlProvider } from '@ts-core/frontend';
3
+ import { takeUntil } from 'rxjs';
4
+ import { ApplicationBaseComponent } from './ApplicationBaseComponent';
5
+ import moment from 'moment';
6
+ import numeral from 'numeral';
7
+ export class ApplicationComponent extends ApplicationBaseComponent {
8
+ // --------------------------------------------------------------------------
9
+ //
10
+ // Properties
11
+ //
12
+ // --------------------------------------------------------------------------
13
+ isLanguageLoaded;
14
+ // --------------------------------------------------------------------------
15
+ //
16
+ // Private Methods
17
+ //
18
+ // --------------------------------------------------------------------------
19
+ initialize() {
20
+ this.initializeAssets();
21
+ this.initializeTheme();
22
+ this.initializeLanguage();
23
+ }
24
+ initializeAssets() {
25
+ Assets.provider = new AssetUrlProvider(this.settings.assetsUrl);
26
+ }
27
+ initializeTheme() {
28
+ this.theme.initialize(this.settings.themes);
29
+ }
30
+ initializeLanguage() {
31
+ this.language.initialize(`${this.settings.assetsUrl}language/`, this.settings.languages);
32
+ this.language.events.pipe(takeUntil(this.destroyed)).subscribe(data => {
33
+ switch (data.type) {
34
+ case LoadableEvent.COMPLETE:
35
+ this.languageLoadingComplete(data.data);
36
+ break;
37
+ case LoadableEvent.ERROR:
38
+ this.languageLoadingError(data.data, data.error);
39
+ break;
40
+ }
41
+ });
42
+ }
43
+ isReady() {
44
+ return super.isReady() && this.isLanguageLoaded;
45
+ }
46
+ // --------------------------------------------------------------------------
47
+ //
48
+ // Event Handlers
49
+ //
50
+ // --------------------------------------------------------------------------
51
+ languageLoadingComplete(item) {
52
+ this.isLanguageLoaded = true;
53
+ this.setLocale(item);
54
+ this.checkReady();
55
+ }
56
+ viewReadyHandler() {
57
+ this.initialize();
58
+ }
59
+ setLocale(item) {
60
+ moment.locale(item.locale);
61
+ numeral.locale(item.locale);
62
+ }
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Db21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vQXBwbGljYXRpb25Db21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQXNELE1BQU0sbUJBQW1CLENBQUM7QUFFakgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBRTlCLE1BQU0sT0FBZ0Isb0JBQW9ELFNBQVEsd0JBQXdCO0lBQ3RHLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsY0FBYztJQUNkLEVBQUU7SUFDRiw2RUFBNkU7SUFFckUsZ0JBQWdCLENBQVU7SUFFbEMsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixtQkFBbUI7SUFDbkIsRUFBRTtJQUNGLDZFQUE2RTtJQUVuRSxVQUFVO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRVMsZ0JBQWdCO1FBQ3RCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFUyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVTLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsRSxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsS0FBSyxhQUFhLENBQUMsUUFBUTtvQkFDdkIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFnQixDQUFDLENBQUM7b0JBQ3BELE1BQU07Z0JBQ1YsS0FBSyxhQUFhLENBQUMsS0FBSztvQkFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDN0QsTUFBTTthQUNiO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsT0FBTztRQUNiLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNwRCxDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixrQkFBa0I7SUFDbEIsRUFBRTtJQUNGLDZFQUE2RTtJQUVuRSx1QkFBdUIsQ0FBQyxJQUFjO1FBQzVDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUlTLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFjO1FBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FZSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvYWRhYmxlRXZlbnQgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgQXNzZXRzLCBBc3NldFVybFByb3ZpZGVyLCBUaGVtZVNlcnZpY2UsIExhbmd1YWdlU2VydmljZSwgU2V0dGluZ3NCYXNlU2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kJztcbmltcG9ydCB7IExhbmd1YWdlIH0gZnJvbSAnQHRzLWNvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkJhc2VDb21wb25lbnQgfSBmcm9tICcuL0FwcGxpY2F0aW9uQmFzZUNvbXBvbmVudCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgbnVtZXJhbCBmcm9tICdudW1lcmFsJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcGxpY2F0aW9uQ29tcG9uZW50PFQgZXh0ZW5kcyBTZXR0aW5nc0Jhc2VTZXJ2aWNlPiBleHRlbmRzIEFwcGxpY2F0aW9uQmFzZUNvbXBvbmVudCB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByaXZhdGUgaXNMYW5ndWFnZUxvYWRlZDogYm9vbGVhbjtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFByaXZhdGUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVBc3NldHMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplVGhlbWUoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplTGFuZ3VhZ2UoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZUFzc2V0cygpOiB2b2lkIHtcbiAgICAgICAgQXNzZXRzLnByb3ZpZGVyID0gbmV3IEFzc2V0VXJsUHJvdmlkZXIodGhpcy5zZXR0aW5ncy5hc3NldHNVcmwpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplVGhlbWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGhlbWUuaW5pdGlhbGl6ZSh0aGlzLnNldHRpbmdzLnRoZW1lcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRpYWxpemVMYW5ndWFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sYW5ndWFnZS5pbml0aWFsaXplKGAke3RoaXMuc2V0dGluZ3MuYXNzZXRzVXJsfWxhbmd1YWdlL2AsIHRoaXMuc2V0dGluZ3MubGFuZ3VhZ2VzKTtcbiAgICAgICAgdGhpcy5sYW5ndWFnZS5ldmVudHMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgTG9hZGFibGVFdmVudC5DT01QTEVURTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZUxvYWRpbmdDb21wbGV0ZShkYXRhLmRhdGEgYXMgTGFuZ3VhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIExvYWRhYmxlRXZlbnQuRVJST1I6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VMb2FkaW5nRXJyb3IoZGF0YS5kYXRhIGFzIExhbmd1YWdlLCBkYXRhLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc1JlYWR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gc3VwZXIuaXNSZWFkeSgpICYmIHRoaXMuaXNMYW5ndWFnZUxvYWRlZDtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRFdmVudCBIYW5kbGVyc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBsYW5ndWFnZUxvYWRpbmdDb21wbGV0ZShpdGVtOiBMYW5ndWFnZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTGFuZ3VhZ2VMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldExvY2FsZShpdGVtKTtcbiAgICAgICAgdGhpcy5jaGVja1JlYWR5KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGxhbmd1YWdlTG9hZGluZ0Vycm9yKGl0ZW06IExhbmd1YWdlLCBlcnJvcjogRXJyb3IpOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIHZpZXdSZWFkeUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRMb2NhbGUoaXRlbTogTGFuZ3VhZ2UpOiB2b2lkIHtcbiAgICAgICAgbW9tZW50LmxvY2FsZShpdGVtLmxvY2FsZSk7XG4gICAgICAgIG51bWVyYWwubG9jYWxlKGl0ZW0ubG9jYWxlKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcm90ZWN0ZWQgU2VydmljZSBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBzZXR0aW5ncygpOiBUO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0aGVtZSgpOiBUaGVtZVNlcnZpY2U7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBsYW5ndWFnZSgpOiBMYW5ndWFnZVNlcnZpY2U7XG59XG4iXX0=
@@ -0,0 +1,60 @@
1
+ import { DestroyableContainer } from '@ts-core/common';
2
+ import * as _ from 'lodash';
3
+ import { takeUntil } from 'rxjs';
4
+ export class MessageBaseComponent extends DestroyableContainer {
5
+ route;
6
+ language;
7
+ // --------------------------------------------------------------------------
8
+ //
9
+ // Properties
10
+ //
11
+ // --------------------------------------------------------------------------
12
+ text;
13
+ refreshText = 'Refresh';
14
+ // --------------------------------------------------------------------------
15
+ //
16
+ // Constructor
17
+ //
18
+ // --------------------------------------------------------------------------
19
+ constructor(route, language) {
20
+ super();
21
+ this.route = route;
22
+ this.language = language;
23
+ // this.login.isAutoLogin = true
24
+ this.text = this.getText();
25
+ if (this.language.isLoaded) {
26
+ this.commitLanguageProperties();
27
+ }
28
+ language.completed.pipe(takeUntil(this.destroyed)).subscribe(() => this.commitLanguageProperties());
29
+ }
30
+ // --------------------------------------------------------------------------
31
+ //
32
+ // Private Methods
33
+ //
34
+ // --------------------------------------------------------------------------
35
+ commitLanguageProperties() {
36
+ if (this.language.isHasTranslation('general.refresh')) {
37
+ this.refreshText = this.language.translate('general.refresh');
38
+ }
39
+ }
40
+ getText() {
41
+ let value = this.getValue(this.route.snapshot.queryParams);
42
+ if (_.isNil(value)) {
43
+ value = this.getValue(this.route.snapshot.params);
44
+ }
45
+ return value;
46
+ }
47
+ getValue(data) {
48
+ for (let item of this.getMessageFields()) {
49
+ let value = data[item];
50
+ if (!_.isEmpty(value)) {
51
+ return value;
52
+ }
53
+ }
54
+ return null;
55
+ }
56
+ getMessageFields() {
57
+ return ['text', 'message', 'error'];
58
+ }
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZUJhc2VDb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vTWVzc2FnZUJhc2VDb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqQyxNQUFNLE9BQWdCLG9CQUFxQixTQUFRLG9CQUFvQjtJQWdCN0M7SUFBaUM7SUFmdkQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixhQUFhO0lBQ2IsRUFBRTtJQUNGLDZFQUE2RTtJQUV0RSxJQUFJLENBQVM7SUFDYixXQUFXLEdBQVcsU0FBUyxDQUFDO0lBRXZDLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsY0FBYztJQUNkLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsWUFBc0IsS0FBcUIsRUFBWSxRQUF5QjtRQUM1RSxLQUFLLEVBQUUsQ0FBQztRQURVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVksYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFFNUUsZ0NBQWdDO1FBRWhDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDeEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDbkM7UUFDRCxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRiw2RUFBNkU7SUFFbkUsd0JBQXdCO1FBQzlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ25ELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNqRTtJQUNMLENBQUM7SUFFUyxPQUFPO1FBQ2IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEIsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRVMsUUFBUSxDQUFDLElBQVM7UUFDeEIsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUN0QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ25CLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRVMsZ0JBQWdCO1FBQ3RCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FTSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERlc3Ryb3lhYmxlQ29udGFpbmVyIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWVzc2FnZUJhc2VDb21wb25lbnQgZXh0ZW5kcyBEZXN0cm95YWJsZUNvbnRhaW5lciB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHRleHQ6IHN0cmluZztcbiAgICBwdWJsaWMgcmVmcmVzaFRleHQ6IHN0cmluZyA9ICdSZWZyZXNoJztcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0Q29uc3RydWN0b3JcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcm90ZWN0ZWQgbGFuZ3VhZ2U6IExhbmd1YWdlU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvLyB0aGlzLmxvZ2luLmlzQXV0b0xvZ2luID0gdHJ1ZVxuXG4gICAgICAgIHRoaXMudGV4dCA9IHRoaXMuZ2V0VGV4dCgpO1xuICAgICAgICBpZiAodGhpcy5sYW5ndWFnZS5pc0xvYWRlZCkge1xuICAgICAgICAgICAgdGhpcy5jb21taXRMYW5ndWFnZVByb3BlcnRpZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBsYW5ndWFnZS5jb21wbGV0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jb21taXRMYW5ndWFnZVByb3BlcnRpZXMoKSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcml2YXRlIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgY29tbWl0TGFuZ3VhZ2VQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5sYW5ndWFnZS5pc0hhc1RyYW5zbGF0aW9uKCdnZW5lcmFsLnJlZnJlc2gnKSkge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVGV4dCA9IHRoaXMubGFuZ3VhZ2UudHJhbnNsYXRlKCdnZW5lcmFsLnJlZnJlc2gnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyk7XG4gICAgICAgIGlmIChfLmlzTmlsKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldFZhbHVlKHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5nZXRNZXNzYWdlRmllbGRzKCkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGRhdGFbaXRlbV07XG4gICAgICAgICAgICBpZiAoIV8uaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldE1lc3NhZ2VGaWVsZHMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBbJ3RleHQnLCAnbWVzc2FnZScsICdlcnJvciddO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHVibGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgcmVmcmVzaCgpOiB2b2lkO1xufVxuIl19