e5core-angular-ui
Version:
e5 Anywhere Angular UI
168 lines • 17.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ChangeDetectionStrategy, Input, EventEmitter, Output, QueryList, ViewChildren, ChangeDetectorRef } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { Guid } from 'guid-typescript';
import { E5coreUiAssignUserBaseComponent } from './component/e5core-ui-work-assign-user-base';
import { WorkItemFoundationService } from 'e5core-angular-services';
import { UiStyleService } from '../../services/ui-style.service';
var E5coreUiAssignUserComponent = /** @class */ (function () {
function E5coreUiAssignUserComponent(style, workItemFoundationService, changeDetectorRef) {
this.style = style;
this.workItemFoundationService = workItemFoundationService;
this.changeDetectorRef = changeDetectorRef;
this.showAssignButton = true;
this.readonly = false;
this.assignUserEvent = new EventEmitter();
this.selectUserEvent = new EventEmitter();
this.loading = false;
}
/**
* @return {?}
*/
E5coreUiAssignUserComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
if (typeof this.workItem$ == 'undefined') {
console.error('e5core-ui-work-assign-user [workItem$] must have a BehaviorSubject<WorkItemModel>');
return;
}
if (typeof this.workItem$ != 'undefined') {
this.workItem$.subscribe(function (wim) {
if (wim.workId && wim.workId != Guid.EMPTY) {
_this.populateAssignableUsers(wim.workId);
}
});
}
};
/**
* @param {?} wid
* @return {?}
*/
E5coreUiAssignUserComponent.prototype.populateAssignableUsers = /**
* @param {?} wid
* @return {?}
*/
function (wid) {
var _this = this;
this.loading = true;
this.changeDetectorRef.detectChanges();
this.workItemFoundationService.getAssignableUsers(wid).subscribe(function (s) {
_this.assignUserComponents.forEach(function (element) {
element.users = s;
_this.loading = false;
_this.changeDetectorRef.detectChanges();
});
}, function (error) {
console.error(error);
});
};
/**
* @param {?} event
* @return {?}
*/
E5coreUiAssignUserComponent.prototype.selectUser = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.selectedUser = event.value;
/** @type {?} */
var wid = this.workItem$.getValue().workId;
this.selectUserEvent.emit({ workId: wid, id: this.selectedUser.id, login: this.selectedUser.userName, name: this.selectedUser.name, email: this.selectedUser.email });
};
/**
* @param {?} event
* @return {?}
*/
E5coreUiAssignUserComponent.prototype.assignUser = /**
* @param {?} event
* @return {?}
*/
function (event) {
var _this = this;
if (this.selectedUser) {
/** @type {?} */
var assignUserJson = {
AssignedUser: this.selectedUser.userName
};
/** @type {?} */
var wid = this.workItem$.getValue().workId;
this.workItemFoundationService.update(wid, assignUserJson).subscribe(function (s) {
if (typeof _this.workItem$ != "undefined") {
_this.workItem$.next(_this.workItem$.getValue());
}
_this.assignUserEvent.emit({ workId: wid, id: _this.selectedUser.id, login: _this.selectedUser.userName, name: _this.selectedUser.name, email: _this.selectedUser.email });
}, function (error) {
console.error(error);
throw error;
});
}
};
/**
* @return {?}
*/
E5coreUiAssignUserComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
};
E5coreUiAssignUserComponent.decorators = [
{ type: Component, args: [{
selector: 'e5core-ui-work-assign-user',
template: "\n <span *ngIf=\"workItem$\" [ngSwitch]=\"style.current()\">\n <e5core-ui-work-assign-user-box *ngSwitchCase='0' [showAssignButton]='showAssignButton' [loading]='loading' [readonly]='readonly' (selectUserEvent)='selectUser($event)' (assignUserEvent)='assignUser($event)'></e5core-ui-work-assign-user-box>\n <e5core-ui-work-assign-user-bootstrap *ngSwitchCase='1' [showAssignButton]='showAssignButton' [loading]='loading' [readonly]='readonly' (selectUserEvent)='selectUser($event)' (assignUserEvent)='assignUser($event)'></e5core-ui-work-assign-user-bootstrap>\n <e5core-ui-work-assign-user-material *ngSwitchCase='2' [showAssignButton]='showAssignButton' [loading]='loading' [readonly]='readonly' (selectUserEvent)='selectUser($event)' (assignUserEvent)='assignUser($event)'></e5core-ui-work-assign-user-material>\n </span>\n <div *ngIf=\"!(workItem$)\" class=\"e5core-component-error\"><e5core-ui-work-assign-user> [workItem$] must have a BehaviorSubject<WorkItemModel></div>",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
E5coreUiAssignUserComponent.ctorParameters = function () { return [
{ type: UiStyleService },
{ type: WorkItemFoundationService },
{ type: ChangeDetectorRef }
]; };
E5coreUiAssignUserComponent.propDecorators = {
workItem$: [{ type: Input }],
showAssignButton: [{ type: Input }],
readonly: [{ type: Input }],
assignUserEvent: [{ type: Output }],
selectUserEvent: [{ type: Output }],
assignUserComponents: [{ type: ViewChildren, args: [E5coreUiAssignUserBaseComponent,] }]
};
return E5coreUiAssignUserComponent;
}());
export { E5coreUiAssignUserComponent };
if (false) {
/** @type {?} */
E5coreUiAssignUserComponent.prototype.workItem$;
/** @type {?} */
E5coreUiAssignUserComponent.prototype.showAssignButton;
/** @type {?} */
E5coreUiAssignUserComponent.prototype.readonly;
/** @type {?} */
E5coreUiAssignUserComponent.prototype.assignUserEvent;
/** @type {?} */
E5coreUiAssignUserComponent.prototype.selectUserEvent;
/** @type {?} */
E5coreUiAssignUserComponent.prototype.selectedUser;
/** @type {?} */
E5coreUiAssignUserComponent.prototype.loading;
/** @type {?} */
E5coreUiAssignUserComponent.prototype.assignUserComponents;
/** @type {?} */
E5coreUiAssignUserComponent.prototype.style;
/**
* @type {?}
* @private
*/
E5coreUiAssignUserComponent.prototype.workItemFoundationService;
/**
* @type {?}
* @private
*/
E5coreUiAssignUserComponent.prototype.changeDetectorRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZTVjb3JlLWFuZ3VsYXItdWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lNWNvcmUtdWktd29yay1hc3NpZ24tdXNlci9lNWNvcmUtdWktd29yay1hc3NpZ24tdXNlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsS0FBSyxFQUFpQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkssT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkMsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFO0lBeUJFLHFDQUNTLEtBQW9CLEVBQ25CLHlCQUFvRCxFQUNwRCxpQkFBb0M7UUFGckMsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUNuQiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFkckMscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDekIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNwRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBR3ZELFlBQU8sR0FBWSxLQUFLLENBQUU7SUFTN0IsQ0FBQzs7OztJQUVMLDhDQUFROzs7SUFBUjtRQUFBLGlCQWVDO1FBZEMs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QUFZLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7WUFDdEssQ0FBQyxFQUNELFVBQUEsS0FBSztnQkFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQixNQUFNLEtBQUssQ0FBQztZQUNkLENBQUMsQ0FDRixDQUFBO1NBQ0Y7SUFDSCxDQUFDOzs7O0lBRUQscURBQWU7OztJQUFmO0lBQ0EsQ0FBQzs7Z0JBakdGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxRQUFRLEVBQUUscStCQU1xSjtvQkFDL0osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzs7O2dCQVpRLGNBQWM7Z0JBSGQseUJBQXlCO2dCQUx3RixpQkFBaUI7Ozs0QkF1QnhJLEtBQUs7bUNBQ0wsS0FBSzsyQkFDTCxLQUFLO2tDQUNMLE1BQU07a0NBQ04sTUFBTTt1Q0FLTixZQUFZLFNBQUMsK0JBQStCOztJQTRFL0Msa0NBQUM7Q0FBQSxBQWxHRCxJQWtHQztTQXZGWSwyQkFBMkI7OztJQUV0QyxnREFBbUQ7O0lBQ25ELHVEQUEwQzs7SUFDMUMsK0NBQW1DOztJQUNuQyxzREFBOEQ7O0lBQzlELHNEQUE4RDs7SUFFOUQsbURBQStCOztJQUMvQiw4Q0FBaUM7O0lBRWpDLDJEQUN3RTs7SUFHdEUsNENBQTJCOzs7OztJQUMzQixnRUFBNEQ7Ozs7O0lBQzVELHdEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIEFmdGVyVmlld0luaXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3VpZCB9IGZyb20gJ2d1aWQtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBXb3JrSXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dvcmstaXRlbSc7XG5pbXBvcnQgeyBFNWNvcmVVaUFzc2lnblVzZXJCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQvZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXItYmFzZSc7XG5pbXBvcnQgeyBXb3JrSXRlbUZvdW5kYXRpb25TZXJ2aWNlIH0gZnJvbSAnZTVjb3JlLWFuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IHsgV29ya1VzZXJFdmVudCB9IGZyb20gJy4uLy4uL2V2ZW50cy93b3JrLXVzZXItZXZlbnQnO1xuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnZTVjb3JlLWFuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IHsgVWlTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91aS1zdHlsZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXInLFxuICB0ZW1wbGF0ZTogYFxuICA8c3BhbiAqbmdJZj1cIndvcmtJdGVtJFwiIFtuZ1N3aXRjaF09XCJzdHlsZS5jdXJyZW50KClcIj5cbiAgPGU1Y29yZS11aS13b3JrLWFzc2lnbi11c2VyLWJveCAqbmdTd2l0Y2hDYXNlPScwJyBbc2hvd0Fzc2lnbkJ1dHRvbl09J3Nob3dBc3NpZ25CdXR0b24nIFtsb2FkaW5nXT0nbG9hZGluZycgW3JlYWRvbmx5XT0ncmVhZG9ubHknIChzZWxlY3RVc2VyRXZlbnQpPSdzZWxlY3RVc2VyKCRldmVudCknIChhc3NpZ25Vc2VyRXZlbnQpPSdhc3NpZ25Vc2VyKCRldmVudCknPjwvZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXItYm94PlxuICA8ZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXItYm9vdHN0cmFwICpuZ1N3aXRjaENhc2U9JzEnIFtzaG93QXNzaWduQnV0dG9uXT0nc2hvd0Fzc2lnbkJ1dHRvbicgW2xvYWRpbmddPSdsb2FkaW5nJyBbcmVhZG9ubHldPSdyZWFkb25seScgKHNlbGVjdFVzZXJFdmVudCk9J3NlbGVjdFVzZXIoJGV2ZW50KScgKGFzc2lnblVzZXJFdmVudCk9J2Fzc2lnblVzZXIoJGV2ZW50KSc+PC9lNWNvcmUtdWktd29yay1hc3NpZ24tdXNlci1ib290c3RyYXA+XG4gIDxlNWNvcmUtdWktd29yay1hc3NpZ24tdXNlci1tYXRlcmlhbCAqbmdTd2l0Y2hDYXNlPScyJyBbc2hvd0Fzc2lnbkJ1dHRvbl09J3Nob3dBc3NpZ25CdXR0b24nIFtsb2FkaW5nXT0nbG9hZGluZycgW3JlYWRvbmx5XT0ncmVhZG9ubHknIChzZWxlY3RVc2VyRXZlbnQpPSdzZWxlY3RVc2VyKCRldmVudCknIChhc3NpZ25Vc2VyRXZlbnQpPSdhc3NpZ25Vc2VyKCRldmVudCknPjwvZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXItbWF0ZXJpYWw+XG4gIDwvc3Bhbj5cbiAgPGRpdiAqbmdJZj1cIiEod29ya0l0ZW0kKVwiIGNsYXNzPVwiZTVjb3JlLWNvbXBvbmVudC1lcnJvclwiPiZsdDtlNWNvcmUtdWktd29yay1hc3NpZ24tdXNlciZndDsgW3dvcmtJdGVtJF0gbXVzdCBoYXZlIGEgQmVoYXZpb3JTdWJqZWN0Jmx0O1dvcmtJdGVtTW9kZWwmZ3Q7PC9kaXY+YCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRTVjb3JlVWlBc3NpZ25Vc2VyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcblxuICBASW5wdXQoKSB3b3JrSXRlbSQ6IEJlaGF2aW9yU3ViamVjdDxXb3JrSXRlbU1vZGVsPjtcbiAgQElucHV0KCkgc2hvd0Fzc2lnbkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBhc3NpZ25Vc2VyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFdvcmtVc2VyRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RVc2VyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFdvcmtVc2VyRXZlbnQ+KCk7XG5cbiAgcHVibGljIHNlbGVjdGVkVXNlcjogVXNlck1vZGVsO1xuICBwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlIDtcbiAgXG4gIEBWaWV3Q2hpbGRyZW4oRTVjb3JlVWlBc3NpZ25Vc2VyQmFzZUNvbXBvbmVudClcbiAgcHVibGljIGFzc2lnblVzZXJDb21wb25lbnRzOiBRdWVyeUxpc3Q8RTVjb3JlVWlBc3NpZ25Vc2VyQmFzZUNvbXBvbmVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHN0eWxlOlVpU3R5bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgd29ya0l0ZW1Gb3VuZGF0aW9uU2VydmljZTogV29ya0l0ZW1Gb3VuZGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy53b3JrSXRlbSQgPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2U1Y29yZS11aS13b3JrLWFzc2lnbi11c2VyIFt3b3JrSXRlbSRdIG11c3QgaGF2ZSBhIEJlaGF2aW9yU3ViamVjdDxXb3JrSXRlbU1vZGVsPicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy53b3JrSXRlbSQgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMud29ya0l0ZW0kLnN1YnNjcmliZShcbiAgICAgICAgd2ltID0+IHtcbiAgICAgICAgICBpZiAod2ltLndvcmtJZCAmJiB3aW0ud29ya0lkICE9IEd1aWQuRU1QVFkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVBc3NpZ25hYmxlVXNlcnMod2ltLndvcmtJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHBvcHVsYXRlQXNzaWduYWJsZVVzZXJzKHdpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLndvcmtJdGVtRm91bmRhdGlvblNlcnZpY2UuZ2V0QXNzaWduYWJsZVVzZXJzKHdpZCkuc3Vic2NyaWJlKFxuICAgICAgcyA9PiB7XG4gICAgICAgIHRoaXMuYXNzaWduVXNlckNvbXBvbmVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICBlbGVtZW50LnVzZXJzID0gcztcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBwdWJsaWMgc2VsZWN0VXNlcihldmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRVc2VyID0gZXZlbnQudmFsdWU7XG4gICAgdmFyIHdpZCA9IHRoaXMud29ya0l0ZW0kLmdldFZhbHVlKCkud29ya0lkO1xuXG4gICAgdGhpcy5zZWxlY3RVc2VyRXZlbnQuZW1pdCh7d29ya0lkOiB3aWQsIGlkOiB0aGlzLnNlbGVjdGVkVXNlci5pZCwgbG9naW46IHRoaXMuc2VsZWN0ZWRVc2VyLnVzZXJOYW1lLCBuYW1lOiB0aGlzLnNlbGVjdGVkVXNlci5uYW1lLCBlbWFpbDogdGhpcy5zZWxlY3RlZFVzZXIuZW1haWx9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3NpZ25Vc2VyKGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRVc2VyKSB7XG5cbiAgICAgIHZhciBhc3NpZ25Vc2VySnNvbiA9IHtcbiAgICAgICAgQXNzaWduZWRVc2VyOiB0aGlzLnNlbGVjdGVkVXNlci51c2VyTmFtZVxuICAgICAgfTtcblxuICAgICAgdmFyIHdpZCA9IHRoaXMud29ya0l0ZW0kLmdldFZhbHVlKCkud29ya0lkO1xuXG4gICAgICB0aGlzLndvcmtJdGVtRm91bmRhdGlvblNlcnZpY2UudXBkYXRlKHdpZCwgYXNzaWduVXNlckpzb24pLnN1YnNjcmliZShcbiAgICAgICAgcyA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndvcmtJdGVtJCAhPSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtJC5uZXh0KHRoaXMud29ya0l0ZW0kLmdldFZhbHVlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFzc2lnblVzZXJFdmVudC5lbWl0KHt3b3JrSWQ6IHdpZCwgaWQ6IHRoaXMuc2VsZWN0ZWRVc2VyLmlkLCBsb2dpbjogdGhpcy5zZWxlY3RlZFVzZXIudXNlck5hbWUsIG5hbWU6IHRoaXMuc2VsZWN0ZWRVc2VyLm5hbWUsIGVtYWlsOiB0aGlzLnNlbGVjdGVkVXNlci5lbWFpbH0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIH1cbn0iXX0=