{"version":3,"file":"rolatech-angular-onboarding-agent-onboarding-documents-page-BpFSkjyO.mjs","sources":["../../../../packages/angular-onboarding/src/lib/pages/agent-onboarding/agent-onboarding-documents-page.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { onboardingDocumentTypeLabel, OnboardingDocumentService, OnboardingDocumentType } from '@rolatech/angular-services';\nimport { firstValueFrom } from 'rxjs';\nimport { OnboardingDocumentPreviewDialog } from '../../components/onboarding/onboarding-document-preview-dialog';\nimport { OnboardingDocumentUploader } from '../../components/onboarding/onboarding-document-uploader';\nimport { AgentOnboardingFacade } from '../../store/agent-onboarding.facade';\n\n@Component({\n  selector: 'rolatech-agent-onboarding-documents-page',\n  standalone: true,\n  imports: [OnboardingDocumentUploader, OnboardingDocumentPreviewDialog],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    @if (facade.documents().length === 0) {\n      <div class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 text-sm text-(--rt-text-secondary) shadow-sm\">\n        No documents uploaded yet for this onboarding application.\n      </div>\n    } @else {\n      <section class=\"space-y-4\">\n        @for (documentItem of facade.documents(); track documentItem.id) {\n          <rolatech-onboarding-document-uploader\n            [label]=\"documentTypeLabel(documentItem.documentType)\"\n            [documentType]=\"documentItem.documentType\"\n            [document]=\"documentItem\"\n            [comment]=\"documentItem.reviewerComment || null\"\n            [busy]=\"facade.saving()\"\n            [canPreview]=\"true\"\n            [previewBusy]=\"previewBusy(documentItem.id)\"\n            (fileSelected)=\"onUpload($event.documentType, $event.file, $event.replacedDocumentId)\"\n            (previewRequested)=\"openDocumentPreview(documentItem.id, documentTypeLabel(documentItem.documentType), documentItem.originalFilename)\"\n          />\n        }\n\n        @if (facade.status() === 'NEED_MORE_INFO') {\n          <div class=\"flex justify-end\">\n            <button\n              type=\"button\"\n              class=\"rounded-xl bg-(--rt-brand-color) px-5 py-2.5 text-sm font-semibold text-(--rt-text-primary-inverse) transition hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60\"\n              [disabled]=\"facade.saving()\"\n              (click)=\"resubmit()\"\n            >\n              Resubmit for Review\n            </button>\n          </div>\n        }\n      </section>\n    }\n\n    <rolatech-onboarding-document-preview-dialog\n      [open]=\"previewOpen()\"\n      [title]=\"previewTitle()\"\n      [subtitle]=\"previewSubtitle()\"\n      [url]=\"previewUrl()\"\n      [loading]=\"previewLoading()\"\n      [error]=\"previewError()\"\n      (closeRequested)=\"closeDocumentPreview()\"\n    />\n  `,\n})\nexport class AgentOnboardingDocumentsPage {\n  readonly facade = inject(AgentOnboardingFacade);\n  private readonly onboardingDocumentService = inject(OnboardingDocumentService);\n  readonly documentTypeLabel = onboardingDocumentTypeLabel;\n  readonly previewOpen = signal(false);\n  readonly previewLoading = signal(false);\n  readonly previewError = signal<string | null>(null);\n  readonly previewUrl = signal<string | null>(null);\n  readonly previewTitle = signal<string | null>(null);\n  readonly previewSubtitle = signal<string | null>(null);\n  readonly previewDocumentId = signal<string | null>(null);\n\n  async onUpload(documentType: OnboardingDocumentType, file: File, replacedDocumentId?: string): Promise<void> {\n    if (!replacedDocumentId) {\n      return;\n    }\n\n    await this.facade.reuploadDocument(documentType, file, replacedDocumentId);\n  }\n\n  async resubmit(): Promise<void> {\n    await this.facade.resubmit();\n  }\n\n  previewBusy(documentId: string): boolean {\n    return this.previewLoading() && this.previewDocumentId() === documentId;\n  }\n\n  async openDocumentPreview(documentId: string, label: string, filename: string): Promise<void> {\n    this.previewOpen.set(true);\n    this.previewLoading.set(true);\n    this.previewError.set(null);\n    this.previewUrl.set(null);\n    this.previewTitle.set(label);\n    this.previewSubtitle.set(filename || null);\n    this.previewDocumentId.set(documentId);\n\n    try {\n      const response = await firstValueFrom(this.onboardingDocumentService.getPreviewUrl(documentId));\n      this.previewUrl.set(response.previewUrl);\n      this.previewDocumentId.set(response.documentId);\n    } catch (error) {\n      this.previewError.set(this.toErrorMessage(error));\n    } finally {\n      this.previewLoading.set(false);\n    }\n  }\n\n  closeDocumentPreview(): void {\n    this.previewOpen.set(false);\n    this.previewLoading.set(false);\n    this.previewError.set(null);\n    this.previewUrl.set(null);\n    this.previewTitle.set(null);\n    this.previewSubtitle.set(null);\n    this.previewDocumentId.set(null);\n  }\n\n  private toErrorMessage(error: unknown): string {\n    if (error instanceof Error && error.message) {\n      return error.message;\n    }\n\n    return 'Unable to load the document preview.';\n  }\n}\n"],"names":[],"mappings":"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"}