@elite.framework/ng.ui.core 2.0.5 → 2.0.6

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,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { OnDestroy, EventEmitter } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
- import * as _elite_framework_ng_core_tokens from '@elite.framework/ng.core/tokens';
5
4
  import { FormGroup } from '@angular/forms';
5
+ import { EnvironmentService } from '@elite.framework/ng.core/services';
6
6
  import { FormlyFieldConfig } from '@ngx-formly/core';
7
7
  import { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';
8
8
 
@@ -40,7 +40,7 @@ declare class ExcelImportComponent implements OnDestroy {
40
40
  private messageService;
41
41
  private translateService;
42
42
  private fb;
43
- env: _elite_framework_ng_core_tokens.EnvironmentConfig;
43
+ env: EnvironmentService;
44
44
  steps: {
45
45
  label: any;
46
46
  }[];
@@ -13,8 +13,8 @@ import * as i1 from 'primeng/api';
13
13
  import { MessageService } from 'primeng/api';
14
14
  import * as i6 from 'primeng/inputtext';
15
15
  import { InputTextModule } from 'primeng/inputtext';
16
- import { ENVIRONMENT } from '@elite.framework/ng.core/tokens';
17
16
  import { AttachmentDto } from '@elite.framework/ng.core/models';
17
+ import { EnvironmentService } from '@elite.framework/ng.core/services';
18
18
 
19
19
  class AttachmentsModule {
20
20
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AttachmentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -33,13 +33,13 @@ class AttachmentTypeComponent extends FieldType {
33
33
  defaultAcceptTypes = '.pdf,application/pdf,image/*,.txt,text/plain,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel';
34
34
  maxFileSize = 1 * 1024 * 1024; // 1 MB
35
35
  tenantId = 0;
36
- env = inject(ENVIRONMENT);
36
+ env = inject(EnvironmentService);
37
37
  constructor(messageService) {
38
38
  super();
39
39
  this.messageService = messageService;
40
40
  }
41
41
  get url() {
42
- return this.env.apiUrl + (this.props['apiUrl'] ?? '/api/files');
42
+ return this.env.getEnvironment().apis.default.url + (this.props['apiUrl'] ?? '/api/files');
43
43
  }
44
44
  get attachments() {
45
45
  return Array.isArray(this.formControl.value)
@@ -1 +1 @@
1
- {"version":3,"file":"elite.framework-ng.ui.core-attachments.mjs","sources":["../tmp-esm2022/attachments/lib/attachments-module.js","../tmp-esm2022/attachments/lib/attachment-type.js","../tmp-esm2022/attachments/elite.framework-ng.ui.core-attachments.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class AttachmentsModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentsModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentsModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudHMtbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2F0dGFjaG1lbnRzL3NyYy9saWIvYXR0YWNobWVudHMtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8saUJBQWlCO3VHQUFqQixpQkFBaUI7d0dBQWpCLGlCQUFpQixZQUZsQixZQUFZO3dHQUVYLGlCQUFpQixZQUZsQixZQUFZOzsyRkFFWCxpQkFBaUI7a0JBSDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudHNNb2R1bGUge31cbiJdfQ==","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { ButtonModule } from 'primeng/button';\nimport { MessageService } from 'primeng/api';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { ENVIRONMENT } from '@elite.framework/ng.core/tokens';\nimport { AttachmentDto } from '@elite.framework/ng.core/models';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"primeng/api\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"primeng/fileupload\";\nimport * as i5 from \"primeng/button\";\nimport * as i6 from \"primeng/inputtext\";\nexport class AttachmentTypeComponent extends FieldType {\n messageService;\n defaultAcceptTypes = '.pdf,application/pdf,image/*,.txt,text/plain,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel';\n maxFileSize = 1 * 1024 * 1024; // 1 MB\n tenantId = 0;\n env = inject(ENVIRONMENT);\n constructor(messageService) {\n super();\n this.messageService = messageService;\n }\n get url() {\n return this.env.apiUrl + (this.props['apiUrl'] ?? '/api/files');\n }\n get attachments() {\n return Array.isArray(this.formControl.value)\n ? this.formControl.value\n : (this.formControl.value ? [this.formControl.value] : []);\n }\n set attachments(value) {\n if (this.props['multiple']) {\n this.formControl.setValue(value);\n }\n else {\n this.formControl.setValue(value?.[0] || null);\n }\n }\n get attachment() {\n return Array.isArray(this.formControl.value)\n ? (this.formControl.value[0] || null)\n : this.formControl.value || null;\n }\n set attachment(value) {\n if (this.props['multiple']) {\n const arr = Array.isArray(this.formControl.value)\n ? [...this.formControl.value]\n : (this.formControl.value ? [this.formControl.value] : []);\n if (value)\n arr.push(value);\n this.formControl.setValue(arr);\n }\n else {\n this.formControl.setValue(value);\n }\n }\n async onUpload(event) {\n const files = event.files;\n const isMultiple = this.props['multiple'] ?? true;\n const allowedTypes = this.props['accept'] || '';\n for (const file of files) {\n if (file.size > this.maxFileSize) {\n this.messageService.add({\n severity: 'error',\n summary: 'خطأ',\n detail: `الملف \"${file.name}\" يتجاوز الحد الأقصى (1MB)`,\n });\n continue;\n }\n if (allowedTypes && !this.isFileTypeAllowed(file, allowedTypes)) {\n this.messageService.add({\n severity: 'error',\n summary: 'نوع الملف غير مسموح',\n detail: `الملف \"${file.name}\" ليس من الأنواع المسموحة`,\n });\n continue;\n }\n if (isMultiple && this.attachments.some(a => a.fileName === file.name)) {\n continue;\n }\n const base64 = await this.fileToBase64(file);\n const attachment = new AttachmentDto();\n attachment.fileName = file.name;\n attachment.mimeType = file.type;\n attachment.base64 = base64;\n if (isMultiple) {\n this.attachments = [...this.attachments, attachment];\n }\n else {\n this.attachment = attachment;\n }\n }\n }\n remove(index) {\n const copy = [...this.attachments];\n copy.splice(index, 1);\n this.attachments = copy;\n }\n choose(event, callback) {\n callback();\n }\n fileToBase64(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result.split(',')[1]);\n reader.onerror = err => reject(err);\n });\n }\n isFileTypeAllowed(file, allowedTypes) {\n const accepted = allowedTypes.split(',').map(t => t.trim());\n return accepted.some(type => {\n if (type === '*/*')\n return true;\n if (type.endsWith('/*')) {\n return file.type.startsWith(type.split('/')[0] + '/');\n }\n return file.type === type;\n });\n }\n getFileLabel(mime) {\n if (!mime)\n return 'FILE';\n if (mime.includes('pdf'))\n return 'PDF';\n if (mime.includes('excel') || mime.includes('spreadsheet'))\n return 'XLS';\n if (mime.includes('word'))\n return 'DOC';\n if (mime.includes('image'))\n return 'IMG';\n if (mime.includes('zip'))\n return 'ZIP';\n if (mime.includes('csv'))\n return 'CSV';\n if (mime.includes('text'))\n return 'TXT';\n return 'FILE';\n }\n getLabelClass(mime) {\n if (mime.includes('pdf'))\n return 'bg-red-600 text-white';\n if (mime.includes('excel'))\n return 'bg-green-600 text-white';\n if (mime.includes('word'))\n return 'bg-blue-600 text-white';\n if (mime.includes('image'))\n return 'bg-yellow-500 text-white';\n if (mime.includes('zip'))\n return 'bg-pink-600 text-white';\n return 'bg-gray-400 text-white';\n }\n getIconColor(mime) {\n if (mime.includes('pdf'))\n return 'text-red-400';\n if (mime.includes('excel'))\n return 'text-green-500';\n if (mime.includes('word'))\n return 'text-blue-500';\n if (mime.includes('image'))\n return 'text-yellow-500';\n if (mime.includes('zip'))\n return 'text-pink-500';\n return 'text-gray-400';\n }\n getFileIcon(mime) {\n if (mime.includes('pdf'))\n return 'pi pi-file-pdf';\n if (mime.includes('excel') || mime.includes('spreadsheet'))\n return 'pi pi-file-excel';\n if (mime.includes('word'))\n return 'pi pi-file-word';\n if (mime.includes('image'))\n return 'pi pi-image';\n if (mime.includes('zip'))\n return 'pi pi-file-zip';\n return 'pi pi-file';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentTypeComponent, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: AttachmentTypeComponent, isStandalone: true, selector: \"attachment-type\", providers: [MessageService], usesInheritance: true, ngImport: i0, template: \"<p-fileUpload\\n name=\\\"file\\\"\\n [customUpload]=\\\"true\\\"\\n [auto]=\\\"true\\\"\\n [multiple]=\\\"props['multiple'] !== false\\\"\\n [maxFileSize]=\\\"maxFileSize\\\"\\n [accept]=\\\"props['accept'] || defaultAcceptTypes\\\"\\n (uploadHandler)=\\\"onUpload($event)\\\"\\n chooseLabel=\\\"\\u0627\\u0633\\u062D\\u0628 \\u0627\\u0644\\u0645\\u0644\\u0641\\u0627\\u062A \\u0623\\u0648 \\u0627\\u0646\\u0642\\u0631 \\u0644\\u0644\\u0625\\u0631\\u0641\\u0627\\u0642\\\"\\n class=\\\"w-full\\\"\\n>\\n <!-- Header Template -->\\n <ng-template pTemplate=\\\"header\\\" let-chooseCallback=\\\"chooseCallback\\\">\\n <div class=\\\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\\\">\\n <div class=\\\"flex gap-2\\\">\\n <p-button\\n (click)=\\\"choose($event, chooseCallback)\\\"\\n icon=\\\"pi pi-plus\\\"\\n [rounded]=\\\"true\\\"\\n [outlined]=\\\"true\\\"\\n styleClass=\\\"border border-green-600 text-green-600 hover:bg-green-100 bg-white shadow-sm !rounded-full\\\"\\n ></p-button>\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Content Template -->\\n <ng-template pTemplate=\\\"content\\\">\\n <!-- Multi mode -->\\n <div class=\\\"p-2 flex flex-wrap gap-4\\\">\\n <div\\n *ngFor=\\\"let file of attachments; let i = index\\\"\\n style=\\\"height: 7rem;\\\"\\n class=\\\"relative w-24 h-28 bg-white border rounded-lg shadow-sm flex flex-col items-center justify-center\\\"\\n >\\n <!-- File type label -->\\n <div\\n class=\\\"absolute top-0 left-0 px-2 py-0.5 text-[10px] font-bold uppercase rounded-br-md shadow-sm text-white\\\"\\n [ngClass]=\\\"getLabelClass(file.mimeType)\\\"\\n >\\n {{ getFileLabel(file.mimeType) }}\\n </div>\\n\\n <!-- Remove button -->\\n <button\\n style=\\\"top: 3px;right: 3px;\\\"\\n type=\\\"button\\\"\\n class=\\\"absolute top-1 right-1 text-red-500 hover:text-red-700\\\"\\n (click)=\\\"remove(i)\\\"\\n title=\\\"\\u062D\\u0630\\u0641\\\"\\n >\\n <i class=\\\"pi pi-times text-xs\\\"></i>\\n </button>\\n\\n <!-- Center icon -->\\n <i\\n [class]=\\\"getFileIcon(file.mimeType)\\\"\\n [ngClass]=\\\"getIconColor(file.mimeType)\\\"\\n class=\\\"!text-4xl text-center mt-5\\\"\\n ></i>\\n\\n <!-- File name -->\\n <div style=\\\"max-width: 85%;\\\" class=\\\"mt-1 text-[11px] text-gray-600 truncate max-w-[85%] text-center\\\">\\n\\n <div class=\\\"truncate\\\">{{ file.fileName }}</div>\\n </div>\\n\\n <!-- Download icon -->\\n <a\\n *ngIf=\\\"file.binaryObjectId\\\"\\n style=\\\"bottom: 3px;right: 3px;\\\"\\n class=\\\"absolute bottom-1 right-1 text-gray-400 hover:text-blue-500\\\"\\n [href]=\\\"url+'/' + file.binaryObjectId\\\"\\n target=\\\"_blank\\\"\\n download\\n title=\\\"\\u062A\\u062D\\u0645\\u064A\\u0644\\\"\\n >\\n <i class=\\\"pi pi-download text-xs\\\"></i>\\n </a>\\n </div>\\n</div>\\n\\n <!-- Single mode -->\\n <div *ngIf=\\\"props['multiple'] === false && attachment\\\">\\n <div class=\\\"flex items-center justify-between p-2 border-b\\\">\\n <span>{{ attachment.fileName }}</span>\\n <p-button\\n type=\\\"button\\\"\\n icon=\\\"pi pi-times\\\"\\n class=\\\"p-button-rounded p-button-text text-red-600\\\"\\n (click)=\\\"remove(0)\\\"\\n ></p-button>\\n </div>\\n <!-- Caption input if allowed -->\\n <div *ngIf=\\\"props['allowCaption']\\\" class=\\\"mt-1\\\">\\n <input\\n pInputText\\n type=\\\"text\\\"\\n class=\\\"w-full border rounded px-2 py-1 text-sm\\\"\\n placeholder=\\\"\\u0623\\u0636\\u0641 \\u0648\\u0635\\u0641\\u0627\\u064B\\\"\\n (change)=\\\"attachment = attachment\\\"\\n [(ngModel)]=\\\"attachment.caption\\\"\\n />\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Empty Template -->\\n <ng-template pTemplate=\\\"empty\\\">\\n <div\\n *ngIf=\\\"(props['multiple'] !== false && (!attachments || attachments.length === 0)) ||\\n (props['multiple'] === false && !attachment)\\\"\\n class=\\\"border-2 border-dashed rounded-md p-4 bg-gray-50 hover:bg-gray-100 transition flex align-items-center justify-content-center flex-column\\\"\\n >\\n <i class=\\\"pi pi-cloud-upload border-2 rounded p-5 text-8xl text-400 border-400\\\"></i>\\n <p class=\\\"mt-4 mb-0\\\">\\u0627\\u0633\\u062D\\u0628 \\u0648\\u0623\\u0641\\u0644\\u0650\\u062A \\u0627\\u0644\\u0645\\u0644\\u0641\\u0627\\u062A \\u0647\\u0646\\u0627 \\u0644\\u0644\\u062A\\u062D\\u0645\\u064A\\u0644.</p>\\n </div>\\n </ng-template>\\n</p-fileUpload>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i3.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: FileUploadModule }, { kind: \"component\", type: i4.FileUpload, selector: \"p-fileupload, p-fileUpload\", inputs: [\"name\", \"url\", \"method\", \"multiple\", \"accept\", \"disabled\", \"auto\", \"withCredentials\", \"maxFileSize\", \"invalidFileSizeMessageSummary\", \"invalidFileSizeMessageDetail\", \"invalidFileTypeMessageSummary\", \"invalidFileTypeMessageDetail\", \"invalidFileLimitMessageDetail\", \"invalidFileLimitMessageSummary\", \"style\", \"styleClass\", \"previewWidth\", \"chooseLabel\", \"uploadLabel\", \"cancelLabel\", \"chooseIcon\", \"uploadIcon\", \"cancelIcon\", \"showUploadButton\", \"showCancelButton\", \"mode\", \"headers\", \"customUpload\", \"fileLimit\", \"uploadStyleClass\", \"cancelStyleClass\", \"removeStyleClass\", \"chooseStyleClass\", \"chooseButtonProps\", \"uploadButtonProps\", \"cancelButtonProps\", \"files\"], outputs: [\"onBeforeUpload\", \"onSend\", \"onUpload\", \"onError\", \"onClear\", \"onRemove\", \"onSelect\", \"onProgress\", \"uploadHandler\", \"onImageError\", \"onRemoveUploadedFile\"] }, { kind: \"directive\", type: i1.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: i5.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"ngmodule\", type: InputTextModule }, { kind: \"directive\", type: i6.InputText, selector: \"[pInputText]\", inputs: [\"pSize\", \"variant\", \"fluid\", \"invalid\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentTypeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'attachment-type', standalone: true, imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n FileUploadModule,\n ButtonModule,\n InputTextModule\n ], providers: [MessageService], template: \"<p-fileUpload\\n name=\\\"file\\\"\\n [customUpload]=\\\"true\\\"\\n [auto]=\\\"true\\\"\\n [multiple]=\\\"props['multiple'] !== false\\\"\\n [maxFileSize]=\\\"maxFileSize\\\"\\n [accept]=\\\"props['accept'] || defaultAcceptTypes\\\"\\n (uploadHandler)=\\\"onUpload($event)\\\"\\n chooseLabel=\\\"\\u0627\\u0633\\u062D\\u0628 \\u0627\\u0644\\u0645\\u0644\\u0641\\u0627\\u062A \\u0623\\u0648 \\u0627\\u0646\\u0642\\u0631 \\u0644\\u0644\\u0625\\u0631\\u0641\\u0627\\u0642\\\"\\n class=\\\"w-full\\\"\\n>\\n <!-- Header Template -->\\n <ng-template pTemplate=\\\"header\\\" let-chooseCallback=\\\"chooseCallback\\\">\\n <div class=\\\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\\\">\\n <div class=\\\"flex gap-2\\\">\\n <p-button\\n (click)=\\\"choose($event, chooseCallback)\\\"\\n icon=\\\"pi pi-plus\\\"\\n [rounded]=\\\"true\\\"\\n [outlined]=\\\"true\\\"\\n styleClass=\\\"border border-green-600 text-green-600 hover:bg-green-100 bg-white shadow-sm !rounded-full\\\"\\n ></p-button>\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Content Template -->\\n <ng-template pTemplate=\\\"content\\\">\\n <!-- Multi mode -->\\n <div class=\\\"p-2 flex flex-wrap gap-4\\\">\\n <div\\n *ngFor=\\\"let file of attachments; let i = index\\\"\\n style=\\\"height: 7rem;\\\"\\n class=\\\"relative w-24 h-28 bg-white border rounded-lg shadow-sm flex flex-col items-center justify-center\\\"\\n >\\n <!-- File type label -->\\n <div\\n class=\\\"absolute top-0 left-0 px-2 py-0.5 text-[10px] font-bold uppercase rounded-br-md shadow-sm text-white\\\"\\n [ngClass]=\\\"getLabelClass(file.mimeType)\\\"\\n >\\n {{ getFileLabel(file.mimeType) }}\\n </div>\\n\\n <!-- Remove button -->\\n <button\\n style=\\\"top: 3px;right: 3px;\\\"\\n type=\\\"button\\\"\\n class=\\\"absolute top-1 right-1 text-red-500 hover:text-red-700\\\"\\n (click)=\\\"remove(i)\\\"\\n title=\\\"\\u062D\\u0630\\u0641\\\"\\n >\\n <i class=\\\"pi pi-times text-xs\\\"></i>\\n </button>\\n\\n <!-- Center icon -->\\n <i\\n [class]=\\\"getFileIcon(file.mimeType)\\\"\\n [ngClass]=\\\"getIconColor(file.mimeType)\\\"\\n class=\\\"!text-4xl text-center mt-5\\\"\\n ></i>\\n\\n <!-- File name -->\\n <div style=\\\"max-width: 85%;\\\" class=\\\"mt-1 text-[11px] text-gray-600 truncate max-w-[85%] text-center\\\">\\n\\n <div class=\\\"truncate\\\">{{ file.fileName }}</div>\\n </div>\\n\\n <!-- Download icon -->\\n <a\\n *ngIf=\\\"file.binaryObjectId\\\"\\n style=\\\"bottom: 3px;right: 3px;\\\"\\n class=\\\"absolute bottom-1 right-1 text-gray-400 hover:text-blue-500\\\"\\n [href]=\\\"url+'/' + file.binaryObjectId\\\"\\n target=\\\"_blank\\\"\\n download\\n title=\\\"\\u062A\\u062D\\u0645\\u064A\\u0644\\\"\\n >\\n <i class=\\\"pi pi-download text-xs\\\"></i>\\n </a>\\n </div>\\n</div>\\n\\n <!-- Single mode -->\\n <div *ngIf=\\\"props['multiple'] === false && attachment\\\">\\n <div class=\\\"flex items-center justify-between p-2 border-b\\\">\\n <span>{{ attachment.fileName }}</span>\\n <p-button\\n type=\\\"button\\\"\\n icon=\\\"pi pi-times\\\"\\n class=\\\"p-button-rounded p-button-text text-red-600\\\"\\n (click)=\\\"remove(0)\\\"\\n ></p-button>\\n </div>\\n <!-- Caption input if allowed -->\\n <div *ngIf=\\\"props['allowCaption']\\\" class=\\\"mt-1\\\">\\n <input\\n pInputText\\n type=\\\"text\\\"\\n class=\\\"w-full border rounded px-2 py-1 text-sm\\\"\\n placeholder=\\\"\\u0623\\u0636\\u0641 \\u0648\\u0635\\u0641\\u0627\\u064B\\\"\\n (change)=\\\"attachment = attachment\\\"\\n [(ngModel)]=\\\"attachment.caption\\\"\\n />\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Empty Template -->\\n <ng-template pTemplate=\\\"empty\\\">\\n <div\\n *ngIf=\\\"(props['multiple'] !== false && (!attachments || attachments.length === 0)) ||\\n (props['multiple'] === false && !attachment)\\\"\\n class=\\\"border-2 border-dashed rounded-md p-4 bg-gray-50 hover:bg-gray-100 transition flex align-items-center justify-content-center flex-column\\\"\\n >\\n <i class=\\\"pi pi-cloud-upload border-2 rounded p-5 text-8xl text-400 border-400\\\"></i>\\n <p class=\\\"mt-4 mb-0\\\">\\u0627\\u0633\\u062D\\u0628 \\u0648\\u0623\\u0641\\u0644\\u0650\\u062A \\u0627\\u0644\\u0645\\u0644\\u0641\\u0627\\u062A \\u0647\\u0646\\u0627 \\u0644\\u0644\\u062A\\u062D\\u0645\\u064A\\u0644.</p>\\n </div>\\n </ng-template>\\n</p-fileUpload>\\n\" }]\n }], ctorParameters: () => [{ type: i1.MessageService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2F0dGFjaG1lbnRzL3NyYy9saWIvYXR0YWNobWVudC10eXBlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2F0dGFjaG1lbnRzL3NyYy9saWIvYXR0YWNobWVudC10eXBlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRyxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUcsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7O0FBaUJqRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsU0FBUztJQU9oQztJQU5wQixrQkFBa0IsR0FBRyx5SUFBeUksQ0FBQztJQUUvSixXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPO0lBQ3RDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDTCxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRWxDLFlB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QUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sZ0JBQWdCLENBQUM7UUFDbEQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzt1R0E1SlUsdUJBQXVCOzJGQUF2Qix1QkFBdUIsOERBSHZCLENBQUMsY0FBYyxDQUFDLGlEQzFCN0IsZ3dJQXVIQSwyQ0RwR0ksWUFBWSw2VkFDWixtQkFBbUIsc1pBQ25CLFdBQVcsc1BBQ1gsZ0JBQWdCLG1pQ0FDaEIsWUFBWSxpYkFDWixlQUFlOzsyRkFLTix1QkFBdUI7a0JBZG5DLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixlQUFlO3FCQUNoQixhQUNVLENBQUMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmltcG9ydCB7IEZpbGVVcGxvYWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7ICBFTlZJUk9OTUVOVCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS90b2tlbnMnO1xuaW1wb3J0IHsgIEF0dGFjaG1lbnREdG8gfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdHRhY2htZW50LXR5cGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRmlsZVVwbG9hZE1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSW5wdXRUZXh0TW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F0dGFjaG1lbnQtdHlwZS5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudFR5cGVDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGUge1xuICBkZWZhdWx0QWNjZXB0VHlwZXMgPSAnLnBkZixhcHBsaWNhdGlvbi9wZGYsaW1hZ2UvKiwudHh0LHRleHQvcGxhaW4sYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQsYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJztcblxuICBtYXhGaWxlU2l6ZSA9IDEgKiAxMDI0ICogMTAyNDsgLy8gMSBNQlxuICB0ZW5hbnRJZCA9IDA7XG4gIHByaXZhdGUgZW52ID0gaW5qZWN0KEVOVklST05NRU5UKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgfVxuICBnZXQgdXJsKCk6c3RyaW5ne1xuICAgICByZXR1cm4gdGhpcy5lbnYuYXBpVXJsICsgKHRoaXMucHJvcHNbJ2FwaVVybCddICA/PyAnL2FwaS9maWxlcycpO1xuICB9XG4gIGdldCBhdHRhY2htZW50cygpOiBBdHRhY2htZW50RHRvW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpXG4gICAgICA/IHRoaXMuZm9ybUNvbnRyb2wudmFsdWVcbiAgICAgIDogKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPyBbdGhpcy5mb3JtQ29udHJvbC52YWx1ZV0gOiBbXSk7XG4gIH1cblxuICBzZXQgYXR0YWNobWVudHModmFsdWU6IEF0dGFjaG1lbnREdG9bXSkge1xuICAgIGlmICh0aGlzLnByb3BzWydtdWx0aXBsZSddKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZT8uWzBdIHx8IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBhdHRhY2htZW50KCk6IEF0dGFjaG1lbnREdG8gfCBudWxsIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmZvcm1Db250cm9sLnZhbHVlKVxuICAgICAgPyAodGhpcy5mb3JtQ29udHJvbC52YWx1ZVswXSB8fCBudWxsKVxuICAgICAgOiB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IG51bGw7XG4gIH1cblxuXG4gIHNldCBhdHRhY2htZW50KHZhbHVlOiBBdHRhY2htZW50RHRvIHwgbnVsbCkge1xuICAgIGlmICh0aGlzLnByb3BzWydtdWx0aXBsZSddKSB7XG4gICAgICBjb25zdCBhcnIgPSBBcnJheS5pc0FycmF5KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpXG4gICAgICAgID8gWy4uLnRoaXMuZm9ybUNvbnRyb2wudmFsdWVdXG4gICAgICAgIDogKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPyBbdGhpcy5mb3JtQ29udHJvbC52YWx1ZV0gOiBbXSk7XG4gICAgICBpZiAodmFsdWUpIGFyci5wdXNoKHZhbHVlKTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoYXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25VcGxvYWQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGZpbGVzOiBGaWxlW10gPSBldmVudC5maWxlcztcbiAgICBjb25zdCBpc011bHRpcGxlID0gdGhpcy5wcm9wc1snbXVsdGlwbGUnXSA/PyB0cnVlO1xuICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9ICh0aGlzLnByb3BzWydhY2NlcHQnXSBhcyBzdHJpbmcpIHx8ICcnO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgc3VtbWFyeTogJ9iu2LfYoycsXG4gICAgICAgICAgZGV0YWlsOiBg2KfZhNmF2YTZgSBcIiR7ZmlsZS5uYW1lfVwiINmK2KrYrNin2YjYsiDYp9mE2K3YryDYp9mE2KPZgti12YkgKDFNQilgLFxuICAgICAgICB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChhbGxvd2VkVHlwZXMgJiYgIXRoaXMuaXNGaWxlVHlwZUFsbG93ZWQoZmlsZSwgYWxsb3dlZFR5cGVzKSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgc3VtbWFyeTogJ9mG2YjYuSDYp9mE2YXZhNmBINi62YrYsSDZhdiz2YXZiNitJyxcbiAgICAgICAgICBkZXRhaWw6IGDYp9mE2YXZhNmBIFwiJHtmaWxlLm5hbWV9XCIg2YTZitizINmF2YYg2KfZhNij2YbZiNin2Lkg2KfZhNmF2LPZhdmI2K3YqWAsXG4gICAgICAgIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTXVsdGlwbGUgJiYgdGhpcy5hdHRhY2htZW50cy5zb21lKGEgPT4gYS5maWxlTmFtZSA9PT0gZmlsZS5uYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYmFzZTY0ID0gYXdhaXQgdGhpcy5maWxlVG9CYXNlNjQoZmlsZSk7XG4gICAgICBjb25zdCBhdHRhY2htZW50ID0gbmV3IEF0dGFjaG1lbnREdG8oKTtcbiAgICAgIGF0dGFjaG1lbnQuZmlsZU5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICBhdHRhY2htZW50Lm1pbWVUeXBlID0gZmlsZS50eXBlO1xuICAgICAgYXR0YWNobWVudC5iYXNlNjQgPSBiYXNlNjQ7XG5cbiAgICAgIGlmIChpc011bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudHMgPSBbLi4udGhpcy5hdHRhY2htZW50cywgYXR0YWNobWVudF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmF0dGFjaG1lbnQgPSBhdHRhY2htZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgY29weSA9IFsuLi50aGlzLmF0dGFjaG1lbnRzXTtcbiAgICBjb3B5LnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5hdHRhY2htZW50cyA9IGNvcHk7XG4gIH1cblxuICBjaG9vc2UoZXZlbnQ6IGFueSwgY2FsbGJhY2s6IGFueSkge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbGVUb0Jhc2U2NChmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKS5zcGxpdCgnLCcpWzFdKTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gZXJyID0+IHJlamVjdChlcnIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpbGVUeXBlQWxsb3dlZChmaWxlOiBGaWxlLCBhbGxvd2VkVHlwZXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjY2VwdGVkID0gYWxsb3dlZFR5cGVzLnNwbGl0KCcsJykubWFwKHQgPT4gdC50cmltKCkpO1xuICAgIHJldHVybiBhY2NlcHRlZC5zb21lKHR5cGUgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09ICcqLyonKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICh0eXBlLmVuZHNXaXRoKCcvKicpKSB7XG4gICAgICAgIHJldHVybiBmaWxlLnR5cGUuc3RhcnRzV2l0aCh0eXBlLnNwbGl0KCcvJylbMF0gKyAnLycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbGUudHlwZSA9PT0gdHlwZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEZpbGVMYWJlbChtaW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghbWltZSkgcmV0dXJuICdGSUxFJztcbiAgICBpZiAobWltZS5pbmNsdWRlcygncGRmJykpIHJldHVybiAnUERGJztcbiAgICBpZiAobWltZS5pbmNsdWRlcygnZXhjZWwnKSB8fCBtaW1lLmluY2x1ZGVzKCdzcHJlYWRzaGVldCcpKSByZXR1cm4gJ1hMUyc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ3dvcmQnKSkgcmV0dXJuICdET0MnO1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCdpbWFnZScpKSByZXR1cm4gJ0lNRyc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ3ppcCcpKSByZXR1cm4gJ1pJUCc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ2NzdicpKSByZXR1cm4gJ0NTVic7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ3RleHQnKSkgcmV0dXJuICdUWFQnO1xuICAgIHJldHVybiAnRklMRSc7XG4gIH1cblxuICBnZXRMYWJlbENsYXNzKG1pbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ3BkZicpKSByZXR1cm4gJ2JnLXJlZC02MDAgdGV4dC13aGl0ZSc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ2V4Y2VsJykpIHJldHVybiAnYmctZ3JlZW4tNjAwIHRleHQtd2hpdGUnO1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCd3b3JkJykpIHJldHVybiAnYmctYmx1ZS02MDAgdGV4dC13aGl0ZSc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ2ltYWdlJykpIHJldHVybiAnYmcteWVsbG93LTUwMCB0ZXh0LXdoaXRlJztcbiAgICBpZiAobWltZS5pbmNsdWRlcygnemlwJykpIHJldHVybiAnYmctcGluay02MDAgdGV4dC13aGl0ZSc7XG4gICAgcmV0dXJuICdiZy1ncmF5LTQwMCB0ZXh0LXdoaXRlJztcbiAgfVxuXG4gIGdldEljb25Db2xvcihtaW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCdwZGYnKSkgcmV0dXJuICd0ZXh0LXJlZC00MDAnO1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCdleGNlbCcpKSByZXR1cm4gJ3RleHQtZ3JlZW4tNTAwJztcbiAgICBpZiAobWltZS5pbmNsdWRlcygnd29yZCcpKSByZXR1cm4gJ3RleHQtYmx1ZS01MDAnO1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCdpbWFnZScpKSByZXR1cm4gJ3RleHQteWVsbG93LTUwMCc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ3ppcCcpKSByZXR1cm4gJ3RleHQtcGluay01MDAnO1xuICAgIHJldHVybiAndGV4dC1ncmF5LTQwMCc7XG4gIH1cblxuICBnZXRGaWxlSWNvbihtaW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCdwZGYnKSkgcmV0dXJuICdwaSBwaS1maWxlLXBkZic7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ2V4Y2VsJykgfHwgbWltZS5pbmNsdWRlcygnc3ByZWFkc2hlZXQnKSkgcmV0dXJuICdwaSBwaS1maWxlLWV4Y2VsJztcbiAgICBpZiAobWltZS5pbmNsdWRlcygnd29yZCcpKSByZXR1cm4gJ3BpIHBpLWZpbGUtd29yZCc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ2ltYWdlJykpIHJldHVybiAncGkgcGktaW1hZ2UnO1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCd6aXAnKSkgcmV0dXJuICdwaSBwaS1maWxlLXppcCc7XG4gICAgcmV0dXJuICdwaSBwaS1maWxlJztcbiAgfVxufVxuIiwiPHAtZmlsZVVwbG9hZFxuICBuYW1lPVwiZmlsZVwiXG4gIFtjdXN0b21VcGxvYWRdPVwidHJ1ZVwiXG4gIFthdXRvXT1cInRydWVcIlxuICBbbXVsdGlwbGVdPVwicHJvcHNbJ211bHRpcGxlJ10gIT09IGZhbHNlXCJcbiAgW21heEZpbGVTaXplXT1cIm1heEZpbGVTaXplXCJcbiAgW2FjY2VwdF09XCJwcm9wc1snYWNjZXB0J10gfHwgZGVmYXVsdEFjY2VwdFR5cGVzXCJcbiAgKHVwbG9hZEhhbmRsZXIpPVwib25VcGxvYWQoJGV2ZW50KVwiXG4gIGNob29zZUxhYmVsPVwi2KfYs9it2Kgg2KfZhNmF2YTZgdin2Kog2KPZiCDYp9mG2YLYsSDZhNmE2KXYsdmB2KfZglwiXG4gIGNsYXNzPVwidy1mdWxsXCJcbj5cbiAgPCEtLSBIZWFkZXIgVGVtcGxhdGUgLS0+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY2hvb3NlQ2FsbGJhY2s9XCJjaG9vc2VDYWxsYmFja1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC0xIGdhcC0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMlwiPlxuICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAoY2xpY2spPVwiY2hvb3NlKCRldmVudCwgY2hvb3NlQ2FsbGJhY2spXCJcbiAgICAgICAgICBpY29uPVwicGkgcGktcGx1c1wiXG4gICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIlxuICAgICAgICAgIHN0eWxlQ2xhc3M9XCJib3JkZXIgYm9yZGVyLWdyZWVuLTYwMCB0ZXh0LWdyZWVuLTYwMCBob3ZlcjpiZy1ncmVlbi0xMDAgYmctd2hpdGUgc2hhZG93LXNtICFyb3VuZGVkLWZ1bGxcIlxuICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gQ29udGVudCBUZW1wbGF0ZSAtLT5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIj5cbiAgICA8IS0tIE11bHRpIG1vZGUgLS0+XG4gICA8ZGl2IGNsYXNzPVwicC0yIGZsZXggZmxleC13cmFwIGdhcC00XCI+XG4gIDxkaXZcbiAgICAqbmdGb3I9XCJsZXQgZmlsZSBvZiBhdHRhY2htZW50czsgbGV0IGkgPSBpbmRleFwiXG4gICAgc3R5bGU9XCJoZWlnaHQ6IDdyZW07XCJcbiAgICBjbGFzcz1cInJlbGF0aXZlIHctMjQgaC0yOCBiZy13aGl0ZSBib3JkZXIgcm91bmRlZC1sZyBzaGFkb3ctc20gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICA+XG4gICAgPCEtLSBGaWxlIHR5cGUgbGFiZWwgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgcHgtMiBweS0wLjUgdGV4dC1bMTBweF0gZm9udC1ib2xkIHVwcGVyY2FzZSByb3VuZGVkLWJyLW1kIHNoYWRvdy1zbSB0ZXh0LXdoaXRlXCJcbiAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsQ2xhc3MoZmlsZS5taW1lVHlwZSlcIlxuICAgID5cbiAgICAgIHt7IGdldEZpbGVMYWJlbChmaWxlLm1pbWVUeXBlKSB9fVxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBSZW1vdmUgYnV0dG9uIC0tPlxuICAgIDxidXR0b25cbiAgICBzdHlsZT1cInRvcDogM3B4O3JpZ2h0OiAzcHg7XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTEgcmlnaHQtMSB0ZXh0LXJlZC01MDAgaG92ZXI6dGV4dC1yZWQtNzAwXCJcbiAgICAgIChjbGljayk9XCJyZW1vdmUoaSlcIlxuICAgICAgdGl0bGU9XCLYrdiw2YFcIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwicGkgcGktdGltZXMgdGV4dC14c1wiPjwvaT5cbiAgICA8L2J1dHRvbj5cblxuICAgIDwhLS0gQ2VudGVyIGljb24gLS0+XG4gICAgPGlcbiAgICAgIFtjbGFzc109XCJnZXRGaWxlSWNvbihmaWxlLm1pbWVUeXBlKVwiXG4gICAgICBbbmdDbGFzc109XCJnZXRJY29uQ29sb3IoZmlsZS5taW1lVHlwZSlcIlxuICAgICAgY2xhc3M9XCIhdGV4dC00eGwgdGV4dC1jZW50ZXIgbXQtNVwiXG4gICAgPjwvaT5cblxuICAgIDwhLS0gRmlsZSBuYW1lIC0tPlxuICAgIDxkaXYgc3R5bGU9XCJtYXgtd2lkdGg6IDg1JTtcIiBjbGFzcz1cIm10LTEgdGV4dC1bMTFweF0gdGV4dC1ncmF5LTYwMCB0cnVuY2F0ZSBtYXgtdy1bODUlXSB0ZXh0LWNlbnRlclwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidHJ1bmNhdGVcIj57eyBmaWxlLmZpbGVOYW1lIH19PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIERvd25sb2FkIGljb24gLS0+XG4gICAgPGFcbiAgICAqbmdJZj1cImZpbGUuYmluYXJ5T2JqZWN0SWRcIlxuICAgIHN0eWxlPVwiYm90dG9tOiAzcHg7cmlnaHQ6IDNweDtcIlxuICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBib3R0b20tMSByaWdodC0xIHRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC1ibHVlLTUwMFwiXG4gICAgICBbaHJlZl09XCJ1cmwrJy8nICsgZmlsZS5iaW5hcnlPYmplY3RJZFwiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgZG93bmxvYWRcbiAgICAgIHRpdGxlPVwi2KrYrdmF2YrZhFwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1kb3dubG9hZCB0ZXh0LXhzXCI+PC9pPlxuICAgIDwvYT5cbiAgPC9kaXY+XG48L2Rpdj5cblxuICAgIDwhLS0gU2luZ2xlIG1vZGUgLS0+XG4gICAgPGRpdiAqbmdJZj1cInByb3BzWydtdWx0aXBsZSddID09PSBmYWxzZSAmJiBhdHRhY2htZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMiBib3JkZXItYlwiPlxuICAgICAgICA8c3Bhbj57eyBhdHRhY2htZW50LmZpbGVOYW1lIH19PC9zcGFuPlxuICAgICAgICA8cC1idXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcbiAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCB0ZXh0LXJlZC02MDBcIlxuICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoMClcIlxuICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgIDwhLS0gQ2FwdGlvbiBpbnB1dCBpZiBhbGxvd2VkIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInByb3BzWydhbGxvd0NhcHRpb24nXVwiIGNsYXNzPVwibXQtMVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cInctZnVsbCBib3JkZXIgcm91bmRlZCBweC0yIHB5LTEgdGV4dC1zbVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCLYo9i22YEg2YjYtdmB2KfZi1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJhdHRhY2htZW50ID0gYXR0YWNobWVudFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJhdHRhY2htZW50LmNhcHRpb25cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBFbXB0eSBUZW1wbGF0ZSAtLT5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5XCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIocHJvcHNbJ211bHRpcGxlJ10gIT09IGZhbHNlICYmICghYXR0YWNobWVudHMgfHwgYXR0YWNobWVudHMubGVuZ3RoID09PSAwKSkgfHxcbiAgICAgICAgICAgICAocHJvcHNbJ211bHRpcGxlJ10gPT09IGZhbHNlICYmICFhdHRhY2htZW50KVwiXG4gICAgICBjbGFzcz1cImJvcmRlci0yIGJvcmRlci1kYXNoZWQgcm91bmRlZC1tZCBwLTQgYmctZ3JheS01MCBob3ZlcjpiZy1ncmF5LTEwMCB0cmFuc2l0aW9uIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwicGkgcGktY2xvdWQtdXBsb2FkIGJvcmRlci0yIHJvdW5kZWQgcC01IHRleHQtOHhsIHRleHQtNDAwIGJvcmRlci00MDBcIj48L2k+XG4gICAgICA8cCBjbGFzcz1cIm10LTQgbWItMFwiPtin2LPYrdioINmI2KPZgdmE2ZDYqiDYp9mE2YXZhNmB2KfYqiDZh9mG2Kcg2YTZhNiq2K3ZhdmK2YQuPC9wPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLWZpbGVVcGxvYWQ+XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtYXR0YWNobWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvYXR0YWNobWVudHMvc3JjL2VsaXRlLmZyYW1ld29yay1uZy51aS5jb3JlLWF0dGFjaG1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elite.framework-ng.ui.core-attachments.mjs","sources":["../tmp-esm2022/attachments/lib/attachments-module.js","../tmp-esm2022/attachments/lib/attachment-type.js","../tmp-esm2022/attachments/elite.framework-ng.ui.core-attachments.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class AttachmentsModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentsModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentsModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudHMtbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2F0dGFjaG1lbnRzL3NyYy9saWIvYXR0YWNobWVudHMtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8saUJBQWlCO3VHQUFqQixpQkFBaUI7d0dBQWpCLGlCQUFpQixZQUZsQixZQUFZO3dHQUVYLGlCQUFpQixZQUZsQixZQUFZOzsyRkFFWCxpQkFBaUI7a0JBSDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudHNNb2R1bGUge31cbiJdfQ==","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { ButtonModule } from 'primeng/button';\nimport { MessageService } from 'primeng/api';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { AttachmentDto } from '@elite.framework/ng.core/models';\nimport { EnvironmentService } from '@elite.framework/ng.core/services';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"primeng/api\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"primeng/fileupload\";\nimport * as i5 from \"primeng/button\";\nimport * as i6 from \"primeng/inputtext\";\nexport class AttachmentTypeComponent extends FieldType {\n messageService;\n defaultAcceptTypes = '.pdf,application/pdf,image/*,.txt,text/plain,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel';\n maxFileSize = 1 * 1024 * 1024; // 1 MB\n tenantId = 0;\n env = inject(EnvironmentService);\n constructor(messageService) {\n super();\n this.messageService = messageService;\n }\n get url() {\n return this.env.getEnvironment().apis.default.url + (this.props['apiUrl'] ?? '/api/files');\n }\n get attachments() {\n return Array.isArray(this.formControl.value)\n ? this.formControl.value\n : (this.formControl.value ? [this.formControl.value] : []);\n }\n set attachments(value) {\n if (this.props['multiple']) {\n this.formControl.setValue(value);\n }\n else {\n this.formControl.setValue(value?.[0] || null);\n }\n }\n get attachment() {\n return Array.isArray(this.formControl.value)\n ? (this.formControl.value[0] || null)\n : this.formControl.value || null;\n }\n set attachment(value) {\n if (this.props['multiple']) {\n const arr = Array.isArray(this.formControl.value)\n ? [...this.formControl.value]\n : (this.formControl.value ? [this.formControl.value] : []);\n if (value)\n arr.push(value);\n this.formControl.setValue(arr);\n }\n else {\n this.formControl.setValue(value);\n }\n }\n async onUpload(event) {\n const files = event.files;\n const isMultiple = this.props['multiple'] ?? true;\n const allowedTypes = this.props['accept'] || '';\n for (const file of files) {\n if (file.size > this.maxFileSize) {\n this.messageService.add({\n severity: 'error',\n summary: 'خطأ',\n detail: `الملف \"${file.name}\" يتجاوز الحد الأقصى (1MB)`,\n });\n continue;\n }\n if (allowedTypes && !this.isFileTypeAllowed(file, allowedTypes)) {\n this.messageService.add({\n severity: 'error',\n summary: 'نوع الملف غير مسموح',\n detail: `الملف \"${file.name}\" ليس من الأنواع المسموحة`,\n });\n continue;\n }\n if (isMultiple && this.attachments.some(a => a.fileName === file.name)) {\n continue;\n }\n const base64 = await this.fileToBase64(file);\n const attachment = new AttachmentDto();\n attachment.fileName = file.name;\n attachment.mimeType = file.type;\n attachment.base64 = base64;\n if (isMultiple) {\n this.attachments = [...this.attachments, attachment];\n }\n else {\n this.attachment = attachment;\n }\n }\n }\n remove(index) {\n const copy = [...this.attachments];\n copy.splice(index, 1);\n this.attachments = copy;\n }\n choose(event, callback) {\n callback();\n }\n fileToBase64(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result.split(',')[1]);\n reader.onerror = err => reject(err);\n });\n }\n isFileTypeAllowed(file, allowedTypes) {\n const accepted = allowedTypes.split(',').map(t => t.trim());\n return accepted.some(type => {\n if (type === '*/*')\n return true;\n if (type.endsWith('/*')) {\n return file.type.startsWith(type.split('/')[0] + '/');\n }\n return file.type === type;\n });\n }\n getFileLabel(mime) {\n if (!mime)\n return 'FILE';\n if (mime.includes('pdf'))\n return 'PDF';\n if (mime.includes('excel') || mime.includes('spreadsheet'))\n return 'XLS';\n if (mime.includes('word'))\n return 'DOC';\n if (mime.includes('image'))\n return 'IMG';\n if (mime.includes('zip'))\n return 'ZIP';\n if (mime.includes('csv'))\n return 'CSV';\n if (mime.includes('text'))\n return 'TXT';\n return 'FILE';\n }\n getLabelClass(mime) {\n if (mime.includes('pdf'))\n return 'bg-red-600 text-white';\n if (mime.includes('excel'))\n return 'bg-green-600 text-white';\n if (mime.includes('word'))\n return 'bg-blue-600 text-white';\n if (mime.includes('image'))\n return 'bg-yellow-500 text-white';\n if (mime.includes('zip'))\n return 'bg-pink-600 text-white';\n return 'bg-gray-400 text-white';\n }\n getIconColor(mime) {\n if (mime.includes('pdf'))\n return 'text-red-400';\n if (mime.includes('excel'))\n return 'text-green-500';\n if (mime.includes('word'))\n return 'text-blue-500';\n if (mime.includes('image'))\n return 'text-yellow-500';\n if (mime.includes('zip'))\n return 'text-pink-500';\n return 'text-gray-400';\n }\n getFileIcon(mime) {\n if (mime.includes('pdf'))\n return 'pi pi-file-pdf';\n if (mime.includes('excel') || mime.includes('spreadsheet'))\n return 'pi pi-file-excel';\n if (mime.includes('word'))\n return 'pi pi-file-word';\n if (mime.includes('image'))\n return 'pi pi-image';\n if (mime.includes('zip'))\n return 'pi pi-file-zip';\n return 'pi pi-file';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentTypeComponent, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: AttachmentTypeComponent, isStandalone: true, selector: \"attachment-type\", providers: [MessageService], usesInheritance: true, ngImport: i0, template: \"<p-fileUpload\\n name=\\\"file\\\"\\n [customUpload]=\\\"true\\\"\\n [auto]=\\\"true\\\"\\n [multiple]=\\\"props['multiple'] !== false\\\"\\n [maxFileSize]=\\\"maxFileSize\\\"\\n [accept]=\\\"props['accept'] || defaultAcceptTypes\\\"\\n (uploadHandler)=\\\"onUpload($event)\\\"\\n chooseLabel=\\\"\\u0627\\u0633\\u062D\\u0628 \\u0627\\u0644\\u0645\\u0644\\u0641\\u0627\\u062A \\u0623\\u0648 \\u0627\\u0646\\u0642\\u0631 \\u0644\\u0644\\u0625\\u0631\\u0641\\u0627\\u0642\\\"\\n class=\\\"w-full\\\"\\n>\\n <!-- Header Template -->\\n <ng-template pTemplate=\\\"header\\\" let-chooseCallback=\\\"chooseCallback\\\">\\n <div class=\\\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\\\">\\n <div class=\\\"flex gap-2\\\">\\n <p-button\\n (click)=\\\"choose($event, chooseCallback)\\\"\\n icon=\\\"pi pi-plus\\\"\\n [rounded]=\\\"true\\\"\\n [outlined]=\\\"true\\\"\\n styleClass=\\\"border border-green-600 text-green-600 hover:bg-green-100 bg-white shadow-sm !rounded-full\\\"\\n ></p-button>\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Content Template -->\\n <ng-template pTemplate=\\\"content\\\">\\n <!-- Multi mode -->\\n <div class=\\\"p-2 flex flex-wrap gap-4\\\">\\n <div\\n *ngFor=\\\"let file of attachments; let i = index\\\"\\n style=\\\"height: 7rem;\\\"\\n class=\\\"relative w-24 h-28 bg-white border rounded-lg shadow-sm flex flex-col items-center justify-center\\\"\\n >\\n <!-- File type label -->\\n <div\\n class=\\\"absolute top-0 left-0 px-2 py-0.5 text-[10px] font-bold uppercase rounded-br-md shadow-sm text-white\\\"\\n [ngClass]=\\\"getLabelClass(file.mimeType)\\\"\\n >\\n {{ getFileLabel(file.mimeType) }}\\n </div>\\n\\n <!-- Remove button -->\\n <button\\n style=\\\"top: 3px;right: 3px;\\\"\\n type=\\\"button\\\"\\n class=\\\"absolute top-1 right-1 text-red-500 hover:text-red-700\\\"\\n (click)=\\\"remove(i)\\\"\\n title=\\\"\\u062D\\u0630\\u0641\\\"\\n >\\n <i class=\\\"pi pi-times text-xs\\\"></i>\\n </button>\\n\\n <!-- Center icon -->\\n <i\\n [class]=\\\"getFileIcon(file.mimeType)\\\"\\n [ngClass]=\\\"getIconColor(file.mimeType)\\\"\\n class=\\\"!text-4xl text-center mt-5\\\"\\n ></i>\\n\\n <!-- File name -->\\n <div style=\\\"max-width: 85%;\\\" class=\\\"mt-1 text-[11px] text-gray-600 truncate max-w-[85%] text-center\\\">\\n\\n <div class=\\\"truncate\\\">{{ file.fileName }}</div>\\n </div>\\n\\n <!-- Download icon -->\\n <a\\n *ngIf=\\\"file.binaryObjectId\\\"\\n style=\\\"bottom: 3px;right: 3px;\\\"\\n class=\\\"absolute bottom-1 right-1 text-gray-400 hover:text-blue-500\\\"\\n [href]=\\\"url+'/' + file.binaryObjectId\\\"\\n target=\\\"_blank\\\"\\n download\\n title=\\\"\\u062A\\u062D\\u0645\\u064A\\u0644\\\"\\n >\\n <i class=\\\"pi pi-download text-xs\\\"></i>\\n </a>\\n </div>\\n</div>\\n\\n <!-- Single mode -->\\n <div *ngIf=\\\"props['multiple'] === false && attachment\\\">\\n <div class=\\\"flex items-center justify-between p-2 border-b\\\">\\n <span>{{ attachment.fileName }}</span>\\n <p-button\\n type=\\\"button\\\"\\n icon=\\\"pi pi-times\\\"\\n class=\\\"p-button-rounded p-button-text text-red-600\\\"\\n (click)=\\\"remove(0)\\\"\\n ></p-button>\\n </div>\\n <!-- Caption input if allowed -->\\n <div *ngIf=\\\"props['allowCaption']\\\" class=\\\"mt-1\\\">\\n <input\\n pInputText\\n type=\\\"text\\\"\\n class=\\\"w-full border rounded px-2 py-1 text-sm\\\"\\n placeholder=\\\"\\u0623\\u0636\\u0641 \\u0648\\u0635\\u0641\\u0627\\u064B\\\"\\n (change)=\\\"attachment = attachment\\\"\\n [(ngModel)]=\\\"attachment.caption\\\"\\n />\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Empty Template -->\\n <ng-template pTemplate=\\\"empty\\\">\\n <div\\n *ngIf=\\\"(props['multiple'] !== false && (!attachments || attachments.length === 0)) ||\\n (props['multiple'] === false && !attachment)\\\"\\n class=\\\"border-2 border-dashed rounded-md p-4 bg-gray-50 hover:bg-gray-100 transition flex align-items-center justify-content-center flex-column\\\"\\n >\\n <i class=\\\"pi pi-cloud-upload border-2 rounded p-5 text-8xl text-400 border-400\\\"></i>\\n <p class=\\\"mt-4 mb-0\\\">\\u0627\\u0633\\u062D\\u0628 \\u0648\\u0623\\u0641\\u0644\\u0650\\u062A \\u0627\\u0644\\u0645\\u0644\\u0641\\u0627\\u062A \\u0647\\u0646\\u0627 \\u0644\\u0644\\u062A\\u062D\\u0645\\u064A\\u0644.</p>\\n </div>\\n </ng-template>\\n</p-fileUpload>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i3.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: FileUploadModule }, { kind: \"component\", type: i4.FileUpload, selector: \"p-fileupload, p-fileUpload\", inputs: [\"name\", \"url\", \"method\", \"multiple\", \"accept\", \"disabled\", \"auto\", \"withCredentials\", \"maxFileSize\", \"invalidFileSizeMessageSummary\", \"invalidFileSizeMessageDetail\", \"invalidFileTypeMessageSummary\", \"invalidFileTypeMessageDetail\", \"invalidFileLimitMessageDetail\", \"invalidFileLimitMessageSummary\", \"style\", \"styleClass\", \"previewWidth\", \"chooseLabel\", \"uploadLabel\", \"cancelLabel\", \"chooseIcon\", \"uploadIcon\", \"cancelIcon\", \"showUploadButton\", \"showCancelButton\", \"mode\", \"headers\", \"customUpload\", \"fileLimit\", \"uploadStyleClass\", \"cancelStyleClass\", \"removeStyleClass\", \"chooseStyleClass\", \"chooseButtonProps\", \"uploadButtonProps\", \"cancelButtonProps\", \"files\"], outputs: [\"onBeforeUpload\", \"onSend\", \"onUpload\", \"onError\", \"onClear\", \"onRemove\", \"onSelect\", \"onProgress\", \"uploadHandler\", \"onImageError\", \"onRemoveUploadedFile\"] }, { kind: \"directive\", type: i1.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: i5.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"ngmodule\", type: InputTextModule }, { kind: \"directive\", type: i6.InputText, selector: \"[pInputText]\", inputs: [\"pSize\", \"variant\", \"fluid\", \"invalid\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AttachmentTypeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'attachment-type', standalone: true, imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n FileUploadModule,\n ButtonModule,\n InputTextModule\n ], providers: [MessageService], template: \"<p-fileUpload\\n name=\\\"file\\\"\\n [customUpload]=\\\"true\\\"\\n [auto]=\\\"true\\\"\\n [multiple]=\\\"props['multiple'] !== false\\\"\\n [maxFileSize]=\\\"maxFileSize\\\"\\n [accept]=\\\"props['accept'] || defaultAcceptTypes\\\"\\n (uploadHandler)=\\\"onUpload($event)\\\"\\n chooseLabel=\\\"\\u0627\\u0633\\u062D\\u0628 \\u0627\\u0644\\u0645\\u0644\\u0641\\u0627\\u062A \\u0623\\u0648 \\u0627\\u0646\\u0642\\u0631 \\u0644\\u0644\\u0625\\u0631\\u0641\\u0627\\u0642\\\"\\n class=\\\"w-full\\\"\\n>\\n <!-- Header Template -->\\n <ng-template pTemplate=\\\"header\\\" let-chooseCallback=\\\"chooseCallback\\\">\\n <div class=\\\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\\\">\\n <div class=\\\"flex gap-2\\\">\\n <p-button\\n (click)=\\\"choose($event, chooseCallback)\\\"\\n icon=\\\"pi pi-plus\\\"\\n [rounded]=\\\"true\\\"\\n [outlined]=\\\"true\\\"\\n styleClass=\\\"border border-green-600 text-green-600 hover:bg-green-100 bg-white shadow-sm !rounded-full\\\"\\n ></p-button>\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Content Template -->\\n <ng-template pTemplate=\\\"content\\\">\\n <!-- Multi mode -->\\n <div class=\\\"p-2 flex flex-wrap gap-4\\\">\\n <div\\n *ngFor=\\\"let file of attachments; let i = index\\\"\\n style=\\\"height: 7rem;\\\"\\n class=\\\"relative w-24 h-28 bg-white border rounded-lg shadow-sm flex flex-col items-center justify-center\\\"\\n >\\n <!-- File type label -->\\n <div\\n class=\\\"absolute top-0 left-0 px-2 py-0.5 text-[10px] font-bold uppercase rounded-br-md shadow-sm text-white\\\"\\n [ngClass]=\\\"getLabelClass(file.mimeType)\\\"\\n >\\n {{ getFileLabel(file.mimeType) }}\\n </div>\\n\\n <!-- Remove button -->\\n <button\\n style=\\\"top: 3px;right: 3px;\\\"\\n type=\\\"button\\\"\\n class=\\\"absolute top-1 right-1 text-red-500 hover:text-red-700\\\"\\n (click)=\\\"remove(i)\\\"\\n title=\\\"\\u062D\\u0630\\u0641\\\"\\n >\\n <i class=\\\"pi pi-times text-xs\\\"></i>\\n </button>\\n\\n <!-- Center icon -->\\n <i\\n [class]=\\\"getFileIcon(file.mimeType)\\\"\\n [ngClass]=\\\"getIconColor(file.mimeType)\\\"\\n class=\\\"!text-4xl text-center mt-5\\\"\\n ></i>\\n\\n <!-- File name -->\\n <div style=\\\"max-width: 85%;\\\" class=\\\"mt-1 text-[11px] text-gray-600 truncate max-w-[85%] text-center\\\">\\n\\n <div class=\\\"truncate\\\">{{ file.fileName }}</div>\\n </div>\\n\\n <!-- Download icon -->\\n <a\\n *ngIf=\\\"file.binaryObjectId\\\"\\n style=\\\"bottom: 3px;right: 3px;\\\"\\n class=\\\"absolute bottom-1 right-1 text-gray-400 hover:text-blue-500\\\"\\n [href]=\\\"url+'/' + file.binaryObjectId\\\"\\n target=\\\"_blank\\\"\\n download\\n title=\\\"\\u062A\\u062D\\u0645\\u064A\\u0644\\\"\\n >\\n <i class=\\\"pi pi-download text-xs\\\"></i>\\n </a>\\n </div>\\n</div>\\n\\n <!-- Single mode -->\\n <div *ngIf=\\\"props['multiple'] === false && attachment\\\">\\n <div class=\\\"flex items-center justify-between p-2 border-b\\\">\\n <span>{{ attachment.fileName }}</span>\\n <p-button\\n type=\\\"button\\\"\\n icon=\\\"pi pi-times\\\"\\n class=\\\"p-button-rounded p-button-text text-red-600\\\"\\n (click)=\\\"remove(0)\\\"\\n ></p-button>\\n </div>\\n <!-- Caption input if allowed -->\\n <div *ngIf=\\\"props['allowCaption']\\\" class=\\\"mt-1\\\">\\n <input\\n pInputText\\n type=\\\"text\\\"\\n class=\\\"w-full border rounded px-2 py-1 text-sm\\\"\\n placeholder=\\\"\\u0623\\u0636\\u0641 \\u0648\\u0635\\u0641\\u0627\\u064B\\\"\\n (change)=\\\"attachment = attachment\\\"\\n [(ngModel)]=\\\"attachment.caption\\\"\\n />\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Empty Template -->\\n <ng-template pTemplate=\\\"empty\\\">\\n <div\\n *ngIf=\\\"(props['multiple'] !== false && (!attachments || attachments.length === 0)) ||\\n (props['multiple'] === false && !attachment)\\\"\\n class=\\\"border-2 border-dashed rounded-md p-4 bg-gray-50 hover:bg-gray-100 transition flex align-items-center justify-content-center flex-column\\\"\\n >\\n <i class=\\\"pi pi-cloud-upload border-2 rounded p-5 text-8xl text-400 border-400\\\"></i>\\n <p class=\\\"mt-4 mb-0\\\">\\u0627\\u0633\\u062D\\u0628 \\u0648\\u0623\\u0641\\u0644\\u0650\\u062A \\u0627\\u0644\\u0645\\u0644\\u0641\\u0627\\u062A \\u0647\\u0646\\u0627 \\u0644\\u0644\\u062A\\u062D\\u0645\\u064A\\u0644.</p>\\n </div>\\n </ng-template>\\n</p-fileUpload>\\n\" }]\n }], ctorParameters: () => [{ type: i1.MessageService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2F0dGFjaG1lbnRzL3NyYy9saWIvYXR0YWNobWVudC10eXBlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2F0dGFjaG1lbnRzL3NyYy9saWIvYXR0YWNobWVudC10eXBlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRyxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7QUFpQnZFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxTQUFTO0lBT2hDO0lBTnBCLGtCQUFrQixHQUFHLHlJQUF5SSxDQUFDO0lBRS9KLFdBQVcsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU87SUFDdEMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNMLEdBQUcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUV6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TyxDQUFDO1lBQUUsT0FBTyxhQUFhLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sZ0JBQWdCLENBQUM7UUFDbEQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzt1R0E1SlUsdUJBQXVCOzJGQUF2Qix1QkFBdUIsOERBSHZCLENBQUMsY0FBYyxDQUFDLGlEQzFCN0IsZ3dJQXVIQSwyQ0RwR0ksWUFBWSw2VkFDWixtQkFBbUIsc1pBQ25CLFdBQVcsc1BBQ1gsZ0JBQWdCLG1pQ0FDaEIsWUFBWSxpYkFDWixlQUFlOzsyRkFLTix1QkFBdUI7a0JBZG5DLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixlQUFlO3FCQUNoQixhQUNVLENBQUMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmltcG9ydCB7IEZpbGVVcGxvYWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7ICBBdHRhY2htZW50RHRvIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F0dGFjaG1lbnQtdHlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGaWxlVXBsb2FkTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJbnB1dFRleHRNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXR0YWNobWVudC10eXBlLmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50VHlwZUNvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZSB7XG4gIGRlZmF1bHRBY2NlcHRUeXBlcyA9ICcucGRmLGFwcGxpY2F0aW9uL3BkZixpbWFnZS8qLC50eHQsdGV4dC9wbGFpbixhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCxhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnO1xuXG4gIG1heEZpbGVTaXplID0gMSAqIDEwMjQgKiAxMDI0OyAvLyAxIE1CXG4gIHRlbmFudElkID0gMDtcbiAgcHJpdmF0ZSBlbnYgPSBpbmplY3QoRW52aXJvbm1lbnRTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgfVxuICBnZXQgdXJsKCk6c3RyaW5ne1xuICAgICByZXR1cm4gdGhpcy5lbnYuZ2V0RW52aXJvbm1lbnQoKS5hcGlzLmRlZmF1bHQudXJsICsgKHRoaXMucHJvcHNbJ2FwaVVybCddICA/PyAnL2FwaS9maWxlcycpO1xuICB9XG4gIGdldCBhdHRhY2htZW50cygpOiBBdHRhY2htZW50RHRvW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpXG4gICAgICA/IHRoaXMuZm9ybUNvbnRyb2wudmFsdWVcbiAgICAgIDogKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPyBbdGhpcy5mb3JtQ29udHJvbC52YWx1ZV0gOiBbXSk7XG4gIH1cblxuICBzZXQgYXR0YWNobWVudHModmFsdWU6IEF0dGFjaG1lbnREdG9bXSkge1xuICAgIGlmICh0aGlzLnByb3BzWydtdWx0aXBsZSddKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZT8uWzBdIHx8IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBhdHRhY2htZW50KCk6IEF0dGFjaG1lbnREdG8gfCBudWxsIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmZvcm1Db250cm9sLnZhbHVlKVxuICAgICAgPyAodGhpcy5mb3JtQ29udHJvbC52YWx1ZVswXSB8fCBudWxsKVxuICAgICAgOiB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IG51bGw7XG4gIH1cblxuXG4gIHNldCBhdHRhY2htZW50KHZhbHVlOiBBdHRhY2htZW50RHRvIHwgbnVsbCkge1xuICAgIGlmICh0aGlzLnByb3BzWydtdWx0aXBsZSddKSB7XG4gICAgICBjb25zdCBhcnIgPSBBcnJheS5pc0FycmF5KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpXG4gICAgICAgID8gWy4uLnRoaXMuZm9ybUNvbnRyb2wudmFsdWVdXG4gICAgICAgIDogKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPyBbdGhpcy5mb3JtQ29udHJvbC52YWx1ZV0gOiBbXSk7XG4gICAgICBpZiAodmFsdWUpIGFyci5wdXNoKHZhbHVlKTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoYXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25VcGxvYWQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGZpbGVzOiBGaWxlW10gPSBldmVudC5maWxlcztcbiAgICBjb25zdCBpc011bHRpcGxlID0gdGhpcy5wcm9wc1snbXVsdGlwbGUnXSA/PyB0cnVlO1xuICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9ICh0aGlzLnByb3BzWydhY2NlcHQnXSBhcyBzdHJpbmcpIHx8ICcnO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgc3VtbWFyeTogJ9iu2LfYoycsXG4gICAgICAgICAgZGV0YWlsOiBg2KfZhNmF2YTZgSBcIiR7ZmlsZS5uYW1lfVwiINmK2KrYrNin2YjYsiDYp9mE2K3YryDYp9mE2KPZgti12YkgKDFNQilgLFxuICAgICAgICB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChhbGxvd2VkVHlwZXMgJiYgIXRoaXMuaXNGaWxlVHlwZUFsbG93ZWQoZmlsZSwgYWxsb3dlZFR5cGVzKSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgc3VtbWFyeTogJ9mG2YjYuSDYp9mE2YXZhNmBINi62YrYsSDZhdiz2YXZiNitJyxcbiAgICAgICAgICBkZXRhaWw6IGDYp9mE2YXZhNmBIFwiJHtmaWxlLm5hbWV9XCIg2YTZitizINmF2YYg2KfZhNij2YbZiNin2Lkg2KfZhNmF2LPZhdmI2K3YqWAsXG4gICAgICAgIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTXVsdGlwbGUgJiYgdGhpcy5hdHRhY2htZW50cy5zb21lKGEgPT4gYS5maWxlTmFtZSA9PT0gZmlsZS5uYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYmFzZTY0ID0gYXdhaXQgdGhpcy5maWxlVG9CYXNlNjQoZmlsZSk7XG4gICAgICBjb25zdCBhdHRhY2htZW50ID0gbmV3IEF0dGFjaG1lbnREdG8oKTtcbiAgICAgIGF0dGFjaG1lbnQuZmlsZU5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICBhdHRhY2htZW50Lm1pbWVUeXBlID0gZmlsZS50eXBlO1xuICAgICAgYXR0YWNobWVudC5iYXNlNjQgPSBiYXNlNjQ7XG5cbiAgICAgIGlmIChpc011bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudHMgPSBbLi4udGhpcy5hdHRhY2htZW50cywgYXR0YWNobWVudF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmF0dGFjaG1lbnQgPSBhdHRhY2htZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgY29weSA9IFsuLi50aGlzLmF0dGFjaG1lbnRzXTtcbiAgICBjb3B5LnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5hdHRhY2htZW50cyA9IGNvcHk7XG4gIH1cblxuICBjaG9vc2UoZXZlbnQ6IGFueSwgY2FsbGJhY2s6IGFueSkge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbGVUb0Jhc2U2NChmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKS5zcGxpdCgnLCcpWzFdKTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gZXJyID0+IHJlamVjdChlcnIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpbGVUeXBlQWxsb3dlZChmaWxlOiBGaWxlLCBhbGxvd2VkVHlwZXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjY2VwdGVkID0gYWxsb3dlZFR5cGVzLnNwbGl0KCcsJykubWFwKHQgPT4gdC50cmltKCkpO1xuICAgIHJldHVybiBhY2NlcHRlZC5zb21lKHR5cGUgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09ICcqLyonKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICh0eXBlLmVuZHNXaXRoKCcvKicpKSB7XG4gICAgICAgIHJldHVybiBmaWxlLnR5cGUuc3RhcnRzV2l0aCh0eXBlLnNwbGl0KCcvJylbMF0gKyAnLycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbGUudHlwZSA9PT0gdHlwZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEZpbGVMYWJlbChtaW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghbWltZSkgcmV0dXJuICdGSUxFJztcbiAgICBpZiAobWltZS5pbmNsdWRlcygncGRmJykpIHJldHVybiAnUERGJztcbiAgICBpZiAobWltZS5pbmNsdWRlcygnZXhjZWwnKSB8fCBtaW1lLmluY2x1ZGVzKCdzcHJlYWRzaGVldCcpKSByZXR1cm4gJ1hMUyc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ3dvcmQnKSkgcmV0dXJuICdET0MnO1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCdpbWFnZScpKSByZXR1cm4gJ0lNRyc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ3ppcCcpKSByZXR1cm4gJ1pJUCc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ2NzdicpKSByZXR1cm4gJ0NTVic7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ3RleHQnKSkgcmV0dXJuICdUWFQnO1xuICAgIHJldHVybiAnRklMRSc7XG4gIH1cblxuICBnZXRMYWJlbENsYXNzKG1pbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ3BkZicpKSByZXR1cm4gJ2JnLXJlZC02MDAgdGV4dC13aGl0ZSc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ2V4Y2VsJykpIHJldHVybiAnYmctZ3JlZW4tNjAwIHRleHQtd2hpdGUnO1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCd3b3JkJykpIHJldHVybiAnYmctYmx1ZS02MDAgdGV4dC13aGl0ZSc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ2ltYWdlJykpIHJldHVybiAnYmcteWVsbG93LTUwMCB0ZXh0LXdoaXRlJztcbiAgICBpZiAobWltZS5pbmNsdWRlcygnemlwJykpIHJldHVybiAnYmctcGluay02MDAgdGV4dC13aGl0ZSc7XG4gICAgcmV0dXJuICdiZy1ncmF5LTQwMCB0ZXh0LXdoaXRlJztcbiAgfVxuXG4gIGdldEljb25Db2xvcihtaW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCdwZGYnKSkgcmV0dXJuICd0ZXh0LXJlZC00MDAnO1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCdleGNlbCcpKSByZXR1cm4gJ3RleHQtZ3JlZW4tNTAwJztcbiAgICBpZiAobWltZS5pbmNsdWRlcygnd29yZCcpKSByZXR1cm4gJ3RleHQtYmx1ZS01MDAnO1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCdpbWFnZScpKSByZXR1cm4gJ3RleHQteWVsbG93LTUwMCc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ3ppcCcpKSByZXR1cm4gJ3RleHQtcGluay01MDAnO1xuICAgIHJldHVybiAndGV4dC1ncmF5LTQwMCc7XG4gIH1cblxuICBnZXRGaWxlSWNvbihtaW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCdwZGYnKSkgcmV0dXJuICdwaSBwaS1maWxlLXBkZic7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ2V4Y2VsJykgfHwgbWltZS5pbmNsdWRlcygnc3ByZWFkc2hlZXQnKSkgcmV0dXJuICdwaSBwaS1maWxlLWV4Y2VsJztcbiAgICBpZiAobWltZS5pbmNsdWRlcygnd29yZCcpKSByZXR1cm4gJ3BpIHBpLWZpbGUtd29yZCc7XG4gICAgaWYgKG1pbWUuaW5jbHVkZXMoJ2ltYWdlJykpIHJldHVybiAncGkgcGktaW1hZ2UnO1xuICAgIGlmIChtaW1lLmluY2x1ZGVzKCd6aXAnKSkgcmV0dXJuICdwaSBwaS1maWxlLXppcCc7XG4gICAgcmV0dXJuICdwaSBwaS1maWxlJztcbiAgfVxufVxuIiwiPHAtZmlsZVVwbG9hZFxuICBuYW1lPVwiZmlsZVwiXG4gIFtjdXN0b21VcGxvYWRdPVwidHJ1ZVwiXG4gIFthdXRvXT1cInRydWVcIlxuICBbbXVsdGlwbGVdPVwicHJvcHNbJ211bHRpcGxlJ10gIT09IGZhbHNlXCJcbiAgW21heEZpbGVTaXplXT1cIm1heEZpbGVTaXplXCJcbiAgW2FjY2VwdF09XCJwcm9wc1snYWNjZXB0J10gfHwgZGVmYXVsdEFjY2VwdFR5cGVzXCJcbiAgKHVwbG9hZEhhbmRsZXIpPVwib25VcGxvYWQoJGV2ZW50KVwiXG4gIGNob29zZUxhYmVsPVwi2KfYs9it2Kgg2KfZhNmF2YTZgdin2Kog2KPZiCDYp9mG2YLYsSDZhNmE2KXYsdmB2KfZglwiXG4gIGNsYXNzPVwidy1mdWxsXCJcbj5cbiAgPCEtLSBIZWFkZXIgVGVtcGxhdGUgLS0+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY2hvb3NlQ2FsbGJhY2s9XCJjaG9vc2VDYWxsYmFja1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC0xIGdhcC0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMlwiPlxuICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAoY2xpY2spPVwiY2hvb3NlKCRldmVudCwgY2hvb3NlQ2FsbGJhY2spXCJcbiAgICAgICAgICBpY29uPVwicGkgcGktcGx1c1wiXG4gICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIlxuICAgICAgICAgIHN0eWxlQ2xhc3M9XCJib3JkZXIgYm9yZGVyLWdyZWVuLTYwMCB0ZXh0LWdyZWVuLTYwMCBob3ZlcjpiZy1ncmVlbi0xMDAgYmctd2hpdGUgc2hhZG93LXNtICFyb3VuZGVkLWZ1bGxcIlxuICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gQ29udGVudCBUZW1wbGF0ZSAtLT5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIj5cbiAgICA8IS0tIE11bHRpIG1vZGUgLS0+XG4gICA8ZGl2IGNsYXNzPVwicC0yIGZsZXggZmxleC13cmFwIGdhcC00XCI+XG4gIDxkaXZcbiAgICAqbmdGb3I9XCJsZXQgZmlsZSBvZiBhdHRhY2htZW50czsgbGV0IGkgPSBpbmRleFwiXG4gICAgc3R5bGU9XCJoZWlnaHQ6IDdyZW07XCJcbiAgICBjbGFzcz1cInJlbGF0aXZlIHctMjQgaC0yOCBiZy13aGl0ZSBib3JkZXIgcm91bmRlZC1sZyBzaGFkb3ctc20gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICA+XG4gICAgPCEtLSBGaWxlIHR5cGUgbGFiZWwgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgcHgtMiBweS0wLjUgdGV4dC1bMTBweF0gZm9udC1ib2xkIHVwcGVyY2FzZSByb3VuZGVkLWJyLW1kIHNoYWRvdy1zbSB0ZXh0LXdoaXRlXCJcbiAgICAgIFtuZ0NsYXNzXT1cImdldExhYmVsQ2xhc3MoZmlsZS5taW1lVHlwZSlcIlxuICAgID5cbiAgICAgIHt7IGdldEZpbGVMYWJlbChmaWxlLm1pbWVUeXBlKSB9fVxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBSZW1vdmUgYnV0dG9uIC0tPlxuICAgIDxidXR0b25cbiAgICBzdHlsZT1cInRvcDogM3B4O3JpZ2h0OiAzcHg7XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTEgcmlnaHQtMSB0ZXh0LXJlZC01MDAgaG92ZXI6dGV4dC1yZWQtNzAwXCJcbiAgICAgIChjbGljayk9XCJyZW1vdmUoaSlcIlxuICAgICAgdGl0bGU9XCLYrdiw2YFcIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwicGkgcGktdGltZXMgdGV4dC14c1wiPjwvaT5cbiAgICA8L2J1dHRvbj5cblxuICAgIDwhLS0gQ2VudGVyIGljb24gLS0+XG4gICAgPGlcbiAgICAgIFtjbGFzc109XCJnZXRGaWxlSWNvbihmaWxlLm1pbWVUeXBlKVwiXG4gICAgICBbbmdDbGFzc109XCJnZXRJY29uQ29sb3IoZmlsZS5taW1lVHlwZSlcIlxuICAgICAgY2xhc3M9XCIhdGV4dC00eGwgdGV4dC1jZW50ZXIgbXQtNVwiXG4gICAgPjwvaT5cblxuICAgIDwhLS0gRmlsZSBuYW1lIC0tPlxuICAgIDxkaXYgc3R5bGU9XCJtYXgtd2lkdGg6IDg1JTtcIiBjbGFzcz1cIm10LTEgdGV4dC1bMTFweF0gdGV4dC1ncmF5LTYwMCB0cnVuY2F0ZSBtYXgtdy1bODUlXSB0ZXh0LWNlbnRlclwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidHJ1bmNhdGVcIj57eyBmaWxlLmZpbGVOYW1lIH19PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIERvd25sb2FkIGljb24gLS0+XG4gICAgPGFcbiAgICAqbmdJZj1cImZpbGUuYmluYXJ5T2JqZWN0SWRcIlxuICAgIHN0eWxlPVwiYm90dG9tOiAzcHg7cmlnaHQ6IDNweDtcIlxuICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBib3R0b20tMSByaWdodC0xIHRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC1ibHVlLTUwMFwiXG4gICAgICBbaHJlZl09XCJ1cmwrJy8nICsgZmlsZS5iaW5hcnlPYmplY3RJZFwiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgZG93bmxvYWRcbiAgICAgIHRpdGxlPVwi2KrYrdmF2YrZhFwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1kb3dubG9hZCB0ZXh0LXhzXCI+PC9pPlxuICAgIDwvYT5cbiAgPC9kaXY+XG48L2Rpdj5cblxuICAgIDwhLS0gU2luZ2xlIG1vZGUgLS0+XG4gICAgPGRpdiAqbmdJZj1cInByb3BzWydtdWx0aXBsZSddID09PSBmYWxzZSAmJiBhdHRhY2htZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMiBib3JkZXItYlwiPlxuICAgICAgICA8c3Bhbj57eyBhdHRhY2htZW50LmZpbGVOYW1lIH19PC9zcGFuPlxuICAgICAgICA8cC1idXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcbiAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCB0ZXh0LXJlZC02MDBcIlxuICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoMClcIlxuICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgIDwhLS0gQ2FwdGlvbiBpbnB1dCBpZiBhbGxvd2VkIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInByb3BzWydhbGxvd0NhcHRpb24nXVwiIGNsYXNzPVwibXQtMVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cInctZnVsbCBib3JkZXIgcm91bmRlZCBweC0yIHB5LTEgdGV4dC1zbVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCLYo9i22YEg2YjYtdmB2KfZi1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJhdHRhY2htZW50ID0gYXR0YWNobWVudFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJhdHRhY2htZW50LmNhcHRpb25cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBFbXB0eSBUZW1wbGF0ZSAtLT5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5XCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIocHJvcHNbJ211bHRpcGxlJ10gIT09IGZhbHNlICYmICghYXR0YWNobWVudHMgfHwgYXR0YWNobWVudHMubGVuZ3RoID09PSAwKSkgfHxcbiAgICAgICAgICAgICAocHJvcHNbJ211bHRpcGxlJ10gPT09IGZhbHNlICYmICFhdHRhY2htZW50KVwiXG4gICAgICBjbGFzcz1cImJvcmRlci0yIGJvcmRlci1kYXNoZWQgcm91bmRlZC1tZCBwLTQgYmctZ3JheS01MCBob3ZlcjpiZy1ncmF5LTEwMCB0cmFuc2l0aW9uIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwicGkgcGktY2xvdWQtdXBsb2FkIGJvcmRlci0yIHJvdW5kZWQgcC01IHRleHQtOHhsIHRleHQtNDAwIGJvcmRlci00MDBcIj48L2k+XG4gICAgICA8cCBjbGFzcz1cIm10LTQgbWItMFwiPtin2LPYrdioINmI2KPZgdmE2ZDYqiDYp9mE2YXZhNmB2KfYqiDZh9mG2Kcg2YTZhNiq2K3ZhdmK2YQuPC9wPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLWZpbGVVcGxvYWQ+XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtYXR0YWNobWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvYXR0YWNobWVudHMvc3JjL2VsaXRlLmZyYW1ld29yay1uZy51aS5jb3JlLWF0dGFjaG1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import * as i2 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i3 from '@angular/forms';
6
6
  import { FormBuilder, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
7
- import { RestService } from '@elite.framework/ng.core/services';
7
+ import { RestService, EnvironmentService } from '@elite.framework/ng.core/services';
8
8
  import { FormlyForm } from '@ngx-formly/core';
9
9
  import * as i8 from '@ngx-translate/core';
10
10
  import { TranslateService, TranslateModule } from '@ngx-translate/core';
@@ -20,7 +20,6 @@ import { MessageService } from 'primeng/api';
20
20
  import * as i7 from 'primeng/toast';
21
21
  import { ToastModule } from 'primeng/toast';
22
22
  import { read, utils } from 'xlsx';
23
- import { ENVIRONMENT } from '@elite.framework/ng.core/tokens';
24
23
 
25
24
  class ExcelImportModule {
26
25
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: ExcelImportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -51,7 +50,7 @@ class ExcelImportComponent {
51
50
  messageService = inject(MessageService);
52
51
  translateService = inject(TranslateService);
53
52
  fb = inject(FormBuilder);
54
- env = inject(ENVIRONMENT);
53
+ env = inject(EnvironmentService);
55
54
  steps = [
56
55
  { label: this.translateService.instant('uploadFile') },
57
56
  { label: this.translateService.instant('columnMapping') },
@@ -333,7 +332,7 @@ class ExcelImportComponent {
333
332
  </div>
334
333
  <p>
335
334
  <a
336
- [href]="env.apiUrl+config.templateUrl"
335
+ [href]="env.getEnvironment().apis.default.url+config.templateUrl"
337
336
  download
338
337
  class="text-blue-600 hover:underline flex items-center gap-1"
339
338
  >
@@ -458,7 +457,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
458
457
  </div>
459
458
  <p>
460
459
  <a
461
- [href]="env.apiUrl+config.templateUrl"
460
+ [href]="env.getEnvironment().apis.default.url+config.templateUrl"
462
461
  download
463
462
  class="text-blue-600 hover:underline flex items-center gap-1"
464
463
  >