UNPKG

e5core-angular-ui

Version:

e5 Anywhere Angular UI

168 lines 17.7 kB
/** * @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\">&lt;e5core-ui-work-assign-user&gt; [workItem$] must have a BehaviorSubject&lt;WorkItemModel&gt;</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=