@morozeckiy/dd-lib 0.7.38 → 0.7.44

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 (106) 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 +545 -461
  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/services/destroy.service.d.ts +3 -0
  17. package/lib/lib-input/lib-input.component.d.ts +5 -6
  18. package/lib/lib-search-input/lib-search-input.component.d.ts +2 -3
  19. package/lib/lib-select/lib-select.component.d.ts +6 -5
  20. package/lib/svg-icons/svg-icon.model.d.ts +96 -82
  21. package/morozeckiy-dd-lib-0.7.44.tgz +0 -0
  22. package/package.json +4 -6
  23. package/esm2022/lib/common/const.mjs +0 -10
  24. package/esm2022/lib/common/lib-common-button.mjs +0 -65
  25. package/esm2022/lib/common/lib-common-input-text.mjs +0 -211
  26. package/esm2022/lib/components/data-empty/data-empty.component.mjs +0 -20
  27. package/esm2022/lib/components/error-page/error-page.component.mjs +0 -32
  28. package/esm2022/lib/components/footer/footer.component.mjs +0 -22
  29. package/esm2022/lib/components/index.mjs +0 -7
  30. package/esm2022/lib/components/main-shared/main-shared.component.mjs +0 -16
  31. package/esm2022/lib/components/not-found/not-found.component.mjs +0 -29
  32. package/esm2022/lib/components/tech-works/tech-works.component.mjs +0 -29
  33. package/esm2022/lib/core/dialog/dialog-config.mjs +0 -15
  34. package/esm2022/lib/core/dialog/dialog-container.component.mjs +0 -40
  35. package/esm2022/lib/core/dialog/dialog-ref.mjs +0 -19
  36. package/esm2022/lib/core/dialog/dialog.service.mjs +0 -106
  37. package/esm2022/lib/core/dialog/modal-base/modal-base.component.mjs +0 -52
  38. package/esm2022/lib/core/dialog/modal-base/modal-common.component.mjs +0 -13
  39. package/esm2022/lib/core/directives/auto-height.directive.mjs +0 -36
  40. package/esm2022/lib/core/directives/ban-symbol.directive.mjs +0 -36
  41. package/esm2022/lib/core/directives/click-outside.directive.mjs +0 -42
  42. package/esm2022/lib/core/directives/counter.directive.mjs +0 -76
  43. package/esm2022/lib/core/directives/declension.directive.mjs +0 -40
  44. package/esm2022/lib/core/directives/drop-down-position.directive.mjs +0 -66
  45. package/esm2022/lib/core/directives/fixed-position.directive.mjs +0 -89
  46. package/esm2022/lib/core/directives/list-keyboard-navigation.directive.mjs +0 -57
  47. package/esm2022/lib/core/directives/max-num.directive.mjs +0 -56
  48. package/esm2022/lib/core/directives/phone-mask.directive.mjs +0 -34
  49. package/esm2022/lib/core/directives/resize-textarea.directive.mjs +0 -26
  50. package/esm2022/lib/core/directives/selectable-item.directive.mjs +0 -29
  51. package/esm2022/lib/core/directives/triangle.directive.mjs +0 -75
  52. package/esm2022/lib/core/index.mjs +0 -37
  53. package/esm2022/lib/core/pipes/filter-tabs.pipe.mjs +0 -31
  54. package/esm2022/lib/core/pipes/filter.pipe.mjs +0 -44
  55. package/esm2022/lib/core/pipes/highlight.pipe.mjs +0 -23
  56. package/esm2022/lib/core/pipes/reverse.pipe.mjs +0 -17
  57. package/esm2022/lib/core/pipes/safe.pipe.mjs +0 -34
  58. package/esm2022/lib/core/services/date.service.mjs +0 -119
  59. package/esm2022/lib/core/services/destroy.service.mjs +0 -15
  60. package/esm2022/lib/core/services/fetcher.service.mjs +0 -76
  61. package/esm2022/lib/core/services/interceptors.service.mjs +0 -27
  62. package/esm2022/lib/core/services/svg-icons.service.mjs +0 -26
  63. package/esm2022/lib/core/services/theme-constructor.service.mjs +0 -70
  64. package/esm2022/lib/core/services/validators.service.mjs +0 -106
  65. package/esm2022/lib/core/toast/index.mjs +0 -5
  66. package/esm2022/lib/core/toast/toast/toast-animations.mjs +0 -9
  67. package/esm2022/lib/core/toast/toast/toast.component.mjs +0 -62
  68. package/esm2022/lib/core/toast/toast-config.mjs +0 -35
  69. package/esm2022/lib/core/toast/toast-ref.mjs +0 -15
  70. package/esm2022/lib/core/toast/toast.service.mjs +0 -74
  71. package/esm2022/lib/core/tooltip/tooltip.component.mjs +0 -27
  72. package/esm2022/lib/core/tooltip/tooltip.directive.mjs +0 -179
  73. package/esm2022/lib/lib-accordion/lib-accordion.component.mjs +0 -15
  74. package/esm2022/lib/lib-back-button/lib-back-button.component.mjs +0 -37
  75. package/esm2022/lib/lib-button/lib-button.component.mjs +0 -26
  76. package/esm2022/lib/lib-calendar/lib-calendar.component.mjs +0 -316
  77. package/esm2022/lib/lib-card/lib-card.component.mjs +0 -34
  78. package/esm2022/lib/lib-checkbox/lib-checkbox.component.mjs +0 -72
  79. package/esm2022/lib/lib-comment-input/lib-comment-input.component.mjs +0 -20
  80. package/esm2022/lib/lib-date-input/lib-date-input.component.mjs +0 -117
  81. package/esm2022/lib/lib-date-range/lib-date-range.component.mjs +0 -117
  82. package/esm2022/lib/lib-disclaimer/lib-disclaimer.component.mjs +0 -26
  83. package/esm2022/lib/lib-file-loader/lib-file-loader.component.mjs +0 -116
  84. package/esm2022/lib/lib-file-upload/lib-file-upload.component.mjs +0 -37
  85. package/esm2022/lib/lib-filter/lib-filter.component.mjs +0 -29
  86. package/esm2022/lib/lib-filter-button/lib-filter-button.component.mjs +0 -41
  87. package/esm2022/lib/lib-image-loader/lib-image-loader.component.mjs +0 -14
  88. package/esm2022/lib/lib-info-card/lib-info-card.component.mjs +0 -30
  89. package/esm2022/lib/lib-input/lib-input.component.mjs +0 -99
  90. package/esm2022/lib/lib-loader/lib-loader.component.mjs +0 -22
  91. package/esm2022/lib/lib-period/lib-period.component.mjs +0 -118
  92. package/esm2022/lib/lib-radio/lib-radio.component.mjs +0 -78
  93. package/esm2022/lib/lib-search-input/lib-search-input.component.mjs +0 -209
  94. package/esm2022/lib/lib-select/lib-select.component.mjs +0 -384
  95. package/esm2022/lib/lib-skeleton/lib-skeleton.component.mjs +0 -45
  96. package/esm2022/lib/lib-sort/lib-sort.component.mjs +0 -44
  97. package/esm2022/lib/lib-step/lib-step.component.mjs +0 -19
  98. package/esm2022/lib/lib-svg/lib-svg.component.mjs +0 -75
  99. package/esm2022/lib/lib-svg-icon/lib-svg-icon.component.mjs +0 -61
  100. package/esm2022/lib/lib-tabs-fragment/lib-tabs-fragment.component.mjs +0 -92
  101. package/esm2022/lib/lib-textarea/lib-textarea.component.mjs +0 -62
  102. package/esm2022/lib/svg-icons/svg-icon.model.mjs +0 -409
  103. package/esm2022/lib/utils/decorators.mjs +0 -102
  104. package/esm2022/morozeckiy-dd-lib.mjs +0 -5
  105. package/esm2022/public-api.mjs +0 -41
  106. package/morozeckiy-dd-lib-0.7.38.tgz +0 -0
@@ -1,15 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { NgOptimizedImage } from '@angular/common';
3
- import { LibSvgIconComponent } from "../lib-svg-icon/lib-svg-icon.component";
4
- import * as i0 from "@angular/core";
5
- export class LibAccordionComponent {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: LibAccordionComponent, isStandalone: true, selector: "dd-lib-accordion", inputs: { accTitle: "accTitle" }, ngImport: i0, template: "<div class=\"accordion\">\r\n <div (click)=\"showAccordionContent = !showAccordionContent\" class=\"accordion__header\">\r\n @if (accTitle) {\r\n <div [innerHTML]=\"accTitle\" class=\"accordion__title\"></div>\r\n }\r\n <div>\r\n <dd-lib-svg-icon class=\"cup\" icon=\"{{ showAccordionContent ? 'minus' : 'plus' }}\"></dd-lib-svg-icon>\r\n </div>\r\n </div>\r\n @if (showAccordionContent) {\r\n <div class=\"mt-8\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".accordion__header{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.accordion__title{font-weight:500;font-size:20px;line-height:28px;color:var(--light-black-color)}@media screen and (max-width: 480px){.accordion__title{font-size:16px;line-height:24px}}\n"], dependencies: [{ kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibAccordionComponent, decorators: [{
10
- type: Component,
11
- args: [{ selector: 'dd-lib-accordion', standalone: true, imports: [NgOptimizedImage, LibSvgIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"accordion\">\r\n <div (click)=\"showAccordionContent = !showAccordionContent\" class=\"accordion__header\">\r\n @if (accTitle) {\r\n <div [innerHTML]=\"accTitle\" class=\"accordion__title\"></div>\r\n }\r\n <div>\r\n <dd-lib-svg-icon class=\"cup\" icon=\"{{ showAccordionContent ? 'minus' : 'plus' }}\"></dd-lib-svg-icon>\r\n </div>\r\n </div>\r\n @if (showAccordionContent) {\r\n <div class=\"mt-8\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".accordion__header{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.accordion__title{font-weight:500;font-size:20px;line-height:28px;color:var(--light-black-color)}@media screen and (max-width: 480px){.accordion__title{font-size:16px;line-height:24px}}\n"] }]
12
- }], propDecorators: { accTitle: [{
13
- type: Input
14
- }] } });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLWFjY29yZGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9saWItYWNjb3JkaW9uL2xpYi1hY2NvcmRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLWFjY29yZGlvbi9saWItYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdDQUF3QyxDQUFDOztBQVUzRSxNQUFNLE9BQU8scUJBQXFCOzhHQUFyQixxQkFBcUI7a0dBQXJCLHFCQUFxQiw4R0NibEMsMGZBZUEscVZEUDhCLG1CQUFtQjs7MkZBS3BDLHFCQUFxQjtrQkFSakMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsbUJBRy9CLHVCQUF1QixDQUFDLE1BQU07OEJBRy9CLFFBQVE7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtOZ09wdGltaXplZEltYWdlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1NhZmVIdG1sfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHtMaWJTdmdJY29uQ29tcG9uZW50fSBmcm9tIFwiLi4vbGliLXN2Zy1pY29uL2xpYi1zdmctaWNvbi5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGQtbGliLWFjY29yZGlvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdPcHRpbWl6ZWRJbWFnZSwgTGliU3ZnSWNvbkNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpYi1hY2NvcmRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9saWItYWNjb3JkaW9uLmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIExpYkFjY29yZGlvbkNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgcHVibGljIGFjY1RpdGxlOiBzdHJpbmcgfCBTYWZlSHRtbCB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgc2hvd0FjY29yZGlvbkNvbnRlbnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJhY2NvcmRpb25cIj5cclxuICA8ZGl2IChjbGljayk9XCJzaG93QWNjb3JkaW9uQ29udGVudCA9ICFzaG93QWNjb3JkaW9uQ29udGVudFwiIGNsYXNzPVwiYWNjb3JkaW9uX19oZWFkZXJcIj5cclxuICAgIEBpZiAoYWNjVGl0bGUpIHtcclxuICAgIDxkaXYgW2lubmVySFRNTF09XCJhY2NUaXRsZVwiIGNsYXNzPVwiYWNjb3JkaW9uX190aXRsZVwiPjwvZGl2PlxyXG4gICAgfVxyXG4gICAgPGRpdj5cclxuICAgICAgPGRkLWxpYi1zdmctaWNvbiBjbGFzcz1cImN1cFwiIGljb249XCJ7eyBzaG93QWNjb3JkaW9uQ29udGVudCA/ICdtaW51cycgOiAncGx1cycgfX1cIj48L2RkLWxpYi1zdmctaWNvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoc2hvd0FjY29yZGlvbkNvbnRlbnQpIHtcclxuICA8ZGl2IGNsYXNzPVwibXQtOFwiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,37 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { NgOptimizedImage } from '@angular/common';
3
- import { LibSvgIconComponent } from "../lib-svg-icon/lib-svg-icon.component";
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/router";
7
- export class LibBackButtonComponent {
8
- constructor(location, router) {
9
- this.location = location;
10
- this.router = router;
11
- this.backTitle = 'Назад';
12
- }
13
- onBack() {
14
- if (this.rout) {
15
- this.router.navigate([this.rout]);
16
- }
17
- else {
18
- try {
19
- this.location.back();
20
- }
21
- catch (err) {
22
- this.router.navigate(['/']);
23
- }
24
- }
25
- }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibBackButtonComponent, deps: [{ token: i1.Location }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: LibBackButtonComponent, isStandalone: true, selector: "dd-lib-back-button", inputs: { backTitle: "backTitle", rout: "rout" }, ngImport: i0, template: "<div (click)=\"onBack()\" class=\"d-inline-flex align-center mr-8 cup\">\r\n <dd-lib-svg-icon icon=\"back_arrow\"></dd-lib-svg-icon>\r\n <div class=\"g-text gray cup ml-8\">{{ backTitle }}</div>\r\n</div>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibBackButtonComponent, decorators: [{
30
- type: Component,
31
- args: [{ selector: 'dd-lib-back-button', standalone: true, imports: [NgOptimizedImage, LibSvgIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div (click)=\"onBack()\" class=\"d-inline-flex align-center mr-8 cup\">\r\n <dd-lib-svg-icon icon=\"back_arrow\"></dd-lib-svg-icon>\r\n <div class=\"g-text gray cup ml-8\">{{ backTitle }}</div>\r\n</div>\r\n", styles: [":host{display:block}\n"] }]
32
- }], ctorParameters: () => [{ type: i1.Location }, { type: i2.Router }], propDecorators: { backTitle: [{
33
- type: Input
34
- }], rout: [{
35
- type: Input
36
- }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLWJhY2stYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RkLWxpYi9zcmMvbGliL2xpYi1iYWNrLWJ1dHRvbi9saWItYmFjay1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLWJhY2stYnV0dG9uL2xpYi1iYWNrLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQVcsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQzs7OztBQVUzRSxNQUFNLE9BQU8sc0JBQXNCO0lBSWpDLFlBQW9CLFFBQWtCLEVBQVUsTUFBYztRQUExQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUg5QyxjQUFTLEdBQUcsT0FBTyxDQUFDO0lBRzZCLENBQUM7SUFFM0QsTUFBTTtRQUNYLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBaEJVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLGdJQ2JuQyxvTkFJQSxnRkRJOEIsbUJBQW1COzsyRkFLcEMsc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxtQkFHL0IsdUJBQXVCLENBQUMsTUFBTTtrR0FHL0IsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TG9jYXRpb24sIE5nT3B0aW1pemVkSW1hZ2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge0xpYlN2Z0ljb25Db21wb25lbnR9IGZyb20gXCIuLi9saWItc3ZnLWljb24vbGliLXN2Zy1pY29uLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZC1saWItYmFjay1idXR0b24nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW05nT3B0aW1pemVkSW1hZ2UsIExpYlN2Z0ljb25Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saWItYmFjay1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9saWItYmFjay1idXR0b24uY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliQmFja0J1dHRvbkNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgcHVibGljIGJhY2tUaXRsZSA9ICfQndCw0LfQsNC0JztcclxuICBASW5wdXQoKSBwdWJsaWMgcm91dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbiwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgcHVibGljIG9uQmFjaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJvdXQpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dF0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKGNsaWNrKT1cIm9uQmFjaygpXCIgY2xhc3M9XCJkLWlubGluZS1mbGV4IGFsaWduLWNlbnRlciBtci04IGN1cFwiPlxyXG4gIDxkZC1saWItc3ZnLWljb24gaWNvbj1cImJhY2tfYXJyb3dcIj48L2RkLWxpYi1zdmctaWNvbj5cclxuICA8ZGl2IGNsYXNzPVwiZy10ZXh0IGdyYXkgY3VwIG1sLThcIj57eyBiYWNrVGl0bGUgfX08L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,26 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, Input, NO_ERRORS_SCHEMA, } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { FormsModule } from '@angular/forms';
4
- import { LibCommonButtonComponent } from '../common/lib-common-button';
5
- import { LibLoaderComponent } from '../lib-loader/lib-loader.component';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
- export class LibButtonComponent extends LibCommonButtonComponent {
9
- ngAfterViewInit() {
10
- const btn = this.button?.nativeElement;
11
- if (btn && btn.attributes?.autofocus) {
12
- btn.focus();
13
- }
14
- }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: LibButtonComponent, isStandalone: true, selector: "dd-lib-button", inputs: { noPadding: "noPadding", loaderColor: "loaderColor" }, usesInheritance: true, ngImport: i0, template: "<div (click)=\"onClick($event)\" [ngStyle]=\"{width, height}\" class=\"button-container\">\r\n <button\r\n #btn\r\n [attr.tabIndex]=\"disabled ? -1 : 0\"\r\n [autofocus]=\"autofocus\"\r\n [class.active]=\"active\"\r\n [class.disabled]=\"disabled || showLoader\"\r\n [class.green]=\"btnColor === 'green'\"\r\n [class.loader]=\"showLoader\"\r\n [class.no-padding]=\"noPadding\"\r\n [class.red]=\"btnColor === 'red'\"\r\n [class.transparent]=\"btnColor === 'transparent'\"\r\n [class.white]=\"btnColor === 'white'\"\r\n [class.dark]=\"btnColor === 'dark'\"\r\n [disabled]=\"disabled || showLoader\"\r\n [ngStyle]=\"{width, height}\"\r\n [type]=\"buttonType\"\r\n class=\"lib-button\"\r\n role=\"button\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n @if (showLoader) {\r\n <dd-lib-loader class=\"pos-absolute\" [color]=\"loaderColor\"></dd-lib-loader>\r\n }\r\n\r\n </button>\r\n</div>\r\n\r\n<ng-template #content>\r\n <span #contentData><ng-content></ng-content></span>\r\n</ng-template>\r\n", styles: [".button-container{display:inline-block}.button-container button{position:relative;display:flex;align-items:center;justify-content:center;height:40px;padding:0 32px;font-size:14px;line-height:24px;font-weight:var(--font-wheit-big);border-radius:12px;outline:none;cursor:pointer;white-space:nowrap;border:1px solid transparent;background-color:var(--btn-green-bgc);color:#fff}@media screen and (max-width: 840px){.button-container button{height:48px}}.button-container button:hover,.button-container button:focus{background-color:var(--btn-green-hover)}.button-container button:active,.button-container button.active{background-color:var(--btn-green-hover)}.button-container button.loader{min-width:100px}.button-container button.white{background-color:var(--btn-light-green-bgc);color:var(--btn-white-color)}.button-container button.white:hover{color:var(--btn-white-hover-color)}.button-container button.transparent{background-color:transparent;color:var(--btn-white-color);border-color:var(--gray-color-200)}.button-container button.transparent:hover{color:var(--btn-white-hover-color)}.button-container button.red{background-color:var(--btn-red-bgc);color:var(--btn-red-color)}.button-container button.red:hover{color:var(--btn-red-hover-color)}.button-container button.dark{background-color:var(--btn-dark-bgc);color:var(--btn-dark-color)}.button-container button.dark:hover{background-color:var(--btn-dark-hover-color)}.button-container button.no-padding{padding:0}.button-container button.disabled{color:var(--disabled-color);background-color:var(--btn-disabled-bgc);pointer-events:none;cursor:default}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: LibLoaderComponent, selector: "dd-lib-loader", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17
- }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibButtonComponent, decorators: [{
19
- type: Component,
20
- args: [{ selector: 'dd-lib-button', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, LibLoaderComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], template: "<div (click)=\"onClick($event)\" [ngStyle]=\"{width, height}\" class=\"button-container\">\r\n <button\r\n #btn\r\n [attr.tabIndex]=\"disabled ? -1 : 0\"\r\n [autofocus]=\"autofocus\"\r\n [class.active]=\"active\"\r\n [class.disabled]=\"disabled || showLoader\"\r\n [class.green]=\"btnColor === 'green'\"\r\n [class.loader]=\"showLoader\"\r\n [class.no-padding]=\"noPadding\"\r\n [class.red]=\"btnColor === 'red'\"\r\n [class.transparent]=\"btnColor === 'transparent'\"\r\n [class.white]=\"btnColor === 'white'\"\r\n [class.dark]=\"btnColor === 'dark'\"\r\n [disabled]=\"disabled || showLoader\"\r\n [ngStyle]=\"{width, height}\"\r\n [type]=\"buttonType\"\r\n class=\"lib-button\"\r\n role=\"button\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n @if (showLoader) {\r\n <dd-lib-loader class=\"pos-absolute\" [color]=\"loaderColor\"></dd-lib-loader>\r\n }\r\n\r\n </button>\r\n</div>\r\n\r\n<ng-template #content>\r\n <span #contentData><ng-content></ng-content></span>\r\n</ng-template>\r\n", styles: [".button-container{display:inline-block}.button-container button{position:relative;display:flex;align-items:center;justify-content:center;height:40px;padding:0 32px;font-size:14px;line-height:24px;font-weight:var(--font-wheit-big);border-radius:12px;outline:none;cursor:pointer;white-space:nowrap;border:1px solid transparent;background-color:var(--btn-green-bgc);color:#fff}@media screen and (max-width: 840px){.button-container button{height:48px}}.button-container button:hover,.button-container button:focus{background-color:var(--btn-green-hover)}.button-container button:active,.button-container button.active{background-color:var(--btn-green-hover)}.button-container button.loader{min-width:100px}.button-container button.white{background-color:var(--btn-light-green-bgc);color:var(--btn-white-color)}.button-container button.white:hover{color:var(--btn-white-hover-color)}.button-container button.transparent{background-color:transparent;color:var(--btn-white-color);border-color:var(--gray-color-200)}.button-container button.transparent:hover{color:var(--btn-white-hover-color)}.button-container button.red{background-color:var(--btn-red-bgc);color:var(--btn-red-color)}.button-container button.red:hover{color:var(--btn-red-hover-color)}.button-container button.dark{background-color:var(--btn-dark-bgc);color:var(--btn-dark-color)}.button-container button.dark:hover{background-color:var(--btn-dark-hover-color)}.button-container button.no-padding{padding:0}.button-container button.disabled{color:var(--disabled-color);background-color:var(--btn-disabled-bgc);pointer-events:none;cursor:default}\n"] }]
21
- }], propDecorators: { noPadding: [{
22
- type: Input
23
- }], loaderColor: [{
24
- type: Input
25
- }] } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9saWItYnV0dG9uL2xpYi1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLWJ1dHRvbi9saWItYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULHNCQUFzQixFQUN0QixLQUFLLEVBQ0wsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQVd4RSxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsd0JBQXdCO0lBSXZELGVBQWU7UUFDcEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUM7UUFDdkMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUNyQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzs4R0FUVSxrQkFBa0I7a0dBQWxCLGtCQUFrQixnS0N0Qi9CLCtqQ0E4QkEsa29ERFhZLFlBQVksMFJBQUUsV0FBVywrQkFBRSxrQkFBa0I7OzJGQUc1QyxrQkFBa0I7a0JBVDlCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLENBQUMsV0FDL0MsQ0FBQyxzQkFBc0IsRUFBRSxnQkFBZ0IsQ0FBQzs4QkFHbkMsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxyXG4gIElucHV0LFxyXG4gIE5PX0VSUk9SU19TQ0hFTUEsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBMaWJDb21tb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9jb21tb24vbGliLWNvbW1vbi1idXR0b24nO1xyXG5pbXBvcnQgeyBMaWJMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9saWItbG9hZGVyL2xpYi1sb2FkZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGQtbGliLWJ1dHRvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGliLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGliLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBMaWJMb2FkZXJDb21wb25lbnRdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOT19FUlJPUlNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExpYkJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIExpYkNvbW1vbkJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBub1BhZGRpbmc6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgcHVibGljIGxvYWRlckNvbG9yPzogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgY29uc3QgYnRuID0gdGhpcy5idXR0b24/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoYnRuICYmIGJ0bi5hdHRyaWJ1dGVzPy5hdXRvZm9jdXMpIHtcclxuICAgICAgYnRuLmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiIFtuZ1N0eWxlXT1cInt3aWR0aCwgaGVpZ2h0fVwiIGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiPlxyXG4gIDxidXR0b25cclxuICAgICNidG5cclxuICAgIFthdHRyLnRhYkluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcclxuICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzaG93TG9hZGVyXCJcclxuICAgIFtjbGFzcy5ncmVlbl09XCJidG5Db2xvciA9PT0gJ2dyZWVuJ1wiXHJcbiAgICBbY2xhc3MubG9hZGVyXT1cInNob3dMb2FkZXJcIlxyXG4gICAgW2NsYXNzLm5vLXBhZGRpbmddPVwibm9QYWRkaW5nXCJcclxuICAgIFtjbGFzcy5yZWRdPVwiYnRuQ29sb3IgPT09ICdyZWQnXCJcclxuICAgIFtjbGFzcy50cmFuc3BhcmVudF09XCJidG5Db2xvciA9PT0gJ3RyYW5zcGFyZW50J1wiXHJcbiAgICBbY2xhc3Mud2hpdGVdPVwiYnRuQ29sb3IgPT09ICd3aGl0ZSdcIlxyXG4gICAgW2NsYXNzLmRhcmtdPVwiYnRuQ29sb3IgPT09ICdkYXJrJ1wiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc2hvd0xvYWRlclwiXHJcbiAgICBbbmdTdHlsZV09XCJ7d2lkdGgsIGhlaWdodH1cIlxyXG4gICAgW3R5cGVdPVwiYnV0dG9uVHlwZVwiXHJcbiAgICBjbGFzcz1cImxpYi1idXR0b25cIlxyXG4gICAgcm9sZT1cImJ1dHRvblwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgQGlmIChzaG93TG9hZGVyKSB7XHJcbiAgICAgICAgPGRkLWxpYi1sb2FkZXIgY2xhc3M9XCJwb3MtYWJzb2x1dGVcIiBbY29sb3JdPVwibG9hZGVyQ29sb3JcIj48L2RkLWxpYi1sb2FkZXI+XHJcbiAgICB9XHJcblxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cclxuICA8c3BhbiAjY29udGVudERhdGE+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -1,316 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, } from '@angular/core';
2
- import { LibFilterButtonComponent } from '../lib-filter-button/lib-filter-button.component';
3
- import { LibCardComponent } from '../lib-card/lib-card.component';
4
- import { LibRadioComponent } from '../lib-radio/lib-radio.component';
5
- import { CommonModule, NgOptimizedImage } from '@angular/common';
6
- import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
7
- import { LibButtonComponent } from '../lib-button/lib-button.component';
8
- import { isAfter, isBefore, parse } from 'date-fns';
9
- import { LibSvgIconComponent } from "../lib-svg-icon/lib-svg-icon.component";
10
- import { BanSymbolDirective } from "../core/directives/ban-symbol.directive";
11
- import { MaxNumDirective } from "../core/directives/max-num.directive";
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "../core";
14
- import * as i2 from "@angular/common";
15
- import * as i3 from "@angular/forms";
16
- const Months = [
17
- 'Январь',
18
- 'Февраль',
19
- 'Март',
20
- 'Апрель',
21
- 'Май',
22
- 'Июнь',
23
- 'Июль',
24
- 'Август',
25
- 'Сентябрь',
26
- 'Октябрь',
27
- 'Ноябрь',
28
- 'Декабрь',
29
- ];
30
- /**
31
- Этот компонент используется для отображения календаря с возможностью выбора даты.
32
- Ниже приведено описание свойств и методов данного компонента:
33
-
34
- Свойства:
35
- - @Input() public type: 'string' | 'number' | 'date' = 'string'; - тип данных для выбора даты.
36
- - @Input() public format = 'dd.MM.yyyy HH:mm'; - формат отображения даты.
37
- - @Input() public maxDate = new Date(); - максимальная дата, которую можно выбрать.
38
- - @Output() public emitDate = new EventEmitter<date | undefined>(); - событие, срабатывающее при выборе даты.
39
- - public dateValue: Date | undefined; - выбранная пользователем дата.
40
- - public months = Months; - массив с названиями месяцев.
41
- - public week = ['ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ', 'ВС']; - массив с названиями дней недели.
42
- - public year = new Date().getFullYear(); - текущий год.
43
- - public month = new Date().getMonth(); - текущий месяц.
44
- - public day = new Date().getDay(); - текущий день недели.
45
- - public daysInMonth: IDaysInMonth; - количество дней в текущем месяце.
46
- - public currentDate = new Date(); - текущая выбранная дата.
47
- - public dateNow = new Date(); - текущая дата.
48
- - public onTouchedCallback: () => void; - функция обратного вызова при касании.
49
-
50
- Методы:
51
- - public propagateChange(_value: Date): void {} - метод для обновления значения выбранной даты.
52
- - public ngOnInit(): void {} - метод жизненного цикла компонента, вызываемый при инициализации.
53
- - public setDayInMonth(): void {} - метод для установки количества дней в текущем месяце.
54
- - public changeMonth(number: number): void {} - метод для изменения месяца в календаре.
55
- - public getMonth(): string {} - метод для получения названия текущего месяца.
56
- - public registerOnChange(fn: any): void {} - метод для регистрации функции обратного вызова при изменении значения.
57
- - public registerOnTouched(fn: any): void {} - метод для регистрации функции обратного вызова при касании.
58
- - public writeValue(val: Date): void {} - метод для установки значения даты.
59
- - public selectDay(day: number): void {} - метод для выбора конкретного дня в календаре.
60
- - public selectDate(): void {} - метод для выбора даты и передачи значения через propagateChange и emitDate.
61
- - public checkHideDay(day: number): boolean {} - метод для проверки скрытия определенного дня в календаре.
62
- - public canselDate(): void {} - метод для отмены выбранной даты и сброса значений.
63
- **/
64
- export class LibCalendarComponent {
65
- set maxDate(date) {
66
- if (date === 'current') {
67
- this._maxDate = new Date();
68
- }
69
- else if (typeof date === 'object') {
70
- this._maxDate = date;
71
- }
72
- else if (typeof date === 'string') {
73
- this._maxDate = parse(date, `${this.formatDate}${this.formatTime ? ' ' + this.formatTime : ''}`, new Date());
74
- }
75
- }
76
- set minDate(date) {
77
- if (date === 'current') {
78
- this._minDate = new Date();
79
- }
80
- else if (date === 'year') {
81
- this._minDate = new Date(new Date().setFullYear(new Date().getFullYear() - 1));
82
- }
83
- else if (date === 'month') {
84
- this._minDate = new Date(new Date().setMonth(new Date().getMonth() - 1));
85
- }
86
- else if (typeof date === 'object') {
87
- this._minDate = date;
88
- }
89
- else if (typeof date === 'string') {
90
- this._minDate = parse(date, `${this.formatDate}${this.formatTime ? ' ' + this.formatTime : ''}`, new Date());
91
- }
92
- }
93
- constructor(dateService) {
94
- this.dateService = dateService;
95
- this.type = 'string';
96
- this.formatDate = 'dd.MM.yyyy';
97
- this.rangeMode = false;
98
- this.maxHours = 23;
99
- this.maxMinutes = 59;
100
- this.needTime = false;
101
- this.mode = 'full';
102
- this.emitDate = new EventEmitter();
103
- this.emitPeriod = new EventEmitter();
104
- this.months = Months;
105
- this.week = ['ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ', 'ВС'];
106
- this.year = new Date().getFullYear();
107
- this.month = new Date().getMonth();
108
- this.day = new Date().getDay();
109
- // minDate = setMinDate();
110
- this.currentDate = new Date();
111
- this.dateNow = new Date();
112
- this.hours = '00';
113
- this.minutes = '00';
114
- }
115
- propagateChange(_value) {
116
- }
117
- ngOnInit() {
118
- this.setDayInMonth();
119
- }
120
- setDayInMonth() {
121
- this.daysInMonth = this.dateService.getDaysInMonth(this.month, this.year);
122
- }
123
- changeMonth(number) {
124
- const temp = new Date(this.currentDate);
125
- temp.setMonth(temp.getMonth() + number);
126
- this.month = temp.getMonth();
127
- this.year = temp.getFullYear();
128
- this.currentDate = temp;
129
- this.setDayInMonth();
130
- }
131
- getMonth() {
132
- if (this.currentDate && !(this.dateValue || this.dateStart)) {
133
- return this.months[this.currentDate.getMonth()];
134
- }
135
- else {
136
- return this.months[this.month];
137
- }
138
- }
139
- registerOnChange(fn) {
140
- this.propagateChange = fn;
141
- }
142
- registerOnTouched(fn) {
143
- this.onTouchedCallback = fn;
144
- }
145
- writeValue(val) {
146
- if (this.rangeMode) {
147
- this.dateStart = val?.start;
148
- this.dateEnd = val?.end;
149
- }
150
- else {
151
- this.dateValue = val;
152
- }
153
- if (this.dateValue || this.dateStart) {
154
- this.showCurrenSelectDay(this.dateValue || this.dateStart);
155
- }
156
- }
157
- showCurrenSelectDay(date) {
158
- this.day = date.getDate();
159
- this.month = date.getMonth();
160
- this.year = date.getFullYear();
161
- this.currentDate = new Date(this.dateValue || this.dateStart);
162
- }
163
- selectDay(day) {
164
- if (!this.checkHideDay(day)) {
165
- if (this.rangeMode) {
166
- if (!this.dateStart) {
167
- this.dateStart = new Date(this.year, this.month, day);
168
- }
169
- else {
170
- const eDate = new Date(this.year, this.month, day);
171
- if (this.dateStart > eDate) {
172
- this.dateEnd = undefined;
173
- this.dateStart = eDate;
174
- }
175
- else {
176
- this.dateEnd = eDate;
177
- }
178
- }
179
- }
180
- else {
181
- this.dateValue = new Date(this.year, this.month, day);
182
- }
183
- }
184
- }
185
- selectDate() {
186
- if (this.rangeMode) {
187
- this.propagateChange({ start: this.dateStart, end: this.dateEnd });
188
- this.emitPeriod.emit({ start: this.dateStart, end: this.dateEnd });
189
- }
190
- else {
191
- if (this.needTime) {
192
- this.dateValue?.setHours(+this.hours, +this.minutes);
193
- }
194
- this.propagateChange(this.dateValue);
195
- this.emitDate.emit(this.dateValue);
196
- }
197
- this.showCalendar = false;
198
- }
199
- checkHideDay(day) {
200
- let moreDay = false;
201
- let moreMonth = false;
202
- let moreYear = false;
203
- const lessDay = false;
204
- const lessMonth = false;
205
- const lessYear = false;
206
- if (this._maxDate) {
207
- const [maxYear, maxMonth, maxDay] = [
208
- this._maxDate.getFullYear(),
209
- this._maxDate.getMonth(),
210
- this._maxDate.getDate(),
211
- ];
212
- moreDay = this.year >= maxYear && this.month >= maxMonth && day > maxDay;
213
- moreMonth = this.year >= maxYear && this.month > maxMonth;
214
- moreYear = this.year > maxYear;
215
- }
216
- if (this._minDate) {
217
- const [minYear, minMonth, minDay] = [
218
- this._minDate.getFullYear(),
219
- this._minDate.getMonth(),
220
- this._minDate.getDate(),
221
- ];
222
- moreDay = this.year <= minYear && this.month <= minMonth && day < minDay;
223
- moreMonth = this.year <= minYear && this.month < minMonth;
224
- moreYear = this.year < minYear;
225
- }
226
- return moreDay || moreMonth || moreYear || lessDay || lessMonth || lessYear;
227
- }
228
- canselDate() {
229
- this.emitDate.emit();
230
- this.emitPeriod.emit();
231
- this.dateValue = undefined;
232
- this.dateStart = undefined;
233
- this.dateEnd = undefined;
234
- this.showCalendar = false;
235
- }
236
- checkActiveDay(day) {
237
- if (this.rangeMode) {
238
- const sDay = this.dateStart?.getDate();
239
- const eDay = this.dateEnd?.getDate();
240
- const sMonth = this.dateStart?.getMonth();
241
- const eMonth = this.dateEnd?.getMonth();
242
- const sYear = this.dateStart?.getFullYear();
243
- const eYear = this.dateEnd?.getFullYear();
244
- const startDay = sDay === day && sMonth === this.month && sYear === this.year;
245
- const endDay = eDay === day && eMonth === this.month && eYear === this.year;
246
- if (this.dateStart && this.dateEnd) {
247
- const checkedDate = new Date(this.year, this.month, day);
248
- const after = isAfter(this.dateEnd, checkedDate);
249
- const before = isBefore(this.dateStart, checkedDate);
250
- return after && before || startDay || endDay;
251
- }
252
- else {
253
- return startDay || endDay;
254
- }
255
- }
256
- else {
257
- return this.dateValue?.getDate() === day
258
- && this.dateValue?.getMonth() === this.month
259
- && this.dateValue?.getFullYear() === this.year;
260
- }
261
- }
262
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibCalendarComponent, deps: [{ token: i1.DateService }], target: i0.ɵɵFactoryTarget.Component }); }
263
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: LibCalendarComponent, isStandalone: true, selector: "dd-lib-calendar", inputs: { type: "type", formatDate: "formatDate", formatTime: "formatTime", rangeMode: "rangeMode", maxHours: "maxHours", maxMinutes: "maxMinutes", needTime: "needTime", mode: "mode", maxDate: "maxDate", minDate: "minDate" }, outputs: { emitDate: "emitDate", emitPeriod: "emitPeriod" }, providers: [
264
- {
265
- provide: NG_VALUE_ACCESSOR,
266
- useExisting: forwardRef(() => LibCalendarComponent),
267
- multi: true,
268
- },
269
- ], ngImport: i0, template: "@if (mode === 'icon') {\r\n<div class=\"pos-relative d-flex align-center\">\r\n @if (dateValue) {\r\n <span class=\"mr-12 green\">{{ dateValue | date: 'dd.MM.yyyy' }}</span>\r\n }\r\n <dd-lib-svg-icon class=\"cup\" (click)=\"showCalendar = !showCalendar\" icon=\"calendar\"></dd-lib-svg-icon>\r\n @if (dateValue) {\r\n <dd-lib-svg-icon class=\"cup\" (click)=\"canselDate()\" icon=\"clear\"></dd-lib-svg-icon>\r\n } @if (showCalendar) {\r\n <div class=\"calendar-abs-wrapper\">\r\n <ng-template [ngTemplateOutlet]=\"calendar\"></ng-template>\r\n </div>\r\n }\r\n</div>\r\n} @if (mode === 'full') {\r\n<ng-template [ngTemplateOutlet]=\"calendar\"></ng-template>\r\n}\r\n\r\n<ng-template #calendar>\r\n <dd-lib-card class=\"calendar-block\" type=\"small\">\r\n <div class=\"full-width\">\r\n <div class=\"calendar-block__header\">\r\n <div class=\"calendar-block__header_arrow\">\r\n <dd-lib-svg-icon (click)=\"changeMonth(-1)\" icon=\"left_chevron\"></dd-lib-svg-icon>\r\n </div>\r\n <div class=\"calendar-block__header_year\">{{ getMonth() + ' ' + year }}</div>\r\n <div class=\"calendar-block__header_arrow\">\r\n <dd-lib-svg-icon (click)=\"changeMonth(1)\" icon=\"right_chevron\"></dd-lib-svg-icon>\r\n </div>\r\n </div>\r\n <div class=\"calendar-block__week\">\r\n @for (day of week; track day) {\r\n <div class=\"calendar-block__week_day\">{{ day }}</div>\r\n }\r\n </div>\r\n <div class=\"calendar-block__days\">\r\n @for (day of daysInMonth?.prevDays; track day) {\r\n <div class=\"calendar-block__days_day hide\">{{ day }}</div>\r\n } @for (day of daysInMonth?.days; track day) {\r\n <div\r\n (click)=\"selectDay(day)\"\r\n [class.active]=\"checkActiveDay(day)\"\r\n\r\n [class.current]=\"\r\n dateNow.getDate() === day && dateNow.getMonth() === month && dateNow.getFullYear() === year\r\n \"\r\n [class.hide]=\"checkHideDay(day)\"\r\n class=\"calendar-block__days_day normal\">\r\n {{ day }}\r\n </div>\r\n } @for (day of daysInMonth?.lastDays; track day) {\r\n <div class=\"calendar-block__days_day hide\">{{ day }}</div>\r\n }\r\n </div>\r\n @if(needTime) {\r\n <div class=\"calendar-block__time\">\r\n <div class=\"d-flex justify-between\">\r\n <div class=\"text-plain\">\u0412\u0440\u0435\u043C\u044F</div>\r\n <div class=\"d-flex\">\r\n <input [(ngModel)]=\"hours\" class=\"calendar-block__time-input\"\r\n type=\"text\"\r\n [ddMaxNum]=\"maxHours\"\r\n [curVal]=\"hours\"\r\n [disabled]=\"!dateValue\"\r\n [regExp]=\"true\"\r\n ddBanSymbol=\"^\\d+$\"\r\n max=\"23\"\r\n maxlength=\"2\"\r\n pattern=\"^\\d+$\">\r\n <span class=\"second-dot\">:</span>\r\n <input [(ngModel)]=\"minutes\" class=\"calendar-block__time-input\"\r\n [ddMaxNum]=\"maxMinutes\"\r\n [curVal]=\"minutes\"\r\n [disabled]=\"!dateValue\"\r\n [regExp]=\"true\"\r\n ddBanSymbol=\"^\\d+$\"\r\n max=\"59\"\r\n maxlength=\"2\"\r\n pattern=\"^\\d+$\"\r\n type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"calendar-block__footer\">\r\n <dd-lib-button (click)=\"canselDate()\" [btnColor]=\"'transparent'\" class=\"calendar-block__footer_btn\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </dd-lib-button>\r\n <dd-lib-button (click)=\"selectDate()\"\r\n [disabled]=\"(!dateValue && !rangeMode) || (rangeMode && (!dateStart || !dateEnd))\"\r\n class=\"calendar-block__footer_btn\"\r\n >\u0412\u044B\u0431\u0440\u0430\u0442\u044C\r\n </dd-lib-button>\r\n </div>\r\n </div>\r\n </dd-lib-card>\r\n</ng-template>\r\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none}.calendar-block{z-index:1100;display:block}@media screen and (max-width: 840px){.calendar-block{height:100%}}.calendar-block__time{padding:22px 0;margin:22px 0;border-top:1px solid var(--gray-color-200);border-bottom:1px solid var(--gray-color-200)}.calendar-block__time-input{width:56px;height:36px;border-radius:12px;border:1px solid var(--primary-gray-color);text-align:center}.calendar-block__time .second-dot{margin:auto 8px;animation:blink 1s step-end infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.calendar-block__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;color:var(--calendar-gray-color);font-size:14px;font-weight:400;line-height:24px}.calendar-block__header_arrow{cursor:pointer}.calendar-block__week{display:grid;grid-template-columns:repeat(7,1fr);gap:14px;justify-items:center;color:var(--primary-green-color);font-size:10px;font-weight:400;line-height:12px;letter-spacing:1.5px;margin-bottom:22px}.calendar-block__week_day{display:flex;align-items:center;justify-content:space-around}.calendar-block__days{display:grid;grid-template-columns:repeat(7,1fr);gap:14px;justify-items:center;margin-bottom:22px}.calendar-block__days_day{cursor:pointer;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:29px;color:var(--light-black-color)}.calendar-block__days_day.current{border:1px solid var(--primary-green-color)}.calendar-block__days_day.active,.calendar-block__days_day.normal:hover{background-color:var(--primary-green-color);color:var(--white-color)}.calendar-block__days_day.hide{pointer-events:none;cursor:default;color:var(--calendar-gray-hide-color)}.calendar-block__footer{display:flex;align-items:center;justify-content:space-between}.calendar-abs-wrapper{position:absolute;box-shadow:var(--main-card-shadow);top:0;right:0;z-index:1111}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "component", type: LibCardComponent, selector: "dd-lib-card", inputs: ["type", "footerBtn", "sHeight", "skeleton", "parentLvlForSkeleton", "plugs", "borderRadius"], outputs: ["cardBtnEvent"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "component", type: LibButtonComponent, selector: "dd-lib-button", inputs: ["noPadding", "loaderColor"] }, { kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: BanSymbolDirective, selector: "[ddBanSymbol]", inputs: ["ddBanSymbol", "regExp"] }, { kind: "directive", type: MaxNumDirective, selector: "[ddMaxNum]", inputs: ["ddMaxNum", "curVal"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
270
- }
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibCalendarComponent, decorators: [{
272
- type: Component,
273
- args: [{ selector: 'dd-lib-calendar', standalone: true, imports: [
274
- LibFilterButtonComponent,
275
- LibCardComponent,
276
- LibRadioComponent,
277
- CommonModule,
278
- LibButtonComponent,
279
- NgOptimizedImage,
280
- LibSvgIconComponent,
281
- FormsModule,
282
- BanSymbolDirective,
283
- MaxNumDirective
284
- ], providers: [
285
- {
286
- provide: NG_VALUE_ACCESSOR,
287
- useExisting: forwardRef(() => LibCalendarComponent),
288
- multi: true,
289
- },
290
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (mode === 'icon') {\r\n<div class=\"pos-relative d-flex align-center\">\r\n @if (dateValue) {\r\n <span class=\"mr-12 green\">{{ dateValue | date: 'dd.MM.yyyy' }}</span>\r\n }\r\n <dd-lib-svg-icon class=\"cup\" (click)=\"showCalendar = !showCalendar\" icon=\"calendar\"></dd-lib-svg-icon>\r\n @if (dateValue) {\r\n <dd-lib-svg-icon class=\"cup\" (click)=\"canselDate()\" icon=\"clear\"></dd-lib-svg-icon>\r\n } @if (showCalendar) {\r\n <div class=\"calendar-abs-wrapper\">\r\n <ng-template [ngTemplateOutlet]=\"calendar\"></ng-template>\r\n </div>\r\n }\r\n</div>\r\n} @if (mode === 'full') {\r\n<ng-template [ngTemplateOutlet]=\"calendar\"></ng-template>\r\n}\r\n\r\n<ng-template #calendar>\r\n <dd-lib-card class=\"calendar-block\" type=\"small\">\r\n <div class=\"full-width\">\r\n <div class=\"calendar-block__header\">\r\n <div class=\"calendar-block__header_arrow\">\r\n <dd-lib-svg-icon (click)=\"changeMonth(-1)\" icon=\"left_chevron\"></dd-lib-svg-icon>\r\n </div>\r\n <div class=\"calendar-block__header_year\">{{ getMonth() + ' ' + year }}</div>\r\n <div class=\"calendar-block__header_arrow\">\r\n <dd-lib-svg-icon (click)=\"changeMonth(1)\" icon=\"right_chevron\"></dd-lib-svg-icon>\r\n </div>\r\n </div>\r\n <div class=\"calendar-block__week\">\r\n @for (day of week; track day) {\r\n <div class=\"calendar-block__week_day\">{{ day }}</div>\r\n }\r\n </div>\r\n <div class=\"calendar-block__days\">\r\n @for (day of daysInMonth?.prevDays; track day) {\r\n <div class=\"calendar-block__days_day hide\">{{ day }}</div>\r\n } @for (day of daysInMonth?.days; track day) {\r\n <div\r\n (click)=\"selectDay(day)\"\r\n [class.active]=\"checkActiveDay(day)\"\r\n\r\n [class.current]=\"\r\n dateNow.getDate() === day && dateNow.getMonth() === month && dateNow.getFullYear() === year\r\n \"\r\n [class.hide]=\"checkHideDay(day)\"\r\n class=\"calendar-block__days_day normal\">\r\n {{ day }}\r\n </div>\r\n } @for (day of daysInMonth?.lastDays; track day) {\r\n <div class=\"calendar-block__days_day hide\">{{ day }}</div>\r\n }\r\n </div>\r\n @if(needTime) {\r\n <div class=\"calendar-block__time\">\r\n <div class=\"d-flex justify-between\">\r\n <div class=\"text-plain\">\u0412\u0440\u0435\u043C\u044F</div>\r\n <div class=\"d-flex\">\r\n <input [(ngModel)]=\"hours\" class=\"calendar-block__time-input\"\r\n type=\"text\"\r\n [ddMaxNum]=\"maxHours\"\r\n [curVal]=\"hours\"\r\n [disabled]=\"!dateValue\"\r\n [regExp]=\"true\"\r\n ddBanSymbol=\"^\\d+$\"\r\n max=\"23\"\r\n maxlength=\"2\"\r\n pattern=\"^\\d+$\">\r\n <span class=\"second-dot\">:</span>\r\n <input [(ngModel)]=\"minutes\" class=\"calendar-block__time-input\"\r\n [ddMaxNum]=\"maxMinutes\"\r\n [curVal]=\"minutes\"\r\n [disabled]=\"!dateValue\"\r\n [regExp]=\"true\"\r\n ddBanSymbol=\"^\\d+$\"\r\n max=\"59\"\r\n maxlength=\"2\"\r\n pattern=\"^\\d+$\"\r\n type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"calendar-block__footer\">\r\n <dd-lib-button (click)=\"canselDate()\" [btnColor]=\"'transparent'\" class=\"calendar-block__footer_btn\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </dd-lib-button>\r\n <dd-lib-button (click)=\"selectDate()\"\r\n [disabled]=\"(!dateValue && !rangeMode) || (rangeMode && (!dateStart || !dateEnd))\"\r\n class=\"calendar-block__footer_btn\"\r\n >\u0412\u044B\u0431\u0440\u0430\u0442\u044C\r\n </dd-lib-button>\r\n </div>\r\n </div>\r\n </dd-lib-card>\r\n</ng-template>\r\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none}.calendar-block{z-index:1100;display:block}@media screen and (max-width: 840px){.calendar-block{height:100%}}.calendar-block__time{padding:22px 0;margin:22px 0;border-top:1px solid var(--gray-color-200);border-bottom:1px solid var(--gray-color-200)}.calendar-block__time-input{width:56px;height:36px;border-radius:12px;border:1px solid var(--primary-gray-color);text-align:center}.calendar-block__time .second-dot{margin:auto 8px;animation:blink 1s step-end infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.calendar-block__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;color:var(--calendar-gray-color);font-size:14px;font-weight:400;line-height:24px}.calendar-block__header_arrow{cursor:pointer}.calendar-block__week{display:grid;grid-template-columns:repeat(7,1fr);gap:14px;justify-items:center;color:var(--primary-green-color);font-size:10px;font-weight:400;line-height:12px;letter-spacing:1.5px;margin-bottom:22px}.calendar-block__week_day{display:flex;align-items:center;justify-content:space-around}.calendar-block__days{display:grid;grid-template-columns:repeat(7,1fr);gap:14px;justify-items:center;margin-bottom:22px}.calendar-block__days_day{cursor:pointer;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:29px;color:var(--light-black-color)}.calendar-block__days_day.current{border:1px solid var(--primary-green-color)}.calendar-block__days_day.active,.calendar-block__days_day.normal:hover{background-color:var(--primary-green-color);color:var(--white-color)}.calendar-block__days_day.hide{pointer-events:none;cursor:default;color:var(--calendar-gray-hide-color)}.calendar-block__footer{display:flex;align-items:center;justify-content:space-between}.calendar-abs-wrapper{position:absolute;box-shadow:var(--main-card-shadow);top:0;right:0;z-index:1111}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"] }]
291
- }], ctorParameters: () => [{ type: i1.DateService }], propDecorators: { type: [{
292
- type: Input
293
- }], formatDate: [{
294
- type: Input
295
- }], formatTime: [{
296
- type: Input
297
- }], rangeMode: [{
298
- type: Input
299
- }], maxHours: [{
300
- type: Input
301
- }], maxMinutes: [{
302
- type: Input
303
- }], needTime: [{
304
- type: Input
305
- }], mode: [{
306
- type: Input
307
- }], emitDate: [{
308
- type: Output
309
- }], emitPeriod: [{
310
- type: Output
311
- }], maxDate: [{
312
- type: Input
313
- }], minDate: [{
314
- type: Input
315
- }] } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RkLWxpYi9zcmMvbGliL2xpYi1jYWxlbmRhci9saWItY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLWNhbGVuZGFyL2xpYi1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sR0FBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDL0QsT0FBTyxFQUF1QixXQUFXLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFbEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFFM0UsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNDQUFzQyxDQUFDOzs7OztBQUVyRSxNQUFNLE1BQU0sR0FBRztJQUNiLFFBQVE7SUFDUixTQUFTO0lBQ1QsTUFBTTtJQUNOLFFB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MUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNO2dGQUcvQixJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1csUUFBUTtzQkFBeEIsTUFBTTtnQkFDVSxVQUFVO3NCQUExQixNQUFNO2dCQUVJLE9BQU87c0JBRGpCLEtBQUs7Z0JBZ0JLLE9BQU87c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TGliRmlsdGVyQnV0dG9uQ29tcG9uZW50fSBmcm9tICcuLi9saWItZmlsdGVyLWJ1dHRvbi9saWItZmlsdGVyLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQge0xpYkNhcmRDb21wb25lbnR9IGZyb20gJy4uL2xpYi1jYXJkL2xpYi1jYXJkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TGliUmFkaW9Db21wb25lbnR9IGZyb20gJy4uL2xpYi1yYWRpby9saWItcmFkaW8uY29tcG9uZW50JztcclxuaW1wb3J0IHtDb21tb25Nb2R1bGUsIE5nT3B0aW1pemVkSW1hZ2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0xpYkJ1dHRvbkNvbXBvbmVudH0gZnJvbSAnLi4vbGliLWJ1dHRvbi9saWItYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7aXNBZnRlciwgaXNCZWZvcmUsIHBhcnNlfSBmcm9tICdkYXRlLWZucyc7XHJcbmltcG9ydCB7RGF0ZVNlcnZpY2UsIElEYXlzSW5Nb250aH0gZnJvbSBcIi4uL2NvcmVcIjtcclxuaW1wb3J0IHtMaWJTdmdJY29uQ29tcG9uZW50fSBmcm9tIFwiLi4vbGliLXN2Zy1pY29uL2xpYi1zdmctaWNvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtzd2l0Y2hNYXB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge0JhblN5bWJvbERpcmVjdGl2ZX0gZnJvbSBcIi4uL2NvcmUvZGlyZWN0aXZlcy9iYW4tc3ltYm9sLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge01heE51bURpcmVjdGl2ZX0gZnJvbSBcIi4uL2NvcmUvZGlyZWN0aXZlcy9tYXgtbnVtLmRpcmVjdGl2ZVwiO1xyXG5cclxuY29uc3QgTW9udGhzID0gW1xyXG4gICfQr9C90LLQsNGA0YwnLFxyXG4gICfQpNC10LLRgNCw0LvRjCcsXHJcbiAgJ9Cc0LDRgNGCJyxcclxuICAn0JDQv9GA0LXQu9GMJyxcclxuICAn0JzQsNC5JyxcclxuICAn0JjRjtC90YwnLFxyXG4gICfQmNGO0LvRjCcsXHJcbiAgJ9CQ0LLQs9GD0YHRgicsXHJcbiAgJ9Ch0LXQvdGC0Y/QsdGA0YwnLFxyXG4gICfQntC60YLRj9Cx0YDRjCcsXHJcbiAgJ9Cd0L7Rj9Cx0YDRjCcsXHJcbiAgJ9CU0LXQutCw0LHRgNGMJyxcclxuXTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURhdGVQZXJpb2Qge1xyXG4gIHN0YXJ0OiBEYXRlIHwgdW5kZWZpbmVkO1xyXG4gIGVuZDogRGF0ZSB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiDQrdGC0L7RgiDQutC+0LzQv9C+0L3QtdC90YIg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC60LDQu9C10L3QtNCw0YDRjyDRgSDQstC+0LfQvNC+0LbQvdC+0YHRgtGM0Y4g0LLRi9Cx0L7RgNCwINC00LDRgtGLLlxyXG4g0J3QuNC20LUg0L/RgNC40LLQtdC00LXQvdC+INC+0L/QuNGB0LDQvdC40LUg0YHQstC+0LnRgdGC0LIg0Lgg0LzQtdGC0L7QtNC+0LIg0LTQsNC90L3QvtCz0L4g0LrQvtC80L/QvtC90LXQvdGC0LA6XHJcblxyXG4g0KHQstC+0LnRgdGC0LLQsDpcclxuIC0gQElucHV0KCkgcHVibGljIHR5cGU6ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnZGF0ZScgPSAnc3RyaW5nJzsgLSDRgtC40L8g0LTQsNC90L3Ri9GFINC00LvRjyDQstGL0LHQvtGA0LAg0LTQsNGC0YsuXHJcbiAtIEBJbnB1dCgpIHB1YmxpYyBmb3JtYXQgPSAnZGQuTU0ueXl5eSBISDptbSc7IC0g0YTQvtGA0LzQsNGCINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LTQsNGC0YsuXHJcbiAtIEBJbnB1dCgpIHB1YmxpYyBtYXhEYXRlID0gbmV3IERhdGUoKTsgLSDQvNCw0LrRgdC40LzQsNC70YzQvdCw0Y8g0LTQsNGC0LAsINC60L7RgtC+0YDRg9GOINC80L7QttC90L4g0LLRi9Cx0YDQsNGC0YwuXHJcbiAtIEBPdXRwdXQoKSBwdWJsaWMgZW1pdERhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGRhdGUgfCB1bmRlZmluZWQ+KCk7IC0g0YHQvtCx0YvRgtC40LUsINGB0YDQsNCx0LDRgtGL0LLQsNGO0YnQtdC1INC/0YDQuCDQstGL0LHQvtGA0LUg0LTQsNGC0YsuXHJcbiAtIHB1YmxpYyBkYXRlVmFsdWU6IERhdGUgfCB1bmRlZmluZWQ7IC0g0LLRi9Cx0YDQsNC90L3QsNGPINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC8INC00LDRgtCwLlxyXG4gLSBwdWJsaWMgbW9udGhzID0gTW9udGhzOyAtINC80LDRgdGB0LjQsiDRgSDQvdCw0LfQstCw0L3QuNGP0LzQuCDQvNC10YHRj9GG0LXQsi5cclxuIC0gcHVibGljIHdlZWsgPSBbJ9Cf0J0nLCAn0JLQoicsICfQodCgJywgJ9Cn0KInLCAn0J/QoicsICfQodCRJywgJ9CS0KEnXTsgLSDQvNCw0YHRgdC40LIg0YEg0L3QsNC30LLQsNC90LjRj9C80Lgg0LTQvdC10Lkg0L3QtdC00LXQu9C4LlxyXG4gLSBwdWJsaWMgeWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTsgLSDRgtC10LrRg9GJ0LjQuSDQs9C+0LQuXHJcbiAtIHB1YmxpYyBtb250aCA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTsgLSDRgtC10LrRg9GJ0LjQuSDQvNC10YHRj9GGLlxyXG4gLSBwdWJsaWMgZGF5ID0gbmV3IERhdGUoKS5nZXREYXkoKTsgLSDRgtC10LrRg9GJ0LjQuSDQtNC10L3RjCDQvdC10LTQtdC70LguXHJcbiAtIHB1YmxpYyBkYXlzSW5Nb250aDogSURheXNJbk1vbnRoOyAtINC60L7Qu9C40YfQtdGB0YLQstC+INC00L3QtdC5INCyINGC0LXQutGD0YnQtdC8INC80LXRgdGP0YbQtS5cclxuIC0gcHVibGljIGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTsgLSDRgtC10LrRg9GJ0LDRjyDQstGL0LHRgNCw0L3QvdCw0Y8g0LTQsNGC0LAuXHJcbiAtIHB1YmxpYyBkYXRlTm93ID0gbmV3IERhdGUoKTsgLSDRgtC10LrRg9GJ0LDRjyDQtNCw0YLQsC5cclxuIC0gcHVibGljIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkOyAtINGE0YPQvdC60YbQuNGPINC+0LHRgNCw0YLQvdC+0LPQviDQstGL0LfQvtCy0LAg0L/RgNC4INC60LDRgdCw0L3QuNC4LlxyXG5cclxuINCc0LXRgtC+0LTRizpcclxuIC0gcHVibGljIHByb3BhZ2F0ZUNoYW5nZShfdmFsdWU6IERhdGUpOiB2b2lkIHt9IC0g0LzQtdGC0L7QtCDQtNC70Y8g0L7QsdC90L7QstC70LXQvdC40Y8g0LfQvdCw0YfQtdC90LjRjyDQstGL0LHRgNCw0L3QvdC+0Lkg0LTQsNGC0YsuXHJcbiAtIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHt9IC0g0LzQtdGC0L7QtCDQttC40LfQvdC10L3QvdC+0LPQviDRhtC40LrQu9CwINC60L7QvNC/0L7QvdC10L3RgtCwLCDQstGL0LfRi9Cy0LDQtdC80YvQuSDQv9GA0Lgg0LjQvdC40YbQuNCw0LvQuNC30LDRhtC40LguXHJcbiAtIHB1YmxpYyBzZXREYXlJbk1vbnRoKCk6IHZvaWQge30gLSDQvNC10YLQvtC0INC00LvRjyDRg9GB0YLQsNC90L7QstC60Lgg0LrQvtC70LjRh9C10YHRgtCy0LAg0LTQvdC10Lkg0LIg0YLQtdC60YPRidC10Lwg0LzQtdGB0Y/RhtC1LlxyXG4gLSBwdWJsaWMgY2hhbmdlTW9udGgobnVtYmVyOiBudW1iZXIpOiB2b2lkIHt9IC0g0LzQtdGC0L7QtCDQtNC70Y8g0LjQt9C80LXQvdC10L3QuNGPINC80LXRgdGP0YbQsCDQsiDQutCw0LvQtdC90LTQsNGA0LUuXHJcbiAtIHB1YmxpYyBnZXRNb250aCgpOiBzdHJpbmcge30gLSDQvNC10YLQvtC0INC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8g0L3QsNC30LLQsNC90LjRjyDRgtC10LrRg9GJ0LXQs9C+INC80LXRgdGP0YbQsC5cclxuIC0gcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge30gLSDQvNC10YLQvtC0INC00LvRjyDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INGE0YPQvdC60YbQuNC4INC+0LHRgNCw0YLQvdC+0LPQviDQstGL0LfQvtCy0LAg0L/RgNC4INC40LfQvNC10L3QtdC90LjQuCDQt9C90LDRh9C10L3QuNGPLlxyXG4gLSBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge30gLSDQvNC10YLQvtC0INC00LvRjyDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INGE0YPQvdC60YbQuNC4INC+0LHRgNCw0YLQvdC+0LPQviDQstGL0LfQvtCy0LAg0L/RgNC4INC60LDRgdCw0L3QuNC4LlxyXG4gLSBwdWJsaWMgd3JpdGVWYWx1ZSh2YWw6IERhdGUpOiB2b2lkIHt9IC0g0LzQtdGC0L7QtCDQtNC70Y8g0YPRgdGC0LDQvdC+0LLQutC4INC30L3QsNGH0LXQvdC40Y8g0LTQsNGC0YsuXHJcbiAtIHB1YmxpYyBzZWxlY3REYXkoZGF5OiBudW1iZXIpOiB2b2lkIHt9IC0g0LzQtdGC0L7QtCDQtNC70Y8g0LLRi9Cx0L7RgNCwINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0LTQvdGPINCyINC60LDQu9C10L3QtNCw0YDQtS5cclxuIC0gcHVibGljIHNlbGVjdERhdGUoKTogdm9pZCB7fSAtINC80LXRgtC+0LQg0LTQu9GPINCy0YvQsdC+0YDQsCDQtNCw0YLRiyDQuCDQv9C10YDQtdC00LDRh9C4INC30L3QsNGH0LXQvdC40Y8g0YfQtdGA0LXQtyBwcm9wYWdhdGVDaGFuZ2Ug0LggZW1pdERhdGUuXHJcbiAtIHB1YmxpYyBjaGVja0hpZGVEYXkoZGF5OiBudW1iZXIpOiBib29sZWFuIHt9IC0g0LzQtdGC0L7QtCDQtNC70Y8g0L/RgNC+0LLQtdGA0LrQuCDRgdC60YDRi9GC0LjRjyDQvtC/0YDQtdC00LXQu9C10L3QvdC+0LPQviDQtNC90Y8g0LIg0LrQsNC70LXQvdC00LDRgNC1LlxyXG4gLSBwdWJsaWMgY2Fuc2VsRGF0ZSgpOiB2b2lkIHt9IC0g0LzQtdGC0L7QtCDQtNC70Y8g0L7RgtC80LXQvdGLINCy0YvQsdGA0LDQvdC90L7QuSDQtNCw0YLRiyDQuCDRgdCx0YDQvtGB0LAg0LfQvdCw0YfQtdC90LjQuS5cclxuICoqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RkLWxpYi1jYWxlbmRhcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBMaWJGaWx0ZXJCdXR0b25Db21wb25lbnQsXHJcbiAgICBMaWJDYXJkQ29tcG9uZW50LFxyXG4gICAgTGliUmFkaW9Db21wb25lbnQsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBMaWJCdXR0b25Db21wb25lbnQsXHJcbiAgICBOZ09wdGltaXplZEltYWdlLFxyXG4gICAgTGliU3ZnSWNvbkNvbXBvbmVudCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQmFuU3ltYm9sRGlyZWN0aXZlLFxyXG4gICAgTWF4TnVtRGlyZWN0aXZlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExpYkNhbGVuZGFyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpYi1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2xpYi1jYWxlbmRhci5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2RhdGUnID0gJ3N0cmluZyc7XHJcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdERhdGUgPSAnZGQuTU0ueXl5eSc7XHJcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdFRpbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwdWJsaWMgcmFuZ2VNb2RlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIG1heEhvdXJzID0gMjM7XHJcbiAgQElucHV0KCkgcHVibGljIG1heE1pbnV0ZXMgPSA1OTtcclxuICBASW5wdXQoKSBwdWJsaWMgbmVlZFRpbWUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbW9kZTogJ2ljb24nIHwgJ2Z1bGwnID0gJ2Z1bGwnO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgZW1pdERhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCB1bmRlZmluZWQ+KCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBlbWl0UGVyaW9kID0gbmV3IEV2ZW50RW1pdHRlcjxJRGF0ZVBlcmlvZCB8IHVuZGVmaW5lZD4oKTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbWF4RGF0ZShkYXRlOiBhbnkpIHtcclxuICAgIGlmIChkYXRlID09PSAnY3VycmVudCcpIHtcclxuICAgICAgdGhpcy5fbWF4RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICB0aGlzLl9tYXhEYXRlID0gZGF0ZTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuX21heERhdGUgPSBwYXJzZShcclxuICAgICAgICBkYXRlLFxyXG4gICAgICAgIGAke3RoaXMuZm9ybWF0RGF0ZX0ke3RoaXMuZm9ybWF0VGltZSA/ICcgJyArIHRoaXMuZm9ybWF0VGltZSA6ICcnfWAsXHJcbiAgICAgICAgbmV3IERhdGUoKSxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBtaW5EYXRlKGRhdGU6IGFueSkge1xyXG4gICAgaWYgKGRhdGUgPT09ICdjdXJyZW50Jykge1xyXG4gICAgICB0aGlzLl9taW5EYXRlID0gbmV3IERhdGUoKTtcclxuICAgIH0gZWxzZSBpZiAoZGF0ZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHRoaXMuX21pbkRhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldEZ1bGxZZWFyKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDEpKTtcclxuICAgIH0gZWxzZSBpZiAoZGF0ZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICB0aGlzLl9taW5EYXRlID0gbmV3IERhdGUobmV3IERhdGUoKS5zZXRNb250aChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgLSAxKSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICB0aGlzLl9taW5EYXRlID0gZGF0ZTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuX21pbkRhdGUgPSBwYXJzZShcclxuICAgICAgICBkYXRlLFxyXG4gICAgICAgIGAke3RoaXMuZm9ybWF0RGF0ZX0ke3RoaXMuZm9ybWF0VGltZSA/ICcgJyArIHRoaXMuZm9ybWF0VGltZSA6ICcnfWAsXHJcbiAgICAgICAgbmV3IERhdGUoKSxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21heERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZGF0ZVZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBkYXRlU3RhcnQ6IERhdGUgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGRhdGVFbmQ6IERhdGUgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIG1vbnRocyA9IE1vbnRocztcclxuICBwdWJsaWMgd2VlayA9IFsn0J/QnScsICfQktCiJywgJ9Ch0KAnLCAn0KfQoicsICfQn9CiJywgJ9Ch0JEnLCAn0JLQoSddO1xyXG4gIHB1YmxpYyB5ZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xyXG4gIHB1YmxpYyBtb250aCA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcclxuICBwdWJsaWMgZGF5ID0gbmV3IERhdGUoKS5nZXREYXkoKTtcclxuICBwdWJsaWMgZGF5c0luTW9udGg6IElEYXlzSW5Nb250aCB8IHVuZGVmaW5lZDtcclxuICAvLyBtaW5EYXRlID0gc2V0TWluRGF0ZSgpO1xyXG4gIHB1YmxpYyBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgcHVibGljIGRhdGVOb3cgPSBuZXcgRGF0ZSgpO1xyXG4gIHB1YmxpYyBvblRvdWNoZWRDYWxsYmFjazogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBzaG93Q2FsZW5kYXI6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGhvdXJzID0gJzAwJ1xyXG4gIHB1YmxpYyBtaW51dGVzID0gJzAwJ1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVNlcnZpY2U6IERhdGVTZXJ2aWNlKSB7fVxyXG5cclxuICBwdWJsaWMgcHJvcGFnYXRlQ2hhbmdlKF92YWx1ZTogRGF0ZSB8IElEYXRlUGVyaW9kKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldERheUluTW9udGgoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREYXlJbk1vbnRoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXlzSW5Nb250aCA9IHRoaXMuZGF0ZVNlcnZpY2UuZ2V0RGF5c0luTW9udGgodGhpcy5tb250aCwgdGhpcy55ZWFyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VNb250aChudW1iZXI6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgdGVtcCA9IG5ldyBEYXRlKHRoaXMuY3VycmVudERhdGUpO1xyXG4gICAgdGVtcC5zZXRNb250aCh0ZW1wLmdldE1vbnRoKCkgKyBudW1iZXIpO1xyXG4gICAgdGhpcy5tb250aCA9IHRlbXAuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMueWVhciA9IHRlbXAuZ2V0RnVsbFllYXIoKTtcclxuICAgIHRoaXMuY3VycmVudERhdGUgPSB0ZW1wO1xyXG4gICAgdGhpcy5zZXREYXlJbk1vbnRoKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TW9udGgoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnREYXRlICYmICEodGhpcy5kYXRlVmFsdWUgfHwgdGhpcy5kYXRlU3RhcnQpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1vbnRoc1t0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCldO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubW9udGhzW3RoaXMubW9udGhdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWw6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmFuZ2VNb2RlKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gdmFsPy5zdGFydDtcclxuICAgICAgdGhpcy5kYXRlRW5kID0gdmFsPy5lbmQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVWYWx1ZSA9IHZhbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRhdGVWYWx1ZSB8fCB0aGlzLmRhdGVTdGFydCkge1xyXG4gICAgICB0aGlzLnNob3dDdXJyZW5TZWxlY3REYXkodGhpcy5kYXRlVmFsdWUgfHwgdGhpcy5kYXRlU3RhcnQhKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dDdXJyZW5TZWxlY3REYXkoZGF0ZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXkgPSBkYXRlLmdldERhdGUoKVxyXG4gICAgdGhpcy5tb250aCA9IGRhdGUuZ2V0TW9udGgoKVxyXG4gICAgdGhpcy55ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpXHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy5kYXRlVmFsdWUgfHwgdGhpcy5kYXRlU3RhcnQhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3REYXkoZGF5OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jaGVja0hpZGVEYXkoZGF5KSkge1xyXG4gICAgICBpZiAodGhpcy5yYW5nZU1vZGUpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGF0ZVN0YXJ0KSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgZGF5KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgZURhdGUgPSBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgsIGRheSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXRlU3RhcnQgPiBlRGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gZURhdGU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSBlRGF0ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kYXRlVmFsdWUgPSBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgsIGRheSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3REYXRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmFuZ2VNb2RlKSB7XHJcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHtzdGFydDogdGhpcy5kYXRlU3RhcnQhLCBlbmQ6IHRoaXMuZGF0ZUVuZCF9KTtcclxuICAgICAgdGhpcy5lbWl0UGVyaW9kLmVtaXQoe3N0YXJ0OiB0aGlzLmRhdGVTdGFydCEsIGVuZDogdGhpcy5kYXRlRW5kIX0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMubmVlZFRpbWUpIHtcclxuICAgICAgICB0aGlzLmRhdGVWYWx1ZT8uc2V0SG91cnMoK3RoaXMuaG91cnMsICt0aGlzLm1pbnV0ZXMpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5kYXRlVmFsdWUgYXMgRGF0ZSk7XHJcbiAgICAgIHRoaXMuZW1pdERhdGUuZW1pdCh0aGlzLmRhdGVWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrSGlkZURheShkYXk6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IG1vcmVEYXkgPSBmYWxzZTtcclxuICAgICAgbGV0IG1vcmVNb250aCA9IGZhbHNlO1xyXG4gICAgICBsZXQgbW9yZVllYXIgPSBmYWxzZTtcclxuICAgIGNvbnN0IGxlc3NEYXkgPSBmYWxzZTtcclxuICAgICAgY29uc3QgbGVzc01vbnRoID0gZmFsc2U7XHJcbiAgICAgIGNvbnN0IGxlc3NZZWFyID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5fbWF4RGF0ZSkge1xyXG4gICAgICBjb25zdCBbbWF4WWVhciwgbWF4TW9udGgsIG1heERheV0gPSBbXHJcbiAgICAgICAgdGhpcy5fbWF4RGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIHRoaXMuX21heERhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgICB0aGlzLl9tYXhEYXRlLmdldERhdGUoKSxcclxuICAgICAgXTtcclxuICAgICAgbW9yZURheSA9IHRoaXMueWVhciA+PSBtYXhZZWFyICYmIHRoaXMubW9udGggPj0gbWF4TW9udGggJiYgZGF5ID4gbWF4RGF5O1xyXG4gICAgICBtb3JlTW9udGggPSB0aGlzLnllYXIgPj0gbWF4WWVhciAmJiB0aGlzLm1vbnRoID4gbWF4TW9udGg7XHJcbiAgICAgIG1vcmVZZWFyID0gdGhpcy55ZWFyID4gbWF4WWVhcjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9taW5EYXRlKSB7XHJcbiAgICAgIGNvbnN0IFttaW5ZZWFyLCBtaW5Nb250aCwgbWluRGF5XSA9IFtcclxuICAgICAgICB0aGlzLl9taW5EYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgdGhpcy5fbWluRGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICAgIHRoaXMuX21pbkRhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICBdO1xyXG4gICAgICBtb3JlRGF5ID0gdGhpcy55ZWFyIDw9IG1pblllYXIgJiYgdGhpcy5tb250aCA8PSBtaW5Nb250aCAmJiBkYXkgPCBtaW5EYXk7XHJcbiAgICAgIG1vcmVNb250aCA9IHRoaXMueWVhciA8PSBtaW5ZZWFyICYmIHRoaXMubW9udGggPCBtaW5Nb250aDtcclxuICAgICAgbW9yZVllYXIgPSB0aGlzLnllYXIgPCBtaW5ZZWFyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1vcmVEYXkgfHwgbW9yZU1vbnRoIHx8IG1vcmVZZWFyIHx8IGxlc3NEYXkgfHwgbGVzc01vbnRoIHx8IGxlc3NZZWFyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbnNlbERhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVtaXREYXRlLmVtaXQoKTtcclxuICAgIHRoaXMuZW1pdFBlcmlvZC5lbWl0KCk7XHJcbiAgICB0aGlzLmRhdGVWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZGF0ZVN0YXJ0ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5kYXRlRW5kID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kYXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNoZWNrQWN0aXZlRGF5KGRheTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5yYW5nZU1vZGUpIHtcclxuICAgICAgY29uc3Qgc0RheSA9IHRoaXMuZGF0ZVN0YXJ0Py5nZXREYXRlKClcclxuICAgICAgY29uc3QgZURheSA9IHRoaXMuZGF0ZUVuZD8uZ2V0RGF0ZSgpXHJcbiAgICAgIGNvbnN0IHNNb250aCA9IHRoaXMuZGF0ZVN0YXJ0Py5nZXRNb250aCgpXHJcbiAgICAgIGNvbnN0IGVNb250aCA9IHRoaXMuZGF0ZUVuZD8uZ2V0TW9udGgoKVxyXG4gICAgICBjb25zdCBzWWVhciA9IHRoaXMuZGF0ZVN0YXJ0Py5nZXRGdWxsWWVhcigpXHJcbiAgICAgIGNvbnN0IGVZZWFyID0gdGhpcy5kYXRlRW5kPy5nZXRGdWxsWWVhcigpXHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF5ID0gc0RheSA9PT0gZGF5ICYmIHNNb250aCA9PT0gdGhpcy5tb250aCAmJiBzWWVhciA9PT0gdGhpcy55ZWFyO1xyXG4gICAgICBjb25zdCBlbmREYXkgPSBlRGF5ID09PSBkYXkgJiYgZU1vbnRoID09PSB0aGlzLm1vbnRoICYmIGVZZWFyID09PSB0aGlzLnllYXI7XHJcbiAgICAgIGlmICh0aGlzLmRhdGVTdGFydCAmJiB0aGlzLmRhdGVFbmQpIHtcclxuICAgICAgICBjb25zdCBjaGVja2VkRGF0ZSA9IG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgZGF5KVxyXG5cclxuICAgICAgICBjb25zdCBhZnRlciA9IGlzQWZ0ZXIodGhpcy5kYXRlRW5kLCBjaGVja2VkRGF0ZSlcclxuICAgICAgICBjb25zdCBiZWZvcmUgPSBpc0JlZm9yZSh0aGlzLmRhdGVTdGFydCwgY2hlY2tlZERhdGUpXHJcbiAgICAgICAgcmV0dXJuIGFmdGVyICYmIGJlZm9yZSB8fCBzdGFydERheSB8fCBlbmREYXk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHN0YXJ0RGF5IHx8IGVuZERheTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVZhbHVlPy5nZXREYXRlKCkgPT09IGRheVxyXG4gICAgICAgICYmIHRoaXMuZGF0ZVZhbHVlPy5nZXRNb250aCgpID09PSB0aGlzLm1vbnRoXHJcbiAgICAgICAgJiYgdGhpcy5kYXRlVmFsdWU/LmdldEZ1bGxZZWFyKCkgPT09IHRoaXMueWVhcjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGlmIChtb2RlID09PSAnaWNvbicpIHtcclxuPGRpdiBjbGFzcz1cInBvcy1yZWxhdGl2ZSBkLWZsZXggYWxpZ24tY2VudGVyXCI+XHJcbiAgQGlmIChkYXRlVmFsdWUpIHtcclxuICA8c3BhbiBjbGFzcz1cIm1yLTEyIGdyZWVuXCI+e3sgZGF0ZVZhbHVlIHwgZGF0ZTogJ2RkLk1NLnl5eXknIH19PC9zcGFuPlxyXG4gIH1cclxuICA8ZGQtbGliLXN2Zy1pY29uIGNsYXNzPVwiY3VwXCIgKGNsaWNrKT1cInNob3dDYWxlbmRhciA9ICFzaG93Q2FsZW5kYXJcIiBpY29uPVwiY2FsZW5kYXJcIj48L2RkLWxpYi1zdmctaWNvbj5cclxuICBAaWYgKGRhdGVWYWx1ZSkge1xyXG4gICAgPGRkLWxpYi1zdmctaWNvbiBjbGFzcz1cImN1cFwiIChjbGljayk9XCJjYW5zZWxEYXRlKClcIiBpY29uPVwiY2xlYXJcIj48L2RkLWxpYi1zdmctaWNvbj5cclxuICB9IEBpZiAoc2hvd0NhbGVuZGFyKSB7XHJcbiAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWFicy13cmFwcGVyXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FsZW5kYXJcIj48L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbn0gQGlmIChtb2RlID09PSAnZnVsbCcpIHtcclxuPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhbGVuZGFyXCI+PC9uZy10ZW1wbGF0ZT5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNjYWxlbmRhcj5cclxuICA8ZGQtbGliLWNhcmQgY2xhc3M9XCJjYWxlbmRhci1ibG9ja1wiIHR5cGU9XCJzbWFsbFwiPlxyXG4gICA8ZGl2IGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ibG9ja19faGVhZGVyXCI+XHJcbiAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYmxvY2tfX2hlYWRlcl9hcnJvd1wiPlxyXG4gICAgICAgICA8ZGQtbGliLXN2Zy1pY29uIChjbGljayk9XCJjaGFuZ2VNb250aCgtMSlcIiBpY29uPVwibGVmdF9jaGV2cm9uXCI+PC9kZC1saWItc3ZnLWljb24+XHJcbiAgICAgICA8L2Rpdj5cclxuICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ibG9ja19faGVhZGVyX3llYXJcIj57eyBnZXRNb250aCgpICsgJyAnICsgeWVhciB9fTwvZGl2PlxyXG4gICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJsb2NrX19oZWFkZXJfYXJyb3dcIj5cclxuICAgICAgICAgPGRkLWxpYi1zdmctaWNvbiAoY2xpY2spPVwiY2hhbmdlTW9udGgoMSlcIiBpY29uPVwicmlnaHRfY2hldnJvblwiPjwvZGQtbGliLXN2Zy1pY29uPlxyXG4gICAgICAgPC9kaXY+XHJcbiAgICAgPC9kaXY+XHJcbiAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJsb2NrX193ZWVrXCI+XHJcbiAgICAgICBAZm9yIChkYXkgb2Ygd2VlazsgdHJhY2sgZGF5KSB7XHJcbiAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ibG9ja19fd2Vla19kYXlcIj57eyBkYXkgfX08L2Rpdj5cclxuICAgICAgIH1cclxuICAgICA8L2Rpdj5cclxuICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYmxvY2tfX2RheXNcIj5cclxuICAgICAgIEBmb3IgKGRheSBvZiBkYXlzSW5Nb250aD8ucHJldkRheXM7IHRyYWNrIGRheSkge1xyXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYmxvY2tfX2RheXNfZGF5IGhpZGVcIj57eyBkYXkgfX08L2Rpdj5cclxuICAgICAgIH0gQGZvciAoZGF5IG9mIGRheXNJbk1vbnRoPy5kYXlzOyB0cmFjayBkYXkpIHtcclxuICAgICAgIDxkaXZcclxuICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERheShkYXkpXCJcclxuICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjaGVja0FjdGl2ZURheShkYXkpXCJcclxuXHJcbiAgICAgICAgIFtjbGFzcy5jdXJyZW50XT1cIlxyXG4gICAgICAgICAgZGF0ZU5vdy5nZXREYXRlKCkgPT09IGRheSAmJiBkYXRlTm93LmdldE1vbnRoKCkgPT09IG1vbnRoICYmIGRhdGVOb3cuZ2V0RnVsbFllYXIoKSA9PT0geWVhclxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgIFtjbGFzcy5oaWRlXT1cImNoZWNrSGlkZURheShkYXkpXCJcclxuICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1ibG9ja19fZGF5c19kYXkgbm9ybWFsXCI+XHJcbiAgICAgICAgIHt7IGRheSB9fVxyXG4gICAgICAgPC9kaXY+XHJcbiAgICAgfSBAZm9yIChkYXkgb2YgZGF5c0luTW9udGg/Lmxhc3REYXlzOyB0cmFjayBkYXkpIHtcclxuICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ibG9ja19fZGF5c19kYXkgaGlkZVwiPnt7IGRheSB9fTwvZGl2PlxyXG4gICAgIH1cclxuICAgICA8L2Rpdj5cclxuICAgICBAaWYobmVlZFRpbWUpIHtcclxuICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ibG9ja19fdGltZVwiPlxyXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXBsYWluXCI+0JLRgNC10LzRjzwvZGl2PlxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImhvdXJzXCIgY2xhc3M9XCJjYWxlbmRhci1ibG9ja19fdGltZS1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkZE1heE51bV09XCJtYXhIb3Vyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1clZhbF09XCJob3Vyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFkYXRlVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWdFeHBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGRCYW5TeW1ib2w9XCJeXFxkKyRcIlxyXG4gICAgICAgICAgICAgICAgICAgIG1heD1cIjIzXCJcclxuICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuPVwiXlxcZCskXCI+XHJcbiAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZC1kb3RcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwibWludXRlc1wiIGNsYXNzPVwiY2FsZW5kYXItYmxvY2tfX3RpbWUtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkZE1heE51bV09XCJtYXhNaW51dGVzXCJcclxuICAgICAgICAgICAgICAgICAgICBbY3VyVmFsXT1cIm1pbnV0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZGF0ZVZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVnRXhwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRkQmFuU3ltYm9sPVwiXlxcZCskXCJcclxuICAgICAgICAgICAgICAgICAgICBtYXg9XCI1OVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGF0dGVybj1cIl5cXGQrJFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIj5cclxuICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgPC9kaXY+XHJcbiAgICAgICA8L2Rpdj5cclxuICAgICB9XHJcbiAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJsb2NrX19mb290ZXJcIj5cclxuICAgICAgIDxkZC1saWItYnV0dG9uIChjbGljayk9XCJjYW5zZWxEYXRlKClcIiBbYnRuQ29sb3JdPVwiJ3RyYW5zcGFyZW50J1wiIGNsYXNzPVwiY2FsZW5kYXItYmxvY2tfX2Zvb3Rlcl9idG5cIlxyXG4gICAgICAgPtCe0YLQvNC10L3QuNGC0YxcclxuICAgICAgIDwvZGQtbGliLWJ1dHRvbj5cclxuICAgICAgIDxkZC1saWItYnV0dG9uIChjbGljayk9XCJzZWxlY3REYXRlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIighZGF0ZVZhbHVlICYmICFyYW5nZU1vZGUpIHx8IChyYW5nZU1vZGUgJiYgKCFkYXRlU3RhcnQgfHwgIWRhdGVFbmQpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLWJsb2NrX19mb290ZXJfYnRuXCJcclxuICAgICAgID7QktGL0LHRgNCw0YLRjFxyXG4gICAgICAgPC9kZC1saWItYnV0dG9uPlxyXG4gICAgIDwvZGl2PlxyXG4gICA8L2Rpdj5cclxuICA8L2RkLWxpYi1jYXJkPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -1,34 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
- import { LibSkeletonComponent } from '../lib-skeleton/lib-skeleton.component';
3
- import * as i0 from "@angular/core";
4
- export class LibCardComponent {
5
- constructor(cdr) {
6
- this.cdr = cdr;
7
- this.type = 'standard';
8
- this.borderRadius = 'all';
9
- this.cardBtnEvent = new EventEmitter();
10
- }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibCardComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: LibCardComponent, isStandalone: true, selector: "dd-lib-card", inputs: { type: "type", footerBtn: "footerBtn", sHeight: "sHeight", skeleton: "skeleton", parentLvlForSkeleton: "parentLvlForSkeleton", plugs: "plugs", borderRadius: "borderRadius" }, outputs: { cardBtnEvent: "cardBtnEvent" }, ngImport: i0, template: "<div\r\n class=\"lib-card-wrapper\"\r\n [class.border-r-bottom]=\"borderRadius === 'bottom'\"\r\n [class.border-r-none]=\"borderRadius === 'none'\"\r\n [class.border-r-top]=\"borderRadius === 'top'\"\r\n [class.giant-card]=\"type === 'giant'\"\r\n [class.small-card]=\"type === 'small'\"\r\n [class.with-footer]=\"!!footerBtn\">\r\n @if (skeleton) {\r\n <dd-lib-skeleton\r\n [deepParent]=\"parentLvlForSkeleton\"\r\n [skeleton]=\"skeleton\"\r\n [plugs]=\"plugs\"\r\n [sHeight]=\"sHeight\">\r\n <div class=\"lib-card\">\r\n <ng-content></ng-content>\r\n </div>\r\n </dd-lib-skeleton>\r\n } @else {\r\n <div class=\"lib-card\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n@if (footerBtn) {\r\n<div (click)=\"cardBtnEvent.emit(); cdr.detectChanges()\" class=\"lib-card-footer-btn\">\r\n {{ footerBtn }}\r\n</div>\r\n}\r\n", styles: [":host{display:block}.lib-card-wrapper{display:flex;border-radius:24px;box-shadow:var(--main-card-shadow);background-color:var(--main-card-color);min-height:100%}@media screen and (max-width: 480px){.lib-card-wrapper{border-radius:16px}}.lib-card-wrapper.border-r-bottom{border-radius:0 0 24px 24px}@media screen and (max-width: 480px){.lib-card-wrapper.border-r-bottom{border-radius:0 0 16px 16px}}.lib-card-wrapper.border-r-top{border-radius:24px 24px 0 0}@media screen and (max-width: 480px){.lib-card-wrapper.border-r-top{border-radius:16px 16px 0 0}}.lib-card-wrapper.border-r-none{border-radius:0}.lib-card-wrapper.small-card{border-radius:12px}.lib-card-wrapper.giant-card .lib-card{padding:32px}@media screen and (max-width: 840px){.lib-card-wrapper.giant-card .lib-card{padding:24px}}@media screen and (max-width: 480px){.lib-card-wrapper.giant-card .lib-card{padding:16px}}.lib-card-wrapper.with-footer{border-radius:24px 24px 0 0}@media screen and (max-width: 480px){.lib-card-wrapper.with-footer{border-radius:16px 16px 0 0}}.lib-card{min-height:100%;min-width:100%;padding:24px;display:flex}@media screen and (max-width: 480px){.lib-card{padding:16px}}.lib-card-footer-btn{border-radius:0 0 12px 12px;font-weight:500;background-color:var(--primary-green-color);color:var(--white-color);cursor:pointer;height:48px;display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "component", type: LibSkeletonComponent, selector: "dd-lib-skeleton", inputs: ["deepParent", "sHeight", "sMb", "skeleton", "plugs"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
- }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibCardComponent, decorators: [{
15
- type: Component,
16
- args: [{ selector: 'dd-lib-card', standalone: true, imports: [LibSkeletonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"lib-card-wrapper\"\r\n [class.border-r-bottom]=\"borderRadius === 'bottom'\"\r\n [class.border-r-none]=\"borderRadius === 'none'\"\r\n [class.border-r-top]=\"borderRadius === 'top'\"\r\n [class.giant-card]=\"type === 'giant'\"\r\n [class.small-card]=\"type === 'small'\"\r\n [class.with-footer]=\"!!footerBtn\">\r\n @if (skeleton) {\r\n <dd-lib-skeleton\r\n [deepParent]=\"parentLvlForSkeleton\"\r\n [skeleton]=\"skeleton\"\r\n [plugs]=\"plugs\"\r\n [sHeight]=\"sHeight\">\r\n <div class=\"lib-card\">\r\n <ng-content></ng-content>\r\n </div>\r\n </dd-lib-skeleton>\r\n } @else {\r\n <div class=\"lib-card\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n@if (footerBtn) {\r\n<div (click)=\"cardBtnEvent.emit(); cdr.detectChanges()\" class=\"lib-card-footer-btn\">\r\n {{ footerBtn }}\r\n</div>\r\n}\r\n", styles: [":host{display:block}.lib-card-wrapper{display:flex;border-radius:24px;box-shadow:var(--main-card-shadow);background-color:var(--main-card-color);min-height:100%}@media screen and (max-width: 480px){.lib-card-wrapper{border-radius:16px}}.lib-card-wrapper.border-r-bottom{border-radius:0 0 24px 24px}@media screen and (max-width: 480px){.lib-card-wrapper.border-r-bottom{border-radius:0 0 16px 16px}}.lib-card-wrapper.border-r-top{border-radius:24px 24px 0 0}@media screen and (max-width: 480px){.lib-card-wrapper.border-r-top{border-radius:16px 16px 0 0}}.lib-card-wrapper.border-r-none{border-radius:0}.lib-card-wrapper.small-card{border-radius:12px}.lib-card-wrapper.giant-card .lib-card{padding:32px}@media screen and (max-width: 840px){.lib-card-wrapper.giant-card .lib-card{padding:24px}}@media screen and (max-width: 480px){.lib-card-wrapper.giant-card .lib-card{padding:16px}}.lib-card-wrapper.with-footer{border-radius:24px 24px 0 0}@media screen and (max-width: 480px){.lib-card-wrapper.with-footer{border-radius:16px 16px 0 0}}.lib-card{min-height:100%;min-width:100%;padding:24px;display:flex}@media screen and (max-width: 480px){.lib-card{padding:16px}}.lib-card-footer-btn{border-radius:0 0 12px 12px;font-weight:500;background-color:var(--primary-green-color);color:var(--white-color);cursor:pointer;height:48px;display:flex;align-items:center;justify-content:center}\n"] }]
17
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { type: [{
18
- type: Input
19
- }], footerBtn: [{
20
- type: Input
21
- }], sHeight: [{
22
- type: Input
23
- }], skeleton: [{
24
- type: Input
25
- }], parentLvlForSkeleton: [{
26
- type: Input
27
- }], plugs: [{
28
- type: Input
29
- }], borderRadius: [{
30
- type: Input
31
- }], cardBtnEvent: [{
32
- type: Output
33
- }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLWNhcmQvbGliLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLWNhcmQvbGliLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEgsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7O0FBUzVFLE1BQU0sT0FBTyxnQkFBZ0I7SUFVM0IsWUFBbUIsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFUekIsU0FBSSxHQUFtQyxVQUFVLENBQUM7UUFNbEQsaUJBQVksR0FBc0MsS0FBSyxDQUFDO1FBRXZELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztJQUNsQixDQUFDOzhHQVZsQyxnQkFBZ0I7a0dBQWhCLGdCQUFnQiwwU0NYN0IscTRCQTZCQSxnNkNEdkJZLG9CQUFvQjs7MkZBS25CLGdCQUFnQjtrQkFSNUIsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsb0JBQW9CLENBQUMsbUJBR2QsdUJBQXVCLENBQUMsTUFBTTtzRkFHL0IsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUVXLFlBQVk7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7TGliU2tlbGV0b25Db21wb25lbnR9IGZyb20gJy4uL2xpYi1za2VsZXRvbi9saWItc2tlbGV0b24uY29tcG9uZW50JztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZC1saWItY2FyZCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTGliU2tlbGV0b25Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saWItY2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2xpYi1jYXJkLmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIExpYkNhcmRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiAnZ2lhbnQnIHwgJ3N0YW5kYXJkJyB8ICdzbWFsbCcgPSAnc3RhbmRhcmQnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb290ZXJCdG46IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwdWJsaWMgc0hlaWdodDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBza2VsZXRvbjogYW55O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwYXJlbnRMdmxGb3JTa2VsZXRvbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbHVnczogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBib3JkZXJSYWRpdXM6ICdhbGwnIHwgJ3RvcCcgfCAnYm90dG9tJyB8ICdub25lJyA9ICdhbGwnO1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNhcmRCdG5FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5kZWZpbmVkPigpO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImxpYi1jYXJkLXdyYXBwZXJcIlxyXG4gIFtjbGFzcy5ib3JkZXItci1ib3R0b21dPVwiYm9yZGVyUmFkaXVzID09PSAnYm90dG9tJ1wiXHJcbiAgW2NsYXNzLmJvcmRlci1yLW5vbmVdPVwiYm9yZGVyUmFkaXVzID09PSAnbm9uZSdcIlxyXG4gIFtjbGFzcy5ib3JkZXItci10b3BdPVwiYm9yZGVyUmFkaXVzID09PSAndG9wJ1wiXHJcbiAgW2NsYXNzLmdpYW50LWNhcmRdPVwidHlwZSA9PT0gJ2dpYW50J1wiXHJcbiAgW2NsYXNzLnNtYWxsLWNhcmRdPVwidHlwZSA9PT0gJ3NtYWxsJ1wiXHJcbiAgW2NsYXNzLndpdGgtZm9vdGVyXT1cIiEhZm9vdGVyQnRuXCI+XHJcbiAgQGlmIChza2VsZXRvbikge1xyXG4gICAgPGRkLWxpYi1za2VsZXRvblxyXG4gICAgICBbZGVlcFBhcmVudF09XCJwYXJlbnRMdmxGb3JTa2VsZXRvblwiXHJcbiAgICAgIFtza2VsZXRvbl09XCJza2VsZXRvblwiXHJcbiAgICAgIFtwbHVnc109XCJwbHVnc1wiXHJcbiAgICAgIFtzSGVpZ2h0XT1cInNIZWlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxpYi1jYXJkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGQtbGliLXNrZWxldG9uPlxyXG4gIH0gQGVsc2Uge1xyXG4gICAgPGRpdiBjbGFzcz1cImxpYi1jYXJkXCI+XHJcbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbkBpZiAoZm9vdGVyQnRuKSB7XHJcbjxkaXYgKGNsaWNrKT1cImNhcmRCdG5FdmVudC5lbWl0KCk7IGNkci5kZXRlY3RDaGFuZ2VzKClcIiBjbGFzcz1cImxpYi1jYXJkLWZvb3Rlci1idG5cIj5cclxuICB7eyBmb290ZXJCdG4gfX1cclxuPC9kaXY+XHJcbn1cclxuIl19