@nova-ui/bits
Version:
SolarWinds Nova Framework
116 lines • 19.5 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { ChangeDetectorRef, Component, ElementRef, forwardRef, HostBinding, HostListener, Input, Optional, ViewChild, ViewEncapsulation, } from "@angular/core";
import { MenuGroupComponent } from "../menu-group/menu-group.component";
import { MenuItemBaseComponent } from "../menu-item/menu-item-base";
import * as i0 from "@angular/core";
import * as i1 from "../menu-group/menu-group.component";
import * as i2 from "../../../checkbox/checkbox.component";
/**
* @ignore
*/
/**
* Menu item component with check/uncheck option,
* use (change) event to get state of this item
*/
export class MenuOptionComponent extends MenuItemBaseComponent {
stopPropagationOfClick(event) {
event.stopPropagation();
if (!this.disabled) {
event.preventDefault();
this.checked = !this.checked;
this.actionDone.emit(this.checked);
}
}
get checkedClass() {
return this.checked;
}
constructor(group, cd) {
super(group, cd);
this.group = group;
this.name = "";
this.value = "";
this.checked = false;
// Is needed to predefine item state, sets nui-checkbox [disabled] property
this.disabled = false;
}
doAction() {
this.checked = !this.checked;
this.actionDone.emit(this.checked);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuOptionComponent, deps: [{ token: i1.MenuGroupComponent, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MenuOptionComponent, selector: "nui-menu-option", inputs: { name: "name", value: "value", checked: "checked" }, host: { attributes: { "role": "menuitemcheckbox" }, listeners: { "click": "stopPropagationOfClick($event)" }, properties: { "class.checked": "this.checkedClass" } }, providers: [
{
provide: MenuItemBaseComponent,
useExisting: forwardRef(() => MenuOptionComponent),
},
], viewQueries: [{ propertyName: "menuItem", first: true, predicate: ["menuOption"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
<div class="nui-menu-item__option" #menuOption tabindex="-1" title>
<nui-checkbox
class="nui-menu-item__checkbox"
[name]="name"
[value]="value"
[checked]="checked"
[disabled]="disabled"
>
<ng-content></ng-content>
</nui-checkbox>
</div>
`, isInline: true, styles: [".nui-menu .nui-menu-item .nui-menu-item__option,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option,.nui-menu-popup .nui-menu-item .nui-menu-item__option{padding:0}.nui-menu .nui-menu-item .nui-menu-item__option .nui-checkbox__label,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option .nui-checkbox__label,.nui-menu-popup .nui-menu-item .nui-menu-item__option .nui-checkbox__label{font-weight:400;font-size:13px;width:100%;padding:7px 12px}.nui-menu .nui-menu-item .nui-menu-item__option .nui-checkbox__label:focus,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option .nui-checkbox__label:focus,.nui-menu-popup .nui-menu-item .nui-menu-item__option .nui-checkbox__label:focus{border-radius:0;background-color:var(--transparent,transparent)}.nui-menu .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox,.nui-menu-popup .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox{width:100%}.nui-menu .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox>.nui-checkbox,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox>.nui-checkbox,.nui-menu-popup .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox>.nui-checkbox{padding:0}.nui-menu .nui-menu-item .nui-menu-item__option .nui-checkbox__translucent,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option .nui-checkbox__translucent,.nui-menu-popup .nui-menu-item .nui-menu-item__option .nui-checkbox__translucent{cursor:not-allowed}.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option{padding:5px;color:var(--nui-color-off,#4d4d4d)}.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:active,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:active,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:active,.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:focus,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:focus,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:focus{outline:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nui-menu .nui-menu-item.checked>.nui-menu-item__option,.nui-menu-popup-host .nui-menu-item.checked>.nui-menu-item__option,.nui-menu-popup .nui-menu-item.checked>.nui-menu-item__option{color:red}.nui-menu .nui-menu-item.checked>.nui-menu-item__option .nui-checkbox__label:hover,.nui-menu-popup-host .nui-menu-item.checked>.nui-menu-item__option .nui-checkbox__label:hover,.nui-menu-popup .nui-menu-item.checked>.nui-menu-item__option .nui-checkbox__label:hover{background-color:transparent}\n"], dependencies: [{ kind: "component", type: i2.CheckboxComponent, selector: "nui-checkbox", inputs: ["ariaLabel", "ariaLabelledby", "ariaDescribedby", "name", "title", "value", "hovered", "checked", "required", "hint", "disabled", "indeterminate"], outputs: ["valueChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuOptionComponent, decorators: [{
type: Component,
args: [{ selector: "nui-menu-option", template: `
<div class="nui-menu-item__option" #menuOption tabindex="-1" title>
<nui-checkbox
class="nui-menu-item__checkbox"
[name]="name"
[value]="value"
[checked]="checked"
[disabled]="disabled"
>
<ng-content></ng-content>
</nui-checkbox>
</div>
`, providers: [
{
provide: MenuItemBaseComponent,
useExisting: forwardRef(() => MenuOptionComponent),
},
], encapsulation: ViewEncapsulation.None, host: { role: "menuitemcheckbox" }, styles: [".nui-menu .nui-menu-item .nui-menu-item__option,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option,.nui-menu-popup .nui-menu-item .nui-menu-item__option{padding:0}.nui-menu .nui-menu-item .nui-menu-item__option .nui-checkbox__label,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option .nui-checkbox__label,.nui-menu-popup .nui-menu-item .nui-menu-item__option .nui-checkbox__label{font-weight:400;font-size:13px;width:100%;padding:7px 12px}.nui-menu .nui-menu-item .nui-menu-item__option .nui-checkbox__label:focus,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option .nui-checkbox__label:focus,.nui-menu-popup .nui-menu-item .nui-menu-item__option .nui-checkbox__label:focus{border-radius:0;background-color:var(--transparent,transparent)}.nui-menu .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox,.nui-menu-popup .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox{width:100%}.nui-menu .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox>.nui-checkbox,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox>.nui-checkbox,.nui-menu-popup .nui-menu-item .nui-menu-item__option .nui-menu-item__checkbox>.nui-checkbox{padding:0}.nui-menu .nui-menu-item .nui-menu-item__option .nui-checkbox__translucent,.nui-menu-popup-host .nui-menu-item .nui-menu-item__option .nui-checkbox__translucent,.nui-menu-popup .nui-menu-item .nui-menu-item__option .nui-checkbox__translucent{cursor:not-allowed}.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option{padding:5px;color:var(--nui-color-off,#4d4d4d)}.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:active,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:active,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:active,.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:focus,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:focus,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__option:focus{outline:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nui-menu .nui-menu-item.checked>.nui-menu-item__option,.nui-menu-popup-host .nui-menu-item.checked>.nui-menu-item__option,.nui-menu-popup .nui-menu-item.checked>.nui-menu-item__option{color:red}.nui-menu .nui-menu-item.checked>.nui-menu-item__option .nui-checkbox__label:hover,.nui-menu-popup-host .nui-menu-item.checked>.nui-menu-item__option .nui-checkbox__label:hover,.nui-menu-popup .nui-menu-item.checked>.nui-menu-item__option .nui-checkbox__label:hover{background-color:transparent}\n"] }]
}], ctorParameters: () => [{ type: i1.MenuGroupComponent, decorators: [{
type: Optional
}] }, { type: i0.ChangeDetectorRef }], propDecorators: { name: [{
type: Input
}], value: [{
type: Input
}], checked: [{
type: Input
}], menuItem: [{
type: ViewChild,
args: ["menuOption"]
}], stopPropagationOfClick: [{
type: HostListener,
args: ["click", ["$event"]]
}], checkedClass: [{
type: HostBinding,
args: ["class.checked"]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tZW51L21lbnUtaXRlbS9tZW51LW9wdGlvbi9tZW51LW9wdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBQ3pELEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLHVEQUF1RDtBQUN2RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsaUJBQWlCO0FBRWpCLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFFcEU7O0dBRUc7QUFFSDs7O0dBR0c7QUEwQkgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHFCQUFxQjtJQWlCbkQsc0JBQXNCLENBQUMsS0FBaUI7UUFDM0MsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRUQsSUFDVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsWUFDeUIsS0FBeUIsRUFDOUMsRUFBcUI7UUFFckIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUhJLFVBQUssR0FBTCxLQUFLLENBQW9CO1FBSzlDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFFckIsMkVBQTJFO1FBQzNFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBaERRLG1CQUFtQjttR0FBbkIsbUJBQW1CLDhRQVRqQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7YUFDckQ7U0FDSix5SkFuQlM7Ozs7Ozs7Ozs7OztLQVlUOzs0RkFXUSxtQkFBbUI7a0JBekIvQixTQUFTOytCQUNJLGlCQUFpQixZQUNqQjs7Ozs7Ozs7Ozs7O0tBWVQsYUFFVTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzt5QkFDckQ7cUJBQ0osaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRTs7MEJBa0M3QixRQUFRO3lFQTVCRyxJQUFJO3NCQUFuQixLQUFLO2dCQUlVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBSVUsT0FBTztzQkFBdEIsS0FBSztnQkFFbUIsUUFBUTtzQkFBaEMsU0FBUzt1QkFBQyxZQUFZO2dCQUdoQixzQkFBc0I7c0JBRDVCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVd0QixZQUFZO3NCQUR0QixXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDCqSAyMDIyIFNvbGFyV2luZHMgV29ybGR3aWRlLCBMTEMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvXG4vLyAgZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbi8vICByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Jcbi8vICBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vICBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyAgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyAgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IE1lbnVHcm91cENvbXBvbmVudCB9IGZyb20gXCIuLi9tZW51LWdyb3VwL21lbnUtZ3JvdXAuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNZW51SXRlbUJhc2VDb21wb25lbnQgfSBmcm9tIFwiLi4vbWVudS1pdGVtL21lbnUtaXRlbS1iYXNlXCI7XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5cbi8qKlxuICogTWVudSBpdGVtIGNvbXBvbmVudCB3aXRoIGNoZWNrL3VuY2hlY2sgb3B0aW9uLFxuICogdXNlIChjaGFuZ2UpIGV2ZW50IHRvIGdldCBzdGF0ZSBvZiB0aGlzIGl0ZW1cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibnVpLW1lbnUtb3B0aW9uXCIsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cIm51aS1tZW51LWl0ZW1fX29wdGlvblwiICNtZW51T3B0aW9uIHRhYmluZGV4PVwiLTFcIiB0aXRsZT5cbiAgICAgICAgICAgIDxudWktY2hlY2tib3hcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm51aS1tZW51LWl0ZW1fX2NoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9udWktY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgc3R5bGVVcmxzOiBbXCIuL21lbnUtb3B0aW9uLmNvbXBvbmVudC5sZXNzXCJdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBNZW51SXRlbUJhc2VDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNZW51T3B0aW9uQ29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDogeyByb2xlOiBcIm1lbnVpdGVtY2hlY2tib3hcIiB9LFxufSlcbmV4cG9ydCBjbGFzcyBNZW51T3B0aW9uQ29tcG9uZW50IGV4dGVuZHMgTWVudUl0ZW1CYXNlQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBTZXRzIGlubmVyIGlucHV0IFwibmFtZVwiIGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogU2V0cyBpbm5lciBpbnB1dCBcInZhbHVlXCIgYXR0cmlidXRlXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbHVlOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSXMgbmVlZGVkIHRvIHByZWRlZmluZSBpdGVtIHN0YXRlLCBzZXRzIG51aS1jaGVja2JveCBbY2hlY2tlZF0gcHJvcGVydHlcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgY2hlY2tlZDogYm9vbGVhbjtcblxuICAgIEBWaWV3Q2hpbGQoXCJtZW51T3B0aW9uXCIpIG1lbnVJdGVtOiBFbGVtZW50UmVmO1xuXG4gICAgQEhvc3RMaXN0ZW5lcihcImNsaWNrXCIsIFtcIiRldmVudFwiXSlcbiAgICBwdWJsaWMgc3RvcFByb3BhZ2F0aW9uT2ZDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uRG9uZS5lbWl0KHRoaXMuY2hlY2tlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jaGVja2VkXCIpXG4gICAgcHVibGljIGdldCBjaGVja2VkQ2xhc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIHJlYWRvbmx5IGdyb3VwOiBNZW51R3JvdXBDb21wb25lbnQsXG4gICAgICAgIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihncm91cCwgY2QpO1xuXG4gICAgICAgIHRoaXMubmFtZSA9IFwiXCI7XG4gICAgICAgIHRoaXMudmFsdWUgPSBcIlwiO1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSBmYWxzZTtcblxuICAgICAgICAvLyBJcyBuZWVkZWQgdG8gcHJlZGVmaW5lIGl0ZW0gc3RhdGUsIHNldHMgbnVpLWNoZWNrYm94IFtkaXNhYmxlZF0gcHJvcGVydHlcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBkb0FjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICAgICAgdGhpcy5hY3Rpb25Eb25lLmVtaXQodGhpcy5jaGVja2VkKTtcbiAgICB9XG59XG4iXX0=