@rolatech/angular-account 17.2.1 → 17.2.3

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 (56) hide show
  1. package/esm2022/lib/components/avatar-update-dialog/avatar-update-dialog.component.mjs +3 -3
  2. package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +3 -3
  3. package/esm2022/lib/components/index.mjs +2 -1
  4. package/esm2022/lib/components/login/login-wechat/login-wechat.component.mjs +3 -3
  5. package/esm2022/lib/components/logout/logout.component.mjs +3 -3
  6. package/esm2022/lib/components/passwordreset/passwordreset.component.mjs +3 -3
  7. package/esm2022/lib/components/topbar-login/topbar-login.component.mjs +3 -3
  8. package/esm2022/lib/components/user-item/user-item.component.mjs +28 -0
  9. package/esm2022/lib/pages/accounts/signin/signin.component.mjs +37 -38
  10. package/esm2022/lib/pages/accounts/signup/signup.component.mjs +3 -3
  11. package/esm2022/lib/pages/myaccount/email/email.component.mjs +3 -3
  12. package/esm2022/lib/pages/myaccount/email-verification/email-verification.component.mjs +3 -3
  13. package/esm2022/lib/pages/myaccount/gender/gender.component.mjs +3 -3
  14. package/esm2022/lib/pages/myaccount/home/home.component.mjs +95 -9
  15. package/esm2022/lib/pages/myaccount/personal-info/info.component.mjs +3 -3
  16. package/esm2022/lib/pages/myaccount/personal-info/profile/profile.component.mjs +3 -3
  17. package/esm2022/lib/pages/myaccount/personal-info/username/username.component.mjs +3 -3
  18. package/esm2022/lib/pages/myaccount/phone/phone.component.mjs +3 -3
  19. package/esm2022/lib/pages/myaccount/security/security-faceid/security-faceid.component.mjs +3 -3
  20. package/esm2022/lib/pages/myaccount/security/security-index/security-index.component.mjs +3 -3
  21. package/esm2022/lib/pages/myaccount/security/security-password/security-password.component.mjs +3 -3
  22. package/esm2022/lib/pages/myaccount/security/security-verification/security-verification.component.mjs +3 -3
  23. package/esm2022/lib/services/wechat-login.service.mjs +3 -3
  24. package/fesm2022/{rolatech-angular-account-email-verification.component-Yr6sqNmw.mjs → rolatech-angular-account-email-verification.component-D9e--XMc.mjs} +4 -4
  25. package/fesm2022/{rolatech-angular-account-email-verification.component-Yr6sqNmw.mjs.map → rolatech-angular-account-email-verification.component-D9e--XMc.mjs.map} +1 -1
  26. package/fesm2022/{rolatech-angular-account-email.component-BJHAz8uK.mjs → rolatech-angular-account-email.component-DC8qYVOJ.mjs} +4 -4
  27. package/fesm2022/{rolatech-angular-account-email.component-BJHAz8uK.mjs.map → rolatech-angular-account-email.component-DC8qYVOJ.mjs.map} +1 -1
  28. package/fesm2022/{rolatech-angular-account-gender.component-CS2hSvax.mjs → rolatech-angular-account-gender.component-DWdWJiQW.mjs} +4 -4
  29. package/fesm2022/{rolatech-angular-account-gender.component-CS2hSvax.mjs.map → rolatech-angular-account-gender.component-DWdWJiQW.mjs.map} +1 -1
  30. package/fesm2022/rolatech-angular-account-home.component-Ca7IHVk4.mjs +117 -0
  31. package/fesm2022/rolatech-angular-account-home.component-Ca7IHVk4.mjs.map +1 -0
  32. package/fesm2022/{rolatech-angular-account-info.component-DWgC77BJ.mjs → rolatech-angular-account-info.component-DNi4eTxV.mjs} +7 -7
  33. package/fesm2022/{rolatech-angular-account-info.component-DWgC77BJ.mjs.map → rolatech-angular-account-info.component-DNi4eTxV.mjs.map} +1 -1
  34. package/fesm2022/{rolatech-angular-account-login.routes-Ck7oQSPa.mjs → rolatech-angular-account-login.routes-D4UOEl1F.mjs} +5 -6
  35. package/fesm2022/{rolatech-angular-account-login.routes-Ck7oQSPa.mjs.map → rolatech-angular-account-login.routes-D4UOEl1F.mjs.map} +1 -1
  36. package/fesm2022/{rolatech-angular-account-phone.component-DaSRdJam.mjs → rolatech-angular-account-phone.component-r9dWPfEL.mjs} +4 -4
  37. package/fesm2022/{rolatech-angular-account-phone.component-DaSRdJam.mjs.map → rolatech-angular-account-phone.component-r9dWPfEL.mjs.map} +1 -1
  38. package/fesm2022/{rolatech-angular-account-profile.component-B_bSqz0X.mjs → rolatech-angular-account-profile.component-CJfmQ3Ba.mjs} +4 -4
  39. package/fesm2022/{rolatech-angular-account-profile.component-B_bSqz0X.mjs.map → rolatech-angular-account-profile.component-CJfmQ3Ba.mjs.map} +1 -1
  40. package/fesm2022/{rolatech-angular-account-rolatech-angular-account-uYB-5Ccz.mjs → rolatech-angular-account-rolatech-angular-account-KFjjX5Uc.mjs} +92 -68
  41. package/fesm2022/rolatech-angular-account-rolatech-angular-account-KFjjX5Uc.mjs.map +1 -0
  42. package/fesm2022/{rolatech-angular-account-security.routes-CKRbN7R7.mjs → rolatech-angular-account-security.routes-Dag8RZ38.mjs} +10 -10
  43. package/fesm2022/{rolatech-angular-account-security.routes-CKRbN7R7.mjs.map → rolatech-angular-account-security.routes-Dag8RZ38.mjs.map} +1 -1
  44. package/fesm2022/{rolatech-angular-account-username.component-BDW_ZpOU.mjs → rolatech-angular-account-username.component-BL2F5fnx.mjs} +4 -4
  45. package/fesm2022/{rolatech-angular-account-username.component-BDW_ZpOU.mjs.map → rolatech-angular-account-username.component-BL2F5fnx.mjs.map} +1 -1
  46. package/fesm2022/rolatech-angular-account.mjs +1 -2
  47. package/fesm2022/rolatech-angular-account.mjs.map +1 -1
  48. package/lib/components/index.d.ts +1 -0
  49. package/lib/components/user-item/user-item.component.d.ts +12 -0
  50. package/lib/pages/accounts/signin/signin.component.d.ts +3 -4
  51. package/lib/pages/myaccount/home/home.component.d.ts +12 -0
  52. package/package.json +1 -1
  53. package/themes/_default.scss +1 -1
  54. package/fesm2022/rolatech-angular-account-home.component-DFWu84B5.mjs +0 -25
  55. package/fesm2022/rolatech-angular-account-home.component-DFWu84B5.mjs.map +0 -1
  56. package/fesm2022/rolatech-angular-account-rolatech-angular-account-uYB-5Ccz.mjs.map +0 -1
@@ -50,10 +50,10 @@ export class AvatarUpdateDialogComponent {
50
50
  };
51
51
  }
52
52
  }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AvatarUpdateDialogComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: AvatarUpdateDialogComponent, isStandalone: true, selector: "rolatech-account-avatar-update-dialog", outputs: { save: "save" }, ngImport: i0, template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"text-xl font-bold p-3\">\u4FEE\u6539\u5934\u50CF</div>\n <!-- <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n <img [src]=\"avatar\" />\n </div> -->\n <div class=\"px-3 py-8\">\n <div\n class=\"bg-orange-600 w-[256px] h-[256px] rounded-full cursor-pointer hover:outline-gray-200 outline outline-transparent outline-4\"\n >\n @if (avatar) {\n <div class=\"w-[256px] h-[256px]\">\n <img [src]=\"avatar\" class=\"w-[256px] h-[256px] rounded-full object-cover\" />\n </div>\n }\n </div>\n </div>\n\n <!-- <div class=\"p-3 flex justify-end items-center gap-3\">\n <button mat-button (click)=\"cancel()\">\u53D6\u6D88</button>\n <button mat-flat-button color=\"primary\" (click)=\"onSave()\">\u4FDD\u5B58</button>\n </div> -->\n <div class=\"py-3\">\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button (click)=\"fileInput.click()\">\n <mat-icon>edit</mat-icon>\n <span>\u66F4\u6362\u5934\u50CF</span>\n </button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AvatarUpdateDialogComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: AvatarUpdateDialogComponent, isStandalone: true, selector: "rolatech-account-avatar-update-dialog", outputs: { save: "save" }, ngImport: i0, template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"text-xl font-bold p-3\">\u4FEE\u6539\u5934\u50CF</div>\n <!-- <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n <img [src]=\"avatar\" />\n </div> -->\n <div class=\"px-3 py-8\">\n <div\n class=\"bg-orange-600 w-[256px] h-[256px] rounded-full cursor-pointer hover:outline-gray-200 outline outline-transparent outline-4\"\n >\n @if (avatar) {\n <div class=\"w-[256px] h-[256px]\">\n <img [src]=\"avatar\" class=\"w-[256px] h-[256px] rounded-full object-cover\" />\n </div>\n }\n </div>\n </div>\n\n <!-- <div class=\"p-3 flex justify-end items-center gap-3\">\n <button mat-button (click)=\"cancel()\">\u53D6\u6D88</button>\n <button mat-flat-button color=\"primary\" (click)=\"onSave()\">\u4FDD\u5B58</button>\n </div> -->\n <div class=\"py-3\">\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button (click)=\"fileInput.click()\">\n <mat-icon>edit</mat-icon>\n <span>\u66F4\u6362\u5934\u50CF</span>\n </button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AvatarUpdateDialogComponent, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AvatarUpdateDialogComponent, decorators: [{
57
57
  type: Component,
58
58
  args: [{ selector: 'rolatech-account-avatar-update-dialog', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule], template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"text-xl font-bold p-3\">\u4FEE\u6539\u5934\u50CF</div>\n <!-- <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n <img [src]=\"avatar\" />\n </div> -->\n <div class=\"px-3 py-8\">\n <div\n class=\"bg-orange-600 w-[256px] h-[256px] rounded-full cursor-pointer hover:outline-gray-200 outline outline-transparent outline-4\"\n >\n @if (avatar) {\n <div class=\"w-[256px] h-[256px]\">\n <img [src]=\"avatar\" class=\"w-[256px] h-[256px] rounded-full object-cover\" />\n </div>\n }\n </div>\n </div>\n\n <!-- <div class=\"p-3 flex justify-end items-center gap-3\">\n <button mat-button (click)=\"cancel()\">\u53D6\u6D88</button>\n <button mat-flat-button color=\"primary\" (click)=\"onSave()\">\u4FDD\u5B58</button>\n </div> -->\n <div class=\"py-3\">\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button (click)=\"fileInput.click()\">\n <mat-icon>edit</mat-icon>\n <span>\u66F4\u6362\u5934\u50CF</span>\n </button>\n </div>\n</div>\n" }]
59
59
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -3,10 +3,10 @@ import * as i0 from "@angular/core";
3
3
  export class ForgotPasswordComponent {
4
4
  constructor() { }
5
5
  ngOnInit() { }
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ForgotPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: ForgotPasswordComponent, isStandalone: true, selector: "rolatech-account-forgot-password", ngImport: i0, template: "<p>forgot-password works!</p>\n", styles: [""] }); }
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ForgotPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ForgotPasswordComponent, isStandalone: true, selector: "rolatech-account-forgot-password", ngImport: i0, template: "<p>forgot-password works!</p>\n", styles: [""] }); }
8
8
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
10
10
  type: Component,
11
11
  args: [{ selector: 'rolatech-account-forgot-password', standalone: true, template: "<p>forgot-password works!</p>\n" }]
12
12
  }], ctorParameters: () => [] });
@@ -1,2 +1,3 @@
1
+ export { UserItemComponent } from './user-item/user-item.component';
1
2
  export { TopbarLoginComponent } from './topbar-login/topbar-login.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBUb3BiYXJMb2dpbkNvbXBvbmVudCB9IGZyb20gJy4vdG9wYmFyLWxvZ2luL3RvcGJhci1sb2dpbi5jb21wb25lbnQnO1xuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBVc2VySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdXNlci1pdGVtL3VzZXItaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0IHsgVG9wYmFyTG9naW5Db21wb25lbnQgfSBmcm9tICcuL3RvcGJhci1sb2dpbi90b3BiYXItbG9naW4uY29tcG9uZW50JztcbiJdfQ==
@@ -32,10 +32,10 @@ export class LoginWechatComponent extends BaseComponent {
32
32
  },
33
33
  });
34
34
  }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LoginWechatComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
36
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: LoginWechatComponent, isStandalone: true, selector: "rolatech-account-login-wechat", usesInheritance: true, ngImport: i0, template: "<div>loading...</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }] }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LoginWechatComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: LoginWechatComponent, isStandalone: true, selector: "rolatech-account-login-wechat", usesInheritance: true, ngImport: i0, template: "<div>loading...</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }] }); }
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LoginWechatComponent, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LoginWechatComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-account-login-wechat', template: "<div>loading...</div>\n" }]
41
41
  }] });
@@ -36,10 +36,10 @@ export class LogoutComponent {
36
36
  },
37
37
  });
38
38
  }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LogoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: LogoutComponent, isStandalone: true, selector: "rolatech-account-logout", ngImport: i0, template: "<p>Please waiting...</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }] }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LogoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: LogoutComponent, isStandalone: true, selector: "rolatech-account-logout", ngImport: i0, template: "<p>Please waiting...</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }] }); }
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LogoutComponent, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LogoutComponent, decorators: [{
43
43
  type: Component,
44
44
  args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-account-logout', template: "<p>Please waiting...</p>\n" }]
45
45
  }] });
@@ -3,10 +3,10 @@ import * as i0 from "@angular/core";
3
3
  export class PasswordresetComponent {
4
4
  constructor() { }
5
5
  ngOnInit() { }
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PasswordresetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: PasswordresetComponent, isStandalone: true, selector: "rolatech-account-passwordreset", ngImport: i0, template: "<p>passwordreset works!</p>\n", styles: [""] }); }
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PasswordresetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: PasswordresetComponent, isStandalone: true, selector: "rolatech-account-passwordreset", ngImport: i0, template: "<p>passwordreset works!</p>\n", styles: [""] }); }
8
8
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PasswordresetComponent, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PasswordresetComponent, decorators: [{
10
10
  type: Component,
11
11
  args: [{ selector: 'rolatech-account-passwordreset', standalone: true, template: "<p>passwordreset works!</p>\n" }]
12
12
  }], ctorParameters: () => [] });
@@ -17,10 +17,10 @@ export class TopbarLoginComponent {
17
17
  this.logoutUrl = this.environment.accountsUrl + `/logout?service=${this.service()}&continue=` + window.location.origin;
18
18
  }
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TopbarLoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.0", type: TopbarLoginComponent, isStandalone: true, selector: "rolatech-account-topbar-login", inputs: { service: { classPropertyName: "service", publicName: "service", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex\">\n <a class=\"inline-block sm:border border-black py-2 px-5 mr-2 cursor-pointer rounded-md\" [href]=\"signinUrl\"\n ><span>\u767B\u5F55</span></a\n >\n <a class=\"inline-block sm:border border-white py-2 px-5 text-white bg-orange-600 cursor-pointer rounded-md\" [href]=\"signupUrl\"\n ><span>\u6CE8\u518C</span></a\n >\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TopbarLoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.3", type: TopbarLoginComponent, isStandalone: true, selector: "rolatech-account-topbar-login", inputs: { service: { classPropertyName: "service", publicName: "service", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex\">\n <a class=\"inline-block sm:border border-black py-2 px-5 mr-2 cursor-pointer rounded-md\" [href]=\"signinUrl\"\n ><span>\u767B\u5F55</span></a\n >\n <a class=\"inline-block sm:border border-white py-2 px-5 text-white bg-orange-600 cursor-pointer rounded-md\" [href]=\"signupUrl\"\n ><span>\u6CE8\u518C</span></a\n >\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TopbarLoginComponent, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TopbarLoginComponent, decorators: [{
24
24
  type: Component,
25
25
  args: [{ selector: 'rolatech-account-topbar-login', standalone: true, imports: [CommonModule], template: "<div class=\"flex\">\n <a class=\"inline-block sm:border border-black py-2 px-5 mr-2 cursor-pointer rounded-md\" [href]=\"signinUrl\"\n ><span>\u767B\u5F55</span></a\n >\n <a class=\"inline-block sm:border border-white py-2 px-5 text-white bg-orange-600 cursor-pointer rounded-md\" [href]=\"signupUrl\"\n ><span>\u6CE8\u518C</span></a\n >\n</div>\n" }]
26
26
  }] });
@@ -0,0 +1,28 @@
1
+ import { Component, HostBinding, ViewEncapsulation, input, output } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ export class UserItemComponent {
5
+ constructor() {
6
+ this.hasClass = true;
7
+ this.user = input();
8
+ this.isFollowing = input(true);
9
+ this.follow = output();
10
+ this.unfollow = output();
11
+ }
12
+ onFollow() {
13
+ this.follow.emit(this.user().username);
14
+ }
15
+ onUnFollow() {
16
+ this.unfollow.emit(this.user().username);
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: UserItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: UserItemComponent, isStandalone: true, selector: "rolatech-account-user-item", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, isFollowing: { classPropertyName: "isFollowing", publicName: "isFollowing", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { follow: "follow", unfollow: "unfollow" }, host: { properties: { "class.rolatech-account-user-item": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u53D6\u6D88\u5173\u6CE8</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u5173\u6CE8</span>\n </a>\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: UserItemComponent, decorators: [{
22
+ type: Component,
23
+ args: [{ selector: 'rolatech-account-user-item', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u53D6\u6D88\u5173\u6CE8</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u5173\u6CE8</span>\n </a>\n </div>\n }\n</div>\n" }]
24
+ }], propDecorators: { hasClass: [{
25
+ type: HostBinding,
26
+ args: ['class.rolatech-account-user-item']
27
+ }] } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy91c2VyLWl0ZW0vdXNlci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy91c2VyLWl0ZW0vdXNlci1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVUvQyxNQUFNLE9BQU8saUJBQWlCO0lBUjlCO1FBU21ELGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDakUsU0FBSSxHQUFHLEtBQUssRUFBTyxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxNQUFNLEVBQVUsQ0FBQztRQUMxQixhQUFRLEdBQUcsTUFBTSxFQUFFLENBQUM7S0FPckI7SUFOQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBWFUsaUJBQWlCO2tHQUFqQixpQkFBaUIscWVDWDlCLGluQ0FvQ0EseUREOUJZLFlBQVk7OzJGQUtYLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSw0QkFBNEIsY0FDMUIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLGlCQUdSLGlCQUFpQixDQUFDLElBQUk7OEJBR1ksUUFBUTtzQkFBeEQsV0FBVzt1QkFBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtYWNjb3VudC11c2VyLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi91c2VyLWl0ZW0uY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VySXRlbUNvbXBvbmVudCB7XG4gIEBIb3N0QmluZGluZygnY2xhc3Mucm9sYXRlY2gtYWNjb3VudC11c2VyLWl0ZW0nKSBoYXNDbGFzcyA9IHRydWU7XG4gIHVzZXIgPSBpbnB1dDxhbnk+KCk7XG4gIGlzRm9sbG93aW5nID0gaW5wdXQodHJ1ZSk7XG4gIGZvbGxvdyA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIHVuZm9sbG93ID0gb3V0cHV0KCk7XG4gIG9uRm9sbG93KCkge1xuICAgIHRoaXMuZm9sbG93LmVtaXQodGhpcy51c2VyKCkudXNlcm5hbWUpO1xuICB9XG4gIG9uVW5Gb2xsb3coKSB7XG4gICAgdGhpcy51bmZvbGxvdy5lbWl0KHRoaXMudXNlcigpLnVzZXJuYW1lKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcC0yIGhvdmVyOmJnLWdyYXktMTAwIGN1cnNvci1wb2ludGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJiZy1vcmFuZ2UtNjAwIHctMTIgaC0xMiByb3VuZGVkLWZ1bGxcIj5cbiAgICAgIEBpZiAodXNlcigpLmF2YXRhcikge1xuICAgICAgICA8aW1nIGNsYXNzPVwidy0xMiBoLTEyIG9iamVjdC1jb3ZlciByb3VuZGVkLWZ1bGxcIiBbc3JjXT1cInVzZXIoKS5hdmF0YXJcIiAvPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1sLTNcIj5cbiAgICAgIDxhIGNsYXNzPVwidGV4dC1sZyBmb250LWJvbGRcIj5cbiAgICAgICAgPHNwYW4+e3sgdXNlcigpLm5hbWUgfX08L3NwYW4+XG4gICAgICA8L2E+XG4gICAgICA8YSBjbGFzcz1cInRleHQtbWRcIj5cbiAgICAgICAgPHNwYW4+e3sgdXNlcigpLnVzZXJuYW1lIH19PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgQGlmIChpc0ZvbGxvd2luZygpKSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ3LVsxMDBweF0gcHktMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ncmF5LTMwMCByb3VuZGVkLW1kIGN1cnNvci1wb2ludGVyXCJcbiAgICAgIChjbGljayk9XCJvblVuRm9sbG93KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgPlxuICAgICAgPGE+XG4gICAgICAgIDxzcGFuPuWPlua2iOWFs+azqDwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ3LVsxMDBweF0gcHktMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1vcmFuZ2UtNjAwIHRleHQtd2hpdGUgcm91bmRlZC1tZCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAoY2xpY2spPVwib25Gb2xsb3coKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICA+XG4gICAgICA8YT5cbiAgICAgICAgPHNwYW4+5YWz5rOoPC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  import { isPlatformBrowser } from '@angular/common';
2
- import { Component, HostListener, inject, PLATFORM_ID } from '@angular/core';
2
+ import { Component, effect, HostListener, inject, PLATFORM_ID, signal } from '@angular/core';
3
3
  import { FormBuilder, Validators } from '@angular/forms';
4
4
  import { DomSanitizer } from '@angular/platform-browser';
5
5
  import { AngularCommonModule, APP_CONFIG } from '@rolatech/angular-common';
6
- import { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';
6
+ import { AngularComponentsModule, BaseComponent, TabComponent, TabsComponent } from '@rolatech/angular-components';
7
7
  import { AuthService, AuthUserService } from '@rolatech/angular-auth';
8
8
  import { WeChatLoginService } from '../../../services/wechat-login.service';
9
9
  import * as i0 from "@angular/core";
@@ -11,10 +11,17 @@ import * as i1 from "@angular/common";
11
11
  import * as i2 from "@angular/forms";
12
12
  import * as i3 from "@angular/material/form-field";
13
13
  import * as i4 from "@angular/material/input";
14
- import * as i5 from "@angular/material/tabs";
15
14
  export class SigninComponent extends BaseComponent {
15
+ onLogin(event) {
16
+ if (event.origin !== window.location.origin || /react-devtools/gi.test(event.data.source)) {
17
+ return;
18
+ }
19
+ if (event.origin === this.environment.accountsUrl && event.data.code === 200) {
20
+ window.location.href = this.continue === this.environment.accountsUrl ? this.environment.myaccountUrl : this.continue;
21
+ }
22
+ }
16
23
  constructor() {
17
- super(...arguments);
24
+ super();
18
25
  this.continue = '';
19
26
  this.environment = inject(APP_CONFIG);
20
27
  this.platformId = inject(PLATFORM_ID);
@@ -22,22 +29,29 @@ export class SigninComponent extends BaseComponent {
22
29
  this.authService = inject(AuthService);
23
30
  this.authUserService = inject(AuthUserService);
24
31
  this.wechtLoginService = inject(WeChatLoginService);
25
- this.tabIndex = 0;
32
+ this.sanitizer = inject(DomSanitizer);
33
+ this.tabIndex = signal(0);
26
34
  this.countDown = false;
27
35
  this.countDownTime = 60;
28
36
  this.showButtonText = '发送验证码';
29
37
  this.appid = 'wx567acbea73439828';
30
38
  this.state = 'add';
31
- this.sanitizer = inject(DomSanitizer);
39
+ this.urlSafe = this.sanitizer.bypassSecurityTrustResourceUrl('');
32
40
  this.baseUrl = 'https://open.weixin.qq.com/connect/qrconnect';
33
- }
34
- onLogin(event) {
35
- if (event.origin !== window.location.origin || /react-devtools/gi.test(event.data.source)) {
36
- return;
37
- }
38
- if (event.origin === this.environment.accountsUrl && event.data.code === 200) {
39
- window.location.href = this.continue === this.environment.accountsUrl ? this.environment.myaccountUrl : this.continue;
40
- }
41
+ effect(() => {
42
+ const index = this.tabIndex();
43
+ if (index === 0) {
44
+ this.codeForm.reset();
45
+ }
46
+ if (index === 1) {
47
+ this.passrodForm.reset();
48
+ }
49
+ if (index === 2) {
50
+ this.codeForm.reset();
51
+ this.passrodForm.reset();
52
+ this.wechat();
53
+ }
54
+ });
41
55
  }
42
56
  ngOnInit() {
43
57
  this.titleService.setTitle('账号登录 - 拼小课');
@@ -52,7 +66,7 @@ export class SigninComponent extends BaseComponent {
52
66
  this.continue = this.route.snapshot.queryParams['continue'] || '/';
53
67
  }
54
68
  get form() {
55
- return this.tabIndex === 0 ? this.passrodForm.controls : this.codeForm.controls;
69
+ return this.tabIndex() === 0 ? this.passrodForm.controls : this.codeForm.controls;
56
70
  }
57
71
  sendSMSCode() {
58
72
  const phoneControl = this.codeForm.get('phone');
@@ -83,7 +97,7 @@ export class SigninComponent extends BaseComponent {
83
97
  }
84
98
  login() {
85
99
  let data = {};
86
- if (this.tabIndex === 0) {
100
+ if (this.tabIndex() === 0) {
87
101
  if (!this.passrodForm.valid) {
88
102
  return;
89
103
  }
@@ -92,7 +106,7 @@ export class SigninComponent extends BaseComponent {
92
106
  password: this.form['password'].value,
93
107
  };
94
108
  }
95
- if (this.tabIndex === 1) {
109
+ if (this.tabIndex() === 1) {
96
110
  if (!this.codeForm.valid) {
97
111
  return;
98
112
  }
@@ -112,21 +126,6 @@ export class SigninComponent extends BaseComponent {
112
126
  },
113
127
  });
114
128
  }
115
- onSelectedTabChange(e) {
116
- const { index } = e;
117
- this.tabIndex = index;
118
- if (index === 0) {
119
- this.codeForm.reset();
120
- }
121
- if (index === 1) {
122
- this.passrodForm.reset();
123
- }
124
- if (index === 2) {
125
- this.codeForm.reset();
126
- this.passrodForm.reset();
127
- this.wechat();
128
- }
129
- }
130
129
  wechat() {
131
130
  const redirectUri = 'https://accounts.pinxiaoke.cn/login?continue';
132
131
  // const redirectUri = `${window.location.origin}/login?continue`;
@@ -135,14 +134,14 @@ export class SigninComponent extends BaseComponent {
135
134
  const src = `${this.baseUrl}?appid=${this.appid}&response_type=code&self_redirect=true&scope=snsapi_login&href=${href}&redirect_uri=${encodedURI}&state=${this.state}#wechat_redirect`;
136
135
  this.urlSafe = this.sanitizer.bypassSecurityTrustResourceUrl(src);
137
136
  }
138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SigninComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
139
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SigninComponent, isStandalone: true, selector: "rolatech-account-auth-signin", host: { listeners: { "window:message": "onLogin($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"h-full flex flex-col items-center sm:justify-center sm:bg-gray-100\">\n <div\n class=\"w-full p-8 lg:p-11 rounded-xl bg-white flex flex-col lg:flex-row justify-between xl:w-[800px] lg:w-[600px] sm:w-[600px]\"\n >\n <!-- header -->\n <div class=\"flex flex-col py-6\">\n <div class=\"text-3xl font-medium mb-3\">\u767B\u5F55</div>\n <div class=\"text-md\">\u4F7F\u7528\u62FC\u5C0F\u8BFE\u8D26\u53F7\u767B\u5F55</div>\n </div>\n <div>\n <!-- content -->\n <mat-tab-group mat-stretch-tabs=\"false\" mat-align-tabs=\"start\" (selectedTabChange)=\"onSelectedTabChange($event)\">\n <mat-tab label=\"\u8D26\u53F7\u5BC6\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"passrodForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7528\u6237\u540D/\u624B\u673A\u53F7 </mat-label>\n <input matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>\u7528\u6237\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5BC6\u7801 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u77ED\u4FE1\u9A8C\u8BC1\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"codeForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> \u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-start gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" type=\"text\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> \u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button\n (click)=\"sendSMSCode()\"\n [disabled]=\"countDown\"\n [ngClass]=\"countDown ? 'bg-orange-300' : 'bg-orange-600 shadow shadow-gray-300 cursor-pointer'\"\n class=\"max-w-[128px] p-3 mt-2 text-white rounded text-center\"\n >\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u5FAE\u4FE1\u626B\u7801\">\n <div class=\"py-6\">\n <div class=\"w-[190px] h-[190px] mx-auto\">\n @if (tabIndex === 2) {\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <!-- <img [src]=\"urlSafe\" class=\"w-full h-full inline\" /> -->\n <div></div>\n }\n </div>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <!-- actions -->\n <div class=\"flex justify-between items-center py-2 pl-2\">\n <a class=\"underline underline-offset-4\" href=\"signup\">\u521B\u5EFA\u8D26\u53F7</a>\n <div\n (click)=\"login()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u767B\u5F55</span>\n </div>\n </div>\n </div>\n\n <!-- 3-part -->\n <!-- <div class=\"flex flex-col justify-center items-center mt-6\">\n <div class=\"flex items-center\">\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n <span class=\"px-3\">\u7B2C\u4E09\u65B9\u767B\u5F55</span>\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n </div>\n <div class=\"mt-3 flex items-center hover:shadow hover:shadow-gray-400 cursor-pointer p-3\">\n <img class=\"w-4 h-4\" src=\"assets/images/icon64_appwx_logo.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1</span>\n </div>\n </div> -->\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }] }); }
137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SigninComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
138
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: SigninComponent, isStandalone: true, selector: "rolatech-account-auth-signin", host: { listeners: { "window:message": "onLogin($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"h-full flex flex-col items-center sm:justify-center sm:bg-gray-100\">\n <div\n class=\"w-full p-6 lg:p-11 rounded-xl bg-white flex flex-col lg:flex-row justify-between xl:w-[800px] lg:w-[600px] sm:w-[600px]\"\n >\n <!-- header -->\n <div class=\"flex flex-col py-6\">\n <div class=\"text-3xl font-medium mb-3 ml-2\">\u767B\u5F55</div>\n <div class=\"text-md ml-2\">\u4F7F\u7528\u62FC\u5C0F\u8BFE\u8D26\u53F7\u767B\u5F55</div>\n </div>\n <div>\n <rolatech-tabs [(select)]=\"tabIndex\">\n <rolatech-tab label=\"\u8D26\u53F7\u5BC6\u7801\"></rolatech-tab>\n <rolatech-tab label=\"\u77ED\u4FE1\u9A8C\u8BC1\u7801\"></rolatech-tab>\n <rolatech-tab label=\"\u5FAE\u4FE1\u626B\u7801\"></rolatech-tab>\n </rolatech-tabs>\n <!-- content -->\n <div class=\"pt-6 min-w-[190px] min-h-[214px]\">\n @if (tabIndex() === 0) {\n <form [formGroup]=\"passrodForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7528\u6237\u540D/\u624B\u673A\u53F7 </mat-label>\n <input matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>\u7528\u6237\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5BC6\u7801 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n }\n @if (tabIndex() === 1) {\n <form [formGroup]=\"codeForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> \u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-start\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" type=\"text\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> \u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button\n (click)=\"sendSMSCode()\"\n [disabled]=\"countDown\"\n [ngClass]=\"countDown ? 'bg-orange-300' : 'bg-orange-600 shadow shadow-gray-300 cursor-pointer'\"\n class=\"max-w-[128px] p-3 mt-2 text-white rounded text-center\"\n >\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n }\n @if (tabIndex() === 2) {\n <div class=\"w-[190px] h-[190px] mx-auto\">\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <div></div>\n </div>\n }\n </div>\n <!-- actions -->\n <div class=\"flex justify-between items-center py-2 pl-2\">\n <a class=\"underline underline-offset-4\" href=\"signup\">\u521B\u5EFA\u8D26\u53F7</a>\n <div\n (click)=\"login()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u767B\u5F55</span>\n </div>\n </div>\n </div>\n\n <!-- 3-part -->\n <!-- <div class=\"flex flex-col justify-center items-center mt-6\">\n <div class=\"flex items-center\">\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n <span class=\"px-3\">\u7B2C\u4E09\u65B9\u767B\u5F55</span>\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n </div>\n <div class=\"mt-3 flex items-center hover:shadow hover:shadow-gray-400 cursor-pointer p-3\">\n <img class=\"w-4 h-4\" src=\"assets/images/icon64_appwx_logo.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1</span>\n </div>\n </div> -->\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: TabsComponent, selector: "rolatech-tabs", inputs: ["select"], outputs: ["selectChange"] }, { kind: "component", type: TabComponent, selector: "rolatech-tab", inputs: ["label"] }] }); }
140
139
  }
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SigninComponent, decorators: [{
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SigninComponent, decorators: [{
142
141
  type: Component,
143
- args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-account-auth-signin', template: "<div class=\"h-full flex flex-col items-center sm:justify-center sm:bg-gray-100\">\n <div\n class=\"w-full p-8 lg:p-11 rounded-xl bg-white flex flex-col lg:flex-row justify-between xl:w-[800px] lg:w-[600px] sm:w-[600px]\"\n >\n <!-- header -->\n <div class=\"flex flex-col py-6\">\n <div class=\"text-3xl font-medium mb-3\">\u767B\u5F55</div>\n <div class=\"text-md\">\u4F7F\u7528\u62FC\u5C0F\u8BFE\u8D26\u53F7\u767B\u5F55</div>\n </div>\n <div>\n <!-- content -->\n <mat-tab-group mat-stretch-tabs=\"false\" mat-align-tabs=\"start\" (selectedTabChange)=\"onSelectedTabChange($event)\">\n <mat-tab label=\"\u8D26\u53F7\u5BC6\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"passrodForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7528\u6237\u540D/\u624B\u673A\u53F7 </mat-label>\n <input matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>\u7528\u6237\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5BC6\u7801 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u77ED\u4FE1\u9A8C\u8BC1\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"codeForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> \u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-start gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" type=\"text\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> \u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button\n (click)=\"sendSMSCode()\"\n [disabled]=\"countDown\"\n [ngClass]=\"countDown ? 'bg-orange-300' : 'bg-orange-600 shadow shadow-gray-300 cursor-pointer'\"\n class=\"max-w-[128px] p-3 mt-2 text-white rounded text-center\"\n >\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u5FAE\u4FE1\u626B\u7801\">\n <div class=\"py-6\">\n <div class=\"w-[190px] h-[190px] mx-auto\">\n @if (tabIndex === 2) {\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <!-- <img [src]=\"urlSafe\" class=\"w-full h-full inline\" /> -->\n <div></div>\n }\n </div>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <!-- actions -->\n <div class=\"flex justify-between items-center py-2 pl-2\">\n <a class=\"underline underline-offset-4\" href=\"signup\">\u521B\u5EFA\u8D26\u53F7</a>\n <div\n (click)=\"login()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u767B\u5F55</span>\n </div>\n </div>\n </div>\n\n <!-- 3-part -->\n <!-- <div class=\"flex flex-col justify-center items-center mt-6\">\n <div class=\"flex items-center\">\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n <span class=\"px-3\">\u7B2C\u4E09\u65B9\u767B\u5F55</span>\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n </div>\n <div class=\"mt-3 flex items-center hover:shadow hover:shadow-gray-400 cursor-pointer p-3\">\n <img class=\"w-4 h-4\" src=\"assets/images/icon64_appwx_logo.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1</span>\n </div>\n </div> -->\n </div>\n</div>\n" }]
144
- }], propDecorators: { onLogin: [{
142
+ args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule, TabsComponent, TabComponent], selector: 'rolatech-account-auth-signin', template: "<div class=\"h-full flex flex-col items-center sm:justify-center sm:bg-gray-100\">\n <div\n class=\"w-full p-6 lg:p-11 rounded-xl bg-white flex flex-col lg:flex-row justify-between xl:w-[800px] lg:w-[600px] sm:w-[600px]\"\n >\n <!-- header -->\n <div class=\"flex flex-col py-6\">\n <div class=\"text-3xl font-medium mb-3 ml-2\">\u767B\u5F55</div>\n <div class=\"text-md ml-2\">\u4F7F\u7528\u62FC\u5C0F\u8BFE\u8D26\u53F7\u767B\u5F55</div>\n </div>\n <div>\n <rolatech-tabs [(select)]=\"tabIndex\">\n <rolatech-tab label=\"\u8D26\u53F7\u5BC6\u7801\"></rolatech-tab>\n <rolatech-tab label=\"\u77ED\u4FE1\u9A8C\u8BC1\u7801\"></rolatech-tab>\n <rolatech-tab label=\"\u5FAE\u4FE1\u626B\u7801\"></rolatech-tab>\n </rolatech-tabs>\n <!-- content -->\n <div class=\"pt-6 min-w-[190px] min-h-[214px]\">\n @if (tabIndex() === 0) {\n <form [formGroup]=\"passrodForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7528\u6237\u540D/\u624B\u673A\u53F7 </mat-label>\n <input matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>\u7528\u6237\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5BC6\u7801 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n }\n @if (tabIndex() === 1) {\n <form [formGroup]=\"codeForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> \u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-start\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" type=\"text\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> \u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button\n (click)=\"sendSMSCode()\"\n [disabled]=\"countDown\"\n [ngClass]=\"countDown ? 'bg-orange-300' : 'bg-orange-600 shadow shadow-gray-300 cursor-pointer'\"\n class=\"max-w-[128px] p-3 mt-2 text-white rounded text-center\"\n >\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n }\n @if (tabIndex() === 2) {\n <div class=\"w-[190px] h-[190px] mx-auto\">\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <div></div>\n </div>\n }\n </div>\n <!-- actions -->\n <div class=\"flex justify-between items-center py-2 pl-2\">\n <a class=\"underline underline-offset-4\" href=\"signup\">\u521B\u5EFA\u8D26\u53F7</a>\n <div\n (click)=\"login()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u767B\u5F55</span>\n </div>\n </div>\n </div>\n\n <!-- 3-part -->\n <!-- <div class=\"flex flex-col justify-center items-center mt-6\">\n <div class=\"flex items-center\">\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n <span class=\"px-3\">\u7B2C\u4E09\u65B9\u767B\u5F55</span>\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n </div>\n <div class=\"mt-3 flex items-center hover:shadow hover:shadow-gray-400 cursor-pointer p-3\">\n <img class=\"w-4 h-4\" src=\"assets/images/icon64_appwx_logo.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1</span>\n </div>\n </div> -->\n </div>\n</div>\n" }]
143
+ }], ctorParameters: () => [], propDecorators: { onLogin: [{
145
144
  type: HostListener,
146
145
  args: ['window:message', ['$event']]
147
146
  }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmluLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvcGFnZXMvYWNjb3VudHMvc2lnbmluL3NpZ25pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL3BhZ2VzL2FjY291bnRzL3NpZ25pbi9zaWduaW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBbUIsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7O0FBUzVFLE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQWE7SUFQbEQ7O1FBVUUsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENB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QUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNO1FBQ0osTUFBTSxXQUFXLEdBQUcsOENBQThDLENBQUM7UUFDbkUsa0VBQWtFO1FBQ2xFLE1BQU0sSUFBSSxHQUFHLDBHQUEwRyxDQUFDO1FBQ3hILE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLFVBQVUsSUFBSSxDQUFDLEtBQUssa0VBQWtFLElBQUksaUJBQWlCLFVBQVUsVUFBVSxJQUFJLENBQUMsS0FBSyxrQkFBa0IsQ0FBQztRQUN2TCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs4R0EvSFUsZUFBZTtrR0FBZixlQUFlLDZLQ2pCNUIsMGxMQXdIQSx5REQ1R1ksbUJBQW1CLHV3Q0FBRSx1QkFBdUI7OzJGQUszQyxlQUFlO2tCQVAzQixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLFlBQzdDLDhCQUE4Qjs4QkEwQnhDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBpbmplY3QsIE9uSW5pdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRUYWJDaGFuZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgU2FmZVJlc291cmNlVXJsLCBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFuZ3VsYXJDb21tb25Nb2R1bGUsIEFQUF9DT05GSUcgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsIEJhc2VDb21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBBdXRoVXNlclNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1hdXRoJztcbmltcG9ydCB7IFdlQ2hhdExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlY2hhdC1sb2dpbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZV0sXG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtYWNjb3VudC1hdXRoLXNpZ25pbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWduaW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWduaW4uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lnbmluQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHBhc3Nyb2RGb3JtITogRm9ybUdyb3VwO1xuICBjb2RlRm9ybSE6IEZvcm1Hcm91cDtcbiAgY29udGludWUgPSAnJztcbiAgZW52aXJvbm1lbnQgPSBpbmplY3QoQVBQX0NPTkZJRyk7XG4gIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBmb3JtQnVpbGRlciA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgYXV0aFVzZXJTZXJ2aWNlID0gaW5qZWN0KEF1dGhVc2VyU2VydmljZSk7XG4gIHdlY2h0TG9naW5TZXJ2aWNlID0gaW5qZWN0KFdlQ2hhdExvZ2luU2VydmljZSk7XG5cbiAgdGFiSW5kZXggPSAwO1xuICBjb3VudERvd24gPSBmYWxzZTtcbiAgY291bnREb3duVGltZSA9IDYwO1xuICBzaG93QnV0dG9uVGV4dCA9ICflj5HpgIHpqozor4HnoIEnO1xuICBhcHBpZCA9ICd3eDU2N2FjYmVhNzM0Mzk4MjgnO1xuICBzdGF0ZSA9ICdhZGQnO1xuICB1cmxTYWZlITogU2FmZVJlc291cmNlVXJsO1xuICBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgYmFzZVVybCA9ICdodHRwczovL29wZW4ud2VpeGluLnFxLmNvbS9jb25uZWN0L3FyY29ubmVjdCc7XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxuICBvbkxvZ2luKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQub3JpZ2luICE9PSB3aW5kb3cubG9jYXRpb24ub3JpZ2luIHx8IC9yZWFjdC1kZXZ0b29scy9naS50ZXN0KGV2ZW50LmRhdGEuc291cmNlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQub3JpZ2luID09PSB0aGlzLmVudmlyb25tZW50LmFjY291bnRzVXJsICYmIGV2ZW50LmRhdGEuY29kZSA9PT0gMjAwKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuY29udGludWUgPT09IHRoaXMuZW52aXJvbm1lbnQuYWNjb3VudHNVcmwgPyB0aGlzLmVudmlyb25tZW50Lm15YWNjb3VudFVybCA6IHRoaXMuY29udGludWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUoJ+i0puWPt+eZu+W9lSAtIOaLvOWwj+ivvicpO1xuICAgIHRoaXMucGFzc3JvZEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGFjY291bnQ6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBhc3N3b3JkOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG4gICAgdGhpcy5jb2RlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgcGhvbmU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKCcxKDN8NHw1fDZ8N3w4fDkpXFxcXGR7OX0nKV1dLFxuICAgICAgY29kZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgIH0pO1xuICAgIHRoaXMuY29udGludWUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydjb250aW51ZSddIHx8ICcvJztcbiAgfVxuICBnZXQgZm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJJbmRleCA9PT0gMCA/IHRoaXMucGFzc3JvZEZvcm0uY29udHJvbHMgOiB0aGlzLmNvZGVGb3JtLmNvbnRyb2xzO1xuICB9XG4gIHNlbmRTTVNDb2RlKCkge1xuICAgIGNvbnN0IHBob25lQ29udHJvbCA9IHRoaXMuY29kZUZvcm0uZ2V0KCdwaG9uZScpO1xuICAgIGlmICghcGhvbmVDb250cm9sPy52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwaG9uZSA9IHBob25lQ29udHJvbC52YWx1ZTtcbiAgICB0aGlzLmNvdW50RG93biA9IHRydWU7XG4gICAgY29uc3Qgc3RhcnQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb3VudERvd25UaW1lID49IDApIHtcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uVGV4dCA9IGAke3RoaXMuY291bnREb3duVGltZS0tfeenkumHjeWPkWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGVhckludGVydmFsKHN0YXJ0KTtcbiAgICAgICAgdGhpcy5zaG93QnV0dG9uVGV4dCA9ICfph43mlrDlj5HpgIEnO1xuICAgICAgICB0aGlzLmNvdW50RG93biA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvdW50RG93blRpbWUgPSA2MDtcbiAgICAgIH1cbiAgICB9LCAxMDAwKTtcblxuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLnNlbmRTTVNDb2RlKCcrODYnLCBwaG9uZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3Blbign5Y+R6YCB5oiQ5YqfJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBsb2dpbigpIHtcbiAgICBsZXQgZGF0YSA9IHt9O1xuICAgIGlmICh0aGlzLnRhYkluZGV4ID09PSAwKSB7XG4gICAgICBpZiAoIXRoaXMucGFzc3JvZEZvcm0udmFsaWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGF0YSA9IHtcbiAgICAgICAgYWNjb3VudDogdGhpcy5mb3JtWydhY2NvdW50J10udmFsdWUsXG4gICAgICAgIHBhc3N3b3JkOiB0aGlzLmZvcm1bJ3Bhc3N3b3JkJ10udmFsdWUsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy50YWJJbmRleCA9PT0gMSkge1xuICAgICAgaWYgKCF0aGlzLmNvZGVGb3JtLnZhbGlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRhdGEgPSB7XG4gICAgICAgIHBob25lOiB0aGlzLmZvcm1bJ3Bob25lJ10udmFsdWUsXG4gICAgICAgIGNvZGU6IHRoaXMuZm9ybVsnY29kZSddLnZhbHVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2luKGRhdGEpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmNvbnRpbnVlID09PSB0aGlzLmVudmlyb25tZW50LmFjY291bnRzVXJsID8gdGhpcy5lbnZpcm9ubWVudC5teWFjY291bnRVcmwgOiB0aGlzLmNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBvblNlbGVjdGVkVGFiQ2hhbmdlKGU6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XG4gICAgY29uc3QgeyBpbmRleCB9ID0gZTtcbiAgICB0aGlzLnRhYkluZGV4ID0gaW5kZXg7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICB0aGlzLmNvZGVGb3JtLnJlc2V0KCk7XG4gICAgfVxuICAgIGlmIChpbmRleCA9PT0gMSkge1xuICAgICAgdGhpcy5wYXNzcm9kRm9ybS5yZXNldCgpO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPT09IDIpIHtcbiAgICAgIHRoaXMuY29kZUZvcm0ucmVzZXQoKTtcbiAgICAgIHRoaXMucGFzc3JvZEZvcm0ucmVzZXQoKTtcbiAgICAgIHRoaXMud2VjaGF0KCk7XG4gICAgfVxuICB9XG4gIHdlY2hhdCgpIHtcbiAgICBjb25zdCByZWRpcmVjdFVyaSA9ICdodHRwczovL2FjY291bnRzLnBpbnhpYW9rZS5jbi9sb2dpbj9jb250aW51ZSc7XG4gICAgLy8gY29uc3QgcmVkaXJlY3RVcmkgPSBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufS9sb2dpbj9jb250aW51ZWA7XG4gICAgY29uc3QgaHJlZiA9ICdodHRwczovL2Nsb3VkY2FjaGUudGVuY2VudC1jbG91ZC5jb20vb3Blbl9wcm9qL3Byb2pfcWNsb3VkX3YyL2dhdGV3YXkvbG9naW4tcmVnaXN0L2Nzcy9saW5rLXd4LWxvZ2luLmNzcyc7XG4gICAgY29uc3QgZW5jb2RlZFVSSSA9IGVuY29kZVVSSShyZWRpcmVjdFVyaSk7XG4gICAgY29uc3Qgc3JjID0gYCR7dGhpcy5iYXNlVXJsfT9hcHBpZD0ke3RoaXMuYXBwaWR9JnJlc3BvbnNlX3R5cGU9Y29kZSZzZWxmX3JlZGlyZWN0PXRydWUmc2NvcGU9c25zYXBpX2xvZ2luJmhyZWY9JHtocmVmfSZyZWRpcmVjdF91cmk9JHtlbmNvZGVkVVJJfSZzdGF0ZT0ke3RoaXMuc3RhdGV9I3dlY2hhdF9yZWRpcmVjdGA7XG4gICAgdGhpcy51cmxTYWZlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHNyYyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLWZ1bGwgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgc206anVzdGlmeS1jZW50ZXIgc206YmctZ3JheS0xMDBcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwidy1mdWxsIHAtOCBsZzpwLTExIHJvdW5kZWQteGwgYmctd2hpdGUgZmxleCBmbGV4LWNvbCBsZzpmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4geGw6dy1bODAwcHhdIGxnOnctWzYwMHB4XSBzbTp3LVs2MDBweF1cIlxuICA+XG4gICAgPCEtLSBoZWFkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcHktNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtM3hsIGZvbnQtbWVkaXVtIG1iLTNcIj7nmbvlvZU8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kXCI+5L2/55So5ou85bCP6K++6LSm5Y+355m75b2VPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDwhLS0gY29udGVudCAtLT5cbiAgICAgIDxtYXQtdGFiLWdyb3VwIG1hdC1zdHJldGNoLXRhYnM9XCJmYWxzZVwiIG1hdC1hbGlnbi10YWJzPVwic3RhcnRcIiAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25TZWxlY3RlZFRhYkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwi6LSm5Y+35a+G56CBXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTZcIj5cbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwicGFzc3JvZEZvcm1cIiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g55So5oi35ZCNL+aJi+acuuWPtyA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudFwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICAgICAgQGlmIChwYXNzcm9kRm9ybS5jb250cm9sc1snYWNjb3VudCddLnRvdWNoZWQgJiYgcGFzc3JvZEZvcm0uY29udHJvbHNbJ2FjY291bnQnXS5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydhY2NvdW50J10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7nlKjmiLflkI3lv4Xloas8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g5a+G56CBIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGUgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIiB0eXBlPVwicGFzc3dvcmRcIiAvPlxuICAgICAgICAgICAgICAgIEBpZiAocGFzc3JvZEZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10udG91Y2hlZCAmJiBwYXNzcm9kRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+6K+36L6T5YWl5a+G56CBPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCLnn63kv6Hpqozor4HnoIFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtNlwiPlxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjb2RlRm9ybVwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDmiYvmnLrlj7cgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICAgICAgQGlmIChjb2RlRm9ybS5jb250cm9sc1sncGhvbmUnXS50b3VjaGVkICYmIGNvZGVGb3JtLmNvbnRyb2xzWydwaG9uZSddLmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29kZUZvcm0uY29udHJvbHNbJ3Bob25lJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4g5omL5py65Y+35b+F5aGrPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29kZUZvcm0uY29udHJvbHNbJ3Bob25lJ10uZXJyb3JzPy5bJ3BhdHRlcm4nXSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiDmiYvmnLrlj7fmoLzlvI/plJnor68gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g6aqM6K+B56CBIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImNvZGVcIiB0eXBlPVwidGV4dFwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydjb2RlJ10udG91Y2hlZCAmJiBjb2RlRm9ybS5jb250cm9sc1snY29kZSddLmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydjb2RlJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiDor7fovpPlhaXpqozor4HnoIEgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VuZFNNU0NvZGUoKVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY291bnREb3duXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvdW50RG93biA/ICdiZy1vcmFuZ2UtMzAwJyA6ICdiZy1vcmFuZ2UtNjAwIHNoYWRvdyBzaGFkb3ctZ3JheS0zMDAgY3Vyc29yLXBvaW50ZXInXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF4LXctWzEyOHB4XSBwLTMgbXQtMiB0ZXh0LXdoaXRlIHJvdW5kZWQgdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNob3dCdXR0b25UZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIuW+ruS/oeaJq+eggVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS02XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1bMTkwcHhdIGgtWzE5MHB4XSBteC1hdXRvXCI+XG4gICAgICAgICAgICAgIEBpZiAodGFiSW5kZXggPT09IDIpIHtcbiAgICAgICAgICAgICAgICA8aWZyYW1lIFtzcmNdPVwidXJsU2FmZVwiIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBpbmxpbmVcIiBzY3JvbGxpbmc9XCJub1wiIGZyYW1lQm9yZGVyPVwibm9cIiAjaWZyYW1lPjwvaWZyYW1lPlxuICAgICAgICAgICAgICAgIDwhLS0gPGltZyBbc3JjXT1cInVybFNhZmVcIiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgaW5saW5lXCIgLz4gLS0+XG4gICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cblxuICAgICAgPCEtLSBhY3Rpb25zIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBweS0yIHBsLTJcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ1bmRlcmxpbmUgdW5kZXJsaW5lLW9mZnNldC00XCIgaHJlZj1cInNpZ251cFwiPuWIm+W7uui0puWPtzwvYT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIChjbGljayk9XCJsb2dpbigpXCJcbiAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGJnLW9yYW5nZS02MDAgaG92ZXI6Ymctb3JhbmdlLTcwMCB3LVsxMjhweF0gcC0zIHNoYWRvdy1ncmF5LTMwMCBzaGFkb3cgaG92ZXI6c2hhZG93LWxnIHRleHQtd2hpdGUgcm91bmRlZCB0ZXh0LWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3Bhbj7nmbvlvZU8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIDMtcGFydCAtLT5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBtdC02XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInctMTYgaC1bMXB4XSBiZy1ncmF5LTMwMFwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicHgtM1wiPuesrOS4ieaWueeZu+W9lTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidy0xNiBoLVsxcHhdIGJnLWdyYXktMzAwXCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtdC0zIGZsZXggaXRlbXMtY2VudGVyIGhvdmVyOnNoYWRvdyBob3ZlcjpzaGFkb3ctZ3JheS00MDAgY3Vyc29yLXBvaW50ZXIgcC0zXCI+XG4gICAgICA8aW1nIGNsYXNzPVwidy00IGgtNFwiIHNyYz1cImFzc2V0cy9pbWFnZXMvaWNvbjY0X2FwcHd4X2xvZ28ucG5nXCIgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWwtMVwiPuW+ruS/oTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+IC0tPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmluLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvcGFnZXMvYWNjb3VudHMvc2lnbmluL3NpZ25pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL3BhZ2VzL2FjY291bnRzL3NpZ25pbi9zaWduaW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkgsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7O0FBUzVFLE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQWE7SUFxQmhELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFD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WSxDQUFDLFlBQzFFLDhCQUE4Qjt3REF5QnhDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBIb3N0TGlzdGVuZXIsIGluamVjdCwgT25Jbml0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0VGFiQ2hhbmdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCwgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlLCBBUFBfQ09ORklHIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBCYXNlQ29tcG9uZW50LCBUYWJDb21wb25lbnQsIFRhYnNDb21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBBdXRoVXNlclNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1hdXRoJztcbmltcG9ydCB7IFdlQ2hhdExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlY2hhdC1sb2dpbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgVGFic0NvbXBvbmVudCwgVGFiQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1hY2NvdW50LWF1dGgtc2lnbmluJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ25pbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZ25pbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTaWduaW5Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcGFzc3JvZEZvcm0hOiBGb3JtR3JvdXA7XG4gIGNvZGVGb3JtITogRm9ybUdyb3VwO1xuICBjb250aW51ZSA9ICcnO1xuICBlbnZpcm9ubWVudCA9IGluamVjdChBUFBfQ09ORklHKTtcbiAgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIGZvcm1CdWlsZGVyID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBhdXRoVXNlclNlcnZpY2UgPSBpbmplY3QoQXV0aFVzZXJTZXJ2aWNlKTtcbiAgd2VjaHRMb2dpblNlcnZpY2UgPSBpbmplY3QoV2VDaGF0TG9naW5TZXJ2aWNlKTtcbiAgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gIHRhYkluZGV4ID0gc2lnbmFsKDApO1xuICBjb3VudERvd24gPSBmYWxzZTtcbiAgY291bnREb3duVGltZSA9IDYwO1xuICBzaG93QnV0dG9uVGV4dCA9ICflj5HpgIHpqozor4HnoIEnO1xuICBhcHBpZCA9ICd3eDU2N2FjYmVhNzM0Mzk4MjgnO1xuICBzdGF0ZSA9ICdhZGQnO1xuICB1cmxTYWZlOiBTYWZlUmVzb3VyY2VVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJycpO1xuICBiYXNlVXJsID0gJ2h0dHBzOi8vb3Blbi53ZWl4aW4ucXEuY29tL2Nvbm5lY3QvcXJjb25uZWN0JztcblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXG4gIG9uTG9naW4oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChldmVudC5vcmlnaW4gIT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gfHwgL3JlYWN0LWRldnRvb2xzL2dpLnRlc3QoZXZlbnQuZGF0YS5zb3VyY2UpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudC5vcmlnaW4gPT09IHRoaXMuZW52aXJvbm1lbnQuYWNjb3VudHNVcmwgJiYgZXZlbnQuZGF0YS5jb2RlID09PSAyMDApIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5jb250aW51ZSA9PT0gdGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybCA/IHRoaXMuZW52aXJvbm1lbnQubXlhY2NvdW50VXJsIDogdGhpcy5jb250aW51ZTtcbiAgICB9XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYkluZGV4KCk7XG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgdGhpcy5jb2RlRm9ybS5yZXNldCgpO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4ID09PSAxKSB7XG4gICAgICAgIHRoaXMucGFzc3JvZEZvcm0ucmVzZXQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleCA9PT0gMikge1xuICAgICAgICB0aGlzLmNvZGVGb3JtLnJlc2V0KCk7XG4gICAgICAgIHRoaXMucGFzc3JvZEZvcm0ucmVzZXQoKTtcbiAgICAgICAgdGhpcy53ZWNoYXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSgn6LSm5Y+355m75b2VIC0g5ou85bCP6K++Jyk7XG4gICAgdGhpcy5wYXNzcm9kRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgYWNjb3VudDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcGFzc3dvcmQ6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB9KTtcbiAgICB0aGlzLmNvZGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBwaG9uZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oJzEoM3w0fDV8Nnw3fDh8OSlcXFxcZHs5fScpXV0sXG4gICAgICBjb2RlOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG4gICAgdGhpcy5jb250aW51ZSA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ2NvbnRpbnVlJ10gfHwgJy8nO1xuICB9XG4gIGdldCBmb3JtKCkge1xuICAgIHJldHVybiB0aGlzLnRhYkluZGV4KCkgPT09IDAgPyB0aGlzLnBhc3Nyb2RGb3JtLmNvbnRyb2xzIDogdGhpcy5jb2RlRm9ybS5jb250cm9scztcbiAgfVxuICBzZW5kU01TQ29kZSgpIHtcbiAgICBjb25zdCBwaG9uZUNvbnRyb2wgPSB0aGlzLmNvZGVGb3JtLmdldCgncGhvbmUnKTtcbiAgICBpZiAoIXBob25lQ29udHJvbD8udmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGhvbmUgPSBwaG9uZUNvbnRyb2wudmFsdWU7XG4gICAgdGhpcy5jb3VudERvd24gPSB0cnVlO1xuICAgIGNvbnN0IHN0YXJ0ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY291bnREb3duVGltZSA+PSAwKSB7XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvblRleHQgPSBgJHt0aGlzLmNvdW50RG93blRpbWUtLX3np5Lph43lj5FgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChzdGFydCk7XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvblRleHQgPSAn6YeN5paw5Y+R6YCBJztcbiAgICAgICAgdGhpcy5jb3VudERvd24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb3VudERvd25UaW1lID0gNjA7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG5cbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5zZW5kU01TQ29kZSgnKzg2JywgcGhvbmUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJ+WPkemAgeaIkOWKnycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgbG9naW4oKSB7XG4gICAgbGV0IGRhdGEgPSB7fTtcbiAgICBpZiAodGhpcy50YWJJbmRleCgpID09PSAwKSB7XG4gICAgICBpZiAoIXRoaXMucGFzc3JvZEZvcm0udmFsaWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGF0YSA9IHtcbiAgICAgICAgYWNjb3VudDogdGhpcy5mb3JtWydhY2NvdW50J10udmFsdWUsXG4gICAgICAgIHBhc3N3b3JkOiB0aGlzLmZvcm1bJ3Bhc3N3b3JkJ10udmFsdWUsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy50YWJJbmRleCgpID09PSAxKSB7XG4gICAgICBpZiAoIXRoaXMuY29kZUZvcm0udmFsaWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGF0YSA9IHtcbiAgICAgICAgcGhvbmU6IHRoaXMuZm9ybVsncGhvbmUnXS52YWx1ZSxcbiAgICAgICAgY29kZTogdGhpcy5mb3JtWydjb2RlJ10udmFsdWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuYXV0aFNlcnZpY2UubG9naW4oZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuY29udGludWUgPT09IHRoaXMuZW52aXJvbm1lbnQuYWNjb3VudHNVcmwgPyB0aGlzLmVudmlyb25tZW50Lm15YWNjb3VudFVybCA6IHRoaXMuY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oZXJyb3IubWVzc2FnZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHdlY2hhdCgpIHtcbiAgICBjb25zdCByZWRpcmVjdFVyaSA9ICdodHRwczovL2FjY291bnRzLnBpbnhpYW9rZS5jbi9sb2dpbj9jb250aW51ZSc7XG4gICAgLy8gY29uc3QgcmVkaXJlY3RVcmkgPSBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufS9sb2dpbj9jb250aW51ZWA7XG4gICAgY29uc3QgaHJlZiA9ICdodHRwczovL2Nsb3VkY2FjaGUudGVuY2VudC1jbG91ZC5jb20vb3Blbl9wcm9qL3Byb2pfcWNsb3VkX3YyL2dhdGV3YXkvbG9naW4tcmVnaXN0L2Nzcy9saW5rLXd4LWxvZ2luLmNzcyc7XG4gICAgY29uc3QgZW5jb2RlZFVSSSA9IGVuY29kZVVSSShyZWRpcmVjdFVyaSk7XG4gICAgY29uc3Qgc3JjID0gYCR7dGhpcy5iYXNlVXJsfT9hcHBpZD0ke3RoaXMuYXBwaWR9JnJlc3BvbnNlX3R5cGU9Y29kZSZzZWxmX3JlZGlyZWN0PXRydWUmc2NvcGU9c25zYXBpX2xvZ2luJmhyZWY9JHtocmVmfSZyZWRpcmVjdF91cmk9JHtlbmNvZGVkVVJJfSZzdGF0ZT0ke3RoaXMuc3RhdGV9I3dlY2hhdF9yZWRpcmVjdGA7XG4gICAgdGhpcy51cmxTYWZlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHNyYyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLWZ1bGwgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgc206anVzdGlmeS1jZW50ZXIgc206YmctZ3JheS0xMDBcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwidy1mdWxsIHAtNiBsZzpwLTExIHJvdW5kZWQteGwgYmctd2hpdGUgZmxleCBmbGV4LWNvbCBsZzpmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4geGw6dy1bODAwcHhdIGxnOnctWzYwMHB4XSBzbTp3LVs2MDBweF1cIlxuICA+XG4gICAgPCEtLSBoZWFkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcHktNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtM3hsIGZvbnQtbWVkaXVtIG1iLTMgbWwtMlwiPueZu+W9lTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWwtMlwiPuS9v+eUqOaLvOWwj+ivvui0puWPt+eZu+W9lTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8cm9sYXRlY2gtdGFicyBbKHNlbGVjdCldPVwidGFiSW5kZXhcIj5cbiAgICAgICAgPHJvbGF0ZWNoLXRhYiBsYWJlbD1cIui0puWPt+WvhueggVwiPjwvcm9sYXRlY2gtdGFiPlxuICAgICAgICA8cm9sYXRlY2gtdGFiIGxhYmVsPVwi55+t5L+h6aqM6K+B56CBXCI+PC9yb2xhdGVjaC10YWI+XG4gICAgICAgIDxyb2xhdGVjaC10YWIgbGFiZWw9XCLlvq7kv6HmiavnoIFcIj48L3JvbGF0ZWNoLXRhYj5cbiAgICAgIDwvcm9sYXRlY2gtdGFicz5cbiAgICAgIDwhLS0gY29udGVudCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwdC02IG1pbi13LVsxOTBweF0gbWluLWgtWzIxNHB4XVwiPlxuICAgICAgICBAaWYgKHRhYkluZGV4KCkgPT09IDApIHtcbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInBhc3Nyb2RGb3JtXCIgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g55So5oi35ZCNL+aJi+acuuWPtyA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImFjY291bnRcIiByZXF1aXJlZCAvPlxuICAgICAgICAgICAgICBAaWYgKHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydhY2NvdW50J10udG91Y2hlZCAmJiBwYXNzcm9kRm9ybS5jb250cm9sc1snYWNjb3VudCddLmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgQGlmIChwYXNzcm9kRm9ybS5jb250cm9sc1snYWNjb3VudCddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPueUqOaIt+WQjeW/heWhqzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDlr4bnoIEgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGUgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIiB0eXBlPVwicGFzc3dvcmRcIiAvPlxuICAgICAgICAgICAgICBAaWYgKHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLnRvdWNoZWQgJiYgcGFzc3JvZEZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICBAaWYgKHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPuivt+i+k+WFpeWvhueggTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIH1cbiAgICAgICAgQGlmICh0YWJJbmRleCgpID09PSAxKSB7XG4gICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjb2RlRm9ybVwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOaJi+acuuWPtyA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICAgIEBpZiAoY29kZUZvcm0uY29udHJvbHNbJ3Bob25lJ10udG91Y2hlZCAmJiBjb2RlRm9ybS5jb250cm9sc1sncGhvbmUnXS5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoY29kZUZvcm0uY29udHJvbHNbJ3Bob25lJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IOaJi+acuuWPt+W/heWhqzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY29kZUZvcm0uY29udHJvbHNbJ3Bob25lJ10uZXJyb3JzPy5bJ3BhdHRlcm4nXSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj4g5omL5py65Y+35qC85byP6ZSZ6K+vIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDpqozor4HnoIEgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImNvZGVcIiB0eXBlPVwidGV4dFwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICAgICAgQGlmIChjb2RlRm9ybS5jb250cm9sc1snY29kZSddLnRvdWNoZWQgJiYgY29kZUZvcm0uY29udHJvbHNbJ2NvZGUnXS5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydjb2RlJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4g6K+36L6T5YWl6aqM6K+B56CBIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbmRTTVNDb2RlKClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb3VudERvd25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvdW50RG93biA/ICdiZy1vcmFuZ2UtMzAwJyA6ICdiZy1vcmFuZ2UtNjAwIHNoYWRvdyBzaGFkb3ctZ3JheS0zMDAgY3Vyc29yLXBvaW50ZXInXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1heC13LVsxMjhweF0gcC0zIG10LTIgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNob3dCdXR0b25UZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHRhYkluZGV4KCkgPT09IDIpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1bMTkwcHhdIGgtWzE5MHB4XSBteC1hdXRvXCI+XG4gICAgICAgICAgICA8aWZyYW1lIFtzcmNdPVwidXJsU2FmZVwiIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBpbmxpbmVcIiBzY3JvbGxpbmc9XCJub1wiIGZyYW1lQm9yZGVyPVwibm9cIiAjaWZyYW1lPjwvaWZyYW1lPlxuICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIGFjdGlvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB5LTIgcGwtMlwiPlxuICAgICAgICA8YSBjbGFzcz1cInVuZGVybGluZSB1bmRlcmxpbmUtb2Zmc2V0LTRcIiBocmVmPVwic2lnbnVwXCI+5Yib5bu66LSm5Y+3PC9hPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKGNsaWNrKT1cImxvZ2luKClcIlxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYmctb3JhbmdlLTYwMCBob3ZlcjpiZy1vcmFuZ2UtNzAwIHctWzEyOHB4XSBwLTMgc2hhZG93LWdyYXktMzAwIHNoYWRvdyBob3ZlcjpzaGFkb3ctbGcgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuPueZu+W9lTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gMy1wYXJ0IC0tPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIG10LTZcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidy0xNiBoLVsxcHhdIGJnLWdyYXktMzAwXCI+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJweC0zXCI+56ys5LiJ5pa555m75b2VPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ3LTE2IGgtWzFweF0gYmctZ3JheS0zMDBcIj48L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm10LTMgZmxleCBpdGVtcy1jZW50ZXIgaG92ZXI6c2hhZG93IGhvdmVyOnNoYWRvdy1ncmF5LTQwMCBjdXJzb3ItcG9pbnRlciBwLTNcIj5cbiAgICAgIDxpbWcgY2xhc3M9XCJ3LTQgaC00XCIgc3JjPVwiYXNzZXRzL2ltYWdlcy9pY29uNjRfYXBwd3hfbG9nby5wbmdcIiAvPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtbC0xXCI+5b6u5L+hPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj4gLS0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -72,10 +72,10 @@ export class SignupComponent extends BaseComponent {
72
72
  },
73
73
  });
74
74
  }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SignupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SignupComponent, isStandalone: true, selector: "rolatech-account-signup", usesInheritance: true, ngImport: i0, template: "<div class=\"h-full flex flex-col md:justify-center items-center\">\n <div class=\"md:shadow-md p-8 rounded-md\">\n <div class=\"text-2xl pl-2 pb-6\">\u6CE8\u518C</div>\n <form [formGroup]=\"signupForm\" (submit)=\"submit()\">\n <!-- name -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u59D3\u540D </mat-label>\n <input matInput formControlName=\"name\" required />\n @if (signupForm.controls['name'].touched && signupForm.controls['name'].invalid) {\n <mat-error>\n @if (signupForm.controls['name'].errors?.['required']) {\n <span>\u59D3\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <!-- phone -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput formControlName=\"phone\" required />\n @if (signupForm.controls['phone'].touched && signupForm.controls['phone'].invalid) {\n <mat-error>\n @if (signupForm.controls['phone'].errors?.['required']) {\n <span>\u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (signupForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <!-- phone code -->\n <div class=\"flex justify-between items-start gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" required />\n @if (signupForm.controls['code'].touched && signupForm.controls['code'].invalid) {\n <mat-error>\n @if (signupForm.controls['code'].errors?.['required']) {\n <span>\u9A8C\u8BC1\u7801\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div\n (click)=\"sendSMSCode()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 mt-2 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u53D1\u9001\u9A8C\u8BC1\u7801</span>\n </div>\n </div>\n\n <!-- password -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5BC6\u7801 </mat-label>\n <input matInput formControlName=\"password\" type=\"password\" autocomplete=\"password\" />\n @if (signupForm.controls['password'].touched && signupForm.controls['password'].invalid) {\n <mat-error>\n @if (signupForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n\n <!-- password confirm -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u786E\u8BA4\u5BC6\u7801 </mat-label>\n <input matInput formControlName=\"rePassword\" type=\"password\" autocomplete=\"rePassword\" />\n @if (signupForm.controls['rePassword'].touched && signupForm.controls['rePassword'].invalid) {\n <mat-error>\n @if (signupForm.controls['rePassword'].errors?.['required']) {\n <span>\u8BF7\u786E\u8BA4\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n <div class=\"flex justify-between items-center px-3\">\n <a mat-button href=\"/signin\">\u767B\u5F55</a>\n <div\n (click)=\"submit()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u6CE8\u518C</span>\n </div>\n </div>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%;margin-bottom:8px}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SignupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: SignupComponent, isStandalone: true, selector: "rolatech-account-signup", usesInheritance: true, ngImport: i0, template: "<div class=\"h-full flex flex-col md:justify-center items-center\">\n <div class=\"md:shadow-md p-8 rounded-md\">\n <div class=\"text-2xl pl-2 pb-6\">\u6CE8\u518C</div>\n <form [formGroup]=\"signupForm\" (submit)=\"submit()\">\n <!-- name -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u59D3\u540D </mat-label>\n <input matInput formControlName=\"name\" required />\n @if (signupForm.controls['name'].touched && signupForm.controls['name'].invalid) {\n <mat-error>\n @if (signupForm.controls['name'].errors?.['required']) {\n <span>\u59D3\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <!-- phone -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput formControlName=\"phone\" required />\n @if (signupForm.controls['phone'].touched && signupForm.controls['phone'].invalid) {\n <mat-error>\n @if (signupForm.controls['phone'].errors?.['required']) {\n <span>\u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (signupForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <!-- phone code -->\n <div class=\"flex justify-between items-start gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" required />\n @if (signupForm.controls['code'].touched && signupForm.controls['code'].invalid) {\n <mat-error>\n @if (signupForm.controls['code'].errors?.['required']) {\n <span>\u9A8C\u8BC1\u7801\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div\n (click)=\"sendSMSCode()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 mt-2 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u53D1\u9001\u9A8C\u8BC1\u7801</span>\n </div>\n </div>\n\n <!-- password -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5BC6\u7801 </mat-label>\n <input matInput formControlName=\"password\" type=\"password\" autocomplete=\"password\" />\n @if (signupForm.controls['password'].touched && signupForm.controls['password'].invalid) {\n <mat-error>\n @if (signupForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n\n <!-- password confirm -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u786E\u8BA4\u5BC6\u7801 </mat-label>\n <input matInput formControlName=\"rePassword\" type=\"password\" autocomplete=\"rePassword\" />\n @if (signupForm.controls['rePassword'].touched && signupForm.controls['rePassword'].invalid) {\n <mat-error>\n @if (signupForm.controls['rePassword'].errors?.['required']) {\n <span>\u8BF7\u786E\u8BA4\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n <div class=\"flex justify-between items-center px-3\">\n <a mat-button href=\"/signin\">\u767B\u5F55</a>\n <div\n (click)=\"submit()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u6CE8\u518C</span>\n </div>\n </div>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%;margin-bottom:8px}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SignupComponent, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SignupComponent, decorators: [{
79
79
  type: Component,
80
80
  args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-account-signup', template: "<div class=\"h-full flex flex-col md:justify-center items-center\">\n <div class=\"md:shadow-md p-8 rounded-md\">\n <div class=\"text-2xl pl-2 pb-6\">\u6CE8\u518C</div>\n <form [formGroup]=\"signupForm\" (submit)=\"submit()\">\n <!-- name -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u59D3\u540D </mat-label>\n <input matInput formControlName=\"name\" required />\n @if (signupForm.controls['name'].touched && signupForm.controls['name'].invalid) {\n <mat-error>\n @if (signupForm.controls['name'].errors?.['required']) {\n <span>\u59D3\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <!-- phone -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput formControlName=\"phone\" required />\n @if (signupForm.controls['phone'].touched && signupForm.controls['phone'].invalid) {\n <mat-error>\n @if (signupForm.controls['phone'].errors?.['required']) {\n <span>\u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (signupForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <!-- phone code -->\n <div class=\"flex justify-between items-start gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" required />\n @if (signupForm.controls['code'].touched && signupForm.controls['code'].invalid) {\n <mat-error>\n @if (signupForm.controls['code'].errors?.['required']) {\n <span>\u9A8C\u8BC1\u7801\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div\n (click)=\"sendSMSCode()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 mt-2 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u53D1\u9001\u9A8C\u8BC1\u7801</span>\n </div>\n </div>\n\n <!-- password -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5BC6\u7801 </mat-label>\n <input matInput formControlName=\"password\" type=\"password\" autocomplete=\"password\" />\n @if (signupForm.controls['password'].touched && signupForm.controls['password'].invalid) {\n <mat-error>\n @if (signupForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n\n <!-- password confirm -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u786E\u8BA4\u5BC6\u7801 </mat-label>\n <input matInput formControlName=\"rePassword\" type=\"password\" autocomplete=\"rePassword\" />\n @if (signupForm.controls['rePassword'].touched && signupForm.controls['rePassword'].invalid) {\n <mat-error>\n @if (signupForm.controls['rePassword'].errors?.['required']) {\n <span>\u8BF7\u786E\u8BA4\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n <div class=\"flex justify-between items-center px-3\">\n <a mat-button href=\"/signin\">\u767B\u5F55</a>\n <div\n (click)=\"submit()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u6CE8\u518C</span>\n </div>\n </div>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%;margin-bottom:8px}\n"] }]
81
81
  }] });
@@ -31,10 +31,10 @@ export class EmailComponent extends BaseComponent {
31
31
  },
32
32
  });
33
33
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: EmailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: EmailComponent, isStandalone: true, selector: "rolatech-account-email", usesInheritance: true, ngImport: i0, template: "<div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] p-4\">\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <p class=\"text-3xl\">\u4FEE\u6539\u90AE\u7BB1</p>\n <p class=\"text-md\">\u60A8\u53EF\u4EE5\u901A\u8FC7\u90AE\u7BB1\u83B7\u5F97\u66F4\u591A\u6211\u4EEC\u7684\u4EA7\u54C1\u4FE1\u606F</p>\n </div>\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <input matInput [(ngModel)]=\"email\" />\n </mat-form-field>\n </div>\n <div class=\"flex justify-end items-center mt-3\">\n <button mat-button rolatechBackButton>\u53D6\u6D88</button>\n <button\n class=\"bg-orange-600 shadow shadow-gray-300 cursor-pointer w-20 p-2 text-white rounded text-center ml-3\"\n (click)=\"save()\"\n >\n \u4FDD\u5B58\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: BackButtonDirective, selector: "[rolatechBackButton]" }] }); }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: EmailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: EmailComponent, isStandalone: true, selector: "rolatech-account-email", usesInheritance: true, ngImport: i0, template: "<div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] p-4\">\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <p class=\"text-3xl\">\u4FEE\u6539\u90AE\u7BB1</p>\n <p class=\"text-md\">\u60A8\u53EF\u4EE5\u901A\u8FC7\u90AE\u7BB1\u83B7\u5F97\u66F4\u591A\u6211\u4EEC\u7684\u4EA7\u54C1\u4FE1\u606F</p>\n </div>\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <input matInput [(ngModel)]=\"email\" />\n </mat-form-field>\n </div>\n <div class=\"flex justify-end items-center mt-3\">\n <button mat-button rolatechBackButton>\u53D6\u6D88</button>\n <button\n class=\"bg-orange-600 shadow shadow-gray-300 cursor-pointer w-20 p-2 text-white rounded text-center ml-3\"\n (click)=\"save()\"\n >\n \u4FDD\u5B58\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: BackButtonDirective, selector: "[rolatechBackButton]" }] }); }
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: EmailComponent, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: EmailComponent, decorators: [{
38
38
  type: Component,
39
39
  args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule, BackButtonDirective], selector: 'rolatech-account-email', template: "<div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] p-4\">\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <p class=\"text-3xl\">\u4FEE\u6539\u90AE\u7BB1</p>\n <p class=\"text-md\">\u60A8\u53EF\u4EE5\u901A\u8FC7\u90AE\u7BB1\u83B7\u5F97\u66F4\u591A\u6211\u4EEC\u7684\u4EA7\u54C1\u4FE1\u606F</p>\n </div>\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <input matInput [(ngModel)]=\"email\" />\n </mat-form-field>\n </div>\n <div class=\"flex justify-end items-center mt-3\">\n <button mat-button rolatechBackButton>\u53D6\u6D88</button>\n <button\n class=\"bg-orange-600 shadow shadow-gray-300 cursor-pointer w-20 p-2 text-white rounded text-center ml-3\"\n (click)=\"save()\"\n >\n \u4FDD\u5B58\n </button>\n </div>\n </div>\n</div>\n" }]
40
40
  }] });