@osovitny/anatoly 2.1.14 → 2.14.1

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 (161) hide show
  1. package/assets/styles/alerts.less +182 -0
  2. package/assets/styles/spinner.less +64 -0
  3. package/assets/styles/toastr.less +192 -0
  4. package/esm2020/lib/core/core.module.mjs +72 -0
  5. package/esm2020/lib/core/go/base-go.service.mjs +41 -0
  6. package/esm2020/lib/core/interceptors/httpInterceptor.mjs +108 -0
  7. package/esm2020/lib/core/localization/localization.module.mjs +47 -0
  8. package/esm2020/lib/core/localization/localization.service.mjs +185 -0
  9. package/esm2020/lib/core/localization/localizationSettings.module.mjs +88 -0
  10. package/esm2020/lib/core/localization/localize.pipe.mjs +78 -0
  11. package/esm2020/lib/core/logging/globalErrorHandler.mjs +44 -0
  12. package/esm2020/lib/core/logging/logging.service.mjs +39 -0
  13. package/esm2020/lib/core/notifications/services/notification-service.mjs +228 -0
  14. package/esm2020/lib/core/services/appcontext.service.mjs +118 -0
  15. package/esm2020/lib/core/services/dm.service.mjs +72 -0
  16. package/esm2020/lib/core/services/google-analytics.service.mjs +54 -0
  17. package/{esm2015/lib/core/services/idle.service.js → esm2020/lib/core/services/idle.service.mjs} +9 -7
  18. package/{esm2015/lib/core/services/loading.service.js → esm2020/lib/core/services/loading.service.mjs} +9 -8
  19. package/esm2020/lib/core/services/web-storage.service.mjs +69 -0
  20. package/esm2020/lib/core/utils.mjs +82 -0
  21. package/esm2020/lib/data/base/base-api.service.mjs +89 -0
  22. package/esm2020/lib/data/base/grid/base-grid-edit.service.mjs +77 -0
  23. package/esm2020/lib/data/base/grid/base-grid-read.service.mjs +62 -0
  24. package/esm2020/lib/data/data.module.mjs +51 -0
  25. package/esm2020/lib/data/services/billing-api.service.mjs +65 -0
  26. package/esm2020/lib/data/services/notifications/notifications-api-service.mjs +43 -0
  27. package/esm2020/lib/ui/components/base-edit.component.mjs +143 -0
  28. package/esm2020/lib/ui/components/base.component.mjs +47 -0
  29. package/esm2020/lib/ui/components/base.dialog.mjs +49 -0
  30. package/esm2020/lib/ui/components/billing/buyaccess-button.component.mjs +69 -0
  31. package/esm2020/lib/ui/components/billing/subscribe-plan-button.component.mjs +63 -0
  32. package/esm2020/lib/ui/components/billing/upgrade-plan-button.component.mjs +53 -0
  33. package/esm2020/lib/ui/components/content-header/content-header.component.mjs +37 -0
  34. package/esm2020/lib/ui/components/html-editor/base-html-editor.component.mjs +111 -0
  35. package/esm2020/lib/ui/components/html-editor/forms-html-editor.component.mjs +48 -0
  36. package/esm2020/lib/ui/components/html-editor/html-editor.component.mjs +52 -0
  37. package/esm2020/lib/ui/components/identity/signin-button.component.mjs +32 -0
  38. package/esm2020/lib/ui/components/identity/signout-button.component.mjs +32 -0
  39. package/esm2020/lib/ui/components/identity/signup-button.component.mjs +31 -0
  40. package/esm2020/lib/ui/components/loading/loading.component.mjs +48 -0
  41. package/esm2020/lib/ui/components/spinner/spinner.component.mjs +74 -0
  42. package/esm2020/lib/ui/directives/native-element.directive.mjs +41 -0
  43. package/esm2020/lib/ui/pipes/filesize.pipe.mjs +45 -0
  44. package/esm2020/lib/ui/pipes/replace-text.pipe.mjs +40 -0
  45. package/esm2020/lib/ui/pipes/safeHtml.pipe.mjs +37 -0
  46. package/esm2020/lib/ui/ui.module.mjs +155 -0
  47. package/esm2020/lib/ui/validation/form-validation-summary.component.mjs +66 -0
  48. package/esm2020/lib/ui/validation/item-validation-summary.component.mjs +39 -0
  49. package/esm2020/lib/ui/validation/validation-summary.component.mjs +128 -0
  50. package/fesm2015/{osovitny-anatoly.js → osovitny-anatoly.mjs} +771 -717
  51. package/fesm2015/osovitny-anatoly.mjs.map +1 -0
  52. package/fesm2020/osovitny-anatoly.mjs +3496 -0
  53. package/fesm2020/osovitny-anatoly.mjs.map +1 -0
  54. package/{osovitny-anatoly.d.ts → index.d.ts} +1 -0
  55. package/lib/core/core.module.d.ts +5 -0
  56. package/lib/core/go/base-go.service.d.ts +3 -0
  57. package/lib/core/interceptors/httpInterceptor.d.ts +3 -0
  58. package/lib/core/localization/localization.module.d.ts +6 -0
  59. package/lib/core/localization/localization.service.d.ts +3 -0
  60. package/lib/core/localization/localizationSettings.module.d.ts +5 -0
  61. package/lib/core/localization/localize.pipe.d.ts +3 -0
  62. package/lib/core/logging/globalErrorHandler.d.ts +3 -0
  63. package/lib/core/logging/logging.service.d.ts +3 -0
  64. package/lib/core/notifications/services/notification-service.d.ts +3 -0
  65. package/lib/core/services/appcontext.service.d.ts +3 -0
  66. package/lib/core/services/dm.service.d.ts +3 -0
  67. package/lib/core/services/google-analytics.service.d.ts +3 -0
  68. package/lib/core/services/idle.service.d.ts +3 -0
  69. package/lib/core/services/loading.service.d.ts +3 -0
  70. package/lib/core/services/web-storage.service.d.ts +5 -0
  71. package/lib/data/base/base-api.service.d.ts +3 -0
  72. package/lib/data/base/grid/base-grid-edit.service.d.ts +3 -0
  73. package/lib/data/base/grid/base-grid-read.service.d.ts +3 -0
  74. package/lib/data/data.module.d.ts +5 -0
  75. package/lib/data/services/billing-api.service.d.ts +3 -0
  76. package/lib/data/services/notifications/notifications-api-service.d.ts +3 -0
  77. package/lib/ui/components/base-edit.component.d.ts +5 -2
  78. package/lib/ui/components/base.component.d.ts +3 -0
  79. package/lib/ui/components/base.dialog.d.ts +3 -0
  80. package/lib/ui/components/billing/buyaccess-button.component.d.ts +3 -0
  81. package/lib/ui/components/billing/subscribe-plan-button.component.d.ts +3 -0
  82. package/lib/ui/components/billing/upgrade-plan-button.component.d.ts +3 -0
  83. package/lib/ui/components/content-header/content-header.component.d.ts +3 -0
  84. package/lib/ui/components/html-editor/base-html-editor.component.d.ts +3 -0
  85. package/lib/ui/components/html-editor/forms-html-editor.component.d.ts +3 -0
  86. package/lib/ui/components/html-editor/html-editor.component.d.ts +3 -0
  87. package/lib/ui/components/identity/signin-button.component.d.ts +3 -0
  88. package/lib/ui/components/identity/signout-button.component.d.ts +3 -0
  89. package/lib/ui/components/identity/signup-button.component.d.ts +3 -0
  90. package/lib/ui/components/loading/loading.component.d.ts +3 -0
  91. package/lib/ui/components/spinner/spinner.component.d.ts +3 -0
  92. package/lib/ui/directives/native-element.directive.d.ts +3 -0
  93. package/lib/ui/pipes/filesize.pipe.d.ts +3 -0
  94. package/lib/ui/pipes/replace-text.pipe.d.ts +3 -0
  95. package/lib/ui/pipes/safeHtml.pipe.d.ts +3 -0
  96. package/lib/ui/ui.module.d.ts +24 -0
  97. package/lib/ui/validation/form-validation-summary.component.d.ts +3 -0
  98. package/lib/ui/validation/item-validation-summary.component.d.ts +3 -0
  99. package/lib/ui/validation/validation-summary.component.d.ts +3 -0
  100. package/package.json +23 -11
  101. package/bundles/osovitny-anatoly.umd.js +0 -3700
  102. package/bundles/osovitny-anatoly.umd.js.map +0 -1
  103. package/esm2015/lib/core/core.module.js +0 -58
  104. package/esm2015/lib/core/go/base-go.service.js +0 -42
  105. package/esm2015/lib/core/interceptors/httpInterceptor.js +0 -109
  106. package/esm2015/lib/core/localization/localization.module.js +0 -41
  107. package/esm2015/lib/core/localization/localization.service.js +0 -187
  108. package/esm2015/lib/core/localization/localizationSettings.module.js +0 -78
  109. package/esm2015/lib/core/localization/localize.pipe.js +0 -78
  110. package/esm2015/lib/core/logging/globalErrorHandler.js +0 -44
  111. package/esm2015/lib/core/logging/logging.service.js +0 -38
  112. package/esm2015/lib/core/notifications/services/notification-service.js +0 -230
  113. package/esm2015/lib/core/services/appcontext.service.js +0 -119
  114. package/esm2015/lib/core/services/dm.service.js +0 -74
  115. package/esm2015/lib/core/services/google-analytics.service.js +0 -53
  116. package/esm2015/lib/core/services/web-storage.service.js +0 -66
  117. package/esm2015/lib/core/utils.js +0 -81
  118. package/esm2015/lib/data/base/base-api.service.js +0 -89
  119. package/esm2015/lib/data/base/grid/base-grid-edit.service.js +0 -77
  120. package/esm2015/lib/data/base/grid/base-grid-read.service.js +0 -62
  121. package/esm2015/lib/data/data.module.js +0 -43
  122. package/esm2015/lib/data/services/billing-api.service.js +0 -65
  123. package/esm2015/lib/data/services/notifications/notifications-api-service.js +0 -45
  124. package/esm2015/lib/ui/components/base-edit.component.js +0 -142
  125. package/esm2015/lib/ui/components/base.component.js +0 -43
  126. package/esm2015/lib/ui/components/base.dialog.js +0 -47
  127. package/esm2015/lib/ui/components/billing/buyaccess-button.component.js +0 -71
  128. package/esm2015/lib/ui/components/billing/subscribe-plan-button.component.js +0 -63
  129. package/esm2015/lib/ui/components/billing/upgrade-plan-button.component.js +0 -54
  130. package/esm2015/lib/ui/components/content-header/content-header.component.js +0 -37
  131. package/esm2015/lib/ui/components/html-editor/base-html-editor.component.js +0 -108
  132. package/esm2015/lib/ui/components/html-editor/forms-html-editor.component.js +0 -44
  133. package/esm2015/lib/ui/components/html-editor/html-editor.component.js +0 -51
  134. package/esm2015/lib/ui/components/identity/signin-button.component.js +0 -33
  135. package/esm2015/lib/ui/components/identity/signout-button.component.js +0 -33
  136. package/esm2015/lib/ui/components/identity/signup-button.component.js +0 -31
  137. package/esm2015/lib/ui/components/loading/loading.component.js +0 -49
  138. package/esm2015/lib/ui/components/spinner/spinner.component.js +0 -73
  139. package/esm2015/lib/ui/directives/native-element.directive.js +0 -41
  140. package/esm2015/lib/ui/pipes/filesize.pipe.js +0 -41
  141. package/esm2015/lib/ui/pipes/replace-text.pipe.js +0 -36
  142. package/esm2015/lib/ui/pipes/safeHtml.pipe.js +0 -36
  143. package/esm2015/lib/ui/ui.module.js +0 -105
  144. package/esm2015/lib/ui/validation/form-validation-summary.component.js +0 -64
  145. package/esm2015/lib/ui/validation/item-validation-summary.component.js +0 -38
  146. package/esm2015/lib/ui/validation/validation-summary.component.js +0 -126
  147. package/fesm2015/osovitny-anatoly.js.map +0 -1
  148. package/osovitny-anatoly.metadata.json +0 -1
  149. /package/{esm2015/lib/core/consts/settings.js → esm2020/lib/core/consts/settings.mjs} +0 -0
  150. /package/{esm2015/lib/core/consts/urls.js → esm2020/lib/core/consts/urls.mjs} +0 -0
  151. /package/{esm2015/lib/core/convert.js → esm2020/lib/core/convert.mjs} +0 -0
  152. /package/{esm2015/lib/core/guards/once-import.guard.js → esm2020/lib/core/guards/once-import.guard.mjs} +0 -0
  153. /package/{esm2015/lib/core/guid.js → esm2020/lib/core/guid.mjs} +0 -0
  154. /package/{esm2015/lib/core/localization/utils.js → esm2020/lib/core/localization/utils.mjs} +0 -0
  155. /package/{esm2015/lib/core/notifications/alerts.js → esm2020/lib/core/notifications/alerts.mjs} +0 -0
  156. /package/{esm2015/lib/core/notifications/interfaces/notification.js → esm2020/lib/core/notifications/interfaces/notification.mjs} +0 -0
  157. /package/{esm2015/lib/core/subs.js → esm2020/lib/core/subs.mjs} +0 -0
  158. /package/{esm2015/lib/data/consts.js → esm2020/lib/data/consts.mjs} +0 -0
  159. /package/{esm2015/lib/ui/components/html-editor/html-editor.defaultoptions.js → esm2020/lib/ui/components/html-editor/html-editor.defaultoptions.mjs} +0 -0
  160. /package/{esm2015/osovitny-anatoly.js → esm2020/osovitny-anatoly.mjs} +0 -0
  161. /package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
@@ -1,109 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 25 March 2020
12
-
13
- Version:
14
- 1.0
15
-
16
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- // Node
20
- import { HttpResponse } from '@angular/common/http';
21
- import { Injectable } from '@angular/core';
22
- // RxJS
23
- import { tap } from 'rxjs/operators';
24
- // App
25
- import { AppCoreSettings } from '../consts/settings';
26
- import { LoadingService } from '../services/loading.service';
27
- import { LoggingService } from '../logging/logging.service';
28
- export class AnatolyHttpInterceptor {
29
- constructor(loadingService, loggingService) {
30
- this.loadingService = loadingService;
31
- this.loggingService = loggingService;
32
- this.longRunningExceptionsList = [];
33
- this.autoCDNSASTokenUrls = ['chunks', 'resources'];
34
- this.externalSiteUrls = ['azurewebsites.net'];
35
- }
36
- intercept(req, next) {
37
- const isCDNEnabled = AppCoreSettings.IsCDNEnabled;
38
- const cdnSasToken = AppCoreSettings.CDNSASToken;
39
- const isLoadingFreezed = this.loadingService.isFreezed;
40
- const authorizationTokenRequired = true;
41
- const url = req.url.toLowerCase();
42
- const originalUrl = req.url;
43
- let isExternalSite = false;
44
- let loadingRequired = !isLoadingFreezed;
45
- if (!isLoadingFreezed) {
46
- for (const i of this.longRunningExceptionsList) {
47
- if (url.indexOf(this.longRunningExceptionsList[i]) >= 0) {
48
- loadingRequired = false;
49
- break;
50
- }
51
- }
52
- }
53
- if (isCDNEnabled) {
54
- for (const i of this.autoCDNSASTokenUrls) {
55
- if (url.indexOf(this.autoCDNSASTokenUrls[i]) >= 0) {
56
- req = req.clone({ url: originalUrl + cdnSasToken });
57
- break;
58
- }
59
- }
60
- }
61
- for (const i of this.externalSiteUrls) {
62
- if (url.indexOf(this.externalSiteUrls[i]) >= 0) {
63
- isExternalSite = true;
64
- break;
65
- }
66
- }
67
- // VadimOS: IE11-fix
68
- if (url.indexOf('/api/') > -1) {
69
- let newUrl = '';
70
- const t = new Date().getTime().toString();
71
- if (url.indexOf('?') > -1) {
72
- newUrl = originalUrl + '&t=' + t;
73
- }
74
- else {
75
- newUrl = originalUrl + '?t=' + t;
76
- }
77
- req = req.clone({ url: newUrl });
78
- }
79
- req = req.clone({ headers: req.headers.set('Accept', 'application/json') });
80
- req = req.clone({ headers: req.headers.set('Accept', 'application/text') });
81
- this.onRequestStart(loadingRequired);
82
- return next.handle(req).pipe(tap((event) => {
83
- if (event instanceof HttpResponse) {
84
- this.onRequestEnd(loadingRequired);
85
- }
86
- }, (err) => {
87
- this.onRequestEnd(loadingRequired);
88
- this.loggingService.logError(err);
89
- }));
90
- }
91
- onRequestStart(loadingRequired) {
92
- if (loadingRequired) {
93
- this.loadingService.show();
94
- }
95
- }
96
- onRequestEnd(loadingRequired) {
97
- if (loadingRequired) {
98
- this.loadingService.hide();
99
- }
100
- }
101
- }
102
- AnatolyHttpInterceptor.decorators = [
103
- { type: Injectable }
104
- ];
105
- AnatolyHttpInterceptor.ctorParameters = () => [
106
- { type: LoadingService },
107
- { type: LoggingService }
108
- ];
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cEludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvaW50ZXJjZXB0b3JzL2h0dHBJbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUFFRixPQUFPO0FBQ1AsT0FBTyxFQUF1RCxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU87QUFDUCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkMsTUFBTTtBQUNOLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRzFELE1BQU0sT0FBTyxzQkFBc0I7SUFLakMsWUFBc0IsY0FBOEIsRUFBWSxjQUE4QjtRQUF4RSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBWSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFKcEYsOEJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBQy9CLHdCQUFtQixHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLHFCQUFnQixHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUduRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDaEQsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQztRQUNsRCxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDO1FBRWhELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7UUFDdkQsTUFBTSww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Y0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxlQUF3QjtRQUNyQyxJQUFJLGVBQWUsRUFBRTtZQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxlQUF3QjtRQUNuQyxJQUFJLGVBQWUsRUFBRTtZQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQzs7O1lBekZGLFVBQVU7OztZQUhILGNBQWM7WUFDZCxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueVxyXG4gICAgQW5hdG9seSBPc292aXRueVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMjUgTWFyY2ggMjAyMFxyXG5cclxuICBWZXJzaW9uOlxyXG4gICAgMS4wXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIxIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy8gTm9kZVxyXG5pbXBvcnQge0h0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLy8gUnhKU1xyXG5pbXBvcnQge3RhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5cclxuLy8gQXBwXHJcbmltcG9ydCB7QXBwQ29yZVNldHRpbmdzfSBmcm9tICcuLi9jb25zdHMvc2V0dGluZ3MnO1xyXG5pbXBvcnQge0xvYWRpbmdTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2FkaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvZ2dpbmdTZXJ2aWNlfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dpbmcuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBbmF0b2x5SHR0cEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICBwcm90ZWN0ZWQgbG9uZ1J1bm5pbmdFeGNlcHRpb25zTGlzdCA9IFtdO1xyXG4gIHByb3RlY3RlZCBhdXRvQ0ROU0FTVG9rZW5VcmxzID0gWydjaHVua3MnLCAncmVzb3VyY2VzJ107XHJcbiAgcHJvdGVjdGVkIGV4dGVybmFsU2l0ZVVybHMgPSBbJ2F6dXJld2Vic2l0ZXMubmV0J107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBsb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2UsIHByb3RlY3RlZCBsb2dnaW5nU2VydmljZTogTG9nZ2luZ1NlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgY29uc3QgaXNDRE5FbmFibGVkID0gQXBwQ29yZVNldHRpbmdzLklzQ0RORW5hYmxlZDtcclxuICAgIGNvbnN0IGNkblNhc1Rva2VuID0gQXBwQ29yZVNldHRpbmdzLkNETlNBU1Rva2VuO1xyXG5cclxuICAgIGNvbnN0IGlzTG9hZGluZ0ZyZWV6ZWQgPSB0aGlzLmxvYWRpbmdTZXJ2aWNlLmlzRnJlZXplZDsgICBcclxuICAgIGNvbnN0IGF1dGhvcml6YXRpb25Ub2tlblJlcXVpcmVkID0gdHJ1ZTtcclxuICAgIGNvbnN0IHVybCA9IHJlcS51cmwudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IG9yaWdpbmFsVXJsID0gcmVxLnVybDtcclxuICAgIGxldCBpc0V4dGVybmFsU2l0ZSA9IGZhbHNlO1xyXG4gICAgbGV0IGxvYWRpbmdSZXF1aXJlZCA9ICFpc0xvYWRpbmdGcmVlemVkO1xyXG5cclxuICAgIGlmICghaXNMb2FkaW5nRnJlZXplZCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy5sb25nUnVubmluZ0V4Y2VwdGlvbnNMaXN0KSB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKHRoaXMubG9uZ1J1bm5pbmdFeGNlcHRpb25zTGlzdFtpXSkgPj0gMCkge1xyXG4gICAgICAgICAgbG9hZGluZ1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXNDRE5FbmFibGVkKSB7XHJcbiAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLmF1dG9DRE5TQVNUb2tlblVybHMpIHtcclxuICAgICAgICBpZiAodXJsLmluZGV4T2YodGhpcy5hdXRvQ0ROU0FTVG9rZW5VcmxzW2ldKSA+PSAwKSB7XHJcbiAgICAgICAgICByZXEgPSByZXEuY2xvbmUoeyB1cmw6IG9yaWdpbmFsVXJsICsgY2RuU2FzVG9rZW4gfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy5leHRlcm5hbFNpdGVVcmxzKSB7XHJcbiAgICAgIGlmICh1cmwuaW5kZXhPZih0aGlzLmV4dGVybmFsU2l0ZVVybHNbaV0pID49IDApIHtcclxuICAgICAgICBpc0V4dGVybmFsU2l0ZSA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBWYWRpbU9TOiBJRTExLWZpeFxyXG4gICAgaWYgKHVybC5pbmRleE9mKCcvYXBpLycpID4gLTEpIHtcclxuICAgICAgbGV0IG5ld1VybCA9ICcnO1xyXG4gICAgICBjb25zdCB0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgIGlmICh1cmwuaW5kZXhPZignPycpID4gLTEpIHtcclxuICAgICAgICBuZXdVcmwgPSBvcmlnaW5hbFVybCArICcmdD0nICsgdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdVcmwgPSBvcmlnaW5hbFVybCArICc/dD0nICsgdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmVxID0gcmVxLmNsb25lKHsgdXJsOiBuZXdVcmwgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVxID0gcmVxLmNsb25lKHsgaGVhZGVyczogcmVxLmhlYWRlcnMuc2V0KCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpIH0pO1xyXG4gICAgcmVxID0gcmVxLmNsb25lKHsgaGVhZGVyczogcmVxLmhlYWRlcnMuc2V0KCdBY2NlcHQnLCAnYXBwbGljYXRpb24vdGV4dCcpIH0pO1xyXG5cclxuICAgIHRoaXMub25SZXF1ZXN0U3RhcnQobG9hZGluZ1JlcXVpcmVkKTtcclxuXHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxyXG4gICAgICB0YXAoXHJcbiAgICAgICAgKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xyXG4gICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25SZXF1ZXN0RW5kKGxvYWRpbmdSZXF1aXJlZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMub25SZXF1ZXN0RW5kKGxvYWRpbmdSZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dpbmdTZXJ2aWNlLmxvZ0Vycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25SZXF1ZXN0U3RhcnQobG9hZGluZ1JlcXVpcmVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAobG9hZGluZ1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2hvdygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZXF1ZXN0RW5kKGxvYWRpbmdSZXF1aXJlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKGxvYWRpbmdSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,41 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 12 May 2020
12
-
13
- Version:
14
- 1.0
15
-
16
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- // Node
20
- import { NgModule } from '@angular/core';
21
- import { TranslateModule } from '@ngx-translate/core';
22
- // Pipes
23
- import { LocalizePipe } from './localize.pipe';
24
- export class LocalizationModule {
25
- }
26
- LocalizationModule.decorators = [
27
- { type: NgModule, args: [{
28
- imports: [
29
- TranslateModule
30
- ],
31
- exports: [
32
- TranslateModule,
33
- LocalizePipe
34
- ],
35
- declarations: [
36
- LocalizePipe
37
- ],
38
- providers: []
39
- },] }
40
- ];
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL2xvY2FsaXphdGlvbi9sb2NhbGl6YXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCRTtBQUVGLE9BQU87QUFDUCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxRQUFRO0FBQ1IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBZ0IvQyxNQUFNLE9BQU8sa0JBQWtCOzs7WUFkOUIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxlQUFlO2lCQUNoQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsZUFBZTtvQkFDZixZQUFZO2lCQUNiO2dCQUNELFlBQVksRUFBRTtvQkFDWixZQUFZO2lCQUNiO2dCQUNELFNBQVMsRUFBRSxFQUNWO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55XHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55XHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAgMTIgTWF5IDIwMjBcclxuXHJcbiAgVmVyc2lvbjpcclxuICAgIDEuMFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMSBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vIE5vZGVcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG4vLyBQaXBlc1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuL2xvY2FsaXplLnBpcGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIExvY2FsaXplUGlwZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBMb2NhbGl6ZVBpcGVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvbk1vZHVsZSB7XHJcbn1cclxuIl19
@@ -1,187 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 05 May 2020
12
-
13
- Version:
14
- 1.0
15
-
16
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- //Node
20
- import { Injectable } from '@angular/core';
21
- import { TranslateService } from '@ngx-translate/core';
22
- //Date fns
23
- import { format, isValid, formatDistanceToNow, formatDistance } from 'date-fns';
24
- import { utcToZonedTime } from 'date-fns-tz';
25
- // VadimOS: IE11-fix. DON'T change next imports!
26
- // Reason: https://github.com/date-fns/date-fns/issues/666
27
- import enUS from 'date-fns/locale/en-US';
28
- import { Convert } from '../convert';
29
- import * as i0 from "@angular/core";
30
- import * as i1 from "@ngx-translate/core";
31
- export class LocalizationService {
32
- constructor(translate) {
33
- this.translate = translate;
34
- this.setSupportedLanguages(['en']);
35
- }
36
- format(str, args) {
37
- return str.replace(/{(\d+)}/g, function (match, number) {
38
- return typeof args[number] != 'undefined'
39
- ? args[number]
40
- : match;
41
- });
42
- }
43
- ;
44
- configureTranslationSettings(translate) {
45
- const languageToSet = 'en';
46
- this.dateFnsLocale = { locale: enUS };
47
- translate.setDefaultLang(languageToSet);
48
- return languageToSet;
49
- }
50
- getBrowserLanguage() {
51
- return this.translate.getBrowserLang();
52
- }
53
- getDatefnsLocale() {
54
- let dfnLocale;
55
- switch (this.getBrowserLanguage()) {
56
- case 'en':
57
- dfnLocale = { locale: enUS };
58
- break;
59
- default:
60
- dfnLocale = { locale: enUS };
61
- }
62
- return dfnLocale;
63
- }
64
- setDefaultLanguage(lang) {
65
- this.translate.setDefaultLang(lang);
66
- }
67
- setSupportedLanguages(languages) {
68
- this.translate.addLangs(languages);
69
- }
70
- updateLanguage(language) {
71
- this.translate.use(language);
72
- }
73
- getLocalizedValue(key, params) {
74
- const value = this.translate.instant(key);
75
- if (!params || params.length === 0) {
76
- return value;
77
- }
78
- return this.format(value, params);
79
- }
80
- getLocalizedDate(key) {
81
- if (isValid(new Date(key))) {
82
- return format(new Date(key), 'dd.MM.yyyy', this.dateFnsLocale);
83
- }
84
- return "Invalid Date";
85
- }
86
- getLocalizedDateTime(key) {
87
- let dateValue = new Date(key);
88
- if (isValid(dateValue)) {
89
- let localDate = Convert.toLocalizedDateTime(dateValue);
90
- return format(localDate, 'dd.MM.yyyy HH:mm', this.dateFnsLocale);
91
- }
92
- return "Invalid Date";
93
- }
94
- getLocalizedDistanceInWords(endedDate, startedDate) {
95
- if (isValid(new Date(endedDate)) && isValid(new Date(startedDate))) {
96
- return formatDistance(new Date(endedDate), new Date(startedDate), this.dateFnsLocale);
97
- }
98
- return "Invalid Date";
99
- }
100
- getLocalizedDistanceToNowInWords(date) {
101
- if (isValid(new Date(date))) {
102
- return formatDistanceToNow(new Date(date), this.dateFnsLocale);
103
- }
104
- return "Invalid Date";
105
- }
106
- //UTC Operations --------------------------------------------------------------
107
- getUTCToLocalizedDate(key) {
108
- let browserTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
109
- if (key) {
110
- if (key.indexOf("T") == -1) {
111
- key = key.replace(" ", "T");
112
- }
113
- if (key.indexOf("Z") == -1) {
114
- key = key + "Z";
115
- }
116
- }
117
- if (browserTimeZone) {
118
- let localDateTime = utcToZonedTime(key, browserTimeZone);
119
- return format(localDateTime, 'dd.MM.yyyy', this.dateFnsLocale);
120
- }
121
- else {
122
- return format(new Date(key), 'dd.MM.yyyy', this.dateFnsLocale);
123
- }
124
- }
125
- getUTCToLocalizedDateTime(key) {
126
- let browserTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
127
- if (key) {
128
- if (key.indexOf("T") == -1) {
129
- key = key.replace(" ", "T");
130
- }
131
- if (key.indexOf("Z") == -1) {
132
- key = key + "Z";
133
- }
134
- }
135
- if (browserTimeZone) {
136
- let localDateTime = utcToZonedTime(key, browserTimeZone);
137
- return format(localDateTime, 'dd.MM.yyyy HH:mm', this.dateFnsLocale);
138
- }
139
- else {
140
- return format(new Date(key), 'dd.MM.yyyy HH:mm', this.dateFnsLocale);
141
- }
142
- }
143
- //https://date-fns.org/v1.30.1/docs/distanceInWords
144
- getUTCToLocalizedDistanceToNowInWords(date) {
145
- date = this.safeUtcToZonedTime(date);
146
- if (isValid(new Date(date))) {
147
- return formatDistanceToNow(new Date(date), this.dateFnsLocale);
148
- }
149
- return "Invalid Date";
150
- }
151
- safeUtcToZonedTime(date) {
152
- let result = date;
153
- try {
154
- if (date) {
155
- if (date.indexOf("T") == -1) {
156
- date = date.replace(" ", "T");
157
- }
158
- if (date.indexOf("Z") == -1) {
159
- date = date + "Z";
160
- }
161
- }
162
- let browserTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
163
- if (browserTimeZone) {
164
- result = utcToZonedTime(date, browserTimeZone).toString();
165
- }
166
- else {
167
- result = new Date(date).toString();
168
- }
169
- }
170
- catch (_a) {
171
- if (date) {
172
- console.log("UTC to Local conversion failed for :" + date.toString());
173
- }
174
- }
175
- return result;
176
- }
177
- }
178
- LocalizationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalizationService_Factory() { return new LocalizationService(i0.ɵɵinject(i1.TranslateService)); }, token: LocalizationService, providedIn: "root" });
179
- LocalizationService.decorators = [
180
- { type: Injectable, args: [{
181
- providedIn: 'root'
182
- },] }
183
- ];
184
- LocalizationService.ctorParameters = () => [
185
- { type: TranslateService }
186
- ];
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJFO0FBRUYsTUFBTTtBQUNOLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsVUFBVTtBQUNWLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLGdEQUFnRDtBQUNoRCwwREFBMEQ7QUFDMUQsT0FBTyxJQUFJLE1BQU0sdUJBQXVCLENBQUM7QUFJekMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQzs7O0FBS25DLE1BQU0sT0FBTyxtQkFBbUI7SUFHOUIsWUFBb0IsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDN0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sTUFBTSxDQUFDLEdBQVcsRUFBRSxJQUFJO1FBQzlCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxLQUFLLEVBQUUsTUFBTTtZQUNwRCxPQUFPLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFdBQVc7Z0JBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNkLENBQUMsQ0FBQyxLQUFLLENBQ047UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQSxD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LEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQy9CO2dCQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtvQkFDM0IsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7aUJBQ25CO2FBQ0Y7WUFFRCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQ3ZFLElBQUksZUFBZSxFQUFFO2dCQUNuQixNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUMzRDtpQkFDSTtnQkFDSCxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDcEM7U0FDRjtRQUNELFdBQ0E7WUFDRSxJQUFJLElBQUksRUFBRTtnQkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO2FBQ3RFO1NBQ0Y7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs7O1lBNUxGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBaEJRLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnlcclxuICAgIEFuYXRvbHkgT3Nvdml0bnlcclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDA1IE1heSAyMDIwXHJcblxyXG4gIFZlcnNpb246XHJcbiAgICAxLjBcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjEgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG4vL0RhdGUgZm5zXHJcbmltcG9ydCB7IGZvcm1hdCwgaXNWYWxpZCwgZm9ybWF0RGlzdGFuY2VUb05vdywgZm9ybWF0RGlzdGFuY2UgfSBmcm9tICdkYXRlLWZucyc7XHJcbmltcG9ydCB7IHV0Y1RvWm9uZWRUaW1lIH0gZnJvbSAnZGF0ZS1mbnMtdHonO1xyXG5cclxuLy8gVmFkaW1PUzogSUUxMS1maXguIERPTidUIGNoYW5nZSBuZXh0IGltcG9ydHMhXHJcbi8vIFJlYXNvbjogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy82NjZcclxuaW1wb3J0IGVuVVMgZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VuLVVTJztcclxuXHJcbi8vIEFwcFxyXG5pbXBvcnQge0FwcENvcmVTZXR0aW5nc30gZnJvbSAnLi4vY29uc3RzL3NldHRpbmdzJztcclxuaW1wb3J0IHtDb252ZXJ0fSBmcm9tICcuLi9jb252ZXJ0JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvblNlcnZpY2Uge1xyXG4gIGRhdGVGbnNMb2NhbGU6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuc2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKFsnZW4nXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdChzdHI6IHN0cmluZywgYXJncykge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC97KFxcZCspfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlcikge1xyXG4gICAgICByZXR1cm4gdHlwZW9mIGFyZ3NbbnVtYmVyXSAhPSAndW5kZWZpbmVkJ1xyXG4gICAgICAgID8gYXJnc1tudW1iZXJdXHJcbiAgICAgICAgOiBtYXRjaFxyXG4gICAgICAgIDtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGNvbmZpZ3VyZVRyYW5zbGF0aW9uU2V0dGluZ3ModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGxhbmd1YWdlVG9TZXQgPSAnZW4nO1xyXG4gICAgdGhpcy5kYXRlRm5zTG9jYWxlID0geyBsb2NhbGU6IGVuVVMgfTtcclxuXHJcbiAgICB0cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcobGFuZ3VhZ2VUb1NldCk7XHJcbiAgICByZXR1cm4gbGFuZ3VhZ2VUb1NldDtcclxuICB9XHJcblxyXG4gIGdldEJyb3dzZXJMYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XHJcbiAgfVxyXG5cclxuICBnZXREYXRlZm5zTG9jYWxlKCk6IGFueSB7XHJcbiAgICBsZXQgZGZuTG9jYWxlOiBhbnk7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmdldEJyb3dzZXJMYW5ndWFnZSgpKSB7XHJcbiAgICAgIGNhc2UgJ2VuJzpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZm5Mb2NhbGU7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0TGFuZ3VhZ2UobGFuZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZyhsYW5nKTtcclxuICB9XHJcblxyXG4gIHNldFN1cHBvcnRlZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5hZGRMYW5ncyhsYW5ndWFnZXMpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGUudXNlKGxhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZFZhbHVlKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5KTtcclxuXHJcbiAgICBpZiAoIXBhcmFtcyB8fCBwYXJhbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQodmFsdWUsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREYXRlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChpc1ZhbGlkKG5ldyBEYXRlKGtleSkpKSB7XHJcbiAgICAgIHJldHVybiBmb3JtYXQobmV3IERhdGUoa2V5KSwgJ2RkLk1NLnl5eXknLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxpemVkRGF0ZVRpbWUoa2V5OiBzdHJpbmcpIHtcclxuICAgIGxldCBkYXRlVmFsdWUgPSBuZXcgRGF0ZShrZXkpO1xyXG4gICAgaWYgKGlzVmFsaWQoZGF0ZVZhbHVlKSkge1xyXG4gICAgICBsZXQgbG9jYWxEYXRlID0gQ29udmVydC50b0xvY2FsaXplZERhdGVUaW1lKGRhdGVWYWx1ZSk7XHJcbiAgICAgIHJldHVybiBmb3JtYXQobG9jYWxEYXRlLCAnZGQuTU0ueXl5eSBISDptbScsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREaXN0YW5jZUluV29yZHMoZW5kZWREYXRlOiBzdHJpbmcsIHN0YXJ0ZWREYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGlzVmFsaWQobmV3IERhdGUoZW5kZWREYXRlKSkgJiYgaXNWYWxpZChuZXcgRGF0ZShzdGFydGVkRGF0ZSkpKSB7XHJcbiAgICAgIHJldHVybiBmb3JtYXREaXN0YW5jZShuZXcgRGF0ZShlbmRlZERhdGUpLCBuZXcgRGF0ZShzdGFydGVkRGF0ZSksIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREaXN0YW5jZVRvTm93SW5Xb3JkcyhkYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGlzVmFsaWQobmV3IERhdGUoZGF0ZSkpKSB7XHJcbiAgICAgIHJldHVybiBmb3JtYXREaXN0YW5jZVRvTm93KG5ldyBEYXRlKGRhdGUpLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gIH1cclxuXHJcbiAgLy9VVEMgT3BlcmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIGdldFVUQ1RvTG9jYWxpemVkRGF0ZShrZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGJyb3dzZXJUaW1lWm9uZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtcclxuXHJcbiAgICBpZiAoa2V5KSB7XHJcbiAgICAgIGlmIChrZXkuaW5kZXhPZihcIlRcIikgPT0gLTEpIHtcclxuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZShcIiBcIiwgXCJUXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChrZXkuaW5kZXhPZihcIlpcIikgPT0gLTEpIHtcclxuICAgICAgICBrZXkgPSBrZXkgKyBcIlpcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChicm93c2VyVGltZVpvbmUpIHtcclxuICAgICAgbGV0IGxvY2FsRGF0ZVRpbWUgPSB1dGNUb1pvbmVkVGltZShrZXksIGJyb3dzZXJUaW1lWm9uZSk7XHJcbiAgICAgIHJldHVybiBmb3JtYXQobG9jYWxEYXRlVGltZSwgJ2RkLk1NLnl5eXknLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBmb3JtYXQobmV3IERhdGUoa2V5KSwgJ2RkLk1NLnl5eXknLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VVRDVG9Mb2NhbGl6ZWREYXRlVGltZShrZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGJyb3dzZXJUaW1lWm9uZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtcclxuXHJcbiAgICBpZiAoa2V5KSB7XHJcbiAgICAgIGlmIChrZXkuaW5kZXhPZihcIlRcIikgPT0gLTEpIHtcclxuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZShcIiBcIiwgXCJUXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChrZXkuaW5kZXhPZihcIlpcIikgPT0gLTEpIHtcclxuICAgICAgICBrZXkgPSBrZXkgKyBcIlpcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChicm93c2VyVGltZVpvbmUpIHtcclxuICAgICAgbGV0IGxvY2FsRGF0ZVRpbWUgPSB1dGNUb1pvbmVkVGltZShrZXksIGJyb3dzZXJUaW1lWm9uZSk7XHJcbiAgICAgIHJldHVybiBmb3JtYXQobG9jYWxEYXRlVGltZSwgJ2RkLk1NLnl5eXkgSEg6bW0nLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBmb3JtYXQobmV3IERhdGUoa2V5KSwgJ2RkLk1NLnl5eXkgSEg6bW0nLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9odHRwczovL2RhdGUtZm5zLm9yZy92MS4zMC4xL2RvY3MvZGlzdGFuY2VJbldvcmRzXHJcbiAgZ2V0VVRDVG9Mb2NhbGl6ZWREaXN0YW5jZVRvTm93SW5Xb3JkcyhkYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgZGF0ZSA9IHRoaXMuc2FmZVV0Y1RvWm9uZWRUaW1lKGRhdGUpO1xyXG5cclxuICAgIGlmIChpc1ZhbGlkKG5ldyBEYXRlKGRhdGUpKSkge1xyXG4gICAgICByZXR1cm4gZm9ybWF0RGlzdGFuY2VUb05vdyhuZXcgRGF0ZShkYXRlKSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICB9XHJcbiAgXHJcblxyXG4gIHNhZmVVdGNUb1pvbmVkVGltZShkYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHQgPSBkYXRlO1xyXG5cclxuICAgIHRyeVxyXG4gICAge1xyXG4gICAgICBpZiAoZGF0ZSkge1xyXG4gICAgICAgIGlmIChkYXRlLmluZGV4T2YoXCJUXCIpID09IC0xKSB7XHJcbiAgICAgICAgICBkYXRlID0gZGF0ZS5yZXBsYWNlKFwiIFwiLCBcIlRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGF0ZS5pbmRleE9mKFwiWlwiKSA9PSAtMSkge1xyXG4gICAgICAgICAgZGF0ZSA9IGRhdGUgKyBcIlpcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBicm93c2VyVGltZVpvbmUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XHJcbiAgICAgIGlmIChicm93c2VyVGltZVpvbmUpIHtcclxuICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gbmV3IERhdGUoZGF0ZSkudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2hcclxuICAgIHtcclxuICAgICAgaWYgKGRhdGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIlVUQyB0byBMb2NhbCBjb252ZXJzaW9uIGZhaWxlZCBmb3IgOlwiICsgZGF0ZS50b1N0cmluZygpKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
@@ -1,78 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 05 May 2020
12
-
13
- Version:
14
- 1.0
15
-
16
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- //Node
20
- import { NgModule, Injector, APP_INITIALIZER } from '@angular/core';
21
- import { LOCATION_INITIALIZED } from '@angular/common';
22
- import { HttpClient } from '@angular/common/http';
23
- import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
24
- import { TranslateHttpLoader } from '@ngx-translate/http-loader';
25
- //App
26
- import { LocalizationService } from './localization.service';
27
- import { AppCoreSettings } from '../consts/settings';
28
- export function customTranslateLoaderFactory(http) {
29
- return new TranslateHttpLoader(http, AppCoreSettings.resourcesUrl + "/", '.json');
30
- }
31
- export function localizationInitializerFactory(translate, localizationService, injector) {
32
- return () => new Promise((resolve) => {
33
- let locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null));
34
- locationInitialized.then(() => {
35
- let languageToSet = localizationService.configureTranslationSettings(translate);
36
- translate.use(languageToSet).subscribe(() => {
37
- }, () => {
38
- resolve(null);
39
- }, () => {
40
- resolve(null);
41
- });
42
- });
43
- });
44
- }
45
- export const TranslateModuleAtRoot = TranslateModule.forRoot({
46
- loader: {
47
- provide: TranslateLoader,
48
- useFactory: customTranslateLoaderFactory,
49
- deps: [HttpClient]
50
- }
51
- });
52
- export let LocalizationInjectorInstance;
53
- export class LocalizationSettingsModule {
54
- constructor(injector) {
55
- this.injector = injector;
56
- LocalizationInjectorInstance = this.injector;
57
- }
58
- }
59
- LocalizationSettingsModule.decorators = [
60
- { type: NgModule, args: [{
61
- imports: [
62
- TranslateModuleAtRoot
63
- ],
64
- providers: [
65
- {
66
- provide: APP_INITIALIZER,
67
- useFactory: localizationInitializerFactory,
68
- deps: [TranslateService, LocalizationService, Injector],
69
- multi: true
70
- }
71
- ],
72
- exports: []
73
- },] }
74
- ];
75
- LocalizationSettingsModule.ctorParameters = () => [
76
- { type: Injector }
77
- ];
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uU2V0dGluZ3MubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvbG9jYWxpemF0aW9uL2xvY2FsaXphdGlvblNldHRpbmdzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUFFRixNQUFNO0FBQ04sT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpFLEtBQUs7QUFDTCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLElBQWdCO0lBQzNELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEYsQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxTQUEyQixFQUFFLG1CQUF3QyxFQUFFLFFBQWtCO0lBQ3RJLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQU0sQ0FBQyxPQUFZLEVBQUUsRUFBRTtRQUM3QyxJQUFJLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDNUIsSUFBSSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsNEJBQTRCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEYsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzVDLENBQUMsRUFDQyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLENBQUMsRUFDRCxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO0lBQzNELE1BQU0sRUFBRTtRQUNOLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLFVBQVUsRUFBRSw0QkFBNEI7UUFDeEMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO0tBQ25CO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLElBQUksNEJBQXNDLENBQUM7QUFpQmxELE1BQU0sT0FBTywwQkFBMEI7SUFDckMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQy9DLENBQUM7OztZQWxCRixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLHFCQUFxQjtpQkFDdEI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxlQUFlO3dCQUN4QixVQUFVLEVBQUUsOEJBQThCO3dCQUMxQyxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxRQUFRLENBQUM7d0JBQ3ZELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2dCQUNELE9BQU8sRUFBRSxFQUNSO2FBQ0Y7OztZQXZEa0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnlcclxuICAgIEFuYXRvbHkgT3Nvdml0bnlcclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgICAwNSBNYXkgMjAyMFxyXG5cclxuICBWZXJzaW9uOlxyXG4gICAgMS4wXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIxIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBJbmplY3RvciwgQVBQX0lOSVRJQUxJWkVSIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExPQ0FUSU9OX0lOSVRJQUxJWkVEIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlSHR0cExvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2h0dHAtbG9hZGVyJztcclxuXHJcbi8vQXBwXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29yZVNldHRpbmdzIH0gZnJvbSAnLi4vY29uc3RzL3NldHRpbmdzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjdXN0b21UcmFuc2xhdGVMb2FkZXJGYWN0b3J5KGh0dHA6IEh0dHBDbGllbnQpIHtcclxuICByZXR1cm4gbmV3IFRyYW5zbGF0ZUh0dHBMb2FkZXIoaHR0cCwgQXBwQ29yZVNldHRpbmdzLnJlc291cmNlc1VybCArIFwiL1wiLCAnLmpzb24nKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsaXphdGlvbkluaXRpYWxpemVyRmFjdG9yeSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGxvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UsIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gIHJldHVybiAoKSA9PiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlOiBhbnkpID0+IHtcclxuICAgIGxldCBsb2NhdGlvbkluaXRpYWxpemVkID0gaW5qZWN0b3IuZ2V0KExPQ0FUSU9OX0lOSVRJQUxJWkVELCBQcm9taXNlLnJlc29sdmUobnVsbCkpO1xyXG4gICAgbG9jYXRpb25Jbml0aWFsaXplZC50aGVuKCgpID0+IHtcclxuICAgICAgbGV0IGxhbmd1YWdlVG9TZXQgPSBsb2NhbGl6YXRpb25TZXJ2aWNlLmNvbmZpZ3VyZVRyYW5zbGF0aW9uU2V0dGluZ3ModHJhbnNsYXRlKTtcclxuICAgICAgdHJhbnNsYXRlLnVzZShsYW5ndWFnZVRvU2V0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBUcmFuc2xhdGVNb2R1bGVBdFJvb3QgPSBUcmFuc2xhdGVNb2R1bGUuZm9yUm9vdCh7XHJcbiAgbG9hZGVyOiB7XHJcbiAgICBwcm92aWRlOiBUcmFuc2xhdGVMb2FkZXIsXHJcbiAgICB1c2VGYWN0b3J5OiBjdXN0b21UcmFuc2xhdGVMb2FkZXJGYWN0b3J5LFxyXG4gICAgZGVwczogW0h0dHBDbGllbnRdXHJcbiAgfVxyXG59KTtcclxuXHJcbmV4cG9ydCBsZXQgTG9jYWxpemF0aW9uSW5qZWN0b3JJbnN0YW5jZTogSW5qZWN0b3I7IFxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVBdFJvb3RcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IGxvY2FsaXphdGlvbkluaXRpYWxpemVyRmFjdG9yeSxcclxuICAgICAgZGVwczogW1RyYW5zbGF0ZVNlcnZpY2UsIExvY2FsaXphdGlvblNlcnZpY2UsIEluamVjdG9yXSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXR0aW5nc01vZHVsZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIExvY2FsaXphdGlvbkluamVjdG9ySW5zdGFuY2UgPSB0aGlzLmluamVjdG9yO1xyXG4gIH1cclxufVxyXG5cclxuIl19
@@ -1,78 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 10 May 2020
12
-
13
- Version:
14
- 1.0
15
-
16
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- //Node
20
- import { Pipe } from '@angular/core';
21
- //App
22
- import { LocalizationService } from './localization.service';
23
- export class LocalizePipe {
24
- constructor(localizeService) {
25
- this.localizeService = localizeService;
26
- }
27
- transform(inputData, type, param2) {
28
- if (!inputData) {
29
- return;
30
- }
31
- if (!type) {
32
- type = 'tr';
33
- }
34
- //Translate
35
- if (type === 'tr') {
36
- return this.localizeService.getLocalizedValue(inputData);
37
- }
38
- //Date
39
- if (type === 'd') {
40
- return this.localizeService.getLocalizedDate(inputData);
41
- }
42
- //DateTime
43
- if (type === 'dt') {
44
- return this.localizeService.getLocalizedDateTime(inputData);
45
- }
46
- //DistanceInWords
47
- if (type === 'dis') {
48
- return this.localizeService.getLocalizedDistanceInWords(inputData, param2);
49
- }
50
- //DistanceToNowInWords
51
- if (type === 'dis2now') {
52
- return this.localizeService.getLocalizedDistanceToNowInWords(inputData);
53
- }
54
- //UTC Operations --------------------------------------------------------------
55
- //UTC Date
56
- if (type === 'u2d') {
57
- return this.localizeService.getUTCToLocalizedDate(inputData);
58
- }
59
- //UTC DateTime
60
- if (type === 'u2dt') {
61
- return this.localizeService.getUTCToLocalizedDateTime(inputData);
62
- }
63
- //UTC DistanceToNowInWords
64
- if (type === 'u2dis2now') {
65
- return this.localizeService.getUTCToLocalizedDistanceToNowInWords(inputData);
66
- }
67
- return inputData;
68
- }
69
- }
70
- LocalizePipe.decorators = [
71
- { type: Pipe, args: [{
72
- name: 'localize'
73
- },] }
74
- ];
75
- LocalizePipe.ctorParameters = () => [
76
- { type: LocalizationService }
77
- ];
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL2xvY2FsaXphdGlvbi9sb2NhbGl6ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCRTtBQUVGLE1BQU07QUFDTixPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxLQUFLO0FBQ0wsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFLN0QsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0IsZUFBb0M7UUFBcEMsb0JBQWUsR0FBZixlQUFlLENBQXFCO0lBQ3hELENBQUM7SUFFRCxTQUFTLENBQUMsU0FBaUIsRUFBRSxJQUFZLEVBQUUsTUFBZTtRQUN4RCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULElBQUksR0FBRyxJQUFJLENBQUM7U0FDYjtRQUVELFdBQVc7UUFDWCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzFEO1FBRUQsTUFBTTtRQUNOLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtZQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDekQ7UUFFRCxVQUFVO1FBQ1YsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM5RDtRQUVELGlCQUFpQjtRQUNqQixJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM1RTtRQUVELHNCQUFzQjtRQUN0QixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdDQUFnQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsK0VBQStFO1FBQy9FLFVBQVU7UUFDVixJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsY0FBYztRQUNkLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEU7UUFFRCwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQ0FBcUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM5RTtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OztZQTFERixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFVBQVU7YUFDakI7OztZQUpRLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnlcclxuICAgIEFuYXRvbHkgT3Nvdml0bnlcclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgICAxMCBNYXkgMjAyMFxyXG5cclxuICBWZXJzaW9uOlxyXG4gICAgMS4wXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIxIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vQXBwXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnbG9jYWxpemUnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2FsaXplU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtKGlucHV0RGF0YTogc3RyaW5nLCB0eXBlOiBzdHJpbmcsIHBhcmFtMj86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWlucHV0RGF0YSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0eXBlKSB7XHJcbiAgICAgIHR5cGUgPSAndHInO1xyXG4gICAgfVxyXG5cclxuICAgIC8vVHJhbnNsYXRlXHJcbiAgICBpZiAodHlwZSA9PT0gJ3RyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZVNlcnZpY2UuZ2V0TG9jYWxpemVkVmFsdWUoaW5wdXREYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICAvL0RhdGVcclxuICAgIGlmICh0eXBlID09PSAnZCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVTZXJ2aWNlLmdldExvY2FsaXplZERhdGUoaW5wdXREYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICAvL0RhdGVUaW1lXHJcbiAgICBpZiAodHlwZSA9PT0gJ2R0Jykge1xyXG4gICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVTZXJ2aWNlLmdldExvY2FsaXplZERhdGVUaW1lKGlucHV0RGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9EaXN0YW5jZUluV29yZHNcclxuICAgIGlmICh0eXBlID09PSAnZGlzJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZVNlcnZpY2UuZ2V0TG9jYWxpemVkRGlzdGFuY2VJbldvcmRzKGlucHV0RGF0YSwgcGFyYW0yKTtcclxuICAgIH1cclxuXHJcbiAgICAvL0Rpc3RhbmNlVG9Ob3dJbldvcmRzXHJcbiAgICBpZiAodHlwZSA9PT0gJ2RpczJub3cnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsaXplU2VydmljZS5nZXRMb2NhbGl6ZWREaXN0YW5jZVRvTm93SW5Xb3JkcyhpbnB1dERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vVVRDIE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIC8vVVRDIERhdGVcclxuICAgIGlmICh0eXBlID09PSAndTJkJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZVNlcnZpY2UuZ2V0VVRDVG9Mb2NhbGl6ZWREYXRlKGlucHV0RGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9VVEMgRGF0ZVRpbWVcclxuICAgIGlmICh0eXBlID09PSAndTJkdCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVTZXJ2aWNlLmdldFVUQ1RvTG9jYWxpemVkRGF0ZVRpbWUoaW5wdXREYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICAvL1VUQyBEaXN0YW5jZVRvTm93SW5Xb3Jkc1xyXG4gICAgaWYgKHR5cGUgPT09ICd1MmRpczJub3cnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsaXplU2VydmljZS5nZXRVVENUb0xvY2FsaXplZERpc3RhbmNlVG9Ob3dJbldvcmRzKGlucHV0RGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlucHV0RGF0YTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,44 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 26 Jun 2020
12
-
13
- Version:
14
- 1.0
15
-
16
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- /*
20
- https://medium.com/@amcdnl/global-error-handling-with-angular2-6b992bdfb59c
21
- https://medium.com/angular-in-depth/expecting-the-unexpected-best-practices-for-error-handling-in-angular-21c3662ef9e4
22
- */
23
- // Node
24
- import { Injectable, Injector } from "@angular/core";
25
- // App
26
- import { LoggingService } from "./logging.service";
27
- export class GlobalErrorHandler {
28
- constructor(injector) {
29
- this.injector = injector;
30
- }
31
- handleError(error) {
32
- const loggingService = this.injector.get(LoggingService);
33
- loggingService.logError(error);
34
- // IMPORTANT: Rethrow the error otherwise it gets swallowed
35
- throw error;
36
- }
37
- }
38
- GlobalErrorHandler.decorators = [
39
- { type: Injectable }
40
- ];
41
- GlobalErrorHandler.ctorParameters = () => [
42
- { type: Injector }
43
- ];
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsRXJyb3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvbG9nZ2luZy9nbG9iYWxFcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJFO0FBRUY7OztFQUdFO0FBRUYsT0FBTztBQUNQLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxNQUFNO0FBQ04sT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR25ELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFMUMsV0FBVyxDQUFDLEtBQUs7UUFDZixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN6RCxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9CLDJEQUEyRDtRQUMzRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7OztZQVZGLFVBQVU7OztZQUx3QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueVxyXG4gICAgQW5hdG9seSBPc292aXRueVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMjYgSnVuIDIwMjBcclxuXHJcbiAgVmVyc2lvbjpcclxuICAgIDEuMFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMSBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8qXHJcbiAgaHR0cHM6Ly9tZWRpdW0uY29tL0BhbWNkbmwvZ2xvYmFsLWVycm9yLWhhbmRsaW5nLXdpdGgtYW5ndWxhcjItNmI5OTJiZGZiNTljXHJcbiAgaHR0cHM6Ly9tZWRpdW0uY29tL2FuZ3VsYXItaW4tZGVwdGgvZXhwZWN0aW5nLXRoZS11bmV4cGVjdGVkLWJlc3QtcHJhY3RpY2VzLWZvci1lcnJvci1oYW5kbGluZy1pbi1hbmd1bGFyLTIxYzM2NjJlZjllNFxyXG4qL1xyXG5cclxuLy8gTm9kZVxyXG5pbXBvcnQgeyBFcnJvckhhbmRsZXIsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIEFwcFxyXG5pbXBvcnQgeyBMb2dnaW5nU2VydmljZSB9IGZyb20gXCIuL2xvZ2dpbmcuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgR2xvYmFsRXJyb3JIYW5kbGVyIGltcGxlbWVudHMgRXJyb3JIYW5kbGVyIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cclxuXHJcbiAgaGFuZGxlRXJyb3IoZXJyb3IpIHtcclxuICAgIGNvbnN0IGxvZ2dpbmdTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTG9nZ2luZ1NlcnZpY2UpO1xyXG4gICAgbG9nZ2luZ1NlcnZpY2UubG9nRXJyb3IoZXJyb3IpO1xyXG5cclxuICAgIC8vIElNUE9SVEFOVDogUmV0aHJvdyB0aGUgZXJyb3Igb3RoZXJ3aXNlIGl0IGdldHMgc3dhbGxvd2VkXHJcbiAgICB0aHJvdyBlcnJvcjtcclxuICB9XHJcbn1cclxuIl19
@@ -1,38 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 26 Jun 2020
12
-
13
- Version:
14
- 1.0
15
-
16
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- // Node
20
- import { Injectable } from "@angular/core";
21
- import * as i0 from "@angular/core";
22
- export class LoggingService {
23
- constructor() { }
24
- logError(error) {
25
- console.error(error);
26
- }
27
- logInformation(info) {
28
- console.info(info);
29
- }
30
- }
31
- LoggingService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LoggingService_Factory() { return new LoggingService(); }, token: LoggingService, providedIn: "root" });
32
- LoggingService.decorators = [
33
- { type: Injectable, args: [{
34
- providedIn: "root",
35
- },] }
36
- ];
37
- LoggingService.ctorParameters = () => [];
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvbG9nZ2luZy9sb2dnaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJFO0FBRUYsT0FBTztBQUNQLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLGdCQUFlLENBQUM7SUFFaEIsUUFBUSxDQUFDLEtBQUs7UUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBSTtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7Ozs7WUFaRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55XHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55XHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAyNiBKdW4gMjAyMFxyXG5cclxuICBWZXJzaW9uOlxyXG4gICAgMS4wXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIxIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy8gTm9kZVxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ2dpbmdTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIGxvZ0Vycm9yKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICB9XHJcblxyXG4gIGxvZ0luZm9ybWF0aW9uKGluZm8pIHtcclxuICAgIGNvbnNvbGUuaW5mbyhpbmZvKTtcclxuICB9XHJcbn1cclxuIl19