@ts-core/angular 11.0.89 → 13.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) 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 +88 -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 +189 -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/{esm2015/login/LoginRequireResolver.js → esm2020/login/LoginRequireResolver.mjs} +0 -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 +132 -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 +50 -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/{esm2015/transport/TransportLazyModule.js → esm2020/transport/TransportLazyModule.mjs} +0 -0
  169. package/{esm2015/transport/TransportLazyModuleLoadedEvent.js → esm2020/transport/TransportLazyModuleLoadedEvent.mjs} +0 -0
  170. package/esm2020/ts-core-angular.mjs +5 -0
  171. package/{esm2015/user/IUser.js → esm2020/user/IUser.mjs} +0 -0
  172. package/{esm2015/user/UserBaseService.js → esm2020/user/UserBaseService.mjs} +0 -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 +128 -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 +86 -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} +3509 -3319
  194. package/fesm2015/ts-core-angular.mjs.map +1 -0
  195. package/fesm2020/ts-core-angular.mjs +9519 -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 +3 -0
  208. package/login/LoginRedirectResolver.d.ts +3 -0
  209. package/login/LoginResolver.d.ts +3 -0
  210. package/module/LazyModuleLoader.d.ts +3 -0
  211. package/notification/INotificationContent.d.ts +3 -0
  212. package/notification/NotificationModule.d.ts +14 -0
  213. package/notification/NotificationService.d.ts +3 -0
  214. package/notification/component/NotificationQuestionBaseComponent.d.ts +3 -0
  215. package/notification/component/notification/notification.component.d.ts +3 -0
  216. package/package.json +44 -30
  217. package/pipe/CamelCasePipe.d.ts +3 -0
  218. package/pipe/FinancePipe.d.ts +3 -0
  219. package/pipe/MomentDateAdaptivePipe.d.ts +3 -0
  220. package/pipe/MomentDateFromNowPipe.d.ts +3 -0
  221. package/pipe/MomentDatePipe.d.ts +3 -0
  222. package/pipe/MomentTimePipe.d.ts +3 -0
  223. package/pipe/NgModelErrorPipe.d.ts +3 -0
  224. package/pipe/PrettifyPipe.d.ts +3 -0
  225. package/pipe/SanitizePipe.d.ts +3 -0
  226. package/pipe/StartCasePipe.d.ts +3 -0
  227. package/pipe/TimePipe.d.ts +3 -0
  228. package/pipe/TruncatePipe.d.ts +3 -0
  229. package/public-api.d.ts +25 -9
  230. package/service/BootstrapBreakpointService.d.ts +3 -0
  231. package/style/mat/vi-mat.scss +48 -1
  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/ts-core-angular.d.ts +1 -24
  240. package/window/IWindowContent.d.ts +5 -1
  241. package/window/WindowModule.d.ts +20 -0
  242. package/window/WindowService.d.ts +3 -0
  243. package/window/component/WindowDragAreaDirective.d.ts +3 -0
  244. package/window/component/WindowDragable.d.ts +1 -1
  245. package/window/component/WindowElement.d.ts +3 -0
  246. package/window/component/WindowResizeable.d.ts +1 -1
  247. package/window/component/window-close-element/window-close-element.component.d.ts +3 -0
  248. package/window/component/window-minimize-element/window-minimize-element.component.d.ts +3 -0
  249. package/window/component/window-question/window-question.component.d.ts +3 -0
  250. package/window/component/window-resize-element/window-resize-element.component.d.ts +3 -0
  251. package/application/ApplicationComponent2.d.ts +0 -19
  252. package/bundles/ts-core-angular.umd.js +0 -11299
  253. package/bundles/ts-core-angular.umd.js.map +0 -1
  254. package/bundles/ts-core-angular.umd.min.js +0 -2
  255. package/bundles/ts-core-angular.umd.min.js.map +0 -1
  256. package/esm2015/VICommonModule.js +0 -98
  257. package/esm2015/application/ApplicationBaseComponent.js +0 -80
  258. package/esm2015/application/ApplicationComponent.js +0 -57
  259. package/esm2015/application/ApplicationComponent2.js +0 -53
  260. package/esm2015/asset/AssetBackgroundDirective.js +0 -144
  261. package/esm2015/asset/AssetBackgroundPipe.js +0 -18
  262. package/esm2015/asset/AssetFilePipe.js +0 -18
  263. package/esm2015/asset/AssetIconPipe.js +0 -18
  264. package/esm2015/asset/AssetImagePipe.js +0 -18
  265. package/esm2015/asset/AssetModule.js +0 -19
  266. package/esm2015/asset/AssetSoundPipe.js +0 -18
  267. package/esm2015/asset/AssetVideoPipe.js +0 -18
  268. package/esm2015/bottomSheet/BottomSheetImpl.js +0 -231
  269. package/esm2015/bottomSheet/BottomSheetModule.js +0 -40
  270. package/esm2015/bottomSheet/BottomSheetService.js +0 -103
  271. package/esm2015/bottomSheet/component/bottom-sheet-close-element/bottom-sheet-close-element.component.js +0 -63
  272. package/esm2015/component/VIComponentModule.js +0 -67
  273. package/esm2015/component/cdk-table/CdkTableBaseComponent.js +0 -176
  274. package/esm2015/component/cdk-table/CdkTableFilterableMapCollection.js +0 -94
  275. package/esm2015/component/cdk-table/CdkTablePaginableBookmarkMapCollection.js +0 -49
  276. package/esm2015/component/cdk-table/CdkTablePaginableMapCollection.js +0 -57
  277. package/esm2015/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.js +0 -24
  278. package/esm2015/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.js +0 -52
  279. package/esm2015/component/cdk-table/column/CdkTableCellClassNamePipe.js +0 -17
  280. package/esm2015/component/cdk-table/column/CdkTableColumnClassNamePipe.js +0 -18
  281. package/esm2015/component/cdk-table/column/CdkTableColumnStyleNamePipe.js +0 -18
  282. package/esm2015/component/cdk-table/column/CdkTableColumnValuePipe.js +0 -18
  283. package/esm2015/component/cdk-table/column/ICdkTableColumn.js +0 -2
  284. package/esm2015/component/cdk-table/row/CdkTableRowClassNamePipe.js +0 -18
  285. package/esm2015/component/cdk-table/row/CdkTableRowStyleNamePipe.js +0 -18
  286. package/esm2015/component/language/language-selector/language-selector.component.js +0 -75
  287. package/esm2015/component/menu-list/menu-list.component.js +0 -14
  288. package/esm2015/component/select-list/select-list.component.js +0 -14
  289. package/esm2015/component/tab-group/tab-group.component.js +0 -68
  290. package/esm2015/cookie/CookieModule.js +0 -33
  291. package/esm2015/directive/AspectRatioResizeDirective.js +0 -125
  292. package/esm2015/directive/AutoScrollBottomDirective.js +0 -107
  293. package/esm2015/directive/ClickToCopyDirective.js +0 -48
  294. package/esm2015/directive/ClickToSelectDirective.js +0 -48
  295. package/esm2015/directive/FocusDirective.js +0 -53
  296. package/esm2015/directive/HTMLContentTitleDirective.js +0 -70
  297. package/esm2015/directive/InfiniteScrollDirective.js +0 -69
  298. package/esm2015/directive/ResizeDirective.js +0 -75
  299. package/esm2015/directive/ScrollDirective.js +0 -124
  300. package/esm2015/directive/SelectOnFocusDirective.js +0 -46
  301. package/esm2015/form/FormElementSync.js +0 -62
  302. package/esm2015/form/validate.js +0 -61
  303. package/esm2015/language/LanguageDirective.js +0 -90
  304. package/esm2015/language/LanguageHasDirective.js +0 -93
  305. package/esm2015/language/LanguageMatPaginatorIntl.js +0 -54
  306. package/esm2015/language/LanguageModule.js +0 -62
  307. package/esm2015/language/LanguagePipe.js +0 -57
  308. package/esm2015/language/LanguagePipeHas.js +0 -55
  309. package/esm2015/language/LanguagePipeHasPure.js +0 -39
  310. package/esm2015/language/LanguagePipePure.js +0 -38
  311. package/esm2015/language/LanguageResolver.js +0 -23
  312. package/esm2015/login/LoginBaseService.js +0 -197
  313. package/esm2015/login/LoginGuard.js +0 -31
  314. package/esm2015/login/LoginRedirectResolver.js +0 -19
  315. package/esm2015/login/LoginResolver.js +0 -30
  316. package/esm2015/module/LazyModuleLoader.js +0 -98
  317. package/esm2015/notification/INotificationContent.js +0 -126
  318. package/esm2015/notification/NotificationImpl.js +0 -140
  319. package/esm2015/notification/NotificationModule.js +0 -40
  320. package/esm2015/notification/NotificationService.js +0 -248
  321. package/esm2015/notification/component/NotificationQuestionBaseComponent.js +0 -43
  322. package/esm2015/notification/component/notification/notification.component.js +0 -64
  323. package/esm2015/pipe/CamelCasePipe.js +0 -28
  324. package/esm2015/pipe/FinancePipe.js +0 -49
  325. package/esm2015/pipe/MomentDateAdaptivePipe.js +0 -47
  326. package/esm2015/pipe/MomentDateFromNowPipe.js +0 -18
  327. package/esm2015/pipe/MomentDatePipe.js +0 -67
  328. package/esm2015/pipe/MomentTimePipe.js +0 -31
  329. package/esm2015/pipe/NgModelErrorPipe.js +0 -41
  330. package/esm2015/pipe/PrettifyPipe.js +0 -35
  331. package/esm2015/pipe/SanitizePipe.js +0 -46
  332. package/esm2015/pipe/StartCasePipe.js +0 -20
  333. package/esm2015/pipe/TimePipe.js +0 -33
  334. package/esm2015/pipe/TruncatePipe.js +0 -21
  335. package/esm2015/public-api.js +0 -161
  336. package/esm2015/service/BootstrapBreakpointService.js +0 -118
  337. package/esm2015/service/RouterBaseService.js +0 -223
  338. package/esm2015/theme/ThemeAssetBackgroundDirective.js +0 -37
  339. package/esm2015/theme/ThemeAssetDirective.js +0 -204
  340. package/esm2015/theme/ThemeAssetImageDirective.js +0 -35
  341. package/esm2015/theme/ThemeModule.js +0 -57
  342. package/esm2015/theme/ThemeStyleDirective.js +0 -113
  343. package/esm2015/theme/ThemeStyleHoverDirective.js +0 -105
  344. package/esm2015/theme/ThemeToggleDirective.js +0 -61
  345. package/esm2015/transport/TransportLazy.js +0 -98
  346. package/esm2015/ts-core-angular.js +0 -28
  347. package/esm2015/window/IWindowContent.js +0 -115
  348. package/esm2015/window/WindowImpl.js +0 -320
  349. package/esm2015/window/WindowModule.js +0 -46
  350. package/esm2015/window/WindowService.js +0 -349
  351. package/esm2015/window/component/WindowDragAreaDirective.js +0 -96
  352. package/esm2015/window/component/WindowElement.js +0 -78
  353. package/esm2015/window/component/window-close-element/window-close-element.component.js +0 -63
  354. package/esm2015/window/component/window-minimize-element/window-minimize-element.component.js +0 -83
  355. package/esm2015/window/component/window-question/window-question.component.js +0 -50
  356. package/esm2015/window/component/window-resize-element/window-resize-element.component.js +0 -62
  357. package/fesm2015/ts-core-angular.js.map +0 -1
  358. package/ts-core-angular.metadata.json +0 -1
@@ -0,0 +1,219 @@
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import { Destroyable } from '@ts-core/common';
3
+ import * as _ from 'lodash';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import { ViewUtil } from '../util/ViewUtil';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@ts-core/frontend/theme";
8
+ export class ThemeAssetDirective extends Destroyable {
9
+ // --------------------------------------------------------------------------
10
+ //
11
+ // Constructor
12
+ //
13
+ // --------------------------------------------------------------------------
14
+ constructor(element, theme, themeAsset) {
15
+ super();
16
+ this.theme = theme;
17
+ this.themeAsset = themeAsset;
18
+ this._extension = 'png';
19
+ this._isFile = false;
20
+ this._isImage = false;
21
+ this._isVideo = false;
22
+ this._isSound = false;
23
+ this._isBackground = false;
24
+ this._isIgnoreTheme = true;
25
+ this.element = ViewUtil.parseElement(element.nativeElement);
26
+ this.theme.changed.pipe(takeUntil(this.destroyed)).subscribe(() => {
27
+ this.isTriedThemeDefault = false;
28
+ this.setSourceProperties();
29
+ });
30
+ }
31
+ // --------------------------------------------------------------------------
32
+ //
33
+ // Private Methods
34
+ //
35
+ // --------------------------------------------------------------------------
36
+ getSource(id) {
37
+ if (_.isNil(id)) {
38
+ return null;
39
+ }
40
+ if (this.isImage) {
41
+ return this.themeAsset.getImage(id, this.extension, this.isIgnoreTheme);
42
+ }
43
+ if (this.isBackground) {
44
+ return this.themeAsset.getBackground(id, this.extension, this.isIgnoreTheme);
45
+ }
46
+ if (this.isSound) {
47
+ return this.themeAsset.getSound(id, this.extension, this.isIgnoreTheme);
48
+ }
49
+ if (this.isVideo) {
50
+ return this.themeAsset.getVideo(id, this.extension, this.isIgnoreTheme);
51
+ }
52
+ if (this.isFile) {
53
+ return this.themeAsset.getFile(id, this.extension, this.isIgnoreTheme);
54
+ }
55
+ return this.themeAsset.getIcon(id, this.extension, this.isIgnoreTheme);
56
+ }
57
+ // --------------------------------------------------------------------------
58
+ //
59
+ // Event Handlers
60
+ //
61
+ // --------------------------------------------------------------------------
62
+ errorLoadingHandler(event) {
63
+ this.errorHandler(event);
64
+ }
65
+ errorHandler(event) {
66
+ if (this.isTriedThemeDefault) {
67
+ return;
68
+ }
69
+ this.isTriedThemeDefault = true;
70
+ this.source = this.getSource(this.getDefaultSourceId());
71
+ this.commitSourceProperties();
72
+ }
73
+ // --------------------------------------------------------------------------
74
+ //
75
+ // Protected Methods
76
+ //
77
+ // --------------------------------------------------------------------------
78
+ setSourceProperties() {
79
+ this.source = this.getSource(this.getSourceId(this.theme.theme));
80
+ this.commitSourceProperties();
81
+ }
82
+ getSourceId(theme) {
83
+ return !_.isNil(theme) ? this.name + _.capitalize(theme.name) : null;
84
+ }
85
+ getDefaultSourceId() {
86
+ return this.themeAsset.getName(this.name, this.isIgnoreTheme);
87
+ }
88
+ // --------------------------------------------------------------------------
89
+ //
90
+ // Public Methods
91
+ //
92
+ // --------------------------------------------------------------------------
93
+ destroy() {
94
+ if (this.isDestroyed) {
95
+ return;
96
+ }
97
+ super.destroy();
98
+ this.name = null;
99
+ this.theme = null;
100
+ this.element = null;
101
+ }
102
+ // --------------------------------------------------------------------------
103
+ //
104
+ // Public Properties
105
+ //
106
+ // --------------------------------------------------------------------------
107
+ set isSound(value) {
108
+ if (value === this._isSound) {
109
+ return;
110
+ }
111
+ this._isSound = value;
112
+ this.setSourceProperties();
113
+ }
114
+ get isSound() {
115
+ return this._isSound;
116
+ }
117
+ set isVideo(value) {
118
+ if (value === this._isVideo) {
119
+ return;
120
+ }
121
+ this._isVideo = value;
122
+ this.setSourceProperties();
123
+ }
124
+ get isVideo() {
125
+ return this._isVideo;
126
+ }
127
+ set isFile(value) {
128
+ if (value === this._isFile) {
129
+ return;
130
+ }
131
+ this._isFile = value;
132
+ this.setSourceProperties();
133
+ }
134
+ get isFile() {
135
+ return this._isFile;
136
+ }
137
+ set isImage(value) {
138
+ if (value === this._isImage) {
139
+ return;
140
+ }
141
+ this._isImage = value;
142
+ this.setSourceProperties();
143
+ }
144
+ get isImage() {
145
+ return this._isImage;
146
+ }
147
+ set isBackground(value) {
148
+ if (value === this._isBackground) {
149
+ return;
150
+ }
151
+ this._isBackground = value;
152
+ this.setSourceProperties();
153
+ }
154
+ get isBackground() {
155
+ return this._isBackground;
156
+ }
157
+ set isIgnoreTheme(value) {
158
+ if (value === this._isIgnoreTheme) {
159
+ return;
160
+ }
161
+ this._isIgnoreTheme = value;
162
+ this.setSourceProperties();
163
+ }
164
+ get isIgnoreTheme() {
165
+ return this._isIgnoreTheme;
166
+ }
167
+ get name() {
168
+ return this._name;
169
+ }
170
+ set name(value) {
171
+ if (value === this._name) {
172
+ return;
173
+ }
174
+ if (!_.isNil(this._name)) {
175
+ this.removeSourceProperties();
176
+ }
177
+ this._name = value;
178
+ if (!_.isNil(value)) {
179
+ this.setSourceProperties();
180
+ }
181
+ }
182
+ get extension() {
183
+ return this._extension;
184
+ }
185
+ set extension(value) {
186
+ if (value === this._extension) {
187
+ return;
188
+ }
189
+ this._extension = value;
190
+ if (!_.isNil(value)) {
191
+ this.setSourceProperties();
192
+ }
193
+ }
194
+ }
195
+ ThemeAssetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeAssetDirective, deps: [{ token: i0.ElementRef }, { token: i1.ThemeService }, { token: i1.ThemeAssetService }], target: i0.ɵɵFactoryTarget.Directive });
196
+ ThemeAssetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.3", type: ThemeAssetDirective, inputs: { isSound: "isSound", isVideo: "isVideo", isFile: "isFile", isImage: "isImage", isBackground: "isBackground", isIgnoreTheme: "isIgnoreTheme", name: "name", extension: "extension" }, host: { listeners: { "error": "errorLoadingHandler($event)" } }, usesInheritance: true, ngImport: i0 });
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeAssetDirective, decorators: [{
198
+ type: Directive
199
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThemeService }, { type: i1.ThemeAssetService }]; }, propDecorators: { errorLoadingHandler: [{
200
+ type: HostListener,
201
+ args: ['error', ['$event']]
202
+ }], isSound: [{
203
+ type: Input
204
+ }], isVideo: [{
205
+ type: Input
206
+ }], isFile: [{
207
+ type: Input
208
+ }], isImage: [{
209
+ type: Input
210
+ }], isBackground: [{
211
+ type: Input
212
+ }], isIgnoreTheme: [{
213
+ type: Input
214
+ }], name: [{
215
+ type: Input
216
+ }], extension: [{
217
+ type: Input
218
+ }] } });
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhlbWVBc3NldERpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90aGVtZS9UaGVtZUFzc2V0RGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFjLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBRzVDLE1BQU0sT0FBZ0IsbUJBQXlELFNBQVEsV0FBVztJQXNCOUYsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixjQUFjO0lBQ2QsRUFBRTtJQUNGLDZFQUE2RTtJQUU3RSxZQUFZLE9BQW1CLEVBQVksS0FBbUIsRUFBWSxVQUE2QjtRQUNuRyxLQUFLLEVBQUUsQ0FBQztRQUQrQixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVksZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFwQjdGLGVBQVUsR0FBVyxLQUFLLENBQUM7UUFFM0IsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixtQkFBYyxHQUFZLElBQUksQ0FBQztRQWVyQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBTSxDQUFDO1FBRWpFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRiw2RUFBNkU7SUFFbkUsU0FBUyxDQUFDLEVBQVU7UUFDMUIsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2hGO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0U7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMzRTtRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzFFO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsaUJBQWlCO0lBQ2pCLEVBQUU7SUFDRiw2RUFBNkU7SUFHckUsbUJBQW1CLENBQUMsS0FBaUI7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRVMsWUFBWSxDQUFDLEtBQWlCO1FBQ3BDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysb0JBQW9CO0lBQ3BCLEVBQUU7SUFDRiw2RUFBNkU7SUFFbkUsbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRVMsV0FBVyxDQUFDLEtBQVk7UUFDOUIsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6RSxDQUFDO0lBRVMsa0JBQWtCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQU1ELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsaUJBQWlCO0lBQ2pCLEVBQUU7SUFDRiw2RUFBNkU7SUFFdEUsT0FBTztRQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPO1NBQ1Y7UUFDRCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysb0JBQW9CO0lBQ3BCLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsSUFDVyxPQUFPLENBQUMsS0FBYztRQUM3QixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3pCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQ1csT0FBTyxDQUFDLEtBQWM7UUFDN0IsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUNXLE1BQU0sQ0FBQyxLQUFjO1FBQzVCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDeEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFDVyxPQUFPLENBQUMsS0FBYztRQUM3QixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3pCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQ1csWUFBWSxDQUFDLEtBQWM7UUFDbEMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUM5QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFDVyxhQUFhLENBQUMsS0FBYztRQUNuQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQy9CLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQ1csSUFBSSxDQUFDLEtBQWE7UUFDekIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN0QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUNXLFNBQVMsQ0FBQyxLQUFhO1FBQzlCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0IsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDOUI7SUFDTCxDQUFDOztnSEF6T2lCLG1CQUFtQjtvR0FBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRHhDLFNBQVM7NEpBMEVFLG1CQUFtQjtzQkFEMUIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBNkR0QixPQUFPO3NCQURqQixLQUFLO2dCQWFLLE9BQU87c0JBRGpCLEtBQUs7Z0JBYUssTUFBTTtzQkFEaEIsS0FBSztnQkFhSyxPQUFPO3NCQURqQixLQUFLO2dCQWFLLFlBQVk7c0JBRHRCLEtBQUs7Z0JBYUssYUFBYTtzQkFEdkIsS0FBSztnQkFnQkssSUFBSTtzQkFEZCxLQUFLO2dCQWtCSyxTQUFTO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdGFibGUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZXN0cm95YWJsZSB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgeyBUaGVtZSwgVGhlbWVBc3NldFNlcnZpY2UsIFRoZW1lU2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kL3RoZW1lJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFZpZXdVdGlsIH0gZnJvbSAnLi4vdXRpbC9WaWV3VXRpbCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRoZW1lQXNzZXREaXJlY3RpdmU8VCBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQ+IGV4dGVuZHMgRGVzdHJveWFibGUge1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBfbmFtZTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfZXh0ZW5zaW9uOiBzdHJpbmcgPSAncG5nJztcblxuICAgIHByb3RlY3RlZCBfaXNGaWxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9pc0ltYWdlOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9pc1ZpZGVvOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9pc1NvdW5kOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9pc0JhY2tncm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX2lzSWdub3JlVGhlbWU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgcHJvdGVjdGVkIHNvdXJjZTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBlbGVtZW50OiBUO1xuXG4gICAgcHJpdmF0ZSBpc1RyaWVkVGhlbWVEZWZhdWx0OiBib29sZWFuO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB0aGVtZTogVGhlbWVTZXJ2aWNlLCBwcm90ZWN0ZWQgdGhlbWVBc3NldDogVGhlbWVBc3NldFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGVsZW1lbnQubmF0aXZlRWxlbWVudCkgYXMgVDtcblxuICAgICAgICB0aGlzLnRoZW1lLmNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc1RyaWVkVGhlbWVEZWZhdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNldFNvdXJjZVByb3BlcnRpZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcml2YXRlIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgZ2V0U291cmNlKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoXy5pc05pbChpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzSW1hZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRoZW1lQXNzZXQuZ2V0SW1hZ2UoaWQsIHRoaXMuZXh0ZW5zaW9uLCB0aGlzLmlzSWdub3JlVGhlbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQmFja2dyb3VuZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGhlbWVBc3NldC5nZXRCYWNrZ3JvdW5kKGlkLCB0aGlzLmV4dGVuc2lvbiwgdGhpcy5pc0lnbm9yZVRoZW1lKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1NvdW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aGVtZUFzc2V0LmdldFNvdW5kKGlkLCB0aGlzLmV4dGVuc2lvbiwgdGhpcy5pc0lnbm9yZVRoZW1lKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1ZpZGVvKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aGVtZUFzc2V0LmdldFZpZGVvKGlkLCB0aGlzLmV4dGVuc2lvbiwgdGhpcy5pc0lnbm9yZVRoZW1lKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0ZpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRoZW1lQXNzZXQuZ2V0RmlsZShpZCwgdGhpcy5leHRlbnNpb24sIHRoaXMuaXNJZ25vcmVUaGVtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbWVBc3NldC5nZXRJY29uKGlkLCB0aGlzLmV4dGVuc2lvbiwgdGhpcy5pc0lnbm9yZVRoZW1lKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdEV2ZW50IEhhbmRsZXJzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZXJyb3InLCBbJyRldmVudCddKVxuICAgIHByaXZhdGUgZXJyb3JMb2FkaW5nSGFuZGxlcihldmVudDogRXJyb3JFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVycm9ySGFuZGxlcihldmVudCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGVycm9ySGFuZGxlcihldmVudDogRXJyb3JFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1RyaWVkVGhlbWVEZWZhdWx0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1RyaWVkVGhlbWVEZWZhdWx0ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zb3VyY2UgPSB0aGlzLmdldFNvdXJjZSh0aGlzLmdldERlZmF1bHRTb3VyY2VJZCgpKTtcbiAgICAgICAgdGhpcy5jb21taXRTb3VyY2VQcm9wZXJ0aWVzKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBzZXRTb3VyY2VQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNvdXJjZSA9IHRoaXMuZ2V0U291cmNlKHRoaXMuZ2V0U291cmNlSWQodGhpcy50aGVtZS50aGVtZSkpO1xuICAgICAgICB0aGlzLmNvbW1pdFNvdXJjZVByb3BlcnRpZXMoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0U291cmNlSWQodGhlbWU6IFRoZW1lKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKHRoZW1lKSA/IHRoaXMubmFtZSArIF8uY2FwaXRhbGl6ZSh0aGVtZS5uYW1lKSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldERlZmF1bHRTb3VyY2VJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVtZUFzc2V0LmdldE5hbWUodGhpcy5uYW1lLCB0aGlzLmlzSWdub3JlVGhlbWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjb21taXRTb3VyY2VQcm9wZXJ0aWVzKCk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVtb3ZlU291cmNlUHJvcGVydGllcygpOiB2b2lkO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcblxuICAgICAgICB0aGlzLm5hbWUgPSBudWxsO1xuICAgICAgICB0aGlzLnRoZW1lID0gbnVsbDtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdFB1YmxpYyBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzU291bmQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9pc1NvdW5kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNTb3VuZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldFNvdXJjZVByb3BlcnRpZXMoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBpc1NvdW5kKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTb3VuZDtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgaXNWaWRlbyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX2lzVmlkZW8pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pc1ZpZGVvID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0U291cmNlUHJvcGVydGllcygpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGlzVmlkZW8oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZpZGVvO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpc0ZpbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9pc0ZpbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pc0ZpbGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRTb3VyY2VQcm9wZXJ0aWVzKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgaXNGaWxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNGaWxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpc0ltYWdlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5faXNJbWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzSW1hZ2UgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRTb3VyY2VQcm9wZXJ0aWVzKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgaXNJbWFnZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW1hZ2U7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzQmFja2dyb3VuZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX2lzQmFja2dyb3VuZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzQmFja2dyb3VuZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldFNvdXJjZVByb3BlcnRpZXMoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBpc0JhY2tncm91bmQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0JhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzSWdub3JlVGhlbWUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9pc0lnbm9yZVRoZW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNJZ25vcmVUaGVtZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldFNvdXJjZVByb3BlcnRpZXMoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBpc0lnbm9yZVRoZW1lKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNJZ25vcmVUaGVtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9uYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmlsKHRoaXMuX25hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVNvdXJjZVByb3BlcnRpZXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9uYW1lID0gdmFsdWU7XG4gICAgICAgIGlmICghXy5pc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U291cmNlUHJvcGVydGllcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBleHRlbnNpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4dGVuc2lvbjtcbiAgICB9XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGV4dGVuc2lvbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fZXh0ZW5zaW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZXh0ZW5zaW9uID0gdmFsdWU7XG4gICAgICAgIGlmICghXy5pc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U291cmNlUHJvcGVydGllcygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,34 @@
1
+ import { Directive } from '@angular/core';
2
+ import { ThemeAssetDirective } from './ThemeAssetDirective';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ts-core/frontend/theme";
5
+ export class ThemeAssetImageDirective extends ThemeAssetDirective {
6
+ // --------------------------------------------------------------------------
7
+ //
8
+ // Constructor
9
+ //
10
+ // --------------------------------------------------------------------------
11
+ constructor(element, theme, themeAsset) {
12
+ super(element, theme, themeAsset);
13
+ }
14
+ // --------------------------------------------------------------------------
15
+ //
16
+ // Private Methods
17
+ //
18
+ // --------------------------------------------------------------------------
19
+ commitSourceProperties() {
20
+ this.element.src = this.source;
21
+ }
22
+ removeSourceProperties() {
23
+ this.element.src = null;
24
+ }
25
+ }
26
+ ThemeAssetImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeAssetImageDirective, deps: [{ token: i0.ElementRef }, { token: i1.ThemeService }, { token: i1.ThemeAssetService }], target: i0.ɵɵFactoryTarget.Directive });
27
+ ThemeAssetImageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.3", type: ThemeAssetImageDirective, selector: "[vi-theme-image]", usesInheritance: true, ngImport: i0 });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeAssetImageDirective, decorators: [{
29
+ type: Directive,
30
+ args: [{
31
+ selector: '[vi-theme-image]'
32
+ }]
33
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThemeService }, { type: i1.ThemeAssetService }]; } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhlbWVBc3NldEltYWdlRGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RoZW1lL1RoZW1lQXNzZXRJbWFnZURpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFLNUQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG1CQUFxQztJQUMvRSw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGNBQWM7SUFDZCxFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFLFlBQVksT0FBbUIsRUFBRSxLQUFtQixFQUFFLFVBQTZCO1FBQy9FLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixFQUFFO0lBQ0YsNkVBQTZFO0lBRW5FLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFDUyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7O3FIQXRCUSx3QkFBd0I7eUdBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZUFzc2V0U2VydmljZSwgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnQHRzLWNvcmUvZnJvbnRlbmQvdGhlbWUnO1xuaW1wb3J0IHsgVGhlbWVBc3NldERpcmVjdGl2ZSB9IGZyb20gJy4vVGhlbWVBc3NldERpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3ZpLXRoZW1lLWltYWdlXSdcbn0pXG5leHBvcnQgY2xhc3MgVGhlbWVBc3NldEltYWdlRGlyZWN0aXZlIGV4dGVuZHMgVGhlbWVBc3NldERpcmVjdGl2ZTxIVE1MSW1hZ2VFbGVtZW50PiB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHRoZW1lOiBUaGVtZVNlcnZpY2UsIHRoZW1lQXNzZXQ6IFRoZW1lQXNzZXRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnQsIHRoZW1lLCB0aGVtZUFzc2V0KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdFByaXZhdGUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBjb21taXRTb3VyY2VQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnQuc3JjID0gdGhpcy5zb3VyY2U7XG4gICAgfVxuICAgIHByb3RlY3RlZCByZW1vdmVTb3VyY2VQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnQuc3JjID0gbnVsbDtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,62 @@
1
+ import { InjectionToken, NgModule } from '@angular/core';
2
+ import { ThemeService, ThemeAssetService } from '@ts-core/frontend/theme';
3
+ import { CookieModule } from '../cookie/CookieModule';
4
+ import { CookieService } from '../cookie/CookieService';
5
+ import { ThemeAssetBackgroundDirective } from './ThemeAssetBackgroundDirective';
6
+ import { ThemeAssetImageDirective } from './ThemeAssetImageDirective';
7
+ import { ThemeToggleDirective } from './ThemeToggleDirective';
8
+ import { ThemeStyleDirective } from './ThemeStyleDirective';
9
+ import { ThemeStyleHoverDirective } from './ThemeStyleHoverDirective';
10
+ import * as _ from 'lodash';
11
+ import * as i0 from "@angular/core";
12
+ let declarations = [ThemeToggleDirective, ThemeAssetImageDirective, ThemeAssetBackgroundDirective, ThemeStyleDirective, ThemeStyleHoverDirective];
13
+ export class ThemeModule {
14
+ // --------------------------------------------------------------------------
15
+ //
16
+ // Static Methods
17
+ //
18
+ // --------------------------------------------------------------------------
19
+ static forRoot(options) {
20
+ return {
21
+ ngModule: ThemeModule,
22
+ providers: [
23
+ {
24
+ provide: THEME_OPTIONS,
25
+ useValue: options || {}
26
+ },
27
+ {
28
+ provide: ThemeService,
29
+ deps: [CookieService, THEME_OPTIONS],
30
+ useFactory: themeServiceFactory
31
+ },
32
+ {
33
+ provide: ThemeAssetService,
34
+ deps: [ThemeService],
35
+ useFactory: themeAssetServiceFactory
36
+ }
37
+ ]
38
+ };
39
+ }
40
+ }
41
+ ThemeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
42
+ ThemeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeModule, declarations: [ThemeToggleDirective, ThemeAssetImageDirective, ThemeAssetBackgroundDirective, ThemeStyleDirective, ThemeStyleHoverDirective], imports: [CookieModule], exports: [ThemeToggleDirective, ThemeAssetImageDirective, ThemeAssetBackgroundDirective, ThemeStyleDirective, ThemeStyleHoverDirective] });
43
+ ThemeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeModule, imports: [[CookieModule]] });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeModule, decorators: [{
45
+ type: NgModule,
46
+ args: [{
47
+ imports: [CookieModule],
48
+ declarations,
49
+ exports: declarations
50
+ }]
51
+ }] });
52
+ export function themeServiceFactory(cookie, options) {
53
+ if (!_.isNil(options) && _.isNil(options.service)) {
54
+ options.service = cookie;
55
+ }
56
+ return new ThemeService(options);
57
+ }
58
+ export function themeAssetServiceFactory(theme) {
59
+ return new ThemeAssetService(theme);
60
+ }
61
+ export const THEME_OPTIONS = new InjectionToken(`THEME_OPTIONS`);
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhlbWVNb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGhlbWUvVGhlbWVNb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlFLE9BQU8sRUFBd0IsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7QUFFNUIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSw2QkFBNkIsRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBT2xKLE1BQU0sT0FBTyxXQUFXO0lBQ3BCLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRiw2RUFBNkU7SUFFdEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUE4QjtRQUNoRCxPQUFPO1lBQ0gsUUFBUSxFQUFFLFdBQVc7WUFDckIsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxhQUFhO29CQUN0QixRQUFRLEVBQUUsT0FBTyxJQUFJLEVBQUU7aUJBQzFCO2dCQUNEO29CQUNJLE9BQU8sRUFBRSxZQUFZO29CQUNyQixJQUFJLEVBQUUsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDO29CQUNwQyxVQUFVLEVBQUUsbUJBQW1CO2lCQUNsQztnQkFDRDtvQkFDSSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3BCLFVBQVUsRUFBRSx3QkFBd0I7aUJBQ3ZDO2FBQ0o7U0FDSixDQUFDO0lBQ04sQ0FBQzs7d0dBM0JRLFdBQVc7eUdBQVgsV0FBVyxpQkFQSixvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSw2QkFBNkIsRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsYUFHbEksWUFBWSxhQUhOLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLG1CQUFtQixFQUFFLHdCQUF3Qjt5R0FPbkksV0FBVyxZQUpYLENBQUMsWUFBWSxDQUFDOzJGQUlkLFdBQVc7a0JBTHZCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZO29CQUNaLE9BQU8sRUFBRSxZQUFZO2lCQUN4Qjs7QUErQkQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BQXNCLEVBQUUsT0FBOEI7SUFDdEYsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDL0MsT0FBTyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7S0FDNUI7SUFDRCxPQUFPLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBbUI7SUFDeEQsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQXVCLGVBQWUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQ29va2llU2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kL2Nvb2tpZSc7XG5pbXBvcnQgeyBJVGhlbWVTZXJ2aWNlT3B0aW9ucywgVGhlbWVTZXJ2aWNlLCBUaGVtZUFzc2V0U2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kL3RoZW1lJztcbmltcG9ydCB7IENvb2tpZU1vZHVsZSB9IGZyb20gJy4uL2Nvb2tpZS9Db29raWVNb2R1bGUnO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJy4uL2Nvb2tpZS9Db29raWVTZXJ2aWNlJztcbmltcG9ydCB7IFRoZW1lQXNzZXRCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi9UaGVtZUFzc2V0QmFja2dyb3VuZERpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUaGVtZUFzc2V0SW1hZ2VEaXJlY3RpdmUgfSBmcm9tICcuL1RoZW1lQXNzZXRJbWFnZURpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUaGVtZVRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4vVGhlbWVUb2dnbGVEaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGhlbWVTdHlsZURpcmVjdGl2ZSB9IGZyb20gJy4vVGhlbWVTdHlsZURpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUaGVtZVN0eWxlSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuL1RoZW1lU3R5bGVIb3ZlckRpcmVjdGl2ZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmxldCBkZWNsYXJhdGlvbnMgPSBbVGhlbWVUb2dnbGVEaXJlY3RpdmUsIFRoZW1lQXNzZXRJbWFnZURpcmVjdGl2ZSwgVGhlbWVBc3NldEJhY2tncm91bmREaXJlY3RpdmUsIFRoZW1lU3R5bGVEaXJlY3RpdmUsIFRoZW1lU3R5bGVIb3ZlckRpcmVjdGl2ZV07XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0Nvb2tpZU1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zLFxuICAgIGV4cG9ydHM6IGRlY2xhcmF0aW9uc1xufSlcbmV4cG9ydCBjbGFzcyBUaGVtZU1vZHVsZSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0U3RhdGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGZvclJvb3Qob3B0aW9ucz86IElUaGVtZVNlcnZpY2VPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVyczxUaGVtZU1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IFRoZW1lTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBUSEVNRV9PUFRJT05TLFxuICAgICAgICAgICAgICAgICAgICB1c2VWYWx1ZTogb3B0aW9ucyB8fCB7fVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBUaGVtZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgIGRlcHM6IFtDb29raWVTZXJ2aWNlLCBUSEVNRV9PUFRJT05TXSxcbiAgICAgICAgICAgICAgICAgICAgdXNlRmFjdG9yeTogdGhlbWVTZXJ2aWNlRmFjdG9yeVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBUaGVtZUFzc2V0U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgZGVwczogW1RoZW1lU2VydmljZV0sXG4gICAgICAgICAgICAgICAgICAgIHVzZUZhY3Rvcnk6IHRoZW1lQXNzZXRTZXJ2aWNlRmFjdG9yeVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVtZVNlcnZpY2VGYWN0b3J5KGNvb2tpZTogSUNvb2tpZVNlcnZpY2UsIG9wdGlvbnM/OiBJVGhlbWVTZXJ2aWNlT3B0aW9ucyk6IFRoZW1lU2VydmljZSB7XG4gICAgaWYgKCFfLmlzTmlsKG9wdGlvbnMpICYmIF8uaXNOaWwob3B0aW9ucy5zZXJ2aWNlKSkge1xuICAgICAgICBvcHRpb25zLnNlcnZpY2UgPSBjb29raWU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgVGhlbWVTZXJ2aWNlKG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlbWVBc3NldFNlcnZpY2VGYWN0b3J5KHRoZW1lOiBUaGVtZVNlcnZpY2UpOiBUaGVtZUFzc2V0U2VydmljZSB7XG4gICAgcmV0dXJuIG5ldyBUaGVtZUFzc2V0U2VydmljZSh0aGVtZSk7XG59XG5cbmV4cG9ydCBjb25zdCBUSEVNRV9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPElUaGVtZVNlcnZpY2VPcHRpb25zPihgVEhFTUVfT1BUSU9OU2ApO1xuIl19
@@ -0,0 +1,115 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { Destroyable } from '@ts-core/common';
3
+ import * as _ from 'lodash';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import { ViewUtil } from '../util/ViewUtil';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@ts-core/frontend/theme";
8
+ export class ThemeStyleDirective extends Destroyable {
9
+ // --------------------------------------------------------------------------
10
+ //
11
+ // Constructor
12
+ //
13
+ // --------------------------------------------------------------------------
14
+ constructor(element, theme) {
15
+ super();
16
+ this.theme = theme;
17
+ this.element = ViewUtil.parseElement(element.nativeElement);
18
+ this.theme.changed.pipe(takeUntil(this.destroyed)).subscribe(() => this.stylePropertiesAdd());
19
+ }
20
+ // --------------------------------------------------------------------------
21
+ //
22
+ // Protected Methods
23
+ //
24
+ // --------------------------------------------------------------------------
25
+ commitStyleProperties(name, value) {
26
+ ViewUtil.setStyle(this.element, name, value, this.flags);
27
+ }
28
+ stylePropertiesCheck() {
29
+ if (this.isNeedStyleAdd()) {
30
+ this.stylePropertiesAdd();
31
+ }
32
+ else if (this.isNeedStyleRemove()) {
33
+ this.stylePropertiesRemove();
34
+ }
35
+ }
36
+ stylePropertiesRemove() {
37
+ ViewUtil.removeStyle(this.element, this.styleName);
38
+ }
39
+ stylePropertiesAdd() {
40
+ this.commitStyleProperties(this.styleName, this.theme.getStyle(this.key));
41
+ }
42
+ isNeedStyleAdd() {
43
+ return !_.isNil(this.theme.theme) && !_.isNil(this.styleName);
44
+ }
45
+ isNeedStyleRemove() {
46
+ return !_.isNil(this.styleName);
47
+ }
48
+ // --------------------------------------------------------------------------
49
+ //
50
+ // Public Methods
51
+ //
52
+ // --------------------------------------------------------------------------
53
+ destroy() {
54
+ if (this.isDestroyed) {
55
+ return;
56
+ }
57
+ super.destroy();
58
+ this.key = null;
59
+ this.theme = null;
60
+ this.element = null;
61
+ }
62
+ // --------------------------------------------------------------------------
63
+ //
64
+ // Public Properties
65
+ //
66
+ // --------------------------------------------------------------------------
67
+ get flags() {
68
+ return this._flags;
69
+ }
70
+ set flags(value) {
71
+ if (value === this._flags) {
72
+ return;
73
+ }
74
+ this._flags = value;
75
+ this.stylePropertiesCheck();
76
+ }
77
+ get styleName() {
78
+ return this._styleName;
79
+ }
80
+ set styleName(value) {
81
+ if (value === this._styleName) {
82
+ return;
83
+ }
84
+ this._styleName = value;
85
+ this.stylePropertiesCheck();
86
+ }
87
+ get key() {
88
+ return this._key;
89
+ }
90
+ set key(value) {
91
+ if (value === this._key) {
92
+ return;
93
+ }
94
+ this._key = value;
95
+ if (!_.isNil(value)) {
96
+ this.stylePropertiesCheck();
97
+ }
98
+ }
99
+ }
100
+ ThemeStyleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeStyleDirective, deps: [{ token: i0.ElementRef }, { token: i1.ThemeService }], target: i0.ɵɵFactoryTarget.Directive });
101
+ ThemeStyleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.3", type: ThemeStyleDirective, selector: "[vi-theme-style]", inputs: { flags: "flags", styleName: "styleName", key: ["vi-theme-style", "key"] }, usesInheritance: true, ngImport: i0 });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeStyleDirective, decorators: [{
103
+ type: Directive,
104
+ args: [{
105
+ selector: '[vi-theme-style]'
106
+ }]
107
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThemeService }]; }, propDecorators: { flags: [{
108
+ type: Input
109
+ }], styleName: [{
110
+ type: Input
111
+ }], key: [{
112
+ type: Input,
113
+ args: ['vi-theme-style']
114
+ }] } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhlbWVTdHlsZURpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90aGVtZS9UaGVtZVN0eWxlRGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBSzVDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUFXO0lBYWhELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsY0FBYztJQUNkLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsWUFBWSxPQUFtQixFQUFZLEtBQW1CO1FBQzFELEtBQUssRUFBRSxDQUFDO1FBRCtCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFHMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLG9CQUFvQjtJQUNwQixFQUFFO0lBQ0YsNkVBQTZFO0lBRW5FLHFCQUFxQixDQUFDLElBQVksRUFBRSxLQUFhO1FBQ3ZELFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxF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QkFEZixLQUFLO2dCQWFLLFNBQVM7c0JBRG5CLEtBQUs7Z0JBYUssR0FBRztzQkFEYixLQUFLO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyU3R5bGVGbGFnczIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlc3Ryb3lhYmxlIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kL3RoZW1lJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFZpZXdVdGlsIH0gZnJvbSAnLi4vdXRpbC9WaWV3VXRpbCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3ZpLXRoZW1lLXN0eWxlXSdcbn0pXG5leHBvcnQgY2xhc3MgVGhlbWVTdHlsZURpcmVjdGl2ZSBleHRlbmRzIERlc3Ryb3lhYmxlIHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgX2tleTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfZmxhZ3M6IFJlbmRlcmVyU3R5bGVGbGFnczI7XG4gICAgcHJvdGVjdGVkIF9zdHlsZU5hbWU6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBlbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0Q29uc3RydWN0b3JcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgdGhlbWU6IFRoZW1lU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudCA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnRoZW1lLmNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdHlsZVByb3BlcnRpZXNBZGQoKSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBjb21taXRTdHlsZVByb3BlcnRpZXMobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnNldFN0eWxlKHRoaXMuZWxlbWVudCwgbmFtZSwgdmFsdWUsIHRoaXMuZmxhZ3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdHlsZVByb3BlcnRpZXNDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOZWVkU3R5bGVBZGQoKSkge1xuICAgICAgICAgICAgdGhpcy5zdHlsZVByb3BlcnRpZXNBZGQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTmVlZFN0eWxlUmVtb3ZlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVQcm9wZXJ0aWVzUmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3R5bGVQcm9wZXJ0aWVzUmVtb3ZlKCk6IHZvaWQge1xuICAgICAgICBWaWV3VXRpbC5yZW1vdmVTdHlsZSh0aGlzLmVsZW1lbnQsIHRoaXMuc3R5bGVOYW1lKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3R5bGVQcm9wZXJ0aWVzQWRkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbW1pdFN0eWxlUHJvcGVydGllcyh0aGlzLnN0eWxlTmFtZSwgdGhpcy50aGVtZS5nZXRTdHlsZSh0aGlzLmtleSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc05lZWRTdHlsZUFkZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKHRoaXMudGhlbWUudGhlbWUpICYmICFfLmlzTmlsKHRoaXMuc3R5bGVOYW1lKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNOZWVkU3R5bGVSZW1vdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhXy5pc05pbCh0aGlzLnN0eWxlTmFtZSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcblxuICAgICAgICB0aGlzLmtleSA9IG51bGw7XG4gICAgICAgIHRoaXMudGhlbWUgPSBudWxsO1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0IGZsYWdzKCk6IFJlbmRlcmVyU3R5bGVGbGFnczIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmxhZ3M7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBmbGFncyh2YWx1ZTogUmVuZGVyZXJTdHlsZUZsYWdzMikge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX2ZsYWdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZmxhZ3MgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zdHlsZVByb3BlcnRpZXNDaGVjaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3R5bGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHlsZU5hbWU7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBzdHlsZU5hbWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX3N0eWxlTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N0eWxlTmFtZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnN0eWxlUHJvcGVydGllc0NoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBrZXkoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleTtcbiAgICB9XG4gICAgQElucHV0KCd2aS10aGVtZS1zdHlsZScpXG4gICAgcHVibGljIHNldCBrZXkodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX2tleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2tleSA9IHZhbHVlO1xuICAgICAgICBpZiAoIV8uaXNOaWwodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlUHJvcGVydGllc0NoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,107 @@
1
+ import { Directive, Input, RendererStyleFlags2 } from '@angular/core';
2
+ import { ThemeStyleDirective } from './ThemeStyleDirective';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ts-core/frontend/theme";
5
+ export class ThemeStyleHoverDirective extends ThemeStyleDirective {
6
+ // --------------------------------------------------------------------------
7
+ //
8
+ // Constructor
9
+ //
10
+ // --------------------------------------------------------------------------
11
+ constructor(element, theme) {
12
+ super(element, theme);
13
+ // --------------------------------------------------------------------------
14
+ //
15
+ // Properties
16
+ //
17
+ // --------------------------------------------------------------------------
18
+ this._isHover = false;
19
+ // --------------------------------------------------------------------------
20
+ //
21
+ // Event Handlers
22
+ //
23
+ // --------------------------------------------------------------------------
24
+ this.mouseEnter = (event) => {
25
+ this.isHover = true;
26
+ };
27
+ this.mouseLeave = (event) => {
28
+ this.isHover = false;
29
+ };
30
+ this.flags = RendererStyleFlags2.Important;
31
+ this.element.addEventListener('mouseenter', this.mouseEnter, false);
32
+ this.element.addEventListener('mouseleave', this.mouseLeave, false);
33
+ }
34
+ // --------------------------------------------------------------------------
35
+ //
36
+ // Protected Methods
37
+ //
38
+ // --------------------------------------------------------------------------
39
+ isNeedStyleAdd() {
40
+ return this.isHover && super.isNeedStyleAdd();
41
+ }
42
+ isNeedStyleRemove() {
43
+ return !this.isHover || super.isNeedStyleRemove();
44
+ }
45
+ // --------------------------------------------------------------------------
46
+ //
47
+ // Public Methods
48
+ //
49
+ // --------------------------------------------------------------------------
50
+ destroy() {
51
+ if (this.isDestroyed) {
52
+ return;
53
+ }
54
+ this.element.removeEventListener('mouseenter', this.mouseEnter, false);
55
+ this.element.removeEventListener('mouseleave', this.mouseLeave, false);
56
+ super.destroy();
57
+ }
58
+ // --------------------------------------------------------------------------
59
+ //
60
+ // Public Properties
61
+ //
62
+ // --------------------------------------------------------------------------
63
+ get isHover() {
64
+ return this._isHover;
65
+ }
66
+ set isHover(value) {
67
+ if (value === this._isHover) {
68
+ return;
69
+ }
70
+ this._isHover = value;
71
+ this.stylePropertiesCheck();
72
+ }
73
+ get key() {
74
+ return super.key;
75
+ }
76
+ set key(value) {
77
+ super.key = value;
78
+ }
79
+ get styleName() {
80
+ return super.styleName;
81
+ }
82
+ set styleName(value) {
83
+ super.styleName = value;
84
+ }
85
+ get flags() {
86
+ return super.flags;
87
+ }
88
+ set flags(value) {
89
+ super.flags = value;
90
+ }
91
+ }
92
+ ThemeStyleHoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeStyleHoverDirective, deps: [{ token: i0.ElementRef }, { token: i1.ThemeService }], target: i0.ɵɵFactoryTarget.Directive });
93
+ ThemeStyleHoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.3", type: ThemeStyleHoverDirective, selector: "[vi-theme-style-hover]", inputs: { key: ["vi-theme-style-hover", "key"], styleName: "styleName", flags: "flags" }, usesInheritance: true, ngImport: i0 });
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ThemeStyleHoverDirective, decorators: [{
95
+ type: Directive,
96
+ args: [{
97
+ selector: '[vi-theme-style-hover]'
98
+ }]
99
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThemeService }]; }, propDecorators: { key: [{
100
+ type: Input,
101
+ args: ['vi-theme-style-hover']
102
+ }], styleName: [{
103
+ type: Input
104
+ }], flags: [{
105
+ type: Input
106
+ }] } });
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhlbWVTdHlsZUhvdmVyRGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RoZW1lL1RoZW1lU3R5bGVIb3ZlckRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBTTVELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxtQkFBbUI7SUFTN0QsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixjQUFjO0lBQ2QsRUFBRTtJQUNGLDZFQUE2RTtJQUU3RSxZQUFZLE9BQW1CLEVBQUUsS0FBbUI7UUFDaEQsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQWYxQiw2RUFBNkU7UUFDN0UsRUFBRTtRQUNGLGFBQWE7UUFDYixFQUFFO1FBQ0YsNkVBQTZFO1FBRW5FLGFBQVEsR0FBWSxLQUFLLENBQUM7UUE4QnBDLDZFQUE2RTtRQUM3RSxFQUFFO1FBQ0YsaUJBQWlCO1FBQ2pCLEVBQUU7UUFDRiw2RUFBNkU7UUFFbkUsZUFBVSxHQUFHLENBQUMsS0FBaUIsRUFBUSxFQUFFO1lBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUMsQ0FBQztRQUVRLGVBQVUsR0FBRyxDQUFDLEtBQWlCLEVBQVEsRUFBRTtZQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLENBQUM7UUEvQkUsSUFBSSxDQUFDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLG9CQUFvQjtJQUNwQixFQUFFO0lBQ0YsNkVBQTZFO0lBRW5FLGNBQWM7UUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRVMsaUJBQWlCO1FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFnQkQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixpQkFBaUI7SUFDakIsRUFBRTtJQUNGLDZFQUE2RTtJQUV0RSxPQUFPO1FBQ1YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysb0JBQW9CO0lBQ3BCLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFXLE9BQU8sQ0FBQyxLQUFjO1FBQzdCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDekIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsR0FBRztRQUNWLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFDVyxHQUFHLENBQUMsS0FBYTtRQUN4QixLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFDVyxTQUFTLENBQUMsS0FBYTtRQUM5QixLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUNXLEtBQUssQ0FBQyxLQUEwQjtRQUN2QyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDOztxSEF6R1Esd0JBQXdCO3lHQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsd0JBQXdCO2lCQUNyQzs0SEF3RmMsR0FBRztzQkFEYixLQUFLO3VCQUFDLHNCQUFzQjtnQkFTbEIsU0FBUztzQkFEbkIsS0FBSztnQkFTSyxLQUFLO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBSZW5kZXJlclN0eWxlRmxhZ3MyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICdAdHMtY29yZS9mcm9udGVuZC90aGVtZSc7XG5pbXBvcnQgeyBUaGVtZVN0eWxlRGlyZWN0aXZlIH0gZnJvbSAnLi9UaGVtZVN0eWxlRGlyZWN0aXZlJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdmktdGhlbWUtc3R5bGUtaG92ZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBUaGVtZVN0eWxlSG92ZXJEaXJlY3RpdmUgZXh0ZW5kcyBUaGVtZVN0eWxlRGlyZWN0aXZlIHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgX2lzSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0Q29uc3RydWN0b3JcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50UmVmLCB0aGVtZTogVGhlbWVTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnQsIHRoZW1lKTtcblxuICAgICAgICB0aGlzLmZsYWdzID0gUmVuZGVyZXJTdHlsZUZsYWdzMi5JbXBvcnRhbnQ7XG4gICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5tb3VzZUVudGVyLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5tb3VzZUxlYXZlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBpc05lZWRTdHlsZUFkZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNIb3ZlciAmJiBzdXBlci5pc05lZWRTdHlsZUFkZCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc05lZWRTdHlsZVJlbW92ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzSG92ZXIgfHwgc3VwZXIuaXNOZWVkU3R5bGVSZW1vdmUoKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdEV2ZW50IEhhbmRsZXJzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIG1vdXNlRW50ZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pc0hvdmVyID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIG1vdXNlTGVhdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pc0hvdmVyID0gZmFsc2U7XG4gICAgfTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHVibGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMubW91c2VFbnRlciwgZmFsc2UpO1xuICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMubW91c2VMZWF2ZSwgZmFsc2UpO1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQdWJsaWMgUHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBnZXQgaXNIb3ZlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSG92ZXI7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgaXNIb3Zlcih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX2lzSG92ZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pc0hvdmVyID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc3R5bGVQcm9wZXJ0aWVzQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGtleSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3VwZXIua2V5O1xuICAgIH1cbiAgICBASW5wdXQoJ3ZpLXRoZW1lLXN0eWxlLWhvdmVyJylcbiAgICBwdWJsaWMgc2V0IGtleSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyLmtleSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3R5bGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzdXBlci5zdHlsZU5hbWU7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBzdHlsZU5hbWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBzdXBlci5zdHlsZU5hbWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZsYWdzKCk6IFJlbmRlcmVyU3R5bGVGbGFnczIge1xuICAgICAgICByZXR1cm4gc3VwZXIuZmxhZ3M7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBmbGFncyh2YWx1ZTogUmVuZGVyZXJTdHlsZUZsYWdzMikge1xuICAgICAgICBzdXBlci5mbGFncyA9IHZhbHVlO1xuICAgIH1cbn1cbiJdfQ==