ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
167 lines • 19.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 { NgIf, NgTemplateOutlet } from '@angular/common';
import { ChangeDetectionStrategy, Component, Input, booleanAttribute } 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: "18.0.1", ngImport: i0, type: NzTreeNodeTitleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.1", type: NzTreeNodeTitleComponent, isStandalone: true, selector: "nz-tree-node-title", inputs: { searchValue: "searchValue", treeTemplate: "treeTemplate", draggable: ["draggable", "draggable", booleanAttribute], showIcon: ["showIcon", "showIcon", booleanAttribute], selectMode: "selectMode", context: "context", icon: "icon", title: "title", isLoading: ["isLoading", "isLoading", booleanAttribute], isSelected: ["isSelected", "isSelected", booleanAttribute], isDisabled: ["isDisabled", "isDisabled", booleanAttribute], isMatched: ["isMatched", "isMatched", booleanAttribute], isExpanded: ["isExpanded", "isExpanded", booleanAttribute], isLeaf: ["isLeaf", "isLeaf", booleanAttribute], 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: "18.0.1", 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,
args: [{ transform: booleanAttribute }]
}], showIcon: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], selectMode: [{
type: Input
}], context: [{
type: Input
}], icon: [{
type: Input
}], title: [{
type: Input
}], isLoading: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], isSelected: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], isDisabled: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], isMatched: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], isExpanded: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], isLeaf: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], showIndicator: [{
type: Input
}], dragPosition: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLXRpdGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvdHJlZS90cmVlLW5vZGUtdGl0bGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxLQUFLLEVBSUwsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQXNEL0UsTUFBTSxPQUFPLHdCQUF3QjtJQW1CbkMsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMxQyxDQUFDO0lBRUQsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FB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ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIGJvb2xlYW5BdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE56SGlnaGxpZ2h0TW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL2hpZ2hsaWdodCc7XG5pbXBvcnQgeyBOelRyZWVOb2RlLCBOelRyZWVOb2RlT3B0aW9ucyB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90cmVlJztcbmltcG9ydCB7IE56SWNvbk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaWNvbic7XG5cbmltcG9ydCB7IE56VHJlZURyb3BJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtZHJvcC1pbmRpY2F0b3IuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnotdHJlZS1ub2RlLXRpdGxlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGVcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRleHQsIG9yaWdpbjogY29udGV4dC5vcmlnaW4gfVwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0cmVlVGVtcGxhdGVcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiaWNvbiAmJiBzaG93SWNvblwiXG4gICAgICAgIFtjbGFzcy5hbnQtdHJlZS1pY29uX19vcGVuXT1cImlzU3dpdGNoZXJPcGVuXCJcbiAgICAgICAgW2NsYXNzLmFudC10cmVlLWljb25fX2Nsb3NlXT1cImlzU3dpdGNoZXJDbG9zZVwiXG4gICAgICAgIFtjbGFzcy5hbnQtdHJlZS1pY29uX2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1pY29uRWxlXT1cInNlbGVjdE1vZGVcIlxuICAgICAgICBbY2xhc3MuYW50LXRyZWUtaWNvbkVsZV09XCIhc2VsZWN0TW9kZVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1pY29uRWxlXT1cInNlbGVjdE1vZGVcIlxuICAgICAgICAgIFtjbGFzcy5hbnQtc2VsZWN0LXRyZWUtaWNvbl9fY3VzdG9taXplXT1cInNlbGVjdE1vZGVcIlxuICAgICAgICAgIFtjbGFzcy5hbnQtdHJlZS1pY29uRWxlXT1cIiFzZWxlY3RNb2RlXCJcbiAgICAgICAgICBbY2xhc3MuYW50LXRyZWUtaWNvbl9fY3VzdG9taXplXT1cIiFzZWxlY3RNb2RlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIG56LWljb24gKm5nSWY9XCJpY29uXCIgW256VHlwZV09XCJpY29uXCI+PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImFudC10cmVlLXRpdGxlXCIgW2lubmVySFRNTF09XCJ0aXRsZSB8IG56SGlnaGxpZ2h0OiBtYXRjaGVkVmFsdWUgOiAnaScgOiAnZm9udC1oaWdobGlnaHQnXCI+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuei10cmVlLWRyb3AtaW5kaWNhdG9yXG4gICAgICAqbmdJZj1cInNob3dJbmRpY2F0b3JcIlxuICAgICAgW2Ryb3BQb3NpdGlvbl09XCJkcmFnUG9zaXRpb25cIlxuICAgICAgW2xldmVsXT1cImNvbnRleHQubGV2ZWxcIlxuICAgID48L256LXRyZWUtZHJvcC1pbmRpY2F0b3I+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci50aXRsZV0nOiAndGl0bGUnLFxuICAgICdbYXR0ci5kcmFnZ2FibGVdJzogJ2NhbkRyYWdnYWJsZScsXG4gICAgJ1thdHRyLmFyaWEtZ3JhYmJlZF0nOiAnY2FuRHJhZ2dhYmxlJyxcbiAgICAnW2NsYXNzLmRyYWdnYWJsZV0nOiAnY2FuRHJhZ2dhYmxlJyxcbiAgICAnW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1ub2RlLWNvbnRlbnQtd3JhcHBlcl0nOiBgc2VsZWN0TW9kZWAsXG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LXRyZWUtbm9kZS1jb250ZW50LXdyYXBwZXItb3Blbl0nOiBgc2VsZWN0TW9kZSAmJiBpc1N3aXRjaGVyT3BlbmAsXG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LXRyZWUtbm9kZS1jb250ZW50LXdyYXBwZXItY2xvc2VdJzogYHNlbGVjdE1vZGUgJiYgaXNTd2l0Y2hlckNsb3NlYCxcbiAgICAnW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1ub2RlLXNlbGVjdGVkXSc6IGBzZWxlY3RNb2RlICYmIGlzU2VsZWN0ZWRgLFxuICAgICdbY2xhc3MuYW50LXRyZWUtbm9kZS1jb250ZW50LXdyYXBwZXJdJzogYCFzZWxlY3RNb2RlYCxcbiAgICAnW2NsYXNzLmFudC10cmVlLW5vZGUtY29udGVudC13cmFwcGVyLW9wZW5dJzogYCFzZWxlY3RNb2RlICYmIGlzU3dpdGNoZXJPcGVuYCxcbiAgICAnW2NsYXNzLmFudC10cmVlLW5vZGUtY29udGVudC13cmFwcGVyLWNsb3NlXSc6IGAhc2VsZWN0TW9kZSAmJiBpc1N3aXRjaGVyQ2xvc2VgLFxuICAgICdbY2xhc3MuYW50LXRyZWUtbm9kZS1zZWxlY3RlZF0nOiBgIXNlbGVjdE1vZGUgJiYgaXNTZWxlY3RlZGBcbiAgfSxcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXQsIE5nSWYsIE56SWNvbk1vZHVsZSwgTnpIaWdobGlnaHRNb2R1bGUsIE56VHJlZURyb3BJbmRpY2F0b3JDb21wb25lbnRdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE56VHJlZU5vZGVUaXRsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHNlYXJjaFZhbHVlITogc3RyaW5nO1xuICBASW5wdXQoKSB0cmVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBOelRyZWVOb2RlOyBvcmlnaW46IE56VHJlZU5vZGVPcHRpb25zIH0+IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkcmFnZ2FibGUhOiBib29sZWFuO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0ljb24hOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3RNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbnRleHQhOiBOelRyZWVOb2RlO1xuICBASW5wdXQoKSBpY29uITogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZztcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzTG9hZGluZyE6IGJvb2xlYW47XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1NlbGVjdGVkITogYm9vbGVhbjtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRGlzYWJsZWQhOiBib29sZWFuO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNNYXRjaGVkITogYm9vbGVhbjtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRXhwYW5kZWQhOiBib29sZWFuO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNMZWFmITogYm9vbGVhbjtcbiAgLy8gRHJhZyBpbmRpY2F0b3JcbiAgQElucHV0KCkgc2hvd0luZGljYXRvciA9IHRydWU7XG4gIEBJbnB1dCgpIGRyYWdQb3NpdGlvbj86IG51bWJlcjtcblxuICBnZXQgY2FuRHJhZ2dhYmxlKCk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5kcmFnZ2FibGUgJiYgIXRoaXMuaXNEaXNhYmxlZCA/IHRydWUgOiBudWxsO1xuICB9XG5cbiAgZ2V0IG1hdGNoZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlzTWF0Y2hlZCA/IHRoaXMuc2VhcmNoVmFsdWUgOiAnJztcbiAgfVxuXG4gIGdldCBpc1N3aXRjaGVyT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0V4cGFuZGVkICYmICF0aGlzLmlzTGVhZjtcbiAgfVxuXG4gIGdldCBpc1N3aXRjaGVyQ2xvc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzRXhwYW5kZWQgJiYgIXRoaXMuaXNMZWFmO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IHNob3dJbmRpY2F0b3IsIGRyYWdQb3NpdGlvbiB9ID0gY2hhbmdlcztcbiAgICBpZiAoc2hvd0luZGljYXRvciB8fCBkcmFnUG9zaXRpb24pIHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxufVxuIl19