@morozeckiy/dd-lib 0.7.39 → 0.7.51

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 (109) hide show
  1. package/assets/images/svg/eds-2-m.svg +34 -0
  2. package/assets/images/svg/eds-2.svg +34 -0
  3. package/assets/scss/common.scss +4 -4
  4. package/assets/scss/theme.scss +2 -2
  5. package/assets/scss/titles.scss +2 -2
  6. package/assets/styles.scss +12 -12
  7. package/fesm2022/morozeckiy-dd-lib.mjs +674 -489
  8. package/fesm2022/morozeckiy-dd-lib.mjs.map +1 -1
  9. package/lib/common/lib-common-button.d.ts +1 -1
  10. package/lib/common/lib-common-input-text.d.ts +1 -1
  11. package/lib/components/footer/footer-links-block/footer-link/footer-link.component.d.ts +7 -0
  12. package/lib/components/footer/footer-links-block/footer-links-block.component.d.ts +7 -0
  13. package/lib/components/footer/footer.component.d.ts +21 -3
  14. package/lib/components/index.d.ts +2 -0
  15. package/lib/core/dialog/modal-base/modal-common.component.d.ts +1 -1
  16. package/lib/core/directives/fixed-position.directive.d.ts +3 -1
  17. package/lib/core/services/destroy.service.d.ts +3 -0
  18. package/lib/lib-horizontal-scroll/lib-horizontal-scroll.component.d.ts +29 -0
  19. package/lib/lib-input/lib-input.component.d.ts +5 -6
  20. package/lib/lib-search-input/lib-search-input.component.d.ts +2 -3
  21. package/lib/lib-select/lib-select.component.d.ts +9 -6
  22. package/lib/svg-icons/svg-icon.model.d.ts +96 -82
  23. package/morozeckiy-dd-lib-0.7.51.tgz +0 -0
  24. package/package.json +4 -6
  25. package/public-api.d.ts +1 -0
  26. package/esm2022/lib/common/const.mjs +0 -10
  27. package/esm2022/lib/common/lib-common-button.mjs +0 -65
  28. package/esm2022/lib/common/lib-common-input-text.mjs +0 -211
  29. package/esm2022/lib/components/data-empty/data-empty.component.mjs +0 -20
  30. package/esm2022/lib/components/error-page/error-page.component.mjs +0 -32
  31. package/esm2022/lib/components/footer/footer.component.mjs +0 -22
  32. package/esm2022/lib/components/index.mjs +0 -7
  33. package/esm2022/lib/components/main-shared/main-shared.component.mjs +0 -16
  34. package/esm2022/lib/components/not-found/not-found.component.mjs +0 -29
  35. package/esm2022/lib/components/tech-works/tech-works.component.mjs +0 -29
  36. package/esm2022/lib/core/dialog/dialog-config.mjs +0 -15
  37. package/esm2022/lib/core/dialog/dialog-container.component.mjs +0 -40
  38. package/esm2022/lib/core/dialog/dialog-ref.mjs +0 -19
  39. package/esm2022/lib/core/dialog/dialog.service.mjs +0 -106
  40. package/esm2022/lib/core/dialog/modal-base/modal-base.component.mjs +0 -52
  41. package/esm2022/lib/core/dialog/modal-base/modal-common.component.mjs +0 -13
  42. package/esm2022/lib/core/directives/auto-height.directive.mjs +0 -36
  43. package/esm2022/lib/core/directives/ban-symbol.directive.mjs +0 -36
  44. package/esm2022/lib/core/directives/click-outside.directive.mjs +0 -42
  45. package/esm2022/lib/core/directives/counter.directive.mjs +0 -76
  46. package/esm2022/lib/core/directives/declension.directive.mjs +0 -40
  47. package/esm2022/lib/core/directives/drop-down-position.directive.mjs +0 -66
  48. package/esm2022/lib/core/directives/fixed-position.directive.mjs +0 -89
  49. package/esm2022/lib/core/directives/list-keyboard-navigation.directive.mjs +0 -57
  50. package/esm2022/lib/core/directives/max-num.directive.mjs +0 -56
  51. package/esm2022/lib/core/directives/phone-mask.directive.mjs +0 -34
  52. package/esm2022/lib/core/directives/resize-textarea.directive.mjs +0 -26
  53. package/esm2022/lib/core/directives/selectable-item.directive.mjs +0 -29
  54. package/esm2022/lib/core/directives/triangle.directive.mjs +0 -75
  55. package/esm2022/lib/core/index.mjs +0 -37
  56. package/esm2022/lib/core/pipes/filter-tabs.pipe.mjs +0 -31
  57. package/esm2022/lib/core/pipes/filter.pipe.mjs +0 -44
  58. package/esm2022/lib/core/pipes/highlight.pipe.mjs +0 -23
  59. package/esm2022/lib/core/pipes/reverse.pipe.mjs +0 -17
  60. package/esm2022/lib/core/pipes/safe.pipe.mjs +0 -34
  61. package/esm2022/lib/core/services/date.service.mjs +0 -119
  62. package/esm2022/lib/core/services/destroy.service.mjs +0 -15
  63. package/esm2022/lib/core/services/fetcher.service.mjs +0 -76
  64. package/esm2022/lib/core/services/interceptors.service.mjs +0 -27
  65. package/esm2022/lib/core/services/svg-icons.service.mjs +0 -26
  66. package/esm2022/lib/core/services/theme-constructor.service.mjs +0 -70
  67. package/esm2022/lib/core/services/validators.service.mjs +0 -106
  68. package/esm2022/lib/core/toast/index.mjs +0 -5
  69. package/esm2022/lib/core/toast/toast/toast-animations.mjs +0 -9
  70. package/esm2022/lib/core/toast/toast/toast.component.mjs +0 -62
  71. package/esm2022/lib/core/toast/toast-config.mjs +0 -35
  72. package/esm2022/lib/core/toast/toast-ref.mjs +0 -15
  73. package/esm2022/lib/core/toast/toast.service.mjs +0 -74
  74. package/esm2022/lib/core/tooltip/tooltip.component.mjs +0 -27
  75. package/esm2022/lib/core/tooltip/tooltip.directive.mjs +0 -179
  76. package/esm2022/lib/lib-accordion/lib-accordion.component.mjs +0 -15
  77. package/esm2022/lib/lib-back-button/lib-back-button.component.mjs +0 -37
  78. package/esm2022/lib/lib-button/lib-button.component.mjs +0 -26
  79. package/esm2022/lib/lib-calendar/lib-calendar.component.mjs +0 -316
  80. package/esm2022/lib/lib-card/lib-card.component.mjs +0 -34
  81. package/esm2022/lib/lib-checkbox/lib-checkbox.component.mjs +0 -72
  82. package/esm2022/lib/lib-comment-input/lib-comment-input.component.mjs +0 -20
  83. package/esm2022/lib/lib-date-input/lib-date-input.component.mjs +0 -117
  84. package/esm2022/lib/lib-date-range/lib-date-range.component.mjs +0 -117
  85. package/esm2022/lib/lib-disclaimer/lib-disclaimer.component.mjs +0 -26
  86. package/esm2022/lib/lib-file-loader/lib-file-loader.component.mjs +0 -116
  87. package/esm2022/lib/lib-file-upload/lib-file-upload.component.mjs +0 -37
  88. package/esm2022/lib/lib-filter/lib-filter.component.mjs +0 -29
  89. package/esm2022/lib/lib-filter-button/lib-filter-button.component.mjs +0 -41
  90. package/esm2022/lib/lib-image-loader/lib-image-loader.component.mjs +0 -14
  91. package/esm2022/lib/lib-info-card/lib-info-card.component.mjs +0 -30
  92. package/esm2022/lib/lib-input/lib-input.component.mjs +0 -99
  93. package/esm2022/lib/lib-loader/lib-loader.component.mjs +0 -22
  94. package/esm2022/lib/lib-period/lib-period.component.mjs +0 -118
  95. package/esm2022/lib/lib-radio/lib-radio.component.mjs +0 -78
  96. package/esm2022/lib/lib-search-input/lib-search-input.component.mjs +0 -209
  97. package/esm2022/lib/lib-select/lib-select.component.mjs +0 -387
  98. package/esm2022/lib/lib-skeleton/lib-skeleton.component.mjs +0 -45
  99. package/esm2022/lib/lib-sort/lib-sort.component.mjs +0 -44
  100. package/esm2022/lib/lib-step/lib-step.component.mjs +0 -19
  101. package/esm2022/lib/lib-svg/lib-svg.component.mjs +0 -75
  102. package/esm2022/lib/lib-svg-icon/lib-svg-icon.component.mjs +0 -61
  103. package/esm2022/lib/lib-tabs-fragment/lib-tabs-fragment.component.mjs +0 -92
  104. package/esm2022/lib/lib-textarea/lib-textarea.component.mjs +0 -62
  105. package/esm2022/lib/svg-icons/svg-icon.model.mjs +0 -409
  106. package/esm2022/lib/utils/decorators.mjs +0 -102
  107. package/esm2022/morozeckiy-dd-lib.mjs +0 -5
  108. package/esm2022/public-api.mjs +0 -41
  109. package/morozeckiy-dd-lib-0.7.39.tgz +0 -0
@@ -1,31 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FilterTabsPipe {
4
- transform(arr, tab) {
5
- if (arr) {
6
- return arr.filter(v => {
7
- if (tab === 0) {
8
- return [1, 2].indexOf(v.status.id) !== -1;
9
- }
10
- if (tab === 1) {
11
- return [3, 4].indexOf(v.status.id) !== -1;
12
- }
13
- if (tab === 2) {
14
- return [6].indexOf(v.status.id) !== -1;
15
- }
16
- return arr;
17
- });
18
- }
19
- return [];
20
- }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FilterTabsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
22
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: FilterTabsPipe, isStandalone: true, name: "filterTabs" }); }
23
- }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FilterTabsPipe, decorators: [{
25
- type: Pipe,
26
- args: [{
27
- name: 'filterTabs',
28
- standalone: true,
29
- }]
30
- }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXRhYnMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RkLWxpYi9zcmMvbGliL2NvcmUvcGlwZXMvZmlsdGVyLXRhYnMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLGNBQWM7SUFDbEIsU0FBUyxDQUFDLEdBQWlCLEVBQUUsR0FBK0I7UUFDakUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDcEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2QsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztnQkFDRCxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDZCxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO2dCQUNELElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNkLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDekMsQ0FBQztnQkFDRCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs4R0FqQlUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUoxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO29CQUNsQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2ZpbHRlclRhYnMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJUYWJzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHB1YmxpYyB0cmFuc2Zvcm0oYXJyOiBhbnlbXSB8IG51bGwsIHRhYj86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBhbnlbXSB7XHJcbiAgICBpZiAoYXJyKSB7XHJcbiAgICAgIHJldHVybiBhcnIuZmlsdGVyKHYgPT4ge1xyXG4gICAgICAgIGlmICh0YWIgPT09IDApIHtcclxuICAgICAgICAgIHJldHVybiBbMSwgMl0uaW5kZXhPZih2LnN0YXR1cy5pZCkgIT09IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGFiID09PSAxKSB7XHJcbiAgICAgICAgICByZXR1cm4gWzMsIDRdLmluZGV4T2Yodi5zdGF0dXMuaWQpICE9PSAtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRhYiA9PT0gMikge1xyXG4gICAgICAgICAgcmV0dXJuIFs2XS5pbmRleE9mKHYuc3RhdHVzLmlkKSAhPT0gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,44 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FilterPipe {
4
- transform(value, args) {
5
- if (value && value.length) {
6
- return value.filter((item, i) => i === args);
7
- }
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
10
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: FilterPipe, isStandalone: true, name: "filter" }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FilterPipe, decorators: [{
13
- type: Pipe,
14
- args: [{
15
- name: 'filter',
16
- standalone: true,
17
- }]
18
- }] });
19
- export class FilterByKeyPipe {
20
- transform(arr, fn) {
21
- if (!arr?.length) {
22
- return arr;
23
- }
24
- if (typeof fn === 'function') {
25
- return arr.filter(fn);
26
- }
27
- else if (fn) {
28
- return arr.filter((item) => item === fn);
29
- }
30
- else {
31
- return arr;
32
- }
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FilterByKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
35
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: FilterByKeyPipe, isStandalone: true, name: "filterByKey" }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FilterByKeyPipe, decorators: [{
38
- type: Pipe,
39
- args: [{
40
- name: 'filterByKey',
41
- standalone: true,
42
- }]
43
- }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9jb3JlL3BpcGVzL2ZpbHRlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sVUFBVTtJQUNkLFNBQVMsQ0FBQyxLQUFZLEVBQUUsSUFBYTtRQUMxQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDOzhHQUxVLFVBQVU7NEdBQVYsVUFBVTs7MkZBQVYsVUFBVTtrQkFKdEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBYUQsTUFBTSxPQUFPLGVBQWU7SUFDbkIsU0FBUyxDQUFDLEdBQVEsRUFBRSxFQUFPO1FBQ2hDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDakIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO1FBQ0QsSUFBSSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM3QixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEIsQ0FBQzthQUFNLElBQUksRUFBRSxFQUFFLENBQUM7WUFDZCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUM7OEdBWlUsZUFBZTs0R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUozQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxhQUFhO29CQUNuQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2ZpbHRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogYW55W10sIGFyZ3M/OiBudW1iZXIpOiBhbnkge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5maWx0ZXIoKGl0ZW0sIGkpID0+IGkgPT09IGFyZ3MpO1xuICAgIH1cbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdmaWx0ZXJCeUtleScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckJ5S2V5UGlwZTxUPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwdWJsaWMgdHJhbnNmb3JtKGFycjogYW55LCBmbjogYW55KTogYW55W10ge1xuICAgIGlmICghYXJyPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhcnIuZmlsdGVyKGZuKTtcbiAgICB9IGVsc2UgaWYgKGZuKSB7XG4gICAgICByZXR1cm4gYXJyLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtID09PSBmbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,23 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class HighlightPipe {
4
- transform(name, val) {
5
- if (val) {
6
- const re = new RegExp(val, 'gi');
7
- return name.toString().replace(re, `<span style="color: #07B700">$&</span>`);
8
- }
9
- else {
10
- return name;
11
- }
12
- }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: HighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
14
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: HighlightPipe, isStandalone: true, name: "highlight" }); }
15
- }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: HighlightPipe, decorators: [{
17
- type: Pipe,
18
- args: [{
19
- name: 'highlight',
20
- standalone: true,
21
- }]
22
- }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9jb3JlL3BpcGVzL2hpZ2hsaWdodC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU9wRCxNQUFNLE9BQU8sYUFBYTtJQUNqQixTQUFTLENBQUMsSUFBWSxFQUFFLEdBQVk7UUFDekMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLHdDQUF3QyxDQUFDLENBQUM7UUFDL0UsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDOzhHQVJVLGFBQWE7NEdBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFKekIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXIvc3JjL2J1aWxkZXJzL3Nzci1kZXYtc2VydmVyJztcblxuQFBpcGUoe1xuICBuYW1lOiAnaGlnaGxpZ2h0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSGlnaGxpZ2h0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwdWJsaWMgdHJhbnNmb3JtKG5hbWU6IHN0cmluZywgdmFsPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodmFsKSB7XG4gICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAodmFsLCAnZ2knKTtcbiAgICAgIHJldHVybiBuYW1lLnRvU3RyaW5nKCkucmVwbGFjZShyZSwgYDxzcGFuIHN0eWxlPVwiY29sb3I6ICMwN0I3MDBcIj4kJjwvc3Bhbj5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,17 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ReversePipe {
4
- transform(value, sort) {
5
- return sort === 'asc' ? value : value.reverse();
6
- }
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ReversePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: ReversePipe, isStandalone: true, name: "reverse" }); }
9
- }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ReversePipe, decorators: [{
11
- type: Pipe,
12
- args: [{
13
- name: 'reverse',
14
- standalone: true,
15
- }]
16
- }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZXJzZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvY29yZS9waXBlcy9yZXZlcnNlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxXQUFXO0lBQ2YsU0FBUyxDQUFDLEtBQVksRUFBRSxJQUFZO1FBQ3pDLE9BQU8sSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEQsQ0FBQzs4R0FIVSxXQUFXOzRHQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBSnZCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFNBQVM7b0JBQ2YsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdyZXZlcnNlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUmV2ZXJzZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogYW55W10sIHNvcnQ6IHN0cmluZyk6IGFueVtdIHtcbiAgICByZXR1cm4gc29ydCA9PT0gJ2FzYycgPyB2YWx1ZSA6IHZhbHVlLnJldmVyc2UoKTtcbiAgfVxufVxuIl19
@@ -1,34 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/platform-browser";
4
- export class SafePipe {
5
- constructor(sanitizer) {
6
- this.sanitizer = sanitizer;
7
- }
8
- transform(value, type) {
9
- switch (type) {
10
- case 'html':
11
- return this.sanitizer.bypassSecurityTrustHtml(value);
12
- case 'style':
13
- return this.sanitizer.bypassSecurityTrustStyle(value);
14
- case 'script':
15
- return this.sanitizer.bypassSecurityTrustScript(value);
16
- case 'url':
17
- return this.sanitizer.bypassSecurityTrustUrl(value);
18
- case 'resourceUrl':
19
- return this.sanitizer.bypassSecurityTrustResourceUrl(value);
20
- default:
21
- throw new Error(`Invalid safe type specified: ${type}`);
22
- }
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SafePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
25
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: SafePipe, isStandalone: true, name: "safe" }); }
26
- }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SafePipe, decorators: [{
28
- type: Pipe,
29
- args: [{
30
- name: 'safe',
31
- standalone: true,
32
- }]
33
- }], ctorParameters: () => [{ type: i1.DomSanitizer }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvY29yZS9waXBlcy9zYWZlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQWNwRCxNQUFNLE9BQU8sUUFBUTtJQUNuQixZQUFzQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQztJQUUxQyxTQUFTLENBQ2QsS0FBYSxFQUNiLElBQVk7UUFFWixRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RCxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hELEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekQsS0FBSyxLQUFLO2dCQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxLQUFLLGFBQWE7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5RDtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDOzhHQXJCVSxRQUFROzRHQUFSLFFBQVE7OzJGQUFSLFFBQVE7a0JBSnBCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLE1BQU07b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRG9tU2FuaXRpemVyLFxuICBTYWZlSHRtbCxcbiAgU2FmZVJlc291cmNlVXJsLFxuICBTYWZlU2NyaXB0LFxuICBTYWZlU3R5bGUsXG4gIFNhZmVVcmwsXG59IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdzYWZlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2FmZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICk6IFNhZmVIdG1sIHwgU2FmZVN0eWxlIHwgU2FmZVNjcmlwdCB8IFNhZmVVcmwgfCBTYWZlUmVzb3VyY2VVcmwge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2YWx1ZSk7XG4gICAgICBjYXNlICdzdHlsZSc6XG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodmFsdWUpO1xuICAgICAgY2FzZSAnc2NyaXB0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQodmFsdWUpO1xuICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodmFsdWUpO1xuICAgICAgY2FzZSAncmVzb3VyY2VVcmwnOlxuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHZhbHVlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzYWZlIHR5cGUgc3BlY2lmaWVkOiAke3R5cGV9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,119 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { format, parse } from 'date-fns';
3
- import * as i0 from "@angular/core";
4
- export const DEFAULT_FORMAT = 'yyyy-MM-dd';
5
- const DEFAULT_COMMON_DATE_DATA = {
6
- active: false,
7
- visible: ['all'],
8
- };
9
- export class DateService {
10
- constructor() {
11
- this.commonDateDataBy = {
12
- day: {
13
- ...DEFAULT_COMMON_DATE_DATA,
14
- title: 'за день',
15
- name: 'day',
16
- },
17
- week: {
18
- ...DEFAULT_COMMON_DATE_DATA,
19
- title: 'за неделю',
20
- name: 'week',
21
- },
22
- month: {
23
- ...DEFAULT_COMMON_DATE_DATA,
24
- title: 'за месяц',
25
- name: 'month',
26
- },
27
- month_3: {
28
- ...DEFAULT_COMMON_DATE_DATA,
29
- title: 'за 3 месяца',
30
- name: 'month_3',
31
- },
32
- half_year: {
33
- ...DEFAULT_COMMON_DATE_DATA,
34
- title: 'за полгода',
35
- name: 'half_year',
36
- },
37
- year: {
38
- ...DEFAULT_COMMON_DATE_DATA,
39
- title: 'за год',
40
- name: 'year',
41
- },
42
- calendar: {
43
- active: false,
44
- visible: [],
45
- name: 'calendar',
46
- title: '',
47
- },
48
- };
49
- this.getDateBy = {
50
- day: () => new Date(new Date().setDate(new Date().getDate() - 1)),
51
- week: () => new Date(new Date().setDate(new Date().getDate() - 7)),
52
- month: () => new Date(new Date().setMonth(new Date().getMonth() - 1)),
53
- month_3: () => new Date(new Date().setMonth(new Date().getMonth() - 3)),
54
- half_year: () => new Date(new Date().setMonth(new Date().getMonth() - 6)),
55
- year: () => new Date(new Date().setFullYear(new Date().getFullYear() - 1)),
56
- };
57
- }
58
- getFormattedDate(dateType, f = DEFAULT_FORMAT) {
59
- const date = this.getDateBy[dateType] || this.getDateBy.day;
60
- return format(date(), f);
61
- }
62
- getPeriodMenuDate(dateType, f) {
63
- return {
64
- time: this.getFormattedDate(dateType, f),
65
- ...this.commonDateDataBy[dateType],
66
- };
67
- }
68
- getPeriodMenuDateRange(dateTypes, f) {
69
- return dateTypes.map(dateType => this.getPeriodMenuDate(dateType, f));
70
- }
71
- getPeriodTime(name) {
72
- const period = this.getPeriodMenu();
73
- return period.find(p => p.name === name) || period[0];
74
- }
75
- getPeriodMenu(activePeriodName = 'month') {
76
- const arr = ['day', 'week', 'month', 'month_3', 'half_year', 'year'];
77
- const periodMenus = this.getPeriodMenuDateRange(arr);
78
- const activePeriod = periodMenus.find(p => p.name === activePeriodName) || periodMenus[0];
79
- activePeriod.active = true;
80
- return periodMenus;
81
- }
82
- getDaysInMonth(month, year) {
83
- const date = new Date(year, month, 1);
84
- const datePrev = new Date(year, month, 0);
85
- const days = [];
86
- const prevDays = [];
87
- while (date.getMonth() === month) {
88
- days.push(date.getDay());
89
- date.setDate(date.getDate() + 1);
90
- }
91
- const needFirstDays = days[0] === 1 ? 0 : days[0] === 0 ? 6 : days[0] - 1;
92
- const firstDays = [...Array(needFirstDays)].map(() => 0);
93
- const m = month === 0 ? 12 : month;
94
- while (datePrev.getMonth() === m - 1 && firstDays.length !== prevDays.length) {
95
- prevDays.push(datePrev.getDate());
96
- datePrev.setDate(datePrev.getDate() - 1);
97
- }
98
- const needLastDays = days[days.length - 1] === 0 ? 0 : 7 - days[days.length - 1];
99
- const lastDays = [...Array(needLastDays)].map((_d, i) => ++i);
100
- return {
101
- prevDays: prevDays.reverse(),
102
- days: days.map((_d, i) => ++i),
103
- lastDays,
104
- };
105
- }
106
- static getDateFromString(dateStr, format = 'ddMMyyyy') {
107
- if (dateStr.length === format.length) {
108
- return parse(dateStr, format, new Date());
109
- }
110
- return undefined;
111
- }
112
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: DateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
113
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: DateService, providedIn: 'root' }); }
114
- }
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: DateService, decorators: [{
116
- type: Injectable,
117
- args: [{ providedIn: 'root' }]
118
- }] });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9kYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLFVBQVUsQ0FBQzs7QUErQnZDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUM7QUFDM0MsTUFBTSx3QkFBd0IsR0FBRztJQUMvQixNQUFNLEVBQUUsS0FBSztJQUNiLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztDQUNqQixDQUFDO0FBU0YsTUFBTSxPQUFPLFdBQVc7SUFEeEI7UUFFVSxxQkFBZ0IsR0FBc0M7WUFDNUQsR0FBRyxFQUFFO2dCQUNILEdBQUcsd0JBQXdCO2dCQUMzQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsSUFBSSxFQUFFLEtBQUs7YUFDWjtZQUNELElBQUksRUFBRTtnQkFDSixHQUFHLHdCQUF3QjtnQkFDM0IsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLElBQUksRUFBRSxNQUFNO2FBQ2I7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsR0FBRyx3QkFBd0I7Z0JBQzNCLEtBQUssRUFBRSxVQUFVO2dCQUNqQixJQUFJLEVBQUUsT0FBTzthQUNkO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsd0JBQXdCO2dCQUMzQixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsSUFBSSxFQUFFLFNBQVM7YUFDaEI7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsR0FBRyx3QkFBd0I7Z0JBQzNCLEtBQUssRUFBRSxZQUFZO2dCQUNuQixJQUFJLEVBQUUsV0FBVzthQUNsQjtZQUNELElBQUksRUFBRTtnQkFDSixHQUFHLHdCQUF3QjtnQkFDM0IsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsSUFBSSxFQUFFLE1BQU07YUFDYjtZQUNELFFBQVEsRUFBRTtnQkFDUixNQUFNLEVBQUUsS0FBSztnQkFDYixPQUFPLEVBQUUsRUFBRTtnQkFDWCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsS0FBSyxFQUFFLEVBQUU7YUFDVjtTQUNGLENBQUM7UUFFTSxjQUFTLEdBQWM7WUFDN0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDckUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdkUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFD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SUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQzs4R0FqSFUsV0FBVztrSEFBWCxXQUFXLGNBREUsTUFBTTs7MkZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtmb3JtYXQsIHBhcnNlfSBmcm9tICdkYXRlLWZucyc7XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIEdldERhdGVNZXRob2QgPSAoKSA9PiBEYXRlO1xyXG5cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBQZXJpb2ROYW1lID0gJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ21vbnRoXzMnIHwgJ2hhbGZfeWVhcicgfCAneWVhcicgfCAnY2FsZW5kYXInO1xyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEdldERhdGVCeSB7XHJcbiAgZGF5PzogR2V0RGF0ZU1ldGhvZDtcclxuICB3ZWVrPzogR2V0RGF0ZU1ldGhvZDtcclxuICBtb250aD86IEdldERhdGVNZXRob2Q7XHJcbiAgbW9udGhfMz86IEdldERhdGVNZXRob2Q7XHJcbiAgaGFsZl95ZWFyPzogR2V0RGF0ZU1ldGhvZDtcclxuICB5ZWFyPzogR2V0RGF0ZU1ldGhvZDtcclxuICBjYWxlbmRhcj86IEdldERhdGVNZXRob2Q7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgRGF0ZVR5cGVzID0ga2V5b2YgR2V0RGF0ZUJ5O1xyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFRpbWVEYXRlIHtcclxuICB0aW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb21tb25EYXRlRGF0YSB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBhY3RpdmU6IGJvb2xlYW47XHJcbiAgbmFtZTogUGVyaW9kTmFtZTtcclxuICB2aXNpYmxlOiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBQZXJpb2RNZW51RGF0ZSA9IFRpbWVEYXRlICYgQ29tbW9uRGF0ZURhdGE7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9GT1JNQVQgPSAneXl5eS1NTS1kZCc7XHJcbmNvbnN0IERFRkFVTFRfQ09NTU9OX0RBVEVfREFUQSA9IHtcclxuICBhY3RpdmU6IGZhbHNlLFxyXG4gIHZpc2libGU6IFsnYWxsJ10sXHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEYXlzSW5Nb250aCB7XHJcbiAgcHJldkRheXM6IG51bWJlcltdO1xyXG4gIGRheXM6IG51bWJlcltdO1xyXG4gIGxhc3REYXlzOiBudW1iZXJbXTtcclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSkgLyoqINGB0LXRgNCy0LjRgSDQtNC70Y8g0L7QsdGA0LDQsdC+0YLQutC4INC00LDRgiAqL1xyXG5leHBvcnQgY2xhc3MgRGF0ZVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgY29tbW9uRGF0ZURhdGFCeTogUmVjb3JkPERhdGVUeXBlcywgQ29tbW9uRGF0ZURhdGE+ID0ge1xyXG4gICAgZGF5OiB7XHJcbiAgICAgIC4uLkRFRkFVTFRfQ09NTU9OX0RBVEVfREFUQSxcclxuICAgICAgdGl0bGU6ICfQt9CwINC00LXQvdGMJyxcclxuICAgICAgbmFtZTogJ2RheScsXHJcbiAgICB9LFxyXG4gICAgd2Vlazoge1xyXG4gICAgICAuLi5ERUZBVUxUX0NPTU1PTl9EQVRFX0RBVEEsXHJcbiAgICAgIHRpdGxlOiAn0LfQsCDQvdC10LTQtdC70Y4nLFxyXG4gICAgICBuYW1lOiAnd2VlaycsXHJcbiAgICB9LFxyXG4gICAgbW9udGg6IHtcclxuICAgICAgLi4uREVGQVVMVF9DT01NT05fREFURV9EQVRBLFxyXG4gICAgICB0aXRsZTogJ9C30LAg0LzQtdGB0Y/RhicsXHJcbiAgICAgIG5hbWU6ICdtb250aCcsXHJcbiAgICB9LFxyXG4gICAgbW9udGhfMzoge1xyXG4gICAgICAuLi5ERUZBVUxUX0NPTU1PTl9EQVRFX0RBVEEsXHJcbiAgICAgIHRpdGxlOiAn0LfQsCAzINC80LXRgdGP0YbQsCcsXHJcbiAgICAgIG5hbWU6ICdtb250aF8zJyxcclxuICAgIH0sXHJcbiAgICBoYWxmX3llYXI6IHtcclxuICAgICAgLi4uREVGQVVMVF9DT01NT05fREFURV9EQVRBLFxyXG4gICAgICB0aXRsZTogJ9C30LAg0L/QvtC70LPQvtC00LAnLFxyXG4gICAgICBuYW1lOiAnaGFsZl95ZWFyJyxcclxuICAgIH0sXHJcbiAgICB5ZWFyOiB7XHJcbiAgICAgIC4uLkRFRkFVTFRfQ09NTU9OX0RBVEVfREFUQSxcclxuICAgICAgdGl0bGU6ICfQt9CwINCz0L7QtCcsXHJcbiAgICAgIG5hbWU6ICd5ZWFyJyxcclxuICAgIH0sXHJcbiAgICBjYWxlbmRhcjoge1xyXG4gICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICB2aXNpYmxlOiBbXSxcclxuICAgICAgbmFtZTogJ2NhbGVuZGFyJyxcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGdldERhdGVCeTogR2V0RGF0ZUJ5ID0ge1xyXG4gICAgZGF5OiAoKSA9PiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldERhdGUobmV3IERhdGUoKS5nZXREYXRlKCkgLSAxKSksXHJcbiAgICB3ZWVrOiAoKSA9PiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldERhdGUobmV3IERhdGUoKS5nZXREYXRlKCkgLSA3KSksXHJcbiAgICBtb250aDogKCkgPT4gbmV3IERhdGUobmV3IERhdGUoKS5zZXRNb250aChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgLSAxKSksXHJcbiAgICBtb250aF8zOiAoKSA9PiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldE1vbnRoKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSAtIDMpKSxcclxuICAgIGhhbGZfeWVhcjogKCkgPT4gbmV3IERhdGUobmV3IERhdGUoKS5zZXRNb250aChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgLSA2KSksXHJcbiAgICB5ZWFyOiAoKSA9PiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldEZ1bGxZZWFyKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDEpKSxcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZ2V0Rm9ybWF0dGVkRGF0ZShkYXRlVHlwZToga2V5b2YgR2V0RGF0ZUJ5LCBmOiBzdHJpbmcgPSBERUZBVUxUX0ZPUk1BVCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBkYXRlID0gdGhpcy5nZXREYXRlQnlbZGF0ZVR5cGVdIHx8IHRoaXMuZ2V0RGF0ZUJ5LmRheTtcclxuICAgIHJldHVybiBmb3JtYXQoZGF0ZSEoKSwgZik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UGVyaW9kTWVudURhdGUoZGF0ZVR5cGU6IERhdGVUeXBlcywgZj86IHN0cmluZyk6IFRpbWVEYXRlICYgQ29tbW9uRGF0ZURhdGEge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGltZTogdGhpcy5nZXRGb3JtYXR0ZWREYXRlKGRhdGVUeXBlLCBmKSxcclxuICAgICAgLi4udGhpcy5jb21tb25EYXRlRGF0YUJ5W2RhdGVUeXBlXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UGVyaW9kTWVudURhdGVSYW5nZShkYXRlVHlwZXM6IERhdGVUeXBlc1tdLCBmPzogc3RyaW5nKTogUGVyaW9kTWVudURhdGVbXSB7XHJcbiAgICByZXR1cm4gZGF0ZVR5cGVzLm1hcChkYXRlVHlwZSA9PiB0aGlzLmdldFBlcmlvZE1lbnVEYXRlKGRhdGVUeXBlLCBmKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UGVyaW9kVGltZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHBlcmlvZCA9IHRoaXMuZ2V0UGVyaW9kTWVudSgpO1xyXG4gICAgcmV0dXJuIHBlcmlvZC5maW5kKHAgPT4gcC5uYW1lID09PSBuYW1lKSB8fCBwZXJpb2RbMF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UGVyaW9kTWVudShhY3RpdmVQZXJpb2ROYW1lOiBEYXRlVHlwZXMgPSAnbW9udGgnKTogUGVyaW9kTWVudURhdGVbXSB7XHJcbiAgICBjb25zdCBhcnI6IERhdGVUeXBlc1tdID0gWydkYXknLCAnd2VlaycsICdtb250aCcsICdtb250aF8zJywgJ2hhbGZfeWVhcicsICd5ZWFyJ107XHJcblxyXG4gICAgY29uc3QgcGVyaW9kTWVudXMgPSB0aGlzLmdldFBlcmlvZE1lbnVEYXRlUmFuZ2UoYXJyKTtcclxuICAgIGNvbnN0IGFjdGl2ZVBlcmlvZCA9IHBlcmlvZE1lbnVzLmZpbmQocCA9PiBwLm5hbWUgPT09IGFjdGl2ZVBlcmlvZE5hbWUpIHx8IHBlcmlvZE1lbnVzWzBdO1xyXG5cclxuICAgIGFjdGl2ZVBlcmlvZC5hY3RpdmUgPSB0cnVlO1xyXG4gICAgcmV0dXJuIHBlcmlvZE1lbnVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldERheXNJbk1vbnRoKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcik6IElEYXlzSW5Nb250aCB7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xyXG4gICAgY29uc3QgZGF0ZVByZXYgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMCk7XHJcbiAgICBjb25zdCBkYXlzID0gW107XHJcbiAgICBjb25zdCBwcmV2RGF5cyA9IFtdO1xyXG4gICAgd2hpbGUgKGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGgpIHtcclxuICAgICAgZGF5cy5wdXNoKGRhdGUuZ2V0RGF5KCkpO1xyXG4gICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyAxKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZWVkRmlyc3REYXlzID0gZGF5c1swXSA9PT0gMSA/IDAgOiBkYXlzWzBdID09PSAwID8gNiA6IGRheXNbMF0gLSAxO1xyXG4gICAgY29uc3QgZmlyc3REYXlzID0gWy4uLkFycmF5KG5lZWRGaXJzdERheXMpXS5tYXAoKCkgPT4gMCk7XHJcbiAgICBjb25zdCBtID0gbW9udGggPT09IDAgPyAxMiA6IG1vbnRoO1xyXG4gICAgd2hpbGUgKGRhdGVQcmV2LmdldE1vbnRoKCkgPT09IG0gLSAxICYmIGZpcnN0RGF5cy5sZW5ndGggIT09IHByZXZEYXlzLmxlbmd0aCkge1xyXG4gICAgICBwcmV2RGF5cy5wdXNoKGRhdGVQcmV2LmdldERhdGUoKSk7XHJcbiAgICAgIGRhdGVQcmV2LnNldERhdGUoZGF0ZVByZXYuZ2V0RGF0ZSgpIC0gMSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmVlZExhc3REYXlzID0gZGF5c1tkYXlzLmxlbmd0aCAtIDFdID09PSAwID8gMCA6IDcgLSBkYXlzW2RheXMubGVuZ3RoIC0gMV07XHJcbiAgICBjb25zdCBsYXN0RGF5cyA9IFsuLi5BcnJheShuZWVkTGFzdERheXMpXS5tYXAoKF9kLCBpKSA9PiArK2kpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHByZXZEYXlzOiBwcmV2RGF5cy5yZXZlcnNlKCksXHJcbiAgICAgIGRheXM6IGRheXMubWFwKChfZCwgaSkgPT4gKytpKSxcclxuICAgICAgbGFzdERheXMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXREYXRlRnJvbVN0cmluZyhkYXRlU3RyOiBzdHJpbmcsIGZvcm1hdCA9ICdkZE1NeXl5eScpOiBEYXRlIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmIChkYXRlU3RyLmxlbmd0aCA9PT0gZm9ybWF0Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gcGFyc2UoZGF0ZVN0ciwgZm9ybWF0LCBuZXcgRGF0ZSgpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWRcclxuICB9XHJcbn1cclxuIl19
@@ -1,15 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class DestroyService extends Subject {
5
- ngOnDestroy() {
6
- this.next();
7
- this.complete();
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: DestroyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
10
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: DestroyService }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: DestroyService, decorators: [{
13
- type: Injectable
14
- }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9kZXN0cm95LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQWtCLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFHOUMsTUFBTSxPQUFPLGNBQWUsU0FBUSxPQUFhO0lBRXhDLFdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7OEdBTFUsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERlc3Ryb3lTZXJ2aWNlIGV4dGVuZHMgU3ViamVjdDx2b2lkPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubmV4dCgpO1xyXG4gICAgdGhpcy5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,76 +0,0 @@
1
- import { HttpHeaders, HttpParams } from '@angular/common/http';
2
- import { Inject, Injectable } from '@angular/core';
3
- import { map } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common/http";
6
- export class FetcherService {
7
- constructor(http, apiUrl = 'api') {
8
- this.http = http;
9
- this.apiUrl = apiUrl;
10
- }
11
- prepareOptions(options = {}) {
12
- if (options?.headers) {
13
- options.headers = new HttpHeaders(options.headers);
14
- }
15
- if (options?.params) {
16
- let params = new HttpParams();
17
- for (const key of Object.keys(options.params)) {
18
- if (options.params[key] != null) {
19
- params = params.append(key, options.params[key]);
20
- }
21
- }
22
- options.params = params;
23
- }
24
- options.observe = options.observe || 'response';
25
- return options || {};
26
- }
27
- getUrl(url) {
28
- if (url.substring(0, 4) === 'http' && url.includes('://')) {
29
- return url;
30
- }
31
- else {
32
- return url ? [this.apiUrl].concat(url).join('/') : this.apiUrl;
33
- }
34
- }
35
- get(urlParts, options, urlId) {
36
- urlParts = urlId ? urlParts.replace(/{[^}]+}/g, urlId.toString()) : urlParts;
37
- const url = this.getUrl(urlParts);
38
- const prepareOptions = this.prepareOptions(options);
39
- return this.http.get(url, prepareOptions).pipe(map(res => res.body));
40
- }
41
- delete(urlParts, options) {
42
- const url = this.getUrl(urlParts);
43
- const prepareOptions = this.prepareOptions(options);
44
- return this.http.delete(url, prepareOptions).pipe(map(res => res.body));
45
- }
46
- post(urlParts, body, options, urlId) {
47
- urlParts = urlId ? urlParts.replace(/{[^}]+}/g, urlId.toString()) : urlParts;
48
- const url = this.getUrl(urlParts);
49
- const prepareOptions = this.prepareOptions(options);
50
- return this.http.post(url, body, prepareOptions).pipe(map(res => res.body));
51
- }
52
- put(urlParts, body, options, urlId) {
53
- urlParts = urlId ? urlParts.replace(/{[^}]+}/g, urlId.toString()) : urlParts;
54
- const url = this.getUrl(urlParts);
55
- const prepareOptions = this.prepareOptions(options);
56
- return this.http.put(url, body, prepareOptions).pipe(map(res => res.body));
57
- }
58
- /** перегоняем объкты в форм дату*/
59
- createFormData(form) {
60
- const formData = new FormData();
61
- Object.keys(form).forEach((item) => {
62
- formData.append(item, form[item]);
63
- });
64
- return formData;
65
- }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FetcherService, deps: [{ token: i1.HttpClient }, { token: 'apiUrl' }], target: i0.ɵɵFactoryTarget.Injectable }); }
67
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FetcherService, providedIn: 'root' }); }
68
- }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FetcherService, decorators: [{
70
- type: Injectable,
71
- args: [{ providedIn: 'root' }]
72
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
73
- type: Inject,
74
- args: ['apiUrl']
75
- }] }] });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2hlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9mZXRjaGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEwQixXQUFXLEVBQUUsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEYsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUE0Q25DLE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW9CLElBQWdCLEVBQTRCLFNBQWlCLEtBQUs7UUFBbEUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUE0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtJQUN0RixDQUFDO0lBRU8sY0FBYyxDQUFDLFVBQTJCLEVBQUU7UUFDbEQsSUFBSSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDOUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELENBQUM7WUFDSCxDQUFD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R0FBRyxHQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7SUFHRCxtQ0FBbUM7SUFDNUIsY0FBYyxDQUFDLElBQTBCO1FBQzlDLE1BQU0sUUFBUSxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7UUFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUN6QyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7OEdBbkVVLGNBQWMsNENBRXFCLFFBQVE7a0hBRjNDLGNBQWMsY0FERixNQUFNOzsyRkFDbEIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OzBCQUdTLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cENvbnRleHQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBJUmVzcG9uc2U8VD4ge1xyXG4gIGVycm9yOiBzdHJpbmc7XHJcbiAgZXJyb3JDb2RlOiBzdHJpbmc7XHJcbiAgbWVzc2FnZTogbnVsbCB8IHN0cmluZztcclxuICByZWRpcmVjdDogbnVsbCB8IHN0cmluZztcclxuICBzeXN0ZW1NZXNzYWdlOiBudWxsIHwgc3RyaW5nO1xyXG4gIHJlc3VsdDogJ09LJyB8ICdFUlJPUicgfCAnRkFJTCc7XHJcbiAgdmFsdWU6IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSHR0cElSZXF1ZXN0IHtcclxuICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7XHJcbiAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICB9O1xyXG4gIG9ic2VydmU6ICdyZXNwb25zZSc7XHJcbiAgY29udGV4dD86IEh0dHBDb250ZXh0O1xyXG4gIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XHJcbiAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xyXG4gIH07XHJcbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gIHJlc3BvbnNlVHlwZT86ICdqc29uJztcclxuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG4gIHRyYW5zZmVyQ2FjaGU/OiB7XHJcbiAgICBpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdO1xyXG4gIH0gfCBib29sZWFuO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdE9wdGlvbnMge1xyXG4gIGhlYWRlcnM/OiBhbnk7XHJcbiAgY29udGV4dD86IGFueTtcclxuICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgcGFyYW1zPzogYW55O1xyXG4gIG9ic2VydmU/OiBhbnk7XHJcbiAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcclxuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG4gIGJvZHk/OiBhbnkgfCBudWxsO1xyXG59XHJcblxyXG50eXBlIFBheWxvYWRNZXRob2QgPSAncG9zdCcgfCAncHV0JyB8ICdnZXQnIHwgJ2RlbGV0ZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSkgLyoqINGB0LXRgNCy0LjRgSDQvtCx0YDQsNCx0L7RgtC60Lgg0LfQsNC/0YDQvtGB0L7QsiDQuiBhcGkgKi9cclxuZXhwb3J0IGNsYXNzIEZldGNoZXJTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBASW5qZWN0KCdhcGlVcmwnKSBwcml2YXRlIGFwaVVybDogc3RyaW5nID0gJ2FwaScpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZU9wdGlvbnMob3B0aW9uczogSVJlcXVlc3RPcHRpb25zID0ge30pOiBIdHRwSVJlcXVlc3Qge1xyXG4gICAgaWYgKG9wdGlvbnM/LmhlYWRlcnMpIHtcclxuICAgICAgb3B0aW9ucy5oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucz8ucGFyYW1zKSB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvcHRpb25zLnBhcmFtcykpIHtcclxuICAgICAgICBpZiAob3B0aW9ucy5wYXJhbXNba2V5XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGtleSwgb3B0aW9ucy5wYXJhbXNba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgfVxyXG4gICAgb3B0aW9ucy5vYnNlcnZlID0gb3B0aW9ucy5vYnNlcnZlIHx8ICdyZXNwb25zZSdcclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucyBhcyBIdHRwSVJlcXVlc3QgfHwge307XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodXJsLnN1YnN0cmluZygwLCA0KSA9PT0gJ2h0dHAnICYmIHVybC5pbmNsdWRlcygnOi8vJykpIHtcclxuICAgICAgcmV0dXJuIHVybFxyXG4gICAgfSBlbHNlIHtcclxuICAgICByZXR1cm4gIHVybCA/IFt0aGlzLmFwaVVybF0uY29uY2F0KHVybCkuam9pbignLycpIDogdGhpcy5hcGlVcmw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQ8Uj4odXJsUGFydHM6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucywgdXJsSWQ/OiBzdHJpbmcgfCBudW1iZXIpOiBPYnNlcnZhYmxlPFI+IHtcclxuICAgIHVybFBhcnRzID0gdXJsSWQgPyB1cmxQYXJ0cy5yZXBsYWNlKC97W159XSt9L2csIHVybElkLnRvU3RyaW5nKCkpIDogdXJsUGFydHM7XHJcbiAgICBjb25zdCB1cmw6IHN0cmluZyA9IHRoaXMuZ2V0VXJsKHVybFBhcnRzKTtcclxuICAgIGNvbnN0IHByZXBhcmVPcHRpb25zID0gdGhpcy5wcmVwYXJlT3B0aW9ucyhvcHRpb25zKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFI+KHVybCwgcHJlcGFyZU9wdGlvbnMpLnBpcGUobWFwKHJlcyA9PiByZXMuYm9keSEpKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZTxSPih1cmxQYXJ0czogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxSPiB7XHJcbiAgICBjb25zdCB1cmw6IHN0cmluZyA9IHRoaXMuZ2V0VXJsKHVybFBhcnRzKTtcclxuICAgIGNvbnN0IHByZXBhcmVPcHRpb25zID0gdGhpcy5wcmVwYXJlT3B0aW9ucyhvcHRpb25zKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFI+KHVybCwgcHJlcGFyZU9wdGlvbnMpLnBpcGUobWFwKHJlcyA9PiByZXMuYm9keSEpKVxyXG5cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgcG9zdDxSPih1cmxQYXJ0czogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCB1cmxJZD86IHN0cmluZyB8IG51bWJlcik6IE9ic2VydmFibGU8Uj4ge1xyXG4gICAgdXJsUGFydHMgPSB1cmxJZCA/IHVybFBhcnRzLnJlcGxhY2UoL3tbXn1dK30vZywgdXJsSWQudG9TdHJpbmcoKSkgOiB1cmxQYXJ0cztcclxuICAgIGNvbnN0IHVybDogc3RyaW5nID0gdGhpcy5nZXRVcmwodXJsUGFydHMpO1xyXG4gICAgY29uc3QgcHJlcGFyZU9wdGlvbnMgPSB0aGlzLnByZXBhcmVPcHRpb25zKG9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFI+KHVybCwgYm9keSwgcHJlcGFyZU9wdGlvbnMpLnBpcGUobWFwKHJlcyA9PiByZXMuYm9keSEpKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHB1dDxSPih1cmxQYXJ0czogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCB1cmxJZD86IHN0cmluZyB8IG51bWJlcik6IE9ic2VydmFibGU8Uj4ge1xyXG4gICAgdXJsUGFydHMgPSB1cmxJZCA/IHVybFBhcnRzLnJlcGxhY2UoL3tbXn1dK30vZywgdXJsSWQudG9TdHJpbmcoKSkgOiB1cmxQYXJ0cztcclxuICAgIGNvbnN0IHVybDogc3RyaW5nID0gdGhpcy5nZXRVcmwodXJsUGFydHMpO1xyXG4gICAgY29uc3QgcHJlcGFyZU9wdGlvbnMgPSB0aGlzLnByZXBhcmVPcHRpb25zKG9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8Uj4odXJsLCBib2R5LCBwcmVwYXJlT3B0aW9ucykucGlwZShtYXAocmVzID0+IHJlcy5ib2R5ISkpXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqINC/0LXRgNC10LPQvtC90Y/QtdC8INC+0LHRitC60YLRiyDQsiDRhNC+0YDQvCDQtNCw0YLRgyovXHJcbiAgcHVibGljIGNyZWF0ZUZvcm1EYXRhKGZvcm06IHsgW3g6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIE9iamVjdC5rZXlzKGZvcm0pLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoaXRlbSwgZm9ybVtpdGVtXSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JtRGF0YTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
@@ -1,27 +0,0 @@
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.2.2", ngImport: i0, type: InterceptorsService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
22
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InterceptorsService }); }
23
- }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InterceptorsService, decorators: [{
25
- type: Injectable
26
- }], ctorParameters: () => [{ type: i1.Router }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3JzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2ludGVyY2VwdG9ycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsR0FBd0QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxVQUFVLEVBQU0sTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSS9DLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDbEMsQ0FBQztJQUVELDJDQUEyQztJQUNwQyxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUN2RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZixJQUFJLEdBQUcsWUFBWSxpQkFBaUIsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzhHQWpCVSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSW50ZXJjZXB0b3JzU2VydmljZSBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcclxuICB9XHJcblxyXG4gIC8qKiDQv9C10YDQtdGF0LLQsNGC0YfQuNC6INGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0L/RgNC+0YHQvtCyINC6IGFwaSAqL1xyXG4gIHB1YmxpYyBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgICAgIGlmIChlcnIuc3RhdHVzID49IDUwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3RlY2gtd29ya3MnXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,26 +0,0 @@
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(`Нет иконки с именем ${iconName}, проверьте ее наличие в директории assets?`);
14
- }
15
- return this.registry.get(iconName);
16
- }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SvgIconsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
18
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SvgIconsService, providedIn: 'root' }); }
19
- }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: SvgIconsService, decorators: [{
21
- type: Injectable,
22
- args: [{
23
- providedIn: 'root'
24
- }]
25
- }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL3N2Zy1pY29ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTXpDLE1BQU0sT0FBTyxlQUFlO0lBSDVCO1FBS1UsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0tBZ0I5QztJQWRDLGFBQWEsQ0FBQyxLQUFnQjtRQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBbUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbEMsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsdUJBQXdCLFFBQVMsNkNBQTZDLENBQy9FLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDOzhHQWpCVSxlQUFlO2tIQUFmLGVBQWUsY0FGZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U3ZnSWNvbn0gZnJvbSBcIi4uLy4uL3N2Zy1pY29ucy9zdmctaWNvbi5tb2RlbFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3ZnSWNvbnNTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSByZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblxyXG4gIHJlZ2lzdGVySWNvbnMoaWNvbnM6IFN2Z0ljb25bXSk6IHZvaWQge1xyXG4gICAgaWNvbnMuZm9yRWFjaCgoaWNvbjogYW55KSA9PiB0aGlzLnJlZ2lzdHJ5LnNldChpY29uLm5hbWUsIGljb24uZGF0YSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvbihpY29uTmFtZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIXRoaXMucmVnaXN0cnkuaGFzKGljb25OYW1lISkpIHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGDQndC10YIg0LjQutC+0L3QutC4INGBINC40LzQtdC90LXQvCAkeyBpY29uTmFtZSB9LCDQv9GA0L7QstC10YDRjNGC0LUg0LXQtSDQvdCw0LvQuNGH0LjQtSDQsiDQtNC40YDQtdC60YLQvtGA0LjQuCBhc3NldHM/YCxcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQoaWNvbk5hbWUhKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,70 +0,0 @@
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
- get getTheme$() {
9
- return this.themeConfigurator.theme$;
10
- }
11
- constructor(rendererFactory) {
12
- this.rendererFactory = rendererFactory;
13
- this.renderer = rendererFactory.createRenderer(null, null);
14
- }
15
- setThemeConfiguratorRoot(document) {
16
- this.themeConfigurator = new ThemeConfigurator(document, this.renderer);
17
- this.isDarkTheme = this.themeConfigurator.isDarkThemeObservable;
18
- }
19
- changeTheme(darkMode) {
20
- this.themeConfigurator.setTheme(darkMode);
21
- }
22
- switchTheme() {
23
- this.themeConfigurator.switchTheme();
24
- }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThemeConstructorService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
26
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThemeConstructorService, providedIn: 'root' }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThemeConstructorService, decorators: [{
29
- type: Injectable,
30
- args: [{
31
- providedIn: 'root',
32
- }]
33
- }], ctorParameters: () => [{ type: i0.RendererFactory2 }] });
34
- export class ThemeConfigurator {
35
- set theme(value) {
36
- localStorage.setItem('theme', value.toString());
37
- this.isDarkTheme$.next(value);
38
- }
39
- get theme() {
40
- return this.isDarkTheme$.getValue();
41
- }
42
- get theme$() {
43
- return this.isDarkTheme$;
44
- }
45
- constructor(document, renderer) {
46
- this.document = document;
47
- this.renderer = renderer;
48
- this.isDarkTheme$ = new BehaviorSubject(false);
49
- this.isDarkThemeObservable = this.isDarkTheme$.asObservable();
50
- this.isDarkThemeObservable.subscribe(ref => this.setTheme(ref));
51
- const theme = localStorage.getItem('theme');
52
- if (!theme) {
53
- this.theme = false;
54
- }
55
- else {
56
- this.theme = localStorage.getItem('theme') !== 'false';
57
- }
58
- }
59
- switchTheme() {
60
- this.theme = !this.theme;
61
- }
62
- setTheme(isDarkMode) {
63
- if (!this.document) {
64
- return;
65
- }
66
- const hostClass = isDarkMode ? 'theme-dark' : 'theme-light';
67
- this.renderer.setAttribute(this.document.body, 'class', hostClass);
68
- }
69
- }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtY29uc3RydWN0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RkLWxpYi9zcmMvbGliL2NvcmUvc2VydmljZXMvdGhlbWUtY29uc3RydWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOztBQUtuRCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7SUFDdkMsQ0FBQztJQU1ELFlBQW9CLGVBQWlDO1FBQWpDLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxRQUFrQjtRQUNoRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDO0lBQ2xFLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBaUI7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQzs4R0EzQlUsdUJBQXVCO2tIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUErQkQsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixJQUFXLEtBQUssQ0FBQyxLQUFjO1FBQzdCLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBS0QsWUFBb0IsUUFBa0IsRUFBVSxRQUFtQjtRQUEvQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUgzRCxpQkFBWSxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM5RSwwQkFBcUIsR0FBd0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUduRixJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRU0sUUFBUSxDQUFDLFVBQW1CO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGhlbWVDb25zdHJ1Y3RvclNlcnZpY2Uge1xyXG4gIHB1YmxpYyBnZXQgZ2V0VGhlbWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50aGVtZUNvbmZpZ3VyYXRvci50aGVtZTtcclxuICB9XHJcbiAgcHVibGljIGdldCBnZXRUaGVtZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy50aGVtZUNvbmZpZ3VyYXRvci50aGVtZSQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNEYXJrVGhlbWUhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuICBwcml2YXRlIHRoZW1lQ29uZmlndXJhdG9yITogVGhlbWVDb25maWd1cmF0b3I7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFRoZW1lQ29uZmlndXJhdG9yUm9vdChkb2N1bWVudDogRG9jdW1lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMudGhlbWVDb25maWd1cmF0b3IgPSBuZXcgVGhlbWVDb25maWd1cmF0b3IoZG9jdW1lbnQsIHRoaXMucmVuZGVyZXIpO1xyXG4gICAgdGhpcy5pc0RhcmtUaGVtZSA9IHRoaXMudGhlbWVDb25maWd1cmF0b3IuaXNEYXJrVGhlbWVPYnNlcnZhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoYW5nZVRoZW1lKGRhcmtNb2RlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnRoZW1lQ29uZmlndXJhdG9yLnNldFRoZW1lKGRhcmtNb2RlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzd2l0Y2hUaGVtZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGhlbWVDb25maWd1cmF0b3Iuc3dpdGNoVGhlbWUoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUaGVtZUNvbmZpZ3VyYXRvciB7XHJcbiAgcHVibGljIHNldCB0aGVtZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RoZW1lJywgdmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICB0aGlzLmlzRGFya1RoZW1lJC5uZXh0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdGhlbWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0RhcmtUaGVtZSQuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdGhlbWUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEYXJrVGhlbWUkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RhcmtUaGVtZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHB1YmxpYyBpc0RhcmtUaGVtZU9ic2VydmFibGU6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzRGFya1RoZW1lJC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG4gICAgdGhpcy5pc0RhcmtUaGVtZU9ic2VydmFibGUuc3Vic2NyaWJlKHJlZiA9PiB0aGlzLnNldFRoZW1lKHJlZikpO1xyXG4gICAgY29uc3QgdGhlbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWUnKTtcclxuXHJcbiAgICBpZiAoIXRoZW1lKSB7XHJcbiAgICAgIHRoaXMudGhlbWUgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGhlbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWUnKSAhPT0gJ2ZhbHNlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzd2l0Y2hUaGVtZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGhlbWUgPSAhdGhpcy50aGVtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRUaGVtZShpc0RhcmtNb2RlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZG9jdW1lbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaG9zdENsYXNzID0gaXNEYXJrTW9kZSA/ICd0aGVtZS1kYXJrJyA6ICd0aGVtZS1saWdodCc7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmRvY3VtZW50LmJvZHksICdjbGFzcycsIGhvc3RDbGFzcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==