@gsp-cmp/ccmp-ui
Version:
CCMP UI Component Library for Angular
250 lines • 22.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/ccmp-selector/common-component-selector.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, EventEmitter, Output, ViewChild, TemplateRef } from '@angular/core';
import { DefaultGspComponentSerializeContext } from '@gsp-cmp/common-component';
import { ViewUtils } from '../view-utils/view-utils';
import { ComponentInfo } from '../params/component-info';
import { ComponentConvertor } from '../convertor/convertor';
import { WebServiceComponentSerializerContext } from '@gsp-cmp/wscmp-models';
import { DatagridComponent } from '@farris/ui-datagrid';
export class CommonComponentSelectorComponent {
/**
* @param {?} utils
*/
constructor(utils) {
this.utils = utils;
this.selectedIds = [];
this.columns = [];
this.multiSelection = false;
this.confirmEmitter = new EventEmitter();
this.closeEmitter = new EventEmitter();
}
/**
* @param {?} _componentInfo
* @return {?}
*/
set componentInfo(_componentInfo) {
this._componentInfo = _componentInfo;
switch (this._componentInfo.type) {
case 'CommonComponent':
this.CommonComponentInit(this._componentInfo);
break;
case 'WebServiceComponent':
this.WebServiceComponentInit(this._componentInfo);
break;
default:
throw new Error('不支持的构件类型' + this._componentInfo.type);
}
}
/**
* @param {?} options
* @return {?}
*/
set _options(options) {
this.multiSelection = options && options.multiSelection || false;
}
/**
* @return {?}
*/
ngOnInit() {
this._componentInfo = this._componentInfo || new ComponentInfo();
this.columnsInit();
}
/**
* @return {?}
*/
columnsInit() {
this.columns = [
{ field: 'code', width: 100, title: this.utils.translateService.instant('operation_code') },
{ field: 'name', width: 100, title: this.utils.translateService.instant('operation_name') },
];
}
/**
* @param {?} _componentInfo
* @return {?}
*/
CommonComponentInit(_componentInfo) {
/** @type {?} */
let convertor = new ComponentConvertor();
/** @type {?} */
let ctx = new DefaultGspComponentSerializeContext();
this.metadata = convertor.initFromObject(convertor.convertorToObject(_componentInfo.metadata, ctx), ctx);
this.metadata.operations = new Array();
}
/**
* @param {?} _componentInfo
* @return {?}
*/
WebServiceComponentInit(_componentInfo) {
/** @type {?} */
let convertor = new ComponentConvertor();
/** @type {?} */
let ctx = new WebServiceComponentSerializerContext();
this.metadata = convertor.initFromObject(convertor.convertorToObject(_componentInfo.metadata, ctx), ctx);
this.metadata.operations = new Array();
}
/**
* @return {?}
*/
confirm() {
if (this.selectedIds.length <= 0) {
this.utils.showInfo(this.utils.translateService.instant('operation_choose'), 'info', '', 1500);
return;
}
this.metadata.operations = [];
this.selectedIds.map((/**
* @param {?} x
* @return {?}
*/
x => {
/** @type {?} */
let operation = this._componentInfo.metadata.operations.find((/**
* @param {?} op
* @return {?}
*/
op => op.code === x));
if (operation) {
this.metadata.operations.push(operation);
}
}));
if (this.dialog) {
this.dialog.close();
}
this.confirmEmitter.emit(this.metadata);
this.selectedIds = [];
}
/**
* @return {?}
*/
close() {
if (this.dialog) {
this.dialog.close();
}
this.closeEmitter.emit();
}
/**
* @param {?} row
* @return {?}
*/
checkedHandler(row) {
/** @type {?} */
let index = this.selectedIds.findIndex((/**
* @param {?} x
* @return {?}
*/
x => x === row.id));
if (index == (-1)) {
this.selectedIds.push(row.id);
}
}
/**
* @param {?} row
* @return {?}
*/
unCheckedHandler(row) {
/** @type {?} */
let index = this.selectedIds.findIndex((/**
* @param {?} x
* @return {?}
*/
x => x === row.id));
if (index !== (-1)) {
this.selectedIds.splice(index, 1);
}
}
/**
* @param {?} rows
* @return {?}
*/
checkAllHandler(rows) {
if (rows && rows.length > 0) {
rows.forEach((/**
* @param {?} row
* @return {?}
*/
row => {
/** @type {?} */
let index = this.selectedIds.findIndex((/**
* @param {?} x
* @return {?}
*/
x => x === row.id));
if (index == (-1)) {
this.selectedIds.push(row.id);
}
}));
}
}
/**
* @param {?} rows
* @return {?}
*/
unCheckAllHandler(rows) {
if (rows && rows.length > 0) {
rows.forEach((/**
* @param {?} row
* @return {?}
*/
row => {
/** @type {?} */
let index = this.selectedIds.findIndex((/**
* @param {?} x
* @return {?}
*/
x => x === row.id));
if (index !== (-1)) {
this.selectedIds.splice(index, 1);
}
}));
}
}
}
CommonComponentSelectorComponent.decorators = [
{ type: Component, args: [{
selector: 'common-component-selector',
template: "<div class=\"d-flex\" style=\"position: absolute;top: 0;bottom: 0;left: 0;right: 0;\">\r\n <div class=\"f-utils-fill selector-modal\">\r\n <farris-datagrid #dg=\"datagrid\" [showLineNumber]=\"true\" [fit]=\"true\" [pagination]=\"true\" [virtualized]=\"false\"\r\n [fitColumns]=\"true\" [showAllCheckbox]=\"true\" [selectOnCheck]=\"true\" [showCheckbox]=\"true\" [idField]=\"'code'\"\r\n [multiSelect]=\"multiSelection\" [showPageList]=\"true\" [onlySelectSelf]=\"true\" [columns]=\"columns\" [data]=\"_componentInfo.metadata.operations\"\r\n (checkAll)=\"checkAllHandler($event)\" (unCheckAll)=\"unCheckAllHandler($event)\" (checked)=\"checkedHandler($event)\" (unChecked)=\"unCheckedHandler($event)\">\r\n </farris-datagrid>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #btnRef>\r\n <div style=\"width: 100%;line-height: 50px; text-align: center;min-width: 140px;\"> \r\n <button class=\"btn btn-primary\" (click)=confirm() style=\"float:right;margin-right: 5px\">{{'confirm'|i18n}}</button>\r\n <button class=\"btn btn-secondary\" (click)=\"close()\" style=\"float:right;margin-right: 5px\">{{'cancel'|i18n}}</button>\r\n </div>\r\n</ng-template>",
styles: [".selector-modal{padding:0 8px;width:100%;display:flex}"]
}] }
];
/** @nocollapse */
CommonComponentSelectorComponent.ctorParameters = () => [
{ type: ViewUtils }
];
CommonComponentSelectorComponent.propDecorators = {
componentInfo: [{ type: Input }],
dg: [{ type: ViewChild, args: ['dg',] }],
btnRef: [{ type: ViewChild, args: ['btnRef',] }],
confirmEmitter: [{ type: Output }],
closeEmitter: [{ type: Output }]
};
if (false) {
/** @type {?} */
CommonComponentSelectorComponent.prototype._componentInfo;
/** @type {?} */
CommonComponentSelectorComponent.prototype.dg;
/** @type {?} */
CommonComponentSelectorComponent.prototype.selectedIds;
/** @type {?} */
CommonComponentSelectorComponent.prototype.columns;
/** @type {?} */
CommonComponentSelectorComponent.prototype.dialog;
/** @type {?} */
CommonComponentSelectorComponent.prototype.metadata;
/** @type {?} */
CommonComponentSelectorComponent.prototype.multiSelection;
/** @type {?} */
CommonComponentSelectorComponent.prototype.btnRef;
/** @type {?} */
CommonComponentSelectorComponent.prototype.confirmEmitter;
/** @type {?} */
CommonComponentSelectorComponent.prototype.closeEmitter;
/**
* @type {?}
* @private
*/
CommonComponentSelectorComponent.prototype.utils;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLWNvbXBvbmVudC1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ3NwLWNtcC9jY21wLXVpLyIsInNvdXJjZXMiOlsibGliL2NjbXAtc2VsZWN0b3IvY29tbW9uLWNvbXBvbmVudC1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFnQixtQ0FBbUMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0UsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFRckUsTUFBTSxPQUFPLGdDQUFnQzs7OztJQTBDekMsWUFBb0IsS0FBZ0I7UUFBaEIsVUFBSyxHQUFMLEtBQUssQ0FBVztRQXBCcEMsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFakIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQU1iLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBUXRCLG1CQUFjLEdBQStCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEUsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUV2QixDQUFDOzs7OztJQXRDekMsSUFBYSxhQUFhLENBQUMsY0FBNkI7UUFFcEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFFckMsUUFBUSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFB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TUFBTTs7OztJQXRDUCwwREFBOEI7O0lBa0I5Qiw4Q0FBdUM7O0lBRXZDLHVEQUFpQjs7SUFFakIsbURBQWE7O0lBRWIsa0RBQW1COztJQUVuQixvREFBdUI7O0lBRXZCLDBEQUFnQzs7SUFNaEMsa0RBQThDOztJQUU5QywwREFBMEU7O0lBRTFFLHdEQUErRDs7Ozs7SUFFbkQsaURBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBHc3BDb21wb25lbnQsIERlZmF1bHRHc3BDb21wb25lbnRTZXJpYWxpemVDb250ZXh0IH0gZnJvbSAnQGdzcC1jbXAvY29tbW9uLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZpZXdVdGlscyB9IGZyb20gJy4uL3ZpZXctdXRpbHMvdmlldy11dGlscyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEluZm8gfSBmcm9tICcuLi9wYXJhbXMvY29tcG9uZW50LWluZm8nO1xyXG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnQGZhcnJpcy91aS1tb2RhbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnZlcnRvciB9IGZyb20gJy4uL2NvbnZlcnRvci9jb252ZXJ0b3InO1xyXG5pbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tICdAZWNwLWNhZi9jb21tb24tc3RydWN0dXJlJztcclxuaW1wb3J0IHsgV2ViU2VydmljZUNvbXBvbmVudFNlcmlhbGl6ZXJDb250ZXh0IH0gZnJvbSAnQGdzcC1jbXAvd3NjbXAtbW9kZWxzJztcclxuaW1wb3J0IHsgU2VsZWN0ZWRSb3csIERhdGFncmlkQ29tcG9uZW50IH0gZnJvbSAnQGZhcnJpcy91aS1kYXRhZ3JpZCc7XHJcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICcuLi9wYXJhbXMvb3B0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY29tbW9uLWNvbXBvbmVudC1zZWxlY3RvcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLWNvbXBvbmVudC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jb21tb24tY29tcG9uZW50LXNlbGVjdG9yLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uQ29tcG9uZW50U2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIF9jb21wb25lbnRJbmZvOiBDb21wb25lbnRJbmZvO1xyXG5cclxuICAgIEBJbnB1dCgpIHNldCBjb21wb25lbnRJbmZvKF9jb21wb25lbnRJbmZvOiBDb21wb25lbnRJbmZvKSB7XHJcblxyXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudEluZm8gPSBfY29tcG9uZW50SW5mbztcclxuXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLl9jb21wb25lbnRJbmZvLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnQ29tbW9uQ29tcG9uZW50JzpcclxuICAgICAgICAgICAgICAgIHRoaXMuQ29tbW9uQ29tcG9uZW50SW5pdCh0aGlzLl9jb21wb25lbnRJbmZvKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdXZWJTZXJ2aWNlQ29tcG9uZW50JzpcclxuICAgICAgICAgICAgICAgIHRoaXMuV2ViU2VydmljZUNvbXBvbmVudEluaXQodGhpcy5fY29tcG9uZW50SW5mbyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign5LiN5pSv5oyB55qE5p6E5Lu257G75Z6LJyArIHRoaXMuX2NvbXBvbmVudEluZm8udHlwZSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZGcnKSBkZzogRGF0YWdyaWRDb21wb25lbnQ7XHJcblxyXG4gICAgc2VsZWN0ZWRJZHMgPSBbXTtcclxuXHJcbiAgICBjb2x1bW5zID0gW107XHJcblxyXG4gICAgZGlhbG9nOiBCc01vZGFsUmVmO1xyXG5cclxuICAgIG1ldGFkYXRhOiBHc3BDb21wb25lbnQ7XHJcblxyXG4gICAgbXVsdGlTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBzZXQgX29wdGlvbnMob3B0aW9uczogT3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3Rpb24gPSBvcHRpb25zICYmIG9wdGlvbnMubXVsdGlTZWxlY3Rpb24gfHwgZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYnRuUmVmJykgYnRuUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIEBPdXRwdXQoKSBjb25maXJtRW1pdHRlcjogRXZlbnRFbWl0dGVyPEdzcENvbXBvbmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgQE91dHB1dCgpIGNsb3NlRW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlsczogVmlld1V0aWxzKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9jb21wb25lbnRJbmZvID0gdGhpcy5fY29tcG9uZW50SW5mbyB8fCBuZXcgQ29tcG9uZW50SW5mbygpO1xyXG4gICAgICAgIHRoaXMuY29sdW1uc0luaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb2x1bW5zSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbHVtbnMgPSBbXHJcbiAgICAgICAgICAgIHsgZmllbGQ6ICdjb2RlJywgd2lkdGg6IDEwMCwgdGl0bGU6IHRoaXMudXRpbHMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdvcGVyYXRpb25fY29kZScpIH0sXHJcbiAgICAgICAgICAgIHsgZmllbGQ6ICduYW1lJywgd2lkdGg6IDEwMCwgdGl0bGU6IHRoaXMudXRpbHMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdvcGVyYXRpb25fbmFtZScpIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBDb21tb25Db21wb25lbnRJbml0KF9jb21wb25lbnRJbmZvOiBDb21wb25lbnRJbmZvKSB7XHJcbiAgICAgICAgbGV0IGNvbnZlcnRvciA9IG5ldyBDb21wb25lbnRDb252ZXJ0b3IoKTtcclxuICAgICAgICBsZXQgY3R4ID0gbmV3IERlZmF1bHRHc3BDb21wb25lbnRTZXJpYWxpemVDb250ZXh0KCk7XHJcbiAgICAgICAgdGhpcy5tZXRhZGF0YSA9IGNvbnZlcnRvci5pbml0RnJvbU9iamVjdChjb252ZXJ0b3IuY29udmVydG9yVG9PYmplY3QoX2NvbXBvbmVudEluZm8ubWV0YWRhdGEsIGN0eCksIGN0eCk7XHJcbiAgICAgICAgdGhpcy5tZXRhZGF0YS5vcGVyYXRpb25zID0gbmV3IEFycmF5PE9wZXJhdGlvbj4oKTtcclxuICAgIH1cclxuXHJcbiAgICBXZWJTZXJ2aWNlQ29tcG9uZW50SW5pdChfY29tcG9uZW50SW5mbzogQ29tcG9uZW50SW5mbykge1xyXG4gICAgICAgIGxldCBjb252ZXJ0b3IgPSBuZXcgQ29tcG9uZW50Q29udmVydG9yKCk7XHJcbiAgICAgICAgbGV0IGN0eCA9IG5ldyBXZWJTZXJ2aWNlQ29tcG9uZW50U2VyaWFsaXplckNvbnRleHQoKTtcclxuICAgICAgICB0aGlzLm1ldGFkYXRhID0gY29udmVydG9yLmluaXRGcm9tT2JqZWN0KGNvbnZlcnRvci5jb252ZXJ0b3JUb09iamVjdChfY29tcG9uZW50SW5mby5tZXRhZGF0YSwgY3R4KSwgY3R4KTtcclxuICAgICAgICB0aGlzLm1ldGFkYXRhLm9wZXJhdGlvbnMgPSBuZXcgQXJyYXk8T3BlcmF0aW9uPigpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm0oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJZHMubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgdGhpcy51dGlscy5zaG93SW5mbyh0aGlzLnV0aWxzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnb3BlcmF0aW9uX2Nob29zZScpLCAnaW5mbycsICcnLCAxNTAwKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1ldGFkYXRhLm9wZXJhdGlvbnMgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSWRzLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgbGV0IG9wZXJhdGlvbiA9IHRoaXMuX2NvbXBvbmVudEluZm8ubWV0YWRhdGEub3BlcmF0aW9ucy5maW5kKG9wID0+IG9wLmNvZGUgPT09IHgpO1xyXG4gICAgICAgICAgICBpZiAob3BlcmF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGFkYXRhLm9wZXJhdGlvbnMucHVzaChvcGVyYXRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAodGhpcy5kaWFsb2cpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25maXJtRW1pdHRlci5lbWl0KHRoaXMubWV0YWRhdGEpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5kaWFsb2cpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jbG9zZUVtaXR0ZXIuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrZWRIYW5kbGVyKHJvdzogU2VsZWN0ZWRSb3cpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnNlbGVjdGVkSWRzLmZpbmRJbmRleCh4ID0+IHggPT09IHJvdy5pZCk7XHJcbiAgICAgICAgaWYgKGluZGV4ID09ICgtMSkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZElkcy5wdXNoKHJvdy5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVuQ2hlY2tlZEhhbmRsZXIocm93OiBTZWxlY3RlZFJvdykge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJZHMuZmluZEluZGV4KHggPT4geCA9PT0gcm93LmlkKTtcclxuICAgICAgICBpZiAoaW5kZXggIT09ICgtMSkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZElkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjaGVja0FsbEhhbmRsZXIocm93czogU2VsZWN0ZWRSb3dbXSkge1xyXG4gICAgICAgIGlmIChyb3dzICYmIHJvd3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByb3dzLmZvckVhY2gocm93ID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJZHMuZmluZEluZGV4KHggPT4geCA9PT0gcm93LmlkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAoLTEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZElkcy5wdXNoKHJvdy5pZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1bkNoZWNrQWxsSGFuZGxlcihyb3dzOiBTZWxlY3RlZFJvd1tdKSB7XHJcbiAgICAgICAgaWYgKHJvd3MgJiYgcm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJvd3MuZm9yRWFjaChyb3cgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5zZWxlY3RlZElkcy5maW5kSW5kZXgoeCA9PiB4ID09PSByb3cuaWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAoLTEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZElkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19