ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
144 lines • 20.1 kB
JavaScript
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
import { ChangeDetectionStrategy, Component, Input, Optional, SkipSelf, ViewEncapsulation, booleanAttribute } from '@angular/core';
import { Subject } from 'rxjs';
import { filter, takeUntil } from 'rxjs/operators';
import { NzOutletModule } from 'ng-zorro-antd/core/outlet';
import { NzIconModule } from 'ng-zorro-antd/icon';
import { NzTooltipDirective } from 'ng-zorro-antd/tooltip';
import { DefaultTooltipIcon } from './form.directive';
import * as i0 from "@angular/core";
import * as i1 from "./form.directive";
import * as i2 from "ng-zorro-antd/core/outlet";
import * as i3 from "ng-zorro-antd/icon";
function toTooltipIcon(value) {
const icon = typeof value === 'string' ? { type: value } : value;
return { ...DefaultTooltipIcon, ...icon };
}
export class NzFormLabelComponent {
set nzNoColon(value) {
this.noColon = value;
}
get nzNoColon() {
return this.noColon !== 'default' ? this.noColon : this.nzFormDirective?.nzNoColon;
}
set nzTooltipIcon(value) {
this._tooltipIcon = toTooltipIcon(value);
}
// due to 'get' and 'set' accessor must have the same type, so it was renamed to `tooltipIcon`
get tooltipIcon() {
return this._tooltipIcon !== 'default'
? this._tooltipIcon
: toTooltipIcon(this.nzFormDirective?.nzTooltipIcon || DefaultTooltipIcon);
}
set nzLabelAlign(value) {
this.labelAlign = value;
}
get nzLabelAlign() {
return this.labelAlign !== 'default' ? this.labelAlign : this.nzFormDirective?.nzLabelAlign || 'right';
}
set nzLabelWrap(value) {
this.labelWrap = value;
}
get nzLabelWrap() {
return this.labelWrap !== 'default' ? this.labelWrap : this.nzFormDirective?.nzLabelWrap;
}
constructor(cdr, nzFormDirective) {
this.cdr = cdr;
this.nzFormDirective = nzFormDirective;
this.nzRequired = false;
this.noColon = 'default';
this._tooltipIcon = 'default';
this.labelAlign = 'default';
this.labelWrap = 'default';
this.destroy$ = new Subject();
if (this.nzFormDirective) {
this.nzFormDirective
.getInputObservable('nzNoColon')
.pipe(filter(() => this.noColon === 'default'), takeUntil(this.destroy$))
.subscribe(() => this.cdr.markForCheck());
this.nzFormDirective
.getInputObservable('nzTooltipIcon')
.pipe(filter(() => this._tooltipIcon === 'default'), takeUntil(this.destroy$))
.subscribe(() => this.cdr.markForCheck());
this.nzFormDirective
.getInputObservable('nzLabelAlign')
.pipe(filter(() => this.labelAlign === 'default'), takeUntil(this.destroy$))
.subscribe(() => this.cdr.markForCheck());
this.nzFormDirective
.getInputObservable('nzLabelWrap')
.pipe(filter(() => this.labelWrap === 'default'), takeUntil(this.destroy$))
.subscribe(() => this.cdr.markForCheck());
}
}
ngOnDestroy() {
this.destroy$.next(true);
this.destroy$.complete();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NzFormLabelComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NzFormDirective, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: NzFormLabelComponent, isStandalone: true, selector: "nz-form-label", inputs: { nzFor: "nzFor", nzRequired: ["nzRequired", "nzRequired", booleanAttribute], nzNoColon: ["nzNoColon", "nzNoColon", booleanAttribute], nzTooltipTitle: "nzTooltipTitle", nzTooltipIcon: "nzTooltipIcon", nzLabelAlign: "nzLabelAlign", nzLabelWrap: ["nzLabelWrap", "nzLabelWrap", booleanAttribute] }, host: { properties: { "class.ant-form-item-label-left": "nzLabelAlign === 'left'", "class.ant-form-item-label-wrap": "nzLabelWrap" }, classAttribute: "ant-form-item-label" }, exportAs: ["nzFormLabel"], ngImport: i0, template: `
<label [attr.for]="nzFor" [class.ant-form-item-no-colon]="nzNoColon" [class.ant-form-item-required]="nzRequired">
<ng-content></ng-content>
(nzTooltipTitle) {
<span class="ant-form-item-tooltip" nz-tooltip [nzTooltipTitle]="nzTooltipTitle">
<ng-container *nzStringTemplateOutlet="tooltipIcon.type; let tooltipIconType">
<span nz-icon [nzType]="tooltipIconType" [nzTheme]="tooltipIcon.theme"></span>
</ng-container>
</span>
}
</label>
`, isInline: true, dependencies: [{ kind: "ngmodule", type: NzOutletModule }, { kind: "directive", type: i2.NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }, { kind: "directive", type: NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NzFormLabelComponent, decorators: [{
type: Component,
args: [{
selector: 'nz-form-label',
exportAs: 'nzFormLabel',
preserveWhitespaces: false,
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<label [attr.for]="nzFor" [class.ant-form-item-no-colon]="nzNoColon" [class.ant-form-item-required]="nzRequired">
<ng-content></ng-content>
(nzTooltipTitle) {
<span class="ant-form-item-tooltip" nz-tooltip [nzTooltipTitle]="nzTooltipTitle">
<ng-container *nzStringTemplateOutlet="tooltipIcon.type; let tooltipIconType">
<span nz-icon [nzType]="tooltipIconType" [nzTheme]="tooltipIcon.theme"></span>
</ng-container>
</span>
}
</label>
`,
host: {
class: 'ant-form-item-label',
'[class.ant-form-item-label-left]': `nzLabelAlign === 'left'`,
'[class.ant-form-item-label-wrap]': `nzLabelWrap`
},
imports: [NzOutletModule, NzTooltipDirective, NzIconModule],
standalone: true
}]
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.NzFormDirective, decorators: [{
type: Optional
}, {
type: SkipSelf
}] }], propDecorators: { nzFor: [{
type: Input
}], nzRequired: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], nzNoColon: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], nzTooltipTitle: [{
type: Input
}], nzTooltipIcon: [{
type: Input
}], nzLabelAlign: [{
type: Input
}], nzLabelWrap: [{
type: Input,
args: [{ transform: booleanAttribute }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1sYWJlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL2Zvcm0vZm9ybS1sYWJlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUVMLFFBQVEsRUFDUixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQXFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBT3pGLFNBQVMsYUFBYSxDQUFDLEtBQWlDO0lBQ3RELE1BQU0sSUFBSSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNqRSxPQUFPLEVBQUUsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0FBQzVDLENBQUM7QUE0QkQsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixJQUNJLFNBQVMsQ0FBQyxLQUFjO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FB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RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUVsQyxTQUFTO3NCQURaLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBVTdCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUYsYUFBYTtzQkFEaEIsS0FBSztnQkFhRixZQUFZO3NCQURmLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBTa2lwU2VsZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVGhlbWVUeXBlIH0gZnJvbSAnQGFudC1kZXNpZ24vaWNvbnMtYW5ndWxhcic7XG5cbmltcG9ydCB7IE56T3V0bGV0TW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL291dGxldCc7XG5pbXBvcnQgeyBOelRTVHlwZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBOekljb25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2ljb24nO1xuaW1wb3J0IHsgTnpUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnbmctem9ycm8tYW50ZC90b29sdGlwJztcblxuaW1wb3J0IHsgRGVmYXVsdFRvb2x0aXBJY29uLCBOekZvcm1EaXJlY3RpdmUsIE56TGFiZWxBbGlnblR5cGUgfSBmcm9tICcuL2Zvcm0uZGlyZWN0aXZlJztcblxuZXhwb3J0IGludGVyZmFjZSBOekZvcm1Ub29sdGlwSWNvbiB7XG4gIHR5cGU6IE56VFNUeXBlO1xuICB0aGVtZTogVGhlbWVUeXBlO1xufVxuXG5mdW5jdGlvbiB0b1Rvb2x0aXBJY29uKHZhbHVlOiBzdHJpbmcgfCBOekZvcm1Ub29sdGlwSWNvbik6IFJlcXVpcmVkPE56Rm9ybVRvb2x0aXBJY29uPiB7XG4gIGNvbnN0IGljb24gPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8geyB0eXBlOiB2YWx1ZSB9IDogdmFsdWU7XG4gIHJldHVybiB7IC4uLkRlZmF1bHRUb29sdGlwSWNvbiwgLi4uaWNvbiB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduei1mb3JtLWxhYmVsJyxcbiAgZXhwb3J0QXM6ICduekZvcm1MYWJlbCcsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bGFiZWwgW2F0dHIuZm9yXT1cIm56Rm9yXCIgW2NsYXNzLmFudC1mb3JtLWl0ZW0tbm8tY29sb25dPVwibnpOb0NvbG9uXCIgW2NsYXNzLmFudC1mb3JtLWl0ZW0tcmVxdWlyZWRdPVwibnpSZXF1aXJlZFwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgQGlmIChuelRvb2x0aXBUaXRsZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImFudC1mb3JtLWl0ZW0tdG9vbHRpcFwiIG56LXRvb2x0aXAgW256VG9vbHRpcFRpdGxlXT1cIm56VG9vbHRpcFRpdGxlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbnpTdHJpbmdUZW1wbGF0ZU91dGxldD1cInRvb2x0aXBJY29uLnR5cGU7IGxldCB0b29sdGlwSWNvblR5cGVcIj5cbiAgICAgICAgICAgIDxzcGFuIG56LWljb24gW256VHlwZV09XCJ0b29sdGlwSWNvblR5cGVcIiBbbnpUaGVtZV09XCJ0b29sdGlwSWNvbi50aGVtZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIDwvbGFiZWw+XG4gIGAsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2FudC1mb3JtLWl0ZW0tbGFiZWwnLFxuICAgICdbY2xhc3MuYW50LWZvcm0taXRlbS1sYWJlbC1sZWZ0XSc6IGBuekxhYmVsQWxpZ24gPT09ICdsZWZ0J2AsXG4gICAgJ1tjbGFzcy5hbnQtZm9ybS1pdGVtLWxhYmVsLXdyYXBdJzogYG56TGFiZWxXcmFwYFxuICB9LFxuICBpbXBvcnRzOiBbTnpPdXRsZXRNb2R1bGUsIE56VG9vbHRpcERpcmVjdGl2ZSwgTnpJY29uTW9kdWxlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBOekZvcm1MYWJlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIG56Rm9yPzogc3RyaW5nO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbnpSZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgc2V0IG56Tm9Db2xvbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubm9Db2xvbiA9IHZhbHVlO1xuICB9XG4gIGdldCBuek5vQ29sb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubm9Db2xvbiAhPT0gJ2RlZmF1bHQnID8gdGhpcy5ub0NvbG9uIDogdGhpcy5uekZvcm1EaXJlY3RpdmU/Lm56Tm9Db2xvbjtcbiAgfVxuXG4gIHByaXZhdGUgbm9Db2xvbjogYm9vbGVhbiB8ICdkZWZhdWx0JyA9ICdkZWZhdWx0JztcblxuICBASW5wdXQoKSBuelRvb2x0aXBUaXRsZT86IE56VFNUeXBlO1xuICBASW5wdXQoKVxuICBzZXQgbnpUb29sdGlwSWNvbih2YWx1ZTogc3RyaW5nIHwgTnpGb3JtVG9vbHRpcEljb24pIHtcbiAgICB0aGlzLl90b29sdGlwSWNvbiA9IHRvVG9vbHRpcEljb24odmFsdWUpO1xuICB9XG4gIC8vIGR1ZSB0byAnZ2V0JyBhbmQgJ3NldCcgYWNjZXNzb3IgbXVzdCBoYXZlIHRoZSBzYW1lIHR5cGUsIHNvIGl0IHdhcyByZW5hbWVkIHRvIGB0b29sdGlwSWNvbmBcbiAgZ2V0IHRvb2x0aXBJY29uKCk6IE56Rm9ybVRvb2x0aXBJY29uIHtcbiAgICByZXR1cm4gdGhpcy5fdG9vbHRpcEljb24gIT09ICdkZWZhdWx0J1xuICAgICAgPyB0aGlzLl90b29sdGlwSWNvblxuICAgICAgOiB0b1Rvb2x0aXBJY29uKHRoaXMubnpGb3JtRGlyZWN0aXZlPy5uelRvb2x0aXBJY29uIHx8IERlZmF1bHRUb29sdGlwSWNvbik7XG4gIH1cbiAgcHJpdmF0ZSBfdG9vbHRpcEljb246IE56Rm9ybVRvb2x0aXBJY29uIHwgJ2RlZmF1bHQnID0gJ2RlZmF1bHQnO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBuekxhYmVsQWxpZ24odmFsdWU6IE56TGFiZWxBbGlnblR5cGUpIHtcbiAgICB0aGlzLmxhYmVsQWxpZ24gPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBuekxhYmVsQWxpZ24oKTogTnpMYWJlbEFsaWduVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxBbGlnbiAhPT0gJ2RlZmF1bHQnID8gdGhpcy5sYWJlbEFsaWduIDogdGhpcy5uekZvcm1EaXJlY3RpdmU/Lm56TGFiZWxBbGlnbiB8fCAncmlnaHQnO1xuICB9XG5cbiAgcHJpdmF0ZSBsYWJlbEFsaWduOiBOekxhYmVsQWxpZ25UeXBlIHwgJ2RlZmF1bHQnID0gJ2RlZmF1bHQnO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBzZXQgbnpMYWJlbFdyYXAodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxhYmVsV3JhcCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IG56TGFiZWxXcmFwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxhYmVsV3JhcCAhPT0gJ2RlZmF1bHQnID8gdGhpcy5sYWJlbFdyYXAgOiB0aGlzLm56Rm9ybURpcmVjdGl2ZT8ubnpMYWJlbFdyYXA7XG4gIH1cblxuICBwcml2YXRlIGxhYmVsV3JhcDogYm9vbGVhbiB8ICdkZWZhdWx0JyA9ICdkZWZhdWx0JztcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBuekZvcm1EaXJlY3RpdmU6IE56Rm9ybURpcmVjdGl2ZVxuICApIHtcbiAgICBpZiAodGhpcy5uekZvcm1EaXJlY3RpdmUpIHtcbiAgICAgIHRoaXMubnpGb3JtRGlyZWN0aXZlXG4gICAgICAgIC5nZXRJbnB1dE9ic2VydmFibGUoJ256Tm9Db2xvbicpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLm5vQ29sb24gPT09ICdkZWZhdWx0JyksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSk7XG5cbiAgICAgIHRoaXMubnpGb3JtRGlyZWN0aXZlXG4gICAgICAgIC5nZXRJbnB1dE9ic2VydmFibGUoJ256VG9vbHRpcEljb24nKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fdG9vbHRpcEljb24gPT09ICdkZWZhdWx0JyksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSk7XG5cbiAgICAgIHRoaXMubnpGb3JtRGlyZWN0aXZlXG4gICAgICAgIC5nZXRJbnB1dE9ic2VydmFibGUoJ256TGFiZWxBbGlnbicpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmxhYmVsQWxpZ24gPT09ICdkZWZhdWx0JyksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSk7XG5cbiAgICAgIHRoaXMubnpGb3JtRGlyZWN0aXZlXG4gICAgICAgIC5nZXRJbnB1dE9ic2VydmFibGUoJ256TGFiZWxXcmFwJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMubGFiZWxXcmFwID09PSAnZGVmYXVsdCcpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==