@ts-core/angular 11.0.87 → 13.0.2

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 (362) hide show
  1. package/VICommonModule.d.ts +34 -2
  2. package/application/ApplicationBaseComponent.d.ts +9 -5
  3. package/application/ApplicationComponent.d.ts +2 -6
  4. package/asset/AssetBackgroundDirective.d.ts +3 -0
  5. package/asset/AssetBackgroundPipe.d.ts +3 -0
  6. package/asset/AssetFilePipe.d.ts +3 -0
  7. package/asset/AssetIconPipe.d.ts +3 -0
  8. package/asset/AssetImagePipe.d.ts +3 -0
  9. package/asset/AssetModule.d.ts +12 -0
  10. package/asset/AssetSoundPipe.d.ts +3 -0
  11. package/asset/AssetVideoPipe.d.ts +3 -0
  12. package/bottomSheet/BottomSheetModule.d.ts +10 -0
  13. package/bottomSheet/BottomSheetService.d.ts +3 -0
  14. package/bottomSheet/component/bottom-sheet-close-element/bottom-sheet-close-element.component.d.ts +3 -0
  15. package/component/VIComponentModule.d.ts +28 -0
  16. package/component/cdk-table/CdkTableBaseComponent.d.ts +6 -3
  17. package/component/cdk-table/CdkTableFilterableMapCollection.d.ts +5 -5
  18. package/component/cdk-table/CdkTablePaginableBookmarkMapCollection.d.ts +2 -2
  19. package/component/cdk-table/CdkTablePaginableMapCollection.d.ts +2 -6
  20. package/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.d.ts +3 -0
  21. package/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.d.ts +3 -0
  22. package/component/cdk-table/column/CdkTableCellClassNamePipe.d.ts +3 -0
  23. package/component/cdk-table/column/CdkTableColumnClassNamePipe.d.ts +3 -0
  24. package/component/cdk-table/column/CdkTableColumnStyleNamePipe.d.ts +3 -0
  25. package/component/cdk-table/column/CdkTableColumnValuePipe.d.ts +3 -0
  26. package/component/cdk-table/column/ICdkTableColumn.d.ts +1 -1
  27. package/component/cdk-table/row/CdkTableRowClassNamePipe.d.ts +3 -0
  28. package/component/cdk-table/row/CdkTableRowStyleNamePipe.d.ts +3 -0
  29. package/component/language/language-selector/language-selector.component.d.ts +3 -0
  30. package/component/menu-list/menu-list.component.d.ts +3 -0
  31. package/component/select-list/select-list.component.d.ts +3 -0
  32. package/component/tab-group/tab-group.component.d.ts +3 -0
  33. package/cookie/CookieModule.d.ts +4 -0
  34. package/directive/AspectRatioResizeDirective.d.ts +3 -0
  35. package/directive/AutoScrollBottomDirective.d.ts +3 -0
  36. package/directive/ClickToCopyDirective.d.ts +3 -0
  37. package/directive/ClickToSelectDirective.d.ts +3 -0
  38. package/directive/FocusDirective.d.ts +3 -0
  39. package/directive/HTMLContentTitleDirective.d.ts +3 -0
  40. package/directive/InfiniteScrollDirective.d.ts +3 -0
  41. package/directive/ResizeDirective.d.ts +3 -0
  42. package/directive/ScrollDirective.d.ts +3 -0
  43. package/directive/SelectOnFocusDirective.d.ts +3 -0
  44. package/{esm2015/ApplicationInjector.js → esm2020/ApplicationInjector.mjs} +0 -0
  45. package/esm2020/VICommonModule.mjs +145 -0
  46. package/esm2020/application/ApplicationBaseComponent.mjs +87 -0
  47. package/esm2020/application/ApplicationComponent.mjs +53 -0
  48. package/{esm2015/application/MessageBaseComponent.js → esm2020/application/MessageBaseComponent.mjs} +0 -0
  49. package/{esm2015/application/ShellBaseComponent.js → esm2020/application/ShellBaseComponent.mjs} +0 -0
  50. package/esm2020/asset/AssetBackgroundDirective.mjs +150 -0
  51. package/esm2020/asset/AssetBackgroundPipe.mjs +22 -0
  52. package/esm2020/asset/AssetFilePipe.mjs +22 -0
  53. package/esm2020/asset/AssetIconPipe.mjs +22 -0
  54. package/esm2020/asset/AssetImagePipe.mjs +22 -0
  55. package/esm2020/asset/AssetModule.mjs +24 -0
  56. package/esm2020/asset/AssetSoundPipe.mjs +22 -0
  57. package/esm2020/asset/AssetVideoPipe.mjs +22 -0
  58. package/esm2020/bottomSheet/BottomSheetImpl.mjs +230 -0
  59. package/esm2020/bottomSheet/BottomSheetModule.mjs +45 -0
  60. package/esm2020/bottomSheet/BottomSheetService.mjs +99 -0
  61. package/{esm2015/bottomSheet/component/BottomSheetBaseComponent.js → esm2020/bottomSheet/component/BottomSheetBaseComponent.mjs} +0 -0
  62. package/esm2020/bottomSheet/component/bottom-sheet-close-element/bottom-sheet-close-element.component.mjs +60 -0
  63. package/esm2020/component/VIComponentModule.mjs +105 -0
  64. package/esm2020/component/cdk-table/CdkTableBaseComponent.mjs +188 -0
  65. package/{esm2015/component/cdk-table/CdkTableDataSource.js → esm2020/component/cdk-table/CdkTableDataSource.mjs} +0 -0
  66. package/esm2020/component/cdk-table/CdkTableFilterableMapCollection.mjs +94 -0
  67. package/esm2020/component/cdk-table/CdkTablePaginableBookmarkMapCollection.mjs +49 -0
  68. package/esm2020/component/cdk-table/CdkTablePaginableMapCollection.mjs +57 -0
  69. package/esm2020/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.mjs +35 -0
  70. package/esm2020/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.mjs +63 -0
  71. package/esm2020/component/cdk-table/column/CdkTableCellClassNamePipe.mjs +21 -0
  72. package/esm2020/component/cdk-table/column/CdkTableColumnClassNamePipe.mjs +22 -0
  73. package/esm2020/component/cdk-table/column/CdkTableColumnStyleNamePipe.mjs +22 -0
  74. package/esm2020/component/cdk-table/column/CdkTableColumnValuePipe.mjs +22 -0
  75. package/esm2020/component/cdk-table/column/ICdkTableColumn.mjs +2 -0
  76. package/esm2020/component/cdk-table/row/CdkTableRowClassNamePipe.mjs +22 -0
  77. package/esm2020/component/cdk-table/row/CdkTableRowStyleNamePipe.mjs +22 -0
  78. package/{esm2015/component/cdk-table/row/ICdkTableRow.js → esm2020/component/cdk-table/row/ICdkTableRow.mjs} +0 -0
  79. package/esm2020/component/language/language-selector/language-selector.component.mjs +79 -0
  80. package/esm2020/component/menu-list/menu-list.component.mjs +16 -0
  81. package/esm2020/component/select-list/select-list.component.mjs +17 -0
  82. package/esm2020/component/tab-group/tab-group.component.mjs +71 -0
  83. package/esm2020/cookie/CookieModule.mjs +37 -0
  84. package/{esm2015/cookie/CookieOptions.js → esm2020/cookie/CookieOptions.mjs} +0 -0
  85. package/{esm2015/cookie/CookieService.js → esm2020/cookie/CookieService.mjs} +1 -1
  86. package/esm2020/directive/AspectRatioResizeDirective.mjs +127 -0
  87. package/esm2020/directive/AutoScrollBottomDirective.mjs +115 -0
  88. package/esm2020/directive/ClickToCopyDirective.mjs +49 -0
  89. package/esm2020/directive/ClickToSelectDirective.mjs +49 -0
  90. package/esm2020/directive/FocusDirective.mjs +54 -0
  91. package/esm2020/directive/HTMLContentTitleDirective.mjs +71 -0
  92. package/esm2020/directive/InfiniteScrollDirective.mjs +74 -0
  93. package/esm2020/directive/ResizeDirective.mjs +79 -0
  94. package/esm2020/directive/ScrollDirective.mjs +128 -0
  95. package/esm2020/directive/SelectOnFocusDirective.mjs +47 -0
  96. package/{esm2015/form/FormElementAsync.js → esm2020/form/FormElementAsync.mjs} +0 -0
  97. package/esm2020/form/FormElementSync.mjs +69 -0
  98. package/{esm2015/form/ValueAccessor.js → esm2020/form/ValueAccessor.mjs} +0 -0
  99. package/esm2020/form/validate.mjs +59 -0
  100. package/esm2020/language/LanguageDirective.mjs +92 -0
  101. package/esm2020/language/LanguageHasDirective.mjs +93 -0
  102. package/esm2020/language/LanguageMatPaginatorIntl.mjs +62 -0
  103. package/esm2020/language/LanguageModule.mjs +67 -0
  104. package/{esm2015/language/LanguageMomentDateAdapter.js → esm2020/language/LanguageMomentDateAdapter.mjs} +2 -4
  105. package/esm2020/language/LanguagePipe.mjs +58 -0
  106. package/esm2020/language/LanguagePipeHas.mjs +56 -0
  107. package/esm2020/language/LanguagePipeHasPure.mjs +40 -0
  108. package/esm2020/language/LanguagePipePure.mjs +39 -0
  109. package/{esm2015/language/LanguageRequireResolver.js → esm2020/language/LanguageRequireResolver.mjs} +0 -0
  110. package/esm2020/language/LanguageResolver.mjs +21 -0
  111. package/{esm2015/list/IListItem.js → esm2020/list/IListItem.mjs} +0 -0
  112. package/{esm2015/list/ListItem.js → esm2020/list/ListItem.mjs} +0 -0
  113. package/{esm2015/list/ListItems.js → esm2020/list/ListItems.mjs} +0 -0
  114. package/{esm2015/list/select/ISelectListItem.js → esm2020/list/select/ISelectListItem.mjs} +0 -0
  115. package/{esm2015/list/select/SelectListItem.js → esm2020/list/select/SelectListItem.mjs} +0 -0
  116. package/{esm2015/list/select/SelectListItems.js → esm2020/list/select/SelectListItems.mjs} +0 -0
  117. package/esm2020/login/LoginBaseService.mjs +187 -0
  118. package/esm2020/login/LoginGuard.mjs +29 -0
  119. package/esm2020/login/LoginRedirectResolver.mjs +21 -0
  120. package/esm2020/login/LoginRequireResolver.mjs +36 -0
  121. package/esm2020/login/LoginResolver.mjs +28 -0
  122. package/{esm2015/manager/FocusManager.js → esm2020/manager/FocusManager.mjs} +0 -0
  123. package/{esm2015/manager/ResizeManager.js → esm2020/manager/ResizeManager.mjs} +0 -0
  124. package/{esm2015/menu/MenuItem.js → esm2020/menu/MenuItem.mjs} +0 -0
  125. package/{esm2015/menu/MenuItemBase.js → esm2020/menu/MenuItemBase.mjs} +0 -0
  126. package/{esm2015/menu/MenuItems.js → esm2020/menu/MenuItems.mjs} +0 -0
  127. package/{esm2015/menu/NavigationMenuItem.js → esm2020/menu/NavigationMenuItem.mjs} +0 -0
  128. package/esm2020/module/LazyModuleLoader.mjs +89 -0
  129. package/{esm2015/notification/INotification.js → esm2020/notification/INotification.mjs} +0 -0
  130. package/esm2020/notification/INotificationContent.mjs +131 -0
  131. package/{esm2015/notification/NotificationConfig.js → esm2020/notification/NotificationConfig.mjs} +0 -0
  132. package/{esm2015/notification/NotificationFactory.js → esm2020/notification/NotificationFactory.mjs} +0 -0
  133. package/esm2020/notification/NotificationImpl.mjs +139 -0
  134. package/esm2020/notification/NotificationModule.mjs +53 -0
  135. package/{esm2015/notification/NotificationProperties.js → esm2020/notification/NotificationProperties.mjs} +0 -0
  136. package/esm2020/notification/NotificationService.mjs +239 -0
  137. package/{esm2015/notification/component/NotificationBaseComponent.js → esm2020/notification/component/NotificationBaseComponent.mjs} +0 -0
  138. package/esm2020/notification/component/NotificationQuestionBaseComponent.mjs +49 -0
  139. package/esm2020/notification/component/notification/notification.component.mjs +61 -0
  140. package/esm2020/pipe/CamelCasePipe.mjs +31 -0
  141. package/esm2020/pipe/FinancePipe.mjs +53 -0
  142. package/esm2020/pipe/MomentDateAdaptivePipe.mjs +51 -0
  143. package/esm2020/pipe/MomentDateFromNowPipe.mjs +22 -0
  144. package/esm2020/pipe/MomentDatePipe.mjs +71 -0
  145. package/esm2020/pipe/MomentTimePipe.mjs +35 -0
  146. package/esm2020/pipe/NgModelErrorPipe.mjs +42 -0
  147. package/esm2020/pipe/PrettifyPipe.mjs +38 -0
  148. package/esm2020/pipe/SanitizePipe.mjs +47 -0
  149. package/esm2020/pipe/StartCasePipe.mjs +24 -0
  150. package/esm2020/pipe/TimePipe.mjs +37 -0
  151. package/esm2020/pipe/TruncatePipe.mjs +25 -0
  152. package/esm2020/public-api.mjs +160 -0
  153. package/{esm2015/question/IQuestion.js → esm2020/question/IQuestion.mjs} +0 -0
  154. package/{esm2015/question/QuestionManager.js → esm2020/question/QuestionManager.mjs} +0 -0
  155. package/esm2020/service/BootstrapBreakpointService.mjs +116 -0
  156. package/{esm2015/service/PipeBaseService.js → esm2020/service/PipeBaseService.mjs} +0 -0
  157. package/esm2020/service/RouterBaseService.mjs +214 -0
  158. package/{esm2015/service/route/CanDeactivateGuard.js → esm2020/service/route/CanDeactivateGuard.mjs} +0 -0
  159. package/{esm2015/service/route/IRouterDeactivatable.js → esm2020/service/route/IRouterDeactivatable.mjs} +0 -0
  160. package/esm2020/theme/ThemeAssetBackgroundDirective.mjs +36 -0
  161. package/esm2020/theme/ThemeAssetDirective.mjs +219 -0
  162. package/esm2020/theme/ThemeAssetImageDirective.mjs +34 -0
  163. package/esm2020/theme/ThemeModule.mjs +62 -0
  164. package/esm2020/theme/ThemeStyleDirective.mjs +115 -0
  165. package/esm2020/theme/ThemeStyleHoverDirective.mjs +107 -0
  166. package/esm2020/theme/ThemeToggleDirective.mjs +62 -0
  167. package/esm2020/transport/TransportLazy.mjs +91 -0
  168. package/esm2020/transport/TransportLazyModule.mjs +28 -0
  169. package/esm2020/transport/TransportLazyModuleLoadedEvent.mjs +18 -0
  170. package/esm2020/ts-core-angular.mjs +5 -0
  171. package/{esm2015/user/IUser.js → esm2020/user/IUser.mjs} +0 -0
  172. package/esm2020/user/UserBaseService.mjs +105 -0
  173. package/{esm2015/util/ViewUtil.js → esm2020/util/ViewUtil.mjs} +0 -0
  174. package/{esm2015/window/IWindow.js → esm2020/window/IWindow.mjs} +0 -0
  175. package/esm2020/window/IWindowContent.mjs +124 -0
  176. package/{esm2015/window/WindowBase.js → esm2020/window/WindowBase.mjs} +0 -0
  177. package/{esm2015/window/WindowConfig.js → esm2020/window/WindowConfig.mjs} +0 -0
  178. package/{esm2015/window/WindowFactory.js → esm2020/window/WindowFactory.mjs} +0 -0
  179. package/esm2020/window/WindowImpl.mjs +319 -0
  180. package/esm2020/window/WindowModule.mjs +59 -0
  181. package/{esm2015/window/WindowProperties.js → esm2020/window/WindowProperties.mjs} +0 -0
  182. package/esm2020/window/WindowService.mjs +338 -0
  183. package/{esm2015/window/component/WindowBaseComponent.js → esm2020/window/component/WindowBaseComponent.mjs} +0 -0
  184. package/esm2020/window/component/WindowDragAreaDirective.mjs +97 -0
  185. package/{esm2015/window/component/WindowDragable.js → esm2020/window/component/WindowDragable.mjs} +1 -1
  186. package/esm2020/window/component/WindowElement.mjs +85 -0
  187. package/{esm2015/window/component/WindowQuestionBaseComponent.js → esm2020/window/component/WindowQuestionBaseComponent.mjs} +0 -0
  188. package/{esm2015/window/component/WindowResizeable.js → esm2020/window/component/WindowResizeable.mjs} +1 -1
  189. package/esm2020/window/component/window-close-element/window-close-element.component.mjs +60 -0
  190. package/esm2020/window/component/window-minimize-element/window-minimize-element.component.mjs +80 -0
  191. package/esm2020/window/component/window-question/window-question.component.mjs +50 -0
  192. package/esm2020/window/component/window-resize-element/window-resize-element.component.mjs +59 -0
  193. package/fesm2015/{ts-core-angular.js → ts-core-angular.mjs} +5106 -4696
  194. package/fesm2015/ts-core-angular.mjs.map +1 -0
  195. package/fesm2020/ts-core-angular.mjs +9510 -0
  196. package/fesm2020/ts-core-angular.mjs.map +1 -0
  197. package/form/FormElementSync.d.ts +3 -0
  198. package/language/LanguageDirective.d.ts +3 -0
  199. package/language/LanguageHasDirective.d.ts +3 -0
  200. package/language/LanguageMatPaginatorIntl.d.ts +3 -0
  201. package/language/LanguageModule.d.ts +11 -0
  202. package/language/LanguagePipe.d.ts +3 -0
  203. package/language/LanguagePipeHas.d.ts +3 -0
  204. package/language/LanguagePipeHasPure.d.ts +3 -0
  205. package/language/LanguagePipePure.d.ts +3 -0
  206. package/language/LanguageResolver.d.ts +3 -0
  207. package/login/LoginGuard.d.ts +5 -2
  208. package/login/LoginRedirectResolver.d.ts +3 -0
  209. package/login/LoginRequireResolver.d.ts +2 -2
  210. package/login/LoginResolver.d.ts +3 -0
  211. package/module/LazyModuleLoader.d.ts +24 -0
  212. package/notification/INotificationContent.d.ts +3 -0
  213. package/notification/NotificationModule.d.ts +14 -0
  214. package/notification/NotificationService.d.ts +3 -0
  215. package/notification/component/NotificationQuestionBaseComponent.d.ts +3 -0
  216. package/notification/component/notification/notification.component.d.ts +3 -0
  217. package/package.json +44 -30
  218. package/pipe/CamelCasePipe.d.ts +3 -0
  219. package/pipe/FinancePipe.d.ts +3 -0
  220. package/pipe/MomentDateAdaptivePipe.d.ts +3 -0
  221. package/pipe/MomentDateFromNowPipe.d.ts +3 -0
  222. package/pipe/MomentDatePipe.d.ts +3 -0
  223. package/pipe/MomentTimePipe.d.ts +3 -0
  224. package/pipe/NgModelErrorPipe.d.ts +3 -0
  225. package/pipe/PrettifyPipe.d.ts +3 -0
  226. package/pipe/SanitizePipe.d.ts +3 -0
  227. package/pipe/StartCasePipe.d.ts +3 -0
  228. package/pipe/TimePipe.d.ts +3 -0
  229. package/pipe/TruncatePipe.d.ts +3 -0
  230. package/public-api.d.ts +29 -9
  231. package/service/BootstrapBreakpointService.d.ts +3 -0
  232. package/theme/ThemeAssetBackgroundDirective.d.ts +3 -0
  233. package/theme/ThemeAssetDirective.d.ts +3 -0
  234. package/theme/ThemeAssetImageDirective.d.ts +3 -0
  235. package/theme/ThemeModule.d.ts +10 -0
  236. package/theme/ThemeStyleDirective.d.ts +3 -0
  237. package/theme/ThemeStyleHoverDirective.d.ts +3 -0
  238. package/theme/ThemeToggleDirective.d.ts +3 -0
  239. package/transport/TransportLazy.d.ts +15 -0
  240. package/transport/TransportLazyModule.d.ts +16 -0
  241. package/transport/TransportLazyModuleLoadedEvent.d.ts +6 -0
  242. package/ts-core-angular.d.ts +1 -24
  243. package/user/UserBaseService.d.ts +1 -1
  244. package/window/IWindowContent.d.ts +3 -0
  245. package/window/WindowModule.d.ts +20 -0
  246. package/window/WindowService.d.ts +3 -0
  247. package/window/component/WindowDragAreaDirective.d.ts +3 -0
  248. package/window/component/WindowDragable.d.ts +1 -1
  249. package/window/component/WindowElement.d.ts +3 -0
  250. package/window/component/WindowResizeable.d.ts +1 -1
  251. package/window/component/window-close-element/window-close-element.component.d.ts +3 -0
  252. package/window/component/window-minimize-element/window-minimize-element.component.d.ts +3 -0
  253. package/window/component/window-question/window-question.component.d.ts +3 -0
  254. package/window/component/window-resize-element/window-resize-element.component.d.ts +3 -0
  255. package/application/ApplicationComponent2.d.ts +0 -19
  256. package/bundles/ts-core-angular.umd.js +0 -10984
  257. package/bundles/ts-core-angular.umd.js.map +0 -1
  258. package/bundles/ts-core-angular.umd.min.js +0 -2
  259. package/bundles/ts-core-angular.umd.min.js.map +0 -1
  260. package/esm2015/VICommonModule.js +0 -98
  261. package/esm2015/application/ApplicationBaseComponent.js +0 -80
  262. package/esm2015/application/ApplicationComponent.js +0 -57
  263. package/esm2015/application/ApplicationComponent2.js +0 -53
  264. package/esm2015/asset/AssetBackgroundDirective.js +0 -144
  265. package/esm2015/asset/AssetBackgroundPipe.js +0 -18
  266. package/esm2015/asset/AssetFilePipe.js +0 -18
  267. package/esm2015/asset/AssetIconPipe.js +0 -18
  268. package/esm2015/asset/AssetImagePipe.js +0 -18
  269. package/esm2015/asset/AssetModule.js +0 -19
  270. package/esm2015/asset/AssetSoundPipe.js +0 -18
  271. package/esm2015/asset/AssetVideoPipe.js +0 -18
  272. package/esm2015/bottomSheet/BottomSheetImpl.js +0 -231
  273. package/esm2015/bottomSheet/BottomSheetModule.js +0 -40
  274. package/esm2015/bottomSheet/BottomSheetService.js +0 -103
  275. package/esm2015/bottomSheet/component/bottom-sheet-close-element/bottom-sheet-close-element.component.js +0 -63
  276. package/esm2015/component/VIComponentModule.js +0 -67
  277. package/esm2015/component/cdk-table/CdkTableBaseComponent.js +0 -176
  278. package/esm2015/component/cdk-table/CdkTableFilterableMapCollection.js +0 -94
  279. package/esm2015/component/cdk-table/CdkTablePaginableBookmarkMapCollection.js +0 -49
  280. package/esm2015/component/cdk-table/CdkTablePaginableMapCollection.js +0 -57
  281. package/esm2015/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.js +0 -24
  282. package/esm2015/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.js +0 -52
  283. package/esm2015/component/cdk-table/column/CdkTableCellClassNamePipe.js +0 -17
  284. package/esm2015/component/cdk-table/column/CdkTableColumnClassNamePipe.js +0 -18
  285. package/esm2015/component/cdk-table/column/CdkTableColumnStyleNamePipe.js +0 -18
  286. package/esm2015/component/cdk-table/column/CdkTableColumnValuePipe.js +0 -18
  287. package/esm2015/component/cdk-table/column/ICdkTableColumn.js +0 -2
  288. package/esm2015/component/cdk-table/row/CdkTableRowClassNamePipe.js +0 -18
  289. package/esm2015/component/cdk-table/row/CdkTableRowStyleNamePipe.js +0 -18
  290. package/esm2015/component/language/language-selector/language-selector.component.js +0 -75
  291. package/esm2015/component/menu-list/menu-list.component.js +0 -14
  292. package/esm2015/component/select-list/select-list.component.js +0 -14
  293. package/esm2015/component/tab-group/tab-group.component.js +0 -68
  294. package/esm2015/cookie/CookieModule.js +0 -33
  295. package/esm2015/directive/AspectRatioResizeDirective.js +0 -125
  296. package/esm2015/directive/AutoScrollBottomDirective.js +0 -107
  297. package/esm2015/directive/ClickToCopyDirective.js +0 -48
  298. package/esm2015/directive/ClickToSelectDirective.js +0 -48
  299. package/esm2015/directive/FocusDirective.js +0 -53
  300. package/esm2015/directive/HTMLContentTitleDirective.js +0 -70
  301. package/esm2015/directive/InfiniteScrollDirective.js +0 -69
  302. package/esm2015/directive/ResizeDirective.js +0 -75
  303. package/esm2015/directive/ScrollDirective.js +0 -124
  304. package/esm2015/directive/SelectOnFocusDirective.js +0 -46
  305. package/esm2015/form/FormElementSync.js +0 -62
  306. package/esm2015/form/validate.js +0 -61
  307. package/esm2015/language/LanguageDirective.js +0 -90
  308. package/esm2015/language/LanguageHasDirective.js +0 -93
  309. package/esm2015/language/LanguageMatPaginatorIntl.js +0 -54
  310. package/esm2015/language/LanguageModule.js +0 -62
  311. package/esm2015/language/LanguagePipe.js +0 -57
  312. package/esm2015/language/LanguagePipeHas.js +0 -55
  313. package/esm2015/language/LanguagePipeHasPure.js +0 -39
  314. package/esm2015/language/LanguagePipePure.js +0 -38
  315. package/esm2015/language/LanguageResolver.js +0 -23
  316. package/esm2015/login/LoginBaseService.js +0 -197
  317. package/esm2015/login/LoginGuard.js +0 -31
  318. package/esm2015/login/LoginRedirectResolver.js +0 -19
  319. package/esm2015/login/LoginRequireResolver.js +0 -36
  320. package/esm2015/login/LoginResolver.js +0 -30
  321. package/esm2015/notification/INotificationContent.js +0 -126
  322. package/esm2015/notification/NotificationImpl.js +0 -140
  323. package/esm2015/notification/NotificationModule.js +0 -40
  324. package/esm2015/notification/NotificationService.js +0 -248
  325. package/esm2015/notification/component/NotificationQuestionBaseComponent.js +0 -43
  326. package/esm2015/notification/component/notification/notification.component.js +0 -64
  327. package/esm2015/pipe/CamelCasePipe.js +0 -28
  328. package/esm2015/pipe/FinancePipe.js +0 -49
  329. package/esm2015/pipe/MomentDateAdaptivePipe.js +0 -47
  330. package/esm2015/pipe/MomentDateFromNowPipe.js +0 -18
  331. package/esm2015/pipe/MomentDatePipe.js +0 -67
  332. package/esm2015/pipe/MomentTimePipe.js +0 -31
  333. package/esm2015/pipe/NgModelErrorPipe.js +0 -41
  334. package/esm2015/pipe/PrettifyPipe.js +0 -35
  335. package/esm2015/pipe/SanitizePipe.js +0 -46
  336. package/esm2015/pipe/StartCasePipe.js +0 -20
  337. package/esm2015/pipe/TimePipe.js +0 -33
  338. package/esm2015/pipe/TruncatePipe.js +0 -21
  339. package/esm2015/public-api.js +0 -155
  340. package/esm2015/service/BootstrapBreakpointService.js +0 -118
  341. package/esm2015/service/RouterBaseService.js +0 -223
  342. package/esm2015/theme/ThemeAssetBackgroundDirective.js +0 -37
  343. package/esm2015/theme/ThemeAssetDirective.js +0 -204
  344. package/esm2015/theme/ThemeAssetImageDirective.js +0 -35
  345. package/esm2015/theme/ThemeModule.js +0 -57
  346. package/esm2015/theme/ThemeStyleDirective.js +0 -113
  347. package/esm2015/theme/ThemeStyleHoverDirective.js +0 -105
  348. package/esm2015/theme/ThemeToggleDirective.js +0 -61
  349. package/esm2015/ts-core-angular.js +0 -28
  350. package/esm2015/user/UserBaseService.js +0 -105
  351. package/esm2015/window/IWindowContent.js +0 -115
  352. package/esm2015/window/WindowImpl.js +0 -320
  353. package/esm2015/window/WindowModule.js +0 -46
  354. package/esm2015/window/WindowService.js +0 -349
  355. package/esm2015/window/component/WindowDragAreaDirective.js +0 -96
  356. package/esm2015/window/component/WindowElement.js +0 -78
  357. package/esm2015/window/component/window-close-element/window-close-element.component.js +0 -63
  358. package/esm2015/window/component/window-minimize-element/window-minimize-element.component.js +0 -83
  359. package/esm2015/window/component/window-question/window-question.component.js +0 -50
  360. package/esm2015/window/component/window-resize-element/window-resize-element.component.js +0 -62
  361. package/fesm2015/ts-core-angular.js.map +0 -1
  362. package/ts-core-angular.metadata.json +0 -1
@@ -0,0 +1,187 @@
1
+ import { LoadableEvent, Loadable, LoadableStatus } from '@ts-core/common';
2
+ import { ExtendedError } from '@ts-core/common/error';
3
+ import { ObservableData } from '@ts-core/common/observer';
4
+ import { TransportNoConnectionError, TransportTimeoutError } from '@ts-core/common/transport';
5
+ import { map, filter } from 'rxjs/operators';
6
+ import * as _ from 'lodash';
7
+ export class LoginBaseService extends Loadable {
8
+ // --------------------------------------------------------------------------
9
+ //
10
+ // Constructor
11
+ //
12
+ // --------------------------------------------------------------------------
13
+ constructor() {
14
+ super();
15
+ this._isLoggedIn = false;
16
+ }
17
+ // --------------------------------------------------------------------------
18
+ //
19
+ // Protected Methods
20
+ //
21
+ // --------------------------------------------------------------------------
22
+ async loginByParam(param) {
23
+ return this.loginByFunction(() => this.loginRequest(param));
24
+ }
25
+ async loginByFunction(sidReturnFunction) {
26
+ if (this.isLoggedIn || this.isLoading) {
27
+ return null;
28
+ }
29
+ let response;
30
+ this.status = LoadableStatus.LOADING;
31
+ this.observer.next(new ObservableData(LoadableEvent.STARTED));
32
+ this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_STARTED));
33
+ try {
34
+ response = await sidReturnFunction();
35
+ this.parseLoginResponse(response);
36
+ if (!this.isCanLoginWithSid()) {
37
+ this.status = LoadableStatus.LOADED;
38
+ }
39
+ else {
40
+ this.loginBySid();
41
+ }
42
+ }
43
+ catch (error) {
44
+ let extendedError = ExtendedError.create(error);
45
+ this.status = LoadableStatus.ERROR;
46
+ this.parseLoginErrorResponse(extendedError);
47
+ this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_ERROR, null, extendedError));
48
+ }
49
+ if (!this.isLoading) {
50
+ this.observer.next(new ObservableData(LoadableEvent.FINISHED));
51
+ this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_FINISHED));
52
+ }
53
+ return response;
54
+ }
55
+ async loginBySid() {
56
+ if (_.isNil(this.sid)) {
57
+ this._sid = this.getSavedSid();
58
+ }
59
+ try {
60
+ let response = await this.loginSidRequest();
61
+ this.parseLoginSidResponse(response);
62
+ this._isLoggedIn = true;
63
+ this.status = LoadableStatus.LOADED;
64
+ this.observer.next(new ObservableData(LoadableEvent.COMPLETE, response));
65
+ this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_COMPLETE, response));
66
+ }
67
+ catch (error) {
68
+ let extendedError = ExtendedError.create(error);
69
+ this.parseLoginSidErrorResponse(extendedError);
70
+ this._isLoggedIn = false;
71
+ this.status = LoadableStatus.ERROR;
72
+ this.observer.next(new ObservableData(LoadableEvent.ERROR, null, extendedError));
73
+ this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_ERROR, null, extendedError));
74
+ }
75
+ this.observer.next(new ObservableData(LoadableEvent.FINISHED));
76
+ this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_FINISHED));
77
+ }
78
+ reset() {
79
+ this._sid = null;
80
+ this._resource = null;
81
+ this._loginData = null;
82
+ }
83
+ parseLoginErrorResponse(error) { }
84
+ parseLogoutErrorResponse(error) { }
85
+ parseLoginSidResponse(response) {
86
+ this._loginData = response;
87
+ }
88
+ parseLoginSidErrorResponse(error) {
89
+ if (error instanceof TransportTimeoutError || error instanceof TransportNoConnectionError) {
90
+ return;
91
+ }
92
+ this.reset();
93
+ }
94
+ async loginByResponse(param) {
95
+ if (this.isLoggedIn || this.isLoading) {
96
+ return;
97
+ }
98
+ this.status = LoadableStatus.LOADING;
99
+ this.observer.next(new ObservableData(LoadableEvent.STARTED));
100
+ this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_STARTED));
101
+ this.parseLoginResponse(param);
102
+ this.status = !this.isCanLoginWithSid() ? LoadableStatus.LOADED : LoadableStatus.LOADING;
103
+ if (this.isLoading) {
104
+ await this.loginBySid();
105
+ }
106
+ }
107
+ tryLoginBySid() {
108
+ if (!this.isCanLoginWithSid()) {
109
+ return false;
110
+ }
111
+ if (!this.isLoggedIn && !this.isLoading) {
112
+ this.status = LoadableStatus.LOADING;
113
+ this.observer.next(new ObservableData(LoadableEvent.STARTED));
114
+ this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGIN_STARTED));
115
+ this.loginBySid();
116
+ }
117
+ return true;
118
+ }
119
+ async logout() {
120
+ if (!this.isLoggedIn) {
121
+ return;
122
+ }
123
+ this.observer.next(new ObservableData(LoadableEvent.STARTED));
124
+ this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGOUT_STARTED));
125
+ try {
126
+ await this.logoutRequest();
127
+ }
128
+ catch (error) {
129
+ let extendedError = ExtendedError.create(error);
130
+ this.parseLogoutErrorResponse(extendedError);
131
+ }
132
+ finally {
133
+ this.reset();
134
+ this._isLoggedIn = false;
135
+ this.status = LoadableStatus.NOT_LOADED;
136
+ this.observer.next(new ObservableData(LoadableEvent.FINISHED));
137
+ this.observer.next(new ObservableData(LoginBaseServiceEvent.LOGOUT_FINISHED));
138
+ }
139
+ }
140
+ isCanLoginWithSid() {
141
+ return this.sid != null || this.getSavedSid() != null;
142
+ }
143
+ destroy() {
144
+ if (this.isDestroyed) {
145
+ return;
146
+ }
147
+ super.destroy();
148
+ this.reset();
149
+ }
150
+ // --------------------------------------------------------------------------
151
+ //
152
+ // Public Properties
153
+ //
154
+ // --------------------------------------------------------------------------
155
+ get logined() {
156
+ return this.events.pipe(filter(item => item.type === LoginBaseServiceEvent.LOGIN_COMPLETE), map(item => item.data));
157
+ }
158
+ get logouted() {
159
+ return this.events.pipe(filter(item => item.type === LoginBaseServiceEvent.LOGOUT_FINISHED), map(() => null));
160
+ }
161
+ get sid() {
162
+ return this._sid;
163
+ }
164
+ get resource() {
165
+ return this._resource;
166
+ }
167
+ get loginData() {
168
+ return this._loginData;
169
+ }
170
+ get isLoggedIn() {
171
+ return this._isLoggedIn;
172
+ }
173
+ }
174
+ export var LoginBaseServiceEvent;
175
+ (function (LoginBaseServiceEvent) {
176
+ LoginBaseServiceEvent["LOGIN_ERROR"] = "LOGIN_ERROR";
177
+ LoginBaseServiceEvent["LOGIN_STARTED"] = "LOGIN_STARTED";
178
+ LoginBaseServiceEvent["LOGIN_COMPLETE"] = "LOGIN_COMPLETE";
179
+ LoginBaseServiceEvent["LOGIN_FINISHED"] = "LOGIN_FINISHED";
180
+ LoginBaseServiceEvent["LOGOUT_STARTED"] = "LOGOUT_STARTED";
181
+ LoginBaseServiceEvent["LOGOUT_FINISHED"] = "LOGOUT_FINISHED";
182
+ LoginBaseServiceEvent["REGISTRATION_ERROR"] = "REGISTRATION_ERROR";
183
+ LoginBaseServiceEvent["REGISTRATION_STARTED"] = "REGISTRATION_STARTED";
184
+ LoginBaseServiceEvent["REGISTRATION_COMPLETE"] = "REGISTRATION_COMPLETE";
185
+ LoginBaseServiceEvent["REGISTRATION_FINISHED"] = "REGISTRATION_FINISHED";
186
+ })(LoginBaseServiceEvent || (LoginBaseServiceEvent = {}));
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9naW5CYXNlU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2dpbi9Mb2dpbkJhc2VTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQWdCLGdCQUE0QyxTQUFRLFFBQTBEO0lBYWhJLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsZUFBZTtJQUNmLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0U7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQVRGLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBVXZDLENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLHFCQUFxQjtJQUNyQixFQUFFO0lBQ0YsNkVBQTZFO0lBRW5FLEtBQUssQ0FBQyxZQUFZLENBQVUsS0FBUztRQUMzQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFUyxLQUFLLENBQUMsZUFBZSxDQUFDLGlCQUE0QztRQUN4RSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQyxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxRQUFXLENBQUM7UUFD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LElBQUksS0FBSyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsRUFDbEUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQVMsQ0FBQyxDQUM5QixDQUFDO0lBQ04sQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsZUFBZSxDQUFDLEVBQ25FLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDbEIsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0NBQ0o7QUFFRCxNQUFNLENBQU4sSUFBWSxxQkFZWDtBQVpELFdBQVkscUJBQXFCO0lBQzdCLG9EQUEyQixDQUFBO0lBQzNCLHdEQUErQixDQUFBO0lBQy9CLDBEQUFpQyxDQUFBO0lBQ2pDLDBEQUFpQyxDQUFBO0lBQ2pDLDBEQUFpQyxDQUFBO0lBQ2pDLDREQUFtQyxDQUFBO0lBRW5DLGtFQUF5QyxDQUFBO0lBQ3pDLHNFQUE2QyxDQUFBO0lBQzdDLHdFQUErQyxDQUFBO0lBQy9DLHdFQUErQyxDQUFBO0FBQ25ELENBQUMsRUFaVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBWWhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9hZGFibGVFdmVudCwgTG9hZGFibGUsIExvYWRhYmxlU3RhdHVzIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCB7IEV4dGVuZGVkRXJyb3IgfSBmcm9tICdAdHMtY29yZS9jb21tb24vZXJyb3InO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZURhdGEgfSBmcm9tICdAdHMtY29yZS9jb21tb24vb2JzZXJ2ZXInO1xuaW1wb3J0IHsgVHJhbnNwb3J0Tm9Db25uZWN0aW9uRXJyb3IsIFRyYW5zcG9ydFRpbWVvdXRFcnJvciB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbi90cmFuc3BvcnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2dpbkJhc2VTZXJ2aWNlPEUgPSBhbnksIFUgPSBhbnksIFYgPSBhbnk+IGV4dGVuZHMgTG9hZGFibGU8RSB8IExvZ2luQmFzZVNlcnZpY2VFdmVudCwgVSB8IFYgfCBFeHRlbmRlZEVycm9yPiB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBfc2lkOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9yZXNvdXJjZTogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9sb2dpbkRhdGE6IFY7XG4gICAgcHJvdGVjdGVkIF9pc0xvZ2dlZEluOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFByb3RlY3RlZCBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGxvZ2luQnlQYXJhbTxUID0gYW55PihwYXJhbT86IFQpOiBQcm9taXNlPFU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9naW5CeUZ1bmN0aW9uKCgpID0+IHRoaXMubG9naW5SZXF1ZXN0KHBhcmFtKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGxvZ2luQnlGdW5jdGlvbihzaWRSZXR1cm5GdW5jdGlvbjogKC4uLnBhcmFtcykgPT4gUHJvbWlzZTxVPik6IFByb21pc2U8VT4ge1xuICAgICAgICBpZiAodGhpcy5pc0xvZ2dlZEluIHx8IHRoaXMuaXNMb2FkaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXNwb25zZTogVTtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBMb2FkYWJsZVN0YXR1cy5MT0FESU5HO1xuICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKExvYWRhYmxlRXZlbnQuU1RBUlRFRCkpO1xuICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKExvZ2luQmFzZVNlcnZpY2VFdmVudC5MT0dJTl9TVEFSVEVEKSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgc2lkUmV0dXJuRnVuY3Rpb24oKTtcbiAgICAgICAgICAgIHRoaXMucGFyc2VMb2dpblJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0NhbkxvZ2luV2l0aFNpZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBMb2FkYWJsZVN0YXR1cy5MT0FERUQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9naW5CeVNpZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbGV0IGV4dGVuZGVkRXJyb3IgPSBFeHRlbmRlZEVycm9yLmNyZWF0ZShlcnJvciBhcyBhbnkpO1xuXG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9IExvYWRhYmxlU3RhdHVzLkVSUk9SO1xuICAgICAgICAgICAgdGhpcy5wYXJzZUxvZ2luRXJyb3JSZXNwb25zZShleHRlbmRlZEVycm9yKTtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoTG9naW5CYXNlU2VydmljZUV2ZW50LkxPR0lOX0VSUk9SLCBudWxsLCBleHRlbmRlZEVycm9yKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNMb2FkaW5nKSB7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKExvYWRhYmxlRXZlbnQuRklOSVNIRUQpKTtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoTG9naW5CYXNlU2VydmljZUV2ZW50LkxPR0lOX0ZJTklTSEVEKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBsb2dpbkJ5U2lkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoXy5pc05pbCh0aGlzLnNpZCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NpZCA9IHRoaXMuZ2V0U2F2ZWRTaWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmxvZ2luU2lkUmVxdWVzdCgpO1xuICAgICAgICAgICAgdGhpcy5wYXJzZUxvZ2luU2lkUmVzcG9uc2UocmVzcG9uc2UpO1xuXG4gICAgICAgICAgICB0aGlzLl9pc0xvZ2dlZEluID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gTG9hZGFibGVTdGF0dXMuTE9BREVEO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShMb2FkYWJsZUV2ZW50LkNPTVBMRVRFLCByZXNwb25zZSkpO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShMb2dpbkJhc2VTZXJ2aWNlRXZlbnQuTE9HSU5fQ09NUExFVEUsIHJlc3BvbnNlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBsZXQgZXh0ZW5kZWRFcnJvciA9IEV4dGVuZGVkRXJyb3IuY3JlYXRlKGVycm9yIGFzIGFueSk7XG4gICAgICAgICAgICB0aGlzLnBhcnNlTG9naW5TaWRFcnJvclJlc3BvbnNlKGV4dGVuZGVkRXJyb3IpO1xuXG4gICAgICAgICAgICB0aGlzLl9pc0xvZ2dlZEluID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9IExvYWRhYmxlU3RhdHVzLkVSUk9SO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShMb2FkYWJsZUV2ZW50LkVSUk9SLCBudWxsLCBleHRlbmRlZEVycm9yKSk7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKExvZ2luQmFzZVNlcnZpY2VFdmVudC5MT0dJTl9FUlJPUiwgbnVsbCwgZXh0ZW5kZWRFcnJvcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShMb2FkYWJsZUV2ZW50LkZJTklTSEVEKSk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoTG9naW5CYXNlU2VydmljZUV2ZW50LkxPR0lOX0ZJTklTSEVEKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zaWQgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2xvZ2luRGF0YSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGxvZ2luUmVxdWVzdCguLi5wYXJhbXMpOiBQcm9taXNlPFU+O1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBsb2dpblNpZFJlcXVlc3QoKTogUHJvbWlzZTxWPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBsb2dvdXRSZXF1ZXN0KCk6IFByb21pc2U8dm9pZD47XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFNhdmVkU2lkKCk6IHN0cmluZztcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFBhcnNlIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGFyc2VMb2dpblJlc3BvbnNlKHJlc3BvbnNlOiBVKTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBwYXJzZUxvZ2luRXJyb3JSZXNwb25zZShlcnJvcjogRXh0ZW5kZWRFcnJvcik6IHZvaWQge31cblxuICAgIHByb3RlY3RlZCBwYXJzZUxvZ291dEVycm9yUmVzcG9uc2UoZXJyb3I6IEV4dGVuZGVkRXJyb3IpOiB2b2lkIHt9XG5cbiAgICBwcm90ZWN0ZWQgcGFyc2VMb2dpblNpZFJlc3BvbnNlKHJlc3BvbnNlOiBWKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xvZ2luRGF0YSA9IHJlc3BvbnNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwYXJzZUxvZ2luU2lkRXJyb3JSZXNwb25zZShlcnJvcjogRXh0ZW5kZWRFcnJvcik6IHZvaWQge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBUcmFuc3BvcnRUaW1lb3V0RXJyb3IgfHwgZXJyb3IgaW5zdGFuY2VvZiBUcmFuc3BvcnROb0Nvbm5lY3Rpb25FcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBsb2dpbihwYXJhbTogYW55KTogdm9pZDtcblxuICAgIHB1YmxpYyBhc3luYyBsb2dpbkJ5UmVzcG9uc2UocGFyYW06IFUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNMb2dnZWRJbiB8fCB0aGlzLmlzTG9hZGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGF0dXMgPSBMb2FkYWJsZVN0YXR1cy5MT0FESU5HO1xuICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKExvYWRhYmxlRXZlbnQuU1RBUlRFRCkpO1xuICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKExvZ2luQmFzZVNlcnZpY2VFdmVudC5MT0dJTl9TVEFSVEVEKSk7XG5cbiAgICAgICAgdGhpcy5wYXJzZUxvZ2luUmVzcG9uc2UocGFyYW0pO1xuICAgICAgICB0aGlzLnN0YXR1cyA9ICF0aGlzLmlzQ2FuTG9naW5XaXRoU2lkKCkgPyBMb2FkYWJsZVN0YXR1cy5MT0FERUQgOiBMb2FkYWJsZVN0YXR1cy5MT0FESU5HO1xuICAgICAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9naW5CeVNpZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHRyeUxvZ2luQnlTaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pc0NhbkxvZ2luV2l0aFNpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNMb2dnZWRJbiAmJiAhdGhpcy5pc0xvYWRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gTG9hZGFibGVTdGF0dXMuTE9BRElORztcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoTG9hZGFibGVFdmVudC5TVEFSVEVEKSk7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKExvZ2luQmFzZVNlcnZpY2VFdmVudC5MT0dJTl9TVEFSVEVEKSk7XG4gICAgICAgICAgICB0aGlzLmxvZ2luQnlTaWQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbG9nb3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2dnZWRJbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShMb2FkYWJsZUV2ZW50LlNUQVJURUQpKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShMb2dpbkJhc2VTZXJ2aWNlRXZlbnQuTE9HT1VUX1NUQVJURUQpKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2dvdXRSZXF1ZXN0KCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBsZXQgZXh0ZW5kZWRFcnJvciA9IEV4dGVuZGVkRXJyb3IuY3JlYXRlKGVycm9yIGFzIGFueSk7XG4gICAgICAgICAgICB0aGlzLnBhcnNlTG9nb3V0RXJyb3JSZXNwb25zZShleHRlbmRlZEVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMuX2lzTG9nZ2VkSW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gTG9hZGFibGVTdGF0dXMuTk9UX0xPQURFRDtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoTG9hZGFibGVFdmVudC5GSU5JU0hFRCkpO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShMb2dpbkJhc2VTZXJ2aWNlRXZlbnQuTE9HT1VUX0ZJTklTSEVEKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNDYW5Mb2dpbldpdGhTaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpZCAhPSBudWxsIHx8IHRoaXMuZ2V0U2F2ZWRTaWQoKSAhPSBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcblxuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0IGxvZ2luZWQoKTogT2JzZXJ2YWJsZTxWPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2ZW50cy5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlID09PSBMb2dpbkJhc2VTZXJ2aWNlRXZlbnQuTE9HSU5fQ09NUExFVEUpLFxuICAgICAgICAgICAgbWFwKGl0ZW0gPT4gaXRlbS5kYXRhIGFzIFYpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2dvdXRlZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgPT09IExvZ2luQmFzZVNlcnZpY2VFdmVudC5MT0dPVVRfRklOSVNIRUQpLFxuICAgICAgICAgICAgbWFwKCgpID0+IG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzaWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlc291cmNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvZ2luRGF0YSgpOiBWIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvZ2luRGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvZ2dlZEluO1xuICAgIH1cbn1cblxuZXhwb3J0IGVudW0gTG9naW5CYXNlU2VydmljZUV2ZW50IHtcbiAgICBMT0dJTl9FUlJPUiA9ICdMT0dJTl9FUlJPUicsXG4gICAgTE9HSU5fU1RBUlRFRCA9ICdMT0dJTl9TVEFSVEVEJyxcbiAgICBMT0dJTl9DT01QTEVURSA9ICdMT0dJTl9DT01QTEVURScsXG4gICAgTE9HSU5fRklOSVNIRUQgPSAnTE9HSU5fRklOSVNIRUQnLFxuICAgIExPR09VVF9TVEFSVEVEID0gJ0xPR09VVF9TVEFSVEVEJyxcbiAgICBMT0dPVVRfRklOSVNIRUQgPSAnTE9HT1VUX0ZJTklTSEVEJyxcblxuICAgIFJFR0lTVFJBVElPTl9FUlJPUiA9ICdSRUdJU1RSQVRJT05fRVJST1InLFxuICAgIFJFR0lTVFJBVElPTl9TVEFSVEVEID0gJ1JFR0lTVFJBVElPTl9TVEFSVEVEJyxcbiAgICBSRUdJU1RSQVRJT05fQ09NUExFVEUgPSAnUkVHSVNUUkFUSU9OX0NPTVBMRVRFJyxcbiAgICBSRUdJU1RSQVRJT05fRklOSVNIRUQgPSAnUkVHSVNUUkFUSU9OX0ZJTklTSEVEJ1xufVxuIl19
@@ -0,0 +1,29 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { LoginRequireResolver } from './LoginRequireResolver';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./LoginBaseService";
5
+ export class LoginGuard extends LoginRequireResolver {
6
+ // --------------------------------------------------------------------------
7
+ //
8
+ // Constructor
9
+ //
10
+ // --------------------------------------------------------------------------
11
+ constructor(login) {
12
+ super(login);
13
+ }
14
+ // --------------------------------------------------------------------------
15
+ //
16
+ // Public Methods
17
+ //
18
+ // --------------------------------------------------------------------------
19
+ canActivate() {
20
+ return this.login.isLoggedIn;
21
+ }
22
+ }
23
+ LoginGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LoginGuard, deps: [{ token: i1.LoginBaseService }], target: i0.ɵɵFactoryTarget.Injectable });
24
+ LoginGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LoginGuard, providedIn: 'root' });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LoginGuard, decorators: [{
26
+ type: Injectable,
27
+ args: [{ providedIn: 'root' }]
28
+ }], ctorParameters: function () { return [{ type: i1.LoginBaseService }]; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9naW5HdWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2dpbi9Mb2dpbkd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUc5RCxNQUFNLE9BQU8sVUFBVyxTQUFRLG9CQUFvQjtJQUNoRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFLFlBQVksS0FBdUI7UUFDL0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixFQUFFO0lBQ0YsNkVBQTZFO0lBRXRFLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQ2pDLENBQUM7O3VHQW5CUSxVQUFVOzJHQUFWLFVBQVUsY0FERyxNQUFNOzJGQUNuQixVQUFVO2tCQUR0QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvZ2luQmFzZVNlcnZpY2UgfSBmcm9tICcuL0xvZ2luQmFzZVNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5SZXF1aXJlUmVzb2x2ZXIgfSBmcm9tICcuL0xvZ2luUmVxdWlyZVJlc29sdmVyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb2dpbkd1YXJkIGV4dGVuZHMgTG9naW5SZXF1aXJlUmVzb2x2ZXIgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0Q29uc3RydWN0b3JcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3Rvcihsb2dpbjogTG9naW5CYXNlU2VydmljZSkge1xuICAgICAgICBzdXBlcihsb2dpbik7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgY2FuQWN0aXZhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvZ2luLmlzTG9nZ2VkSW47XG4gICAgfVxufVxuIl19
@@ -0,0 +1,21 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { LoginResolver } from './LoginResolver';
3
+ import * as i0 from "@angular/core";
4
+ export class LoginRedirectResolver {
5
+ // --------------------------------------------------------------------------
6
+ //
7
+ // Public Methods
8
+ //
9
+ // --------------------------------------------------------------------------
10
+ canActivate(route, state) {
11
+ LoginResolver.redirectUrl = state.url;
12
+ return true;
13
+ }
14
+ }
15
+ LoginRedirectResolver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LoginRedirectResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16
+ LoginRedirectResolver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LoginRedirectResolver, providedIn: 'root' });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LoginRedirectResolver, decorators: [{
18
+ type: Injectable,
19
+ args: [{ providedIn: 'root' }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9naW5SZWRpcmVjdFJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xvZ2luL0xvZ2luUmVkaXJlY3RSZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFHaEQsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qiw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixFQUFFO0lBQ0YsNkVBQTZFO0lBRXRFLFdBQVcsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3hFLGFBQWEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOztrSEFWUSxxQkFBcUI7c0hBQXJCLHFCQUFxQixjQURSLE1BQU07MkZBQ25CLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2dpblJlc29sdmVyIH0gZnJvbSAnLi9Mb2dpblJlc29sdmVyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb2dpblJlZGlyZWN0UmVzb2x2ZXIgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgICAgIExvZ2luUmVzb2x2ZXIucmVkaXJlY3RVcmwgPSBzdGF0ZS51cmw7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,36 @@
1
+ import { LoginBaseServiceEvent } from './LoginBaseService';
2
+ import { PromiseHandler } from '@ts-core/common/promise';
3
+ export class LoginRequireResolver {
4
+ // --------------------------------------------------------------------------
5
+ //
6
+ // Constructor
7
+ //
8
+ // --------------------------------------------------------------------------
9
+ constructor(login) {
10
+ this.login = login;
11
+ }
12
+ // --------------------------------------------------------------------------
13
+ //
14
+ // Public Methods
15
+ //
16
+ // --------------------------------------------------------------------------
17
+ resolve() {
18
+ if (this.login.isLoggedIn) {
19
+ return Promise.resolve();
20
+ }
21
+ let promise = PromiseHandler.create();
22
+ let subscription = this.login.events.subscribe(data => {
23
+ if (data.type === LoginBaseServiceEvent.LOGIN_ERROR) {
24
+ promise.reject(data.error.toString());
25
+ }
26
+ else if (data.type === LoginBaseServiceEvent.LOGIN_COMPLETE) {
27
+ promise.resolve();
28
+ }
29
+ else if (data.type === LoginBaseServiceEvent.LOGIN_FINISHED) {
30
+ subscription.unsubscribe();
31
+ }
32
+ });
33
+ return promise.promise;
34
+ }
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9naW5SZXF1aXJlUmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbG9naW4vTG9naW5SZXF1aXJlUmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFvQixxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8sb0JBQW9CO0lBQzdCLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsZUFBZTtJQUNmLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsWUFBc0IsS0FBdUI7UUFBdkIsVUFBSyxHQUFMLEtBQUssQ0FBa0I7SUFBRyxDQUFDO0lBRWpELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRiw2RUFBNkU7SUFFdEUsT0FBTztRQUNWLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDdkIsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDNUI7UUFFRCxJQUFJLE9BQU8sR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFRLENBQUM7UUFDNUMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUU7Z0JBQ2pELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ3pDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUU7Z0JBQzNELE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNyQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsY0FBYyxFQUFFO2dCQUMzRCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDOUI7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUMzQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSZXNvbHZlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvZ2luQmFzZVNlcnZpY2UsIExvZ2luQmFzZVNlcnZpY2VFdmVudCB9IGZyb20gJy4vTG9naW5CYXNlU2VydmljZSc7XG5pbXBvcnQgeyBQcm9taXNlSGFuZGxlciB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbi9wcm9taXNlJztcblxuZXhwb3J0IGNsYXNzIExvZ2luUmVxdWlyZVJlc29sdmVyIGltcGxlbWVudHMgUmVzb2x2ZTx2b2lkPiB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0Q29uc3RydWN0b3JcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbG9naW46IExvZ2luQmFzZVNlcnZpY2UpIHt9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyByZXNvbHZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5sb2dpbi5pc0xvZ2dlZEluKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcHJvbWlzZSA9IFByb21pc2VIYW5kbGVyLmNyZWF0ZTx2b2lkPigpO1xuICAgICAgICBsZXQgc3Vic2NyaXB0aW9uID0gdGhpcy5sb2dpbi5ldmVudHMuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gTG9naW5CYXNlU2VydmljZUV2ZW50LkxPR0lOX0VSUk9SKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZGF0YS5lcnJvci50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS50eXBlID09PSBMb2dpbkJhc2VTZXJ2aWNlRXZlbnQuTE9HSU5fQ09NUExFVEUpIHtcbiAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS50eXBlID09PSBMb2dpbkJhc2VTZXJ2aWNlRXZlbnQuTE9HSU5fRklOSVNIRUQpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwcm9taXNlLnByb21pc2U7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,28 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { LoginRequireResolver } from './LoginRequireResolver';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./LoginBaseService";
5
+ export class LoginResolver extends LoginRequireResolver {
6
+ // --------------------------------------------------------------------------
7
+ //
8
+ // Constructor
9
+ //
10
+ // --------------------------------------------------------------------------
11
+ constructor(login) {
12
+ super(login);
13
+ }
14
+ }
15
+ // --------------------------------------------------------------------------
16
+ //
17
+ // Properties
18
+ //
19
+ // --------------------------------------------------------------------------
20
+ LoginResolver.logoutUrl = '/login';
21
+ LoginResolver.redirectUrl = '/';
22
+ LoginResolver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LoginResolver, deps: [{ token: i1.LoginBaseService }], target: i0.ɵɵFactoryTarget.Injectable });
23
+ LoginResolver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LoginResolver, providedIn: 'root' });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LoginResolver, decorators: [{
25
+ type: Injectable,
26
+ args: [{ providedIn: 'root' }]
27
+ }], ctorParameters: function () { return [{ type: i1.LoginBaseService }]; } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9naW5SZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2dpbi9Mb2dpblJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUc5RCxNQUFNLE9BQU8sYUFBYyxTQUFRLG9CQUFvQjtJQVVuRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFLFlBQVksS0FBdUI7UUFDL0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pCLENBQUM7O0FBakJELDZFQUE2RTtBQUM3RSxFQUFFO0FBQ0YsY0FBYztBQUNkLEVBQUU7QUFDRiw2RUFBNkU7QUFFL0QsdUJBQVMsR0FBVyxRQUFTLENBQUE7QUFDN0IseUJBQVcsR0FBVyxHQUFJLENBQUE7MEdBUi9CLGFBQWE7OEdBQWIsYUFBYSxjQURBLE1BQU07MkZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9naW5CYXNlU2VydmljZSB9IGZyb20gJy4vTG9naW5CYXNlU2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblJlcXVpcmVSZXNvbHZlciB9IGZyb20gJy4vTG9naW5SZXF1aXJlUmVzb2x2ZXInO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExvZ2luUmVzb2x2ZXIgZXh0ZW5kcyBMb2dpblJlcXVpcmVSZXNvbHZlciB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgbG9nb3V0VXJsOiBzdHJpbmcgPSAnL2xvZ2luJztcbiAgICBwdWJsaWMgc3RhdGljIHJlZGlyZWN0VXJsOiBzdHJpbmcgPSAnLyc7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKGxvZ2luOiBMb2dpbkJhc2VTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGxvZ2luKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,89 @@
1
+ import { Injectable, NgModuleFactory } from '@angular/core';
2
+ import { Loadable, LoadableEvent } from '@ts-core/common';
3
+ import { ExtendedError } from '@ts-core/common/error';
4
+ import { MapCollection } from '@ts-core/common/map';
5
+ import { ObservableData } from '@ts-core/common/observer';
6
+ import * as _ from 'lodash';
7
+ import * as i0 from "@angular/core";
8
+ export class LazyModuleLoader extends Loadable {
9
+ //--------------------------------------------------------------------------
10
+ //
11
+ // Constructor
12
+ //
13
+ //--------------------------------------------------------------------------
14
+ constructor(compiler, injector) {
15
+ super();
16
+ this.compiler = compiler;
17
+ this.injector = injector;
18
+ this._modules = new MapCollection('id');
19
+ }
20
+ //--------------------------------------------------------------------------
21
+ //
22
+ // Protected Methods
23
+ //
24
+ //--------------------------------------------------------------------------
25
+ async load(item) {
26
+ item.reference = await this.loadReference(item.path);
27
+ }
28
+ async loadReference(path) {
29
+ let moduleFactory = null;
30
+ let elementModuleOrFactory = await path();
31
+ if (elementModuleOrFactory instanceof NgModuleFactory) {
32
+ moduleFactory = elementModuleOrFactory;
33
+ }
34
+ else {
35
+ moduleFactory = await this.compiler.compileModuleAsync(elementModuleOrFactory);
36
+ }
37
+ return moduleFactory.create(this.injector);
38
+ }
39
+ isNeedLoad(item) {
40
+ return _.isNil(item.reference);
41
+ }
42
+ //--------------------------------------------------------------------------
43
+ //
44
+ // Public Methods
45
+ //
46
+ //--------------------------------------------------------------------------
47
+ async loadIfNeed(id) {
48
+ let item = this.modules.get(id);
49
+ if (_.isNil(item)) {
50
+ throw new ExtendedError(`Unable to find "${id}" module: it must be registered first`);
51
+ }
52
+ if (!this.isNeedLoad(item)) {
53
+ return item;
54
+ }
55
+ try {
56
+ this.observer.next(new ObservableData(LoadableEvent.STARTED));
57
+ await this.load(item);
58
+ }
59
+ finally {
60
+ this.observer.next(new ObservableData(LoadableEvent.FINISHED));
61
+ }
62
+ return item;
63
+ }
64
+ destroy() {
65
+ if (this.isDestroyed) {
66
+ return;
67
+ }
68
+ super.destroy();
69
+ if (!_.isNil(this._modules)) {
70
+ this._modules.destroy();
71
+ this._modules = null;
72
+ }
73
+ }
74
+ //--------------------------------------------------------------------------
75
+ //
76
+ // Public Properties
77
+ //
78
+ //--------------------------------------------------------------------------
79
+ get modules() {
80
+ return this._modules;
81
+ }
82
+ }
83
+ LazyModuleLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LazyModuleLoader, deps: [{ token: i0.Compiler }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
84
+ LazyModuleLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LazyModuleLoader, providedIn: 'root' });
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LazyModuleLoader, decorators: [{
86
+ type: Injectable,
87
+ args: [{ providedIn: 'root' }]
88
+ }], ctorParameters: function () { return [{ type: i0.Compiler }, { type: i0.Injector }]; } });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF6eU1vZHVsZUxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGUvTGF6eU1vZHVsZUxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksVUFBVSxFQUFZLGVBQWUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7QUFHNUIsTUFBTSxPQUFPLGdCQUE4RCxTQUFRLFFBQVE7SUFTdkYsNEVBQTRFO0lBQzVFLEVBQUU7SUFDRixlQUFlO0lBQ2YsRUFBRTtJQUNGLDRFQUE0RTtJQUU1RSxZQUFzQixRQUFrQixFQUFZLFFBQWtCO1FBQ2xFLEtBQUssRUFBRSxDQUFDO1FBRFUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFZLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLEVBQUU7SUFDRixxQkFBcUI7SUFDckIsRUFBRTtJQUNGLDRFQUE0RTtJQUVsRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQU87UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFUyxLQUFLLENBQUMsYUFBYSxDQUFJLElBQXVCO1FBQ3BELElBQUksYUFBYSxHQUF1QixJQUFJLENBQUM7UUFDN0MsSUFBSSxzQkFBc0IsR0FBaUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUN4RSxJQUFJLHNCQUFzQixZQUFZLGVBQWUsRUFBRTtZQUNuRCxhQUFhLEdBQUcsc0JBQXNCLENBQUM7U0FDMUM7YUFBTTtZQUNILGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUNsRjtRQUNELE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVTLFVBQVUsQ0FBQyxJQUFPO1FBQ3hCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELDRFQUE0RTtJQUM1RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRiw0RUFBNEU7SUFFckUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFVO1FBQzlCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNmLE1BQU0sSUFBSSxhQUFhLENBQUMsbUJBQW1CLEVBQUUsdUNBQXVDLENBQUMsQ0FBQztTQUN6RjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxJQUFJO1lBQ0EsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDOUQsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pCO2dCQUFTO1lBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDbEU7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sT0FBTztRQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPO1NBQ1Y7UUFDRCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLEVBQUU7SUFDRixxQkFBcUI7SUFDckIsRUFBRTtJQUNGLDRFQUE0RTtJQUU1RSxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQzs7NkdBeEZRLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVyLCBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdNb2R1bGVGYWN0b3J5LCBOZ01vZHVsZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9hZGFibGUsIExvYWRhYmxlRXZlbnQgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgRXh0ZW5kZWRFcnJvciB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbi9lcnJvcic7XG5pbXBvcnQgeyBNYXBDb2xsZWN0aW9uIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uL21hcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlRGF0YSB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbi9vYnNlcnZlcic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTGF6eU1vZHVsZUxvYWRlcjxUIGV4dGVuZHMgSUxhenlNb2R1bGVEYXRhID0gSUxhenlNb2R1bGVEYXRhPiBleHRlbmRzIExvYWRhYmxlIHtcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyAgUHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIF9tb2R1bGVzOiBNYXBDb2xsZWN0aW9uPFQ+O1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gIENvbnN0cnVjdG9yXG4gICAgLy9cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY29tcGlsZXI6IENvbXBpbGVyLCBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX21vZHVsZXMgPSBuZXcgTWFwQ29sbGVjdGlvbignaWQnKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFByb3RlY3RlZCBNZXRob2RzXG4gICAgLy9cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgbG9hZChpdGVtOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGl0ZW0ucmVmZXJlbmNlID0gYXdhaXQgdGhpcy5sb2FkUmVmZXJlbmNlKGl0ZW0ucGF0aCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGxvYWRSZWZlcmVuY2U8VD4ocGF0aDogTGF6eU1vZHVsZVBhdGg8VD4pOiBQcm9taXNlPE5nTW9kdWxlUmVmPFQ+PiB7XG4gICAgICAgIGxldCBtb2R1bGVGYWN0b3J5OiBOZ01vZHVsZUZhY3Rvcnk8VD4gPSBudWxsO1xuICAgICAgICBsZXQgZWxlbWVudE1vZHVsZU9yRmFjdG9yeTogTmdNb2R1bGVGYWN0b3J5PFQ+IHwgVHlwZTxUPiA9IGF3YWl0IHBhdGgoKTtcbiAgICAgICAgaWYgKGVsZW1lbnRNb2R1bGVPckZhY3RvcnkgaW5zdGFuY2VvZiBOZ01vZHVsZUZhY3RvcnkpIHtcbiAgICAgICAgICAgIG1vZHVsZUZhY3RvcnkgPSBlbGVtZW50TW9kdWxlT3JGYWN0b3J5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbW9kdWxlRmFjdG9yeSA9IGF3YWl0IHRoaXMuY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKGVsZW1lbnRNb2R1bGVPckZhY3RvcnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2R1bGVGYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNOZWVkTG9hZChpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBfLmlzTmlsKGl0ZW0ucmVmZXJlbmNlKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFB1YmxpYyBNZXRob2RzXG4gICAgLy9cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgbG9hZElmTmVlZChpZDogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5tb2R1bGVzLmdldChpZCk7XG4gICAgICAgIGlmIChfLmlzTmlsKGl0ZW0pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXh0ZW5kZWRFcnJvcihgVW5hYmxlIHRvIGZpbmQgXCIke2lkfVwiIG1vZHVsZTogaXQgbXVzdCBiZSByZWdpc3RlcmVkIGZpcnN0YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzTmVlZExvYWQoaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKExvYWRhYmxlRXZlbnQuU1RBUlRFRCkpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkKGl0ZW0pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShMb2FkYWJsZUV2ZW50LkZJTklTSEVEKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuXG4gICAgICAgIGlmICghXy5pc05pbCh0aGlzLl9tb2R1bGVzKSkge1xuICAgICAgICAgICAgdGhpcy5fbW9kdWxlcy5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLl9tb2R1bGVzID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBnZXQgbW9kdWxlcygpOiBNYXBDb2xsZWN0aW9uPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZHVsZXM7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMYXp5TW9kdWxlRGF0YTxUID0gYW55PiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBwYXRoPzogTGF6eU1vZHVsZVBhdGg8VD47XG4gICAgcmVmZXJlbmNlPzogTmdNb2R1bGVSZWY8VD47XG59XG5cbmV4cG9ydCB0eXBlIExhenlNb2R1bGVQYXRoPFQ+ID0gKCkgPT4gUHJvbWlzZTxOZ01vZHVsZUZhY3Rvcnk8VD4gfCBUeXBlPFQ+PjtcbiJdfQ==
@@ -0,0 +1,131 @@
1
+ import { Injectable, Input } from '@angular/core';
2
+ import { DestroyableContainer } from '@ts-core/common';
3
+ import { WindowEvent } from '../window/IWindow';
4
+ import * as _ from 'lodash';
5
+ import * as i0 from "@angular/core";
6
+ export class INotificationContent extends DestroyableContainer {
7
+ // --------------------------------------------------------------------------
8
+ //
9
+ // Constructor
10
+ //
11
+ // --------------------------------------------------------------------------
12
+ constructor(container) {
13
+ super();
14
+ this.container = container;
15
+ this.timerHandler = () => this.handleCloseClick();
16
+ }
17
+ // --------------------------------------------------------------------------
18
+ //
19
+ // Private Methods
20
+ //
21
+ // --------------------------------------------------------------------------
22
+ commitNotificationProperties() {
23
+ this.config = this.notification.config;
24
+ }
25
+ commitConfigProperties() {
26
+ this.clearTimer();
27
+ if (this.config.closeDuration > 0) {
28
+ this.timer = setTimeout(this.timerHandler, this.config.closeDuration);
29
+ }
30
+ }
31
+ clearTimer() {
32
+ if (!_.isNil(this.timer)) {
33
+ clearTimeout(this.timer);
34
+ this.timer = null;
35
+ }
36
+ }
37
+ // --------------------------------------------------------------------------
38
+ //
39
+ // Public Methods
40
+ //
41
+ // --------------------------------------------------------------------------
42
+ close() {
43
+ if (!_.isNil(this.notification)) {
44
+ this.notification.close();
45
+ }
46
+ }
47
+ remove() {
48
+ if (!_.isNil(this.notification)) {
49
+ this.notification.remove();
50
+ }
51
+ }
52
+ emit(event) {
53
+ if (!_.isNil(this.notification)) {
54
+ this.notification.emit(event);
55
+ }
56
+ }
57
+ destroy() {
58
+ if (this.isDestroyed) {
59
+ return;
60
+ }
61
+ super.destroy();
62
+ this.clearTimer();
63
+ this.config = null;
64
+ this.notification = null;
65
+ }
66
+ // --------------------------------------------------------------------------
67
+ //
68
+ // Event Handlers
69
+ //
70
+ // --------------------------------------------------------------------------
71
+ ngAfterViewInit() {
72
+ this.emit(WindowEvent.CONTENT_READY);
73
+ }
74
+ handleCloseClick() {
75
+ this.clearTimer();
76
+ if (!_.isNil(this.config) && this.config.isRemoveAfterClose) {
77
+ this.remove();
78
+ }
79
+ else {
80
+ this.close();
81
+ }
82
+ }
83
+ // --------------------------------------------------------------------------
84
+ //
85
+ // Proxy Public Properties
86
+ //
87
+ // --------------------------------------------------------------------------
88
+ get data() {
89
+ return this.config ? this.config.data : null;
90
+ }
91
+ get events() {
92
+ return this.notification ? this.notification.events : null;
93
+ }
94
+ // --------------------------------------------------------------------------
95
+ //
96
+ // Public Properties
97
+ //
98
+ // --------------------------------------------------------------------------
99
+ get notification() {
100
+ return this._notification;
101
+ }
102
+ set notification(value) {
103
+ if (value === this._notification) {
104
+ return;
105
+ }
106
+ this._notification = value;
107
+ if (this._notification) {
108
+ this.commitNotificationProperties();
109
+ }
110
+ }
111
+ set config(value) {
112
+ if (value === this._config) {
113
+ return;
114
+ }
115
+ this._config = value;
116
+ if (this._config) {
117
+ this.commitConfigProperties();
118
+ }
119
+ }
120
+ get config() {
121
+ return this._config;
122
+ }
123
+ }
124
+ INotificationContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: INotificationContent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Injectable });
125
+ INotificationContent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: INotificationContent });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: INotificationContent, decorators: [{
127
+ type: Injectable
128
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { config: [{
129
+ type: Input
130
+ }] } });
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSU5vdGlmaWNhdGlvbkNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbm90aWZpY2F0aW9uL0lOb3RpZmljYXRpb25Db250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsVUFBVSxFQUFFLEtBQUssRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2hELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQUc1QixNQUFNLE9BQWdCLG9CQUE4QixTQUFRLG9CQUFvQjtJQVc1RSw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFLFlBQW1CLFNBQTJCO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBRE8sY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUE0QnBDLGlCQUFZLEdBQUcsR0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUExQjdELENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLG1CQUFtQjtJQUNuQixFQUFFO0lBQ0YsNkVBQTZFO0lBRW5FLDRCQUE0QjtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQzNDLENBQUM7SUFFUyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN6RTtJQUNMLENBQUM7SUFFUyxV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QUE0QjtRQUMxQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3hCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUNELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOztpSEFqSmlCLG9CQUFvQjtxSEFBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRHpDLFVBQVU7dUdBdUlJLE1BQU07c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBJbmplY3RhYmxlLCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzdHJveWFibGVDb250YWluZXIgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgV2luZG93RXZlbnQgfSBmcm9tICcuLi93aW5kb3cvSVdpbmRvdyc7XG5pbXBvcnQgeyBJTm90aWZpY2F0aW9uIH0gZnJvbSAnLi9JTm90aWZpY2F0aW9uJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkNvbmZpZyB9IGZyb20gJy4vTm90aWZpY2F0aW9uQ29uZmlnJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElOb3RpZmljYXRpb25Db250ZW50PFQgPSBhbnk+IGV4dGVuZHMgRGVzdHJveWFibGVDb250YWluZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgdGltZXI6IGFueTtcbiAgICBwcm90ZWN0ZWQgX2NvbmZpZzogTm90aWZpY2F0aW9uQ29uZmlnPFQ+O1xuICAgIHByb3RlY3RlZCBfbm90aWZpY2F0aW9uOiBJTm90aWZpY2F0aW9uPFQ+O1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vICBDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gIFByaXZhdGUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBjb21taXROb3RpZmljYXRpb25Qcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMubm90aWZpY2F0aW9uLmNvbmZpZztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29tbWl0Q29uZmlnUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jbG9zZUR1cmF0aW9uID4gMCkge1xuICAgICAgICAgICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQodGhpcy50aW1lckhhbmRsZXIsIHRoaXMuY29uZmlnLmNsb3NlRHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNsZWFyVGltZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbCh0aGlzLnRpbWVyKSkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICAgICAgdGhpcy50aW1lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdGltZXJIYW5kbGVyID0gKCk6IHZvaWQgPT4gdGhpcy5oYW5kbGVDbG9zZUNsaWNrKCk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gIFB1YmxpYyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwodGhpcy5ub3RpZmljYXRpb24pKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHRoaXMubm90aWZpY2F0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24ucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZW1pdChldmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbCh0aGlzLm5vdGlmaWNhdGlvbikpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICAgICAgdGhpcy5jb25maWcgPSBudWxsO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vICBFdmVudCBIYW5kbGVyc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW1pdChXaW5kb3dFdmVudC5DT05URU5UX1JFQURZKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlQ2xvc2VDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIGlmICghXy5pc05pbCh0aGlzLmNvbmZpZykgJiYgdGhpcy5jb25maWcuaXNSZW1vdmVBZnRlckNsb3NlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vICBQcm94eSBQdWJsaWMgUHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBnZXQgZGF0YSgpOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnID8gdGhpcy5jb25maWcuZGF0YSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBldmVudHMoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uID8gdGhpcy5ub3RpZmljYXRpb24uZXZlbnRzIDogbnVsbDtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gIFB1YmxpYyBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGdldCBub3RpZmljYXRpb24oKTogSU5vdGlmaWNhdGlvbjxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb247XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgbm90aWZpY2F0aW9uKHZhbHVlOiBJTm90aWZpY2F0aW9uPFQ+KSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fbm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLl9ub3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuY29tbWl0Tm90aWZpY2F0aW9uUHJvcGVydGllcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGNvbmZpZyh2YWx1ZTogTm90aWZpY2F0aW9uQ29uZmlnPFQ+KSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fY29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29uZmlnID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLl9jb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMuY29tbWl0Q29uZmlnUHJvcGVydGllcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgY29uZmlnKCk6IE5vdGlmaWNhdGlvbkNvbmZpZzxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gICAgfVxufVxuIl19