@rolatech/angular-user 20.2.6-beta.1 → 20.2.7-beta.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-user.mjs","sources":["../../../../packages/angular-user/src/lib/interfaces/agent-application.ts","../../../../packages/angular-user/src/lib/pages/agent/agent-application-detail/agent-application-detail.component.ts","../../../../packages/angular-user/src/lib/pages/agent/agent-application-detail/agent-application-detail.component.html","../../../../packages/angular-user/src/lib/pages/agent/agent-application/agent-application.component.ts","../../../../packages/angular-user/src/lib/pages/agent/agent-application/agent-application.component.html","../../../../packages/angular-user/src/lib/user.pipe.ts","../../../../packages/angular-user/src/lib/user-roles.pipe.ts","../../../../packages/angular-user/src/lib/pages/user-index/user-index.component.ts","../../../../packages/angular-user/src/lib/pages/user-index/user-index.component.html","../../../../packages/angular-user/src/lib/pages/agent-manage/agent-manage-application-detail/agent-manage-application-detail.component.ts","../../../../packages/angular-user/src/lib/pages/agent-manage/agent-manage-application-detail/agent-manage-application-detail.component.html","../../../../packages/angular-user/src/lib/components/agent-application-item/agent-application-item.component.ts","../../../../packages/angular-user/src/lib/components/agent-application-item/agent-application-item.component.html","../../../../packages/angular-user/src/lib/pages/agent-manage/agent-manage-application-index/agent-manage-application-index.component.ts","../../../../packages/angular-user/src/lib/pages/agent-manage/agent-manage-application-index/agent-manage-application-index.component.html","../../../../packages/angular-user/src/lib/pages/agent-manage/agent-manage-application.routes.ts","../../../../packages/angular-user/src/lib/pages/agent/agent.routes.ts","../../../../packages/angular-user/src/lib/user-data.service.ts","../../../../packages/angular-user/src/lib/components/user-layout/user-layout.component.ts","../../../../packages/angular-user/src/lib/components/user-layout/user-layout.component.html","../../../../packages/angular-user/src/lib/pages/user-info/user-info.component.ts","../../../../packages/angular-user/src/lib/pages/user-info/user-info.component.html","../../../../packages/angular-user/src/lib/pages/user-community/user-community.component.ts","../../../../packages/angular-user/src/lib/pages/user-community/user-community.component.html","../../../../packages/angular-user/src/lib/pages/user-store/user-store.component.ts","../../../../packages/angular-user/src/lib/pages/user-store/user-store.component.html","../../../../packages/angular-user/src/lib/components/user-item/user-item.component.ts","../../../../packages/angular-user/src/lib/components/user-item/user-item.component.html","../../../../packages/angular-user/src/lib/pages/user-follow-info/user-follow-info.component.ts","../../../../packages/angular-user/src/lib/pages/user-follow-info/user-follow-info.component.html","../../../../packages/angular-user/src/lib/pages/user.routes.ts","../../../../packages/angular-user/src/lib/pages/user-detail/user-detail.component.ts","../../../../packages/angular-user/src/lib/pages/user-detail/user-detail.component.html","../../../../packages/angular-user/src/lib/pages/user-manage/user-manage.routes.ts","../../../../packages/angular-user/src/rolatech-angular-user.ts"],"sourcesContent":["import { User } from '@rolatech/angular-common';\n\nexport interface AgentApplicationRequest {\n firstName: string;\n lastName: string;\n businessName: string;\n website: string;\n email: string;\n phone: string;\n experienceYears: number;\n}\nexport interface AgentApplication {\n id: string;\n firstName: string;\n lastName: string;\n businessName: string;\n website: string;\n email: string;\n phone: string;\n experienceYears: number;\n status: AgentApplicationStatus;\n documents: string[];\n createdAt: string;\n userId: string;\n user: User;\n}\nexport enum AgentApplicationStatus {\n PENDING = 'Pending',\n APPROVED = 'Approved',\n REJECTED = 'Rejected',\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n BaseComponent,\n ContainerComponent,\n EmptyComponent,\n RichLabelComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { AuthAgentService } from '@rolatech/angular-auth';\nimport { AgentApplicationStatus } from '../../../interfaces/agent-application';\n\n@Component({\n selector: 'rolatech-agent-application-detail',\n imports: [CommonModule, ContainerComponent, ToolbarComponent, RichLabelComponent, EmptyComponent],\n templateUrl: './agent-application-detail.component.html',\n styleUrl: './agent-application-detail.component.scss',\n})\nexport class AgentApplicationDetailComponent extends BaseComponent implements OnInit {\n authAgentService = inject(AuthAgentService);\n application: any = {\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n businessName: '',\n website: '',\n };\n applicationStatus = AgentApplicationStatus;\n ngOnInit(): void {\n this.getApplication();\n }\n getApplication() {\n this.authAgentService.myApplication().subscribe({\n next: (res) => {\n this.application = res.data;\n },\n });\n }\n}\n","<rolatech-container>\n <rolatech-toolbar title=\"My application\" large>\n <div class=\"text-lg font-bold\">\n {{ applicationStatus[application.status] }}\n </div>\n </rolatech-toolbar>\n\n <div>\n <hr class=\"my-3\" />\n <div>\n <div class=\"text-lg font-bold py-2\" i18n>Application details</div>\n <div class=\"flex overflow-x-scroll scrollbar-hide\">\n <div class=\"flex flex-col w-full\">\n <rolatech-rich-label label=\"FirstName\" [title]=\"application.firstName\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Email\" [title]=\"application.email\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Phone\" [title]=\"application.phone\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Business Name\" [title]=\"application.businessName\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Experience Years\" [title]=\"application.experienceYears\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Created At\" [title]=\"application.createdAt\"></rolatech-rich-label>\n </div>\n </div>\n <hr class=\"my-3\" />\n </div>\n <div>\n <div class=\"text-lg font-bold py-2\" i18n>Documents</div>\n @if (application.documents?.length > 0) {\n @for (item of application.documents; track $index) {\n <a class=\"underline underline-offset-4\" [href]=\"item\" target=\"_blank\">Document: {{ $index + 1 }}</a>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n </div>\n </div>\n</rolatech-container>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AuthAgentService } from '@rolatech/angular-auth';\nimport { BaseComponent } from '@rolatech/angular-components';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'rolatech-agent-application',\n imports: [CommonModule, MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule, MatProgressSpinnerModule],\n templateUrl: './agent-application.component.html',\n styleUrl: './agent-application.component.scss',\n})\nexport class AgentApplicationComponent extends BaseComponent implements OnInit {\n authAgentService = inject(AuthAgentService);\n application: any = {\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n businessName: '',\n website: '',\n };\n selectedFiles: File[] = [];\n sending = false;\n ngOnInit(): void {\n this.getApplication();\n }\n getApplication() {\n this.authAgentService.myApplication().subscribe({\n next: (res) => {\n this.application = res.data;\n if (res.data) {\n this.router.navigate([`./${res.data.id}`], {\n relativeTo: this.route,\n });\n }\n },\n });\n }\n onFileSelected(event: any) {\n const input = event.target as HTMLInputElement;\n if (input?.files?.length) {\n this.selectedFiles = Array.from(input.files);\n }\n }\n submitApplication() {\n this.sending = true;\n const formData = new FormData();\n formData.append('application', new Blob([JSON.stringify(this.application)], { type: 'application/json' }));\n\n for (const file of this.selectedFiles) {\n formData.append('documents', file);\n }\n this.authAgentService.apply(formData).subscribe({\n next: (res) => {\n this.sending = false;\n this.snackBarService.open('Sent successfully');\n this.router.navigate([`./${res.data.id}`], {\n relativeTo: this.route,\n });\n },\n error: (error) => {\n this.sending = false;\n this.snackBarService.open(error.message);\n },\n });\n }\n}\n","<section id=\"application\" class=\"p-10\">\n <h2 class=\"text-2xl font-semibold text-center mb-6\">Agent Application Form</h2>\n <form class=\"max-w-2xl mx-auto space-y-4\" (submit)=\"submitApplication()\">\n <mat-form-field class=\"w-full\">\n <mat-label>First Name</mat-label>\n <input matInput [(ngModel)]=\"application.firstName\" name=\"firstName\" required />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>Last Name</mat-label>\n <input matInput [(ngModel)]=\"application.lastName\" name=\"lastName\" required />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>Email Address</mat-label>\n <input matInput [(ngModel)]=\"application.email\" name=\"email\" type=\"email\" required />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>Phone Number</mat-label>\n <input matInput [(ngModel)]=\"application.phone\" name=\"phone\" type=\"tel\" required />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>Business Name</mat-label>\n <input matInput [(ngModel)]=\"application.businessName\" name=\"businessName\" required />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>WebSite</mat-label>\n <input matInput [(ngModel)]=\"application.website\" name=\"website\" />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>Experience Years</mat-label>\n <input matInput [(ngModel)]=\"application.experienceYears\" name=\"experienceYears\" required />\n </mat-form-field>\n\n <div>\n <div class=\"mb-2\">\n <div class=\"text-xl font-bold\" i18n>Upload Certification (PDF)</div>\n <div class=\"text-sm opacity-70\" i18n>Safeagent, UKALA, or Propertymark certification</div>\n </div>\n <input type=\"file\" (change)=\"onFileSelected($event)\" accept=\".pdf\" required />\n </div>\n\n <button mat-flat-button type=\"submit\" [disabled]=\"sending\">\n <span style=\"display: flex; align-items: center\">\n @if (sending) {\n <mat-progress-spinner diameter=\"20\" mode=\"indeterminate\" [style.marginRight.px]=\"8\"></mat-progress-spinner>\n }\n {{ sending ? 'Requesting...' : 'Submit Application' }}\n </span>\n </button>\n <!-- <button mat-flat-button type=\"submit\">Submit Application</button> -->\n </form>\n</section>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { User } from '@rolatech/angular-common';\n\n@Pipe({\n name: 'userName',\n standalone: true,\n pure: true,\n})\nexport class UserNamePipe implements PipeTransform {\n transform(user: User | null | undefined): string {\n return userDisplayName(user);\n }\n}\n\n@Pipe({\n name: 'userInitials',\n standalone: true,\n pure: true,\n})\nexport class UserInitialsPipe implements PipeTransform {\n transform(user: User | null | undefined): string {\n return userInitials(user);\n }\n}\n\n@Pipe({\n name: 'userAvatar',\n standalone: true,\n pure: true,\n})\nexport class UserAvatarPipe implements PipeTransform {\n transform(user: User | null | undefined): string | null {\n return userAvatarUrl(user);\n }\n}\n\n@Pipe({\n name: 'userSince',\n standalone: true,\n pure: true,\n})\nexport class UserSincePipe implements PipeTransform {\n transform(\n user: User | null | undefined,\n format: Intl.DateTimeFormatOptions = { year: 'numeric', month: 'short', day: '2-digit' },\n ): string {\n const d = parseUserDateTime(user?.createdAt);\n return d ? new Intl.DateTimeFormat(undefined, format).format(d) : '—';\n }\n}\n/** Best display name with safe fallbacks */\nexport function userDisplayName(u: User | null | undefined): string {\n if (!u) return '';\n\n return (\n u.name?.trim() || [u.firstName, u.lastName].filter(Boolean).join(' ').trim() || u.username || u.email || 'Unknown User'\n );\n}\n\n/** Initials for avatar fallback */\nexport function userInitials(u: User | null | undefined): string {\n const name = userDisplayName(u);\n if (!name) return 'U';\n\n const parts = name.split(/\\s+/).slice(0, 2);\n return parts.map((p) => p[0]?.toUpperCase() ?? '').join('');\n}\n\n/** Avatar URL or null (let UI render initials) */\nexport function userAvatarUrl(u: User | null | undefined): string | null {\n if (!u?.avatar) return null;\n return u.avatar;\n}\n/**\n * Parses \"yyyy-MM-dd HH:mm:ss\" into Date (local)\n */\nexport function parseUserDateTime(value: string | null | undefined): Date | null {\n if (!value) return null;\n\n // Convert to ISO-like: \"2025-05-06T14:26:17\"\n const isoLike = value.replace(' ', 'T');\n const d = new Date(isoLike);\n\n return isNaN(d.getTime()) ? null : d;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { User } from '@rolatech/angular-common';\n\n@Pipe({ name: 'userRoles', standalone: true, pure: true })\nexport class UserRolesPipe implements PipeTransform {\n transform(user: User | null | undefined): string[] {\n return userRoleNames(user);\n }\n}\n\n@Pipe({ name: 'take', standalone: true, pure: true })\nexport class TakePipe implements PipeTransform {\n transform<T>(arr: T[] | null | undefined, count = 2): T[] {\n return (arr ?? []).slice(0, Math.max(0, count));\n }\n}\n\n@Pipe({ name: 'skip', standalone: true, pure: true })\nexport class SkipPipe implements PipeTransform {\n transform<T>(arr: T[] | null | undefined, count = 2): T[] {\n return (arr ?? []).slice(Math.max(0, count));\n }\n}\n\n@Pipe({ name: 'moreCount', standalone: true, pure: true })\nexport class MoreCountPipe implements PipeTransform {\n transform(arr: unknown[] | null | undefined, shown = 2): number {\n const len = (arr ?? []).length;\n return Math.max(0, len - Math.max(0, shown));\n }\n}\n/** Role names: [\"USER\", \"ADMIN\"] */\nexport function userRoleNames(u: User | null | undefined): string[] {\n return (u?.roles ?? []).map((r) => r.name || r.authority).filter((v): v is string => Boolean(v));\n}\n\n/** Single primary role (for tables) */\nexport function userPrimaryRole(u: User | null | undefined): string {\n return userRoleNames(u)[0] ?? '—';\n}\n","import { Component, computed, effect, inject, OnInit, signal, viewChild } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { User, AngularCommonModule } from '@rolatech/angular-common';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { Router, RouterLink } from '@angular/router';\nimport { UserInitialsPipe, UserAvatarPipe, UserNamePipe, UserSincePipe } from '../../user.pipe';\nimport { UserRolesPipe, TakePipe, MoreCountPipe } from '../../user-roles.pipe';\nimport { MatSelectModule } from '@angular/material/select';\nimport { distinctUntilChanged, finalize, map, switchMap } from 'rxjs';\n\n@Component({\n selector: 'rolatech-user-index',\n imports: [\n CommonModule,\n MatPaginatorModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n AngularCommonModule,\n UserInitialsPipe,\n UserAvatarPipe,\n UserNamePipe,\n UserSincePipe,\n UserRolesPipe,\n TakePipe,\n MoreCountPipe,\n MatSelectModule,\n MatMenuModule,\n ],\n templateUrl: './user-index.component.html',\n styleUrl: './user-index.component.scss',\n})\nexport class UserIndexComponent extends BaseComponent implements OnInit {\n private readonly authUserService = inject(AuthUserService);\n // data\n // loading = signal(false);\n users = signal<User[]>([]);\n\n // your roles list (load from API if needed)\n roles = signal<string[]>(['ADMIN', 'AGENT', 'LANDLORD', 'TENANT', 'USER']);\n\n loading = false;\n meta: any;\n pageEvent!: PageEvent;\n length = 100;\n pageSize = 15;\n pageSizeOptions: number[] = [5, 10, 25, 100];\n pageIndex = signal(0);\n ngOnInit(): void {\n const sub = this.route.queryParamMap\n .pipe(\n map((p) => {\n const page = p.get('page') ? Number(p.get('page')) : 1;\n this.pageIndex.set(Math.max(page - 1, 0));\n const status = p.get('status') || undefined;\n\n let filter = '';\n if (status) {\n filter = `status:${status?.toUpperCase()}`;\n }\n return {\n page,\n filter,\n limit: p.get('limit') ? Number(p.get('limit')) : 15,\n sort: p.get('sort') || undefined,\n };\n }),\n // Cheap deep compare via JSON to avoid spam calls when nothing changed\n map((o) => JSON.stringify(o)),\n distinctUntilChanged(),\n map((s) => JSON.parse(s)),\n switchMap((params) => {\n this.loading = true;\n params['sort'] = 'createdAt desc';\n return this.authUserService.findAll(params).pipe(finalize(() => (this.loading = false)));\n }),\n )\n .subscribe({\n next: (res) => {\n this.users.set(res.data);\n this.meta = res.meta;\n this.length = res.meta.pagination.count;\n this.loading = false;\n },\n error: () => {\n this.users.set([]);\n this.length = 0;\n this.loading = false;\n },\n });\n\n // // auto-unsubscribe on destroy\n this.destroyRef.onDestroy(() => sub.unsubscribe());\n }\n\n // fetch(): void {\n // this.loading.set(true);\n // this.authUserService\n // .findAll({\n // // filter: `name:${this.q()}`,\n // // page: this.page(),\n // // limit: this.size(),\n // // sort: 'createdAt desc',\n // })\n // .pipe(finalize(() => this.loading.set(false)))\n // .subscribe((res) => {\n // this.users.set(res.data ?? []);\n // this.total.set(res.meta.pagination.count ?? 0);\n // });\n // }\n\n // search(e: any) {\n // this.isLoading = true;\n // const word = e.target.value;\n // const options = {\n // filter: `name:${word}`,\n // };\n // this.authUserService.findAll(options).subscribe({\n // next: (res: any) => {\n // this.users = res.data;\n // this.length = res.meta.pagination.count;\n // this.isLoading = false;\n // },\n // error: (error) => {\n // this.isLoading = false;\n // this.snackBarService.open(error.message);\n // },\n // });\n // }\n onPage(e: PageEvent) {\n this.router.navigate([], {\n queryParams: { page: e.pageIndex + 1, limit: e.pageSize },\n queryParamsHandling: 'merge',\n replaceUrl: true, // optional: avoid stacking history on every page click\n });\n }\n\n openUser(id: string) {\n this.router.navigate(['/users', id]);\n }\n\n toggleStatus(u: User) {\n // call your API then refresh\n // this.api.toggleStatus(u.id)...\n console.log('toggleStatus', u.id);\n }\n\n resetPassword(u: User) {\n console.log('resetPassword', u.id);\n }\n\n trackById = (_: number, u: User) => u.id;\n}\n","<div class=\"p-4 space-y-4\">\n <!-- Header -->\n <div class=\"flex items-start justify-between gap-4\">\n <div>\n <h1 class=\"text-2xl font-semibold\">Users</h1>\n <p class=\"text-sm opacity-70\">Manage users, roles, and access.</p>\n </div>\n\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button>\n <mat-icon>person_add</mat-icon>\n Invite\n </button>\n </div>\n </div>\n\n <!-- Filters -->\n <!-- <div class=\"grid grid-cols-1 md:grid-cols-12 gap-3\">\n <mat-form-field class=\"md:col-span-6 w-full\">\n <mat-label>Search</mat-label>\n <input matInput [value]=\"q()\" (input)=\"onSearchInput(($any($event.target)).value)\" placeholder=\"Name, email, username\" />\n </mat-form-field>\n\n <mat-form-field class=\"md:col-span-3 w-full\">\n <mat-label>Status</mat-label>\n <mat-select [value]=\"status()\" (valueChange)=\"status.set($event); page.set(0)\">\n <mat-option value=\"\">All</mat-option>\n <mat-option value=\"ACTIVE\">Active</mat-option>\n <mat-option value=\"DISABLED\">Disabled</mat-option>\n <mat-option value=\"LOCKED\">Locked</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"md:col-span-3 w-full\">\n <mat-label>Role</mat-label>\n <mat-select [value]=\"role()\" (valueChange)=\"role.set($event); page.set(0)\">\n <mat-option value=\"\">All</mat-option>\n @for (r of roles(); track r) {\n <mat-option [value]=\"r\">{{ r }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div> -->\n\n <!-- Table card -->\n <div class=\"rounded-2xl border border-[--rt-border-color] bg-[--rt-base-background] overflow-hidden\">\n <div class=\"px-5 py-4 border-b border-[--rt-border-color] flex items-center justify-between\">\n <div class=\"font-semibold\">All users</div>\n <div class=\"text-sm opacity-70\">Total: {{ length }}</div>\n </div>\n\n <div class=\"overflow-auto\">\n <table class=\"w-full text-sm\">\n <thead class=\"bg-black/5 text-left\">\n <tr>\n <th class=\"p-4 min-w-[280px]\">User</th>\n <th class=\"p-4 min-w-[220px]\">Email</th>\n <th class=\"p-4 min-w-[220px] hidden md:table-cell\">Roles</th>\n <th class=\"p-4 min-w-[120px] hidden lg:table-cell\">Status</th>\n <th class=\"p-3 min-w-[140px] hidden lg:table-cell\">Since</th>\n <th class=\"p-3 w-[120px]\"></th>\n </tr>\n </thead>\n\n <tbody>\n @if (loading) {\n @for (_ of [1, 2, 3, 4, 5, 6, 7, 8]; track _) {\n <tr class=\"border-t border-[--rt-border-color]\">\n <td class=\"p-3\">\n <div class=\"flex items-center gap-3\">\n <div class=\"w-10 h-10 rounded-full bg-black/10\"></div>\n <div class=\"space-y-2\">\n <div class=\"w-44 h-4 bg-black/10 rounded\"></div>\n <div class=\"w-28 h-3 bg-black/10 rounded\"></div>\n </div>\n </div>\n </td>\n <td class=\"p-3\"><div class=\"w-56 h-4 bg-black/10 rounded\"></div></td>\n <td class=\"p-3 hidden md:table-cell\"><div class=\"w-40 h-4 bg-black/10 rounded\"></div></td>\n <td class=\"p-3 hidden lg:table-cell\"><div class=\"w-20 h-4 bg-black/10 rounded\"></div></td>\n <td class=\"p-3 hidden lg:table-cell\"><div class=\"w-24 h-4 bg-black/10 rounded\"></div></td>\n <td class=\"p-3 text-right\"><div class=\"w-16 h-8 bg-black/10 rounded ml-auto\"></div></td>\n </tr>\n }\n } @else {\n @if (users().length === 0) {\n <tr class=\"border-t\">\n <td class=\"p-6 text-sm opacity-70\" colspan=\"6\">No users found.</td>\n </tr>\n } @else {\n @for (u of users(); track u.id) {\n <tr class=\"border-t border-[--rt-border-color] hover:bg-black/5 cursor-pointer\" (click)=\"openUser(u.id!)\">\n <!-- User -->\n <td class=\"p-3\">\n <div class=\"flex items-center gap-3 min-w-0\">\n <div class=\"relative\">\n @if (u | userAvatar; as avatar) {\n <img class=\"w-10 h-10 rounded-full object-cover border\" [src]=\"avatar\" alt=\"avatar\" />\n } @else {\n <div\n class=\"w-10 h-10 rounded-full border bg-[--rt-brand-color] text-white flex items-center justify-center font-semibold\"\n >\n {{ u | userInitials }}\n </div>\n }\n\n <span\n class=\"absolute -right-0 -bottom-0 w-3 h-3 rounded-full border border-[--rt-border-color] bg-[--rt-base-background] flex items-center justify-center\"\n >\n <span\n class=\"w-2 h-2 rounded-full\"\n [class]=\"\n u.status.toString() === 'ACTIVE'\n ? 'bg-green-500'\n : u.status.toString() === 'LOCKED'\n ? 'bg-red-500'\n : 'bg-amber-500'\n \"\n ></span>\n </span>\n </div>\n\n <div class=\"min-w-0\">\n <div class=\"font-medium truncate\">{{ u | userName }}</div>\n <div class=\"text-xs opacity-70 truncate\">&#64;{{ u.username }}</div>\n </div>\n </div>\n </td>\n\n <!-- Email -->\n <td class=\"p-3\">\n <div class=\"truncate\">{{ u?.email ?? '—' }}</div>\n </td>\n\n <!-- Roles -->\n <td class=\"p-3 hidden md:table-cell\" (click)=\"$event.stopPropagation()\">\n @let roles = u | userRoles;\n @let shown = 2;\n\n <div class=\"flex flex-wrap items-center gap-1.5\">\n @for (r of roles | take: shown; track r) {\n <span class=\"px-2 py-0.5 rounded-full text-xs bg-black/5 border border-[--rt-border-color]\">\n {{ r }}\n </span>\n }\n\n @if ((roles | moreCount: shown) > 0) {\n <button mat-button class=\"!min-w-0 !h-6 !px-2 !text-xs\" [matMenuTriggerFor]=\"rolesMenu\">\n +{{ roles | moreCount: shown }}\n </button>\n\n <mat-menu #rolesMenu=\"matMenu\">\n @for (r of roles; track r) {\n <button mat-menu-item disabled>{{ r }}</button>\n }\n </mat-menu>\n }\n </div>\n </td>\n\n <!-- Status -->\n <td class=\"p-3 hidden lg:table-cell\">\n <span\n class=\"px-2 py-0.5 rounded-full text-xs border border-[--rt-border-color]\"\n [class]=\"\n u.status.toString() === 'ACTIVE'\n ? 'bg-green-500/10 text-green-700 border-green-500/20'\n : u.status.toString() === 'LOCKED'\n ? 'bg-red-500/10 text-red-700 border-red-500/20'\n : 'bg-amber-500/10 text-amber-700 border-amber-500/20'\n \"\n >\n {{ u?.status ?? '—' }}\n </span>\n </td>\n\n <!-- Since -->\n <td class=\"p-3 hidden lg:table-cell opacity-80\">\n {{ u | userSince }}\n </td>\n\n <!-- Actions -->\n <td class=\"p-3 text-right\" (click)=\"$event.stopPropagation()\">\n <button mat-button [matMenuTriggerFor]=\"menu\">Actions</button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"openUser(u.id!)\">\n <mat-icon>open_in_new</mat-icon>\n <span>View</span>\n </button>\n <button mat-menu-item (click)=\"toggleStatus(u)\">\n <mat-icon>{{ u.status.toString() === 'ACTIVE' ? 'block' : 'check_circle' }}</mat-icon>\n <span>{{ u.status.toString() === 'ACTIVE' ? 'Disable' : 'Enable' }}</span>\n </button>\n <button mat-menu-item (click)=\"resetPassword(u)\">\n <mat-icon>vpn_key</mat-icon>\n <span>Reset password</span>\n </button>\n </mat-menu>\n </td>\n </tr>\n }\n }\n }\n </tbody>\n </table>\n </div>\n\n <!-- Footer paginator -->\n <div class=\"px-2 py-2 border-t border-[--rt-border-color]\">\n <mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageIndex]=\"pageIndex()\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPage($event)\"\n hidePageSize\n showFirstLastButtons\n >\n </mat-paginator>\n </div>\n </div>\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n AcceptDialogComponent,\n BaseComponent,\n EmptyComponent,\n RejectDialogComponent,\n RichLabelComponent,\n ThumbnailComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AuthAgentService } from '@rolatech/angular-auth';\nimport { AgentApplication, AgentApplicationStatus } from '../../../interfaces/agent-application';\n\n@Component({\n selector: 'rolatech-agent-manage-application-detail',\n imports: [CommonModule, ToolbarComponent, MatButtonModule, RichLabelComponent, EmptyComponent],\n templateUrl: './agent-manage-application-detail.component.html',\n styleUrl: './agent-manage-application-detail.component.scss',\n})\nexport class AgentManageApplicationDetailComponent extends BaseComponent implements OnInit {\n authAgentService = inject(AuthAgentService);\n application!: AgentApplication;\n status = AgentApplicationStatus;\n ngOnInit(): void {\n this.getApplication();\n }\n getApplication() {\n this.authAgentService.getApplication(this.id).subscribe({\n next: (res) => {\n this.application = res.data;\n },\n });\n }\n approve() {\n const dialogRef = this.dialog.open(AcceptDialogComponent, {\n width: '400px',\n data: {\n title: 'Approve',\n message: 'Approve this agent application?',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.authAgentService.approve(this.id).subscribe({\n next: (res) => {\n console.log(res);\n // this.application.status = 'APPROVED';\n // this.application.status = AgentApplicationStatus['APPROVED' as keyof typeof AgentApplicationStatus];\n this.application.status = 'APPROVED' as AgentApplicationStatus;\n this.snackBarService.open('Approved');\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n });\n }\n reject() {\n const dialogRef = this.dialog.open(RejectDialogComponent, {\n width: '400px',\n data: {\n content: '',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.authAgentService.reject(this.id, result).subscribe({\n next: (res) => {\n this.application.status = 'REJECTED' as AgentApplicationStatus;\n this.snackBarService.open('Rejected');\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n });\n }\n}\n","@if (application) {\n <rolatech-toolbar [title]=\"status[application.status]\" large link=\"../../\">\n @if (application.status.toString() === 'PENDING') {\n <button mat-flat-button (click)=\"approve()\" i18n>Approve</button>\n <button mat-button (click)=\"reject()\" i18n>Reject</button>\n }\n </rolatech-toolbar>\n <div class=\"px-4\">\n <div>\n <div class=\"text-lg font-bold py-2\">User details</div>\n <div class=\"flex\">\n <div class=\"bg-[--rt-brand-color] min-w-12 max-h-12 rounded-full mr-3\">\n @if (application.user.avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"application.user.avatar\" alt=\"avatar img\" />\n }\n </div>\n <div class=\"flex flex-col w-full\">\n @if (application.user.firstName) {\n <div>{{ application.user.firstName }}, {{ application.user.lastName }}</div>\n } @else {\n @if (application.user.name) {\n <div>{{ application.user.name }}</div>\n }\n }\n <div class=\"inline-flex gap-1 mt-2\">\n <div>\n <span i18n>Phone: </span>\n <span class=\"mr-1\">{{ application.phone }}</span>\n </div>\n <div>\n <span i18n>Email: </span>\n <span class=\"mr-1\">{{ application.email }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <hr class=\"my-3\" />\n <div>\n <div class=\"text-lg font-bold py-2\">Application details</div>\n <div class=\"flex overflow-x-scroll scrollbar-hide\">\n <div class=\"flex flex-col w-full\">\n <rolatech-rich-label label=\"Business Name\" [title]=\"application.businessName\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Experience Years\" [title]=\"application.experienceYears\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Created At\" [title]=\"application.createdAt\"></rolatech-rich-label>\n </div>\n </div>\n <hr class=\"my-3\" />\n </div>\n <div>\n <div class=\"text-lg font-bold py-2\">Documents</div>\n @if (application.documents.length > 0) {\n @for (item of application.documents; track $index) {\n <a class=\"underline underline-offset-4\" [href]=\"item\" target=\"_blank\">Document: {{ $index + 1 }}</a>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n </div>\n </div>\n}\n","import { Component, input } from '@angular/core';\nimport { AgentApplication, AgentApplicationStatus } from '../../interfaces/agent-application';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-agent-application-item',\n imports: [MatIconModule],\n templateUrl: './agent-application-item.component.html',\n styleUrl: './agent-application-item.component.scss',\n})\nexport class AgentApplicationItemComponent {\n application = input.required<AgentApplication>();\n status: any = AgentApplicationStatus;\n}\n","<div class=\"flex flex-col hover:bg-[--rt-raised-background] cursor-pointer p-3\">\n <div class=\"flex justify-between w-full mb-2\">\n <a class=\"flex items-center gap-3\">\n <span>Application ID: {{ application().id }}</span>\n </a>\n <span class=\"font-medium text-sm\">{{ status[application().status] }}</span>\n </div>\n <div class=\"flex overflow-x-scroll scrollbar-hide\">\n <div class=\"bg-[--rt-brand-color] min-w-12 max-h-12 rounded-full mr-3\">\n @if (application().user.avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"application().user.avatar\" alt=\"avatar img\" />\n }\n </div>\n <div class=\"flex flex-col w-full\">\n <div>{{ application().businessName }}</div>\n <div class=\"inline-flex gap-1 mt-2\">\n <div>\n <span i18n>Phone: </span>\n <span class=\"mr-1\">{{ application().experienceYears }}</span>\n </div>\n <div>\n <span i18n>Email: </span>\n <span class=\"mr-1\">{{ application().user.email }}</span>\n </div>\n </div>\n <div class=\"flex justify-end\">\n <span class=\"text-sm opacity-70\">{{ application().createdAt }}</span>\n </div>\n </div>\n </div>\n <hr />\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AuthAgentService } from '@rolatech/angular-auth';\nimport {\n BaseComponent,\n EmptyComponent,\n PdfViewerComponent,\n TabComponent,\n TabsComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AgentApplicationItemComponent } from '../../../components/agent-application-item/agent-application-item.component';\nimport { RouterLink } from '@angular/router';\nimport { AgentApplication } from '../../../interfaces/agent-application';\n\n@Component({\n selector: 'rolatech-agent-manage-application-index',\n imports: [\n CommonModule,\n ToolbarComponent,\n TabsComponent,\n TabComponent,\n MatButtonModule,\n MatIconModule,\n AgentApplicationItemComponent,\n RouterLink,\n EmptyComponent,\n ],\n templateUrl: './agent-manage-application-index.component.html',\n styleUrl: './agent-manage-application-index.component.scss',\n})\nexport class AgentManageApplicationIndexComponent extends BaseComponent implements OnInit {\n authAgentService = inject(AuthAgentService);\n applications: AgentApplication[] = [];\n select = 0;\n links = [\n {\n name: 'All',\n icon: 'dashboard',\n },\n {\n name: 'Pending',\n icon: 'category',\n status: 'pending',\n },\n {\n name: 'Approved',\n icon: 'category',\n status: 'approved',\n },\n {\n name: 'Rejected',\n icon: 'category',\n status: 'rejected',\n },\n ];\n filterOptions: any = {\n type: '',\n status: '',\n };\n ngOnInit(): void {\n this.route.queryParams.subscribe(({ status }) => {\n this.select = this.links.findIndex((item) => item.status === status);\n if (status) {\n this.filterOptions.status = (status as string).toUpperCase();\n } else {\n delete this.filterOptions.status;\n }\n this.findApplications();\n });\n }\n findApplications() {\n const options = {\n sort: 'updatedAt desc',\n };\n const filterString = this.convertFilterOptions(this.filterOptions);\n if (filterString) {\n options['filter'] = filterString;\n }\n this.authAgentService.findAllApplications(options).subscribe({\n next: (res) => {\n this.applications = res.data;\n },\n });\n }\n convertFilterOptions(jsonObj) {\n return Object.entries(jsonObj)\n .filter(([key, value]) => value !== '' && value !== undefined)\n .map(([key, value]) => {\n return `${key}:${value}`;\n })\n .join(',');\n }\n viewPdf(url: string) {\n const options = {\n title: '',\n component: PdfViewerComponent,\n data: {\n url: url,\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed();\n }\n}\n","<rolatech-toolbar title=\"Applications\">\n <div class=\"flex items-center gap-2\"></div>\n</rolatech-toolbar>\n<rolatech-tabs [select]=\"select\">\n @for (item of links; track item) {\n @if (item.status) {\n <rolatech-tab [label]=\"item.name\" routerLink=\"./\" [queryParams]=\"{ status: item.status }\"></rolatech-tab>\n } @else {\n <rolatech-tab [label]=\"item.name\" routerLink=\"./\"></rolatech-tab>\n }\n }\n</rolatech-tabs>\n<div>\n @if (applications) {\n @for (application of applications; track $index) {\n <rolatech-agent-application-item\n [application]=\"application\"\n [routerLink]=\"['./', application.id]\"\n ></rolatech-agent-application-item>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n</div>\n","import { AgentManageApplicationDetailComponent } from './agent-manage-application-detail/agent-manage-application-detail.component';\nimport { AgentManageApplicationIndexComponent } from './agent-manage-application-index/agent-manage-application-index.component';\n\nexport const agentManageApplicationRoutes = [\n {\n path: '',\n component: AgentManageApplicationIndexComponent,\n },\n {\n path: ':id',\n component: AgentManageApplicationDetailComponent,\n },\n];\n","import { AgentApplicationComponent } from './agent-application/agent-application.component';\nimport { AgentApplicationDetailComponent } from './agent-application-detail/agent-application-detail.component';\n\nexport const agentRoutes = [\n {\n path: 'application',\n component: AgentApplicationComponent,\n },\n {\n path: 'application/:id',\n component: AgentApplicationDetailComponent,\n },\n];\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserDataService {\n private userInfo = new BehaviorSubject<any>(null);\n data = this.userInfo.asObservable();\n send(data: any) {\n this.userInfo.next(data);\n }\n}\n","import { Component, effect, inject, model, OnInit } from '@angular/core';\nimport { AvatarComponent, BaseComponent, ContainerComponent, TabComponent, TabsComponent } from '@rolatech/angular-components';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { Course } from '@rolatech/angular-course';\nimport { UserDataService } from '../../user-data.service';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink, RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'rolatech-user-layout',\n imports: [\n MatIconModule,\n RouterLink,\n ContainerComponent,\n AvatarComponent,\n TabsComponent,\n TabComponent,\n MatButtonModule,\n TabsComponent,\n TabComponent,\n RouterOutlet,\n ],\n templateUrl: './user-layout.component.html',\n styleUrl: './user-layout.component.scss',\n})\nexport class UserLayoutComponent extends BaseComponent implements OnInit {\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n userDataService = inject(UserDataService);\n authenticated = this.authService.authenticated;\n userInfo: any;\n courses: Course[] = [];\n meta: any;\n isFollowed = false;\n username = '';\n selectIndex = model(0);\n path = '';\n statsData: any;\n constructor() {\n super();\n effect(() => {\n if (this.authenticated()) {\n this.checkIfFollowed();\n }\n });\n }\n ngOnInit(): void {\n this.username = this.route.snapshot.params['username'];\n this.stats();\n this.findUserInfo();\n this.route.params.subscribe((params) => {\n if (params['path'] === 'community') {\n this.selectIndex.set(1);\n }\n if (params['path'] === 'store') {\n this.selectIndex.set(2);\n }\n });\n }\n stats() {\n this.authUserService.followersStats(this.username).subscribe({\n next: (res) => {\n this.statsData = res.data;\n },\n });\n }\n findUserInfo() {\n this.authUserService.findUserInfoByUsername(this.username).subscribe({\n next: (res) => {\n this.userInfo = res.data;\n this.userDataService.send(res.data);\n if (res.data) {\n this.titleService.setTitle(`${this.userInfo.name}(@${this.userInfo.username}) - 拼小课`);\n } else {\n this.titleService.setTitle(`拼小课`);\n }\n },\n });\n }\n\n checkIfFollowed() {\n this.authUserService.isFollowing(this.username).subscribe({\n next: (res) => {\n this.isFollowed = res.data;\n },\n });\n }\n follow() {\n this.authUserService.follow(this.username).subscribe({\n next: (res) => {\n this.isFollowed = true;\n },\n });\n }\n unfollow() {\n this.authUserService.unfollow(this.username).subscribe({\n next: (res) => {\n this.isFollowed = false;\n },\n });\n }\n}\n","<rolatech-container>\n @if (userInfo) {\n <div>\n <div class=\"h-8\"></div>\n <div class=\"flex\">\n <div\n class=\"w-[80px] h-[80px] md:w-36 md:h-36 sm:w-28 sm:h-28 rounded-full border-white mr-4 bg-[--rt-raised-background]\"\n >\n @defer {\n <rolatech-avatar [src]=\"userInfo.avatar + '!w400'\" size=\"full\"> </rolatech-avatar>\n }\n </div>\n <div class=\"flex flex-col flex-grow\">\n <div class=\"flex justify-between items-center sm:mt-1\">\n <div class=\"flex items-center gap-2\">\n <div class=\"text-xl md:text-2xl font-medium\">\n <span>{{ userInfo.name }}</span>\n </div>\n <mat-icon color=\"primary\">verified</mat-icon>\n </div>\n <div>\n @if (isFollowed) {\n <button mat-flat-button (click)=\"unfollow()\" class=\"w-28 max-h-8\" i18n>Unfollow</button>\n } @else {\n <button mat-flat-button (click)=\"follow()\" class=\"w-28 max-h-8\" i18n>Follow</button>\n }\n </div>\n </div>\n <div class=\"text-sm text-[--rt-text-secondary]\">\n <div class=\"flex gap-3 py-2 items-center\">\n <a>\n <span>&#64;{{ userInfo.username }}</span>\n </a>\n <a class=\"cursor-pointer hover:text-orange-600\" [routerLink]=\"['./following']\">\n <span class=\"font-bold\">{{ statsData?.following }}</span>\n <span class=\"ml-1\" i18n>Following</span>\n </a>\n <a class=\"cursor-pointer hover:text-orange-600\" [routerLink]=\"['./followers']\">\n <span class=\"font-bold\">{{ statsData?.followers }}</span>\n <span class=\"ml-1\" i18n>Followers</span>\n </a>\n </div>\n <div class=\"mb-3\">\n <div>\n {{ userInfo.bio }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"py-2\">\n <rolatech-tabs [(select)]=\"selectIndex\" ngSkipHydration>\n <rolatech-tab label=\"Course\" routerLink=\"./\"></rolatech-tab>\n <rolatech-tab label=\"Community\" routerLink=\"./community\"></rolatech-tab>\n <rolatech-tab label=\"Store\" routerLink=\"./store\"></rolatech-tab>\n </rolatech-tabs>\n </div>\n\n <router-outlet></router-outlet>\n </div>\n }\n</rolatech-container>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent, RichItemComponent, RichViewComponent } from '@rolatech/angular-components';\nimport { UserDataService } from '../../user-data.service';\nimport { CourseService, Course } from '@rolatech/angular-course';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'rolatech-user-info',\n imports: [RouterLink, RichViewComponent, RichItemComponent],\n templateUrl: './user-info.component.html',\n styleUrl: './user-info.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserInfoComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n userDataService = inject(UserDataService);\n courses: Course[] = [];\n meta: any;\n constructor() {\n super();\n }\n ngOnInit(): void {\n this.userDataService.data.subscribe({\n next: (userInfo) => {\n this.findCoursesByInstructorId(userInfo.id);\n },\n });\n }\n findCoursesByInstructorId(instructorId: string) {\n const options = {\n filter: `instructorId:${instructorId},published:true`,\n sort: 'updatedAt desc',\n };\n this.courseService.find(options).subscribe({\n next: (res: any) => {\n this.courses = res.data;\n this.meta = res.meta;\n },\n });\n }\n}\n","<rolatech-rich-view list>\n @for (item of courses; track $index) {\n <rolatech-rich-item\n [title]=\"item.name\"\n [thumbnail]=\"item.media[0].url + '!w400'\"\n [price]=\"(item.pricing[0].total / 100).toFixed(2)\"\n [routerLink]=\"['/courses', item.id]\"\n class=\"cursor-pointer hover:bg-[--rt-raised-background]\"\n ></rolatech-rich-item>\n }\n</rolatech-rich-view>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UserDataService } from '../../user-data.service';\nimport { EmptyComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-user-community',\n imports: [CommonModule, EmptyComponent],\n templateUrl: './user-community.component.html',\n styleUrl: './user-community.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserCommunityComponent implements OnInit {\n userDataService = inject(UserDataService);\n ngOnInit(): void {\n this.userDataService.data.subscribe({\n next: (userInfo) => {},\n });\n }\n}\n","<rolatech-empty></rolatech-empty>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProductService } from '@rolatech/angular-services';\nimport { UserDataService } from '../../user-data.service';\nimport { RouterLink } from '@angular/router';\nimport { EmptyComponent, RichViewComponent, RichItemComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-user-store',\n imports: [CommonModule, EmptyComponent, RichViewComponent, RichItemComponent, RouterLink],\n templateUrl: './user-store.component.html',\n styleUrl: './user-store.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserStoreComponent implements OnInit {\n userDataService = inject(UserDataService);\n productService = inject(ProductService);\n products: any;\n ngOnInit(): void {\n this.userDataService.data.subscribe({\n next: (userInfo) => {\n this.findProductsByUserId(userInfo.id);\n },\n });\n }\n findProductsByUserId(userId: string) {\n const options = {\n filter: `userId:${userId}`,\n sort: 'updatedAt desc',\n };\n this.productService.find(options).subscribe({\n next: (res: any) => {\n this.products = res.data;\n },\n });\n }\n}\n","@if (products) {\n <div>\n <rolatech-rich-view wrap>\n @for (item of products; track item) {\n @defer {\n <rolatech-rich-item\n [routerLink]=\"['/products', item.id]\"\n [thumbnail]=\"item.media ? item.media[0].url + '!w400' : ''\"\n [title]=\"item.name\"\n [subtitle]=\"item.description\"\n [price]=\"(item.price / 100).toFixed(2)\"\n thumbnailRatio=\"square\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n </div>\n} @else {\n <rolatech-empty></rolatech-empty>\n}\n","import { Component, HostBinding, ViewEncapsulation, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-user-item',\n imports: [CommonModule, MatButtonModule],\n templateUrl: './user-item.component.html',\n styleUrl: './user-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserItemComponent {\n @HostBinding('class.rolatech-user-item') hasClass = true;\n user = input<any>();\n isFollowing = input(true);\n follow = output<string>();\n unfollow = output();\n own = input();\n onFollow() {\n this.follow.emit(this.user().username);\n }\n onUnFollow() {\n this.unfollow.emit(this.user().username);\n }\n}\n","<div class=\"flex w-full justify-between items-center p-2 hover:bg-[--rt-raised-background] cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-[--rt-brand-color] w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" alt=\"avatar img\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (!own()) {\n @if (isFollowing()) {\n <button mat-flat-button class=\"w-28 max-h-8\" (click)=\"onUnFollow()\" i18n>Unfollow</button>\n } @else {\n <button mat-flat-button class=\"w-28 max-h-8\" (click)=\"onFollow()\" i18n>Follow</button>\n }\n }\n</div>\n","import { Component, effect, inject, OnInit, signal, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { map } from 'lodash';\nimport { TabsComponent, TabComponent, ContainerComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { UserItemComponent } from '../../components/user-item/user-item.component';\n\n@Component({\n selector: 'rolatech-user-follow-info',\n imports: [CommonModule, TabsComponent, TabComponent, ContainerComponent, ToolbarComponent, RouterLink, UserItemComponent],\n templateUrl: './user-follow-info.component.html',\n styleUrl: './user-follow-info.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserFollowInfoComponent implements OnInit {\n title = inject(Title);\n route = inject(ActivatedRoute);\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n authenticated = this.authService.authenticated;\n userId = this.authService.userId;\n tabIndex = signal(0);\n userInfo: any;\n users: any[] = [];\n username = '';\n path = '';\n myId = '';\n constructor() {\n this.route.params.subscribe({\n next: (params: any) => {\n this.username = params['username'];\n this.path = params.path;\n },\n });\n effect(() => {\n switch (this.tabIndex()) {\n case 0:\n this.listFollowingByUsername();\n break;\n case 1:\n this.listFollowersByUsername();\n break;\n default:\n break;\n }\n });\n }\n ngOnInit(): void {\n if (this.path === 'following') {\n this.tabIndex.set(0);\n } else {\n this.tabIndex.set(1);\n }\n this.findUserInfo();\n }\n findUserInfo() {\n this.authUserService.findUserInfoByUsername(this.username).subscribe({\n next: (res) => {\n this.userInfo = res.data;\n if (res.data) {\n this.title.setTitle(`${this.userInfo.name}(@${this.userInfo.username}) - 拼小课`);\n } else {\n this.title.setTitle(`拼小课`);\n }\n },\n });\n }\n follow(user: any) {\n this.authUserService.follow(user.username).subscribe({\n next: (res) => {\n user.isFollowing = true;\n },\n });\n }\n unfollow(user: any) {\n this.authUserService.unfollow(user.username).subscribe({\n next: (res) => {\n user.isFollowing = false;\n if (this.myId === this.userInfo.id) {\n const index = this.users.findIndex((item) => item.username === user.username);\n this.users.splice(index, 1);\n }\n },\n });\n }\n listFollowingByUsername() {\n this.authUserService.listFollowingByUsername(this.username).subscribe({\n next: (res) => {\n this.users = map(res.data, 'user');\n const ids = map(res.data, 'user.id');\n this.friendships(ids);\n },\n });\n }\n listFollowersByUsername() {\n this.authUserService.listFollowersByUsername(this.username).subscribe({\n next: (res) => {\n this.users = map(res.data, 'follower');\n const ids = map(res.data, 'follower.id');\n this.friendships(ids);\n },\n });\n }\n friendships(ids: string[]) {\n if (this.authenticated()) {\n this.myId = this.userId();\n const index = this.users.findIndex((item) => item.id === this.myId);\n if (index > 0) {\n this.users.unshift(this.users.splice(index, 1)[0]);\n }\n this.authUserService.friendships(ids).subscribe({\n next: (res) => {\n this.format(res.data);\n },\n });\n }\n }\n format(friendships: any) {\n this.users.map((item: any) => {\n item.isFollowing = friendships[item.id].following;\n });\n }\n}\n","<rolatech-container>\n <rolatech-toolbar [title]=\"userInfo?.name\" link=\"../\" [subtitle]=\"userInfo?.username\"></rolatech-toolbar>\n <div class=\"mb-3\"></div>\n\n <rolatech-tabs [(select)]=\"tabIndex\">\n <rolatech-tab label=\"Following\" [routerLink]=\"['../', 'following']\"></rolatech-tab>\n <rolatech-tab label=\"Followers\" [routerLink]=\"['../', 'followers']\"></rolatech-tab>\n </rolatech-tabs>\n <div class=\"mb-3\"></div>\n @for (user of users; track $index) {\n <rolatech-user-item\n [user]=\"user\"\n [routerLink]=\"'/@' + user.username\"\n [isFollowing]=\"user.isFollowing\"\n (follow)=\"follow(user)\"\n (unfollow)=\"unfollow(user)\"\n [own]=\"user.id === myId\"\n ></rolatech-user-item>\n }\n</rolatech-container>\n","import { UserLayoutComponent } from '../components/user-layout/user-layout.component';\nimport { UserInfoComponent } from './user-info/user-info.component';\nimport { UserCommunityComponent } from './user-community/user-community.component';\nimport { UserStoreComponent } from './user-store/user-store.component';\nimport { UserFollowInfoComponent } from './user-follow-info/user-follow-info.component';\nimport { UserDetailComponent } from './user-detail/user-detail.component';\n\nexport const userRoutes = [\n {\n path: '',\n component: UserLayoutComponent,\n children: [\n {\n path: '',\n component: UserInfoComponent,\n },\n {\n path: 'community',\n component: UserCommunityComponent,\n },\n {\n path: 'store',\n component: UserStoreComponent,\n },\n ],\n },\n {\n path: ':path',\n component: UserFollowInfoComponent,\n },\n];\n","import { Component, computed, inject, OnInit, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport { User } from '@rolatech/angular-common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n selector: 'rolatech-user-detail',\n imports: [CommonModule, MatTabsModule, ToolbarComponent, MatButtonModule, MatIcon, MatMenuModule],\n templateUrl: './user-detail.component.html',\n styleUrl: './user-detail.component.scss',\n})\nexport class UserDetailComponent extends BaseComponent implements OnInit {\n user = signal<User | null>(null);\n authUserService = inject(AuthUserService);\n name = computed(() => userDisplayName(this.user()));\n initials = computed(() => userInitials(this.user()));\n avatarUrl = computed(() => userAvatarUrl(this.user()));\n createdAtLabel = computed(() => {\n const d = parseUserDateTime(this.user()?.createdAt);\n return d ? new Intl.DateTimeFormat(undefined, { year: 'numeric', month: 'long', day: '2-digit' }).format(d) : '—';\n });\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.authUserService.get(this.id).subscribe({\n next: (res) => {\n this.user.set(res.data);\n },\n });\n }\n // actions\n openUserObject() {}\n editProfile() {}\n toggleStatus() {}\n resetPassword() {}\n copyId() {}\n addToOrg() {}\n addEmail() {}\n addPhone() {}\n connectWallet() {}\n}\n/** Best display name with safe fallbacks */\nexport function userDisplayName(u: User | null | undefined): string {\n if (!u) return '';\n\n return (\n u.name?.trim() || [u.firstName, u.lastName].filter(Boolean).join(' ').trim() || u.username || u.email || 'Unknown User'\n );\n}\n\n/** Initials for avatar fallback */\nexport function userInitials(u: User | null | undefined): string {\n const name = userDisplayName(u);\n if (!name) return 'U';\n\n const parts = name.split(/\\s+/).slice(0, 2);\n return parts.map((p) => p[0]?.toUpperCase() ?? '').join('');\n}\n\n/** Avatar URL or null (let UI render initials) */\nexport function userAvatarUrl(u: User | null | undefined): string | null {\n if (!u?.avatar) return null;\n return u.avatar;\n}\n/**\n * Parses \"yyyy-MM-dd HH:mm:ss\" into Date (local)\n */\nexport function parseUserDateTime(value: string | null | undefined): Date | null {\n if (!value) return null;\n\n // Convert to ISO-like: \"2025-05-06T14:26:17\"\n const isoLike = value.replace(' ', 'T');\n const d = new Date(isoLike);\n\n return isNaN(d.getTime()) ? null : d;\n}\n","<rolatech-toolbar title=\"Users\" link=\"../\"> </rolatech-toolbar>\n<div class=\"p-4 space-y-4\">\n <!-- Header -->\n <div class=\"flex items-start justify-between gap-4\">\n <div class=\"flex items-start gap-3 min-w-0\">\n <!-- avatar -->\n <div class=\"relative\">\n @if (avatarUrl()) {\n <img class=\"w-12 h-12 rounded-full object-cover border\" [src]=\"avatarUrl()!\" alt=\"avatar\" />\n } @else {\n <div\n class=\"w-12 h-12 rounded-full border bg-[--rt-brand-color] text-white flex items-center justify-center font-semibold\"\n >\n {{ initials() }}\n </div>\n }\n\n <!-- status dot -->\n <span\n class=\"absolute -right-0 -bottom-0 w-3 h-3 rounded-full border border-[--rt-border-color] bg-[--rt-base-background] flex items-center justify-center\"\n >\n <span\n class=\"w-2 h-2 rounded-full\"\n [class]=\"\n user()?.status?.toString() === 'ACTIVE'\n ? 'bg-green-500'\n : user()?.status?.toString() === 'LOCKED'\n ? 'bg-red-500'\n : 'bg-amber-500'\n \"\n ></span>\n </span>\n </div>\n\n <div class=\"min-w-0\">\n <div class=\"flex items-center gap-2 min-w-0\">\n <h1 class=\"text-2xl font-semibold truncate\">{{ name() }}</h1>\n\n @if (user()?.status?.toString() === 'LOCKED') {\n <span class=\"px-2 py-0.5 rounded-md text-xs bg-red-500/10 text-red-700 border border-red-500/20\">\n <mat-icon class=\"align-middle !text-[14px] mr-1\">lock</mat-icon>\n Locked\n </span>\n } @else if (user()?.status?.toString() === 'DISABLED') {\n <span class=\"px-2 py-0.5 rounded-md text-xs bg-red-500/10 text-red-700 border border-red-500/20\"> Disabled </span>\n }\n </div>\n\n <div class=\"text-sm opacity-70 flex items-center gap-2 mt-1\">\n <span>{{ user()?.status?.toString() === 'ACTIVE' ? 'Active' : (user()?.status ?? '—') }}</span>\n </div>\n </div>\n </div>\n\n <!-- actions -->\n <!-- <div class=\"flex items-center gap-2\">\n <button mat-stroked-button (click)=\"openUserObject()\">User object</button>\n <button mat-flat-button color=\"primary\" (click)=\"editProfile()\">Edit profile</button>\n\n <button mat-icon-button [matMenuTriggerFor]=\"moreMenu\" aria-label=\"More\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n <mat-menu #moreMenu=\"matMenu\">\n <button mat-menu-item (click)=\"toggleStatus()\">\n <mat-icon>{{ user()?.status?.toString() === 'ACTIVE' ? 'block' : 'check_circle' }}</mat-icon>\n <span>{{ user()?.status?.toString() === 'ACTIVE' ? 'Disable' : 'Enable' }}</span>\n </button>\n <button mat-menu-item (click)=\"resetPassword()\">\n <mat-icon>vpn_key</mat-icon>\n <span>Reset password</span>\n </button>\n <button mat-menu-item (click)=\"copyId()\">\n <mat-icon>content_copy</mat-icon>\n <span>Copy user ID</span>\n </button>\n </mat-menu>\n </div> -->\n </div>\n\n <!-- Info strip (2 columns like screenshot) -->\n <div class=\"grid grid-cols-1 lg:grid-cols-2 gap-6 border-b pb-5\">\n <dl class=\"space-y-3 text-sm\">\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">badge</mat-icon> User ID</dt>\n <dd class=\"font-mono text-xs truncate max-w-[65%]\">{{ user()?.id }}</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">alternate_email</mat-icon> Username</dt>\n <dd class=\"truncate max-w-[65%]\">&#64;{{ user()?.username }}</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">call</mat-icon> Phone number</dt>\n <dd class=\"truncate max-w-[65%]\">{{ user()?.phone ?? '—' }}</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">mail</mat-icon> Email address</dt>\n <dd class=\"truncate max-w-[65%]\">{{ user()?.email ?? '—' }}</dd>\n </div>\n </dl>\n\n <dl class=\"space-y-3 text-sm\">\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">lock</mat-icon> Password</dt>\n <dd class=\"truncate max-w-[65%]\">None</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">verified_user</mat-icon> 2-step auth</dt>\n <dd class=\"truncate max-w-[65%]\">—</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">key</mat-icon> Passkey</dt>\n <dd class=\"truncate max-w-[65%]\">—</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">event</mat-icon> User since</dt>\n <dd class=\"truncate max-w-[65%]\">{{ createdAtLabel() }}</dd>\n </div>\n </dl>\n </div>\n</div>\n","import { UserDetailComponent } from '../user-detail/user-detail.component';\nimport { UserIndexComponent } from '../user-index/user-index.component';\n\nexport const userManageRoutes = [\n {\n path: '',\n component: UserIndexComponent,\n },\n {\n path: ':id',\n component: UserDetailComponent,\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["userDisplayName","userInitials","userAvatarUrl","parseUserDateTime","i1","i2","i3","map"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAY,sBAIX;AAJD,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAJW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;;ACR5B,MAAO,+BAAgC,SAAQ,aAAa,CAAA;AAChE,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,WAAW,GAAQ;AACjB,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,OAAO,EAAE,EAAE;KACZ;IACD,iBAAiB,GAAG,sBAAsB;IAC1C,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE;IACvB;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;AAC9C,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI;YAC7B,CAAC;AACF,SAAA,CAAC;IACJ;uGApBW,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB5C,2jDAmCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;2FAIrF,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;+BACE,mCAAmC,EAAA,OAAA,EACpC,CAAC,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,2jDAAA,EAAA;;;AEE7F,MAAO,yBAA0B,SAAQ,aAAa,CAAA;AAC1D,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,WAAW,GAAQ;AACjB,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,OAAO,EAAE,EAAE;KACZ;IACD,aAAa,GAAW,EAAE;IAC1B,OAAO,GAAG,KAAK;IACf,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE;IACvB;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;AAC9C,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI;AAC3B,gBAAA,IAAI,GAAG,CAAC,IAAI,EAAE;AACZ,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA,CAAE,CAAC,EAAE;wBACzC,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,qBAAA,CAAC;gBACJ;YACF,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;YACxB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9C;IACF;IACA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;QAC/B,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAE1G,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AACrC,YAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC;QACpC;QACA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AAC9C,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAC9C,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA,CAAE,CAAC,EAAE;oBACzC,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,iBAAA,CAAC;YACJ,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;gBACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAC1C,CAAC;AACF,SAAA,CAAC;IACJ;uGAtDW,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBtC,84EAyDA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7CY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,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,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,qXAAE,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIvG,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAAA,OAAA,EAC7B,CAAC,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,wBAAwB,CAAC,EAAA,QAAA,EAAA,84EAAA,EAAA;;;MEJxG,YAAY,CAAA;AACvB,IAAA,SAAS,CAAC,IAA6B,EAAA;AACrC,QAAA,OAAOA,iBAAe,CAAC,IAAI,CAAC;IAC9B;uGAHW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;MAYY,gBAAgB,CAAA;AAC3B,IAAA,SAAS,CAAC,IAA6B,EAAA;AACrC,QAAA,OAAOC,cAAY,CAAC,IAAI,CAAC;IAC3B;uGAHW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;MAYY,cAAc,CAAA;AACzB,IAAA,SAAS,CAAC,IAA6B,EAAA;AACrC,QAAA,OAAOC,eAAa,CAAC,IAAI,CAAC;IAC5B;uGAHW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;MAYY,aAAa,CAAA;AACxB,IAAA,SAAS,CACP,IAA6B,EAC7B,MAAA,GAAqC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAA;QAExF,MAAM,CAAC,GAAGC,mBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC;QAC5C,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG;IACvE;uGAPW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;AAUD;AACM,SAAUH,iBAAe,CAAC,CAA0B,EAAA;AACxD,IAAA,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,EAAE;AAEjB,IAAA,QACE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,cAAc;AAE3H;AAEA;AACM,SAAUC,cAAY,CAAC,CAA0B,EAAA;AACrD,IAAA,MAAM,IAAI,GAAGD,iBAAe,CAAC,CAAC,CAAC;AAC/B,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,GAAG;AAErB,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7D;AAEA;AACM,SAAUE,eAAa,CAAC,CAA0B,EAAA;IACtD,IAAI,CAAC,CAAC,EAAE,MAAM;AAAE,QAAA,OAAO,IAAI;IAC3B,OAAO,CAAC,CAAC,MAAM;AACjB;AACA;;AAEG;AACG,SAAUC,mBAAiB,CAAC,KAAgC,EAAA;AAChE,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI;;IAGvB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACvC,IAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;AAE3B,IAAA,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;AACtC;;MChFa,aAAa,CAAA;AACxB,IAAA,SAAS,CAAC,IAA6B,EAAA;AACrC,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC;IAC5B;uGAHW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,IAAI;mBAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;;MAQ5C,QAAQ,CAAA;AACnB,IAAA,SAAS,CAAI,GAA2B,EAAE,KAAK,GAAG,CAAC,EAAA;AACjD,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD;uGAHW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,IAAI;mBAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;;MAQvC,QAAQ,CAAA;AACnB,IAAA,SAAS,CAAI,GAA2B,EAAE,KAAK,GAAG,CAAC,EAAA;AACjD,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9C;uGAHW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,IAAI;mBAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;;MAQvC,aAAa,CAAA;AACxB,IAAA,SAAS,CAAC,GAAiC,EAAE,KAAK,GAAG,CAAC,EAAA;QACpD,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,MAAM;AAC9B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9C;uGAJW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,IAAI;mBAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;;AAOzD;AACM,SAAU,aAAa,CAAC,CAA0B,EAAA;AACtD,IAAA,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAkB,OAAO,CAAC,CAAC,CAAC,CAAC;AAClG;AAEA;AACM,SAAU,eAAe,CAAC,CAA0B,EAAA;IACxD,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AACnC;;ACEM,MAAO,kBAAmB,SAAQ,aAAa,CAAA;AAClC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;;;AAG1D,IAAA,KAAK,GAAG,MAAM,CAAS,EAAE,iDAAC;;AAG1B,IAAA,KAAK,GAAG,MAAM,CAAW,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,iDAAC;IAE1E,OAAO,GAAG,KAAK;AACf,IAAA,IAAI;AACJ,IAAA,SAAS;IACT,MAAM,GAAG,GAAG;IACZ,QAAQ,GAAG,EAAE;IACb,eAAe,GAAa,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAC5C,IAAA,SAAS,GAAG,MAAM,CAAC,CAAC,qDAAC;IACrB,QAAQ,GAAA;AACN,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACpB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,KAAI;YACR,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;AACtD,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS;YAE3C,IAAI,MAAM,GAAG,EAAE;YACf,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,GAAG,CAAA,OAAA,EAAU,MAAM,EAAE,WAAW,EAAE,EAAE;YAC5C;YACA,OAAO;gBACL,IAAI;gBACJ,MAAM;gBACN,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE;gBACnD,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS;aACjC;AACH,QAAA,CAAC,CAAC;;AAEF,QAAA,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAC7B,oBAAoB,EAAE,EACtB,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACzB,SAAS,CAAC,CAAC,MAAM,KAAI;AACnB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,gBAAgB;YACjC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1F,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;gBACpB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK;AACvC,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB,CAAC;AACF,SAAA,CAAC;;AAGJ,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;IACpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,IAAA,MAAM,CAAC,CAAY,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;AACvB,YAAA,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;AACzD,YAAA,mBAAmB,EAAE,OAAO;YAC5B,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;IACJ;AAEA,IAAA,QAAQ,CAAC,EAAU,EAAA;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACtC;AAEA,IAAA,YAAY,CAAC,CAAO,EAAA;;;QAGlB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC;IACnC;AAEA,IAAA,aAAa,CAAC,CAAO,EAAA;QACnB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC;IACpC;IAEA,SAAS,GAAG,CAAC,CAAS,EAAE,CAAO,KAAK,CAAC,CAAC,EAAE;uGAvH7B,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzC/B,+qTA+NA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED3MI,YAAY,8BACZ,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAQnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAPf,gBAAgB,gDAChB,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACd,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACZ,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACb,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACb,QAAQ,wCACR,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAOJ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAxB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EACtB;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,kBAAkB;wBAClB,cAAc;wBACd,mBAAmB;wBACnB,gBAAgB;wBAChB,cAAc;wBACd,YAAY;wBACZ,aAAa;wBACb,aAAa;wBACb,QAAQ;wBACR,aAAa;wBACb,eAAe;wBACf,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,+qTAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA;;;AEhBG,MAAO,qCAAsC,SAAQ,aAAa,CAAA;AACtE,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,WAAW;IACX,MAAM,GAAG,sBAAsB;IAC/B,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE;IACvB;IACA,cAAc,GAAA;QACZ,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACtD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI;YAC7B,CAAC;AACF,SAAA,CAAC;IACJ;IACA,OAAO,GAAA;QACL,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACxD,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,OAAO,EAAE,iCAAiC;AAC3C,aAAA;AACF,SAAA,CAAC;QACF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC3C,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AAC/C,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,wBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;;;AAGhB,wBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,UAAoC;AAC9D,wBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;oBACvC,CAAC;AACD,oBAAA,KAAK,EAAE,CAAC,CAAC,KAAI;wBACX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;oBACtC,CAAC;AACF,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IACA,MAAM,GAAA;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACxD,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE;AACJ,gBAAA,OAAO,EAAE,EAAE;AACZ,aAAA;AACF,SAAA,CAAC;QACF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC3C,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;AACtD,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,wBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,UAAoC;AAC9D,wBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;oBACvC,CAAC;AACD,oBAAA,KAAK,EAAE,CAAC,CAAC,KAAI;wBACX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;oBACtC,CAAC;AACF,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;uGA3DW,qCAAqC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArC,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBlD,88EA6DA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5CY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;2FAIlF,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBANjD,SAAS;+BACE,0CAA0C,EAAA,OAAA,EAC3C,CAAC,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,88EAAA,EAAA;;;MEPnF,6BAA6B,CAAA;AACxC,IAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,sDAAoB;IAChD,MAAM,GAAQ,sBAAsB;uGAFzB,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV1C,ovCAgCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1BY,aAAa,EAAA,CAAA,EAAA,CAAA;;2FAIZ,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;+BACE,iCAAiC,EAAA,OAAA,EAClC,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,ovCAAA,EAAA;;;AE2BpB,MAAO,oCAAqC,SAAQ,aAAa,CAAA;AACrE,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC3C,YAAY,GAAuB,EAAE;IACrC,MAAM,GAAG,CAAC;AACV,IAAA,KAAK,GAAG;AACN,QAAA;AACE,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,IAAI,EAAE,WAAW;AAClB,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,MAAM,EAAE,SAAS;AAClB,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,MAAM,EAAE,UAAU;AACnB,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,MAAM,EAAE,UAAU;AACnB,SAAA;KACF;AACD,IAAA,aAAa,GAAQ;AACnB,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,MAAM,EAAE,EAAE;KACX;IACD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAI;YAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;YACpE,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,aAAa,CAAC,MAAM,GAAI,MAAiB,CAAC,WAAW,EAAE;YAC9D;iBAAO;AACL,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM;YAClC;YACA,IAAI,CAAC,gBAAgB,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;IACA,gBAAgB,GAAA;AACd,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,IAAI,EAAE,gBAAgB;SACvB;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC;QAClE,IAAI,YAAY,EAAE;AAChB,YAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,YAAY;QAClC;QACA,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AAC3D,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI;YAC9B,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,oBAAoB,CAAC,OAAO,EAAA;AAC1B,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO;AAC1B,aAAA,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS;aAC5D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACpB,YAAA,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,EAAE;AAC1B,QAAA,CAAC;aACA,IAAI,CAAC,GAAG,CAAC;IACd;AACA,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,kBAAkB;AAC7B,YAAA,IAAI,EAAE;AACJ,gBAAA,GAAG,EAAE,GAAG;AACT,aAAA;SACF;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;IAChC;uGAxEW,oCAAoC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,0HCjCjD,kxBAwBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDJI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,gBAAgB,gIAChB,aAAa,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,YAAY,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,8BACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,6BAA6B,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,UAAU,oOACV,cAAc,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;2FAKL,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAhBhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yCAAyC,EAAA,OAAA,EAC1C;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,aAAa;wBACb,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,6BAA6B;wBAC7B,UAAU;wBACV,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,kxBAAA,EAAA;;;AE1BI,MAAM,4BAA4B,GAAG;AAC1C,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,oCAAoC;AAChD,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAE,qCAAqC;AACjD,KAAA;;;ACRI,MAAM,WAAW,GAAG;AACzB,IAAA;AACE,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,SAAS,EAAE,yBAAyB;AACrC,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,SAAS,EAAE,+BAA+B;AAC3C,KAAA;;;MCLU,eAAe,CAAA;AAClB,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC;AACjD,IAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AACnC,IAAA,IAAI,CAAC,IAAS,EAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B;uGALW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACqBK,MAAO,mBAAoB,SAAQ,aAAa,CAAA;AACpD,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;AAC9C,IAAA,QAAQ;IACR,OAAO,GAAa,EAAE;AACtB,IAAA,IAAI;IACJ,UAAU,GAAG,KAAK;IAClB,QAAQ,GAAG,EAAE;AACb,IAAA,WAAW,GAAG,KAAK,CAAC,CAAC,uDAAC;IACtB,IAAI,GAAG,EAAE;AACT,IAAA,SAAS;AACT,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBACxB,IAAI,CAAC,eAAe,EAAE;YACxB;AACF,QAAA,CAAC,CAAC;IACJ;IACA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;QACtD,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrC,YAAA,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE;AAClC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB;AACA,YAAA,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE;AAC9B,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB;AACF,QAAA,CAAC,CAAC;IACJ;IACA,KAAK,GAAA;QACH,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AAC3D,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI;YAC3B,CAAC;AACF,SAAA,CAAC;IACJ;IACA,YAAY,GAAA;QACV,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACnE,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,gBAAA,IAAI,GAAG,CAAC,IAAI,EAAE;AACZ,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAA,EAAA,EAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAA,OAAA,CAAS,CAAC;gBACvF;qBAAO;AACL,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA,GAAA,CAAK,CAAC;gBACnC;YACF,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACxD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI;YAC5B,CAAC;AACF,SAAA,CAAC;IACJ;IACA,MAAM,GAAA;QACJ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACnD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACxB,CAAC;AACF,SAAA,CAAC;IACJ;IACA,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACrD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACzB,CAAC;AACF,SAAA,CAAC;IACJ;uGA3EW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,4SC1BhC,s/EA8DA,EAAA,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlDI,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,kBAAkB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAElB,aAAa,oHACb,YAAY,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGf,YAAY,qLANZ,eAAe,CAAA,CAAA,EAAA,CAAA;;2FAWN,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAjB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EACvB;wBACP,aAAa;wBACb,UAAU;wBACV,kBAAkB;wBAClB,eAAe;wBACf,aAAa;wBACb,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,YAAY;wBACZ,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,s/EAAA,EAAA,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA;;;AETG,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AAClD,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IACzC,OAAO,GAAa,EAAE;AACtB,IAAA,IAAI;AACJ,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;IACA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,yBAAyB,CAAC,YAAoB,EAAA;AAC5C,QAAA,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,CAAA,aAAA,EAAgB,YAAY,CAAA,eAAA,CAAiB;AACrD,YAAA,IAAI,EAAE,gBAAgB;SACvB;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI;AACvB,gBAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;YACtB,CAAC;AACF,SAAA,CAAC;IACJ;uGA1BW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,qGCb9B,oZAWA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHY,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,yFAAE,iBAAiB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAK/C,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAC,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAA,aAAA,EAG5C,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,oZAAA,EAAA;;;MEC1B,sBAAsB,CAAA;AACjC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IACzC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,QAAQ,OAAM,CAAC;AACvB,SAAA,CAAC;IACJ;uGANW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZnC,qCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDMY,YAAY,+BAAE,cAAc,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAK3B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,yBAAyB,EAAA,OAAA,EAC1B,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,aAAA,EAGxB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,qCAAA,EAAA;;;MEI1B,kBAAkB,CAAA;AAC7B,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,QAAQ;IACR,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,oBAAoB,CAAC,MAAc,EAAA;AACjC,QAAA,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,CAAA,OAAA,EAAU,MAAM,CAAA,CAAE;AAC1B,YAAA,IAAI,EAAE,gBAAgB;SACvB;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI;YAC1B,CAAC;AACF,SAAA,CAAC;IACJ;uGArBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd/B,slBAoBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDXY,YAAY,+BAAE,cAAc,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,MAAA,CAAE,iBAAiB,EAAA,OAAA,iBAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;;gGAKjE,kBAAkB,EAAA,mBAAA,EAAA,MAAA,CAAA,OAAA,iBAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,eAAA,EAAA,UAAA,KAAA,EAAA,UAAA,EAAA,CAAA;sBAP9B,SAAS;AACE,gBAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EACtB,CAAC,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAA,aAAA,EAG1E,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,slBAAA,EAAA;;;MED1B,iBAAiB,CAAA;IACa,QAAQ,GAAG,IAAI;IACxD,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;AACnB,IAAA,WAAW,GAAG,KAAK,CAAC,IAAI,uDAAC;IACzB,MAAM,GAAG,MAAM,EAAU;IACzB,QAAQ,GAAG,MAAM,EAAE;IACnB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAE;IACb,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC;IACxC;IACA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC;IAC1C;uGAZW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX9B,03BAwBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlBY,YAAY,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAK5B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,aAAA,EAGzB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,03BAAA,EAAA;;sBAGpC,WAAW;uBAAC,0BAA0B;;;MEI5B,uBAAuB,CAAA;AAClC,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;AAC9C,IAAA,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AAChC,IAAA,QAAQ,GAAG,MAAM,CAAC,CAAC,oDAAC;AACpB,IAAA,QAAQ;IACR,KAAK,GAAU,EAAE;IACjB,QAAQ,GAAG,EAAE;IACb,IAAI,GAAG,EAAE;IACT,IAAI,GAAG,EAAE;AACT,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;AAC1B,YAAA,IAAI,EAAE,CAAC,MAAW,KAAI;AACpB,gBAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AAClC,gBAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;YACzB,CAAC;AACF,SAAA,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACrB,gBAAA,KAAK,CAAC;oBACJ,IAAI,CAAC,uBAAuB,EAAE;oBAC9B;AACF,gBAAA,KAAK,CAAC;oBACJ,IAAI,CAAC,uBAAuB,EAAE;oBAC9B;AACF,gBAAA;oBACE;;AAEN,QAAA,CAAC,CAAC;IACJ;IACA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACtB;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACtB;QACA,IAAI,CAAC,YAAY,EAAE;IACrB;IACA,YAAY,GAAA;QACV,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACnE,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI;AACxB,gBAAA,IAAI,GAAG,CAAC,IAAI,EAAE;AACZ,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAA,EAAA,EAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAA,OAAA,CAAS,CAAC;gBAChF;qBAAO;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA,GAAA,CAAK,CAAC;gBAC5B;YACF,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,MAAM,CAAC,IAAS,EAAA;QACd,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACnD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACzB,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,QAAQ,CAAC,IAAS,EAAA;QAChB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACrD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;gBACxB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC;oBAC7E,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7B;YACF,CAAC;AACF,SAAA,CAAC;IACJ;IACA,uBAAuB,GAAA;QACrB,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACpE,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAI,CAAC,KAAK,GAAGG,KAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;gBAClC,MAAM,GAAG,GAAGA,KAAG,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;AACpC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACvB,CAAC;AACF,SAAA,CAAC;IACJ;IACA,uBAAuB,GAAA;QACrB,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACpE,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAI,CAAC,KAAK,GAAGA,KAAG,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;gBACtC,MAAM,GAAG,GAAGA,KAAG,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC;AACxC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACvB,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,WAAW,CAAC,GAAa,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC;AACnE,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD;YACA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAC9C,gBAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBACvB,CAAC;AACF,aAAA,CAAC;QACJ;IACF;AACA,IAAA,MAAM,CAAC,WAAgB,EAAA;QACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;YAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS;AACnD,QAAA,CAAC,CAAC;IACJ;uGA3GW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBpC,ixBAoBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTY,YAAY,+BAAE,aAAa,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,oOAAE,iBAAiB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAK7G,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,WAC5B,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAAA,aAAA,EAG1G,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,ixBAAA,EAAA;;;AEPhC,MAAM,UAAU,GAAG;AACxB,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,mBAAmB;AAC9B,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,SAAS,EAAE,iBAAiB;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,SAAS,EAAE,sBAAsB;AAClC,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,SAAS,EAAE,kBAAkB;AAC9B,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,SAAS,EAAE,uBAAuB;AACnC,KAAA;;;ACbG,MAAO,mBAAoB,SAAQ,aAAa,CAAA;AACpD,IAAA,IAAI,GAAG,MAAM,CAAc,IAAI,gDAAC;AAChC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gDAAC;AACnD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,oDAAC;AACpD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,qDAAC;AACtD,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QAC7B,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC;AACnD,QAAA,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG;AACnH,IAAA,CAAC,0DAAC;IACF,QAAQ,GAAA;QACN,IAAI,CAAC,GAAG,EAAE;IACZ;IACA,GAAG,GAAA;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB,CAAC;AACF,SAAA,CAAC;IACJ;;AAEA,IAAA,cAAc,KAAI;AAClB,IAAA,WAAW,KAAI;AACf,IAAA,YAAY,KAAI;AAChB,IAAA,aAAa,KAAI;AACjB,IAAA,MAAM,KAAI;AACV,IAAA,QAAQ,KAAI;AACZ,IAAA,QAAQ,KAAI;AACZ,IAAA,QAAQ,KAAI;AACZ,IAAA,aAAa,KAAI;uGA7BN,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBhC,giLA8HA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlHY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,0IAAE,aAAa,EAAA,CAAA,EAAA,CAAA;;2FAIrF,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EACvB,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,giLAAA,EAAA;;AAmCnG;AACM,SAAU,eAAe,CAAC,CAA0B,EAAA;AACxD,IAAA,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,EAAE;AAEjB,IAAA,QACE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,cAAc;AAE3H;AAEA;AACM,SAAU,YAAY,CAAC,CAA0B,EAAA;AACrD,IAAA,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC;AAC/B,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,GAAG;AAErB,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7D;AAEA;AACM,SAAU,aAAa,CAAC,CAA0B,EAAA;IACtD,IAAI,CAAC,CAAC,EAAE,MAAM;AAAE,QAAA,OAAO,IAAI;IAC3B,OAAO,CAAC,CAAC,MAAM;AACjB;AACA;;AAEG;AACG,SAAU,iBAAiB,CAAC,KAAgC,EAAA;AAChE,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI;;IAGvB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACvC,IAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;AAE3B,IAAA,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;AACtC;;AE9EO,MAAM,gBAAgB,GAAG;AAC9B,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,kBAAkB;AAC9B,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAE,mBAAmB;AAC/B,KAAA;;;ACXH;;AAEG;;;;"}
1
+ {"version":3,"file":"rolatech-angular-user.mjs","sources":["../../../../packages/angular-user/src/lib/interfaces/agent-application.ts","../../../../packages/angular-user/src/lib/pages/agent/agent-application-detail/agent-application-detail.component.ts","../../../../packages/angular-user/src/lib/pages/agent/agent-application-detail/agent-application-detail.component.html","../../../../packages/angular-user/src/lib/pages/agent/agent-application/agent-application.component.ts","../../../../packages/angular-user/src/lib/pages/agent/agent-application/agent-application.component.html","../../../../packages/angular-user/src/lib/user.pipe.ts","../../../../packages/angular-user/src/lib/user-roles.pipe.ts","../../../../packages/angular-user/src/lib/pages/user-index/user-index.component.ts","../../../../packages/angular-user/src/lib/pages/user-index/user-index.component.html","../../../../packages/angular-user/src/lib/pages/agent-manage/agent-manage-application-detail/agent-manage-application-detail.component.ts","../../../../packages/angular-user/src/lib/pages/agent-manage/agent-manage-application-detail/agent-manage-application-detail.component.html","../../../../packages/angular-user/src/lib/components/agent-application-item/agent-application-item.component.ts","../../../../packages/angular-user/src/lib/components/agent-application-item/agent-application-item.component.html","../../../../packages/angular-user/src/lib/pages/agent-manage/agent-manage-application-index/agent-manage-application-index.component.ts","../../../../packages/angular-user/src/lib/pages/agent-manage/agent-manage-application-index/agent-manage-application-index.component.html","../../../../packages/angular-user/src/lib/pages/agent-manage/agent-manage-application.routes.ts","../../../../packages/angular-user/src/lib/pages/agent/agent.routes.ts","../../../../packages/angular-user/src/lib/user-data.service.ts","../../../../packages/angular-user/src/lib/components/user-layout/user-layout.component.ts","../../../../packages/angular-user/src/lib/components/user-layout/user-layout.component.html","../../../../packages/angular-user/src/lib/pages/user-info/user-info.component.ts","../../../../packages/angular-user/src/lib/pages/user-info/user-info.component.html","../../../../packages/angular-user/src/lib/pages/user-community/user-community.component.ts","../../../../packages/angular-user/src/lib/pages/user-community/user-community.component.html","../../../../packages/angular-user/src/lib/pages/user-store/user-store.component.ts","../../../../packages/angular-user/src/lib/pages/user-store/user-store.component.html","../../../../packages/angular-user/src/lib/components/user-item/user-item.component.ts","../../../../packages/angular-user/src/lib/components/user-item/user-item.component.html","../../../../packages/angular-user/src/lib/pages/user-follow-info/user-follow-info.component.ts","../../../../packages/angular-user/src/lib/pages/user-follow-info/user-follow-info.component.html","../../../../packages/angular-user/src/lib/pages/user.routes.ts","../../../../packages/angular-user/src/lib/pages/user-detail/user-detail.component.ts","../../../../packages/angular-user/src/lib/pages/user-detail/user-detail.component.html","../../../../packages/angular-user/src/lib/pages/user-manage/user-manage.routes.ts","../../../../packages/angular-user/src/rolatech-angular-user.ts"],"sourcesContent":["import { User } from '@rolatech/angular-common';\n\nexport interface AgentApplicationRequest {\n firstName: string;\n lastName: string;\n businessName: string;\n website: string;\n email: string;\n phone: string;\n experienceYears: number;\n}\nexport interface AgentApplication {\n id: string;\n firstName: string;\n lastName: string;\n businessName: string;\n website: string;\n email: string;\n phone: string;\n experienceYears: number;\n status: AgentApplicationStatus;\n documents: string[];\n createdAt: string;\n userId: string;\n user: User;\n}\nexport enum AgentApplicationStatus {\n PENDING = 'Pending',\n APPROVED = 'Approved',\n REJECTED = 'Rejected',\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n BaseComponent,\n ContainerComponent,\n EmptyComponent,\n RichLabelComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { AuthAgentService } from '@rolatech/angular-auth';\nimport { AgentApplicationStatus } from '../../../interfaces/agent-application';\n\n@Component({\n selector: 'rolatech-agent-application-detail',\n imports: [CommonModule, ContainerComponent, ToolbarComponent, RichLabelComponent, EmptyComponent],\n templateUrl: './agent-application-detail.component.html',\n styleUrl: './agent-application-detail.component.scss',\n})\nexport class AgentApplicationDetailComponent extends BaseComponent implements OnInit {\n authAgentService = inject(AuthAgentService);\n application: any = {\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n businessName: '',\n website: '',\n };\n applicationStatus = AgentApplicationStatus;\n ngOnInit(): void {\n this.getApplication();\n }\n getApplication() {\n this.authAgentService.myApplication().subscribe({\n next: (res) => {\n this.application = res.data;\n },\n });\n }\n}\n","<rolatech-container>\n <rolatech-toolbar title=\"My application\" large>\n <div class=\"text-lg font-bold\">\n {{ applicationStatus[application.status] }}\n </div>\n </rolatech-toolbar>\n\n <div>\n <hr class=\"my-3\" />\n <div>\n <div class=\"text-lg font-bold py-2\" i18n>Application details</div>\n <div class=\"flex overflow-x-scroll scrollbar-hide\">\n <div class=\"flex flex-col w-full\">\n <rolatech-rich-label label=\"FirstName\" [title]=\"application.firstName\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Email\" [title]=\"application.email\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Phone\" [title]=\"application.phone\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Business Name\" [title]=\"application.businessName\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Experience Years\" [title]=\"application.experienceYears\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Created At\" [title]=\"application.createdAt\"></rolatech-rich-label>\n </div>\n </div>\n <hr class=\"my-3\" />\n </div>\n <div>\n <div class=\"text-lg font-bold py-2\" i18n>Documents</div>\n @if (application.documents?.length > 0) {\n @for (item of application.documents; track $index) {\n <a class=\"underline underline-offset-4\" [href]=\"item\" target=\"_blank\">Document: {{ $index + 1 }}</a>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n </div>\n </div>\n</rolatech-container>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AuthAgentService } from '@rolatech/angular-auth';\nimport { BaseComponent } from '@rolatech/angular-components';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'rolatech-agent-application',\n imports: [CommonModule, MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule, MatProgressSpinnerModule],\n templateUrl: './agent-application.component.html',\n styleUrl: './agent-application.component.scss',\n})\nexport class AgentApplicationComponent extends BaseComponent implements OnInit {\n authAgentService = inject(AuthAgentService);\n application: any = {\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n businessName: '',\n website: '',\n };\n selectedFiles: File[] = [];\n sending = false;\n ngOnInit(): void {\n this.getApplication();\n }\n getApplication() {\n this.authAgentService.myApplication().subscribe({\n next: (res) => {\n this.application = res.data;\n if (res.data) {\n this.router.navigate([`./${res.data.id}`], {\n relativeTo: this.route,\n });\n }\n },\n });\n }\n onFileSelected(event: any) {\n const input = event.target as HTMLInputElement;\n if (input?.files?.length) {\n this.selectedFiles = Array.from(input.files);\n }\n }\n submitApplication() {\n this.sending = true;\n const formData = new FormData();\n formData.append('application', new Blob([JSON.stringify(this.application)], { type: 'application/json' }));\n\n for (const file of this.selectedFiles) {\n formData.append('documents', file);\n }\n this.authAgentService.apply(formData).subscribe({\n next: (res) => {\n this.sending = false;\n this.snackBarService.open('Sent successfully');\n this.router.navigate([`./${res.data.id}`], {\n relativeTo: this.route,\n });\n },\n error: (error) => {\n this.sending = false;\n this.snackBarService.open(error.message);\n },\n });\n }\n}\n","<section id=\"application\" class=\"p-10\">\n <h2 class=\"text-2xl font-semibold text-center mb-6\">Agent Application Form</h2>\n <form class=\"max-w-2xl mx-auto space-y-4\" (submit)=\"submitApplication()\">\n <mat-form-field class=\"w-full\">\n <mat-label>First Name</mat-label>\n <input matInput [(ngModel)]=\"application.firstName\" name=\"firstName\" required />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>Last Name</mat-label>\n <input matInput [(ngModel)]=\"application.lastName\" name=\"lastName\" required />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>Email Address</mat-label>\n <input matInput [(ngModel)]=\"application.email\" name=\"email\" type=\"email\" required />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>Phone Number</mat-label>\n <input matInput [(ngModel)]=\"application.phone\" name=\"phone\" type=\"tel\" required />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>Business Name</mat-label>\n <input matInput [(ngModel)]=\"application.businessName\" name=\"businessName\" required />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>WebSite</mat-label>\n <input matInput [(ngModel)]=\"application.website\" name=\"website\" />\n </mat-form-field>\n\n <mat-form-field class=\"w-full\">\n <mat-label>Experience Years</mat-label>\n <input matInput [(ngModel)]=\"application.experienceYears\" name=\"experienceYears\" required />\n </mat-form-field>\n\n <div>\n <div class=\"mb-2\">\n <div class=\"text-xl font-bold\" i18n>Upload Certification (PDF)</div>\n <div class=\"text-sm opacity-70\" i18n>Safeagent, UKALA, or Propertymark certification</div>\n </div>\n <input type=\"file\" (change)=\"onFileSelected($event)\" accept=\".pdf\" required />\n </div>\n\n <button mat-flat-button type=\"submit\" [disabled]=\"sending\">\n <span style=\"display: flex; align-items: center\">\n @if (sending) {\n <mat-progress-spinner diameter=\"20\" mode=\"indeterminate\" [style.marginRight.px]=\"8\"></mat-progress-spinner>\n }\n {{ sending ? 'Requesting...' : 'Submit Application' }}\n </span>\n </button>\n <!-- <button mat-flat-button type=\"submit\">Submit Application</button> -->\n </form>\n</section>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { User } from '@rolatech/angular-common';\n\n@Pipe({\n name: 'userName',\n standalone: true,\n pure: true,\n})\nexport class UserNamePipe implements PipeTransform {\n transform(user: User | null | undefined): string {\n return userDisplayName(user);\n }\n}\n\n@Pipe({\n name: 'userInitials',\n standalone: true,\n pure: true,\n})\nexport class UserInitialsPipe implements PipeTransform {\n transform(user: User | null | undefined): string {\n return userInitials(user);\n }\n}\n\n@Pipe({\n name: 'userAvatar',\n standalone: true,\n pure: true,\n})\nexport class UserAvatarPipe implements PipeTransform {\n transform(user: User | null | undefined): string | null {\n return userAvatarUrl(user);\n }\n}\n\n@Pipe({\n name: 'userSince',\n standalone: true,\n pure: true,\n})\nexport class UserSincePipe implements PipeTransform {\n transform(\n user: User | null | undefined,\n format: Intl.DateTimeFormatOptions = { year: 'numeric', month: 'short', day: '2-digit' },\n ): string {\n const d = parseUserDateTime(user?.createdAt);\n return d ? new Intl.DateTimeFormat(undefined, format).format(d) : '—';\n }\n}\n/** Best display name with safe fallbacks */\nexport function userDisplayName(u: User | null | undefined): string {\n if (!u) return '';\n\n return (\n u.name?.trim() || [u.firstName, u.lastName].filter(Boolean).join(' ').trim() || u.username || u.email || 'Unknown User'\n );\n}\n\n/** Initials for avatar fallback */\nexport function userInitials(u: User | null | undefined): string {\n const name = userDisplayName(u);\n if (!name) return 'U';\n\n const parts = name.split(/\\s+/).slice(0, 2);\n return parts.map((p) => p[0]?.toUpperCase() ?? '').join('');\n}\n\n/** Avatar URL or null (let UI render initials) */\nexport function userAvatarUrl(u: User | null | undefined): string | null {\n if (!u?.avatar) return null;\n return u.avatar;\n}\n/**\n * Parses \"yyyy-MM-dd HH:mm:ss\" into Date (local)\n */\nexport function parseUserDateTime(value: string | null | undefined): Date | null {\n if (!value) return null;\n\n // Convert to ISO-like: \"2025-05-06T14:26:17\"\n const isoLike = value.replace(' ', 'T');\n const d = new Date(isoLike);\n\n return isNaN(d.getTime()) ? null : d;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { User } from '@rolatech/angular-common';\n\n@Pipe({ name: 'userRoles', standalone: true, pure: true })\nexport class UserRolesPipe implements PipeTransform {\n transform(user: User | null | undefined): string[] {\n return userRoleNames(user);\n }\n}\n\n@Pipe({ name: 'take', standalone: true, pure: true })\nexport class TakePipe implements PipeTransform {\n transform<T>(arr: T[] | null | undefined, count = 2): T[] {\n return (arr ?? []).slice(0, Math.max(0, count));\n }\n}\n\n@Pipe({ name: 'skip', standalone: true, pure: true })\nexport class SkipPipe implements PipeTransform {\n transform<T>(arr: T[] | null | undefined, count = 2): T[] {\n return (arr ?? []).slice(Math.max(0, count));\n }\n}\n\n@Pipe({ name: 'moreCount', standalone: true, pure: true })\nexport class MoreCountPipe implements PipeTransform {\n transform(arr: unknown[] | null | undefined, shown = 2): number {\n const len = (arr ?? []).length;\n return Math.max(0, len - Math.max(0, shown));\n }\n}\n/** Role names: [\"USER\", \"ADMIN\"] */\nexport function userRoleNames(u: User | null | undefined): string[] {\n return (u?.roles ?? []).map((r) => r.name || r.authority).filter((v): v is string => Boolean(v));\n}\n\n/** Single primary role (for tables) */\nexport function userPrimaryRole(u: User | null | undefined): string {\n return userRoleNames(u)[0] ?? '—';\n}\n","import { Component, computed, effect, inject, OnInit, signal, viewChild } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { User, AngularCommonModule } from '@rolatech/angular-common';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { Router, RouterLink } from '@angular/router';\nimport { UserInitialsPipe, UserAvatarPipe, UserNamePipe, UserSincePipe } from '../../user.pipe';\nimport { UserRolesPipe, TakePipe, MoreCountPipe } from '../../user-roles.pipe';\nimport { MatSelectModule } from '@angular/material/select';\nimport { distinctUntilChanged, finalize, map, switchMap } from 'rxjs';\n\n@Component({\n selector: 'rolatech-user-index',\n imports: [\n CommonModule,\n MatPaginatorModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n AngularCommonModule,\n UserInitialsPipe,\n UserAvatarPipe,\n UserNamePipe,\n UserSincePipe,\n UserRolesPipe,\n TakePipe,\n MoreCountPipe,\n MatSelectModule,\n MatMenuModule,\n ],\n templateUrl: './user-index.component.html',\n styleUrl: './user-index.component.scss',\n})\nexport class UserIndexComponent extends BaseComponent implements OnInit {\n private readonly authUserService = inject(AuthUserService);\n // data\n // loading = signal(false);\n users = signal<User[]>([]);\n\n // your roles list (load from API if needed)\n roles = signal<string[]>(['ADMIN', 'AGENT', 'LANDLORD', 'TENANT', 'USER']);\n\n loading = false;\n meta: any;\n pageEvent!: PageEvent;\n length = 100;\n pageSize = 15;\n pageSizeOptions: number[] = [5, 10, 25, 100];\n pageIndex = signal(0);\n ngOnInit(): void {\n const sub = this.route.queryParamMap\n .pipe(\n map((p) => {\n const page = p.get('page') ? Number(p.get('page')) : 1;\n this.pageIndex.set(Math.max(page - 1, 0));\n const status = p.get('status') || undefined;\n\n let filter = '';\n if (status) {\n filter = `status:${status?.toUpperCase()}`;\n }\n return {\n page,\n filter,\n limit: p.get('limit') ? Number(p.get('limit')) : 15,\n sort: p.get('sort') || undefined,\n };\n }),\n // Cheap deep compare via JSON to avoid spam calls when nothing changed\n map((o) => JSON.stringify(o)),\n distinctUntilChanged(),\n map((s) => JSON.parse(s)),\n switchMap((params) => {\n this.loading = true;\n params['sort'] = 'createdAt desc';\n return this.authUserService.findAll(params).pipe(finalize(() => (this.loading = false)));\n }),\n )\n .subscribe({\n next: (res) => {\n this.users.set(res.data);\n this.meta = res.meta;\n this.length = res.meta.pagination.count;\n this.loading = false;\n },\n error: () => {\n this.users.set([]);\n this.length = 0;\n this.loading = false;\n },\n });\n\n // // auto-unsubscribe on destroy\n this.destroyRef.onDestroy(() => sub.unsubscribe());\n }\n\n // fetch(): void {\n // this.loading.set(true);\n // this.authUserService\n // .findAll({\n // // filter: `name:${this.q()}`,\n // // page: this.page(),\n // // limit: this.size(),\n // // sort: 'createdAt desc',\n // })\n // .pipe(finalize(() => this.loading.set(false)))\n // .subscribe((res) => {\n // this.users.set(res.data ?? []);\n // this.total.set(res.meta.pagination.count ?? 0);\n // });\n // }\n\n // search(e: any) {\n // this.isLoading = true;\n // const word = e.target.value;\n // const options = {\n // filter: `name:${word}`,\n // };\n // this.authUserService.findAll(options).subscribe({\n // next: (res: any) => {\n // this.users = res.data;\n // this.length = res.meta.pagination.count;\n // this.isLoading = false;\n // },\n // error: (error) => {\n // this.isLoading = false;\n // this.snackBarService.open(error.message);\n // },\n // });\n // }\n onPage(e: PageEvent) {\n this.router.navigate([], {\n queryParams: { page: e.pageIndex + 1, limit: e.pageSize },\n queryParamsHandling: 'merge',\n replaceUrl: true, // optional: avoid stacking history on every page click\n });\n }\n\n openUser(id: string) {\n this.router.navigate(['/users', id]);\n }\n\n toggleStatus(u: User) {\n // call your API then refresh\n // this.api.toggleStatus(u.id)...\n console.log('toggleStatus', u.id);\n }\n\n resetPassword(u: User) {\n console.log('resetPassword', u.id);\n }\n\n trackById = (_: number, u: User) => u.id;\n}\n","<div class=\"p-4 space-y-4\">\n <!-- Header -->\n <div class=\"flex items-start justify-between gap-4\">\n <div>\n <h1 class=\"text-2xl font-semibold\">Users</h1>\n <p class=\"text-sm opacity-70\">Manage users, roles, and access.</p>\n </div>\n\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button>\n <mat-icon>person_add</mat-icon>\n Invite\n </button>\n </div>\n </div>\n\n <!-- Filters -->\n <!-- <div class=\"grid grid-cols-1 md:grid-cols-12 gap-3\">\n <mat-form-field class=\"md:col-span-6 w-full\">\n <mat-label>Search</mat-label>\n <input matInput [value]=\"q()\" (input)=\"onSearchInput(($any($event.target)).value)\" placeholder=\"Name, email, username\" />\n </mat-form-field>\n\n <mat-form-field class=\"md:col-span-3 w-full\">\n <mat-label>Status</mat-label>\n <mat-select [value]=\"status()\" (valueChange)=\"status.set($event); page.set(0)\">\n <mat-option value=\"\">All</mat-option>\n <mat-option value=\"ACTIVE\">Active</mat-option>\n <mat-option value=\"DISABLED\">Disabled</mat-option>\n <mat-option value=\"LOCKED\">Locked</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"md:col-span-3 w-full\">\n <mat-label>Role</mat-label>\n <mat-select [value]=\"role()\" (valueChange)=\"role.set($event); page.set(0)\">\n <mat-option value=\"\">All</mat-option>\n @for (r of roles(); track r) {\n <mat-option [value]=\"r\">{{ r }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div> -->\n\n <!-- Table card -->\n <div class=\"rounded-2xl border border-[--rt-border-color] bg-[--rt-base-background] overflow-hidden\">\n <div class=\"px-5 py-4 border-b border-[--rt-border-color] flex items-center justify-between\">\n <div class=\"font-semibold\">All users</div>\n <div class=\"text-sm opacity-70\">Total: {{ length }}</div>\n </div>\n\n <div class=\"overflow-auto\">\n <table class=\"w-full text-sm\">\n <thead class=\"bg-black/5 text-left\">\n <tr>\n <th class=\"p-4 min-w-[280px]\">User</th>\n <th class=\"p-4 min-w-[220px]\">Email</th>\n <th class=\"p-4 min-w-[220px] hidden md:table-cell\">Roles</th>\n <th class=\"p-4 min-w-[120px] hidden lg:table-cell\">Status</th>\n <th class=\"p-3 min-w-[140px] hidden lg:table-cell\">Since</th>\n <th class=\"p-3 w-[120px]\"></th>\n </tr>\n </thead>\n\n <tbody>\n @if (loading) {\n @for (_ of [1, 2, 3, 4, 5, 6, 7, 8]; track _) {\n <tr class=\"border-t border-[--rt-border-color]\">\n <td class=\"p-3\">\n <div class=\"flex items-center gap-3\">\n <div class=\"w-10 h-10 rounded-full bg-black/10\"></div>\n <div class=\"space-y-2\">\n <div class=\"w-44 h-4 bg-black/10 rounded\"></div>\n <div class=\"w-28 h-3 bg-black/10 rounded\"></div>\n </div>\n </div>\n </td>\n <td class=\"p-3\"><div class=\"w-56 h-4 bg-black/10 rounded\"></div></td>\n <td class=\"p-3 hidden md:table-cell\"><div class=\"w-40 h-4 bg-black/10 rounded\"></div></td>\n <td class=\"p-3 hidden lg:table-cell\"><div class=\"w-20 h-4 bg-black/10 rounded\"></div></td>\n <td class=\"p-3 hidden lg:table-cell\"><div class=\"w-24 h-4 bg-black/10 rounded\"></div></td>\n <td class=\"p-3 text-right\"><div class=\"w-16 h-8 bg-black/10 rounded ml-auto\"></div></td>\n </tr>\n }\n } @else {\n @if (users().length === 0) {\n <tr class=\"border-t\">\n <td class=\"p-6 text-sm opacity-70\" colspan=\"6\">No users found.</td>\n </tr>\n } @else {\n @for (u of users(); track u.id) {\n <tr class=\"border-t border-[--rt-border-color] hover:bg-black/5 cursor-pointer\" (click)=\"openUser(u.id!)\">\n <!-- User -->\n <td class=\"p-3\">\n <div class=\"flex items-center gap-3 min-w-0\">\n <div class=\"relative\">\n @if (u | userAvatar; as avatar) {\n <img class=\"w-10 h-10 rounded-full object-cover border\" [src]=\"avatar\" alt=\"avatar\" />\n } @else {\n <div\n class=\"w-10 h-10 rounded-full border bg-[--rt-brand-color] text-white flex items-center justify-center font-semibold\"\n >\n {{ u | userInitials }}\n </div>\n }\n\n <span\n class=\"absolute -right-0 -bottom-0 w-3 h-3 rounded-full border border-[--rt-border-color] bg-[--rt-base-background] flex items-center justify-center\"\n >\n <span\n class=\"w-2 h-2 rounded-full\"\n [class]=\"\n u.status.toString() === 'ACTIVE'\n ? 'bg-green-500'\n : u.status.toString() === 'LOCKED'\n ? 'bg-red-500'\n : 'bg-amber-500'\n \"\n ></span>\n </span>\n </div>\n\n <div class=\"min-w-0\">\n <div class=\"font-medium truncate\">{{ u | userName }}</div>\n <div class=\"text-xs opacity-70 truncate\">&#64;{{ u.username }}</div>\n </div>\n </div>\n </td>\n\n <!-- Email -->\n <td class=\"p-3\">\n <div class=\"truncate\">{{ u?.email ?? '—' }}</div>\n </td>\n\n <!-- Roles -->\n <td class=\"p-3 hidden md:table-cell\" (click)=\"$event.stopPropagation()\">\n @let roles = u | userRoles;\n @let shown = 2;\n\n <div class=\"flex flex-wrap items-center gap-1.5\">\n @for (r of roles | take: shown; track r) {\n <span class=\"px-2 py-0.5 rounded-full text-xs bg-black/5 border border-[--rt-border-color]\">\n {{ r }}\n </span>\n }\n\n @if ((roles | moreCount: shown) > 0) {\n <button mat-button class=\"!min-w-0 !h-6 !px-2 !text-xs\" [matMenuTriggerFor]=\"rolesMenu\">\n +{{ roles | moreCount: shown }}\n </button>\n\n <mat-menu #rolesMenu=\"matMenu\">\n @for (r of roles; track r) {\n <button mat-menu-item disabled>{{ r }}</button>\n }\n </mat-menu>\n }\n </div>\n </td>\n\n <!-- Status -->\n <td class=\"p-3 hidden lg:table-cell\">\n <span\n class=\"px-2 py-0.5 rounded-full text-xs border border-[--rt-border-color]\"\n [class]=\"\n u.status.toString() === 'ACTIVE'\n ? 'bg-green-500/10 text-green-700 border-green-500/20'\n : u.status.toString() === 'LOCKED'\n ? 'bg-red-500/10 text-red-700 border-red-500/20'\n : 'bg-amber-500/10 text-amber-700 border-amber-500/20'\n \"\n >\n {{ u?.status ?? '—' }}\n </span>\n </td>\n\n <!-- Since -->\n <td class=\"p-3 hidden lg:table-cell opacity-80\">\n {{ u | userSince }}\n </td>\n\n <!-- Actions -->\n <td class=\"p-3 text-right\" (click)=\"$event.stopPropagation()\">\n <button mat-button [matMenuTriggerFor]=\"menu\">Actions</button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"openUser(u.id!)\">\n <mat-icon>open_in_new</mat-icon>\n <span>View</span>\n </button>\n <button mat-menu-item (click)=\"toggleStatus(u)\">\n <mat-icon>{{ u.status.toString() === 'ACTIVE' ? 'block' : 'check_circle' }}</mat-icon>\n <span>{{ u.status.toString() === 'ACTIVE' ? 'Disable' : 'Enable' }}</span>\n </button>\n <button mat-menu-item (click)=\"resetPassword(u)\">\n <mat-icon>vpn_key</mat-icon>\n <span>Reset password</span>\n </button>\n </mat-menu>\n </td>\n </tr>\n }\n }\n }\n </tbody>\n </table>\n </div>\n\n <!-- Footer paginator -->\n <div class=\"px-2 py-2 border-t border-[--rt-border-color]\">\n <mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageIndex]=\"pageIndex()\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPage($event)\"\n hidePageSize\n showFirstLastButtons\n >\n </mat-paginator>\n </div>\n </div>\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n AcceptDialogComponent,\n BaseComponent,\n EmptyComponent,\n RejectDialogComponent,\n RichLabelComponent,\n ThumbnailComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AuthAgentService } from '@rolatech/angular-auth';\nimport { AgentApplication, AgentApplicationStatus } from '../../../interfaces/agent-application';\n\n@Component({\n selector: 'rolatech-agent-manage-application-detail',\n imports: [CommonModule, ToolbarComponent, MatButtonModule, RichLabelComponent, EmptyComponent],\n templateUrl: './agent-manage-application-detail.component.html',\n styleUrl: './agent-manage-application-detail.component.scss',\n})\nexport class AgentManageApplicationDetailComponent extends BaseComponent implements OnInit {\n authAgentService = inject(AuthAgentService);\n application!: AgentApplication;\n status = AgentApplicationStatus;\n ngOnInit(): void {\n this.getApplication();\n }\n getApplication() {\n this.authAgentService.getApplication(this.id).subscribe({\n next: (res) => {\n this.application = res.data;\n },\n });\n }\n approve() {\n const dialogRef = this.dialog.open(AcceptDialogComponent, {\n width: '400px',\n data: {\n title: 'Approve',\n message: 'Approve this agent application?',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.authAgentService.approve(this.id).subscribe({\n next: (res) => {\n console.log(res);\n // this.application.status = 'APPROVED';\n // this.application.status = AgentApplicationStatus['APPROVED' as keyof typeof AgentApplicationStatus];\n this.application.status = 'APPROVED' as AgentApplicationStatus;\n this.snackBarService.open('Approved');\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n });\n }\n reject() {\n const dialogRef = this.dialog.open(RejectDialogComponent, {\n width: '400px',\n data: {\n content: '',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.authAgentService.reject(this.id, result).subscribe({\n next: (res) => {\n this.application.status = 'REJECTED' as AgentApplicationStatus;\n this.snackBarService.open('Rejected');\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n });\n }\n}\n","@if (application) {\n <rolatech-toolbar [title]=\"status[application.status]\" large link=\"../../\">\n @if (application.status.toString() === 'PENDING') {\n <button mat-flat-button (click)=\"approve()\" i18n>Approve</button>\n <button mat-button (click)=\"reject()\" i18n>Reject</button>\n }\n </rolatech-toolbar>\n <div class=\"px-4\">\n <div>\n <div class=\"text-lg font-bold py-2\">User details</div>\n <div class=\"flex\">\n <div class=\"bg-[--rt-brand-color] min-w-12 max-h-12 rounded-full mr-3\">\n @if (application.user.avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"application.user.avatar\" alt=\"avatar img\" />\n }\n </div>\n <div class=\"flex flex-col w-full\">\n @if (application.user.firstName) {\n <div>{{ application.user.firstName }}, {{ application.user.lastName }}</div>\n } @else {\n @if (application.user.name) {\n <div>{{ application.user.name }}</div>\n }\n }\n <div class=\"inline-flex gap-1 mt-2\">\n <div>\n <span i18n>Phone: </span>\n <span class=\"mr-1\">{{ application.phone }}</span>\n </div>\n <div>\n <span i18n>Email: </span>\n <span class=\"mr-1\">{{ application.email }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <hr class=\"my-3\" />\n <div>\n <div class=\"text-lg font-bold py-2\">Application details</div>\n <div class=\"flex overflow-x-scroll scrollbar-hide\">\n <div class=\"flex flex-col w-full\">\n <rolatech-rich-label label=\"Business Name\" [title]=\"application.businessName\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Experience Years\" [title]=\"application.experienceYears\"></rolatech-rich-label>\n <rolatech-rich-label label=\"Created At\" [title]=\"application.createdAt\"></rolatech-rich-label>\n </div>\n </div>\n <hr class=\"my-3\" />\n </div>\n <div>\n <div class=\"text-lg font-bold py-2\">Documents</div>\n @if (application.documents.length > 0) {\n @for (item of application.documents; track $index) {\n <a class=\"underline underline-offset-4\" [href]=\"item\" target=\"_blank\">Document: {{ $index + 1 }}</a>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n </div>\n </div>\n}\n","import { Component, input } from '@angular/core';\nimport { AgentApplication, AgentApplicationStatus } from '../../interfaces/agent-application';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-agent-application-item',\n imports: [MatIconModule],\n templateUrl: './agent-application-item.component.html',\n styleUrl: './agent-application-item.component.scss',\n})\nexport class AgentApplicationItemComponent {\n application = input.required<AgentApplication>();\n status: any = AgentApplicationStatus;\n}\n","<div class=\"flex flex-col hover:bg-[--rt-raised-background] cursor-pointer p-3\">\n <div class=\"flex justify-between w-full mb-2\">\n <a class=\"flex items-center gap-3\">\n <span>Application ID: {{ application().id }}</span>\n </a>\n <span class=\"font-medium text-sm\">{{ status[application().status] }}</span>\n </div>\n <div class=\"flex overflow-x-scroll scrollbar-hide\">\n <div class=\"bg-[--rt-brand-color] min-w-12 max-h-12 rounded-full mr-3\">\n @if (application().user.avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"application().user.avatar\" alt=\"avatar img\" />\n }\n </div>\n <div class=\"flex flex-col w-full\">\n <div>{{ application().businessName }}</div>\n <div class=\"inline-flex gap-1 mt-2\">\n <div>\n <span i18n>Phone: </span>\n <span class=\"mr-1\">{{ application().experienceYears }}</span>\n </div>\n <div>\n <span i18n>Email: </span>\n <span class=\"mr-1\">{{ application().user.email }}</span>\n </div>\n </div>\n <div class=\"flex justify-end\">\n <span class=\"text-sm opacity-70\">{{ application().createdAt }}</span>\n </div>\n </div>\n </div>\n <hr />\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AuthAgentService } from '@rolatech/angular-auth';\nimport {\n BaseComponent,\n EmptyComponent,\n PdfViewerComponent,\n TabComponent,\n TabsComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AgentApplicationItemComponent } from '../../../components/agent-application-item/agent-application-item.component';\nimport { RouterLink } from '@angular/router';\nimport { AgentApplication } from '../../../interfaces/agent-application';\n\n@Component({\n selector: 'rolatech-agent-manage-application-index',\n imports: [\n CommonModule,\n ToolbarComponent,\n TabsComponent,\n TabComponent,\n MatButtonModule,\n MatIconModule,\n AgentApplicationItemComponent,\n RouterLink,\n EmptyComponent,\n ],\n templateUrl: './agent-manage-application-index.component.html',\n styleUrl: './agent-manage-application-index.component.scss',\n})\nexport class AgentManageApplicationIndexComponent extends BaseComponent implements OnInit {\n authAgentService = inject(AuthAgentService);\n applications: AgentApplication[] = [];\n select = 0;\n links = [\n {\n name: 'All',\n icon: 'dashboard',\n },\n {\n name: 'Pending',\n icon: 'category',\n status: 'pending',\n },\n {\n name: 'Approved',\n icon: 'category',\n status: 'approved',\n },\n {\n name: 'Rejected',\n icon: 'category',\n status: 'rejected',\n },\n ];\n filterOptions: any = {\n type: '',\n status: '',\n };\n ngOnInit(): void {\n this.route.queryParams.subscribe(({ status }) => {\n this.select = this.links.findIndex((item) => item.status === status);\n if (status) {\n this.filterOptions.status = (status as string).toUpperCase();\n } else {\n delete this.filterOptions.status;\n }\n this.findApplications();\n });\n }\n findApplications() {\n const options = {\n sort: 'updatedAt desc',\n };\n const filterString = this.convertFilterOptions(this.filterOptions);\n if (filterString) {\n options['filter'] = filterString;\n }\n this.authAgentService.findAllApplications(options).subscribe({\n next: (res) => {\n this.applications = res.data;\n },\n });\n }\n convertFilterOptions(jsonObj) {\n return Object.entries(jsonObj)\n .filter(([key, value]) => value !== '' && value !== undefined)\n .map(([key, value]) => {\n return `${key}:${value}`;\n })\n .join(',');\n }\n viewPdf(url: string) {\n const options = {\n title: '',\n component: PdfViewerComponent,\n data: {\n url: url,\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed();\n }\n}\n","<rolatech-toolbar title=\"Applications\">\n <div class=\"flex items-center gap-2\"></div>\n</rolatech-toolbar>\n<rolatech-tabs [select]=\"select\">\n @for (item of links; track item) {\n @if (item.status) {\n <rolatech-tab [label]=\"item.name\" routerLink=\"./\" [queryParams]=\"{ status: item.status }\"></rolatech-tab>\n } @else {\n <rolatech-tab [label]=\"item.name\" routerLink=\"./\"></rolatech-tab>\n }\n }\n</rolatech-tabs>\n<div>\n @if (applications) {\n @for (application of applications; track $index) {\n <rolatech-agent-application-item\n [application]=\"application\"\n [routerLink]=\"['./', application.id]\"\n ></rolatech-agent-application-item>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n</div>\n","import { AgentManageApplicationDetailComponent } from './agent-manage-application-detail/agent-manage-application-detail.component';\nimport { AgentManageApplicationIndexComponent } from './agent-manage-application-index/agent-manage-application-index.component';\n\nexport const agentManageApplicationRoutes = [\n {\n path: '',\n component: AgentManageApplicationIndexComponent,\n },\n {\n path: ':id',\n component: AgentManageApplicationDetailComponent,\n },\n];\n","import { AgentApplicationComponent } from './agent-application/agent-application.component';\nimport { AgentApplicationDetailComponent } from './agent-application-detail/agent-application-detail.component';\n\nexport const agentRoutes = [\n {\n path: 'application',\n component: AgentApplicationComponent,\n },\n {\n path: 'application/:id',\n component: AgentApplicationDetailComponent,\n },\n];\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserDataService {\n private userInfo = new BehaviorSubject<any>(null);\n data = this.userInfo.asObservable();\n send(data: any) {\n this.userInfo.next(data);\n }\n}\n","import { Component, effect, inject, model, OnInit } from '@angular/core';\nimport { AvatarComponent, BaseComponent, ContainerComponent, TabComponent, TabsComponent } from '@rolatech/angular-components';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { Course } from '@rolatech/angular-course';\nimport { UserDataService } from '../../user-data.service';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink, RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'rolatech-user-layout',\n imports: [\n MatIconModule,\n RouterLink,\n ContainerComponent,\n AvatarComponent,\n TabsComponent,\n TabComponent,\n MatButtonModule,\n TabsComponent,\n TabComponent,\n RouterOutlet,\n ],\n templateUrl: './user-layout.component.html',\n styleUrl: './user-layout.component.scss',\n})\nexport class UserLayoutComponent extends BaseComponent implements OnInit {\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n userDataService = inject(UserDataService);\n authenticated = this.authService.authenticated;\n userInfo: any;\n courses: Course[] = [];\n meta: any;\n isFollowed = false;\n username = '';\n selectIndex = model(0);\n path = '';\n statsData: any;\n constructor() {\n super();\n effect(() => {\n if (this.authenticated()) {\n this.checkIfFollowed();\n }\n });\n }\n ngOnInit(): void {\n this.username = this.route.snapshot.params['username'];\n this.stats();\n this.findUserInfo();\n this.route.params.subscribe((params) => {\n if (params['path'] === 'community') {\n this.selectIndex.set(1);\n }\n if (params['path'] === 'store') {\n this.selectIndex.set(2);\n }\n });\n }\n stats() {\n this.authUserService.followersStats(this.username).subscribe({\n next: (res) => {\n this.statsData = res.data;\n },\n });\n }\n findUserInfo() {\n this.authUserService.findUserInfoByUsername(this.username).subscribe({\n next: (res) => {\n this.userInfo = res.data;\n this.userDataService.send(res.data);\n if (res.data) {\n this.titleService.setTitle(`${this.userInfo.name}(@${this.userInfo.username}) - 拼小课`);\n } else {\n this.titleService.setTitle(`拼小课`);\n }\n },\n });\n }\n\n checkIfFollowed() {\n this.authUserService.isFollowing(this.username).subscribe({\n next: (res) => {\n this.isFollowed = res.data;\n },\n });\n }\n follow() {\n this.authUserService.follow(this.username).subscribe({\n next: (res) => {\n this.isFollowed = true;\n },\n });\n }\n unfollow() {\n this.authUserService.unfollow(this.username).subscribe({\n next: (res) => {\n this.isFollowed = false;\n },\n });\n }\n}\n","<rolatech-container>\n @if (userInfo) {\n <div>\n <div class=\"h-8\"></div>\n <div class=\"flex\">\n <div\n class=\"w-[80px] h-[80px] md:w-36 md:h-36 sm:w-28 sm:h-28 rounded-full border-white mr-4 bg-[--rt-raised-background]\"\n >\n @defer {\n <rolatech-avatar [src]=\"userInfo.avatar + '!w400'\" size=\"full\"> </rolatech-avatar>\n }\n </div>\n <div class=\"flex flex-col flex-grow\">\n <div class=\"flex justify-between items-center sm:mt-1\">\n <div class=\"flex items-center gap-2\">\n <div class=\"text-xl md:text-2xl font-medium\">\n <span>{{ userInfo.name }}</span>\n </div>\n <mat-icon color=\"primary\">verified</mat-icon>\n </div>\n <div>\n @if (isFollowed) {\n <button mat-flat-button (click)=\"unfollow()\" class=\"w-28 max-h-8\" i18n>Unfollow</button>\n } @else {\n <button mat-flat-button (click)=\"follow()\" class=\"w-28 max-h-8\" i18n>Follow</button>\n }\n </div>\n </div>\n <div class=\"text-sm text-[--rt-text-secondary]\">\n <div class=\"flex gap-3 py-2 items-center\">\n <a>\n <span>&#64;{{ userInfo.username }}</span>\n </a>\n <a class=\"cursor-pointer hover:text-orange-600\" [routerLink]=\"['./following']\">\n <span class=\"font-bold\">{{ statsData?.following }}</span>\n <span class=\"ml-1\" i18n>Following</span>\n </a>\n <a class=\"cursor-pointer hover:text-orange-600\" [routerLink]=\"['./followers']\">\n <span class=\"font-bold\">{{ statsData?.followers }}</span>\n <span class=\"ml-1\" i18n>Followers</span>\n </a>\n </div>\n <div class=\"mb-3\">\n <div>\n {{ userInfo.bio }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"py-2\">\n <rolatech-tabs [(select)]=\"selectIndex\" ngSkipHydration>\n <rolatech-tab label=\"Course\" routerLink=\"./\"></rolatech-tab>\n <rolatech-tab label=\"Community\" routerLink=\"./community\"></rolatech-tab>\n <rolatech-tab label=\"Store\" routerLink=\"./store\"></rolatech-tab>\n </rolatech-tabs>\n </div>\n\n <router-outlet></router-outlet>\n </div>\n }\n</rolatech-container>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent, RichItemComponent, RichViewComponent } from '@rolatech/angular-components';\nimport { UserDataService } from '../../user-data.service';\nimport { CourseService, Course } from '@rolatech/angular-course';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'rolatech-user-info',\n imports: [RouterLink, RichViewComponent, RichItemComponent],\n templateUrl: './user-info.component.html',\n styleUrl: './user-info.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserInfoComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n userDataService = inject(UserDataService);\n courses: Course[] = [];\n meta: any;\n constructor() {\n super();\n }\n ngOnInit(): void {\n this.userDataService.data.subscribe({\n next: (userInfo) => {\n this.findCoursesByInstructorId(userInfo.id);\n },\n });\n }\n findCoursesByInstructorId(instructorId: string) {\n const options = {\n filter: `instructorId:${instructorId},published:true`,\n sort: 'updatedAt desc',\n };\n this.courseService.find(options).subscribe({\n next: (res: any) => {\n this.courses = res.data;\n this.meta = res.meta;\n },\n });\n }\n}\n","<rolatech-rich-view list>\n @for (item of courses; track $index) {\n <rolatech-rich-item\n [title]=\"item.name\"\n [thumbnail]=\"item.media[0].url + '!w400'\"\n [price]=\"(item.pricing[0].total / 100).toFixed(2)\"\n [routerLink]=\"['/courses', item.id]\"\n class=\"cursor-pointer hover:bg-[--rt-raised-background]\"\n ></rolatech-rich-item>\n }\n</rolatech-rich-view>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UserDataService } from '../../user-data.service';\nimport { EmptyComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-user-community',\n imports: [CommonModule, EmptyComponent],\n templateUrl: './user-community.component.html',\n styleUrl: './user-community.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserCommunityComponent implements OnInit {\n userDataService = inject(UserDataService);\n ngOnInit(): void {\n this.userDataService.data.subscribe({\n next: (userInfo) => {},\n });\n }\n}\n","<rolatech-empty></rolatech-empty>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProductService } from '@rolatech/angular-services';\nimport { UserDataService } from '../../user-data.service';\nimport { RouterLink } from '@angular/router';\nimport { EmptyComponent, RichViewComponent, RichItemComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-user-store',\n imports: [CommonModule, EmptyComponent, RichViewComponent, RichItemComponent, RouterLink],\n templateUrl: './user-store.component.html',\n styleUrl: './user-store.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserStoreComponent implements OnInit {\n userDataService = inject(UserDataService);\n productService = inject(ProductService);\n products: any;\n ngOnInit(): void {\n this.userDataService.data.subscribe({\n next: (userInfo) => {\n this.findProductsByUserId(userInfo.id);\n },\n });\n }\n findProductsByUserId(userId: string) {\n const options = {\n filter: `userId:${userId}`,\n sort: 'updatedAt desc',\n };\n this.productService.find(options).subscribe({\n next: (res: any) => {\n this.products = res.data;\n },\n });\n }\n}\n","@if (products) {\n <div>\n <rolatech-rich-view wrap>\n @for (item of products; track item) {\n @defer {\n <rolatech-rich-item\n [routerLink]=\"['/products', item.id]\"\n [thumbnail]=\"item.media ? item.media[0].url + '!w400' : ''\"\n [title]=\"item.name\"\n [subtitle]=\"item.description\"\n [price]=\"(item.price / 100).toFixed(2)\"\n thumbnailRatio=\"square\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n </div>\n} @else {\n <rolatech-empty></rolatech-empty>\n}\n","import { Component, HostBinding, ViewEncapsulation, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-user-item',\n imports: [CommonModule, MatButtonModule],\n templateUrl: './user-item.component.html',\n styleUrl: './user-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserItemComponent {\n @HostBinding('class.rolatech-user-item') hasClass = true;\n user = input<any>();\n isFollowing = input(true);\n follow = output<string>();\n unfollow = output();\n own = input();\n onFollow() {\n this.follow.emit(this.user().username);\n }\n onUnFollow() {\n this.unfollow.emit(this.user().username);\n }\n}\n","<div class=\"flex w-full justify-between items-center p-2 hover:bg-[--rt-raised-background] cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-[--rt-brand-color] w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" alt=\"avatar img\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (!own()) {\n @if (isFollowing()) {\n <button mat-flat-button class=\"w-28 max-h-8\" (click)=\"onUnFollow()\" i18n>Unfollow</button>\n } @else {\n <button mat-flat-button class=\"w-28 max-h-8\" (click)=\"onFollow()\" i18n>Follow</button>\n }\n }\n</div>\n","import { Component, effect, inject, OnInit, signal, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { map } from 'lodash';\nimport { TabsComponent, TabComponent, ContainerComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { UserItemComponent } from '../../components/user-item/user-item.component';\n\n@Component({\n selector: 'rolatech-user-follow-info',\n imports: [CommonModule, TabsComponent, TabComponent, ContainerComponent, ToolbarComponent, RouterLink, UserItemComponent],\n templateUrl: './user-follow-info.component.html',\n styleUrl: './user-follow-info.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserFollowInfoComponent implements OnInit {\n title = inject(Title);\n route = inject(ActivatedRoute);\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n authenticated = this.authService.authenticated;\n userId = this.authService.userId;\n tabIndex = signal(0);\n userInfo: any;\n users: any[] = [];\n username = '';\n path = '';\n myId = '';\n constructor() {\n this.route.params.subscribe({\n next: (params: any) => {\n this.username = params['username'];\n this.path = params.path;\n },\n });\n effect(() => {\n switch (this.tabIndex()) {\n case 0:\n this.listFollowingByUsername();\n break;\n case 1:\n this.listFollowersByUsername();\n break;\n default:\n break;\n }\n });\n }\n ngOnInit(): void {\n if (this.path === 'following') {\n this.tabIndex.set(0);\n } else {\n this.tabIndex.set(1);\n }\n this.findUserInfo();\n }\n findUserInfo() {\n this.authUserService.findUserInfoByUsername(this.username).subscribe({\n next: (res) => {\n this.userInfo = res.data;\n if (res.data) {\n this.title.setTitle(`${this.userInfo.name}(@${this.userInfo.username}) - 拼小课`);\n } else {\n this.title.setTitle(`拼小课`);\n }\n },\n });\n }\n follow(user: any) {\n this.authUserService.follow(user.username).subscribe({\n next: (res) => {\n user.isFollowing = true;\n },\n });\n }\n unfollow(user: any) {\n this.authUserService.unfollow(user.username).subscribe({\n next: (res) => {\n user.isFollowing = false;\n if (this.myId === this.userInfo.id) {\n const index = this.users.findIndex((item) => item.username === user.username);\n this.users.splice(index, 1);\n }\n },\n });\n }\n listFollowingByUsername() {\n this.authUserService.listFollowingByUsername(this.username).subscribe({\n next: (res) => {\n this.users = map(res.data, 'user');\n const ids = map(res.data, 'user.id');\n this.friendships(ids);\n },\n });\n }\n listFollowersByUsername() {\n this.authUserService.listFollowersByUsername(this.username).subscribe({\n next: (res) => {\n this.users = map(res.data, 'follower');\n const ids = map(res.data, 'follower.id');\n this.friendships(ids);\n },\n });\n }\n friendships(ids: string[]) {\n if (this.authenticated()) {\n this.myId = this.userId();\n const index = this.users.findIndex((item) => item.id === this.myId);\n if (index > 0) {\n this.users.unshift(this.users.splice(index, 1)[0]);\n }\n this.authUserService.friendships(ids).subscribe({\n next: (res) => {\n this.format(res.data);\n },\n });\n }\n }\n format(friendships: any) {\n this.users.map((item: any) => {\n item.isFollowing = friendships[item.id].following;\n });\n }\n}\n","<rolatech-container>\n <rolatech-toolbar [title]=\"userInfo?.name\" link=\"../\" [subtitle]=\"userInfo?.username\"></rolatech-toolbar>\n <div class=\"mb-3\"></div>\n\n <rolatech-tabs [(select)]=\"tabIndex\">\n <rolatech-tab label=\"Following\" [routerLink]=\"['../', 'following']\"></rolatech-tab>\n <rolatech-tab label=\"Followers\" [routerLink]=\"['../', 'followers']\"></rolatech-tab>\n </rolatech-tabs>\n <div class=\"mb-3\"></div>\n @for (user of users; track $index) {\n <rolatech-user-item\n [user]=\"user\"\n [routerLink]=\"'/@' + user.username\"\n [isFollowing]=\"user.isFollowing\"\n (follow)=\"follow(user)\"\n (unfollow)=\"unfollow(user)\"\n [own]=\"user.id === myId\"\n ></rolatech-user-item>\n }\n</rolatech-container>\n","import { UserLayoutComponent } from '../components/user-layout/user-layout.component';\nimport { UserInfoComponent } from './user-info/user-info.component';\nimport { UserCommunityComponent } from './user-community/user-community.component';\nimport { UserStoreComponent } from './user-store/user-store.component';\nimport { UserFollowInfoComponent } from './user-follow-info/user-follow-info.component';\nimport { UserDetailComponent } from './user-detail/user-detail.component';\n\nexport const userRoutes = [\n {\n path: '',\n component: UserLayoutComponent,\n children: [\n {\n path: '',\n component: UserInfoComponent,\n },\n {\n path: 'community',\n component: UserCommunityComponent,\n },\n {\n path: 'store',\n component: UserStoreComponent,\n },\n ],\n },\n {\n path: ':path',\n component: UserFollowInfoComponent,\n },\n];\n","import { Component, computed, inject, OnInit, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport { User } from '@rolatech/angular-common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n selector: 'rolatech-user-detail',\n imports: [CommonModule, MatTabsModule, ToolbarComponent, MatButtonModule, MatIcon, MatMenuModule],\n templateUrl: './user-detail.component.html',\n styleUrl: './user-detail.component.scss',\n})\nexport class UserDetailComponent extends BaseComponent implements OnInit {\n user = signal<User | null>(null);\n authUserService = inject(AuthUserService);\n name = computed(() => userDisplayName(this.user()));\n initials = computed(() => userInitials(this.user()));\n avatarUrl = computed(() => userAvatarUrl(this.user()));\n createdAtLabel = computed(() => {\n const d = parseUserDateTime(this.user()?.createdAt);\n return d ? new Intl.DateTimeFormat(undefined, { year: 'numeric', month: 'long', day: '2-digit' }).format(d) : '—';\n });\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.authUserService.get(this.id).subscribe({\n next: (res) => {\n this.user.set(res.data);\n },\n });\n }\n // actions\n openUserObject() {}\n editProfile() {}\n toggleStatus() {}\n resetPassword() {}\n copyId() {}\n addToOrg() {}\n addEmail() {}\n addPhone() {}\n connectWallet() {}\n}\n/** Best display name with safe fallbacks */\nexport function userDisplayName(u: User | null | undefined): string {\n if (!u) return '';\n\n return (\n u.name?.trim() || [u.firstName, u.lastName].filter(Boolean).join(' ').trim() || u.username || u.email || 'Unknown User'\n );\n}\n\n/** Initials for avatar fallback */\nexport function userInitials(u: User | null | undefined): string {\n const name = userDisplayName(u);\n if (!name) return 'U';\n\n const parts = name.split(/\\s+/).slice(0, 2);\n return parts.map((p) => p[0]?.toUpperCase() ?? '').join('');\n}\n\n/** Avatar URL or null (let UI render initials) */\nexport function userAvatarUrl(u: User | null | undefined): string | null {\n if (!u?.avatar) return null;\n return u.avatar;\n}\n/**\n * Parses \"yyyy-MM-dd HH:mm:ss\" into Date (local)\n */\nexport function parseUserDateTime(value: string | null | undefined): Date | null {\n if (!value) return null;\n\n // Convert to ISO-like: \"2025-05-06T14:26:17\"\n const isoLike = value.replace(' ', 'T');\n const d = new Date(isoLike);\n\n return isNaN(d.getTime()) ? null : d;\n}\n","<rolatech-toolbar title=\"Users\" link=\"../\"> </rolatech-toolbar>\n<div class=\"p-4 space-y-4\">\n <!-- Header -->\n <div class=\"flex items-start justify-between gap-4\">\n <div class=\"flex items-start gap-3 min-w-0\">\n <!-- avatar -->\n <div class=\"relative\">\n @if (avatarUrl()) {\n <img class=\"w-12 h-12 rounded-full object-cover border\" [src]=\"avatarUrl()!\" alt=\"avatar\" />\n } @else {\n <div\n class=\"w-12 h-12 rounded-full border bg-[--rt-brand-color] text-white flex items-center justify-center font-semibold\"\n >\n {{ initials() }}\n </div>\n }\n\n <!-- status dot -->\n <span\n class=\"absolute -right-0 -bottom-0 w-3 h-3 rounded-full border border-[--rt-border-color] bg-[--rt-base-background] flex items-center justify-center\"\n >\n <span\n class=\"w-2 h-2 rounded-full\"\n [class]=\"\n user()?.status?.toString() === 'ACTIVE'\n ? 'bg-green-500'\n : user()?.status?.toString() === 'LOCKED'\n ? 'bg-red-500'\n : 'bg-amber-500'\n \"\n ></span>\n </span>\n </div>\n\n <div class=\"min-w-0\">\n <div class=\"flex items-center gap-2 min-w-0\">\n <h1 class=\"text-2xl font-semibold truncate\">{{ name() }}</h1>\n\n @if (user()?.status?.toString() === 'LOCKED') {\n <span class=\"px-2 py-0.5 rounded-md text-xs bg-red-500/10 text-red-700 border border-red-500/20\">\n <mat-icon class=\"align-middle !text-[14px] mr-1\">lock</mat-icon>\n Locked\n </span>\n } @else if (user()?.status?.toString() === 'DISABLED') {\n <span class=\"px-2 py-0.5 rounded-md text-xs bg-red-500/10 text-red-700 border border-red-500/20\"> Disabled </span>\n }\n </div>\n\n <div class=\"text-sm opacity-70 flex items-center gap-2 mt-1\">\n <span>{{ user()?.status?.toString() === 'ACTIVE' ? 'Active' : (user()?.status ?? '—') }}</span>\n </div>\n </div>\n </div>\n\n <!-- actions -->\n <!-- <div class=\"flex items-center gap-2\">\n <button mat-stroked-button (click)=\"openUserObject()\">User object</button>\n <button mat-flat-button color=\"primary\" (click)=\"editProfile()\">Edit profile</button>\n\n <button mat-icon-button [matMenuTriggerFor]=\"moreMenu\" aria-label=\"More\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n <mat-menu #moreMenu=\"matMenu\">\n <button mat-menu-item (click)=\"toggleStatus()\">\n <mat-icon>{{ user()?.status?.toString() === 'ACTIVE' ? 'block' : 'check_circle' }}</mat-icon>\n <span>{{ user()?.status?.toString() === 'ACTIVE' ? 'Disable' : 'Enable' }}</span>\n </button>\n <button mat-menu-item (click)=\"resetPassword()\">\n <mat-icon>vpn_key</mat-icon>\n <span>Reset password</span>\n </button>\n <button mat-menu-item (click)=\"copyId()\">\n <mat-icon>content_copy</mat-icon>\n <span>Copy user ID</span>\n </button>\n </mat-menu>\n </div> -->\n </div>\n\n <!-- Info strip (2 columns like screenshot) -->\n <div class=\"grid grid-cols-1 lg:grid-cols-2 gap-6 border-b pb-5\">\n <dl class=\"space-y-3 text-sm\">\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">badge</mat-icon> User ID</dt>\n <dd class=\"font-mono text-xs truncate max-w-[65%]\">{{ user()?.id }}</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">alternate_email</mat-icon> Username</dt>\n <dd class=\"truncate max-w-[65%]\">&#64;{{ user()?.username }}</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">call</mat-icon> Phone number</dt>\n <dd class=\"truncate max-w-[65%]\">{{ user()?.phone ?? '—' }}</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">mail</mat-icon> Email address</dt>\n <dd class=\"truncate max-w-[65%]\">{{ user()?.email ?? '—' }}</dd>\n </div>\n </dl>\n\n <dl class=\"space-y-3 text-sm\">\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">lock</mat-icon> Password</dt>\n <dd class=\"truncate max-w-[65%]\">None</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">verified_user</mat-icon> 2-step auth</dt>\n <dd class=\"truncate max-w-[65%]\">—</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">key</mat-icon> Passkey</dt>\n <dd class=\"truncate max-w-[65%]\">—</dd>\n </div>\n\n <div class=\"flex items-center justify-between gap-3\">\n <dt class=\"flex items-center gap-2 opacity-70\"><mat-icon class=\"!text-base\">event</mat-icon> User since</dt>\n <dd class=\"truncate max-w-[65%]\">{{ createdAtLabel() }}</dd>\n </div>\n </dl>\n </div>\n</div>\n","import { UserDetailComponent } from '../user-detail/user-detail.component';\nimport { UserIndexComponent } from '../user-index/user-index.component';\n\nexport const userManageRoutes = [\n {\n path: '',\n component: UserIndexComponent,\n },\n {\n path: ':id',\n component: UserDetailComponent,\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["userDisplayName","userInitials","userAvatarUrl","parseUserDateTime","i1","i2","i3","map"],"mappings":"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"}