@ts-core/angular 15.0.60 → 17.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/asset/AssetBackgroundDirective.d.ts +1 -1
  2. package/cookie/CookieService.d.ts +1 -3
  3. package/directive/AspectRatioResizeDirective.d.ts +1 -1
  4. package/directive/AutoScrollBottomDirective.d.ts +1 -1
  5. package/directive/ClickToCopyDirective.d.ts +1 -1
  6. package/directive/FocusDirective.d.ts +1 -1
  7. package/directive/HTMLContentTitleDirective.d.ts +1 -1
  8. package/directive/HTMLTitleDirective.d.ts +1 -1
  9. package/directive/InfiniteScrollDirective.d.ts +1 -1
  10. package/directive/ResizeDirective.d.ts +1 -1
  11. package/directive/ScrollCheckDirective.d.ts +1 -1
  12. package/directive/ScrollDirective.d.ts +1 -1
  13. package/esm2022/VIModule.mjs +190 -0
  14. package/esm2022/application/ApplicationBaseComponent.mjs +96 -0
  15. package/esm2022/application/ApplicationComponent.mjs +64 -0
  16. package/esm2022/application/MessageBaseComponent.mjs +60 -0
  17. package/esm2022/asset/AssetBackgroundDirective.mjs +152 -0
  18. package/{esm2020 → esm2022}/asset/AssetBackgroundPipe.mjs +4 -4
  19. package/{esm2020 → esm2022}/asset/AssetFilePipe.mjs +4 -4
  20. package/{esm2020 → esm2022}/asset/AssetIconPipe.mjs +4 -4
  21. package/{esm2020 → esm2022}/asset/AssetImagePipe.mjs +4 -4
  22. package/{esm2020 → esm2022}/asset/AssetModule.mjs +5 -5
  23. package/{esm2020 → esm2022}/asset/AssetSoundPipe.mjs +4 -4
  24. package/{esm2020 → esm2022}/asset/AssetVideoPipe.mjs +4 -4
  25. package/{esm2020 → esm2022}/cookie/CookieModule.mjs +5 -5
  26. package/{esm2020 → esm2022}/cookie/CookieOptions.mjs +7 -1
  27. package/esm2022/cookie/CookieService.mjs +71 -0
  28. package/esm2022/directive/AspectRatioResizeDirective.mjs +134 -0
  29. package/esm2022/directive/AutoScrollBottomDirective.mjs +122 -0
  30. package/esm2022/directive/ClickToCopyDirective.mjs +53 -0
  31. package/esm2022/directive/ClickToSelectDirective.mjs +55 -0
  32. package/esm2022/directive/FocusDirective.mjs +60 -0
  33. package/esm2022/directive/HTMLContentTitleDirective.mjs +74 -0
  34. package/esm2022/directive/HTMLTitleDirective.mjs +73 -0
  35. package/esm2022/directive/InfiniteScrollDirective.mjs +71 -0
  36. package/{esm2020 → esm2022}/directive/IsBrowserDirective.mjs +5 -5
  37. package/{esm2020 → esm2022}/directive/IsServerDirective.mjs +5 -5
  38. package/esm2022/directive/ResizeDirective.mjs +80 -0
  39. package/esm2022/directive/ScrollCheckDirective.mjs +104 -0
  40. package/esm2022/directive/ScrollDirective.mjs +120 -0
  41. package/esm2022/directive/SelectOnFocusDirective.mjs +48 -0
  42. package/esm2022/directive/StructureDirective.mjs +80 -0
  43. package/esm2022/language/LanguageDirective.mjs +102 -0
  44. package/esm2022/language/LanguageHasDirective.mjs +87 -0
  45. package/{esm2020 → esm2022}/language/LanguageModule.mjs +5 -5
  46. package/esm2022/language/LanguagePipe.mjs +88 -0
  47. package/esm2022/language/LanguagePipeHas.mjs +64 -0
  48. package/esm2022/language/LanguagePipeHasPure.mjs +41 -0
  49. package/esm2022/language/LanguagePipePure.mjs +40 -0
  50. package/esm2022/language/LanguageRequireResolver.mjs +37 -0
  51. package/{esm2020 → esm2022}/language/LanguageResolver.mjs +5 -5
  52. package/esm2022/list/ListItem.mjs +148 -0
  53. package/esm2022/list/ListItems.mjs +107 -0
  54. package/esm2022/list/select/RouterSelectListItems.mjs +60 -0
  55. package/esm2022/list/select/SelectListItem.mjs +67 -0
  56. package/esm2022/list/select/SelectListItems.mjs +130 -0
  57. package/esm2022/login/LoginBaseService.mjs +191 -0
  58. package/esm2022/login/LoginGuard.mjs +41 -0
  59. package/esm2022/login/LoginIfCanGuard.mjs +55 -0
  60. package/esm2022/login/LoginNotGuard.mjs +41 -0
  61. package/esm2022/login/LoginRequireResolver.mjs +40 -0
  62. package/{esm2020 → esm2022}/login/LoginResolver.mjs +6 -6
  63. package/esm2022/login/LoginTokenStorage.mjs +18 -0
  64. package/esm2022/manager/FocusManager.mjs +54 -0
  65. package/esm2022/manager/ResizeManager.mjs +90 -0
  66. package/esm2022/menu/MenuItem.mjs +20 -0
  67. package/esm2022/menu/MenuItemBase.mjs +56 -0
  68. package/esm2022/menu/MenuItems.mjs +111 -0
  69. package/esm2022/menu/NavigationMenuItem.mjs +20 -0
  70. package/esm2022/module/LazyModuleLoader.mjs +97 -0
  71. package/esm2022/notification/INotification.mjs +16 -0
  72. package/esm2022/notification/INotificationContent.mjs +141 -0
  73. package/esm2022/notification/NotificationConfig.mjs +27 -0
  74. package/{esm2020 → esm2022}/pipe/CamelCasePipe.mjs +4 -4
  75. package/esm2022/pipe/FinancePipe.mjs +53 -0
  76. package/esm2022/pipe/MomentDateAdaptivePipe.mjs +51 -0
  77. package/{esm2020 → esm2022}/pipe/MomentDateFromNowPipe.mjs +4 -4
  78. package/esm2022/pipe/MomentDatePipe.mjs +71 -0
  79. package/esm2022/pipe/MomentTimePipe.mjs +35 -0
  80. package/esm2022/pipe/NgModelErrorPipe.mjs +43 -0
  81. package/esm2022/pipe/PrettifyPipe.mjs +38 -0
  82. package/esm2022/pipe/SanitizePipe.mjs +48 -0
  83. package/{esm2020 → esm2022}/pipe/StartCasePipe.mjs +4 -4
  84. package/esm2022/pipe/TimePipe.mjs +38 -0
  85. package/{esm2020 → esm2022}/pipe/TruncatePipe.mjs +4 -4
  86. package/esm2022/public-api.mjs +138 -0
  87. package/esm2022/question/QuestionManager.mjs +107 -0
  88. package/esm2022/service/PipeBaseService.mjs +140 -0
  89. package/esm2022/service/PlatformService.mjs +45 -0
  90. package/esm2022/service/RouterBaseService.mjs +236 -0
  91. package/esm2022/storage/DateValueStorage.mjs +46 -0
  92. package/esm2022/storage/LocalStorageService.mjs +58 -0
  93. package/esm2022/storage/ValueStorage.mjs +75 -0
  94. package/{esm2020 → esm2022}/theme/ThemeAssetBackgroundDirective.mjs +5 -5
  95. package/esm2022/theme/ThemeAssetDirective.mjs +251 -0
  96. package/{esm2020 → esm2022}/theme/ThemeAssetIconDirective.mjs +5 -5
  97. package/{esm2020 → esm2022}/theme/ThemeAssetImageDirective.mjs +5 -5
  98. package/{esm2020 → esm2022}/theme/ThemeModule.mjs +15 -15
  99. package/esm2022/theme/ThemeStyleDirective.mjs +125 -0
  100. package/esm2022/theme/ThemeStyleHoverDirective.mjs +107 -0
  101. package/esm2022/theme/ThemeToggleDirective.mjs +63 -0
  102. package/esm2022/transport/TransportLazy.mjs +93 -0
  103. package/esm2022/transport/TransportLazyModule.mjs +30 -0
  104. package/esm2022/transport/TransportLazyModuleLoadedEvent.mjs +18 -0
  105. package/esm2022/user/IUser.mjs +9 -0
  106. package/esm2022/user/UserBaseService.mjs +124 -0
  107. package/esm2022/util/ViewUtil.mjs +589 -0
  108. package/esm2022/window/IWindow.mjs +31 -0
  109. package/esm2022/window/IWindowContent.mjs +142 -0
  110. package/esm2022/window/WindowBase.mjs +177 -0
  111. package/esm2022/window/WindowClosedError.mjs +19 -0
  112. package/esm2022/window/WindowConfig.mjs +218 -0
  113. package/{fesm2020 → fesm2022}/ts-core-angular.mjs +1118 -958
  114. package/fesm2022/ts-core-angular.mjs.map +1 -0
  115. package/language/LanguageDirective.d.ts +1 -1
  116. package/language/LanguageHasDirective.d.ts +1 -1
  117. package/module/LazyModuleLoader.d.ts +1 -1
  118. package/notification/INotificationContent.d.ts +1 -1
  119. package/notification/NotificationConfig.d.ts +1 -1
  120. package/notification/NotificationService.d.ts +1 -1
  121. package/package.json +19 -26
  122. package/pipe/MomentDatePipe.d.ts +1 -1
  123. package/public-api.d.ts +0 -2
  124. package/theme/ThemeAssetBackgroundDirective.d.ts +1 -1
  125. package/theme/ThemeAssetDirective.d.ts +1 -1
  126. package/theme/ThemeAssetIconDirective.d.ts +1 -1
  127. package/theme/ThemeAssetImageDirective.d.ts +1 -1
  128. package/theme/ThemeStyleDirective.d.ts +1 -1
  129. package/theme/ThemeStyleHoverDirective.d.ts +1 -1
  130. package/user/IUser.d.ts +1 -1
  131. package/util/ViewUtil.d.ts +1 -1
  132. package/window/IWindowContent.d.ts +2 -2
  133. package/window/WindowConfig.d.ts +1 -1
  134. package/window/WindowService.d.ts +1 -1
  135. package/esm2020/VIModule.mjs +0 -187
  136. package/esm2020/application/ApplicationBaseComponent.mjs +0 -88
  137. package/esm2020/application/ApplicationComponent.mjs +0 -58
  138. package/esm2020/application/MessageBaseComponent.mjs +0 -52
  139. package/esm2020/asset/AssetBackgroundDirective.mjs +0 -150
  140. package/esm2020/cookie/CookieService.mjs +0 -79
  141. package/esm2020/directive/AspectRatioResizeDirective.mjs +0 -131
  142. package/esm2020/directive/AutoScrollBottomDirective.mjs +0 -122
  143. package/esm2020/directive/ClickToCopyDirective.mjs +0 -49
  144. package/esm2020/directive/ClickToSelectDirective.mjs +0 -49
  145. package/esm2020/directive/FocusDirective.mjs +0 -54
  146. package/esm2020/directive/HTMLContentTitleDirective.mjs +0 -67
  147. package/esm2020/directive/HTMLTitleDirective.mjs +0 -66
  148. package/esm2020/directive/InfiniteScrollDirective.mjs +0 -74
  149. package/esm2020/directive/ResizeDirective.mjs +0 -79
  150. package/esm2020/directive/ScrollCheckDirective.mjs +0 -102
  151. package/esm2020/directive/ScrollDirective.mjs +0 -118
  152. package/esm2020/directive/SelectOnFocusDirective.mjs +0 -47
  153. package/esm2020/directive/StructureDirective.mjs +0 -71
  154. package/esm2020/form/FormElementAsync.mjs +0 -27
  155. package/esm2020/form/FormElementSync.mjs +0 -69
  156. package/esm2020/form/ValueAccessor.mjs +0 -62
  157. package/esm2020/form/validate.mjs +0 -59
  158. package/esm2020/language/LanguageDirective.mjs +0 -92
  159. package/esm2020/language/LanguageHasDirective.mjs +0 -80
  160. package/esm2020/language/LanguagePipe.mjs +0 -78
  161. package/esm2020/language/LanguagePipeHas.mjs +0 -56
  162. package/esm2020/language/LanguagePipeHasPure.mjs +0 -40
  163. package/esm2020/language/LanguagePipePure.mjs +0 -39
  164. package/esm2020/language/LanguageRequireResolver.mjs +0 -36
  165. package/esm2020/list/ListItem.mjs +0 -134
  166. package/esm2020/list/ListItems.mjs +0 -97
  167. package/esm2020/list/select/RouterSelectListItems.mjs +0 -53
  168. package/esm2020/list/select/SelectListItem.mjs +0 -59
  169. package/esm2020/list/select/SelectListItems.mjs +0 -121
  170. package/esm2020/login/LoginBaseService.mjs +0 -184
  171. package/esm2020/login/LoginGuard.mjs +0 -40
  172. package/esm2020/login/LoginIfCanGuard.mjs +0 -54
  173. package/esm2020/login/LoginNotGuard.mjs +0 -40
  174. package/esm2020/login/LoginRequireResolver.mjs +0 -39
  175. package/esm2020/login/LoginTokenStorage.mjs +0 -18
  176. package/esm2020/manager/FocusManager.mjs +0 -46
  177. package/esm2020/manager/ResizeManager.mjs +0 -81
  178. package/esm2020/menu/MenuItem.mjs +0 -13
  179. package/esm2020/menu/MenuItemBase.mjs +0 -46
  180. package/esm2020/menu/MenuItems.mjs +0 -102
  181. package/esm2020/menu/NavigationMenuItem.mjs +0 -14
  182. package/esm2020/module/LazyModuleLoader.mjs +0 -89
  183. package/esm2020/notification/INotification.mjs +0 -7
  184. package/esm2020/notification/INotificationContent.mjs +0 -132
  185. package/esm2020/notification/NotificationConfig.mjs +0 -16
  186. package/esm2020/pipe/FinancePipe.mjs +0 -53
  187. package/esm2020/pipe/MomentDateAdaptivePipe.mjs +0 -51
  188. package/esm2020/pipe/MomentDatePipe.mjs +0 -71
  189. package/esm2020/pipe/MomentTimePipe.mjs +0 -35
  190. package/esm2020/pipe/NgModelErrorPipe.mjs +0 -42
  191. package/esm2020/pipe/PrettifyPipe.mjs +0 -38
  192. package/esm2020/pipe/SanitizePipe.mjs +0 -47
  193. package/esm2020/pipe/TimePipe.mjs +0 -38
  194. package/esm2020/public-api.mjs +0 -141
  195. package/esm2020/question/QuestionManager.mjs +0 -93
  196. package/esm2020/service/PipeBaseService.mjs +0 -132
  197. package/esm2020/service/PlatformService.mjs +0 -38
  198. package/esm2020/service/RouterBaseService.mjs +0 -224
  199. package/esm2020/storage/DateValueStorage.mjs +0 -49
  200. package/esm2020/storage/LocalStorageService.mjs +0 -57
  201. package/esm2020/storage/ValueStorage.mjs +0 -67
  202. package/esm2020/theme/ThemeAssetDirective.mjs +0 -240
  203. package/esm2020/theme/ThemeStyleDirective.mjs +0 -115
  204. package/esm2020/theme/ThemeStyleHoverDirective.mjs +0 -107
  205. package/esm2020/theme/ThemeToggleDirective.mjs +0 -62
  206. package/esm2020/transport/TransportLazy.mjs +0 -92
  207. package/esm2020/transport/TransportLazyModule.mjs +0 -28
  208. package/esm2020/transport/TransportLazyModuleLoadedEvent.mjs +0 -18
  209. package/esm2020/user/IUser.mjs +0 -3
  210. package/esm2020/user/UserBaseService.mjs +0 -116
  211. package/esm2020/util/ViewUtil.mjs +0 -589
  212. package/esm2020/window/IWindow.mjs +0 -33
  213. package/esm2020/window/IWindowContent.mjs +0 -135
  214. package/esm2020/window/WindowBase.mjs +0 -177
  215. package/esm2020/window/WindowClosedError.mjs +0 -19
  216. package/esm2020/window/WindowConfig.mjs +0 -197
  217. package/fesm2015/ts-core-angular.mjs +0 -7015
  218. package/fesm2015/ts-core-angular.mjs.map +0 -1
  219. package/fesm2020/ts-core-angular.mjs.map +0 -1
  220. package/form/FormElementAsync.d.ts +0 -13
  221. package/form/FormElementSync.d.ts +0 -22
  222. package/form/ValueAccessor.d.ts +0 -16
  223. package/form/validate.d.ts +0 -9
  224. /package/{esm2020 → esm2022}/ApplicationInjector.mjs +0 -0
  225. /package/{esm2020 → esm2022}/bottomSheet/BottomSheetService.mjs +0 -0
  226. /package/{esm2020 → esm2022}/list/IListItem.mjs +0 -0
  227. /package/{esm2020 → esm2022}/list/select/ISelectListItem.mjs +0 -0
  228. /package/{esm2020 → esm2022}/notification/INotificationConfig.mjs +0 -0
  229. /package/{esm2020 → esm2022}/notification/NotificationService.mjs +0 -0
  230. /package/{esm2020 → esm2022}/notification/NotificationServiceEvent.mjs +0 -0
  231. /package/{esm2020 → esm2022}/question/IQuestion.mjs +0 -0
  232. /package/{esm2020 → esm2022}/service/route/CanDeactivateGuard.mjs +0 -0
  233. /package/{esm2020 → esm2022}/service/route/IRouterDeactivatable.mjs +0 -0
  234. /package/{esm2020 → esm2022}/storage/BooleanValueStorage.mjs +0 -0
  235. /package/{esm2020 → esm2022}/storage/IValueStorage.mjs +0 -0
  236. /package/{esm2020 → esm2022}/ts-core-angular.mjs +0 -0
  237. /package/{esm2020 → esm2022}/window/IWindowConfig.mjs +0 -0
  238. /package/{esm2020 → esm2022}/window/WindowService.mjs +0 -0
  239. /package/{esm2020 → esm2022}/window/WindowServiceEvent.mjs +0 -0
@@ -0,0 +1,236 @@
1
+ import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart } from '@angular/router';
2
+ import { Loadable, LoadableEvent, LoadableStatus } from '@ts-core/common';
3
+ import { ObservableData } from '@ts-core/common';
4
+ import * as _ from 'lodash';
5
+ import { Subject } from 'rxjs';
6
+ import { takeUntil } from 'rxjs';
7
+ export class RouterBaseService extends Loadable {
8
+ _router;
9
+ _route;
10
+ window;
11
+ // --------------------------------------------------------------------------
12
+ //
13
+ // Properties
14
+ //
15
+ // --------------------------------------------------------------------------
16
+ params;
17
+ extrasToApply;
18
+ isNeedUpdateExtras = false;
19
+ _lastUrl;
20
+ _previousUrl;
21
+ // --------------------------------------------------------------------------
22
+ //
23
+ // Constructor
24
+ //
25
+ // --------------------------------------------------------------------------
26
+ constructor(_router, _route, window) {
27
+ super();
28
+ this._router = _router;
29
+ this._route = _route;
30
+ this.window = window;
31
+ this.params = new Map();
32
+ this.observer = new Subject();
33
+ this._lastUrl = this.url;
34
+ this.window.getParams().forEach((value, key) => this.params.set(key, value));
35
+ this.initializeObservers();
36
+ }
37
+ // --------------------------------------------------------------------------
38
+ //
39
+ // Private Methods
40
+ //
41
+ // --------------------------------------------------------------------------
42
+ initializeObservers() {
43
+ this.router.events.pipe(takeUntil(this.destroyed)).subscribe(event => {
44
+ if (event instanceof NavigationStart) {
45
+ this._previousUrl = this.url;
46
+ this.status = LoadableStatus.LOADING;
47
+ }
48
+ else if (event instanceof NavigationEnd || event instanceof NavigationCancel || event instanceof NavigationError) {
49
+ if (event instanceof NavigationEnd) {
50
+ this._lastUrl = event.url;
51
+ }
52
+ this.status = LoadableStatus.LOADED;
53
+ }
54
+ });
55
+ }
56
+ async applyExtras(extras) {
57
+ let params = {};
58
+ params.queryParams = this.getQueryParams();
59
+ if (!_.isNil(extras)) {
60
+ Object.assign(params, extras);
61
+ }
62
+ if (!this.isLoading) {
63
+ return this.router.navigate([], params);
64
+ }
65
+ this.extrasToApply = extras;
66
+ this.isNeedUpdateExtras = true;
67
+ return false;
68
+ }
69
+ getQueryParams() {
70
+ let params = {};
71
+ this.params.forEach((value, key) => (params[key] = value));
72
+ return params;
73
+ }
74
+ commitStatusChangedProperties(oldStatus, newStatus) {
75
+ super.commitStatusChangedProperties(oldStatus, newStatus);
76
+ switch (newStatus) {
77
+ case LoadableStatus.LOADING:
78
+ this.observer.next(new ObservableData(LoadableEvent.STARTED));
79
+ break;
80
+ case LoadableStatus.LOADED:
81
+ if (this.isNeedUpdateExtras) {
82
+ this.isNeedUpdateExtras = false;
83
+ this.applyExtras(this.extrasToApply);
84
+ }
85
+ this.observer.next(new ObservableData(LoadableEvent.COMPLETE, { url: this.url, previousUrl: this.previousUrl }));
86
+ break;
87
+ }
88
+ if (newStatus === LoadableStatus.LOADED || newStatus === LoadableStatus.ERROR) {
89
+ this.observer.next(new ObservableData(LoadableEvent.FINISHED));
90
+ }
91
+ }
92
+ // --------------------------------------------------------------------------
93
+ //
94
+ // Navigate Methods
95
+ //
96
+ // --------------------------------------------------------------------------
97
+ async navigate(url, extras, isClearParams) {
98
+ if (isClearParams) {
99
+ this.params.clear();
100
+ }
101
+ let params = {};
102
+ params.queryParams = this.getQueryParams();
103
+ if (!_.isNil(extras)) {
104
+ Object.assign(params, extras);
105
+ }
106
+ return this.router.navigateByUrl(url, params);
107
+ }
108
+ navigateToExternalUrl(url, target = '_blank') {
109
+ this.window.open(url, target);
110
+ }
111
+ navigateToLast(extras) {
112
+ return this.navigate(this.lastUrl, extras);
113
+ }
114
+ async navigateIfNotLoading(url, extras) {
115
+ return !this.isLoading ? this.navigate(url, extras) : false;
116
+ }
117
+ reload() {
118
+ location.reload();
119
+ }
120
+ // --------------------------------------------------------------------------
121
+ //
122
+ // Public Methods
123
+ //
124
+ // --------------------------------------------------------------------------
125
+ isUrlActive(item, isExact = false) {
126
+ if (isExact) {
127
+ return this.router.isActive(item, isExact);
128
+ }
129
+ if (_.isString(item)) {
130
+ item = this.router.parseUrl(item);
131
+ }
132
+ let current = this.router.parseUrl(this.urlTree.toString());
133
+ item.fragment = current.fragment = null;
134
+ item.queryParams = current.queryParams = {};
135
+ return item.toString() === current.toString();
136
+ }
137
+ // --------------------------------------------------------------------------
138
+ //
139
+ // Public Param Methods
140
+ //
141
+ // --------------------------------------------------------------------------
142
+ getParams() {
143
+ let params = {};
144
+ this.params.forEach((value, key) => (params[key] = value));
145
+ return params;
146
+ }
147
+ hasParam(name) {
148
+ return this.params.has(name);
149
+ }
150
+ getParam(name, defaultValue) {
151
+ return this.hasParam(name) ? this.params.get(name) : defaultValue;
152
+ }
153
+ setParam(name, value, extras) {
154
+ if (!_.isNil(value)) {
155
+ value = value.toString().trim();
156
+ if (_.isEmpty(value)) {
157
+ value = null;
158
+ }
159
+ }
160
+ if (!_.isNil(value)) {
161
+ this.params.set(name, value);
162
+ }
163
+ else {
164
+ this.params.delete(name);
165
+ }
166
+ if (!_.isNil(extras)) {
167
+ extras = { replaceUrl: true };
168
+ }
169
+ this.applyExtras(extras);
170
+ }
171
+ removeParam(name, extras) {
172
+ if (this.hasParam(name)) {
173
+ this.setParam(name, null, extras);
174
+ }
175
+ }
176
+ clearParams(extras) {
177
+ this.params.clear();
178
+ if (!_.isNil(extras)) {
179
+ extras = { replaceUrl: true };
180
+ }
181
+ this.applyExtras(extras);
182
+ }
183
+ get hasParams() {
184
+ return this.params.size > 0;
185
+ }
186
+ // --------------------------------------------------------------------------
187
+ //
188
+ // Fragment Methods
189
+ //
190
+ // --------------------------------------------------------------------------
191
+ getFragment(snapshot, defaultValue) {
192
+ if (_.isNil(snapshot)) {
193
+ snapshot = this.route.snapshot;
194
+ }
195
+ if (_.isNil(defaultValue)) {
196
+ defaultValue = null;
197
+ }
198
+ return !_.isNil(snapshot.fragment) ? snapshot.fragment : defaultValue;
199
+ }
200
+ hasFragment(snapshot) {
201
+ return !_.isNil(this.getFragment(snapshot));
202
+ }
203
+ async setFragment(value) {
204
+ return value !== this.getFragment() ? this.applyExtras({ fragment: value }) : false;
205
+ }
206
+ // --------------------------------------------------------------------------
207
+ //
208
+ // Public Url Methods
209
+ //
210
+ // --------------------------------------------------------------------------
211
+ get url() {
212
+ return this.router.url;
213
+ }
214
+ get urlTree() {
215
+ return this.router.parseUrl(this.url);
216
+ }
217
+ get lastUrl() {
218
+ return this._lastUrl;
219
+ }
220
+ get lastUrlTree() {
221
+ return this.router.parseUrl(this.lastUrl);
222
+ }
223
+ get previousUrl() {
224
+ return this._previousUrl;
225
+ }
226
+ get previousUrlTree() {
227
+ return this.router.parseUrl(this.previousUrl);
228
+ }
229
+ get route() {
230
+ return this._route;
231
+ }
232
+ get router() {
233
+ return this._router;
234
+ }
235
+ }
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyQmFzZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZS9Sb3V0ZXJCYXNlU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixlQUFlLEVBRWYsZUFBZSxFQUdsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFFBQTBDO0lBcUJ2RDtJQUEyQjtJQUFrQztJQXBCbkYsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixjQUFjO0lBQ2QsRUFBRTtJQUNGLDZFQUE2RTtJQUVuRSxNQUFNLENBQXNCO0lBRTVCLGFBQWEsQ0FBbUI7SUFDaEMsa0JBQWtCLEdBQVksS0FBSyxDQUFDO0lBRXBDLFFBQVEsQ0FBUztJQUNqQixZQUFZLENBQVM7SUFFL0IsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixlQUFlO0lBQ2YsRUFBRTtJQUNGLDZFQUE2RTtJQUU3RSxZQUFzQixPQUFlLEVBQVksTUFBc0IsRUFBWSxNQUEyQjtRQUMxRyxLQUFLLEVBQUUsQ0FBQztRQURVLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFBWSxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUFZLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBRTFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFB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RUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIE5hdmlnYXRpb25DYW5jZWwsXG4gICAgTmF2aWdhdGlvbkVuZCxcbiAgICBOYXZpZ2F0aW9uRXJyb3IsXG4gICAgTmF2aWdhdGlvbkV4dHJhcyxcbiAgICBOYXZpZ2F0aW9uU3RhcnQsXG4gICAgUm91dGVyLFxuICAgIFVybFRyZWVcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvYWRhYmxlLCBMb2FkYWJsZUV2ZW50LCBMb2FkYWJsZVN0YXR1cyB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlRGF0YSB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgeyBOYXRpdmVXaW5kb3dTZXJ2aWNlIH0gZnJvbSAnQHRzLWNvcmUvZnJvbnRlbmQnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZXJCYXNlU2VydmljZSBleHRlbmRzIExvYWRhYmxlPHZvaWQsIFJvdXRlckJhc2VTZXJ2aWNlRXZlbnREYXRhPiB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBwYXJhbXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgZXh0cmFzVG9BcHBseTogTmF2aWdhdGlvbkV4dHJhcztcbiAgICBwcm90ZWN0ZWQgaXNOZWVkVXBkYXRlRXh0cmFzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgX2xhc3RVcmw6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX3ByZXZpb3VzVXJsOiBzdHJpbmc7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfcm91dGVyOiBSb3V0ZXIsIHByb3RlY3RlZCBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcm90ZWN0ZWQgd2luZG93OiBOYXRpdmVXaW5kb3dTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucGFyYW1zID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IFN1YmplY3QoKTtcblxuICAgICAgICB0aGlzLl9sYXN0VXJsID0gdGhpcy51cmw7XG4gICAgICAgIHRoaXMud2luZG93LmdldFBhcmFtcygpLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHRoaXMucGFyYW1zLnNldChrZXksIHZhbHVlKSk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9ic2VydmVycygpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFByaXZhdGUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplT2JzZXJ2ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNVcmwgPSB0aGlzLnVybDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cyA9IExvYWRhYmxlU3RhdHVzLkxPQURJTkc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fCBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwgfHwgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RVcmwgPSBldmVudC51cmw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gTG9hZGFibGVTdGF0dXMuTE9BREVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgYXBwbHlFeHRyYXMoZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBsZXQgcGFyYW1zID0ge30gYXMgTmF2aWdhdGlvbkV4dHJhcztcbiAgICAgICAgcGFyYW1zLnF1ZXJ5UGFyYW1zID0gdGhpcy5nZXRRdWVyeVBhcmFtcygpO1xuXG4gICAgICAgIGlmICghXy5pc05pbChleHRyYXMpKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgZXh0cmFzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc0xvYWRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgcGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4dHJhc1RvQXBwbHkgPSBleHRyYXM7XG4gICAgICAgIHRoaXMuaXNOZWVkVXBkYXRlRXh0cmFzID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRRdWVyeVBhcmFtcygpOiBhbnkge1xuICAgICAgICBsZXQgcGFyYW1zID0ge30gYXMgYW55O1xuICAgICAgICB0aGlzLnBhcmFtcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiAocGFyYW1zW2tleV0gPSB2YWx1ZSkpO1xuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb21taXRTdGF0dXNDaGFuZ2VkUHJvcGVydGllcyhvbGRTdGF0dXM6IExvYWRhYmxlU3RhdHVzLCBuZXdTdGF0dXM6IExvYWRhYmxlU3RhdHVzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmNvbW1pdFN0YXR1c0NoYW5nZWRQcm9wZXJ0aWVzKG9sZFN0YXR1cywgbmV3U3RhdHVzKTtcblxuICAgICAgICBzd2l0Y2ggKG5ld1N0YXR1cykge1xuICAgICAgICAgICAgY2FzZSBMb2FkYWJsZVN0YXR1cy5MT0FESU5HOlxuICAgICAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoTG9hZGFibGVFdmVudC5TVEFSVEVEKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIExvYWRhYmxlU3RhdHVzLkxPQURFRDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc05lZWRVcGRhdGVFeHRyYXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05lZWRVcGRhdGVFeHRyYXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseUV4dHJhcyh0aGlzLmV4dHJhc1RvQXBwbHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKExvYWRhYmxlRXZlbnQuQ09NUExFVEUsIHsgdXJsOiB0aGlzLnVybCwgcHJldmlvdXNVcmw6IHRoaXMucHJldmlvdXNVcmwgfSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld1N0YXR1cyA9PT0gTG9hZGFibGVTdGF0dXMuTE9BREVEIHx8IG5ld1N0YXR1cyA9PT0gTG9hZGFibGVTdGF0dXMuRVJST1IpIHtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoTG9hZGFibGVFdmVudC5GSU5JU0hFRCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0TmF2aWdhdGUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBuYXZpZ2F0ZSh1cmw6IHN0cmluZywgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcywgaXNDbGVhclBhcmFtcz86IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgaWYgKGlzQ2xlYXJQYXJhbXMpIHtcbiAgICAgICAgICAgIHRoaXMucGFyYW1zLmNsZWFyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFyYW1zID0ge30gYXMgTmF2aWdhdGlvbkV4dHJhcztcbiAgICAgICAgcGFyYW1zLnF1ZXJ5UGFyYW1zID0gdGhpcy5nZXRRdWVyeVBhcmFtcygpO1xuICAgICAgICBpZiAoIV8uaXNOaWwoZXh0cmFzKSkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJhbXMsIGV4dHJhcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsLCBwYXJhbXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuYXZpZ2F0ZVRvRXh0ZXJuYWxVcmwodXJsOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nID0gJ19ibGFuaycpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53aW5kb3cub3Blbih1cmwsIHRhcmdldCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5hdmlnYXRlVG9MYXN0KGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGUodGhpcy5sYXN0VXJsLCBleHRyYXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBuYXZpZ2F0ZUlmTm90TG9hZGluZyh1cmw6IHN0cmluZywgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNMb2FkaW5nID8gdGhpcy5uYXZpZ2F0ZSh1cmwsIGV4dHJhcykgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBpc1VybEFjdGl2ZShpdGVtOiBzdHJpbmcgfCBVcmxUcmVlLCBpc0V4YWN0OiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5pc0FjdGl2ZShpdGVtLCBpc0V4YWN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc1N0cmluZyhpdGVtKSkge1xuICAgICAgICAgICAgaXRlbSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGN1cnJlbnQgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnVybFRyZWUudG9TdHJpbmcoKSk7XG4gICAgICAgIGl0ZW0uZnJhZ21lbnQgPSBjdXJyZW50LmZyYWdtZW50ID0gbnVsbDtcbiAgICAgICAgaXRlbS5xdWVyeVBhcmFtcyA9IGN1cnJlbnQucXVlcnlQYXJhbXMgPSB7fTtcbiAgICAgICAgcmV0dXJuIGl0ZW0udG9TdHJpbmcoKSA9PT0gY3VycmVudC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFB1YmxpYyBQYXJhbSBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGdldFBhcmFtczxUID0gYW55PigpOiBUIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHt9IGFzIGFueTtcbiAgICAgICAgdGhpcy5wYXJhbXMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gKHBhcmFtc1trZXldID0gdmFsdWUpKTtcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzUGFyYW0obmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmFtcy5oYXMobmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcmFtPFQgPSBzdHJpbmc+KG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogVCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNQYXJhbShuYW1lKSA/ICh0aGlzLnBhcmFtcy5nZXQobmFtZSkgYXMgYW55KSA6IGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UGFyYW0obmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKS50cmltKCk7XG4gICAgICAgICAgICBpZiAoXy5pc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIV8uaXNOaWwodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmFtcy5zZXQobmFtZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYXJhbXMuZGVsZXRlKG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05pbChleHRyYXMpKSB7XG4gICAgICAgICAgICBleHRyYXMgPSB7IHJlcGxhY2VVcmw6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGx5RXh0cmFzKGV4dHJhcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVBhcmFtKG5hbWU6IHN0cmluZywgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oYXNQYXJhbShuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRQYXJhbShuYW1lLCBudWxsLCBleHRyYXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyUGFyYW1zKGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXJhbXMuY2xlYXIoKTtcbiAgICAgICAgaWYgKCFfLmlzTmlsKGV4dHJhcykpIHtcbiAgICAgICAgICAgIGV4dHJhcyA9IHsgcmVwbGFjZVVybDogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwbHlFeHRyYXMoZXh0cmFzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1BhcmFtcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1zLnNpemUgPiAwO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdEZyYWdtZW50IE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0RnJhZ21lbnQoc25hcHNob3Q/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoXy5pc05pbChzbmFwc2hvdCkpIHtcbiAgICAgICAgICAgIHNuYXBzaG90ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc05pbChkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhXy5pc05pbChzbmFwc2hvdC5mcmFnbWVudCkgPyBzbmFwc2hvdC5mcmFnbWVudCA6IGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRnJhZ21lbnQoc25hcHNob3Q/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhXy5pc05pbCh0aGlzLmdldEZyYWdtZW50KHNuYXBzaG90KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldEZyYWdtZW50KHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB0aGlzLmdldEZyYWdtZW50KCkgPyB0aGlzLmFwcGx5RXh0cmFzKHsgZnJhZ21lbnQ6IHZhbHVlIH0pIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIFVybCBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLnVybDtcbiAgICB9XG4gICAgcHVibGljIGdldCB1cmxUcmVlKCk6IFVybFRyZWUge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy51cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbGFzdFVybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFVybDtcbiAgICB9XG4gICAgcHVibGljIGdldCBsYXN0VXJsVHJlZSgpOiBVcmxUcmVlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMubGFzdFVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwcmV2aW91c1VybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNVcmw7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgcHJldmlvdXNVcmxUcmVlKCk6IFVybFRyZWUge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5wcmV2aW91c1VybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3V0ZSgpOiBBY3RpdmF0ZWRSb3V0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvdXRlcigpOiBSb3V0ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm91dGVyO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb3V0ZXJCYXNlU2VydmljZUV2ZW50RGF0YSB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgcHJldmlvdXNVcmw6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,46 @@
1
+ import { DateUtil } from '@ts-core/common';
2
+ import { ValueStorage } from './ValueStorage';
3
+ import * as _ from 'lodash';
4
+ export class DateValueStorage extends ValueStorage {
5
+ //--------------------------------------------------------------------------
6
+ //
7
+ // Public Methods
8
+ //
9
+ //--------------------------------------------------------------------------
10
+ defaultExpirationDelta = 0;
11
+ //--------------------------------------------------------------------------
12
+ //
13
+ // Protected Methods
14
+ //
15
+ //--------------------------------------------------------------------------
16
+ serialize(value) {
17
+ return new Date(value);
18
+ }
19
+ deserialize(value) {
20
+ return value.toISOString();
21
+ }
22
+ //--------------------------------------------------------------------------
23
+ //
24
+ // Public Methods
25
+ //
26
+ //--------------------------------------------------------------------------
27
+ isMore(item) {
28
+ return this.has() ? this.get().getTime() > item.getTime() : false;
29
+ }
30
+ isLess(item) {
31
+ return this.has() ? this.get().getTime() < item.getTime() : false;
32
+ }
33
+ isEqual(item) {
34
+ return this.has() ? this.get().getTime() === item.getTime() : false;
35
+ }
36
+ isExpired(item) {
37
+ return this.has() ? this.isLess(item) : true;
38
+ }
39
+ isExpiredFromNow(delta) {
40
+ if (_.isNil(delta)) {
41
+ delta = this.defaultExpirationDelta;
42
+ }
43
+ return this.isExpired(DateUtil.getDate(Date.now() + delta));
44
+ }
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVZhbHVlU3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL0RhdGVWYWx1ZVN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsWUFBa0I7SUFDcEQsNEVBQTRFO0lBQzVFLEVBQUU7SUFDRixrQkFBa0I7SUFDbEIsRUFBRTtJQUNGLDRFQUE0RTtJQUVyRSxzQkFBc0IsR0FBVyxDQUFDLENBQUM7SUFFMUMsNEVBQTRFO0lBQzVFLEVBQUU7SUFDRixxQkFBcUI7SUFDckIsRUFBRTtJQUNGLDRFQUE0RTtJQUVsRSxTQUFTLENBQUMsS0FBYTtRQUM3QixPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFUyxXQUFXLENBQUMsS0FBVztRQUM3QixPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLEVBQUU7SUFDRixrQkFBa0I7SUFDbEIsRUFBRTtJQUNGLDRFQUE0RTtJQUVyRSxNQUFNLENBQUMsSUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxPQUFPLENBQUMsSUFBVTtRQUNyQixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxTQUFTLENBQUMsSUFBVTtRQUN2QixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFjO1FBQ2xDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQixLQUFLLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVV0aWwgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgVmFsdWVTdG9yYWdlIH0gZnJvbSAnLi9WYWx1ZVN0b3JhZ2UnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgY2xhc3MgRGF0ZVZhbHVlU3RvcmFnZSBleHRlbmRzIFZhbHVlU3RvcmFnZTxEYXRlPiB7XG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGRlZmF1bHRFeHBpcmF0aW9uRGVsdGE6IG51bWJlciA9IDA7XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFByb3RlY3RlZCBNZXRob2RzXG4gICAgLy9cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgc2VyaWFsaXplKHZhbHVlOiBzdHJpbmcpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVzZXJpYWxpemUodmFsdWU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9JU09TdHJpbmcoKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFB1YmxpYyBNZXRob2RzXG4gICAgLy9cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgaXNNb3JlKGl0ZW06IERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzKCkgPyB0aGlzLmdldCgpLmdldFRpbWUoKSA+IGl0ZW0uZ2V0VGltZSgpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGlzTGVzcyhpdGVtOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhcygpID8gdGhpcy5nZXQoKS5nZXRUaW1lKCkgPCBpdGVtLmdldFRpbWUoKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0VxdWFsKGl0ZW06IERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzKCkgPyB0aGlzLmdldCgpLmdldFRpbWUoKSA9PT0gaXRlbS5nZXRUaW1lKCkgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNFeHBpcmVkKGl0ZW06IERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzKCkgPyB0aGlzLmlzTGVzcyhpdGVtKSA6IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXhwaXJlZEZyb21Ob3coZGVsdGE/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoZGVsdGEpKSB7XG4gICAgICAgICAgICBkZWx0YSA9IHRoaXMuZGVmYXVsdEV4cGlyYXRpb25EZWx0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5pc0V4cGlyZWQoRGF0ZVV0aWwuZ2V0RGF0ZShEYXRlLm5vdygpICsgZGVsdGEpKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { DestroyableContainer } from '@ts-core/common';
2
+ import * as _ from 'lodash';
3
+ export class LocalStorageService extends DestroyableContainer {
4
+ nativeWindow;
5
+ //--------------------------------------------------------------------------
6
+ //
7
+ // Constructor
8
+ //
9
+ //--------------------------------------------------------------------------
10
+ constructor(nativeWindow) {
11
+ super();
12
+ this.nativeWindow = nativeWindow;
13
+ }
14
+ //--------------------------------------------------------------------------
15
+ //
16
+ // Public Methods
17
+ //
18
+ //--------------------------------------------------------------------------
19
+ get(key, defaultValue) {
20
+ return this.has(key) ? this.storage.getItem(key) : defaultValue;
21
+ }
22
+ has(key) {
23
+ return !_.isNil(this.storage.getItem(key));
24
+ }
25
+ set(key, value) {
26
+ if (!_.isNil(value)) {
27
+ this.storage.setItem(key, value);
28
+ }
29
+ else {
30
+ this.remove(key);
31
+ }
32
+ }
33
+ remove(key) {
34
+ this.storage.removeItem(key);
35
+ }
36
+ clear() {
37
+ this.storage.clear();
38
+ }
39
+ destroy() {
40
+ if (this.isDestroyed) {
41
+ return;
42
+ }
43
+ super.destroy();
44
+ this.nativeWindow = null;
45
+ }
46
+ //--------------------------------------------------------------------------
47
+ //
48
+ // Protected Properties
49
+ //
50
+ //--------------------------------------------------------------------------
51
+ get length() {
52
+ return this.storage.length;
53
+ }
54
+ get storage() {
55
+ return this.nativeWindow.window.localStorage;
56
+ }
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxTdG9yYWdlU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL0xvY2FsU3RvcmFnZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG9CQUFvQjtJQU9yQztJQU5wQiw0RUFBNEU7SUFDNUUsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBQ0YsNEVBQTRFO0lBRTVFLFlBQW9CLFlBQWlDO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBRFEsaUJBQVksR0FBWixZQUFZLENBQXFCO0lBRXJELENBQUM7SUFFRCw0RUFBNEU7SUFDNUUsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixFQUFFO0lBQ0YsNEVBQTRFO0lBRXJFLEdBQUcsQ0FBQyxHQUFXLEVBQUUsWUFBcUI7UUFDekMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3BFLENBQUM7SUFFTSxHQUFHLENBQUMsR0FBVztRQUNsQixPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTSxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDakMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3BDO2FBQU07WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFXO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxLQUFLO1FBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sT0FBTztRQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPO1NBQ1Y7UUFDRCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELDRFQUE0RTtJQUM1RSxFQUFFO0lBQ0Ysd0JBQXdCO0lBQ3hCLEVBQUU7SUFDRiw0RUFBNEU7SUFFNUUsSUFBYyxNQUFNO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQWMsT0FBTztRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNqRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95YWJsZUNvbnRhaW5lciB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgeyBOYXRpdmVXaW5kb3dTZXJ2aWNlIH0gZnJvbSAnQHRzLWNvcmUvZnJvbnRlbmQnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlU2VydmljZSBleHRlbmRzIERlc3Ryb3lhYmxlQ29udGFpbmVyIHtcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdENvbnN0cnVjdG9yXG4gICAgLy9cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5hdGl2ZVdpbmRvdzogTmF0aXZlV2luZG93U2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhcyhrZXkpID8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oa2V5KSA6IGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhXy5pc05pbCh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmUoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5jbGVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5uYXRpdmVXaW5kb3cgPSBudWxsO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvdGVjdGVkIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UubGVuZ3RoO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgc3RvcmFnZSgpOiBTdG9yYWdlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlV2luZG93LndpbmRvdy5sb2NhbFN0b3JhZ2U7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,75 @@
1
+ import { DestroyableContainer } from '@ts-core/common';
2
+ import * as _ from 'lodash';
3
+ export class ValueStorage extends DestroyableContainer {
4
+ storage;
5
+ cookies;
6
+ //--------------------------------------------------------------------------
7
+ //
8
+ // Properties
9
+ //
10
+ //--------------------------------------------------------------------------
11
+ _name;
12
+ //--------------------------------------------------------------------------
13
+ //
14
+ // Constructor
15
+ //
16
+ //--------------------------------------------------------------------------
17
+ constructor(name, storage, cookies) {
18
+ super();
19
+ this.storage = storage;
20
+ this.cookies = cookies;
21
+ this._name = name;
22
+ }
23
+ //--------------------------------------------------------------------------
24
+ //
25
+ // Protected Methods
26
+ //
27
+ //--------------------------------------------------------------------------
28
+ serialize(value) {
29
+ return value;
30
+ }
31
+ deserialize(value) {
32
+ return value;
33
+ }
34
+ //--------------------------------------------------------------------------
35
+ //
36
+ // Public Methods
37
+ //
38
+ //--------------------------------------------------------------------------
39
+ get(defaultValue) {
40
+ let item = null;
41
+ if (this.storage.has(this.name)) {
42
+ item = this.storage.get(this.name);
43
+ }
44
+ else if (this.cookies.has(this.name)) {
45
+ item = this.cookies.get(this.name);
46
+ }
47
+ return !_.isNil(item) ? this.serialize(item) : defaultValue;
48
+ }
49
+ has() {
50
+ return this.storage.has(this.name) || this.cookies.has(this.name);
51
+ }
52
+ set(value) {
53
+ let item = !_.isNil(value) ? this.deserialize(value) : null;
54
+ this.cookies.put(this.name, item);
55
+ this.storage.set(this.name, item);
56
+ return value;
57
+ }
58
+ destroy() {
59
+ if (this.isDestroyed) {
60
+ return;
61
+ }
62
+ super.destroy();
63
+ this.cookies = null;
64
+ this.storage = null;
65
+ }
66
+ //--------------------------------------------------------------------------
67
+ //
68
+ // Public Properties
69
+ //
70
+ //--------------------------------------------------------------------------
71
+ get name() {
72
+ return this._name;
73
+ }
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsdWVTdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JhZ2UvVmFsdWVTdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSXZELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE1BQU0sT0FBTyxZQUF5QixTQUFRLG9CQUFvQjtJQWUxQjtJQUF3QztJQWQ1RSw0RUFBNEU7SUFDNUUsRUFBRTtJQUNGLGNBQWM7SUFDZCxFQUFFO0lBQ0YsNEVBQTRFO0lBRWxFLEtBQUssQ0FBUztJQUV4Qiw0RUFBNEU7SUFDNUUsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBQ0YsNEVBQTRFO0lBRTVFLFlBQVksSUFBWSxFQUFZLE9BQTRCLEVBQVksT0FBc0I7UUFDOUYsS0FBSyxFQUFFLENBQUM7UUFEd0IsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFBWSxZQUFPLEdBQVAsT0FBTyxDQUFlO1FBRTlGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFRCw0RUFBNEU7SUFDNUUsRUFBRTtJQUNGLHFCQUFxQjtJQUNyQixFQUFFO0lBQ0YsNEVBQTRFO0lBRWxFLFNBQVMsQ0FBQyxLQUFhO1FBQzdCLE9BQU8sS0FBVSxDQUFDO0lBQ3RCLENBQUM7SUFFUyxXQUFXLENBQUMsS0FBUTtRQUMxQixPQUFPLEtBQWUsQ0FBQztJQUMzQixDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLEVBQUU7SUFDRixrQkFBa0I7SUFDbEIsRUFBRTtJQUNGLDRFQUE0RTtJQUVyRSxHQUFHLENBQUMsWUFBZ0I7UUFDdkIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzdCLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RDO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUNoRSxDQUFDO0lBRU0sR0FBRztRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU0sR0FBRyxDQUFDLEtBQVE7UUFDZixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBQ0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCw0RUFBNEU7SUFDNUUsRUFBRTtJQUNGLHFCQUFxQjtJQUNyQixFQUFFO0lBQ0YsNEVBQTRFO0lBRTVFLElBQVcsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95YWJsZUNvbnRhaW5lciB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi4vY29va2llL0Nvb2tpZVNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3N0b3JhZ2UvTG9jYWxTdG9yYWdlU2VydmljZSc7XG5pbXBvcnQgeyBJVmFsdWVTdG9yYWdlIH0gZnJvbSAnLi9JVmFsdWVTdG9yYWdlJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNsYXNzIFZhbHVlU3RvcmFnZTxUID0gc3RyaW5nPiBleHRlbmRzIERlc3Ryb3lhYmxlQ29udGFpbmVyIGltcGxlbWVudHMgSVZhbHVlU3RvcmFnZTxUPiB7XG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgX25hbWU6IHN0cmluZztcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0Q29uc3RydWN0b3JcbiAgICAvL1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcHJvdGVjdGVkIHN0b3JhZ2U6IExvY2FsU3RvcmFnZVNlcnZpY2UsIHByb3RlY3RlZCBjb29raWVzOiBDb29raWVTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX25hbWUgPSBuYW1lO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvdGVjdGVkIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBzZXJpYWxpemUodmFsdWU6IHN0cmluZyk6IFQge1xuICAgICAgICByZXR1cm4gdmFsdWUgYXMgVDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVzZXJpYWxpemUodmFsdWU6IFQpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUgYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBnZXQoZGVmYXVsdFZhbHVlPzogVCk6IFQge1xuICAgICAgICBsZXQgaXRlbSA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnN0b3JhZ2UuaGFzKHRoaXMubmFtZSkpIHtcbiAgICAgICAgICAgIGl0ZW0gPSB0aGlzLnN0b3JhZ2UuZ2V0KHRoaXMubmFtZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb29raWVzLmhhcyh0aGlzLm5hbWUpKSB7XG4gICAgICAgICAgICBpdGVtID0gdGhpcy5jb29raWVzLmdldCh0aGlzLm5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhXy5pc05pbChpdGVtKSA/IHRoaXMuc2VyaWFsaXplKGl0ZW0pIDogZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuaGFzKHRoaXMubmFtZSkgfHwgdGhpcy5jb29raWVzLmhhcyh0aGlzLm5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQodmFsdWU6IFQpOiBUIHtcbiAgICAgICAgbGV0IGl0ZW0gPSAhXy5pc05pbCh2YWx1ZSkgPyB0aGlzLmRlc2VyaWFsaXplKHZhbHVlKSA6IG51bGw7XG4gICAgICAgIHRoaXMuY29va2llcy5wdXQodGhpcy5uYW1lLCBpdGVtKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCh0aGlzLm5hbWUsIGl0ZW0pO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmNvb2tpZXMgPSBudWxsO1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSBudWxsO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgICB9XG59XG4iXX0=
@@ -36,16 +36,16 @@ export class ThemeAssetBackgroundDirective extends ThemeAssetDirective {
36
36
  get name() {
37
37
  return super.name;
38
38
  }
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ThemeAssetBackgroundDirective, deps: [{ token: i0.ElementRef }, { token: i1.ThemeService }, { token: i1.ThemeAssetService }], target: i0.ɵɵFactoryTarget.Directive });
40
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: ThemeAssetBackgroundDirective, selector: "[vi-theme-background]", inputs: { name: ["vi-theme-background", "name"] }, usesInheritance: true, ngImport: i0 });
39
41
  }
40
- ThemeAssetBackgroundDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ThemeAssetBackgroundDirective, deps: [{ token: i0.ElementRef }, { token: i1.ThemeService }, { token: i1.ThemeAssetService }], target: i0.ɵɵFactoryTarget.Directive });
41
- ThemeAssetBackgroundDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ThemeAssetBackgroundDirective, selector: "[vi-theme-background]", inputs: { name: ["vi-theme-background", "name"] }, usesInheritance: true, ngImport: i0 });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ThemeAssetBackgroundDirective, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ThemeAssetBackgroundDirective, decorators: [{
43
43
  type: Directive,
44
44
  args: [{
45
45
  selector: '[vi-theme-background]'
46
46
  }]
47
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThemeService }, { type: i1.ThemeAssetService }]; }, propDecorators: { name: [{
47
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ThemeService }, { type: i1.ThemeAssetService }], propDecorators: { name: [{
48
48
  type: Input,
49
49
  args: ['vi-theme-background']
50
50
  }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhlbWVBc3NldEJhY2tncm91bmREaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGhlbWUvVGhlbWVBc3NldEJhY2tncm91bmREaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFLNUQsTUFBTSxPQUFPLDZCQUE4QixTQUFRLG1CQUFtQjtJQUNsRSw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGNBQWM7SUFDZCxFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFLFlBQVksT0FBbUIsRUFBRSxLQUFtQixFQUFFLFVBQTZCO1FBQy9FLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixFQUFFO0lBQ0YsNkVBQTZFO0lBRW5FLHNCQUFzQjtRQUM1QixJQUFJLEtBQUssR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDdkMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFUyxzQkFBc0I7UUFDNUIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysb0JBQW9CO0lBQ3BCLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsSUFDVyxJQUFJLENBQUMsS0FBYTtRQUN6QixLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBVyxJQUFJO1FBQ1gsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3RCLENBQUM7OzJIQXZDUSw2QkFBNkI7K0dBQTdCLDZCQUE2Qjs0RkFBN0IsNkJBQTZCO2tCQUh6QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7aUJBQ3BDOzRKQW1DYyxJQUFJO3NCQURkLEtBQUs7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlbWVBc3NldFNlcnZpY2UsIFRoZW1lU2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kJztcbmltcG9ydCB7IFZpZXdVdGlsIH0gZnJvbSAnLi4vdXRpbC9WaWV3VXRpbCc7XG5pbXBvcnQgeyBUaGVtZUFzc2V0RGlyZWN0aXZlIH0gZnJvbSAnLi9UaGVtZUFzc2V0RGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdmktdGhlbWUtYmFja2dyb3VuZF0nXG59KVxuZXhwb3J0IGNsYXNzIFRoZW1lQXNzZXRCYWNrZ3JvdW5kRGlyZWN0aXZlIGV4dGVuZHMgVGhlbWVBc3NldERpcmVjdGl2ZSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHRoZW1lOiBUaGVtZVNlcnZpY2UsIHRoZW1lQXNzZXQ6IFRoZW1lQXNzZXRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnQsIHRoZW1lLCB0aGVtZUFzc2V0KTtcbiAgICAgICAgdGhpcy5pc0JhY2tncm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHJpdmF0ZSBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIGNvbW1pdFNvdXJjZVByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIGxldCB2YWx1ZSA9ICd1cmwoJyArIHRoaXMuc291cmNlICsgJyknO1xuICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsICdiYWNrZ3JvdW5kSW1hZ2UnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlbW92ZVNvdXJjZVByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnJlbW92ZVN0eWxlKHRoaXMuZWxlbWVudCwgJ2JhY2tncm91bmRJbWFnZScpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBASW5wdXQoJ3ZpLXRoZW1lLWJhY2tncm91bmQnKVxuICAgIHB1YmxpYyBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyLm5hbWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzdXBlci5uYW1lO1xuICAgIH1cbn1cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhlbWVBc3NldEJhY2tncm91bmREaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGhlbWUvVGhlbWVBc3NldEJhY2tncm91bmREaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFLNUQsTUFBTSxPQUFPLDZCQUE4QixTQUFRLG1CQUFtQjtJQUNsRSw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGNBQWM7SUFDZCxFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFLFlBQVksT0FBbUIsRUFBRSxLQUFtQixFQUFFLFVBQTZCO1FBQy9FLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixFQUFFO0lBQ0YsNkVBQTZFO0lBRW5FLHNCQUFzQjtRQUM1QixJQUFJLEtBQUssR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDdkMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFUyxzQkFBc0I7UUFDNUIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysb0JBQW9CO0lBQ3BCLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsSUFDVyxJQUFJLENBQUMsS0FBYTtRQUN6QixLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBVyxJQUFJO1FBQ1gsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3RCLENBQUM7dUdBdkNRLDZCQUE2QjsyRkFBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUh6QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7aUJBQ3BDOzBJQW1DYyxJQUFJO3NCQURkLEtBQUs7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlbWVBc3NldFNlcnZpY2UsIFRoZW1lU2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kJztcbmltcG9ydCB7IFZpZXdVdGlsIH0gZnJvbSAnLi4vdXRpbC9WaWV3VXRpbCc7XG5pbXBvcnQgeyBUaGVtZUFzc2V0RGlyZWN0aXZlIH0gZnJvbSAnLi9UaGVtZUFzc2V0RGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdmktdGhlbWUtYmFja2dyb3VuZF0nXG59KVxuZXhwb3J0IGNsYXNzIFRoZW1lQXNzZXRCYWNrZ3JvdW5kRGlyZWN0aXZlIGV4dGVuZHMgVGhlbWVBc3NldERpcmVjdGl2ZSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHRoZW1lOiBUaGVtZVNlcnZpY2UsIHRoZW1lQXNzZXQ6IFRoZW1lQXNzZXRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnQsIHRoZW1lLCB0aGVtZUFzc2V0KTtcbiAgICAgICAgdGhpcy5pc0JhY2tncm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHJpdmF0ZSBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIGNvbW1pdFNvdXJjZVByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIGxldCB2YWx1ZSA9ICd1cmwoJyArIHRoaXMuc291cmNlICsgJyknO1xuICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsICdiYWNrZ3JvdW5kSW1hZ2UnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlbW92ZVNvdXJjZVByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnJlbW92ZVN0eWxlKHRoaXMuZWxlbWVudCwgJ2JhY2tncm91bmRJbWFnZScpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBASW5wdXQoJ3ZpLXRoZW1lLWJhY2tncm91bmQnKVxuICAgIHB1YmxpYyBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyLm5hbWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzdXBlci5uYW1lO1xuICAgIH1cbn1cbiJdfQ==