@morozeckiy/dd-lib 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/esm2022/lib/common/lib-common-button.mjs +62 -0
  2. package/esm2022/lib/common/lib-common-input-text.mjs +172 -0
  3. package/esm2022/lib/core/dialog/dialog-config.mjs +15 -0
  4. package/esm2022/lib/core/dialog/dialog-container.component.mjs +40 -0
  5. package/esm2022/lib/core/dialog/dialog-ref.mjs +19 -0
  6. package/esm2022/lib/core/dialog/dialog.service.mjs +106 -0
  7. package/esm2022/lib/core/directives/auto-height.directive.mjs +36 -0
  8. package/esm2022/lib/core/directives/click-outside.directive.mjs +42 -0
  9. package/esm2022/lib/core/directives/counter.directive.mjs +64 -0
  10. package/esm2022/lib/core/directives/declension.directive.mjs +40 -0
  11. package/esm2022/lib/core/directives/resize-textarea.directive.mjs +26 -0
  12. package/esm2022/lib/core/directives/triangle.directive.mjs +75 -0
  13. package/esm2022/lib/core/index.mjs +26 -0
  14. package/esm2022/lib/core/pipes/filter-tabs.pipe.mjs +31 -0
  15. package/esm2022/lib/core/pipes/filter.pipe.mjs +49 -0
  16. package/esm2022/lib/core/pipes/highlight.pipe.mjs +23 -0
  17. package/esm2022/lib/core/pipes/reverse.pipe.mjs +17 -0
  18. package/esm2022/lib/core/pipes/safe.pipe.mjs +34 -0
  19. package/esm2022/lib/core/services/date.service.mjs +113 -0
  20. package/esm2022/lib/core/services/destroy.service.mjs +15 -0
  21. package/esm2022/lib/core/services/fetcher.service.mjs +92 -0
  22. package/esm2022/lib/core/services/interceptors.service.mjs +27 -0
  23. package/esm2022/lib/core/services/svg-icons.service.mjs +26 -0
  24. package/esm2022/lib/core/services/theme-constructor.service.mjs +64 -0
  25. package/esm2022/lib/core/services/validators.service.mjs +73 -0
  26. package/esm2022/lib/core/tools.mjs +128 -0
  27. package/esm2022/lib/core/tooltip/tooltip.component.mjs +27 -0
  28. package/esm2022/lib/core/tooltip/tooltip.directive.mjs +137 -0
  29. package/esm2022/lib/lib-accordion/lib-accordion.component.mjs +15 -0
  30. package/esm2022/lib/lib-back-button/lib-back-button.component.mjs +37 -0
  31. package/esm2022/lib/lib-button/lib-button.component.mjs +30 -0
  32. package/esm2022/lib/lib-calendar/lib-calendar.component.mjs +222 -0
  33. package/esm2022/lib/lib-card/lib-card.component.mjs +34 -0
  34. package/esm2022/lib/lib-checkbox/lib-checkbox.component.mjs +66 -0
  35. package/esm2022/lib/lib-comment-input/lib-comment-input.component.mjs +20 -0
  36. package/esm2022/lib/lib-file-upload/lib-file-upload.component.mjs +34 -0
  37. package/esm2022/lib/lib-filter-button/lib-filter-button.component.mjs +42 -0
  38. package/esm2022/lib/lib-image-loader/lib-image-loader.component.mjs +14 -0
  39. package/esm2022/lib/lib-input/lib-input.component.mjs +55 -0
  40. package/esm2022/lib/lib-loader/lib-loader.component.mjs +16 -0
  41. package/esm2022/lib/lib-period/lib-period.component.mjs +114 -0
  42. package/esm2022/lib/lib-radio/lib-radio.component.mjs +76 -0
  43. package/esm2022/lib/lib-search-input/lib-search-input.component.mjs +91 -0
  44. package/esm2022/lib/lib-select/lib-select.component.mjs +137 -0
  45. package/esm2022/lib/lib-skeleton/lib-skeleton.component.mjs +45 -0
  46. package/esm2022/lib/lib-sort/lib-sort.component.mjs +44 -0
  47. package/esm2022/lib/lib-step/lib-step.component.mjs +19 -0
  48. package/esm2022/lib/lib-svg/lib-svg.component.mjs +75 -0
  49. package/esm2022/lib/lib-svg-icon/lib-svg-icon.component.mjs +55 -0
  50. package/esm2022/lib/lib-tabs-fragment/lib-tabs-fragment.component.mjs +79 -0
  51. package/esm2022/lib/lib-textarea/lib-textarea.component.mjs +50 -0
  52. package/esm2022/lib/toast/toast-base/toast-base.component.mjs +29 -0
  53. package/esm2022/lib/toast/toast-placeholder/toast-placeholder.component.mjs +29 -0
  54. package/esm2022/lib/toast/toast.service.mjs +124 -0
  55. package/esm2022/lib/utils/decorators.mjs +102 -0
  56. package/esm2022/morozeckiy-dd-lib.mjs +5 -0
  57. package/esm2022/public-api.mjs +35 -0
  58. package/fesm2022/morozeckiy-dd-lib.mjs +3004 -0
  59. package/fesm2022/morozeckiy-dd-lib.mjs.map +1 -0
  60. package/index.d.ts +5 -0
  61. package/lib/common/lib-common-button.d.ts +20 -0
  62. package/lib/common/lib-common-input-text.d.ts +53 -0
  63. package/lib/core/dialog/dialog-config.d.ts +14 -0
  64. package/lib/core/dialog/dialog-container.component.d.ts +18 -0
  65. package/lib/core/dialog/dialog-ref.d.ts +18 -0
  66. package/lib/core/dialog/dialog.service.d.ts +28 -0
  67. package/lib/core/directives/auto-height.directive.d.ts +11 -0
  68. package/lib/core/directives/click-outside.directive.d.ts +11 -0
  69. package/lib/core/directives/counter.directive.d.ts +11 -0
  70. package/lib/core/directives/declension.directive.d.ts +13 -0
  71. package/lib/core/directives/resize-textarea.directive.d.ts +10 -0
  72. package/lib/core/directives/triangle.directive.d.ts +16 -0
  73. package/lib/core/index.d.ts +20 -0
  74. package/lib/core/pipes/filter-tabs.pipe.d.ts +7 -0
  75. package/lib/core/pipes/filter.pipe.d.ts +12 -0
  76. package/lib/core/pipes/highlight.pipe.d.ts +7 -0
  77. package/lib/core/pipes/reverse.pipe.d.ts +7 -0
  78. package/lib/core/pipes/safe.pipe.d.ts +10 -0
  79. package/lib/core/services/date.service.d.ts +41 -0
  80. package/lib/core/services/destroy.service.d.ts +8 -0
  81. package/lib/core/services/fetcher.service.d.ts +29 -0
  82. package/lib/core/services/interceptors.service.d.ts +12 -0
  83. package/lib/core/services/svg-icons.service.d.ts +9 -0
  84. package/lib/core/services/theme-constructor.service.d.ts +27 -0
  85. package/lib/core/services/validators.service.d.ts +18 -0
  86. package/lib/core/tools.d.ts +16 -0
  87. package/lib/core/tooltip/tooltip.component.d.ts +12 -0
  88. package/lib/core/tooltip/tooltip.directive.d.ts +22 -0
  89. package/lib/lib-accordion/lib-accordion.component.d.ts +8 -0
  90. package/lib/lib-back-button/lib-back-button.component.d.ts +13 -0
  91. package/lib/lib-button/lib-button.component.d.ts +10 -0
  92. package/lib/lib-calendar/lib-calendar.component.d.ts +76 -0
  93. package/lib/lib-card/lib-card.component.d.ts +16 -0
  94. package/lib/lib-checkbox/lib-checkbox.component.d.ts +23 -0
  95. package/lib/lib-comment-input/lib-comment-input.component.d.ts +8 -0
  96. package/lib/lib-file-upload/lib-file-upload.component.d.ts +12 -0
  97. package/lib/lib-filter-button/lib-filter-button.component.d.ts +13 -0
  98. package/lib/lib-image-loader/lib-image-loader.component.d.ts +6 -0
  99. package/lib/lib-input/lib-input.component.d.ts +13 -0
  100. package/lib/lib-loader/lib-loader.component.d.ts +6 -0
  101. package/lib/lib-period/lib-period.component.d.ts +41 -0
  102. package/lib/lib-radio/lib-radio.component.d.ts +25 -0
  103. package/lib/lib-search-input/lib-search-input.component.d.ts +29 -0
  104. package/lib/lib-select/lib-select.component.d.ts +30 -0
  105. package/lib/lib-skeleton/lib-skeleton.component.d.ts +16 -0
  106. package/lib/lib-sort/lib-sort.component.d.ts +18 -0
  107. package/lib/lib-step/lib-step.component.d.ts +7 -0
  108. package/{src/lib/lib-svg/lib-svg.component.ts → lib/lib-svg/lib-svg.component.d.ts} +38 -66
  109. package/lib/lib-svg-icon/lib-svg-icon.component.d.ts +18 -0
  110. package/lib/lib-tabs-fragment/lib-tabs-fragment.component.d.ts +29 -0
  111. package/lib/lib-textarea/lib-textarea.component.d.ts +13 -0
  112. package/lib/toast/toast-base/toast-base.component.d.ts +21 -0
  113. package/lib/toast/toast-placeholder/toast-placeholder.component.d.ts +12 -0
  114. package/lib/toast/toast.service.d.ts +35 -0
  115. package/lib/utils/decorators.d.ts +4 -0
  116. package/package.json +16 -3
  117. package/public-api.d.ts +30 -0
  118. package/ekgip-dd-lib-0.0.1.tgz +0 -0
  119. package/ng-package.json +0 -8
  120. package/src/lib/common/lib-common-button.ts +0 -34
  121. package/src/lib/common/lib-common-input-text.ts +0 -154
  122. package/src/lib/core/dialog/dialog-config.ts +0 -19
  123. package/src/lib/core/dialog/dialog-container.component.ts +0 -38
  124. package/src/lib/core/dialog/dialog-ref.ts +0 -28
  125. package/src/lib/core/dialog/dialog.service.ts +0 -144
  126. package/src/lib/core/directives/auto-height.directive.ts +0 -29
  127. package/src/lib/core/directives/click-outside.directive.ts +0 -33
  128. package/src/lib/core/directives/counter.directive.ts +0 -54
  129. package/src/lib/core/directives/declension.directive.ts +0 -29
  130. package/src/lib/core/directives/resize-textarea.directive.ts +0 -16
  131. package/src/lib/core/directives/triangle.directive.ts +0 -56
  132. package/src/lib/core/index.ts +0 -27
  133. package/src/lib/core/pipes/filter-tabs.pipe.ts +0 -25
  134. package/src/lib/core/pipes/filter.pipe.ts +0 -36
  135. package/src/lib/core/pipes/highlight.pipe.ts +0 -17
  136. package/src/lib/core/pipes/reverse.pipe.ts +0 -11
  137. package/src/lib/core/pipes/safe.pipe.ts +0 -37
  138. package/src/lib/core/services/date.service.ts +0 -153
  139. package/src/lib/core/services/destroy.service.ts +0 -10
  140. package/src/lib/core/services/fetcher.service.ts +0 -109
  141. package/src/lib/core/services/interceptors.service.ts +0 -26
  142. package/src/lib/core/services/svg-icons.service.ts +0 -25
  143. package/src/lib/core/services/theme-constructor.service.ts +0 -68
  144. package/src/lib/core/services/validators.service.ts +0 -73
  145. package/src/lib/core/tools.ts +0 -159
  146. package/src/lib/core/tooltip/tooltip.component.html +0 -10
  147. package/src/lib/core/tooltip/tooltip.component.scss +0 -59
  148. package/src/lib/core/tooltip/tooltip.component.ts +0 -27
  149. package/src/lib/core/tooltip/tooltip.directive.ts +0 -137
  150. package/src/lib/core/utils.ts +0 -28
  151. package/src/lib/lib-accordion/lib-accordion.component.html +0 -15
  152. package/src/lib/lib-accordion/lib-accordion.component.scss +0 -23
  153. package/src/lib/lib-accordion/lib-accordion.component.ts +0 -17
  154. package/src/lib/lib-back-button/lib-back-button.component.html +0 -4
  155. package/src/lib/lib-back-button/lib-back-button.component.scss +0 -3
  156. package/src/lib/lib-back-button/lib-back-button.component.ts +0 -31
  157. package/src/lib/lib-button/lib-button.component.html +0 -30
  158. package/src/lib/lib-button/lib-button.component.scss +0 -89
  159. package/src/lib/lib-button/lib-button.component.ts +0 -33
  160. package/src/lib/lib-calendar/lib-calendar.component.html +0 -64
  161. package/src/lib/lib-calendar/lib-calendar.component.scss +0 -88
  162. package/src/lib/lib-calendar/lib-calendar.component.ts +0 -227
  163. package/src/lib/lib-card/lib-card.component.html +0 -23
  164. package/src/lib/lib-card/lib-card.component.scss +0 -64
  165. package/src/lib/lib-card/lib-card.component.ts +0 -32
  166. package/src/lib/lib-checkbox/lib-checkbox.component.html +0 -15
  167. package/src/lib/lib-checkbox/lib-checkbox.component.scss +0 -80
  168. package/src/lib/lib-checkbox/lib-checkbox.component.ts +0 -67
  169. package/src/lib/lib-comment-input/lib-comment-input.component.html +0 -32
  170. package/src/lib/lib-comment-input/lib-comment-input.component.scss +0 -28
  171. package/src/lib/lib-comment-input/lib-comment-input.component.ts +0 -20
  172. package/src/lib/lib-file-upload/lib-file-upload.component.html +0 -14
  173. package/src/lib/lib-file-upload/lib-file-upload.component.scss +0 -3
  174. package/src/lib/lib-file-upload/lib-file-upload.component.ts +0 -26
  175. package/src/lib/lib-filter-button/lib-filter-button.component.html +0 -46
  176. package/src/lib/lib-filter-button/lib-filter-button.component.scss +0 -62
  177. package/src/lib/lib-filter-button/lib-filter-button.component.ts +0 -45
  178. package/src/lib/lib-image-loader/lib-image-loader.component.html +0 -17
  179. package/src/lib/lib-image-loader/lib-image-loader.component.scss +0 -6
  180. package/src/lib/lib-image-loader/lib-image-loader.component.ts +0 -16
  181. package/src/lib/lib-input/lib-input.component.html +0 -32
  182. package/src/lib/lib-input/lib-input.component.scss +0 -72
  183. package/src/lib/lib-input/lib-input.component.ts +0 -62
  184. package/src/lib/lib-loader/lib-loader.component.html +0 -29
  185. package/src/lib/lib-loader/lib-loader.component.scss +0 -26
  186. package/src/lib/lib-loader/lib-loader.component.ts +0 -13
  187. package/src/lib/lib-period/lib-period.component.html +0 -41
  188. package/src/lib/lib-period/lib-period.component.scss +0 -77
  189. package/src/lib/lib-period/lib-period.component.ts +0 -131
  190. package/src/lib/lib-radio/lib-radio.component.html +0 -22
  191. package/src/lib/lib-radio/lib-radio.component.scss +0 -113
  192. package/src/lib/lib-radio/lib-radio.component.ts +0 -78
  193. package/src/lib/lib-search-input/lib-search-input.component.html +0 -48
  194. package/src/lib/lib-search-input/lib-search-input.component.scss +0 -86
  195. package/src/lib/lib-search-input/lib-search-input.component.ts +0 -94
  196. package/src/lib/lib-select/lib-select.component.html +0 -83
  197. package/src/lib/lib-select/lib-select.component.scss +0 -130
  198. package/src/lib/lib-select/lib-select.component.ts +0 -152
  199. package/src/lib/lib-skeleton/lib-skeleton.component.html +0 -11
  200. package/src/lib/lib-skeleton/lib-skeleton.component.scss +0 -36
  201. package/src/lib/lib-skeleton/lib-skeleton.component.ts +0 -41
  202. package/src/lib/lib-sort/lib-sort.component.html +0 -21
  203. package/src/lib/lib-sort/lib-sort.component.scss +0 -21
  204. package/src/lib/lib-sort/lib-sort.component.ts +0 -52
  205. package/src/lib/lib-step/lib-step.component.html +0 -4
  206. package/src/lib/lib-step/lib-step.component.scss +0 -23
  207. package/src/lib/lib-step/lib-step.component.ts +0 -14
  208. package/src/lib/lib-svg/lib-svg.component.html +0 -15
  209. package/src/lib/lib-svg/lib-svg.component.scss +0 -81
  210. package/src/lib/lib-svg-icon/lib-svg-icon.component.css +0 -0
  211. package/src/lib/lib-svg-icon/lib-svg-icon.component.ts +0 -58
  212. package/src/lib/lib-tabs-fragment/lib-tabs-fragment.component.html +0 -12
  213. package/src/lib/lib-tabs-fragment/lib-tabs-fragment.component.scss +0 -19
  214. package/src/lib/lib-tabs-fragment/lib-tabs-fragment.component.ts +0 -88
  215. package/src/lib/lib-textarea/lib-textarea.component.html +0 -37
  216. package/src/lib/lib-textarea/lib-textarea.component.scss +0 -77
  217. package/src/lib/lib-textarea/lib-textarea.component.ts +0 -49
  218. package/src/lib/toast/toast-base/toast-base.component.html +0 -7
  219. package/src/lib/toast/toast-base/toast-base.component.scss +0 -44
  220. package/src/lib/toast/toast-base/toast-base.component.ts +0 -38
  221. package/src/lib/toast/toast-placeholder/toast-placeholder.component.ts +0 -20
  222. package/src/lib/toast/toast.service.ts +0 -130
  223. package/src/lib/utils/decorators.ts +0 -124
  224. package/src/public-api.ts +0 -35
  225. package/tsconfig.lib.json +0 -14
  226. package/tsconfig.lib.prod.json +0 -10
  227. package/tsconfig.spec.json +0 -14
@@ -0,0 +1,92 @@
1
+ import { HttpHeaders, HttpParams } from '@angular/common/http';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { of } from 'rxjs';
4
+ import { switchMap } from 'rxjs/operators';
5
+ import { isArray } from "@angular/compiler-cli/src/ngtsc/annotations/common";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common/http";
8
+ export class FetcherService {
9
+ constructor(http, apiUrl = 'api') {
10
+ this.http = http;
11
+ this.apiUrl = apiUrl;
12
+ // private apiUrl = 'api';
13
+ this.payloadMethods = ['post', 'put'];
14
+ }
15
+ get(urlParts, options = {}, urlId) {
16
+ urlParts = urlId ? urlParts.replace(/{[^}]+}/g, urlId.toString()) : urlParts;
17
+ const url = urlParts ? [this.apiUrl].concat(urlParts).join('/') : this.apiUrl;
18
+ let params = new HttpParams();
19
+ for (const key of Object.keys(options)) {
20
+ if (options[key] != null) {
21
+ if (options[key].length && isArray(options[key])) {
22
+ options[key].forEach((f) => {
23
+ params = params.append(key, f);
24
+ });
25
+ }
26
+ else {
27
+ params = params.append(key, options[key]);
28
+ }
29
+ }
30
+ }
31
+ return this.request('get', url, { params });
32
+ }
33
+ post(urlParts, data, options = {}) {
34
+ const url = [this.apiUrl].concat(urlParts).join('/');
35
+ if (options?.params) {
36
+ let params = new HttpParams();
37
+ for (const key of Object.keys(options.params)) {
38
+ if (options.params[key] != null) {
39
+ params = params.append(key, options.params[key]);
40
+ }
41
+ }
42
+ options.params = params;
43
+ }
44
+ return this.request('post', url, options, data);
45
+ }
46
+ put(urlParts, options = {}, data) {
47
+ const url = [this.apiUrl].concat(urlParts).join('/');
48
+ return this.request('put', url, options, data);
49
+ }
50
+ delete(urlParts, options = {}) {
51
+ const url = [this.apiUrl].concat(urlParts).join('/');
52
+ return this.request('delete', url, options);
53
+ }
54
+ /** перегоняем объкты в форм дату*/
55
+ createFormData(form) {
56
+ const formData = new FormData();
57
+ Object.keys(form).forEach((item) => {
58
+ formData.append(item, form[item]);
59
+ });
60
+ return formData;
61
+ }
62
+ request(method, url, options, data) {
63
+ if (options.headers) {
64
+ options.headers = new HttpHeaders(options.headers);
65
+ }
66
+ let request;
67
+ options.withCredentials = true;
68
+ if (this.payloadMethods.includes(method)) {
69
+ request = this.http[method](url, data, options);
70
+ }
71
+ else {
72
+ request = this.http[method](url, options);
73
+ }
74
+ return request.pipe(switchMap((response) => {
75
+ if (response && response.error) {
76
+ console.error(`API error with status: ${response.status}`);
77
+ console.error(response.error);
78
+ }
79
+ return of(response);
80
+ }));
81
+ }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FetcherService, deps: [{ token: i1.HttpClient }, { token: 'apiUrl' }], target: i0.ɵɵFactoryTarget.Injectable }); }
83
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FetcherService, providedIn: 'root' }); }
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FetcherService, decorators: [{
86
+ type: Injectable,
87
+ args: [{ providedIn: 'root' }]
88
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
89
+ type: Inject,
90
+ args: ['apiUrl']
91
+ }] }] });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2hlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9mZXRjaGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sb0RBQW9ELENBQUM7OztBQWUzRSxNQUFNLE9BQU8sY0FBYztJQUl6QixZQUFvQixJQUFnQixFQUE0QixTQUFpQixLQUFLO1FBQWxFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBNEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFIdEYsMEJBQTBCO1FBQ1QsbUJBQWMsR0FBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUc1RCxDQUFDO0lBRU0sR0FBRyxDQUFJLFFBQWdCLEVBQUUsVUFBZSxFQUFFLEVBQUUsS0FBdUI7UUFDeEUsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM3RSxNQUFNLEdBQUcsR0FBVyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdEYs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QUM7K0dBdkZVLGNBQWMsNENBSXFCLFFBQVE7bUhBSjNDLGNBQWMsY0FERixNQUFNOzs0RkFDbEIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OzBCQUtTLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7c3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7aXNBcnJheX0gZnJvbSBcIkBhbmd1bGFyL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvYW5ub3RhdGlvbnMvY29tbW9uXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBJUmVzcG9uc2U8VD4ge1xyXG4gIGVycm9yOiBzdHJpbmc7XHJcbiAgZXJyb3JDb2RlOiBzdHJpbmc7XHJcbiAgbWVzc2FnZTogbnVsbCB8IHN0cmluZztcclxuICByZWRpcmVjdDogbnVsbCB8IHN0cmluZztcclxuICBzeXN0ZW1NZXNzYWdlOiBudWxsIHwgc3RyaW5nO1xyXG4gIHJlc3VsdDogJ09LJyB8ICdFUlJPUicgfCAnRkFJTCc7XHJcbiAgdmFsdWU6IFQ7XHJcbn1cclxuXHJcbnR5cGUgUGF5bG9hZE1ldGhvZCA9ICdwb3N0JyB8ICdwdXQnIHwgJ2dldCcgfCAnZGVsZXRlJztcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KSAvKiog0YHQtdGA0LLQuNGBINC+0LHRgNCw0LHQvtGC0LrQuCDQt9Cw0L/RgNC+0YHQvtCyINC6IGFwaSAqL1xyXG5leHBvcnQgY2xhc3MgRmV0Y2hlclNlcnZpY2Uge1xyXG4gIC8vIHByaXZhdGUgYXBpVXJsID0gJ2FwaSc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBwYXlsb2FkTWV0aG9kczogc3RyaW5nW10gPSBbJ3Bvc3QnLCAncHV0J107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgQEluamVjdCgnYXBpVXJsJykgcHJpdmF0ZSBhcGlVcmw6IHN0cmluZyA9ICdhcGknKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0PFI+KHVybFBhcnRzOiBzdHJpbmcsIG9wdGlvbnM6IGFueSA9IHt9LCB1cmxJZD86IHN0cmluZyB8IG51bWJlcik6IE9ic2VydmFibGU8Uj4ge1xyXG4gICAgdXJsUGFydHMgPSB1cmxJZCA/IHVybFBhcnRzLnJlcGxhY2UoL3tbXn1dK30vZywgdXJsSWQudG9TdHJpbmcoKSkgOiB1cmxQYXJ0cztcclxuICAgIGNvbnN0IHVybDogc3RyaW5nID0gdXJsUGFydHMgPyBbdGhpcy5hcGlVcmxdLmNvbmNhdCh1cmxQYXJ0cykuam9pbignLycpIDogdGhpcy5hcGlVcmw7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9wdGlvbnMpKSB7XHJcbiAgICAgIGlmIChvcHRpb25zW2tleV0gIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChvcHRpb25zW2tleV0ubGVuZ3RoICYmIGlzQXJyYXkob3B0aW9uc1trZXldKSkge1xyXG4gICAgICAgICAgb3B0aW9uc1trZXldLmZvckVhY2goKGY6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChrZXksIGYpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoa2V5LCBvcHRpb25zW2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnZ2V0JywgdXJsLCB7cGFyYW1zfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcG9zdDxSPih1cmxQYXJ0czogc3RyaW5nW10gfCBzdHJpbmcsIGRhdGE/OiBhbnksIG9wdGlvbnM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxSPiB7XHJcbiAgICBjb25zdCB1cmw6IHN0cmluZyA9IFt0aGlzLmFwaVVybF0uY29uY2F0KHVybFBhcnRzKS5qb2luKCcvJyk7XHJcbiAgICBpZiAob3B0aW9ucz8ucGFyYW1zKSB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvcHRpb25zLnBhcmFtcykpIHtcclxuICAgICAgICBpZiAob3B0aW9ucy5wYXJhbXNba2V5XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGtleSwgb3B0aW9ucy5wYXJhbXNba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgncG9zdCcsIHVybCwgb3B0aW9ucywgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHV0PFI+KHVybFBhcnRzOiBzdHJpbmdbXSB8IHN0cmluZywgb3B0aW9uczogYW55ID0ge30sIGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmw6IHN0cmluZyA9IFt0aGlzLmFwaVVybF0uY29uY2F0KHVybFBhcnRzKS5qb2luKCcvJyk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdwdXQnLCB1cmwsIG9wdGlvbnMsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZTxSPih1cmxQYXJ0czogc3RyaW5nW10gfCBzdHJpbmcsIG9wdGlvbnM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxSPiB7XHJcbiAgICBjb25zdCB1cmw6IHN0cmluZyA9IFt0aGlzLmFwaVVybF0uY29uY2F0KHVybFBhcnRzKS5qb2luKCcvJyk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdkZWxldGUnLCB1cmwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqINC/0LXRgNC10LPQvtC90Y/QtdC8INC+0LHRitC60YLRiyDQsiDRhNC+0YDQvCDQtNCw0YLRgyovXHJcbiAgcHVibGljIGNyZWF0ZUZvcm1EYXRhKGZvcm06IHsgW3g6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIE9iamVjdC5rZXlzKGZvcm0pLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoaXRlbSwgZm9ybVtpdGVtXSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JtRGF0YTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVxdWVzdDxSPihtZXRob2Q6IFBheWxvYWRNZXRob2QsIHVybDogc3RyaW5nLCBvcHRpb25zOiBhbnksIGRhdGE/OiBhbnkpOiBPYnNlcnZhYmxlPFI+IHtcclxuICAgIGlmIChvcHRpb25zLmhlYWRlcnMpIHtcclxuICAgICAgb3B0aW9ucy5oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICB9XHJcbiAgICBsZXQgcmVxdWVzdDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLnBheWxvYWRNZXRob2RzLmluY2x1ZGVzKG1ldGhvZCkpIHtcclxuICAgICAgcmVxdWVzdCA9IHRoaXMuaHR0cFttZXRob2QgYXMgJ3Bvc3QnIHwgJ3B1dCddKHVybCwgZGF0YSwgb3B0aW9ucyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXF1ZXN0ID0gKHRoaXMuaHR0cCBhcyBhbnkpW21ldGhvZF0odXJsLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVxdWVzdC5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEFQSSBlcnJvciB3aXRoIHN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9YCk7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlLmVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgICAgfSksXHJcbiAgICAgIC8vIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgLy8gY29uc29sZS50aW1lRW5kKCfQktGA0LXQvNGPINCy0YvQv9C+0LvQvdC10L3QuNGPIC0gJyArIHVybCk7XHJcbiAgICAgIC8vIGlmIChlcnJvci5zdGF0dXMgIT09IDQwMykge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gcmV0dXJuIG9mKGVycm9yKTtcclxuICAgICAgLy8gfSksXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { HttpErrorResponse, } from '@angular/common/http';
2
+ import { Injectable } from '@angular/core';
3
+ import { catchError } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ export class InterceptorsService {
7
+ constructor(router) {
8
+ this.router = router;
9
+ }
10
+ /** перехватчик состояния запросов к api */
11
+ intercept(req, next) {
12
+ return next.handle(req).pipe(catchError(err => {
13
+ if (err instanceof HttpErrorResponse) {
14
+ if (err.status >= 500) {
15
+ this.router.navigate(['tech-works']);
16
+ }
17
+ }
18
+ throw err;
19
+ }));
20
+ }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InterceptorsService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
22
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InterceptorsService }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InterceptorsService, decorators: [{
25
+ type: Injectable
26
+ }], ctorParameters: () => [{ type: i1.Router }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3JzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2ludGVyY2VwdG9ycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsR0FBd0QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSTFDLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDbEMsQ0FBQztJQUVELDJDQUEyQztJQUNwQyxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUN2RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZixJQUFJLEdBQUcsWUFBWSxpQkFBaUIsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQWpCVSxtQkFBbUI7bUhBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Y2F0Y2hFcnJvcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEludGVyY2VwdG9yc1NlcnZpY2UgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgfVxyXG5cclxuICAvKiog0L/QtdGA0LXRhdCy0LDRgtGH0LjQuiDRgdC+0YHRgtC+0Y/QvdC40Y8g0LfQsNC/0YDQvtGB0L7QsiDQuiBhcGkgKi9cclxuICBwdWJsaWMgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA+PSA1MDApIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWyd0ZWNoLXdvcmtzJ10pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,26 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SvgIconsService {
4
+ constructor() {
5
+ this.registry = new Map();
6
+ }
7
+ registerIcons(icons) {
8
+ icons.forEach((icon) => this.registry.set(icon.name, icon.data));
9
+ }
10
+ getIcon(iconName) {
11
+ if (!this.registry.has(iconName)) {
12
+ // eslint-disable-next-line no-console
13
+ console.warn(`We could not find the icon with name ${iconName}, did you add it to the icon registry?`);
14
+ }
15
+ return this.registry.get(iconName);
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SvgIconsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
18
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SvgIconsService, providedIn: 'root' }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SvgIconsService, decorators: [{
21
+ type: Injectable,
22
+ args: [{
23
+ providedIn: 'root'
24
+ }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL3N2Zy1pY29ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxlQUFlO0lBSDVCO1FBS1UsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0tBZ0I5QztJQWRDLGFBQWEsQ0FBQyxLQUFnQjtRQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBZ0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDakMsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysd0NBQXlDLFFBQVMsd0NBQXdDLENBQzNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDOytHQWpCVSxlQUFlO21IQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdmdJY29ufSBmcm9tIFwiLi4vLi4vLi4vLi4vYXNzZXRzL3N2Zy1pY29uc1wiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3ZnSWNvbnNTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSByZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblxyXG4gIHJlZ2lzdGVySWNvbnMoaWNvbnM6IFN2Z0ljb25bXSk6IHZvaWQge1xyXG4gICAgaWNvbnMuZm9yRWFjaCgoaWNvbjogU3ZnSWNvbikgPT4gdGhpcy5yZWdpc3RyeS5zZXQoaWNvbi5uYW1lLCBpY29uLmRhdGEpKTtcclxuICB9XHJcblxyXG4gIGdldEljb24oaWNvbk5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIXRoaXMucmVnaXN0cnkuaGFzKGljb25OYW1lKSkge1xyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYFdlIGNvdWxkIG5vdCBmaW5kIHRoZSBpY29uIHdpdGggbmFtZSAkeyBpY29uTmFtZSB9LCBkaWQgeW91IGFkZCBpdCB0byB0aGUgaWNvbiByZWdpc3RyeT9gLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmdldChpY29uTmFtZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,64 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class ThemeConstructorService {
5
+ get getTheme() {
6
+ return this.themeConfigurator.theme;
7
+ }
8
+ constructor(rendererFactory) {
9
+ this.rendererFactory = rendererFactory;
10
+ this.renderer = rendererFactory.createRenderer(null, null);
11
+ }
12
+ setThemeConfiguratorRoot(document) {
13
+ this.themeConfigurator = new ThemeConfigurator(document, this.renderer);
14
+ this.isDarkTheme = this.themeConfigurator.isDarkThemeObservable;
15
+ }
16
+ changeTheme(darkMode) {
17
+ this.themeConfigurator.setTheme(darkMode);
18
+ }
19
+ switchTheme() {
20
+ this.themeConfigurator.switchTheme();
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ThemeConstructorService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
23
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ThemeConstructorService, providedIn: 'root' }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ThemeConstructorService, decorators: [{
26
+ type: Injectable,
27
+ args: [{
28
+ providedIn: 'root',
29
+ }]
30
+ }], ctorParameters: () => [{ type: i0.RendererFactory2 }] });
31
+ export class ThemeConfigurator {
32
+ set theme(value) {
33
+ localStorage.setItem('theme', value.toString());
34
+ this.isDarkTheme$.next(value);
35
+ }
36
+ get theme() {
37
+ return this.isDarkTheme$.getValue();
38
+ }
39
+ constructor(document, renderer) {
40
+ this.document = document;
41
+ this.renderer = renderer;
42
+ this.isDarkTheme$ = new BehaviorSubject(false);
43
+ this.isDarkThemeObservable = this.isDarkTheme$.asObservable();
44
+ this.isDarkThemeObservable.subscribe(ref => this.setTheme(ref));
45
+ const theme = localStorage.getItem('theme');
46
+ if (!theme) {
47
+ this.theme = false;
48
+ }
49
+ else {
50
+ this.theme = localStorage.getItem('theme') !== 'false';
51
+ }
52
+ }
53
+ switchTheme() {
54
+ this.theme = !this.theme;
55
+ }
56
+ setTheme(isDarkMode) {
57
+ if (!this.document) {
58
+ return;
59
+ }
60
+ const hostClass = isDarkMode ? 'theme-dark' : 'theme-light';
61
+ this.renderer.setAttribute(this.document.body, 'class', hostClass);
62
+ }
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtY29uc3RydWN0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RkLWxpYi9zcmMvbGliL2NvcmUvc2VydmljZXMvdGhlbWUtY29uc3RydWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOztBQUtuRCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUtELFlBQW9CLGVBQWlDO1FBQWpDLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxRQUFrQjtRQUNoRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDO0lBQ2xFLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBaUI7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQzsrR0F2QlUsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUEyQkQsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixJQUFXLEtBQUssQ0FBQyxLQUFjO1FBQzdCLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUtELFlBQW9CLFFBQWtCLEVBQVUsUUFBbUI7UUFBL0MsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFIM0QsaUJBQVksR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDOUUsMEJBQXFCLEdBQXdCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFHbkYsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRSxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLE9BQU8sQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxVQUFtQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDckUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRoZW1lQ29uc3RydWN0b3JTZXJ2aWNlIHtcclxuICBwdWJsaWMgZ2V0IGdldFRoZW1lKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGhlbWVDb25maWd1cmF0b3IudGhlbWU7XHJcbiAgfVxyXG4gIHB1YmxpYyBpc0RhcmtUaGVtZSE6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyO1xyXG4gIHByaXZhdGUgdGhlbWVDb25maWd1cmF0b3IhOiBUaGVtZUNvbmZpZ3VyYXRvcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIpIHtcclxuICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VGhlbWVDb25maWd1cmF0b3JSb290KGRvY3VtZW50OiBEb2N1bWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy50aGVtZUNvbmZpZ3VyYXRvciA9IG5ldyBUaGVtZUNvbmZpZ3VyYXRvcihkb2N1bWVudCwgdGhpcy5yZW5kZXJlcik7XHJcbiAgICB0aGlzLmlzRGFya1RoZW1lID0gdGhpcy50aGVtZUNvbmZpZ3VyYXRvci5pc0RhcmtUaGVtZU9ic2VydmFibGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlVGhlbWUoZGFya01vZGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMudGhlbWVDb25maWd1cmF0b3Iuc2V0VGhlbWUoZGFya01vZGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN3aXRjaFRoZW1lKCk6IHZvaWQge1xyXG4gICAgdGhpcy50aGVtZUNvbmZpZ3VyYXRvci5zd2l0Y2hUaGVtZSgpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRoZW1lQ29uZmlndXJhdG9yIHtcclxuICBwdWJsaWMgc2V0IHRoZW1lKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGhlbWUnLCB2YWx1ZS50b1N0cmluZygpKTtcclxuICAgIHRoaXMuaXNEYXJrVGhlbWUkLm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB0aGVtZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzRGFya1RoZW1lJC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RhcmtUaGVtZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHB1YmxpYyBpc0RhcmtUaGVtZU9ic2VydmFibGU6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzRGFya1RoZW1lJC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG4gICAgdGhpcy5pc0RhcmtUaGVtZU9ic2VydmFibGUuc3Vic2NyaWJlKHJlZiA9PiB0aGlzLnNldFRoZW1lKHJlZikpO1xyXG4gICAgY29uc3QgdGhlbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWUnKTtcclxuXHJcbiAgICBpZiAoIXRoZW1lKSB7XHJcbiAgICAgIHRoaXMudGhlbWUgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGhlbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWUnKSAhPT0gJ2ZhbHNlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzd2l0Y2hUaGVtZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGhlbWUgPSAhdGhpcy50aGVtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRUaGVtZShpc0RhcmtNb2RlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZG9jdW1lbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaG9zdENsYXNzID0gaXNEYXJrTW9kZSA/ICd0aGVtZS1kYXJrJyA6ICd0aGVtZS1saWdodCc7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmRvY3VtZW50LmJvZHksICdjbGFzcycsIGhvc3RDbGFzcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,73 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { of } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class ValidatorsService {
6
+ constructor() { }
7
+ /** валидатор совпадения пароллей. При использовании указывать поля pswd & confPswd*/
8
+ static passEqual(el) {
9
+ if (!el.get('pswd') || !el.get('oldPswd')) {
10
+ return null;
11
+ }
12
+ if (!(el.dirty || el.touched) || el.get('pswd')?.value === el.get('confPswd')?.value) {
13
+ return null;
14
+ }
15
+ return {
16
+ passEqual: 'Пароли не совпадают',
17
+ };
18
+ }
19
+ static passNotEqual(el) {
20
+ if (!el.get('pswd') || !el.get('oldPswd')) {
21
+ return null;
22
+ }
23
+ if (!(el.dirty || el.touched) || el.get('pswd')?.value !== el.get('oldPswd')?.value) {
24
+ return null;
25
+ }
26
+ return {
27
+ passNotEqual: 'Старый и новый пароли не должны совпадать',
28
+ };
29
+ }
30
+ static wrongLogin() {
31
+ return {
32
+ wrongMail: 'Неверный логин!',
33
+ };
34
+ }
35
+ static wrongLoginOrPswd() {
36
+ return {
37
+ wrongLogin: 'Неверный логин или пароль!',
38
+ };
39
+ }
40
+ static existLogin() {
41
+ return {
42
+ mailErr: 'Пользователь с таким адресом уже зарегистрирован.',
43
+ };
44
+ }
45
+ /** валидатор имени*/
46
+ static getNameValid() {
47
+ return [Validators.required, Validators.pattern(/^[A-ZА-Яa-zа-яЁё0-9- .]+$/), Validators.maxLength(35)];
48
+ }
49
+ /** валидатор email*/
50
+ static getMailValid(el) {
51
+ const pattern = /^([A-Za-z0-9+_-]+\.)*[A-Za-z0-9+_-]+@[A-Za-z0-9+_-]+(\.[A-Za-z0-9+_-]+)*\.[A-Za-z]{2,6}$/;
52
+ if (!el?.value) {
53
+ return of({
54
+ required: 'Это поле обязательно для заполнения',
55
+ });
56
+ }
57
+ else if (!pattern.test(el.value) && el.value !== 'test_admin' && el.value !== 'admin') {
58
+ return of({
59
+ email: 'Некорректно введены данные',
60
+ });
61
+ }
62
+ else {
63
+ return of(null);
64
+ }
65
+ }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidatorsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidatorsService, providedIn: 'root' }); }
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidatorsService, decorators: [{
70
+ type: Injectable,
71
+ args: [{ providedIn: 'root' }]
72
+ }], ctorParameters: () => [] });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvY29yZS9zZXJ2aWNlcy92YWxpZGF0b3JzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR3RDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsZ0JBQWUsQ0FBQztJQUVoQixxRkFBcUY7SUFDOUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFtQjtRQUN6QyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3JGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU87WUFDTCxTQUFTLEVBQUUscUJBQXFCO1NBQ2pDLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFtQjtRQUM1QyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3BGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU87WUFDTCxZQUFZLEVBQUUsMkNBQTJDO1NBQzFELENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVU7UUFDdEIsT0FBTztZQUNMLFNBQVMsRUFBRSxpQkFBaUI7U0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCO1FBQzVCLE9BQU87WUFDTCxVQUFVLEVBQUUsNEJBQTRCO1NBQ3pDLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVU7UUFDdEIsT0FBTztZQUNMLE9BQU8sRUFBRSxtREFBbUQ7U0FDN0QsQ0FBQztJQUNKLENBQUM7SUFFRCxxQkFBcUI7SUFDZCxNQUFNLENBQUMsWUFBWTtRQUN4QixPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxxQkFBcUI7SUFDZCxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQW9CO1FBQzdDLE1BQU0sT0FBTyxHQUNYLDBGQUEwRixDQUFDO1FBQzdGLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLEVBQUUsQ0FBQztnQkFDUixRQUFRLEVBQUUscUNBQXFDO2FBQ2hELENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxZQUFZLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN4RixPQUFPLEVBQUUsQ0FBQztnQkFDUixLQUFLLEVBQUUsNEJBQTRCO2FBQ3BDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7K0dBbEVVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBREosTUFBTTs7NEZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JzU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICAvKiog0LLQsNC70LjQtNCw0YLQvtGAINGB0L7QstC/0LDQtNC10L3QuNGPINC/0LDRgNC+0LvQu9C10LkuINCf0YDQuCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQuCDRg9C60LDQt9GL0LLQsNGC0Ywg0L/QvtC70Y8gcHN3ZCAmIGNvbmZQc3dkKi9cclxuICBwdWJsaWMgc3RhdGljIHBhc3NFcXVhbChlbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKCFlbC5nZXQoJ3Bzd2QnKSB8fCAhZWwuZ2V0KCdvbGRQc3dkJykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAoIShlbC5kaXJ0eSB8fCBlbC50b3VjaGVkKSB8fCBlbC5nZXQoJ3Bzd2QnKT8udmFsdWUgPT09IGVsLmdldCgnY29uZlBzd2QnKT8udmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwYXNzRXF1YWw6ICfQn9Cw0YDQvtC70Lgg0L3QtSDRgdC+0LLQv9Cw0LTQsNGO0YInLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgcGFzc05vdEVxdWFsKGVsOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBpZiAoIWVsLmdldCgncHN3ZCcpIHx8ICFlbC5nZXQoJ29sZFBzd2QnKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICghKGVsLmRpcnR5IHx8IGVsLnRvdWNoZWQpIHx8IGVsLmdldCgncHN3ZCcpPy52YWx1ZSAhPT0gZWwuZ2V0KCdvbGRQc3dkJyk/LnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcGFzc05vdEVxdWFsOiAn0KHRgtCw0YDRi9C5INC4INC90L7QstGL0Lkg0L/QsNGA0L7Qu9C4INC90LUg0LTQvtC70LbQvdGLINGB0L7QstC/0LDQtNCw0YLRjCcsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB3cm9uZ0xvZ2luKCk6IFZhbGlkYXRpb25FcnJvcnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgd3JvbmdNYWlsOiAn0J3QtdCy0LXRgNC90YvQuSDQu9C+0LPQuNC9IScsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB3cm9uZ0xvZ2luT3JQc3dkKCk6IFZhbGlkYXRpb25FcnJvcnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgd3JvbmdMb2dpbjogJ9Cd0LXQstC10YDQvdGL0Lkg0LvQvtCz0LjQvSDQuNC70Lgg0L/QsNGA0L7Qu9GMIScsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBleGlzdExvZ2luKCk6IFZhbGlkYXRpb25FcnJvcnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbWFpbEVycjogJ9Cf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRgSDRgtCw0LrQuNC8INCw0LTRgNC10YHQvtC8INGD0LbQtSDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L0uJyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKiog0LLQsNC70LjQtNCw0YLQvtGAINC40LzQtdC90LgqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TmFtZVZhbGlkKCkge1xyXG4gICAgcmV0dXJuIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bQS1a0JAt0K9hLXrQsC3Rj9CB0ZEwLTktIC5dKyQvKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzUpXTtcclxuICB9XHJcblxyXG4gIC8qKiDQstCw0LvQuNC00LDRgtC+0YAgZW1haWwqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TWFpbFZhbGlkKGVsPzogQWJzdHJhY3RDb250cm9sKTogT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4ge1xyXG4gICAgY29uc3QgcGF0dGVybiA9XHJcbiAgICAgIC9eKFtBLVphLXowLTkrXy1dK1xcLikqW0EtWmEtejAtOStfLV0rQFtBLVphLXowLTkrXy1dKyhcXC5bQS1aYS16MC05K18tXSspKlxcLltBLVphLXpdezIsNn0kLztcclxuICAgIGlmICghZWw/LnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBvZih7XHJcbiAgICAgICAgcmVxdWlyZWQ6ICfQrdGC0L4g0L/QvtC70LUg0L7QsdGP0LfQsNGC0LXQu9GM0L3QviDQtNC70Y8g0LfQsNC/0L7Qu9C90LXQvdC40Y8nLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoIXBhdHRlcm4udGVzdChlbC52YWx1ZSkgJiYgZWwudmFsdWUgIT09ICd0ZXN0X2FkbWluJyAmJiBlbC52YWx1ZSAhPT0gJ2FkbWluJykge1xyXG4gICAgICByZXR1cm4gb2Yoe1xyXG4gICAgICAgIGVtYWlsOiAn0J3QtdC60L7RgNGA0LXQutGC0L3QviDQstCy0LXQtNC10L3RiyDQtNCw0L3QvdGL0LUnLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,128 @@
1
+ export function compare(field, order, ...args) {
2
+ let len = args.length;
3
+ if (len === 0) {
4
+ return (a, b) => (a < b && -1) || (a > b && 1) || 0;
5
+ }
6
+ if (len === 1) {
7
+ switch (typeof field) {
8
+ case 'number':
9
+ return field < 0
10
+ ? (a, b) => (a < b && 1) || (a > b && -1) || 0
11
+ : (a, b) => (a < b && -1) || (a > b && 1) || 0;
12
+ case 'string':
13
+ return (a, b) => (a[field] ? a[field].toLowerCase() : '' < b[field] ? b[field].toLowerCase() : '' && -1) ||
14
+ (a[field] ? a[field].toLowerCase() : '' > b[field] ? b[field].toLowerCase() : '' && 1) ||
15
+ 0;
16
+ }
17
+ }
18
+ if (field && len === 2 && typeof order === 'number') {
19
+ return order < 0
20
+ ? (a, b) => (b[field] || '').toLowerCase().localeCompare((a[field] || '').toLowerCase())
21
+ : (a, b) => (a[field] || '').toLowerCase().localeCompare((b[field] || '').toLowerCase());
22
+ }
23
+ let fields;
24
+ let orders;
25
+ if (typeof field === 'object') {
26
+ fields = Object.getOwnPropertyNames(field);
27
+ orders = fields.map(key => field[key]);
28
+ len = fields.length;
29
+ }
30
+ else {
31
+ fields = new Array(len);
32
+ orders = new Array(len);
33
+ for (let i = len; i--;) {
34
+ fields[i] = args[i];
35
+ orders[i] = 1;
36
+ }
37
+ }
38
+ return (a, b) => {
39
+ for (let i = 0; i < len; i++) {
40
+ if (a[fields[i]].toLowerCase() < b[fields[i]].toLowerCase()) {
41
+ return orders[i];
42
+ }
43
+ if (a[fields[i]].toLowerCase() > b[fields[i]].toLowerCase()) {
44
+ return -orders[i];
45
+ }
46
+ }
47
+ return 0;
48
+ };
49
+ }
50
+ // export function parseDate(value) {
51
+ // if (value && value.length === 6) {
52
+ // const year = parseInt(value.slice(2, 6), 10);
53
+ // const month = parseInt(value.slice(0, 2), 10) - 1;
54
+ // return new Date(year, month);
55
+ // }
56
+ // }
57
+ export function rndRgb() {
58
+ const x = Math.floor(Math.random() * 256);
59
+ const y = Math.floor(Math.random() * 256);
60
+ const z = Math.floor(Math.random() * 256);
61
+ return 'rgb(' + x + ',' + y + ',' + z + ')';
62
+ }
63
+ export function setMinDate() {
64
+ let curYear = new Date().getFullYear();
65
+ let curMonth = new Date().getMonth();
66
+ const curDay = new Date().getDate();
67
+ if (curMonth < 6) {
68
+ curYear -= 1;
69
+ curMonth = curMonth - 6 + 12;
70
+ }
71
+ else {
72
+ curMonth -= 6;
73
+ }
74
+ return new Date(curYear, curMonth, curDay);
75
+ }
76
+ export function isNil(value) {
77
+ return value === null || typeof value === 'undefined';
78
+ }
79
+ export function isString(value) {
80
+ return typeof value === 'string';
81
+ }
82
+ export function isObject(value) {
83
+ return value !== null && typeof value === 'object';
84
+ }
85
+ export function getProperty(value, key) {
86
+ if (isNil(value) || !isObject(value)) {
87
+ return undefined;
88
+ }
89
+ const keys = key.split('.');
90
+ let result = value[keys.shift()];
91
+ for (const k of keys) {
92
+ if (isNil(result) || !isObject(result)) {
93
+ return undefined;
94
+ }
95
+ result = result[k];
96
+ }
97
+ return result;
98
+ }
99
+ export function isMobile() {
100
+ return Android() || BlackBerry() || iOS() || Opera() || Windows();
101
+ }
102
+ export function Android() {
103
+ return !!navigator.userAgent.match(/Android/i);
104
+ }
105
+ export function BlackBerry() {
106
+ return !!navigator.userAgent.match(/BlackBerry/i);
107
+ }
108
+ export function iOS() {
109
+ return !!navigator.userAgent.match(/iPhone|iPad|iPod/i);
110
+ }
111
+ export function Opera() {
112
+ return !!navigator.userAgent.match(/Opera Mini/i);
113
+ }
114
+ export function Windows() {
115
+ return !!navigator.userAgent.match(/IEMobile/i) || navigator.userAgent.match(/WPDesktop/i);
116
+ }
117
+ export function dataURLtoFile(dataUrl, filename) {
118
+ const arr = dataUrl.split(',');
119
+ const mime = arr[0].match(/:(.*?);/)[1];
120
+ const bstr = atob(arr[1]);
121
+ let n = bstr.length;
122
+ const u8arr = new Uint8Array(n);
123
+ while (n--) {
124
+ u8arr[n] = bstr.charCodeAt(n);
125
+ }
126
+ return new File([u8arr], filename, { type: mime });
127
+ }
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9jb3JlL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBVyxFQUFFLEtBQWMsRUFBRSxHQUFHLElBQWlCO0lBQ3ZFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDZCxRQUFRLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDckIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sS0FBSyxHQUFHLENBQUM7b0JBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQzlELENBQUMsQ0FBQyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkUsS0FBSyxRQUFRO2dCQUNYLE9BQU8sQ0FBQyxDQUEwQixFQUFFLENBQTBCLEVBQUUsRUFBRSxDQUNoRSxDQUFDLENBQUMsQ0FBQyxLQUFL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QUMxQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNYLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjb21wYXJlKGZpZWxkPzogYW55LCBvcmRlcj86IG51bWJlciwgLi4uYXJnczogdW5kZWZpbmVkW10pOiBhbnkge1xuICBsZXQgbGVuID0gYXJncy5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHtcbiAgICByZXR1cm4gKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiAoYSA8IGIgJiYgLTEpIHx8IChhID4gYiAmJiAxKSB8fCAwO1xuICB9XG4gIGlmIChsZW4gPT09IDEpIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiBmaWVsZCkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmV0dXJuIGZpZWxkIDwgMFxuICAgICAgICAgID8gKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiAoYSA8IGIgJiYgMSkgfHwgKGEgPiBiICYmIC0xKSB8fCAwXG4gICAgICAgICAgOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IChhIDwgYiAmJiAtMSkgfHwgKGEgPiBiICYmIDEpIHx8IDA7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gKGE6IHsgW3g6IHN0cmluZ106IHN0cmluZyB9LCBiOiB7IFt4OiBzdHJpbmddOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgICAoYVtmaWVsZF0gPyBhW2ZpZWxkXS50b0xvd2VyQ2FzZSgpIDogJycgPCBiW2ZpZWxkXSA/IGJbZmllbGRdLnRvTG93ZXJDYXNlKCkgOiAnJyAmJiAtMSkgfHxcbiAgICAgICAgICAoYVtmaWVsZF0gPyBhW2ZpZWxkXS50b0xvd2VyQ2FzZSgpIDogJycgPiBiW2ZpZWxkXSA/IGJbZmllbGRdLnRvTG93ZXJDYXNlKCkgOiAnJyAmJiAxKSB8fFxuICAgICAgICAgIDA7XG4gICAgfVxuICB9XG4gIGlmIChmaWVsZCAmJiBsZW4gPT09IDIgJiYgdHlwZW9mIG9yZGVyID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBvcmRlciA8IDBcbiAgICAgID8gKFxuICAgICAgICAgIGE6IHsgW3g6IHN0cmluZ106IGFueSB9LFxuICAgICAgICAgIGI6IHtcbiAgICAgICAgICAgIFt4OiBzdHJpbmddOiBhbnk7XG4gICAgICAgICAgfSxcbiAgICAgICAgKSA9PiAoYltmaWVsZF0gfHwgJycpLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZSgoYVtmaWVsZF0gfHwgJycpLnRvTG93ZXJDYXNlKCkpXG4gICAgICA6IChcbiAgICAgICAgICBhOiB7IFt4OiBzdHJpbmddOiBhbnkgfSxcbiAgICAgICAgICBiOiB7XG4gICAgICAgICAgICBbeDogc3RyaW5nXTogYW55O1xuICAgICAgICAgIH0sXG4gICAgICAgICkgPT4gKGFbZmllbGRdIHx8ICcnKS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoKGJbZmllbGRdIHx8ICcnKS50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuICBsZXQgZmllbGRzOiBhbnlbXTtcbiAgbGV0IG9yZGVyczogYW55W107XG4gIGlmICh0eXBlb2YgZmllbGQgPT09ICdvYmplY3QnKSB7XG4gICAgZmllbGRzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZmllbGQpO1xuICAgIG9yZGVycyA9IGZpZWxkcy5tYXAoa2V5ID0+IGZpZWxkW2tleV0pO1xuICAgIGxlbiA9IGZpZWxkcy5sZW5ndGg7XG4gIH0gZWxzZSB7XG4gICAgZmllbGRzID0gbmV3IEFycmF5KGxlbik7XG4gICAgb3JkZXJzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yIChsZXQgaSA9IGxlbjsgaS0tOyApIHtcbiAgICAgIGZpZWxkc1tpXSA9IGFyZ3NbaV07XG4gICAgICBvcmRlcnNbaV0gPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gKFxuICAgIGE6IHsgW3g6IHN0cmluZ106IHsgdG9Mb3dlckNhc2U6ICgpID0+IG51bWJlciB9IH0sXG4gICAgYjogeyBbeDogc3RyaW5nXTogeyB0b0xvd2VyQ2FzZTogKCkgPT4gbnVtYmVyIH0gfSxcbiAgKSA9PiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKGFbZmllbGRzW2ldXS50b0xvd2VyQ2FzZSgpIDwgYltmaWVsZHNbaV1dLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgcmV0dXJuIG9yZGVyc1tpXTtcbiAgICAgIH1cbiAgICAgIGlmIChhW2ZpZWxkc1tpXV0udG9Mb3dlckNhc2UoKSA+IGJbZmllbGRzW2ldXS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIHJldHVybiAtb3JkZXJzW2ldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfTtcbn1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGF0ZSh2YWx1ZSkge1xuLy8gICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPT09IDYpIHtcbi8vICAgICAgICAgY29uc3QgeWVhciA9IHBhcnNlSW50KHZhbHVlLnNsaWNlKDIsIDYpLCAxMCk7XG4vLyAgICAgICAgIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQodmFsdWUuc2xpY2UoMCwgMiksIDEwKSAtIDE7XG4vLyAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCk7XG4vLyAgICAgfVxuLy8gfVxuXG5leHBvcnQgZnVuY3Rpb24gcm5kUmdiKCkge1xuICBjb25zdCB4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjU2KTtcbiAgY29uc3QgeSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDI1Nik7XG4gIGNvbnN0IHogPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xuICByZXR1cm4gJ3JnYignICsgeCArICcsJyArIHkgKyAnLCcgKyB6ICsgJyknO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TWluRGF0ZSgpIHtcbiAgbGV0IGN1clllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG4gIGxldCBjdXJNb250aCA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcbiAgY29uc3QgY3VyRGF5ID0gbmV3IERhdGUoKS5nZXREYXRlKCk7XG4gIGlmIChjdXJNb250aCA8IDYpIHtcbiAgICBjdXJZZWFyIC09IDE7XG4gICAgY3VyTW9udGggPSBjdXJNb250aCAtIDYgKyAxMjtcbiAgfSBlbHNlIHtcbiAgICBjdXJNb250aCAtPSA2O1xuICB9XG4gIHJldHVybiBuZXcgRGF0ZShjdXJZZWFyLCBjdXJNb250aCwgY3VyRGF5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmlsKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogYW55KTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydHkodmFsdWU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGtleTogc3RyaW5nKTogYW55IHtcbiAgaWYgKGlzTmlsKHZhbHVlKSB8fCAhaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGtleXM6IHN0cmluZ1tdID0ga2V5LnNwbGl0KCcuJyk7XG4gIGxldCByZXN1bHQ6IGFueSA9IHZhbHVlW2tleXMuc2hpZnQoKSFdO1xuXG4gIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgaWYgKGlzTmlsKHJlc3VsdCkgfHwgIWlzT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmVzdWx0ID0gcmVzdWx0W2tdO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTW9iaWxlKCkge1xuICByZXR1cm4gQW5kcm9pZCgpIHx8IEJsYWNrQmVycnkoKSB8fCBpT1MoKSB8fCBPcGVyYSgpIHx8IFdpbmRvd3MoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFuZHJvaWQoKSB7XG4gIHJldHVybiAhIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FuZHJvaWQvaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCbGFja0JlcnJ5KCkge1xuICByZXR1cm4gISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9CbGFja0JlcnJ5L2kpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaU9TKCkge1xuICByZXR1cm4gISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUGhvbmV8aVBhZHxpUG9kL2kpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gT3BlcmEoKSB7XG4gIHJldHVybiAhIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL09wZXJhIE1pbmkvaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBXaW5kb3dzKCkge1xuICByZXR1cm4gISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9JRU1vYmlsZS9pKSB8fCBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9XUERlc2t0b3AvaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRhVVJMdG9GaWxlKGRhdGFVcmw6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZykge1xuICBjb25zdCBhcnIgPSBkYXRhVXJsLnNwbGl0KCcsJyk7XG4gIGNvbnN0IG1pbWUgPSAoYXJyIGFzIGFueSlbMF0ubWF0Y2goLzooLio/KTsvKVsxXTtcbiAgY29uc3QgYnN0ciA9IGF0b2IoYXJyWzFdKTtcbiAgbGV0IG4gPSBic3RyLmxlbmd0aDtcbiAgY29uc3QgdThhcnIgPSBuZXcgVWludDhBcnJheShuKTtcblxuICB3aGlsZSAobi0tKSB7XG4gICAgdThhcnJbbl0gPSBic3RyLmNoYXJDb2RlQXQobik7XG4gIH1cblxuICByZXR1cm4gbmV3IEZpbGUoW3U4YXJyXSwgZmlsZW5hbWUsIHsgdHlwZTogbWltZSB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { ChangeDetectionStrategy, Component, Inject, InjectionToken, TemplateRef } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { TriangleDirective } from "../directives/triangle.directive";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ export const TOOLTIP_DATA = new InjectionToken('Подсказка');
7
+ export class TooltipComponent {
8
+ get asString() {
9
+ return typeof this.tooltipData === 'string' ? this.tooltipData : false;
10
+ }
11
+ get asTemplate() {
12
+ return this.tooltipData instanceof TemplateRef ? this.tooltipData : false;
13
+ }
14
+ constructor(tooltipData) {
15
+ this.tooltipData = tooltipData;
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TooltipComponent, deps: [{ token: TOOLTIP_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TooltipComponent, isStandalone: true, selector: "dd-tooltip", ngImport: i0, template: "<div class=\"tooltip-container\">\r\n @if (asString; as string) {\r\n {{ string }}\r\n } @if (asTemplate; as template) {\r\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\r\n }\r\n <svg class=\"tooltip-container__triangle\" width=\"16\" height=\"16\">\r\n <polyline points=\"8,0 0,8 8,16\"></polyline>\r\n </svg>\r\n</div>\r\n", styles: [":host{position:relative}.tooltip-container{position:relative;display:block;max-width:312px;padding:6px 12px;background:var(--white-color);border-radius:8px;box-sizing:border-box;box-shadow:0 14px 64px -4px #18274b0f,0 8px 22px -6px #18274b0f}.tooltip-container__triangle{width:16px;height:16px;position:absolute;fill:#fff;stroke:#fff;box-shadow:#18274b0f 0 14px 64px -4px,#18274b0f 0 8px 22px -6px}:host-context(.left) svg{top:calc(50% - 8px);right:-8px;rotate:180deg}:host-context(.right) svg{top:calc(50% - 8px);left:-8px}:host-context(.top) svg{right:calc(50% - 8px);bottom:-8px;rotate:-90deg}:host-context(.bottom) svg{right:calc(50% - 8px);top:-8px;rotate:90deg}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TooltipComponent, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'dd-tooltip', standalone: true, imports: [CommonModule, TriangleDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"tooltip-container\">\r\n @if (asString; as string) {\r\n {{ string }}\r\n } @if (asTemplate; as template) {\r\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\r\n }\r\n <svg class=\"tooltip-container__triangle\" width=\"16\" height=\"16\">\r\n <polyline points=\"8,0 0,8 8,16\"></polyline>\r\n </svg>\r\n</div>\r\n", styles: [":host{position:relative}.tooltip-container{position:relative;display:block;max-width:312px;padding:6px 12px;background:var(--white-color);border-radius:8px;box-sizing:border-box;box-shadow:0 14px 64px -4px #18274b0f,0 8px 22px -6px #18274b0f}.tooltip-container__triangle{width:16px;height:16px;position:absolute;fill:#fff;stroke:#fff;box-shadow:#18274b0f 0 14px 64px -4px,#18274b0f 0 8px 22px -6px}:host-context(.left) svg{top:calc(50% - 8px);right:-8px;rotate:180deg}:host-context(.right) svg{top:calc(50% - 8px);left:-8px}:host-context(.top) svg{right:calc(50% - 8px);bottom:-8px;rotate:-90deg}:host-context(.bottom) svg{right:calc(50% - 8px);top:-8px;rotate:90deg}\n"] }]
23
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
24
+ type: Inject,
25
+ args: [TOOLTIP_DATA]
26
+ }] }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9jb3JlL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9jb3JlL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBR25FLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBYyxXQUFXLENBQUMsQ0FBQztBQVV6RSxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLElBQVcsUUFBUTtRQUNqQixPQUFPLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsWUFBWSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM1RSxDQUFDO0lBRUQsWUFBeUMsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDakUsQ0FBQzsrR0FWVSxnQkFBZ0Isa0JBU1AsWUFBWTttR0FUckIsZ0JBQWdCLHNFQ2Y3QixnV0FVQSxzdEJEQVksWUFBWTs7NEZBS1gsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsbUJBR3pCLHVCQUF1QixDQUFDLE1BQU07OzBCQVdsQyxNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIFRlbXBsYXRlUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7VHJpYW5nbGVEaXJlY3RpdmV9IGZyb20gXCIuLi9kaXJlY3RpdmVzL3RyaWFuZ2xlLmRpcmVjdGl2ZVwiO1xyXG5cclxuZXhwb3J0IHR5cGUgVG9vbHRpcERhdGEgPSBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcclxuZXhwb3J0IGNvbnN0IFRPT0xUSVBfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUb29sdGlwRGF0YT4oJ9Cf0L7QtNGB0LrQsNC30LrQsCcpO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZC10b29sdGlwJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyaWFuZ2xlRGlyZWN0aXZlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3Rvb2x0aXAuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudCB7XHJcbiAgcHVibGljIGdldCBhc1N0cmluZygpOiBzdHJpbmcgfCBmYWxzZSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMudG9vbHRpcERhdGEgPT09ICdzdHJpbmcnID8gdGhpcy50b29sdGlwRGF0YSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhc1RlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHZvaWQ+IHwgZmFsc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMudG9vbHRpcERhdGEgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZiA/IHRoaXMudG9vbHRpcERhdGEgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoVE9PTFRJUF9EQVRBKSBwdWJsaWMgdG9vbHRpcERhdGE6IFRvb2x0aXBEYXRhKSB7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRhaW5lclwiPlxyXG4gIEBpZiAoYXNTdHJpbmc7IGFzIHN0cmluZykge1xyXG4gIHt7IHN0cmluZyB9fVxyXG4gIH0gQGlmIChhc1RlbXBsYXRlOyBhcyB0ZW1wbGF0ZSkge1xyXG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgfVxyXG4gIDxzdmcgY2xhc3M9XCJ0b29sdGlwLWNvbnRhaW5lcl9fdHJpYW5nbGVcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIj5cclxuICAgIDxwb2x5bGluZSBwb2ludHM9XCI4LDAgMCw4IDgsMTZcIj48L3BvbHlsaW5lPlxyXG4gIDwvc3ZnPlxyXG48L2Rpdj5cclxuIl19