UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

159 lines 17.5 kB
/** * 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 { NgIf, NgTemplateOutlet } from '@angular/common'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { NzHighlightModule } from 'ng-zorro-antd/core/highlight'; import { NzIconModule } from 'ng-zorro-antd/icon'; import { NzTreeDropIndicatorComponent } from './tree-drop-indicator.component'; import * as i0 from "@angular/core"; import * as i1 from "ng-zorro-antd/icon"; import * as i2 from "ng-zorro-antd/core/highlight"; export class NzTreeNodeTitleComponent { get canDraggable() { return this.draggable && !this.isDisabled ? true : null; } get matchedValue() { return this.isMatched ? this.searchValue : ''; } get isSwitcherOpen() { return this.isExpanded && !this.isLeaf; } get isSwitcherClose() { return !this.isExpanded && !this.isLeaf; } constructor(cdr) { this.cdr = cdr; this.treeTemplate = null; this.selectMode = false; // Drag indicator this.showIndicator = true; } ngOnChanges(changes) { const { showIndicator, dragPosition } = changes; if (showIndicator || dragPosition) { this.cdr.markForCheck(); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NzTreeNodeTitleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: NzTreeNodeTitleComponent, isStandalone: true, selector: "nz-tree-node-title", inputs: { searchValue: "searchValue", treeTemplate: "treeTemplate", draggable: "draggable", showIcon: "showIcon", selectMode: "selectMode", context: "context", icon: "icon", title: "title", isLoading: "isLoading", isSelected: "isSelected", isDisabled: "isDisabled", isMatched: "isMatched", isExpanded: "isExpanded", isLeaf: "isLeaf", showIndicator: "showIndicator", dragPosition: "dragPosition" }, host: { properties: { "attr.title": "title", "attr.draggable": "canDraggable", "attr.aria-grabbed": "canDraggable", "class.draggable": "canDraggable", "class.ant-select-tree-node-content-wrapper": "selectMode", "class.ant-select-tree-node-content-wrapper-open": "selectMode && isSwitcherOpen", "class.ant-select-tree-node-content-wrapper-close": "selectMode && isSwitcherClose", "class.ant-select-tree-node-selected": "selectMode && isSelected", "class.ant-tree-node-content-wrapper": "!selectMode", "class.ant-tree-node-content-wrapper-open": "!selectMode && isSwitcherOpen", "class.ant-tree-node-content-wrapper-close": "!selectMode && isSwitcherClose", "class.ant-tree-node-selected": "!selectMode && isSelected" } }, usesOnChanges: true, ngImport: i0, template: ` <ng-template [ngTemplateOutlet]="treeTemplate" [ngTemplateOutletContext]="{ $implicit: context, origin: context.origin }" ></ng-template> <ng-container *ngIf="!treeTemplate"> <span *ngIf="icon && showIcon" [class.ant-tree-icon__open]="isSwitcherOpen" [class.ant-tree-icon__close]="isSwitcherClose" [class.ant-tree-icon_loading]="isLoading" [class.ant-select-tree-iconEle]="selectMode" [class.ant-tree-iconEle]="!selectMode" > <span [class.ant-select-tree-iconEle]="selectMode" [class.ant-select-tree-icon__customize]="selectMode" [class.ant-tree-iconEle]="!selectMode" [class.ant-tree-icon__customize]="!selectMode" > <span nz-icon *ngIf="icon" [nzType]="icon"></span> </span> </span> <span class="ant-tree-title" [innerHTML]="title | nzHighlight: matchedValue : 'i' : 'font-highlight'"></span> </ng-container> <nz-tree-drop-indicator *ngIf="showIndicator" [dropPosition]="dragPosition" [level]="context.level" ></nz-tree-drop-indicator> `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzHighlightModule }, { kind: "pipe", type: i2.NzHighlightPipe, name: "nzHighlight" }, { kind: "component", type: NzTreeDropIndicatorComponent, selector: "nz-tree-drop-indicator", inputs: ["dropPosition", "level", "direction"], exportAs: ["NzTreeDropIndicator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NzTreeNodeTitleComponent, decorators: [{ type: Component, args: [{ selector: 'nz-tree-node-title', template: ` <ng-template [ngTemplateOutlet]="treeTemplate" [ngTemplateOutletContext]="{ $implicit: context, origin: context.origin }" ></ng-template> <ng-container *ngIf="!treeTemplate"> <span *ngIf="icon && showIcon" [class.ant-tree-icon__open]="isSwitcherOpen" [class.ant-tree-icon__close]="isSwitcherClose" [class.ant-tree-icon_loading]="isLoading" [class.ant-select-tree-iconEle]="selectMode" [class.ant-tree-iconEle]="!selectMode" > <span [class.ant-select-tree-iconEle]="selectMode" [class.ant-select-tree-icon__customize]="selectMode" [class.ant-tree-iconEle]="!selectMode" [class.ant-tree-icon__customize]="!selectMode" > <span nz-icon *ngIf="icon" [nzType]="icon"></span> </span> </span> <span class="ant-tree-title" [innerHTML]="title | nzHighlight: matchedValue : 'i' : 'font-highlight'"></span> </ng-container> <nz-tree-drop-indicator *ngIf="showIndicator" [dropPosition]="dragPosition" [level]="context.level" ></nz-tree-drop-indicator> `, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, host: { '[attr.title]': 'title', '[attr.draggable]': 'canDraggable', '[attr.aria-grabbed]': 'canDraggable', '[class.draggable]': 'canDraggable', '[class.ant-select-tree-node-content-wrapper]': `selectMode`, '[class.ant-select-tree-node-content-wrapper-open]': `selectMode && isSwitcherOpen`, '[class.ant-select-tree-node-content-wrapper-close]': `selectMode && isSwitcherClose`, '[class.ant-select-tree-node-selected]': `selectMode && isSelected`, '[class.ant-tree-node-content-wrapper]': `!selectMode`, '[class.ant-tree-node-content-wrapper-open]': `!selectMode && isSwitcherOpen`, '[class.ant-tree-node-content-wrapper-close]': `!selectMode && isSwitcherClose`, '[class.ant-tree-node-selected]': `!selectMode && isSelected` }, imports: [NgTemplateOutlet, NgIf, NzIconModule, NzHighlightModule, NzTreeDropIndicatorComponent], standalone: true }] }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { searchValue: [{ type: Input }], treeTemplate: [{ type: Input }], draggable: [{ type: Input }], showIcon: [{ type: Input }], selectMode: [{ type: Input }], context: [{ type: Input }], icon: [{ type: Input }], title: [{ type: Input }], isLoading: [{ type: Input }], isSelected: [{ type: Input }], isDisabled: [{ type: Input }], isMatched: [{ type: Input }], isExpanded: [{ type: Input }], isLeaf: [{ type: Input }], showIndicator: [{ type: Input }], dragPosition: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLXRpdGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvdHJlZS90cmVlLW5vZGUtdGl0bGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxLQUFLLEVBSU4sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBc0QvRSxNQUFNLE9BQU8sd0JBQXdCO0lBbUJuQyxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWpDakMsaUJBQVksR0FBNkUsSUFBSSxDQUFDO1FBRzlGLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFVNUIsaUJBQWlCO1FBQ1Isa0JBQWEsR0FBRyxJQUFJLENBQUM7SUFtQmUsQ0FBQztJQUU5QyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDaEQsSUFBSSxhQUFhLElBQUksWUFBWSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQzs4R0ExQ1Usd0JBQXdCO2tHQUF4Qix3QkFBd0Isa3NDQWxEekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCVCw0REFpQlMsZ0JBQWdCLG9KQUFFLElBQUksNEZBQUUsWUFBWSxpTkFBRSxpQkFBaUIsZ0dBQUUsNEJBQTRCOzsyRkFHcEYsd0JBQXdCO2tCQXBEcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsbUJBQW1CLEVBQUUsS0FBSztvQkFDMUIsSUFBSSxFQUFFO3dCQUNKLGNBQWMsRUFBRSxPQUFPO3dCQUN2QixrQkFBa0IsRUFBRSxjQUFjO3dCQUNsQyxxQkFBcUIsRUFBRSxjQUFjO3dCQUNyQyxtQkFBbUIsRUFBRSxjQUFjO3dCQUNuQyw4Q0FBOEMsRUFBRSxZQUFZO3dCQUM1RCxtREFBbUQsRUFBRSw4QkFBOEI7d0JBQ25GLG9EQUFvRCxFQUFFLCtCQUErQjt3QkFDckYsdUNBQXVDLEVBQUUsMEJBQTBCO3dCQUNuRSx1Q0FBdUMsRUFBRSxhQUFhO3dCQUN0RCw0Q0FBNEMsRUFBRSwrQkFBK0I7d0JBQzdFLDZDQUE2QyxFQUFFLGdDQUFnQzt3QkFDL0UsZ0NBQWdDLEVBQUUsMkJBQTJCO3FCQUM5RDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLDRCQUE0QixDQUFDO29CQUNoRyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7c0ZBRVUsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE56SGlnaGxpZ2h0TW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL2hpZ2hsaWdodCc7XG5pbXBvcnQgeyBOelRyZWVOb2RlLCBOelRyZWVOb2RlT3B0aW9ucyB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90cmVlJztcbmltcG9ydCB7IE56SWNvbk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaWNvbic7XG5cbmltcG9ydCB7IE56VHJlZURyb3BJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtZHJvcC1pbmRpY2F0b3IuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnotdHJlZS1ub2RlLXRpdGxlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGVcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRleHQsIG9yaWdpbjogY29udGV4dC5vcmlnaW4gfVwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0cmVlVGVtcGxhdGVcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiaWNvbiAmJiBzaG93SWNvblwiXG4gICAgICAgIFtjbGFzcy5hbnQtdHJlZS1pY29uX19vcGVuXT1cImlzU3dpdGNoZXJPcGVuXCJcbiAgICAgICAgW2NsYXNzLmFudC10cmVlLWljb25fX2Nsb3NlXT1cImlzU3dpdGNoZXJDbG9zZVwiXG4gICAgICAgIFtjbGFzcy5hbnQtdHJlZS1pY29uX2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1pY29uRWxlXT1cInNlbGVjdE1vZGVcIlxuICAgICAgICBbY2xhc3MuYW50LXRyZWUtaWNvbkVsZV09XCIhc2VsZWN0TW9kZVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1pY29uRWxlXT1cInNlbGVjdE1vZGVcIlxuICAgICAgICAgIFtjbGFzcy5hbnQtc2VsZWN0LXRyZWUtaWNvbl9fY3VzdG9taXplXT1cInNlbGVjdE1vZGVcIlxuICAgICAgICAgIFtjbGFzcy5hbnQtdHJlZS1pY29uRWxlXT1cIiFzZWxlY3RNb2RlXCJcbiAgICAgICAgICBbY2xhc3MuYW50LXRyZWUtaWNvbl9fY3VzdG9taXplXT1cIiFzZWxlY3RNb2RlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIG56LWljb24gKm5nSWY9XCJpY29uXCIgW256VHlwZV09XCJpY29uXCI+PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImFudC10cmVlLXRpdGxlXCIgW2lubmVySFRNTF09XCJ0aXRsZSB8IG56SGlnaGxpZ2h0OiBtYXRjaGVkVmFsdWUgOiAnaScgOiAnZm9udC1oaWdobGlnaHQnXCI+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuei10cmVlLWRyb3AtaW5kaWNhdG9yXG4gICAgICAqbmdJZj1cInNob3dJbmRpY2F0b3JcIlxuICAgICAgW2Ryb3BQb3NpdGlvbl09XCJkcmFnUG9zaXRpb25cIlxuICAgICAgW2xldmVsXT1cImNvbnRleHQubGV2ZWxcIlxuICAgID48L256LXRyZWUtZHJvcC1pbmRpY2F0b3I+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci50aXRsZV0nOiAndGl0bGUnLFxuICAgICdbYXR0ci5kcmFnZ2FibGVdJzogJ2NhbkRyYWdnYWJsZScsXG4gICAgJ1thdHRyLmFyaWEtZ3JhYmJlZF0nOiAnY2FuRHJhZ2dhYmxlJyxcbiAgICAnW2NsYXNzLmRyYWdnYWJsZV0nOiAnY2FuRHJhZ2dhYmxlJyxcbiAgICAnW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1ub2RlLWNvbnRlbnQtd3JhcHBlcl0nOiBgc2VsZWN0TW9kZWAsXG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LXRyZWUtbm9kZS1jb250ZW50LXdyYXBwZXItb3Blbl0nOiBgc2VsZWN0TW9kZSAmJiBpc1N3aXRjaGVyT3BlbmAsXG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LXRyZWUtbm9kZS1jb250ZW50LXdyYXBwZXItY2xvc2VdJzogYHNlbGVjdE1vZGUgJiYgaXNTd2l0Y2hlckNsb3NlYCxcbiAgICAnW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1ub2RlLXNlbGVjdGVkXSc6IGBzZWxlY3RNb2RlICYmIGlzU2VsZWN0ZWRgLFxuICAgICdbY2xhc3MuYW50LXRyZWUtbm9kZS1jb250ZW50LXdyYXBwZXJdJzogYCFzZWxlY3RNb2RlYCxcbiAgICAnW2NsYXNzLmFudC10cmVlLW5vZGUtY29udGVudC13cmFwcGVyLW9wZW5dJzogYCFzZWxlY3RNb2RlICYmIGlzU3dpdGNoZXJPcGVuYCxcbiAgICAnW2NsYXNzLmFudC10cmVlLW5vZGUtY29udGVudC13cmFwcGVyLWNsb3NlXSc6IGAhc2VsZWN0TW9kZSAmJiBpc1N3aXRjaGVyQ2xvc2VgLFxuICAgICdbY2xhc3MuYW50LXRyZWUtbm9kZS1zZWxlY3RlZF0nOiBgIXNlbGVjdE1vZGUgJiYgaXNTZWxlY3RlZGBcbiAgfSxcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXQsIE5nSWYsIE56SWNvbk1vZHVsZSwgTnpIaWdobGlnaHRNb2R1bGUsIE56VHJlZURyb3BJbmRpY2F0b3JDb21wb25lbnRdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE56VHJlZU5vZGVUaXRsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHNlYXJjaFZhbHVlITogc3RyaW5nO1xuICBASW5wdXQoKSB0cmVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBOelRyZWVOb2RlOyBvcmlnaW46IE56VHJlZU5vZGVPcHRpb25zIH0+IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGRyYWdnYWJsZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNob3dJY29uITogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VsZWN0TW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKSBjb250ZXh0ITogTnpUcmVlTm9kZTtcbiAgQElucHV0KCkgaWNvbiE6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzTG9hZGluZyE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzU2VsZWN0ZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSBpc0Rpc2FibGVkITogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNNYXRjaGVkITogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNFeHBhbmRlZCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzTGVhZiE6IGJvb2xlYW47XG4gIC8vIERyYWcgaW5kaWNhdG9yXG4gIEBJbnB1dCgpIHNob3dJbmRpY2F0b3IgPSB0cnVlO1xuICBASW5wdXQoKSBkcmFnUG9zaXRpb24/OiBudW1iZXI7XG5cbiAgZ2V0IGNhbkRyYWdnYWJsZSgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ2dhYmxlICYmICF0aGlzLmlzRGlzYWJsZWQgPyB0cnVlIDogbnVsbDtcbiAgfVxuXG4gIGdldCBtYXRjaGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc01hdGNoZWQgPyB0aGlzLnNlYXJjaFZhbHVlIDogJyc7XG4gIH1cblxuICBnZXQgaXNTd2l0Y2hlck9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFeHBhbmRlZCAmJiAhdGhpcy5pc0xlYWY7XG4gIH1cblxuICBnZXQgaXNTd2l0Y2hlckNsb3NlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc0V4cGFuZGVkICYmICF0aGlzLmlzTGVhZjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyBzaG93SW5kaWNhdG9yLCBkcmFnUG9zaXRpb24gfSA9IGNoYW5nZXM7XG4gICAgaWYgKHNob3dJbmRpY2F0b3IgfHwgZHJhZ1Bvc2l0aW9uKSB7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==