@annalib/anna-cognito-lib 2.3.10 → 2.3.12

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.
Files changed (69) hide show
  1. package/README.md +66 -66
  2. package/{esm2022 → esm2020}/annalib-anna-cognito-lib.mjs +4 -4
  3. package/esm2020/lib/components/anna-login/anna-login.component.mjs +67 -0
  4. package/esm2020/lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component.mjs +22 -0
  5. package/esm2020/lib/components/forgot-password/forgot-password.component.mjs +133 -0
  6. package/esm2020/lib/components/password-matching/password-matching.component.mjs +92 -0
  7. package/esm2020/lib/components/powered-by-logo-template/powered-by-logo-template.component.mjs +14 -0
  8. package/esm2020/lib/components/set-new-password/set-new-password.component.mjs +71 -0
  9. package/{esm2022 → esm2020}/lib/components/sso-login/sso-login.component.mjs +38 -38
  10. package/esm2020/lib/components/surewaves-year-logo/surewaves-year-logo.component.mjs +15 -0
  11. package/esm2020/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.mjs +90 -0
  12. package/esm2020/lib/components/version-and-term-policy/version-and-term-policy.component.mjs +19 -0
  13. package/esm2020/lib/config/acl-service.token.mjs +4 -0
  14. package/esm2020/lib/config/auth-service.token.mjs +4 -0
  15. package/{esm2022 → esm2020}/lib/config/config-service.token.mjs +4 -4
  16. package/esm2020/lib/config/sso-login-service.token.mjs +4 -0
  17. package/esm2020/lib/constants/loginConstant.mjs +55 -0
  18. package/{esm2022 → esm2020}/lib/directives/spinner-button/index.mjs +2 -2
  19. package/{esm2022 → esm2020}/lib/directives/spinner-button/spinner-button.directive.mjs +43 -43
  20. package/{esm2022 → esm2020}/lib/models/auth.model.mjs +24 -24
  21. package/{esm2022 → esm2020}/lib/services/acl.service.mjs +27 -27
  22. package/{esm2022 → esm2020}/lib/services/auth.service.mjs +312 -312
  23. package/{esm2022 → esm2020}/lib/services/config.service.mjs +20 -20
  24. package/{esm2022 → esm2020}/lib/services/sso-login.service.mjs +20 -20
  25. package/{esm2022 → esm2020}/public-api.mjs +28 -28
  26. package/fesm2015/annalib-anna-cognito-lib.mjs +1011 -0
  27. package/fesm2015/annalib-anna-cognito-lib.mjs.map +1 -0
  28. package/fesm2020/annalib-anna-cognito-lib.mjs +965 -0
  29. package/fesm2020/annalib-anna-cognito-lib.mjs.map +1 -0
  30. package/index.d.ts +5 -5
  31. package/lib/components/anna-login/anna-login.component.d.ts +20 -20
  32. package/lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component.d.ts +10 -10
  33. package/lib/components/forgot-password/forgot-password.component.d.ts +42 -42
  34. package/lib/components/password-matching/password-matching.component.d.ts +22 -22
  35. package/lib/components/powered-by-logo-template/powered-by-logo-template.component.d.ts +8 -8
  36. package/lib/components/set-new-password/set-new-password.component.d.ts +28 -28
  37. package/lib/components/sso-login/sso-login.component.d.ts +14 -14
  38. package/lib/components/surewaves-year-logo/surewaves-year-logo.component.d.ts +9 -9
  39. package/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.d.ts +32 -32
  40. package/lib/components/version-and-term-policy/version-and-term-policy.component.d.ts +10 -10
  41. package/lib/config/acl-service.token.d.ts +38 -38
  42. package/lib/config/auth-service.token.d.ts +23 -23
  43. package/lib/config/config-service.token.d.ts +13 -13
  44. package/lib/config/sso-login-service.token.d.ts +10 -10
  45. package/lib/constants/loginConstant.d.ts +49 -49
  46. package/lib/directives/spinner-button/index.d.ts +1 -1
  47. package/lib/directives/spinner-button/spinner-button.directive.d.ts +15 -15
  48. package/lib/models/auth.model.d.ts +21 -21
  49. package/lib/services/acl.service.d.ts +11 -11
  50. package/lib/services/auth.service.d.ts +47 -47
  51. package/lib/services/config.service.d.ts +8 -8
  52. package/lib/services/sso-login.service.d.ts +8 -8
  53. package/package.json +11 -5
  54. package/public-api.d.ts +20 -20
  55. package/esm2022/lib/components/anna-login/anna-login.component.mjs +0 -67
  56. package/esm2022/lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component.mjs +0 -22
  57. package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +0 -133
  58. package/esm2022/lib/components/password-matching/password-matching.component.mjs +0 -92
  59. package/esm2022/lib/components/powered-by-logo-template/powered-by-logo-template.component.mjs +0 -14
  60. package/esm2022/lib/components/set-new-password/set-new-password.component.mjs +0 -71
  61. package/esm2022/lib/components/surewaves-year-logo/surewaves-year-logo.component.mjs +0 -15
  62. package/esm2022/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.mjs +0 -90
  63. package/esm2022/lib/components/version-and-term-policy/version-and-term-policy.component.mjs +0 -19
  64. package/esm2022/lib/config/acl-service.token.mjs +0 -4
  65. package/esm2022/lib/config/auth-service.token.mjs +0 -4
  66. package/esm2022/lib/config/sso-login-service.token.mjs +0 -4
  67. package/esm2022/lib/constants/loginConstant.mjs +0 -55
  68. package/fesm2022/annalib-anna-cognito-lib.mjs +0 -965
  69. package/fesm2022/annalib-anna-cognito-lib.mjs.map +0 -1
package/README.md CHANGED
@@ -1,66 +1,66 @@
1
- # AnnaCognitoLib
2
-
3
- ## How to use the library in the consuming project ?
4
-
5
- 1. Install the package from npm `npm install @annalib/anna-cognito-lib` (if not working use with --force flag).
6
- 2. After installing the Library, you need to install it's peer dependancies. You can find the peer-dependecies in
7
- package.json file of library. Install all the peer depedencies with respective version number mentioned. this is
8
- important step otherwise library will throw error. ex: `npm install ngx-toastr@13.2.1`
9
- 3. Also make sure to Install the Roboto font locally in assets folder of your consuming project.
10
-
11
- If using the library locally (library from your system locally not npm),then in angular json file you have to set
12
- `preserveSymlinks: true`.
13
-
14
- ## Adding Configuration
15
-
16
- 1. import the `AnnaCognitoLibModule` module and pass the configuration to root
17
- `AnnaCognitoLibModule.forRoot(appGenericConfig)`
18
- 2. configuration const should be:
19
- ````const appGenericConfig = {
20
- cognito : {
21
- userPoolId: "",
22
- clientId: "",
23
- },
24
- loginPageLogoImgUrl: ""
25
- } ```
26
- ````
27
- 3. Keep the logo image in consuming project and provide the path for loginPageLogoImgUrl. ex:
28
- "assets/images/Anna-Logo.png" Note: for better loading of logo image, provide logo image in minified format.
29
-
30
- ## Adding new custom function implemetation for any service file.
31
-
32
- 1. Background Understanding - when we want to provide custom implemenetation - We write the custom implementation in a
33
- service file of consuming project and that is injected in the library. Injection is taken care by library itself. You
34
- just need to provide the definition and implementation of new function added.
35
- 2. Ex: let's say we want to add a new function `onSuccessfulAuthenticatingUser() this function is called from library
36
- when user is succesfully authenticated and logged in. (Note: this function is already present in lib).
37
- 3. Then In library add the new function declaration `onSuccessfulAuthenticatingUser()` in interface file `IAuthService`
38
- of `auth-service.token.ts` file.
39
- 4. In consuming project, for `onSuccessfulAuthenticatingUser()` provide the implementation in the service file say
40
- `AuthService` of `auth.service.ts`.
41
- 5. Then In consuming project, app.module.ts file add following in providers array.
42
- `{ provide: AUTH_SERVICE_TOKEN, useExisting: AuthService }` i.e. your consuming project's existing AuthService will
43
- be injected in Library's auth-service file with the help of AUTH_SERVICE_TOKEN.
44
- 6. Now you're good to go!
45
-
46
- ## List of function implementation we need to provide in consuming project.
47
-
48
- 1. `onSuccessfulAuthenticatingUser()` - provide the implementation of what happens when user is succefully logged in.
49
- (any API call or routing you need to provide).
50
- 2. `isUsernameAvailable()` - in thie implementation call an backend API to find out if username is already present in
51
- Database or not. format of response should be `{"isUsernameAvailable":true}`. This is used in forgot-password page
52
- before calling forgot-password cognito sdk call, we need to check thorough backend db if the username is actually
53
- available.
54
- 3. `isLoggingIn` - set this variable to false. this will stop the spinner on top on button. use case: after successful
55
- login i.e. when we are done with all API call we need to call post succesfull calling or when we have routed to home
56
- page.
57
-
58
- ## How to make changes in library and build it
59
-
60
- 1. Make the changes and Run `ng build anna-cognito-lib` to build the project.
61
- 2. The build artifacts will be stored in the `dist/` directory.
62
-
63
- ## Publishing
64
-
65
- After building your library with `ng build anna-cognito-lib`, go to the dist folder `cd dist/anna-cognito-lib` and run
66
- `npm publish`.
1
+ # AnnaCognitoLib
2
+
3
+ ## How to use the library in the consuming project ?
4
+
5
+ 1. Install the package from npm `npm install @annalib/anna-cognito-lib` (if not working use with --force flag).
6
+ 2. After installing the Library, you need to install it's peer dependancies. You can find the peer-dependecies in
7
+ package.json file of library. Install all the peer depedencies with respective version number mentioned. this is
8
+ important step otherwise library will throw error. ex: `npm install ngx-toastr@13.2.1`
9
+ 3. Also make sure to Install the Roboto font locally in assets folder of your consuming project.
10
+
11
+ If using the library locally (library from your system locally not npm),then in angular json file you have to set
12
+ `preserveSymlinks: true`.
13
+
14
+ ## Adding Configuration
15
+
16
+ 1. import the `AnnaCognitoLibModule` module and pass the configuration to root
17
+ `AnnaCognitoLibModule.forRoot(appGenericConfig)`
18
+ 2. configuration const should be:
19
+ ````const appGenericConfig = {
20
+ cognito : {
21
+ userPoolId: "",
22
+ clientId: "",
23
+ },
24
+ loginPageLogoImgUrl: ""
25
+ } ```
26
+ ````
27
+ 3. Keep the logo image in consuming project and provide the path for loginPageLogoImgUrl. ex:
28
+ "assets/images/Anna-Logo.png" Note: for better loading of logo image, provide logo image in minified format.
29
+
30
+ ## Adding new custom function implemetation for any service file.
31
+
32
+ 1. Background Understanding - when we want to provide custom implemenetation - We write the custom implementation in a
33
+ service file of consuming project and that is injected in the library. Injection is taken care by library itself. You
34
+ just need to provide the definition and implementation of new function added.
35
+ 2. Ex: let's say we want to add a new function `onSuccessfulAuthenticatingUser() this function is called from library
36
+ when user is succesfully authenticated and logged in. (Note: this function is already present in lib).
37
+ 3. Then In library add the new function declaration `onSuccessfulAuthenticatingUser()` in interface file `IAuthService`
38
+ of `auth-service.token.ts` file.
39
+ 4. In consuming project, for `onSuccessfulAuthenticatingUser()` provide the implementation in the service file say
40
+ `AuthService` of `auth.service.ts`.
41
+ 5. Then In consuming project, app.module.ts file add following in providers array.
42
+ `{ provide: AUTH_SERVICE_TOKEN, useExisting: AuthService }` i.e. your consuming project's existing AuthService will
43
+ be injected in Library's auth-service file with the help of AUTH_SERVICE_TOKEN.
44
+ 6. Now you're good to go!
45
+
46
+ ## List of function implementation we need to provide in consuming project.
47
+
48
+ 1. `onSuccessfulAuthenticatingUser()` - provide the implementation of what happens when user is succefully logged in.
49
+ (any API call or routing you need to provide).
50
+ 2. `isUsernameAvailable()` - in thie implementation call an backend API to find out if username is already present in
51
+ Database or not. format of response should be `{"isUsernameAvailable":true}`. This is used in forgot-password page
52
+ before calling forgot-password cognito sdk call, we need to check thorough backend db if the username is actually
53
+ available.
54
+ 3. `isLoggingIn` - set this variable to false. this will stop the spinner on top on button. use case: after successful
55
+ login i.e. when we are done with all API call we need to call post succesfull calling or when we have routed to home
56
+ page.
57
+
58
+ ## How to make changes in library and build it
59
+
60
+ 1. Make the changes and Run `ng build anna-cognito-lib` to build the project.
61
+ 2. The build artifacts will be stored in the `dist/` directory.
62
+
63
+ ## Publishing
64
+
65
+ After building your library with `ng build anna-cognito-lib`, go to the dist folder `cd dist/anna-cognito-lib` and run
66
+ `npm publish`.
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYWxpYi1hbm5hLWNvZ25pdG8tbGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvYW5uYWxpYi1hbm5hLWNvZ25pdG8tbGliLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,67 @@
1
+ // Angular import statements
2
+ import { Component, Inject } from '@angular/core';
3
+ import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ // User defined import statements
5
+ import { LoginConstant } from '../../constants/loginConstant';
6
+ import { AnnaLibAuthService } from '../../services/auth.service';
7
+ import { CONFIG_SERVICE_TOKEN } from '../../config/config-service.token';
8
+ import { SSO_LOGIN_SERVICE_TOKEN } from '../../config/sso-login-service.token';
9
+ import { VersionAndTermPolicyComponent } from '../version-and-term-policy/version-and-term-policy.component';
10
+ import { SurewavesYearLogoComponent } from '../surewaves-year-logo/surewaves-year-logo.component';
11
+ import { PoweredByLogoTemplateComponent } from '../powered-by-logo-template/powered-by-logo-template.component';
12
+ import { SpinnerButtonDirective } from '../../directives/spinner-button/spinner-button.directive';
13
+ import { RouterLink } from '@angular/router';
14
+ import { NgIf, NgOptimizedImage, NgClass } from '@angular/common';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "../../services/auth.service";
17
+ import * as i2 from "@angular/forms";
18
+ export class AnnaLoginComponent {
19
+ constructor(authService, fb, consumingProjectConfigService, consumingProjectSSOLoginService) {
20
+ this.authService = authService;
21
+ this.fb = fb;
22
+ this.consumingProjectConfigService = consumingProjectConfigService;
23
+ this.consumingProjectSSOLoginService = consumingProjectSSOLoginService;
24
+ }
25
+ ngOnInit() {
26
+ this.authService.consumingProjectAuthService.isLoggingIn = false;
27
+ this.consumingProjectSSOLoginService.loggedInViaSso = false;
28
+ this.constants = LoginConstant;
29
+ this.onIntialiseForm();
30
+ }
31
+ onIntialiseForm() {
32
+ this.loginForm = this.fb.group({
33
+ username: [null],
34
+ password: [null],
35
+ });
36
+ }
37
+ OnLogin() {
38
+ this.authService.consumingProjectAuthService.isLoggingIn = true;
39
+ const username = this.loginForm.controls['username'].value;
40
+ const password = this.loginForm.controls['password'].value;
41
+ this.authService.handleSignIn({ username, password });
42
+ }
43
+ }
44
+ AnnaLoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AnnaLoginComponent, deps: [{ token: i1.AnnaLibAuthService }, { token: i2.FormBuilder }, { token: CONFIG_SERVICE_TOKEN }, { token: SSO_LOGIN_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
45
+ AnnaLoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AnnaLoginComponent, isStandalone: true, selector: "anna-cognito-lib-anna-login", ngImport: i0, template: "<div class=\"main\">\r\n <!-- Load login page when all constant variable are intiated otherwise it will show a glitch. that's why ngIf check of constants.forgotPassword -->\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img\r\n [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\"\r\n width=\"145\"\r\n height=\"50\"\r\n alt=\"Anna Logo\"\r\n priority\r\n />\r\n </header>\r\n <article>\r\n <form\r\n [formGroup]=\"loginForm\"\r\n (ngSubmit)=\"OnLogin()\"\r\n >\r\n <div\r\n id=\"alert-div\"\r\n *ngIf=\"authService.loginErrorMessage\"\r\n >\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.loginErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"username\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"\r\n consumingProjectSSOLoginService?.isSsoIntegrated\r\n ? constants.enterUserCode\r\n : constants.enterEmail\r\n \"\r\n autocomplete=\"username\"\r\n autofocus\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"constants.password\"\r\n autocomplete=\"current-password\"\r\n autofocus\r\n />\r\n\r\n <a\r\n tabindex=\"4\"\r\n [routerLink]=\"constants.forgortPasswordPageUrl\"\r\n >{{ constants.forgotPassword }}</a\r\n >\r\n <button\r\n tabindex=\"3\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.consumingProjectAuthService.isLoggingIn\"\r\n [spinnerButtonText]=\"constants.login\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template> </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n", styles: ["@keyframes show{0%{opacity:0}50%{opacity:.5}to{opacity:1}}html{overflow-y:scroll}.main{background-color:#fff;background-size:cover;font-family:Roboto;height:calc(100vh - 50px)}section{top:45%;left:50%;position:absolute;transform:translate(-50%,-50%);width:20.875rem;animation:show .5s 1;-moz-animation:show .5s 1}.container{width:100%;height:100%;overflow:auto}header{height:auto;width:100%;text-align:center}article{margin-top:.9375rem;margin-bottom:.9375rem;border:1px solid #979797;background-color:#f4f4f4;padding:2rem 1.375rem;border-radius:.375rem;box-shadow:0 .125rem .4375rem #0000001a}article .sub-title{color:#6e6e6e;font-family:Roboto;font-size:1.25rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}article #heading{color:#212121;text-align:center;margin-bottom:1.5rem;font-family:Roboto;font-size:1.125rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}p{text-align:center;margin-bottom:1rem}#alert-div{padding:.3125rem 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3;justify-content:left;align-items:center;display:flex}#alert-div .material-icons{color:#f44336;font-size:1rem;margin-left:.5rem}#alert-div p{margin-left:4px!important;margin:0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}#info-div{padding:6px 0;margin-bottom:.75rem;border-radius:.25rem;border:1px solid #268bff;background:#e3f0ff}#info-div .mdi-info{color:#268bff;font-size:1rem;margin-left:6px}#info-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}footer{align-items:baseline;color:#6e6e6e;opacity:.9;display:flex;font-family:Ubuntu;font-size:1.25rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;justify-content:center}footer span{font-size:1.5625rem;margin-left:.25rem}input[type=password],input[type=text],input[type=number]{width:100%;height:30px;padding:.75rem 1rem;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}.login-btn{width:100%;height:2.5rem;border:0;color:#fff;background-color:#268bff;border-radius:.375rem;font-size:1rem}.login-btn:hover{background-color:#4099ff;cursor:pointer}.login-btn:disabled{background-color:#ccc;color:#fff;cursor:not-allowed}.input-invalid{border:1px solid #fe3824!important}input[type=password].ng-dirty.ng-invalid,input[type=text].ng-dirty.ng-invalid{border:1px solid #fe3824}input[type=submit]:focus,input[type=password]:focus,input[type=text]:focus,input[type=checkbox]:focus,button:focus{outline:none}input::placeholder{color:#a4a4a4}:host ::ng-deep .verison-and-policy{color:#8bac2a}a{float:right;color:#268bff;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;text-decoration:underline;margin-bottom:.9375rem}a:hover{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: SpinnerButtonDirective, selector: "[anna-cognito-lib-SpinnerButton]", inputs: ["anna-cognito-lib-SpinnerButton", "spinnerButtonText"] }, { kind: "component", type: PoweredByLogoTemplateComponent, selector: "anna-cognito-lib-powered-by-logo-template" }, { kind: "component", type: SurewavesYearLogoComponent, selector: "anna-cognito-lib-surewaves-year-logo" }, { kind: "component", type: VersionAndTermPolicyComponent, selector: "anna-cognito-lib-version-and-term-policy" }] });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AnnaLoginComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'anna-cognito-lib-anna-login', standalone: true, imports: [
49
+ NgIf,
50
+ NgOptimizedImage,
51
+ FormsModule,
52
+ ReactiveFormsModule,
53
+ NgClass,
54
+ RouterLink,
55
+ SpinnerButtonDirective,
56
+ PoweredByLogoTemplateComponent,
57
+ SurewavesYearLogoComponent,
58
+ VersionAndTermPolicyComponent,
59
+ ], template: "<div class=\"main\">\r\n <!-- Load login page when all constant variable are intiated otherwise it will show a glitch. that's why ngIf check of constants.forgotPassword -->\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img\r\n [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\"\r\n width=\"145\"\r\n height=\"50\"\r\n alt=\"Anna Logo\"\r\n priority\r\n />\r\n </header>\r\n <article>\r\n <form\r\n [formGroup]=\"loginForm\"\r\n (ngSubmit)=\"OnLogin()\"\r\n >\r\n <div\r\n id=\"alert-div\"\r\n *ngIf=\"authService.loginErrorMessage\"\r\n >\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.loginErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"username\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"\r\n consumingProjectSSOLoginService?.isSsoIntegrated\r\n ? constants.enterUserCode\r\n : constants.enterEmail\r\n \"\r\n autocomplete=\"username\"\r\n autofocus\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"constants.password\"\r\n autocomplete=\"current-password\"\r\n autofocus\r\n />\r\n\r\n <a\r\n tabindex=\"4\"\r\n [routerLink]=\"constants.forgortPasswordPageUrl\"\r\n >{{ constants.forgotPassword }}</a\r\n >\r\n <button\r\n tabindex=\"3\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.consumingProjectAuthService.isLoggingIn\"\r\n [spinnerButtonText]=\"constants.login\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template> </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n", styles: ["@keyframes show{0%{opacity:0}50%{opacity:.5}to{opacity:1}}html{overflow-y:scroll}.main{background-color:#fff;background-size:cover;font-family:Roboto;height:calc(100vh - 50px)}section{top:45%;left:50%;position:absolute;transform:translate(-50%,-50%);width:20.875rem;animation:show .5s 1;-moz-animation:show .5s 1}.container{width:100%;height:100%;overflow:auto}header{height:auto;width:100%;text-align:center}article{margin-top:.9375rem;margin-bottom:.9375rem;border:1px solid #979797;background-color:#f4f4f4;padding:2rem 1.375rem;border-radius:.375rem;box-shadow:0 .125rem .4375rem #0000001a}article .sub-title{color:#6e6e6e;font-family:Roboto;font-size:1.25rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}article #heading{color:#212121;text-align:center;margin-bottom:1.5rem;font-family:Roboto;font-size:1.125rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}p{text-align:center;margin-bottom:1rem}#alert-div{padding:.3125rem 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3;justify-content:left;align-items:center;display:flex}#alert-div .material-icons{color:#f44336;font-size:1rem;margin-left:.5rem}#alert-div p{margin-left:4px!important;margin:0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}#info-div{padding:6px 0;margin-bottom:.75rem;border-radius:.25rem;border:1px solid #268bff;background:#e3f0ff}#info-div .mdi-info{color:#268bff;font-size:1rem;margin-left:6px}#info-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}footer{align-items:baseline;color:#6e6e6e;opacity:.9;display:flex;font-family:Ubuntu;font-size:1.25rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;justify-content:center}footer span{font-size:1.5625rem;margin-left:.25rem}input[type=password],input[type=text],input[type=number]{width:100%;height:30px;padding:.75rem 1rem;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}.login-btn{width:100%;height:2.5rem;border:0;color:#fff;background-color:#268bff;border-radius:.375rem;font-size:1rem}.login-btn:hover{background-color:#4099ff;cursor:pointer}.login-btn:disabled{background-color:#ccc;color:#fff;cursor:not-allowed}.input-invalid{border:1px solid #fe3824!important}input[type=password].ng-dirty.ng-invalid,input[type=text].ng-dirty.ng-invalid{border:1px solid #fe3824}input[type=submit]:focus,input[type=password]:focus,input[type=text]:focus,input[type=checkbox]:focus,button:focus{outline:none}input::placeholder{color:#a4a4a4}:host ::ng-deep .verison-and-policy{color:#8bac2a}a{float:right;color:#268bff;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;text-decoration:underline;margin-bottom:.9375rem}a:hover{cursor:pointer}\n"] }]
60
+ }], ctorParameters: function () { return [{ type: i1.AnnaLibAuthService }, { type: i2.FormBuilder }, { type: undefined, decorators: [{
61
+ type: Inject,
62
+ args: [CONFIG_SERVICE_TOKEN]
63
+ }] }, { type: undefined, decorators: [{
64
+ type: Inject,
65
+ args: [SSO_LOGIN_SERVICE_TOKEN]
66
+ }] }]; } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvZ25pdG8tbGliL3NyYy9saWIvY29tcG9uZW50cy9hbm5hLWxvZ2luL2FubmEtbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYW5uYS1sb2dpbi9hbm5hLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFGLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFrQixNQUFNLG1DQUFtQyxDQUFDO0FBQ3pGLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQW9CbEUsTUFBTSxPQUFPLGtCQUFrQjtJQUkzQixZQUNXLFdBQStCLEVBQzlCLEVBQWUsRUFDYyw2QkFBNkMsRUFDMUMsK0JBQWlEO1FBSGxGLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUM5QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2Msa0NBQTZCLEdBQTdCLDZCQUE2QixDQUFnQjtRQUMxQyxvQ0FBK0IsR0FBL0IsK0JBQStCLENBQWtCO0lBQzFGLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ2pFLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDM0IsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ2hCLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQztTQUNuQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUNoRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7Z0hBOUJRLGtCQUFrQiwrRUFPZixvQkFBb0IsYUFDcEIsdUJBQXVCO29HQVIxQixrQkFBa0IsdUZDbEMvQiw4NkZBd0VBLCtsR0RsRFEsSUFBSSw2RkFDSixnQkFBZ0IsMk1BQ2hCLFdBQVcsMnBCQUNYLG1CQUFtQixnVkFDbkIsT0FBTyxvRkFDUCxVQUFVLDROQUNWLHNCQUFzQiw4SUFDdEIsOEJBQThCLHNGQUM5QiwwQkFBMEIsaUZBQzFCLDZCQUE2Qjs0RkFHeEIsa0JBQWtCO2tCQWxCOUIsU0FBUzsrQkFDSSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQO3dCQUNMLElBQUk7d0JBQ0osZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxVQUFVO3dCQUNWLHNCQUFzQjt3QkFDdEIsOEJBQThCO3dCQUM5QiwwQkFBMEI7d0JBQzFCLDZCQUE2QjtxQkFDaEM7OzBCQVNJLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vLyBVc2VyIGRlZmluZWQgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgTG9naW5Db25zdGFudCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9sb2dpbkNvbnN0YW50JztcclxuaW1wb3J0IHsgQW5uYUxpYkF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ09ORklHX1NFUlZJQ0VfVE9LRU4sIElDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uZmlnL2NvbmZpZy1zZXJ2aWNlLnRva2VuJztcclxuaW1wb3J0IHsgSVNTT0xvZ2luU2VydmljZSwgU1NPX0xPR0lOX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi8uLi9jb25maWcvc3NvLWxvZ2luLXNlcnZpY2UudG9rZW4nO1xyXG5pbXBvcnQgeyBWZXJzaW9uQW5kVGVybVBvbGljeUNvbXBvbmVudCB9IGZyb20gJy4uL3ZlcnNpb24tYW5kLXRlcm0tcG9saWN5L3ZlcnNpb24tYW5kLXRlcm0tcG9saWN5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1cmV3YXZlc1llYXJMb2dvQ29tcG9uZW50IH0gZnJvbSAnLi4vc3VyZXdhdmVzLXllYXItbG9nby9zdXJld2F2ZXMteWVhci1sb2dvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBvd2VyZWRCeUxvZ29UZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL3Bvd2VyZWQtYnktbG9nby10ZW1wbGF0ZS9wb3dlcmVkLWJ5LWxvZ28tdGVtcGxhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3Bpbm5lckJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc3Bpbm5lci1idXR0b24vc3Bpbm5lci1idXR0b24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5nSWYsIE5nT3B0aW1pemVkSW1hZ2UsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FubmEtY29nbml0by1saWItYW5uYS1sb2dpbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYW5uYS1sb2dpbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9hbm5hLWxvZ2luLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIE5nSWYsXHJcbiAgICAgICAgTmdPcHRpbWl6ZWRJbWFnZSxcclxuICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE5nQ2xhc3MsXHJcbiAgICAgICAgUm91dGVyTGluayxcclxuICAgICAgICBTcGlubmVyQnV0dG9uRGlyZWN0aXZlLFxyXG4gICAgICAgIFBvd2VyZWRCeUxvZ29UZW1wbGF0ZUNvbXBvbmVudCxcclxuICAgICAgICBTdXJld2F2ZXNZZWFyTG9nb0NvbXBvbmVudCxcclxuICAgICAgICBWZXJzaW9uQW5kVGVybVBvbGljeUNvbXBvbmVudCxcclxuICAgIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hTG9naW5Db21wb25lbnQge1xyXG4gICAgbG9naW5Gb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBjb25zdGFudHM6IHR5cGVvZiBMb2dpbkNvbnN0YW50O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBhdXRoU2VydmljZTogQW5uYUxpYkF1dGhTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIEBJbmplY3QoQ09ORklHX1NFUlZJQ0VfVE9LRU4pIHB1YmxpYyBjb25zdW1pbmdQcm9qZWN0Q29uZmlnU2VydmljZTogSUNvbmZpZ1NlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChTU09fTE9HSU5fU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2U6IElTU09Mb2dpblNlcnZpY2UsXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuaXNMb2dnaW5nSW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2UubG9nZ2VkSW5WaWFTc28gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IExvZ2luQ29uc3RhbnQ7XHJcbiAgICAgICAgdGhpcy5vbkludGlhbGlzZUZvcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkludGlhbGlzZUZvcm0oKSB7XHJcbiAgICAgICAgdGhpcy5sb2dpbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgdXNlcm5hbWU6IFtudWxsXSxcclxuICAgICAgICAgICAgcGFzc3dvcmQ6IFtudWxsXSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBPbkxvZ2luKCkge1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLmlzTG9nZ2luZ0luID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCB1c2VybmFtZSA9IHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzWyd1c2VybmFtZSddLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkID0gdGhpcy5sb2dpbkZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10udmFsdWU7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5oYW5kbGVTaWduSW4oeyB1c2VybmFtZSwgcGFzc3dvcmQgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1haW5cIj5cclxuICAgIDwhLS0gTG9hZCBsb2dpbiBwYWdlIHdoZW4gYWxsIGNvbnN0YW50IHZhcmlhYmxlIGFyZSBpbnRpYXRlZCBvdGhlcndpc2UgaXQgd2lsbCBzaG93IGEgZ2xpdGNoLiB0aGF0J3Mgd2h5IG5nSWYgY2hlY2sgb2YgY29uc3RhbnRzLmZvcmdvdFBhc3N3b3JkIC0tPlxyXG4gICAgPHNlY3Rpb24gKm5nSWY9XCJjb25zdGFudHMuZm9yZ290UGFzc3dvcmRcIj5cclxuICAgICAgICA8aGVhZGVyPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBbbmdTcmNdPVwiY29uc3VtaW5nUHJvamVjdENvbmZpZ1NlcnZpY2UuYXBwR2VuZXJpY0NvbmZpZy5sb2dpblBhZ2VMb2dvSW1nVXJsXCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTQ1XCJcclxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjUwXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIkFubmEgTG9nb1wiXHJcbiAgICAgICAgICAgICAgICBwcmlvcml0eVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvaGVhZGVyPlxyXG4gICAgICAgIDxhcnRpY2xlPlxyXG4gICAgICAgICAgICA8Zm9ybVxyXG4gICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJsb2dpbkZvcm1cIlxyXG4gICAgICAgICAgICAgICAgKG5nU3VibWl0KT1cIk9uTG9naW4oKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBpZD1cImFsZXJ0LWRpdlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhdXRoU2VydmljZS5sb2dpbkVycm9yTWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnJlcG9ydDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cD57eyBhdXRoU2VydmljZS5sb2dpbkVycm9yTWVzc2FnZSB9fTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZXJuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbnB1dC1pbnZhbGlkJzogYXV0aFNlcnZpY2UubG9naW5FcnJvck1lc3NhZ2UgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlPy5pc1Nzb0ludGVncmF0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29uc3RhbnRzLmVudGVyVXNlckNvZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnRzLmVudGVyRW1haWxcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cInVzZXJuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXNcclxuICAgICAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbnB1dC1pbnZhbGlkJzogYXV0aFNlcnZpY2UubG9naW5FcnJvck1lc3NhZ2UgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbnN0YW50cy5wYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwiY3VycmVudC1wYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCI0XCJcclxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJjb25zdGFudHMuZm9yZ29ydFBhc3N3b3JkUGFnZVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPnt7IGNvbnN0YW50cy5mb3Jnb3RQYXNzd29yZCB9fTwvYVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb2dpbi1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbm5hLWNvZ25pdG8tbGliLVNwaW5uZXJCdXR0b25dPVwiYXV0aFNlcnZpY2UuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLmlzTG9nZ2luZ0luXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3Bpbm5lckJ1dHRvblRleHRdPVwiY29uc3RhbnRzLmxvZ2luXCJcclxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvYXJ0aWNsZT5cclxuICAgICAgICA8Zm9vdGVyPlxyXG4gICAgICAgICAgICA8YW5uYS1jb2duaXRvLWxpYi1wb3dlcmVkLWJ5LWxvZ28tdGVtcGxhdGU+IDwvYW5uYS1jb2duaXRvLWxpYi1wb3dlcmVkLWJ5LWxvZ28tdGVtcGxhdGU+XHJcbiAgICAgICAgPC9mb290ZXI+XHJcbiAgICA8L3NlY3Rpb24+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cInBhZ2UtZm9vdGVyXCI+XHJcbiAgICA8YW5uYS1jb2duaXRvLWxpYi1zdXJld2F2ZXMteWVhci1sb2dvPjwvYW5uYS1jb2duaXRvLWxpYi1zdXJld2F2ZXMteWVhci1sb2dvPlxyXG4gICAgPGFubmEtY29nbml0by1saWItdmVyc2lvbi1hbmQtdGVybS1wb2xpY3k+PC9hbm5hLWNvZ25pdG8tbGliLXZlcnNpb24tYW5kLXRlcm0tcG9saWN5PlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,22 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { SSO_LOGIN_SERVICE_TOKEN } from '../../config/sso-login-service.token';
3
+ import { SsoLoginComponent } from '../sso-login/sso-login.component';
4
+ import { AnnaLoginComponent } from '../anna-login/anna-login.component';
5
+ import { NgIf } from '@angular/common';
6
+ import * as i0 from "@angular/core";
7
+ export class CognitoAndSSOLoginContainerComponent {
8
+ constructor(consumingProjectSSOLoginService) {
9
+ this.consumingProjectSSOLoginService = consumingProjectSSOLoginService;
10
+ }
11
+ ngOnInit() { }
12
+ }
13
+ CognitoAndSSOLoginContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CognitoAndSSOLoginContainerComponent, deps: [{ token: SSO_LOGIN_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
14
+ CognitoAndSSOLoginContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CognitoAndSSOLoginContainerComponent, isStandalone: true, selector: "anna-cognito-lib-cognito-and-sso-login-container", ngImport: i0, template: "<anna-cognito-lib-anna-login *ngIf=\"!consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-anna-login>\r\n<anna-cognito-lib-sso-login *ngIf=\"consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-sso-login>\r\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AnnaLoginComponent, selector: "anna-cognito-lib-anna-login" }, { kind: "component", type: SsoLoginComponent, selector: "anna-cognito-lib-sso-login" }] });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CognitoAndSSOLoginContainerComponent, decorators: [{
16
+ type: Component,
17
+ args: [{ selector: 'anna-cognito-lib-cognito-and-sso-login-container', standalone: true, imports: [NgIf, AnnaLoginComponent, SsoLoginComponent], template: "<anna-cognito-lib-anna-login *ngIf=\"!consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-anna-login>\r\n<anna-cognito-lib-sso-login *ngIf=\"consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-sso-login>\r\n" }]
18
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
19
+ type: Inject,
20
+ args: [SSO_LOGIN_SERVICE_TOKEN]
21
+ }] }]; } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by1hbmQtc3NvLWxvZ2luLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvZ25pdG8tbGliL3NyYy9saWIvY29tcG9uZW50cy9jb2duaXRvLWFuZC1zc28tbG9naW4tY29udGFpbmVyL2NvZ25pdG8tYW5kLXNzby1sb2dpbi1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY29nbml0by1hbmQtc3NvLWxvZ2luLWNvbnRhaW5lci9jb2duaXRvLWFuZC1zc28tbG9naW4tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBU3ZDLE1BQU0sT0FBTyxvQ0FBb0M7SUFDN0MsWUFBb0QsK0JBQWlEO1FBQWpELG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBa0I7SUFBRyxDQUFDO0lBRXpHLFFBQVEsS0FBSSxDQUFDOztrSUFISixvQ0FBb0Msa0JBQ3pCLHVCQUF1QjtzSEFEbEMsb0NBQW9DLDRHQ2JqRCxxUEFFQSwwRERTYyxJQUFJLDZGQUFFLGtCQUFrQix3RUFBRSxpQkFBaUI7NEZBRTVDLG9DQUFvQztrQkFQaEQsU0FBUzsrQkFDSSxrREFBa0QsY0FHaEQsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDOzswQkFHekMsTUFBTTsyQkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElTU09Mb2dpblNlcnZpY2UsIFNTT19MT0dJTl9TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vY29uZmlnL3Nzby1sb2dpbi1zZXJ2aWNlLnRva2VuJztcclxuaW1wb3J0IHsgU3NvTG9naW5Db21wb25lbnQgfSBmcm9tICcuLi9zc28tbG9naW4vc3NvLWxvZ2luLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFubmFMb2dpbkNvbXBvbmVudCB9IGZyb20gJy4uL2FubmEtbG9naW4vYW5uYS1sb2dpbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhbm5hLWNvZ25pdG8tbGliLWNvZ25pdG8tYW5kLXNzby1sb2dpbi1jb250YWluZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZ25pdG8tYW5kLXNzby1sb2dpbi1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29nbml0by1hbmQtc3NvLWxvZ2luLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0lmLCBBbm5hTG9naW5Db21wb25lbnQsIFNzb0xvZ2luQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZ25pdG9BbmRTU09Mb2dpbkNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFNTT19MT0dJTl9TRVJWSUNFX1RPS0VOKSBwdWJsaWMgY29uc3VtaW5nUHJvamVjdFNTT0xvZ2luU2VydmljZTogSVNTT0xvZ2luU2VydmljZSkge31cclxuXHJcbiAgICBuZ09uSW5pdCgpIHt9XHJcbn1cclxuIiwiPGFubmEtY29nbml0by1saWItYW5uYS1sb2dpbiAqbmdJZj1cIiFjb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlPy5pc1Nzb0ludGVncmF0ZWRcIj48L2FubmEtY29nbml0by1saWItYW5uYS1sb2dpbj5cclxuPGFubmEtY29nbml0by1saWItc3NvLWxvZ2luICpuZ0lmPVwiY29uc3VtaW5nUHJvamVjdFNTT0xvZ2luU2VydmljZT8uaXNTc29JbnRlZ3JhdGVkXCI+PC9hbm5hLWNvZ25pdG8tbGliLXNzby1sb2dpbj5cclxuIl19
@@ -0,0 +1,133 @@
1
+ // Angular import statements
2
+ import { Component, Inject } from '@angular/core';
3
+ import { FormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ // Third party import statements
5
+ import { ToastrService } from 'ngx-toastr';
6
+ import { forkJoin } from 'rxjs';
7
+ // User defined import statements
8
+ import { UsernameInfo, UserState } from '../../models/auth.model';
9
+ import { AnnaLibAuthService } from '../../services/auth.service';
10
+ import { LoginConstant } from '../../constants/loginConstant';
11
+ import { Router } from '@angular/router';
12
+ import { CONFIG_SERVICE_TOKEN } from '../../config/config-service.token';
13
+ import { AUTH_SERVICE_TOKEN } from '../../config/auth-service.token';
14
+ import { SSO_LOGIN_SERVICE_TOKEN } from '../../config/sso-login-service.token';
15
+ import { VersionAndTermPolicyComponent } from '../version-and-term-policy/version-and-term-policy.component';
16
+ import { SurewavesYearLogoComponent } from '../surewaves-year-logo/surewaves-year-logo.component';
17
+ import { PoweredByLogoTemplateComponent } from '../powered-by-logo-template/powered-by-logo-template.component';
18
+ import { SpinnerButtonDirective } from '../../directives/spinner-button/spinner-button.directive';
19
+ import { NgIf, NgClass } from '@angular/common';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "../../services/auth.service";
22
+ import * as i2 from "@angular/forms";
23
+ import * as i3 from "ngx-toastr";
24
+ import * as i4 from "@angular/router";
25
+ export class ForgotPasswordComponent {
26
+ constructor(authService, fb, toastr, router, consumingProjectConfigService, consumingProjectAuthService, consumingProjectSSOLoginService) {
27
+ this.authService = authService;
28
+ this.fb = fb;
29
+ this.toastr = toastr;
30
+ this.router = router;
31
+ this.consumingProjectConfigService = consumingProjectConfigService;
32
+ this.consumingProjectAuthService = consumingProjectAuthService;
33
+ this.consumingProjectSSOLoginService = consumingProjectSSOLoginService;
34
+ this.passwordNotMatching = false;
35
+ this.password = { value: null, status: null };
36
+ this.confirmPassword = { value: null, status: null };
37
+ this.infoMessageToRedirectLogin = null;
38
+ this.isLoading = false;
39
+ }
40
+ ngOnInit() {
41
+ this.infoMessageToRedirectLogin = null;
42
+ this.constants = LoginConstant;
43
+ this.onIntialiseForm();
44
+ if (this.consumingProjectAuthService.userName) {
45
+ this.onUpdateForm();
46
+ }
47
+ this.authService.forgotPasswordAndGlobalSignoutLoader = false;
48
+ }
49
+ onIntialiseForm() {
50
+ this.verifyRegisteredEmail = this.fb.group({
51
+ email: [null, [Validators.required]],
52
+ });
53
+ }
54
+ onUpdateForm() {
55
+ this.verifyRegisteredEmail.patchValue({
56
+ email: this.consumingProjectAuthService.userName,
57
+ });
58
+ }
59
+ isFormValid() {
60
+ return this.verifyRegisteredEmail.valid;
61
+ }
62
+ onLoginOrGetOtpButtonClick() {
63
+ if (this.infoMessageToRedirectLogin) {
64
+ this.router.navigate([LoginConstant.loginPageUrl]);
65
+ }
66
+ else {
67
+ this.onVerifyRegisteredEmail();
68
+ }
69
+ }
70
+ onVerifyRegisteredEmail() {
71
+ this.isLoading = true;
72
+ this.errorMessage = null;
73
+ this.infoMessageToRedirectLogin = null;
74
+ let username = this.verifyRegisteredEmail.controls['email'].value;
75
+ let isUsernameAvailable = this.authService.consumingProjectAuthService.isUsernameAvailable(username);
76
+ let isUsernameTempPasswordSet = this.authService.consumingProjectAuthService.getUserState(username);
77
+ forkJoin([isUsernameAvailable, isUsernameTempPasswordSet]).subscribe({
78
+ next: (result) => {
79
+ let isUsernameAvailable = new UsernameInfo(result[0]).isUsernameAvailable;
80
+ let isUserWithTempPassword = new UserState(result[1]).isUserWithTempPassword;
81
+ this.onGettingUserStatus(isUsernameAvailable, isUserWithTempPassword, username);
82
+ this.isLoading = false;
83
+ },
84
+ error: (error) => {
85
+ if (error.status == 400) {
86
+ this.errorMessage = this.constants.userNotFound;
87
+ }
88
+ else {
89
+ this.toastr.error(LoginConstant.apiFailErrorMessage);
90
+ }
91
+ this.isLoading = false;
92
+ },
93
+ });
94
+ }
95
+ onGettingUserStatus(isUsernameAvailable, isUserWithTempPassword, username) {
96
+ if (!isUsernameAvailable) {
97
+ if (!isUserWithTempPassword) {
98
+ this.authService.onForgotPasswordGenerateOTP(username);
99
+ }
100
+ else {
101
+ this.infoMessageToRedirectLogin = this.constants.firstTimeLoginUserTempPasswordMsg;
102
+ }
103
+ }
104
+ else {
105
+ this.errorMessage = this.constants.userNotFound;
106
+ }
107
+ }
108
+ }
109
+ ForgotPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ForgotPasswordComponent, deps: [{ token: i1.AnnaLibAuthService }, { token: i2.FormBuilder }, { token: i3.ToastrService }, { token: i4.Router }, { token: CONFIG_SERVICE_TOKEN }, { token: AUTH_SERVICE_TOKEN }, { token: SSO_LOGIN_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
110
+ ForgotPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ForgotPasswordComponent, isStandalone: true, selector: "anna-cognito-lib-forgot-password", ngImport: i0, template: "<div class=\"main\">\r\n <section>\r\n <header>\r\n <img\r\n [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\"\r\n alt=\"Anna Logo\"\r\n />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"verifyRegisteredEmail\">\r\n <ng-container *ngIf=\"!infoMessageToRedirectLogin\">\r\n <div id=\"heading\">\r\n {{ constants.forgotPasswordHeading }}\r\n </div>\r\n <p>\r\n {{\r\n consumingProjectSSOLoginService?.isSsoIntegrated\r\n ? constants.PleaseEnterYourUsercodeMessage\r\n : constants.PleaseEnterYourUsernameMessage\r\n }}\r\n </p>\r\n </ng-container>\r\n <div\r\n id=\"alert-div\"\r\n *ngIf=\"errorMessage\"\r\n >\r\n <span class=\"material-icons\">report</span>\r\n <p id=\"alert-msg\">{{ errorMessage }}</p>\r\n </div>\r\n <div\r\n id=\"info-div\"\r\n *ngIf=\"infoMessageToRedirectLogin\"\r\n >\r\n <i class=\"mi mdi-info\"></i>\r\n <p>{{ infoMessageToRedirectLogin }}</p>\r\n </div>\r\n\r\n <input\r\n *ngIf=\"!infoMessageToRedirectLogin\"\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"email\"\r\n [placeholder]=\"\r\n consumingProjectSSOLoginService?.isSsoIntegrated\r\n ? constants.enterUserCode\r\n : constants.enterEmail\r\n \"\r\n [ngClass]=\"{\r\n 'input-invalid':\r\n verifyRegisteredEmail.get('email')?.dirty && verifyRegisteredEmail.get('email')?.errors\r\n }\"\r\n />\r\n\r\n <button\r\n tabindex=\"2\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"isLoading\"\r\n (click)=\"onLoginOrGetOtpButtonClick()\"\r\n [spinnerButtonText]=\"infoMessageToRedirectLogin ? constants.login : constants.forgotPasswordButton\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template> </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n", styles: ["@keyframes show{0%{opacity:0}50%{opacity:.5}to{opacity:1}}html{overflow-y:scroll}.main{background-color:#fff;background-size:cover;font-family:Roboto;height:calc(100vh - 50px)}section{top:45%;left:50%;position:absolute;transform:translate(-50%,-50%);width:20.875rem;animation:show .5s 1;-moz-animation:show .5s 1}.container{width:100%;height:100%;overflow:auto}header{height:auto;width:100%;text-align:center}article{margin-top:.9375rem;margin-bottom:.9375rem;border:1px solid #979797;background-color:#f4f4f4;padding:2rem 1.375rem;border-radius:.375rem;box-shadow:0 .125rem .4375rem #0000001a}article .sub-title{color:#6e6e6e;font-family:Roboto;font-size:1.25rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}article #heading{color:#212121;text-align:center;margin-bottom:1.5rem;font-family:Roboto;font-size:1.125rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}p{text-align:center;margin-bottom:1rem}#alert-div{padding:.3125rem 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3;justify-content:left;align-items:center;display:flex}#alert-div .material-icons{color:#f44336;font-size:1rem;margin-left:.5rem}#alert-div p{margin-left:4px!important;margin:0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}#info-div{padding:6px 0;margin-bottom:.75rem;border-radius:.25rem;border:1px solid #268bff;background:#e3f0ff}#info-div .mdi-info{color:#268bff;font-size:1rem;margin-left:6px}#info-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}footer{align-items:baseline;color:#6e6e6e;opacity:.9;display:flex;font-family:Ubuntu;font-size:1.25rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;justify-content:center}footer span{font-size:1.5625rem;margin-left:.25rem}input[type=password],input[type=text],input[type=number]{width:100%;height:30px;padding:.75rem 1rem;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}.login-btn{width:100%;height:2.5rem;border:0;color:#fff;background-color:#268bff;border-radius:.375rem;font-size:1rem}.login-btn:hover{background-color:#4099ff;cursor:pointer}.login-btn:disabled{background-color:#ccc;color:#fff;cursor:not-allowed}.input-invalid{border:1px solid #fe3824!important}input[type=password].ng-dirty.ng-invalid,input[type=text].ng-dirty.ng-invalid{border:1px solid #fe3824}input[type=submit]:focus,input[type=password]:focus,input[type=text]:focus,input[type=checkbox]:focus,button:focus{outline:none}input::placeholder{color:#a4a4a4}:host ::ng-deep .verison-and-policy{color:#8bac2a}p{color:#4a4a4a;font-family:Roboto;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}input[type=text]{margin-bottom:16px}input[type=text]:focus{box-shadow:none}.back-btn{font-size:27px;position:relative;color:#268bff;float:left;top:-30px;left:-15px;font-weight:400!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: SpinnerButtonDirective, selector: "[anna-cognito-lib-SpinnerButton]", inputs: ["anna-cognito-lib-SpinnerButton", "spinnerButtonText"] }, { kind: "component", type: PoweredByLogoTemplateComponent, selector: "anna-cognito-lib-powered-by-logo-template" }, { kind: "component", type: SurewavesYearLogoComponent, selector: "anna-cognito-lib-surewaves-year-logo" }, { kind: "component", type: VersionAndTermPolicyComponent, selector: "anna-cognito-lib-version-and-term-policy" }] });
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
112
+ type: Component,
113
+ args: [{ selector: 'anna-cognito-lib-forgot-password', standalone: true, imports: [
114
+ FormsModule,
115
+ ReactiveFormsModule,
116
+ NgIf,
117
+ NgClass,
118
+ SpinnerButtonDirective,
119
+ PoweredByLogoTemplateComponent,
120
+ SurewavesYearLogoComponent,
121
+ VersionAndTermPolicyComponent,
122
+ ], template: "<div class=\"main\">\r\n <section>\r\n <header>\r\n <img\r\n [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\"\r\n alt=\"Anna Logo\"\r\n />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"verifyRegisteredEmail\">\r\n <ng-container *ngIf=\"!infoMessageToRedirectLogin\">\r\n <div id=\"heading\">\r\n {{ constants.forgotPasswordHeading }}\r\n </div>\r\n <p>\r\n {{\r\n consumingProjectSSOLoginService?.isSsoIntegrated\r\n ? constants.PleaseEnterYourUsercodeMessage\r\n : constants.PleaseEnterYourUsernameMessage\r\n }}\r\n </p>\r\n </ng-container>\r\n <div\r\n id=\"alert-div\"\r\n *ngIf=\"errorMessage\"\r\n >\r\n <span class=\"material-icons\">report</span>\r\n <p id=\"alert-msg\">{{ errorMessage }}</p>\r\n </div>\r\n <div\r\n id=\"info-div\"\r\n *ngIf=\"infoMessageToRedirectLogin\"\r\n >\r\n <i class=\"mi mdi-info\"></i>\r\n <p>{{ infoMessageToRedirectLogin }}</p>\r\n </div>\r\n\r\n <input\r\n *ngIf=\"!infoMessageToRedirectLogin\"\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"email\"\r\n [placeholder]=\"\r\n consumingProjectSSOLoginService?.isSsoIntegrated\r\n ? constants.enterUserCode\r\n : constants.enterEmail\r\n \"\r\n [ngClass]=\"{\r\n 'input-invalid':\r\n verifyRegisteredEmail.get('email')?.dirty && verifyRegisteredEmail.get('email')?.errors\r\n }\"\r\n />\r\n\r\n <button\r\n tabindex=\"2\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"isLoading\"\r\n (click)=\"onLoginOrGetOtpButtonClick()\"\r\n [spinnerButtonText]=\"infoMessageToRedirectLogin ? constants.login : constants.forgotPasswordButton\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template> </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n", styles: ["@keyframes show{0%{opacity:0}50%{opacity:.5}to{opacity:1}}html{overflow-y:scroll}.main{background-color:#fff;background-size:cover;font-family:Roboto;height:calc(100vh - 50px)}section{top:45%;left:50%;position:absolute;transform:translate(-50%,-50%);width:20.875rem;animation:show .5s 1;-moz-animation:show .5s 1}.container{width:100%;height:100%;overflow:auto}header{height:auto;width:100%;text-align:center}article{margin-top:.9375rem;margin-bottom:.9375rem;border:1px solid #979797;background-color:#f4f4f4;padding:2rem 1.375rem;border-radius:.375rem;box-shadow:0 .125rem .4375rem #0000001a}article .sub-title{color:#6e6e6e;font-family:Roboto;font-size:1.25rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}article #heading{color:#212121;text-align:center;margin-bottom:1.5rem;font-family:Roboto;font-size:1.125rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}p{text-align:center;margin-bottom:1rem}#alert-div{padding:.3125rem 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3;justify-content:left;align-items:center;display:flex}#alert-div .material-icons{color:#f44336;font-size:1rem;margin-left:.5rem}#alert-div p{margin-left:4px!important;margin:0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}#info-div{padding:6px 0;margin-bottom:.75rem;border-radius:.25rem;border:1px solid #268bff;background:#e3f0ff}#info-div .mdi-info{color:#268bff;font-size:1rem;margin-left:6px}#info-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}footer{align-items:baseline;color:#6e6e6e;opacity:.9;display:flex;font-family:Ubuntu;font-size:1.25rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;justify-content:center}footer span{font-size:1.5625rem;margin-left:.25rem}input[type=password],input[type=text],input[type=number]{width:100%;height:30px;padding:.75rem 1rem;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}.login-btn{width:100%;height:2.5rem;border:0;color:#fff;background-color:#268bff;border-radius:.375rem;font-size:1rem}.login-btn:hover{background-color:#4099ff;cursor:pointer}.login-btn:disabled{background-color:#ccc;color:#fff;cursor:not-allowed}.input-invalid{border:1px solid #fe3824!important}input[type=password].ng-dirty.ng-invalid,input[type=text].ng-dirty.ng-invalid{border:1px solid #fe3824}input[type=submit]:focus,input[type=password]:focus,input[type=text]:focus,input[type=checkbox]:focus,button:focus{outline:none}input::placeholder{color:#a4a4a4}:host ::ng-deep .verison-and-policy{color:#8bac2a}p{color:#4a4a4a;font-family:Roboto;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}input[type=text]{margin-bottom:16px}input[type=text]:focus{box-shadow:none}.back-btn{font-size:27px;position:relative;color:#268bff;float:left;top:-30px;left:-15px;font-weight:400!important}\n"] }]
123
+ }], ctorParameters: function () { return [{ type: i1.AnnaLibAuthService }, { type: i2.FormBuilder }, { type: i3.ToastrService }, { type: i4.Router }, { type: undefined, decorators: [{
124
+ type: Inject,
125
+ args: [CONFIG_SERVICE_TOKEN]
126
+ }] }, { type: undefined, decorators: [{
127
+ type: Inject,
128
+ args: [AUTH_SERVICE_TOKEN]
129
+ }] }, { type: undefined, decorators: [{
130
+ type: Inject,
131
+ args: [SSO_LOGIN_SERVICE_TOKEN]
132
+ }] }]; } });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29nbml0by1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZm9yZ290LXBhc3N3b3JkL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEcsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBeUIsTUFBTSxNQUFNLENBQUM7QUFFdkQsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQWtCLE1BQU0sbUNBQW1DLENBQUM7QUFDekYsT0FBTyxFQUFFLGtCQUFrQixFQUFnQixNQUFNLGlDQUFpQyxDQUFDO0FBQ25GLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRyxP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UUFBUSxDQUFDLENBQUM7YUFDMUQ7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsaUNBQWlDLENBQUM7YUFDdEY7U0FDSjthQUFNO1lBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztTQUNuRDtJQUNMLENBQUM7O3FIQTNGUSx1QkFBdUIsa0lBZXBCLG9CQUFvQixhQUNwQixrQkFBa0IsYUFDbEIsdUJBQXVCO3lHQWpCMUIsdUJBQXVCLDRGQ3ZDcEMsb2lHQXlFQSxxc0dENUNRLFdBQVcsMnBCQUNYLG1CQUFtQixnVkFDbkIsSUFBSSw2RkFDSixPQUFPLG9GQUNQLHNCQUFzQiw4SUFDdEIsOEJBQThCLHNGQUM5QiwwQkFBMEIsaUZBQzFCLDZCQUE2Qjs0RkFHeEIsdUJBQXVCO2tCQWhCbkMsU0FBUzsrQkFDSSxrQ0FBa0MsY0FHaEMsSUFBSSxXQUNQO3dCQUNMLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixJQUFJO3dCQUNKLE9BQU87d0JBQ1Asc0JBQXNCO3dCQUN0Qiw4QkFBOEI7d0JBQzlCLDBCQUEwQjt3QkFDMUIsNkJBQTZCO3FCQUNoQzs7MEJBaUJJLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXIgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIGNhdGNoRXJyb3IsIHBpcGUsIG1hcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuLy8gVXNlciBkZWZpbmVkIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IFVzZXJuYW1lSW5mbywgVXNlclN0YXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F1dGgubW9kZWwnO1xyXG5pbXBvcnQgeyBBbm5hTGliQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dpbkNvbnN0YW50IH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2xvZ2luQ29uc3RhbnQnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDT05GSUdfU0VSVklDRV9UT0tFTiwgSUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb25maWcvY29uZmlnLXNlcnZpY2UudG9rZW4nO1xyXG5pbXBvcnQgeyBBVVRIX1NFUlZJQ0VfVE9LRU4sIElBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbmZpZy9hdXRoLXNlcnZpY2UudG9rZW4nO1xyXG5pbXBvcnQgeyBJU1NPTG9naW5TZXJ2aWNlLCBTU09fTE9HSU5fU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uL2NvbmZpZy9zc28tbG9naW4tc2VydmljZS50b2tlbic7XHJcbmltcG9ydCB7IFZlcnNpb25BbmRUZXJtUG9saWN5Q29tcG9uZW50IH0gZnJvbSAnLi4vdmVyc2lvbi1hbmQtdGVybS1wb2xpY3kvdmVyc2lvbi1hbmQtdGVybS1wb2xpY3kuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3VyZXdhdmVzWWVhckxvZ29Db21wb25lbnQgfSBmcm9tICcuLi9zdXJld2F2ZXMteWVhci1sb2dvL3N1cmV3YXZlcy15ZWFyLWxvZ28uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUG93ZXJlZEJ5TG9nb1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vcG93ZXJlZC1ieS1sb2dvLXRlbXBsYXRlL3Bvd2VyZWQtYnktbG9nby10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcGlubmVyQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9zcGlubmVyLWJ1dHRvbi9zcGlubmVyLWJ1dHRvbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbnR5cGUgcGFzc3dvcmRUeXBlID0geyB2YWx1ZTogc3RyaW5nOyBzdGF0dXM6IHN0cmluZyB9O1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYW5uYS1jb2duaXRvLWxpYi1mb3Jnb3QtcGFzc3dvcmQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgICAgICBOZ0lmLFxyXG4gICAgICAgIE5nQ2xhc3MsXHJcbiAgICAgICAgU3Bpbm5lckJ1dHRvbkRpcmVjdGl2ZSxcclxuICAgICAgICBQb3dlcmVkQnlMb2dvVGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICAgICAgU3VyZXdhdmVzWWVhckxvZ29Db21wb25lbnQsXHJcbiAgICAgICAgVmVyc2lvbkFuZFRlcm1Qb2xpY3lDb21wb25lbnQsXHJcbiAgICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9yZ290UGFzc3dvcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlSZWdpc3RlcmVkRW1haWw6IEZvcm1Hcm91cDtcclxuICAgIHBhc3N3b3JkTm90TWF0Y2hpbmcgPSBmYWxzZTtcclxuICAgIGNvbnN0YW50czogdHlwZW9mIExvZ2luQ29uc3RhbnQ7XHJcbiAgICBwYXNzd29yZDogcGFzc3dvcmRUeXBlID0geyB2YWx1ZTogbnVsbCwgc3RhdHVzOiBudWxsIH07XHJcbiAgICBjb25maXJtUGFzc3dvcmQ6IHBhc3N3b3JkVHlwZSA9IHsgdmFsdWU6IG51bGwsIHN0YXR1czogbnVsbCB9O1xyXG4gICAgaW5mb01lc3NhZ2VUb1JlZGlyZWN0TG9naW46IHN0cmluZyA9IG51bGw7XHJcbiAgICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBbm5hTGliQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBASW5qZWN0KENPTkZJR19TRVJWSUNFX1RPS0VOKSBwdWJsaWMgY29uc3VtaW5nUHJvamVjdENvbmZpZ1NlcnZpY2U6IElDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoQVVUSF9TRVJWSUNFX1RPS0VOKSBwdWJsaWMgY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlOiBJQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChTU09fTE9HSU5fU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2U6IElTU09Mb2dpblNlcnZpY2UsXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbmZvTWVzc2FnZVRvUmVkaXJlY3RMb2dpbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jb25zdGFudHMgPSBMb2dpbkNvbnN0YW50O1xyXG4gICAgICAgIHRoaXMub25JbnRpYWxpc2VGb3JtKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnVzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25VcGRhdGVGb3JtKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZm9yZ290UGFzc3dvcmRBbmRHbG9iYWxTaWdub3V0TG9hZGVyID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgb25JbnRpYWxpc2VGb3JtKCkge1xyXG4gICAgICAgIHRoaXMudmVyaWZ5UmVnaXN0ZXJlZEVtYWlsID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIGVtYWlsOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblVwZGF0ZUZvcm0oKSB7XHJcbiAgICAgICAgdGhpcy52ZXJpZnlSZWdpc3RlcmVkRW1haWwucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgIGVtYWlsOiB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS51c2VyTmFtZSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpc0Zvcm1WYWxpZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy52ZXJpZnlSZWdpc3RlcmVkRW1haWwudmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgb25Mb2dpbk9yR2V0T3RwQnV0dG9uQ2xpY2soKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5mb01lc3NhZ2VUb1JlZGlyZWN0TG9naW4pIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQubG9naW5QYWdlVXJsXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vblZlcmlmeVJlZ2lzdGVyZWRFbWFpbCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblZlcmlmeVJlZ2lzdGVyZWRFbWFpbCgpIHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaW5mb01lc3NhZ2VUb1JlZGlyZWN0TG9naW4gPSBudWxsO1xyXG4gICAgICAgIGxldCB1c2VybmFtZSA9IHRoaXMudmVyaWZ5UmVnaXN0ZXJlZEVtYWlsLmNvbnRyb2xzWydlbWFpbCddLnZhbHVlO1xyXG5cclxuICAgICAgICBsZXQgaXNVc2VybmFtZUF2YWlsYWJsZSA9IHRoaXMuYXV0aFNlcnZpY2UuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLmlzVXNlcm5hbWVBdmFpbGFibGUodXNlcm5hbWUpO1xyXG4gICAgICAgIGxldCBpc1VzZXJuYW1lVGVtcFBhc3N3b3JkU2V0ID0gdGhpcy5hdXRoU2VydmljZS5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuZ2V0VXNlclN0YXRlKHVzZXJuYW1lKTtcclxuXHJcbiAgICAgICAgZm9ya0pvaW4oW2lzVXNlcm5hbWVBdmFpbGFibGUsIGlzVXNlcm5hbWVUZW1wUGFzc3dvcmRTZXRdKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaXNVc2VybmFtZUF2YWlsYWJsZSA9IG5ldyBVc2VybmFtZUluZm8ocmVzdWx0WzBdKS5pc1VzZXJuYW1lQXZhaWxhYmxlO1xyXG4gICAgICAgICAgICAgICAgbGV0IGlzVXNlcldpdGhUZW1wUGFzc3dvcmQgPSBuZXcgVXNlclN0YXRlKHJlc3VsdFsxXSkuaXNVc2VyV2l0aFRlbXBQYXNzd29yZDtcclxuICAgICAgICAgICAgICAgIHRoaXMub25HZXR0aW5nVXNlclN0YXR1cyhpc1VzZXJuYW1lQXZhaWxhYmxlLCBpc1VzZXJXaXRoVGVtcFBhc3N3b3JkLCB1c2VybmFtZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jb25zdGFudHMudXNlck5vdEZvdW5kO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihMb2dpbkNvbnN0YW50LmFwaUZhaWxFcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkdldHRpbmdVc2VyU3RhdHVzKGlzVXNlcm5hbWVBdmFpbGFibGU6IGJvb2xlYW4sIGlzVXNlcldpdGhUZW1wUGFzc3dvcmQ6IGJvb2xlYW4sIHVzZXJuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIWlzVXNlcm5hbWVBdmFpbGFibGUpIHtcclxuICAgICAgICAgICAgaWYgKCFpc1VzZXJXaXRoVGVtcFBhc3N3b3JkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLm9uRm9yZ290UGFzc3dvcmRHZW5lcmF0ZU9UUCh1c2VybmFtZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluZm9NZXNzYWdlVG9SZWRpcmVjdExvZ2luID0gdGhpcy5jb25zdGFudHMuZmlyc3RUaW1lTG9naW5Vc2VyVGVtcFBhc3N3b3JkTXNnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmNvbnN0YW50cy51c2VyTm90Rm91bmQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtYWluXCI+XHJcbiAgICA8c2VjdGlvbj5cclxuICAgICAgICA8aGVhZGVyPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImNvbnN1bWluZ1Byb2plY3RDb25maWdTZXJ2aWNlLmFwcEdlbmVyaWNDb25maWcubG9naW5QYWdlTG9nb0ltZ1VybFwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJBbm5hIExvZ29cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvaGVhZGVyPlxyXG4gICAgICAgIDxhcnRpY2xlPlxyXG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInZlcmlmeVJlZ2lzdGVyZWRFbWFpbFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbmZvTWVzc2FnZVRvUmVkaXJlY3RMb2dpblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbnN0YW50cy5mb3Jnb3RQYXNzd29yZEhlYWRpbmcgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2U/LmlzU3NvSW50ZWdyYXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29uc3RhbnRzLlBsZWFzZUVudGVyWW91clVzZXJjb2RlTWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnRzLlBsZWFzZUVudGVyWW91clVzZXJuYW1lTWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYWxlcnQtZGl2XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVycm9yTWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnJlcG9ydDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBpZD1cImFsZXJ0LW1zZ1wiPnt7IGVycm9yTWVzc2FnZSB9fTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaW5mby1kaXZcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaW5mb01lc3NhZ2VUb1JlZGlyZWN0TG9naW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWkgbWRpLWluZm9cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+e3sgaW5mb01lc3NhZ2VUb1JlZGlyZWN0TG9naW4gfX08L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpbmZvTWVzc2FnZVRvUmVkaXJlY3RMb2dpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtaW5nUHJvamVjdFNTT0xvZ2luU2VydmljZT8uaXNTc29JbnRlZ3JhdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbnN0YW50cy5lbnRlclVzZXJDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50cy5lbnRlckVtYWlsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdpbnB1dC1pbnZhbGlkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlmeVJlZ2lzdGVyZWRFbWFpbC5nZXQoJ2VtYWlsJyk/LmRpcnR5ICYmIHZlcmlmeVJlZ2lzdGVyZWRFbWFpbC5nZXQoJ2VtYWlsJyk/LmVycm9yc1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxvZ2luLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FubmEtY29nbml0by1saWItU3Bpbm5lckJ1dHRvbl09XCJpc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkxvZ2luT3JHZXRPdHBCdXR0b25DbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3Bpbm5lckJ1dHRvblRleHRdPVwiaW5mb01lc3NhZ2VUb1JlZGlyZWN0TG9naW4gPyBjb25zdGFudHMubG9naW4gOiBjb25zdGFudHMuZm9yZ290UGFzc3dvcmRCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9hcnRpY2xlPlxyXG4gICAgICAgIDxmb290ZXI+XHJcbiAgICAgICAgICAgIDxhbm5hLWNvZ25pdG8tbGliLXBvd2VyZWQtYnktbG9nby10ZW1wbGF0ZT4gPC9hbm5hLWNvZ25pdG8tbGliLXBvd2VyZWQtYnktbG9nby10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Zvb3Rlcj5cclxuICAgIDwvc2VjdGlvbj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwicGFnZS1mb290ZXJcIj5cclxuICAgIDxhbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+PC9hbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+XHJcbiAgICA8YW5uYS1jb2duaXRvLWxpYi12ZXJzaW9uLWFuZC10ZXJtLXBvbGljeT48L2FubmEtY29nbml0by1saWItdmVyc2lvbi1hbmQtdGVybS1wb2xpY3k+XHJcbjwvZGl2PlxyXG4iXX0=