@huntsman-cancer-institute/reporting-framework 16.0.0 → 17.0.0

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 (32) hide show
  1. package/datepicker/report-datepicker.component.d.ts +16 -16
  2. package/esm2022/datepicker/report-datepicker.component.mjs +61 -61
  3. package/esm2022/format/format.component.mjs +23 -23
  4. package/esm2022/huntsman-cancer-institute-reporting-framework.mjs +4 -4
  5. package/esm2022/index.mjs +2 -2
  6. package/esm2022/model/format.model.mjs +2 -2
  7. package/esm2022/model/option.model.mjs +2 -2
  8. package/esm2022/model/param.model.mjs +18 -18
  9. package/esm2022/model/report-tab.model.mjs +2 -2
  10. package/esm2022/model/report.model.mjs +6 -6
  11. package/esm2022/parameter/parameter.component.mjs +23 -23
  12. package/esm2022/report.module.mjs +79 -79
  13. package/esm2022/reporting-framework.component.mjs +424 -424
  14. package/esm2022/resizable-divider/resizable-section-divider.component.mjs +122 -122
  15. package/esm2022/spinner/dialogs.service.mjs +99 -99
  16. package/esm2022/spinner/spinner-dialog.component.mjs +45 -45
  17. package/fesm2022/huntsman-cancer-institute-reporting-framework.mjs +821 -821
  18. package/fesm2022/huntsman-cancer-institute-reporting-framework.mjs.map +1 -1
  19. package/format/format.component.d.ts +11 -11
  20. package/index.d.ts +2 -2
  21. package/model/format.model.d.ts +6 -6
  22. package/model/option.model.d.ts +5 -5
  23. package/model/param.model.d.ts +16 -16
  24. package/model/report-tab.model.d.ts +7 -7
  25. package/model/report.model.d.ts +15 -15
  26. package/package.json +16 -7
  27. package/parameter/parameter.component.d.ts +9 -9
  28. package/report.module.d.ts +21 -21
  29. package/reporting-framework.component.d.ts +58 -58
  30. package/resizable-divider/resizable-section-divider.component.d.ts +23 -23
  31. package/spinner/dialogs.service.d.ts +30 -30
  32. package/spinner/spinner-dialog.component.d.ts +12 -12
@@ -1,95 +1,95 @@
1
- import { Component, ElementRef, HostListener, Input, ViewChild } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- export class ResizableSectionDividerComponent {
5
- constructor() {
6
- // Starting width or height % for the right / bottom containers respectively
7
- this.initialPercentage = 50;
8
- this.isVerticalLayout = false;
9
- this.maxPercentage = 90;
10
- this.minPercentage = 10;
11
- this.dragging = false;
12
- this.grabberOffset = 0;
13
- }
14
- ngOnInit() {
15
- this.sectionSize = this.initialPercentage;
16
- this.verticalTouchFunction = (event) => {
17
- if (this.dragging) {
18
- this.grabberOffset = (((20 / this.verticalContainer.nativeElement.offsetHeight) * 100) / 2);
19
- this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.touches[0].pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))
20
- / (this.verticalContainer.nativeElement.offsetHeightt) * 100);
21
- event.stopPropagation();
22
- event.preventDefault();
23
- }
24
- };
25
- this.horizontalTouchFunction = (event) => {
26
- if (this.dragging) {
27
- this.grabberOffset = (((10 / this.horizontalContainer.nativeElement.offsetWidth) * 100) / 2);
28
- this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.touches[0].pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)
29
- / (this.horizontalContainer.nativeElement.offsetWidth) * 100);
30
- event.stopPropagation();
31
- event.preventDefault();
32
- }
33
- };
34
- }
35
- ngAfterViewInit() {
36
- // Handle initializing grabber size for when elements are initialized as hidden
37
- this.elementObserver = new IntersectionObserver((entries, observable) => {
38
- entries.forEach(entry => {
39
- if (entry.isIntersecting) {
40
- // subtract half the grabber height/width % from each section
41
- if (this.isVerticalLayout) {
42
- this.grabberOffset = (((20 / this.verticalContainer.nativeElement.offsetHeight) * 100) / 2);
43
- }
44
- else {
45
- this.grabberOffset = (((10 / this.horizontalContainer.nativeElement.offsetWidth) * 100) / 2);
46
- }
47
- observable.disconnect();
48
- }
49
- });
50
- });
51
- if (this.isVerticalLayout) {
52
- this.elementObserver.observe(this.verticalContainer.nativeElement);
53
- window.addEventListener("touchmove", this.verticalTouchFunction, { passive: false });
54
- }
55
- else {
56
- this.elementObserver.observe(this.horizontalContainer.nativeElement);
57
- window.addEventListener("touchmove", this.horizontalTouchFunction, { passive: false });
58
- }
59
- }
60
- mouseMove(event) {
61
- if (this.dragging) {
62
- if (this.isVerticalLayout) {
63
- this.grabberOffset = (((20 / this.verticalContainer.nativeElement.offsetHeight) * 100) / 2);
64
- this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))
65
- / (this.verticalContainer.nativeElement.offsetHeight) * 100);
66
- event.stopPropagation();
67
- event.preventDefault();
68
- }
69
- else {
70
- this.grabberOffset = (((10 / this.horizontalContainer.nativeElement.offsetWidth) * 100) / 2);
71
- this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)
72
- / (this.horizontalContainer.nativeElement.offsetWidth) * 100);
73
- event.stopPropagation();
74
- event.preventDefault();
75
- }
76
- }
77
- }
78
- mouseUp(event) {
79
- if (this.dragging) {
80
- this.dragging = false;
81
- }
82
- }
83
- ngOnDestroy() {
84
- if (this.isVerticalLayout) {
85
- window.removeEventListener("touchmove", this.verticalTouchFunction);
86
- }
87
- else {
88
- window.removeEventListener("touchmove", this.horizontalTouchFunction);
89
- }
90
- }
91
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResizableSectionDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
92
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResizableSectionDividerComponent, selector: "resizable-section-divider", inputs: { initialPercentage: "initialPercentage", isVerticalLayout: "isVerticalLayout", maxPercentage: "maxPercentage", minPercentage: "minPercentage" }, host: { listeners: { "document:mousemove": "mouseMove($event)", "document:mouseup": "mouseUp($event)", "document:touchend": "mouseUp($event)" } }, viewQueries: [{ propertyName: "verticalContainer", first: true, predicate: ["verticalContainer"], descendants: true }, { propertyName: "horizontalContainer", first: true, predicate: ["horizontalContainer"], descendants: true }], ngImport: i0, template: `
1
+ import { Component, ElementRef, HostListener, Input, ViewChild } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class ResizableSectionDividerComponent {
5
+ constructor() {
6
+ // Starting width or height % for the right / bottom containers respectively
7
+ this.initialPercentage = 50;
8
+ this.isVerticalLayout = false;
9
+ this.maxPercentage = 90;
10
+ this.minPercentage = 10;
11
+ this.dragging = false;
12
+ this.grabberOffset = 0;
13
+ }
14
+ ngOnInit() {
15
+ this.sectionSize = this.initialPercentage;
16
+ this.verticalTouchFunction = (event) => {
17
+ if (this.dragging) {
18
+ this.grabberOffset = (((20 / this.verticalContainer.nativeElement.offsetHeight) * 100) / 2);
19
+ this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.touches[0].pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))
20
+ / (this.verticalContainer.nativeElement.offsetHeightt) * 100);
21
+ event.stopPropagation();
22
+ event.preventDefault();
23
+ }
24
+ };
25
+ this.horizontalTouchFunction = (event) => {
26
+ if (this.dragging) {
27
+ this.grabberOffset = (((10 / this.horizontalContainer.nativeElement.offsetWidth) * 100) / 2);
28
+ this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.touches[0].pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)
29
+ / (this.horizontalContainer.nativeElement.offsetWidth) * 100);
30
+ event.stopPropagation();
31
+ event.preventDefault();
32
+ }
33
+ };
34
+ }
35
+ ngAfterViewInit() {
36
+ // Handle initializing grabber size for when elements are initialized as hidden
37
+ this.elementObserver = new IntersectionObserver((entries, observable) => {
38
+ entries.forEach(entry => {
39
+ if (entry.isIntersecting) {
40
+ // subtract half the grabber height/width % from each section
41
+ if (this.isVerticalLayout) {
42
+ this.grabberOffset = (((20 / this.verticalContainer.nativeElement.offsetHeight) * 100) / 2);
43
+ }
44
+ else {
45
+ this.grabberOffset = (((10 / this.horizontalContainer.nativeElement.offsetWidth) * 100) / 2);
46
+ }
47
+ observable.disconnect();
48
+ }
49
+ });
50
+ });
51
+ if (this.isVerticalLayout) {
52
+ this.elementObserver.observe(this.verticalContainer.nativeElement);
53
+ window.addEventListener("touchmove", this.verticalTouchFunction, { passive: false });
54
+ }
55
+ else {
56
+ this.elementObserver.observe(this.horizontalContainer.nativeElement);
57
+ window.addEventListener("touchmove", this.horizontalTouchFunction, { passive: false });
58
+ }
59
+ }
60
+ mouseMove(event) {
61
+ if (this.dragging) {
62
+ if (this.isVerticalLayout) {
63
+ this.grabberOffset = (((20 / this.verticalContainer.nativeElement.offsetHeight) * 100) / 2);
64
+ this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))
65
+ / (this.verticalContainer.nativeElement.offsetHeight) * 100);
66
+ event.stopPropagation();
67
+ event.preventDefault();
68
+ }
69
+ else {
70
+ this.grabberOffset = (((10 / this.horizontalContainer.nativeElement.offsetWidth) * 100) / 2);
71
+ this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)
72
+ / (this.horizontalContainer.nativeElement.offsetWidth) * 100);
73
+ event.stopPropagation();
74
+ event.preventDefault();
75
+ }
76
+ }
77
+ }
78
+ mouseUp(event) {
79
+ if (this.dragging) {
80
+ this.dragging = false;
81
+ }
82
+ }
83
+ ngOnDestroy() {
84
+ if (this.isVerticalLayout) {
85
+ window.removeEventListener("touchmove", this.verticalTouchFunction);
86
+ }
87
+ else {
88
+ window.removeEventListener("touchmove", this.horizontalTouchFunction);
89
+ }
90
+ }
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ResizableSectionDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ResizableSectionDividerComponent, selector: "resizable-section-divider", inputs: { initialPercentage: "initialPercentage", isVerticalLayout: "isVerticalLayout", maxPercentage: "maxPercentage", minPercentage: "minPercentage" }, host: { listeners: { "document:mousemove": "mouseMove($event)", "document:mouseup": "mouseUp($event)", "document:touchend": "mouseUp($event)" } }, viewQueries: [{ propertyName: "verticalContainer", first: true, predicate: ["verticalContainer"], descendants: true }, { propertyName: "horizontalContainer", first: true, predicate: ["horizontalContainer"], descendants: true }], ngImport: i0, template: `
93
93
  <div *ngIf="isVerticalLayout" style="height: 100%; width: 100%;" #verticalContainer>
94
94
  <div class="p-1" style="width: 100%;" [style.min-height.%]="minPercentage" [style.max-height.%]="maxPercentage" [style.height.%]="(100 - sectionSize - grabberOffset)">
95
95
  <ng-content select="[topSection]"></ng-content>
@@ -117,10 +117,10 @@ export class ResizableSectionDividerComponent {
117
117
  <ng-content select="[rightSection]"></ng-content>
118
118
  </div>
119
119
  </div>
120
- `, isInline: true, styles: [".rad-grabber{cursor:ew-resize}.rad-grabber-vertical{cursor:ns-resize}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
121
- }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResizableSectionDividerComponent, decorators: [{
123
- type: Component,
120
+ `, isInline: true, styles: [".rad-grabber{cursor:ew-resize}.rad-grabber-vertical{cursor:ns-resize}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
121
+ }
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ResizableSectionDividerComponent, decorators: [{
123
+ type: Component,
124
124
  args: [{ selector: "resizable-section-divider", template: `
125
125
  <div *ngIf="isVerticalLayout" style="height: 100%; width: 100%;" #verticalContainer>
126
126
  <div class="p-1" style="width: 100%;" [style.min-height.%]="minPercentage" [style.max-height.%]="maxPercentage" [style.height.%]="(100 - sectionSize - grabberOffset)">
@@ -149,29 +149,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
149
149
  <ng-content select="[rightSection]"></ng-content>
150
150
  </div>
151
151
  </div>
152
- `, styles: [".rad-grabber{cursor:ew-resize}.rad-grabber-vertical{cursor:ns-resize}\n"] }]
153
- }], propDecorators: { initialPercentage: [{
154
- type: Input
155
- }], isVerticalLayout: [{
156
- type: Input
157
- }], maxPercentage: [{
158
- type: Input
159
- }], minPercentage: [{
160
- type: Input
161
- }], verticalContainer: [{
162
- type: ViewChild,
163
- args: ["verticalContainer", { static: false }]
164
- }], horizontalContainer: [{
165
- type: ViewChild,
166
- args: ["horizontalContainer", { static: false }]
167
- }], mouseMove: [{
168
- type: HostListener,
169
- args: ["document:mousemove", ["$event"]]
170
- }], mouseUp: [{
171
- type: HostListener,
172
- args: ["document:mouseup", ["$event"]]
173
- }, {
174
- type: HostListener,
175
- args: ["document:touchend", ["$event"]]
176
- }] } });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLXNlY3Rpb24tZGl2aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBvcnRpbmctZnJhbWV3b3JrL3NyYy9yZXNpemFibGUtZGl2aWRlci9yZXNpemFibGUtc2VjdGlvbi1kaXZpZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7OztBQTJDOUcsTUFBTSxPQUFPLGdDQUFnQztJQXpDN0M7UUEwQ0ksNEVBQTRFO1FBQ25FLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0Isa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFNN0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixrQkFBYSxHQUFHLENBQUMsQ0FBQztLQXdGNUI7SUFsRkcsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRTVDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDOUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtB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IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgVmlld0NoaWxkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJyZXNpemFibGUtc2VjdGlvbi1kaXZpZGVyXCIsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc1ZlcnRpY2FsTGF5b3V0XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlO1wiICN2ZXJ0aWNhbENvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLm1pbi1oZWlnaHQuJV09XCJtaW5QZXJjZW50YWdlXCIgW3N0eWxlLm1heC1oZWlnaHQuJV09XCJtYXhQZXJjZW50YWdlXCIgW3N0eWxlLmhlaWdodC4lXT1cIigxMDAgLSBzZWN0aW9uU2l6ZSAtIGdyYWJiZXJPZmZzZXQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9wU2VjdGlvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7IHdpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhZC1ncmFiYmVyLXZlcnRpY2FsXCIgKG1vdXNlZG93bik9XCJkcmFnZ2luZyA9IHRydWU7XCIgKHRvdWNoc3RhcnQpPVwiZHJhZ2dpbmcgPSB0cnVlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZ3JpcC1saW5lc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLm1pbi1oZWlnaHQuJV09XCJtaW5QZXJjZW50YWdlXCIgW3N0eWxlLm1heC1oZWlnaHQuJV09XCJtYXhQZXJjZW50YWdlXCIgW3N0eWxlLmhlaWdodC4lXT1cIihzZWN0aW9uU2l6ZSAtIGdyYWJiZXJPZmZzZXQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYm90dG9tU2VjdGlvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzVmVydGljYWxMYXlvdXRcIiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTtcIiAjaG9yaXpvbnRhbENvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMVwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiIFtzdHlsZS5taW4td2lkdGguJV09XCJtaW5QZXJjZW50YWdlXCIgW3N0eWxlLm1heC13aWR0aC4lXT1cIm1heFBlcmNlbnRhZ2VcIiBbc3R5bGUud2lkdGguJV09XCIoMTAwIC0gc2VjdGlvblNpemUgLSBncmFiYmVyT2Zmc2V0KVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xlZnRTZWN0aW9uXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBzdHlsZT1cIndpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkLWdyYWJiZXJcIiAobW91c2Vkb3duKT1cImRyYWdnaW5nID0gdHJ1ZTtcIiAodG91Y2hzdGFydCk9XCJkcmFnZ2luZyA9IHRydWU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1ncmlwLWxpbmVzLXZlcnRpY2FsXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0xXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCIgW3N0eWxlLm1pbi13aWR0aC4lXT1cIm1pblBlcmNlbnRhZ2VcIiBbc3R5bGUubWF4LXdpZHRoLiVdPVwibWF4UGVyY2VudGFnZVwiIFtzdHlsZS53aWR0aC4lXT1cInNlY3Rpb25TaXplIC0gZ3JhYmJlck9mZnNldFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3JpZ2h0U2VjdGlvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAucmFkLWdyYWJiZXIge1xyXG4gICAgICBjdXJzb3I6IGV3LXJlc2l6ZTtcclxuICAgIH1cclxuXHJcbiAgICAucmFkLWdyYWJiZXItdmVydGljYWwge1xyXG4gICAgICBjdXJzb3I6IG5zLXJlc2l6ZTtcclxuICAgIH1cclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlU2VjdGlvbkRpdmlkZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgLy8gU3RhcnRpbmcgd2lkdGggb3IgaGVpZ2h0ICUgZm9yIHRoZSByaWdodCAvIGJvdHRvbSBjb250YWluZXJzIHJlc3BlY3RpdmVseVxyXG4gICAgQElucHV0KCkgaW5pdGlhbFBlcmNlbnRhZ2U6IG51bWJlciA9IDUwO1xyXG4gICAgQElucHV0KCkgaXNWZXJ0aWNhbExheW91dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbWF4UGVyY2VudGFnZTogbnVtYmVyID0gOTA7XHJcbiAgICBASW5wdXQoKSBtaW5QZXJjZW50YWdlOiBudW1iZXIgPSAxMDtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwidmVydGljYWxDb250YWluZXJcIiwge3N0YXRpYzogZmFsc2V9KSB2ZXJ0aWNhbENvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoXCJob3Jpem9udGFsQ29udGFpbmVyXCIsIHtzdGF0aWM6IGZhbHNlfSkgaG9yaXpvbnRhbENvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBwdWJsaWMgc2VjdGlvblNpemU6IG51bWJlcjtcclxuICAgIHB1YmxpYyBkcmFnZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGdyYWJiZXJPZmZzZXQgPSAwO1xyXG5cclxuICBwcml2YXRlIHZlcnRpY2FsVG91Y2hGdW5jdGlvbjogYW55O1xyXG4gIHByaXZhdGUgaG9yaXpvbnRhbFRvdWNoRnVuY3Rpb246IGFueTtcclxuICBwcml2YXRlIGVsZW1lbnRPYnNlcnZlcjogYW55O1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvblNpemUgPSB0aGlzLmluaXRpYWxQZXJjZW50YWdlO1xyXG5cclxuICAgICAgdGhpcy52ZXJ0aWNhbFRvdWNoRnVuY3Rpb24gPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xyXG4gICAgICAgICAgdGhpcy5ncmFiYmVyT2Zmc2V0ID0gKCgoIDIwIC8gdGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkgKiAxMDAgKSAvIDIpO1xyXG4gICAgICAgICAgdGhpcy5zZWN0aW9uU2l6ZSA9ICgodGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIChldmVudC50b3VjaGVzWzBdLnBhZ2VZIC0gdGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkpXHJcbiAgICAgICAgICAgIC8gKHRoaXMudmVydGljYWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHR0KSAqIDEwMCk7XHJcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5ob3Jpem9udGFsVG91Y2hGdW5jdGlvbiA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmdyYWJiZXJPZmZzZXQgPSAoKCggMTAgLyB0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkgKiAxMDAgKSAvIDIpO1xyXG4gICAgICAgICAgdGhpcy5zZWN0aW9uU2l6ZSA9ICgodGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSBldmVudC50b3VjaGVzWzBdLnBhZ2VYIC0gdGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdClcclxuICAgICAgICAgICAgLyAodGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpICogMTAwKTtcclxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgLy8gSGFuZGxlIGluaXRpYWxpemluZyBncmFiYmVyIHNpemUgZm9yIHdoZW4gZWxlbWVudHMgYXJlIGluaXRpYWxpemVkIGFzIGhpZGRlblxyXG4gICAgICAgIHRoaXMuZWxlbWVudE9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzLCBvYnNlcnZhYmxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBzdWJ0cmFjdCBoYWxmIHRoZSBncmFiYmVyIGhlaWdodC93aWR0aCAlIGZyb20gZWFjaCBzZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmlzVmVydGljYWxMYXlvdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyYWJiZXJPZmZzZXQgPSAoKCggMjAgLyB0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAqIDEwMCApIC8gMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JhYmJlck9mZnNldCA9ICgoKCAxMCAvIHRoaXMuaG9yaXpvbnRhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSAqIDEwMCApIC8gMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZhYmxlLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5pc1ZlcnRpY2FsTGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudE9ic2VydmVyLm9ic2VydmUodGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdGhpcy52ZXJ0aWNhbFRvdWNoRnVuY3Rpb24sIHsgcGFzc2l2ZTogZmFsc2UgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRoaXMuaG9yaXpvbnRhbFRvdWNoRnVuY3Rpb24sIHsgcGFzc2l2ZTogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDptb3VzZW1vdmVcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgbW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5pc1ZlcnRpY2FsTGF5b3V0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyYWJiZXJPZmZzZXQgPSAoKCggMjAgLyB0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAqIDEwMCApIC8gMik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25TaXplID0gKCh0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gKGV2ZW50LnBhZ2VZIC0gdGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkpXHJcbiAgICAgICAgICAgICAgICAgICAgLyAodGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkgKiAxMDApO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmFiYmVyT2Zmc2V0ID0gKCgoIDEwIC8gdGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpICogMTAwICkgLyAyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvblNpemUgPSAoKHRoaXMuaG9yaXpvbnRhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gZXZlbnQucGFnZVggIC0gdGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdClcclxuICAgICAgICAgICAgICAgICAgICAvICh0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkgKiAxMDApO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50Om1vdXNldXBcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OnRvdWNoZW5kXCIsIFtcIiRldmVudFwiXSlcclxuICAgIG1vdXNlVXAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICBpZih0aGlzLmlzVmVydGljYWxMYXlvdXQpIHtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0aGlzLnZlcnRpY2FsVG91Y2hGdW5jdGlvbik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdGhpcy5ob3Jpem9udGFsVG91Y2hGdW5jdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
152
+ `, styles: [".rad-grabber{cursor:ew-resize}.rad-grabber-vertical{cursor:ns-resize}\n"] }]
153
+ }], propDecorators: { initialPercentage: [{
154
+ type: Input
155
+ }], isVerticalLayout: [{
156
+ type: Input
157
+ }], maxPercentage: [{
158
+ type: Input
159
+ }], minPercentage: [{
160
+ type: Input
161
+ }], verticalContainer: [{
162
+ type: ViewChild,
163
+ args: ["verticalContainer", { static: false }]
164
+ }], horizontalContainer: [{
165
+ type: ViewChild,
166
+ args: ["horizontalContainer", { static: false }]
167
+ }], mouseMove: [{
168
+ type: HostListener,
169
+ args: ["document:mousemove", ["$event"]]
170
+ }], mouseUp: [{
171
+ type: HostListener,
172
+ args: ["document:mouseup", ["$event"]]
173
+ }, {
174
+ type: HostListener,
175
+ args: ["document:touchend", ["$event"]]
176
+ }] } });
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLXNlY3Rpb24tZGl2aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBvcnRpbmctZnJhbWV3b3JrL3NyYy9yZXNpemFibGUtZGl2aWRlci9yZXNpemFibGUtc2VjdGlvbi1kaXZpZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7OztBQTJDOUcsTUFBTSxPQUFPLGdDQUFnQztJQXpDN0M7UUEwQ0ksNEVBQTRFO1FBQ25FLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0Isa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFNN0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixrQkFBYSxHQUFHLENBQUMsQ0FBQztLQXdGNUI7SUFsRkcsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRTVDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5RixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENB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QUM7Z0JBb0I5QyxPQUFPO3NCQUZOLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUMzQyxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgVmlld0NoaWxkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJyZXNpemFibGUtc2VjdGlvbi1kaXZpZGVyXCIsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc1ZlcnRpY2FsTGF5b3V0XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlO1wiICN2ZXJ0aWNhbENvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLm1pbi1oZWlnaHQuJV09XCJtaW5QZXJjZW50YWdlXCIgW3N0eWxlLm1heC1oZWlnaHQuJV09XCJtYXhQZXJjZW50YWdlXCIgW3N0eWxlLmhlaWdodC4lXT1cIigxMDAgLSBzZWN0aW9uU2l6ZSAtIGdyYWJiZXJPZmZzZXQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9wU2VjdGlvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7IHdpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhZC1ncmFiYmVyLXZlcnRpY2FsXCIgKG1vdXNlZG93bik9XCJkcmFnZ2luZyA9IHRydWU7XCIgKHRvdWNoc3RhcnQpPVwiZHJhZ2dpbmcgPSB0cnVlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZ3JpcC1saW5lc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLm1pbi1oZWlnaHQuJV09XCJtaW5QZXJjZW50YWdlXCIgW3N0eWxlLm1heC1oZWlnaHQuJV09XCJtYXhQZXJjZW50YWdlXCIgW3N0eWxlLmhlaWdodC4lXT1cIihzZWN0aW9uU2l6ZSAtIGdyYWJiZXJPZmZzZXQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYm90dG9tU2VjdGlvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzVmVydGljYWxMYXlvdXRcIiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTtcIiAjaG9yaXpvbnRhbENvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMVwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiIFtzdHlsZS5taW4td2lkdGguJV09XCJtaW5QZXJjZW50YWdlXCIgW3N0eWxlLm1heC13aWR0aC4lXT1cIm1heFBlcmNlbnRhZ2VcIiBbc3R5bGUud2lkdGguJV09XCIoMTAwIC0gc2VjdGlvblNpemUgLSBncmFiYmVyT2Zmc2V0KVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xlZnRTZWN0aW9uXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBzdHlsZT1cIndpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkLWdyYWJiZXJcIiAobW91c2Vkb3duKT1cImRyYWdnaW5nID0gdHJ1ZTtcIiAodG91Y2hzdGFydCk9XCJkcmFnZ2luZyA9IHRydWU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1ncmlwLWxpbmVzLXZlcnRpY2FsXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0xXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCIgW3N0eWxlLm1pbi13aWR0aC4lXT1cIm1pblBlcmNlbnRhZ2VcIiBbc3R5bGUubWF4LXdpZHRoLiVdPVwibWF4UGVyY2VudGFnZVwiIFtzdHlsZS53aWR0aC4lXT1cInNlY3Rpb25TaXplIC0gZ3JhYmJlck9mZnNldFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3JpZ2h0U2VjdGlvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAucmFkLWdyYWJiZXIge1xyXG4gICAgICBjdXJzb3I6IGV3LXJlc2l6ZTtcclxuICAgIH1cclxuXHJcbiAgICAucmFkLWdyYWJiZXItdmVydGljYWwge1xyXG4gICAgICBjdXJzb3I6IG5zLXJlc2l6ZTtcclxuICAgIH1cclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlU2VjdGlvbkRpdmlkZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgLy8gU3RhcnRpbmcgd2lkdGggb3IgaGVpZ2h0ICUgZm9yIHRoZSByaWdodCAvIGJvdHRvbSBjb250YWluZXJzIHJlc3BlY3RpdmVseVxyXG4gICAgQElucHV0KCkgaW5pdGlhbFBlcmNlbnRhZ2U6IG51bWJlciA9IDUwO1xyXG4gICAgQElucHV0KCkgaXNWZXJ0aWNhbExheW91dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbWF4UGVyY2VudGFnZTogbnVtYmVyID0gOTA7XHJcbiAgICBASW5wdXQoKSBtaW5QZXJjZW50YWdlOiBudW1iZXIgPSAxMDtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwidmVydGljYWxDb250YWluZXJcIiwge3N0YXRpYzogZmFsc2V9KSB2ZXJ0aWNhbENvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoXCJob3Jpem9udGFsQ29udGFpbmVyXCIsIHtzdGF0aWM6IGZhbHNlfSkgaG9yaXpvbnRhbENvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBwdWJsaWMgc2VjdGlvblNpemU6IG51bWJlcjtcclxuICAgIHB1YmxpYyBkcmFnZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGdyYWJiZXJPZmZzZXQgPSAwO1xyXG5cclxuICBwcml2YXRlIHZlcnRpY2FsVG91Y2hGdW5jdGlvbjogYW55O1xyXG4gIHByaXZhdGUgaG9yaXpvbnRhbFRvdWNoRnVuY3Rpb246IGFueTtcclxuICBwcml2YXRlIGVsZW1lbnRPYnNlcnZlcjogYW55O1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvblNpemUgPSB0aGlzLmluaXRpYWxQZXJjZW50YWdlO1xyXG5cclxuICAgICAgdGhpcy52ZXJ0aWNhbFRvdWNoRnVuY3Rpb24gPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xyXG4gICAgICAgICAgdGhpcy5ncmFiYmVyT2Zmc2V0ID0gKCgoIDIwIC8gdGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkgKiAxMDAgKSAvIDIpO1xyXG4gICAgICAgICAgdGhpcy5zZWN0aW9uU2l6ZSA9ICgodGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIChldmVudC50b3VjaGVzWzBdLnBhZ2VZIC0gdGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkpXHJcbiAgICAgICAgICAgIC8gKHRoaXMudmVydGljYWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHR0KSAqIDEwMCk7XHJcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5ob3Jpem9udGFsVG91Y2hGdW5jdGlvbiA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmdyYWJiZXJPZmZzZXQgPSAoKCggMTAgLyB0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkgKiAxMDAgKSAvIDIpO1xyXG4gICAgICAgICAgdGhpcy5zZWN0aW9uU2l6ZSA9ICgodGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSBldmVudC50b3VjaGVzWzBdLnBhZ2VYIC0gdGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdClcclxuICAgICAgICAgICAgLyAodGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpICogMTAwKTtcclxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgLy8gSGFuZGxlIGluaXRpYWxpemluZyBncmFiYmVyIHNpemUgZm9yIHdoZW4gZWxlbWVudHMgYXJlIGluaXRpYWxpemVkIGFzIGhpZGRlblxyXG4gICAgICAgIHRoaXMuZWxlbWVudE9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzLCBvYnNlcnZhYmxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBzdWJ0cmFjdCBoYWxmIHRoZSBncmFiYmVyIGhlaWdodC93aWR0aCAlIGZyb20gZWFjaCBzZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmlzVmVydGljYWxMYXlvdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyYWJiZXJPZmZzZXQgPSAoKCggMjAgLyB0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAqIDEwMCApIC8gMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JhYmJlck9mZnNldCA9ICgoKCAxMCAvIHRoaXMuaG9yaXpvbnRhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSAqIDEwMCApIC8gMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZhYmxlLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5pc1ZlcnRpY2FsTGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudE9ic2VydmVyLm9ic2VydmUodGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdGhpcy52ZXJ0aWNhbFRvdWNoRnVuY3Rpb24sIHsgcGFzc2l2ZTogZmFsc2UgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRoaXMuaG9yaXpvbnRhbFRvdWNoRnVuY3Rpb24sIHsgcGFzc2l2ZTogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDptb3VzZW1vdmVcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgbW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5pc1ZlcnRpY2FsTGF5b3V0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyYWJiZXJPZmZzZXQgPSAoKCggMjAgLyB0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAqIDEwMCApIC8gMik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25TaXplID0gKCh0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gKGV2ZW50LnBhZ2VZIC0gdGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkpXHJcbiAgICAgICAgICAgICAgICAgICAgLyAodGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkgKiAxMDApO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmFiYmVyT2Zmc2V0ID0gKCgoIDEwIC8gdGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpICogMTAwICkgLyAyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvblNpemUgPSAoKHRoaXMuaG9yaXpvbnRhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gZXZlbnQucGFnZVggIC0gdGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdClcclxuICAgICAgICAgICAgICAgICAgICAvICh0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkgKiAxMDApO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50Om1vdXNldXBcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OnRvdWNoZW5kXCIsIFtcIiRldmVudFwiXSlcclxuICAgIG1vdXNlVXAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICBpZih0aGlzLmlzVmVydGljYWxMYXlvdXQpIHtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0aGlzLnZlcnRpY2FsVG91Y2hGdW5jdGlvbik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdGhpcy5ob3Jpem9udGFsVG91Y2hGdW5jdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
@@ -1,99 +1,99 @@
1
- import { Injectable } from "@angular/core";
2
- import { MatLegacyDialog as MatDialog, MatLegacyDialogConfig as MatDialogConfig } from "@angular/material/legacy-dialog";
3
- import { SpinnerDialogComponent } from "./spinner-dialog.component";
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/legacy-dialog";
6
- export var DialogType;
7
- (function (DialogType) {
8
- DialogType["ERROR"] = "Error";
9
- DialogType["WARNING"] = "Warning";
10
- DialogType["ALERT"] = "Alert";
11
- DialogType["SUCCESS"] = "Succeed";
12
- DialogType["FAILED"] = "Failed";
13
- DialogType["CONFIRM"] = "Confirm";
14
- DialogType["INFO"] = "Info";
15
- DialogType["VALIDATION"] = "Validation Error";
16
- })(DialogType || (DialogType = {}));
17
- export class DialogsService {
18
- get spinnerDialogIsOpen() {
19
- return this._spinnerDialogIsOpen;
20
- }
21
- constructor(dialog) {
22
- this.dialog = dialog;
23
- this._spinnerDialogIsOpen = false;
24
- this.spinnerWorkItemCount = 0;
25
- this.checkingSpinnerWorkItems = false;
26
- this.spinnerDialogRefs = [];
27
- }
28
- startDefaultSpinnerDialog() {
29
- return this.startSpinnerDialog("Please wait...", 3, 30);
30
- }
31
- startSpinnerDialog(message, strokeWidth, diameter) {
32
- if (this._spinnerDialogIsOpen) {
33
- return null;
34
- }
35
- this._spinnerDialogIsOpen = true;
36
- let configuration = new MatDialogConfig();
37
- configuration.data = {
38
- message: message,
39
- strokeWidth: strokeWidth,
40
- diameter: diameter
41
- };
42
- configuration.width = "13em";
43
- configuration.disableClose = true;
44
- let dialogRef = this.dialog.open(SpinnerDialogComponent, configuration);
45
- dialogRef.afterClosed().subscribe(() => {
46
- this._spinnerDialogIsOpen = false;
47
- });
48
- this.spinnerDialogRefs.push(dialogRef);
49
- return dialogRef;
50
- }
51
- // Let there be an alternative, global way to stop all active spinner dialogs.
52
- stopAllSpinnerDialogs() {
53
- this.spinnerWorkItemCount = 0;
54
- for (let dialogRef of this.spinnerDialogRefs) {
55
- setTimeout(() => {
56
- dialogRef.close();
57
- });
58
- }
59
- this.spinnerDialogRefs = [];
60
- }
61
- addSpinnerWorkItem() {
62
- this.spinnerWorkItemCount++;
63
- if (!this.checkingSpinnerWorkItems) {
64
- this.checkingSpinnerWorkItems = true;
65
- setTimeout(() => {
66
- this.checkSpinnerWorkItems();
67
- });
68
- }
69
- }
70
- removeSpinnerWorkItem() {
71
- this.spinnerWorkItemCount--;
72
- if (this.spinnerWorkItemCount < 0) {
73
- this.spinnerWorkItemCount = 0;
74
- }
75
- if (!this.checkingSpinnerWorkItems) {
76
- this.checkingSpinnerWorkItems = true;
77
- setTimeout(() => {
78
- this.checkSpinnerWorkItems();
79
- });
80
- }
81
- }
82
- checkSpinnerWorkItems() {
83
- this.checkingSpinnerWorkItems = false;
84
- if (this.spinnerWorkItemCount) {
85
- if (!this._spinnerDialogIsOpen) {
86
- this.startDefaultSpinnerDialog();
87
- }
88
- }
89
- else if (this._spinnerDialogIsOpen) {
90
- this.stopAllSpinnerDialogs();
91
- }
92
- }
93
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogsService, deps: [{ token: i1.MatLegacyDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
94
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogsService }); }
95
- }
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogsService, decorators: [{
97
- type: Injectable
98
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialog }]; } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0aW5nLWZyYW1ld29yay9zcmMvc3Bpbm5lci9kaWFsb2dzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQXNDLGVBQWUsSUFBSSxTQUFTLEVBQUUscUJBQXFCLElBQUksZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFN0osT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUVwRSxNQUFNLENBQU4sSUFBWSxVQVNYO0FBVEQsV0FBWSxVQUFVO0lBQ2xCLDZCQUFlLENBQUE7SUFDZixpQ0FBbUIsQ0FBQTtJQUNuQiw2QkFBZSxDQUFBO0lBQ2YsaUNBQW1CLENBQUE7SUFDbkIsK0JBQWlCLENBQUE7SUFDakIsaUNBQW1CLENBQUE7SUFDbkIsMkJBQWEsQ0FBQTtJQUNiLDZDQUErQixDQUFBO0FBQ25DLENBQUMsRUFUVyxVQUFVLEtBQVYsVUFBVSxRQVNyQjtBQUdELE1BQU0sT0FBTyxjQUFjO0lBUXZCLElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxZQUFvQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBVjdCLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUN0Qyx5QkFBb0IsR0FBVyxDQUFDLENBQUM7UUFDakMsNkJBQXdCLEdBQVksS0FBSyxDQUFDO1FBRTNDLHNCQUFpQixHQUEyQyxFQUFFLENBQUM7SUFPdEUsQ0FBQztJQUVNLHlCQUF5QjtRQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLGtCQUFrQixDQUFDLE9BQWUsRUFBRSxXQUFtQixFQUFFLFFBQWdCO1FBQzVFLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRWpDLElBQUksYUFBYSxHQUFvQixJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzNELGFBQWEsQ0FBQyxJQUFJLEdBQUc7WUFDakIsT0FBTyxFQUFFLE9BQU87WUFDaEIsV0FBVyxFQUFFLFdBQVc7WUFDeEIsUUFBUSxFQUFFLFFBQVE7U0FDckIsQ0FBQztRQUNGLGFBQWEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQzdCLGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRWxDLElBQUksU0FBUyxHQUF5QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUU5RyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2QyxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsOEVBQThFO0lBQ3ZFLHFCQUFxQjtRQUN4QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLEtBQUssSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxrQkFBa0I7UUFDckIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNoQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1lBQ3JDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTSxxQkFBcUI7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQ2hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7WUFDckMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVPLHFCQUFxQjtRQUN6QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2FBQ3BDO1NBQ0o7YUFBTSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUNsQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUNoQztJQUNMLENBQUM7K0dBekZRLGNBQWM7bUhBQWQsY0FBYzs7NEZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgVGVtcGxhdGVSZWZ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZ1JlZiBhcyBNYXREaWFsb2dSZWYsIE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2csIE1hdExlZ2FjeURpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZ1wiO1xyXG5cclxuaW1wb3J0IHsgU3Bpbm5lckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCIuL3NwaW5uZXItZGlhbG9nLmNvbXBvbmVudFwiO1xyXG5cclxuZXhwb3J0IGVudW0gRGlhbG9nVHlwZSB7XHJcbiAgICBFUlJPUiA9IFwiRXJyb3JcIixcclxuICAgIFdBUk5JTkcgPSBcIldhcm5pbmdcIixcclxuICAgIEFMRVJUID0gXCJBbGVydFwiLFxyXG4gICAgU1VDQ0VTUyA9IFwiU3VjY2VlZFwiLFxyXG4gICAgRkFJTEVEID0gXCJGYWlsZWRcIixcclxuICAgIENPTkZJUk0gPSBcIkNvbmZpcm1cIixcclxuICAgIElORk8gPSBcIkluZm9cIixcclxuICAgIFZBTElEQVRJT04gPSBcIlZhbGlkYXRpb24gRXJyb3JcIixcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nc1NlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgX3NwaW5uZXJEaWFsb2dJc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgc3Bpbm5lcldvcmtJdGVtQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgICBwcml2YXRlIGNoZWNraW5nU3Bpbm5lcldvcmtJdGVtczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBzcGlubmVyRGlhbG9nUmVmczogTWF0RGlhbG9nUmVmPFNwaW5uZXJEaWFsb2dDb21wb25lbnQ+W10gPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IHNwaW5uZXJEaWFsb2dJc09wZW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGFydERlZmF1bHRTcGlubmVyRGlhbG9nKCk6IE1hdERpYWxvZ1JlZjxTcGlubmVyRGlhbG9nQ29tcG9uZW50PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRTcGlubmVyRGlhbG9nKFwiUGxlYXNlIHdhaXQuLi5cIiwgMywgMzApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGFydFNwaW5uZXJEaWFsb2cobWVzc2FnZTogc3RyaW5nLCBzdHJva2VXaWR0aDogbnVtYmVyLCBkaWFtZXRlcjogbnVtYmVyKTogTWF0RGlhbG9nUmVmPFNwaW5uZXJEaWFsb2dDb21wb25lbnQ+IHtcclxuICAgICAgICBpZiAodGhpcy5fc3Bpbm5lckRpYWxvZ0lzT3Blbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW4gPSB0cnVlO1xyXG5cclxuICAgICAgICBsZXQgY29uZmlndXJhdGlvbjogTWF0RGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24uZGF0YSA9IHtcclxuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IHN0cm9rZVdpZHRoLFxyXG4gICAgICAgICAgICBkaWFtZXRlcjogZGlhbWV0ZXJcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24ud2lkdGggPSBcIjEzZW1cIjtcclxuICAgICAgICBjb25maWd1cmF0aW9uLmRpc2FibGVDbG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIGxldCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTcGlubmVyRGlhbG9nQ29tcG9uZW50PiA9IHRoaXMuZGlhbG9nLm9wZW4oU3Bpbm5lckRpYWxvZ0NvbXBvbmVudCwgY29uZmlndXJhdGlvbik7XHJcblxyXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW4gPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zcGlubmVyRGlhbG9nUmVmcy5wdXNoKGRpYWxvZ1JlZik7XHJcblxyXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTGV0IHRoZXJlIGJlIGFuIGFsdGVybmF0aXZlLCBnbG9iYWwgd2F5IHRvIHN0b3AgYWxsIGFjdGl2ZSBzcGlubmVyIGRpYWxvZ3MuXHJcbiAgICBwdWJsaWMgc3RvcEFsbFNwaW5uZXJEaWFsb2dzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lcldvcmtJdGVtQ291bnQgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGRpYWxvZ1JlZiBvZiB0aGlzLnNwaW5uZXJEaWFsb2dSZWZzKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNwaW5uZXJEaWFsb2dSZWZzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFNwaW5uZXJXb3JrSXRlbSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJXb3JrSXRlbUNvdW50Kys7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNraW5nU3Bpbm5lcldvcmtJdGVtcykge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNraW5nU3Bpbm5lcldvcmtJdGVtcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja1NwaW5uZXJXb3JrSXRlbXMoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVTcGlubmVyV29ya0l0ZW0oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyV29ya0l0ZW1Db3VudC0tO1xyXG4gICAgICAgIGlmICh0aGlzLnNwaW5uZXJXb3JrSXRlbUNvdW50IDwgMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNwaW5uZXJXb3JrSXRlbUNvdW50ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNraW5nU3Bpbm5lcldvcmtJdGVtcykge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNraW5nU3Bpbm5lcldvcmtJdGVtcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja1NwaW5uZXJXb3JrSXRlbXMoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tTcGlubmVyV29ya0l0ZW1zKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2hlY2tpbmdTcGlubmVyV29ya0l0ZW1zID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuc3Bpbm5lcldvcmtJdGVtQ291bnQpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9zcGlubmVyRGlhbG9nSXNPcGVuKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0RGVmYXVsdFNwaW5uZXJEaWFsb2coKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc3Bpbm5lckRpYWxvZ0lzT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3BBbGxTcGlubmVyRGlhbG9ncygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
1
+ import { Injectable } from "@angular/core";
2
+ import { MatLegacyDialog as MatDialog, MatLegacyDialogConfig as MatDialogConfig } from "@angular/material/legacy-dialog";
3
+ import { SpinnerDialogComponent } from "./spinner-dialog.component";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/legacy-dialog";
6
+ export var DialogType;
7
+ (function (DialogType) {
8
+ DialogType["ERROR"] = "Error";
9
+ DialogType["WARNING"] = "Warning";
10
+ DialogType["ALERT"] = "Alert";
11
+ DialogType["SUCCESS"] = "Succeed";
12
+ DialogType["FAILED"] = "Failed";
13
+ DialogType["CONFIRM"] = "Confirm";
14
+ DialogType["INFO"] = "Info";
15
+ DialogType["VALIDATION"] = "Validation Error";
16
+ })(DialogType || (DialogType = {}));
17
+ export class DialogsService {
18
+ get spinnerDialogIsOpen() {
19
+ return this._spinnerDialogIsOpen;
20
+ }
21
+ constructor(dialog) {
22
+ this.dialog = dialog;
23
+ this._spinnerDialogIsOpen = false;
24
+ this.spinnerWorkItemCount = 0;
25
+ this.checkingSpinnerWorkItems = false;
26
+ this.spinnerDialogRefs = [];
27
+ }
28
+ startDefaultSpinnerDialog() {
29
+ return this.startSpinnerDialog("Please wait...", 3, 30);
30
+ }
31
+ startSpinnerDialog(message, strokeWidth, diameter) {
32
+ if (this._spinnerDialogIsOpen) {
33
+ return null;
34
+ }
35
+ this._spinnerDialogIsOpen = true;
36
+ let configuration = new MatDialogConfig();
37
+ configuration.data = {
38
+ message: message,
39
+ strokeWidth: strokeWidth,
40
+ diameter: diameter
41
+ };
42
+ configuration.width = "13em";
43
+ configuration.disableClose = true;
44
+ let dialogRef = this.dialog.open(SpinnerDialogComponent, configuration);
45
+ dialogRef.afterClosed().subscribe(() => {
46
+ this._spinnerDialogIsOpen = false;
47
+ });
48
+ this.spinnerDialogRefs.push(dialogRef);
49
+ return dialogRef;
50
+ }
51
+ // Let there be an alternative, global way to stop all active spinner dialogs.
52
+ stopAllSpinnerDialogs() {
53
+ this.spinnerWorkItemCount = 0;
54
+ for (let dialogRef of this.spinnerDialogRefs) {
55
+ setTimeout(() => {
56
+ dialogRef.close();
57
+ });
58
+ }
59
+ this.spinnerDialogRefs = [];
60
+ }
61
+ addSpinnerWorkItem() {
62
+ this.spinnerWorkItemCount++;
63
+ if (!this.checkingSpinnerWorkItems) {
64
+ this.checkingSpinnerWorkItems = true;
65
+ setTimeout(() => {
66
+ this.checkSpinnerWorkItems();
67
+ });
68
+ }
69
+ }
70
+ removeSpinnerWorkItem() {
71
+ this.spinnerWorkItemCount--;
72
+ if (this.spinnerWorkItemCount < 0) {
73
+ this.spinnerWorkItemCount = 0;
74
+ }
75
+ if (!this.checkingSpinnerWorkItems) {
76
+ this.checkingSpinnerWorkItems = true;
77
+ setTimeout(() => {
78
+ this.checkSpinnerWorkItems();
79
+ });
80
+ }
81
+ }
82
+ checkSpinnerWorkItems() {
83
+ this.checkingSpinnerWorkItems = false;
84
+ if (this.spinnerWorkItemCount) {
85
+ if (!this._spinnerDialogIsOpen) {
86
+ this.startDefaultSpinnerDialog();
87
+ }
88
+ }
89
+ else if (this._spinnerDialogIsOpen) {
90
+ this.stopAllSpinnerDialogs();
91
+ }
92
+ }
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DialogsService, deps: [{ token: i1.MatLegacyDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
94
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DialogsService }); }
95
+ }
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DialogsService, decorators: [{
97
+ type: Injectable
98
+ }], ctorParameters: () => [{ type: i1.MatLegacyDialog }] });
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0aW5nLWZyYW1ld29yay9zcmMvc3Bpbm5lci9kaWFsb2dzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQXNDLGVBQWUsSUFBSSxTQUFTLEVBQUUscUJBQXFCLElBQUksZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFN0osT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUVwRSxNQUFNLENBQU4sSUFBWSxVQVNYO0FBVEQsV0FBWSxVQUFVO0lBQ2xCLDZCQUFlLENBQUE7SUFDZixpQ0FBbUIsQ0FBQTtJQUNuQiw2QkFBZSxDQUFBO0lBQ2YsaUNBQW1CLENBQUE7SUFDbkIsK0JBQWlCLENBQUE7SUFDakIsaUNBQW1CLENBQUE7SUFDbkIsMkJBQWEsQ0FBQTtJQUNiLDZDQUErQixDQUFBO0FBQ25DLENBQUMsRUFUVyxVQUFVLEtBQVYsVUFBVSxRQVNyQjtBQUdELE1BQU0sT0FBTyxjQUFjO0lBUXZCLElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxZQUFvQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBVjdCLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUN0Qyx5QkFBb0IsR0FBVyxDQUFDLENBQUM7UUFDakMsNkJBQXdCLEdBQVksS0FBSyxDQUFDO1FBRTNDLHNCQUFpQixHQUEyQyxFQUFFLENBQUM7SUFPdEUsQ0FBQztJQUVNLHlCQUF5QjtRQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLGtCQUFrQixD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IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZ1JlZiBhcyBNYXREaWFsb2dSZWYsIE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2csIE1hdExlZ2FjeURpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZ1wiO1xyXG5cclxuaW1wb3J0IHsgU3Bpbm5lckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCIuL3NwaW5uZXItZGlhbG9nLmNvbXBvbmVudFwiO1xyXG5cclxuZXhwb3J0IGVudW0gRGlhbG9nVHlwZSB7XHJcbiAgICBFUlJPUiA9IFwiRXJyb3JcIixcclxuICAgIFdBUk5JTkcgPSBcIldhcm5pbmdcIixcclxuICAgIEFMRVJUID0gXCJBbGVydFwiLFxyXG4gICAgU1VDQ0VTUyA9IFwiU3VjY2VlZFwiLFxyXG4gICAgRkFJTEVEID0gXCJGYWlsZWRcIixcclxuICAgIENPTkZJUk0gPSBcIkNvbmZpcm1cIixcclxuICAgIElORk8gPSBcIkluZm9cIixcclxuICAgIFZBTElEQVRJT04gPSBcIlZhbGlkYXRpb24gRXJyb3JcIixcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nc1NlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgX3NwaW5uZXJEaWFsb2dJc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgc3Bpbm5lcldvcmtJdGVtQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgICBwcml2YXRlIGNoZWNraW5nU3Bpbm5lcldvcmtJdGVtczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBzcGlubmVyRGlhbG9nUmVmczogTWF0RGlhbG9nUmVmPFNwaW5uZXJEaWFsb2dDb21wb25lbnQ+W10gPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IHNwaW5uZXJEaWFsb2dJc09wZW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGFydERlZmF1bHRTcGlubmVyRGlhbG9nKCk6IE1hdERpYWxvZ1JlZjxTcGlubmVyRGlhbG9nQ29tcG9uZW50PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRTcGlubmVyRGlhbG9nKFwiUGxlYXNlIHdhaXQuLi5cIiwgMywgMzApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGFydFNwaW5uZXJEaWFsb2cobWVzc2FnZTogc3RyaW5nLCBzdHJva2VXaWR0aDogbnVtYmVyLCBkaWFtZXRlcjogbnVtYmVyKTogTWF0RGlhbG9nUmVmPFNwaW5uZXJEaWFsb2dDb21wb25lbnQ+IHtcclxuICAgICAgICBpZiAodGhpcy5fc3Bpbm5lckRpYWxvZ0lzT3Blbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW4gPSB0cnVlO1xyXG5cclxuICAgICAgICBsZXQgY29uZmlndXJhdGlvbjogTWF0RGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24uZGF0YSA9IHtcclxuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IHN0cm9rZVdpZHRoLFxyXG4gICAgICAgICAgICBkaWFtZXRlcjogZGlhbWV0ZXJcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24ud2lkdGggPSBcIjEzZW1cIjtcclxuICAgICAgICBjb25maWd1cmF0aW9uLmRpc2FibGVDbG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIGxldCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTcGlubmVyRGlhbG9nQ29tcG9uZW50PiA9IHRoaXMuZGlhbG9nLm9wZW4oU3Bpbm5lckRpYWxvZ0NvbXBvbmVudCwgY29uZmlndXJhdGlvbik7XHJcblxyXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW4gPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zcGlubmVyRGlhbG9nUmVmcy5wdXNoKGRpYWxvZ1JlZik7XHJcblxyXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTGV0IHRoZXJlIGJlIGFuIGFsdGVybmF0aXZlLCBnbG9iYWwgd2F5IHRvIHN0b3AgYWxsIGFjdGl2ZSBzcGlubmVyIGRpYWxvZ3MuXHJcbiAgICBwdWJsaWMgc3RvcEFsbFNwaW5uZXJEaWFsb2dzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lcldvcmtJdGVtQ291bnQgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGRpYWxvZ1JlZiBvZiB0aGlzLnNwaW5uZXJEaWFsb2dSZWZzKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNwaW5uZXJEaWFsb2dSZWZzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFNwaW5uZXJXb3JrSXRlbSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJXb3JrSXRlbUNvdW50Kys7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNraW5nU3Bpbm5lcldvcmtJdGVtcykge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNraW5nU3Bpbm5lcldvcmtJdGVtcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja1NwaW5uZXJXb3JrSXRlbXMoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVTcGlubmVyV29ya0l0ZW0oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyV29ya0l0ZW1Db3VudC0tO1xyXG4gICAgICAgIGlmICh0aGlzLnNwaW5uZXJXb3JrSXRlbUNvdW50IDwgMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNwaW5uZXJXb3JrSXRlbUNvdW50ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNraW5nU3Bpbm5lcldvcmtJdGVtcykge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNraW5nU3Bpbm5lcldvcmtJdGVtcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja1NwaW5uZXJXb3JrSXRlbXMoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tTcGlubmVyV29ya0l0ZW1zKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2hlY2tpbmdTcGlubmVyV29ya0l0ZW1zID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuc3Bpbm5lcldvcmtJdGVtQ291bnQpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9zcGlubmVyRGlhbG9nSXNPcGVuKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0RGVmYXVsdFNwaW5uZXJEaWFsb2coKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc3Bpbm5lckRpYWxvZ0lzT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3BBbGxTcGlubmVyRGlhbG9ncygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19