@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
258 lines • 23.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: data-table-row.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, NgZone, Output, HostBinding } from '@angular/core';
import { DataTableComponent } from './data-table.component';
import { ForceUpdateReason } from './force-update-reason.model';
var DataTableRowComponent = /** @class */ (function () {
function DataTableRowComponent(dt, changeDetectorRef, rowRef, ngZone) {
this.dt = dt;
this.changeDetectorRef = changeDetectorRef;
this.rowRef = rowRef;
this.ngZone = ngZone;
this.fontWeight = '400';
this.verticalAlign = 'middle';
this.detailChange = new EventEmitter();
this.forceUpdateEvent = new EventEmitter();
this.clickCount = 0; // 记录点击次数
}
/**
* @return {?}
*/
DataTableRowComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.ngZone.runOutsideAngular((/**
* @return {?}
*/
function () {
_this.rowRef.nativeElement.addEventListener('click', _this.onRowClick.bind(_this));
_this.rowRef.nativeElement.addEventListener('dblclick', _this.onRowDBClick.bind(_this));
_this.rowRef.nativeElement.addEventListener('mouseenter', _this.onRowMouseEnter.bind(_this));
_this.rowRef.nativeElement.addEventListener('mouseleave', _this.onRowMouseLeave.bind(_this));
}));
};
/**
* @return {?}
*/
DataTableRowComponent.prototype.forceUpdate = /**
* @return {?}
*/
function () {
this.changeDetectorRef.markForCheck();
this.forceUpdateEvent.emit(ForceUpdateReason.RowUpdate);
};
/**
* @param {?} $event
* @return {?}
*/
DataTableRowComponent.prototype.onRowClick = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var _this = this;
// $event.stopPropagation();
this.clickCount++;
if (this.clickCount === 1) {
this.timeoutId = setTimeout((/**
* @return {?}
*/
function () {
if (_this.clickCount === 1) {
_this.dt.onRowClick({ rowIndex: _this.rowIndex, nestedIndex: _this.nestedIndex, rowItem: _this.rowItem, rowComponent: _this });
}
_this.clickCount = 0;
clearTimeout(_this.timeoutId);
}), this.timeout);
}
};
/**
* @param {?} $event
* @return {?}
*/
DataTableRowComponent.prototype.onRowDBClick = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
// $event.stopPropagation();
this.dt.onRowDBClick({ rowIndex: this.rowIndex, nestedIndex: this.nestedIndex, rowItem: this.rowItem, rowComponent: this });
};
/**
* @param {?} $event
* @return {?}
*/
DataTableRowComponent.prototype.onRowMouseEnter = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var _this = this;
this.ngZone.run((/**
* @return {?}
*/
function () {
_this.rowItem.$hovered = true;
}));
};
/**
* @param {?} $event
* @return {?}
*/
DataTableRowComponent.prototype.onRowMouseLeave = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var _this = this;
this.ngZone.run((/**
* @return {?}
*/
function () {
_this.rowItem.$hovered = false;
}));
};
/**
* @param {?} $event
* @param {?} rowIndex
* @param {?} nestedIndex
* @param {?} rowItem
* @return {?}
*/
DataTableRowComponent.prototype.onRowCheckChange = /**
* @param {?} $event
* @param {?} rowIndex
* @param {?} nestedIndex
* @param {?} rowItem
* @return {?}
*/
function ($event, rowIndex, nestedIndex, rowItem) {
rowItem.$checked = $event;
rowItem.$halfChecked = false;
this.dt.onRowCheckChange({ rowItem: rowItem, rowIndex: rowIndex, nestedIndex: nestedIndex, checked: $event });
};
/**
* @return {?}
*/
DataTableRowComponent.prototype.toggle = /**
* @return {?}
*/
function () {
this.rowItem['$isDetailOpen'] = !this.rowItem['$isDetailOpen'];
if (this.rowItem.$expandConfig) {
this.rowItem.$expandConfig.expand = !this.rowItem.$expandConfig.expand;
}
this.detailChange.emit({ state: this.rowItem['$isDetailOpen'], index: this.rowIndex });
this.dt.onDetailToggle({ state: this.rowItem['$isDetailOpen'], index: this.rowIndex });
};
/**
* @param {?} index
* @param {?} item
* @return {?}
*/
DataTableRowComponent.prototype.trackByFn = /**
* @param {?} index
* @param {?} item
* @return {?}
*/
function (index, item) {
return index;
};
DataTableRowComponent.decorators = [
{ type: Component, args: [{
selector: 'd-data-table-row, [dDataTableRow]',
template: "<td *ngIf=\"showExpandToggle\" class=\"devui-detail-cell\" [ngClass]=\"{ 'devui-sticky-left-cell': columns[0]?.fixedLeft }\" [style.left]=\"0\">\r\n <div *ngIf=\"rowItem.detail || rowItem.$expandConfig\" (click)=\"toggle()\">\r\n <span [style.vertical-align]=\"'middle'\" *ngIf=\"rowItem['$isDetailOpen'] || rowItem.$expandConfig?.expand\">\r\n <svg\r\n class=\"svg-icon-arrow\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g id=\"chevron-down\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon points=\"4.5 5 8 8.76923077 11.5 5 13 6.61538462 8 12 3 6.61538462\"></polygon>\r\n </g>\r\n </svg>\r\n </span>\r\n <span [style.vertical-align]=\"'middle'\" *ngIf=\"!rowItem['$isDetailOpen'] && !rowItem.$expandConfig?.expand\">\r\n <svg\r\n class=\"svg-icon-arrow\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g id=\"chevron-up\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon points=\"11.5 12 8 8.23076923 4.5 12 3 10.3846154 8 5 13 10.3846154\"></polygon>\r\n </g>\r\n </svg>\r\n </span>\r\n </div>\r\n</td>\r\n<td\r\n *ngIf=\"checkable\"\r\n class=\"devui-checkable-cell\"\r\n [ngClass]=\"{ 'devui-sticky-left-cell': columns[0]?.fixedLeft }\"\r\n [style.left]=\"showExpandToggle && columns[0]?.fixedLeft ? '36px' : '0'\"\r\n>\r\n <d-checkbox\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (ngModelChange)=\"onRowCheckChange($event, rowIndex, nestedIndex, rowItem)\"\r\n [ngModel]=\"rowItem.$checked\"\r\n [halfchecked]=\"rowItem.$halfChecked\"\r\n [disabled]=\"rowItem.$disabled\"\r\n dTooltip\r\n [content]=\"rowItem.$checkBoxTips\"\r\n [position]=\"'top'\"\r\n [showAnimation]=\"false\"\r\n >\r\n </d-checkbox>\r\n</td>\r\n<ng-container *ngFor=\"let column of columns; let colIndex = index; trackBy: trackByFn\">\r\n <td\r\n dDataTableCell\r\n [rowIndex]=\"rowIndex\"\r\n [colIndex]=\"colIndex\"\r\n [column]=\"column\"\r\n [rowItem]=\"rowItem\"\r\n [style.width]=\"column.width || ''\"\r\n [ngStyle]=\"column.style\"\r\n [editModel]=\"rowItem.$$editModel || editModel\"\r\n [isEditRow]=\"rowItem.$$edit\"\r\n [timeout]=\"timeout\"\r\n [tableLevel]=\"tableLevel\"\r\n class=\"{{ column.cellClass ? column.cellClass : '' }}\"\r\n [ngClass]=\"{\r\n 'devui-sticky-left-cell': column.fixedLeft,\r\n 'devui-sticky-right-cell': column.fixedRight\r\n }\"\r\n [style.left]=\"column.fixedLeft ? column.fixedLeft : null\"\r\n [style.right]=\"column.fixedRight ? column.fixedRight : null\"\r\n ></td>\r\n</ng-container>\r\n",
styles: ["svg.svg-icon-arrow>g>polygon{fill:#252b3a}:host ::ng-deep d-button button.d-btn.d-btn-icon{padding:0!important}:host ::ng-deep .cell-modify{position:absolute;right:0;cursor:pointer}:host ::ng-deep .cell-modify>svg{vertical-align:middle}:host ::ng-deep .cell-modify>svg>g>g{fill:#9498a0}:host ::ng-deep .cell-modify:hover>svg>g>g{fill:#252b3a}:host ::ng-deep .cell-placeholder{display:inline-block;height:16px}:host ::ng-deep .cell-container{position:relative;height:24px}:host ::ng-deep .cell-container-inner{position:absolute;max-width:100%}:host ::ng-deep .cell-container-inner.modify-holder{padding-right:20px}:host ::ng-deep .cell-container-inner.modify-holder .cell-modify{display:none;position:absolute;right:0;cursor:pointer}:host ::ng-deep .cell-container-inner.modify-holder .cell-modify>svg{vertical-align:middle}:host ::ng-deep .cell-container-inner.modify-holder .cell-modify>svg>g{fill:#252b3a}:host ::ng-deep .cell-container-inner.modify-holder .cell-modify:hover>svg>g{fill:#344899}:host ::ng-deep .cell-container-inner.modify-holder:hover .cell-modify{display:inline}:host ::ng-deep .not-break{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;word-spacing:normal;word-wrap:normal}:host ::ng-deep .cell-editable{cursor:pointer;margin-left:-5px;padding-left:5px}:host ::ng-deep .cell-editable:hover{background:#f2f5fc}"]
}] }
];
/** @nocollapse */
DataTableRowComponent.ctorParameters = function () { return [
{ type: DataTableComponent },
{ type: ChangeDetectorRef },
{ type: ElementRef },
{ type: NgZone }
]; };
DataTableRowComponent.propDecorators = {
rowItem: [{ type: Input }],
fontWeight: [{ type: HostBinding, args: ['style.font-weight',] }],
verticalAlign: [{ type: HostBinding, args: ['style.vertical-align',] }],
selectable: [{ type: Input }],
checkable: [{ type: Input }],
showExpandToggle: [{ type: Input }],
rowIndex: [{ type: Input }],
allChecked: [{ type: Input }],
columns: [{ type: Input }],
editModel: [{ type: Input }],
editRowItem: [{ type: Input }],
resizeable: [{ type: Input }],
timeout: [{ type: Input }],
tableLevel: [{ type: Input }],
nestedIndex: [{ type: Input }],
detailChange: [{ type: Output }]
};
return DataTableRowComponent;
}());
export { DataTableRowComponent };
if (false) {
/** @type {?} */
DataTableRowComponent.prototype.rowItem;
/** @type {?} */
DataTableRowComponent.prototype.fontWeight;
/** @type {?} */
DataTableRowComponent.prototype.verticalAlign;
/** @type {?} */
DataTableRowComponent.prototype.selectable;
/** @type {?} */
DataTableRowComponent.prototype.checkable;
/** @type {?} */
DataTableRowComponent.prototype.showExpandToggle;
/** @type {?} */
DataTableRowComponent.prototype.rowIndex;
/** @type {?} */
DataTableRowComponent.prototype.allChecked;
/** @type {?} */
DataTableRowComponent.prototype.columns;
/** @type {?} */
DataTableRowComponent.prototype.editModel;
/** @type {?} */
DataTableRowComponent.prototype.editRowItem;
/** @type {?} */
DataTableRowComponent.prototype.resizeable;
/** @type {?} */
DataTableRowComponent.prototype.timeout;
/** @type {?} */
DataTableRowComponent.prototype.tableLevel;
/** @type {?} */
DataTableRowComponent.prototype.nestedIndex;
/** @type {?} */
DataTableRowComponent.prototype.detailChange;
/** @type {?} */
DataTableRowComponent.prototype.forceUpdateEvent;
/** @type {?} */
DataTableRowComponent.prototype.clickCount;
/** @type {?} */
DataTableRowComponent.prototype.timeoutId;
/** @type {?} */
DataTableRowComponent.prototype.dt;
/**
* @type {?}
* @private
*/
DataTableRowComponent.prototype.changeDetectorRef;
/**
* @type {?}
* @private
*/
DataTableRowComponent.prototype.rowRef;
/**
* @type {?}
* @private
*/
DataTableRowComponent.prototype.ngZone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZGV2dWkvZGF0YS10YWJsZS8iLCJzb3VyY2VzIjpbImRhdGEtdGFibGUtcm93LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHaEU7SUE0QkUsK0JBQW1CLEVBQXNCLEVBQVUsaUJBQW9DLEVBQzdFLE1BQWtCLEVBQVUsTUFBYztRQURqQyxPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDN0UsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUF0QmxCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxRQUFRLENBQUM7UUFhcEQsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTVDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRXpELGVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTO0lBS3pCLENBQUM7Ozs7SUFFRCx3Q0FBUTs7O0lBQVI7UUFBQSxpQkFtQkM7UUFsQkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUI7OztRQUFDO1lBQzVCLEtBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUN0QyxPQUFPLEVBQ1AsS0FBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLENBQzdCLENBQUM7WUFDRixLQUFJ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Q0wsTUFBTTs7SUFzRlQsNEJBQUM7Q0FBQSxBQTNHRCxJQTJHQztTQXRHWSxxQkFBcUI7OztJQUNoQyx3Q0FBc0I7O0lBQ3RCLDJDQUFxRDs7SUFDckQsOENBQThEOztJQUM5RCwyQ0FBNkI7O0lBQzdCLDBDQUE0Qjs7SUFDNUIsaURBQW1DOztJQUNuQyx5Q0FBMEI7O0lBQzFCLDJDQUE2Qjs7SUFDN0Isd0NBQWlEOztJQUNqRCwwQ0FBMkI7O0lBQzNCLDRDQUEwQjs7SUFDMUIsMkNBQTZCOztJQUM3Qix3Q0FBeUI7O0lBQ3pCLDJDQUE0Qjs7SUFDNUIsNENBQTZCOztJQUM3Qiw2Q0FBNEM7O0lBRTVDLGlEQUF5RDs7SUFFekQsMkNBQWU7O0lBQ2YsMENBQVU7O0lBRUUsbUNBQTZCOzs7OztJQUFFLGtEQUE0Qzs7Ozs7SUFDckYsdUNBQTBCOzs7OztJQUFFLHVDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT25Jbml0LCBPdXRwdXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JjZVVwZGF0ZVJlYXNvbiB9IGZyb20gJy4vZm9yY2UtdXBkYXRlLXJlYXNvbi5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtblRtcGxDb21wb25lbnQgfSBmcm9tICcuL3RtcGwvZGF0YS10YWJsZS1jb2x1bW4tdG1wbC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkLWRhdGEtdGFibGUtcm93LCBbZERhdGFUYWJsZVJvd10nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLXJvdy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS1yb3cuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlUm93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSByb3dJdGVtOiBhbnk7XHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5mb250LXdlaWdodCcpIGZvbnRXZWlnaHQgPSAnNDAwJztcclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnZlcnRpY2FsLWFsaWduJykgdmVydGljYWxBbGlnbiA9ICdtaWRkbGUnO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGFibGU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2hlY2thYmxlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNob3dFeHBhbmRUb2dnbGU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcm93SW5kZXg6IG51bWJlcjtcclxuICBASW5wdXQoKSBhbGxDaGVja2VkOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtblRtcGxDb21wb25lbnRbXTtcclxuICBASW5wdXQoKSBlZGl0TW9kZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBlZGl0Um93SXRlbTogYW55O1xyXG4gIEBJbnB1dCgpIHJlc2l6ZWFibGU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdGltZW91dDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHRhYmxlTGV2ZWw6IG51bWJlcjtcclxuICBASW5wdXQoKSBuZXN0ZWRJbmRleDogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSBkZXRhaWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGZvcmNlVXBkYXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcmNlVXBkYXRlUmVhc29uPigpO1xyXG5cclxuICBjbGlja0NvdW50ID0gMDsgLy8g6K6w5b2V54K55Ye75qyh5pWwXHJcbiAgdGltZW91dElkOyAvLyDlu7bml7ZpZFxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZHQ6IERhdGFUYWJsZUNvbXBvbmVudCwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHJvd1JlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgIHRoaXMucm93UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAgICdjbGljaycsXHJcbiAgICAgICAgICB0aGlzLm9uUm93Q2xpY2suYmluZCh0aGlzKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnJvd1JlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgJ2RibGNsaWNrJyxcclxuICAgICAgICB0aGlzLm9uUm93REJDbGljay5iaW5kKHRoaXMpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMucm93UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAnbW91c2VlbnRlcicsXHJcbiAgICAgICAgdGhpcy5vblJvd01vdXNlRW50ZXIuYmluZCh0aGlzKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnJvd1JlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgJ21vdXNlbGVhdmUnLFxyXG4gICAgICAgIHRoaXMub25Sb3dNb3VzZUxlYXZlLmJpbmQodGhpcylcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9yY2VVcGRhdGUoKSB7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5mb3JjZVVwZGF0ZUV2ZW50LmVtaXQoRm9yY2VVcGRhdGVSZWFzb24uUm93VXBkYXRlKTtcclxuICB9XHJcblxyXG4gIG9uUm93Q2xpY2soJGV2ZW50KSB7XHJcbiAgICAvLyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmNsaWNrQ291bnQrKztcclxuICAgIGlmICh0aGlzLmNsaWNrQ291bnQgPT09IDEpIHtcclxuICAgICAgdGhpcy50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jbGlja0NvdW50ID09PSAxKSB7XHJcbiAgICAgICAgICB0aGlzLmR0Lm9uUm93Q2xpY2soeyByb3dJbmRleDogdGhpcy5yb3dJbmRleCwgbmVzdGVkSW5kZXg6IHRoaXMubmVzdGVkSW5kZXgsIHJvd0l0ZW06IHRoaXMucm93SXRlbSwgcm93Q29tcG9uZW50OiB0aGlzIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNsaWNrQ291bnQgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJZCk7XHJcbiAgICAgIH0sIHRoaXMudGltZW91dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJvd0RCQ2xpY2soJGV2ZW50KSB7XHJcbiAgICAvLyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmR0Lm9uUm93REJDbGljayh7IHJvd0luZGV4OiB0aGlzLnJvd0luZGV4LCBuZXN0ZWRJbmRleDogdGhpcy5uZXN0ZWRJbmRleCwgcm93SXRlbTogdGhpcy5yb3dJdGVtLCByb3dDb21wb25lbnQ6IHRoaXMgfSk7XHJcbiAgfVxyXG5cclxuICBvblJvd01vdXNlRW50ZXIoJGV2ZW50KSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLnJvd0l0ZW0uJGhvdmVyZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJvd01vdXNlTGVhdmUoJGV2ZW50KSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLnJvd0l0ZW0uJGhvdmVyZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dDaGVja0NoYW5nZSgkZXZlbnQsIHJvd0luZGV4LCBuZXN0ZWRJbmRleCwgcm93SXRlbSkge1xyXG4gICAgcm93SXRlbS4kY2hlY2tlZCA9ICRldmVudDtcclxuICAgIHJvd0l0ZW0uJGhhbGZDaGVja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmR0Lm9uUm93Q2hlY2tDaGFuZ2UoeyByb3dJdGVtLCByb3dJbmRleCwgbmVzdGVkSW5kZXgsIGNoZWNrZWQ6ICRldmVudCB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZSgpIHtcclxuICAgIHRoaXMucm93SXRlbVsnJGlzRGV0YWlsT3BlbiddID0gIXRoaXMucm93SXRlbVsnJGlzRGV0YWlsT3BlbiddO1xyXG4gICAgaWYgKHRoaXMucm93SXRlbS4kZXhwYW5kQ29uZmlnKSB7XHJcbiAgICAgIHRoaXMucm93SXRlbS4kZXhwYW5kQ29uZmlnLmV4cGFuZCA9ICF0aGlzLnJvd0l0ZW0uJGV4cGFuZENvbmZpZy5leHBhbmQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRldGFpbENoYW5nZS5lbWl0KHsgc3RhdGU6IHRoaXMucm93SXRlbVsnJGlzRGV0YWlsT3BlbiddLCBpbmRleDogdGhpcy5yb3dJbmRleCB9KTtcclxuICAgIHRoaXMuZHQub25EZXRhaWxUb2dnbGUoeyBzdGF0ZTogdGhpcy5yb3dJdGVtWyckaXNEZXRhaWxPcGVuJ10sIGluZGV4OiB0aGlzLnJvd0luZGV4IH0pO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4LCBpdGVtKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG59XHJcbiJdfQ==