@testgorilla/tgo-ui 0.0.24 → 0.0.25

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/.github/README.md CHANGED
@@ -46,7 +46,19 @@ In order to update the existing snapshots, we need to use DOCKER to update, sinc
46
46
  ```
47
47
  docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:latest /bin/bash
48
48
  npm install
49
- npx playwright test e2e/common.spec.ts --update-snapshots
49
+ npx playwright install
50
+ npx playwright test e2e/<file_name>.spec.ts --update-snapshots
51
+ ```
52
+
53
+ if you see the following error, you can skip them conviniently. This will not affect the tests, just that we will have the reports in same directory. We need the reports to be in a single directory to store artifacts in CI. So we can ignore them.
54
+ ```
55
+ root@docker-desktop:/work# npx playwright test e2e/common.spec.ts --update-snapshots
56
+ Configuration Error: HTML reporter output folder clashes with the tests output folder:
57
+
58
+ html reporter folder: /work/test-results/html-report
59
+ test results folder: /work/test-results
60
+
61
+ HTML reporter will clear its output directory prior to being generated, which will lead to the artifact loss.
50
62
  ```
51
63
 
52
64
  In order to execute the visual tests, we need to use same docker so that the screenshots are aligned with the same OS.
@@ -54,7 +66,8 @@ In order to execute the visual tests, we need to use same docker so that the scr
54
66
  ```
55
67
  docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:latest /bin/bash
56
68
  npm install
57
- npx playwright test e2e/common.spec.ts
69
+ npx playwright install
70
+ npx playwright test e2e/<file_name>.spec.ts
58
71
  ```
59
72
 
60
73
  Currently we are using `toMatchSnapshot` instead of the latest `toHaveScreenshot` from playwright. Since `toHaveScreenshot` doesn't support firefox now, we are going ahead with `toMatchSnapshot`. In (near) future once it supports firefox, we will be using the latest `toHaveScreenshot` method.
package/README.md CHANGED
@@ -8,11 +8,11 @@
8
8
  * Create Password
9
9
  * Field
10
10
  * Forgot Password
11
+ * Label
11
12
  * Login
12
13
  * Logo
13
14
  * NavBar
14
15
  * Navigation
15
16
  * Paginator
16
17
  * Create Account
17
- * Status
18
18
  * Table
@@ -4,6 +4,7 @@ export declare const LOGIN_i18n: {
4
4
  password_placeholder: string;
5
5
  remember_me: string;
6
6
  forgot_password: string;
7
+ button_label: string;
7
8
  not_have_account: string;
8
9
  create_account: string;
9
10
  };
@@ -9,6 +9,7 @@ export interface Ii18nLogin {
9
9
  password_placeholder: string;
10
10
  remember_me: string;
11
11
  forgot_password: string;
12
+ button_label: string;
12
13
  not_have_account: string;
13
14
  create_account: string;
14
15
  }
@@ -9,10 +9,10 @@ export class CardComponent {
9
9
  }
10
10
  }
11
11
  CardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CardComponent, selector: "ui-card", inputs: { title: "title", subTitle: "subTitle" }, ngImport: i0, template: "<mat-card class=\"container\">\n <ui-logo class=\"logo\"></ui-logo>\n <mat-card-title>{{title}}</mat-card-title>\n <mat-card-subtitle>{{subTitle}}</mat-card-subtitle>\n</mat-card>\n", styles: [".container{width:672px;box-sizing:border-box;padding:80px!important}.container .logo{margin-bottom:40px}.container .mat-card-title{margin-bottom:24px;font-weight:700;font-size:22px;line-height:135%}.container .mat-card-subtitle{color:#000;font-weight:400;font-size:16px;line-height:135%}\n"], components: [{ type: i1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i2.LogoComponent, selector: "ui-logo" }], directives: [{ type: i1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12
+ CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CardComponent, selector: "ui-card", inputs: { title: "title", subTitle: "subTitle" }, ngImport: i0, template: "<mat-card class=\"container\">\n <ui-logo class=\"logo\"></ui-logo>\n <mat-card-title>{{title}}</mat-card-title>\n <mat-card-subtitle>{{subTitle}}</mat-card-subtitle>\n</mat-card>\n", styles: [".container{width:672px;box-sizing:border-box;padding:80px!important}.container .logo{margin-bottom:40px}.container .mat-card-title{margin-bottom:24px;font-weight:700;font-size:22px;line-height:135%;width:100%;word-wrap:break-word}.container .mat-card-subtitle{color:#000;font-weight:400;font-size:16px;line-height:135%}\n"], components: [{ type: i1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i2.LogoComponent, selector: "ui-logo" }], directives: [{ type: i1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CardComponent, decorators: [{
14
14
  type: Component,
15
- args: [{ selector: 'ui-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"container\">\n <ui-logo class=\"logo\"></ui-logo>\n <mat-card-title>{{title}}</mat-card-title>\n <mat-card-subtitle>{{subTitle}}</mat-card-subtitle>\n</mat-card>\n", styles: [".container{width:672px;box-sizing:border-box;padding:80px!important}.container .logo{margin-bottom:40px}.container .mat-card-title{margin-bottom:24px;font-weight:700;font-size:22px;line-height:135%}.container .mat-card-subtitle{color:#000;font-weight:400;font-size:16px;line-height:135%}\n"] }]
15
+ args: [{ selector: 'ui-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"container\">\n <ui-logo class=\"logo\"></ui-logo>\n <mat-card-title>{{title}}</mat-card-title>\n <mat-card-subtitle>{{subTitle}}</mat-card-subtitle>\n</mat-card>\n", styles: [".container{width:672px;box-sizing:border-box;padding:80px!important}.container .logo{margin-bottom:40px}.container .mat-card-title{margin-bottom:24px;font-weight:700;font-size:22px;line-height:135%;width:100%;word-wrap:break-word}.container .mat-card-subtitle{color:#000;font-weight:400;font-size:16px;line-height:135%}\n"] }]
16
16
  }], propDecorators: { title: [{
17
17
  type: Input
18
18
  }], subTitle: [{
@@ -85,10 +85,10 @@ export class LoginComponent {
85
85
  }
86
86
  }
87
87
  LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LoginComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
88
- LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: LoginComponent, selector: "ui-login", inputs: { loading: "loading", i18n: "i18n" }, outputs: { submitEvent: "submitEvent", forgotPasswordEvent: "forgotPasswordEvent", createAccountEvent: "createAccountEvent" }, ngImport: i0, template: "<div class=\"form-box\">\n <ui-logo></ui-logo>\n <div class=\"title\">{{ i18n.title }}</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field\n formControlName=\"email\"\n [placeholder]=\"i18n.email_placeholder\"\n [type]=\"'email'\"\n [required]=\"true\"\n [error]=\"formErrors.email\"\n (ngModelChange)=\"checkErrors('email')\"\n ></ui-field>\n </div>\n <div class=\"field\">\n <ui-field\n formControlName=\"password\"\n [placeholder]=\"i18n.password_placeholder\"\n [type]=\"'password'\"\n [required]=\"true\"\n [error]=\"formErrors.password\"\n (ngModelChange)=\"checkErrors('password')\"\n ></ui-field>\n </div>\n <div class=\"row space-between\">\n <div>\n <mat-checkbox formControlName=\"remember_me\">{{ i18n.remember_me }}</mat-checkbox>\n </div>\n <div class=\"forgot-password\" (click)=\"forgotPassword()\">{{ i18n.forgot_password }}</div>\n </div>\n <div class=\"submit-button\">\n <ui-button\n [label]=\"'Log in'\"\n [disabled]=\"loginForm.invalid\"\n [fullWidth]=\"true\"\n [loading]=\"loading\"\n (onClickEvent)=\"submit()\"\n ></ui-button>\n </div>\n <div>\n {{ i18n.not_have_account }}\n <span class=\"create-account\" (click)=\"createAccount()\">{{ i18n.create_account }}</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .title{font-weight:700;font-size:22px;line-height:29.7px;margin:40px 0 24px}.form-box .field{width:100%}.form-box .submit-button{margin:40px 0 24px}.form-box mat-checkbox{font-weight:400}.form-box .forgot-password,.form-box .create-account{font-weight:600;font-size:15px;cursor:pointer}.form-box .forgot-password:hover,.form-box .create-account:hover{text-decoration:underline}.form-box .create-account{color:#46a997}.row{display:flex;flex-direction:row;margin-top:3px}.row.space-between{justify-content:space-between}\n"], components: [{ type: i2.LogoComponent, selector: "ui-logo" }, { type: i3.FieldComponent, selector: "ui-field", inputs: ["label", "preffixIcon", "suffixIcon", "required", "hint", "error", "placeholder", "type"] }, { type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i5.ButtonComponent, selector: "ui-button", inputs: ["color", "label", "iconPosition", "iconName", "disabled", "loading", "fullWidth"], outputs: ["onClickEvent"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
88
+ LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: LoginComponent, selector: "ui-login", inputs: { loading: "loading", i18n: "i18n" }, outputs: { submitEvent: "submitEvent", forgotPasswordEvent: "forgotPasswordEvent", createAccountEvent: "createAccountEvent" }, ngImport: i0, template: "<div class=\"form-box\">\n <ui-logo></ui-logo>\n <div class=\"title\">{{ i18n.title }}</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field\n formControlName=\"email\"\n [placeholder]=\"i18n.email_placeholder\"\n [type]=\"'email'\"\n [required]=\"true\"\n [error]=\"formErrors.email\"\n (ngModelChange)=\"checkErrors('email')\"\n ></ui-field>\n </div>\n <div class=\"field\">\n <ui-field\n formControlName=\"password\"\n [placeholder]=\"i18n.password_placeholder\"\n [type]=\"'password'\"\n [required]=\"true\"\n [error]=\"formErrors.password\"\n (ngModelChange)=\"checkErrors('password')\"\n ></ui-field>\n </div>\n <div class=\"row space-between\">\n <div>\n <mat-checkbox formControlName=\"remember_me\">{{ i18n.remember_me }}</mat-checkbox>\n </div>\n <div class=\"forgot-password\" (click)=\"forgotPassword()\">{{ i18n.forgot_password }}</div>\n </div>\n <div class=\"submit-button\">\n <ui-button\n [label]=\"i18n.button_label\"\n [disabled]=\"loginForm.invalid\"\n [fullWidth]=\"true\"\n [loading]=\"loading\"\n (onClickEvent)=\"submit()\"\n ></ui-button>\n </div>\n <div>\n {{ i18n.not_have_account }}\n <span class=\"create-account\" (click)=\"createAccount()\">{{ i18n.create_account }}</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .title{font-weight:700;font-size:22px;line-height:29.7px;margin:40px 0 24px}.form-box .field{width:100%}.form-box .submit-button{margin:40px 0 24px}.form-box mat-checkbox{font-weight:400}.form-box .forgot-password,.form-box .create-account{font-weight:600;font-size:15px;cursor:pointer}.form-box .forgot-password:hover,.form-box .create-account:hover{text-decoration:underline}.form-box .create-account{color:#46a997}.row{display:flex;flex-direction:row;margin-top:3px}.row.space-between{justify-content:space-between}\n"], components: [{ type: i2.LogoComponent, selector: "ui-logo" }, { type: i3.FieldComponent, selector: "ui-field", inputs: ["label", "preffixIcon", "suffixIcon", "required", "hint", "error", "placeholder", "type"] }, { type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i5.ButtonComponent, selector: "ui-button", inputs: ["color", "label", "iconPosition", "iconName", "disabled", "loading", "fullWidth"], outputs: ["onClickEvent"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
89
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LoginComponent, decorators: [{
90
90
  type: Component,
91
- args: [{ selector: 'ui-login', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-box\">\n <ui-logo></ui-logo>\n <div class=\"title\">{{ i18n.title }}</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field\n formControlName=\"email\"\n [placeholder]=\"i18n.email_placeholder\"\n [type]=\"'email'\"\n [required]=\"true\"\n [error]=\"formErrors.email\"\n (ngModelChange)=\"checkErrors('email')\"\n ></ui-field>\n </div>\n <div class=\"field\">\n <ui-field\n formControlName=\"password\"\n [placeholder]=\"i18n.password_placeholder\"\n [type]=\"'password'\"\n [required]=\"true\"\n [error]=\"formErrors.password\"\n (ngModelChange)=\"checkErrors('password')\"\n ></ui-field>\n </div>\n <div class=\"row space-between\">\n <div>\n <mat-checkbox formControlName=\"remember_me\">{{ i18n.remember_me }}</mat-checkbox>\n </div>\n <div class=\"forgot-password\" (click)=\"forgotPassword()\">{{ i18n.forgot_password }}</div>\n </div>\n <div class=\"submit-button\">\n <ui-button\n [label]=\"'Log in'\"\n [disabled]=\"loginForm.invalid\"\n [fullWidth]=\"true\"\n [loading]=\"loading\"\n (onClickEvent)=\"submit()\"\n ></ui-button>\n </div>\n <div>\n {{ i18n.not_have_account }}\n <span class=\"create-account\" (click)=\"createAccount()\">{{ i18n.create_account }}</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .title{font-weight:700;font-size:22px;line-height:29.7px;margin:40px 0 24px}.form-box .field{width:100%}.form-box .submit-button{margin:40px 0 24px}.form-box mat-checkbox{font-weight:400}.form-box .forgot-password,.form-box .create-account{font-weight:600;font-size:15px;cursor:pointer}.form-box .forgot-password:hover,.form-box .create-account:hover{text-decoration:underline}.form-box .create-account{color:#46a997}.row{display:flex;flex-direction:row;margin-top:3px}.row.space-between{justify-content:space-between}\n"] }]
91
+ args: [{ selector: 'ui-login', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-box\">\n <ui-logo></ui-logo>\n <div class=\"title\">{{ i18n.title }}</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field\n formControlName=\"email\"\n [placeholder]=\"i18n.email_placeholder\"\n [type]=\"'email'\"\n [required]=\"true\"\n [error]=\"formErrors.email\"\n (ngModelChange)=\"checkErrors('email')\"\n ></ui-field>\n </div>\n <div class=\"field\">\n <ui-field\n formControlName=\"password\"\n [placeholder]=\"i18n.password_placeholder\"\n [type]=\"'password'\"\n [required]=\"true\"\n [error]=\"formErrors.password\"\n (ngModelChange)=\"checkErrors('password')\"\n ></ui-field>\n </div>\n <div class=\"row space-between\">\n <div>\n <mat-checkbox formControlName=\"remember_me\">{{ i18n.remember_me }}</mat-checkbox>\n </div>\n <div class=\"forgot-password\" (click)=\"forgotPassword()\">{{ i18n.forgot_password }}</div>\n </div>\n <div class=\"submit-button\">\n <ui-button\n [label]=\"i18n.button_label\"\n [disabled]=\"loginForm.invalid\"\n [fullWidth]=\"true\"\n [loading]=\"loading\"\n (onClickEvent)=\"submit()\"\n ></ui-button>\n </div>\n <div>\n {{ i18n.not_have_account }}\n <span class=\"create-account\" (click)=\"createAccount()\">{{ i18n.create_account }}</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .title{font-weight:700;font-size:22px;line-height:29.7px;margin:40px 0 24px}.form-box .field{width:100%}.form-box .submit-button{margin:40px 0 24px}.form-box mat-checkbox{font-weight:400}.form-box .forgot-password,.form-box .create-account{font-weight:600;font-size:15px;cursor:pointer}.form-box .forgot-password:hover,.form-box .create-account:hover{text-decoration:underline}.form-box .create-account{color:#46a997}.row{display:flex;flex-direction:row;margin-top:3px}.row.space-between{justify-content:space-between}\n"] }]
92
92
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { loading: [{
93
93
  type: Input
94
94
  }], i18n: [{
@@ -100,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
100
100
  }], createAccountEvent: [{
101
101
  type: Output
102
102
  }] } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBUzlDLE1BQU0sT0FBTyxjQUFjO0lBd0R6QixZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQXZEbkMsbUhBQW1IO1FBQ25ILHdEQUF3RDtRQUN4RCx3REFBd0Q7UUFFeEQ7O1dBRUc7UUFDSCxjQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDeEIsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQztTQUNyQixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNILGVBQVUsR0FBRztZQUNYLEtBQUssRUFBRSxFQUFFO1lBQ1QsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO1FBRUY7Ozs7V0FJRztRQUNNLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFekI7Ozs7V0FJRztRQUNNLFNBQUksR0FBZSxVQUFVLENBQUM7UUFFdkM7O1dBRUc7UUFDTyxnQkFBVyxHQUFtQyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUU3Rjs7V0FFRztRQUNPLHdCQUFtQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTdFOztXQUVHO1FBQ08sdUJBQWtCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFPdEMsQ0FBQztJQUx2Qzs7T0FFRztJQUNILFFBQVEsS0FBVSxDQUFDO0lBSW5CLE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSztZQUM1QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSztZQUMvQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSztTQUN0RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDMUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBcUMsQ0FBQyxHQUFHLHdCQUF3QixDQUFDO2dCQUNsRixPQUFPO2FBQ1I7WUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFxQyxDQUFDLEdBQUcscUJBQXFCLENBQUM7Z0JBQy9FLE9BQU87YUFDUjtTQUNGO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFxQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzlELENBQUM7OzRHQXhGVSxjQUFjO2dHQUFkLGNBQWMsNk5DWDNCLHc3Q0E2Q0E7NEZEbENhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNO2tHQTZCdEMsT0FBTztzQkFBZixLQUFLO2dCQU9HLElBQUk7c0JBQVosS0FBSztnQkFLSSxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFLRyxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMT0dJTl9pMThuIH0gZnJvbSAnLi9sb2dpbi5jb25zdGFudCc7XG5pbXBvcnQgeyBJaTE4bkxvZ2luLCBMb2dpbkNyZWRlbnRpYWxzIH0gZnJvbSAnLi9sb2dpbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWxvZ2luJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gVE9ETzogU29tZSBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGFyZSBpZ25vcmVkIG9uIHB1cnBvc2UgYmVjYXVzZSBvZiBhIGN1cnJlbnQgaXNzdWUgd2l0aCBjb21wb2RvYyBhbmQgYW5ndWxhciAxM1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vc3Rvcnlib29ranMvc3Rvcnlib29rL2lzc3Vlcy8xNjg2NVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vc3Rvcnlib29ranMvc3Rvcnlib29rL2lzc3Vlcy8xNzAwNFxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBsb2dpbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgIHBhc3N3b3JkOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgcmVtZW1iZXJfbWU6IFtmYWxzZV0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBmb3JtRXJyb3JzID0ge1xuICAgIGVtYWlsOiAnJyxcbiAgICBwYXNzd29yZDogJycsXG4gIH07XG5cbiAgLyoqXG4gICAqIEluZGljYXRvciBpZiB0aGUgZm9ybSBpcyBsb2FkaW5nXG4gICAqXG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE9iamVjdCB3aXRoIHRoZSB0cmFuc2xhdGlvbnMgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqIEB0eXBlIHtJaTE4bn1cbiAgICogQG1lbWJlcm9mIExvZ2luQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBpMThuOiBJaTE4bkxvZ2luID0gTE9HSU5faTE4bjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQE91dHB1dCgpIHN1Ym1pdEV2ZW50OiBFdmVudEVtaXR0ZXI8TG9naW5DcmVkZW50aWFscz4gPSBuZXcgRXZlbnRFbWl0dGVyPExvZ2luQ3JlZGVudGlhbHM+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBmb3Jnb3RQYXNzd29yZEV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBjcmVhdGVBY2NvdW50RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7fVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLnN1Ym1pdEV2ZW50LmVtaXQoe1xuICAgICAgdXNlcm5hbWU6IHRoaXMubG9naW5Gb3JtLmdldCgnZW1haWwnKT8udmFsdWUsXG4gICAgICBwYXNzd29yZDogdGhpcy5sb2dpbkZvcm0uZ2V0KCdwYXNzd29yZCcpPy52YWx1ZSxcbiAgICAgIHJlbWVtYmVyX21lOiB0aGlzLmxvZ2luRm9ybS5nZXQoJ3JlbWVtYmVyX21lJyk/LnZhbHVlLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yZ290UGFzc3dvcmQoKSB7XG4gICAgdGhpcy5mb3Jnb3RQYXNzd29yZEV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIGNyZWF0ZUFjY291bnQoKSB7XG4gICAgdGhpcy5jcmVhdGVBY2NvdW50RXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgY2hlY2tFcnJvcnMoZmllbGQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmxvZ2luRm9ybS5jb250cm9sc1tmaWVsZF0udG91Y2hlZCkge1xuICAgICAgaWYgKHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzW2ZpZWxkXS5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICB0aGlzLmZvcm1FcnJvcnNbZmllbGQgYXMga2V5b2YgdHlwZW9mIHRoaXMuZm9ybUVycm9yc10gPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzW2ZpZWxkXS5oYXNFcnJvcignZW1haWwnKSkge1xuICAgICAgICB0aGlzLmZvcm1FcnJvcnNbZmllbGQgYXMga2V5b2YgdHlwZW9mIHRoaXMuZm9ybUVycm9yc10gPSAnRW50ZXIgYSB2YWxpZCBlbWFpbCc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZvcm1FcnJvcnNbZmllbGQgYXMga2V5b2YgdHlwZW9mIHRoaXMuZm9ybUVycm9yc10gPSAnJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tYm94XCI+XG4gIDx1aS1sb2dvPjwvdWktbG9nbz5cbiAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgaTE4bi50aXRsZSB9fTwvZGl2PlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luRm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgPHVpLWZpZWxkXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImkxOG4uZW1haWxfcGxhY2Vob2xkZXJcIlxuICAgICAgICBbdHlwZV09XCInZW1haWwnXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbZXJyb3JdPVwiZm9ybUVycm9ycy5lbWFpbFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoZWNrRXJyb3JzKCdlbWFpbCcpXCJcbiAgICAgID48L3VpLWZpZWxkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgPHVpLWZpZWxkXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImkxOG4ucGFzc3dvcmRfcGxhY2Vob2xkZXJcIlxuICAgICAgICBbdHlwZV09XCIncGFzc3dvcmQnXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbZXJyb3JdPVwiZm9ybUVycm9ycy5wYXNzd29yZFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoZWNrRXJyb3JzKCdwYXNzd29yZCcpXCJcbiAgICAgID48L3VpLWZpZWxkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgc3BhY2UtYmV0d2VlblwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJyZW1lbWJlcl9tZVwiPnt7IGkxOG4ucmVtZW1iZXJfbWUgfX08L21hdC1jaGVja2JveD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcmdvdC1wYXNzd29yZFwiIChjbGljayk9XCJmb3Jnb3RQYXNzd29yZCgpXCI+e3sgaTE4bi5mb3Jnb3RfcGFzc3dvcmQgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3VibWl0LWJ1dHRvblwiPlxuICAgICAgPHVpLWJ1dHRvblxuICAgICAgICBbbGFiZWxdPVwiJ0xvZyBpbidcIlxuICAgICAgICBbZGlzYWJsZWRdPVwibG9naW5Gb3JtLmludmFsaWRcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgICAgKG9uQ2xpY2tFdmVudCk9XCJzdWJtaXQoKVwiXG4gICAgICA+PC91aS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIHt7IGkxOG4ubm90X2hhdmVfYWNjb3VudCB9fVxuICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdGUtYWNjb3VudFwiIChjbGljayk9XCJjcmVhdGVBY2NvdW50KClcIj57eyBpMThuLmNyZWF0ZV9hY2NvdW50IH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBUzlDLE1BQU0sT0FBTyxjQUFjO0lBd0R6QixZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQXZEbkMsbUhBQW1IO1FBQ25ILHdEQUF3RDtRQUN4RCx3REFBd0Q7UUFFeEQ7O1dBRUc7UUFDSCxjQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDeEIsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQztTQUNyQixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNILGVBQVUsR0FBRztZQUNYLEtBQUssRUFBRSxFQUFFO1lBQ1QsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO1FBRUY7Ozs7V0FJRztRQUNNLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFekI7Ozs7V0FJRztRQUNNLFNBQUksR0FBZSxVQUFVLENBQUM7UUFFdkM7O1dBRUc7UUFDTyxnQkFBVyxHQUFtQyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUU3Rjs7V0FFRztRQUNPLHdCQUFtQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTdFOztXQUVHO1FBQ08sdUJBQWtCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFPdEMsQ0FBQztJQUx2Qzs7T0FFRztJQUNILFFBQVEsS0FBVSxDQUFDO0lBSW5CLE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSztZQUM1QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSztZQUMvQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSztTQUN0RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDMUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBcUMsQ0FBQyxHQUFHLHdCQUF3QixDQUFDO2dCQUNsRixPQUFPO2FBQ1I7WUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFxQyxDQUFDLEdBQUcscUJBQXFCLENBQUM7Z0JBQy9FLE9BQU87YUFDUjtTQUNGO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFxQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzlELENBQUM7OzRHQXhGVSxjQUFjO2dHQUFkLGNBQWMsNk5DWDNCLGk4Q0E2Q0E7NEZEbENhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNO2tHQTZCdEMsT0FBTztzQkFBZixLQUFLO2dCQU9HLElBQUk7c0JBQVosS0FBSztnQkFLSSxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFLRyxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMT0dJTl9pMThuIH0gZnJvbSAnLi9sb2dpbi5jb25zdGFudCc7XG5pbXBvcnQgeyBJaTE4bkxvZ2luLCBMb2dpbkNyZWRlbnRpYWxzIH0gZnJvbSAnLi9sb2dpbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWxvZ2luJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gVE9ETzogU29tZSBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGFyZSBpZ25vcmVkIG9uIHB1cnBvc2UgYmVjYXVzZSBvZiBhIGN1cnJlbnQgaXNzdWUgd2l0aCBjb21wb2RvYyBhbmQgYW5ndWxhciAxM1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vc3Rvcnlib29ranMvc3Rvcnlib29rL2lzc3Vlcy8xNjg2NVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vc3Rvcnlib29ranMvc3Rvcnlib29rL2lzc3Vlcy8xNzAwNFxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBsb2dpbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgIHBhc3N3b3JkOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgcmVtZW1iZXJfbWU6IFtmYWxzZV0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBmb3JtRXJyb3JzID0ge1xuICAgIGVtYWlsOiAnJyxcbiAgICBwYXNzd29yZDogJycsXG4gIH07XG5cbiAgLyoqXG4gICAqIEluZGljYXRvciBpZiB0aGUgZm9ybSBpcyBsb2FkaW5nXG4gICAqXG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE9iamVjdCB3aXRoIHRoZSB0cmFuc2xhdGlvbnMgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqIEB0eXBlIHtJaTE4bn1cbiAgICogQG1lbWJlcm9mIExvZ2luQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBpMThuOiBJaTE4bkxvZ2luID0gTE9HSU5faTE4bjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQE91dHB1dCgpIHN1Ym1pdEV2ZW50OiBFdmVudEVtaXR0ZXI8TG9naW5DcmVkZW50aWFscz4gPSBuZXcgRXZlbnRFbWl0dGVyPExvZ2luQ3JlZGVudGlhbHM+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBmb3Jnb3RQYXNzd29yZEV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBjcmVhdGVBY2NvdW50RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7fVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLnN1Ym1pdEV2ZW50LmVtaXQoe1xuICAgICAgdXNlcm5hbWU6IHRoaXMubG9naW5Gb3JtLmdldCgnZW1haWwnKT8udmFsdWUsXG4gICAgICBwYXNzd29yZDogdGhpcy5sb2dpbkZvcm0uZ2V0KCdwYXNzd29yZCcpPy52YWx1ZSxcbiAgICAgIHJlbWVtYmVyX21lOiB0aGlzLmxvZ2luRm9ybS5nZXQoJ3JlbWVtYmVyX21lJyk/LnZhbHVlLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yZ290UGFzc3dvcmQoKSB7XG4gICAgdGhpcy5mb3Jnb3RQYXNzd29yZEV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIGNyZWF0ZUFjY291bnQoKSB7XG4gICAgdGhpcy5jcmVhdGVBY2NvdW50RXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgY2hlY2tFcnJvcnMoZmllbGQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmxvZ2luRm9ybS5jb250cm9sc1tmaWVsZF0udG91Y2hlZCkge1xuICAgICAgaWYgKHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzW2ZpZWxkXS5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICB0aGlzLmZvcm1FcnJvcnNbZmllbGQgYXMga2V5b2YgdHlwZW9mIHRoaXMuZm9ybUVycm9yc10gPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzW2ZpZWxkXS5oYXNFcnJvcignZW1haWwnKSkge1xuICAgICAgICB0aGlzLmZvcm1FcnJvcnNbZmllbGQgYXMga2V5b2YgdHlwZW9mIHRoaXMuZm9ybUVycm9yc10gPSAnRW50ZXIgYSB2YWxpZCBlbWFpbCc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZvcm1FcnJvcnNbZmllbGQgYXMga2V5b2YgdHlwZW9mIHRoaXMuZm9ybUVycm9yc10gPSAnJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tYm94XCI+XG4gIDx1aS1sb2dvPjwvdWktbG9nbz5cbiAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgaTE4bi50aXRsZSB9fTwvZGl2PlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luRm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgPHVpLWZpZWxkXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImkxOG4uZW1haWxfcGxhY2Vob2xkZXJcIlxuICAgICAgICBbdHlwZV09XCInZW1haWwnXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbZXJyb3JdPVwiZm9ybUVycm9ycy5lbWFpbFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoZWNrRXJyb3JzKCdlbWFpbCcpXCJcbiAgICAgID48L3VpLWZpZWxkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgPHVpLWZpZWxkXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImkxOG4ucGFzc3dvcmRfcGxhY2Vob2xkZXJcIlxuICAgICAgICBbdHlwZV09XCIncGFzc3dvcmQnXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbZXJyb3JdPVwiZm9ybUVycm9ycy5wYXNzd29yZFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoZWNrRXJyb3JzKCdwYXNzd29yZCcpXCJcbiAgICAgID48L3VpLWZpZWxkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgc3BhY2UtYmV0d2VlblwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJyZW1lbWJlcl9tZVwiPnt7IGkxOG4ucmVtZW1iZXJfbWUgfX08L21hdC1jaGVja2JveD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcmdvdC1wYXNzd29yZFwiIChjbGljayk9XCJmb3Jnb3RQYXNzd29yZCgpXCI+e3sgaTE4bi5mb3Jnb3RfcGFzc3dvcmQgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3VibWl0LWJ1dHRvblwiPlxuICAgICAgPHVpLWJ1dHRvblxuICAgICAgICBbbGFiZWxdPVwiaTE4bi5idXR0b25fbGFiZWxcIlxuICAgICAgICBbZGlzYWJsZWRdPVwibG9naW5Gb3JtLmludmFsaWRcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgICAgKG9uQ2xpY2tFdmVudCk9XCJzdWJtaXQoKVwiXG4gICAgICA+PC91aS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIHt7IGkxOG4ubm90X2hhdmVfYWNjb3VudCB9fVxuICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdGUtYWNjb3VudFwiIChjbGljayk9XCJjcmVhdGVBY2NvdW50KClcIj57eyBpMThuLmNyZWF0ZV9hY2NvdW50IH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
@@ -4,7 +4,8 @@ export const LOGIN_i18n = {
4
4
  password_placeholder: 'Password',
5
5
  remember_me: 'Keep me logged in',
6
6
  forgot_password: 'Forgot password?',
7
+ button_label: 'Log in',
7
8
  not_have_account: "Don't have an account?",
8
9
  create_account: 'Create one here',
9
10
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb25zdGFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsS0FBSyxFQUFFLGdDQUFnQztJQUN2QyxpQkFBaUIsRUFBRSxlQUFlO0lBQ2xDLG9CQUFvQixFQUFFLFVBQVU7SUFDaEMsV0FBVyxFQUFFLG1CQUFtQjtJQUNoQyxlQUFlLEVBQUUsa0JBQWtCO0lBQ25DLGdCQUFnQixFQUFFLHdCQUF3QjtJQUMxQyxjQUFjLEVBQUUsaUJBQWlCO0NBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTE9HSU5faTE4biA9IHtcbiAgdGl0bGU6ICdMb2cgaW4gdG8geW91ciBDYXJlZXIgUGFzc3BvcnQnLFxuICBlbWFpbF9wbGFjZWhvbGRlcjogJ0VtYWlsIGFkZHJlc3MnLFxuICBwYXNzd29yZF9wbGFjZWhvbGRlcjogJ1Bhc3N3b3JkJyxcbiAgcmVtZW1iZXJfbWU6ICdLZWVwIG1lIGxvZ2dlZCBpbicsXG4gIGZvcmdvdF9wYXNzd29yZDogJ0ZvcmdvdCBwYXNzd29yZD8nLFxuICBub3RfaGF2ZV9hY2NvdW50OiBcIkRvbid0IGhhdmUgYW4gYWNjb3VudD9cIixcbiAgY3JlYXRlX2FjY291bnQ6ICdDcmVhdGUgb25lIGhlcmUnLFxufTtcbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb25zdGFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsS0FBSyxFQUFFLGdDQUFnQztJQUN2QyxpQkFBaUIsRUFBRSxlQUFlO0lBQ2xDLG9CQUFvQixFQUFFLFVBQVU7SUFDaEMsV0FBVyxFQUFFLG1CQUFtQjtJQUNoQyxlQUFlLEVBQUUsa0JBQWtCO0lBQ25DLFlBQVksRUFBRSxRQUFRO0lBQ3RCLGdCQUFnQixFQUFFLHdCQUF3QjtJQUMxQyxjQUFjLEVBQUUsaUJBQWlCO0NBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTE9HSU5faTE4biA9IHtcbiAgdGl0bGU6ICdMb2cgaW4gdG8geW91ciBDYXJlZXIgUGFzc3BvcnQnLFxuICBlbWFpbF9wbGFjZWhvbGRlcjogJ0VtYWlsIGFkZHJlc3MnLFxuICBwYXNzd29yZF9wbGFjZWhvbGRlcjogJ1Bhc3N3b3JkJyxcbiAgcmVtZW1iZXJfbWU6ICdLZWVwIG1lIGxvZ2dlZCBpbicsXG4gIGZvcmdvdF9wYXNzd29yZDogJ0ZvcmdvdCBwYXNzd29yZD8nLFxuICBidXR0b25fbGFiZWw6ICdMb2cgaW4nLFxuICBub3RfaGF2ZV9hY2NvdW50OiBcIkRvbid0IGhhdmUgYW4gYWNjb3VudD9cIixcbiAgY3JlYXRlX2FjY291bnQ6ICdDcmVhdGUgb25lIGhlcmUnLFxufTtcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBMb2dpbkNyZWRlbnRpYWxzIHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgcmVtZW1iZXJfbWU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWkxOG5Mb2dpbiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGVtYWlsX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHBhc3N3b3JkX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHJlbWVtYmVyX21lOiBzdHJpbmc7XG4gIGZvcmdvdF9wYXNzd29yZDogc3RyaW5nO1xuICBub3RfaGF2ZV9hY2NvdW50OiBzdHJpbmc7XG4gIGNyZWF0ZV9hY2NvdW50OiBzdHJpbmc7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBMb2dpbkNyZWRlbnRpYWxzIHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgcmVtZW1iZXJfbWU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWkxOG5Mb2dpbiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGVtYWlsX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHBhc3N3b3JkX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHJlbWVtYmVyX21lOiBzdHJpbmc7XG4gIGZvcmdvdF9wYXNzd29yZDogc3RyaW5nO1xuICBidXR0b25fbGFiZWw6IHN0cmluZztcbiAgbm90X2hhdmVfYWNjb3VudDogc3RyaW5nO1xuICBjcmVhdGVfYWNjb3VudDogc3RyaW5nO1xufVxuIl19
@@ -247,10 +247,10 @@ class CardComponent {
247
247
  }
248
248
  }
249
249
  CardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
250
- CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CardComponent, selector: "ui-card", inputs: { title: "title", subTitle: "subTitle" }, ngImport: i0, template: "<mat-card class=\"container\">\n <ui-logo class=\"logo\"></ui-logo>\n <mat-card-title>{{title}}</mat-card-title>\n <mat-card-subtitle>{{subTitle}}</mat-card-subtitle>\n</mat-card>\n", styles: [".container{width:672px;box-sizing:border-box;padding:80px!important}.container .logo{margin-bottom:40px}.container .mat-card-title{margin-bottom:24px;font-weight:700;font-size:22px;line-height:135%}.container .mat-card-subtitle{color:#000;font-weight:400;font-size:16px;line-height:135%}\n"], components: [{ type: i1$1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: LogoComponent, selector: "ui-logo" }], directives: [{ type: i1$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i1$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
250
+ CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CardComponent, selector: "ui-card", inputs: { title: "title", subTitle: "subTitle" }, ngImport: i0, template: "<mat-card class=\"container\">\n <ui-logo class=\"logo\"></ui-logo>\n <mat-card-title>{{title}}</mat-card-title>\n <mat-card-subtitle>{{subTitle}}</mat-card-subtitle>\n</mat-card>\n", styles: [".container{width:672px;box-sizing:border-box;padding:80px!important}.container .logo{margin-bottom:40px}.container .mat-card-title{margin-bottom:24px;font-weight:700;font-size:22px;line-height:135%;width:100%;word-wrap:break-word}.container .mat-card-subtitle{color:#000;font-weight:400;font-size:16px;line-height:135%}\n"], components: [{ type: i1$1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: LogoComponent, selector: "ui-logo" }], directives: [{ type: i1$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i1$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
251
251
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CardComponent, decorators: [{
252
252
  type: Component,
253
- args: [{ selector: 'ui-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"container\">\n <ui-logo class=\"logo\"></ui-logo>\n <mat-card-title>{{title}}</mat-card-title>\n <mat-card-subtitle>{{subTitle}}</mat-card-subtitle>\n</mat-card>\n", styles: [".container{width:672px;box-sizing:border-box;padding:80px!important}.container .logo{margin-bottom:40px}.container .mat-card-title{margin-bottom:24px;font-weight:700;font-size:22px;line-height:135%}.container .mat-card-subtitle{color:#000;font-weight:400;font-size:16px;line-height:135%}\n"] }]
253
+ args: [{ selector: 'ui-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"container\">\n <ui-logo class=\"logo\"></ui-logo>\n <mat-card-title>{{title}}</mat-card-title>\n <mat-card-subtitle>{{subTitle}}</mat-card-subtitle>\n</mat-card>\n", styles: [".container{width:672px;box-sizing:border-box;padding:80px!important}.container .logo{margin-bottom:40px}.container .mat-card-title{margin-bottom:24px;font-weight:700;font-size:22px;line-height:135%;width:100%;word-wrap:break-word}.container .mat-card-subtitle{color:#000;font-weight:400;font-size:16px;line-height:135%}\n"] }]
254
254
  }], propDecorators: { title: [{
255
255
  type: Input
256
256
  }], subTitle: [{
@@ -970,6 +970,7 @@ const LOGIN_i18n = {
970
970
  password_placeholder: 'Password',
971
971
  remember_me: 'Keep me logged in',
972
972
  forgot_password: 'Forgot password?',
973
+ button_label: 'Log in',
973
974
  not_have_account: "Don't have an account?",
974
975
  create_account: 'Create one here',
975
976
  };
@@ -1053,10 +1054,10 @@ class LoginComponent {
1053
1054
  }
1054
1055
  }
1055
1056
  LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LoginComponent, deps: [{ token: i1$3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
1056
- LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: LoginComponent, selector: "ui-login", inputs: { loading: "loading", i18n: "i18n" }, outputs: { submitEvent: "submitEvent", forgotPasswordEvent: "forgotPasswordEvent", createAccountEvent: "createAccountEvent" }, ngImport: i0, template: "<div class=\"form-box\">\n <ui-logo></ui-logo>\n <div class=\"title\">{{ i18n.title }}</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field\n formControlName=\"email\"\n [placeholder]=\"i18n.email_placeholder\"\n [type]=\"'email'\"\n [required]=\"true\"\n [error]=\"formErrors.email\"\n (ngModelChange)=\"checkErrors('email')\"\n ></ui-field>\n </div>\n <div class=\"field\">\n <ui-field\n formControlName=\"password\"\n [placeholder]=\"i18n.password_placeholder\"\n [type]=\"'password'\"\n [required]=\"true\"\n [error]=\"formErrors.password\"\n (ngModelChange)=\"checkErrors('password')\"\n ></ui-field>\n </div>\n <div class=\"row space-between\">\n <div>\n <mat-checkbox formControlName=\"remember_me\">{{ i18n.remember_me }}</mat-checkbox>\n </div>\n <div class=\"forgot-password\" (click)=\"forgotPassword()\">{{ i18n.forgot_password }}</div>\n </div>\n <div class=\"submit-button\">\n <ui-button\n [label]=\"'Log in'\"\n [disabled]=\"loginForm.invalid\"\n [fullWidth]=\"true\"\n [loading]=\"loading\"\n (onClickEvent)=\"submit()\"\n ></ui-button>\n </div>\n <div>\n {{ i18n.not_have_account }}\n <span class=\"create-account\" (click)=\"createAccount()\">{{ i18n.create_account }}</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .title{font-weight:700;font-size:22px;line-height:29.7px;margin:40px 0 24px}.form-box .field{width:100%}.form-box .submit-button{margin:40px 0 24px}.form-box mat-checkbox{font-weight:400}.form-box .forgot-password,.form-box .create-account{font-weight:600;font-size:15px;cursor:pointer}.form-box .forgot-password:hover,.form-box .create-account:hover{text-decoration:underline}.form-box .create-account{color:#46a997}.row{display:flex;flex-direction:row;margin-top:3px}.row.space-between{justify-content:space-between}\n"], components: [{ type: LogoComponent, selector: "ui-logo" }, { type: FieldComponent, selector: "ui-field", inputs: ["label", "preffixIcon", "suffixIcon", "required", "hint", "error", "placeholder", "type"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: ButtonComponent, selector: "ui-button", inputs: ["color", "label", "iconPosition", "iconName", "disabled", "loading", "fullWidth"], outputs: ["onClickEvent"] }], directives: [{ type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1057
+ LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: LoginComponent, selector: "ui-login", inputs: { loading: "loading", i18n: "i18n" }, outputs: { submitEvent: "submitEvent", forgotPasswordEvent: "forgotPasswordEvent", createAccountEvent: "createAccountEvent" }, ngImport: i0, template: "<div class=\"form-box\">\n <ui-logo></ui-logo>\n <div class=\"title\">{{ i18n.title }}</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field\n formControlName=\"email\"\n [placeholder]=\"i18n.email_placeholder\"\n [type]=\"'email'\"\n [required]=\"true\"\n [error]=\"formErrors.email\"\n (ngModelChange)=\"checkErrors('email')\"\n ></ui-field>\n </div>\n <div class=\"field\">\n <ui-field\n formControlName=\"password\"\n [placeholder]=\"i18n.password_placeholder\"\n [type]=\"'password'\"\n [required]=\"true\"\n [error]=\"formErrors.password\"\n (ngModelChange)=\"checkErrors('password')\"\n ></ui-field>\n </div>\n <div class=\"row space-between\">\n <div>\n <mat-checkbox formControlName=\"remember_me\">{{ i18n.remember_me }}</mat-checkbox>\n </div>\n <div class=\"forgot-password\" (click)=\"forgotPassword()\">{{ i18n.forgot_password }}</div>\n </div>\n <div class=\"submit-button\">\n <ui-button\n [label]=\"i18n.button_label\"\n [disabled]=\"loginForm.invalid\"\n [fullWidth]=\"true\"\n [loading]=\"loading\"\n (onClickEvent)=\"submit()\"\n ></ui-button>\n </div>\n <div>\n {{ i18n.not_have_account }}\n <span class=\"create-account\" (click)=\"createAccount()\">{{ i18n.create_account }}</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .title{font-weight:700;font-size:22px;line-height:29.7px;margin:40px 0 24px}.form-box .field{width:100%}.form-box .submit-button{margin:40px 0 24px}.form-box mat-checkbox{font-weight:400}.form-box .forgot-password,.form-box .create-account{font-weight:600;font-size:15px;cursor:pointer}.form-box .forgot-password:hover,.form-box .create-account:hover{text-decoration:underline}.form-box .create-account{color:#46a997}.row{display:flex;flex-direction:row;margin-top:3px}.row.space-between{justify-content:space-between}\n"], components: [{ type: LogoComponent, selector: "ui-logo" }, { type: FieldComponent, selector: "ui-field", inputs: ["label", "preffixIcon", "suffixIcon", "required", "hint", "error", "placeholder", "type"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: ButtonComponent, selector: "ui-button", inputs: ["color", "label", "iconPosition", "iconName", "disabled", "loading", "fullWidth"], outputs: ["onClickEvent"] }], directives: [{ type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1057
1058
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LoginComponent, decorators: [{
1058
1059
  type: Component,
1059
- args: [{ selector: 'ui-login', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-box\">\n <ui-logo></ui-logo>\n <div class=\"title\">{{ i18n.title }}</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field\n formControlName=\"email\"\n [placeholder]=\"i18n.email_placeholder\"\n [type]=\"'email'\"\n [required]=\"true\"\n [error]=\"formErrors.email\"\n (ngModelChange)=\"checkErrors('email')\"\n ></ui-field>\n </div>\n <div class=\"field\">\n <ui-field\n formControlName=\"password\"\n [placeholder]=\"i18n.password_placeholder\"\n [type]=\"'password'\"\n [required]=\"true\"\n [error]=\"formErrors.password\"\n (ngModelChange)=\"checkErrors('password')\"\n ></ui-field>\n </div>\n <div class=\"row space-between\">\n <div>\n <mat-checkbox formControlName=\"remember_me\">{{ i18n.remember_me }}</mat-checkbox>\n </div>\n <div class=\"forgot-password\" (click)=\"forgotPassword()\">{{ i18n.forgot_password }}</div>\n </div>\n <div class=\"submit-button\">\n <ui-button\n [label]=\"'Log in'\"\n [disabled]=\"loginForm.invalid\"\n [fullWidth]=\"true\"\n [loading]=\"loading\"\n (onClickEvent)=\"submit()\"\n ></ui-button>\n </div>\n <div>\n {{ i18n.not_have_account }}\n <span class=\"create-account\" (click)=\"createAccount()\">{{ i18n.create_account }}</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .title{font-weight:700;font-size:22px;line-height:29.7px;margin:40px 0 24px}.form-box .field{width:100%}.form-box .submit-button{margin:40px 0 24px}.form-box mat-checkbox{font-weight:400}.form-box .forgot-password,.form-box .create-account{font-weight:600;font-size:15px;cursor:pointer}.form-box .forgot-password:hover,.form-box .create-account:hover{text-decoration:underline}.form-box .create-account{color:#46a997}.row{display:flex;flex-direction:row;margin-top:3px}.row.space-between{justify-content:space-between}\n"] }]
1060
+ args: [{ selector: 'ui-login', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-box\">\n <ui-logo></ui-logo>\n <div class=\"title\">{{ i18n.title }}</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field\n formControlName=\"email\"\n [placeholder]=\"i18n.email_placeholder\"\n [type]=\"'email'\"\n [required]=\"true\"\n [error]=\"formErrors.email\"\n (ngModelChange)=\"checkErrors('email')\"\n ></ui-field>\n </div>\n <div class=\"field\">\n <ui-field\n formControlName=\"password\"\n [placeholder]=\"i18n.password_placeholder\"\n [type]=\"'password'\"\n [required]=\"true\"\n [error]=\"formErrors.password\"\n (ngModelChange)=\"checkErrors('password')\"\n ></ui-field>\n </div>\n <div class=\"row space-between\">\n <div>\n <mat-checkbox formControlName=\"remember_me\">{{ i18n.remember_me }}</mat-checkbox>\n </div>\n <div class=\"forgot-password\" (click)=\"forgotPassword()\">{{ i18n.forgot_password }}</div>\n </div>\n <div class=\"submit-button\">\n <ui-button\n [label]=\"i18n.button_label\"\n [disabled]=\"loginForm.invalid\"\n [fullWidth]=\"true\"\n [loading]=\"loading\"\n (onClickEvent)=\"submit()\"\n ></ui-button>\n </div>\n <div>\n {{ i18n.not_have_account }}\n <span class=\"create-account\" (click)=\"createAccount()\">{{ i18n.create_account }}</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .title{font-weight:700;font-size:22px;line-height:29.7px;margin:40px 0 24px}.form-box .field{width:100%}.form-box .submit-button{margin:40px 0 24px}.form-box mat-checkbox{font-weight:400}.form-box .forgot-password,.form-box .create-account{font-weight:600;font-size:15px;cursor:pointer}.form-box .forgot-password:hover,.form-box .create-account:hover{text-decoration:underline}.form-box .create-account{color:#46a997}.row{display:flex;flex-direction:row;margin-top:3px}.row.space-between{justify-content:space-between}\n"] }]
1060
1061
  }], ctorParameters: function () { return [{ type: i1$3.FormBuilder }]; }, propDecorators: { loading: [{
1061
1062
  type: Input
1062
1063
  }], i18n: [{