@huntsman-cancer-institute/reporting-framework 16.0.1 → 16.1.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.
|
@@ -96,7 +96,7 @@ export class ResizableSectionDividerComponent {
|
|
|
96
96
|
</div>
|
|
97
97
|
<div class="d-flex align-items-center justify-content-center" style="height: 20px; width: 100%;">
|
|
98
98
|
<div class="rad-grabber-vertical" (mousedown)="dragging = true;" (touchstart)="dragging = true;">
|
|
99
|
-
<i class="
|
|
99
|
+
<i class="fas fa-grip-lines"></i>
|
|
100
100
|
</div>
|
|
101
101
|
</div>
|
|
102
102
|
<div class="p-1" style="width: 100%;" [style.min-height.%]="minPercentage" [style.max-height.%]="maxPercentage" [style.height.%]="(sectionSize - grabberOffset)">
|
|
@@ -110,7 +110,7 @@ export class ResizableSectionDividerComponent {
|
|
|
110
110
|
</div>
|
|
111
111
|
<div class="d-flex align-items-center justify-content-center" style="width: 10px; height: 100%;">
|
|
112
112
|
<div class="rad-grabber" (mousedown)="dragging = true;" (touchstart)="dragging = true;">
|
|
113
|
-
<i class="
|
|
113
|
+
<i class="fas fa-grip-lines-vertical"></i>
|
|
114
114
|
</div>
|
|
115
115
|
</div>
|
|
116
116
|
<div class="p-1" style="height: 100%;" [style.min-width.%]="minPercentage" [style.max-width.%]="maxPercentage" [style.width.%]="sectionSize - grabberOffset">
|
|
@@ -128,7 +128,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
128
128
|
</div>
|
|
129
129
|
<div class="d-flex align-items-center justify-content-center" style="height: 20px; width: 100%;">
|
|
130
130
|
<div class="rad-grabber-vertical" (mousedown)="dragging = true;" (touchstart)="dragging = true;">
|
|
131
|
-
<i class="
|
|
131
|
+
<i class="fas fa-grip-lines"></i>
|
|
132
132
|
</div>
|
|
133
133
|
</div>
|
|
134
134
|
<div class="p-1" style="width: 100%;" [style.min-height.%]="minPercentage" [style.max-height.%]="maxPercentage" [style.height.%]="(sectionSize - grabberOffset)">
|
|
@@ -142,7 +142,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
142
142
|
</div>
|
|
143
143
|
<div class="d-flex align-items-center justify-content-center" style="width: 10px; height: 100%;">
|
|
144
144
|
<div class="rad-grabber" (mousedown)="dragging = true;" (touchstart)="dragging = true;">
|
|
145
|
-
<i class="
|
|
145
|
+
<i class="fas fa-grip-lines-vertical"></i>
|
|
146
146
|
</div>
|
|
147
147
|
</div>
|
|
148
148
|
<div class="p-1" style="height: 100%;" [style.min-width.%]="minPercentage" [style.max-width.%]="maxPercentage" [style.width.%]="sectionSize - grabberOffset">
|
|
@@ -174,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
174
174
|
type: HostListener,
|
|
175
175
|
args: ["document:touchend", ["$event"]]
|
|
176
176
|
}] } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLXNlY3Rpb24tZGl2aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBvcnRpbmctZnJhbWV3b3JrL3NyYy9yZXNpemFibGUtZGl2aWRlci9yZXNpemFibGUtc2VjdGlvbi1kaXZpZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7OztBQTJDOUcsTUFBTSxPQUFPLGdDQUFnQztJQXpDN0M7UUEwQ0ksNEVBQTRFO1FBQ25FLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0Isa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFNN0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixrQkFBYSxHQUFHLENBQUMsQ0FBQztLQXdGNUI7SUFsRkcsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRTVDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDOUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtB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IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgVmlld0NoaWxkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJyZXNpemFibGUtc2VjdGlvbi1kaXZpZGVyXCIsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc1ZlcnRpY2FsTGF5b3V0XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlO1wiICN2ZXJ0aWNhbENvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLm1pbi1oZWlnaHQuJV09XCJtaW5QZXJjZW50YWdlXCIgW3N0eWxlLm1heC1oZWlnaHQuJV09XCJtYXhQZXJjZW50YWdlXCIgW3N0eWxlLmhlaWdodC4lXT1cIigxMDAgLSBzZWN0aW9uU2l6ZSAtIGdyYWJiZXJPZmZzZXQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9wU2VjdGlvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7IHdpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhZC1ncmFiYmVyLXZlcnRpY2FsXCIgKG1vdXNlZG93bik9XCJkcmFnZ2luZyA9IHRydWU7XCIgKHRvdWNoc3RhcnQpPVwiZHJhZ2dpbmcgPSB0cnVlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZ3JpcC1saW5lc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLm1pbi1oZWlnaHQuJV09XCJtaW5QZXJjZW50YWdlXCIgW3N0eWxlLm1heC1oZWlnaHQuJV09XCJtYXhQZXJjZW50YWdlXCIgW3N0eWxlLmhlaWdodC4lXT1cIihzZWN0aW9uU2l6ZSAtIGdyYWJiZXJPZmZzZXQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYm90dG9tU2VjdGlvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzVmVydGljYWxMYXlvdXRcIiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTtcIiAjaG9yaXpvbnRhbENvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMVwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiIFtzdHlsZS5taW4td2lkdGguJV09XCJtaW5QZXJjZW50YWdlXCIgW3N0eWxlLm1heC13aWR0aC4lXT1cIm1heFBlcmNlbnRhZ2VcIiBbc3R5bGUud2lkdGguJV09XCIoMTAwIC0gc2VjdGlvblNpemUgLSBncmFiYmVyT2Zmc2V0KVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xlZnRTZWN0aW9uXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBzdHlsZT1cIndpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkLWdyYWJiZXJcIiAobW91c2Vkb3duKT1cImRyYWdnaW5nID0gdHJ1ZTtcIiAodG91Y2hzdGFydCk9XCJkcmFnZ2luZyA9IHRydWU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1ncmlwLWxpbmVzLXZlcnRpY2FsXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0xXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCIgW3N0eWxlLm1pbi13aWR0aC4lXT1cIm1pblBlcmNlbnRhZ2VcIiBbc3R5bGUubWF4LXdpZHRoLiVdPVwibWF4UGVyY2VudGFnZVwiIFtzdHlsZS53aWR0aC4lXT1cInNlY3Rpb25TaXplIC0gZ3JhYmJlck9mZnNldFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3JpZ2h0U2VjdGlvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAucmFkLWdyYWJiZXIge1xyXG4gICAgICBjdXJzb3I6IGV3LXJlc2l6ZTtcclxuICAgIH1cclxuXHJcbiAgICAucmFkLWdyYWJiZXItdmVydGljYWwge1xyXG4gICAgICBjdXJzb3I6IG5zLXJlc2l6ZTtcclxuICAgIH1cclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlU2VjdGlvbkRpdmlkZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgLy8gU3RhcnRpbmcgd2lkdGggb3IgaGVpZ2h0ICUgZm9yIHRoZSByaWdodCAvIGJvdHRvbSBjb250YWluZXJzIHJlc3BlY3RpdmVseVxyXG4gICAgQElucHV0KCkgaW5pdGlhbFBlcmNlbnRhZ2U6IG51bWJlciA9IDUwO1xyXG4gICAgQElucHV0KCkgaXNWZXJ0aWNhbExheW91dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbWF4UGVyY2VudGFnZTogbnVtYmVyID0gOTA7XHJcbiAgICBASW5wdXQoKSBtaW5QZXJjZW50YWdlOiBudW1iZXIgPSAxMDtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwidmVydGljYWxDb250YWluZXJcIiwge3N0YXRpYzogZmFsc2V9KSB2ZXJ0aWNhbENvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoXCJob3Jpem9udGFsQ29udGFpbmVyXCIsIHtzdGF0aWM6IGZhbHNlfSkgaG9yaXpvbnRhbENvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBwdWJsaWMgc2VjdGlvblNpemU6IG51bWJlcjtcclxuICAgIHB1YmxpYyBkcmFnZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGdyYWJiZXJPZmZzZXQgPSAwO1xyXG5cclxuICBwcml2YXRlIHZlcnRpY2FsVG91Y2hGdW5jdGlvbjogYW55O1xyXG4gIHByaXZhdGUgaG9yaXpvbnRhbFRvdWNoRnVuY3Rpb246IGFueTtcclxuICBwcml2YXRlIGVsZW1lbnRPYnNlcnZlcjogYW55O1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvblNpemUgPSB0aGlzLmluaXRpYWxQZXJjZW50YWdlO1xyXG5cclxuICAgICAgdGhpcy52ZXJ0aWNhbFRvdWNoRnVuY3Rpb24gPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xyXG4gICAgICAgICAgdGhpcy5ncmFiYmVyT2Zmc2V0ID0gKCgoIDIwIC8gdGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkgKiAxMDAgKSAvIDIpO1xyXG4gICAgICAgICAgdGhpcy5zZWN0aW9uU2l6ZSA9ICgodGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIChldmVudC50b3VjaGVzWzBdLnBhZ2VZIC0gdGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkpXHJcbiAgICAgICAgICAgIC8gKHRoaXMudmVydGljYWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHR0KSAqIDEwMCk7XHJcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5ob3Jpem9udGFsVG91Y2hGdW5jdGlvbiA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmdyYWJiZXJPZmZzZXQgPSAoKCggMTAgLyB0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkgKiAxMDAgKSAvIDIpO1xyXG4gICAgICAgICAgdGhpcy5zZWN0aW9uU2l6ZSA9ICgodGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSBldmVudC50b3VjaGVzWzBdLnBhZ2VYIC0gdGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdClcclxuICAgICAgICAgICAgLyAodGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpICogMTAwKTtcclxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgLy8gSGFuZGxlIGluaXRpYWxpemluZyBncmFiYmVyIHNpemUgZm9yIHdoZW4gZWxlbWVudHMgYXJlIGluaXRpYWxpemVkIGFzIGhpZGRlblxyXG4gICAgICAgIHRoaXMuZWxlbWVudE9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzLCBvYnNlcnZhYmxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBzdWJ0cmFjdCBoYWxmIHRoZSBncmFiYmVyIGhlaWdodC93aWR0aCAlIGZyb20gZWFjaCBzZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmlzVmVydGljYWxMYXlvdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyYWJiZXJPZmZzZXQgPSAoKCggMjAgLyB0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAqIDEwMCApIC8gMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JhYmJlck9mZnNldCA9ICgoKCAxMCAvIHRoaXMuaG9yaXpvbnRhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSAqIDEwMCApIC8gMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZhYmxlLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5pc1ZlcnRpY2FsTGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudE9ic2VydmVyLm9ic2VydmUodGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdGhpcy52ZXJ0aWNhbFRvdWNoRnVuY3Rpb24sIHsgcGFzc2l2ZTogZmFsc2UgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRoaXMuaG9yaXpvbnRhbFRvdWNoRnVuY3Rpb24sIHsgcGFzc2l2ZTogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDptb3VzZW1vdmVcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgbW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5pc1ZlcnRpY2FsTGF5b3V0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyYWJiZXJPZmZzZXQgPSAoKCggMjAgLyB0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAqIDEwMCApIC8gMik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25TaXplID0gKCh0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gKGV2ZW50LnBhZ2VZIC0gdGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkpXHJcbiAgICAgICAgICAgICAgICAgICAgLyAodGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkgKiAxMDApO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmFiYmVyT2Zmc2V0ID0gKCgoIDEwIC8gdGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpICogMTAwICkgLyAyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvblNpemUgPSAoKHRoaXMuaG9yaXpvbnRhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gZXZlbnQucGFnZVggIC0gdGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdClcclxuICAgICAgICAgICAgICAgICAgICAvICh0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkgKiAxMDApO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50Om1vdXNldXBcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OnRvdWNoZW5kXCIsIFtcIiRldmVudFwiXSlcclxuICAgIG1vdXNlVXAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICBpZih0aGlzLmlzVmVydGljYWxMYXlvdXQpIHtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0aGlzLnZlcnRpY2FsVG91Y2hGdW5jdGlvbik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdGhpcy5ob3Jpem9udGFsVG91Y2hGdW5jdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLXNlY3Rpb24tZGl2aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBvcnRpbmctZnJhbWV3b3JrL3NyYy9yZXNpemFibGUtZGl2aWRlci9yZXNpemFibGUtc2VjdGlvbi1kaXZpZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7OztBQTJDOUcsTUFBTSxPQUFPLGdDQUFnQztJQXpDN0M7UUEwQ0ksNEVBQTRFO1FBQ25FLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0Isa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFNN0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixrQkFBYSxHQUFHLENBQUMsQ0FBQztLQXdGNUI7SUFsRkcsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRTVDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDOUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtB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IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgVmlld0NoaWxkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJyZXNpemFibGUtc2VjdGlvbi1kaXZpZGVyXCIsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc1ZlcnRpY2FsTGF5b3V0XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlO1wiICN2ZXJ0aWNhbENvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLm1pbi1oZWlnaHQuJV09XCJtaW5QZXJjZW50YWdlXCIgW3N0eWxlLm1heC1oZWlnaHQuJV09XCJtYXhQZXJjZW50YWdlXCIgW3N0eWxlLmhlaWdodC4lXT1cIigxMDAgLSBzZWN0aW9uU2l6ZSAtIGdyYWJiZXJPZmZzZXQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9wU2VjdGlvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7IHdpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhZC1ncmFiYmVyLXZlcnRpY2FsXCIgKG1vdXNlZG93bik9XCJkcmFnZ2luZyA9IHRydWU7XCIgKHRvdWNoc3RhcnQpPVwiZHJhZ2dpbmcgPSB0cnVlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWdyaXAtbGluZXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTFcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5taW4taGVpZ2h0LiVdPVwibWluUGVyY2VudGFnZVwiIFtzdHlsZS5tYXgtaGVpZ2h0LiVdPVwibWF4UGVyY2VudGFnZVwiIFtzdHlsZS5oZWlnaHQuJV09XCIoc2VjdGlvblNpemUgLSBncmFiYmVyT2Zmc2V0KVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JvdHRvbVNlY3Rpb25dXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFpc1ZlcnRpY2FsTGF5b3V0XCIgY2xhc3M9XCJkLWZsZXhcIiBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7XCIgI2hvcml6b250YWxDb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTFcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIiBbc3R5bGUubWluLXdpZHRoLiVdPVwibWluUGVyY2VudGFnZVwiIFtzdHlsZS5tYXgtd2lkdGguJV09XCJtYXhQZXJjZW50YWdlXCIgW3N0eWxlLndpZHRoLiVdPVwiKDEwMCAtIHNlY3Rpb25TaXplIC0gZ3JhYmJlck9mZnNldClcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsZWZ0U2VjdGlvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJ3aWR0aDogMTBweDsgaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhZC1ncmFiYmVyXCIgKG1vdXNlZG93bik9XCJkcmFnZ2luZyA9IHRydWU7XCIgKHRvdWNoc3RhcnQpPVwiZHJhZ2dpbmcgPSB0cnVlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWdyaXAtbGluZXMtdmVydGljYWxcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTFcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIiBbc3R5bGUubWluLXdpZHRoLiVdPVwibWluUGVyY2VudGFnZVwiIFtzdHlsZS5tYXgtd2lkdGguJV09XCJtYXhQZXJjZW50YWdlXCIgW3N0eWxlLndpZHRoLiVdPVwic2VjdGlvblNpemUgLSBncmFiYmVyT2Zmc2V0XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHRTZWN0aW9uXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gIHN0eWxlczogW2BcclxuICAgIC5yYWQtZ3JhYmJlciB7XHJcbiAgICAgIGN1cnNvcjogZXctcmVzaXplO1xyXG4gICAgfVxyXG5cclxuICAgIC5yYWQtZ3JhYmJlci12ZXJ0aWNhbCB7XHJcbiAgICAgIGN1cnNvcjogbnMtcmVzaXplO1xyXG4gICAgfVxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXNpemFibGVTZWN0aW9uRGl2aWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgICAvLyBTdGFydGluZyB3aWR0aCBvciBoZWlnaHQgJSBmb3IgdGhlIHJpZ2h0IC8gYm90dG9tIGNvbnRhaW5lcnMgcmVzcGVjdGl2ZWx5XHJcbiAgICBASW5wdXQoKSBpbml0aWFsUGVyY2VudGFnZTogbnVtYmVyID0gNTA7XHJcbiAgICBASW5wdXQoKSBpc1ZlcnRpY2FsTGF5b3V0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBtYXhQZXJjZW50YWdlOiBudW1iZXIgPSA5MDtcclxuICAgIEBJbnB1dCgpIG1pblBlcmNlbnRhZ2U6IG51bWJlciA9IDEwO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoXCJ2ZXJ0aWNhbENvbnRhaW5lclwiLCB7c3RhdGljOiBmYWxzZX0pIHZlcnRpY2FsQ29udGFpbmVyOiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZChcImhvcml6b250YWxDb250YWluZXJcIiwge3N0YXRpYzogZmFsc2V9KSBob3Jpem9udGFsQ29udGFpbmVyOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIHB1YmxpYyBzZWN0aW9uU2l6ZTogbnVtYmVyO1xyXG4gICAgcHVibGljIGRyYWdnaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgZ3JhYmJlck9mZnNldCA9IDA7XHJcblxyXG4gIHByaXZhdGUgdmVydGljYWxUb3VjaEZ1bmN0aW9uOiBhbnk7XHJcbiAgcHJpdmF0ZSBob3Jpem9udGFsVG91Y2hGdW5jdGlvbjogYW55O1xyXG4gIHByaXZhdGUgZWxlbWVudE9ic2VydmVyOiBhbnk7XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zZWN0aW9uU2l6ZSA9IHRoaXMuaW5pdGlhbFBlcmNlbnRhZ2U7XHJcblxyXG4gICAgICB0aGlzLnZlcnRpY2FsVG91Y2hGdW5jdGlvbiA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmdyYWJiZXJPZmZzZXQgPSAoKCggMjAgLyB0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAqIDEwMCApIC8gMik7XHJcbiAgICAgICAgICB0aGlzLnNlY3Rpb25TaXplID0gKCh0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gKGV2ZW50LnRvdWNoZXNbMF0ucGFnZVkgLSB0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKSlcclxuICAgICAgICAgICAgLyAodGhpcy52ZXJ0aWNhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodHQpICogMTAwKTtcclxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLmhvcml6b250YWxUb3VjaEZ1bmN0aW9uID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcclxuICAgICAgICAgIHRoaXMuZ3JhYmJlck9mZnNldCA9ICgoKCAxMCAvIHRoaXMuaG9yaXpvbnRhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSAqIDEwMCApIC8gMik7XHJcbiAgICAgICAgICB0aGlzLnNlY3Rpb25TaXplID0gKCh0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtIGV2ZW50LnRvdWNoZXNbMF0ucGFnZVggLSB0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KVxyXG4gICAgICAgICAgICAvICh0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkgKiAxMDApO1xyXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICAvLyBIYW5kbGUgaW5pdGlhbGl6aW5nIGdyYWJiZXIgc2l6ZSBmb3Igd2hlbiBlbGVtZW50cyBhcmUgaW5pdGlhbGl6ZWQgYXMgaGlkZGVuXHJcbiAgICAgICAgdGhpcy5lbGVtZW50T2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMsIG9ic2VydmFibGUpID0+IHtcclxuICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vIHN1YnRyYWN0IGhhbGYgdGhlIGdyYWJiZXIgaGVpZ2h0L3dpZHRoICUgZnJvbSBlYWNoIHNlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaXNWZXJ0aWNhbExheW91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JhYmJlck9mZnNldCA9ICgoKCAyMCAvIHRoaXMudmVydGljYWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpICogMTAwICkgLyAyKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmFiYmVyT2Zmc2V0ID0gKCgoIDEwIC8gdGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpICogMTAwICkgLyAyKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmFibGUuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZih0aGlzLmlzVmVydGljYWxMYXlvdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0aGlzLnZlcnRpY2FsVG91Y2hGdW5jdGlvbiwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRPYnNlcnZlci5vYnNlcnZlKHRoaXMuaG9yaXpvbnRhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdGhpcy5ob3Jpem9udGFsVG91Y2hGdW5jdGlvbiwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50Om1vdXNlbW92ZVwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgICBtb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xyXG4gICAgICAgICAgICBpZih0aGlzLmlzVmVydGljYWxMYXlvdXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JhYmJlck9mZnNldCA9ICgoKCAyMCAvIHRoaXMudmVydGljYWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpICogMTAwICkgLyAyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvblNpemUgPSAoKHRoaXMudmVydGljYWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLSAoZXZlbnQucGFnZVkgLSB0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKSlcclxuICAgICAgICAgICAgICAgICAgICAvICh0aGlzLnZlcnRpY2FsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAqIDEwMCk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyYWJiZXJPZmZzZXQgPSAoKCggMTAgLyB0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkgKiAxMDAgKSAvIDIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9uU2l6ZSA9ICgodGhpcy5ob3Jpem9udGFsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSBldmVudC5wYWdlWCAgLSB0aGlzLmhvcml6b250YWxDb250YWluZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KVxyXG4gICAgICAgICAgICAgICAgICAgIC8gKHRoaXMuaG9yaXpvbnRhbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSAqIDEwMCk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6bW91c2V1cFwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6dG91Y2hlbmRcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgbW91c2VVcChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgIGlmKHRoaXMuaXNWZXJ0aWNhbExheW91dCkge1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRoaXMudmVydGljYWxUb3VjaEZ1bmN0aW9uKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0aGlzLmhvcml6b250YWxUb3VjaEZ1bmN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -674,7 +674,7 @@ class ResizableSectionDividerComponent {
|
|
|
674
674
|
</div>
|
|
675
675
|
<div class="d-flex align-items-center justify-content-center" style="height: 20px; width: 100%;">
|
|
676
676
|
<div class="rad-grabber-vertical" (mousedown)="dragging = true;" (touchstart)="dragging = true;">
|
|
677
|
-
<i class="
|
|
677
|
+
<i class="fas fa-grip-lines"></i>
|
|
678
678
|
</div>
|
|
679
679
|
</div>
|
|
680
680
|
<div class="p-1" style="width: 100%;" [style.min-height.%]="minPercentage" [style.max-height.%]="maxPercentage" [style.height.%]="(sectionSize - grabberOffset)">
|
|
@@ -688,7 +688,7 @@ class ResizableSectionDividerComponent {
|
|
|
688
688
|
</div>
|
|
689
689
|
<div class="d-flex align-items-center justify-content-center" style="width: 10px; height: 100%;">
|
|
690
690
|
<div class="rad-grabber" (mousedown)="dragging = true;" (touchstart)="dragging = true;">
|
|
691
|
-
<i class="
|
|
691
|
+
<i class="fas fa-grip-lines-vertical"></i>
|
|
692
692
|
</div>
|
|
693
693
|
</div>
|
|
694
694
|
<div class="p-1" style="height: 100%;" [style.min-width.%]="minPercentage" [style.max-width.%]="maxPercentage" [style.width.%]="sectionSize - grabberOffset">
|
|
@@ -706,7 +706,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
706
706
|
</div>
|
|
707
707
|
<div class="d-flex align-items-center justify-content-center" style="height: 20px; width: 100%;">
|
|
708
708
|
<div class="rad-grabber-vertical" (mousedown)="dragging = true;" (touchstart)="dragging = true;">
|
|
709
|
-
<i class="
|
|
709
|
+
<i class="fas fa-grip-lines"></i>
|
|
710
710
|
</div>
|
|
711
711
|
</div>
|
|
712
712
|
<div class="p-1" style="width: 100%;" [style.min-height.%]="minPercentage" [style.max-height.%]="maxPercentage" [style.height.%]="(sectionSize - grabberOffset)">
|
|
@@ -720,7 +720,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
720
720
|
</div>
|
|
721
721
|
<div class="d-flex align-items-center justify-content-center" style="width: 10px; height: 100%;">
|
|
722
722
|
<div class="rad-grabber" (mousedown)="dragging = true;" (touchstart)="dragging = true;">
|
|
723
|
-
<i class="
|
|
723
|
+
<i class="fas fa-grip-lines-vertical"></i>
|
|
724
724
|
</div>
|
|
725
725
|
</div>
|
|
726
726
|
<div class="p-1" style="height: 100%;" [style.min-width.%]="minPercentage" [style.max-width.%]="maxPercentage" [style.width.%]="sectionSize - grabberOffset">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huntsman-cancer-institute-reporting-framework.mjs","sources":["../../../projects/reporting-framework/src/model/report.model.ts","../../../projects/reporting-framework/src/model/param.model.ts","../../../projects/reporting-framework/src/datepicker/report-datepicker.component.ts","../../../projects/reporting-framework/src/parameter/parameter.component.ts","../../../projects/reporting-framework/src/model/option.model.ts","../../../projects/reporting-framework/src/model/report-tab.model.ts","../../../projects/reporting-framework/src/model/format.model.ts","../../../projects/reporting-framework/src/format/format.component.ts","../../../projects/reporting-framework/src/spinner/spinner-dialog.component.ts","../../../projects/reporting-framework/src/spinner/dialogs.service.ts","../../../projects/reporting-framework/src/resizable-divider/resizable-section-divider.component.ts","../../../projects/reporting-framework/src/reporting-framework.component.ts","../../../projects/reporting-framework/src/report.module.ts","../../../projects/reporting-framework/src/huntsman-cancer-institute-reporting-framework.ts"],"sourcesContent":["import {Param} from \"./param.model\";\r\nimport {Format} from \"./format.model\";\r\n\r\nexport class Report {\r\n\r\n public name: string;\r\n public title: string;\r\n public description: string;\r\n public className: string;\r\n public fileName: string;\r\n public type: string;\r\n public tab: string;\r\n public datakey: string;\r\n public help: string;\r\n\r\n public params: Param[] = [];\r\n public formats: Format[] = [];\r\n}\r\n","import {Option} from \"./option.model\";\r\n\r\nexport class Param {\r\n\r\n public caption: string;\r\n public name: string;\r\n public type: string;\r\n public className: string;\r\n public valueXPath: string;\r\n public displayXPath: string;\r\n public activeOnly: boolean = true;\r\n public displayOrder: number;\r\n\r\n public options: Option[] = [];\r\n\r\n public selectedValue: any;\r\n public selectedValueList: any[] = []; //for multi-select\r\n public dictAPILeadIn: string;\r\n\r\n public calculateDictionaryURL(): string {\r\n var out: string = \"\";\r\n\r\n if(this.activeOnly) {\r\n out = this.dictAPILeadIn + \"/\" + this.className + \"/active-entries\";\r\n }else {\r\n out = this.dictAPILeadIn + \"/\" + this.className + \"/entries\";\r\n }\r\n return out;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\nimport {MAT_DATE_LOCALE} from \"@angular/material/core\";\r\n\r\n@Component({\r\n selector: \"report-datepicker\",\r\n template: `\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <input matInput [matDatepicker]=\"picker\" class=\"form-control\" style=\"cursor: pointer;\" [placeholder]=\"placeholder\" [ngModel]=\"value\" (ngModelChange)=\"onChange($event)\"\r\n (click)=\"picker.open()\" (blur)=\"onBlur()\" [min]=\"minDate\" [max]=\"maxDate\"\r\n [ngStyle]=\"{'background-color':invalid ? 'red' : '#fff'}\" >\r\n <span class=\"input-group-text\" id=\"clearIcon\" (click)=\"clear()\"><i class=\"fas fa-times\"></i></span>\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"picker.open()\" style=\"height:32px; width:32px;\"><i class=\"fas fa-calendar-alt\"></i></button>\r\n <mat-datepicker #picker ></mat-datepicker>\r\n </div>\r\n `,\r\n styles: [`\r\n #clearIcon {\r\n cursor: pointer;\r\n }\r\n #clearIcon:Hover {\r\n background-color: rgb(73, 80, 87);\r\n color: rgb(233, 236, 239)\r\n }\r\n `],\r\n providers: [\r\n {provide: MAT_DATE_LOCALE, useValue: \"en-GB\"}\r\n ]\r\n})\r\nexport class ReportDatepickerComponent {\r\n @Input() value: Date;\r\n @Input() placeholder: string;\r\n @Input() minDate: Date;\r\n @Input() maxDate: Date;\r\n @Input() invalid: boolean = false;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n ngOnInit() {\r\n let today = new Date();\r\n // set the minDate to 20 years in the past by default\r\n if (!this.minDate) {\r\n this.minDate = new Date(today.getFullYear() - 20, today.getMonth(), today.getDate());\r\n }\r\n // set max date to 20 years in future by default\r\n if (!this.maxDate) {\r\n this.maxDate = new Date(today.getFullYear() + 20, today.getMonth(), today.getDate());\r\n }\r\n }\r\n\r\n onChange(newValue) {\r\n this.value = newValue;\r\n this.valueChange.emit(newValue);\r\n }\r\n\r\n clear() {\r\n this.value = undefined;\r\n this.valueChange.emit();\r\n }\r\n\r\n // Clear input field if entered data is invalid (Mat library sets value to null if invalid but doesn't clear input)\r\n onBlur() {\r\n if (!this.value) {\r\n this.value = undefined;\r\n this.valueChange.emit();\r\n }\r\n }\r\n}\r\n\r\n","import {Component} from \"@angular/core\";\r\nimport {Param} from \"../model/param.model\";\r\n\r\n\r\n@Component({\r\n selector: \"hci-parameter\",\r\n template: `\r\n\r\n <!--Text Input-->\r\n <ng-container *ngIf=\"param.type === 'input'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <input type=\"text\" class=\"form-control input-field\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n >\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Date-->\r\n <ng-container *ngIf=\"param.type === 'date'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <report-datepicker class=\"date-input\"\r\n placeholder=\"\"\r\n id=\"{{param.name}}\"\r\n [(value)]=\"param.selectedValue\"\r\n >\r\n </report-datepicker>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Select with dictionary-->\r\n <ng-container *ngIf=\"param.type === 'select' && param.className && param.className != ''\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-native-select class=\"report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [idKey]=\"param.valueXPath\"\r\n [displayKey]=\"param.displayXPath\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [url]=\"param.calculateDictionaryURL()\"\r\n ></hci-native-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Select with manual options-->\r\n <ng-container *ngIf=\"param.type === 'select' && (!param.className || param.className === '')\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-native-select class=\"report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [entries] = \"entries\"\r\n ></hci-native-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Multi-select with dictionary-->\r\n <ng-container *ngIf=\"param.type === 'multiselect' && param.className && param.className != ''\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-md-multi-select class=\"multi-report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [idKey]=\"param.valueXPath\"\r\n [displayKey]=\"param.displayXPath\"\r\n [(ngModel)]=\"param.selectedValueList\"\r\n [url]=\"param.calculateDictionaryURL()\"\r\n >\r\n </hci-md-multi-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Multi-select with manual options-->\r\n <ng-container *ngIf=\"param.type === 'multiselect' && (!param.className || param.className === '')\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-md-multi-select class=\"multi-report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [entries] = \"entries\"\r\n [(ngModel)]=\"param.selectedValueList\"\r\n >\r\n </hci-md-multi-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Radio buttons-->\r\n <ng-container *ngIf=\"param.type === 'radio'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <div class=\"radio-pair\" *ngFor=\"let o of param.options\">\r\n <input type=\"radio\"\r\n style=\"margin-right: 3px;\"\r\n [value]=\"o.value\"\r\n [id]=\"param.name + '-' + o.value\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [name]=\"param.name\">\r\n <label for=\"{{param.name + '-' + o.value}}\">{{o.display}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n `,\r\n styles: [`\r\n\r\n .data-label{\r\n width: 270px;\r\n margin-right: 30px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n }\r\n\r\n .date-input{\r\n width: 45%;\r\n }\r\n\r\n .report-select{\r\n flex-grow: unset !important;\r\n width: 45%;\r\n }\r\n\r\n .multi-report-select{\r\n flex-grow: unset !important;\r\n width: 45%;\r\n }\r\n\r\n .radio-pair{\r\n display: flex;\r\n align-items: center;\r\n padding-right: 5px;\r\n margin-right: 15px;\r\n }\r\n\r\n .input-field{\r\n width: 45%\r\n }\r\n `]\r\n})\r\nexport class ParameterComponent {\r\n\r\n param: Param;\r\n entries: any[];\r\n\r\n setParam(p: Param) {\r\n this.param = p;\r\n\r\n if(this.param.type === \"radio\") { //if radio, auto select first option\r\n let o = this.param.options[0];\r\n this.param.selectedValue = o.value;\r\n }\r\n }\r\n\r\n}\r\n","\r\nexport class Option {\r\n\r\n public value: string;\r\n public display: string;\r\n public displayOrder: number;\r\n\r\n}\r\n","\r\nexport class ReportTab {\r\n\r\n public name: string;\r\n public title: string;\r\n public type: string;\r\n public tab: string;\r\n public datakey: string;\r\n\r\n}\r\n","\r\nexport class Format {\r\n\r\n public name: string;\r\n public caption: string;\r\n public displayOrder: number;\r\n\r\n public selected: string;\r\n}\r\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\nimport {Format} from \"../model/format.model\";\r\n\r\n\r\n@Component({\r\n selector: \"hci-format\",\r\n template: `\r\n <div class=\"radio-pair\">\r\n <input type=\"radio\" #radio\r\n [value]=\"format.name\"\r\n [id]=\"format.name\"\r\n [checked]=\"selectedValue === format.name ? true : false\"\r\n (click)=\"selectFormat(radio.value)\"\r\n name=\"format\">\r\n <label>{{format.caption}}</label>\r\n </div>\r\n `,\r\n styles: [`\r\n .radio-pair{\r\n display: flex;\r\n align-items: center;\r\n padding-right: 5px;\r\n }\r\n `]\r\n})\r\nexport class FormatComponent {\r\n\r\n @Input() selectedValue: string;\r\n @Output() selectedValueChange = new EventEmitter<string>();\r\n\r\n format: Format;\r\n\r\n selectFormat(s: string) {\r\n this.selectedValue = s;\r\n this.selectedValueChange.emit(s);\r\n }\r\n\r\n}\r\n","import {Component, Inject, Input} from \"@angular/core\";\r\nimport {MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA, MatLegacyDialogRef as MatDialogRef} from \"@angular/material/legacy-dialog\";\r\n\r\n@Component({\r\n selector: \"spinner-dialog\",\r\n template: `\r\n <div mat-dialog-content class=\"full-height padded\">\r\n <div class=\"full-width full-height t\">\r\n <div class=\"tr\">\r\n <div class=\"td vertical-center\">\r\n <mat-spinner [hidden]=\"false\" strokeWidth=\"{{strokeWidth}}\" [diameter]=\"diameter\"></mat-spinner>\r\n </div>\r\n <div class=\"td vertical-center\">\r\n {{message}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div mat-dialog-actions class=\"not-rendered\">\r\n </div>\r\n `,\r\n styles: [`\r\n .t { display: table; }\r\n .tr { display: table-row; }\r\n .td { display: table-cell; }\r\n\r\n .full-height { height: 100%; }\r\n .full-width { width: 100%; }\r\n\r\n .vertical-center { vertical-align: middle; }\r\n\r\n .padded {\r\n padding-top: 0.4em;\r\n padding-bottom: 0.4em;\r\n }\r\n\r\n .not-rendered {\r\n padding: 0;\r\n margin: 0;\r\n\r\n min-height: 0;\r\n max-height: 0;\r\n height: 0;\r\n }\r\n\r\n `]\r\n})\r\nexport class SpinnerDialogComponent {\r\n @Input(\"strokeWidth\") strokeWidth: number = 3;\r\n @Input(\"diameter\") diameter: number = 30;\r\n\r\n @Input(\"message\") message: string = \"Loading...\";\r\n\r\n constructor(private dialogRef: MatDialogRef<SpinnerDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data) {\r\n if (this.data) {\r\n if (!!this.data.message) {\r\n this.message = this.data.message;\r\n }\r\n if (!!this.data.diameter) {\r\n this.diameter = this.data.diameter;\r\n }\r\n if (!!this.data.strokeWidth) {\r\n this.strokeWidth = this.data.strokeWidth;\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","import {Injectable, TemplateRef} from \"@angular/core\";\r\nimport { MatLegacyDialogRef as MatDialogRef, MatLegacyDialog as MatDialog, MatLegacyDialogConfig as MatDialogConfig } from \"@angular/material/legacy-dialog\";\r\n\r\nimport { SpinnerDialogComponent } from \"./spinner-dialog.component\";\r\n\r\nexport enum DialogType {\r\n ERROR = \"Error\",\r\n WARNING = \"Warning\",\r\n ALERT = \"Alert\",\r\n SUCCESS = \"Succeed\",\r\n FAILED = \"Failed\",\r\n CONFIRM = \"Confirm\",\r\n INFO = \"Info\",\r\n VALIDATION = \"Validation Error\",\r\n}\r\n\r\n@Injectable()\r\nexport class DialogsService {\r\n\r\n private _spinnerDialogIsOpen: boolean = false;\r\n private spinnerWorkItemCount: number = 0;\r\n private checkingSpinnerWorkItems: boolean = false;\r\n\r\n public spinnerDialogRefs: MatDialogRef<SpinnerDialogComponent>[] = [];\r\n\r\n public get spinnerDialogIsOpen(): boolean {\r\n return this._spinnerDialogIsOpen;\r\n }\r\n\r\n constructor(private dialog: MatDialog) {\r\n }\r\n\r\n public startDefaultSpinnerDialog(): MatDialogRef<SpinnerDialogComponent> {\r\n return this.startSpinnerDialog(\"Please wait...\", 3, 30);\r\n }\r\n\r\n public startSpinnerDialog(message: string, strokeWidth: number, diameter: number): MatDialogRef<SpinnerDialogComponent> {\r\n if (this._spinnerDialogIsOpen) {\r\n return null;\r\n }\r\n\r\n this._spinnerDialogIsOpen = true;\r\n\r\n let configuration: MatDialogConfig = new MatDialogConfig();\r\n configuration.data = {\r\n message: message,\r\n strokeWidth: strokeWidth,\r\n diameter: diameter\r\n };\r\n configuration.width = \"13em\";\r\n configuration.disableClose = true;\r\n\r\n let dialogRef: MatDialogRef<SpinnerDialogComponent> = this.dialog.open(SpinnerDialogComponent, configuration);\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n this._spinnerDialogIsOpen = false;\r\n });\r\n\r\n this.spinnerDialogRefs.push(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n // Let there be an alternative, global way to stop all active spinner dialogs.\r\n public stopAllSpinnerDialogs(): void {\r\n this.spinnerWorkItemCount = 0;\r\n for (let dialogRef of this.spinnerDialogRefs) {\r\n setTimeout(() => {\r\n dialogRef.close();\r\n });\r\n }\r\n this.spinnerDialogRefs = [];\r\n }\r\n\r\n public addSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount++;\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n public removeSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount--;\r\n if (this.spinnerWorkItemCount < 0) {\r\n this.spinnerWorkItemCount = 0;\r\n }\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n private checkSpinnerWorkItems(): void {\r\n this.checkingSpinnerWorkItems = false;\r\n if (this.spinnerWorkItemCount) {\r\n if (!this._spinnerDialogIsOpen) {\r\n this.startDefaultSpinnerDialog();\r\n }\r\n } else if (this._spinnerDialogIsOpen) {\r\n this.stopAllSpinnerDialogs();\r\n }\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, ElementRef, HostListener, Input, OnDestroy, ViewChild} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"resizable-section-divider\",\r\n template: `\r\n <div *ngIf=\"isVerticalLayout\" style=\"height: 100%; width: 100%;\" #verticalContainer>\r\n <div class=\"p-1\" style=\"width: 100%;\" [style.min-height.%]=\"minPercentage\" [style.max-height.%]=\"maxPercentage\" [style.height.%]=\"(100 - sectionSize - grabberOffset)\">\r\n <ng-content select=\"[topSection]\"></ng-content>\r\n </div>\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"height: 20px; width: 100%;\">\r\n <div class=\"rad-grabber-vertical\" (mousedown)=\"dragging = true;\" (touchstart)=\"dragging = true;\">\r\n <i class=\"fa fa-grip-lines\"></i>\r\n </div>\r\n </div>\r\n <div class=\"p-1\" style=\"width: 100%;\" [style.min-height.%]=\"minPercentage\" [style.max-height.%]=\"maxPercentage\" [style.height.%]=\"(sectionSize - grabberOffset)\">\r\n <ng-content select=\"[bottomSection]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isVerticalLayout\" class=\"d-flex\" style=\"height: 100%; width: 100%;\" #horizontalContainer>\r\n <div class=\"p-1\" style=\"height: 100%;\" [style.min-width.%]=\"minPercentage\" [style.max-width.%]=\"maxPercentage\" [style.width.%]=\"(100 - sectionSize - grabberOffset)\">\r\n <ng-content select=\"[leftSection]\"></ng-content>\r\n </div>\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"width: 10px; height: 100%;\">\r\n <div class=\"rad-grabber\" (mousedown)=\"dragging = true;\" (touchstart)=\"dragging = true;\">\r\n <i class=\"fa fa-grip-lines-vertical\"></i>\r\n </div>\r\n </div>\r\n <div class=\"p-1\" style=\"height: 100%;\" [style.min-width.%]=\"minPercentage\" [style.max-width.%]=\"maxPercentage\" [style.width.%]=\"sectionSize - grabberOffset\">\r\n <ng-content select=\"[rightSection]\"></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .rad-grabber {\r\n cursor: ew-resize;\r\n }\r\n\r\n .rad-grabber-vertical {\r\n cursor: ns-resize;\r\n }\r\n `]\r\n})\r\nexport class ResizableSectionDividerComponent implements AfterViewInit, OnDestroy {\r\n // Starting width or height % for the right / bottom containers respectively\r\n @Input() initialPercentage: number = 50;\r\n @Input() isVerticalLayout: boolean = false;\r\n @Input() maxPercentage: number = 90;\r\n @Input() minPercentage: number = 10;\r\n\r\n @ViewChild(\"verticalContainer\", {static: false}) verticalContainer: ElementRef;\r\n @ViewChild(\"horizontalContainer\", {static: false}) horizontalContainer: ElementRef;\r\n\r\n public sectionSize: number;\r\n public dragging: boolean = false;\r\n public grabberOffset = 0;\r\n\r\n private verticalTouchFunction: any;\r\n private horizontalTouchFunction: any;\r\n private elementObserver: any;\r\n\r\n ngOnInit() {\r\n this.sectionSize = this.initialPercentage;\r\n\r\n this.verticalTouchFunction = (event) => {\r\n if (this.dragging) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.touches[0].pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))\r\n / (this.verticalContainer.nativeElement.offsetHeightt) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n this.horizontalTouchFunction = (event) => {\r\n if (this.dragging) {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.touches[0].pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)\r\n / (this.horizontalContainer.nativeElement.offsetWidth) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n };\r\n }\r\n ngAfterViewInit() {\r\n // Handle initializing grabber size for when elements are initialized as hidden\r\n this.elementObserver = new IntersectionObserver((entries, observable) => {\r\n entries.forEach(entry => {\r\n if(entry.isIntersecting) {\r\n // subtract half the grabber height/width % from each section\r\n if(this.isVerticalLayout) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n } else {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n }\r\n observable.disconnect();\r\n }\r\n });\r\n });\r\n\r\n if(this.isVerticalLayout) {\r\n this.elementObserver.observe(this.verticalContainer.nativeElement);\r\n window.addEventListener(\"touchmove\", this.verticalTouchFunction, { passive: false });\r\n } else {\r\n this.elementObserver.observe(this.horizontalContainer.nativeElement);\r\n window.addEventListener(\"touchmove\", this.horizontalTouchFunction, { passive: false });\r\n }\r\n }\r\n\r\n @HostListener(\"document:mousemove\", [\"$event\"])\r\n mouseMove(event: MouseEvent) {\r\n if (this.dragging) {\r\n if(this.isVerticalLayout) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))\r\n / (this.verticalContainer.nativeElement.offsetHeight) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n } else {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)\r\n / (this.horizontalContainer.nativeElement.offsetWidth) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n @HostListener(\"document:mouseup\", [\"$event\"])\r\n @HostListener(\"document:touchend\", [\"$event\"])\r\n mouseUp(event: MouseEvent) {\r\n if (this.dragging) {\r\n this.dragging = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if(this.isVerticalLayout) {\r\n window.removeEventListener(\"touchmove\", this.verticalTouchFunction);\r\n } else {\r\n window.removeEventListener(\"touchmove\", this.horizontalTouchFunction);\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component, ComponentFactory,\r\n ComponentFactoryResolver, ComponentRef,\r\n Input, OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {HttpClient, HttpParams} from \"@angular/common/http\";\r\nimport {Report} from \"./model/report.model\";\r\nimport {Param} from \"./model/param.model\";\r\nimport {ParameterComponent} from \"./parameter/parameter.component\";\r\nimport {Option} from \"./model/option.model\";\r\nimport {ReportTab} from \"./model/report-tab.model\";\r\nimport {Format} from \"./model/format.model\";\r\nimport {FormatComponent} from \"./format/format.component\";\r\nimport * as moment from \"moment\";\r\nimport {DatePipe} from \"@angular/common\";\r\nimport {ModalDismissReasons, NgbModal} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {DialogsService} from \"./spinner/dialogs.service\";\r\nimport { GridApi } from \"ag-grid-community\";\r\n\r\n@Component({\r\n selector: \"hci-reporting-framework\",\r\n template: `\r\n <div style=\"height: 100vh\">\r\n <resizable-section-divider class=\"flex-grow-1\" [isVerticalLayout]=\"true\">\r\n <div topSection class=\"d-flex flex-column\" style=\"height: 100%; width: 100%; overflow: auto;\">\r\n <!--can wrap just the grid with the tabs-->\r\n <mat-tab-group *ngIf=\"tabList.length > 0\"\r\n class=\"flex-grow-1\">\r\n <mat-tab *ngFor=\"let tab of tabList\"\r\n label=\"{{tab.title}}\"\r\n class=\"flex-grow-1\">\r\n <ng-template matTabContent>\r\n <ag-grid-angular\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onTabbedGridReady($event, tab.name)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"tabbedGridList[tab.name]\">\r\n </ag-grid-angular>\r\n </ng-template>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!--ngb-tabset *ngIf=\"tabList.length > 0\"\r\n destroyOnHide=\"false\"\r\n type=\"tabs\"\r\n class=\"flex-grow-1\"\r\n #reportTabSet=\"ngbTabset\"\r\n >\r\n <ngb-tab *ngFor=\"let tab of tabList\"\r\n id=\"{{tab.name}}\" title=\"{{tab.title}}\"\r\n style=\"border: 5px solid;\" >\r\n <ng-template ngbTabContent >\r\n\r\n <ag-grid-angular\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onTabbedGridReady($event, tab.name)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"tabbedGridList[tab.name]\">\r\n </ag-grid-angular>\r\n </ng-template>\r\n </ngb-tab>\r\n\r\n </ngb-tabset-->\r\n\r\n <ag-grid-angular *ngIf=\"tabList.length <= 0\"\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onMainGridReady($event)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"fullGridList\">\r\n </ag-grid-angular>\r\n </div>\r\n <div bottomSection class=\"d-flex flex-column\" style=\"height: 80%; width: 100%; overflow: auto;\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label style=\"margin-left: 25px; font-weight: bold\">{{selectedReport.title}}</label>\r\n <button class=\"btn\" *ngIf=\"selectedReport.help && selectedReport.help != ''\"\r\n (click)=\"openHelp(content)\">\r\n <i class=\"far fa-question-circle\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <template #paramContainer></template>\r\n <div style=\"display: block;\">\r\n <div class=\"row center-row\">\r\n <template #formatContainer></template>\r\n <button *ngIf=\"selectedReport.name\"\r\n class=\"btn btn-success\"\r\n type=\"button\"\r\n (click)=\"onRunReport()\"\r\n >Run Report</button>\r\n </div>\r\n </div>\r\n </div>\r\n </resizable-section-divider>\r\n </div>\r\n <ng-template #content let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\" id=\"help-model-title\">Report Help</h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"modal.dismiss('Cross click')\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\" >\r\n <div class=\"container\" [innerHTML]=\"selectedReport.help\">\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"modal.dismiss('Ok click')\">OK</button>\r\n </div>\r\n </ng-template>\r\n\r\n `,\r\n styles: [`\r\n :host ::ng-deep .mat-tab-body-wrapper{\r\n flex-grow: 1;\r\n }\r\n\r\n :host ::ng-deep .mat-tab-label{\r\n background-color: #98c7e0;\r\n }\r\n\r\n :host ::ng-deep .mat-tab-label-active{\r\n background-color: #def4ff;\r\n }\r\n\r\n .report-details{\r\n height: 100%;\r\n width: 100%;\r\n position: absolute\r\n }\r\n\r\n .center-row{\r\n margin-top: 10px;\r\n margin-left: 60vw;\r\n }\r\n `]\r\n})\r\nexport class ReportingFrameworkComponent implements OnInit, OnDestroy {\r\n\r\n @Input() manageReportUrl: string; // /artadmin/legacy/api/hci.artadmin.controller.ManageReports\r\n @Input() commandPrefix: string; // /artadmin/legacy/api/jsp\r\n @Input() dictAPILeadIn: string; // /artadmin/api/dictionaries\r\n @Input() reportsByType: string; //optional. usually \"global\" or \"patient\"\r\n\r\n @ViewChild(\"paramContainer\", {read: ViewContainerRef, static: false}) paramContainer: ViewContainerRef;\r\n @ViewChild(\"formatContainer\", {read: ViewContainerRef, static: false}) formatContainer: ViewContainerRef;\r\n\r\n fullGridList: any[] = [];\r\n tabbedGridList: any = {};\r\n\r\n\r\n gridOptions = {\r\n rowStyle: {\r\n \"font-family\": \"Prompt, sans-serif\"\r\n },\r\n rowHeight: 20,\r\n enableCellTextSelection: true,\r\n ensureDomOrder: true\r\n }; //enableCellTextSelection should be combined with ensureDomOrder\r\n frameworkComponents: any;\r\n\r\n mainGridApi: GridApi;\r\n tabbedGridApiList: any = {}; //a map of GridAPIs to tab names\r\n\r\n reportList: Report[] = [];\r\n tabList: ReportTab[] = [];\r\n tabTypeNameLookup: any = {}; //a kind of dict that maps the tab or type to the tab-name\r\n\r\n selectedReport: Report = new Report();\r\n selectedFormat: string;\r\n displayedParamComponentRefs: ComponentRef<any>[] = [];\r\n displayedFormatComponentRefs: ComponentRef<any>[] = [];\r\n\r\n constructor(private http: HttpClient,\r\n private resolver: ComponentFactoryResolver,\r\n private datePipe: DatePipe,\r\n private dialogsService: DialogsService,\r\n private modalService: NgbModal) {}\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.manageReportUrl != null) {\r\n\r\n this.http.get(this.manageReportUrl,\r\n {\r\n params: new HttpParams().set(\"action\", \"loadWithParams\")\r\n }\r\n ).subscribe(\r\n (resp) => {\r\n console.log(resp);\r\n var templist = [];\r\n var tempTabbedGridList = {};\r\n\r\n var tablist = resp[\"reportTabs\"];\r\n for (let row of tablist) {\r\n var tab: ReportTab = new ReportTab();\r\n tab.name = row.name;\r\n tab.title = row.title;\r\n tab.type = row.type;\r\n tab.tab = row.tab;\r\n tab.datakey = row.datakey;\r\n\r\n if (!this.reportsByType) {\r\n this.tabList.push(tab);\r\n if (tab.tab) {\r\n this.tabTypeNameLookup[tab.tab] = tab.name;\r\n }\r\n if (tab.type) {\r\n this.tabTypeNameLookup[tab.type] = tab.name;\r\n }\r\n }else {\r\n if (this.reportsByType == tab.type) {\r\n this.tabList.push(tab);\r\n this.tabTypeNameLookup[tab.tab] = tab.name;\r\n }\r\n }\r\n\r\n var tabGridList: any[] = [];\r\n this.tabbedGridList[tab.name] = tabGridList;\r\n tempTabbedGridList[tab.name] = [];\r\n }\r\n\r\n\r\n var list = resp[\"reportList\"];\r\n // console.log(list);\r\n for (let row of list) {\r\n var report: Report = new Report();\r\n report.name = row.name;\r\n report.title = row.title;\r\n report.description = row.description;\r\n report.className = row.className;\r\n report.fileName = row.fileName;\r\n report.type = row.type;\r\n report.tab = row.tab;\r\n report.datakey = row.datakey;\r\n report.help = row.help;\r\n\r\n const object = {\r\n name: report.name,\r\n title: report.title,\r\n description: report.description\r\n };\r\n\r\n\r\n var tabname;\r\n if (report.tab) {\r\n tabname = this.tabTypeNameLookup[report.tab];\r\n } else if (!this.reportsByType && report.type) {\r\n tabname = this.tabTypeNameLookup[report.type];\r\n }\r\n\r\n if (tabname) {\r\n var gridlist: any[] = tempTabbedGridList[tabname];\r\n\r\n if(this.reportsByType) {\r\n if (report.type === this.reportsByType ) {\r\n gridlist.push(object);\r\n }\r\n }else {\r\n gridlist.push(object);\r\n }\r\n }\r\n\r\n let params = row.params;\r\n if (params) {\r\n\r\n for (let p of params) {\r\n // console.log(p);\r\n var newParam: Param = new Param();\r\n newParam.dictAPILeadIn = this.dictAPILeadIn;\r\n\r\n newParam.caption = p.caption;\r\n newParam.name = p.name;\r\n newParam.type = p.type;\r\n newParam.className = p.className;\r\n newParam.valueXPath = p.valueXPath;\r\n newParam.displayXPath = p.displayXPath;\r\n newParam.displayOrder = p.displayOrder;\r\n newParam.activeOnly = p.activeOnly;\r\n\r\n if (newParam.valueXPath) {\r\n newParam.valueXPath = newParam.valueXPath.replace(\"@\", \"\");\r\n }\r\n if (newParam.displayXPath) {\r\n newParam.displayXPath = newParam.displayXPath.replace(\"@\", \"\");\r\n }\r\n\r\n let options = p.options;\r\n if (options) {\r\n\r\n for (let o of options) {\r\n var newOption: Option = new Option();\r\n newOption.value = o.value;\r\n newOption.display = o.display;\r\n newOption.displayOrder = o.displayOrder;\r\n\r\n newParam.options.push(newOption);\r\n }\r\n }\r\n\r\n report.params.push(newParam);\r\n }\r\n }\r\n\r\n let formats = row.formats;\r\n if (formats) {\r\n\r\n for (let f of formats) {\r\n var newFormat: Format = new Format();\r\n newFormat.name = f.name;\r\n newFormat.caption = f.caption;\r\n newFormat.displayOrder = f.displayOrder;\r\n\r\n report.formats.push(newFormat);\r\n }\r\n }\r\n\r\n\r\n this.reportList.push(report);\r\n\r\n if (this.reportsByType) {\r\n if(report.type === this.reportsByType) {\r\n templist.push(object);\r\n }\r\n } else {\r\n templist.push(object);\r\n }\r\n }\r\n\r\n this.fullGridList = templist.slice();\r\n console.log(\"gridlist: \");\r\n console.log(this.fullGridList);\r\n\r\n for(let tab of this.tabList){\r\n this.tabbedGridList[tab.name] = tempTabbedGridList[tab.name].slice();\r\n }\r\n\r\n }\r\n );\r\n }\r\n }\r\n\r\n public columnDef() : any[] {\r\n return [\r\n\r\n {\r\n field: \"title\",\r\n headerName: \"Title\",\r\n width: 300,\r\n sortable: true,\r\n resizable: true,\r\n editable: false},\r\n {\r\n field: \"description\",\r\n headerName: \"Description\",\r\n sortable: true,\r\n resizable: true,\r\n editable: false}\r\n ];\r\n\r\n }\r\n\r\n onMainGridReady(params : any) {\r\n\r\n this.mainGridApi = params.api;\r\n this.mainGridApi.setColumnDefs(this.columnDef());\r\n this.mainGridApi.setRowData(this.fullGridList);\r\n this.mainGridApi.sizeColumnsToFit();\r\n }\r\n\r\n onTabbedGridReady(params : any, tabname: string) {\r\n\r\n this.tabbedGridApiList[tabname] = params.api;\r\n this.tabbedGridApiList[tabname].setColumnDefs(this.columnDef());\r\n this.tabbedGridApiList[tabname].setRowData(this.tabbedGridList[tabname]);\r\n this.tabbedGridApiList[tabname].sizeColumnsToFit();\r\n }\r\n\r\n setSelectedRow(event) {\r\n\r\n //console.log(event);\r\n if(event.node.selected) {\r\n let reportName = event.node.data.name;\r\n console.log(event.node.data.name);\r\n\r\n var matchedReport: Report;\r\n for (let r of this.reportList) {\r\n if (r.name == reportName) {\r\n matchedReport = r;\r\n }\r\n }\r\n\r\n if (matchedReport != null) {\r\n this.selectedReport = matchedReport;\r\n } else {\r\n this.selectedReport = new Report();\r\n }\r\n\r\n this.createParamComponents();\r\n }\r\n }\r\n\r\n createParamComponents() {\r\n if(this.paramContainer) {\r\n this.paramContainer.clear();\r\n }\r\n if(this.formatContainer) {\r\n this.formatContainer.clear();\r\n }\r\n\r\n //destroy previous components and clear the displayedRef lists..?\r\n this.destroyComponentRefs();\r\n this.displayedParamComponentRefs = [];\r\n this.displayedFormatComponentRefs = [];\r\n\r\n for(let p of this.selectedReport.params){\r\n\r\n const factory: ComponentFactory<ParameterComponent> = this.resolver.resolveComponentFactory(ParameterComponent);\r\n var componentRef: ComponentRef<ParameterComponent> = this.paramContainer.createComponent(factory);\r\n this.displayedParamComponentRefs.push(componentRef);\r\n\r\n componentRef.instance.setParam(p);\r\n\r\n if(p.options.length > 0) {\r\n var entries: any[] = [];\r\n for(let o of p.options){\r\n var e = {id: o.value, display: o.display};\r\n entries.push(e);\r\n }\r\n componentRef.instance.entries = entries;\r\n }\r\n\r\n }\r\n\r\n var first: boolean = true;\r\n for(let f of this.selectedReport.formats){\r\n\r\n const factory2: ComponentFactory<FormatComponent> = this.resolver.resolveComponentFactory(FormatComponent);\r\n var componentRef2: ComponentRef<FormatComponent> = this.formatContainer.createComponent(factory2);\r\n this.displayedFormatComponentRefs.push(componentRef2);\r\n\r\n componentRef2.instance.format = f;\r\n componentRef2.instance.selectedValueChange.subscribe(\r\n (s) => {\r\n this.selectedFormat = s;\r\n }\r\n );\r\n if(first) {//select the first format in the grouping\r\n componentRef2.instance.selectedValue = f.name;\r\n this.selectedFormat = f.name;\r\n first = false;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n openHelp(content) {\r\n\r\n this.modalService.open(content, {ariaLabelledBy: \"help-modal-title\"})\r\n .result.then((result) => {\r\n // this.closeResult = `Closed with: ${result}`;\r\n console.log(result);\r\n\r\n }, (reason) => {\r\n var closeResult = `Dismissed ${this.getDismissReason(reason)}`;\r\n console.log(closeResult);\r\n\r\n });\r\n\r\n }\r\n\r\n private getDismissReason(reason: any): string {\r\n if (reason === ModalDismissReasons.ESC) {\r\n return \"by pressing ESC\";\r\n } else if (reason === ModalDismissReasons.BACKDROP_CLICK) {\r\n return \"by clicking on a backdrop\";\r\n } else {\r\n return `with: ${reason}`;\r\n }\r\n }\r\n\r\n onRunReport() {\r\n\r\n if(this.selectedReport) {\r\n\r\n this.dialogsService.startDefaultSpinnerDialog();\r\n\r\n console.log(\"format:\" + this.selectedFormat);\r\n if(!this.selectedFormat) {\r\n this.selectedFormat = \"html\";\r\n }\r\n\r\n let runParams = new HttpParams();\r\n runParams = runParams.append(\"format\", this.selectedFormat);\r\n runParams = runParams.append(\"action\", \"show\");\r\n runParams = runParams.append(\"reportName\", this.selectedReport.name);\r\n\r\n runParams = this.getRunParameters(runParams);\r\n\r\n console.log(runParams);\r\n\r\n this.http.get(this.commandPrefix + this.selectedReport.className,\r\n {\r\n params: runParams,\r\n observe: \"response\",\r\n responseType: \"blob\"\r\n }\r\n ).subscribe(\r\n (res) => {\r\n console.log(res);\r\n\r\n var filename;\r\n if(this.selectedFormat != \"html\") {\r\n filename = res.headers.get(\"content-disposition\").split(\";\")[1].split(\"=\")[1].replace(/\\\"/g, \"\");\r\n }\r\n var blob = new Blob([res.body], {type: res.body.type} ); //, {type: \"application/vnd.ms-excel\"}\r\n var fileURL = window.URL.createObjectURL(blob);\r\n console.log(fileURL);\r\n\r\n const a: HTMLAnchorElement = document.createElement(\"a\") as HTMLAnchorElement;\r\n a.href = fileURL;\r\n if(this.selectedFormat == \"html\") {\r\n a.target = \"_blank\";\r\n }else {\r\n a.download = filename;\r\n }\r\n window.document.body.appendChild(a);\r\n a.click();\r\n window.document.body.removeChild(a);\r\n URL.revokeObjectURL(fileURL);\r\n\r\n this.dialogsService.stopAllSpinnerDialogs();\r\n }\r\n );\r\n }\r\n }\r\n\r\n getRunParameters(runParams: HttpParams): HttpParams {\r\n var newParams = runParams;\r\n\r\n for(let o of this.displayedParamComponentRefs){\r\n var param = o.instance.param;\r\n\r\n if(param.type == \"multiselect\") {\r\n var resList = \"\";\r\n for(let v of param.selectedValueList){\r\n if(resList != \"\") {\r\n resList += \",\";\r\n }\r\n resList += v;\r\n }\r\n newParams = newParams.append(param.name, resList);\r\n }else {\r\n var value;\r\n if(param.selectedValue) { //so we don't get \"undefined\" sent back\r\n if(param.type == \"date\") {\r\n value = this.getDateString(param.selectedValue);\r\n }else {\r\n value = param.selectedValue;\r\n }\r\n }else {\r\n value = \"\";\r\n }\r\n newParams = newParams.append(param.name, value);\r\n }\r\n }\r\n return newParams;\r\n }\r\n\r\n getDateString(date: any): string {\r\n\r\n if (date instanceof Date) {\r\n if (!isNaN(date.getTime())) {\r\n return this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n } else {\r\n return \"\";\r\n }\r\n }else if(moment.isMoment(date) ) {\r\n if(date != null) {\r\n return date.format(\"M/D/YYYY\");\r\n }else {\r\n return \"\";\r\n }\r\n }else if(typeof date == \"string\") {\r\n return date;\r\n }else {\r\n return \"\";\r\n }\r\n }\r\n\r\n destroyComponentRefs() {\r\n for(let o of this.displayedParamComponentRefs){\r\n o.destroy();\r\n }\r\n for(let o of this.displayedFormatComponentRefs){\r\n o.destroy();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyComponentRefs();\r\n }\r\n\r\n /*\r\n styles: [`\r\n .report-details{\r\n height: 100%;\r\n width: 100%;\r\n position: absolute\r\n }\r\n\r\n .center-row{\r\n margin-top: 10px;\r\n margin-left: 60vw;\r\n }\r\n\r\n .mat-tab-body-wrapper{\r\n flex-grow: 1;\r\n }\r\n\r\n.tab-pane{\r\n height: 100%;\r\n}\r\n`]*/\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule, DatePipe} from \"@angular/common\";\r\n\r\nimport {ReportingFrameworkComponent} from \"./reporting-framework.component\";\r\nimport {MatDatepickerModule} from \"@angular/material/datepicker\";\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {ReportDatepickerComponent} from \"./datepicker/report-datepicker.component\";\r\nimport {FormatComponent} from \"./format/format.component\";\r\nimport {ParameterComponent} from \"./parameter/parameter.component\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {SelectModule} from \"@huntsman-cancer-institute/input\";\r\nimport {SpinnerDialogComponent} from \"./spinner/spinner-dialog.component\";\r\nimport {AgGridModule} from \"ag-grid-angular\";\r\nimport {MatLegacyProgressSpinnerModule as MatProgressSpinnerModule} from \"@angular/material/legacy-progress-spinner\";\r\nimport { MatLegacyDialogModule as MatDialogModule } from \"@angular/material/legacy-dialog\";\r\nimport {DialogsService} from \"./spinner/dialogs.service\";\r\nimport {ResizableSectionDividerComponent} from \"./resizable-divider/resizable-section-divider.component\";\r\nimport {MatLegacyTabsModule as MatTabsModule} from \"@angular/material/legacy-tabs\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgbModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatProgressSpinnerModule,\r\n MatTabsModule,\r\n SelectModule,\r\n AgGridModule,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DialogsService\r\n ],\r\n declarations: [\r\n ReportingFrameworkComponent,\r\n ReportDatepickerComponent,\r\n ParameterComponent,\r\n FormatComponent,\r\n SpinnerDialogComponent,\r\n ResizableSectionDividerComponent\r\n ],\r\n exports: [\r\n ReportingFrameworkComponent\r\n ]\r\n})\r\nexport class ReportModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4.ReportDatepickerComponent","MAT_DIALOG_DATA","i1","i2","MatDialogConfig","i3.DialogsService","i7.ResizableSectionDividerComponent","MatDialogModule","MatProgressSpinnerModule","MatTabsModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;MAGa,MAAM,CAAA;AAAnB,IAAA,WAAA,GAAA;QAYW,IAAM,CAAA,MAAA,GAAY,EAAE,CAAC;QACrB,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;KACjC;AAAA;;MCfY,KAAK,CAAA;AAAlB,IAAA,WAAA,GAAA;QAQW,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC;QAG3B,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;AAGvB,QAAA,IAAA,CAAA,iBAAiB,GAAU,EAAE,CAAC;KAaxC;IAVU,sBAAsB,GAAA;QAC3B,IAAI,GAAG,GAAW,EAAE,CAAC;QAErB,IAAG,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;AACrE,SAAA;AAAK,aAAA;AACJ,YAAA,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AAC9D,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AACJ;;MCDY,yBAAyB,CAAA;AAzBtC,IAAA,WAAA,GAAA;QA8BW,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;AAExB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AA+B5C,KAAA;IA7BC,QAAQ,GAAA;AACN,QAAA,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACtF,SAAA;;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACtF,SAAA;KACF;AAED,IAAA,QAAQ,CAAC,QAAQ,EAAA;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACjC;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;;IAGD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACzB,SAAA;KACF;+GArCU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAJzB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAC;SAC9C,EArBS,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAcU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAzBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EACnB,QAAA,EAAA,CAAA;;;;;;;;;GAST,EAUU,SAAA,EAAA;AACT,wBAAA,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAC;AAC9C,qBAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,CAAA;8BAGQ,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;;;MC2HI,kBAAkB,CAAA;AAK3B,IAAA,QAAQ,CAAC,CAAQ,EAAA;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAEf,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC;AACpC,SAAA;KACF;+GAZQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAxJjB,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,KAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,KAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAqCQ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA1J9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EACf,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA,CAAA;;;MCxHQ,MAAM,CAAA;AAMlB;;MCNY,SAAS,CAAA;AAQrB;;MCRY,MAAM,CAAA;AAOlB;;MCiBY,eAAe,CAAA;AArB5B,IAAA,WAAA,GAAA;AAwBc,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU,CAAC;AAS9D,KAAA;AALG,IAAA,YAAY,CAAC,CAAS,EAAA;AAClB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACpC;+GAVQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAnBd,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;AAUT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kEAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FASQ,eAAe,EAAA,UAAA,EAAA,CAAA;kBArB3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACZ,QAAA,EAAA,CAAA;;;;;;;;;;AAUT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,kEAAA,CAAA,EAAA,CAAA;8BAWQ,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACI,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;;;MCmBE,sBAAsB,CAAA;IAM/B,WAAoB,CAAA,SAA+C,EACtB,IAAI,EAAA;QAD7B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsC;QACtB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAA;QAN3B,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;QAC3B,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QAEvB,IAAO,CAAA,OAAA,GAAW,YAAY,CAAC;QAI7C,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACpC,aAAA;AACD,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtC,aAAA;AACD,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5C,aAAA;AACJ,SAAA;KACJ;AAnBQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,sDAOXC,sBAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAP1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EA1CrB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;AAeT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA2BQ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA5ClC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;AAeT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0QAAA,CAAA,EAAA,CAAA;;0BAkCY,MAAM;2BAACF,sBAAe,CAAA;4CANb,WAAW,EAAA,CAAA;sBAAhC,KAAK;uBAAC,aAAa,CAAA;gBACD,QAAQ,EAAA,CAAA;sBAA1B,KAAK;uBAAC,UAAU,CAAA;gBAEC,OAAO,EAAA,CAAA;sBAAxB,KAAK;uBAAC,SAAS,CAAA;;;AC9CpB,IAAY,UASX,CAAA;AATD,CAAA,UAAY,UAAU,EAAA;AAClB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,kBAA+B,CAAA;AACnC,CAAC,EATW,UAAU,KAAV,UAAU,GASrB,EAAA,CAAA,CAAA,CAAA;MAGY,cAAc,CAAA;AAQvB,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,WAAA,CAAoB,MAAiB,EAAA;QAAjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;QAV7B,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;QACtC,IAAoB,CAAA,oBAAA,GAAW,CAAC,CAAC;QACjC,IAAwB,CAAA,wBAAA,GAAY,KAAK,CAAC;QAE3C,IAAiB,CAAA,iBAAA,GAA2C,EAAE,CAAC;KAOrE;IAEM,yBAAyB,GAAA;QAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;KAC3D;AAEM,IAAA,kBAAkB,CAAC,OAAe,EAAE,WAAmB,EAAE,QAAgB,EAAA;QAC5E,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AAEjC,QAAA,IAAI,aAAa,GAAoB,IAAIG,qBAAe,EAAE,CAAC;QAC3D,aAAa,CAAC,IAAI,GAAG;AACjB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,QAAQ,EAAE,QAAQ;SACrB,CAAC;AACF,QAAA,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC;AAC7B,QAAA,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC;AAElC,QAAA,IAAI,SAAS,GAAyC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;AAE9G,QAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;AACnC,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AACtC,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEvC,QAAA,OAAO,SAAS,CAAC;KACpB;;IAGM,qBAAqB,GAAA;AACxB,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;AAC9B,QAAA,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1C,UAAU,CAAC,MAAK;gBACZ,SAAS,CAAC,KAAK,EAAE,CAAC;AACtB,aAAC,CAAC,CAAC;AACN,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC/B;IAEM,kBAAkB,GAAA;QACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAChC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACrC,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACjC,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEM,qBAAqB,GAAA;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;AACjC,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAChC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACrC,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACjC,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEO,qBAAqB,GAAA;AACzB,QAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtC,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC5B,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACpC,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAClC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,SAAA;KACJ;+GAzFQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAd,cAAc,EAAA,CAAA,CAAA,EAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;MC2BE,gCAAgC,CAAA;AAzC7C,IAAA,WAAA,GAAA;;QA2Ca,IAAiB,CAAA,iBAAA,GAAW,EAAE,CAAC;QAC/B,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAClC,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;QAC3B,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;QAM7B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;AAwF5B,KAAA;IAlFG,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAE5C,QAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC,KAAK,KAAI;YACrC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,IAAI,GAAG,IAAK,CAAC,CAAC,CAAC;AAC9F,gBAAA,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;uBAC/J,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;gBAChE,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,aAAA;AACH,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,KAAK,KAAI;YACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAE,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,IAAI,GAAG,IAAK,CAAC,CAAC,CAAC;AAC/F,gBAAA,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI;uBACjK,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;gBAChE,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,aAAA;AACH,SAAC,CAAC;KACH;IACD,eAAe,GAAA;;QAEX,IAAI,CAAC,eAAe,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,EAAE,UAAU,KAAI;AACjE,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAG;gBACrB,IAAG,KAAK,CAAC,cAAc,EAAE;;oBAErB,IAAG,IAAI,CAAC,gBAAgB,EAAE;wBACtB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,IAAI,GAAG,IAAK,CAAC,CAAC,CAAC;AACjG,qBAAA;AAAM,yBAAA;wBACH,IAAI,CAAC,aAAa,IAAI,CAAC,CAAE,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,IAAI,GAAG,IAAK,CAAC,CAAC,CAAC;AAClG,qBAAA;oBACD,UAAU,CAAC,UAAU,EAAE,CAAC;AAC3B,iBAAA;AACJ,aAAC,CAAC,CAAC;AACV,SAAC,CAAC,CAAC;QAEH,IAAG,IAAI,CAAC,gBAAgB,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AACnE,YAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACxF,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;AACrE,YAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1F,SAAA;KACJ;AAGD,IAAA,SAAS,CAAC,KAAiB,EAAA;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAG,IAAI,CAAC,gBAAgB,EAAE;gBACtB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,IAAI,GAAG,IAAK,CAAC,CAAC,CAAC;AAC9F,gBAAA,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;uBAClJ,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;gBACjE,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,aAAa,IAAI,CAAC,CAAE,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,IAAI,GAAG,IAAK,CAAC,CAAC,CAAC;gBAC/F,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,GAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI;uBACrJ,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;gBAClE,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,aAAA;AACJ,SAAA;KACJ;AAGD,IAAA,OAAO,CAAC,KAAiB,EAAA;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzB,SAAA;KACJ;IAED,WAAW,GAAA;QACT,IAAG,IAAI,CAAC,gBAAgB,EAAE;YACxB,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACrE,SAAA;AAAM,aAAA;YACL,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACvE,SAAA;KACF;+GAlGQ,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,EAvC/B,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAWQ,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAzC5C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAC3B,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA,CAAA;8BAaQ,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAE2C,iBAAiB,EAAA,CAAA;sBAAjE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAA;gBACI,mBAAmB,EAAA,CAAA;sBAArE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAA;gBA2DjD,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAoB9C,OAAO,EAAA,CAAA;sBAFN,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;;sBAC3C,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCwBpC,2BAA2B,CAAA;IAoCpC,WAAoB,CAAA,IAAgB,EAChB,QAAkC,EAClC,QAAkB,EAClB,cAA8B,EAC9B,YAAsB,EAAA;QAJtB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA0B;QAClC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAU;QA9B1C,IAAY,CAAA,YAAA,GAAU,EAAE,CAAC;QACzB,IAAc,CAAA,cAAA,GAAQ,EAAE,CAAC;AAGzB,QAAA,IAAA,CAAA,WAAW,GAAG;AACZ,YAAA,QAAQ,EAAE;AACR,gBAAA,aAAa,EAAE,oBAAoB;AACpC,aAAA;AACD,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,uBAAuB,EAAE,IAAI;AAC7B,YAAA,cAAc,EAAE,IAAI;AACrB,SAAA,CAAC;AAIF,QAAA,IAAA,CAAA,iBAAiB,GAAQ,EAAE,CAAC;QAE5B,IAAU,CAAA,UAAA,GAAa,EAAE,CAAC;QAC1B,IAAO,CAAA,OAAA,GAAgB,EAAE,CAAC;AAC1B,QAAA,IAAA,CAAA,iBAAiB,GAAQ,EAAE,CAAC;AAE5B,QAAA,IAAA,CAAA,cAAc,GAAW,IAAI,MAAM,EAAE,CAAC;QAEtC,IAA2B,CAAA,2BAAA,GAAwB,EAAE,CAAC;QACtD,IAA4B,CAAA,4BAAA,GAAwB,EAAE,CAAC;KAMT;IAE9C,QAAQ,GAAA;AAEJ,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;YAE9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAC9B;gBACI,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAC3D,aAAA,CACJ,CAAC,SAAS,CACP,CAAC,IAAI,KAAI;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClB,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,IAAI,kBAAkB,GAAG,EAAE,CAAC;AAE5B,gBAAA,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AACjC,gBAAA,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE;AACrB,oBAAA,IAAI,GAAG,GAAc,IAAI,SAAS,EAAE,CAAC;AACrC,oBAAA,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AACpB,oBAAA,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB,oBAAA,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AACpB,oBAAA,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AAClB,oBAAA,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAE1B,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,wBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACvB,IAAI,GAAG,CAAC,GAAG,EAAE;4BACT,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AAC9C,yBAAA;wBACD,IAAI,GAAG,CAAC,IAAI,EAAE;4BACV,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AAC/C,yBAAA;AACJ,qBAAA;AAAK,yBAAA;AACF,wBAAA,IAAI,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC,IAAI,EAAE;AAChC,4BAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACvB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AAC9C,yBAAA;AACJ,qBAAA;oBAED,IAAI,WAAW,GAAU,EAAE,CAAC;oBAC5B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;AAC5C,oBAAA,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACrC,iBAAA;AAGD,gBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;;AAE9B,gBAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AAClB,oBAAA,IAAI,MAAM,GAAW,IAAI,MAAM,EAAE,CAAC;AAClC,oBAAA,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AACvB,oBAAA,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACzB,oBAAA,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;AACrC,oBAAA,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;AACjC,oBAAA,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC/B,oBAAA,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AACvB,oBAAA,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AACrB,oBAAA,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAC7B,oBAAA,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AAEvB,oBAAA,MAAM,MAAM,GAAG;wBACX,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;qBAClC,CAAC;AAGF,oBAAA,IAAI,OAAO,CAAC;oBACZ,IAAI,MAAM,CAAC,GAAG,EAAE;wBACZ,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAChD,qBAAA;yBAAM,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,EAAE;wBAC3C,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjD,qBAAA;AAED,oBAAA,IAAI,OAAO,EAAE;AACT,wBAAA,IAAI,QAAQ,GAAU,kBAAkB,CAAC,OAAO,CAAC,CAAC;wBAElD,IAAG,IAAI,CAAC,aAAa,EAAE;AACnB,4BAAA,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,EAAG;AACrC,gCAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,6BAAA;AACJ,yBAAA;AAAK,6BAAA;AACF,4BAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,yBAAA;AACJ,qBAAA;AAED,oBAAA,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACxB,oBAAA,IAAI,MAAM,EAAE;AAER,wBAAA,KAAK,IAAI,CAAC,IAAI,MAAM,EAAE;;AAElB,4BAAA,IAAI,QAAQ,GAAU,IAAI,KAAK,EAAE,CAAC;AAClC,4BAAA,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AAE5C,4BAAA,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AAC7B,4BAAA,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACvB,4BAAA,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACvB,4BAAA,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;AACjC,4BAAA,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;AACnC,4BAAA,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;AACvC,4BAAA,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;AACvC,4BAAA,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;4BAEnC,IAAI,QAAQ,CAAC,UAAU,EAAE;AACrB,gCAAA,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC9D,6BAAA;4BACD,IAAI,QAAQ,CAAC,YAAY,EAAE;AACvB,gCAAA,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAClE,6BAAA;AAED,4BAAA,IAAI,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AACxB,4BAAA,IAAI,OAAO,EAAE;AAET,gCAAA,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE;AACnB,oCAAA,IAAI,SAAS,GAAW,IAAI,MAAM,EAAE,CAAC;AACrC,oCAAA,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAC1B,oCAAA,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AAC9B,oCAAA,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;AAExC,oCAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpC,iCAAA;AACJ,6BAAA;AAED,4BAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,yBAAA;AACJ,qBAAA;AAED,oBAAA,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAC1B,oBAAA,IAAI,OAAO,EAAE;AAET,wBAAA,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE;AACnB,4BAAA,IAAI,SAAS,GAAW,IAAI,MAAM,EAAE,CAAC;AACrC,4BAAA,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,4BAAA,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AAC9B,4BAAA,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;AAExC,4BAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClC,yBAAA;AACJ,qBAAA;AAGD,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAE7B,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,wBAAA,IAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE;AACnC,4BAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,yBAAA;AACJ,qBAAA;AAAM,yBAAA;AACH,wBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,qBAAA;AACJ,iBAAA;AAED,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AACrC,gBAAA,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC1B,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAE/B,gBAAA,KAAI,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAC;AACxB,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AACxE,iBAAA;AAEL,aAAC,CACJ,CAAC;AACL,SAAA;KACJ;IAEM,SAAS,GAAA;QACd,OAAO;AAEL,YAAA;AACE,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,UAAU,EAAE,OAAO;AACnB,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,QAAQ,EAAE,KAAK;AAAC,aAAA;AAClB,YAAA;AACE,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,UAAU,EAAE,aAAa;AACzB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,QAAQ,EAAE,KAAK;AAAC,aAAA;SACnB,CAAC;KAEH;AAED,IAAA,eAAe,CAAC,MAAY,EAAA;AAE1B,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;KACrC;IAED,iBAAiB,CAAC,MAAY,EAAE,OAAe,EAAA;QAE7C,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAC7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;KACpD;AAED,IAAA,cAAc,CAAC,KAAK,EAAA;;AAGhB,QAAA,IAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtB,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAElC,YAAA,IAAI,aAAqB,CAAC;AAC1B,YAAA,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;AAC7B,gBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,EAAE;oBACxB,aAAa,GAAG,CAAC,CAAC;AACnB,iBAAA;AACF,aAAA;YAED,IAAI,aAAa,IAAI,IAAI,EAAE;AACzB,gBAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACrC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,EAAE,CAAC;AACpC,aAAA;YAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9B,SAAA;KACJ;IAED,qBAAqB,GAAA;QACjB,IAAG,IAAI,CAAC,cAAc,EAAE;AACpB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC/B,SAAA;QACD,IAAG,IAAI,CAAC,eAAe,EAAE;AACrB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AAChC,SAAA;;QAGD,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,4BAA4B,GAAG,EAAE,CAAC;QAEvC,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAC;YAEpC,MAAM,OAAO,GAAyC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;YAChH,IAAI,YAAY,GAAqC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAClG,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEpD,YAAA,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAElC,YAAA,IAAG,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,IAAI,OAAO,GAAU,EAAE,CAAC;AACxB,gBAAA,KAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAC;AACnB,oBAAA,IAAI,CAAC,GAAG,EAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAC,CAAC;AAC1C,oBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,iBAAA;AACD,gBAAA,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3C,aAAA;AAEJ,SAAA;QAED,IAAI,KAAK,GAAY,IAAI,CAAC;QAC1B,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAC;YAErC,MAAM,QAAQ,GAAsC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;YAC3G,IAAI,aAAa,GAAkC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAClG,YAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAEtD,YAAA,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAChD,CAAC,CAAC,KAAI;AACF,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAC5B,aAAC,CACJ,CAAC;YACF,IAAG,KAAK,EAAE;gBACN,aAAa,CAAC,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC;AAC9C,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC7B,KAAK,GAAG,KAAK,CAAC;AACjB,aAAA;AAEJ,SAAA;KAEJ;AAED,IAAA,QAAQ,CAAC,OAAO,EAAA;AAEZ,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC;AAChE,aAAA,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;;AAExB,YAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAExB,SAAC,EAAE,CAAC,MAAM,KAAI;YACV,IAAI,WAAW,GAAG,CAAA,UAAA,EAAa,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;AAC/D,YAAA,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAE7B,SAAC,CAAC,CAAC;KAEN;AAEO,IAAA,gBAAgB,CAAC,MAAW,EAAA;AAChC,QAAA,IAAI,MAAM,KAAK,mBAAmB,CAAC,GAAG,EAAE;AACpC,YAAA,OAAO,iBAAiB,CAAC;AAC5B,SAAA;AAAM,aAAA,IAAI,MAAM,KAAK,mBAAmB,CAAC,cAAc,EAAE;AACtD,YAAA,OAAO,2BAA2B,CAAC;AACtC,SAAA;AAAM,aAAA;YACH,OAAQ,CAAA,MAAA,EAAS,MAAM,CAAA,CAAE,CAAC;AAC7B,SAAA;KACJ;IAED,WAAW,GAAA;QAEP,IAAG,IAAI,CAAC,cAAc,EAAE;AAEpB,YAAA,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;YAEhD,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAC7C,YAAA,IAAG,CAAC,IAAI,CAAC,cAAc,EAAE;AACrB,gBAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;AAChC,aAAA;AAED,YAAA,IAAI,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;YACjC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5D,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC/C,YAAA,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAErE,YAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAE7C,YAAA,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAEvB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAC5D;AACI,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,YAAY,EAAE,MAAM;AACvB,aAAA,CACJ,CAAC,SAAS,CACP,CAAC,GAAG,KAAI;AACJ,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjB,gBAAA,IAAI,QAAQ,CAAC;AACb,gBAAA,IAAG,IAAI,CAAC,cAAc,IAAI,MAAM,EAAE;AAC9B,oBAAA,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpG,iBAAA;gBACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAC,CAAE,CAAC;gBACxD,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/C,gBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAErB,MAAM,CAAC,GAAsB,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAsB,CAAC;AAC9E,gBAAA,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC;AACjB,gBAAA,IAAG,IAAI,CAAC,cAAc,IAAI,MAAM,EAAE;AAC9B,oBAAA,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;AACvB,iBAAA;AAAK,qBAAA;AACF,oBAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,iBAAA;gBACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACpC,CAAC,CAAC,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAA,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAE7B,gBAAA,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;AAChD,aAAC,CACJ,CAAC;AACL,SAAA;KACJ;AAED,IAAA,gBAAgB,CAAC,SAAqB,EAAA;QAClC,IAAI,SAAS,GAAG,SAAS,CAAC;AAE1B,QAAA,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,2BAA2B,EAAC;AAC1C,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAE7B,YAAA,IAAG,KAAK,CAAC,IAAI,IAAI,aAAa,EAAE;gBAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,gBAAA,KAAI,IAAI,CAAC,IAAI,KAAK,CAAC,iBAAiB,EAAC;oBACjC,IAAG,OAAO,IAAI,EAAE,EAAE;wBACd,OAAO,IAAI,GAAG,CAAC;AAClB,qBAAA;oBACD,OAAO,IAAI,CAAC,CAAC;AAChB,iBAAA;gBACD,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrD,aAAA;AAAK,iBAAA;AACF,gBAAA,IAAI,KAAK,CAAC;AACV,gBAAA,IAAG,KAAK,CAAC,aAAa,EAAE;AACpB,oBAAA,IAAG,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE;wBACrB,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACnD,qBAAA;AAAK,yBAAA;AACF,wBAAA,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;AAC/B,qBAAA;AACJ,iBAAA;AAAK,qBAAA;oBACF,KAAK,GAAG,EAAE,CAAC;AACd,iBAAA;gBACD,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnD,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;AAED,IAAA,aAAa,CAAC,IAAS,EAAA;QAEnB,IAAI,IAAI,YAAY,IAAI,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;gBACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACtD,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;AACJ,SAAA;AAAK,aAAA,IAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAG;YAC7B,IAAG,IAAI,IAAI,IAAI,EAAE;AACb,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAClC,aAAA;AAAK,iBAAA;AACF,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;AACJ,SAAA;AAAK,aAAA,IAAG,OAAO,IAAI,IAAI,QAAQ,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAK,aAAA;AACF,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;KACJ;IAED,oBAAoB,GAAA;AAClB,QAAA,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,2BAA2B,EAAC;YAC5C,CAAC,CAAC,OAAO,EAAE,CAAC;AACb,SAAA;AACD,QAAA,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,4BAA4B,EAAC;YAC7C,CAAC,CAAC,OAAO,EAAE,CAAC;AACb,SAAA;KACF;IAED,WAAW,GAAA;QACP,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;+GAjdQ,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAOA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,EACf,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,EAxI3C,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsGT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,8BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,sCAAA,EAAA,cAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,+BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,iCAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,2CAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,mCAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,iCAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,uCAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,2CAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iCAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,qCAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,wBAAA,EAAA,4BAAA,EAAA,oCAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,+BAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,8BAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,gCAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA0BQ,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAlIvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EACzB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsGT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mRAAA,CAAA,EAAA,CAAA;kNA4BQ,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEgE,cAAc,EAAA,CAAA;sBAAnF,SAAS;uBAAC,gBAAgB,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAC,CAAA;gBACG,eAAe,EAAA,CAAA;sBAArF,SAAS;uBAAC,iBAAiB,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAC,CAAA;;;MCjH5D,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAXjB,2BAA2B;YAC3B,yBAAyB;YACzB,kBAAkB;YAClB,eAAe;YACf,sBAAsB;AACtB,YAAA,gCAAgC,aApBhC,YAAY;YACZ,WAAW;YACX,SAAS;YACT,mBAAmB;YACnBC,qBAAe;YACfC,8BAAwB;YACxBC,mBAAa;YACb,YAAY;AACZ,YAAA,YAAY,aAeZ,2BAA2B,CAAA,EAAA,CAAA,CAAA,EAAA;AAGtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAhBV,SAAA,EAAA;YACP,QAAQ;YACR,cAAc;AACjB,SAAA,EAAA,OAAA,EAAA,CAbG,YAAY;YACZ,WAAW;YACX,SAAS;YACT,mBAAmB;YACnBF,qBAAe;YACfC,8BAAwB;YACxBC,mBAAa;YACb,YAAY;YACZ,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAkBP,YAAY,EAAA,UAAA,EAAA,CAAA;kBA5BxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,SAAS;wBACT,mBAAmB;wBACnBF,qBAAe;wBACfC,8BAAwB;wBACxBC,mBAAa;wBACb,YAAY;wBACZ,YAAY;AACf,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,QAAQ;wBACR,cAAc;AACjB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,2BAA2B;wBAC3B,yBAAyB;wBACzB,kBAAkB;wBAClB,eAAe;wBACf,sBAAsB;wBACtB,gCAAgC;AACnC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,2BAA2B;AAC9B,qBAAA;AACJ,iBAAA,CAAA;;;AC9CD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"huntsman-cancer-institute-reporting-framework.mjs","sources":["../../../projects/reporting-framework/src/model/report.model.ts","../../../projects/reporting-framework/src/model/param.model.ts","../../../projects/reporting-framework/src/datepicker/report-datepicker.component.ts","../../../projects/reporting-framework/src/parameter/parameter.component.ts","../../../projects/reporting-framework/src/model/option.model.ts","../../../projects/reporting-framework/src/model/report-tab.model.ts","../../../projects/reporting-framework/src/model/format.model.ts","../../../projects/reporting-framework/src/format/format.component.ts","../../../projects/reporting-framework/src/spinner/spinner-dialog.component.ts","../../../projects/reporting-framework/src/spinner/dialogs.service.ts","../../../projects/reporting-framework/src/resizable-divider/resizable-section-divider.component.ts","../../../projects/reporting-framework/src/reporting-framework.component.ts","../../../projects/reporting-framework/src/report.module.ts","../../../projects/reporting-framework/src/huntsman-cancer-institute-reporting-framework.ts"],"sourcesContent":["import {Param} from \"./param.model\";\r\nimport {Format} from \"./format.model\";\r\n\r\nexport class Report {\r\n\r\n public name: string;\r\n public title: string;\r\n public description: string;\r\n public className: string;\r\n public fileName: string;\r\n public type: string;\r\n public tab: string;\r\n public datakey: string;\r\n public help: string;\r\n\r\n public params: Param[] = [];\r\n public formats: Format[] = [];\r\n}\r\n","import {Option} from \"./option.model\";\r\n\r\nexport class Param {\r\n\r\n public caption: string;\r\n public name: string;\r\n public type: string;\r\n public className: string;\r\n public valueXPath: string;\r\n public displayXPath: string;\r\n public activeOnly: boolean = true;\r\n public displayOrder: number;\r\n\r\n public options: Option[] = [];\r\n\r\n public selectedValue: any;\r\n public selectedValueList: any[] = []; //for multi-select\r\n public dictAPILeadIn: string;\r\n\r\n public calculateDictionaryURL(): string {\r\n var out: string = \"\";\r\n\r\n if(this.activeOnly) {\r\n out = this.dictAPILeadIn + \"/\" + this.className + \"/active-entries\";\r\n }else {\r\n out = this.dictAPILeadIn + \"/\" + this.className + \"/entries\";\r\n }\r\n return out;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\nimport {MAT_DATE_LOCALE} from \"@angular/material/core\";\r\n\r\n@Component({\r\n selector: \"report-datepicker\",\r\n template: `\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <input matInput [matDatepicker]=\"picker\" class=\"form-control\" style=\"cursor: pointer;\" [placeholder]=\"placeholder\" [ngModel]=\"value\" (ngModelChange)=\"onChange($event)\"\r\n (click)=\"picker.open()\" (blur)=\"onBlur()\" [min]=\"minDate\" [max]=\"maxDate\"\r\n [ngStyle]=\"{'background-color':invalid ? 'red' : '#fff'}\" >\r\n <span class=\"input-group-text\" id=\"clearIcon\" (click)=\"clear()\"><i class=\"fas fa-times\"></i></span>\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"picker.open()\" style=\"height:32px; width:32px;\"><i class=\"fas fa-calendar-alt\"></i></button>\r\n <mat-datepicker #picker ></mat-datepicker>\r\n </div>\r\n `,\r\n styles: [`\r\n #clearIcon {\r\n cursor: pointer;\r\n }\r\n #clearIcon:Hover {\r\n background-color: rgb(73, 80, 87);\r\n color: rgb(233, 236, 239)\r\n }\r\n `],\r\n providers: [\r\n {provide: MAT_DATE_LOCALE, useValue: \"en-GB\"}\r\n ]\r\n})\r\nexport class ReportDatepickerComponent {\r\n @Input() value: Date;\r\n @Input() placeholder: string;\r\n @Input() minDate: Date;\r\n @Input() maxDate: Date;\r\n @Input() invalid: boolean = false;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n ngOnInit() {\r\n let today = new Date();\r\n // set the minDate to 20 years in the past by default\r\n if (!this.minDate) {\r\n this.minDate = new Date(today.getFullYear() - 20, today.getMonth(), today.getDate());\r\n }\r\n // set max date to 20 years in future by default\r\n if (!this.maxDate) {\r\n this.maxDate = new Date(today.getFullYear() + 20, today.getMonth(), today.getDate());\r\n }\r\n }\r\n\r\n onChange(newValue) {\r\n this.value = newValue;\r\n this.valueChange.emit(newValue);\r\n }\r\n\r\n clear() {\r\n this.value = undefined;\r\n this.valueChange.emit();\r\n }\r\n\r\n // Clear input field if entered data is invalid (Mat library sets value to null if invalid but doesn't clear input)\r\n onBlur() {\r\n if (!this.value) {\r\n this.value = undefined;\r\n this.valueChange.emit();\r\n }\r\n }\r\n}\r\n\r\n","import {Component} from \"@angular/core\";\r\nimport {Param} from \"../model/param.model\";\r\n\r\n\r\n@Component({\r\n selector: \"hci-parameter\",\r\n template: `\r\n\r\n <!--Text Input-->\r\n <ng-container *ngIf=\"param.type === 'input'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <input type=\"text\" class=\"form-control input-field\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n >\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Date-->\r\n <ng-container *ngIf=\"param.type === 'date'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <report-datepicker class=\"date-input\"\r\n placeholder=\"\"\r\n id=\"{{param.name}}\"\r\n [(value)]=\"param.selectedValue\"\r\n >\r\n </report-datepicker>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Select with dictionary-->\r\n <ng-container *ngIf=\"param.type === 'select' && param.className && param.className != ''\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-native-select class=\"report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [idKey]=\"param.valueXPath\"\r\n [displayKey]=\"param.displayXPath\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [url]=\"param.calculateDictionaryURL()\"\r\n ></hci-native-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Select with manual options-->\r\n <ng-container *ngIf=\"param.type === 'select' && (!param.className || param.className === '')\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-native-select class=\"report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [entries] = \"entries\"\r\n ></hci-native-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Multi-select with dictionary-->\r\n <ng-container *ngIf=\"param.type === 'multiselect' && param.className && param.className != ''\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-md-multi-select class=\"multi-report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [idKey]=\"param.valueXPath\"\r\n [displayKey]=\"param.displayXPath\"\r\n [(ngModel)]=\"param.selectedValueList\"\r\n [url]=\"param.calculateDictionaryURL()\"\r\n >\r\n </hci-md-multi-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Multi-select with manual options-->\r\n <ng-container *ngIf=\"param.type === 'multiselect' && (!param.className || param.className === '')\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-md-multi-select class=\"multi-report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [entries] = \"entries\"\r\n [(ngModel)]=\"param.selectedValueList\"\r\n >\r\n </hci-md-multi-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Radio buttons-->\r\n <ng-container *ngIf=\"param.type === 'radio'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <div class=\"radio-pair\" *ngFor=\"let o of param.options\">\r\n <input type=\"radio\"\r\n style=\"margin-right: 3px;\"\r\n [value]=\"o.value\"\r\n [id]=\"param.name + '-' + o.value\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [name]=\"param.name\">\r\n <label for=\"{{param.name + '-' + o.value}}\">{{o.display}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n `,\r\n styles: [`\r\n\r\n .data-label{\r\n width: 270px;\r\n margin-right: 30px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n }\r\n\r\n .date-input{\r\n width: 45%;\r\n }\r\n\r\n .report-select{\r\n flex-grow: unset !important;\r\n width: 45%;\r\n }\r\n\r\n .multi-report-select{\r\n flex-grow: unset !important;\r\n width: 45%;\r\n }\r\n\r\n .radio-pair{\r\n display: flex;\r\n align-items: center;\r\n padding-right: 5px;\r\n margin-right: 15px;\r\n }\r\n\r\n .input-field{\r\n width: 45%\r\n }\r\n `]\r\n})\r\nexport class ParameterComponent {\r\n\r\n param: Param;\r\n entries: any[];\r\n\r\n setParam(p: Param) {\r\n this.param = p;\r\n\r\n if(this.param.type === \"radio\") { //if radio, auto select first option\r\n let o = this.param.options[0];\r\n this.param.selectedValue = o.value;\r\n }\r\n }\r\n\r\n}\r\n","\r\nexport class Option {\r\n\r\n public value: string;\r\n public display: string;\r\n public displayOrder: number;\r\n\r\n}\r\n","\r\nexport class ReportTab {\r\n\r\n public name: string;\r\n public title: string;\r\n public type: string;\r\n public tab: string;\r\n public datakey: string;\r\n\r\n}\r\n","\r\nexport class Format {\r\n\r\n public name: string;\r\n public caption: string;\r\n public displayOrder: number;\r\n\r\n public selected: string;\r\n}\r\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\nimport {Format} from \"../model/format.model\";\r\n\r\n\r\n@Component({\r\n selector: \"hci-format\",\r\n template: `\r\n <div class=\"radio-pair\">\r\n <input type=\"radio\" #radio\r\n [value]=\"format.name\"\r\n [id]=\"format.name\"\r\n [checked]=\"selectedValue === format.name ? true : false\"\r\n (click)=\"selectFormat(radio.value)\"\r\n name=\"format\">\r\n <label>{{format.caption}}</label>\r\n </div>\r\n `,\r\n styles: [`\r\n .radio-pair{\r\n display: flex;\r\n align-items: center;\r\n padding-right: 5px;\r\n }\r\n `]\r\n})\r\nexport class FormatComponent {\r\n\r\n @Input() selectedValue: string;\r\n @Output() selectedValueChange = new EventEmitter<string>();\r\n\r\n format: Format;\r\n\r\n selectFormat(s: string) {\r\n this.selectedValue = s;\r\n this.selectedValueChange.emit(s);\r\n }\r\n\r\n}\r\n","import {Component, Inject, Input} from \"@angular/core\";\r\nimport {MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA, MatLegacyDialogRef as MatDialogRef} from \"@angular/material/legacy-dialog\";\r\n\r\n@Component({\r\n selector: \"spinner-dialog\",\r\n template: `\r\n <div mat-dialog-content class=\"full-height padded\">\r\n <div class=\"full-width full-height t\">\r\n <div class=\"tr\">\r\n <div class=\"td vertical-center\">\r\n <mat-spinner [hidden]=\"false\" strokeWidth=\"{{strokeWidth}}\" [diameter]=\"diameter\"></mat-spinner>\r\n </div>\r\n <div class=\"td vertical-center\">\r\n {{message}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div mat-dialog-actions class=\"not-rendered\">\r\n </div>\r\n `,\r\n styles: [`\r\n .t { display: table; }\r\n .tr { display: table-row; }\r\n .td { display: table-cell; }\r\n\r\n .full-height { height: 100%; }\r\n .full-width { width: 100%; }\r\n\r\n .vertical-center { vertical-align: middle; }\r\n\r\n .padded {\r\n padding-top: 0.4em;\r\n padding-bottom: 0.4em;\r\n }\r\n\r\n .not-rendered {\r\n padding: 0;\r\n margin: 0;\r\n\r\n min-height: 0;\r\n max-height: 0;\r\n height: 0;\r\n }\r\n\r\n `]\r\n})\r\nexport class SpinnerDialogComponent {\r\n @Input(\"strokeWidth\") strokeWidth: number = 3;\r\n @Input(\"diameter\") diameter: number = 30;\r\n\r\n @Input(\"message\") message: string = \"Loading...\";\r\n\r\n constructor(private dialogRef: MatDialogRef<SpinnerDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data) {\r\n if (this.data) {\r\n if (!!this.data.message) {\r\n this.message = this.data.message;\r\n }\r\n if (!!this.data.diameter) {\r\n this.diameter = this.data.diameter;\r\n }\r\n if (!!this.data.strokeWidth) {\r\n this.strokeWidth = this.data.strokeWidth;\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","import {Injectable, TemplateRef} from \"@angular/core\";\r\nimport { MatLegacyDialogRef as MatDialogRef, MatLegacyDialog as MatDialog, MatLegacyDialogConfig as MatDialogConfig } from \"@angular/material/legacy-dialog\";\r\n\r\nimport { SpinnerDialogComponent } from \"./spinner-dialog.component\";\r\n\r\nexport enum DialogType {\r\n ERROR = \"Error\",\r\n WARNING = \"Warning\",\r\n ALERT = \"Alert\",\r\n SUCCESS = \"Succeed\",\r\n FAILED = \"Failed\",\r\n CONFIRM = \"Confirm\",\r\n INFO = \"Info\",\r\n VALIDATION = \"Validation Error\",\r\n}\r\n\r\n@Injectable()\r\nexport class DialogsService {\r\n\r\n private _spinnerDialogIsOpen: boolean = false;\r\n private spinnerWorkItemCount: number = 0;\r\n private checkingSpinnerWorkItems: boolean = false;\r\n\r\n public spinnerDialogRefs: MatDialogRef<SpinnerDialogComponent>[] = [];\r\n\r\n public get spinnerDialogIsOpen(): boolean {\r\n return this._spinnerDialogIsOpen;\r\n }\r\n\r\n constructor(private dialog: MatDialog) {\r\n }\r\n\r\n public startDefaultSpinnerDialog(): MatDialogRef<SpinnerDialogComponent> {\r\n return this.startSpinnerDialog(\"Please wait...\", 3, 30);\r\n }\r\n\r\n public startSpinnerDialog(message: string, strokeWidth: number, diameter: number): MatDialogRef<SpinnerDialogComponent> {\r\n if (this._spinnerDialogIsOpen) {\r\n return null;\r\n }\r\n\r\n this._spinnerDialogIsOpen = true;\r\n\r\n let configuration: MatDialogConfig = new MatDialogConfig();\r\n configuration.data = {\r\n message: message,\r\n strokeWidth: strokeWidth,\r\n diameter: diameter\r\n };\r\n configuration.width = \"13em\";\r\n configuration.disableClose = true;\r\n\r\n let dialogRef: MatDialogRef<SpinnerDialogComponent> = this.dialog.open(SpinnerDialogComponent, configuration);\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n this._spinnerDialogIsOpen = false;\r\n });\r\n\r\n this.spinnerDialogRefs.push(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n // Let there be an alternative, global way to stop all active spinner dialogs.\r\n public stopAllSpinnerDialogs(): void {\r\n this.spinnerWorkItemCount = 0;\r\n for (let dialogRef of this.spinnerDialogRefs) {\r\n setTimeout(() => {\r\n dialogRef.close();\r\n });\r\n }\r\n this.spinnerDialogRefs = [];\r\n }\r\n\r\n public addSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount++;\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n public removeSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount--;\r\n if (this.spinnerWorkItemCount < 0) {\r\n this.spinnerWorkItemCount = 0;\r\n }\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n private checkSpinnerWorkItems(): void {\r\n this.checkingSpinnerWorkItems = false;\r\n if (this.spinnerWorkItemCount) {\r\n if (!this._spinnerDialogIsOpen) {\r\n this.startDefaultSpinnerDialog();\r\n }\r\n } else if (this._spinnerDialogIsOpen) {\r\n this.stopAllSpinnerDialogs();\r\n }\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, ElementRef, HostListener, Input, OnDestroy, ViewChild} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"resizable-section-divider\",\r\n template: `\r\n <div *ngIf=\"isVerticalLayout\" style=\"height: 100%; width: 100%;\" #verticalContainer>\r\n <div class=\"p-1\" style=\"width: 100%;\" [style.min-height.%]=\"minPercentage\" [style.max-height.%]=\"maxPercentage\" [style.height.%]=\"(100 - sectionSize - grabberOffset)\">\r\n <ng-content select=\"[topSection]\"></ng-content>\r\n </div>\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"height: 20px; width: 100%;\">\r\n <div class=\"rad-grabber-vertical\" (mousedown)=\"dragging = true;\" (touchstart)=\"dragging = true;\">\r\n <i class=\"fas fa-grip-lines\"></i>\r\n </div>\r\n </div>\r\n <div class=\"p-1\" style=\"width: 100%;\" [style.min-height.%]=\"minPercentage\" [style.max-height.%]=\"maxPercentage\" [style.height.%]=\"(sectionSize - grabberOffset)\">\r\n <ng-content select=\"[bottomSection]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isVerticalLayout\" class=\"d-flex\" style=\"height: 100%; width: 100%;\" #horizontalContainer>\r\n <div class=\"p-1\" style=\"height: 100%;\" [style.min-width.%]=\"minPercentage\" [style.max-width.%]=\"maxPercentage\" [style.width.%]=\"(100 - sectionSize - grabberOffset)\">\r\n <ng-content select=\"[leftSection]\"></ng-content>\r\n </div>\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"width: 10px; height: 100%;\">\r\n <div class=\"rad-grabber\" (mousedown)=\"dragging = true;\" (touchstart)=\"dragging = true;\">\r\n <i class=\"fas fa-grip-lines-vertical\"></i>\r\n </div>\r\n </div>\r\n <div class=\"p-1\" style=\"height: 100%;\" [style.min-width.%]=\"minPercentage\" [style.max-width.%]=\"maxPercentage\" [style.width.%]=\"sectionSize - grabberOffset\">\r\n <ng-content select=\"[rightSection]\"></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .rad-grabber {\r\n cursor: ew-resize;\r\n }\r\n\r\n .rad-grabber-vertical {\r\n cursor: ns-resize;\r\n }\r\n `]\r\n})\r\nexport class ResizableSectionDividerComponent implements AfterViewInit, OnDestroy {\r\n // Starting width or height % for the right / bottom containers respectively\r\n @Input() initialPercentage: number = 50;\r\n @Input() isVerticalLayout: boolean = false;\r\n @Input() maxPercentage: number = 90;\r\n @Input() minPercentage: number = 10;\r\n\r\n @ViewChild(\"verticalContainer\", {static: false}) verticalContainer: ElementRef;\r\n @ViewChild(\"horizontalContainer\", {static: false}) horizontalContainer: ElementRef;\r\n\r\n public sectionSize: number;\r\n public dragging: boolean = false;\r\n public grabberOffset = 0;\r\n\r\n private verticalTouchFunction: any;\r\n private horizontalTouchFunction: any;\r\n private elementObserver: any;\r\n\r\n ngOnInit() {\r\n this.sectionSize = this.initialPercentage;\r\n\r\n this.verticalTouchFunction = (event) => {\r\n if (this.dragging) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.touches[0].pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))\r\n / (this.verticalContainer.nativeElement.offsetHeightt) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n this.horizontalTouchFunction = (event) => {\r\n if (this.dragging) {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.touches[0].pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)\r\n / (this.horizontalContainer.nativeElement.offsetWidth) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n };\r\n }\r\n ngAfterViewInit() {\r\n // Handle initializing grabber size for when elements are initialized as hidden\r\n this.elementObserver = new IntersectionObserver((entries, observable) => {\r\n entries.forEach(entry => {\r\n if(entry.isIntersecting) {\r\n // subtract half the grabber height/width % from each section\r\n if(this.isVerticalLayout) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n } else {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n }\r\n observable.disconnect();\r\n }\r\n });\r\n });\r\n\r\n if(this.isVerticalLayout) {\r\n this.elementObserver.observe(this.verticalContainer.nativeElement);\r\n window.addEventListener(\"touchmove\", this.verticalTouchFunction, { passive: false });\r\n } else {\r\n this.elementObserver.observe(this.horizontalContainer.nativeElement);\r\n window.addEventListener(\"touchmove\", this.horizontalTouchFunction, { passive: false });\r\n }\r\n }\r\n\r\n @HostListener(\"document:mousemove\", [\"$event\"])\r\n mouseMove(event: MouseEvent) {\r\n if (this.dragging) {\r\n if(this.isVerticalLayout) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))\r\n / (this.verticalContainer.nativeElement.offsetHeight) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n } else {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)\r\n / (this.horizontalContainer.nativeElement.offsetWidth) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n @HostListener(\"document:mouseup\", [\"$event\"])\r\n @HostListener(\"document:touchend\", [\"$event\"])\r\n mouseUp(event: MouseEvent) {\r\n if (this.dragging) {\r\n this.dragging = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if(this.isVerticalLayout) {\r\n window.removeEventListener(\"touchmove\", this.verticalTouchFunction);\r\n } else {\r\n window.removeEventListener(\"touchmove\", this.horizontalTouchFunction);\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component, ComponentFactory,\r\n ComponentFactoryResolver, ComponentRef,\r\n Input, OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {HttpClient, HttpParams} from \"@angular/common/http\";\r\nimport {Report} from \"./model/report.model\";\r\nimport {Param} from \"./model/param.model\";\r\nimport {ParameterComponent} from \"./parameter/parameter.component\";\r\nimport {Option} from \"./model/option.model\";\r\nimport {ReportTab} from \"./model/report-tab.model\";\r\nimport {Format} from \"./model/format.model\";\r\nimport {FormatComponent} from \"./format/format.component\";\r\nimport * as moment from \"moment\";\r\nimport {DatePipe} from \"@angular/common\";\r\nimport {ModalDismissReasons, NgbModal} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {DialogsService} from \"./spinner/dialogs.service\";\r\nimport { GridApi } from \"ag-grid-community\";\r\n\r\n@Component({\r\n selector: \"hci-reporting-framework\",\r\n template: `\r\n <div style=\"height: 100vh\">\r\n <resizable-section-divider class=\"flex-grow-1\" [isVerticalLayout]=\"true\">\r\n <div topSection class=\"d-flex flex-column\" style=\"height: 100%; width: 100%; overflow: auto;\">\r\n <!--can wrap just the grid with the tabs-->\r\n <mat-tab-group *ngIf=\"tabList.length > 0\"\r\n class=\"flex-grow-1\">\r\n <mat-tab *ngFor=\"let tab of tabList\"\r\n label=\"{{tab.title}}\"\r\n class=\"flex-grow-1\">\r\n <ng-template matTabContent>\r\n <ag-grid-angular\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onTabbedGridReady($event, tab.name)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"tabbedGridList[tab.name]\">\r\n </ag-grid-angular>\r\n </ng-template>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!--ngb-tabset *ngIf=\"tabList.length > 0\"\r\n destroyOnHide=\"false\"\r\n type=\"tabs\"\r\n class=\"flex-grow-1\"\r\n #reportTabSet=\"ngbTabset\"\r\n >\r\n <ngb-tab *ngFor=\"let tab of tabList\"\r\n id=\"{{tab.name}}\" title=\"{{tab.title}}\"\r\n style=\"border: 5px solid;\" >\r\n <ng-template ngbTabContent >\r\n\r\n <ag-grid-angular\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onTabbedGridReady($event, tab.name)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"tabbedGridList[tab.name]\">\r\n </ag-grid-angular>\r\n </ng-template>\r\n </ngb-tab>\r\n\r\n </ngb-tabset-->\r\n\r\n <ag-grid-angular *ngIf=\"tabList.length <= 0\"\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onMainGridReady($event)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"fullGridList\">\r\n </ag-grid-angular>\r\n </div>\r\n <div bottomSection class=\"d-flex flex-column\" style=\"height: 80%; width: 100%; overflow: auto;\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label style=\"margin-left: 25px; font-weight: bold\">{{selectedReport.title}}</label>\r\n <button class=\"btn\" *ngIf=\"selectedReport.help && selectedReport.help != ''\"\r\n (click)=\"openHelp(content)\">\r\n <i class=\"far fa-question-circle\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <template #paramContainer></template>\r\n <div style=\"display: block;\">\r\n <div class=\"row center-row\">\r\n <template #formatContainer></template>\r\n <button *ngIf=\"selectedReport.name\"\r\n class=\"btn btn-success\"\r\n type=\"button\"\r\n (click)=\"onRunReport()\"\r\n >Run Report</button>\r\n </div>\r\n </div>\r\n </div>\r\n </resizable-section-divider>\r\n </div>\r\n <ng-template #content let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\" id=\"help-model-title\">Report Help</h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"modal.dismiss('Cross click')\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\" >\r\n <div class=\"container\" [innerHTML]=\"selectedReport.help\">\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"modal.dismiss('Ok click')\">OK</button>\r\n </div>\r\n </ng-template>\r\n\r\n `,\r\n styles: [`\r\n :host ::ng-deep .mat-tab-body-wrapper{\r\n flex-grow: 1;\r\n }\r\n\r\n :host ::ng-deep .mat-tab-label{\r\n background-color: #98c7e0;\r\n }\r\n\r\n :host ::ng-deep .mat-tab-label-active{\r\n background-color: #def4ff;\r\n }\r\n\r\n .report-details{\r\n height: 100%;\r\n width: 100%;\r\n position: absolute\r\n }\r\n\r\n .center-row{\r\n margin-top: 10px;\r\n margin-left: 60vw;\r\n }\r\n `]\r\n})\r\nexport class ReportingFrameworkComponent implements OnInit, OnDestroy {\r\n\r\n @Input() manageReportUrl: string; // /artadmin/legacy/api/hci.artadmin.controller.ManageReports\r\n @Input() commandPrefix: string; // /artadmin/legacy/api/jsp\r\n @Input() dictAPILeadIn: string; // /artadmin/api/dictionaries\r\n @Input() reportsByType: string; //optional. usually \"global\" or \"patient\"\r\n\r\n @ViewChild(\"paramContainer\", {read: ViewContainerRef, static: false}) paramContainer: ViewContainerRef;\r\n @ViewChild(\"formatContainer\", {read: ViewContainerRef, static: false}) formatContainer: ViewContainerRef;\r\n\r\n fullGridList: any[] = [];\r\n tabbedGridList: any = {};\r\n\r\n\r\n gridOptions = {\r\n rowStyle: {\r\n \"font-family\": \"Prompt, sans-serif\"\r\n },\r\n rowHeight: 20,\r\n enableCellTextSelection: true,\r\n ensureDomOrder: true\r\n }; //enableCellTextSelection should be combined with ensureDomOrder\r\n frameworkComponents: any;\r\n\r\n mainGridApi: GridApi;\r\n tabbedGridApiList: any = {}; //a map of GridAPIs to tab names\r\n\r\n reportList: Report[] = [];\r\n tabList: ReportTab[] = [];\r\n tabTypeNameLookup: any = {}; //a kind of dict that maps the tab or type to the tab-name\r\n\r\n selectedReport: Report = new Report();\r\n selectedFormat: string;\r\n displayedParamComponentRefs: ComponentRef<any>[] = [];\r\n displayedFormatComponentRefs: ComponentRef<any>[] = [];\r\n\r\n constructor(private http: HttpClient,\r\n private resolver: ComponentFactoryResolver,\r\n private datePipe: DatePipe,\r\n private dialogsService: DialogsService,\r\n private modalService: NgbModal) {}\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.manageReportUrl != null) {\r\n\r\n this.http.get(this.manageReportUrl,\r\n {\r\n params: new HttpParams().set(\"action\", \"loadWithParams\")\r\n }\r\n ).subscribe(\r\n (resp) => {\r\n console.log(resp);\r\n var templist = [];\r\n var tempTabbedGridList = {};\r\n\r\n var tablist = resp[\"reportTabs\"];\r\n for (let row of tablist) {\r\n var tab: ReportTab = new ReportTab();\r\n tab.name = row.name;\r\n tab.title = row.title;\r\n tab.type = row.type;\r\n tab.tab = row.tab;\r\n tab.datakey = row.datakey;\r\n\r\n if (!this.reportsByType) {\r\n this.tabList.push(tab);\r\n if (tab.tab) {\r\n this.tabTypeNameLookup[tab.tab] = tab.name;\r\n }\r\n if (tab.type) {\r\n this.tabTypeNameLookup[tab.type] = tab.name;\r\n }\r\n }else {\r\n if (this.reportsByType == tab.type) {\r\n this.tabList.push(tab);\r\n this.tabTypeNameLookup[tab.tab] = tab.name;\r\n }\r\n }\r\n\r\n var tabGridList: any[] = [];\r\n this.tabbedGridList[tab.name] = tabGridList;\r\n tempTabbedGridList[tab.name] = [];\r\n }\r\n\r\n\r\n var list = resp[\"reportList\"];\r\n // console.log(list);\r\n for (let row of list) {\r\n var report: Report = new Report();\r\n report.name = row.name;\r\n report.title = row.title;\r\n report.description = row.description;\r\n report.className = row.className;\r\n report.fileName = row.fileName;\r\n report.type = row.type;\r\n report.tab = row.tab;\r\n report.datakey = row.datakey;\r\n report.help = row.help;\r\n\r\n const object = {\r\n name: report.name,\r\n title: report.title,\r\n description: report.description\r\n };\r\n\r\n\r\n var tabname;\r\n if (report.tab) {\r\n tabname = this.tabTypeNameLookup[report.tab];\r\n } else if (!this.reportsByType && report.type) {\r\n tabname = this.tabTypeNameLookup[report.type];\r\n }\r\n\r\n if (tabname) {\r\n var gridlist: any[] = tempTabbedGridList[tabname];\r\n\r\n if(this.reportsByType) {\r\n if (report.type === this.reportsByType ) {\r\n gridlist.push(object);\r\n }\r\n }else {\r\n gridlist.push(object);\r\n }\r\n }\r\n\r\n let params = row.params;\r\n if (params) {\r\n\r\n for (let p of params) {\r\n // console.log(p);\r\n var newParam: Param = new Param();\r\n newParam.dictAPILeadIn = this.dictAPILeadIn;\r\n\r\n newParam.caption = p.caption;\r\n newParam.name = p.name;\r\n newParam.type = p.type;\r\n newParam.className = p.className;\r\n newParam.valueXPath = p.valueXPath;\r\n newParam.displayXPath = p.displayXPath;\r\n newParam.displayOrder = p.displayOrder;\r\n newParam.activeOnly = p.activeOnly;\r\n\r\n if (newParam.valueXPath) {\r\n newParam.valueXPath = newParam.valueXPath.replace(\"@\", \"\");\r\n }\r\n if (newParam.displayXPath) {\r\n newParam.displayXPath = newParam.displayXPath.replace(\"@\", \"\");\r\n }\r\n\r\n let options = p.options;\r\n if (options) {\r\n\r\n for (let o of options) {\r\n var newOption: Option = new Option();\r\n newOption.value = o.value;\r\n newOption.display = o.display;\r\n newOption.displayOrder = o.displayOrder;\r\n\r\n newParam.options.push(newOption);\r\n }\r\n }\r\n\r\n report.params.push(newParam);\r\n }\r\n }\r\n\r\n let formats = row.formats;\r\n if (formats) {\r\n\r\n for (let f of formats) {\r\n var newFormat: Format = new Format();\r\n newFormat.name = f.name;\r\n newFormat.caption = f.caption;\r\n newFormat.displayOrder = f.displayOrder;\r\n\r\n report.formats.push(newFormat);\r\n }\r\n }\r\n\r\n\r\n this.reportList.push(report);\r\n\r\n if (this.reportsByType) {\r\n if(report.type === this.reportsByType) {\r\n templist.push(object);\r\n }\r\n } else {\r\n templist.push(object);\r\n }\r\n }\r\n\r\n this.fullGridList = templist.slice();\r\n console.log(\"gridlist: \");\r\n console.log(this.fullGridList);\r\n\r\n for(let tab of this.tabList){\r\n this.tabbedGridList[tab.name] = tempTabbedGridList[tab.name].slice();\r\n }\r\n\r\n }\r\n );\r\n }\r\n }\r\n\r\n public columnDef() : any[] {\r\n return [\r\n\r\n {\r\n field: \"title\",\r\n headerName: \"Title\",\r\n width: 300,\r\n sortable: true,\r\n resizable: true,\r\n editable: false},\r\n {\r\n field: \"description\",\r\n headerName: \"Description\",\r\n sortable: true,\r\n resizable: true,\r\n editable: false}\r\n ];\r\n\r\n }\r\n\r\n onMainGridReady(params : any) {\r\n\r\n this.mainGridApi = params.api;\r\n this.mainGridApi.setColumnDefs(this.columnDef());\r\n this.mainGridApi.setRowData(this.fullGridList);\r\n this.mainGridApi.sizeColumnsToFit();\r\n }\r\n\r\n onTabbedGridReady(params : any, tabname: string) {\r\n\r\n this.tabbedGridApiList[tabname] = params.api;\r\n this.tabbedGridApiList[tabname].setColumnDefs(this.columnDef());\r\n this.tabbedGridApiList[tabname].setRowData(this.tabbedGridList[tabname]);\r\n this.tabbedGridApiList[tabname].sizeColumnsToFit();\r\n }\r\n\r\n setSelectedRow(event) {\r\n\r\n //console.log(event);\r\n if(event.node.selected) {\r\n let reportName = event.node.data.name;\r\n console.log(event.node.data.name);\r\n\r\n var matchedReport: Report;\r\n for (let r of this.reportList) {\r\n if (r.name == reportName) {\r\n matchedReport = r;\r\n }\r\n }\r\n\r\n if (matchedReport != null) {\r\n this.selectedReport = matchedReport;\r\n } else {\r\n this.selectedReport = new Report();\r\n }\r\n\r\n this.createParamComponents();\r\n }\r\n }\r\n\r\n createParamComponents() {\r\n if(this.paramContainer) {\r\n this.paramContainer.clear();\r\n }\r\n if(this.formatContainer) {\r\n this.formatContainer.clear();\r\n }\r\n\r\n //destroy previous components and clear the displayedRef lists..?\r\n this.destroyComponentRefs();\r\n this.displayedParamComponentRefs = [];\r\n this.displayedFormatComponentRefs = [];\r\n\r\n for(let p of this.selectedReport.params){\r\n\r\n const factory: ComponentFactory<ParameterComponent> = this.resolver.resolveComponentFactory(ParameterComponent);\r\n var componentRef: ComponentRef<ParameterComponent> = this.paramContainer.createComponent(factory);\r\n this.displayedParamComponentRefs.push(componentRef);\r\n\r\n componentRef.instance.setParam(p);\r\n\r\n if(p.options.length > 0) {\r\n var entries: any[] = [];\r\n for(let o of p.options){\r\n var e = {id: o.value, display: o.display};\r\n entries.push(e);\r\n }\r\n componentRef.instance.entries = entries;\r\n }\r\n\r\n }\r\n\r\n var first: boolean = true;\r\n for(let f of this.selectedReport.formats){\r\n\r\n const factory2: ComponentFactory<FormatComponent> = this.resolver.resolveComponentFactory(FormatComponent);\r\n var componentRef2: ComponentRef<FormatComponent> = this.formatContainer.createComponent(factory2);\r\n this.displayedFormatComponentRefs.push(componentRef2);\r\n\r\n componentRef2.instance.format = f;\r\n componentRef2.instance.selectedValueChange.subscribe(\r\n (s) => {\r\n this.selectedFormat = s;\r\n }\r\n );\r\n if(first) {//select the first format in the grouping\r\n componentRef2.instance.selectedValue = f.name;\r\n this.selectedFormat = f.name;\r\n first = false;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n openHelp(content) {\r\n\r\n this.modalService.open(content, {ariaLabelledBy: \"help-modal-title\"})\r\n .result.then((result) => {\r\n // this.closeResult = `Closed with: ${result}`;\r\n console.log(result);\r\n\r\n }, (reason) => {\r\n var closeResult = `Dismissed ${this.getDismissReason(reason)}`;\r\n console.log(closeResult);\r\n\r\n });\r\n\r\n }\r\n\r\n private getDismissReason(reason: any): string {\r\n if (reason === ModalDismissReasons.ESC) {\r\n return \"by pressing ESC\";\r\n } else if (reason === ModalDismissReasons.BACKDROP_CLICK) {\r\n return \"by clicking on a backdrop\";\r\n } else {\r\n return `with: ${reason}`;\r\n }\r\n }\r\n\r\n onRunReport() {\r\n\r\n if(this.selectedReport) {\r\n\r\n this.dialogsService.startDefaultSpinnerDialog();\r\n\r\n console.log(\"format:\" + this.selectedFormat);\r\n if(!this.selectedFormat) {\r\n this.selectedFormat = \"html\";\r\n }\r\n\r\n let runParams = new HttpParams();\r\n runParams = runParams.append(\"format\", this.selectedFormat);\r\n runParams = runParams.append(\"action\", \"show\");\r\n runParams = runParams.append(\"reportName\", this.selectedReport.name);\r\n\r\n runParams = this.getRunParameters(runParams);\r\n\r\n console.log(runParams);\r\n\r\n this.http.get(this.commandPrefix + this.selectedReport.className,\r\n {\r\n params: runParams,\r\n observe: \"response\",\r\n responseType: \"blob\"\r\n }\r\n ).subscribe(\r\n (res) => {\r\n console.log(res);\r\n\r\n var filename;\r\n if(this.selectedFormat != \"html\") {\r\n filename = res.headers.get(\"content-disposition\").split(\";\")[1].split(\"=\")[1].replace(/\\\"/g, \"\");\r\n }\r\n var blob = new Blob([res.body], {type: res.body.type} ); //, {type: \"application/vnd.ms-excel\"}\r\n var fileURL = window.URL.createObjectURL(blob);\r\n console.log(fileURL);\r\n\r\n const a: HTMLAnchorElement = document.createElement(\"a\") as HTMLAnchorElement;\r\n a.href = fileURL;\r\n if(this.selectedFormat == \"html\") {\r\n a.target = \"_blank\";\r\n }else {\r\n a.download = filename;\r\n }\r\n window.document.body.appendChild(a);\r\n a.click();\r\n window.document.body.removeChild(a);\r\n URL.revokeObjectURL(fileURL);\r\n\r\n this.dialogsService.stopAllSpinnerDialogs();\r\n }\r\n );\r\n }\r\n }\r\n\r\n getRunParameters(runParams: HttpParams): HttpParams {\r\n var newParams = runParams;\r\n\r\n for(let o of this.displayedParamComponentRefs){\r\n var param = o.instance.param;\r\n\r\n if(param.type == \"multiselect\") {\r\n var resList = \"\";\r\n for(let v of param.selectedValueList){\r\n if(resList != \"\") {\r\n resList += \",\";\r\n }\r\n resList += v;\r\n }\r\n newParams = newParams.append(param.name, resList);\r\n }else {\r\n var value;\r\n if(param.selectedValue) { //so we don't get \"undefined\" sent back\r\n if(param.type == \"date\") {\r\n value = this.getDateString(param.selectedValue);\r\n }else {\r\n value = param.selectedValue;\r\n }\r\n }else {\r\n value = \"\";\r\n }\r\n newParams = newParams.append(param.name, value);\r\n }\r\n }\r\n return newParams;\r\n }\r\n\r\n getDateString(date: any): string {\r\n\r\n if (date instanceof Date) {\r\n if (!isNaN(date.getTime())) {\r\n return this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n } else {\r\n return \"\";\r\n }\r\n }else if(moment.isMoment(date) ) {\r\n if(date != null) {\r\n return date.format(\"M/D/YYYY\");\r\n }else {\r\n return \"\";\r\n }\r\n }else if(typeof date == \"string\") {\r\n return date;\r\n }else {\r\n return \"\";\r\n }\r\n }\r\n\r\n destroyComponentRefs() {\r\n for(let o of this.displayedParamComponentRefs){\r\n o.destroy();\r\n }\r\n for(let o of this.displayedFormatComponentRefs){\r\n o.destroy();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyComponentRefs();\r\n }\r\n\r\n /*\r\n styles: [`\r\n .report-details{\r\n height: 100%;\r\n width: 100%;\r\n position: absolute\r\n }\r\n\r\n .center-row{\r\n margin-top: 10px;\r\n margin-left: 60vw;\r\n }\r\n\r\n .mat-tab-body-wrapper{\r\n flex-grow: 1;\r\n }\r\n\r\n.tab-pane{\r\n height: 100%;\r\n}\r\n`]*/\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule, DatePipe} from \"@angular/common\";\r\n\r\nimport {ReportingFrameworkComponent} from \"./reporting-framework.component\";\r\nimport {MatDatepickerModule} from \"@angular/material/datepicker\";\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {ReportDatepickerComponent} from \"./datepicker/report-datepicker.component\";\r\nimport {FormatComponent} from \"./format/format.component\";\r\nimport {ParameterComponent} from \"./parameter/parameter.component\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {SelectModule} from \"@huntsman-cancer-institute/input\";\r\nimport {SpinnerDialogComponent} from \"./spinner/spinner-dialog.component\";\r\nimport {AgGridModule} from \"ag-grid-angular\";\r\nimport {MatLegacyProgressSpinnerModule as MatProgressSpinnerModule} from \"@angular/material/legacy-progress-spinner\";\r\nimport { MatLegacyDialogModule as MatDialogModule } from \"@angular/material/legacy-dialog\";\r\nimport {DialogsService} from \"./spinner/dialogs.service\";\r\nimport {ResizableSectionDividerComponent} from \"./resizable-divider/resizable-section-divider.component\";\r\nimport {MatLegacyTabsModule as MatTabsModule} from \"@angular/material/legacy-tabs\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgbModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatProgressSpinnerModule,\r\n MatTabsModule,\r\n SelectModule,\r\n AgGridModule,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DialogsService\r\n ],\r\n declarations: [\r\n ReportingFrameworkComponent,\r\n ReportDatepickerComponent,\r\n ParameterComponent,\r\n FormatComponent,\r\n SpinnerDialogComponent,\r\n ResizableSectionDividerComponent\r\n ],\r\n exports: [\r\n ReportingFrameworkComponent\r\n ]\r\n})\r\nexport class ReportModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4.ReportDatepickerComponent","MAT_DIALOG_DATA","i1","i2","MatDialogConfig","i3.DialogsService","i7.ResizableSectionDividerComponent","MatDialogModule","MatProgressSpinnerModule","MatTabsModule"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huntsman-cancer-institute/reporting-framework",
|
|
3
|
-
"version": "16.0
|
|
3
|
+
"version": "16.1.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git@gitlab.com:huntsman-cancer-institute/risr/ng/hci-ng-lib.git"
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"ag-grid-community": "^28.x"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@huntsman-cancer-institute/dictionary-service": "16.0
|
|
23
|
-
"@huntsman-cancer-institute/input": "16.0
|
|
22
|
+
"@huntsman-cancer-institute/dictionary-service": "16.1.0",
|
|
23
|
+
"@huntsman-cancer-institute/input": "16.1.0",
|
|
24
24
|
"tslib": "^2.3.0"
|
|
25
25
|
},
|
|
26
26
|
"module": "fesm2022/huntsman-cancer-institute-reporting-framework.mjs",
|