stimulsoft-forms
Version:
Stimulsoft PDF Forms
193 lines (191 loc) • 19.4 kB
JavaScript
import { Component, Input } from "@angular/core";
import { RotateAnimation, SlideInOutAnimation } from "../../../animations/animations";
import * as i0 from "@angular/core";
import * as i1 from "../../../../services/model.service";
import * as i2 from "../../../../services/sti-helper.service";
import * as i3 from "../../../../services/theme.service";
import * as i4 from "../../../../services/sti-localization.service";
import * as i5 from "@angular/common";
import * as i6 from "../table/table-border-editor/table-border-editor.component";
import * as i7 from "../sti-barcode-shape-editor/sti-barcode-shape-editor.component";
export class StiBooleanWithArrowEditorComponent {
constructor(model, helper, theme, loc) {
this.model = model;
this.helper = helper;
this.theme = theme;
this.loc = loc;
}
ngOnInit() {
this._state = this.model.selectedComponent.element[this.property.property] == true ? "rotated" : "default";
}
get isBarcodeShape() {
return this.property.property == "showBodyBrushEditor" ||
this.property.property == "showEyeBallBrushEditor" ||
this.property.property == "showEyeFrameBrushEditor"
? true
: false;
}
get content() {
if (!this.isBarcodeShape) {
return this.property.property == "showGridLinesEditor"
? this.loc.get2("Chart", "GridLines")
: this.loc.getP("Border");
}
else {
if (this.property.property == "showBodyBrushEditor") {
return this.loc.getP("BodyBrush");
}
else if (this.property.property == "showEyeBallBrushEditor") {
return this.loc.getP("EyeBallBrush");
}
else {
return this.loc.getP("EyeFrameBrush");
}
}
}
getObject() {
if (this.property.property == "showGridLinesEditor") {
return this.helper.getProperty(this.model.selectedComponent.element, "gridLines");
}
else if (this.property.property == "showBorderEditor") {
return this.helper.getProperty(this.model.selectedComponent.element, "border");
}
else if (this.property.property == "showColumnsBorderEditor") {
return this.helper.getProperty(this.model.selectedComponent.element, "columnHeadersBorder");
}
else if (this.property.property == "showRowsBorderEditor") {
return this.helper.getProperty(this.model.selectedComponent.element, "rowHeadersBorder");
}
else {
return this.model.selectedComponent?.element;
}
}
get state() {
return this._state;
}
set state(value) {
this._state = value;
}
changeState() {
this.model.selectedComponent.element[this.property.property] =
!this.model.selectedComponent.element[this.property.property];
this.state = this.state == "default" ? "rotated" : "default";
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StiBooleanWithArrowEditorComponent, deps: [{ token: i1.StiModelService }, { token: i2.StiHelperService }, { token: i3.StiThemeService }, { token: i4.StiLocalizationService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: StiBooleanWithArrowEditorComponent, selector: "boolean-with-arrow-editor", inputs: { property: "property" }, ngImport: i0, template: `
<table class="sti-clear" [style]="{ width: '100%' }">
<tr>
<td colspan="7">
<div class="boolean-button" (click)="changeState()">
<div class="arrow" []="state">
<span class="select-button"><i class="pi pi-chevron-right"></i></span>
</div>
<div class="content">{{ content }}</div>
</div>
<sti-table-border-editor
*ngIf="!isBarcodeShape"
[property]="property"
[state]="state == 'default' ? false : true"
[object]="getObject()"
></sti-table-border-editor>
<sti-barcode-shape-editor
*ngIf="isBarcodeShape"
[property]="property"
[state]="state == 'default' ? false : true"
[object]="getObject()"
></sti-barcode-shape-editor>
</td>
</tr>
</table>
<style>
i {
width: 10px;
height: 10px;
}
.arrow {
width: 20px;
text-align: center;
cursor: default;
-webkit-touch-callout: none;
-webkit-user-select: none;
}
.content {
cursor: default;
-webkit-touch-callout: none;
-webkit-user-select: none;
}
.boolean-button {
width: 100%;
height: 22px;
display: flex;
flex-direction: row;
color: var(--text-color);
background-color: var(--hover-color);
border-top: 2px solid var(--toolbarResizerBorder-color);
}
</style>
`, isInline: true, styles: ["\n i {\n width: 10px;\n height: 10px;\n }\n .arrow {\n width: 20px;\n text-align: center;\n cursor: default;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n }\n\n .content {\n cursor: default;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n }\n .boolean-button {\n width: 100%;\n height: 22px;\n display: flex;\n flex-direction: row;\n color: var(--text-color);\n background-color: var(--hover-color);\n border-top: 2px solid var(--toolbarResizerBorder-color);\n }\n "], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.StiTableBorderEditorComponent, selector: "sti-table-border-editor", inputs: ["property", "state", "object"] }, { kind: "component", type: i7.StiBarcodeShapeEditorComponent, selector: "sti-barcode-shape-editor", inputs: ["property", "state", "object"] }], animations: [RotateAnimation, SlideInOutAnimation] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StiBooleanWithArrowEditorComponent, decorators: [{
type: Component,
args: [{
selector: "boolean-with-arrow-editor",
template: `
<table class="sti-clear" [style]="{ width: '100%' }">
<tr>
<td colspan="7">
<div class="boolean-button" (click)="changeState()">
<div class="arrow" []="state">
<span class="select-button"><i class="pi pi-chevron-right"></i></span>
</div>
<div class="content">{{ content }}</div>
</div>
<sti-table-border-editor
*ngIf="!isBarcodeShape"
[property]="property"
[state]="state == 'default' ? false : true"
[object]="getObject()"
></sti-table-border-editor>
<sti-barcode-shape-editor
*ngIf="isBarcodeShape"
[property]="property"
[state]="state == 'default' ? false : true"
[object]="getObject()"
></sti-barcode-shape-editor>
</td>
</tr>
</table>
<style>
i {
width: 10px;
height: 10px;
}
.arrow {
width: 20px;
text-align: center;
cursor: default;
-webkit-touch-callout: none;
-webkit-user-select: none;
}
.content {
cursor: default;
-webkit-touch-callout: none;
-webkit-user-select: none;
}
.boolean-button {
width: 100%;
height: 22px;
display: flex;
flex-direction: row;
color: var(--text-color);
background-color: var(--hover-color);
border-top: 2px solid var(--toolbarResizerBorder-color);
}
</style>
`,
animations: [RotateAnimation, SlideInOutAnimation],
}]
}], ctorParameters: () => [{ type: i1.StiModelService }, { type: i2.StiHelperService }, { type: i3.StiThemeService }, { type: i4.StiLocalizationService }], propDecorators: { property: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi13aXRoLWFycm93LWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdGltdWxzb2Z0LWZvcm1zL3NyYy9saWIvY29tcG9uZW50cy9wcm9wZXJ0eUdyaWQvZWRpdG9ycy9ib29sZWFuLXdpdGgtYXJyb3ctZWRpdG9yL2Jvb2xlYW4td2l0aC1hcnJvdy1lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBTXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7O0FBNER0RixNQUFNLE9BQU8sa0NBQWtDO0lBSTdDLFlBQ1MsS0FBc0IsRUFDdEIsTUFBd0IsRUFDeEIsS0FBc0IsRUFDdEIsR0FBMkI7UUFIM0IsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBd0I7SUFDakMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM3RyxDQUFDO0lBQ0QsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUkscUJBQXFCO1lBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLHdCQUF3QjtZQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSx5QkFBeUI7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QUFDLENBQUMsU0FBUyxDQUFDO0lBQy9ELENBQUM7K0dBNURVLGtDQUFrQzttR0FBbEMsa0NBQWtDLG1HQXhEbkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcURULDZrQ0FDVyxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQzs7NEZBRXZDLGtDQUFrQztrQkExRDlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFEVDtvQkFDRCxVQUFVLEVBQUUsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUM7aUJBQ25EO3NMQUVVLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTdGlNb2RlbFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZXMvbW9kZWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdGlFZGl0b3JQcm9wZXJ0eSB9IGZyb20gXCIuLi8uLi8uLi8uLi9zZXJ2aWNlcy9vYmplY3RzXCI7XHJcbmltcG9ydCB7IFN0aUhlbHBlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZXMvc3RpLWhlbHBlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN0aUxvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZXMvc3RpLWxvY2FsaXphdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN0aVRoZW1lU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFJvdGF0ZUFuaW1hdGlvbiwgU2xpZGVJbk91dEFuaW1hdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9hbmltYXRpb25zL2FuaW1hdGlvbnNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImJvb2xlYW4td2l0aC1hcnJvdy1lZGl0b3JcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHRhYmxlIGNsYXNzPVwic3RpLWNsZWFyXCIgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJyB9XCI+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGQgY29sc3Bhbj1cIjdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29sZWFuLWJ1dHRvblwiIChjbGljayk9XCJjaGFuZ2VTdGF0ZSgpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvd1wiIFtAcm90YXRlZFN0YXRlXT1cInN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtYnV0dG9uXCI+PGkgY2xhc3M9XCJwaSBwaS1jaGV2cm9uLXJpZ2h0XCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+e3sgY29udGVudCB9fTwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8c3RpLXRhYmxlLWJvcmRlci1lZGl0b3JcclxuICAgICAgICAgICAgKm5nSWY9XCIhaXNCYXJjb2RlU2hhcGVcIlxyXG4gICAgICAgICAgICBbcHJvcGVydHldPVwicHJvcGVydHlcIlxyXG4gICAgICAgICAgICBbc3RhdGVdPVwic3RhdGUgPT0gJ2RlZmF1bHQnID8gZmFsc2UgOiB0cnVlXCJcclxuICAgICAgICAgICAgW29iamVjdF09XCJnZXRPYmplY3QoKVwiXHJcbiAgICAgICAgICA+PC9zdGktdGFibGUtYm9yZGVyLWVkaXRvcj5cclxuICAgICAgICAgIDxzdGktYmFyY29kZS1zaGFwZS1lZGl0b3JcclxuICAgICAgICAgICAgKm5nSWY9XCJpc0JhcmNvZGVTaGFwZVwiXHJcbiAgICAgICAgICAgIFtwcm9wZXJ0eV09XCJwcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgIFtzdGF0ZV09XCJzdGF0ZSA9PSAnZGVmYXVsdCcgPyBmYWxzZSA6IHRydWVcIlxyXG4gICAgICAgICAgICBbb2JqZWN0XT1cImdldE9iamVjdCgpXCJcclxuICAgICAgICAgID48L3N0aS1iYXJjb2RlLXNoYXBlLWVkaXRvcj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90YWJsZT5cclxuICAgIDxzdHlsZT5cclxuICAgICAgaSB7XHJcbiAgICAgICAgd2lkdGg6IDEwcHg7XHJcbiAgICAgICAgaGVpZ2h0OiAxMHB4O1xyXG4gICAgICB9XHJcbiAgICAgIC5hcnJvdyB7XHJcbiAgICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcclxuICAgICAgICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7XHJcbiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmNvbnRlbnQge1xyXG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcclxuICAgICAgICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7XHJcbiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAgICAgfVxyXG4gICAgICAuYm9vbGVhbi1idXR0b24ge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGhlaWdodDogMjJweDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWhvdmVyLWNvbG9yKTtcclxuICAgICAgICBib3JkZXItdG9wOiAycHggc29saWQgdmFyKC0tdG9vbGJhclJlc2l6ZXJCb3JkZXItY29sb3IpO1xyXG4gICAgICB9XHJcbiAgICA8L3N0eWxlPlxyXG4gIGAsXHJcbiAgYW5pbWF0aW9uczogW1JvdGF0ZUFuaW1hdGlvbiwgU2xpZGVJbk91dEFuaW1hdGlvbl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGlCb29sZWFuV2l0aEFycm93RWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBwcm9wZXJ0eTogU3RpRWRpdG9yUHJvcGVydHk7XHJcbiAgcHJpdmF0ZSBfc3RhdGU6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgbW9kZWw6IFN0aU1vZGVsU2VydmljZSxcclxuICAgIHB1YmxpYyBoZWxwZXI6IFN0aUhlbHBlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdGhlbWU6IFN0aVRoZW1lU2VydmljZSxcclxuICAgIHB1YmxpYyBsb2M6IFN0aUxvY2FsaXphdGlvblNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RhdGUgPSB0aGlzLm1vZGVsLnNlbGVjdGVkQ29tcG9uZW50LmVsZW1lbnRbdGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eV0gPT0gdHJ1ZSA/IFwicm90YXRlZFwiIDogXCJkZWZhdWx0XCI7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgaXNCYXJjb2RlU2hhcGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eSA9PSBcInNob3dCb2R5QnJ1c2hFZGl0b3JcIiB8fFxyXG4gICAgICB0aGlzLnByb3BlcnR5LnByb3BlcnR5ID09IFwic2hvd0V5ZUJhbGxCcnVzaEVkaXRvclwiIHx8XHJcbiAgICAgIHRoaXMucHJvcGVydHkucHJvcGVydHkgPT0gXCJzaG93RXllRnJhbWVCcnVzaEVkaXRvclwiXHJcbiAgICAgID8gdHJ1ZVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjb250ZW50KCkge1xyXG4gICAgaWYgKCF0aGlzLmlzQmFyY29kZVNoYXBlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnByb3BlcnR5LnByb3BlcnR5ID09IFwic2hvd0dyaWRMaW5lc0VkaXRvclwiXHJcbiAgICAgICAgPyB0aGlzLmxvYy5nZXQyKFwiQ2hhcnRcIiwgXCJHcmlkTGluZXNcIilcclxuICAgICAgICA6IHRoaXMubG9jLmdldFAoXCJCb3JkZXJcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eSA9PSBcInNob3dCb2R5QnJ1c2hFZGl0b3JcIikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYy5nZXRQKFwiQm9keUJydXNoXCIpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJvcGVydHkucHJvcGVydHkgPT0gXCJzaG93RXllQmFsbEJydXNoRWRpdG9yXCIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2MuZ2V0UChcIkV5ZUJhbGxCcnVzaFwiKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2MuZ2V0UChcIkV5ZUZyYW1lQnJ1c2hcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIGdldE9iamVjdCgpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMucHJvcGVydHkucHJvcGVydHkgPT0gXCJzaG93R3JpZExpbmVzRWRpdG9yXCIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGVscGVyLmdldFByb3BlcnR5KHRoaXMubW9kZWwuc2VsZWN0ZWRDb21wb25lbnQuZWxlbWVudCwgXCJncmlkTGluZXNcIik7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcGVydHkucHJvcGVydHkgPT0gXCJzaG93Qm9yZGVyRWRpdG9yXCIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGVscGVyLmdldFByb3BlcnR5KHRoaXMubW9kZWwuc2VsZWN0ZWRDb21wb25lbnQuZWxlbWVudCwgXCJib3JkZXJcIik7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcGVydHkucHJvcGVydHkgPT0gXCJzaG93Q29sdW1uc0JvcmRlckVkaXRvclwiKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmhlbHBlci5nZXRQcm9wZXJ0eSh0aGlzLm1vZGVsLnNlbGVjdGVkQ29tcG9uZW50LmVsZW1lbnQsIFwiY29sdW1uSGVhZGVyc0JvcmRlclwiKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eSA9PSBcInNob3dSb3dzQm9yZGVyRWRpdG9yXCIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGVscGVyLmdldFByb3BlcnR5KHRoaXMubW9kZWwuc2VsZWN0ZWRDb21wb25lbnQuZWxlbWVudCwgXCJyb3dIZWFkZXJzQm9yZGVyXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubW9kZWwuc2VsZWN0ZWRDb21wb25lbnQ/LmVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgc3RhdGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcclxuICB9XHJcbiAgcHVibGljIHNldCBzdGF0ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zdGF0ZSA9IHZhbHVlO1xyXG4gIH1cclxuICBjaGFuZ2VTdGF0ZSgpIHtcclxuICAgIHRoaXMubW9kZWwuc2VsZWN0ZWRDb21wb25lbnQuZWxlbWVudFt0aGlzLnByb3BlcnR5LnByb3BlcnR5XSA9XHJcbiAgICAgICF0aGlzLm1vZGVsLnNlbGVjdGVkQ29tcG9uZW50LmVsZW1lbnRbdGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eV07XHJcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSA9PSBcImRlZmF1bHRcIiA/IFwicm90YXRlZFwiIDogXCJkZWZhdWx0XCI7XHJcbiAgfVxyXG59XHJcbiJdfQ==