{ "version": 3, "sources": ["libs/form-builder/src/lib/pages/form-submissions-export-csv.service.ts"], "sourcesContent": ["import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FormsApiService, FormSubmissionsExportService } from '@vendasta/forms_microservice';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { finalize, map, take, withLatestFrom } from 'rxjs/operators';\n\nfunction downloadFile(file: Blob, filename: string): void {\n const url = window.URL.createObjectURL(file);\n const link = document.createElement('a');\n link.setAttribute('style', 'display:none;');\n document.body.appendChild(link);\n link.href = url;\n link.download = filename;\n link.click();\n window.URL.revokeObjectURL(url);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FormSubmissionsExportCsvService {\n private csvExportStatusMap$$ = new BehaviorSubject>(new Map());\n\n constructor(\n private readonly formApiService: FormsApiService,\n private readonly formExportService: FormSubmissionsExportService,\n private readonly snackbarService: SnackbarService,\n private readonly translateService: TranslateService,\n ) {}\n\n private setExportCSVStatus(formId: string, status: boolean): void {\n const csvStatusMap = this.csvExportStatusMap$$.value;\n csvStatusMap.set(formId, status);\n this.csvExportStatusMap$$.next(csvStatusMap);\n }\n\n getCSVExportStatus(formId: string): Observable {\n return this.csvExportStatusMap$$.pipe(map((statusMap) => !!statusMap.get(formId)));\n }\n\n exportCSV(formId: string): void {\n this.setExportCSVStatus(formId, true);\n this.snackbarService.openSuccessSnack('CUSTOM_FORMS.FORM_SUBMISSION_LIST.EXPORT_TO_CSV_MESSAGES.STARTED');\n this.formExportService\n .exportCSV(formId)\n .pipe(\n take(1),\n withLatestFrom(\n this.formApiService.getForm({\n formId: formId,\n }),\n ),\n finalize(() => this.setExportCSVStatus(formId, false)),\n )\n .subscribe(\n ([file, formResponse]) => {\n this.snackbarService.openSuccessSnack(\n this.translateService.instant('CUSTOM_FORMS.FORM_SUBMISSION_LIST.EXPORT_TO_CSV_MESSAGES.SUCCESS', {\n formName: formResponse.formConfig?.name || 'Untitled',\n }),\n );\n downloadFile(file.blob, file.filename);\n },\n (error) => {\n console.error(error);\n this.setExportCSVStatus(formId, false);\n this.snackbarService.openErrorSnack('CUSTOM_FORMS.FORM_SUBMISSION_LIST.EXPORT_TO_CSV_MESSAGES.FAILED');\n },\n );\n }\n}\n"], "mappings": "0SAOA,SAASA,EAAaC,EAAYC,EAAgB,CAChD,IAAMC,EAAMC,OAAOC,IAAIC,gBAAgBL,CAAI,EACrCM,EAAOC,SAASC,cAAc,GAAG,EACvCF,EAAKG,aAAa,QAAS,eAAe,EAC1CF,SAASG,KAAKC,YAAYL,CAAI,EAC9BA,EAAKM,KAAOV,EACZI,EAAKO,SAAWZ,EAChBK,EAAKQ,MAAK,EACVX,OAAOC,IAAIW,gBAAgBb,CAAG,CAChC,CAhBA,IAmBac,EAnBbC,EAAAC,EAAA,KAIAC,IACAC,oBAcaJ,GAA+B,IAAA,CAAtC,IAAOA,EAAP,MAAOA,CAA+B,CAG1CK,YACmBC,EACAC,EACAC,EACAC,EAAkC,CAHlC,KAAAH,eAAAA,EACA,KAAAC,kBAAAA,EACA,KAAAC,gBAAAA,EACA,KAAAC,iBAAAA,EANX,KAAAC,qBAAuB,IAAIC,EAAsC,IAAIC,GAAK,CAO/E,CAEKC,mBAAmBC,EAAgBC,EAAe,CACxD,IAAMC,EAAe,KAAKN,qBAAqBO,MAC/CD,EAAaE,IAAIJ,EAAQC,CAAM,EAC/B,KAAKL,qBAAqBS,KAAKH,CAAY,CAC7C,CAEAI,mBAAmBN,EAAc,CAC/B,OAAO,KAAKJ,qBAAqBW,KAAKC,EAAKC,GAAc,CAAC,CAACA,EAAUC,IAAIV,CAAM,CAAC,CAAC,CACnF,CAEAW,UAAUX,EAAc,CACtB,KAAKD,mBAAmBC,EAAQ,EAAI,EACpC,KAAKN,gBAAgBkB,iBAAiB,kEAAkE,EACxG,KAAKnB,kBACFkB,UAAUX,CAAM,EAChBO,KACCM,EAAK,CAAC,EACNC,EACE,KAAKtB,eAAeuB,QAAQ,CAC1Bf,OAAQA,EACT,CAAC,EAEJgB,EAAS,IAAM,KAAKjB,mBAAmBC,EAAQ,EAAK,CAAC,CAAC,EAEvDiB,UACC,CAAC,CAAC/C,EAAMgD,CAAY,IAAK,CACvB,KAAKxB,gBAAgBkB,iBACnB,KAAKjB,iBAAiBwB,QAAQ,mEAAoE,CAChGC,SAAUF,EAAaG,YAAYC,MAAQ,WAC5C,CAAC,EAEJrD,EAAaC,EAAKqD,KAAMrD,EAAKC,QAAQ,CACvC,EACCqD,GAAS,CACRC,QAAQD,MAAMA,CAAK,EACnB,KAAKzB,mBAAmBC,EAAQ,EAAK,EACrC,KAAKN,gBAAgBgC,eAAe,iEAAiE,CACvG,CAAC,CAEP,yCAjDWxC,GAA+ByC,EAAAC,CAAA,EAAAD,EAAAE,CAAA,EAAAF,EAAAG,CAAA,EAAAH,EAAAI,CAAA,CAAA,CAAA,wBAA/B7C,EAA+B8C,QAA/B9C,EAA+B+C,UAAAC,WADlB,MAAM,CAAA,EAC1B,IAAOhD,EAAPiD,SAAOjD,CAA+B,GAAA", "names": ["downloadFile", "file", "filename", "url", "window", "URL", "createObjectURL", "link", "document", "createElement", "setAttribute", "body", "appendChild", "href", "download", "click", "revokeObjectURL", "FormSubmissionsExportCsvService", "init_form_submissions_export_csv_service", "__esmMin", "init_esm", "init_operators", "constructor", "formApiService", "formExportService", "snackbarService", "translateService", "csvExportStatusMap$$", "BehaviorSubject", "Map", "setExportCSVStatus", "formId", "status", "csvStatusMap", "value", "set", "next", "getCSVExportStatus", "pipe", "map", "statusMap", "get", "exportCSV", "openSuccessSnack", "take", "withLatestFrom", "getForm", "finalize", "subscribe", "formResponse", "instant", "formName", "formConfig", "name", "blob", "error", "console", "openErrorSnack", "\u0275\u0275inject", "FormsApiService", "FormSubmissionsExportService", "SnackbarService", "TranslateService", "factory", "\u0275fac", "providedIn", "_FormSubmissionsExportCsvService"] }