@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
299 lines • 21.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: auto-complete-popup.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ElementRef, Input, TemplateRef, ViewChild } from '@angular/core';
import { fadeInOut } from '@duoduo-oba/ng-devui/utils';
var AutoCompletePopupComponent = /** @class */ (function () {
function AutoCompletePopupComponent() {
this.activeIndex = 0;
this.showLoading = false;
this.labelMinHeight = 20; // position.top小于20px时候,表示光标在第一行
// position.top小于20px时候,表示光标在第一行
this.onChange = (/**
* @param {?} _
* @return {?}
*/
function (_) { return null; });
this.onTouched = (/**
* @return {?}
*/
function () { return null; });
this.formatter = (/**
* @param {?} item
* @return {?}
*/
function (item) { return item ? (item.label || item.toString()) : ''; });
this.maxHeight = 300;
}
/**
* @param {?} obj
* @return {?}
*/
AutoCompletePopupComponent.prototype.writeValue = /**
* @param {?} obj
* @return {?}
*/
function (obj) {
this.value = obj;
};
/**
* @param {?} isDisabled
* @return {?}
*/
AutoCompletePopupComponent.prototype.setDisabledState = /**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) {
this.disabled = isDisabled;
};
/**
* @param {?} fn
* @return {?}
*/
AutoCompletePopupComponent.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
AutoCompletePopupComponent.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onTouched = fn;
};
/**
* @param {?} event
* @param {?} item
* @return {?}
*/
AutoCompletePopupComponent.prototype.onSelect = /**
* @param {?} event
* @param {?} item
* @return {?}
*/
function (event, item) {
if (this.disabledKey && item[this.disabledKey]) {
event.preventDefault();
event.stopPropagation();
return;
}
if (this.overview === 'single') { // 单选场景和单行场景不需要冒泡
event.preventDefault();
event.stopPropagation();
}
this.value = item;
this.onTouched();
this.onChange({ type: 'select', value: this.value });
};
/**
* @param {?} event
* @return {?}
*/
AutoCompletePopupComponent.prototype.selectCurrentItem = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.onSelect(event, this.source[this.activeIndex]);
};
/**
* @param {?} index
* @return {?}
*/
AutoCompletePopupComponent.prototype.onActiveIndexChange = /**
* @param {?} index
* @return {?}
*/
function (index) {
this.activeIndex = index;
};
/**
* @return {?}
*/
AutoCompletePopupComponent.prototype.reset = /**
* @return {?}
*/
function () {
this.activeIndex = 0;
};
/**
* @return {?}
*/
AutoCompletePopupComponent.prototype.next = /**
* @return {?}
*/
function () {
if (this.isOpen && this.source && this.source.length) {
if (this.activeIndex === this.source.length - 1) {
this.activeIndex = 0;
return;
}
this.activeIndex = this.activeIndex + 1;
}
};
/**
* @return {?}
*/
AutoCompletePopupComponent.prototype.prev = /**
* @return {?}
*/
function () {
if (this.isOpen && this.source && this.source.length) {
if (this.activeIndex === 0) {
this.activeIndex = this.source.length - 1;
return;
}
this.activeIndex = this.activeIndex - 1;
}
};
/**
* @param {?} index
* @param {?} item
* @return {?}
*/
AutoCompletePopupComponent.prototype.trackByFn = /**
* @param {?} index
* @param {?} item
* @return {?}
*/
function (index, item) {
return index;
};
/**
* @param {?} $event
* @return {?}
*/
AutoCompletePopupComponent.prototype.animationEnd = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
if (!this.isOpen) {
/** @type {?} */
var targetElement = this.selectMenuElement.nativeElement;
targetElement.style.display = 'none';
}
};
/**
* @param {?} $event
* @return {?}
*/
AutoCompletePopupComponent.prototype.loadMoreEvent = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.showLoading = true;
this.onChange({ type: 'loadMore', value: this });
};
/**
* @param {?} $event
* @return {?}
*/
AutoCompletePopupComponent.prototype.loadFinish = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.showLoading = false;
};
AutoCompletePopupComponent.decorators = [
{ type: Component, args: [{
selector: 'd-auto-complete-popup',
template: "<div\r\n class=\"devui-dropdown-menu\"\r\n [style.display]=\"isOpen && (source?.length || noResultItemTemplate) ? 'inline-block' : 'none'\"\r\n [style.top]=\"overview === 'multiline' ? (position?.top < labelMinHeight ? '50%' : '100%') : '100%'\"\r\n [style.left]=\"overview === 'multiline' ? position?.left + 'px' : '0'\"\r\n [@fadeInOut]=\"isOpen ? 'bottom' : 'void'\"\r\n (@fadeInOut.done)=\"animationEnd($event)\"\r\n #selectMenuElement\r\n dLoading\r\n [showLoading]=\"showLoading\"\r\n [backdrop]=\"true\"\r\n>\r\n <ul\r\n class=\"devui-list-unstyled scroll-height\"\r\n [style.maxHeight]=\"maxHeight + 'px'\"\r\n dLazyLoad\r\n [enableLazyLoad]=\"enableLazyLoad\"\r\n (loadMore)=\"loadMoreEvent($event)\"\r\n >\r\n <li *ngIf=\"popTipsText && popTipsText.length > 0\" class=\"devui-popup-tips\">\r\n {{ popTipsText }}\r\n </li>\r\n <li\r\n *ngFor=\"let item of source; let $index = index; trackBy: trackByFn\"\r\n class=\"devui-dropdown-item\"\r\n [title]=\"formatter(item)\"\r\n [ngClass]=\"{\r\n 'devui-dropdown-bg': $index == activeIndex,\r\n disabled: disabledKey && item[disabledKey]\r\n }\"\r\n (click)=\"onSelect($event, item)\"\r\n (mouseenter)=\"onActiveIndexChange($index)\"\r\n >\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemTemplate || defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n formatter: formatter,\r\n term: term,\r\n source: source,\r\n item: item,\r\n $index: $index\r\n }\"\r\n >\r\n </ng-template>\r\n </li>\r\n <li class=\"devui-dropdown-item devui-no-result-template\" *ngIf=\"!source?.length && noResultItemTemplate != null\">\r\n <ng-template [ngTemplateOutlet]=\"noResultItemTemplate\" [ngTemplateOutletContext]=\"{ term: term, source: source }\"> </ng-template>\r\n </li>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #defaultItemTemplate let-item=\"item\" let-term=\"term\">\r\n <d-highlight [value]=\"formatter(item)\" [term]=\"term\"></d-highlight>\r\n</ng-template>\r\n",
animations: [fadeInOut],
styles: ["@charset \"UTF-8\";.devui-dropdown-menu{width:100%;display:block}.devui-dropdown-item{cursor:pointer;display:block;width:100%;padding:8px 1rem;clear:both;border:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devui-no-result-template{cursor:not-allowed}.devui-no-result-template:hover{background:0 0!important}.devui-dropdown-item.disabled,.devui-dropdown-item.disabled:hover{cursor:not-allowed;opacity:.3;color:#252b3a;background:#fff}ul.devui-list-unstyled{margin:0;overflow-y:auto}:host(.devui-dropdown-menu){width:100%;margin:0;padding:5px 0}.devui-dropdown-bg{background:#f2f5fc}.devui-popup-tips{color:#adb0b8;padding:3px 1rem}"]
}] }
];
/** @nocollapse */
AutoCompletePopupComponent.ctorParameters = function () { return []; };
AutoCompletePopupComponent.propDecorators = {
cssClass: [{ type: Input }],
maxHeight: [{ type: Input }],
disabled: [{ type: Input }],
disabledKey: [{ type: Input }],
source: [{ type: Input }],
position: [{ type: Input }],
isOpen: [{ type: Input }],
term: [{ type: Input }],
popTipsText: [{ type: Input }],
overview: [{ type: Input }],
itemTemplate: [{ type: Input }],
noResultItemTemplate: [{ type: Input }],
formatter: [{ type: Input }],
dropdown: [{ type: Input }],
selectWidth: [{ type: Input }],
enableLazyLoad: [{ type: Input }],
selectMenuElement: [{ type: ViewChild, args: ['selectMenuElement', { static: true },] }]
};
return AutoCompletePopupComponent;
}());
export { AutoCompletePopupComponent };
if (false) {
/** @type {?} */
AutoCompletePopupComponent.prototype.activeIndex;
/** @type {?} */
AutoCompletePopupComponent.prototype.cssClass;
/** @type {?} */
AutoCompletePopupComponent.prototype.maxHeight;
/** @type {?} */
AutoCompletePopupComponent.prototype.disabled;
/** @type {?} */
AutoCompletePopupComponent.prototype.disabledKey;
/** @type {?} */
AutoCompletePopupComponent.prototype.source;
/** @type {?} */
AutoCompletePopupComponent.prototype.position;
/** @type {?} */
AutoCompletePopupComponent.prototype.isOpen;
/** @type {?} */
AutoCompletePopupComponent.prototype.term;
/** @type {?} */
AutoCompletePopupComponent.prototype.popTipsText;
/** @type {?} */
AutoCompletePopupComponent.prototype.overview;
/** @type {?} */
AutoCompletePopupComponent.prototype.itemTemplate;
/** @type {?} */
AutoCompletePopupComponent.prototype.noResultItemTemplate;
/** @type {?} */
AutoCompletePopupComponent.prototype.formatter;
/** @type {?} */
AutoCompletePopupComponent.prototype.dropdown;
/** @type {?} */
AutoCompletePopupComponent.prototype.selectWidth;
/** @type {?} */
AutoCompletePopupComponent.prototype.enableLazyLoad;
/** @type {?} */
AutoCompletePopupComponent.prototype.selectMenuElement;
/** @type {?} */
AutoCompletePopupComponent.prototype.showLoading;
/**
* @type {?}
* @private
*/
AutoCompletePopupComponent.prototype.value;
/** @type {?} */
AutoCompletePopupComponent.prototype.labelMinHeight;
/**
* @type {?}
* @private
*/
AutoCompletePopupComponent.prototype.onChange;
/**
* @type {?}
* @private
*/
AutoCompletePopupComponent.prototype.onTouched;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1kZXZ1aS9hdXRvLWNvbXBsZXRlLyIsInNvdXJjZXMiOlsiYXV0by1jb21wbGV0ZS1wb3B1cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0M7SUErQkU7UUF4QkEsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFrQmhCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLG1CQUFjLEdBQUcsRUFBRSxDQUFDLENBQUMsZ0NBQWdDOztRQUM3QyxhQUFROzs7O1FBQUcsVUFBQyxDQUFNLElBQUssT0FBQSxJQUFJLEVBQUosQ0FBSSxFQUFDO1FBQzVCLGNBQVM7OztRQUFHLGNBQU0sT0FBQSxJQUFJLEVBQUosQ0FBSSxFQUFDO1FBRzdCLElBQUksQ0FBQyxTQUFTOzs7O1FBQUcsVUFBQyxJQUFTLElBQUssT0FBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUEzQyxDQUEyQyxDQUFBLENBQUM7UUFDNUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7SUFDdkIsQ0FBQzs7Ozs7SUFFRCwrQ0FBVTs7OztJQUFWLFVBQVcsR0FBUTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDOzs7OztJQUVELHFEQUFnQjs7OztJQUFoQixVQUFpQixVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOzs7OztJQUVELHFEQUFnQjs7OztJQUFoQixVQUFpQixFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBRUQsc0RBQWlCOzs7O0lBQWpCLFVBQWtCLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7Ozs7O0lBRUQsNkNBQVE7Ozs7O0lBQVIsVUFBUyxLQUFVLEVBQUUsSUFBUztRQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM5QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsRUFBRSxpQkFBaUI7WUFDakQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7Ozs7SUFFRCxzREFBaUI7Ozs7SUFBakIsVUFBa0IsS0FBVTtRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Ozs7O0lBRUQsd0RBQW1COzs7O0lBQW5CLFVBQW9CLEtBQVU7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQzs7OztJQUVELDBDQUFLOzs7SUFBTDtRQUNFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Ozs7SUFFRCx5Q0FBSTs7O0lBQUo7UUFDRSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNwRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztnQkFDckIsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7Ozs7SUFFRCx5Q0FBSTs7O0lBQUo7UUFDRSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNwRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxFQUFFO2dCQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDMUMsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7Ozs7OztJQUVELDhDQUFTOzs7OztJQUFULFVBQVUsS0FBVSxFQUFFLElBQVM7UUFDN0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7OztJQUVELGlEQUFZOzs7O0lBQVosVUFBYSxNQUFXO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFOztnQkFDVixhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWE7WUFDMUQsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxrREFBYTs7OztJQUFiLFVBQWMsTUFBVztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs7OztJQUVELCtDQUFVOzs7O0lBQVYsVUFBVyxNQUFXO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7O2dCQXRIRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsb2tFQUFtRDtvQkFFbkQsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDOztpQkFDeEI7Ozs7OzJCQUdFLEtBQUs7NEJBQ0wsS0FBSzsyQkFDTCxLQUFLOzhCQUNMLEtBQUs7eUJBQ0wsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7dUJBQ0wsS0FBSzs4QkFDTCxLQUFLOzJCQUNMLEtBQUs7K0JBQ0wsS0FBSzt1Q0FDTCxLQUFLOzRCQUNMLEtBQUs7MkJBQ0wsS0FBSzs4QkFDTCxLQUFLO2lDQUNMLEtBQUs7b0NBQ0wsU0FBUyxTQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7SUErRmxELGlDQUFDO0NBQUEsQUF2SEQsSUF1SEM7U0FqSFksMEJBQTBCOzs7SUFDckMsaURBQWdCOztJQUNoQiw4Q0FBMEI7O0lBQzFCLCtDQUEyQjs7SUFDM0IsOENBQTJCOztJQUMzQixpREFBNkI7O0lBQzdCLDRDQUF1Qjs7SUFDdkIsOENBQXVCOztJQUN2Qiw0Q0FBeUI7O0lBQ3pCLDBDQUFzQjs7SUFDdEIsaURBQTZCOztJQUM3Qiw4Q0FBMEI7O0lBQzFCLGtEQUF3Qzs7SUFDeEMsMERBQWdEOztJQUNoRCwrQ0FBMEM7O0lBQzFDLDhDQUEyQjs7SUFDM0IsaURBQTBCOztJQUMxQixvREFBaUM7O0lBQ2pDLHVEQUFnRjs7SUFDaEYsaURBQW9COzs7OztJQUNwQiwyQ0FBbUI7O0lBQ25CLG9EQUFvQjs7Ozs7SUFDcEIsOENBQW9DOzs7OztJQUNwQywrQ0FBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZmFkZUluT3V0IH0gZnJvbSAnbmctZGV2dWkvdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkLWF1dG8tY29tcGxldGUtcG9wdXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvLWNvbXBsZXRlLXBvcHVwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnYXV0by1jb21wbGV0ZS1wb3B1cC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtmYWRlSW5PdXRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGVQb3B1cENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBhY3RpdmVJbmRleCA9IDA7XHJcbiAgQElucHV0KCkgY3NzQ2xhc3M6IHN0cmluZztcclxuICBASW5wdXQoKSBtYXhIZWlnaHQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNhYmxlZEtleTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNvdXJjZTogYW55W107XHJcbiAgQElucHV0KCkgcG9zaXRpb246IGFueTtcclxuICBASW5wdXQoKSBpc09wZW46IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdGVybTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBvcFRpcHNUZXh0OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3ZlcnZpZXc6IHN0cmluZztcclxuICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgbm9SZXN1bHRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgZm9ybWF0dGVyOiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZHJvcGRvd246IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2VsZWN0V2lkdGg6IGFueTtcclxuICBASW5wdXQoKSBlbmFibGVMYXp5TG9hZDogYm9vbGVhbjtcclxuICBAVmlld0NoaWxkKCdzZWxlY3RNZW51RWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHNlbGVjdE1lbnVFbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIHNob3dMb2FkaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSB2YWx1ZTogYW55O1xyXG4gIGxhYmVsTWluSGVpZ2h0ID0gMjA7IC8vIHBvc2l0aW9uLnRvcOWwj+S6jjIwcHjml7blgJnvvIzooajnpLrlhYnmoIflnKjnrKzkuIDooYxcclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4gbnVsbDtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5mb3JtYXR0ZXIgPSAoaXRlbTogYW55KSA9PiBpdGVtID8gKGl0ZW0ubGFiZWwgfHwgaXRlbS50b1N0cmluZygpKSA6ICcnO1xyXG4gICAgdGhpcy5tYXhIZWlnaHQgPSAzMDA7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0KGV2ZW50OiBhbnksIGl0ZW06IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWRLZXkgJiYgaXRlbVt0aGlzLmRpc2FibGVkS2V5XSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3ZlcnZpZXcgPT09ICdzaW5nbGUnKSB7IC8vIOWNlemAieWcuuaZr+WSjOWNleihjOWcuuaZr+S4jemcgOimgeWGkuazoVxyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZhbHVlID0gaXRlbTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHsgdHlwZTogJ3NlbGVjdCcsIHZhbHVlOiB0aGlzLnZhbHVlIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q3VycmVudEl0ZW0oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vblNlbGVjdChldmVudCwgdGhpcy5zb3VyY2VbdGhpcy5hY3RpdmVJbmRleF0pO1xyXG4gIH1cclxuXHJcbiAgb25BY3RpdmVJbmRleENoYW5nZShpbmRleDogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuYWN0aXZlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgbmV4dCgpIHtcclxuICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLnNvdXJjZSAmJiB0aGlzLnNvdXJjZS5sZW5ndGgpIHtcclxuICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPT09IHRoaXMuc291cmNlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXggKyAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJldigpIHtcclxuICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLnNvdXJjZSAmJiB0aGlzLnNvdXJjZS5sZW5ndGgpIHtcclxuICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPT09IDApIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gdGhpcy5zb3VyY2UubGVuZ3RoIC0gMTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXggLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBhbnksIGl0ZW06IGFueSkge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgYW5pbWF0aW9uRW5kKCRldmVudDogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSB0aGlzLnNlbGVjdE1lbnVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIHRhcmdldEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRNb3JlRXZlbnQoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh7IHR5cGU6ICdsb2FkTW9yZScsIHZhbHVlOiB0aGlzIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpbmlzaCgkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaG93TG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iXX0=