@myrmidon/auth-jwt-admin 0.1.1 → 0.1.2
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.
- package/esm2020/lib/auth-jwt-admin.module.mjs +4 -4
- package/esm2020/lib/components/auth-jwt-registration/auth-jwt-registration.component.mjs +3 -3
- package/esm2020/lib/components/confirm-dialog/confirm-dialog.component.mjs +3 -3
- package/esm2020/lib/components/password-strength-bar/password-strength-bar.component.mjs +3 -3
- package/esm2020/lib/components/state/users.query.mjs +3 -3
- package/esm2020/lib/components/state/users.service.mjs +3 -3
- package/esm2020/lib/components/state/users.store.mjs +3 -3
- package/esm2020/lib/components/user-editor/user-editor.component.mjs +3 -3
- package/esm2020/lib/components/user-filter/user-filter.component.mjs +3 -3
- package/esm2020/lib/components/user-list/user-list.component.mjs +5 -5
- package/esm2020/lib/services/auth-jwt-account.service.mjs +3 -3
- package/esm2020/lib/services/dialog.service.mjs +3 -3
- package/fesm2015/myrmidon-auth-jwt-admin.mjs +38 -38
- package/fesm2015/myrmidon-auth-jwt-admin.mjs.map +1 -1
- package/fesm2020/myrmidon-auth-jwt-admin.mjs +38 -38
- package/fesm2020/myrmidon-auth-jwt-admin.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -25,8 +25,8 @@ import { MatPaginatorModule } from '@angular/material/paginator';
|
|
|
25
25
|
import * as i0 from "@angular/core";
|
|
26
26
|
export class AuthJwtAdminModule {
|
|
27
27
|
}
|
|
28
|
-
AuthJwtAdminModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
29
|
-
AuthJwtAdminModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.
|
|
28
|
+
AuthJwtAdminModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: AuthJwtAdminModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
29
|
+
AuthJwtAdminModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.6", ngImport: i0, type: AuthJwtAdminModule, declarations: [AuthJwtRegistrationComponent,
|
|
30
30
|
PasswordStrengthBarComponent,
|
|
31
31
|
UserFilterComponent,
|
|
32
32
|
UserListComponent,
|
|
@@ -53,7 +53,7 @@ AuthJwtAdminModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
|
|
|
53
53
|
PasswordStrengthBarComponent,
|
|
54
54
|
UserFilterComponent,
|
|
55
55
|
UserListComponent] });
|
|
56
|
-
AuthJwtAdminModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.
|
|
56
|
+
AuthJwtAdminModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: AuthJwtAdminModule, imports: [CommonModule,
|
|
57
57
|
HttpClientModule,
|
|
58
58
|
FormsModule,
|
|
59
59
|
RouterModule,
|
|
@@ -72,7 +72,7 @@ AuthJwtAdminModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", vers
|
|
|
72
72
|
MatTooltipModule,
|
|
73
73
|
AuthJwtLoginModule,
|
|
74
74
|
NgToolsModule] });
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: AuthJwtAdminModule, decorators: [{
|
|
76
76
|
type: NgModule,
|
|
77
77
|
args: [{
|
|
78
78
|
declarations: [
|
|
@@ -192,9 +192,9 @@ export class AuthJwtRegistrationComponent {
|
|
|
192
192
|
});
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
|
-
AuthJwtRegistrationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
196
|
-
AuthJwtRegistrationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.
|
|
197
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
195
|
+
AuthJwtRegistrationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: AuthJwtRegistrationComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.MatSnackBar }, { token: i3.AuthJwtAccountService }], target: i0.ɵɵFactoryTarget.Component });
|
|
196
|
+
AuthJwtRegistrationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: AuthJwtRegistrationComponent, selector: "auth-jwt-registration", outputs: { registered: "registered" }, ngImport: i0, template: "<div>\n <div>\n <p>\n To register a new user, you must provide his email address, choose a\n password, and choose a username, which must be unique (you will be\n notified if another user has already taken that name). The username must\n include only letters/digits, start with a letter, and be no shorter than 3\n characters, nor longer than 50.\n </p>\n <p>\n To promote a decent security level, the password must include at least 8\n characters, uppercase and lowercase letters, digits, and punctuation (like\n dashes, stops, parentheses, etc.).\n </p>\n <p>\n Once registered, the user will receive an email message to the email\n address you specified; he will have to click on the provided link to\n complete the registration process.\n </p>\n </div>\n\n <form role=\"form\" [formGroup]=\"registration\" (submit)=\"onSubmit()\">\n <fieldset>\n <label>register user</label>\n <!-- email -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"email\"\n id=\"email\"\n maxlength=\"256\"\n required\n autofocus\n spellcheck=\"false\"\n placeholder=\"email\"\n formControlName=\"email\"\n />\n <mat-error>{{ getEmailErrorLabel() }}</mat-error>\n <mat-icon *ngIf=\"email.pending\">hourglass</mat-icon>\n </mat-form-field>\n </div>\n\n <!-- name -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"text\"\n id=\"name\"\n maxlength=\"50\"\n required\n pattern=\"^[a-zA-Z][a-zA-Z0-9]{2,49}$\"\n spellcheck=\"false\"\n placeholder=\"username\"\n formControlName=\"name\"\n />\n <mat-error>{{ getNameErrorLabel() }}</mat-error>\n <mat-icon *ngIf=\"name.pending\">hourglass</mat-icon>\n </mat-form-field>\n </div>\n\n <!-- first name -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"text\"\n id=\"firstName\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n placeholder=\"first name\"\n formControlName=\"firstName\"\n />\n <mat-error\n *ngIf=\"\n firstName.hasError('required') &&\n (firstName.dirty || firstName.touched)\n \"\n class=\"text-danger small\"\n >\n first name required\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- last name -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"text\"\n id=\"lastName\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n placeholder=\"last name\"\n formControlName=\"lastName\"\n />\n <mat-error\n *ngIf=\"\n lastName.hasError('required') &&\n (lastName.dirty || lastName.touched)\n \"\n class=\"text-danger small\"\n >\n last name required\n </mat-error>\n </mat-form-field>\n </div>\n\n <div [formGroup]=\"passwords\">\n <!-- password -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"password\"\n name=\"password\"\n autocomplete=\"new-password\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n placeholder=\"password\"\n formControlName=\"password\"\n />\n <auth-jwt-password-strength-bar [passwordToCheck]=\"password.value\">\n </auth-jwt-password-strength-bar>\n <mat-error>{{ getPasswordErrorLabel() }}</mat-error>\n </mat-form-field>\n </div>\n\n <!-- confirm password -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"password\"\n name=\"confirmPassword\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n placeholder=\"confirm password\"\n formControlName=\"confirmPassword\"\n />\n <mat-error\n *ngIf=\"\n passwords.hasError('areEqual') &&\n (confirmPassword.dirty || confirmPassword.touched)\n \"\n >\n password differs from confirmation password\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"\n !registration.valid || busy || name.pending || email.pending\n \"\n >\n register\n </button>\n <mat-progress-spinner\n diameter=\"20\"\n *ngIf=\"busy\"\n aria-label=\"Busy\"\n ></mat-progress-spinner>\n </fieldset>\n </form>\n</div>\n", styles: ["mat-form-field{width:400px}fieldset{border:1px solid silver;border-radius:8px;padding:16px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.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: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.PasswordStrengthBarComponent, selector: "auth-jwt-password-strength-bar", inputs: ["passwordToCheck"], outputs: ["strengthChange"] }] });
|
|
197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: AuthJwtRegistrationComponent, decorators: [{
|
|
198
198
|
type: Component,
|
|
199
199
|
args: [{ selector: 'auth-jwt-registration', template: "<div>\n <div>\n <p>\n To register a new user, you must provide his email address, choose a\n password, and choose a username, which must be unique (you will be\n notified if another user has already taken that name). The username must\n include only letters/digits, start with a letter, and be no shorter than 3\n characters, nor longer than 50.\n </p>\n <p>\n To promote a decent security level, the password must include at least 8\n characters, uppercase and lowercase letters, digits, and punctuation (like\n dashes, stops, parentheses, etc.).\n </p>\n <p>\n Once registered, the user will receive an email message to the email\n address you specified; he will have to click on the provided link to\n complete the registration process.\n </p>\n </div>\n\n <form role=\"form\" [formGroup]=\"registration\" (submit)=\"onSubmit()\">\n <fieldset>\n <label>register user</label>\n <!-- email -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"email\"\n id=\"email\"\n maxlength=\"256\"\n required\n autofocus\n spellcheck=\"false\"\n placeholder=\"email\"\n formControlName=\"email\"\n />\n <mat-error>{{ getEmailErrorLabel() }}</mat-error>\n <mat-icon *ngIf=\"email.pending\">hourglass</mat-icon>\n </mat-form-field>\n </div>\n\n <!-- name -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"text\"\n id=\"name\"\n maxlength=\"50\"\n required\n pattern=\"^[a-zA-Z][a-zA-Z0-9]{2,49}$\"\n spellcheck=\"false\"\n placeholder=\"username\"\n formControlName=\"name\"\n />\n <mat-error>{{ getNameErrorLabel() }}</mat-error>\n <mat-icon *ngIf=\"name.pending\">hourglass</mat-icon>\n </mat-form-field>\n </div>\n\n <!-- first name -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"text\"\n id=\"firstName\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n placeholder=\"first name\"\n formControlName=\"firstName\"\n />\n <mat-error\n *ngIf=\"\n firstName.hasError('required') &&\n (firstName.dirty || firstName.touched)\n \"\n class=\"text-danger small\"\n >\n first name required\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- last name -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"text\"\n id=\"lastName\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n placeholder=\"last name\"\n formControlName=\"lastName\"\n />\n <mat-error\n *ngIf=\"\n lastName.hasError('required') &&\n (lastName.dirty || lastName.touched)\n \"\n class=\"text-danger small\"\n >\n last name required\n </mat-error>\n </mat-form-field>\n </div>\n\n <div [formGroup]=\"passwords\">\n <!-- password -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"password\"\n name=\"password\"\n autocomplete=\"new-password\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n placeholder=\"password\"\n formControlName=\"password\"\n />\n <auth-jwt-password-strength-bar [passwordToCheck]=\"password.value\">\n </auth-jwt-password-strength-bar>\n <mat-error>{{ getPasswordErrorLabel() }}</mat-error>\n </mat-form-field>\n </div>\n\n <!-- confirm password -->\n <div>\n <mat-form-field>\n <input\n matInput\n type=\"password\"\n name=\"confirmPassword\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n placeholder=\"confirm password\"\n formControlName=\"confirmPassword\"\n />\n <mat-error\n *ngIf=\"\n passwords.hasError('areEqual') &&\n (confirmPassword.dirty || confirmPassword.touched)\n \"\n >\n password differs from confirmation password\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"\n !registration.valid || busy || name.pending || email.pending\n \"\n >\n register\n </button>\n <mat-progress-spinner\n diameter=\"20\"\n *ngIf=\"busy\"\n aria-label=\"Busy\"\n ></mat-progress-spinner>\n </fieldset>\n </form>\n</div>\n", styles: ["mat-form-field{width:400px}fieldset{border:1px solid silver;border-radius:8px;padding:16px}\n"] }]
|
|
200
200
|
}], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.MatSnackBar }, { type: i3.AuthJwtAccountService }]; }, propDecorators: { registered: [{
|
|
@@ -15,9 +15,9 @@ export class ConfirmDialogComponent {
|
|
|
15
15
|
}
|
|
16
16
|
ngOnInit() { }
|
|
17
17
|
}
|
|
18
|
-
ConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
19
|
-
ConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
18
|
+
ConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
ConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: ConfirmDialogComponent, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>{{ title }}</h1>\r\n<mat-dialog-content>\r\n {{ prompt }}\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button\r\n type=\"button\"\r\n mat-raised-button\r\n color=\"warn\"\r\n (click)=\"dialogRef.close(true)\"\r\n >\r\n {{ ok }}\r\n </button>\r\n <button type=\"button\" mat-button (click)=\"dialogRef.close()\">\r\n {{ cancel }}\r\n </button>\r\n</mat-dialog-actions>\r\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }] });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
|
|
21
21
|
type: Component,
|
|
22
22
|
args: [{ template: "<h1 mat-dialog-title>{{ title }}</h1>\r\n<mat-dialog-content>\r\n {{ prompt }}\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button\r\n type=\"button\"\r\n mat-raised-button\r\n color=\"warn\"\r\n (click)=\"dialogRef.close(true)\"\r\n >\r\n {{ ok }}\r\n </button>\r\n <button type=\"button\" mat-button (click)=\"dialogRef.close()\">\r\n {{ cancel }}\r\n </button>\r\n</mat-dialog-actions>\r\n" }]
|
|
23
23
|
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
@@ -67,9 +67,9 @@ export class PasswordStrengthBarComponent {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
PasswordStrengthBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
71
|
-
PasswordStrengthBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
70
|
+
PasswordStrengthBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: PasswordStrengthBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
71
|
+
PasswordStrengthBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: PasswordStrengthBarComponent, selector: "auth-jwt-password-strength-bar", inputs: { passwordToCheck: "passwordToCheck" }, outputs: { strengthChange: "strengthChange" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"strength\">\n <small>strength:</small>\n <ul id=\"strengthBar\">\n <li class=\"point\" [style.background-color]=\"bars[0]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[1]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[2]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[3]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[4]\"></li>\n </ul>\n</div>\n", styles: ["ul#strengthBar{display:inline;list-style:none;margin:0 0 0 15px;padding:0;vertical-align:2px}li.point:last{margin:0!important}li.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;margin-right:1px;width:20px}\n"] });
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: PasswordStrengthBarComponent, decorators: [{
|
|
73
73
|
type: Component,
|
|
74
74
|
args: [{ selector: 'auth-jwt-password-strength-bar', template: "<div id=\"strength\">\n <small>strength:</small>\n <ul id=\"strengthBar\">\n <li class=\"point\" [style.background-color]=\"bars[0]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[1]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[2]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[3]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[4]\"></li>\n </ul>\n</div>\n", styles: ["ul#strengthBar{display:inline;list-style:none;margin:0 0 0 15px;padding:0;vertical-align:2px}li.point:last{margin:0!important}li.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;margin-right:1px;width:20px}\n"] }]
|
|
75
75
|
}], ctorParameters: function () { return []; }, propDecorators: { passwordToCheck: [{
|
|
@@ -11,9 +11,9 @@ export class UsersQuery extends QueryEntity {
|
|
|
11
11
|
return this.select((state) => state.filter);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
UsersQuery.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
15
|
-
UsersQuery.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
14
|
+
UsersQuery.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UsersQuery, deps: [{ token: i1.UsersStore }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15
|
+
UsersQuery.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UsersQuery, providedIn: 'root' });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UsersQuery, decorators: [{
|
|
17
17
|
type: Injectable,
|
|
18
18
|
args: [{ providedIn: 'root' }]
|
|
19
19
|
}], ctorParameters: function () { return [{ type: i1.UsersStore }]; } });
|
|
@@ -56,9 +56,9 @@ export class UsersService {
|
|
|
56
56
|
return promise;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
UsersService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
60
|
-
UsersService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
59
|
+
UsersService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UsersService, deps: [{ token: i1.UsersStore }, { token: i2.AuthJwtAccountService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
60
|
+
UsersService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UsersService, providedIn: 'root' });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UsersService, decorators: [{
|
|
62
62
|
type: Injectable,
|
|
63
63
|
args: [{ providedIn: 'root' }]
|
|
64
64
|
}], ctorParameters: function () { return [{ type: i1.UsersStore }, { type: i2.AuthJwtAccountService }]; } });
|
|
@@ -14,13 +14,13 @@ let UsersStore = class UsersStore extends EntityStore {
|
|
|
14
14
|
super(initialState);
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
|
-
UsersStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
18
|
-
UsersStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.
|
|
17
|
+
UsersStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UsersStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18
|
+
UsersStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UsersStore, providedIn: 'root' });
|
|
19
19
|
UsersStore = __decorate([
|
|
20
20
|
StoreConfig({ name: 'Users', idKey: 'userName', resettable: true })
|
|
21
21
|
], UsersStore);
|
|
22
22
|
export { UsersStore };
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UsersStore, decorators: [{
|
|
24
24
|
type: Injectable,
|
|
25
25
|
args: [{ providedIn: 'root' }]
|
|
26
26
|
}], ctorParameters: function () { return []; } });
|
|
@@ -97,9 +97,9 @@ export class UserEditorComponent {
|
|
|
97
97
|
this.userChange.emit(this.getUserFromForm());
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
-
UserEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
101
|
-
UserEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
100
|
+
UserEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UserEditorComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.AuthJwtService }], target: i0.ɵɵFactoryTarget.Component });
|
|
101
|
+
UserEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: UserEditorComponent, selector: "auth-jwt-user-editor", inputs: { user: "user" }, outputs: { userChange: "userChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <!-- email -->\n <div>\n <mat-form-field>\n <input type=\"text\" matInput [formControl]=\"email\" placeholder=\"email\" />\n <mat-error\n *ngIf=\"email.hasError('required') && (email.dirty || email.touched)\"\n >\n email address required\n </mat-error>\n <mat-error\n *ngIf=\"email.hasError('pattern') && (email.dirty || email.touched)\"\n >\n invalid email address\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- emailConfirmed -->\n <div>\n <mat-checkbox [formControl]=\"emailConfirmed\"\n >email address confirmed</mat-checkbox\n >\n </div>\n\n <!-- lockoutEnabled -->\n <div>\n <mat-checkbox [formControl]=\"lockoutEnabled\"\n >lockout enabled</mat-checkbox\n >\n \n <button\n mat-stroked-button\n (click)=\"endLockout()\"\n [disabled]=\"unlocked\"\n matTooltip=\"Unlock this user if locked\"\n >\n unlock\n </button>\n </div>\n\n <!-- firstName -->\n <div>\n <mat-form-field>\n <input\n type=\"text\"\n matInput\n [formControl]=\"firstName\"\n placeholder=\"first name\"\n />\n <mat-error\n *ngIf=\"\n firstName.hasError('required') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name required\n </mat-error>\n <mat-error\n *ngIf=\"\n firstName.hasError('maxlength') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name too long\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- lastName -->\n <div>\n <mat-form-field>\n <input\n type=\"text\"\n matInput\n [formControl]=\"lastName\"\n placeholder=\"last name\"\n />\n <mat-error\n *ngIf=\"\n lastName.hasError('required') && (lastName.dirty || lastName.touched)\n \"\n >\n last name required\n </mat-error>\n <mat-error\n *ngIf=\"\n lastName.hasError('maxlength') && (lastName.dirty || lastName.touched)\n \"\n >\n last name too long\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- roles -->\n <div>\n <mat-form-field>\n <input\n type=\"text\"\n matInput\n [formControl]=\"roles\"\n placeholder=\"roles (separated by space)\"\n />\n <mat-error\n *ngIf=\"roles.hasError('maxlength') && (roles.dirty || roles.touched)\"\n >\n too long\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- buttons -->\n <br />\n <div>\n <button mat-icon-button color=\"warn\" matTooltip=\"Close\" (click)=\"close()\">\n <mat-icon>cancel</mat-icon>\n </button>\n \n <button\n type=\"submit\"\n mat-button\n color=\"primary\"\n [disabled]=\"form.invalid\"\n matTooltip=\"Save user data\"\n >\n <mat-icon>check_circle</mat-icon> save\n </button>\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.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: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UserEditorComponent, decorators: [{
|
|
103
103
|
type: Component,
|
|
104
104
|
args: [{ selector: 'auth-jwt-user-editor', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <!-- email -->\n <div>\n <mat-form-field>\n <input type=\"text\" matInput [formControl]=\"email\" placeholder=\"email\" />\n <mat-error\n *ngIf=\"email.hasError('required') && (email.dirty || email.touched)\"\n >\n email address required\n </mat-error>\n <mat-error\n *ngIf=\"email.hasError('pattern') && (email.dirty || email.touched)\"\n >\n invalid email address\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- emailConfirmed -->\n <div>\n <mat-checkbox [formControl]=\"emailConfirmed\"\n >email address confirmed</mat-checkbox\n >\n </div>\n\n <!-- lockoutEnabled -->\n <div>\n <mat-checkbox [formControl]=\"lockoutEnabled\"\n >lockout enabled</mat-checkbox\n >\n \n <button\n mat-stroked-button\n (click)=\"endLockout()\"\n [disabled]=\"unlocked\"\n matTooltip=\"Unlock this user if locked\"\n >\n unlock\n </button>\n </div>\n\n <!-- firstName -->\n <div>\n <mat-form-field>\n <input\n type=\"text\"\n matInput\n [formControl]=\"firstName\"\n placeholder=\"first name\"\n />\n <mat-error\n *ngIf=\"\n firstName.hasError('required') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name required\n </mat-error>\n <mat-error\n *ngIf=\"\n firstName.hasError('maxlength') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name too long\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- lastName -->\n <div>\n <mat-form-field>\n <input\n type=\"text\"\n matInput\n [formControl]=\"lastName\"\n placeholder=\"last name\"\n />\n <mat-error\n *ngIf=\"\n lastName.hasError('required') && (lastName.dirty || lastName.touched)\n \"\n >\n last name required\n </mat-error>\n <mat-error\n *ngIf=\"\n lastName.hasError('maxlength') && (lastName.dirty || lastName.touched)\n \"\n >\n last name too long\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- roles -->\n <div>\n <mat-form-field>\n <input\n type=\"text\"\n matInput\n [formControl]=\"roles\"\n placeholder=\"roles (separated by space)\"\n />\n <mat-error\n *ngIf=\"roles.hasError('maxlength') && (roles.dirty || roles.touched)\"\n >\n too long\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- buttons -->\n <br />\n <div>\n <button mat-icon-button color=\"warn\" matTooltip=\"Close\" (click)=\"close()\">\n <mat-icon>cancel</mat-icon>\n </button>\n \n <button\n type=\"submit\"\n mat-button\n color=\"primary\"\n [disabled]=\"form.invalid\"\n matTooltip=\"Save user data\"\n >\n <mat-icon>check_circle</mat-icon> save\n </button>\n </div>\n</form>\n" }]
|
|
105
105
|
}], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.AuthJwtService }]; }, propDecorators: { user: [{
|
|
@@ -47,9 +47,9 @@ export class UserFilterComponent {
|
|
|
47
47
|
this._corporaService.updateFilter(filter);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
UserFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
51
|
-
UserFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
50
|
+
UserFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UserFilterComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.UsersQuery }, { token: i3.UsersService }], target: i0.ɵɵFactoryTarget.Component });
|
|
51
|
+
UserFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: UserFilterComponent, selector: "auth-jwt-user-filter", inputs: { disabled: "disabled" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"apply()\" ng-disabled=\"disabled\">\n <mat-form-field>\n <input matInput [formControl]=\"name\" placeholder=\"name or ID\" />\n <button\n mat-icon-button\n matSuffix\n type=\"button\"\n (click)=\"reset()\"\n color=\"warn\"\n matTooltip=\"Reset filters\"\n [disabled]=\"disabled\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n\n <button\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"disabled\"\n matTooltip=\"Apply filters\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i7.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: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UserFilterComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
54
54
|
args: [{ selector: 'auth-jwt-user-filter', template: "<form [formGroup]=\"form\" (submit)=\"apply()\" ng-disabled=\"disabled\">\n <mat-form-field>\n <input matInput [formControl]=\"name\" placeholder=\"name or ID\" />\n <button\n mat-icon-button\n matSuffix\n type=\"button\"\n (click)=\"reset()\"\n color=\"warn\"\n matTooltip=\"Reset filters\"\n [disabled]=\"disabled\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n\n <button\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"disabled\"\n matTooltip=\"Apply filters\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n</form>\n" }]
|
|
55
55
|
}], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.UsersQuery }, { type: i3.UsersService }]; }, propDecorators: { disabled: [{
|
|
@@ -122,13 +122,13 @@ export class UserListComponent {
|
|
|
122
122
|
return this._gravatarService.buildGravatarUrl(email, size);
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
-
UserListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
126
|
-
UserListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.
|
|
127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
125
|
+
UserListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UserListComponent, deps: [{ token: USERS_PAGINATOR }, { token: i1.UsersQuery }, { token: i2.AuthJwtAccountService }, { token: i3.UsersService }, { token: i4.DialogService }, { token: i5.GravatarService }, { token: i6.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
126
|
+
UserListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: UserListComponent, selector: "auth-jwt-user-list", ngImport: i0, template: "<div\r\n gdAreas=\"filters | progress | list | pager | editor\"\r\n gdRows=\"80px 64px 2fr 40px 1fr\"\r\n gdColumns=\"1fr\"\r\n gdGap=\"8px\"\r\n>\r\n <div>\r\n <!-- filters -->\r\n <div gdArea=\"filters\">\r\n <auth-jwt-user-filter></auth-jwt-user-filter>\r\n </div>\r\n\r\n <!-- progress -->\r\n <div *ngIf=\"paginator.isLoading$ | async\" gdArea=\"progress\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n\r\n <!-- list -->\r\n <div gdArea=\"list\" *ngIf=\"pagination$ | async as pagination\">\r\n <table>\r\n <thead>\r\n <td></td>\r\n <td></td>\r\n <td></td>\r\n <th>name</th>\r\n <th>first</th>\r\n <th>last</th>\r\n <th>email</th>\r\n <th>roles</th>\r\n <th>lock end</th>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let user of pagination.data\">\r\n <td class=\"command\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Edit {{ user.userName }}\"\r\n color=\"primary\"\r\n (click)=\"setActiveUser(user)\"\r\n >\r\n <mat-icon>mode_edit</mat-icon>\r\n </button>\r\n </td>\r\n <td class=\"command\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Delete {{ user.userName }}\"\r\n color=\"warn\"\r\n (click)=\"deleteUser(user)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n <img\r\n [src]=\"getGravatarUrl(user.email, 32)\"\r\n [alt]=\"user.userName\"\r\n />\r\n </td>\r\n <td>{{ user.userName }}</td>\r\n <td>{{ user.firstName }}</td>\r\n <td>{{ user.lastName }}</td>\r\n <td>\r\n <a [href]=\"'mailto:' + user.email\">{{ user.email }}</a>\r\n </td>\r\n <td>{{ user.roles?.join(\" \") }}</td>\r\n <td>{{ user.lockoutEnd }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- pagination -->\r\n <mat-paginator\r\n gdArea=\"pager\"\r\n gdAlignColumns=\"center\"\r\n gdAlignRows=\"start\"\r\n [length]=\"pagination.total\"\r\n [pageSize]=\"pageSize.value\"\r\n [pageSizeOptions]=\"[20, 50, 75, 100]\"\r\n [pageIndex]=\"pagination.currentPage - 1\"\r\n [showFirstLastButtons]=\"true\"\r\n (page)=\"pageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n\r\n <!-- editor -->\r\n <div gdArea=\"editor\" *ngIf=\"active$ | async as active\">\r\n <fieldset>\r\n <legend>{{ active.userName }}</legend>\r\n <auth-jwt-user-editor\r\n [user]=\"active\"\r\n (userChange)=\"saveActiveUser($event)\"\r\n (editorClose)=\"resetActiveUser()\"\r\n ></auth-jwt-user-editor>\r\n </fieldset>\r\n </div>\r\n</div>\r\n", styles: ["tr:nth-child(odd){background-color:#f8f8f8}th{padding:0 8px;text-align:left;color:silver;font-weight:400}td{padding:0 8px}td.command{width:24px}table{width:100%;border-collapse:collapse}fieldset{border:1px solid silver;border-radius:8px;padding:16px}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i13.UserFilterComponent, selector: "auth-jwt-user-filter", inputs: ["disabled"] }, { kind: "component", type: i14.UserEditorComponent, selector: "auth-jwt-user-editor", inputs: ["user"], outputs: ["userChange", "editorClose"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] });
|
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UserListComponent, decorators: [{
|
|
128
128
|
type: Component,
|
|
129
|
-
args: [{ selector: 'auth-jwt-user-list', template: "<div\n gdAreas=\"filters | progress | list | pager | editor\"\n gdRows=\"80px 64px 2fr 40px 1fr\"\n gdColumns=\"1fr\"\n gdGap=\"8px\"\n>\n <div>\n <!-- filters -->\n <div gdArea=\"filters\">\n <auth-jwt-user-filter></auth-jwt-user-filter>\n </div>\n\n <!-- progress -->\n <div *ngIf=\"paginator.isLoading$ | async\" gdArea=\"progress\">\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n\n <!-- list -->\n <div gdArea=\"list\" *ngIf=\"pagination$ | async as pagination\">\n <table>\n <thead>\n <td></td>\n <td></td>\n <td></td>\n <th>name</th>\n <th>first</th>\n <th>last</th>\n <th>email</th>\n <th>roles</th>\n <th>lock end</th>\n </thead>\n <tbody>\n <tr *ngFor=\"let user of pagination.data\">\n <td class=\"command\">\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Edit {{ user.userName }}\"\n color=\"primary\"\n (click)=\"setActiveUser(user)\"\n >\n <mat-icon>mode_edit</mat-icon>\n </button>\n </td>\n <td class=\"command\">\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Delete {{ user.userName }}\"\n color=\"warn\"\n (click)=\"deleteUser(user)\"\n >\n <mat-icon>remove_circle</mat-icon>\n </button>\n </td>\n <td>\n <img\n [src]=\"getGravatarUrl(user.email, 32)\"\n [alt]=\"user.userName\"\n />\n </td>\n <td>{{ user.userName }}</td>\n <td>{{ user.firstName }}</td>\n <td>{{ user.lastName }}</td>\n <td>\n <a [href]=\"'mailto:' + user.email\">{{ user.email }}</a>\n </td>\n <td>{{ user.roles
|
|
129
|
+
args: [{ selector: 'auth-jwt-user-list', template: "<div\r\n gdAreas=\"filters | progress | list | pager | editor\"\r\n gdRows=\"80px 64px 2fr 40px 1fr\"\r\n gdColumns=\"1fr\"\r\n gdGap=\"8px\"\r\n>\r\n <div>\r\n <!-- filters -->\r\n <div gdArea=\"filters\">\r\n <auth-jwt-user-filter></auth-jwt-user-filter>\r\n </div>\r\n\r\n <!-- progress -->\r\n <div *ngIf=\"paginator.isLoading$ | async\" gdArea=\"progress\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n\r\n <!-- list -->\r\n <div gdArea=\"list\" *ngIf=\"pagination$ | async as pagination\">\r\n <table>\r\n <thead>\r\n <td></td>\r\n <td></td>\r\n <td></td>\r\n <th>name</th>\r\n <th>first</th>\r\n <th>last</th>\r\n <th>email</th>\r\n <th>roles</th>\r\n <th>lock end</th>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let user of pagination.data\">\r\n <td class=\"command\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Edit {{ user.userName }}\"\r\n color=\"primary\"\r\n (click)=\"setActiveUser(user)\"\r\n >\r\n <mat-icon>mode_edit</mat-icon>\r\n </button>\r\n </td>\r\n <td class=\"command\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Delete {{ user.userName }}\"\r\n color=\"warn\"\r\n (click)=\"deleteUser(user)\"\r\n >\r\n <mat-icon>remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n <img\r\n [src]=\"getGravatarUrl(user.email, 32)\"\r\n [alt]=\"user.userName\"\r\n />\r\n </td>\r\n <td>{{ user.userName }}</td>\r\n <td>{{ user.firstName }}</td>\r\n <td>{{ user.lastName }}</td>\r\n <td>\r\n <a [href]=\"'mailto:' + user.email\">{{ user.email }}</a>\r\n </td>\r\n <td>{{ user.roles?.join(\" \") }}</td>\r\n <td>{{ user.lockoutEnd }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- pagination -->\r\n <mat-paginator\r\n gdArea=\"pager\"\r\n gdAlignColumns=\"center\"\r\n gdAlignRows=\"start\"\r\n [length]=\"pagination.total\"\r\n [pageSize]=\"pageSize.value\"\r\n [pageSizeOptions]=\"[20, 50, 75, 100]\"\r\n [pageIndex]=\"pagination.currentPage - 1\"\r\n [showFirstLastButtons]=\"true\"\r\n (page)=\"pageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n\r\n <!-- editor -->\r\n <div gdArea=\"editor\" *ngIf=\"active$ | async as active\">\r\n <fieldset>\r\n <legend>{{ active.userName }}</legend>\r\n <auth-jwt-user-editor\r\n [user]=\"active\"\r\n (userChange)=\"saveActiveUser($event)\"\r\n (editorClose)=\"resetActiveUser()\"\r\n ></auth-jwt-user-editor>\r\n </fieldset>\r\n </div>\r\n</div>\r\n", styles: ["tr:nth-child(odd){background-color:#f8f8f8}th{padding:0 8px;text-align:left;color:silver;font-weight:400}td{padding:0 8px}td.command{width:24px}table{width:100%;border-collapse:collapse}fieldset{border:1px solid silver;border-radius:8px;padding:16px}\n"] }]
|
|
130
130
|
}], ctorParameters: function () { return [{ type: i15.PaginatorPlugin, decorators: [{
|
|
131
131
|
type: Inject,
|
|
132
132
|
args: [USERS_PAGINATOR]
|
|
133
133
|
}] }, { type: i1.UsersQuery }, { type: i2.AuthJwtAccountService }, { type: i3.UsersService }, { type: i4.DialogService }, { type: i5.GravatarService }, { type: i6.UntypedFormBuilder }]; } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFVdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQVczRCxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLFlBRVMsU0FBc0MsRUFDN0MsU0FBcUIsRUFDYixlQUFzQyxFQUN0QyxhQUEyQixFQUMzQixjQUE2QixFQUM3QixnQkFBaUMsRUFDekMsV0FBK0I7UUFOeEIsY0FBUyxHQUFULFNBQVMsQ0FBNkI7UUFFckMsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFHekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFB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QWlCO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFhLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDNUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7OzhHQXBJVSxpQkFBaUIsa0JBU2xCLGVBQWU7a0dBVGQsaUJBQWlCLDBEQ3pCOUIsbzdGQW1HQTsyRkQxRWEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLG9CQUFvQjs7MEJBYTNCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGFnaW5hdGlvblJlc3BvbnNlLCBQYWdpbmF0b3JQbHVnaW4gfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuXG5pbXBvcnQgeyBHcmF2YXRhclNlcnZpY2UsIFVzZXIgfSBmcm9tICdAbXlybWlkb24vYXV0aC1qd3QtbG9naW4nO1xuaW1wb3J0IHsgRGF0YVBhZ2UgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xuXG5pbXBvcnQge1xuICBBdXRoSnd0QWNjb3VudFNlcnZpY2UsXG4gIFVzZXJGaWx0ZXIsXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGgtand0LWFjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBVU0VSU19QQUdJTkFUT1IgfSBmcm9tICcuLi9zdGF0ZS91c2Vycy5wYWdpbmF0b3InO1xuaW1wb3J0IHsgVXNlcnNTdGF0ZSB9IGZyb20gJy4uL3N0YXRlL3VzZXJzLnN0b3JlJztcbmltcG9ydCB7IFVzZXJzUXVlcnkgfSBmcm9tICcuLi9zdGF0ZS91c2Vycy5xdWVyeSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vc3RhdGUvdXNlcnMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1dGgtand0LXVzZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91c2VyLWxpc3QuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3JlZnJlc2gkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcbiAgcHJpdmF0ZSBfZmlsdGVyJDogT2JzZXJ2YWJsZTxVc2VyRmlsdGVyPjtcblxuICBwdWJsaWMgcGFnaW5hdGlvbiQ6IE9ic2VydmFibGU8UGFnaW5hdGlvblJlc3BvbnNlPFVzZXI+PjtcbiAgcHVibGljIHBhZ2VTaXplOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBhY3RpdmUkOiBPYnNlcnZhYmxlPFVzZXIgfCB1bmRlZmluZWQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVVNFUlNfUEFHSU5BVE9SKVxuICAgIHB1YmxpYyBwYWdpbmF0b3I6IFBhZ2luYXRvclBsdWdpbjxVc2Vyc1N0YXRlPixcbiAgICB1c2VyUXVlcnk6IFVzZXJzUXVlcnksXG4gICAgcHJpdmF0ZSBfYWNjb3VudFNlcnZpY2U6IEF1dGhKd3RBY2NvdW50U2VydmljZSxcbiAgICBwcml2YXRlIF91c2Vyc1NlcnZpY2U6IFVzZXJzU2VydmljZSxcbiAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2dyYXZhdGFyU2VydmljZTogR3JhdmF0YXJTZXJ2aWNlLFxuICAgIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2woMjApO1xuICAgIHRoaXMuX3JlZnJlc2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcbiAgICB0aGlzLl9maWx0ZXIkID0gdXNlclF1ZXJ5LnNlbGVjdEZpbHRlcigpO1xuICAgIC8vIGh0dHBzOi8vbmV0YmFzYWwuY29tL21hbmFnZS15b3VyLWVudGl0aWVzLXdpdGgtYWtpdGEtbGlrZS1hLWJvc3MtNzY4NzMyZjhkNGQxXG4gICAgdGhpcy5hY3RpdmUkID0gdXNlclF1ZXJ5LnNlbGVjdEFjdGl2ZTxVc2VyPigpO1xuXG4gICAgdGhpcy5wYWdpbmF0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUNoYW5nZXMsXG4gICAgICB0aGlzLnBhZ2VTaXplLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAvLyB3ZSBhcmUgcmVxdWlyZWQgdG8gZW1pdCBhdCBsZWFzdCB0aGUgaW5pdGlhbCB2YWx1ZVxuICAgICAgICAvLyBhcyBjb21iaW5lTGF0ZXN0IGVtaXRzIG9ubHkgaWYgQUxMIG9ic2VydmFibGVzIGhhdmUgZW1pdHRlZFxuICAgICAgICBzdGFydFdpdGgoMjApLFxuICAgICAgICAvLyBjbGVhciB0aGUgY2FjaGUgd2hlbiBwYWdlIHNpemUgY2hhbmdlc1xuICAgICAgICB0YXAoKF8pID0+IHtcbiAgICAgICAgICB0aGlzLnBhZ2luYXRvci5jbGVhckNhY2hlKCk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgdGhpcy5fZmlsdGVyJC5waXBlKFxuICAgICAgICAvLyBjbGVhciB0aGUgY2FjaGUgd2hlbiBmaWx0ZXJzIGNoYW5nZWRcbiAgICAgICAgdGFwKChfKSA9PiB7XG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3IuY2xlYXJDYWNoZSgpO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIHRoaXMuX3JlZnJlc2gkLnBpcGUoXG4gICAgICAgIC8vIGNsZWFyIHRoZSBjYWNoZSB3aGVuIGZvcmNpbmcgcmVmcmVzaFxuICAgICAgICB0YXAoKF8pID0+IHtcbiAgICAgICAgICB0aGlzLnBhZ2luYXRvci5jbGVhckNhY2hlKCk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIF0pLnBpcGUoXG4gICAgICAvLyBmb3IgZWFjaCBlbWl0dGVkIHZhbHVlLCBjb21iaW5lIGludG8gYSBmaWx0ZXIgYW5kIHVzZSBpdFxuICAgICAgLy8gdG8gcmVxdWVzdCB0aGUgcGFnZSBmcm9tIHNlcnZlclxuICAgICAgc3dpdGNoTWFwKChbcGFnZU51bWJlciwgcGFnZVNpemUsIGZpbHRlciwgcmVmcmVzaF0pID0+IHtcbiAgICAgICAgLy8gY29uc3QgZmlsdGVyID0geyAuLi50aGlzLl9kb2NzUXVlcnkuZ2V0VmFsdWUoKS5maWx0ZXIgfTtcbiAgICAgICAgY29uc3QgZiA9IHsgLi4uZmlsdGVyIH07XG4gICAgICAgIGYucGFnZU51bWJlciA9IHBhZ2VOdW1iZXI7XG4gICAgICAgIGYucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZ2V0UmVxdWVzdChmKTtcbiAgICAgICAgLy8gdXBkYXRlIHNhdmVkIGZpbHRlcnNcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IubWV0YWRhdGEuc2V0KCdmaWx0ZXInLCBmKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdG9yLmdldFBhZ2UocmVxdWVzdCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRvci5kZXN0cm95KCk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlcXVlc3QoXG4gICAgZmlsdGVyOiBVc2VyRmlsdGVyXG4gICk6ICgpID0+IE9ic2VydmFibGU8UGFnaW5hdGlvblJlc3BvbnNlPFVzZXI+PiB7XG4gICAgcmV0dXJuICgpID0+XG4gICAgICB0aGlzLl9hY2NvdW50U2VydmljZS5nZXRVc2VycyhmaWx0ZXIpLnBpcGUoXG4gICAgICAgIC8vIGFkYXB0IHNlcnZlciByZXN1bHRzIHRvIHRoZSBwYWdpbmF0b3IgcGx1Z2luXG4gICAgICAgIG1hcCgocDogRGF0YVBhZ2U8VXNlcj4pID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3VycmVudFBhZ2U6IHAucGFnZU51bWJlcixcbiAgICAgICAgICAgIHBlclBhZ2U6IHAucGFnZVNpemUsXG4gICAgICAgICAgICBsYXN0UGFnZTogcC5wYWdlQ291bnQsXG4gICAgICAgICAgICBkYXRhOiBwLml0ZW1zLFxuICAgICAgICAgICAgdG90YWw6IHAudG90YWwsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZShldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XG4gICAgLy8gaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2NvbXBvbmVudHMvcGFnaW5hdG9yL2FwaVxuICAgIHRoaXMucGFnaW5hdG9yLnNldFBhZ2UoZXZlbnQucGFnZUluZGV4ICsgMSk7XG4gICAgaWYgKGV2ZW50LnBhZ2VTaXplICE9PSB0aGlzLnBhZ2VTaXplLnZhbHVlKSB7XG4gICAgICB0aGlzLnBhZ2VTaXplLnNldFZhbHVlKGV2ZW50LnBhZ2VTaXplKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRvci5jbGVhckNhY2hlKCk7XG4gICAgdGhpcy5fcmVmcmVzaCQubmV4dCh0aGlzLl9yZWZyZXNoJC52YWx1ZSArIDEpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVVzZXIodXNlcjogVXNlcik6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2VcbiAgICAgIC5jb25maXJtKCdDb25maXJtJywgYERlbGV0ZSBVc2VyICR7dXNlci51c2VyTmFtZX0/YClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCh5ZXMpID0+IHtcbiAgICAgICAgaWYgKCF5ZXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXNlcnNTZXJ2aWNlLmRlbGV0ZVVzZXIodXNlci51c2VyTmFtZSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZlVXNlcih1c2VyOiBVc2VyIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuX3VzZXJzU2VydmljZS5zZXRBY3RpdmUodXNlcj8udXNlck5hbWUgfHwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRBY3RpdmVVc2VyKCk6IHZvaWQge1xuICAgIHRoaXMuX3VzZXJzU2VydmljZS5zZXRBY3RpdmUobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFjdGl2ZVVzZXIodXNlcjogVXNlcik6IHZvaWQge1xuICAgIHRoaXMuX3VzZXJzU2VydmljZS51cGRhdGVBY3RpdmUodXNlcikuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblVzZXJFZGl0b3JDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEFjdGl2ZVVzZXIobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0R3JhdmF0YXJVcmwoZW1haWw6IHN0cmluZywgc2l6ZSA9IDgwKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2dyYXZhdGFyU2VydmljZS5idWlsZEdyYXZhdGFyVXJsKGVtYWlsLCBzaXplKTtcbiAgfVxufVxuIiwiPGRpdlxuICBnZEFyZWFzPVwiZmlsdGVycyB8IHByb2dyZXNzIHwgbGlzdCB8IHBhZ2VyIHwgZWRpdG9yXCJcbiAgZ2RSb3dzPVwiODBweCA2NHB4IDJmciA0MHB4IDFmclwiXG4gIGdkQ29sdW1ucz1cIjFmclwiXG4gIGdkR2FwPVwiOHB4XCJcbj5cbiAgPGRpdj5cbiAgICA8IS0tIGZpbHRlcnMgLS0+XG4gICAgPGRpdiBnZEFyZWE9XCJmaWx0ZXJzXCI+XG4gICAgICA8YXV0aC1qd3QtdXNlci1maWx0ZXI+PC9hdXRoLWp3dC11c2VyLWZpbHRlcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gcHJvZ3Jlc3MgLS0+XG4gICAgPGRpdiAqbmdJZj1cInBhZ2luYXRvci5pc0xvYWRpbmckIHwgYXN5bmNcIiBnZEFyZWE9XCJwcm9ncmVzc1wiPlxuICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIGxpc3QgLS0+XG4gICAgPGRpdiBnZEFyZWE9XCJsaXN0XCIgKm5nSWY9XCJwYWdpbmF0aW9uJCB8IGFzeW5jIGFzIHBhZ2luYXRpb25cIj5cbiAgICAgIDx0YWJsZT5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgIDx0aD5uYW1lPC90aD5cbiAgICAgICAgICA8dGg+Zmlyc3Q8L3RoPlxuICAgICAgICAgIDx0aD5sYXN0PC90aD5cbiAgICAgICAgICA8dGg+ZW1haWw8L3RoPlxuICAgICAgICAgIDx0aD5yb2xlczwvdGg+XG4gICAgICAgICAgPHRoPmxvY2sgZW5kPC90aD5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgdXNlciBvZiBwYWdpbmF0aW9uLmRhdGFcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNvbW1hbmRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJFZGl0IHt7IHVzZXIudXNlck5hbWUgfX1cIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZVVzZXIodXNlcilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vZGVfZWRpdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNvbW1hbmRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEZWxldGUge3sgdXNlci51c2VyTmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlVXNlcih1c2VyKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlX2NpcmNsZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0R3JhdmF0YXJVcmwodXNlci5lbWFpbCwgMzIpXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cInVzZXIudXNlck5hbWVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZD57eyB1c2VyLnVzZXJOYW1lIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZD57eyB1c2VyLmZpcnN0TmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3sgdXNlci5sYXN0TmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cIidtYWlsdG86JyArIHVzZXIuZW1haWxcIj57eyB1c2VyLmVtYWlsIH19PC9hPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZD57eyB1c2VyLnJvbGVzLmpvaW4oXCIgXCIpIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZD57eyB1c2VyLmxvY2tvdXRFbmQgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgICAgPCEtLSBwYWdpbmF0aW9uIC0tPlxuICAgICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgICAgZ2RBcmVhPVwicGFnZXJcIlxuICAgICAgICBnZEFsaWduQ29sdW1ucz1cImNlbnRlclwiXG4gICAgICAgIGdkQWxpZ25Sb3dzPVwic3RhcnRcIlxuICAgICAgICBbbGVuZ3RoXT1cInBhZ2luYXRpb24udG90YWxcIlxuICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemUudmFsdWVcIlxuICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cIlsyMCwgNTAsIDc1LCAxMDBdXCJcbiAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdpbmF0aW9uLmN1cnJlbnRQYWdlIC0gMVwiXG4gICAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgKHBhZ2UpPVwicGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L21hdC1wYWdpbmF0b3I+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gZWRpdG9yIC0tPlxuICA8ZGl2IGdkQXJlYT1cImVkaXRvclwiICpuZ0lmPVwiYWN0aXZlJCB8IGFzeW5jIGFzIGFjdGl2ZVwiPlxuICAgIDxmaWVsZHNldD5cbiAgICAgIDxsZWdlbmQ+e3sgYWN0aXZlLnVzZXJOYW1lIH19PC9sZWdlbmQ+XG4gICAgICA8YXV0aC1qd3QtdXNlci1lZGl0b3JcbiAgICAgICAgW3VzZXJdPVwiYWN0aXZlXCJcbiAgICAgICAgKHVzZXJDaGFuZ2UpPVwic2F2ZUFjdGl2ZVVzZXIoJGV2ZW50KVwiXG4gICAgICAgIChlZGl0b3JDbG9zZSk9XCJyZXNldEFjdGl2ZVVzZXIoKVwiXG4gICAgICA+PC9hdXRoLWp3dC11c2VyLWVkaXRvcj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFVdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQVczRCxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLFlBRVMsU0FBc0MsRUFDN0MsU0FBcUIsRUFDYixlQUFzQyxFQUN0QyxhQUEyQixFQUMzQixjQUE2QixFQUM3QixnQkFBaUMsRUFDekMsV0FBK0I7UUFOeEIsY0FBUyxHQUFULFNBQVMsQ0FBNkI7UUFFckMsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFHekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFB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QWlCO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFhLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDNUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7OzhHQXBJVSxpQkFBaUIsa0JBU2xCLGVBQWU7a0dBVGQsaUJBQWlCLDBEQ3pCOUIsMm5HQW1HQTsyRkQxRWEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLG9CQUFvQjs7MEJBYTNCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGFnaW5hdGlvblJlc3BvbnNlLCBQYWdpbmF0b3JQbHVnaW4gfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuXG5pbXBvcnQgeyBHcmF2YXRhclNlcnZpY2UsIFVzZXIgfSBmcm9tICdAbXlybWlkb24vYXV0aC1qd3QtbG9naW4nO1xuaW1wb3J0IHsgRGF0YVBhZ2UgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xuXG5pbXBvcnQge1xuICBBdXRoSnd0QWNjb3VudFNlcnZpY2UsXG4gIFVzZXJGaWx0ZXIsXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGgtand0LWFjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBVU0VSU19QQUdJTkFUT1IgfSBmcm9tICcuLi9zdGF0ZS91c2Vycy5wYWdpbmF0b3InO1xuaW1wb3J0IHsgVXNlcnNTdGF0ZSB9IGZyb20gJy4uL3N0YXRlL3VzZXJzLnN0b3JlJztcbmltcG9ydCB7IFVzZXJzUXVlcnkgfSBmcm9tICcuLi9zdGF0ZS91c2Vycy5xdWVyeSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vc3RhdGUvdXNlcnMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1dGgtand0LXVzZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91c2VyLWxpc3QuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3JlZnJlc2gkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcbiAgcHJpdmF0ZSBfZmlsdGVyJDogT2JzZXJ2YWJsZTxVc2VyRmlsdGVyPjtcblxuICBwdWJsaWMgcGFnaW5hdGlvbiQ6IE9ic2VydmFibGU8UGFnaW5hdGlvblJlc3BvbnNlPFVzZXI+PjtcbiAgcHVibGljIHBhZ2VTaXplOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBhY3RpdmUkOiBPYnNlcnZhYmxlPFVzZXIgfCB1bmRlZmluZWQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVVNFUlNfUEFHSU5BVE9SKVxuICAgIHB1YmxpYyBwYWdpbmF0b3I6IFBhZ2luYXRvclBsdWdpbjxVc2Vyc1N0YXRlPixcbiAgICB1c2VyUXVlcnk6IFVzZXJzUXVlcnksXG4gICAgcHJpdmF0ZSBfYWNjb3VudFNlcnZpY2U6IEF1dGhKd3RBY2NvdW50U2VydmljZSxcbiAgICBwcml2YXRlIF91c2Vyc1NlcnZpY2U6IFVzZXJzU2VydmljZSxcbiAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2dyYXZhdGFyU2VydmljZTogR3JhdmF0YXJTZXJ2aWNlLFxuICAgIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2woMjApO1xuICAgIHRoaXMuX3JlZnJlc2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcbiAgICB0aGlzLl9maWx0ZXIkID0gdXNlclF1ZXJ5LnNlbGVjdEZpbHRlcigpO1xuICAgIC8vIGh0dHBzOi8vbmV0YmFzYWwuY29tL21hbmFnZS15b3VyLWVudGl0aWVzLXdpdGgtYWtpdGEtbGlrZS1hLWJvc3MtNzY4NzMyZjhkNGQxXG4gICAgdGhpcy5hY3RpdmUkID0gdXNlclF1ZXJ5LnNlbGVjdEFjdGl2ZTxVc2VyPigpO1xuXG4gICAgdGhpcy5wYWdpbmF0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUNoYW5nZXMsXG4gICAgICB0aGlzLnBhZ2VTaXplLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAvLyB3ZSBhcmUgcmVxdWlyZWQgdG8gZW1pdCBhdCBsZWFzdCB0aGUgaW5pdGlhbCB2YWx1ZVxuICAgICAgICAvLyBhcyBjb21iaW5lTGF0ZXN0IGVtaXRzIG9ubHkgaWYgQUxMIG9ic2VydmFibGVzIGhhdmUgZW1pdHRlZFxuICAgICAgICBzdGFydFdpdGgoMjApLFxuICAgICAgICAvLyBjbGVhciB0aGUgY2FjaGUgd2hlbiBwYWdlIHNpemUgY2hhbmdlc1xuICAgICAgICB0YXAoKF8pID0+IHtcbiAgICAgICAgICB0aGlzLnBhZ2luYXRvci5jbGVhckNhY2hlKCk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgdGhpcy5fZmlsdGVyJC5waXBlKFxuICAgICAgICAvLyBjbGVhciB0aGUgY2FjaGUgd2hlbiBmaWx0ZXJzIGNoYW5nZWRcbiAgICAgICAgdGFwKChfKSA9PiB7XG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3IuY2xlYXJDYWNoZSgpO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIHRoaXMuX3JlZnJlc2gkLnBpcGUoXG4gICAgICAgIC8vIGNsZWFyIHRoZSBjYWNoZSB3aGVuIGZvcmNpbmcgcmVmcmVzaFxuICAgICAgICB0YXAoKF8pID0+IHtcbiAgICAgICAgICB0aGlzLnBhZ2luYXRvci5jbGVhckNhY2hlKCk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIF0pLnBpcGUoXG4gICAgICAvLyBmb3IgZWFjaCBlbWl0dGVkIHZhbHVlLCBjb21iaW5lIGludG8gYSBmaWx0ZXIgYW5kIHVzZSBpdFxuICAgICAgLy8gdG8gcmVxdWVzdCB0aGUgcGFnZSBmcm9tIHNlcnZlclxuICAgICAgc3dpdGNoTWFwKChbcGFnZU51bWJlciwgcGFnZVNpemUsIGZpbHRlciwgcmVmcmVzaF0pID0+IHtcbiAgICAgICAgLy8gY29uc3QgZmlsdGVyID0geyAuLi50aGlzLl9kb2NzUXVlcnkuZ2V0VmFsdWUoKS5maWx0ZXIgfTtcbiAgICAgICAgY29uc3QgZiA9IHsgLi4uZmlsdGVyIH07XG4gICAgICAgIGYucGFnZU51bWJlciA9IHBhZ2VOdW1iZXI7XG4gICAgICAgIGYucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZ2V0UmVxdWVzdChmKTtcbiAgICAgICAgLy8gdXBkYXRlIHNhdmVkIGZpbHRlcnNcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IubWV0YWRhdGEuc2V0KCdmaWx0ZXInLCBmKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdG9yLmdldFBhZ2UocmVxdWVzdCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRvci5kZXN0cm95KCk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlcXVlc3QoXG4gICAgZmlsdGVyOiBVc2VyRmlsdGVyXG4gICk6ICgpID0+IE9ic2VydmFibGU8UGFnaW5hdGlvblJlc3BvbnNlPFVzZXI+PiB7XG4gICAgcmV0dXJuICgpID0+XG4gICAgICB0aGlzLl9hY2NvdW50U2VydmljZS5nZXRVc2VycyhmaWx0ZXIpLnBpcGUoXG4gICAgICAgIC8vIGFkYXB0IHNlcnZlciByZXN1bHRzIHRvIHRoZSBwYWdpbmF0b3IgcGx1Z2luXG4gICAgICAgIG1hcCgocDogRGF0YVBhZ2U8VXNlcj4pID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3VycmVudFBhZ2U6IHAucGFnZU51bWJlcixcbiAgICAgICAgICAgIHBlclBhZ2U6IHAucGFnZVNpemUsXG4gICAgICAgICAgICBsYXN0UGFnZTogcC5wYWdlQ291bnQsXG4gICAgICAgICAgICBkYXRhOiBwLml0ZW1zLFxuICAgICAgICAgICAgdG90YWw6IHAudG90YWwsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZShldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XG4gICAgLy8gaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2NvbXBvbmVudHMvcGFnaW5hdG9yL2FwaVxuICAgIHRoaXMucGFnaW5hdG9yLnNldFBhZ2UoZXZlbnQucGFnZUluZGV4ICsgMSk7XG4gICAgaWYgKGV2ZW50LnBhZ2VTaXplICE9PSB0aGlzLnBhZ2VTaXplLnZhbHVlKSB7XG4gICAgICB0aGlzLnBhZ2VTaXplLnNldFZhbHVlKGV2ZW50LnBhZ2VTaXplKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRvci5jbGVhckNhY2hlKCk7XG4gICAgdGhpcy5fcmVmcmVzaCQubmV4dCh0aGlzLl9yZWZyZXNoJC52YWx1ZSArIDEpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVVzZXIodXNlcjogVXNlcik6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2VcbiAgICAgIC5jb25maXJtKCdDb25maXJtJywgYERlbGV0ZSBVc2VyICR7dXNlci51c2VyTmFtZX0/YClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCh5ZXMpID0+IHtcbiAgICAgICAgaWYgKCF5ZXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXNlcnNTZXJ2aWNlLmRlbGV0ZVVzZXIodXNlci51c2VyTmFtZSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZlVXNlcih1c2VyOiBVc2VyIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuX3VzZXJzU2VydmljZS5zZXRBY3RpdmUodXNlcj8udXNlck5hbWUgfHwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRBY3RpdmVVc2VyKCk6IHZvaWQge1xuICAgIHRoaXMuX3VzZXJzU2VydmljZS5zZXRBY3RpdmUobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFjdGl2ZVVzZXIodXNlcjogVXNlcik6IHZvaWQge1xuICAgIHRoaXMuX3VzZXJzU2VydmljZS51cGRhdGVBY3RpdmUodXNlcikuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblVzZXJFZGl0b3JDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEFjdGl2ZVVzZXIobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0R3JhdmF0YXJVcmwoZW1haWw6IHN0cmluZywgc2l6ZSA9IDgwKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2dyYXZhdGFyU2VydmljZS5idWlsZEdyYXZhdGFyVXJsKGVtYWlsLCBzaXplKTtcbiAgfVxufVxuIiwiPGRpdlxyXG4gIGdkQXJlYXM9XCJmaWx0ZXJzIHwgcHJvZ3Jlc3MgfCBsaXN0IHwgcGFnZXIgfCBlZGl0b3JcIlxyXG4gIGdkUm93cz1cIjgwcHggNjRweCAyZnIgNDBweCAxZnJcIlxyXG4gIGdkQ29sdW1ucz1cIjFmclwiXHJcbiAgZ2RHYXA9XCI4cHhcIlxyXG4+XHJcbiAgPGRpdj5cclxuICAgIDwhLS0gZmlsdGVycyAtLT5cclxuICAgIDxkaXYgZ2RBcmVhPVwiZmlsdGVyc1wiPlxyXG4gICAgICA8YXV0aC1qd3QtdXNlci1maWx0ZXI+PC9hdXRoLWp3dC11c2VyLWZpbHRlcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gcHJvZ3Jlc3MgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwicGFnaW5hdG9yLmlzTG9hZGluZyQgfCBhc3luY1wiIGdkQXJlYT1cInByb2dyZXNzXCI+XHJcbiAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBsaXN0IC0tPlxyXG4gICAgPGRpdiBnZEFyZWE9XCJsaXN0XCIgKm5nSWY9XCJwYWdpbmF0aW9uJCB8IGFzeW5jIGFzIHBhZ2luYXRpb25cIj5cclxuICAgICAgPHRhYmxlPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0ZD48L3RkPlxyXG4gICAgICAgICAgPHRkPjwvdGQ+XHJcbiAgICAgICAgICA8dGQ+PC90ZD5cclxuICAgICAgICAgIDx0aD5uYW1lPC90aD5cclxuICAgICAgICAgIDx0aD5maXJzdDwvdGg+XHJcbiAgICAgICAgICA8dGg+bGFzdDwvdGg+XHJcbiAgICAgICAgICA8dGg+ZW1haWw8L3RoPlxyXG4gICAgICAgICAgPHRoPnJvbGVzPC90aD5cclxuICAgICAgICAgIDx0aD5sb2NrIGVuZDwvdGg+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHVzZXIgb2YgcGFnaW5hdGlvbi5kYXRhXCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNvbW1hbmRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkVkaXQge3sgdXNlci51c2VyTmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZVVzZXIodXNlcilcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb2RlX2VkaXQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJjb21tYW5kXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEZWxldGUge3sgdXNlci51c2VyTmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVVzZXIodXNlcilcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5yZW1vdmVfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0R3JhdmF0YXJVcmwodXNlci5lbWFpbCwgMzIpXCJcclxuICAgICAgICAgICAgICAgIFthbHRdPVwidXNlci51c2VyTmFtZVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7IHVzZXIudXNlck5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3sgdXNlci5maXJzdE5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3sgdXNlci5sYXN0TmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8YSBbaHJlZl09XCInbWFpbHRvOicgKyB1c2VyLmVtYWlsXCI+e3sgdXNlci5lbWFpbCB9fTwvYT5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7IHVzZXIucm9sZXM/LmpvaW4oXCIgXCIpIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7IHVzZXIubG9ja291dEVuZCB9fTwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwhLS0gcGFnaW5hdGlvbiAtLT5cclxuICAgICAgPG1hdC1wYWdpbmF0b3JcclxuICAgICAgICBnZEFyZWE9XCJwYWdlclwiXHJcbiAgICAgICAgZ2RBbGlnbkNvbHVtbnM9XCJjZW50ZXJcIlxyXG4gICAgICAgIGdkQWxpZ25Sb3dzPVwic3RhcnRcIlxyXG4gICAgICAgIFtsZW5ndGhdPVwicGFnaW5hdGlvbi50b3RhbFwiXHJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplLnZhbHVlXCJcclxuICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cIlsyMCwgNTAsIDc1LCAxMDBdXCJcclxuICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2luYXRpb24uY3VycmVudFBhZ2UgLSAxXCJcclxuICAgICAgICBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgKHBhZ2UpPVwicGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgPjwvbWF0LXBhZ2luYXRvcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIGVkaXRvciAtLT5cclxuICA8ZGl2IGdkQXJlYT1cImVkaXRvclwiICpuZ0lmPVwiYWN0aXZlJCB8IGFzeW5jIGFzIGFjdGl2ZVwiPlxyXG4gICAgPGZpZWxkc2V0PlxyXG4gICAgICA8bGVnZW5kPnt7IGFjdGl2ZS51c2VyTmFtZSB9fTwvbGVnZW5kPlxyXG4gICAgICA8YXV0aC1qd3QtdXNlci1lZGl0b3JcclxuICAgICAgICBbdXNlcl09XCJhY3RpdmVcIlxyXG4gICAgICAgICh1c2VyQ2hhbmdlKT1cInNhdmVBY3RpdmVVc2VyKCRldmVudClcIlxyXG4gICAgICAgIChlZGl0b3JDbG9zZSk9XCJyZXNldEFjdGl2ZVVzZXIoKVwiXHJcbiAgICAgID48L2F1dGgtand0LXVzZXItZWRpdG9yPlxyXG4gICAgPC9maWVsZHNldD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -176,9 +176,9 @@ export class AuthJwtAccountService {
|
|
|
176
176
|
.pipe(catchError(this._error.handleError));
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
|
-
AuthJwtAccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
180
|
-
AuthJwtAccountService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.
|
|
181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
179
|
+
AuthJwtAccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: AuthJwtAccountService, deps: [{ token: i1.HttpClient }, { token: i2.ErrorService }, { token: i2.EnvService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
180
|
+
AuthJwtAccountService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: AuthJwtAccountService, providedIn: 'root' });
|
|
181
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: AuthJwtAccountService, decorators: [{
|
|
182
182
|
type: Injectable,
|
|
183
183
|
args: [{
|
|
184
184
|
providedIn: 'root',
|
|
@@ -26,9 +26,9 @@ export class DialogService {
|
|
|
26
26
|
return dialogRef.afterClosed();
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
DialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
30
|
-
DialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
29
|
+
DialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DialogService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
30
|
+
DialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DialogService, providedIn: 'root' });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DialogService, decorators: [{
|
|
32
32
|
type: Injectable,
|
|
33
33
|
args: [{
|
|
34
34
|
providedIn: 'root'
|