@trudb/tru-common-lib 0.0.679 → 0.0.681

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { FormGroup, FormControl, Validators } from '@angular/forms';
3
+ import { finalize } from 'rxjs';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "./services/tru-auth";
5
6
  import * as i2 from "@angular/common";
@@ -32,8 +33,10 @@ export class TruLogin {
32
33
  if (loginRequest.username && loginRequest.password) {
33
34
  this.isLoggingIn = true;
34
35
  this.auth
35
- .login(loginRequest)
36
- .subscribe((user) => {
36
+ .login(loginRequest).pipe(finalize(() => {
37
+ this.isLoggingIn = false;
38
+ }))
39
+ .subscribe(() => {
37
40
  this.isLoggingIn = false;
38
41
  }, (error) => {
39
42
  if (error.status === 401) {
@@ -52,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
52
55
  type: Component,
53
56
  args: [{ selector: 'tru-login', template: "<div class=\"login-wrapper\">\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-card class=\"animate-login\">\r\n <mat-card-header>\r\n <mat-card-title> loginFormTitle </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-form-field>\r\n <mat-label>Username</mat-label>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\">\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Password</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" placeholder=\"Password\">\r\n </mat-form-field>\r\n <div *ngIf=\"loginError\" class=\"animate-login-error animated rubberBand\">\r\n <p style=\"color: red; font-weight: bold;\"> {{ loginError }}</p>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isDisabled()\">Login</button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </form>\r\n</div>\r\n", styles: [".login-container{display:flex;justify-content:center;align-items:center;height:100vh;margin:0;padding:0}.login-input{margin-bottom:20px}.animate-login{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;margin-top:50px}.wrapper{display:flex;justify-content:center;align-items:center;height:100vh}mat-card{max-width:300px;width:100%;max-height:300px;padding:20px}.form-group{width:100%;max-width:400px;margin-bottom:20px}.login-wrapper{display:flex;justify-content:center;align-items:center;height:100vh}::ng-deep .login-wrapper .mat-mdc-text-field-wrapper{padding:0 16px!important}\n"] }]
54
57
  }], ctorParameters: function () { return [{ type: i1.TruAuth }]; } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWxvZ2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL3RydS1sb2dpbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi90cnUtbG9naW4uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFVcEUsTUFBTSxPQUFPLFFBQVE7SUFRbkIsWUFBb0IsSUFBYTtRQUFiLFNBQUksR0FBSixJQUFJLENBQVM7UUFQakMsY0FBUyxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNsRCxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDbkQsQ0FBQyxDQUFDO1FBQ0gsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQVE3QixlQUFVLEdBQUcsR0FBWSxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM5RSxDQUFDLENBQUE7SUFSb0MsQ0FBQztJQUV0QyxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFNRCxRQUFRO1FBQ04sTUFBTSxZQUFZLEdBQXdCO1lBQ3hDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFNO1lBQ2hDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFNO1NBQ2pDLENBQUM7UUFFRixJQUFJLFlBQVksQ0FBQyxRQUFRLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSTtpQkFDTixLQUFLLENBQUMsWUFBWSxDQUFDO2lCQUNuQixTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDM0IsQ0FBQyxFQUNFLENBQUMsS0FBd0IsRUFBRSxFQUFFO2dCQUM1QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO29CQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLG9DQUFvQyxDQUFBO2lCQUN2RDtxQkFDSTtvQkFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7aUJBQzVEO1lBQ0gsQ0FBQyxDQUNGLENBQUM7U0FDTDtJQUNILENBQUM7O3FHQXpDVSxRQUFRO3lGQUFSLFFBQVEsaURDWHJCLDhrQ0F5QkE7MkZEZGEsUUFBUTtrQkFMcEIsU0FBUzsrQkFDRSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRydUF1dGggfSBmcm9tICcuL3NlcnZpY2VzL3RydS1hdXRoJztcclxuaW1wb3J0IHsgVHJ1QXV0aExvZ2luUmVxdWVzdCB9IGZyb20gXCIuL2NsYXNzZXMvdHJ1LWF1dGgtbG9naW4tcmVxdWVzdFwiO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtbG9naW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtbG9naW4uaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWxvZ2luLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVMb2dpbiB7XHJcbiAgbG9naW5Gb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICB1c2VybmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgIHBhc3N3b3JkOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgfSk7XHJcbiAgbG9naW5FcnJvcjogc3RyaW5nID0gXCJcIjtcclxuICBpc0xvZ2dpbmdJbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aDogVHJ1QXV0aCkgeyB9XHJcblxyXG4gIGdldCBmKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgaXNEaXNhYmxlZCA9ICgpOiBib29sZWFuID0+IHtcclxuICAgIHJldHVybiAhdGhpcy5mLnVzZXJuYW1lLnZhbHVlIHx8ICF0aGlzLmYucGFzc3dvcmQudmFsdWUgfHwgdGhpcy5pc0xvZ2dpbmdJbjtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgY29uc3QgbG9naW5SZXF1ZXN0OiBUcnVBdXRoTG9naW5SZXF1ZXN0ID0ge1xyXG4gICAgICB1c2VybmFtZTogdGhpcy5mLnVzZXJuYW1lLnZhbHVlISxcclxuICAgICAgcGFzc3dvcmQ6IHRoaXMuZi5wYXNzd29yZC52YWx1ZSFcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGxvZ2luUmVxdWVzdC51c2VybmFtZSAmJiBsb2dpblJlcXVlc3QucGFzc3dvcmQpIHtcclxuICAgICAgdGhpcy5pc0xvZ2dpbmdJbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYXV0aFxyXG4gICAgICAgIC5sb2dpbihsb2dpblJlcXVlc3QpXHJcbiAgICAgICAgLnN1YnNjcmliZSgodXNlcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgICwoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9naW5FcnJvciA9IFwiSW5jb3JyZWN0IHVzZXJuYW1lIGFuZC9vciBwYXNzd29yZFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yID0gXCJJbnZhbGlkIExvZ2luIC0gRXJyb3I6IFwiICsgZXJyb3Iuc3RhdHVzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxvZ2luLXdyYXBwZXJcIj5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luRm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJhbmltYXRlLWxvZ2luXCI+XHJcbiAgICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPiBsb2dpbkZvcm1UaXRsZSA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5Vc2VybmFtZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInVzZXJuYW1lXCIgcGxhY2Vob2xkZXI9XCJVc2VybmFtZVwiPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5QYXNzd29yZDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJwYXNzd29yZFwiIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImxvZ2luRXJyb3JcIiBjbGFzcz1cImFuaW1hdGUtbG9naW4tZXJyb3IgYW5pbWF0ZWQgcnViYmVyQmFuZFwiPlxyXG4gICAgICAgICAgPHAgc3R5bGU9XCJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDtcIj4ge3sgbG9naW5FcnJvciB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8bWF0LWNhcmQtYWN0aW9ucz5cclxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCI+TG9naW48L2J1dHRvbj5cclxuICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG4iXX0=
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWxvZ2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL3RydS1sb2dpbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi90cnUtbG9naW4uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXBFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQU9oQyxNQUFNLE9BQU8sUUFBUTtJQVFuQixZQUFvQixJQUFhO1FBQWIsU0FBSSxHQUFKLElBQUksQ0FBUztRQVBqQyxjQUFTLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDeEIsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2xELFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNuRCxDQUFDLENBQUM7UUFDSCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBUTdCLGVBQVUsR0FBRyxHQUFZLEVBQUU7WUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzlFLENBQUMsQ0FBQTtJQVJvQyxDQUFDO0lBRXRDLElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQU1ELFFBQVE7UUFDTixNQUFNLFlBQVksR0FBd0I7WUFDeEMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQU07WUFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQU07U0FDakMsQ0FBQztRQUVGLElBQUksWUFBWSxDQUFDLFFBQVEsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFO1lBQ2xELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJO2lCQUNOLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLFFBQVEsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQ0g7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUMzQixDQUFDLEVBQ0UsQ0FBQyxLQUF3QixFQUFFLEVBQUU7Z0JBQzVCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsb0NBQW9DLENBQUE7aUJBQ3ZEO3FCQUNJO29CQUNILElBQUksQ0FBQyxVQUFVLEdBQUcseUJBQXlCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztpQkFDNUQ7WUFDSCxDQUFDLENBQ0YsQ0FBQztTQUNMO0lBQ0gsQ0FBQzs7cUdBN0NVLFFBQVE7eUZBQVIsUUFBUSxpRENackIsOGtDQXlCQTsyRkRiYSxRQUFRO2tCQUxwQixTQUFTOytCQUNFLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJ1QXV0aCB9IGZyb20gJy4vc2VydmljZXMvdHJ1LWF1dGgnO1xyXG5pbXBvcnQgeyBUcnVBdXRoTG9naW5SZXF1ZXN0IH0gZnJvbSBcIi4vY2xhc3Nlcy90cnUtYXV0aC1sb2dpbi1yZXF1ZXN0XCI7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1sb2dpbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1sb2dpbi5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cnUtbG9naW4uY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydUxvZ2luIHtcclxuICBsb2dpbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIHVzZXJuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgcGFzc3dvcmQ6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICB9KTtcclxuICBsb2dpbkVycm9yOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGlzTG9nZ2luZ0luOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoOiBUcnVBdXRoKSB7IH1cclxuXHJcbiAgZ2V0IGYoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2dpbkZvcm0uY29udHJvbHM7XHJcbiAgfVxyXG5cclxuICBpc0Rpc2FibGVkID0gKCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmYudXNlcm5hbWUudmFsdWUgfHwgIXRoaXMuZi5wYXNzd29yZC52YWx1ZSB8fCB0aGlzLmlzTG9nZ2luZ0luO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBjb25zdCBsb2dpblJlcXVlc3Q6IFRydUF1dGhMb2dpblJlcXVlc3QgPSB7XHJcbiAgICAgIHVzZXJuYW1lOiB0aGlzLmYudXNlcm5hbWUudmFsdWUhLFxyXG4gICAgICBwYXNzd29yZDogdGhpcy5mLnBhc3N3b3JkLnZhbHVlIVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAobG9naW5SZXF1ZXN0LnVzZXJuYW1lICYmIGxvZ2luUmVxdWVzdC5wYXNzd29yZCkge1xyXG4gICAgICB0aGlzLmlzTG9nZ2luZ0luID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hdXRoXHJcbiAgICAgICAgLmxvZ2luKGxvZ2luUmVxdWVzdCkucGlwZShcclxuICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc0xvZ2dpbmdJbiA9IGZhbHNlOyBcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgICwoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9naW5FcnJvciA9IFwiSW5jb3JyZWN0IHVzZXJuYW1lIGFuZC9vciBwYXNzd29yZFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yID0gXCJJbnZhbGlkIExvZ2luIC0gRXJyb3I6IFwiICsgZXJyb3Iuc3RhdHVzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxvZ2luLXdyYXBwZXJcIj5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luRm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJhbmltYXRlLWxvZ2luXCI+XHJcbiAgICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPiBsb2dpbkZvcm1UaXRsZSA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5Vc2VybmFtZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInVzZXJuYW1lXCIgcGxhY2Vob2xkZXI9XCJVc2VybmFtZVwiPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5QYXNzd29yZDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJwYXNzd29yZFwiIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImxvZ2luRXJyb3JcIiBjbGFzcz1cImFuaW1hdGUtbG9naW4tZXJyb3IgYW5pbWF0ZWQgcnViYmVyQmFuZFwiPlxyXG4gICAgICAgICAgPHAgc3R5bGU9XCJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDtcIj4ge3sgbG9naW5FcnJvciB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8bWF0LWNhcmQtYWN0aW9ucz5cclxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCI+TG9naW48L2J1dHRvbj5cclxuICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -2,36 +2,37 @@ import { Component, ViewEncapsulation } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../desktop/services/tru-desktop-manager";
4
4
  import * as i2 from "../../../services/tru-app-environment";
5
- import * as i3 from "../../login/services/tru-auth";
6
- import * as i4 from "@angular/common";
7
- import * as i5 from "@angular/material/menu";
8
- import * as i6 from "@angular/material/button";
9
- import * as i7 from "@angular/material/icon";
5
+ import * as i3 from "../../../services/tru-user";
6
+ import * as i4 from "../../login/services/tru-auth";
7
+ import * as i5 from "@angular/common";
8
+ import * as i6 from "@angular/material/menu";
9
+ import * as i7 from "@angular/material/button";
10
+ import * as i8 from "@angular/material/icon";
10
11
  export class TruToolbarUserProfile {
11
- constructor(desktopManager, appEnvironment, auth) {
12
+ constructor(desktopManager, appEnvironment, user, auth) {
12
13
  this.desktopManager = desktopManager;
13
14
  this.appEnvironment = appEnvironment;
15
+ this.user = user;
14
16
  this.auth = auth;
15
17
  this.initial = null;
16
18
  this.name = null;
17
19
  this.email = null;
18
20
  this.onChangePasswordButtonClicked = () => {
19
- let entity = this.appEnvironment.globalDataContext?.entityAccess().searchUserByRefCacheOnly(this.appEnvironment.activeUserRef);
21
+ let entity = this.appEnvironment.globalDataContext?.entityAccess().searchUserByRefCacheOnly(this.user.activeUserRef);
20
22
  this.desktopManager.addWindow('TruDbUser', 'TruDbUsers', 'Users', 'TruDbUserDetailView', [entity], true);
21
23
  };
22
24
  this.onLogoutButtonClicked = () => {
23
25
  this.auth.doLogoutAndRedirectToLogin();
24
26
  };
25
- let user = this.appEnvironment.user;
26
27
  this.initial = user?.firstName ? user?.firstName.slice(0, 1).toUpperCase() : user?.username?.slice(0, 1).toUpperCase();
27
28
  this.name = user?.firstName && user?.lastName ? user?.firstName + ' ' + user?.lastName : user?.username;
28
29
  this.email = user?.email;
29
30
  }
30
31
  }
31
- TruToolbarUserProfile.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruToolbarUserProfile, deps: [{ token: i1.TruDesktopManager }, { token: i2.TruAppEnvironment }, { token: i3.TruAuth }], target: i0.ɵɵFactoryTarget.Component });
32
- TruToolbarUserProfile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruToolbarUserProfile, selector: "tru-toolbar-user-profile", ngImport: i0, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i6.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
32
+ TruToolbarUserProfile.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruToolbarUserProfile, deps: [{ token: i1.TruDesktopManager }, { token: i2.TruAppEnvironment }, { token: i3.TruUser }, { token: i4.TruAuth }], target: i0.ɵɵFactoryTarget.Component });
33
+ TruToolbarUserProfile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruToolbarUserProfile, selector: "tru-toolbar-user-profile", ngImport: i0, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i7.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
33
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruToolbarUserProfile, decorators: [{
34
35
  type: Component,
35
36
  args: [{ selector: 'tru-toolbar-user-profile', encapsulation: ViewEncapsulation.None, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"] }]
36
- }], ctorParameters: function () { return [{ type: i1.TruDesktopManager }, { type: i2.TruAppEnvironment }, { type: i3.TruAuth }]; } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvdXNlci1wcm9maWxlL3RydS10b29sYmFyLXVzZXItcHJvZmlsZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy90b29sYmFyL3VzZXItcHJvZmlsZS90cnUtdG9vbGJhci11c2VyLXByb2ZpbGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFZN0QsTUFBTSxPQUFPLHFCQUFxQjtJQUtoQyxZQUNVLGNBQWlDLEVBQ2pDLGNBQWlDLEVBQ2pDLElBQWE7UUFGYixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVM7UUFQdkIsWUFBTyxHQUE4QixJQUFJLENBQUM7UUFDMUMsU0FBSSxHQUE4QixJQUFJLENBQUM7UUFDdkMsVUFBSyxHQUE4QixJQUFJLENBQUM7UUFZeEMsa0NBQTZCLEdBQUcsR0FBRyxFQUFFO1lBQ25DLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvSCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQTtRQUVELDBCQUFxQixHQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFBO1FBYkMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN0SCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxHQUFHLEdBQUcsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztRQUN4RyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUM7SUFDM0IsQ0FBQzs7a0hBYlUscUJBQXFCO3NHQUFyQixxQkFBcUIsZ0VDWmxDLDZpQ0F5QkE7MkZEYmEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLDBCQUEwQixpQkFHckIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1RGVza3RvcE1hbmFnZXIgfSBmcm9tICcuLi8uLi9kZXNrdG9wL3NlcnZpY2VzL3RydS1kZXNrdG9wLW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVBdXRoIH0gZnJvbSAnLi4vLi4vbG9naW4vc2VydmljZXMvdHJ1LWF1dGgnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LXRvb2xiYXItdXNlci1wcm9maWxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS10b29sYmFyLXVzZXItcHJvZmlsZS5jc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVUb29sYmFyVXNlclByb2ZpbGUge1xyXG4gIGluaXRpYWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG4gIG5hbWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG4gIGVtYWlsOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRlc2t0b3BNYW5hZ2VyOiBUcnVEZXNrdG9wTWFuYWdlcixcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoOiBUcnVBdXRoKSB7XHJcbiAgICBsZXQgdXNlciA9IHRoaXMuYXBwRW52aXJvbm1lbnQudXNlcjtcclxuICAgIHRoaXMuaW5pdGlhbCA9IHVzZXI/LmZpcnN0TmFtZSA/IHVzZXI/LmZpcnN0TmFtZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpIDogdXNlcj8udXNlcm5hbWU/LnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKClcclxuICAgIHRoaXMubmFtZSA9IHVzZXI/LmZpcnN0TmFtZSAmJiB1c2VyPy5sYXN0TmFtZSA/IHVzZXI/LmZpcnN0TmFtZSArICcgJyArIHVzZXI/Lmxhc3ROYW1lIDogdXNlcj8udXNlcm5hbWU7XHJcbiAgICB0aGlzLmVtYWlsID0gdXNlcj8uZW1haWw7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVBhc3N3b3JkQnV0dG9uQ2xpY2tlZCA9ICgpID0+IHtcclxuICAgIGxldCBlbnRpdHkgPSB0aGlzLmFwcEVudmlyb25tZW50Lmdsb2JhbERhdGFDb250ZXh0Py5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hVc2VyQnlSZWZDYWNoZU9ubHkodGhpcy5hcHBFbnZpcm9ubWVudC5hY3RpdmVVc2VyUmVmKTtcclxuICAgIHRoaXMuZGVza3RvcE1hbmFnZXIuYWRkV2luZG93KCdUcnVEYlVzZXInLCAnVHJ1RGJVc2VycycsICdVc2VycycsICdUcnVEYlVzZXJEZXRhaWxWaWV3JywgW2VudGl0eV0sIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb25Mb2dvdXRCdXR0b25DbGlja2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5hdXRoLmRvTG9nb3V0QW5kUmVkaXJlY3RUb0xvZ2luKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0cnUtdG9vbGJhci11c2VyLXByb2ZpbGVcIj5cclxuICA8YnV0dG9uIG1hdC1taW5pLWZhYiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS11c2VyLWJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJ1c2VyTWVudVwiPlxyXG4gICAge3tpbml0aWFsfX1cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcbjxtYXQtbWVudSAjdXNlck1lbnU9XCJtYXRNZW51XCI+XHJcbiAgPGRpdiBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS1tZW51LWNvbnRhaW5lclwiPlxyXG4gICAgPG1hdC1pY29uIGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLW1lbnUtY2lyY2xlLWljb25cIiBbc3ZnSWNvbl09XCInY2lyY2xlLWljb24nXCI+PC9tYXQtaWNvbj5cclxuICAgIDxzcGFuIGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLW1lbnUtY2lyY2xlLWljb24tdGV4dFwiPnt7aW5pdGlhbH19PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS1tZW51LXRleHQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxwPnt7bmFtZX19PC9wPlxyXG4gICAgICA8cCAqbmdJZj1cImVtYWlsXCI+e3tlbWFpbH19PC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2hhbmdlUGFzc3dvcmRCdXR0b25DbGlja2VkKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS1tZW51LWxvZ291dC1idXR0b25cIj5cclxuICAgICAgQ2hhbmdlIFBhc3N3b3JkXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Mb2dvdXRCdXR0b25DbGlja2VkKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS1tZW51LWxvZ291dC1idXR0b25cIj5cclxuICAgICAgTG9nb3V0XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT5cclxuIl19
37
+ }], ctorParameters: function () { return [{ type: i1.TruDesktopManager }, { type: i2.TruAppEnvironment }, { type: i3.TruUser }, { type: i4.TruAuth }]; } });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvdXNlci1wcm9maWxlL3RydS10b29sYmFyLXVzZXItcHJvZmlsZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy90b29sYmFyL3VzZXItcHJvZmlsZS90cnUtdG9vbGJhci11c2VyLXByb2ZpbGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBYTdELE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFDVSxjQUFpQyxFQUNqQyxjQUFpQyxFQUNqQyxJQUFhLEVBQ2IsSUFBYTtRQUhiLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNiLFNBQUksR0FBSixJQUFJLENBQVM7UUFSdkIsWUFBTyxHQUE4QixJQUFJLENBQUM7UUFDMUMsU0FBSSxHQUE4QixJQUFJLENBQUM7UUFDdkMsVUFBSyxHQUE4QixJQUFJLENBQUM7UUFZeEMsa0NBQTZCLEdBQUcsR0FBRyxFQUFFO1lBQ25DLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNySCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQTtRQUVELDBCQUFxQixHQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFBO1FBWkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN0SCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxHQUFHLEdBQUcsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztRQUN4RyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUM7SUFDM0IsQ0FBQzs7a0hBYlUscUJBQXFCO3NHQUFyQixxQkFBcUIsZ0VDYmxDLDZpQ0F5QkE7MkZEWmEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLDBCQUEwQixpQkFHckIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1VXNlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RydS11c2VyJztcclxuaW1wb3J0IHsgVHJ1RGVza3RvcE1hbmFnZXIgfSBmcm9tICcuLi8uLi9kZXNrdG9wL3NlcnZpY2VzL3RydS1kZXNrdG9wLW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVBdXRoIH0gZnJvbSAnLi4vLi4vbG9naW4vc2VydmljZXMvdHJ1LWF1dGgnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LXRvb2xiYXItdXNlci1wcm9maWxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS10b29sYmFyLXVzZXItcHJvZmlsZS5jc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVUb29sYmFyVXNlclByb2ZpbGUge1xyXG4gIGluaXRpYWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG4gIG5hbWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG4gIGVtYWlsOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRlc2t0b3BNYW5hZ2VyOiBUcnVEZXNrdG9wTWFuYWdlcixcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSB1c2VyOiBUcnVVc2VyLFxyXG4gICAgcHJpdmF0ZSBhdXRoOiBUcnVBdXRoKSB7XHJcbiAgICB0aGlzLmluaXRpYWwgPSB1c2VyPy5maXJzdE5hbWUgPyB1c2VyPy5maXJzdE5hbWUuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSA6IHVzZXI/LnVzZXJuYW1lPy5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpXHJcbiAgICB0aGlzLm5hbWUgPSB1c2VyPy5maXJzdE5hbWUgJiYgdXNlcj8ubGFzdE5hbWUgPyB1c2VyPy5maXJzdE5hbWUgKyAnICcgKyB1c2VyPy5sYXN0TmFtZSA6IHVzZXI/LnVzZXJuYW1lO1xyXG4gICAgdGhpcy5lbWFpbCA9IHVzZXI/LmVtYWlsO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VQYXNzd29yZEJ1dHRvbkNsaWNrZWQgPSAoKSA9PiB7XHJcbiAgICBsZXQgZW50aXR5ID0gdGhpcy5hcHBFbnZpcm9ubWVudC5nbG9iYWxEYXRhQ29udGV4dD8uZW50aXR5QWNjZXNzKCkuc2VhcmNoVXNlckJ5UmVmQ2FjaGVPbmx5KHRoaXMudXNlci5hY3RpdmVVc2VyUmVmKTtcclxuICAgIHRoaXMuZGVza3RvcE1hbmFnZXIuYWRkV2luZG93KCdUcnVEYlVzZXInLCAnVHJ1RGJVc2VycycsICdVc2VycycsICdUcnVEYlVzZXJEZXRhaWxWaWV3JywgW2VudGl0eV0sIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb25Mb2dvdXRCdXR0b25DbGlja2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5hdXRoLmRvTG9nb3V0QW5kUmVkaXJlY3RUb0xvZ2luKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0cnUtdG9vbGJhci11c2VyLXByb2ZpbGVcIj5cclxuICA8YnV0dG9uIG1hdC1taW5pLWZhYiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS11c2VyLWJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJ1c2VyTWVudVwiPlxyXG4gICAge3tpbml0aWFsfX1cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcbjxtYXQtbWVudSAjdXNlck1lbnU9XCJtYXRNZW51XCI+XHJcbiAgPGRpdiBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS1tZW51LWNvbnRhaW5lclwiPlxyXG4gICAgPG1hdC1pY29uIGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLW1lbnUtY2lyY2xlLWljb25cIiBbc3ZnSWNvbl09XCInY2lyY2xlLWljb24nXCI+PC9tYXQtaWNvbj5cclxuICAgIDxzcGFuIGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLW1lbnUtY2lyY2xlLWljb24tdGV4dFwiPnt7aW5pdGlhbH19PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS1tZW51LXRleHQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxwPnt7bmFtZX19PC9wPlxyXG4gICAgICA8cCAqbmdJZj1cImVtYWlsXCI+e3tlbWFpbH19PC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2hhbmdlUGFzc3dvcmRCdXR0b25DbGlja2VkKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS1tZW51LWxvZ291dC1idXR0b25cIj5cclxuICAgICAgQ2hhbmdlIFBhc3N3b3JkXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Mb2dvdXRCdXR0b25DbGlja2VkKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS1tZW51LWxvZ291dC1idXR0b25cIj5cclxuICAgICAgTG9nb3V0XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT5cclxuIl19
@@ -32,7 +32,6 @@ export class TruAppEnvironment {
32
32
  };
33
33
  this._appUri = '';
34
34
  this._maxRecordCount = 0;
35
- this._user = truUser;
36
35
  this.msgModifierKeyLabel = this.isMac ? 'Cmd' : 'Ctrl';
37
36
  this.msgConfirmExitWithChangesPending = 'You have unsaved changes that will be lost.';
38
37
  this.msgDeleteSuccessful = 'Delete succeeded';
@@ -55,15 +54,6 @@ export class TruAppEnvironment {
55
54
  set appUri(uri) {
56
55
  this._appUri = uri;
57
56
  }
58
- get user() {
59
- return this._user;
60
- }
61
- set user(user) {
62
- this._user = user;
63
- }
64
- get activeUserRef() {
65
- return this._user?.activeUserRef;
66
- }
67
57
  get isSaving() {
68
58
  return this._isSaving.getValue();
69
59
  }
@@ -94,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
94
84
  providedIn: 'root',
95
85
  }]
96
86
  }], ctorParameters: function () { return [{ type: i1.TruUser }]; } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQVluRCxNQUFNLE9BQU8saUJBQWlCO0lBK0I1QixZQUFvQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBM0I1QixjQUFTLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzFFLGtCQUFhLEdBQWlELElBQUksZUFBZSxDQUE4QixJQUFJLENBQUMsQ0FBQztRQUNySCxvQkFBZSxHQUFpRCxJQUFJLGVBQWUsQ0FBOEIsSUFBSSxDQUFDLENBQUM7UUFDdkgsb0JBQWUsR0FBaUQsSUFBSSxlQUFlLENBQThCLElBQUksQ0FBQyxDQUFDO1FBQ3ZILHVCQUFrQixHQUEwQixJQUFJLENBQUM7UUFrQmxELHFCQUFnQixHQUF3QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RFLG9CQUFlLEdBQTRDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0Ysc0JBQWlCLEdBQTRDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakcsc0JBQWlCLEdBQTRDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUF3RXhHLGlCQUFZLEdBQUcsQ0FBQyxLQUEyQixFQUFRLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFBO1FBRUQsbUJBQWMsR0FBRyxDQUFDLEtBQTJC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SSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLGlCQUFpQixDQUFDLE9BQThCO1FBQ2xELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUU7SUFDckMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7OzhHQW5HVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSBcImJyZWV6ZS1jbGllbnRcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tIFwiLi90cnUtZGF0YS1jb250ZXh0XCI7XHJcbmltcG9ydCB7IFRydVVzZXIgfSBmcm9tIFwiLi90cnUtdXNlclwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25FdmVudENvbXBsZXRlZCB7XHJcbiAgc3VjY2Vzc2Z1bDogYm9vbGVhbjtcclxuICBlbnRpdGllcz86IEFycmF5PEVudGl0eT47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVBcHBFbnZpcm9ubWVudCB7XHJcbiAgcHJpdmF0ZSBfYXBwVXJpOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfbWF4UmVjb3JkQ291bnQ6IG51bWJlcjtcclxuICBwcml2YXRlIF91c2VyOiBUcnVVc2VyO1xyXG4gIHByaXZhdGUgX2lzU2F2aW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcml2YXRlIF9zYXZlQ29tcGxldGU6IEJlaGF2aW9yU3ViamVjdDxBY3Rpb25FdmVudENvbXBsZXRlZCB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBY3Rpb25FdmVudENvbXBsZXRlZCB8IG51bGw+KG51bGwpO1xyXG4gIHByaXZhdGUgX3JldmVydENvbXBsZXRlOiBCZWhhdmlvclN1YmplY3Q8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPihudWxsKTtcclxuICBwcml2YXRlIF9kZWxldGVDb21wbGV0ZTogQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4obnVsbCk7XHJcbiAgcHJpdmF0ZSBfZ2xvYmFsRGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHJlYWRvbmx5IG1zZ01vZGlmaWVyS2V5TGFiZWw6IHN0cmluZztcclxuICByZWFkb25seSBtc2dDb25maXJtRXhpdFdpdGhDaGFuZ2VzUGVuZGluZzogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0RlbGV0ZVN1Y2Nlc3NmdWw6IHN0cmluZztcclxuICByZWFkb25seSBtc2dTYXZlU3VjY2Vzc2Z1bDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ05vQ2hhbmdlc1RvU2F2ZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ1NhdmVJblByb2dyZXNzOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnSW52YWxpZERhdGE6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzUmVhZE9ubHk6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzTmF2aWdhdGU6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzQ2xvc2U6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzRGVsZXRlRXhpc3RpbmdSZWNvcmQ6IHN0cmluZztcclxuICByZWFkb25seSBtc2dOb0RlbGV0ZUFjY2Vzczogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0Nhbm5vdERlbGV0ZU5ld0FuZEV4aXN0aW5nUmVjb3Jkczogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0RlbGV0ZVJlZmVyZW5jaW5nUmVjb3Jkc0ZpcnN0OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnTm9SZWNvcmRzU2VsZWN0ZWQ6IHN0cmluZztcclxuXHJcbiAgcHVibGljIG9uU2F2aW5nQ2hhbmdlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9pc1NhdmluZy5hc09ic2VydmFibGUoKTtcclxuICBwdWJsaWMgb25TYXZlQ29tcGxldGUkOiBPYnNlcnZhYmxlPEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4gPSB0aGlzLl9zYXZlQ29tcGxldGUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHVibGljIG9uUmV2ZXJ0Q29tcGxldGUkOiBPYnNlcnZhYmxlPEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4gPSB0aGlzLl9yZXZlcnRDb21wbGV0ZS5hc09ic2VydmFibGUoKTtcclxuICBwdWJsaWMgb25EZWxldGVDb21wbGV0ZSQ6IE9ic2VydmFibGU8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPiA9IHRoaXMuX2RlbGV0ZUNvbXBsZXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRydVVzZXI6IFRydVVzZXIpIHtcclxuICAgIHRoaXMuX2FwcFVyaSA9ICcnO1xyXG4gICAgdGhpcy5fbWF4UmVjb3JkQ291bnQgPSAwO1xyXG4gICAgdGhpcy5fdXNlciA9IHRydVVzZXI7XHJcbiAgICBcclxuICAgIHRoaXMubXNnTW9kaWZpZXJLZXlMYWJlbCA9IHRoaXMuaXNNYWMgPyAnQ21kJyA6ICdDdHJsJztcclxuICAgIHRoaXMubXNnQ29uZmlybUV4aXRXaXRoQ2hhbmdlc1BlbmRpbmcgPSAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzIHRoYXQgd2lsbCBiZSBsb3N0Lic7XHJcbiAgICB0aGlzLm1zZ0RlbGV0ZVN1Y2Nlc3NmdWwgPSAnRGVsZXRlIHN1Y2NlZWRlZCc7XHJcbiAgICB0aGlzLm1zZ1NhdmVTdWNjZXNzZnVsID0gJ1NhdmUgc3VjY2VlZGVkJztcclxuICAgIHRoaXMubXNnTm9DaGFuZ2VzVG9TYXZlID0gJ05vIGNoYW5nZXMgdG8gc2F2ZSc7XHJcbiAgICB0aGlzLm1zZ1NhdmVJblByb2dyZXNzID0gJ1NhdmUgaW4gcHJvZ3Jlc3MnO1xyXG4gICAgdGhpcy5tc2dJbnZhbGlkRGF0YSA9ICdJbnZhbGlkIGRhdGEnO1xyXG4gICAgdGhpcy5tc2dEaXJ0eVByZXZlbnRzUmVhZE9ubHkgPSAnU2F2ZSBvciByZXZlcnQgYmVmb3JlIGRpc2FibGluZyBlZGl0aW5nJztcclxuICAgIHRoaXMubXNnRGlydHlQcmV2ZW50c05hdmlnYXRlID0gJ1NhdmUgb3IgcmV2ZXJ0IGJlZm9yZSBuYXZpZ2F0aW5nJztcclxuICAgIHRoaXMubXNnRGlydHlQcmV2ZW50c0Nsb3NlID0gJ1NhdmUgb3IgcmV2ZXJ0IGJlZm9yZSBjbG9zaW5nIHdpbmRvdyc7XHJcbiAgICB0aGlzLm1zZ0RpcnR5UHJldmVudHNEZWxldGVFeGlzdGluZ1JlY29yZCA9ICdTYXZlIG9yIHJldmVydCBiZWZvcmUgZGVsZXRpbmcnO1xyXG4gICAgdGhpcy5tc2dOb0RlbGV0ZUFjY2VzcyA9ICdDb250YWN0IGFkbWluaXN0cmF0b3IgYWJvdXQgZGVsZXRlIGFjY2Vzcyc7XHJcbiAgICB0aGlzLm1zZ0Nhbm5vdERlbGV0ZU5ld0FuZEV4aXN0aW5nUmVjb3JkcyA9ICdEZWxldGUgbmV3IG9yIGV4aXN0aW5nIHJlY29yZHMgLSBidXQgbm90IGJvdGgnO1xyXG4gICAgdGhpcy5tc2dEZWxldGVSZWZlcmVuY2luZ1JlY29yZHNGaXJzdCA9ICdEZWxldGUgYWxsIHJlZmVyZW5jaW5nIHJlY29yZHMgZmlyc3QnO1xyXG4gICAgdGhpcy5tc2dOb1JlY29yZHNTZWxlY3RlZCA9ICdObyBSZWNvcmRzIHNlbGVjdGVkJztcclxuICB9XHJcblxyXG4gIGdldCBhcHBVcmkoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9hcHBVcmk7XHJcbiAgfVxyXG5cclxuICBzZXQgYXBwVXJpKHVyaTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9hcHBVcmkgPSB1cmk7XHJcbiAgfVxyXG5cclxuICBnZXQgdXNlcigpOiBUcnVVc2VyIHtcclxuICAgIHJldHVybiB0aGlzLl91c2VyO1xyXG4gIH1cclxuXHJcbiAgc2V0IHVzZXIodXNlcjogVHJ1VXNlcikge1xyXG4gICAgdGhpcy5fdXNlciA9IHVzZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlVXNlclJlZigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VzZXI/LmFjdGl2ZVVzZXJSZWYgYXMgbnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzU2F2aW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzU2F2aW5nLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgaXNTYXZpbmcoaXNTYXZpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2lzU2F2aW5nLm5leHQoaXNTYXZpbmcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heFJlY29yZENvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4UmVjb3JkQ291bnQ7XHJcbiAgfVxyXG5cclxuICBzZXQgbWF4UmVjb3JkQ291bnQobWF4UmVjb3JkQ291bnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5fbWF4UmVjb3JkQ291bnQgPSBtYXhSZWNvcmRDb3VudDtcclxuICB9XHJcblxyXG4gIGdldCBnbG9iYWxEYXRhQ29udGV4dCgpOiBUcnVEYXRhQ29udGV4dCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2dsb2JhbERhdGFDb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgc2V0IGdsb2JhbERhdGFDb250ZXh0KGNvbnRleHQ6IFRydURhdGFDb250ZXh0IHwgbnVsbCkge1xyXG4gICAgdGhpcy5fZ2xvYmFsRGF0YUNvbnRleHQgPSBjb250ZXh0IDtcclxuICB9XHJcblxyXG4gIGdldCBpc01hYygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBuYXZpZ2F0b3IucGxhdGZvcm0udG9VcHBlckNhc2UoKS5pbmRleE9mKCdNQUMnKSA+PSAwO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUNvbXBsZXRlID0gKGV2ZW50OiBBY3Rpb25FdmVudENvbXBsZXRlZCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5fc2F2ZUNvbXBsZXRlLm5leHQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0Q29tcGxldGUgPSAoZXZlbnQ6IEFjdGlvbkV2ZW50Q29tcGxldGVkKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLl9yZXZlcnRDb21wbGV0ZS5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUNvbXBsZXRlID0gKGV2ZW50OiBBY3Rpb25FdmVudENvbXBsZXRlZCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5fZGVsZXRlQ29tcGxldGUubmV4dChldmVudCk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREZWxldGVDb25maXJtYXRpb25NZXNzYWdlID0gKHRhYmxlTmFtZTogc3RyaW5nLCB0YWJsZVBsdXJhbExhYmVsOiBzdHJpbmcsIGNvdW50OiBudW1iZXIgfCBudWxsKTogc3RyaW5nID0+IHtcclxuICAgIGlmIChjb3VudCA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgJyArIHRhYmxlTmFtZSArICc/JztcclxuICAgIGlmIChjb3VudCA9PT0gMSlcclxuICAgICAgcmV0dXJuICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDEgJyArIHRhYmxlTmFtZSArICc/JztcclxuICAgIHJldHVybiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSAnICsgY291bnQgKyAnICcgKyB0YWJsZVBsdXJhbExhYmVsICsgJz8nO1xyXG4gIH1cclxufVxyXG4iXX0=
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQVluRCxNQUFNLE9BQU8saUJBQWlCO0lBOEI1QixZQUFvQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBM0I1QixjQUFTLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzFFLGtCQUFhLEdBQWlELElBQUksZUFBZSxDQUE4QixJQUFJLENBQUMsQ0FBQztRQUNySCxvQkFBZSxHQUFpRCxJQUFJLGVBQWUsQ0FBOEIsSUFBSSxDQUFDLENBQUM7UUFDdkgsb0JBQWUsR0FBaUQsSUFBSSxlQUFlLENBQThCLElBQUksQ0FBQyxDQUFDO1FBQ3ZILHVCQUFrQixHQUEwQixJQUFJLENBQUM7UUFrQmxELHFCQUFnQixHQUF3QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RFLG9CQUFlLEdBQTRDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0Ysc0JBQWlCLEdBQTRDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakcsc0JBQWlCLEdBQTRDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUEyRHhHLGlCQUFZLEdBQUcsQ0FBQyxLQUEyQixFQUFRLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFBO1FBRUQsbUJBQWMsR0FBRyxDQUFDLEtBQTJC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Q0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7OzhHQXJGVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSBcImJyZWV6ZS1jbGllbnRcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tIFwiLi90cnUtZGF0YS1jb250ZXh0XCI7XHJcbmltcG9ydCB7IFRydVVzZXIgfSBmcm9tIFwiLi90cnUtdXNlclwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25FdmVudENvbXBsZXRlZCB7XHJcbiAgc3VjY2Vzc2Z1bDogYm9vbGVhbjtcclxuICBlbnRpdGllcz86IEFycmF5PEVudGl0eT47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVBcHBFbnZpcm9ubWVudCB7XHJcbiAgcHJpdmF0ZSBfYXBwVXJpOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfbWF4UmVjb3JkQ291bnQ6IG51bWJlcjtcclxuICBwcml2YXRlIF9pc1NhdmluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJpdmF0ZSBfc2F2ZUNvbXBsZXRlOiBCZWhhdmlvclN1YmplY3Q8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPihudWxsKTtcclxuICBwcml2YXRlIF9yZXZlcnRDb21wbGV0ZTogQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4obnVsbCk7XHJcbiAgcHJpdmF0ZSBfZGVsZXRlQ29tcGxldGU6IEJlaGF2aW9yU3ViamVjdDxBY3Rpb25FdmVudENvbXBsZXRlZCB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBY3Rpb25FdmVudENvbXBsZXRlZCB8IG51bGw+KG51bGwpO1xyXG4gIHByaXZhdGUgX2dsb2JhbERhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCB8IG51bGwgPSBudWxsO1xyXG5cclxuICByZWFkb25seSBtc2dNb2RpZmllcktleUxhYmVsOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnQ29uZmlybUV4aXRXaXRoQ2hhbmdlc1BlbmRpbmc6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEZWxldGVTdWNjZXNzZnVsOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnU2F2ZVN1Y2Nlc3NmdWw6IHN0cmluZztcclxuICByZWFkb25seSBtc2dOb0NoYW5nZXNUb1NhdmU6IHN0cmluZztcclxuICByZWFkb25seSBtc2dTYXZlSW5Qcm9ncmVzczogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0ludmFsaWREYXRhOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnRGlydHlQcmV2ZW50c1JlYWRPbmx5OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnRGlydHlQcmV2ZW50c05hdmlnYXRlOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnRGlydHlQcmV2ZW50c0Nsb3NlOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnRGlydHlQcmV2ZW50c0RlbGV0ZUV4aXN0aW5nUmVjb3JkOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnTm9EZWxldGVBY2Nlc3M6IHN0cmluZztcclxuICByZWFkb25seSBtc2dDYW5ub3REZWxldGVOZXdBbmRFeGlzdGluZ1JlY29yZHM6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEZWxldGVSZWZlcmVuY2luZ1JlY29yZHNGaXJzdDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ05vUmVjb3Jkc1NlbGVjdGVkOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBvblNhdmluZ0NoYW5nZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5faXNTYXZpbmcuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHVibGljIG9uU2F2ZUNvbXBsZXRlJDogT2JzZXJ2YWJsZTxBY3Rpb25FdmVudENvbXBsZXRlZCB8IG51bGw+ID0gdGhpcy5fc2F2ZUNvbXBsZXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHB1YmxpYyBvblJldmVydENvbXBsZXRlJDogT2JzZXJ2YWJsZTxBY3Rpb25FdmVudENvbXBsZXRlZCB8IG51bGw+ID0gdGhpcy5fcmV2ZXJ0Q29tcGxldGUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHVibGljIG9uRGVsZXRlQ29tcGxldGUkOiBPYnNlcnZhYmxlPEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4gPSB0aGlzLl9kZWxldGVDb21wbGV0ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cnVVc2VyOiBUcnVVc2VyKSB7XHJcbiAgICB0aGlzLl9hcHBVcmkgPSAnJztcclxuICAgIHRoaXMuX21heFJlY29yZENvdW50ID0gMDtcclxuICAgIFxyXG4gICAgdGhpcy5tc2dNb2RpZmllcktleUxhYmVsID0gdGhpcy5pc01hYyA/ICdDbWQnIDogJ0N0cmwnO1xyXG4gICAgdGhpcy5tc2dDb25maXJtRXhpdFdpdGhDaGFuZ2VzUGVuZGluZyA9ICdZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgdGhhdCB3aWxsIGJlIGxvc3QuJztcclxuICAgIHRoaXMubXNnRGVsZXRlU3VjY2Vzc2Z1bCA9ICdEZWxldGUgc3VjY2VlZGVkJztcclxuICAgIHRoaXMubXNnU2F2ZVN1Y2Nlc3NmdWwgPSAnU2F2ZSBzdWNjZWVkZWQnO1xyXG4gICAgdGhpcy5tc2dOb0NoYW5nZXNUb1NhdmUgPSAnTm8gY2hhbmdlcyB0byBzYXZlJztcclxuICAgIHRoaXMubXNnU2F2ZUluUHJvZ3Jlc3MgPSAnU2F2ZSBpbiBwcm9ncmVzcyc7XHJcbiAgICB0aGlzLm1zZ0ludmFsaWREYXRhID0gJ0ludmFsaWQgZGF0YSc7XHJcbiAgICB0aGlzLm1zZ0RpcnR5UHJldmVudHNSZWFkT25seSA9ICdTYXZlIG9yIHJldmVydCBiZWZvcmUgZGlzYWJsaW5nIGVkaXRpbmcnO1xyXG4gICAgdGhpcy5tc2dEaXJ0eVByZXZlbnRzTmF2aWdhdGUgPSAnU2F2ZSBvciByZXZlcnQgYmVmb3JlIG5hdmlnYXRpbmcnO1xyXG4gICAgdGhpcy5tc2dEaXJ0eVByZXZlbnRzQ2xvc2UgPSAnU2F2ZSBvciByZXZlcnQgYmVmb3JlIGNsb3Npbmcgd2luZG93JztcclxuICAgIHRoaXMubXNnRGlydHlQcmV2ZW50c0RlbGV0ZUV4aXN0aW5nUmVjb3JkID0gJ1NhdmUgb3IgcmV2ZXJ0IGJlZm9yZSBkZWxldGluZyc7XHJcbiAgICB0aGlzLm1zZ05vRGVsZXRlQWNjZXNzID0gJ0NvbnRhY3QgYWRtaW5pc3RyYXRvciBhYm91dCBkZWxldGUgYWNjZXNzJztcclxuICAgIHRoaXMubXNnQ2Fubm90RGVsZXRlTmV3QW5kRXhpc3RpbmdSZWNvcmRzID0gJ0RlbGV0ZSBuZXcgb3IgZXhpc3RpbmcgcmVjb3JkcyAtIGJ1dCBub3QgYm90aCc7XHJcbiAgICB0aGlzLm1zZ0RlbGV0ZVJlZmVyZW5jaW5nUmVjb3Jkc0ZpcnN0ID0gJ0RlbGV0ZSBhbGwgcmVmZXJlbmNpbmcgcmVjb3JkcyBmaXJzdCc7XHJcbiAgICB0aGlzLm1zZ05vUmVjb3Jkc1NlbGVjdGVkID0gJ05vIFJlY29yZHMgc2VsZWN0ZWQnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFwcFVyaSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FwcFVyaTtcclxuICB9XHJcblxyXG4gIHNldCBhcHBVcmkodXJpOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2FwcFVyaSA9IHVyaTtcclxuICB9XHJcblxyXG4gIGdldCBpc1NhdmluZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1NhdmluZy5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0IGlzU2F2aW5nKGlzU2F2aW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc1NhdmluZy5uZXh0KGlzU2F2aW5nKTtcclxuICB9XHJcblxyXG4gIGdldCBtYXhSZWNvcmRDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heFJlY29yZENvdW50O1xyXG4gIH1cclxuXHJcbiAgc2V0IG1heFJlY29yZENvdW50KG1heFJlY29yZENvdW50OiBudW1iZXIpIHtcclxuICAgIHRoaXMuX21heFJlY29yZENvdW50ID0gbWF4UmVjb3JkQ291bnQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2xvYmFsRGF0YUNvbnRleHQoKTogVHJ1RGF0YUNvbnRleHQgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9nbG9iYWxEYXRhQ29udGV4dDtcclxuICB9XHJcblxyXG4gIHNldCBnbG9iYWxEYXRhQ29udGV4dChjb250ZXh0OiBUcnVEYXRhQ29udGV4dCB8IG51bGwpIHtcclxuICAgIHRoaXMuX2dsb2JhbERhdGFDb250ZXh0ID0gY29udGV4dCA7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNNYWMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gbmF2aWdhdG9yLnBsYXRmb3JtLnRvVXBwZXJDYXNlKCkuaW5kZXhPZignTUFDJykgPj0gMDtcclxuICB9XHJcblxyXG4gIHNhdmVDb21wbGV0ZSA9IChldmVudDogQWN0aW9uRXZlbnRDb21wbGV0ZWQpOiB2b2lkID0+IHtcclxuICAgIHRoaXMuX3NhdmVDb21wbGV0ZS5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHJldmVydENvbXBsZXRlID0gKGV2ZW50OiBBY3Rpb25FdmVudENvbXBsZXRlZCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5fcmV2ZXJ0Q29tcGxldGUubmV4dChldmVudCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVDb21wbGV0ZSA9IChldmVudDogQWN0aW9uRXZlbnRDb21wbGV0ZWQpOiB2b2lkID0+IHtcclxuICAgIHRoaXMuX2RlbGV0ZUNvbXBsZXRlLm5leHQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGVsZXRlQ29uZmlybWF0aW9uTWVzc2FnZSA9ICh0YWJsZU5hbWU6IHN0cmluZywgdGFibGVQbHVyYWxMYWJlbDogc3RyaW5nLCBjb3VudDogbnVtYmVyIHwgbnVsbCk6IHN0cmluZyA9PiB7XHJcbiAgICBpZiAoY291bnQgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzICcgKyB0YWJsZU5hbWUgKyAnPyc7XHJcbiAgICBpZiAoY291bnQgPT09IDEpXHJcbiAgICAgIHJldHVybiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSAxICcgKyB0YWJsZU5hbWUgKyAnPyc7XHJcbiAgICByZXR1cm4gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgJyArIGNvdW50ICsgJyAnICsgdGFibGVQbHVyYWxMYWJlbCArICc/JztcclxuICB9XHJcbn1cclxuIl19
@@ -9,47 +9,46 @@ export class TruUser {
9
9
  this._lastName = null;
10
10
  this._email = null;
11
11
  this._roles = null;
12
+ this._userSet = false;
12
13
  this.hasRoles = (roles) => {
13
14
  if (this._roles === null)
14
15
  return true;
15
16
  return _.intersection(roles, this._roles).length > 0;
16
17
  };
18
+ this.create = (user) => {
19
+ if (!this._userSet) {
20
+ this._ref = user.activeUserRef;
21
+ this._username = user.username;
22
+ this._firstName = user.firstName;
23
+ this._lastName = user.lastName;
24
+ this._email = user.email;
25
+ this._roles = user.roles;
26
+ this._userSet = true;
27
+ }
28
+ else {
29
+ throw new Error('User has already been set for this session.');
30
+ }
31
+ };
17
32
  }
18
33
  get activeUserRef() {
19
34
  if (this._ref < 0)
20
35
  throw new Error('Inavlid User.');
21
36
  return this._ref;
22
37
  }
23
- set activeUserRef(ref) {
24
- this._ref = ref;
25
- }
26
38
  get username() {
27
39
  return this._username;
28
40
  }
29
- set username(username) {
30
- this._username = username;
31
- }
32
41
  get firstName() {
33
42
  return this._firstName;
34
43
  }
35
- set firstName(firstName) {
36
- this._firstName = firstName;
37
- }
38
44
  get lastName() {
39
45
  return this._lastName;
40
46
  }
41
- set lastName(lastName) {
42
- this._lastName = lastName;
43
- }
44
47
  get email() {
45
48
  return this._email;
46
49
  }
47
- set email(email) {
48
- this._email = email;
49
- ;
50
- }
51
- set roles(roles) {
52
- this._roles = roles;
50
+ get roles() {
51
+ return this._roles;
53
52
  }
54
53
  }
55
54
  TruUser.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruUser, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -60,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
60
59
  providedIn: 'root',
61
60
  }]
62
61
  }], ctorParameters: function () { return []; } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXVzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RydS11c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7O0FBS2hDLE1BQU0sT0FBTyxPQUFPO0lBUWxCO1FBUFEsU0FBSSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBQ2pDLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzdCLFdBQU0sR0FBb0IsSUFBSSxDQUFDO1FBa0R2QyxhQUFRLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSTtnQkFDdEIsT0FBTyxJQUFJLENBQUM7WUFDZCxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQztJQXBEYSxDQUFDO0lBRWhCLElBQUksYUFBYTtRQUNmLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLEdBQVc7UUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsUUFBdUI7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsU0FBd0I7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsUUFBdUI7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsS0FBb0I7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFBQSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFzQjtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOztvR0F0RFUsT0FBTzt3R0FBUCxPQUFPLGNBRk4sTUFBTTsyRkFFUCxPQUFPO2tCQUhuQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVVc2VyIGltcGxlbWVudHMgSVRydVVzZXIge1xyXG4gIHByaXZhdGUgX3JlZjogbnVtYmVyID0gLTE7XHJcbiAgcHJpdmF0ZSBfdXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2ZpcnN0TmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfbGFzdE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2VtYWlsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9yb2xlczogc3RyaW5nW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBnZXQgYWN0aXZlVXNlclJlZigpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuX3JlZiA8IDApXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW5hdmxpZCBVc2VyLicpO1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlZjtcclxuICB9XHJcblxyXG4gIHNldCBhY3RpdmVVc2VyUmVmKHJlZjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9yZWYgPSByZWY7XHJcbiAgfVxyXG5cclxuICBnZXQgdXNlcm5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXNlcm5hbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdXNlcm5hbWUodXNlcm5hbWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIHRoaXMuX3VzZXJuYW1lID0gdXNlcm5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlyc3ROYW1lKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpcnN0TmFtZTtcclxuICB9XHJcblxyXG4gIHNldCBmaXJzdE5hbWUoZmlyc3ROYW1lOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9maXJzdE5hbWUgPSBmaXJzdE5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFzdE5hbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgbGFzdE5hbWUobGFzdE5hbWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIHRoaXMuX2xhc3ROYW1lID0gbGFzdE5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgZW1haWwoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW1haWw7XHJcbiAgfVxyXG5cclxuICBzZXQgZW1haWwoZW1haWw6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIHRoaXMuX2VtYWlsID0gZW1haWw7O1xyXG4gIH1cclxuXHJcbiAgc2V0IHJvbGVzKHJvbGVzOiBzdHJpbmdbXSB8IG51bGwpIHtcclxuICAgIHRoaXMuX3JvbGVzID0gcm9sZXM7XHJcbiAgfVxyXG5cclxuICBoYXNSb2xlcyA9IChyb2xlczogc3RyaW5nW10pID0+IHtcclxuICAgIGlmICh0aGlzLl9yb2xlcyA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gXy5pbnRlcnNlY3Rpb24ocm9sZXMsIHRoaXMuX3JvbGVzKS5sZW5ndGggPiAwOyBcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcnVVc2VyIHtcclxuICBhY3RpdmVVc2VyUmVmOiBudW1iZXI7XHJcbiAgdXNlcm5hbWU6IHN0cmluZyB8IG51bGw7XHJcbiAgZmlyc3ROYW1lOiBzdHJpbmcgfCBudWxsO1xyXG4gIGxhc3ROYW1lOiBzdHJpbmcgfCBudWxsO1xyXG4gIGVtYWlsOiBzdHJpbmcgfCBudWxsO1xyXG4gIHJvbGVzOiBzdHJpbmdbXSB8IG51bGw7XHJcbn1cclxuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXVzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RydS11c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7O0FBS2hDLE1BQU0sT0FBTyxPQUFPO0lBU2xCO1FBUlEsU0FBSSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBQ2pDLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzdCLFdBQU0sR0FBb0IsSUFBSSxDQUFDO1FBQy9CLGFBQVEsR0FBWSxLQUFLLENBQUM7UUE4QmxDLGFBQVEsR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJO2dCQUN0QixPQUFPLElBQUksQ0FBQztZQUNkLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDO1FBRUYsV0FBTSxHQUFHLENBQUMsSUFBYyxFQUFRLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQzthQUNoRTtRQUNILENBQUMsQ0FBQTtJQTlDYyxDQUFDO0lBRWhCLElBQUksYUFBYTtRQUNmLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7O29HQW5DVSxPQUFPO3dHQUFQLE9BQU8sY0FGTixNQUFNOzJGQUVQLE9BQU87a0JBSG5CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRydVVzZXIgaW1wbGVtZW50cyBJVHJ1VXNlciB7XHJcbiAgcHJpdmF0ZSBfcmVmOiBudW1iZXIgPSAtMTtcclxuICBwcml2YXRlIF91c2VybmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfZmlyc3ROYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9sYXN0TmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfZW1haWw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX3JvbGVzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX3VzZXJTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBnZXQgYWN0aXZlVXNlclJlZigpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuX3JlZiA8IDApXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW5hdmxpZCBVc2VyLicpO1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlZjtcclxuICB9XHJcblxyXG4gIGdldCB1c2VybmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl91c2VybmFtZTtcclxuICB9XHJcblxyXG4gIGdldCBmaXJzdE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlyc3ROYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxhc3ROYW1lKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhc3ROYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVtYWlsKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VtYWlsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJvbGVzKCk6IHN0cmluZ1tdIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fcm9sZXM7XHJcbiAgfVxyXG5cclxuICBoYXNSb2xlcyA9IChyb2xlczogc3RyaW5nW10pID0+IHtcclxuICAgIGlmICh0aGlzLl9yb2xlcyA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gXy5pbnRlcnNlY3Rpb24ocm9sZXMsIHRoaXMuX3JvbGVzKS5sZW5ndGggPiAwOyBcclxuICB9O1xyXG5cclxuICBjcmVhdGUgPSAodXNlcjogSVRydVVzZXIpOiB2b2lkID0+IHtcclxuICAgIGlmICghdGhpcy5fdXNlclNldCkge1xyXG4gICAgICB0aGlzLl9yZWYgPSB1c2VyLmFjdGl2ZVVzZXJSZWY7XHJcbiAgICAgIHRoaXMuX3VzZXJuYW1lID0gdXNlci51c2VybmFtZTtcclxuICAgICAgdGhpcy5fZmlyc3ROYW1lID0gdXNlci5maXJzdE5hbWU7XHJcbiAgICAgIHRoaXMuX2xhc3ROYW1lID0gdXNlci5sYXN0TmFtZTtcclxuICAgICAgdGhpcy5fZW1haWwgPSB1c2VyLmVtYWlsO1xyXG4gICAgICB0aGlzLl9yb2xlcyA9IHVzZXIucm9sZXM7XHJcbiAgICAgIHRoaXMuX3VzZXJTZXQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyIGhhcyBhbHJlYWR5IGJlZW4gc2V0IGZvciB0aGlzIHNlc3Npb24uJyk7XHJcbiAgICB9XHJcbiAgfSBcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJ1VXNlciB7XHJcbiAgYWN0aXZlVXNlclJlZjogbnVtYmVyO1xyXG4gIHVzZXJuYW1lOiBzdHJpbmcgfCBudWxsO1xyXG4gIGZpcnN0TmFtZTogc3RyaW5nIHwgbnVsbDtcclxuICBsYXN0TmFtZTogc3RyaW5nIHwgbnVsbDtcclxuICBlbWFpbDogc3RyaW5nIHwgbnVsbDtcclxuICByb2xlczogc3RyaW5nW10gfCBudWxsO1xyXG59XHJcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, Input, Injectable, Component, Inject, HostListener, NgModule, EventEmitter, ViewEncapsulation, Output, InjectionToken, APP_INITIALIZER, ViewChildren, ViewChild } from '@angular/core';
3
3
  import { EntityAspect, MetadataStore, EntityManager, DataService, EntityQuery, Predicate, FetchStrategy, EntityState, EntityAction, BinaryPredicate, AndOrPredicate, breeze } from 'breeze-client';
4
- import { BehaviorSubject, defer, from, of, Subject, Observable, skip, forkJoin, throwError } from 'rxjs';
4
+ import { BehaviorSubject, defer, from, of, Subject, Observable, skip, forkJoin, finalize, throwError } from 'rxjs';
5
5
  import * as _ from 'underscore';
6
6
  import * as i1$3 from '@angular/common/http';
7
7
  import { HttpClientModule, HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http';
@@ -40,10 +40,10 @@ import { MatExpansionModule } from '@angular/material/expansion';
40
40
  import { MatGridListModule } from '@angular/material/grid-list';
41
41
  import * as i2 from '@angular/material/icon';
42
42
  import { MatIconModule } from '@angular/material/icon';
43
- import * as i5$2 from '@angular/material/input';
43
+ import * as i5$1 from '@angular/material/input';
44
44
  import { MatInputModule } from '@angular/material/input';
45
45
  import { MatListModule } from '@angular/material/list';
46
- import * as i5$1 from '@angular/material/menu';
46
+ import * as i6 from '@angular/material/menu';
47
47
  import { MatMenuModule } from '@angular/material/menu';
48
48
  import * as i5 from '@angular/material/core';
49
49
  import { MatNativeDateModule, MatRippleModule, MatOptionModule } from '@angular/material/core';
@@ -283,47 +283,46 @@ class TruUser {
283
283
  this._lastName = null;
284
284
  this._email = null;
285
285
  this._roles = null;
286
+ this._userSet = false;
286
287
  this.hasRoles = (roles) => {
287
288
  if (this._roles === null)
288
289
  return true;
289
290
  return _.intersection(roles, this._roles).length > 0;
290
291
  };
292
+ this.create = (user) => {
293
+ if (!this._userSet) {
294
+ this._ref = user.activeUserRef;
295
+ this._username = user.username;
296
+ this._firstName = user.firstName;
297
+ this._lastName = user.lastName;
298
+ this._email = user.email;
299
+ this._roles = user.roles;
300
+ this._userSet = true;
301
+ }
302
+ else {
303
+ throw new Error('User has already been set for this session.');
304
+ }
305
+ };
291
306
  }
292
307
  get activeUserRef() {
293
308
  if (this._ref < 0)
294
309
  throw new Error('Inavlid User.');
295
310
  return this._ref;
296
311
  }
297
- set activeUserRef(ref) {
298
- this._ref = ref;
299
- }
300
312
  get username() {
301
313
  return this._username;
302
314
  }
303
- set username(username) {
304
- this._username = username;
305
- }
306
315
  get firstName() {
307
316
  return this._firstName;
308
317
  }
309
- set firstName(firstName) {
310
- this._firstName = firstName;
311
- }
312
318
  get lastName() {
313
319
  return this._lastName;
314
320
  }
315
- set lastName(lastName) {
316
- this._lastName = lastName;
317
- }
318
321
  get email() {
319
322
  return this._email;
320
323
  }
321
- set email(email) {
322
- this._email = email;
323
- ;
324
- }
325
- set roles(roles) {
326
- this._roles = roles;
324
+ get roles() {
325
+ return this._roles;
327
326
  }
328
327
  }
329
328
  TruUser.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruUser, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -365,7 +364,6 @@ class TruAppEnvironment {
365
364
  };
366
365
  this._appUri = '';
367
366
  this._maxRecordCount = 0;
368
- this._user = truUser;
369
367
  this.msgModifierKeyLabel = this.isMac ? 'Cmd' : 'Ctrl';
370
368
  this.msgConfirmExitWithChangesPending = 'You have unsaved changes that will be lost.';
371
369
  this.msgDeleteSuccessful = 'Delete succeeded';
@@ -388,16 +386,6 @@ class TruAppEnvironment {
388
386
  set appUri(uri) {
389
387
  this._appUri = uri;
390
388
  }
391
- get user() {
392
- return this._user;
393
- }
394
- set user(user) {
395
- this._user = user;
396
- }
397
- get activeUserRef() {
398
- var _a;
399
- return (_a = this._user) === null || _a === void 0 ? void 0 : _a.activeUserRef;
400
- }
401
389
  get isSaving() {
402
390
  return this._isSaving.getValue();
403
391
  }
@@ -3735,34 +3723,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
3735
3723
  } });
3736
3724
 
3737
3725
  class TruToolbarUserProfile {
3738
- constructor(desktopManager, appEnvironment, auth) {
3726
+ constructor(desktopManager, appEnvironment, user, auth) {
3739
3727
  var _a;
3740
3728
  this.desktopManager = desktopManager;
3741
3729
  this.appEnvironment = appEnvironment;
3730
+ this.user = user;
3742
3731
  this.auth = auth;
3743
3732
  this.initial = null;
3744
3733
  this.name = null;
3745
3734
  this.email = null;
3746
3735
  this.onChangePasswordButtonClicked = () => {
3747
3736
  var _a;
3748
- let entity = (_a = this.appEnvironment.globalDataContext) === null || _a === void 0 ? void 0 : _a.entityAccess().searchUserByRefCacheOnly(this.appEnvironment.activeUserRef);
3737
+ let entity = (_a = this.appEnvironment.globalDataContext) === null || _a === void 0 ? void 0 : _a.entityAccess().searchUserByRefCacheOnly(this.user.activeUserRef);
3749
3738
  this.desktopManager.addWindow('TruDbUser', 'TruDbUsers', 'Users', 'TruDbUserDetailView', [entity], true);
3750
3739
  };
3751
3740
  this.onLogoutButtonClicked = () => {
3752
3741
  this.auth.doLogoutAndRedirectToLogin();
3753
3742
  };
3754
- let user = this.appEnvironment.user;
3755
3743
  this.initial = (user === null || user === void 0 ? void 0 : user.firstName) ? user === null || user === void 0 ? void 0 : user.firstName.slice(0, 1).toUpperCase() : (_a = user === null || user === void 0 ? void 0 : user.username) === null || _a === void 0 ? void 0 : _a.slice(0, 1).toUpperCase();
3756
3744
  this.name = (user === null || user === void 0 ? void 0 : user.firstName) && (user === null || user === void 0 ? void 0 : user.lastName) ? (user === null || user === void 0 ? void 0 : user.firstName) + ' ' + (user === null || user === void 0 ? void 0 : user.lastName) : user === null || user === void 0 ? void 0 : user.username;
3757
3745
  this.email = user === null || user === void 0 ? void 0 : user.email;
3758
3746
  }
3759
3747
  }
3760
- TruToolbarUserProfile.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruToolbarUserProfile, deps: [{ token: TruDesktopManager }, { token: TruAppEnvironment }, { token: TruAuth }], target: i0.ɵɵFactoryTarget.Component });
3761
- TruToolbarUserProfile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruToolbarUserProfile, selector: "tru-toolbar-user-profile", ngImport: i0, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
3748
+ TruToolbarUserProfile.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruToolbarUserProfile, deps: [{ token: TruDesktopManager }, { token: TruAppEnvironment }, { token: TruUser }, { token: TruAuth }], target: i0.ɵɵFactoryTarget.Component });
3749
+ TruToolbarUserProfile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruToolbarUserProfile, selector: "tru-toolbar-user-profile", ngImport: i0, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
3762
3750
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruToolbarUserProfile, decorators: [{
3763
3751
  type: Component,
3764
3752
  args: [{ selector: 'tru-toolbar-user-profile', encapsulation: ViewEncapsulation.None, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"] }]
3765
- }], ctorParameters: function () { return [{ type: TruDesktopManager }, { type: TruAppEnvironment }, { type: TruAuth }]; } });
3753
+ }], ctorParameters: function () { return [{ type: TruDesktopManager }, { type: TruAppEnvironment }, { type: TruUser }, { type: TruAuth }]; } });
3766
3754
 
3767
3755
  class TruToolbarUserProfileModule {
3768
3756
  }
@@ -5913,8 +5901,10 @@ class TruLogin {
5913
5901
  if (loginRequest.username && loginRequest.password) {
5914
5902
  this.isLoggingIn = true;
5915
5903
  this.auth
5916
- .login(loginRequest)
5917
- .subscribe((user) => {
5904
+ .login(loginRequest).pipe(finalize(() => {
5905
+ this.isLoggingIn = false;
5906
+ }))
5907
+ .subscribe(() => {
5918
5908
  this.isLoggingIn = false;
5919
5909
  }, (error) => {
5920
5910
  if (error.status === 401) {
@@ -5928,7 +5918,7 @@ class TruLogin {
5928
5918
  }
5929
5919
  }
5930
5920
  TruLogin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruLogin, deps: [{ token: TruAuth }], target: i0.ɵɵFactoryTarget.Component });
5931
- TruLogin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruLogin, selector: "tru-login", ngImport: i0, template: "<div class=\"login-wrapper\">\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-card class=\"animate-login\">\r\n <mat-card-header>\r\n <mat-card-title> loginFormTitle </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-form-field>\r\n <mat-label>Username</mat-label>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\">\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Password</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" placeholder=\"Password\">\r\n </mat-form-field>\r\n <div *ngIf=\"loginError\" class=\"animate-login-error animated rubberBand\">\r\n <p style=\"color: red; font-weight: bold;\"> {{ loginError }}</p>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isDisabled()\">Login</button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </form>\r\n</div>\r\n", styles: [".login-container{display:flex;justify-content:center;align-items:center;height:100vh;margin:0;padding:0}.login-input{margin-bottom:20px}.animate-login{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;margin-top:50px}.wrapper{display:flex;justify-content:center;align-items:center;height:100vh}mat-card{max-width:300px;width:100%;max-height:300px;padding:20px}.form-group{width:100%;max-width:400px;margin-bottom:20px}.login-wrapper{display:flex;justify-content:center;align-items:center;height:100vh}::ng-deep .login-wrapper .mat-mdc-text-field-wrapper{padding:0 16px!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i5$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
5921
+ TruLogin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruLogin, selector: "tru-login", ngImport: i0, template: "<div class=\"login-wrapper\">\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-card class=\"animate-login\">\r\n <mat-card-header>\r\n <mat-card-title> loginFormTitle </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-form-field>\r\n <mat-label>Username</mat-label>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\">\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Password</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" placeholder=\"Password\">\r\n </mat-form-field>\r\n <div *ngIf=\"loginError\" class=\"animate-login-error animated rubberBand\">\r\n <p style=\"color: red; font-weight: bold;\"> {{ loginError }}</p>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isDisabled()\">Login</button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </form>\r\n</div>\r\n", styles: [".login-container{display:flex;justify-content:center;align-items:center;height:100vh;margin:0;padding:0}.login-input{margin-bottom:20px}.animate-login{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;margin-top:50px}.wrapper{display:flex;justify-content:center;align-items:center;height:100vh}mat-card{max-width:300px;width:100%;max-height:300px;padding:20px}.form-group{width:100%;max-width:400px;margin-bottom:20px}.login-wrapper{display:flex;justify-content:center;align-items:center;height:100vh}::ng-deep .login-wrapper .mat-mdc-text-field-wrapper{padding:0 16px!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
5932
5922
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruLogin, decorators: [{
5933
5923
  type: Component,
5934
5924
  args: [{ selector: 'tru-login', template: "<div class=\"login-wrapper\">\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-card class=\"animate-login\">\r\n <mat-card-header>\r\n <mat-card-title> loginFormTitle </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-form-field>\r\n <mat-label>Username</mat-label>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\">\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Password</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" placeholder=\"Password\">\r\n </mat-form-field>\r\n <div *ngIf=\"loginError\" class=\"animate-login-error animated rubberBand\">\r\n <p style=\"color: red; font-weight: bold;\"> {{ loginError }}</p>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isDisabled()\">Login</button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </form>\r\n</div>\r\n", styles: [".login-container{display:flex;justify-content:center;align-items:center;height:100vh;margin:0;padding:0}.login-input{margin-bottom:20px}.animate-login{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;margin-top:50px}.wrapper{display:flex;justify-content:center;align-items:center;height:100vh}mat-card{max-width:300px;width:100%;max-height:300px;padding:20px}.form-group{width:100%;max-width:400px;margin-bottom:20px}.login-wrapper{display:flex;justify-content:center;align-items:center;height:100vh}::ng-deep .login-wrapper .mat-mdc-text-field-wrapper{padding:0 16px!important}\n"] }]