UNPKG

@gsp-cmp/ccmp-ui

Version:

CCMP UI Component Library for Angular

250 lines 22.6 kB
/** * @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