@rolatech/angular-account 17.0.1

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 (82) hide show
  1. package/README.md +7 -0
  2. package/esm2022/index.mjs +3 -0
  3. package/esm2022/lib/account.routes.mjs +72 -0
  4. package/esm2022/lib/components/avatar-update-dialog/avatar-update-dialog.component.mjs +65 -0
  5. package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +13 -0
  6. package/esm2022/lib/components/login/login-wechat/login-wechat.component.mjs +42 -0
  7. package/esm2022/lib/components/login/login.routes.mjs +4 -0
  8. package/esm2022/lib/components/logout/logout.component.mjs +46 -0
  9. package/esm2022/lib/components/passwordreset/passwordreset.component.mjs +13 -0
  10. package/esm2022/lib/components/signin/signin.component.mjs +148 -0
  11. package/esm2022/lib/components/signup/signup.component.mjs +82 -0
  12. package/esm2022/lib/contant/user.mjs +7 -0
  13. package/esm2022/lib/pages/myaccount/email/email.component.mjs +41 -0
  14. package/esm2022/lib/pages/myaccount/email-verification/email-verification.component.mjs +26 -0
  15. package/esm2022/lib/pages/myaccount/gender/gender.component.mjs +46 -0
  16. package/esm2022/lib/pages/myaccount/home/home.component.mjs +22 -0
  17. package/esm2022/lib/pages/myaccount/personal-info/info.component.mjs +45 -0
  18. package/esm2022/lib/pages/myaccount/personal-info/profile/profile.component.mjs +41 -0
  19. package/esm2022/lib/pages/myaccount/personal-info/username/username.component.mjs +41 -0
  20. package/esm2022/lib/pages/myaccount/phone/phone.component.mjs +70 -0
  21. package/esm2022/lib/pages/myaccount/security/security-faceid/security-faceid.component.mjs +13 -0
  22. package/esm2022/lib/pages/myaccount/security/security-index/security-index.component.mjs +64 -0
  23. package/esm2022/lib/pages/myaccount/security/security-password/security-password.component.mjs +50 -0
  24. package/esm2022/lib/pages/myaccount/security/security-verification/security-verification.component.mjs +88 -0
  25. package/esm2022/lib/pages/myaccount/security/security.routes.mjs +20 -0
  26. package/esm2022/lib/services/wechat-login.service.mjs +16 -0
  27. package/esm2022/provider.mjs +14 -0
  28. package/esm2022/rolatech-angular-account.mjs +5 -0
  29. package/fesm2022/rolatech-angular-account-email-verification.component-4RClhLI4.mjs +29 -0
  30. package/fesm2022/rolatech-angular-account-email-verification.component-4RClhLI4.mjs.map +1 -0
  31. package/fesm2022/rolatech-angular-account-email.component-oRTdxJLo.mjs +44 -0
  32. package/fesm2022/rolatech-angular-account-email.component-oRTdxJLo.mjs.map +1 -0
  33. package/fesm2022/rolatech-angular-account-gender.component-egCF_zI_.mjs +49 -0
  34. package/fesm2022/rolatech-angular-account-gender.component-egCF_zI_.mjs.map +1 -0
  35. package/fesm2022/rolatech-angular-account-home.component-B2Rmr4Iw.mjs +25 -0
  36. package/fesm2022/rolatech-angular-account-home.component-B2Rmr4Iw.mjs.map +1 -0
  37. package/fesm2022/rolatech-angular-account-info.component-CMWD6CDB.mjs +107 -0
  38. package/fesm2022/rolatech-angular-account-info.component-CMWD6CDB.mjs.map +1 -0
  39. package/fesm2022/rolatech-angular-account-login.routes-NPLzDeHN.mjs +56 -0
  40. package/fesm2022/rolatech-angular-account-login.routes-NPLzDeHN.mjs.map +1 -0
  41. package/fesm2022/rolatech-angular-account-phone.component-CJ8DeuFr.mjs +73 -0
  42. package/fesm2022/rolatech-angular-account-phone.component-CJ8DeuFr.mjs.map +1 -0
  43. package/fesm2022/rolatech-angular-account-profile.component-BN_pBKMU.mjs +44 -0
  44. package/fesm2022/rolatech-angular-account-profile.component-BN_pBKMU.mjs.map +1 -0
  45. package/fesm2022/rolatech-angular-account-rolatech-angular-account-Dqz2XIdy.mjs +380 -0
  46. package/fesm2022/rolatech-angular-account-rolatech-angular-account-Dqz2XIdy.mjs.map +1 -0
  47. package/fesm2022/rolatech-angular-account-security.routes-S3BzviKf.mjs +206 -0
  48. package/fesm2022/rolatech-angular-account-security.routes-S3BzviKf.mjs.map +1 -0
  49. package/fesm2022/rolatech-angular-account-user-CK_zEFn_.mjs +9 -0
  50. package/fesm2022/rolatech-angular-account-user-CK_zEFn_.mjs.map +1 -0
  51. package/fesm2022/rolatech-angular-account-username.component-C6pM8g84.mjs +44 -0
  52. package/fesm2022/rolatech-angular-account-username.component-C6pM8g84.mjs.map +1 -0
  53. package/fesm2022/rolatech-angular-account.mjs +15 -0
  54. package/fesm2022/rolatech-angular-account.mjs.map +1 -0
  55. package/index.d.ts +2 -0
  56. package/lib/account.routes.d.ts +3 -0
  57. package/lib/components/avatar-update-dialog/avatar-update-dialog.component.d.ts +23 -0
  58. package/lib/components/forgot-password/forgot-password.component.d.ts +8 -0
  59. package/lib/components/login/login-wechat/login-wechat.component.d.ts +15 -0
  60. package/lib/components/login/login.routes.d.ts +3 -0
  61. package/lib/components/logout/logout.component.d.ts +19 -0
  62. package/lib/components/passwordreset/passwordreset.component.d.ts +8 -0
  63. package/lib/components/signin/signin.component.d.ts +39 -0
  64. package/lib/components/signup/signup.component.d.ts +21 -0
  65. package/lib/contant/user.d.ts +5 -0
  66. package/lib/pages/myaccount/email/email.component.d.ts +14 -0
  67. package/lib/pages/myaccount/email-verification/email-verification.component.d.ts +9 -0
  68. package/lib/pages/myaccount/gender/gender.component.d.ts +14 -0
  69. package/lib/pages/myaccount/home/home.component.d.ts +12 -0
  70. package/lib/pages/myaccount/personal-info/info.component.d.ts +16 -0
  71. package/lib/pages/myaccount/personal-info/profile/profile.component.d.ts +14 -0
  72. package/lib/pages/myaccount/personal-info/username/username.component.d.ts +14 -0
  73. package/lib/pages/myaccount/phone/phone.component.d.ts +19 -0
  74. package/lib/pages/myaccount/security/security-faceid/security-faceid.component.d.ts +5 -0
  75. package/lib/pages/myaccount/security/security-index/security-index.component.d.ts +18 -0
  76. package/lib/pages/myaccount/security/security-password/security-password.component.d.ts +16 -0
  77. package/lib/pages/myaccount/security/security-verification/security-verification.component.d.ts +24 -0
  78. package/lib/pages/myaccount/security/security.routes.d.ts +3 -0
  79. package/lib/services/wechat-login.service.d.ts +8 -0
  80. package/package.json +31 -0
  81. package/provider.d.ts +2 -0
  82. package/themes/_default.scss +1 -0
@@ -0,0 +1,82 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { FormBuilder, Validators } from '@angular/forms';
3
+ import { AngularCommonModule, APP_CONFIG, WINDOW } from '@rolatech/angular-common';
4
+ import { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';
5
+ import { AuthUserService } from '@rolatech/angular-auth';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/forms";
8
+ import * as i2 from "@angular/material/button";
9
+ import * as i3 from "@angular/material/form-field";
10
+ import * as i4 from "@angular/material/input";
11
+ export class SignupComponent extends BaseComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.continue = '/';
15
+ this.authUserService = inject(AuthUserService);
16
+ this.formBuilder = inject(FormBuilder);
17
+ this.environment = inject(APP_CONFIG);
18
+ this.window = inject(WINDOW);
19
+ this.countDown = false;
20
+ this.countDownTime = 60;
21
+ this.showButtonText = '发送验证码';
22
+ }
23
+ ngOnInit() {
24
+ this.titleService.setTitle('账号注册 - 拼小课');
25
+ this.signupForm = this.formBuilder.group({
26
+ name: [null, Validators.required],
27
+ phone: [null, [Validators.required, Validators.pattern('1(3|4|5|6|7|8|9)\\d{9}')]],
28
+ code: [null, Validators.required],
29
+ password: [null, Validators.required],
30
+ rePassword: [null, Validators.required],
31
+ });
32
+ this.continue = this.route.snapshot.queryParams['continue'] || '/';
33
+ }
34
+ sendSMSCode() {
35
+ const phoneControl = this.signupForm.get('phone');
36
+ if (!phoneControl?.valid) {
37
+ return;
38
+ }
39
+ const phone = phoneControl.value;
40
+ this.countDown = true;
41
+ const start = setInterval(() => {
42
+ if (this.countDownTime >= 0) {
43
+ this.showButtonText = `${this.countDownTime--}秒重发`;
44
+ }
45
+ else {
46
+ clearInterval(start);
47
+ this.showButtonText = '重新发送';
48
+ this.countDown = false;
49
+ this.countDownTime = 60;
50
+ }
51
+ }, 1000);
52
+ this.authUserService.sendSMSCode('+86', phone).subscribe({
53
+ next: (res) => {
54
+ this.snackBarService.open('发送成功');
55
+ },
56
+ error: (error) => {
57
+ this.snackBarService.open(error.message);
58
+ },
59
+ });
60
+ }
61
+ submit() {
62
+ if (!this.signupForm.valid) {
63
+ return;
64
+ }
65
+ const data = {};
66
+ this.authUserService.signup(this.signupForm.value).subscribe({
67
+ next: (res) => {
68
+ this.window.location.href = this.continue ? this.continue : this.environment.myaccountUrl;
69
+ },
70
+ error: (error) => {
71
+ this.snackBarService.open(error.message);
72
+ },
73
+ });
74
+ }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SignupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", 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
+ }
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SignupComponent, decorators: [{
79
+ type: Component,
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
+ }] });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbnVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9zaWdudXAvc2lnbnVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9zaWdudXAvc2lnbnVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFTekQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQVBsRDs7UUFTRSxhQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ2Ysb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsT0FBTyxDQUFDO0tBcUQxQjtJQW5EQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNqQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2pDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3JDLFVBQVUsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ3hDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsV0FBVztRQUNULE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7WUFDckQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN2RCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNELElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztZQUM1RixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTdEVSxlQUFlO2tHQUFmLGVBQWUsMEdDYjVCLDZ1SEF5RkEsdUdEakZZLG1CQUFtQix5cUNBQUUsdUJBQXVCOzsyRkFLM0MsZUFBZTtrQkFQM0IsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsQ0FBQyxZQUM3Qyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQW5ndWxhckNvbW1vbk1vZHVsZSwgQVBQX0NPTkZJRywgV0lORE9XIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBdXRoVXNlclNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1hdXRoJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZV0sXG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtYWNjb3VudC1zaWdudXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbnVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2lnbnVwLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNpZ251cENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBzaWdudXBGb3JtITogRm9ybUdyb3VwO1xuICBjb250aW51ZSA9ICcvJztcbiAgYXV0aFVzZXJTZXJ2aWNlID0gaW5qZWN0KEF1dGhVc2VyU2VydmljZSk7XG4gIGZvcm1CdWlsZGVyID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgZW52aXJvbm1lbnQgPSBpbmplY3QoQVBQX0NPTkZJRyk7XG4gIHdpbmRvdyA9IGluamVjdChXSU5ET1cpO1xuICBjb3VudERvd24gPSBmYWxzZTtcbiAgY291bnREb3duVGltZSA9IDYwO1xuICBzaG93QnV0dG9uVGV4dCA9ICflj5HpgIHpqozor4HnoIEnO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKCfotKblj7fms6jlhowgLSDmi7zlsI/or74nKTtcbiAgICB0aGlzLnNpZ251cEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIG5hbWU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBob25lOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybignMSgzfDR8NXw2fDd8OHw5KVxcXFxkezl9JyldXSxcbiAgICAgIGNvZGU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBhc3N3b3JkOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICByZVBhc3N3b3JkOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG4gICAgdGhpcy5jb250aW51ZSA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ2NvbnRpbnVlJ10gfHwgJy8nO1xuICB9XG4gIHNlbmRTTVNDb2RlKCkge1xuICAgIGNvbnN0IHBob25lQ29udHJvbCA9IHRoaXMuc2lnbnVwRm9ybS5nZXQoJ3Bob25lJyk7XG4gICAgaWYgKCFwaG9uZUNvbnRyb2w/LnZhbGlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBob25lID0gcGhvbmVDb250cm9sLnZhbHVlO1xuICAgIHRoaXMuY291bnREb3duID0gdHJ1ZTtcbiAgICBjb25zdCBzdGFydCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvdW50RG93blRpbWUgPj0gMCkge1xuICAgICAgICB0aGlzLnNob3dCdXR0b25UZXh0ID0gYCR7dGhpcy5jb3VudERvd25UaW1lLS1956eS6YeN5Y+RYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoc3RhcnQpO1xuICAgICAgICB0aGlzLnNob3dCdXR0b25UZXh0ID0gJ+mHjeaWsOWPkemAgSc7XG4gICAgICAgIHRoaXMuY291bnREb3duID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY291bnREb3duVGltZSA9IDYwO1xuICAgICAgfVxuICAgIH0sIDEwMDApO1xuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLnNlbmRTTVNDb2RlKCcrODYnLCBwaG9uZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3Blbign5Y+R6YCB5oiQ5YqfJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBzdWJtaXQoKSB7XG4gICAgaWYgKCF0aGlzLnNpZ251cEZvcm0udmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9IHt9O1xuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLnNpZ251cCh0aGlzLnNpZ251cEZvcm0udmFsdWUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMud2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmNvbnRpbnVlID8gdGhpcy5jb250aW51ZSA6IHRoaXMuZW52aXJvbm1lbnQubXlhY2NvdW50VXJsO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLWZ1bGwgZmxleCBmbGV4LWNvbCBtZDpqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIj5cbiAgPGRpdiBjbGFzcz1cIm1kOnNoYWRvdy1tZCBwLTggcm91bmRlZC1tZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LTJ4bCBwbC0yIHBiLTZcIj7ms6jlhow8L2Rpdj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInNpZ251cEZvcm1cIiAoc3VibWl0KT1cInN1Ym1pdCgpXCI+XG4gICAgICA8IS0tIG5hbWUgLS0+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgPG1hdC1sYWJlbD4g5aeT5ZCNIDwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIHJlcXVpcmVkIC8+XG4gICAgICAgIEBpZiAoc2lnbnVwRm9ybS5jb250cm9sc1snbmFtZSddLnRvdWNoZWQgJiYgc2lnbnVwRm9ybS5jb250cm9sc1snbmFtZSddLmludmFsaWQpIHtcbiAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgQGlmIChzaWdudXBGb3JtLmNvbnRyb2xzWyduYW1lJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgPHNwYW4+5aeT5ZCN5b+F5aGrPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICB9XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPCEtLSBwaG9uZSAtLT5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICA8bWF0LWxhYmVsPiDmiYvmnLrlj7cgPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiIHJlcXVpcmVkIC8+XG4gICAgICAgIEBpZiAoc2lnbnVwRm9ybS5jb250cm9sc1sncGhvbmUnXS50b3VjaGVkICYmIHNpZ251cEZvcm0uY29udHJvbHNbJ3Bob25lJ10uaW52YWxpZCkge1xuICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICBAaWYgKHNpZ251cEZvcm0uY29udHJvbHNbJ3Bob25lJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgPHNwYW4+5omL5py65Y+35b+F5aGrPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzaWdudXBGb3JtLmNvbnRyb2xzWydwaG9uZSddLmVycm9ycz8uWydwYXR0ZXJuJ10pIHtcbiAgICAgICAgICAgICAgPHNwYW4+IOaJi+acuuWPt+agvOW8j+mUmeivryA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8IS0tIHBob25lIGNvZGUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTNcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD4g6aqM6K+B56CBIDwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjb2RlXCIgcmVxdWlyZWQgLz5cbiAgICAgICAgICBAaWYgKHNpZ251cEZvcm0uY29udHJvbHNbJ2NvZGUnXS50b3VjaGVkICYmIHNpZ251cEZvcm0uY29udHJvbHNbJ2NvZGUnXS5pbnZhbGlkKSB7XG4gICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICBAaWYgKHNpZ251cEZvcm0uY29udHJvbHNbJ2NvZGUnXS5lcnJvcnM/LlsncmVxdWlyZWQnXSkge1xuICAgICAgICAgICAgICAgIDxzcGFuPumqjOivgeeggeW/heWhqzwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgfVxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKGNsaWNrKT1cInNlbmRTTVNDb2RlKClcIlxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYmctb3JhbmdlLTYwMCBob3ZlcjpiZy1vcmFuZ2UtNzAwIHctWzEyOHB4XSBwLTMgbXQtMiBzaGFkb3ctZ3JheS0zMDAgc2hhZG93IGhvdmVyOnNoYWRvdy1sZyB0ZXh0LXdoaXRlIHJvdW5kZWQgdGV4dC1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4+5Y+R6YCB6aqM6K+B56CBPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIHBhc3N3b3JkIC0tPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+IOWvhueggSA8L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIgdHlwZT1cInBhc3N3b3JkXCIgYXV0b2NvbXBsZXRlPVwicGFzc3dvcmRcIiAvPlxuICAgICAgICBAaWYgKHNpZ251cEZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10udG91Y2hlZCAmJiBzaWdudXBGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLmludmFsaWQpIHtcbiAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgQGlmIChzaWdudXBGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgIDxzcGFuPuivt+i+k+WFpeWvhueggTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgfVxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPCEtLSBwYXNzd29yZCBjb25maXJtIC0tPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+IOehruiupOWvhueggSA8L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInJlUGFzc3dvcmRcIiB0eXBlPVwicGFzc3dvcmRcIiBhdXRvY29tcGxldGU9XCJyZVBhc3N3b3JkXCIgLz5cbiAgICAgICAgQGlmIChzaWdudXBGb3JtLmNvbnRyb2xzWydyZVBhc3N3b3JkJ10udG91Y2hlZCAmJiBzaWdudXBGb3JtLmNvbnRyb2xzWydyZVBhc3N3b3JkJ10uaW52YWxpZCkge1xuICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICBAaWYgKHNpZ251cEZvcm0uY29udHJvbHNbJ3JlUGFzc3dvcmQnXS5lcnJvcnM/LlsncmVxdWlyZWQnXSkge1xuICAgICAgICAgICAgICA8c3Bhbj7or7fnoa7orqTlr4bnoIE8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9mb3JtPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcHgtM1wiPlxuICAgICAgPGEgbWF0LWJ1dHRvbiBocmVmPVwiL3NpZ25pblwiPueZu+W9lTwvYT5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNsaWNrKT1cInN1Ym1pdCgpXCJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBiZy1vcmFuZ2UtNjAwIGhvdmVyOmJnLW9yYW5nZS03MDAgdy1bMTI4cHhdIHAtMyBzaGFkb3ctZ3JheS0zMDAgc2hhZG93IGhvdmVyOnNoYWRvdy1sZyB0ZXh0LXdoaXRlIHJvdW5kZWQgdGV4dC1jZW50ZXJcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj7ms6jlhow8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export var UserGender;
2
+ (function (UserGender) {
3
+ UserGender[UserGender["MALE"] = '男'] = "MALE";
4
+ UserGender[UserGender["FEMALE"] = '女'] = "FEMALE";
5
+ UserGender[UserGender["RATHER_NOT_SAY"] = '不公开'] = "RATHER_NOT_SAY";
6
+ })(UserGender || (UserGender = {}));
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29udGFudC91c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsZ0NBQVksR0FBRyxVQUFBLENBQUE7SUFDZixrQ0FBYyxHQUFHLFlBQUEsQ0FBQTtJQUNqQiwwQ0FBc0IsS0FBSyxvQkFBQSxDQUFBO0FBQzdCLENBQUMsRUFKVyxVQUFVLEtBQVYsVUFBVSxRQUlyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFVzZXJHZW5kZXIge1xuICBNQUxFID0gPGFueT4n55S3JyxcbiAgRkVNQUxFID0gPGFueT4n5aWzJyxcbiAgUkFUSEVSX05PVF9TQVkgPSA8YW55PifkuI3lhazlvIAnLFxufVxuIl19
@@ -0,0 +1,41 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { AuthUserService } from '@rolatech/angular-auth';
3
+ import { AngularCommonModule } from '@rolatech/angular-common';
4
+ import { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';
5
+ import { BackButtonDirective } from '@rolatech/angular-services';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/forms";
8
+ import * as i2 from "@angular/material/button";
9
+ import * as i3 from "@angular/material/form-field";
10
+ import * as i4 from "@angular/material/input";
11
+ export class EmailComponent extends BaseComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.authUserService = inject(AuthUserService);
15
+ this.email = '';
16
+ }
17
+ ngOnInit() {
18
+ this.authUserService.me().subscribe({
19
+ next: (res) => {
20
+ this.email = res.email;
21
+ },
22
+ });
23
+ }
24
+ save() {
25
+ this.authUserService.update({ email: this.email }).subscribe({
26
+ next: (res) => {
27
+ this.snackBarService.open('修改成功');
28
+ },
29
+ error: (error) => {
30
+ this.snackBarService.open(error.message);
31
+ },
32
+ });
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EmailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", 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
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EmailComponent, decorators: [{
38
+ type: Component,
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
+ }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY291bnQvc3JjL2xpYi9wYWdlcy9teWFjY291bnQvZW1haWwvZW1haWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY291bnQvc3JjL2xpYi9wYWdlcy9teWFjY291bnQvZW1haWwvZW1haWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBVWpFLE1BQU0sT0FBTyxjQUFlLFNBQVEsYUFBYTtJQVBqRDs7UUFRRSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUxQyxVQUFLLEdBQUcsRUFBRSxDQUFDO0tBb0JaO0lBbEJDLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNsQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNELElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0MsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBdEJVLGNBQWM7a0dBQWQsY0FBYyx5R0NkM0IsdzNCQXNCQSx5RERiWSxtQkFBbUIsOG1CQUFFLHVCQUF1QixtdkJBQUUsbUJBQW1COzsyRkFLaEUsY0FBYztrQkFQMUIsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsQ0FBQyxZQUNsRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoVXNlclNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1hdXRoJztcbmltcG9ydCB7IEFuZ3VsYXJDb21tb25Nb2R1bGUgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsIEJhc2VDb21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IEJhY2tCdXR0b25EaXJlY3RpdmUgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQW5ndWxhckNvbW1vbk1vZHVsZSwgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsIEJhY2tCdXR0b25EaXJlY3RpdmVdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtZW1haWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW1haWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbWFpbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBFbWFpbENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBhdXRoVXNlclNlcnZpY2UgPSBpbmplY3QoQXV0aFVzZXJTZXJ2aWNlKTtcbiAgdXNlciQhOiBPYnNlcnZhYmxlPGFueT47XG4gIGVtYWlsID0gJyc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoVXNlclNlcnZpY2UubWUoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmVtYWlsID0gcmVzLmVtYWlsO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5hdXRoVXNlclNlcnZpY2UudXBkYXRlKHsgZW1haWw6IHRoaXMuZW1haWwgfSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3Blbign5L+u5pS55oiQ5YqfJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1heC13LVsxMTIwcHhdIG0tYXV0b1wiPlxuICA8ZGl2IGNsYXNzPVwibWF4LXctWzgyMHB4XSBwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgcC0zIG1iLTEyXCI+XG4gICAgICA8cCBjbGFzcz1cInRleHQtM3hsXCI+5L+u5pS56YKu566xPC9wPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW1kXCI+5oKo5Y+v5Lul6YCa6L+H6YKu566x6I635b6X5pu05aSa5oiR5Lus55qE5Lqn5ZOB5L+h5oGvPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiZW1haWxcIiAvPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgbXQtM1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHJvbGF0ZWNoQmFja0J1dHRvbj7lj5bmtog8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJiZy1vcmFuZ2UtNjAwIHNoYWRvdyBzaGFkb3ctZ3JheS0zMDAgY3Vyc29yLXBvaW50ZXIgdy0yMCBwLTIgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtY2VudGVyIG1sLTNcIlxuICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICAgID5cbiAgICAgICAg5L+d5a2YXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { Component } from '@angular/core';
2
+ import { AngularCommonModule } from '@rolatech/angular-common';
3
+ import { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';
4
+ import * as i0 from "@angular/core";
5
+ export class EmailVerificationComponent extends BaseComponent {
6
+ ngOnInit() {
7
+ this.show();
8
+ }
9
+ show() {
10
+ const options = {
11
+ title: '确认删除吗',
12
+ message: 'CONFIRM.DOWNLOAD.JOB.MESSAGE',
13
+ cancelText: '取消',
14
+ confirmText: '确认',
15
+ };
16
+ this.dialogService.open(options);
17
+ this.dialogService.confirmed().subscribe((confirmed) => { });
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EmailVerificationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EmailVerificationComponent, isStandalone: true, selector: "myaccount-email-verification", usesInheritance: true, ngImport: i0, template: "<div class=\"p-3\">Email verification</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }] }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EmailVerificationComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'myaccount-email-verification', template: "<div class=\"p-3\">Email verification</div>\n" }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtdmVyaWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvcGFnZXMvbXlhY2NvdW50L2VtYWlsLXZlcmlmaWNhdGlvbi9lbWFpbC12ZXJpZmljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY291bnQvc3JjL2xpYi9wYWdlcy9teWFjY291bnQvZW1haWwtdmVyaWZpY2F0aW9uL2VtYWlsLXZlcmlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBU3RGLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxhQUFhO0lBQzNELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSTtRQUNGLE1BQU0sT0FBTyxHQUFHO1lBQ2QsS0FBSyxFQUFFLE9BQU87WUFDZCxPQUFPLEVBQUUsOEJBQThCO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQzs4R0FiVSwwQkFBMEI7a0dBQTFCLDBCQUEwQiwrR0NYdkMsK0NBQ0EseURES1ksbUJBQW1CLDhCQUFFLHVCQUF1Qjs7MkZBSzNDLDBCQUEwQjtrQkFQdEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsQ0FBQyxZQUM3Qyw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQW5ndWxhckNvbW1vbk1vZHVsZSwgQW5ndWxhckNvbXBvbmVudHNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ215YWNjb3VudC1lbWFpbC12ZXJpZmljYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZW1haWwtdmVyaWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW1haWwtdmVyaWZpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEVtYWlsVmVyaWZpY2F0aW9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2hvdygpO1xuICB9XG4gIHNob3coKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6Zmk5ZCXJyxcbiAgICAgIG1lc3NhZ2U6ICdDT05GSVJNLkRPV05MT0FELkpPQi5NRVNTQUdFJyxcbiAgICAgIGNhbmNlbFRleHQ6ICflj5bmtognLFxuICAgICAgY29uZmlybVRleHQ6ICfnoa7orqQnLFxuICAgIH07XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4ob3B0aW9ucyk7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm1lZCgpLnN1YnNjcmliZSgoY29uZmlybWVkKSA9PiB7fSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwLTNcIj5FbWFpbCB2ZXJpZmljYXRpb248L2Rpdj5cbiJdfQ==
@@ -0,0 +1,46 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { MatRadioModule } from '@angular/material/radio';
3
+ import { AuthUserService } from '@rolatech/angular-auth';
4
+ import { AngularCommonModule } from '@rolatech/angular-common';
5
+ import { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';
6
+ import { BackButtonDirective } from '@rolatech/angular-services';
7
+ import { UserGender } from '../../../contant/user';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/forms";
10
+ import * as i2 from "@angular/material/button";
11
+ import * as i3 from "@angular/material/divider";
12
+ import * as i4 from "@angular/material/icon";
13
+ import * as i5 from "@angular/material/radio";
14
+ export class GenderComponent extends BaseComponent {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.authUserService = inject(AuthUserService);
18
+ this.genders = ['男', '女', '不公开'];
19
+ this.gender = UserGender;
20
+ this.selectedGender = '';
21
+ }
22
+ ngOnInit() {
23
+ this.authUserService.me().subscribe({
24
+ next: (res) => {
25
+ this.selectedGender = this.gender[res.gender];
26
+ },
27
+ });
28
+ }
29
+ save() {
30
+ this.authUserService.update({ gender: this.gender[this.selectedGender] }).subscribe({
31
+ next: (res) => {
32
+ this.snackBarService.open('修改成功');
33
+ },
34
+ error: (error) => {
35
+ this.snackBarService.open(error.message);
36
+ },
37
+ });
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: GenderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: GenderComponent, isStandalone: true, selector: "rolatech-account-gender", usesInheritance: true, ngImport: i0, template: "<div>\n <div class=\"px-3 max-w-[1120px] m-auto\">\n <div class=\"flex items-center\">\n <div class=\"flex items-center justify-center w-11 h-11 cursor-pointer\" rolatechBackButton>\n <mat-icon>arrow_back</mat-icon>\n </div>\n <span class=\"text-xl font-medium\">\u8BBE\u7F6E\u6027\u522B</span>\n </div>\n </div>\n <div class=\"px-4\">\n <mat-divider></mat-divider>\n </div>\n <div class=\"max-w-[1120px] m-auto p-4\">\n <label class=\"px-2\">\u6027\u522B\u9009\u62E9</label>\n <mat-radio-group class=\"flex flex-col\" color=\"primary\" [(ngModel)]=\"selectedGender\">\n @for (gender of genders; track gender) {\n <mat-radio-button [value]=\"gender\">{{ gender }}</mat-radio-button>\n }\n </mat-radio-group>\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.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.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: BackButtonDirective, selector: "[rolatechBackButton]" }] }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: GenderComponent, decorators: [{
43
+ type: Component,
44
+ args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule, MatRadioModule, BackButtonDirective], selector: 'rolatech-account-gender', template: "<div>\n <div class=\"px-3 max-w-[1120px] m-auto\">\n <div class=\"flex items-center\">\n <div class=\"flex items-center justify-center w-11 h-11 cursor-pointer\" rolatechBackButton>\n <mat-icon>arrow_back</mat-icon>\n </div>\n <span class=\"text-xl font-medium\">\u8BBE\u7F6E\u6027\u522B</span>\n </div>\n </div>\n <div class=\"px-4\">\n <mat-divider></mat-divider>\n </div>\n <div class=\"max-w-[1120px] m-auto p-4\">\n <label class=\"px-2\">\u6027\u522B\u9009\u62E9</label>\n <mat-radio-group class=\"flex flex-col\" color=\"primary\" [(ngModel)]=\"selectedGender\">\n @for (gender of genders; track gender) {\n <mat-radio-button [value]=\"gender\">{{ gender }}</mat-radio-button>\n }\n </mat-radio-group>\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" }]
45
+ }] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvcGFnZXMvbXlhY2NvdW50L2dlbmRlci9nZW5kZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY291bnQvc3JjL2xpYi9wYWdlcy9teWFjY291bnQvZ2VuZGVyL2dlbmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFTbkQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQVBsRDs7UUFRRSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUxQyxZQUFPLEdBQWEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLFdBQU0sR0FBUSxVQUFVLENBQUM7UUFDekIsbUJBQWMsR0FBRyxFQUFFLENBQUM7S0FvQnJCO0lBbEJDLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNsQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hELENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbEYsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F4QlUsZUFBZTtrR0FBZixlQUFlLDBHQ2Y1Qiw2bUNBOEJBLHlERHBCWSxtQkFBbUIsOFZBQUUsdUJBQXVCLDQ5QkFBRSxjQUFjLCtCQUFFLG1CQUFtQjs7MkZBS2hGLGVBQWU7a0JBUDNCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixDQUFDLFlBQ2xGLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgQXV0aFVzZXJTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCYWNrQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IHsgVXNlckdlbmRlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRhbnQvdXNlcic7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQW5ndWxhckNvbW1vbk1vZHVsZSwgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsIE1hdFJhZGlvTW9kdWxlLCBCYWNrQnV0dG9uRGlyZWN0aXZlXSxcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1hY2NvdW50LWdlbmRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW5kZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nZW5kZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGF1dGhVc2VyU2VydmljZSA9IGluamVjdChBdXRoVXNlclNlcnZpY2UpO1xuXG4gIGdlbmRlcnM6IHN0cmluZ1tdID0gWyfnlLcnLCAn5aWzJywgJ+S4jeWFrOW8gCddO1xuICBnZW5kZXI6IGFueSA9IFVzZXJHZW5kZXI7XG4gIHNlbGVjdGVkR2VuZGVyID0gJyc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoVXNlclNlcnZpY2UubWUoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkR2VuZGVyID0gdGhpcy5nZW5kZXJbcmVzLmdlbmRlcl07XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS51cGRhdGUoeyBnZW5kZXI6IHRoaXMuZ2VuZGVyW3RoaXMuc2VsZWN0ZWRHZW5kZXJdIH0pLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJ+S/ruaUueaIkOWKnycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDxkaXYgY2xhc3M9XCJweC0zIG1heC13LVsxMTIwcHhdIG0tYXV0b1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHctMTEgaC0xMSBjdXJzb3ItcG9pbnRlclwiIHJvbGF0ZWNoQmFja0J1dHRvbj5cbiAgICAgICAgPG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQteGwgZm9udC1tZWRpdW1cIj7orr7nva7mgKfliKs8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicHgtNFwiPlxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1heC13LVsxMTIwcHhdIG0tYXV0byBwLTRcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJweC0yXCI+5oCn5Yir6YCJ5oupPC9sYWJlbD5cbiAgICA8bWF0LXJhZGlvLWdyb3VwIGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiIGNvbG9yPVwicHJpbWFyeVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRHZW5kZXJcIj5cbiAgICAgIEBmb3IgKGdlbmRlciBvZiBnZW5kZXJzOyB0cmFjayBnZW5kZXIpIHtcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gW3ZhbHVlXT1cImdlbmRlclwiPnt7IGdlbmRlciB9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgIH1cbiAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgbXQtM1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHJvbGF0ZWNoQmFja0J1dHRvbj7lj5bmtog8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJiZy1vcmFuZ2UtNjAwIHNoYWRvdyBzaGFkb3ctZ3JheS0zMDAgY3Vyc29yLXBvaW50ZXIgdy0yMCBwLTIgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtY2VudGVyIG1sLTNcIlxuICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICAgID5cbiAgICAgICAg5L+d5a2YXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { AuthUserService } from '@rolatech/angular-auth';
3
+ import { AngularComponentsModule, BaseComponent, LoadingSpinnerComponent } from '@rolatech/angular-components';
4
+ import { AngularCommonModule } from '@rolatech/angular-common';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ export class HomeComponent extends BaseComponent {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.authUserService = inject(AuthUserService);
11
+ }
12
+ ngOnInit() {
13
+ this.user$ = this.authUserService.me();
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: HomeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: HomeComponent, isStandalone: true, selector: "rolatech-account-home", usesInheritance: true, ngImport: i0, template: "@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-loading-spinner></rolatech-loading-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">\u6B22\u8FCE\u56DE\u6765, {{ user.name }}</p>\n <p class=\"text-md\">\u7528\u6237\u4E2D\u5FC3, \u65B9\u4FBF\u60A8\u7EF4\u62A4\u4E2A\u4EBA\u4FE1\u606F, \u8FD9\u4F1A\u6709\u4E00\u4E2A\u5F88\u597D\u7684\u4F53\u9A8C</p>\n </div>\n </div>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AngularComponentsModule }] }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: HomeComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule, LoadingSpinnerComponent], selector: 'rolatech-account-home', template: "@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-loading-spinner></rolatech-loading-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">\u6B22\u8FCE\u56DE\u6765, {{ user.name }}</p>\n <p class=\"text-md\">\u7528\u6237\u4E2D\u5FC3, \u65B9\u4FBF\u60A8\u7EF4\u62A4\u4E2A\u4EBA\u4FE1\u606F, \u8FD9\u4F1A\u6709\u4E00\u4E2A\u5F88\u597D\u7684\u4F53\u9A8C</p>\n </div>\n </div>\n </div>\n}\n" }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL3BhZ2VzL215YWNjb3VudC9ob21lL2hvbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY291bnQvc3JjL2xpYi9wYWdlcy9teWFjY291bnQvaG9tZS9ob21lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQVMvRCxNQUFNLE9BQU8sYUFBYyxTQUFRLGFBQWE7SUFQaEQ7O1FBU0Usb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7S0FLM0M7SUFIQyxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3pDLENBQUM7OEdBTlUsYUFBYTtrR0FBYixhQUFhLHdHQ2IxQix1ekJBa0JBLHlERFZZLG1CQUFtQixtRkFBRSx1QkFBdUI7OzJGQUszQyxhQUFhO2tCQVB6QixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixDQUFDLFlBQ3RFLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhVc2VyU2VydmljZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWF1dGgnO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsIEJhc2VDb21wb25lbnQsIExvYWRpbmdTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgTG9hZGluZ1NwaW5uZXJDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtaG9tZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ob21lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaG9tZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBIb21lQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHVzZXIkITogT2JzZXJ2YWJsZTxhbnk+O1xuICBhdXRoVXNlclNlcnZpY2UgPSBpbmplY3QoQXV0aFVzZXJTZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXIkID0gdGhpcy5hdXRoVXNlclNlcnZpY2UubWUoKTtcbiAgfVxufVxuIiwiQGlmICh1c2VyJCB8IGFzeW5jOyBhcyB1c2VyKSB7XG4gIDxkaXYgY2xhc3M9XCJtYXgtdy1bMTEyMHB4XSBtLWF1dG9cIj5cbiAgICA8ZGl2IGNsYXNzPVwibWF4LXctWzgyMHB4XSBtLTNcIj5cbiAgICAgIDwhLS0gPHJvbGF0ZWNoLWxvYWRpbmctc3Bpbm5lcj48L3JvbGF0ZWNoLWxvYWRpbmctc3Bpbm5lcj4gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgcC0zIG1iLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgbWItM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTIwIGgtMjAgcm91bmRlZC1mdWxsIGJnLW9yYW5nZS02MDBcIj5cbiAgICAgICAgICAgIEBpZiAodXNlci5hdmF0YXIpIHtcbiAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInctMjAgaC0yMCByb3VuZGVkLWZ1bGwgb2JqZWN0LWNvdmVyXCIgW3NyY109XCJ1c2VyLmF2YXRhclwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCBjbGFzcz1cInRleHQtM3hsXCI+5qyi6L+O5Zue5p2lLCB7eyB1c2VyLm5hbWUgfX08L3A+XG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1tZFwiPueUqOaIt+S4reW/gywg5pa55L6/5oKo57u05oqk5Liq5Lq65L+h5oGvLCDov5nkvJrmnInkuIDkuKrlvojlpb3nmoTkvZPpqow8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,45 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { AuthUserService } from '@rolatech/angular-auth';
3
+ import { AngularCommonModule } from '@rolatech/angular-common';
4
+ import { AngularComponentsModule, LoadingSpinnerComponent } from '@rolatech/angular-components';
5
+ import { MatDialog } from '@angular/material/dialog';
6
+ import { UserGender } from '../../../contant/user';
7
+ import { AvatarUpdateDialogComponent } from '../../../components/avatar-update-dialog/avatar-update-dialog.component';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/router";
10
+ import * as i2 from "@angular/material/divider";
11
+ import * as i3 from "@angular/material/icon";
12
+ import * as i4 from "@angular/material/list";
13
+ export class InfoComponent {
14
+ constructor() {
15
+ this.authUserService = inject(AuthUserService);
16
+ this.dialog = inject(MatDialog);
17
+ this.gender = UserGender;
18
+ }
19
+ ngOnInit() {
20
+ this.user$ = this.authUserService.me();
21
+ this.user$.subscribe({
22
+ next: (user) => {
23
+ this.user = user;
24
+ },
25
+ });
26
+ }
27
+ updateAvatar() {
28
+ const dialogRef = this.dialog.open(AvatarUpdateDialogComponent, {
29
+ data: {
30
+ avatar: this.user.avatar,
31
+ },
32
+ });
33
+ dialogRef.afterClosed().subscribe((result) => {
34
+ console.log(result);
35
+ location.reload();
36
+ });
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: InfoComponent, isStandalone: true, selector: "rolatech-account-info", ngImport: i0, template: "<div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <rolatech-loading-spinner></rolatech-loading-spinner>\n @if (user) {\n <div>\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <p class=\"text-3xl\">\u4E2A\u4EBA\u4FE1\u606F</p>\n <p class=\"text-md\">\u7528\u6237\u4FE1\u606F\u7684\u5168\u90E8\u5185\u5BB9</p>\n </div>\n <div class=\"border border-grap-400 rounded px-3 pt-3 mb-14\">\n <div class=\"p-3 text-xl\">\u57FA\u672C\u8BBE\u7F6E</div>\n <mat-nav-list>\n <mat-list-item (click)=\"updateAvatar()\" class=\"h-16\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u5934\u50CF</span>\n <span class=\"w-24 text-sm\">\u8D26\u6237\u7684\u5934\u50CF</span>\n </div>\n <div\n class=\"mr-6 bg-orange-600 w-9 h-9 rounded-full cursor-pointer hover:outline-gray-200 outline outline-transparent outline-4\"\n >\n @if (user.avatar) {\n <div class=\"w-9 h-9\">\n <img [src]=\"user.avatar\" class=\"w-9 h-9 rounded-full object-cover\" />\n </div>\n }\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item routerLink=\"../profile\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u59D3\u540D</span>\n <span>{{ user?.name }}</span>\n </div>\n <span>\n <mat-icon> navigate_next </mat-icon>\n </span>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item routerLink=\"../gender\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u6027\u522B</span>\n <span>{{ gender[user.gender] || '\u672A\u8BBE\u7F6E' }}</span>\n </div>\n <span>\n <mat-icon> navigate_next </mat-icon>\n </span>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item routerLink=\"../username\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u7528\u6237\u540D</span>\n <span>{{ user.username }}</span>\n </div>\n <span>\n <mat-icon> navigate_next </mat-icon>\n </span>\n </div>\n </mat-list-item>\n </mat-nav-list>\n </div>\n <!-- contact -->\n <div class=\"border border-grap-400 rounded px-3 pt-3\">\n <div class=\"p-3 text-xl\">\u8054\u7CFB\u65B9\u5F0F</div>\n <mat-nav-list>\n <mat-list-item routerLink=\"../email\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u90AE\u7BB1</span>\n <span>{{ user.email || '\u672A\u8BBE\u7F6E' }}</span>\n </div>\n <!-- <mat-icon mat-list-icon>arrow_drop_down</mat-icon> -->\n <span>\n <mat-icon> navigate_next </mat-icon>\n </span>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item routerLink=\"../phone\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u7535\u8BDD</span>\n <span>{{ user.phone || '\u672A\u8BBE\u7F6E' }}</span>\n </div>\n <!-- <mat-icon mat-list-icon>arrow_drop_down</mat-icon> -->\n <span>\n <mat-icon> navigate_next </mat-icon>\n </span>\n </div>\n </mat-list-item>\n </mat-nav-list>\n </div>\n </div>\n }\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "rolatech-loading-spinner", inputs: ["title"] }] }); }
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InfoComponent, decorators: [{
42
+ type: Component,
43
+ args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule, LoadingSpinnerComponent], selector: 'rolatech-account-info', template: "<div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <rolatech-loading-spinner></rolatech-loading-spinner>\n @if (user) {\n <div>\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <p class=\"text-3xl\">\u4E2A\u4EBA\u4FE1\u606F</p>\n <p class=\"text-md\">\u7528\u6237\u4FE1\u606F\u7684\u5168\u90E8\u5185\u5BB9</p>\n </div>\n <div class=\"border border-grap-400 rounded px-3 pt-3 mb-14\">\n <div class=\"p-3 text-xl\">\u57FA\u672C\u8BBE\u7F6E</div>\n <mat-nav-list>\n <mat-list-item (click)=\"updateAvatar()\" class=\"h-16\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u5934\u50CF</span>\n <span class=\"w-24 text-sm\">\u8D26\u6237\u7684\u5934\u50CF</span>\n </div>\n <div\n class=\"mr-6 bg-orange-600 w-9 h-9 rounded-full cursor-pointer hover:outline-gray-200 outline outline-transparent outline-4\"\n >\n @if (user.avatar) {\n <div class=\"w-9 h-9\">\n <img [src]=\"user.avatar\" class=\"w-9 h-9 rounded-full object-cover\" />\n </div>\n }\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item routerLink=\"../profile\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u59D3\u540D</span>\n <span>{{ user?.name }}</span>\n </div>\n <span>\n <mat-icon> navigate_next </mat-icon>\n </span>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item routerLink=\"../gender\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u6027\u522B</span>\n <span>{{ gender[user.gender] || '\u672A\u8BBE\u7F6E' }}</span>\n </div>\n <span>\n <mat-icon> navigate_next </mat-icon>\n </span>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item routerLink=\"../username\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u7528\u6237\u540D</span>\n <span>{{ user.username }}</span>\n </div>\n <span>\n <mat-icon> navigate_next </mat-icon>\n </span>\n </div>\n </mat-list-item>\n </mat-nav-list>\n </div>\n <!-- contact -->\n <div class=\"border border-grap-400 rounded px-3 pt-3\">\n <div class=\"p-3 text-xl\">\u8054\u7CFB\u65B9\u5F0F</div>\n <mat-nav-list>\n <mat-list-item routerLink=\"../email\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u90AE\u7BB1</span>\n <span>{{ user.email || '\u672A\u8BBE\u7F6E' }}</span>\n </div>\n <!-- <mat-icon mat-list-icon>arrow_drop_down</mat-icon> -->\n <span>\n <mat-icon> navigate_next </mat-icon>\n </span>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item routerLink=\"../phone\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm font-thin\">\u7535\u8BDD</span>\n <span>{{ user.phone || '\u672A\u8BBE\u7F6E' }}</span>\n </div>\n <!-- <mat-icon mat-list-icon>arrow_drop_down</mat-icon> -->\n <span>\n <mat-icon> navigate_next </mat-icon>\n </span>\n </div>\n </mat-list-item>\n </mat-nav-list>\n </div>\n </div>\n }\n </div>\n</div>\n" }]
44
+ }] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL3BhZ2VzL215YWNjb3VudC9wZXJzb25hbC1pbmZvL2luZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY291bnQvc3JjL2xpYi9wYWdlcy9teWFjY291bnQvcGVyc29uYWwtaW5mby9pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlFQUF5RSxDQUFDOzs7Ozs7QUFTdEgsTUFBTSxPQUFPLGFBQWE7SUFQMUI7UUFTRSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNCLFdBQU0sR0FBUSxVQUFVLENBQUM7S0FxQjFCO0lBbkJDLFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDbkIsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDbkIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxZQUFZO1FBQ1YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDOUQsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07YUFDekI7U0FDRixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXpCVSxhQUFhO2tHQUFiLGFBQWEsaUZDaEIxQixxakpBc0dBLHlERDNGWSxtQkFBbUIsK1FBQUUsdUJBQXVCLDJoQkFBRSx1QkFBdUI7OzJGQUtwRSxhQUFhO2tCQVB6QixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixDQUFDLFlBQ3RFLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhVc2VyU2VydmljZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWF1dGgnO1xuaW1wb3J0IHsgQW5ndWxhckNvbW1vbk1vZHVsZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgTG9hZGluZ1NwaW5uZXJDb21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBVc2VyR2VuZGVyIH0gZnJvbSAnLi4vLi4vLi4vY29udGFudC91c2VyJztcbmltcG9ydCB7IEF2YXRhclVwZGF0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvYXZhdGFyLXVwZGF0ZS1kaWFsb2cvYXZhdGFyLXVwZGF0ZS1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgTG9hZGluZ1NwaW5uZXJDb21wb25lbnRdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtaW5mbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmZvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5mby5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJbmZvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgdXNlciQhOiBPYnNlcnZhYmxlPGFueT47XG4gIGF1dGhVc2VyU2VydmljZSA9IGluamVjdChBdXRoVXNlclNlcnZpY2UpO1xuICBkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcbiAgdXNlcjogYW55O1xuICBnZW5kZXI6IGFueSA9IFVzZXJHZW5kZXI7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51c2VyJCA9IHRoaXMuYXV0aFVzZXJTZXJ2aWNlLm1lKCk7XG4gICAgdGhpcy51c2VyJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHVzZXIpID0+IHtcbiAgICAgICAgdGhpcy51c2VyID0gdXNlcjtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgdXBkYXRlQXZhdGFyKCkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQXZhdGFyVXBkYXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGF2YXRhcjogdGhpcy51c2VyLmF2YXRhcixcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1heC13LVsxMTIwcHhdIG0tYXV0b1wiPlxuICA8ZGl2IGNsYXNzPVwibWF4LXctWzgyMHB4XSBtLTNcIj5cbiAgICA8cm9sYXRlY2gtbG9hZGluZy1zcGlubmVyPjwvcm9sYXRlY2gtbG9hZGluZy1zcGlubmVyPlxuICAgIEBpZiAodXNlcikge1xuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHAtMyBtYi0xMlwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC0zeGxcIj7kuKrkurrkv6Hmga88L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW1kXCI+55So5oi35L+h5oGv55qE5YWo6YOo5YaF5a65PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItZ3JhcC00MDAgcm91bmRlZCBweC0zIHB0LTMgbWItMTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIHRleHQteGxcIj7ln7rmnKzorr7nva48L2Rpdj5cbiAgICAgICAgICA8bWF0LW5hdi1saXN0PlxuICAgICAgICAgICAgPG1hdC1saXN0LWl0ZW0gKGNsaWNrKT1cInVwZGF0ZUF2YXRhcigpXCIgY2xhc3M9XCJoLTE2XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LTEgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMjQgdGV4dC1zbSBmb250LXRoaW5cIj7lpLTlg488L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMjQgdGV4dC1zbVwiPui0puaIt+eahOWktOWDjzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTYgYmctb3JhbmdlLTYwMCB3LTkgaC05IHJvdW5kZWQtZnVsbCBjdXJzb3ItcG9pbnRlciBob3ZlcjpvdXRsaW5lLWdyYXktMjAwIG91dGxpbmUgb3V0bGluZS10cmFuc3BhcmVudCBvdXRsaW5lLTRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEBpZiAodXNlci5hdmF0YXIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctOSBoLTlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwidXNlci5hdmF0YXJcIiBjbGFzcz1cInctOSBoLTkgcm91bmRlZC1mdWxsIG9iamVjdC1jb3ZlclwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgICAgICAgIDxtYXQtZGl2aWRlciBjbGFzcz1cIm14LTNcIj48L21hdC1kaXZpZGVyPlxuICAgICAgICAgICAgPG1hdC1saXN0LWl0ZW0gcm91dGVyTGluaz1cIi4uL3Byb2ZpbGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtMSBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy0yNCB0ZXh0LXNtIGZvbnQtdGhpblwiPuWnk+WQjTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHVzZXI/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+IG5hdmlnYXRlX25leHQgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyIGNsYXNzPVwibXgtM1wiPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgICAgICA8bWF0LWxpc3QtaXRlbSByb3V0ZXJMaW5rPVwiLi4vZ2VuZGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LTEgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMjQgdGV4dC1zbSBmb250LXRoaW5cIj7mgKfliKs8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZW5kZXJbdXNlci5nZW5kZXJdIHx8ICfmnKrorr7nva4nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPiBuYXZpZ2F0ZV9uZXh0IDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgICAgICAgIDxtYXQtZGl2aWRlciBjbGFzcz1cIm14LTNcIj48L21hdC1kaXZpZGVyPlxuICAgICAgICAgICAgPG1hdC1saXN0LWl0ZW0gcm91dGVyTGluaz1cIi4uL3VzZXJuYW1lXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LTEgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMjQgdGV4dC1zbSBmb250LXRoaW5cIj7nlKjmiLflkI08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyB1c2VyLnVzZXJuYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPiBuYXZpZ2F0ZV9uZXh0IDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gY29udGFjdCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItZ3JhcC00MDAgcm91bmRlZCBweC0zIHB0LTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIHRleHQteGxcIj7ogZTns7vmlrnlvI88L2Rpdj5cbiAgICAgICAgICA8bWF0LW5hdi1saXN0PlxuICAgICAgICAgICAgPG1hdC1saXN0LWl0ZW0gcm91dGVyTGluaz1cIi4uL2VtYWlsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LTEgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMjQgdGV4dC1zbSBmb250LXRoaW5cIj7pgq7nrrE8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyB1c2VyLmVtYWlsIHx8ICfmnKrorr7nva4nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1pY29uIG1hdC1saXN0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj4gLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+IG5hdmlnYXRlX25leHQgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyIGNsYXNzPVwibXgtM1wiPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgICAgICA8bWF0LWxpc3QtaXRlbSByb3V0ZXJMaW5rPVwiLi4vcGhvbmVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtMSBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy0yNCB0ZXh0LXNtIGZvbnQtdGhpblwiPueUteivnTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHVzZXIucGhvbmUgfHwgJ+acquiuvue9ricgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSA8bWF0LWljb24gbWF0LWxpc3QtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPiAtLT5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj4gbmF2aWdhdGVfbmV4dCA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,41 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { AuthUserService } from '@rolatech/angular-auth';
3
+ import { AngularCommonModule } from '@rolatech/angular-common';
4
+ import { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';
5
+ import { BackButtonDirective } from '@rolatech/angular-services';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/forms";
8
+ import * as i2 from "@angular/material/button";
9
+ import * as i3 from "@angular/material/form-field";
10
+ import * as i4 from "@angular/material/input";
11
+ export class ProfileComponent extends BaseComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.authUserService = inject(AuthUserService);
15
+ this.name = '';
16
+ }
17
+ ngOnInit() {
18
+ this.authUserService.me().subscribe({
19
+ next: (res) => {
20
+ this.name = res.name;
21
+ },
22
+ });
23
+ }
24
+ save() {
25
+ this.authUserService.changeName(this.name).subscribe({
26
+ next: (res) => {
27
+ this.snackBarService.open('修改成功');
28
+ },
29
+ error: (error) => {
30
+ this.snackBarService.open(error.message);
31
+ },
32
+ });
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ProfileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ProfileComponent, isStandalone: true, selector: "rolatech-account-profile", 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\u59D3\u540D</p>\n <p class=\"text-md\">\u7528\u6237\u540D\u662F\u60A8\u5728\u672C\u7AD9\u7684\u7B80\u79F0, \u53EF\u4EE5\u662F\u771F\u5B9E\u59D3\u540D, \u4E5F\u53EF\u4EE5\u662F\u6635\u79F0</p>\n </div>\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <input matInput [(ngModel)]=\"name\" />\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
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ProfileComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule, BackButtonDirective], selector: 'rolatech-account-profile', 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\u59D3\u540D</p>\n <p class=\"text-md\">\u7528\u6237\u540D\u662F\u60A8\u5728\u672C\u7AD9\u7684\u7B80\u79F0, \u53EF\u4EE5\u662F\u771F\u5B9E\u59D3\u540D, \u4E5F\u53EF\u4EE5\u662F\u6635\u79F0</p>\n </div>\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <input matInput [(ngModel)]=\"name\" />\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
+ }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL3BhZ2VzL215YWNjb3VudC9wZXJzb25hbC1pbmZvL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL3BhZ2VzL215YWNjb3VudC9wZXJzb25hbC1pbmZvL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFVakUsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQWE7SUFQbkQ7O1FBUUUsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFMUMsU0FBSSxHQUFHLEVBQUUsQ0FBQztLQW9CWDtJQWxCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDbEMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbkQsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F0QlUsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsMkdDZDdCLCs1QkFzQkEseUREYlksbUJBQW1CLDhtQkFBRSx1QkFBdUIsbXZCQUFFLG1CQUFtQjs7MkZBS2hFLGdCQUFnQjtrQkFQNUIsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsQ0FBQyxZQUNsRSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoVXNlclNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1hdXRoJztcbmltcG9ydCB7IEFuZ3VsYXJDb21tb25Nb2R1bGUgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsIEJhc2VDb21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IEJhY2tCdXR0b25EaXJlY3RpdmUgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQW5ndWxhckNvbW1vbk1vZHVsZSwgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsIEJhY2tCdXR0b25EaXJlY3RpdmVdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZmlsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGF1dGhVc2VyU2VydmljZSA9IGluamVjdChBdXRoVXNlclNlcnZpY2UpO1xuICB1c2VyJCE6IE9ic2VydmFibGU8YW55PjtcbiAgbmFtZSA9ICcnO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLm1lKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5uYW1lID0gcmVzLm5hbWU7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5jaGFuZ2VOYW1lKHRoaXMubmFtZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3Blbign5L+u5pS55oiQ5YqfJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1heC13LVsxMTIwcHhdIG0tYXV0b1wiPlxuICA8ZGl2IGNsYXNzPVwibWF4LXctWzgyMHB4XSBwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgcC0zIG1iLTEyXCI+XG4gICAgICA8cCBjbGFzcz1cInRleHQtM3hsXCI+5L+u5pS55aeT5ZCNPC9wPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW1kXCI+55So5oi35ZCN5piv5oKo5Zyo5pys56uZ55qE566A56ewLCDlj6/ku6XmmK/nnJ/lrp7lp5PlkI0sIOS5n+WPr+S7peaYr+aYteensDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cIm5hbWVcIiAvPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgbXQtM1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHJvbGF0ZWNoQmFja0J1dHRvbj7lj5bmtog8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJiZy1vcmFuZ2UtNjAwIHNoYWRvdyBzaGFkb3ctZ3JheS0zMDAgY3Vyc29yLXBvaW50ZXIgdy0yMCBwLTIgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtY2VudGVyIG1sLTNcIlxuICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICAgID5cbiAgICAgICAg5L+d5a2YXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,41 @@
1
+ import { Component, ViewEncapsulation, inject } from '@angular/core';
2
+ import { AuthUserService } from '@rolatech/angular-auth';
3
+ import { AngularCommonModule } from '@rolatech/angular-common';
4
+ import { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';
5
+ import { BackButtonDirective } from '@rolatech/angular-services';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/forms";
8
+ import * as i2 from "@angular/material/button";
9
+ import * as i3 from "@angular/material/form-field";
10
+ import * as i4 from "@angular/material/input";
11
+ export class UsernameComponent extends BaseComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.authUserService = inject(AuthUserService);
15
+ this.username = '';
16
+ }
17
+ ngOnInit() {
18
+ this.authUserService.me().subscribe({
19
+ next: (res) => {
20
+ this.username = res.username;
21
+ },
22
+ });
23
+ }
24
+ save() {
25
+ this.authUserService.changeUsername(this.username).subscribe({
26
+ next: (res) => {
27
+ this.snackBarService.open(res.data);
28
+ },
29
+ error: (error) => {
30
+ this.snackBarService.open(error.message);
31
+ },
32
+ });
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UsernameComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: UsernameComponent, isStandalone: true, selector: "rolatech-account-username", 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\u7528\u6237\u540D</p>\n <p class=\"text-md\">\u7528\u6237\u540D\u662F\u60A8\u5728\u672C\u7AD9\u7684\u552F\u4E00\u6807\u8BC6</p>\n </div>\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <span matTextPrefix>&#64;</span>\n <input matInput [(ngModel)]=\"username\" />\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: i3.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { 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]" }], encapsulation: i0.ViewEncapsulation.None }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UsernameComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule, BackButtonDirective], selector: 'rolatech-account-username', encapsulation: ViewEncapsulation.None, 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\u7528\u6237\u540D</p>\n <p class=\"text-md\">\u7528\u6237\u540D\u662F\u60A8\u5728\u672C\u7AD9\u7684\u552F\u4E00\u6807\u8BC6</p>\n </div>\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <span matTextPrefix>&#64;</span>\n <input matInput [(ngModel)]=\"username\" />\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
+ }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcm5hbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY291bnQvc3JjL2xpYi9wYWdlcy9teWFjY291bnQvcGVyc29uYWwtaW5mby91c2VybmFtZS91c2VybmFtZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL3BhZ2VzL215YWNjb3VudC9wZXJzb25hbC1pbmZvL3VzZXJuYW1lL3VzZXJuYW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQVdqRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYTtJQVJwRDs7UUFTRSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUxQyxhQUFRLEdBQUcsRUFBRSxDQUFDO0tBb0JmO0lBbEJDLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNsQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDL0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMzRCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F0QlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsNEdDZjlCLDY0QkF1QkEseUREZFksbUJBQW1CLDhtQkFBRSx1QkFBdUIsbzNCQUFFLG1CQUFtQjs7MkZBTWhFLGlCQUFpQjtrQkFSN0IsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsQ0FBQyxZQUNsRSwyQkFBMkIsaUJBR3RCLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFVzZXJTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCYWNrQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FuZ3VsYXJDb21tb25Nb2R1bGUsIEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBCYWNrQnV0dG9uRGlyZWN0aXZlXSxcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1hY2NvdW50LXVzZXJuYW1lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXJuYW1lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlcm5hbWUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlcm5hbWVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYXV0aFVzZXJTZXJ2aWNlID0gaW5qZWN0KEF1dGhVc2VyU2VydmljZSk7XG4gIHVzZXIkITogT2JzZXJ2YWJsZTxhbnk+O1xuICB1c2VybmFtZSA9ICcnO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLm1lKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy51c2VybmFtZSA9IHJlcy51c2VybmFtZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLmNoYW5nZVVzZXJuYW1lKHRoaXMudXNlcm5hbWUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4ocmVzLmRhdGEpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYXgtdy1bMTEyMHB4XSBtLWF1dG9cIj5cbiAgPGRpdiBjbGFzcz1cIm1heC13LVs4MjBweF0gcC00XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHAtMyBtYi0xMlwiPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LTN4bFwiPuS/ruaUueeUqOaIt+WQjTwvcD5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1tZFwiPueUqOaIt+WQjeaYr+aCqOWcqOacrOermeeahOWUr+S4gOagh+ivhjwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgIDxzcGFuIG1hdFRleHRQcmVmaXg+JiM2NDs8L3NwYW4+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInVzZXJuYW1lXCIgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgaXRlbXMtY2VudGVyIG10LTNcIj5cbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiByb2xhdGVjaEJhY2tCdXR0b24+5Y+W5raIPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYmctb3JhbmdlLTYwMCBzaGFkb3cgc2hhZG93LWdyYXktMzAwIGN1cnNvci1wb2ludGVyIHctMjAgcC0yIHRleHQtd2hpdGUgcm91bmRlZCB0ZXh0LWNlbnRlciBtbC0zXCJcbiAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICA+XG4gICAgICAgIOS/neWtmFxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=