verben-authentication-ui 0.3.6 → 0.3.8

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 (22) hide show
  1. package/esm2022/lib/components/button/button.component.mjs +6 -3
  2. package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +1 -1
  3. package/esm2022/lib/components/mail/mail.component.mjs +1 -1
  4. package/esm2022/lib/components/o-auth/o-auth.component.mjs +64 -50
  5. package/esm2022/lib/components/reset-password/reset-password.component.mjs +1 -1
  6. package/esm2022/lib/components/sign-in/sign-in.component.mjs +13 -3
  7. package/esm2022/lib/components/sign-up/sign-up.component.mjs +1 -1
  8. package/esm2022/lib/components/sso/sso-form/sso-form.component.mjs +1 -1
  9. package/esm2022/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.mjs +1 -1
  10. package/esm2022/lib/components/user-management/user-management-form/use-management-form.component.mjs +1 -1
  11. package/esm2022/lib/components/user-request/user-request.component.mjs +128 -49
  12. package/esm2022/lib/components/user-request/user-request.module.mjs +7 -3
  13. package/esm2022/lib/components/user-request-approval/user-request-form/use-request-form.component.mjs +1 -1
  14. package/esm2022/lib/services/http-web-request.service.mjs +5 -5
  15. package/fesm2022/verben-authentication-ui.mjs +305 -204
  16. package/fesm2022/verben-authentication-ui.mjs.map +1 -1
  17. package/lib/components/button/button.component.d.ts +2 -1
  18. package/lib/components/o-auth/o-auth.component.d.ts +18 -1
  19. package/lib/components/sign-in/sign-in.component.d.ts +4 -1
  20. package/lib/components/user-request/user-request.component.d.ts +18 -2
  21. package/lib/components/user-request/user-request.module.d.ts +2 -1
  22. package/package.json +2 -2
@@ -12,16 +12,17 @@ export class ButtonComponent {
12
12
  pd = '10px 20px';
13
13
  buttonClass = '';
14
14
  disabled = false;
15
+ isLoading;
15
16
  buttonClick = new EventEmitter();
16
17
  handleClick() {
17
18
  this.buttonClick.emit();
18
19
  }
19
20
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ButtonComponent, selector: "lib-button", inputs: { text: "text", color: "color", border: "border", borderRadius: "borderRadius", bgColor: "bgColor", width: "width", pd: "pd", buttonClass: "buttonClass", disabled: "disabled" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<verbena-button\n[text]=\"text\"\n[bgColor]=\"bgColor\"\n[textColor]=\"color\"\n[border]=\"border\"\n[borderRadius]=\"borderRadius\"\n[pd]=\"pd\"\n[width]=\"width\"\n[disable]=\"disabled\"\n[ngStyle]=\"{'cursor': disabled ? 'not-allowed' : 'pointer' }\"\nbuttonClass=\"font-medium text-[22px] leading-[33px] {{buttonClass}}\"\n(click)=\"handleClick()\"\n></verbena-button>\n", styles: [".disable-btn{cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }] });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ButtonComponent, selector: "lib-button", inputs: { text: "text", color: "color", border: "border", borderRadius: "borderRadius", bgColor: "bgColor", width: "width", pd: "pd", buttonClass: "buttonClass", disabled: "disabled", isLoading: "isLoading" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<verbena-button\n[text]=\"text\"\n[bgColor]=\"bgColor\"\n[textColor]=\"color\"\n[border]=\"border\"\n[borderRadius]=\"borderRadius\"\n[pd]=\"pd\"\n[width]=\"width\"\n[disable]=\"disabled\"\n[ngStyle]=\"{'cursor': disabled ? 'not-allowed' : 'pointer' }\"\nbuttonClass=\"font-medium text-[22px] leading-[33px] {{buttonClass}}\"\n(click)=\"handleClick()\"\n[isLoading]=\"isLoading\"\n[spinnerSize]=\"'20px'\"\n[spinnerColor]=\"'black'\"\n></verbena-button>\n", styles: [".disable-btn{cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }] });
21
22
  }
22
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonComponent, decorators: [{
23
24
  type: Component,
24
- args: [{ selector: 'lib-button', template: "<verbena-button\n[text]=\"text\"\n[bgColor]=\"bgColor\"\n[textColor]=\"color\"\n[border]=\"border\"\n[borderRadius]=\"borderRadius\"\n[pd]=\"pd\"\n[width]=\"width\"\n[disable]=\"disabled\"\n[ngStyle]=\"{'cursor': disabled ? 'not-allowed' : 'pointer' }\"\nbuttonClass=\"font-medium text-[22px] leading-[33px] {{buttonClass}}\"\n(click)=\"handleClick()\"\n></verbena-button>\n", styles: [".disable-btn{cursor:not-allowed}\n"] }]
25
+ args: [{ selector: 'lib-button', template: "<verbena-button\n[text]=\"text\"\n[bgColor]=\"bgColor\"\n[textColor]=\"color\"\n[border]=\"border\"\n[borderRadius]=\"borderRadius\"\n[pd]=\"pd\"\n[width]=\"width\"\n[disable]=\"disabled\"\n[ngStyle]=\"{'cursor': disabled ? 'not-allowed' : 'pointer' }\"\nbuttonClass=\"font-medium text-[22px] leading-[33px] {{buttonClass}}\"\n(click)=\"handleClick()\"\n[isLoading]=\"isLoading\"\n[spinnerSize]=\"'20px'\"\n[spinnerColor]=\"'black'\"\n></verbena-button>\n", styles: [".disable-btn{cursor:not-allowed}\n"] }]
25
26
  }], propDecorators: { text: [{
26
27
  type: Input
27
28
  }], color: [{
@@ -40,7 +41,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
40
41
  type: Input
41
42
  }], disabled: [{
42
43
  type: Input
44
+ }], isLoading: [{
45
+ type: Input
43
46
  }], buttonClick: [{
44
47
  type: Output
45
48
  }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU92RSxNQUFNLE9BQU8sZUFBZTtJQUNqQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLEtBQUssR0FBVyxPQUFPLENBQUM7SUFDeEIsTUFBTSxHQUFXLG1CQUFtQixDQUFDO0lBQ3JDLFlBQVksR0FBVSxNQUFNLENBQUE7SUFDNUIsT0FBTyxHQUFXLFNBQVMsQ0FBQztJQUM1QixLQUFLLEdBQVcsTUFBTSxDQUFDO0lBQ3ZCLEVBQUUsR0FBVyxXQUFXLENBQUM7SUFDekIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRXpCLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRWpELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7d0dBZlUsZUFBZTs0RkFBZixlQUFlLHFSQ1A1Qix3WEFhQTs7NEZETmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZOzhCQUtiLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9idXR0b24uY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmcgPSAnYmxhY2snO1xuICBASW5wdXQoKSBib3JkZXI6IHN0cmluZyA9ICcxcHggc29saWQgI0ZGRTY4MSc7XG4gIEBJbnB1dCgpIGJvcmRlclJhZGl1czpzdHJpbmcgPSBcIjQwcHhcIlxuICBASW5wdXQoKSBiZ0NvbG9yOiBzdHJpbmcgPSAnI0ZGRTY4MSc7XG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XG4gIEBJbnB1dCgpIHBkOiBzdHJpbmcgPSAnMTBweCAyMHB4JztcbiAgQElucHV0KCkgYnV0dG9uQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBoYW5kbGVDbGljaygpeyBcbiAgICB0aGlzLmJ1dHRvbkNsaWNrLmVtaXQoKTtcbiAgfVxufVxuIiwiPHZlcmJlbmEtYnV0dG9uXG5bdGV4dF09XCJ0ZXh0XCJcbltiZ0NvbG9yXT1cImJnQ29sb3JcIlxuW3RleHRDb2xvcl09XCJjb2xvclwiXG5bYm9yZGVyXT1cImJvcmRlclwiXG5bYm9yZGVyUmFkaXVzXT1cImJvcmRlclJhZGl1c1wiXG5bcGRdPVwicGRcIlxuW3dpZHRoXT1cIndpZHRoXCJcbltkaXNhYmxlXT1cImRpc2FibGVkXCJcbltuZ1N0eWxlXT1cInsnY3Vyc29yJzogZGlzYWJsZWQgPyAnbm90LWFsbG93ZWQnIDogJ3BvaW50ZXInIH1cIlxuYnV0dG9uQ2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LVsyMnB4XSBsZWFkaW5nLVszM3B4XSB7e2J1dHRvbkNsYXNzfX1cIlxuKGNsaWNrKT1cImhhbmRsZUNsaWNrKClcIlxuPjwvdmVyYmVuYS1idXR0b24+XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU8vRSxNQUFNLE9BQU8sZUFBZTtJQUNqQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLEtBQUssR0FBVyxPQUFPLENBQUM7SUFDeEIsTUFBTSxHQUFXLG1CQUFtQixDQUFDO0lBQ3JDLFlBQVksR0FBVSxNQUFNLENBQUE7SUFDNUIsT0FBTyxHQUFXLFNBQVMsQ0FBQztJQUM1QixLQUFLLEdBQVcsTUFBTSxDQUFDO0lBQ3ZCLEVBQUUsR0FBVyxXQUFXLENBQUM7SUFDekIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFNBQVMsQ0FBVTtJQUVsQixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVqRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO3dHQWhCVSxlQUFlOzRGQUFmLGVBQWUsNlNDUDVCLHljQWdCQTs7NEZEVGEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZOzhCQUtiLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudHtcbiAgQElucHV0KCkgdGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmcgPSAnYmxhY2snO1xuICBASW5wdXQoKSBib3JkZXI6IHN0cmluZyA9ICcxcHggc29saWQgI0ZGRTY4MSc7XG4gIEBJbnB1dCgpIGJvcmRlclJhZGl1czpzdHJpbmcgPSBcIjQwcHhcIlxuICBASW5wdXQoKSBiZ0NvbG9yOiBzdHJpbmcgPSAnI0ZGRTY4MSc7XG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XG4gIEBJbnB1dCgpIHBkOiBzdHJpbmcgPSAnMTBweCAyMHB4JztcbiAgQElucHV0KCkgYnV0dG9uQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0xvYWRpbmc/OmJvb2xlYW47XG5cbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGhhbmRsZUNsaWNrKCl7IFxuICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdCgpO1xuICB9XG59XG4iLCI8dmVyYmVuYS1idXR0b25cblt0ZXh0XT1cInRleHRcIlxuW2JnQ29sb3JdPVwiYmdDb2xvclwiXG5bdGV4dENvbG9yXT1cImNvbG9yXCJcbltib3JkZXJdPVwiYm9yZGVyXCJcbltib3JkZXJSYWRpdXNdPVwiYm9yZGVyUmFkaXVzXCJcbltwZF09XCJwZFwiXG5bd2lkdGhdPVwid2lkdGhcIlxuW2Rpc2FibGVdPVwiZGlzYWJsZWRcIlxuW25nU3R5bGVdPVwieydjdXJzb3InOiBkaXNhYmxlZCA/ICdub3QtYWxsb3dlZCcgOiAncG9pbnRlcicgfVwiXG5idXR0b25DbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtWzIycHhdIGxlYWRpbmctWzMzcHhdIHt7YnV0dG9uQ2xhc3N9fVwiXG4oY2xpY2spPVwiaGFuZGxlQ2xpY2soKVwiXG5baXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG5bc3Bpbm5lclNpemVdPVwiJzIwcHgnXCJcbltzcGlubmVyQ29sb3JdPVwiJ2JsYWNrJ1wiXG4+PC92ZXJiZW5hLWJ1dHRvbj5cbiJdfQ==
@@ -66,7 +66,7 @@ export class ForgotPasswordComponent {
66
66
  }
67
67
  }
68
68
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForgotPasswordComponent, deps: [{ token: i1.FormBuilder }, { token: i2.HttpWebRequestService }, { token: i3.UtilService }], target: i0.ɵɵFactoryTarget.Component });
69
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ForgotPasswordComponent, selector: "verben-forgot-password", inputs: { title: "title", subTitle: "subTitle", buttonCaption: "buttonCaption", buttonTextColor: "buttonTextColor", buttonBackgroundColor: "buttonBackgroundColor" }, outputs: { onSubmit: "onSubmit", onSubmitEnd: "onSubmitEnd" }, ngImport: i0, template: "<div *ngIf=\"!isSubmitted\" [formGroup]=\"this.forgotPasswordForm\" class=\"reset-password-container flex flex-col\">\n <div class=\"reset-password-header flex flex-col\">\n <div class=\"reset-password-title\">{{title}}</div>\n <div class=\"reset-password-subtitle\">{{subTitle}}</div>\n </div>\n <div class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">Email</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"Email\" type=\"email\"></verbena-input>\n </div>\n <verbena-button fontWeight=\"700\" (click)=\"submit()\" [text]=\"buttonCaption\" width=\"100%\" [textColor]=\"buttonTextColor\"\n [bgColor]=\"buttonBackgroundColor\" borderRadius=\"25px\" [disable]=\"!this.checkForm()\"></verbena-button>\n</div>\n<div *ngIf=\"isSubmitted\" class=\"reset-password-container flex flex-col\">\n <div class=\"reset-password-title resend-title\">Follow the link sent to your e-mail to proceed</div>\n <div class=\"flex gap-1\">\n <span class=\"resend-caption\">Didn't get a link?</span> <span class=\"resend-caption resend-link\"\n (click)=\"submit()\">Resend</span>\n </div>\n</div>", styles: ["*{font-family:sans-serif;font-size:16px}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.reset-password-container{gap:25px;padding:50px;border:1px solid rgba(102,102,102,.5);box-shadow:4px 4px 4px #00000040;border-radius:24px}.reset-password-title{font-size:30px;font-weight:700}.reset-password-subtitle{font-size:14px;font-weight:500;color:#666}.form-field{gap:5px}.form-field-caption{color:#666}.resend-caption{font-size:13px}.resend-link{color:#00f;cursor:pointer}.resend-link:hover{text-decoration:underline}.resend-title{color:#666}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
69
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ForgotPasswordComponent, selector: "verben-forgot-password", inputs: { title: "title", subTitle: "subTitle", buttonCaption: "buttonCaption", buttonTextColor: "buttonTextColor", buttonBackgroundColor: "buttonBackgroundColor" }, outputs: { onSubmit: "onSubmit", onSubmitEnd: "onSubmitEnd" }, ngImport: i0, template: "<div *ngIf=\"!isSubmitted\" [formGroup]=\"this.forgotPasswordForm\" class=\"reset-password-container flex flex-col\">\n <div class=\"reset-password-header flex flex-col\">\n <div class=\"reset-password-title\">{{title}}</div>\n <div class=\"reset-password-subtitle\">{{subTitle}}</div>\n </div>\n <div class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">Email</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"Email\" type=\"email\"></verbena-input>\n </div>\n <verbena-button fontWeight=\"700\" (click)=\"submit()\" [text]=\"buttonCaption\" width=\"100%\" [textColor]=\"buttonTextColor\"\n [bgColor]=\"buttonBackgroundColor\" borderRadius=\"25px\" [disable]=\"!this.checkForm()\"></verbena-button>\n</div>\n<div *ngIf=\"isSubmitted\" class=\"reset-password-container flex flex-col\">\n <div class=\"reset-password-title resend-title\">Follow the link sent to your e-mail to proceed</div>\n <div class=\"flex gap-1\">\n <span class=\"resend-caption\">Didn't get a link?</span> <span class=\"resend-caption resend-link\"\n (click)=\"submit()\">Resend</span>\n </div>\n</div>", styles: ["*{font-family:sans-serif;font-size:16px}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.reset-password-container{gap:25px;padding:50px;border:1px solid rgba(102,102,102,.5);box-shadow:4px 4px 4px #00000040;border-radius:24px}.reset-password-title{font-size:30px;font-weight:700}.reset-password-subtitle{font-size:14px;font-weight:500;color:#666}.form-field{gap:5px}.form-field-caption{color:#666}.resend-caption{font-size:13px}.resend-link{color:#00f;cursor:pointer}.resend-link:hover{text-decoration:underline}.resend-title{color:#666}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
70
70
  }
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
72
72
  type: Component,
@@ -34,7 +34,7 @@ export class MailComponent {
34
34
  };
35
35
  }
36
36
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MailComponent, selector: "verben-mail-message", inputs: { customClass: "customClass", headlingClass: "headlingClass", width: "width", maxWidth: "maxWidth", margin: "margin", pd: "pd", bgColor: "bgColor", boxShadow: "boxShadow", border: "border", borderRadius: "borderRadius", textColor: "textColor", height: "height" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<section\n[ngStyle]=\"styles\"\nclass=\"{{ customClass }}\"\n>\n <h3 class=\"{{headlingClass}}\">Your e-mail has been verified!</h3>\n <lib-button \n text=\"Login\" \n buttonClass=\"\"\n (click)=\"goToLogin()\"\n ></lib-button> \n</section>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.ButtonComponent, selector: "lib-button", inputs: ["text", "color", "border", "borderRadius", "bgColor", "width", "pd", "buttonClass", "disabled"], outputs: ["buttonClick"] }] });
37
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MailComponent, selector: "verben-mail-message", inputs: { customClass: "customClass", headlingClass: "headlingClass", width: "width", maxWidth: "maxWidth", margin: "margin", pd: "pd", bgColor: "bgColor", boxShadow: "boxShadow", border: "border", borderRadius: "borderRadius", textColor: "textColor", height: "height" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<section\n[ngStyle]=\"styles\"\nclass=\"{{ customClass }}\"\n>\n <h3 class=\"{{headlingClass}}\">Your e-mail has been verified!</h3>\n <lib-button \n text=\"Login\" \n buttonClass=\"\"\n (click)=\"goToLogin()\"\n ></lib-button> \n</section>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.ButtonComponent, selector: "lib-button", inputs: ["text", "color", "border", "borderRadius", "bgColor", "width", "pd", "buttonClass", "disabled", "isLoading"], outputs: ["buttonClick"] }] });
38
38
  }
39
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MailComponent, decorators: [{
40
40
  type: Component,
@@ -1,27 +1,75 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { MechanismType } from '../../models/auth-mechanism';
3
+ import { ErrorResponse } from '../../models/ErrorResponse';
3
4
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "verben-ng-ui";
5
+ import * as i1 from "@angular/router";
6
+ import * as i2 from "../../services/http-web-request.service";
7
+ import * as i3 from "../../services/util.service";
8
+ import * as i4 from "../../services/environment.service";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "verben-ng-ui";
6
11
  export class OAuthComponent {
12
+ route;
13
+ server;
14
+ utilService;
15
+ envSvc;
7
16
  clientId = 'YOUR_CLIENT_ID_FROM_BACKEND';
8
17
  showGoogle = false;
9
18
  showMicrosoft = false;
10
19
  showApple = false;
11
20
  authMechanisms = null;
21
+ redirectUri = 'http://localhost:4200/documentation/login';
22
+ apiKey;
12
23
  microsoftClick = new EventEmitter();
24
+ onSubmitGoogleAuth = new EventEmitter();
13
25
  googleClick = new EventEmitter();
14
26
  appleClick = new EventEmitter();
27
+ code = '';
28
+ googleRedirectUrl = '';
29
+ constructor(route, server, utilService, envSvc) {
30
+ this.route = route;
31
+ this.server = server;
32
+ this.utilService = utilService;
33
+ this.envSvc = envSvc;
34
+ }
15
35
  ngOnInit() {
36
+ this.loadGoogleScript();
37
+ this.route.queryParams.subscribe(params => {
38
+ this.code = params['code'];
39
+ });
40
+ if (this.code) {
41
+ console.log('Code from URL:', this.code);
42
+ this.verifyUserDetails();
43
+ }
16
44
  if (this.authMechanisms !== null) {
17
45
  this.showMicrosoft = this.authMechanisms.some(item => item.AuthMechanism.includes(MechanismType.MicrosoftAD));
18
46
  this.showGoogle = this.authMechanisms.some(item => item.AuthMechanism.includes(MechanismType.Google));
19
47
  if (this.showGoogle) {
20
48
  const data = this.authMechanisms.find(item => item.AuthMechanism.includes(MechanismType.Google));
21
- this.clientId = data.ClientId;
49
+ this.clientId = data?.ClientId;
50
+ this.googleRedirectUrl = data?.RedirectUri;
22
51
  }
23
52
  this.showApple = this.authMechanisms.some(item => item.AuthMechanism.includes(MechanismType.Apple));
24
- this.loadGoogleScript();
53
+ }
54
+ }
55
+ async verifyUserDetails() {
56
+ if (this.authMechanisms !== null && this.apiKey) {
57
+ const data = this.authMechanisms.find(item => item.AuthMechanism.includes(MechanismType.Google));
58
+ const payload = {
59
+ AuthCode: this.code,
60
+ APIKey: this.apiKey,
61
+ AuthMechanism: data.AuthMechanism
62
+ };
63
+ this.utilService.sendBI(true);
64
+ const res = await this.server.post(`Authentication/GetUserDetails`, payload);
65
+ this.utilService.sendBI(false);
66
+ if (res instanceof ErrorResponse) {
67
+ this.onSubmitGoogleAuth.emit(res);
68
+ }
69
+ else {
70
+ var result = res;
71
+ this.onSubmitGoogleAuth.emit(result);
72
+ }
25
73
  }
26
74
  }
27
75
  loadGoogleScript() {
@@ -40,52 +88,12 @@ export class OAuthComponent {
40
88
  oAuthWithMicrosoft() {
41
89
  this.microsoftClick.emit();
42
90
  }
43
- // oAuthWithGoogle() {
44
- // console.log('windows',window['google'])
45
- // console.log('client id is here', this.clientId)
46
- // if (window['google']) {
47
- // window['google'].accounts.id.initialize({
48
- // client_id: this.clientId,
49
- // callback: (response: any) => this.handleCredentialResponse(response),
50
- // ux_mode: 'popup'
51
- // });
52
- // window['google'].accounts.id.prompt();
53
- // } else {
54
- // console.error('Google SDK not loaded.');
55
- // }
56
- // }
57
- // oAuthWithGoogle() {
58
- // const redirectUri = encodeURIComponent('http://localhost:5124/Authentication/ExternalCallback');
59
- // const scope = encodeURIComponent('openid email profile');
60
- // const responseType = 'code';
61
- // const authUrl = `https://accounts.google.com/o/oauth2/v2/auth?client_id=${this.clientId}&redirect_uri=${redirectUri}&response_type=${responseType}&scope=${scope}`;
62
- // window.open(authUrl, '_blank', 'width=full,height=full');
63
- // }
64
91
  oAuthWithGoogle() {
65
- const redirectUri = encodeURIComponent('http://localhost:4200/Authentication/ExternalCallback');
92
+ const redirectUri = encodeURIComponent(this.redirectUri);
66
93
  const scope = encodeURIComponent('openid email profile');
67
94
  const responseType = 'code';
68
95
  const authUrl = `https://accounts.google.com/o/oauth2/v2/auth?client_id=${this.clientId}&redirect_uri=${redirectUri}&response_type=${responseType}&scope=${scope}`;
69
- window.open(authUrl, '_blank', 'width=1000,height=800');
70
- // const interval = setInterval(() => {
71
- // console.log('yessss inside pop up')
72
- // try {
73
- // console.log('auth windows is here',authWindow)
74
- // const currentUrl = authWindow.location.href;
75
- // console.log('yessss for currentUrl',currentUrl)
76
- // if (currentUrl.indexOf('code=') !== -1) {
77
- // const urlParams = new URLSearchParams(authWindow.location.search);
78
- // const authCode = urlParams.get('code');
79
- // if (authCode) {
80
- // console.log('Authorization code:', authCode);
81
- // clearInterval(interval);
82
- // this.exchangeCodeForToken(authCode);
83
- // // authWindow.close();
84
- // }
85
- // }
86
- // } catch (error) {
87
- // }
88
- // }, 1000);
96
+ window.location.href = authUrl; // Redirects the current window
89
97
  }
90
98
  exchangeCodeForToken(authCode) {
91
99
  console.log('Exchanging code for token:', authCode);
@@ -105,19 +113,25 @@ export class OAuthComponent {
105
113
  oAuthWithApple() {
106
114
  this.appleClick.emit();
107
115
  }
108
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OAuthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
109
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OAuthComponent, selector: "verben-o-auth", inputs: { authMechanisms: "authMechanisms" }, outputs: { microsoftClick: "microsoftClick", googleClick: "googleClick", appleClick: "appleClick" }, ngImport: i0, template: "<section class=\"oauthWrapper\"> \n <div class=\"OrFlexWrapper\">\n <hr/>\n <span>OR</span>\n <hr/>\n </div>\n <span *ngIf=\"showMicrosoft\"> \n <verbena-button\n svg=\"microsoft-logo\"\n [svgHeight]=\"24\"\n [svgWidth]=\"24\"\n text=\"Continue with Microsoft\"\n bgColor=\"white\"\n textColor=\"black\"\n border=\"1px solid #333\"\n borderRadius=\"40px\"\n pd=\"10px 20px\"\n width=\"100%\"\n svgPosition=\"left\"\n buttonClass=\"font-normal text-[24px] leading-[29.05px] text-[#333] mt-2\"\n (click)=\"oAuthWithMicrosoft()\"\n ></verbena-button>\n </span> \n\n <span *ngIf=\"showGoogle\"> \n <verbena-button\n svg=\"google-logo\"\n [svgHeight]=\"24\"\n [svgWidth]=\"24\"\n text=\"Continue with Google\"\n bgColor=\"white\"\n textColor=\"black\"\n border=\"1px solid #333\"\n borderRadius=\"40px\"\n pd=\"10px 20px\"\n width=\"100%\"\n svgPosition=\"left\"\n buttonClass=\"font-normal text-[24px] leading-[29.05px] text-[#333] mt-2\"\n (click)=\"oAuthWithGoogle()\"\n ></verbena-button>\n\n <!-- <div id=\"g_id_onload\"\n data-client_id=\"834995866282-l8gkp0r3v3a1bdvfmaumurki7ndar3m4.apps.googleusercontent.com\"\n data-context=\"signin\"\n data-ux_mode=\"popup\"\n data-login_uri=\"http://localhost:5124/Authentication/ExternalCallback\"\n data-itp_support=\"true\">\n</div>\n\n<div class=\"g_id_signin\"\n data-type=\"standard\"\n data-shape=\"rectangular\"\n data-theme=\"outline\"\n data-text=\"signin_with\"\n data-size=\"large\"\n data-logo_alignment=\"center\">\n</div> -->\n </span>\n \n <span *ngIf=\"showApple\"> \n <verbena-button\n svg=\"apple-logo\"\n [svgHeight]=\"24\"\n [svgWidth]=\"24\"\n text=\"Continue with Apple\"\n bgColor=\"white\"\n textColor=\"black\"\n border=\"1px solid #333\"\n borderRadius=\"40px\"\n pd=\"10px 20px\"\n width=\"100%\"\n svgPosition=\"left\"\n buttonClass=\"font-normal text-[24px] leading-[29.05px] text-[#333] mt-2\"\n (click)=\"oAuthWithApple()\"\n ></verbena-button>\n </span>\n</section>\n", styles: ["hr{height:1px;margin:0;border:1px solid #66666640;flex:1}.OR{margin:0 2px;color:#666}.oauthWrapper{display:flex;flex-direction:column;gap:12px}.OrFlexWrapper{display:flex;align-items:center;gap:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }] });
116
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OAuthComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.HttpWebRequestService }, { token: i3.UtilService }, { token: i4.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component });
117
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OAuthComponent, selector: "verben-o-auth", inputs: { authMechanisms: "authMechanisms", redirectUri: "redirectUri", apiKey: "apiKey" }, outputs: { microsoftClick: "microsoftClick", onSubmitGoogleAuth: "onSubmitGoogleAuth", googleClick: "googleClick", appleClick: "appleClick" }, ngImport: i0, template: "<section class=\"oauthWrapper\"> \n <div class=\"OrFlexWrapper\">\n <hr/>\n <span>OR</span>\n <hr/>\n </div>\n <span *ngIf=\"showMicrosoft\"> \n <verbena-button\n svg=\"microsoft-logo\"\n [svgHeight]=\"24\"\n [svgWidth]=\"24\"\n text=\"Continue with Microsoft\"\n bgColor=\"white\"\n textColor=\"black\"\n border=\"1px solid #333\"\n borderRadius=\"40px\"\n pd=\"10px 20px\"\n width=\"100%\"\n svgPosition=\"left\"\n buttonClass=\"font-normal text-[24px] leading-[29.05px] text-[#333] mt-2\"\n (click)=\"oAuthWithMicrosoft()\"\n ></verbena-button>\n </span> \n\n <span *ngIf=\"showGoogle\"> \n <verbena-button\n svg=\"google-logo\"\n [svgHeight]=\"24\"\n [svgWidth]=\"24\"\n text=\"Continue with Google\"\n bgColor=\"white\"\n textColor=\"black\"\n border=\"1px solid #333\"\n borderRadius=\"40px\"\n pd=\"10px 20px\"\n width=\"100%\"\n svgPosition=\"left\"\n buttonClass=\"font-normal text-[24px] leading-[29.05px] text-[#333] mt-2\"\n (click)=\"oAuthWithGoogle()\"\n ></verbena-button>\n\n <!-- <div id=\"g_id_onload\"\n data-client_id=\"834995866282-l8gkp0r3v3a1bdvfmaumurki7ndar3m4.apps.googleusercontent.com\"\n data-context=\"signin\"\n data-ux_mode=\"popup\"\n data-login_uri=\"http://localhost:5124/Authentication/ExternalCallback\"\n data-itp_support=\"true\">\n</div>\n\n<div class=\"g_id_signin\"\n data-type=\"standard\"\n data-shape=\"rectangular\"\n data-theme=\"outline\"\n data-text=\"signin_with\"\n data-size=\"large\"\n data-logo_alignment=\"center\">\n</div> -->\n </span>\n \n <span *ngIf=\"showApple\"> \n <verbena-button\n svg=\"apple-logo\"\n [svgHeight]=\"24\"\n [svgWidth]=\"24\"\n text=\"Continue with Apple\"\n bgColor=\"white\"\n textColor=\"black\"\n border=\"1px solid #333\"\n borderRadius=\"40px\"\n pd=\"10px 20px\"\n width=\"100%\"\n svgPosition=\"left\"\n buttonClass=\"font-normal text-[24px] leading-[29.05px] text-[#333] mt-2\"\n (click)=\"oAuthWithApple()\"\n ></verbena-button>\n </span>\n</section>\n", styles: ["hr{height:1px;margin:0;border:1px solid #66666640;flex:1}.OR{margin:0 2px;color:#666}.oauthWrapper{display:flex;flex-direction:column;gap:12px}.OrFlexWrapper{display:flex;align-items:center;gap:8px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }] });
110
118
  }
111
119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OAuthComponent, decorators: [{
112
120
  type: Component,
113
121
  args: [{ selector: 'verben-o-auth', template: "<section class=\"oauthWrapper\"> \n <div class=\"OrFlexWrapper\">\n <hr/>\n <span>OR</span>\n <hr/>\n </div>\n <span *ngIf=\"showMicrosoft\"> \n <verbena-button\n svg=\"microsoft-logo\"\n [svgHeight]=\"24\"\n [svgWidth]=\"24\"\n text=\"Continue with Microsoft\"\n bgColor=\"white\"\n textColor=\"black\"\n border=\"1px solid #333\"\n borderRadius=\"40px\"\n pd=\"10px 20px\"\n width=\"100%\"\n svgPosition=\"left\"\n buttonClass=\"font-normal text-[24px] leading-[29.05px] text-[#333] mt-2\"\n (click)=\"oAuthWithMicrosoft()\"\n ></verbena-button>\n </span> \n\n <span *ngIf=\"showGoogle\"> \n <verbena-button\n svg=\"google-logo\"\n [svgHeight]=\"24\"\n [svgWidth]=\"24\"\n text=\"Continue with Google\"\n bgColor=\"white\"\n textColor=\"black\"\n border=\"1px solid #333\"\n borderRadius=\"40px\"\n pd=\"10px 20px\"\n width=\"100%\"\n svgPosition=\"left\"\n buttonClass=\"font-normal text-[24px] leading-[29.05px] text-[#333] mt-2\"\n (click)=\"oAuthWithGoogle()\"\n ></verbena-button>\n\n <!-- <div id=\"g_id_onload\"\n data-client_id=\"834995866282-l8gkp0r3v3a1bdvfmaumurki7ndar3m4.apps.googleusercontent.com\"\n data-context=\"signin\"\n data-ux_mode=\"popup\"\n data-login_uri=\"http://localhost:5124/Authentication/ExternalCallback\"\n data-itp_support=\"true\">\n</div>\n\n<div class=\"g_id_signin\"\n data-type=\"standard\"\n data-shape=\"rectangular\"\n data-theme=\"outline\"\n data-text=\"signin_with\"\n data-size=\"large\"\n data-logo_alignment=\"center\">\n</div> -->\n </span>\n \n <span *ngIf=\"showApple\"> \n <verbena-button\n svg=\"apple-logo\"\n [svgHeight]=\"24\"\n [svgWidth]=\"24\"\n text=\"Continue with Apple\"\n bgColor=\"white\"\n textColor=\"black\"\n border=\"1px solid #333\"\n borderRadius=\"40px\"\n pd=\"10px 20px\"\n width=\"100%\"\n svgPosition=\"left\"\n buttonClass=\"font-normal text-[24px] leading-[29.05px] text-[#333] mt-2\"\n (click)=\"oAuthWithApple()\"\n ></verbena-button>\n </span>\n</section>\n", styles: ["hr{height:1px;margin:0;border:1px solid #66666640;flex:1}.OR{margin:0 2px;color:#666}.oauthWrapper{display:flex;flex-direction:column;gap:12px}.OrFlexWrapper{display:flex;align-items:center;gap:8px}\n"] }]
114
- }], propDecorators: { authMechanisms: [{
122
+ }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.HttpWebRequestService }, { type: i3.UtilService }, { type: i4.EnvironmentService }], propDecorators: { authMechanisms: [{
123
+ type: Input
124
+ }], redirectUri: [{
125
+ type: Input
126
+ }], apiKey: [{
115
127
  type: Input
116
128
  }], microsoftClick: [{
117
129
  type: Output
130
+ }], onSubmitGoogleAuth: [{
131
+ type: Output
118
132
  }], googleClick: [{
119
133
  type: Output
120
134
  }], appleClick: [{
121
135
  type: Output
122
136
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hdXRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvby1hdXRoL28tYXV0aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL28tYXV0aC9vLWF1dGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7O0FBYTNFLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFFBQVEsR0FBVyw2QkFBNkIsQ0FBQztJQUVqRCxVQUFVLEdBQVcsS0FBSyxDQUFDO0lBQzNCLGFBQWEsR0FBVyxLQUFLLENBQUM7SUFDOUIsU0FBUyxHQUFXLEtBQUssQ0FBQztJQUNqQixjQUFjLEdBQTBCLElBQUksQ0FBQTtJQUMzQyxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUMxQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUN2QyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUdoRCxRQUFRO1FBQ0osSUFBRyxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUN2RCxDQUFDO1lBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENB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QzlCLGdFQUFnRTtRQUNoRSwyQ0FBMkM7UUFDM0MsdURBQXVEO1FBQ3ZELHlDQUF5QztRQUN6QyxnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLHdCQUF3QjtRQUN4QixRQUFRO1FBQ1IsWUFBWTtJQUNoQixDQUFDO0lBR0Qsb0JBQW9CLENBQUMsUUFBZ0I7UUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVwRCwyRUFBMkU7UUFDM0UsNEJBQTRCO1FBQzVCLG9EQUFvRDtRQUNwRCx5REFBeUQ7UUFDekQsU0FBUztRQUNULHdCQUF3QjtRQUN4QixrRUFBa0U7UUFDbEUsUUFBUTtRQUNSLE1BQU07SUFDUixDQUFDO0lBR0Msd0JBQXdCLENBQUMsUUFBYTtRQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzt3R0FuSVUsY0FBYzs0RkFBZCxjQUFjLHdNQ2QzQiwwdUVBNkVBOzs0RkQvRGEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxlQUFlOzhCQVVoQixjQUFjO3NCQUF0QixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aE1lY2hhbmlzbSwgTWVjaGFuaXNtVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9hdXRoLW1lY2hhbmlzbSc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBnb29nbGU6IGFueTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZXJiZW4tby1hdXRoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tYXV0aC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9vLWF1dGguY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgT0F1dGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjbGllbnRJZDogc3RyaW5nID0gJ1lPVVJfQ0xJRU5UX0lEX0ZST01fQkFDS0VORCc7XG5cbiAgc2hvd0dvb2dsZTpib29sZWFuID0gZmFsc2U7XG4gIHNob3dNaWNyb3NvZnQ6Ym9vbGVhbiA9IGZhbHNlO1xuICBzaG93QXBwbGU6Ym9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhdXRoTWVjaGFuaXNtczpBdXRoTWVjaGFuaXNtW10gfCBudWxsID0gbnVsbFxuICBAT3V0cHV0KCkgbWljcm9zb2Z0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBnb29nbGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGFwcGxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgIGlmKHRoaXMuYXV0aE1lY2hhbmlzbXMgIT09IG51bGwgKXsgXG4gICAgICAgdGhpcy5zaG93TWljcm9zb2Z0ID0gdGhpcy5hdXRoTWVjaGFuaXNtcy5zb21lKGl0ZW0gPT5cbiAgICAgICAgICBpdGVtLkF1dGhNZWNoYW5pc20uaW5jbHVkZXMoTWVjaGFuaXNtVHlwZS5NaWNyb3NvZnRBRClcbiAgICAgICAgKTtcbiAgICAgICB0aGlzLnNob3dHb29nbGUgPSB0aGlzLmF1dGhNZWNoYW5pc21zLnNvbWUoaXRlbSA9PlxuICAgICAgICAgIGl0ZW0uQXV0aE1lY2hhbmlzbS5pbmNsdWRlcyhNZWNoYW5pc21UeXBlLkdvb2dsZSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYodGhpcy5zaG93R29vZ2xlKXsgXG4gICAgICAgICAgY29uc3QgZGF0YTphbnkgPSB0aGlzLmF1dGhNZWNoYW5pc21zLmZpbmQoaXRlbSA9PlxuICAgICAgICAgICAgaXRlbS5BdXRoTWVjaGFuaXNtLmluY2x1ZGVzKE1lY2hhbmlzbVR5cGUuR29vZ2xlKVxuICAgICAgICAgIClcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gZGF0YS5DbGllbnRJZFxuICAgICAgICB9XG4gICAgICAgdGhpcy5zaG93QXBwbGUgPSB0aGlzLmF1dGhNZWNoYW5pc21zLnNvbWUoaXRlbSA9PlxuICAgICAgICAgIGl0ZW0uQXV0aE1lY2hhbmlzbS5pbmNsdWRlcyhNZWNoYW5pc21UeXBlLkFwcGxlKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMubG9hZEdvb2dsZVNjcmlwdCgpO1xuICAgICAgfSAgXG4gIH1cblxuICBsb2FkR29vZ2xlU2NyaXB0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdjaGVja2luZyBoZXJlJyk7ICBcbiAgICBpZiAoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb29nbGUtanNzZGsnKSkge1xuICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzY3JpcHQuc3JjID0gJ2h0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9nc2kvY2xpZW50JztcbiAgICAgIHNjcmlwdC5pZCA9ICdnb29nbGUtanNzZGsnO1xuICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICAgIHNjcmlwdC5kZWZlciA9IHRydWU7XG4gICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4gY29uc29sZS5sb2coJ0dvb2dsZSBTREsgbG9hZGVkJyk7XG4gICAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IGNvbnNvbGUubG9nKCdFcnJvciBsb2FkaW5nIEdvb2dsZSBTREsnKTtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICB9XG4gIH1cblxuICBvQXV0aFdpdGhNaWNyb3NvZnQoKXtcbiAgICB0aGlzLm1pY3Jvc29mdENsaWNrLmVtaXQoKTsgXG4gIH1cblxuICAvLyBvQXV0aFdpdGhHb29nbGUoKSB7XG4gIC8vICAgY29uc29sZS5sb2coJ3dpbmRvd3MnLHdpbmRvd1snZ29vZ2xlJ10pXG4gIC8vICAgY29uc29sZS5sb2coJ2NsaWVudCBpZCBpcyBoZXJlJywgdGhpcy5jbGllbnRJZClcbiAgLy8gICBpZiAod2luZG93Wydnb29nbGUnXSkge1xuICAvLyAgICAgd2luZG93Wydnb29nbGUnXS5hY2NvdW50cy5pZC5pbml0aWFsaXplKHtcbiAgLy8gICAgICAgY2xpZW50X2lkOiB0aGlzLmNsaWVudElkLFxuICAvLyAgICAgICBjYWxsYmFjazogKHJlc3BvbnNlOiBhbnkpID0+IHRoaXMuaGFuZGxlQ3JlZGVudGlhbFJlc3BvbnNlKHJlc3BvbnNlKSxcbiAgLy8gICAgICAgdXhfbW9kZTogJ3BvcHVwJ1xuICAvLyAgICAgfSk7XG4gIC8vICAgICB3aW5kb3dbJ2dvb2dsZSddLmFjY291bnRzLmlkLnByb21wdCgpO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBjb25zb2xlLmVycm9yKCdHb29nbGUgU0RLIG5vdCBsb2FkZWQuJyk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLy8gb0F1dGhXaXRoR29vZ2xlKCkge1xuICAvLyAgIGNvbnN0IHJlZGlyZWN0VXJpID0gZW5jb2RlVVJJQ29tcG9uZW50KCdodHRwOi8vbG9jYWxob3N0OjUxMjQvQXV0aGVudGljYXRpb24vRXh0ZXJuYWxDYWxsYmFjaycpO1xuICAvLyAgIGNvbnN0IHNjb3BlID0gZW5jb2RlVVJJQ29tcG9uZW50KCdvcGVuaWQgZW1haWwgcHJvZmlsZScpO1xuICAvLyAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9ICdjb2RlJztcbiAgXG4gIC8vICAgY29uc3QgYXV0aFVybCA9IGBodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvdjIvYXV0aD9jbGllbnRfaWQ9JHt0aGlzLmNsaWVudElkfSZyZWRpcmVjdF91cmk9JHtyZWRpcmVjdFVyaX0mcmVzcG9uc2VfdHlwZT0ke3Jlc3BvbnNlVHlwZX0mc2NvcGU9JHtzY29wZX1gO1xuXG4gIC8vICAgd2luZG93Lm9wZW4oYXV0aFVybCwgJ19ibGFuaycsICd3aWR0aD1mdWxsLGhlaWdodD1mdWxsJyk7XG4gIC8vIH1cblxuICBvQXV0aFdpdGhHb29nbGUoKSB7XG4gICAgY29uc3QgcmVkaXJlY3RVcmkgPSBlbmNvZGVVUklDb21wb25lbnQoJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMC9BdXRoZW50aWNhdGlvbi9FeHRlcm5hbENhbGxiYWNrJyk7XG4gICAgY29uc3Qgc2NvcGUgPSBlbmNvZGVVUklDb21wb25lbnQoJ29wZW5pZCBlbWFpbCBwcm9maWxlJyk7XG4gICAgY29uc3QgcmVzcG9uc2VUeXBlID0gJ2NvZGUnO1xuICBcbiAgICBjb25zdCBhdXRoVXJsID0gYGh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi92Mi9hdXRoP2NsaWVudF9pZD0ke3RoaXMuY2xpZW50SWR9JnJlZGlyZWN0X3VyaT0ke3JlZGlyZWN0VXJpfSZyZXNwb25zZV90eXBlPSR7cmVzcG9uc2VUeXBlfSZzY29wZT0ke3Njb3BlfWA7XG5cbiAgIHdpbmRvdy5vcGVuKGF1dGhVcmwsICdfYmxhbmsnLCAnd2lkdGg9MTAwMCxoZWlnaHQ9ODAwJyk7XG4gICAgXG4gICAgLy8gY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgLy8gICBjb25zb2xlLmxvZygneWVzc3NzIGluc2lkZSBwb3AgdXAnKVxuICAgIC8vICAgICB0cnkge1xuICAgIC8vICAgICAgIGNvbnNvbGUubG9nKCdhdXRoIHdpbmRvd3MgaXMgaGVyZScsYXV0aFdpbmRvdylcbiAgICAvLyAgICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSBhdXRoV2luZG93LmxvY2F0aW9uLmhyZWY7XG5cbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKCd5ZXNzc3MgZm9yIGN1cnJlbnRVcmwnLGN1cnJlbnRVcmwpXG5cbiAgICAvLyAgICAgICAgIGlmIChjdXJyZW50VXJsLmluZGV4T2YoJ2NvZGU9JykgIT09IC0xKSB7XG4gICAgLy8gICAgICAgICAgICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhhdXRoV2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgLy8gICAgICAgICAgICAgY29uc3QgYXV0aENvZGUgPSB1cmxQYXJhbXMuZ2V0KCdjb2RlJyk7XG4gICAgICAgICAgICAgICAgXG4gICAgLy8gICAgICAgICAgICAgaWYgKGF1dGhDb2RlKSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBdXRob3JpemF0aW9uIGNvZGU6JywgYXV0aENvZGUpO1xuICAgIC8vICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAvLyAgICAgICAgICAgICAgICAgdGhpcy5leGNoYW5nZUNvZGVGb3JUb2tlbihhdXRoQ29kZSk7XG4gICAgLy8gICAgICAgICAgICAgICAgIC8vIGF1dGhXaW5kb3cuY2xvc2UoKTtcbiAgICAvLyAgICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gICAgIH1cbiAgICAvLyB9LCAxMDAwKTtcbn1cblxuXG5leGNoYW5nZUNvZGVGb3JUb2tlbihhdXRoQ29kZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnNvbGUubG9nKCdFeGNoYW5naW5nIGNvZGUgZm9yIHRva2VuOicsIGF1dGhDb2RlKTtcblxuICAvLyB0aGlzLmh0dHAucG9zdCgnL2FwaS9hdXRoL2dvb2dsZS90b2tlbicsIHsgY29kZTogYXV0aENvZGUgfSkuc3Vic2NyaWJlKHtcbiAgLy8gICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAvLyAgICAgICAgIGNvbnNvbGUubG9nKCdUb2tlbiByZWNlaXZlZDonLCByZXNwb25zZSk7XG4gIC8vICAgICAgICAgLy8gSGFuZGxlIHN1Y2Nlc3NmdWwgbG9naW4gKHN0b3JlIHRva2VuLCBldGMuKVxuICAvLyAgICAgfSxcbiAgLy8gICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gIC8vICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXhjaGFuZ2luZyBjb2RlIGZvciB0b2tlbjonLCBlcnIpO1xuICAvLyAgICAgfVxuICAvLyB9KTtcbn1cblxuXG4gIGhhbmRsZUNyZWRlbnRpYWxSZXNwb25zZShyZXNwb25zZTogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0VuY29kZWQgSldUIElEIHRva2VuOicsIHJlc3BvbnNlLmNyZWRlbnRpYWwpXG4gIH1cbiAgb0F1dGhXaXRoQXBwbGUoKXtcbiAgICB0aGlzLmFwcGxlQ2xpY2suZW1pdCgpOyBcbiAgfVxuXG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cIm9hdXRoV3JhcHBlclwiPiBcbiAgICA8ZGl2IGNsYXNzPVwiT3JGbGV4V3JhcHBlclwiPlxuICAgICAgICA8aHIvPlxuICAgICAgICA8c3Bhbj5PUjwvc3Bhbj5cbiAgICAgICAgPGhyLz5cbiAgICA8L2Rpdj5cbiAgICAgPHNwYW4gKm5nSWY9XCJzaG93TWljcm9zb2Z0XCI+IFxuICAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgIHN2Zz1cIm1pY3Jvc29mdC1sb2dvXCJcbiAgICAgICBbc3ZnSGVpZ2h0XT1cIjI0XCJcbiAgICAgICBbc3ZnV2lkdGhdPVwiMjRcIlxuICAgICAgIHRleHQ9XCJDb250aW51ZSB3aXRoIE1pY3Jvc29mdFwiXG4gICAgICAgYmdDb2xvcj1cIndoaXRlXCJcbiAgICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICAgYm9yZGVyPVwiMXB4IHNvbGlkICMzMzNcIlxuICAgICAgIGJvcmRlclJhZGl1cz1cIjQwcHhcIlxuICAgICAgIHBkPVwiMTBweCAyMHB4XCJcbiAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgIHN2Z1Bvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgYnV0dG9uQ2xhc3M9XCJmb250LW5vcm1hbCB0ZXh0LVsyNHB4XSBsZWFkaW5nLVsyOS4wNXB4XSB0ZXh0LVsjMzMzXSBtdC0yXCJcbiAgICAgICAoY2xpY2spPVwib0F1dGhXaXRoTWljcm9zb2Z0KClcIlxuICAgICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICAgICA8L3NwYW4+IFxuXG4gICAgPHNwYW4gKm5nSWY9XCJzaG93R29vZ2xlXCI+IFxuICAgICAgPHZlcmJlbmEtYnV0dG9uXG4gICAgICBzdmc9XCJnb29nbGUtbG9nb1wiXG4gICAgICBbc3ZnSGVpZ2h0XT1cIjI0XCJcbiAgICAgIFtzdmdXaWR0aF09XCIyNFwiXG4gICAgICB0ZXh0PVwiQ29udGludWUgd2l0aCBHb29nbGVcIlxuICAgICAgYmdDb2xvcj1cIndoaXRlXCJcbiAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCAjMzMzXCJcbiAgICAgIGJvcmRlclJhZGl1cz1cIjQwcHhcIlxuICAgICAgcGQ9XCIxMHB4IDIwcHhcIlxuICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgIHN2Z1Bvc2l0aW9uPVwibGVmdFwiXG4gICAgICBidXR0b25DbGFzcz1cImZvbnQtbm9ybWFsIHRleHQtWzI0cHhdIGxlYWRpbmctWzI5LjA1cHhdIHRleHQtWyMzMzNdIG10LTJcIlxuICAgICAgKGNsaWNrKT1cIm9BdXRoV2l0aEdvb2dsZSgpXCJcbiAgICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuXG4gICAgICA8IS0tIDxkaXYgaWQ9XCJnX2lkX29ubG9hZFwiXG4gICAgIGRhdGEtY2xpZW50X2lkPVwiODM0OTk1ODY2MjgyLWw4Z2twMHIzdjNhMWJkdmZtYXVtdXJraTduZGFyM200LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tXCJcbiAgICAgZGF0YS1jb250ZXh0PVwic2lnbmluXCJcbiAgICAgZGF0YS11eF9tb2RlPVwicG9wdXBcIlxuICAgICBkYXRhLWxvZ2luX3VyaT1cImh0dHA6Ly9sb2NhbGhvc3Q6NTEyNC9BdXRoZW50aWNhdGlvbi9FeHRlcm5hbENhbGxiYWNrXCJcbiAgICAgZGF0YS1pdHBfc3VwcG9ydD1cInRydWVcIj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZ19pZF9zaWduaW5cIlxuICAgICBkYXRhLXR5cGU9XCJzdGFuZGFyZFwiXG4gICAgIGRhdGEtc2hhcGU9XCJyZWN0YW5ndWxhclwiXG4gICAgIGRhdGEtdGhlbWU9XCJvdXRsaW5lXCJcbiAgICAgZGF0YS10ZXh0PVwic2lnbmluX3dpdGhcIlxuICAgICBkYXRhLXNpemU9XCJsYXJnZVwiXG4gICAgIGRhdGEtbG9nb19hbGlnbm1lbnQ9XCJjZW50ZXJcIj5cbjwvZGl2PiAtLT5cbiAgICA8L3NwYW4+XG4gICBcbiAgICA8c3BhbiAqbmdJZj1cInNob3dBcHBsZVwiPiBcbiAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgc3ZnPVwiYXBwbGUtbG9nb1wiXG4gICAgICBbc3ZnSGVpZ2h0XT1cIjI0XCJcbiAgICAgIFtzdmdXaWR0aF09XCIyNFwiXG4gICAgICB0ZXh0PVwiQ29udGludWUgd2l0aCBBcHBsZVwiXG4gICAgICBiZ0NvbG9yPVwid2hpdGVcIlxuICAgICAgdGV4dENvbG9yPVwiYmxhY2tcIlxuICAgICAgYm9yZGVyPVwiMXB4IHNvbGlkICMzMzNcIlxuICAgICAgYm9yZGVyUmFkaXVzPVwiNDBweFwiXG4gICAgICBwZD1cIjEwcHggMjBweFwiXG4gICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgc3ZnUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgIGJ1dHRvbkNsYXNzPVwiZm9udC1ub3JtYWwgdGV4dC1bMjRweF0gbGVhZGluZy1bMjkuMDVweF0gdGV4dC1bIzMzM10gbXQtMlwiXG4gICAgICAoY2xpY2spPVwib0F1dGhXaXRoQXBwbGUoKVwiXG4gICAgICA+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICA8L3NwYW4+XG48L3NlY3Rpb24+XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hdXRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvby1hdXRoL28tYXV0aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL28tYXV0aC9vLWF1dGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFjM0QsTUFBTSxPQUFPLGNBQWM7SUFlZjtJQUNBO0lBQ0E7SUFDQTtJQWpCVixRQUFRLEdBQVcsNkJBQTZCLENBQUM7SUFDakQsVUFBVSxHQUFXLEtBQUssQ0FBQztJQUMzQixhQUFhLEdBQVcsS0FBSyxDQUFDO0lBQzlCLFNBQVMsR0FBVyxLQUFLLENBQUM7SUFDakIsY0FBYyxHQUEwQixJQUFJLENBQUE7SUFDNUMsV0FBVyxHQUFVLDJDQUEyQyxDQUFBO0lBQ2hFLE1BQU0sQ0FBUTtJQUNiLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQzFDLGtCQUFrQixHQUFtRCxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3hGLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ3ZDLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ2hELElBQUksR0FBVSxFQUFFLENBQUM7SUFDakIsaUJBQWlCLEdBQVksRUFBRSxDQUFBO0lBQy9CLFlBQ1UsS0FBcUIsRUFDckIs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ekQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDO1FBRTVCLE1BQU0sT0FBTyxHQUFHLDBEQUEwRCxJQUFJLENBQUMsUUFBUSxpQkFBaUIsV0FBVyxrQkFBa0IsWUFBWSxVQUFVLEtBQUssRUFBRSxDQUFDO1FBRW5LLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLCtCQUErQjtJQUNqRSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsUUFBZ0I7UUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVwRCwyRUFBMkU7UUFDM0UsNEJBQTRCO1FBQzVCLG9EQUFvRDtRQUNwRCx5REFBeUQ7UUFDekQsU0FBUztRQUNULHdCQUF3QjtRQUN4QixrRUFBa0U7UUFDbEUsUUFBUTtRQUNSLE1BQU07SUFDUixDQUFDO0lBR0Msd0JBQXdCLENBQUMsUUFBYTtRQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzt3R0E5SFUsY0FBYzs0RkFBZCxjQUFjLGdTQ3BCM0IsMHVFQTZFQTs7NEZEekRhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsZUFBZTtrTEFTaEIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoTWVjaGFuaXNtLCBNZWNoYW5pc21UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F1dGgtbWVjaGFuaXNtJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEh0dHBXZWJSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAtd2ViLXJlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvRXJyb3JSZXNwb25zZSc7XG5pbXBvcnQgeyBSZXNwb25zZUtleVZhbHVlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1Jlc3BvbnNlS2V5VmFsdWUnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgZ29vZ2xlOiBhbnk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLW8tYXV0aCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWF1dGguY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vby1hdXRoLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIE9BdXRoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY2xpZW50SWQ6IHN0cmluZyA9ICdZT1VSX0NMSUVOVF9JRF9GUk9NX0JBQ0tFTkQnO1xuICBzaG93R29vZ2xlOmJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd01pY3Jvc29mdDpib29sZWFuID0gZmFsc2U7XG4gIHNob3dBcHBsZTpib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF1dGhNZWNoYW5pc21zOkF1dGhNZWNoYW5pc21bXSB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIHJlZGlyZWN0VXJpOnN0cmluZyA9ICdodHRwOi8vbG9jYWxob3N0OjQyMDAvZG9jdW1lbnRhdGlvbi9sb2dpbidcbiAgQElucHV0KCkgYXBpS2V5PzpzdHJpbmdcbiAgQE91dHB1dCgpIG1pY3Jvc29mdENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25TdWJtaXRHb29nbGVBdXRoOiBFdmVudEVtaXR0ZXI8UmVzcG9uc2VLZXlWYWx1ZSB8IEVycm9yUmVzcG9uc2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZ29vZ2xlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBhcHBsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBjb2RlOnN0cmluZyA9ICcnO1xuICBnb29nbGVSZWRpcmVjdFVybCA6IHN0cmluZyA9ICcnXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgc2VydmVyOiBIdHRwV2ViUmVxdWVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZSxcbiAgKXsgXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRHb29nbGVTY3JpcHQoKTsgXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIHRoaXMuY29kZSA9IHBhcmFtc1snY29kZSddO1xuICAgIH0pO1xuICAgICBpZih0aGlzLmNvZGUpeyBcbiAgICAgIGNvbnNvbGUubG9nKCdDb2RlIGZyb20gVVJMOicsIHRoaXMuY29kZSk7XG4gICAgICB0aGlzLnZlcmlmeVVzZXJEZXRhaWxzKClcbiAgICAgfVxuICAgICAgIGlmKHRoaXMuYXV0aE1lY2hhbmlzbXMgIT09IG51bGwgKXsgXG4gICAgICAgIHRoaXMuc2hvd01pY3Jvc29mdCA9IHRoaXMuYXV0aE1lY2hhbmlzbXMuc29tZShpdGVtID0+XG4gICAgICAgICAgIGl0ZW0uQXV0aE1lY2hhbmlzbS5pbmNsdWRlcyhNZWNoYW5pc21UeXBlLk1pY3Jvc29mdEFEKVxuICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zaG93R29vZ2xlID0gdGhpcy5hdXRoTWVjaGFuaXNtcy5zb21lKGl0ZW0gPT5cbiAgICAgICAgICAgaXRlbS5BdXRoTWVjaGFuaXNtLmluY2x1ZGVzKE1lY2hhbmlzbVR5cGUuR29vZ2xlKVxuICAgICAgICAgKTtcbiAgICAgICAgIGlmKHRoaXMuc2hvd0dvb2dsZSl7IFxuICAgICAgICAgICAgY29uc3QgZGF0YTphbnkgPSB0aGlzLmF1dGhNZWNoYW5pc21zLmZpbmQoaXRlbSA9PlxuICAgICAgICAgICAgIGl0ZW0uQXV0aE1lY2hhbmlzbS5pbmNsdWRlcyhNZWNoYW5pc21UeXBlLkdvb2dsZSlcbiAgICAgICAgICAgKVxuICAgICAgICAgICB0aGlzLmNsaWVudElkID0gZGF0YT8uQ2xpZW50SWQ7XG4gICAgICAgICAgIHRoaXMuZ29vZ2xlUmVkaXJlY3RVcmwgPSBkYXRhPy5SZWRpcmVjdFVyaVxuICAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dBcHBsZSA9IHRoaXMuYXV0aE1lY2hhbmlzbXMuc29tZShpdGVtID0+XG4gICAgICAgICAgIGl0ZW0uQXV0aE1lY2hhbmlzbS5pbmNsdWRlcyhNZWNoYW5pc21UeXBlLkFwcGxlKVxuICAgICAgICAgKTtcbiAgICAgfVxuICB9XG4gIFxuICBhc3luYyB2ZXJpZnlVc2VyRGV0YWlscygpeyBcbiAgICBpZih0aGlzLmF1dGhNZWNoYW5pc21zICE9PSBudWxsICYmIHRoaXMuYXBpS2V5KXsgXG4gICAgICBjb25zdCBkYXRhOmFueSA9IHRoaXMuYXV0aE1lY2hhbmlzbXMuZmluZChpdGVtID0+XG4gICAgICAgIGl0ZW0uQXV0aE1lY2hhbmlzbS5pbmNsdWRlcyhNZWNoYW5pc21UeXBlLkdvb2dsZSlcbiAgICAgIClcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7IFxuICAgICAgICBBdXRoQ29kZTp0aGlzLmNvZGUsXG4gICAgICAgIEFQSUtleTp0aGlzLmFwaUtleSxcbiAgICAgICAgQXV0aE1lY2hhbmlzbTpkYXRhLkF1dGhNZWNoYW5pc21cbiAgICAgIH1cblxuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KFxuICAgICAgICBgQXV0aGVudGljYXRpb24vR2V0VXNlckRldGFpbHNgLHBheWxvYWRcbiAgICAgICk7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICB0aGlzLm9uU3VibWl0R29vZ2xlQXV0aC5lbWl0KHJlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVzIGFzIFJlc3BvbnNlS2V5VmFsdWU7XG4gICAgICAgIHRoaXMub25TdWJtaXRHb29nbGVBdXRoLmVtaXQocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgIFxuICB9XG5cbiAgbG9hZEdvb2dsZVNjcmlwdCgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnY2hlY2tpbmcgaGVyZScpOyAgXG4gICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ29vZ2xlLWpzc2RrJykpIHtcbiAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgc2NyaXB0LnNyYyA9ICdodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vZ3NpL2NsaWVudCc7XG4gICAgICBzY3JpcHQuaWQgPSAnZ29vZ2xlLWpzc2RrJztcbiAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xuICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IGNvbnNvbGUubG9nKCdHb29nbGUgU0RLIGxvYWRlZCcpO1xuICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiBjb25zb2xlLmxvZygnRXJyb3IgbG9hZGluZyBHb29nbGUgU0RLJyk7XG4gICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfVxuICB9XG5cbiAgb0F1dGhXaXRoTWljcm9zb2Z0KCl7XG4gICAgdGhpcy5taWNyb3NvZnRDbGljay5lbWl0KCk7IFxuICB9XG5cbm9BdXRoV2l0aEdvb2dsZSgpIHtcbiAgY29uc3QgcmVkaXJlY3RVcmkgPSBlbmNvZGVVUklDb21wb25lbnQodGhpcy5yZWRpcmVjdFVyaSk7XG4gIGNvbnN0IHNjb3BlID0gZW5jb2RlVVJJQ29tcG9uZW50KCdvcGVuaWQgZW1haWwgcHJvZmlsZScpO1xuICBjb25zdCByZXNwb25zZVR5cGUgPSAnY29kZSc7XG5cbiAgY29uc3QgYXV0aFVybCA9IGBodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvdjIvYXV0aD9jbGllbnRfaWQ9JHt0aGlzLmNsaWVudElkfSZyZWRpcmVjdF91cmk9JHtyZWRpcmVjdFVyaX0mcmVzcG9uc2VfdHlwZT0ke3Jlc3BvbnNlVHlwZX0mc2NvcGU9JHtzY29wZX1gO1xuXG4gIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYXV0aFVybDsgLy8gUmVkaXJlY3RzIHRoZSBjdXJyZW50IHdpbmRvd1xufVxuXG5leGNoYW5nZUNvZGVGb3JUb2tlbihhdXRoQ29kZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnNvbGUubG9nKCdFeGNoYW5naW5nIGNvZGUgZm9yIHRva2VuOicsIGF1dGhDb2RlKTtcblxuICAvLyB0aGlzLmh0dHAucG9zdCgnL2FwaS9hdXRoL2dvb2dsZS90b2tlbicsIHsgY29kZTogYXV0aENvZGUgfSkuc3Vic2NyaWJlKHtcbiAgLy8gICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAvLyAgICAgICAgIGNvbnNvbGUubG9nKCdUb2tlbiByZWNlaXZlZDonLCByZXNwb25zZSk7XG4gIC8vICAgICAgICAgLy8gSGFuZGxlIHN1Y2Nlc3NmdWwgbG9naW4gKHN0b3JlIHRva2VuLCBldGMuKVxuICAvLyAgICAgfSxcbiAgLy8gICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gIC8vICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXhjaGFuZ2luZyBjb2RlIGZvciB0b2tlbjonLCBlcnIpO1xuICAvLyAgICAgfVxuICAvLyB9KTtcbn1cblxuXG4gIGhhbmRsZUNyZWRlbnRpYWxSZXNwb25zZShyZXNwb25zZTogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0VuY29kZWQgSldUIElEIHRva2VuOicsIHJlc3BvbnNlLmNyZWRlbnRpYWwpXG4gIH1cbiAgb0F1dGhXaXRoQXBwbGUoKXtcbiAgICB0aGlzLmFwcGxlQ2xpY2suZW1pdCgpOyBcbiAgfVxuXG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cIm9hdXRoV3JhcHBlclwiPiBcbiAgICA8ZGl2IGNsYXNzPVwiT3JGbGV4V3JhcHBlclwiPlxuICAgICAgICA8aHIvPlxuICAgICAgICA8c3Bhbj5PUjwvc3Bhbj5cbiAgICAgICAgPGhyLz5cbiAgICA8L2Rpdj5cbiAgICAgPHNwYW4gKm5nSWY9XCJzaG93TWljcm9zb2Z0XCI+IFxuICAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgIHN2Zz1cIm1pY3Jvc29mdC1sb2dvXCJcbiAgICAgICBbc3ZnSGVpZ2h0XT1cIjI0XCJcbiAgICAgICBbc3ZnV2lkdGhdPVwiMjRcIlxuICAgICAgIHRleHQ9XCJDb250aW51ZSB3aXRoIE1pY3Jvc29mdFwiXG4gICAgICAgYmdDb2xvcj1cIndoaXRlXCJcbiAgICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICAgYm9yZGVyPVwiMXB4IHNvbGlkICMzMzNcIlxuICAgICAgIGJvcmRlclJhZGl1cz1cIjQwcHhcIlxuICAgICAgIHBkPVwiMTBweCAyMHB4XCJcbiAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgIHN2Z1Bvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgYnV0dG9uQ2xhc3M9XCJmb250LW5vcm1hbCB0ZXh0LVsyNHB4XSBsZWFkaW5nLVsyOS4wNXB4XSB0ZXh0LVsjMzMzXSBtdC0yXCJcbiAgICAgICAoY2xpY2spPVwib0F1dGhXaXRoTWljcm9zb2Z0KClcIlxuICAgICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICAgICA8L3NwYW4+IFxuXG4gICAgPHNwYW4gKm5nSWY9XCJzaG93R29vZ2xlXCI+IFxuICAgICAgPHZlcmJlbmEtYnV0dG9uXG4gICAgICBzdmc9XCJnb29nbGUtbG9nb1wiXG4gICAgICBbc3ZnSGVpZ2h0XT1cIjI0XCJcbiAgICAgIFtzdmdXaWR0aF09XCIyNFwiXG4gICAgICB0ZXh0PVwiQ29udGludWUgd2l0aCBHb29nbGVcIlxuICAgICAgYmdDb2xvcj1cIndoaXRlXCJcbiAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCAjMzMzXCJcbiAgICAgIGJvcmRlclJhZGl1cz1cIjQwcHhcIlxuICAgICAgcGQ9XCIxMHB4IDIwcHhcIlxuICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgIHN2Z1Bvc2l0aW9uPVwibGVmdFwiXG4gICAgICBidXR0b25DbGFzcz1cImZvbnQtbm9ybWFsIHRleHQtWzI0cHhdIGxlYWRpbmctWzI5LjA1cHhdIHRleHQtWyMzMzNdIG10LTJcIlxuICAgICAgKGNsaWNrKT1cIm9BdXRoV2l0aEdvb2dsZSgpXCJcbiAgICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuXG4gICAgICA8IS0tIDxkaXYgaWQ9XCJnX2lkX29ubG9hZFwiXG4gICAgIGRhdGEtY2xpZW50X2lkPVwiODM0OTk1ODY2MjgyLWw4Z2twMHIzdjNhMWJkdmZtYXVtdXJraTduZGFyM200LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tXCJcbiAgICAgZGF0YS1jb250ZXh0PVwic2lnbmluXCJcbiAgICAgZGF0YS11eF9tb2RlPVwicG9wdXBcIlxuICAgICBkYXRhLWxvZ2luX3VyaT1cImh0dHA6Ly9sb2NhbGhvc3Q6NTEyNC9BdXRoZW50aWNhdGlvbi9FeHRlcm5hbENhbGxiYWNrXCJcbiAgICAgZGF0YS1pdHBfc3VwcG9ydD1cInRydWVcIj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZ19pZF9zaWduaW5cIlxuICAgICBkYXRhLXR5cGU9XCJzdGFuZGFyZFwiXG4gICAgIGRhdGEtc2hhcGU9XCJyZWN0YW5ndWxhclwiXG4gICAgIGRhdGEtdGhlbWU9XCJvdXRsaW5lXCJcbiAgICAgZGF0YS10ZXh0PVwic2lnbmluX3dpdGhcIlxuICAgICBkYXRhLXNpemU9XCJsYXJnZVwiXG4gICAgIGRhdGEtbG9nb19hbGlnbm1lbnQ9XCJjZW50ZXJcIj5cbjwvZGl2PiAtLT5cbiAgICA8L3NwYW4+XG4gICBcbiAgICA8c3BhbiAqbmdJZj1cInNob3dBcHBsZVwiPiBcbiAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgc3ZnPVwiYXBwbGUtbG9nb1wiXG4gICAgICBbc3ZnSGVpZ2h0XT1cIjI0XCJcbiAgICAgIFtzdmdXaWR0aF09XCIyNFwiXG4gICAgICB0ZXh0PVwiQ29udGludWUgd2l0aCBBcHBsZVwiXG4gICAgICBiZ0NvbG9yPVwid2hpdGVcIlxuICAgICAgdGV4dENvbG9yPVwiYmxhY2tcIlxuICAgICAgYm9yZGVyPVwiMXB4IHNvbGlkICMzMzNcIlxuICAgICAgYm9yZGVyUmFkaXVzPVwiNDBweFwiXG4gICAgICBwZD1cIjEwcHggMjBweFwiXG4gICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgc3ZnUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgIGJ1dHRvbkNsYXNzPVwiZm9udC1ub3JtYWwgdGV4dC1bMjRweF0gbGVhZGluZy1bMjkuMDVweF0gdGV4dC1bIzMzM10gbXQtMlwiXG4gICAgICAoY2xpY2spPVwib0F1dGhXaXRoQXBwbGUoKVwiXG4gICAgICA+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICA8L3NwYW4+XG48L3NlY3Rpb24+XG4iXX0=
@@ -80,7 +80,7 @@ export class ResetPasswordComponent {
80
80
  }
81
81
  }
82
82
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResetPasswordComponent, deps: [{ token: i1.FormBuilder }, { token: i2.HttpWebRequestService }, { token: i3.UtilService }], target: i0.ɵɵFactoryTarget.Component });
83
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResetPasswordComponent, selector: "verben-reset-password", inputs: { title: "title", subTitle: "subTitle", buttonCaption: "buttonCaption", buttonTextColor: "buttonTextColor", buttonBackgroundColor: "buttonBackgroundColor", showOldPassword: "showOldPassword", token: "token" }, outputs: { onSubmit: "onSubmit", onSubmitEnd: "onSubmitEnd" }, ngImport: i0, template: "<div [formGroup]=\"this.resetPasswordForm\" class=\"reset-password-container flex flex-col\">\n <div class=\"reset-password-header flex flex-col\">\n <div class=\"reset-password-title\">{{title}}</div>\n <div class=\"reset-password-subtitle\">{{subTitle}}</div>\n </div>\n <div *ngIf=\"showOldPassword\" class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">Old Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"OldPassword\" [passwordToggle]=\"true\"\n type=\"password\"></verbena-input>\n </div>\n <div class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">New Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"Password\" [passwordToggle]=\"true\"\n type=\"password\"></verbena-input>\n </div>\n <div class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">Confirm Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"ConfirmPassword\" [passwordToggle]=\"true\"\n type=\"password\"></verbena-input>\n </div>\n <verbena-button fontWeight=\"700\" (click)=\"submit()\" [text]=\"buttonCaption\" width=\"100%\" [textColor]=\"buttonTextColor\"\n [bgColor]=\"buttonBackgroundColor\" borderRadius=\"25px\" [disable]=\"!this.checkForm()\"></verbena-button>\n\n</div>", styles: ["*{font-family:sans-serif;font-size:16px}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.reset-password-container{gap:25px;padding:50px;border:1px solid rgba(102,102,102,.5);box-shadow:4px 4px 4px #00000040;border-radius:24px}.reset-password-title{font-size:30px;font-weight:700}.reset-password-subtitle{font-size:14px;font-weight:500;color:#666}.form-field{gap:5px}.form-field-caption{color:#666}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
83
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResetPasswordComponent, selector: "verben-reset-password", inputs: { title: "title", subTitle: "subTitle", buttonCaption: "buttonCaption", buttonTextColor: "buttonTextColor", buttonBackgroundColor: "buttonBackgroundColor", showOldPassword: "showOldPassword", token: "token" }, outputs: { onSubmit: "onSubmit", onSubmitEnd: "onSubmitEnd" }, ngImport: i0, template: "<div [formGroup]=\"this.resetPasswordForm\" class=\"reset-password-container flex flex-col\">\n <div class=\"reset-password-header flex flex-col\">\n <div class=\"reset-password-title\">{{title}}</div>\n <div class=\"reset-password-subtitle\">{{subTitle}}</div>\n </div>\n <div *ngIf=\"showOldPassword\" class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">Old Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"OldPassword\" [passwordToggle]=\"true\"\n type=\"password\"></verbena-input>\n </div>\n <div class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">New Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"Password\" [passwordToggle]=\"true\"\n type=\"password\"></verbena-input>\n </div>\n <div class=\"form-field flex flex-col\">\n <div class=\"form-field-caption\">Confirm Password</div>\n <verbena-input bgColor=\"white\" borderRadius=\"12px\" formControlName=\"ConfirmPassword\" [passwordToggle]=\"true\"\n type=\"password\"></verbena-input>\n </div>\n <verbena-button fontWeight=\"700\" (click)=\"submit()\" [text]=\"buttonCaption\" width=\"100%\" [textColor]=\"buttonTextColor\"\n [bgColor]=\"buttonBackgroundColor\" borderRadius=\"25px\" [disable]=\"!this.checkForm()\"></verbena-button>\n\n</div>", styles: ["*{font-family:sans-serif;font-size:16px}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.reset-password-container{gap:25px;padding:50px;border:1px solid rgba(102,102,102,.5);box-shadow:4px 4px 4px #00000040;border-radius:24px}.reset-password-title{font-size:30px;font-weight:700}.reset-password-subtitle{font-size:14px;font-weight:500;color:#666}.form-field{gap:5px}.form-field-caption{color:#666}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
84
84
  }
85
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResetPasswordComponent, decorators: [{
86
86
  type: Component,