UNPKG

@xmagic/nz-formly

Version:

基于ng-zorro-antd UI 扩展的ngx-formly组件库

176 lines (174 loc) 17.2 kB
import { ChangeDetectionStrategy, Component, Optional } from '@angular/core'; import { FieldType } from '@ngx-formly/core'; import { resolveTplName } from '@xmagic/nz-formly/common'; import * as i0 from "@angular/core"; import * as i1 from "@xmagic/nz-formly/common"; import * as i2 from "@angular/common"; import * as i3 from "ng-zorro-antd/tabs"; import * as i4 from "@ngx-formly/core"; export class FormlyFieldTabsComponent extends FieldType { fieldTemplates; defaultOptions = { props: { nzTabPosition: 'top', nzType: 'line', nzAnimated: true, nzSize: 'default', nzLinkExact: true } }; constructor(fieldTemplates) { super(); this.fieldTemplates = fieldTemplates; } get nzTabBarExtraContent() { return resolveTplName(this.props, this.fieldTemplates, 'nzTabBarExtraContent'); } getNzTitle(config) { return resolveTplName(config, this.fieldTemplates, 'nzTitle'); } /** * 获取tab内容 * @param item */ getNzxContent(item) { return resolveTplName(item, this.fieldTemplates, 'nzxContent'); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormlyFieldTabsComponent, deps: [{ token: i1.FormlyBoxTemplates, optional: true }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormlyFieldTabsComponent, selector: "nz-formly-tabs", usesInheritance: true, ngImport: i0, template: ` <nz-tabset #instance [formlyAttributes]="field" [(nzSelectedIndex)]="props.nzSelectedIndex" [nzAnimated]="props.nzAnimated" [nzSize]="props.nzSize" [nzTabBarExtraContent]="nzTabBarExtraContent" [nzTabBarStyle]="props.nzTabBarStyle" [nzTabPosition]="props.nzTabPosition" [nzType]="props.nzType" [nzTabBarGutter]="props.nzTabBarGutter" [nzHideAll]="props.nzHideAll" [nzLinkRouter]="props.nzLinkRouter" [nzLinkExact]="props.nzLinkExact" [nzCanDeactivate]="props.nzCanDeactivate" [nzCentered]="props.nzCentered" (nzSelectedIndexChange)="props.nzSelectedIndexChange?.($event, field, instance)" (nzSelectChange)="props.nzSelectChange?.($event, field, instance)" [nzHideAdd]="props.nzHideAdd" [nzAddIcon]="props.nzAddIcon" (nzAdd)="props.nzAdd?.($event, field, instance)" (nzClose)="props.nzClose?.($event, field, instance)" > <ng-container *ngIf="props.tabs?.length; else fieldGroupTemplate"> <ng-container *ngFor="let item of props.tabs"> <nz-tab *ngIf="item.hide !== false" [nzTitle]="getNzTitle(item)" (nzClick)="item.nzClick?.($event, item.props.tab, instance)" [nzForceRender]="item.nzForceRender" [nzDisabled]="item.nzDisabled || item.disabled" (nzContextmenu)="item.nzContextmenu?.($event, item.props.tab, instance)" (nzSelect)="item.nzSelect?.($event, item.props.tab, instance)" (nzDeselect)="item.nzDeselect?.($event, item.props.tab, instance)" [nzClosable]="item.nzClosable" [nzCloseIcon]="item.nzCloseIcon" [formlyAttributes]="item" > <ng-container *ngTemplateOutlet="getNzxContent(item); context: { $implicit: item, field: field }" ></ng-container> </nz-tab> </ng-container> </ng-container> <ng-template #fieldGroupTemplate> <ng-container *ngFor="let item of field.fieldGroup"> <nz-tab *ngIf="item.props.tab?.hide !== false" [nzTitle]="getNzTitle(item.props?.tab || {})" (nzClick)="item.props.tab?.nzClick?.($event, item.props.tab, instance)" [nzForceRender]="item.props.tab?.nzForceRender" [nzDisabled]="item.props.tab?.nzDisabled || item.props.tab?.disabled" (nzContextmenu)="item.props.tab?.nzContextmenu?.($event, item.props.tab, instance)" (nzSelect)="item.props.tab?.nzSelect?.($event, item.props.tab, instance)" (nzDeselect)="item.props.tab?.nzDeselect?.($event, item.props.tab, instance)" [nzClosable]="item.props.tab?.nzClosable" [nzCloseIcon]="item.props.tab?.nzCloseIcon" [formlyAttributes]="item.props.tab" > <formly-field [field]="item"></formly-field> </nz-tab> </ng-container> </ng-template> </nz-tabset> `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.NzTabSetComponent, selector: "nz-tabset", inputs: ["nzSelectedIndex", "nzTabPosition", "nzTabBarExtraContent", "nzCanDeactivate", "nzAddIcon", "nzTabBarStyle", "nzType", "nzSize", "nzAnimated", "nzTabBarGutter", "nzHideAdd", "nzCentered", "nzHideAll", "nzLinkRouter", "nzLinkExact"], outputs: ["nzSelectChange", "nzSelectedIndexChange", "nzTabListScroll", "nzClose", "nzAdd"], exportAs: ["nzTabset"] }, { kind: "component", type: i3.NzTabComponent, selector: "nz-tab", inputs: ["nzTitle", "nzClosable", "nzCloseIcon", "nzDisabled", "nzForceRender"], outputs: ["nzSelect", "nzDeselect", "nzClick", "nzContextmenu"], exportAs: ["nzTab"] }, { kind: "component", type: i4.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "directive", type: i4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormlyFieldTabsComponent, decorators: [{ type: Component, args: [{ selector: 'nz-formly-tabs', template: ` <nz-tabset #instance [formlyAttributes]="field" [(nzSelectedIndex)]="props.nzSelectedIndex" [nzAnimated]="props.nzAnimated" [nzSize]="props.nzSize" [nzTabBarExtraContent]="nzTabBarExtraContent" [nzTabBarStyle]="props.nzTabBarStyle" [nzTabPosition]="props.nzTabPosition" [nzType]="props.nzType" [nzTabBarGutter]="props.nzTabBarGutter" [nzHideAll]="props.nzHideAll" [nzLinkRouter]="props.nzLinkRouter" [nzLinkExact]="props.nzLinkExact" [nzCanDeactivate]="props.nzCanDeactivate" [nzCentered]="props.nzCentered" (nzSelectedIndexChange)="props.nzSelectedIndexChange?.($event, field, instance)" (nzSelectChange)="props.nzSelectChange?.($event, field, instance)" [nzHideAdd]="props.nzHideAdd" [nzAddIcon]="props.nzAddIcon" (nzAdd)="props.nzAdd?.($event, field, instance)" (nzClose)="props.nzClose?.($event, field, instance)" > <ng-container *ngIf="props.tabs?.length; else fieldGroupTemplate"> <ng-container *ngFor="let item of props.tabs"> <nz-tab *ngIf="item.hide !== false" [nzTitle]="getNzTitle(item)" (nzClick)="item.nzClick?.($event, item.props.tab, instance)" [nzForceRender]="item.nzForceRender" [nzDisabled]="item.nzDisabled || item.disabled" (nzContextmenu)="item.nzContextmenu?.($event, item.props.tab, instance)" (nzSelect)="item.nzSelect?.($event, item.props.tab, instance)" (nzDeselect)="item.nzDeselect?.($event, item.props.tab, instance)" [nzClosable]="item.nzClosable" [nzCloseIcon]="item.nzCloseIcon" [formlyAttributes]="item" > <ng-container *ngTemplateOutlet="getNzxContent(item); context: { $implicit: item, field: field }" ></ng-container> </nz-tab> </ng-container> </ng-container> <ng-template #fieldGroupTemplate> <ng-container *ngFor="let item of field.fieldGroup"> <nz-tab *ngIf="item.props.tab?.hide !== false" [nzTitle]="getNzTitle(item.props?.tab || {})" (nzClick)="item.props.tab?.nzClick?.($event, item.props.tab, instance)" [nzForceRender]="item.props.tab?.nzForceRender" [nzDisabled]="item.props.tab?.nzDisabled || item.props.tab?.disabled" (nzContextmenu)="item.props.tab?.nzContextmenu?.($event, item.props.tab, instance)" (nzSelect)="item.props.tab?.nzSelect?.($event, item.props.tab, instance)" (nzDeselect)="item.props.tab?.nzDeselect?.($event, item.props.tab, instance)" [nzClosable]="item.props.tab?.nzClosable" [nzCloseIcon]="item.props.tab?.nzCloseIcon" [formlyAttributes]="item.props.tab" > <formly-field [field]="item"></formly-field> </nz-tab> </ng-container> </ng-template> </nz-tabset> `, changeDetection: ChangeDetectionStrategy.OnPush }] }], ctorParameters: () => [{ type: i1.FormlyBoxTemplates, decorators: [{ type: Optional }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvdGFicy90YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFzQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBMkU5RSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsU0FBUztJQUt0QjtJQUp0QixjQUFjLEdBQUc7UUFDeEIsS0FBSyxFQUFFLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO0tBQ3hHLENBQUM7SUFFRixZQUErQixjQUFrQztRQUMvRCxLQUFLLEVBQUUsQ0FBQztRQURxQixtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7SUFFakUsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBaUI7UUFDMUIsT0FBTyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxJQUFjO1FBQzFCLE9BQU8sY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7d0dBdkJVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLDZFQXJFekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtFVDs7NEZBR1Usd0JBQXdCO2tCQXZFcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtFVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQU1jLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPcHRpb25hbCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1seUJveFRlbXBsYXRlcywgcmVzb2x2ZVRwbE5hbWUgfSBmcm9tICdAeG1hZ2ljL256LWZvcm1seS9jb21tb24nO1xyXG5pbXBvcnQgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xyXG5pbXBvcnQgeyBUYWJzSXRlbSB9IGZyb20gJy4vZm9ybWx5LnR5cGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduei1mb3JtbHktdGFicycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxuei10YWJzZXRcclxuICAgICAgI2luc3RhbmNlXHJcbiAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcclxuICAgICAgWyhuelNlbGVjdGVkSW5kZXgpXT1cInByb3BzLm56U2VsZWN0ZWRJbmRleFwiXHJcbiAgICAgIFtuekFuaW1hdGVkXT1cInByb3BzLm56QW5pbWF0ZWRcIlxyXG4gICAgICBbbnpTaXplXT1cInByb3BzLm56U2l6ZVwiXHJcbiAgICAgIFtuelRhYkJhckV4dHJhQ29udGVudF09XCJuelRhYkJhckV4dHJhQ29udGVudFwiXHJcbiAgICAgIFtuelRhYkJhclN0eWxlXT1cInByb3BzLm56VGFiQmFyU3R5bGVcIlxyXG4gICAgICBbbnpUYWJQb3NpdGlvbl09XCJwcm9wcy5uelRhYlBvc2l0aW9uXCJcclxuICAgICAgW256VHlwZV09XCJwcm9wcy5uelR5cGVcIlxyXG4gICAgICBbbnpUYWJCYXJHdXR0ZXJdPVwicHJvcHMubnpUYWJCYXJHdXR0ZXJcIlxyXG4gICAgICBbbnpIaWRlQWxsXT1cInByb3BzLm56SGlkZUFsbFwiXHJcbiAgICAgIFtuekxpbmtSb3V0ZXJdPVwicHJvcHMubnpMaW5rUm91dGVyXCJcclxuICAgICAgW256TGlua0V4YWN0XT1cInByb3BzLm56TGlua0V4YWN0XCJcclxuICAgICAgW256Q2FuRGVhY3RpdmF0ZV09XCJwcm9wcy5uekNhbkRlYWN0aXZhdGVcIlxyXG4gICAgICBbbnpDZW50ZXJlZF09XCJwcm9wcy5uekNlbnRlcmVkXCJcclxuICAgICAgKG56U2VsZWN0ZWRJbmRleENoYW5nZSk9XCJwcm9wcy5uelNlbGVjdGVkSW5kZXhDaGFuZ2U/LigkZXZlbnQsIGZpZWxkLCBpbnN0YW5jZSlcIlxyXG4gICAgICAobnpTZWxlY3RDaGFuZ2UpPVwicHJvcHMubnpTZWxlY3RDaGFuZ2U/LigkZXZlbnQsIGZpZWxkLCBpbnN0YW5jZSlcIlxyXG4gICAgICBbbnpIaWRlQWRkXT1cInByb3BzLm56SGlkZUFkZFwiXHJcbiAgICAgIFtuekFkZEljb25dPVwicHJvcHMubnpBZGRJY29uXCJcclxuICAgICAgKG56QWRkKT1cInByb3BzLm56QWRkPy4oJGV2ZW50LCBmaWVsZCwgaW5zdGFuY2UpXCJcclxuICAgICAgKG56Q2xvc2UpPVwicHJvcHMubnpDbG9zZT8uKCRldmVudCwgZmllbGQsIGluc3RhbmNlKVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy50YWJzPy5sZW5ndGg7IGVsc2UgZmllbGRHcm91cFRlbXBsYXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9wcy50YWJzXCI+XHJcbiAgICAgICAgICA8bnotdGFiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5oaWRlICE9PSBmYWxzZVwiXHJcbiAgICAgICAgICAgIFtuelRpdGxlXT1cImdldE56VGl0bGUoaXRlbSlcIlxyXG4gICAgICAgICAgICAobnpDbGljayk9XCJpdGVtLm56Q2xpY2s/LigkZXZlbnQsIGl0ZW0ucHJvcHMudGFiLCBpbnN0YW5jZSlcIlxyXG4gICAgICAgICAgICBbbnpGb3JjZVJlbmRlcl09XCJpdGVtLm56Rm9yY2VSZW5kZXJcIlxyXG4gICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJpdGVtLm56RGlzYWJsZWQgfHwgaXRlbS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChuekNvbnRleHRtZW51KT1cIml0ZW0ubnpDb250ZXh0bWVudT8uKCRldmVudCwgaXRlbS5wcm9wcy50YWIsIGluc3RhbmNlKVwiXHJcbiAgICAgICAgICAgIChuelNlbGVjdCk9XCJpdGVtLm56U2VsZWN0Py4oJGV2ZW50LCBpdGVtLnByb3BzLnRhYiwgaW5zdGFuY2UpXCJcclxuICAgICAgICAgICAgKG56RGVzZWxlY3QpPVwiaXRlbS5uekRlc2VsZWN0Py4oJGV2ZW50LCBpdGVtLnByb3BzLnRhYiwgaW5zdGFuY2UpXCJcclxuICAgICAgICAgICAgW256Q2xvc2FibGVdPVwiaXRlbS5uekNsb3NhYmxlXCJcclxuICAgICAgICAgICAgW256Q2xvc2VJY29uXT1cIml0ZW0ubnpDbG9zZUljb25cIlxyXG4gICAgICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJpdGVtXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2V0Tnp4Q29udGVudChpdGVtKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIGZpZWxkOiBmaWVsZCB9XCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uei10YWI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmaWVsZEdyb3VwVGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5maWVsZEdyb3VwXCI+XHJcbiAgICAgICAgICA8bnotdGFiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5wcm9wcy50YWI/LmhpZGUgIT09IGZhbHNlXCJcclxuICAgICAgICAgICAgW256VGl0bGVdPVwiZ2V0TnpUaXRsZShpdGVtLnByb3BzPy50YWIgfHwge30pXCJcclxuICAgICAgICAgICAgKG56Q2xpY2spPVwiaXRlbS5wcm9wcy50YWI/Lm56Q2xpY2s/LigkZXZlbnQsIGl0ZW0ucHJvcHMudGFiLCBpbnN0YW5jZSlcIlxyXG4gICAgICAgICAgICBbbnpGb3JjZVJlbmRlcl09XCJpdGVtLnByb3BzLnRhYj8ubnpGb3JjZVJlbmRlclwiXHJcbiAgICAgICAgICAgIFtuekRpc2FibGVkXT1cIml0ZW0ucHJvcHMudGFiPy5uekRpc2FibGVkIHx8IGl0ZW0ucHJvcHMudGFiPy5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChuekNvbnRleHRtZW51KT1cIml0ZW0ucHJvcHMudGFiPy5uekNvbnRleHRtZW51Py4oJGV2ZW50LCBpdGVtLnByb3BzLnRhYiwgaW5zdGFuY2UpXCJcclxuICAgICAgICAgICAgKG56U2VsZWN0KT1cIml0ZW0ucHJvcHMudGFiPy5uelNlbGVjdD8uKCRldmVudCwgaXRlbS5wcm9wcy50YWIsIGluc3RhbmNlKVwiXHJcbiAgICAgICAgICAgIChuekRlc2VsZWN0KT1cIml0ZW0ucHJvcHMudGFiPy5uekRlc2VsZWN0Py4oJGV2ZW50LCBpdGVtLnByb3BzLnRhYiwgaW5zdGFuY2UpXCJcclxuICAgICAgICAgICAgW256Q2xvc2FibGVdPVwiaXRlbS5wcm9wcy50YWI/Lm56Q2xvc2FibGVcIlxyXG4gICAgICAgICAgICBbbnpDbG9zZUljb25dPVwiaXRlbS5wcm9wcy50YWI/Lm56Q2xvc2VJY29uXCJcclxuICAgICAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiaXRlbS5wcm9wcy50YWJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8Zm9ybWx5LWZpZWxkIFtmaWVsZF09XCJpdGVtXCI+PC9mb3JtbHktZmllbGQ+XHJcbiAgICAgICAgICA8L256LXRhYj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbnotdGFic2V0PlxyXG4gIGAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1seUZpZWxkVGFic0NvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZSB7XHJcbiAgb3ZlcnJpZGUgZGVmYXVsdE9wdGlvbnMgPSB7XHJcbiAgICBwcm9wczogeyBuelRhYlBvc2l0aW9uOiAndG9wJywgbnpUeXBlOiAnbGluZScsIG56QW5pbWF0ZWQ6IHRydWUsIG56U2l6ZTogJ2RlZmF1bHQnLCBuekxpbmtFeGFjdDogdHJ1ZSB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHVibGljIGZpZWxkVGVtcGxhdGVzOiBGb3JtbHlCb3hUZW1wbGF0ZXMpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbnpUYWJCYXJFeHRyYUNvbnRlbnQoKSB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZVRwbE5hbWUodGhpcy5wcm9wcywgdGhpcy5maWVsZFRlbXBsYXRlcywgJ256VGFiQmFyRXh0cmFDb250ZW50Jyk7XHJcbiAgfVxyXG5cclxuICBnZXROelRpdGxlKGNvbmZpZzogTnpTYWZlQW55KTogVGVtcGxhdGVSZWY8TnpTYWZlQW55PiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZVRwbE5hbWUoY29uZmlnLCB0aGlzLmZpZWxkVGVtcGxhdGVzLCAnbnpUaXRsZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+WdGFi5YaF5a65XHJcbiAgICogQHBhcmFtIGl0ZW1cclxuICAgKi9cclxuICBnZXROenhDb250ZW50KGl0ZW06IFRhYnNJdGVtKSB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZVRwbE5hbWUoaXRlbSwgdGhpcy5maWVsZFRlbXBsYXRlcywgJ256eENvbnRlbnQnKTtcclxuICB9XHJcbn1cclxuIl19