@rolatech/angular-account 17.0.1 → 17.1.0

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 (59) hide show
  1. package/esm2022/index.mjs +3 -1
  2. package/esm2022/lib/account.routes.mjs +3 -39
  3. package/esm2022/lib/components/avatar-update-dialog/avatar-update-dialog.component.mjs +3 -3
  4. package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +3 -3
  5. package/esm2022/lib/components/index.mjs +2 -0
  6. package/esm2022/lib/components/login/login-wechat/login-wechat.component.mjs +3 -3
  7. package/esm2022/lib/components/logout/logout.component.mjs +3 -3
  8. package/esm2022/lib/components/passwordreset/passwordreset.component.mjs +3 -3
  9. package/esm2022/lib/components/topbar-login/topbar-login.component.mjs +26 -0
  10. package/esm2022/lib/myaccount.routes.mjs +37 -0
  11. package/esm2022/lib/pages/accounts/signin/signin.component.mjs +148 -0
  12. package/esm2022/lib/{components → pages/accounts}/signup/signup.component.mjs +4 -4
  13. package/esm2022/lib/pages/myaccount/email/email.component.mjs +3 -3
  14. package/esm2022/lib/pages/myaccount/email-verification/email-verification.component.mjs +3 -3
  15. package/esm2022/lib/pages/myaccount/gender/gender.component.mjs +3 -3
  16. package/esm2022/lib/pages/myaccount/home/home.component.mjs +3 -3
  17. package/esm2022/lib/pages/myaccount/personal-info/info.component.mjs +3 -3
  18. package/esm2022/lib/pages/myaccount/personal-info/profile/profile.component.mjs +3 -3
  19. package/esm2022/lib/pages/myaccount/personal-info/username/username.component.mjs +3 -3
  20. package/esm2022/lib/pages/myaccount/phone/phone.component.mjs +3 -3
  21. package/esm2022/lib/pages/myaccount/security/security-faceid/security-faceid.component.mjs +3 -3
  22. package/esm2022/lib/pages/myaccount/security/security-index/security-index.component.mjs +3 -3
  23. package/esm2022/lib/pages/myaccount/security/security-password/security-password.component.mjs +3 -3
  24. package/esm2022/lib/pages/myaccount/security/security-verification/security-verification.component.mjs +3 -3
  25. package/esm2022/lib/services/wechat-login.service.mjs +3 -3
  26. package/fesm2022/{rolatech-angular-account-email-verification.component-4RClhLI4.mjs → rolatech-angular-account-email-verification.component-CeeR4yOF.mjs} +4 -4
  27. package/fesm2022/{rolatech-angular-account-email-verification.component-4RClhLI4.mjs.map → rolatech-angular-account-email-verification.component-CeeR4yOF.mjs.map} +1 -1
  28. package/fesm2022/{rolatech-angular-account-email.component-oRTdxJLo.mjs → rolatech-angular-account-email.component-DFCrf02y.mjs} +4 -4
  29. package/fesm2022/{rolatech-angular-account-email.component-oRTdxJLo.mjs.map → rolatech-angular-account-email.component-DFCrf02y.mjs.map} +1 -1
  30. package/fesm2022/{rolatech-angular-account-gender.component-egCF_zI_.mjs → rolatech-angular-account-gender.component-CiBvXPov.mjs} +4 -4
  31. package/fesm2022/{rolatech-angular-account-gender.component-egCF_zI_.mjs.map → rolatech-angular-account-gender.component-CiBvXPov.mjs.map} +1 -1
  32. package/fesm2022/{rolatech-angular-account-home.component-B2Rmr4Iw.mjs → rolatech-angular-account-home.component-ByhLZFf9.mjs} +4 -4
  33. package/fesm2022/{rolatech-angular-account-home.component-B2Rmr4Iw.mjs.map → rolatech-angular-account-home.component-ByhLZFf9.mjs.map} +1 -1
  34. package/fesm2022/{rolatech-angular-account-info.component-CMWD6CDB.mjs → rolatech-angular-account-info.component-CkoqVaVK.mjs} +7 -7
  35. package/fesm2022/{rolatech-angular-account-info.component-CMWD6CDB.mjs.map → rolatech-angular-account-info.component-CkoqVaVK.mjs.map} +1 -1
  36. package/fesm2022/{rolatech-angular-account-login.routes-NPLzDeHN.mjs → rolatech-angular-account-login.routes-Dy6Vz5qp.mjs} +5 -5
  37. package/fesm2022/{rolatech-angular-account-login.routes-NPLzDeHN.mjs.map → rolatech-angular-account-login.routes-Dy6Vz5qp.mjs.map} +1 -1
  38. package/fesm2022/{rolatech-angular-account-phone.component-CJ8DeuFr.mjs → rolatech-angular-account-phone.component-BAeSo4dV.mjs} +4 -4
  39. package/fesm2022/{rolatech-angular-account-phone.component-CJ8DeuFr.mjs.map → rolatech-angular-account-phone.component-BAeSo4dV.mjs.map} +1 -1
  40. package/fesm2022/{rolatech-angular-account-profile.component-BN_pBKMU.mjs → rolatech-angular-account-profile.component-2ZeNTPQi.mjs} +4 -4
  41. package/fesm2022/{rolatech-angular-account-profile.component-BN_pBKMU.mjs.map → rolatech-angular-account-profile.component-2ZeNTPQi.mjs.map} +1 -1
  42. package/fesm2022/{rolatech-angular-account-rolatech-angular-account-Dqz2XIdy.mjs → rolatech-angular-account-rolatech-angular-account-BMQsN92b.mjs} +57 -34
  43. package/fesm2022/rolatech-angular-account-rolatech-angular-account-BMQsN92b.mjs.map +1 -0
  44. package/fesm2022/{rolatech-angular-account-security.routes-S3BzviKf.mjs → rolatech-angular-account-security.routes-L15H-k9Q.mjs} +10 -10
  45. package/fesm2022/{rolatech-angular-account-security.routes-S3BzviKf.mjs.map → rolatech-angular-account-security.routes-L15H-k9Q.mjs.map} +1 -1
  46. package/fesm2022/{rolatech-angular-account-username.component-C6pM8g84.mjs → rolatech-angular-account-username.component-C_2XuLXa.mjs} +4 -4
  47. package/fesm2022/{rolatech-angular-account-username.component-C6pM8g84.mjs.map → rolatech-angular-account-username.component-C_2XuLXa.mjs.map} +1 -1
  48. package/fesm2022/rolatech-angular-account.mjs +3 -3
  49. package/index.d.ts +2 -0
  50. package/lib/account.routes.d.ts +0 -1
  51. package/lib/components/index.d.ts +1 -0
  52. package/lib/components/topbar-login/topbar-login.component.d.ts +12 -0
  53. package/lib/myaccount.routes.d.ts +2 -0
  54. package/lib/{components → pages/accounts}/signin/signin.component.d.ts +1 -1
  55. package/package.json +1 -1
  56. package/themes/_default.scss +1 -1
  57. package/esm2022/lib/components/signin/signin.component.mjs +0 -148
  58. package/fesm2022/rolatech-angular-account-rolatech-angular-account-Dqz2XIdy.mjs.map +0 -1
  59. /package/lib/{components → pages/accounts}/signup/signup.component.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-account-security.routes-S3BzviKf.mjs","sources":["../../../../libs/angular-account/src/lib/pages/myaccount/security/security-index/security-index.component.ts","../../../../libs/angular-account/src/lib/pages/myaccount/security/security-index/security-index.component.html","../../../../libs/angular-account/src/lib/pages/myaccount/security/security-password/security-password.component.ts","../../../../libs/angular-account/src/lib/pages/myaccount/security/security-password/security-password.component.html","../../../../libs/angular-account/src/lib/pages/myaccount/security/security-verification/security-verification.component.ts","../../../../libs/angular-account/src/lib/pages/myaccount/security/security-verification/security-verification.component.html","../../../../libs/angular-account/src/lib/pages/myaccount/security/security.routes.ts"],"sourcesContent":["import { Component, OnInit, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthService, FaceidDetectDialogComponent } from '@rolatech/angular-auth';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, WechatConnectDialogComponent } from '@rolatech/angular-components';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule],\n selector: 'rolatech-account-security-index',\n templateUrl: './security-index.component.html',\n styleUrls: ['./security-index.component.scss'],\n})\nexport class SecurityIndexComponent implements OnInit {\n dialog = inject(MatDialog);\n authService = inject(AuthService);\n bind = false;\n verified = false;\n\n constructor() {}\n\n ngOnInit(): void {\n this.wechatStatus();\n }\n faceId() {\n const dialogRef = this.dialog.open(FaceidDetectDialogComponent, {\n data: {},\n });\n dialogRef.afterClosed().subscribe((result) => {\n this.verified = result;\n });\n }\n connectWeChat() {\n // const redirectUri = 'https://accounts.pinxiaoke.cn/login';\n const redirectUri = `${window.location.origin}/login`;\n\n const dialogRef = this.dialog.open(WechatConnectDialogComponent, {\n data: {\n appid: 'wx567acbea73439828',\n redirect_uri: redirectUri,\n state: 'add',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n this.wechatStatus();\n });\n }\n disconnectWeChat() {\n this.authService.wechatDisconnect().subscribe({\n next: (res) => {\n this.bind = false;\n },\n });\n }\n wechatStatus() {\n this.authService.wechatStatus({ id: 'me' }).subscribe({\n next: (res) => {\n this.bind = res.data?.openid !== undefined;\n },\n });\n }\n}\n","<div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <p class=\"text-3xl\">安全设置</p>\n <p class=\"text-md\">用户信息的安全设置</p>\n </div>\n <div class=\"border border-grap-400 rounded px-3 pt-3\">\n <div class=\"p-3 text-xl\">基本设置</div>\n <mat-nav-list>\n <mat-list-item (click)=\"faceId()\">\n <div class=\"flex items-center justify-between\">\n <span>实名认证</span>\n <!-- <mat-icon mat-list-icon>arrow_drop_down</mat-icon> -->\n @if (!verified) {\n <span class=\"mr-3\"> 未认证 </span>\n }\n @if (verified) {\n <a class=\"mr-3\"> 已认证 </a>\n }\n <!-- @if (bind) {\n <a class=\"mr-3\" (click)=\"disconnectWeChat()\"> 解绑 </a>\n } -->\n </div>\n </mat-list-item>\n <mat-divider></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <span>微信绑定</span>\n <!-- <mat-icon mat-list-icon>arrow_drop_down</mat-icon> -->\n @if (!bind) {\n <span class=\"mr-3\" (click)=\"connectWeChat()\"> 绑定 </span>\n }\n @if (bind) {\n <a class=\"mr-3\"> 已绑定 </a>\n }\n <!-- @if (bind) {\n <a class=\"mr-3\" (click)=\"disconnectWeChat()\"> 解绑 </a>\n } -->\n </div>\n </mat-list-item>\n <mat-divider></mat-divider>\n <mat-list-item routerLink=\"./password\">\n <div class=\"flex items-center justify-between\">\n <span>密码设置</span>\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</div>\n","import { Component, OnInit } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { AuthService } from '@rolatech/angular-auth';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { BackButtonDirective } from '@rolatech/angular-services';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, BackButtonDirective],\n selector: 'rolatech-account-security-password',\n templateUrl: './security-password.component.html',\n styleUrls: ['./security-password.component.scss'],\n})\nexport class SecurityPasswordComponent implements OnInit {\n passwordForm!: FormGroup;\n\n constructor(\n private formBuilder: FormBuilder,\n private authService: AuthService,\n private snackBar: MatSnackBar,\n ) {}\n\n ngOnInit(): void {\n this.passwordForm = this.formBuilder.group({\n oldPassword: ['', Validators.required],\n newPassword: ['', Validators.required],\n ne2Password: ['', Validators.required],\n });\n }\n save() {\n if (!this.passwordForm.valid) {\n return;\n }\n this.authService.changePassword(this.passwordForm.value).subscribe({\n next: (res: any) => {\n this.snackBar.open(res.message);\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n}\n","<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\">修改密码</span>\n </div>\n </div>\n <div class=\"px-4\">\n <mat-divider></mat-divider>\n </div>\n</div>\n<div class=\"max-w-[1120px] m-auto px-6\">\n <p class=\"text-md my-3\">修改用户密码</p>\n <div class=\"mt-3\">\n <form [formGroup]=\"passwordForm\">\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 原密码</mat-label>\n <input matInput type=\"password\" formControlName=\"oldPassword\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 新密码 </mat-label>\n <input matInput type=\"password\" formControlName=\"newPassword\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 新密码 </mat-label>\n <input matInput type=\"password\" formControlName=\"ne2Password\" required />\n </mat-form-field>\n </div>\n </form>\n <div class=\"flex justify-end items-center mt-3\">\n <button mat-button rolatechBackButton>取消</button>\n <button\n class=\"bg-orange-600 shadow shadow-gray-300 cursor-pointer w-[128px] p-2 text-white rounded text-center ml-3\"\n (click)=\"save()\"\n >\n 保存\n </button>\n </div>\n </div>\n</div>\n","import { Component, ElementRef, OnInit, Renderer2, ViewChild, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthService } from '@rolatech/angular-auth';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, LoadingSpinnerComponent } from '@rolatech/angular-components';\nimport * as QRCode from 'qrcode';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, LoadingSpinnerComponent],\n selector: 'rolatech-account-security-verification',\n templateUrl: './security-verification.component.html',\n styleUrls: ['./security-verification.component.scss'],\n})\nexport class SecurityVerificationComponent implements OnInit {\n dialog = inject(MatDialog);\n authService = inject(AuthService);\n verified = false;\n renderer = inject(Renderer2);\n @ViewChild('qrcode', { static: false }) qrcElement!: ElementRef;\n loading = false;\n BizToken = '';\n identification = {};\n ngOnInit(): void {\n this.check();\n }\n check() {\n this.authService.faceIdStatus().subscribe({\n next: (res) => {\n this.verified = res.data.verified;\n },\n });\n }\n verify() {\n this.loading = true;\n this.authService.requestFaceIdDetect().subscribe({\n next: ({ data }) => {\n this.genQRCode(data.url);\n // this.loop();\n },\n error: () => {\n this.loading = false;\n },\n });\n }\n loop() {\n const interval = setInterval(() => {\n this.authService.faceIdStatus().subscribe({\n next: (res) => {\n if (res) {\n clearInterval(interval);\n }\n },\n });\n this;\n }, 2000);\n }\n\n genQRCode(url: string) {\n const element: Element = this.renderer.createElement('canvas');\n this.toCanvas(element, url)\n .then(() => {\n this.renderElement(element);\n })\n .catch((e) => {\n this.removeElementChildren();\n });\n }\n\n private toCanvas(canvas: any, url: any): Promise<any> {\n return QRCode.toCanvas(canvas, url, {\n errorCorrectionLevel: 'M',\n width: 200,\n });\n }\n private renderElement(element: any): void {\n this.removeElementChildren();\n this.renderer.appendChild(this.qrcElement.nativeElement, element);\n }\n private removeElementChildren(): void {\n for (const node of this.qrcElement.nativeElement.childNodes) {\n this.renderer.removeChild(this.qrcElement.nativeElement, node);\n }\n }\n}\n","<div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px]\">\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <p class=\"text-3xl\">实名认证</p>\n <p class=\"text-md\">实名认证, 会让你的账户更加安全</p>\n </div>\n </div>\n @if (verified) {\n <div class=\"p-3\">\n <div class=\"text-md font-bold py-3\">您已经完成实名认证</div>\n <div class=\"flex flex-col\">\n <div><span class=\"text-gray-600\">姓名: </span> <span>22</span></div>\n <div><span class=\"text-gray-600\">身份证: </span><span>22</span></div>\n </div>\n </div>\n } @else {\n <div>未认证</div>\n <button mat-raised-button (click)=\"verify()\" color=\"primary\">请求认证</button>\n <div #qrcode>\n @if (loading) {\n <div>\n <rolatech-loading-spinner></rolatech-loading-spinner>\n </div>\n }\n </div>\n }\n</div>\n","import { Routes } from '@angular/router';\nimport { SecurityIndexComponent } from './security-index/security-index.component';\nimport { SecurityPasswordComponent } from './security-password/security-password.component';\nimport { SecurityFaceidComponent } from './security-faceid/security-faceid.component';\nimport { SecurityVerificationComponent } from './security-verification/security-verification.component';\n\nconst securityRoutes: Routes = [\n {\n path: '',\n component: SecurityIndexComponent,\n },\n {\n path: 'verification',\n component: SecurityVerificationComponent,\n },\n // {\n // path: 'faceid',\n // component: SecurityFaceidComponent,\n // },\n { path: 'password', component: SecurityPasswordComponent },\n];\n\nexport default securityRoutes;\n"],"names":["i1","i2","i3"],"mappings":"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"}
1
+ {"version":3,"file":"rolatech-angular-account-security.routes-L15H-k9Q.mjs","sources":["../../../../libs/angular-account/src/lib/pages/myaccount/security/security-index/security-index.component.ts","../../../../libs/angular-account/src/lib/pages/myaccount/security/security-index/security-index.component.html","../../../../libs/angular-account/src/lib/pages/myaccount/security/security-password/security-password.component.ts","../../../../libs/angular-account/src/lib/pages/myaccount/security/security-password/security-password.component.html","../../../../libs/angular-account/src/lib/pages/myaccount/security/security-verification/security-verification.component.ts","../../../../libs/angular-account/src/lib/pages/myaccount/security/security-verification/security-verification.component.html","../../../../libs/angular-account/src/lib/pages/myaccount/security/security.routes.ts"],"sourcesContent":["import { Component, OnInit, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthService, FaceidDetectDialogComponent } from '@rolatech/angular-auth';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, WechatConnectDialogComponent } from '@rolatech/angular-components';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule],\n selector: 'rolatech-account-security-index',\n templateUrl: './security-index.component.html',\n styleUrls: ['./security-index.component.scss'],\n})\nexport class SecurityIndexComponent implements OnInit {\n dialog = inject(MatDialog);\n authService = inject(AuthService);\n bind = false;\n verified = false;\n\n constructor() {}\n\n ngOnInit(): void {\n this.wechatStatus();\n }\n faceId() {\n const dialogRef = this.dialog.open(FaceidDetectDialogComponent, {\n data: {},\n });\n dialogRef.afterClosed().subscribe((result) => {\n this.verified = result;\n });\n }\n connectWeChat() {\n // const redirectUri = 'https://accounts.pinxiaoke.cn/login';\n const redirectUri = `${window.location.origin}/login`;\n\n const dialogRef = this.dialog.open(WechatConnectDialogComponent, {\n data: {\n appid: 'wx567acbea73439828',\n redirect_uri: redirectUri,\n state: 'add',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n this.wechatStatus();\n });\n }\n disconnectWeChat() {\n this.authService.wechatDisconnect().subscribe({\n next: (res) => {\n this.bind = false;\n },\n });\n }\n wechatStatus() {\n this.authService.wechatStatus({ id: 'me' }).subscribe({\n next: (res) => {\n this.bind = res.data?.openid !== undefined;\n },\n });\n }\n}\n","<div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <p class=\"text-3xl\">安全设置</p>\n <p class=\"text-md\">用户信息的安全设置</p>\n </div>\n <div class=\"border border-grap-400 rounded px-3 pt-3\">\n <div class=\"p-3 text-xl\">基本设置</div>\n <mat-nav-list>\n <mat-list-item (click)=\"faceId()\">\n <div class=\"flex items-center justify-between\">\n <span>实名认证</span>\n <!-- <mat-icon mat-list-icon>arrow_drop_down</mat-icon> -->\n @if (!verified) {\n <span class=\"mr-3\"> 未认证 </span>\n }\n @if (verified) {\n <a class=\"mr-3\"> 已认证 </a>\n }\n <!-- @if (bind) {\n <a class=\"mr-3\" (click)=\"disconnectWeChat()\"> 解绑 </a>\n } -->\n </div>\n </mat-list-item>\n <mat-divider></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <span>微信绑定</span>\n <!-- <mat-icon mat-list-icon>arrow_drop_down</mat-icon> -->\n @if (!bind) {\n <span class=\"mr-3\" (click)=\"connectWeChat()\"> 绑定 </span>\n }\n @if (bind) {\n <a class=\"mr-3\"> 已绑定 </a>\n }\n <!-- @if (bind) {\n <a class=\"mr-3\" (click)=\"disconnectWeChat()\"> 解绑 </a>\n } -->\n </div>\n </mat-list-item>\n <mat-divider></mat-divider>\n <mat-list-item routerLink=\"./password\">\n <div class=\"flex items-center justify-between\">\n <span>密码设置</span>\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</div>\n","import { Component, OnInit } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { AuthService } from '@rolatech/angular-auth';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { BackButtonDirective } from '@rolatech/angular-services';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, BackButtonDirective],\n selector: 'rolatech-account-security-password',\n templateUrl: './security-password.component.html',\n styleUrls: ['./security-password.component.scss'],\n})\nexport class SecurityPasswordComponent implements OnInit {\n passwordForm!: FormGroup;\n\n constructor(\n private formBuilder: FormBuilder,\n private authService: AuthService,\n private snackBar: MatSnackBar,\n ) {}\n\n ngOnInit(): void {\n this.passwordForm = this.formBuilder.group({\n oldPassword: ['', Validators.required],\n newPassword: ['', Validators.required],\n ne2Password: ['', Validators.required],\n });\n }\n save() {\n if (!this.passwordForm.valid) {\n return;\n }\n this.authService.changePassword(this.passwordForm.value).subscribe({\n next: (res: any) => {\n this.snackBar.open(res.message);\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n}\n","<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\">修改密码</span>\n </div>\n </div>\n <div class=\"px-4\">\n <mat-divider></mat-divider>\n </div>\n</div>\n<div class=\"max-w-[1120px] m-auto px-6\">\n <p class=\"text-md my-3\">修改用户密码</p>\n <div class=\"mt-3\">\n <form [formGroup]=\"passwordForm\">\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 原密码</mat-label>\n <input matInput type=\"password\" formControlName=\"oldPassword\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 新密码 </mat-label>\n <input matInput type=\"password\" formControlName=\"newPassword\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 新密码 </mat-label>\n <input matInput type=\"password\" formControlName=\"ne2Password\" required />\n </mat-form-field>\n </div>\n </form>\n <div class=\"flex justify-end items-center mt-3\">\n <button mat-button rolatechBackButton>取消</button>\n <button\n class=\"bg-orange-600 shadow shadow-gray-300 cursor-pointer w-[128px] p-2 text-white rounded text-center ml-3\"\n (click)=\"save()\"\n >\n 保存\n </button>\n </div>\n </div>\n</div>\n","import { Component, ElementRef, OnInit, Renderer2, ViewChild, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthService } from '@rolatech/angular-auth';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, LoadingSpinnerComponent } from '@rolatech/angular-components';\nimport * as QRCode from 'qrcode';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, LoadingSpinnerComponent],\n selector: 'rolatech-account-security-verification',\n templateUrl: './security-verification.component.html',\n styleUrls: ['./security-verification.component.scss'],\n})\nexport class SecurityVerificationComponent implements OnInit {\n dialog = inject(MatDialog);\n authService = inject(AuthService);\n verified = false;\n renderer = inject(Renderer2);\n @ViewChild('qrcode', { static: false }) qrcElement!: ElementRef;\n loading = false;\n BizToken = '';\n identification = {};\n ngOnInit(): void {\n this.check();\n }\n check() {\n this.authService.faceIdStatus().subscribe({\n next: (res) => {\n this.verified = res.data.verified;\n },\n });\n }\n verify() {\n this.loading = true;\n this.authService.requestFaceIdDetect().subscribe({\n next: ({ data }) => {\n this.genQRCode(data.url);\n // this.loop();\n },\n error: () => {\n this.loading = false;\n },\n });\n }\n loop() {\n const interval = setInterval(() => {\n this.authService.faceIdStatus().subscribe({\n next: (res) => {\n if (res) {\n clearInterval(interval);\n }\n },\n });\n this;\n }, 2000);\n }\n\n genQRCode(url: string) {\n const element: Element = this.renderer.createElement('canvas');\n this.toCanvas(element, url)\n .then(() => {\n this.renderElement(element);\n })\n .catch((e) => {\n this.removeElementChildren();\n });\n }\n\n private toCanvas(canvas: any, url: any): Promise<any> {\n return QRCode.toCanvas(canvas, url, {\n errorCorrectionLevel: 'M',\n width: 200,\n });\n }\n private renderElement(element: any): void {\n this.removeElementChildren();\n this.renderer.appendChild(this.qrcElement.nativeElement, element);\n }\n private removeElementChildren(): void {\n for (const node of this.qrcElement.nativeElement.childNodes) {\n this.renderer.removeChild(this.qrcElement.nativeElement, node);\n }\n }\n}\n","<div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px]\">\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <p class=\"text-3xl\">实名认证</p>\n <p class=\"text-md\">实名认证, 会让你的账户更加安全</p>\n </div>\n </div>\n @if (verified) {\n <div class=\"p-3\">\n <div class=\"text-md font-bold py-3\">您已经完成实名认证</div>\n <div class=\"flex flex-col\">\n <div><span class=\"text-gray-600\">姓名: </span> <span>22</span></div>\n <div><span class=\"text-gray-600\">身份证: </span><span>22</span></div>\n </div>\n </div>\n } @else {\n <div>未认证</div>\n <button mat-raised-button (click)=\"verify()\" color=\"primary\">请求认证</button>\n <div #qrcode>\n @if (loading) {\n <div>\n <rolatech-loading-spinner></rolatech-loading-spinner>\n </div>\n }\n </div>\n }\n</div>\n","import { Routes } from '@angular/router';\nimport { SecurityIndexComponent } from './security-index/security-index.component';\nimport { SecurityPasswordComponent } from './security-password/security-password.component';\nimport { SecurityFaceidComponent } from './security-faceid/security-faceid.component';\nimport { SecurityVerificationComponent } from './security-verification/security-verification.component';\n\nconst securityRoutes: Routes = [\n {\n path: '',\n component: SecurityIndexComponent,\n },\n {\n path: 'verification',\n component: SecurityVerificationComponent,\n },\n // {\n // path: 'faceid',\n // component: SecurityFaceidComponent,\n // },\n { path: 'password', component: SecurityPasswordComponent },\n];\n\nexport default securityRoutes;\n"],"names":["i1","i2","i3"],"mappings":"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"}
@@ -32,13 +32,13 @@ class UsernameComponent extends BaseComponent {
32
32
  },
33
33
  });
34
34
  }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UsernameComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
36
- 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 }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: UsernameComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", 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 }); }
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UsernameComponent, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: UsernameComponent, decorators: [{
39
39
  type: Component,
40
40
  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" }]
41
41
  }] });
42
42
 
43
43
  export { UsernameComponent };
44
- //# sourceMappingURL=rolatech-angular-account-username.component-C6pM8g84.mjs.map
44
+ //# sourceMappingURL=rolatech-angular-account-username.component-C_2XuLXa.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-account-username.component-C6pM8g84.mjs","sources":["../../../../libs/angular-account/src/lib/pages/myaccount/personal-info/username/username.component.ts","../../../../libs/angular-account/src/lib/pages/myaccount/personal-info/username/username.component.html"],"sourcesContent":["import { Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';\nimport { BackButtonDirective } from '@rolatech/angular-services';\nimport { Observable } from 'rxjs';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, BackButtonDirective],\n selector: 'rolatech-account-username',\n templateUrl: './username.component.html',\n styleUrls: ['./username.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class UsernameComponent extends BaseComponent implements OnInit {\n authUserService = inject(AuthUserService);\n user$!: Observable<any>;\n username = '';\n\n ngOnInit(): void {\n this.authUserService.me().subscribe({\n next: (res) => {\n this.username = res.username;\n },\n });\n }\n\n save() {\n this.authUserService.changeUsername(this.username).subscribe({\n next: (res) => {\n this.snackBarService.open(res.data);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n}\n","<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\">修改用户名</p>\n <p class=\"text-md\">用户名是您在本站的唯一标识</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>取消</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 保存\n </button>\n </div>\n </div>\n</div>\n"],"names":[],"mappings":";;;;;;;;;;;AAeM,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AARpD,IAAA,WAAA,GAAA;;AASE,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAE1C,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AAoBf,KAAA;IAlBC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;aAC9B;AACF,SAAA,CAAC,CAAC;KACJ;IAED,IAAI,GAAA;QACF,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AAC3D,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACrC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;gBACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1C;AACF,SAAA,CAAC,CAAC;KACJ;8GAtBU,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,4GCf9B,64BAuBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDdY,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,uBAAuB,o3BAAE,mBAAmB,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAMhE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,CAAC,EAClE,QAAA,EAAA,2BAA2B,EAGtB,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;"}
1
+ {"version":3,"file":"rolatech-angular-account-username.component-C_2XuLXa.mjs","sources":["../../../../libs/angular-account/src/lib/pages/myaccount/personal-info/username/username.component.ts","../../../../libs/angular-account/src/lib/pages/myaccount/personal-info/username/username.component.html"],"sourcesContent":["import { Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';\nimport { BackButtonDirective } from '@rolatech/angular-services';\nimport { Observable } from 'rxjs';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, BackButtonDirective],\n selector: 'rolatech-account-username',\n templateUrl: './username.component.html',\n styleUrls: ['./username.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class UsernameComponent extends BaseComponent implements OnInit {\n authUserService = inject(AuthUserService);\n user$!: Observable<any>;\n username = '';\n\n ngOnInit(): void {\n this.authUserService.me().subscribe({\n next: (res) => {\n this.username = res.username;\n },\n });\n }\n\n save() {\n this.authUserService.changeUsername(this.username).subscribe({\n next: (res) => {\n this.snackBarService.open(res.data);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n}\n","<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\">修改用户名</p>\n <p class=\"text-md\">用户名是您在本站的唯一标识</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>取消</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 保存\n </button>\n </div>\n </div>\n</div>\n"],"names":[],"mappings":";;;;;;;;;;;AAeM,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AARpD,IAAA,WAAA,GAAA;;AASE,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAE1C,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AAoBf,KAAA;IAlBC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;aAC9B;AACF,SAAA,CAAC,CAAC;KACJ;IAED,IAAI,GAAA;QACF,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AAC3D,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACrC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;gBACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1C;AACF,SAAA,CAAC,CAAC;KACJ;8GAtBU,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,4GCf9B,64BAuBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDdY,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,uBAAuB,o3BAAE,mBAAmB,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAMhE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,CAAC,EAClE,QAAA,EAAA,2BAA2B,EAGtB,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;"}
@@ -1,10 +1,10 @@
1
- export { a as accountRoutes, m as myaccountRoutes, p as provideAngularAuthRoutes } from './rolatech-angular-account-rolatech-angular-account-Dqz2XIdy.mjs';
2
- import '@rolatech/angular-auth';
1
+ export { T as TopbarLoginComponent, a as accountRoutes, m as myaccountRoutes, p as provideAngularAuthRoutes } from './rolatech-angular-account-rolatech-angular-account-BMQsN92b.mjs';
3
2
  import '@angular/core';
4
3
  import '@angular/common';
4
+ import '@rolatech/angular-common';
5
+ import '@rolatech/angular-auth';
5
6
  import '@angular/material/snack-bar';
6
7
  import '@angular/router';
7
- import '@rolatech/angular-common';
8
8
  import '@rolatech/angular-components';
9
9
  import '@angular/forms';
10
10
  import '@angular/platform-browser';
package/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
+ export * from './lib/components';
1
2
  export * from './lib/account.routes';
3
+ export * from './lib/myaccount.routes';
2
4
  export * from './provider';
@@ -1,3 +1,2 @@
1
1
  import { Routes } from '@angular/router';
2
2
  export declare const accountRoutes: Routes;
3
- export declare const myaccountRoutes: Routes;
@@ -0,0 +1 @@
1
+ export { TopbarLoginComponent } from './topbar-login/topbar-login.component';
@@ -0,0 +1,12 @@
1
+ import { OnInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TopbarLoginComponent implements OnInit {
4
+ environment: any;
5
+ platformId: Object;
6
+ signinUrl: string;
7
+ signupUrl: string;
8
+ logoutUrl: string;
9
+ ngOnInit(): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<TopbarLoginComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<TopbarLoginComponent, "rolatech-account-topbar-login", never, {}, {}, never, never, true, never>;
12
+ }
@@ -0,0 +1,2 @@
1
+ import { Routes } from '@angular/router';
2
+ export declare const myaccountRoutes: Routes;
@@ -4,7 +4,7 @@ import { MatTabChangeEvent } from '@angular/material/tabs';
4
4
  import { SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';
5
5
  import { BaseComponent } from '@rolatech/angular-components';
6
6
  import { AuthService, AuthUserService } from '@rolatech/angular-auth';
7
- import { WeChatLoginService } from '../../services/wechat-login.service';
7
+ import { WeChatLoginService } from '../../../services/wechat-login.service';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class SigninComponent extends BaseComponent implements OnInit {
10
10
  passrodForm: FormGroup;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolatech/angular-account",
3
- "version": "17.0.1",
3
+ "version": "17.1.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.1.0",
6
6
  "@angular/core": "^17.1.0"
@@ -1 +1 @@
1
- .pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.right-0{right:0}.top-0{top:0}.z-20{z-index:20}.z-30{z-index:30}.-m-1{margin:-.25rem}.m-3{margin:.75rem}.m-auto{margin:auto}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-24{margin-left:6rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-3{margin-right:.75rem}.mr-6{margin-right:1.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.box-border{box-sizing:border-box}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.hidden{display:none}.aspect-video{aspect-ratio:16/9}.h-11{height:2.75rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-32{height:8rem}.h-4{height:1rem}.h-9{height:2.25rem}.h-\[190px\]{height:190px}.h-\[1px\]{height:1px}.h-\[256px\]{height:256px}.h-auto{height:auto}.h-full{height:100%}.max-h-32{max-height:8rem}.min-h-\[320px\]{min-height:320px}.w-1\/2{width:50%}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-32{width:8rem}.w-4{width:1rem}.w-9{width:2.25rem}.w-\[128px\]{width:128px}.w-\[190px\]{width:190px}.w-\[256px\]{width:256px}.w-full{width:100%}.min-w-\[256px\]{min-width:256px}.min-w-\[320px\]{min-width:320px}.max-w-\[1120px\]{max-width:1120px}.max-w-\[500px\]{max-width:500px}.max-w-\[820px\]{max-width:820px}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-dashed{border-style:dashed}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.bg-fixed{background-attachment:fixed}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-6{padding-bottom:1.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pt-6{padding-top:1.5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-thin{font-weight:100}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.text-transparent{color:transparent}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-60{opacity:.6}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-gray-300{--tw-shadow-color:#d1d5db;--tw-shadow:var(--tw-shadow-colored)}.outline{outline-style:solid}.outline-4{outline-width:4px}.outline-transparent{outline-color:transparent}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:bg-black:hover{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.hover\:bg-orange-700:hover{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow:hover{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.hover\:shadow-lg:hover,.hover\:shadow:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.hover\:shadow-gray-400:hover{--tw-shadow-color:#9ca3af;--tw-shadow:var(--tw-shadow-colored)}.hover\:outline-gray-200:hover{outline-color:#e5e7eb}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}@media (min-width:640px){.sm\:w-1\/3{width:33.333333%}.sm\:w-\[450px\]{width:450px}.sm\:justify-center{justify-content:center}}@media (min-width:768px){.md\:w-1\/4{width:25%}.md\:justify-center{justify-content:center}.md\:shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (min-width:1024px){.lg\:w-1\/6{width:16.666667%}}
1
+ .pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.right-0{right:0}.top-0{top:0}.z-20{z-index:20}.z-30{z-index:30}.-m-1{margin:-.25rem}.m-3{margin:.75rem}.m-auto{margin:auto}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-24{margin-left:6rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-6{margin-right:1.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.hidden{display:none}.aspect-video{aspect-ratio:16/9}.h-11{height:2.75rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-32{height:8rem}.h-4{height:1rem}.h-9{height:2.25rem}.h-\[190px\]{height:190px}.h-\[1px\]{height:1px}.h-\[256px\]{height:256px}.h-auto{height:auto}.h-full{height:100%}.max-h-32{max-height:8rem}.min-h-\[320px\]{min-height:320px}.w-1\/2{width:50%}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-32{width:8rem}.w-4{width:1rem}.w-9{width:2.25rem}.w-\[128px\]{width:128px}.w-\[190px\]{width:190px}.w-\[256px\]{width:256px}.w-full{width:100%}.min-w-\[256px\]{min-width:256px}.min-w-\[320px\]{min-width:320px}.max-w-\[1120px\]{max-width:1120px}.max-w-\[500px\]{max-width:500px}.max-w-\[820px\]{max-width:820px}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-dashed{border-style:dashed}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.bg-fixed{background-attachment:fixed}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-6{padding-bottom:1.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pt-6{padding-top:1.5rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-thin{font-weight:100}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.text-transparent{color:transparent}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-60{opacity:.6}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-gray-300{--tw-shadow-color:#d1d5db;--tw-shadow:var(--tw-shadow-colored)}.outline{outline-style:solid}.outline-4{outline-width:4px}.outline-transparent{outline-color:transparent}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:bg-black:hover{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.hover\:bg-orange-700:hover{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow:hover{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.hover\:shadow-lg:hover,.hover\:shadow:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.hover\:shadow-gray-400:hover{--tw-shadow-color:#9ca3af;--tw-shadow:var(--tw-shadow-colored)}.hover\:outline-gray-200:hover{outline-color:#e5e7eb}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}@media (min-width:640px){.sm\:w-1\/3{width:33.333333%}.sm\:w-\[450px\]{width:450px}.sm\:justify-center{justify-content:center}.sm\:border{border-width:1px}}@media (min-width:768px){.md\:w-1\/4{width:25%}.md\:justify-center{justify-content:center}.md\:shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (min-width:1024px){.lg\:w-1\/6{width:16.666667%}}
@@ -1,148 +0,0 @@
1
- import { isPlatformBrowser } from '@angular/common';
2
- import { Component, HostListener, inject, PLATFORM_ID } from '@angular/core';
3
- import { FormBuilder, Validators } from '@angular/forms';
4
- import { DomSanitizer } from '@angular/platform-browser';
5
- import { AngularCommonModule, APP_CONFIG } from '@rolatech/angular-common';
6
- import { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';
7
- import { AuthService, AuthUserService } from '@rolatech/angular-auth';
8
- import { WeChatLoginService } from '../../services/wechat-login.service';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/common";
11
- import * as i2 from "@angular/forms";
12
- import * as i3 from "@angular/material/form-field";
13
- import * as i4 from "@angular/material/input";
14
- import * as i5 from "@angular/material/tabs";
15
- export class SigninComponent extends BaseComponent {
16
- constructor() {
17
- super(...arguments);
18
- this.continue = '';
19
- this.environment = inject(APP_CONFIG);
20
- this.platformId = inject(PLATFORM_ID);
21
- this.formBuilder = inject(FormBuilder);
22
- this.authService = inject(AuthService);
23
- this.authUserService = inject(AuthUserService);
24
- this.wechtLoginService = inject(WeChatLoginService);
25
- this.tabIndex = 0;
26
- this.countDown = false;
27
- this.countDownTime = 60;
28
- this.showButtonText = '发送验证码';
29
- this.appid = 'wx567acbea73439828';
30
- this.state = 'add';
31
- this.sanitizer = inject(DomSanitizer);
32
- this.baseUrl = 'https://open.weixin.qq.com/connect/qrconnect';
33
- }
34
- onLogin(event) {
35
- if (event.origin !== window.location.origin || /react-devtools/gi.test(event.data.source)) {
36
- return;
37
- }
38
- if (event.origin === this.environment.accountsUrl && event.data.code === 200) {
39
- window.location.href = this.continue === this.environment.accountsUrl ? this.environment.myaccountUrl : this.continue;
40
- }
41
- }
42
- ngOnInit() {
43
- this.titleService.setTitle('账号登录 - 拼小课');
44
- this.passrodForm = this.formBuilder.group({
45
- account: [null, Validators.required],
46
- password: [null, Validators.required],
47
- });
48
- this.codeForm = this.formBuilder.group({
49
- phone: [null, [Validators.required, Validators.pattern('1(3|4|5|6|7|8|9)\\d{9}')]],
50
- code: [null, Validators.required],
51
- });
52
- this.continue = this.route.snapshot.queryParams['continue'] || '/';
53
- }
54
- get form() {
55
- return this.tabIndex === 0 ? this.passrodForm.controls : this.codeForm.controls;
56
- }
57
- sendSMSCode() {
58
- const phoneControl = this.codeForm.get('phone');
59
- if (!phoneControl?.valid) {
60
- return;
61
- }
62
- const phone = phoneControl.value;
63
- this.countDown = true;
64
- const start = setInterval(() => {
65
- if (this.countDownTime >= 0) {
66
- this.showButtonText = `${this.countDownTime--}秒重发`;
67
- }
68
- else {
69
- clearInterval(start);
70
- this.showButtonText = '重新发送';
71
- this.countDown = false;
72
- this.countDownTime = 60;
73
- }
74
- }, 1000);
75
- this.authUserService.sendSMSCode('+86', phone).subscribe({
76
- next: (res) => {
77
- this.snackBarService.open('发送成功');
78
- },
79
- error: (error) => {
80
- this.snackBarService.open(error.message);
81
- },
82
- });
83
- }
84
- login() {
85
- let data = {};
86
- if (this.tabIndex === 0) {
87
- if (!this.passrodForm.valid) {
88
- return;
89
- }
90
- data = {
91
- account: this.form['account'].value,
92
- password: this.form['password'].value,
93
- };
94
- }
95
- if (this.tabIndex === 1) {
96
- if (!this.codeForm.valid) {
97
- return;
98
- }
99
- data = {
100
- phone: this.form['phone'].value,
101
- code: this.form['code'].value,
102
- };
103
- }
104
- this.authService.login(data).subscribe({
105
- next: () => {
106
- if (isPlatformBrowser(this.platformId)) {
107
- window.location.href = this.continue === this.environment.accountsUrl ? this.environment.myaccountUrl : this.continue;
108
- }
109
- },
110
- error: (error) => {
111
- this.snackBarService.open(error.message);
112
- },
113
- });
114
- }
115
- onSelectedTabChange(e) {
116
- const { index } = e;
117
- this.tabIndex = index;
118
- if (index === 0) {
119
- this.codeForm.reset();
120
- }
121
- if (index === 1) {
122
- this.passrodForm.reset();
123
- }
124
- if (index === 2) {
125
- this.codeForm.reset();
126
- this.passrodForm.reset();
127
- this.wechat();
128
- }
129
- }
130
- wechat() {
131
- const redirectUri = 'https://accounts.pinxiaoke.cn/login?continue';
132
- // const redirectUri = `${window.location.origin}/login?continue`;
133
- const href = 'https://cloudcache.tencent-cloud.com/open_proj/proj_qcloud_v2/gateway/login-regist/css/link-wx-login.css';
134
- const encodedURI = encodeURI(redirectUri);
135
- const src = `${this.baseUrl}?appid=${this.appid}&response_type=code&self_redirect=true&scope=snsapi_login&href=${href}&redirect_uri=${encodedURI}&state=${this.state}#wechat_redirect`;
136
- this.urlSafe = this.sanitizer.bypassSecurityTrustResourceUrl(src);
137
- }
138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SigninComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
139
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: SigninComponent, isStandalone: true, selector: "rolatech-account-auth-signin", host: { listeners: { "window:message": "onLogin($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"h-full flex flex-col md:justify-center items-center\">\n <div class=\"md:shadow-md p-8 rounded-xl sm:w-[450px]\">\n <!-- header -->\n <div class=\"flex sm:justify-center justify-start items-center mb-6\">\n <div class=\"text-2xl font-medium px-3\">\u767B\u5F55</div>\n </div>\n <!-- content -->\n <mat-tab-group mat-stretch-tabs=\"false\" mat-align-tabs=\"start\" (selectedTabChange)=\"onSelectedTabChange($event)\">\n <mat-tab label=\"\u8D26\u53F7\u5BC6\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"passrodForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7528\u6237\u540D/\u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>\u7528\u6237\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5BC6\u7801 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u77ED\u4FE1\u9A8C\u8BC1\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"codeForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> \u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-start gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" type=\"text\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> \u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button\n (click)=\"sendSMSCode()\"\n [disabled]=\"countDown\"\n [ngClass]=\"countDown ? 'bg-orange-300' : 'bg-orange-600 shadow shadow-gray-300 cursor-pointer'\"\n class=\"w-[128px] p-3 mt-2 text-white rounded text-center\"\n >\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u5FAE\u4FE1\u626B\u7801\">\n <div class=\"py-6\">\n <div class=\"w-[190px] h-[190px] mx-auto\">\n @if (tabIndex === 2) {\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <!-- <img [src]=\"urlSafe\" class=\"w-full h-full inline\" /> -->\n <div></div>\n }\n </div>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <!-- actions -->\n <div class=\"flex justify-between items-center py-2 pl-2\">\n <a class=\"underline underline-offset-4\" href=\"signup\">\u521B\u5EFA\u8D26\u53F7</a>\n <div\n (click)=\"login()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u767B\u5F55</span>\n </div>\n </div>\n\n <!-- 3-part -->\n <!-- <div class=\"flex flex-col justify-center items-center mt-6\">\n <div class=\"flex items-center\">\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n <span class=\"px-3\">\u7B2C\u4E09\u65B9\u767B\u5F55</span>\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n </div>\n <div class=\"mt-3 flex items-center hover:shadow hover:shadow-gray-400 cursor-pointer p-3\">\n <img class=\"w-4 h-4\" src=\"assets/images/icon64_appwx_logo.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1</span>\n </div>\n </div> -->\n </div>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }] }); }
140
- }
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SigninComponent, decorators: [{
142
- type: Component,
143
- args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-account-auth-signin', template: "<div class=\"h-full flex flex-col md:justify-center items-center\">\n <div class=\"md:shadow-md p-8 rounded-xl sm:w-[450px]\">\n <!-- header -->\n <div class=\"flex sm:justify-center justify-start items-center mb-6\">\n <div class=\"text-2xl font-medium px-3\">\u767B\u5F55</div>\n </div>\n <!-- content -->\n <mat-tab-group mat-stretch-tabs=\"false\" mat-align-tabs=\"start\" (selectedTabChange)=\"onSelectedTabChange($event)\">\n <mat-tab label=\"\u8D26\u53F7\u5BC6\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"passrodForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7528\u6237\u540D/\u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>\u7528\u6237\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5BC6\u7801 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u77ED\u4FE1\u9A8C\u8BC1\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"codeForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> \u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-start gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" type=\"text\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> \u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button\n (click)=\"sendSMSCode()\"\n [disabled]=\"countDown\"\n [ngClass]=\"countDown ? 'bg-orange-300' : 'bg-orange-600 shadow shadow-gray-300 cursor-pointer'\"\n class=\"w-[128px] p-3 mt-2 text-white rounded text-center\"\n >\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u5FAE\u4FE1\u626B\u7801\">\n <div class=\"py-6\">\n <div class=\"w-[190px] h-[190px] mx-auto\">\n @if (tabIndex === 2) {\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <!-- <img [src]=\"urlSafe\" class=\"w-full h-full inline\" /> -->\n <div></div>\n }\n </div>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <!-- actions -->\n <div class=\"flex justify-between items-center py-2 pl-2\">\n <a class=\"underline underline-offset-4\" href=\"signup\">\u521B\u5EFA\u8D26\u53F7</a>\n <div\n (click)=\"login()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u767B\u5F55</span>\n </div>\n </div>\n\n <!-- 3-part -->\n <!-- <div class=\"flex flex-col justify-center items-center mt-6\">\n <div class=\"flex items-center\">\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n <span class=\"px-3\">\u7B2C\u4E09\u65B9\u767B\u5F55</span>\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n </div>\n <div class=\"mt-3 flex items-center hover:shadow hover:shadow-gray-400 cursor-pointer p-3\">\n <img class=\"w-4 h-4\" src=\"assets/images/icon64_appwx_logo.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1</span>\n </div>\n </div> -->\n </div>\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
144
- }], propDecorators: { onLogin: [{
145
- type: HostListener,
146
- args: ['window:message', ['$event']]
147
- }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmluLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9zaWduaW4vc2lnbmluLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9zaWduaW4vc2lnbmluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQW1CLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7OztBQVN6RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxhQUFhO0lBUGxEOztRQVVFLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLGdCQUFX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QUFDLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTTtRQUNKLE1BQU0sV0FBVyxHQUFHLDhDQUE4QyxDQUFDO1FBQ25FLGtFQUFrRTtRQUNsRSxNQUFNLElBQUksR0FBRywwR0FBMEcsQ0FBQztRQUN4SCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxVQUFVLElBQUksQ0FBQyxLQUFLLGtFQUFrRSxJQUFJLGlCQUFpQixVQUFVLFVBQVUsSUFBSSxDQUFDLEtBQUssa0JBQWtCLENBQUM7UUFDdkwsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7OEdBL0hVLGVBQWU7a0dBQWYsZUFBZSw2S0NqQjVCLG9zS0FtSEEscUZEdkdZLG1CQUFtQix1d0NBQUUsdUJBQXVCOzsyRkFLM0MsZUFBZTtrQkFQM0IsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsQ0FBQyxZQUM3Qyw4QkFBOEI7OEJBMEJ4QyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBPbkluaXQsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0VGFiQ2hhbmdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCwgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlLCBBUFBfQ09ORklHIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgQXV0aFVzZXJTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBXZUNoYXRMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93ZWNoYXQtbG9naW4uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQW5ndWxhckNvbW1vbk1vZHVsZSwgQW5ndWxhckNvbXBvbmVudHNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtYXV0aC1zaWduaW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbmluLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2lnbmluLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNpZ25pbkNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwYXNzcm9kRm9ybSE6IEZvcm1Hcm91cDtcbiAgY29kZUZvcm0hOiBGb3JtR3JvdXA7XG4gIGNvbnRpbnVlID0gJyc7XG4gIGVudmlyb25tZW50ID0gaW5qZWN0KEFQUF9DT05GSUcpO1xuICBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgZm9ybUJ1aWxkZXIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuICBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGF1dGhVc2VyU2VydmljZSA9IGluamVjdChBdXRoVXNlclNlcnZpY2UpO1xuICB3ZWNodExvZ2luU2VydmljZSA9IGluamVjdChXZUNoYXRMb2dpblNlcnZpY2UpO1xuXG4gIHRhYkluZGV4ID0gMDtcbiAgY291bnREb3duID0gZmFsc2U7XG4gIGNvdW50RG93blRpbWUgPSA2MDtcbiAgc2hvd0J1dHRvblRleHQgPSAn5Y+R6YCB6aqM6K+B56CBJztcbiAgYXBwaWQgPSAnd3g1NjdhY2JlYTczNDM5ODI4JztcbiAgc3RhdGUgPSAnYWRkJztcbiAgdXJsU2FmZSE6IFNhZmVSZXNvdXJjZVVybDtcbiAgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gIGJhc2VVcmwgPSAnaHR0cHM6Ly9vcGVuLndlaXhpbi5xcS5jb20vY29ubmVjdC9xcmNvbm5lY3QnO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcbiAgb25Mb2dpbihldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50Lm9yaWdpbiAhPT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiB8fCAvcmVhY3QtZGV2dG9vbHMvZ2kudGVzdChldmVudC5kYXRhLnNvdXJjZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gdGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybCAmJiBldmVudC5kYXRhLmNvZGUgPT09IDIwMCkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmNvbnRpbnVlID09PSB0aGlzLmVudmlyb25tZW50LmFjY291bnRzVXJsID8gdGhpcy5lbnZpcm9ubWVudC5teWFjY291bnRVcmwgOiB0aGlzLmNvbnRpbnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKCfotKblj7fnmbvlvZUgLSDmi7zlsI/or74nKTtcbiAgICB0aGlzLnBhc3Nyb2RGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBhY2NvdW50OiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBwYXNzd29yZDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgIH0pO1xuICAgIHRoaXMuY29kZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHBob25lOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybignMSgzfDR8NXw2fDd8OHw5KVxcXFxkezl9JyldXSxcbiAgICAgIGNvZGU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB9KTtcbiAgICB0aGlzLmNvbnRpbnVlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1snY29udGludWUnXSB8fCAnLyc7XG4gIH1cbiAgZ2V0IGZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGFiSW5kZXggPT09IDAgPyB0aGlzLnBhc3Nyb2RGb3JtLmNvbnRyb2xzIDogdGhpcy5jb2RlRm9ybS5jb250cm9scztcbiAgfVxuICBzZW5kU01TQ29kZSgpIHtcbiAgICBjb25zdCBwaG9uZUNvbnRyb2wgPSB0aGlzLmNvZGVGb3JtLmdldCgncGhvbmUnKTtcbiAgICBpZiAoIXBob25lQ29udHJvbD8udmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGhvbmUgPSBwaG9uZUNvbnRyb2wudmFsdWU7XG4gICAgdGhpcy5jb3VudERvd24gPSB0cnVlO1xuICAgIGNvbnN0IHN0YXJ0ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY291bnREb3duVGltZSA+PSAwKSB7XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvblRleHQgPSBgJHt0aGlzLmNvdW50RG93blRpbWUtLX3np5Lph43lj5FgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChzdGFydCk7XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvblRleHQgPSAn6YeN5paw5Y+R6YCBJztcbiAgICAgICAgdGhpcy5jb3VudERvd24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb3VudERvd25UaW1lID0gNjA7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG5cbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5zZW5kU01TQ29kZSgnKzg2JywgcGhvbmUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJ+WPkemAgeaIkOWKnycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgbG9naW4oKSB7XG4gICAgbGV0IGRhdGEgPSB7fTtcbiAgICBpZiAodGhpcy50YWJJbmRleCA9PT0gMCkge1xuICAgICAgaWYgKCF0aGlzLnBhc3Nyb2RGb3JtLnZhbGlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRhdGEgPSB7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuZm9ybVsnYWNjb3VudCddLnZhbHVlLFxuICAgICAgICBwYXNzd29yZDogdGhpcy5mb3JtWydwYXNzd29yZCddLnZhbHVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMudGFiSW5kZXggPT09IDEpIHtcbiAgICAgIGlmICghdGhpcy5jb2RlRm9ybS52YWxpZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkYXRhID0ge1xuICAgICAgICBwaG9uZTogdGhpcy5mb3JtWydwaG9uZSddLnZhbHVlLFxuICAgICAgICBjb2RlOiB0aGlzLmZvcm1bJ2NvZGUnXS52YWx1ZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dpbihkYXRhKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5jb250aW51ZSA9PT0gdGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybCA/IHRoaXMuZW52aXJvbm1lbnQubXlhY2NvdW50VXJsIDogdGhpcy5jb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgb25TZWxlY3RlZFRhYkNoYW5nZShlOiBNYXRUYWJDaGFuZ2VFdmVudCkge1xuICAgIGNvbnN0IHsgaW5kZXggfSA9IGU7XG4gICAgdGhpcy50YWJJbmRleCA9IGluZGV4O1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgdGhpcy5jb2RlRm9ybS5yZXNldCgpO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPT09IDEpIHtcbiAgICAgIHRoaXMucGFzc3JvZEZvcm0ucmVzZXQoKTtcbiAgICB9XG4gICAgaWYgKGluZGV4ID09PSAyKSB7XG4gICAgICB0aGlzLmNvZGVGb3JtLnJlc2V0KCk7XG4gICAgICB0aGlzLnBhc3Nyb2RGb3JtLnJlc2V0KCk7XG4gICAgICB0aGlzLndlY2hhdCgpO1xuICAgIH1cbiAgfVxuICB3ZWNoYXQoKSB7XG4gICAgY29uc3QgcmVkaXJlY3RVcmkgPSAnaHR0cHM6Ly9hY2NvdW50cy5waW54aWFva2UuY24vbG9naW4/Y29udGludWUnO1xuICAgIC8vIGNvbnN0IHJlZGlyZWN0VXJpID0gYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vbG9naW4/Y29udGludWVgO1xuICAgIGNvbnN0IGhyZWYgPSAnaHR0cHM6Ly9jbG91ZGNhY2hlLnRlbmNlbnQtY2xvdWQuY29tL29wZW5fcHJvai9wcm9qX3FjbG91ZF92Mi9nYXRld2F5L2xvZ2luLXJlZ2lzdC9jc3MvbGluay13eC1sb2dpbi5jc3MnO1xuICAgIGNvbnN0IGVuY29kZWRVUkkgPSBlbmNvZGVVUkkocmVkaXJlY3RVcmkpO1xuICAgIGNvbnN0IHNyYyA9IGAke3RoaXMuYmFzZVVybH0/YXBwaWQ9JHt0aGlzLmFwcGlkfSZyZXNwb25zZV90eXBlPWNvZGUmc2VsZl9yZWRpcmVjdD10cnVlJnNjb3BlPXNuc2FwaV9sb2dpbiZocmVmPSR7aHJlZn0mcmVkaXJlY3RfdXJpPSR7ZW5jb2RlZFVSSX0mc3RhdGU9JHt0aGlzLnN0YXRlfSN3ZWNoYXRfcmVkaXJlY3RgO1xuICAgIHRoaXMudXJsU2FmZSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChzcmMpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaC1mdWxsIGZsZXggZmxleC1jb2wgbWQ6anVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJtZDpzaGFkb3ctbWQgcC04IHJvdW5kZWQteGwgc206dy1bNDUwcHhdXCI+XG4gICAgPCEtLSBoZWFkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggc206anVzdGlmeS1jZW50ZXIganVzdGlmeS1zdGFydCBpdGVtcy1jZW50ZXIgbWItNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtMnhsIGZvbnQtbWVkaXVtIHB4LTNcIj7nmbvlvZU8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIGNvbnRlbnQgLS0+XG4gICAgPG1hdC10YWItZ3JvdXAgbWF0LXN0cmV0Y2gtdGFicz1cImZhbHNlXCIgbWF0LWFsaWduLXRhYnM9XCJzdGFydFwiIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblNlbGVjdGVkVGFiQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDxtYXQtdGFiIGxhYmVsPVwi6LSm5Y+35a+G56CBXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwdC02XCI+XG4gICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJwYXNzcm9kRm9ybVwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOeUqOaIt+WQjS/miYvmnLrlj7cgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGUgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudFwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICAgIEBpZiAocGFzc3JvZEZvcm0uY29udHJvbHNbJ2FjY291bnQnXS50b3VjaGVkICYmIHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydhY2NvdW50J10uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICBAaWYgKHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydhY2NvdW50J10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+55So5oi35ZCN5b+F5aGrPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOWvhueggSA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiIC8+XG4gICAgICAgICAgICAgIEBpZiAocGFzc3JvZEZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10udG91Y2hlZCAmJiBwYXNzcm9kRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocGFzc3JvZEZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+6K+36L6T5YWl5a+G56CBPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cIuefreS/oemqjOivgeeggVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHQtNlwiPlxuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiY29kZUZvcm1cIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDmiYvmnLrlj7cgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGUgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIiByZXF1aXJlZCAvPlxuICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydwaG9uZSddLnRvdWNoZWQgJiYgY29kZUZvcm0uY29udHJvbHNbJ3Bob25lJ10uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydwaG9uZSddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPiDmiYvmnLrlj7flv4Xloas8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydwaG9uZSddLmVycm9ycz8uWydwYXR0ZXJuJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IOaJi+acuuWPt+agvOW8j+mUmeivryA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g6aqM6K+B56CBIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjb2RlXCIgdHlwZT1cInRleHRcIiByZXF1aXJlZCAvPlxuICAgICAgICAgICAgICAgIEBpZiAoY29kZUZvcm0uY29udHJvbHNbJ2NvZGUnXS50b3VjaGVkICYmIGNvZGVGb3JtLmNvbnRyb2xzWydjb2RlJ10uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb2RlRm9ybS5jb250cm9sc1snY29kZSddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IOivt+i+k+WFpemqjOivgeeggSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW5kU01TQ29kZSgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY291bnREb3duXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb3VudERvd24gPyAnYmctb3JhbmdlLTMwMCcgOiAnYmctb3JhbmdlLTYwMCBzaGFkb3cgc2hhZG93LWdyYXktMzAwIGN1cnNvci1wb2ludGVyJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsxMjhweF0gcC0zIG10LTIgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNob3dCdXR0b25UZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cIuW+ruS/oeaJq+eggVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHktNlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVsxOTBweF0gaC1bMTkwcHhdIG14LWF1dG9cIj5cbiAgICAgICAgICAgIEBpZiAodGFiSW5kZXggPT09IDIpIHtcbiAgICAgICAgICAgICAgPGlmcmFtZSBbc3JjXT1cInVybFNhZmVcIiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgaW5saW5lXCIgc2Nyb2xsaW5nPVwibm9cIiBmcmFtZUJvcmRlcj1cIm5vXCIgI2lmcmFtZT48L2lmcmFtZT5cbiAgICAgICAgICAgICAgPCEtLSA8aW1nIFtzcmNdPVwidXJsU2FmZVwiIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBpbmxpbmVcIiAvPiAtLT5cbiAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuXG4gICAgPCEtLSBhY3Rpb25zIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcHktMiBwbC0yXCI+XG4gICAgICA8YSBjbGFzcz1cInVuZGVybGluZSB1bmRlcmxpbmUtb2Zmc2V0LTRcIiBocmVmPVwic2lnbnVwXCI+5Yib5bu66LSm5Y+3PC9hPlxuICAgICAgPGRpdlxuICAgICAgICAoY2xpY2spPVwibG9naW4oKVwiXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYmctb3JhbmdlLTYwMCBob3ZlcjpiZy1vcmFuZ2UtNzAwIHctWzEyOHB4XSBwLTMgc2hhZG93LWdyYXktMzAwIHNoYWRvdyBob3ZlcjpzaGFkb3ctbGcgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtY2VudGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+55m75b2VPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIDMtcGFydCAtLT5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBtdC02XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInctMTYgaC1bMXB4XSBiZy1ncmF5LTMwMFwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicHgtM1wiPuesrOS4ieaWueeZu+W9lTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidy0xNiBoLVsxcHhdIGJnLWdyYXktMzAwXCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtdC0zIGZsZXggaXRlbXMtY2VudGVyIGhvdmVyOnNoYWRvdyBob3ZlcjpzaGFkb3ctZ3JheS00MDAgY3Vyc29yLXBvaW50ZXIgcC0zXCI+XG4gICAgICA8aW1nIGNsYXNzPVwidy00IGgtNFwiIHNyYz1cImFzc2V0cy9pbWFnZXMvaWNvbjY0X2FwcHd4X2xvZ28ucG5nXCIgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWwtMVwiPuW+ruS/oTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+IC0tPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19