@libs-ui/components-inputs-upload 0.2.200 → 0.2.203

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.
@@ -29,7 +29,7 @@ export class LibsUiComponentsInputsUploadAvatarComponent {
29
29
  this.outOpenPreview.emit(this.item());
30
30
  }
31
31
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsUploadAvatarComponent, deps: [{ token: LINK_IMAGE_ERROR_TOKEN_INJECT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
32
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsInputsUploadAvatarComponent, isStandalone: true, selector: "libs_ui-components-inputs-upload-avatar", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, showVideoDuration: { classPropertyName: "showVideoDuration", publicName: "showVideoDuration", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { item: "itemChange", outOpenPreview: "outOpenPreview" }, ngImport: i0, template: "<div class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px]\"\n [class.mo-lib-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'image') {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'video') {\n <div class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n <video #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"(item().url || item().origin_url || '') | LibsUiPipesSecurityTrustPipe:'resourceUrl'\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\">\n </div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div\n class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'word') {\n <ng-container *ngComponentOutlet=\"'word'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "pipe", type: LibsUiPipesSecurityTrustPipe, name: "LibsUiPipesSecurityTrustPipe" }, { kind: "pipe", type: LibsUiPipesInputsUploadCalcDurationVideoPipe, name: "LibsUiPipesInputsUploadCalcDurationVideoPipe" }, { kind: "pipe", type: LibsUiPipesInputsUploadCheckFileExtensionPipe, name: "LibsUiPipesInputsUploadCheckFileExtensionPipe" }, { kind: "pipe", type: LibsUiIconsGetIconComponentPipe, name: "LibsUiIconsGetIconComponentPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
32
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsInputsUploadAvatarComponent, isStandalone: true, selector: "libs_ui-components-inputs-upload-avatar", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, showVideoDuration: { classPropertyName: "showVideoDuration", publicName: "showVideoDuration", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { item: "itemChange", outOpenPreview: "outOpenPreview" }, ngImport: i0, template: "<div class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px]\"\n [class.libs-ui-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'image') {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'video') {\n <div class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n <video #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"(item().url || item().origin_url || '') | LibsUiPipesSecurityTrustPipe:'resourceUrl'\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\">\n </div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div\n class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'word') {\n <ng-container *ngComponentOutlet=\"'word'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "pipe", type: LibsUiPipesSecurityTrustPipe, name: "LibsUiPipesSecurityTrustPipe" }, { kind: "pipe", type: LibsUiPipesInputsUploadCalcDurationVideoPipe, name: "LibsUiPipesInputsUploadCalcDurationVideoPipe" }, { kind: "pipe", type: LibsUiPipesInputsUploadCheckFileExtensionPipe, name: "LibsUiPipesInputsUploadCheckFileExtensionPipe" }, { kind: "pipe", type: LibsUiIconsGetIconComponentPipe, name: "LibsUiIconsGetIconComponentPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
33
33
  }
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsUploadAvatarComponent, decorators: [{
35
35
  type: Component,
@@ -40,11 +40,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
40
40
  LibsUiPipesInputsUploadCalcDurationVideoPipe,
41
41
  LibsUiPipesInputsUploadCheckFileExtensionPipe,
42
42
  LibsUiIconsGetIconComponentPipe,
43
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px]\"\n [class.mo-lib-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'image') {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'video') {\n <div class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n <video #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"(item().url || item().origin_url || '') | LibsUiPipesSecurityTrustPipe:'resourceUrl'\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\">\n </div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div\n class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'word') {\n <ng-container *ngComponentOutlet=\"'word'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n" }]
43
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px]\"\n [class.libs-ui-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'image') {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'video') {\n <div class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n <video #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"(item().url || item().origin_url || '') | LibsUiPipesSecurityTrustPipe:'resourceUrl'\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\">\n </div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div\n class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'word') {\n <ng-container *ngComponentOutlet=\"'word'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n" }]
44
44
  }], ctorParameters: () => [{ type: undefined, decorators: [{
45
45
  type: Optional
46
46
  }, {
47
47
  type: Inject,
48
48
  args: [LINK_IMAGE_ERROR_TOKEN_INJECT]
49
49
  }] }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvdXBsb2FkL3NyYy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvdXBsb2FkL3NyYy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQWlCbkcsTUFBTSxPQUFPLDJDQUEyQztJQU9pQjtJQU45RCxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBUyxDQUFDO0lBQy9CLGlCQUFpQixHQUFHLEtBQUssRUFBVyxDQUFDO0lBQ3JDLE9BQU8sR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUMzQixJQUFJLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDdkIsY0FBYyxHQUFHLE1BQU0sRUFBUyxDQUFDO0lBRTFDLFlBQXVFLGNBQXNCO1FBQXRCLG1CQUFjLEdBQWQsY0FBYyxDQUFRO0lBQzdGLENBQUM7SUFFUyxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBWTtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBQ0EsS0FBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDckQsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQVk7UUFDdEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7d0dBcEJVLDJDQUEyQyxrQkFPdEIsNkJBQTZCOzRGQVBsRCwyQ0FBMkMscXJCQzFCeEQsd2dHQW9FQSw0Q0RuREksaUJBQWlCLCtPQUFFLFNBQVMsNkNBQUUsZUFBZSwrQkFDN0MsZ0NBQWdDLDRGQUNoQyw0QkFBNEIsZ0VBQzVCLDRDQUE0QyxnRkFDNUMsNkNBQTZDLGlGQUM3QywrQkFBK0I7OzRGQUl0QiwyQ0FBMkM7a0JBZnZELFNBQVM7K0JBRUUseUNBQXlDLGNBRXZDLElBQUksV0FDUDt3QkFDUCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZUFBZTt3QkFDN0MsZ0NBQWdDO3dCQUNoQyw0QkFBNEI7d0JBQzVCLDRDQUE0Qzt3QkFDNUMsNkNBQTZDO3dCQUM3QywrQkFBK0I7cUJBQ2hDLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFTbEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBpbnB1dCwgbW9kZWwsIE9wdGlvbmFsLCBvdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1NwaW5uZXJDb21wb25lbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1zcGlubmVyXCI7XG5pbXBvcnQgeyBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlIH0gZnJvbSBcIkBsaWJzLXVpL2ljb25zXCI7XG5pbXBvcnQgeyBJRXZlbnQsIElGaWxlIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcbmltcG9ydCB7IExpYnNVaVBpcGVzU2VjdXJpdHlUcnVzdFBpcGUgfSBmcm9tIFwiQGxpYnMtdWkvcGlwZXMtc2VjdXJpdHktdHJ1c3RcIjtcbmltcG9ydCB7IExJTktfSU1BR0VfRVJST1JfVE9LRU5fSU5KRUNUIH0gZnJvbSBcIkBsaWJzLXVpL3V0aWxzXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDYWxjRHVyYXRpb25WaWRlb1BpcGUgfSBmcm9tIFwiLi4vcGlwZXMvY2FsYy1kdXJhdGlvbi12aWRlby5waXBlXCI7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0lucHV0c1VwbG9hZENoZWNrRmlsZUV4dGVuc2lvblBpcGUgfSBmcm9tIFwiLi4vcGlwZXMvY2hlY2stZmlsZS1leHRlbnNpb24ucGlwZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLXVwbG9hZC1hdmF0YXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYXZhdGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ29tcG9uZW50T3V0bGV0LCBBc3luY1BpcGUsIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCxcbiAgICBMaWJzVWlQaXBlc1NlY3VyaXR5VHJ1c3RQaXBlLFxuICAgIExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2FsY0R1cmF0aW9uVmlkZW9QaXBlLFxuICAgIExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZSxcbiAgICBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzSW5wdXRzVXBsb2FkQXZhdGFyQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgaXRlbSA9IG1vZGVsLnJlcXVpcmVkPElGaWxlPigpO1xuICByZWFkb25seSBzaG93VmlkZW9EdXJhdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBzaXplID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBvdXRPcGVuUHJldmlldyA9IG91dHB1dDxJRmlsZT4oKTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KExJTktfSU1BR0VfRVJST1JfVE9LRU5fSU5KRUNUKSBwcml2YXRlIGxpbmtJbWFnZUVycm9yOiBzdHJpbmcpIHtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVySW1hZ2VFcnJvcihldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubGlua0ltYWdlRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgKGV2ZW50IGFzIElFdmVudCkudGFyZ2V0LnNyYyA9IHRoaXMubGlua0ltYWdlRXJyb3I7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckltYWdlQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5vdXRPcGVuUHJldmlldy5lbWl0KHRoaXMuaXRlbSgpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggbXItWzEycHhdIGJnLVsjZmZmZmZmXSByb3VuZGVkLVs0cHhdXCJcbiAgW2NsYXNzLm1vLWxpYi1kaXNhYmxlXT1cImRpc2FibGUoKSB8fCBpdGVtKCkuaXNVcGxvYWRpbmcgfHwgaXRlbSgpLmVycm9yXCI+XG4gIEBpZiAoaXRlbSgpIHwgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDaGVja0ZpbGVFeHRlbnNpb25QaXBlOidpbWFnZScpIHtcbiAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJzaXplKCkgfHwgMzJcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJzaXplKCkgfHwgMzJcIlxuICAgICAgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgICAgQGlmIChpdGVtKCkudXJsIHx8IGl0ZW0oKS5vcmlnaW5fdXJsOyBhcyB1cmwpIHtcbiAgICAgICAgPGltZyBbc3JjXT1cInVybFwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInNpemUoKSB8fCAzMlwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJzaXplKCkgfHwgMzJcIlxuICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1bNHB4XSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgYWx0XG4gICAgICAgICAgKGVycm9yKT1cImhhbmRsZXJJbWFnZUVycm9yKCRldmVudClcIlxuICAgICAgICAgIChjbGljayk9XCJoYW5kbGVySW1hZ2VDbGljaygkZXZlbnQpXCIgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXNwaW5uZXIgW3NpemVdPVwiJ21lZGl1bSdcIiAvPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG4gIEBlbHNlIGlmIChpdGVtKCkgfCBMaWJzVWlQaXBlc0lucHV0c1VwbG9hZENoZWNrRmlsZUV4dGVuc2lvblBpcGU6J3ZpZGVvJykge1xuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwic2l6ZSgpIHx8IDMyXCJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwic2l6ZSgpIHx8IDMyXCI+XG4gICAgICBAaWYgKGl0ZW0oKS51cmwgfHwgaXRlbSgpLm9yaWdpbl91cmwpIHtcbiAgICAgICAgPHZpZGVvICN2aWRlb1JlZlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJzaXplIHx8IDMyXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInNpemUgfHwgMzJcIlxuICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1bNHB4XVwiXG4gICAgICAgICAgcHJlbG9hZD1cIm1ldGFkYXRhXCJcbiAgICAgICAgICBbc3JjXT1cIihpdGVtKCkudXJsIHx8IGl0ZW0oKS5vcmlnaW5fdXJsIHx8ICcnKSB8IExpYnNVaVBpcGVzU2VjdXJpdHlUcnVzdFBpcGU6J3Jlc291cmNlVXJsJ1wiPjwvdmlkZW8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSB3LWZ1bGwgaC1mdWxsIHRvcC0wIGJnLVsjMDAxNDMzXSBvcGFjaXR5LTQwIHJvdW5kZWQtWzRweF1cIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSB3LWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRvcC0wXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJ0ZXh0LVsjZmZmZmZmXSBsaWJzLXVpLWljb24tcGxheS1zb2xpZCBiZWZvcmU6IXRleHQtWzEwcHhdXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChzaG93VmlkZW9EdXJhdGlvbigpKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IHRleHQtWzVweF0gYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCBweS1bMnB4XSBweC1bNHB4XSByb3VuZGVkLVs0cHhdIGJnLVsjMDAwMDAwXSB0ZXh0LVsjZmZmZmZmXVwiPlxuICAgICAgICAgICAge3sgdmlkZW9SZWYuZHVyYXRpb24gfCBMaWJzVWlQaXBlc0lucHV0c1VwbG9hZENhbGNEdXJhdGlvblZpZGVvUGlwZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1zcGlubmVyIFtzaXplXT1cIidtZWRpdW0nXCIgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuICBAZWxzZSBpZiAoaXRlbSgpIHwgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDaGVja0ZpbGVFeHRlbnNpb25QaXBlOidwZGYnKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCIncGRmJ3xMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlfGFzeW5jXCIgLz5cbiAgfVxuICBAZWxzZSBpZiAoaXRlbSgpIHwgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDaGVja0ZpbGVFeHRlbnNpb25QaXBlOid3b3JkJykge1xuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiJ3dvcmQnfExpYnNVaUljb25zR2V0SWNvbkNvbXBvbmVudFBpcGV8YXN5bmNcIiAvPlxuICB9XG4gIEBlbHNlIGlmIChpdGVtKCkgfCBMaWJzVWlQaXBlc0lucHV0c1VwbG9hZENoZWNrRmlsZUV4dGVuc2lvblBpcGU6J3BwdHgnKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCIncHB0eCd8TGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZXxhc3luY1wiIC8+XG4gIH1cbiAgQGVsc2UgaWYgKGl0ZW0oKSB8IExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZToneGxzeCcpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cIid4bHN4J3xMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlfGFzeW5jXCIgLz5cbiAgfVxuICBAZWxzZSB7XG4gICAgPGRpdiBbc3R5bGUud2lkdGgucHhdPVwic2l6ZSgpIHx8IDMyXCJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwic2l6ZSgpIHx8IDMyXCJcbiAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxpIGNsYXNzPVwibGlicy11aS1pY29uLWZpbGUgYmVmb3JlOiF0ZXh0LVsxOXB4XVwiXG4gICAgICAgIFtjbGFzcy50ZXh0LVsjNmE3MzgzXV09XCIhaXRlbSgpLmlzVXBsb2FkaW5nICYmICFpdGVtKCkuZXJyb3JcIlxuICAgICAgICBbY2xhc3MudGV4dC1bIzA3MTYzMV1dPVwiZGlzYWJsZSgpIHx8IGl0ZW0oKS5pc1VwbG9hZGluZyB8fCBpdGVtKCkuZXJyb3JcIj48L2k+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvdXBsb2FkL3NyYy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvdXBsb2FkL3NyYy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQWlCbkcsTUFBTSxPQUFPLDJDQUEyQztJQU9pQjtJQU45RCxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBUyxDQUFDO0lBQy9CLGlCQUFpQixHQUFHLEtBQUssRUFBVyxDQUFDO0lBQ3JDLE9BQU8sR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUMzQixJQUFJLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDdkIsY0FBYyxHQUFHLE1BQU0sRUFBUyxDQUFDO0lBRTFDLFlBQXVFLGNBQXNCO1FBQXRCLG1CQUFjLEdBQWQsY0FBYyxDQUFRO0lBQzdGLENBQUM7SUFFUyxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBWTtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBQ0EsS0FBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDckQsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQVk7UUFDdEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7d0dBcEJVLDJDQUEyQyxrQkFPdEIsNkJBQTZCOzRGQVBsRCwyQ0FBMkMscXJCQzFCeEQseWdHQW9FQSw0Q0RuREksaUJBQWlCLCtPQUFFLFNBQVMsNkNBQUUsZUFBZSwrQkFDN0MsZ0NBQWdDLDRGQUNoQyw0QkFBNEIsZ0VBQzVCLDRDQUE0QyxnRkFDNUMsNkNBQTZDLGlGQUM3QywrQkFBK0I7OzRGQUl0QiwyQ0FBMkM7a0JBZnZELFNBQVM7K0JBRUUseUNBQXlDLGNBRXZDLElBQUksV0FDUDt3QkFDUCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZUFBZTt3QkFDN0MsZ0NBQWdDO3dCQUNoQyw0QkFBNEI7d0JBQzVCLDRDQUE0Qzt3QkFDNUMsNkNBQTZDO3dCQUM3QywrQkFBK0I7cUJBQ2hDLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFTbEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBpbnB1dCwgbW9kZWwsIE9wdGlvbmFsLCBvdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1NwaW5uZXJDb21wb25lbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1zcGlubmVyXCI7XG5pbXBvcnQgeyBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlIH0gZnJvbSBcIkBsaWJzLXVpL2ljb25zXCI7XG5pbXBvcnQgeyBJRXZlbnQsIElGaWxlIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcbmltcG9ydCB7IExpYnNVaVBpcGVzU2VjdXJpdHlUcnVzdFBpcGUgfSBmcm9tIFwiQGxpYnMtdWkvcGlwZXMtc2VjdXJpdHktdHJ1c3RcIjtcbmltcG9ydCB7IExJTktfSU1BR0VfRVJST1JfVE9LRU5fSU5KRUNUIH0gZnJvbSBcIkBsaWJzLXVpL3V0aWxzXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDYWxjRHVyYXRpb25WaWRlb1BpcGUgfSBmcm9tIFwiLi4vcGlwZXMvY2FsYy1kdXJhdGlvbi12aWRlby5waXBlXCI7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0lucHV0c1VwbG9hZENoZWNrRmlsZUV4dGVuc2lvblBpcGUgfSBmcm9tIFwiLi4vcGlwZXMvY2hlY2stZmlsZS1leHRlbnNpb24ucGlwZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLXVwbG9hZC1hdmF0YXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYXZhdGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ29tcG9uZW50T3V0bGV0LCBBc3luY1BpcGUsIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCxcbiAgICBMaWJzVWlQaXBlc1NlY3VyaXR5VHJ1c3RQaXBlLFxuICAgIExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2FsY0R1cmF0aW9uVmlkZW9QaXBlLFxuICAgIExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZSxcbiAgICBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzSW5wdXRzVXBsb2FkQXZhdGFyQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgaXRlbSA9IG1vZGVsLnJlcXVpcmVkPElGaWxlPigpO1xuICByZWFkb25seSBzaG93VmlkZW9EdXJhdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBzaXplID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBvdXRPcGVuUHJldmlldyA9IG91dHB1dDxJRmlsZT4oKTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KExJTktfSU1BR0VfRVJST1JfVE9LRU5fSU5KRUNUKSBwcml2YXRlIGxpbmtJbWFnZUVycm9yOiBzdHJpbmcpIHtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVySW1hZ2VFcnJvcihldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubGlua0ltYWdlRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgKGV2ZW50IGFzIElFdmVudCkudGFyZ2V0LnNyYyA9IHRoaXMubGlua0ltYWdlRXJyb3I7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckltYWdlQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5vdXRPcGVuUHJldmlldy5lbWl0KHRoaXMuaXRlbSgpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggbXItWzEycHhdIGJnLVsjZmZmZmZmXSByb3VuZGVkLVs0cHhdXCJcbiAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJkaXNhYmxlKCkgfHwgaXRlbSgpLmlzVXBsb2FkaW5nIHx8IGl0ZW0oKS5lcnJvclwiPlxuICBAaWYgKGl0ZW0oKSB8IExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZTonaW1hZ2UnKSB7XG4gICAgPGRpdiBbc3R5bGUud2lkdGgucHhdPVwic2l6ZSgpIHx8IDMyXCJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwic2l6ZSgpIHx8IDMyXCJcbiAgICAgIGNsYXNzPVwicmVsYXRpdmVcIj5cbiAgICAgIEBpZiAoaXRlbSgpLnVybCB8fCBpdGVtKCkub3JpZ2luX3VybDsgYXMgdXJsKSB7XG4gICAgICAgIDxpbWcgW3NyY109XCJ1cmxcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJzaXplKCkgfHwgMzJcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwic2l6ZSgpIHx8IDMyXCJcbiAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtWzRweF0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgIGFsdFxuICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVySW1hZ2VFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckltYWdlQ2xpY2soJGV2ZW50KVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1zcGlubmVyIFtzaXplXT1cIidtZWRpdW0nXCIgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuICBAZWxzZSBpZiAoaXRlbSgpIHwgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDaGVja0ZpbGVFeHRlbnNpb25QaXBlOid2aWRlbycpIHtcbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInNpemUoKSB8fCAzMlwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInNpemUoKSB8fCAzMlwiPlxuICAgICAgQGlmIChpdGVtKCkudXJsIHx8IGl0ZW0oKS5vcmlnaW5fdXJsKSB7XG4gICAgICAgIDx2aWRlbyAjdmlkZW9SZWZcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwic2l6ZSB8fCAzMlwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJzaXplIHx8IDMyXCJcbiAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtWzRweF1cIlxuICAgICAgICAgIHByZWxvYWQ9XCJtZXRhZGF0YVwiXG4gICAgICAgICAgW3NyY109XCIoaXRlbSgpLnVybCB8fCBpdGVtKCkub3JpZ2luX3VybCB8fCAnJykgfCBMaWJzVWlQaXBlc1NlY3VyaXR5VHJ1c3RQaXBlOidyZXNvdXJjZVVybCdcIj48L3ZpZGVvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdy1mdWxsIGgtZnVsbCB0b3AtMCBiZy1bIzAwMTQzM10gb3BhY2l0eS00MCByb3VuZGVkLVs0cHhdXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdy1mdWxsIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0b3AtMFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwidGV4dC1bI2ZmZmZmZl0gbGlicy11aS1pY29uLXBsYXktc29saWQgYmVmb3JlOiF0ZXh0LVsxMHB4XVwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoc2hvd1ZpZGVvRHVyYXRpb24oKSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCB0ZXh0LVs1cHhdIGFic29sdXRlIGJvdHRvbS0wIHJpZ2h0LTAgcHktWzJweF0gcHgtWzRweF0gcm91bmRlZC1bNHB4XSBiZy1bIzAwMDAwMF0gdGV4dC1bI2ZmZmZmZl1cIj5cbiAgICAgICAgICAgIHt7IHZpZGVvUmVmLmR1cmF0aW9uIHwgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDYWxjRHVyYXRpb25WaWRlb1BpcGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtc3Bpbm5lciBbc2l6ZV09XCInbWVkaXVtJ1wiIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbiAgQGVsc2UgaWYgKGl0ZW0oKSB8IExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZToncGRmJykge1xuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiJ3BkZid8TGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZXxhc3luY1wiIC8+XG4gIH1cbiAgQGVsc2UgaWYgKGl0ZW0oKSB8IExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZTond29yZCcpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cIid3b3JkJ3xMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlfGFzeW5jXCIgLz5cbiAgfVxuICBAZWxzZSBpZiAoaXRlbSgpIHwgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDaGVja0ZpbGVFeHRlbnNpb25QaXBlOidwcHR4Jykge1xuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiJ3BwdHgnfExpYnNVaUljb25zR2V0SWNvbkNvbXBvbmVudFBpcGV8YXN5bmNcIiAvPlxuICB9XG4gIEBlbHNlIGlmIChpdGVtKCkgfCBMaWJzVWlQaXBlc0lucHV0c1VwbG9hZENoZWNrRmlsZUV4dGVuc2lvblBpcGU6J3hsc3gnKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCIneGxzeCd8TGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZXxhc3luY1wiIC8+XG4gIH1cbiAgQGVsc2Uge1xuICAgIDxkaXYgW3N0eWxlLndpZHRoLnB4XT1cInNpemUoKSB8fCAzMlwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInNpemUoKSB8fCAzMlwiXG4gICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8aSBjbGFzcz1cImxpYnMtdWktaWNvbi1maWxlIGJlZm9yZTohdGV4dC1bMTlweF1cIlxuICAgICAgICBbY2xhc3MudGV4dC1bIzZhNzM4M11dPVwiIWl0ZW0oKS5pc1VwbG9hZGluZyAmJiAhaXRlbSgpLmVycm9yXCJcbiAgICAgICAgW2NsYXNzLnRleHQtWyMwNzE2MzFdXT1cImRpc2FibGUoKSB8fCBpdGVtKCkuaXNVcGxvYWRpbmcgfHwgaXRlbSgpLmVycm9yXCI+PC9pPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -103,7 +103,7 @@ class LibsUiComponentsInputsUploadAvatarComponent {
103
103
  this.outOpenPreview.emit(this.item());
104
104
  }
105
105
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsUploadAvatarComponent, deps: [{ token: LINK_IMAGE_ERROR_TOKEN_INJECT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
106
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsInputsUploadAvatarComponent, isStandalone: true, selector: "libs_ui-components-inputs-upload-avatar", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, showVideoDuration: { classPropertyName: "showVideoDuration", publicName: "showVideoDuration", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { item: "itemChange", outOpenPreview: "outOpenPreview" }, ngImport: i0, template: "<div class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px]\"\n [class.mo-lib-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'image') {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'video') {\n <div class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n <video #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"(item().url || item().origin_url || '') | LibsUiPipesSecurityTrustPipe:'resourceUrl'\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\">\n </div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div\n class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'word') {\n <ng-container *ngComponentOutlet=\"'word'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "pipe", type: LibsUiPipesSecurityTrustPipe, name: "LibsUiPipesSecurityTrustPipe" }, { kind: "pipe", type: LibsUiPipesInputsUploadCalcDurationVideoPipe, name: "LibsUiPipesInputsUploadCalcDurationVideoPipe" }, { kind: "pipe", type: LibsUiPipesInputsUploadCheckFileExtensionPipe, name: "LibsUiPipesInputsUploadCheckFileExtensionPipe" }, { kind: "pipe", type: LibsUiIconsGetIconComponentPipe, name: "LibsUiIconsGetIconComponentPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
106
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsInputsUploadAvatarComponent, isStandalone: true, selector: "libs_ui-components-inputs-upload-avatar", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, showVideoDuration: { classPropertyName: "showVideoDuration", publicName: "showVideoDuration", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { item: "itemChange", outOpenPreview: "outOpenPreview" }, ngImport: i0, template: "<div class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px]\"\n [class.libs-ui-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'image') {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'video') {\n <div class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n <video #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"(item().url || item().origin_url || '') | LibsUiPipesSecurityTrustPipe:'resourceUrl'\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\">\n </div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div\n class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'word') {\n <ng-container *ngComponentOutlet=\"'word'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "pipe", type: LibsUiPipesSecurityTrustPipe, name: "LibsUiPipesSecurityTrustPipe" }, { kind: "pipe", type: LibsUiPipesInputsUploadCalcDurationVideoPipe, name: "LibsUiPipesInputsUploadCalcDurationVideoPipe" }, { kind: "pipe", type: LibsUiPipesInputsUploadCheckFileExtensionPipe, name: "LibsUiPipesInputsUploadCheckFileExtensionPipe" }, { kind: "pipe", type: LibsUiIconsGetIconComponentPipe, name: "LibsUiIconsGetIconComponentPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
107
107
  }
108
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsUploadAvatarComponent, decorators: [{
109
109
  type: Component,
@@ -114,7 +114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
114
114
  LibsUiPipesInputsUploadCalcDurationVideoPipe,
115
115
  LibsUiPipesInputsUploadCheckFileExtensionPipe,
116
116
  LibsUiIconsGetIconComponentPipe,
117
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px]\"\n [class.mo-lib-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'image') {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'video') {\n <div class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n <video #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"(item().url || item().origin_url || '') | LibsUiPipesSecurityTrustPipe:'resourceUrl'\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\">\n </div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div\n class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'word') {\n <ng-container *ngComponentOutlet=\"'word'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n" }]
117
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px]\"\n [class.libs-ui-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'image') {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'video') {\n <div class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n <video #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"(item().url || item().origin_url || '') | LibsUiPipesSecurityTrustPipe:'resourceUrl'\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\">\n </div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div\n class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'word') {\n <ng-container *ngComponentOutlet=\"'word'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n" }]
118
118
  }], ctorParameters: () => [{ type: undefined, decorators: [{
119
119
  type: Optional
120
120
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-inputs-upload.mjs","sources":["../../../../../../libs-ui/components/inputs/upload/src/pipes/calc-duration-video.pipe.ts","../../../../../../libs-ui/components/inputs/upload/src/pipes/check-file-extension.pipe.ts","../../../../../../libs-ui/components/inputs/upload/src/avatar/avatar.component.ts","../../../../../../libs-ui/components/inputs/upload/src/avatar/avatar.component.html","../../../../../../libs-ui/components/inputs/upload/src/defines/helper.define.ts","../../../../../../libs-ui/components/inputs/upload/src/upload-drop-file.directive.ts","../../../../../../libs-ui/components/inputs/upload/src/upload-file.directive.ts","../../../../../../libs-ui/components/inputs/upload/src/upload.component.ts","../../../../../../libs-ui/components/inputs/upload/src/upload.component.html","../../../../../../libs-ui/components/inputs/upload/src/libs-ui-components-inputs-upload.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'LibsUiPipesInputsUploadCalcDurationVideoPipe',\n standalone: true\n})\nexport class LibsUiPipesInputsUploadCalcDurationVideoPipe implements PipeTransform {\n\n transform(duration: number) {\n if (!duration) {\n return '0:0';\n }\n duration = Math.round(duration);\n if (duration >= 3600) {\n const hour = Math.floor(duration / 3600);\n const minute = Math.floor((duration - (hour * 3600)) / 60);\n const second = duration - (hour * 3600 + minute * 60);\n\n return `${hour}:${minute < 10 ? `0${minute}` : minute}:${second < 10 ? `0${second}` : second}`;\n }\n if (duration >= 60) {\n const minute = Math.floor(duration / 60);\n const second = duration - (minute * 60);\n\n return `${minute}:${second < 10 ? `0${second}` : second}`;\n }\n\n return `0:${duration}`;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IFile } from '@libs-ui/interfaces-types';\nimport { DocumentExtList, getFileExtension, ImageExtList, VideoExtList } from '@libs-ui/utils';\n\n@Pipe({\n name: 'LibsUiPipesInputsUploadCheckFileExtensionPipe',\n standalone: true\n})\nexport class LibsUiPipesInputsUploadCheckFileExtensionPipe implements PipeTransform {\n\n transform(file: IFile, type: 'image' | 'video' | 'word' | 'xlsx' | 'pdf' | 'pptx' | 'other') {\n const fileExtension = getFileExtension(file);\n\n if (!fileExtension) {\n return false;\n }\n switch (type) {\n case 'image':\n\n return ImageExtList.includes(fileExtension);\n\n case 'video':\n\n return VideoExtList.includes(fileExtension);\n\n case 'word':\n return ['doc', 'docx', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'].includes(fileExtension)\n\n case 'xlsx':\n return ['xls', 'xlsx', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'].includes(fileExtension)\n\n case 'pdf':\n return ['pdf', 'application/pdf'].includes(fileExtension)\n\n case 'pptx':\n return ['ppt', 'pptx', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'].includes(fileExtension)\n\n case 'other':\n return ![...ImageExtList, ...VideoExtList, ...DocumentExtList].includes(fileExtension);\n }\n }\n\n}\n","import { AsyncPipe, NgComponentOutlet } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, Inject, input, model, Optional, output } from \"@angular/core\";\nimport { LibsUiComponentsSpinnerComponent } from \"@libs-ui/components-spinner\";\nimport { LibsUiIconsGetIconComponentPipe } from \"@libs-ui/icons\";\nimport { IEvent, IFile } from \"@libs-ui/interfaces-types\";\nimport { LibsUiPipesSecurityTrustPipe } from \"@libs-ui/pipes-security-trust\";\nimport { LINK_IMAGE_ERROR_TOKEN_INJECT } from \"@libs-ui/utils\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { LibsUiPipesInputsUploadCalcDurationVideoPipe } from \"../pipes/calc-duration-video.pipe\";\nimport { LibsUiPipesInputsUploadCheckFileExtensionPipe } from \"../pipes/check-file-extension.pipe\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-upload-avatar',\n templateUrl: './avatar.component.html',\n standalone: true,\n imports: [\n NgComponentOutlet, AsyncPipe, TranslateModule,\n LibsUiComponentsSpinnerComponent,\n LibsUiPipesSecurityTrustPipe,\n LibsUiPipesInputsUploadCalcDurationVideoPipe,\n LibsUiPipesInputsUploadCheckFileExtensionPipe,\n LibsUiIconsGetIconComponentPipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LibsUiComponentsInputsUploadAvatarComponent {\n readonly item = model.required<IFile>();\n readonly showVideoDuration = input<boolean>();\n readonly disable = input<boolean>();\n readonly size = input<number>();\n readonly outOpenPreview = output<IFile>();\n\n constructor(@Optional() @Inject(LINK_IMAGE_ERROR_TOKEN_INJECT) private linkImageError: string) {\n }\n\n protected async handlerImageError(event: Event) {\n if (!this.linkImageError) {\n return;\n }\n (event as IEvent).target.src = this.linkImageError;\n }\n\n protected handlerImageClick(event: Event) {\n event.stopPropagation();\n this.outOpenPreview.emit(this.item());\n }\n}\n","<div class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px]\"\n [class.mo-lib-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'image') {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'video') {\n <div class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n <video #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"(item().url || item().origin_url || '') | LibsUiPipesSecurityTrustPipe:'resourceUrl'\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\">\n </div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div\n class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'word') {\n <ng-container *ngComponentOutlet=\"'word'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n","import { getLabelBySizeFile } from '@libs-ui/utils';\nimport { IUploadDescriptionFormatAndSizeFile, TYPE_FILE_UPLOAD } from '../interfaces/upload.interface';\n\nexport const getDescriptionFormatAndSizeFileDefault = (type: TYPE_FILE_UPLOAD, maxImageSize: number, maxVideoSize: number, maxDocumentSize: number, maxAudioSize: number): IUploadDescriptionFormatAndSizeFile[] => {\n const image = {\n message: 'i18n_note_upload_image_volume',\n interpolateParams: { value: getLabelBySizeFile(maxImageSize, 0) }\n };\n const video = {\n message: 'i18n_note_upload_video_volume',\n interpolateParams: { value: getLabelBySizeFile(maxVideoSize, 0) }\n };\n const document = {\n message: 'i18n_note_upload_file_volume',\n interpolateParams: { value: getLabelBySizeFile(maxDocumentSize, 0) }\n };\n const audio = {\n message: 'i18n_note_upload_audio_volume',\n interpolateParams: { value: getLabelBySizeFile(maxAudioSize, 0) }\n };\n\n const typeSplit = type.split('_');\n const description = [];\n\n if (typeSplit.includes('image')) {\n description.push(image);\n }\n if (typeSplit.includes('audio')) {\n description.push(audio);\n }\n if (typeSplit.includes('video')) {\n description.push(video);\n }\n if (typeSplit.includes('document')) {\n description.push(document);\n }\n\n return description;\n};","import { AfterViewInit, Directive, ElementRef, input, OnDestroy, output } from '@angular/core';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { checkMouseOverInContainer, isTypeFile } from '@libs-ui/utils';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsInputsUploadDropFileDirective]',\n standalone: true\n})\nexport class LibsUiComponentsInputsUploadDropFileDirective implements AfterViewInit, OnDestroy {\n\n private onDestroy = new Subject<void>();\n\n readonly multiple = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n\n readonly outDragOver = output<IEvent>();\n readonly outDragLeave = output<IEvent>();\n readonly outDrop = output<IEvent>();\n readonly outDropFiles = output<File[]>();\n readonly outDropFile = output<File>();\n\n constructor(\n private elementRef: ElementRef\n ) {\n }\n\n ngAfterViewInit() {\n fromEvent<IEvent>(this.elementRef.nativeElement, 'dragover').pipe(takeUntil(this.onDestroy)).subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n this.outDragOver.emit(e);\n });\n fromEvent<IEvent>(this.elementRef.nativeElement, 'dragleave').pipe(takeUntil(this.onDestroy)).subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n if (checkMouseOverInContainer(e, this.elementRef.nativeElement)) {\n return;\n }\n this.outDragLeave.emit(e);\n });\n\n fromEvent<IEvent>(this.elementRef.nativeElement, 'drop').pipe(takeUntil(this.onDestroy)).subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n this.outDrop.emit(e);\n\n const fileList: File[] = Array.from(e.dataTransfer?.files || e.clipboardData?.files || []).filter(isTypeFile);\n\n if (!fileList || !fileList.length) {\n return;\n }\n\n if (this.multiple()) {\n this.outDropFiles.emit(fileList);\n\n return;\n }\n this.outDropFile.emit(fileList[0]);\n });\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}","import { AfterViewInit, Directive, ElementRef, inject, input, OnDestroy, output } from '@angular/core';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsInputsUploadDirective]',\n standalone: true\n})\nexport class LibsUiComponentsInputsUploadDirective implements AfterViewInit,OnDestroy {\n private onDestroy = new Subject<void>();\n\n readonly multiple = input<boolean, boolean | undefined>(true, { transform: val => val ?? true });\n readonly accessFiles = input<string, string | undefined>('image/x-png,image/jpg,image/jpeg,image/PNG,image/x-PNG,image/JPG,image/JPEG', { transform: val => val ?? 'image/x-png,image/jpg,image/jpeg,image/PNG,image/x-PNG,image/JPG,image/JPEG' });\n\n readonly outUploadFiles = output<File[]>();\n readonly outUploadFile = output<File>();\n\n private elementRef = inject(ElementRef);\n\n\n ngAfterViewInit() {\n fromEvent<IEvent>(this.elementRef.nativeElement, 'click').pipe(takeUntil(this.onDestroy)).subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n const inputElementUpload= document.createElement('input');\n inputElementUpload.type = 'file';\n inputElementUpload.accept = this.accessFiles();\n inputElementUpload.multiple = this.multiple();\n inputElementUpload.style.display = 'none';\n inputElementUpload.click();\n fromEvent<IEvent>(inputElementUpload, 'change').pipe(takeUntil(this.onDestroy)).subscribe((event: IEvent) => {\n const files = event.dataTransfer?.files || event.target?.files;\n inputElementUpload.remove();\n if (!files?.length) {\n return;\n }\n if (this.multiple()) {\n this.outUploadFiles.emit(files);\n\n return;\n }\n this.outUploadFile.emit(files[0]);\n });\n });\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ComponentRef, computed, effect, ElementRef, inject, input, OnDestroy, OnInit, output, signal, untracked, viewChild, WritableSignal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsGalleryViewerComponent } from '@libs-ui/components-gallery';\nimport { ISaveFile, LibsUiComponentsImageEditorComponent } from '@libs-ui/components-image-editor';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { LibsUiComponentsPreviewFileComponent } from '@libs-ui/components-preview-file';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { IAspectRatio, IFile, IIsValidRequired, IMessageTranslate } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { LibsUiNotificationService } from '@libs-ui/services-notification';\nimport { AudioExtList, convertBlobToFile, convertFileToBase64_ObjectUrl, DocumentExtList, downloadFileByUrl, ERROR_MESSAGE_EMPTY_VALID, getFileExtension, getLabelBySizeFile, ImageExtList, isIncludeAudioExtList, isIncludeDocumentExtList, isIncludeImageExtList, isIncludeVideoExtList, isTypeAudio, isTypeImage, isTypeVideo, uuid, VideoExtList } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { LibsUiComponentsInputsUploadAvatarComponent } from './avatar/avatar.component';\nimport { getDescriptionFormatAndSizeFileDefault } from './defines/helper.define';\nimport { IUploadConfigDownloadSampleFile, IUploadDescriptionFormatAndSizeFile, IUploadFunctionControlEvent, TYPE_FILE_UPLOAD, TYPE_MODE_FILE_DISPLAY } from './interfaces/upload.interface';\nimport { LibsUiComponentsInputsUploadDropFileDirective } from './upload-drop-file.directive';\nimport { LibsUiComponentsInputsUploadDirective } from './upload-file.directive';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-upload',\n templateUrl: './upload.component.html',\n styleUrls: ['./upload.component.scss'],\n standalone: true,\n imports: [TranslateModule,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsInputsUploadAvatarComponent,\n LibsUiComponentsScrollOverlayDirective,\n LibsUiComponentsInputsUploadDirective,\n LibsUiComponentsInputsUploadDropFileDirective\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LibsUiComponentsInputsUploadComponent implements OnInit, AfterViewInit, OnDestroy {\n // #region PROPERTIES\n private imageEditorComponentRef?: ComponentRef<LibsUiComponentsImageEditorComponent>;\n private previewFileComponentRef?: ComponentRef<LibsUiComponentsPreviewFileComponent>;\n private previewFileImageComponentRef?: ComponentRef<LibsUiComponentsGalleryViewerComponent>;\n protected isDragOver = signal(false);\n protected fileList = signal<Array<WritableSignal<IFile>>>([]);\n protected accessFiles = signal<string>('');\n protected messageError = signal<string | undefined>(undefined);\n protected descriptionFormatAndSizeFileComputed = computed<Array<IUploadDescriptionFormatAndSizeFile>>(() => {\n if (this.descriptionFormatAndSizeFile()?.length) {\n return this.descriptionFormatAndSizeFile() as unknown as Array<IUploadDescriptionFormatAndSizeFile>;\n }\n return getDescriptionFormatAndSizeFileDefault(this.fileType(), this.maxImageSize(), this.maxVideoSize(), this.maxDocumentSize(), this.maxAudioSize());\n });\n\n private onDestroy = new Subject<void>();\n // #endregion\n\n // #region INPUTS\n readonly originFiles = input<Array<WritableSignal<IFile>>, Array<WritableSignal<IFile>> | undefined>([], { transform: val => val ?? [] });\n readonly fileType = input<TYPE_FILE_UPLOAD, TYPE_FILE_UPLOAD | undefined>('image_video_document', { transform: val => val ?? 'image_video_document' });\n readonly multiple = input<boolean>();\n readonly canUploadIfHasExistFile = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly canSetAvatar = input<boolean | undefined>(false);\n readonly limitFile = input<number, number | undefined>(10, { transform: val => val ?? 10 });\n readonly maxTotalSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: val => val ?? 10 * 1024 * 1024 });\n readonly maxImageSize = input<number, number | undefined>(5 * 1024 * 1024, { transform: val => val ?? 5 * 1024 * 1024 });\n readonly maxVideoSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: val => val ?? 10 * 1024 * 1024 });\n readonly maxDocumentSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: val => val ?? 10 * 1024 * 1024 });\n readonly maxAudioSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: val => val ?? 10 * 1024 * 1024 });\n readonly imageExtList = input<string[], string[] | undefined>(ImageExtList, { transform: val => val ?? ImageExtList });\n readonly videoExtList = input<string[], string[] | undefined>(VideoExtList, { transform: val => val ?? VideoExtList });\n readonly documentExtList = input<string[], string[] | undefined>(DocumentExtList, { transform: val => val ?? DocumentExtList });\n readonly audioExtList = input<string[], string[] | undefined>(AudioExtList, { transform: val => val ?? AudioExtList });\n readonly classIncludeListItem = input<string>();\n readonly validRequired = input<IIsValidRequired>();\n readonly disable = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly readonly = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly aspectRatio = input<IAspectRatio>();\n readonly zIndex = input<number, number | undefined>(1200, { transform: val => val ?? 1200 });\n readonly ignoreShowSizeFile = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly allowShowPushMessageMaxSizeError = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly messageTypeFileError = input<string, string | undefined>('i18n_the_file_support_format_is_not_correct', { transform: val => val || 'i18n_the_file_support_format_is_not_correct' });\n readonly messageMaxSizeError = input<string, string | undefined>('i18n_file_size_exceeds_the_allowed_limit', { transform: val => val || 'i18n_file_size_exceeds_the_allowed_limit' });\n readonly messageFileUploadError = input<string, string | undefined>('i18n_invalid_file_upload', { transform: val => val || 'i18n_invalid_file_upload' });\n readonly messageTotalFileExceedsError = input<string, string | undefined>('i18n_file_number_exceeds_the_allowed_limit_please_delete_the_file', { transform: val => val || 'i18n_file_number_exceeds_the_allowed_limit_please_delete_the_file' })\n readonly configDescriptionInputUpload = input<IMessageTranslate, IMessageTranslate | undefined>({ message: 'i18n_drag_file_here_to_upload_or_select_file' }, {\n transform: val => val ?? { message: 'i18n_drag_file_here_to_upload_or_select_file' }\n });\n\n readonly modeDisplayFile = input<TYPE_MODE_FILE_DISPLAY, TYPE_MODE_FILE_DISPLAY | undefined>('full', { transform: val => val || 'full' });\n readonly descriptionFormatAndSizeFile = input<WritableSignal<Array<IUploadDescriptionFormatAndSizeFile>>>();\n readonly showVideoDuration = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly labelConfig = input<ILabel>();\n readonly showPopupUploadWhenHasFileAndModeSingle = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly ignoreIconRemove = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly ignoreIconEdit = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly ignoreIconPreview = input<boolean, boolean | undefined>(true, { transform: val => val ?? true });\n readonly classIncludeFileContent = input<string>();\n readonly showBorderErrorAllItemWhenError = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly configDownloadSampleFile = input<IUploadConfigDownloadSampleFile>();\n // #endregion\n\n // #region OUTPUTS\n readonly outClose = output<boolean>();\n readonly outFileChanged = output<Array<WritableSignal<IFile>>>();\n readonly outFileRemoved = output<WritableSignal<IFile>>();\n readonly outFunctionsControl = output<IUploadFunctionControlEvent>();\n // #endregion\n\n // #region VIEW CHILDREN\n readonly uploadRef = viewChild<ElementRef>('upload');\n readonly uploadInputRef = viewChild<ElementRef>('uploadInput');\n // #endregion\n\n // #region INJECTIONS\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n private translateService = inject(TranslateService);\n private notificationService = inject(LibsUiNotificationService);\n // #endregion\n\n constructor() {\n effect(() => {\n if (this.originFiles()) {\n untracked(() => {\n this.fileList.set([...this.originFiles()]);\n })\n }\n });\n }\n\n // #region LIFECYCLE HOOKS\n ngOnInit() {\n this.outFunctionsControl.emit({\n checkIsValid: this.validate.bind(this),\n removeAll: this.removeAllFile.bind(this),\n uploading: async (process, id) => {\n const fileUploading = this.fileList().find(file => file().id === id);\n\n if (fileUploading) {\n fileUploading.update(file => ({ ...file, percentUploading: process.percent, isUploading: process.percent !== 100 }));\n }\n },\n setMessageError: async (message, id) => {\n this.messageError.set(message);\n if (id) {\n const fileError = this.fileList().find(file => file().id === id);\n\n if (fileError) {\n fileError.update(file => ({ ...file, error: message }));\n }\n }\n },\n handlerUploadFile: this.showUploadPopup.bind(this)\n });\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.initAccessFiles();\n }, 0);\n }\n // #endregion\n\n // #region INITIALIZATION\n protected async initAccessFiles() {\n const accessExts: string[] = [];\n const typeSplit = this.fileType().split('_');\n\n if (typeSplit.includes('image')) {\n accessExts.push(...this.imageExtList());\n }\n if (typeSplit.includes('document')) {\n accessExts.push(...this.documentExtList());\n }\n if (typeSplit.includes('video')) {\n accessExts.push(...this.videoExtList());\n }\n if (typeSplit.includes('audio')) {\n accessExts.push(...this.audioExtList());\n }\n this.accessFiles.set(accessExts.map(ext => `.${ext}`).join(','));\n }\n // #endregion\n\n\n // #region FILE OPERATIONS\n protected async handlerSetClassDrag(toogle: boolean) {\n this.uploadRef()?.nativeElement.classList.toggle('libs-ui-components-inputs-upload-drag-over', toogle);\n }\n\n protected async handleUploadFiles(files: Array<File>) {\n if (this.maxTotalSize()) {\n let total = 0;\n\n for (let i = 0; i < files.length; i++) {\n total += files[i].size;\n }\n\n if (this.maxTotalSize() < total) {\n this.notificationService.showCompTypeTextError(this.translateService.instant('i18n_size_not_number_mb', { number: this.maxTotalSize() / 1024 / 1024 }), { timeRemove: 3000 });\n\n return;\n }\n }\n\n let errorExceedsMaxFile = false;\n if (!files || !files.length) {\n return;\n }\n if (!this.multiple() && this.fileList().length && !this.canUploadIfHasExistFile()) {\n return;\n }\n\n const remainFileTotal = this.limitFile() - this.fileList().length;\n if (files.length > remainFileTotal) {\n errorExceedsMaxFile = true;\n this.messageError.set(this.messageTotalFileExceedsError());\n }\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const newFile: IFile = {\n name: file.name,\n file: file,\n size: getLabelBySizeFile(file.size),\n type: isImage ? 'image' : isVideo ? 'video' : isAudio ? 'audio' : 'document',\n id: uuid()\n };\n if (!(await this.checkValidFileExtension(file))) {\n if (!errorExceedsMaxFile) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : this.messageTypeFileError());\n }\n newFile.error = this.messageTypeFileError();\n await this.pushFileInList(file, newFile);\n continue;\n }\n if (!(await this.checkValidFileSize(file))) {\n if (!errorExceedsMaxFile) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : this.messageMaxSizeError());\n }\n newFile.error = this.messageMaxSizeError();\n if (!this.multiple() && this.allowShowPushMessageMaxSizeError()) {\n this.notificationService.showCompTypeTextError(this.messageMaxSizeError());\n\n return;\n }\n await this.pushFileInList(file, newFile);\n continue;\n }\n await this.pushFileInList(file, newFile);\n }\n if (this.canSetAvatar() && this.fileList().length && !this.fileList().find(file => file().isAvatar)) {\n this.fileList.update(fileList => {\n const itemImage = fileList.find(file => file().type === 'image');\n if (itemImage) {\n itemImage.update(file => ({ ...file, isAvatar: true }));\n }\n return [...fileList];\n });\n }\n this.outFileChanged.emit(this.fileList());\n this.validate();\n }\n\n private async pushFileInList(file: File, newFile: IFile) {\n newFile.url = await convertFileToBase64_ObjectUrl(file) as string;\n\n this.fileList.update(fileList => {\n fileList.splice(0, this.canUploadIfHasExistFile() ? 1 : 0, signal(newFile));\n return [...fileList];\n });\n }\n\n protected async handlerOpenPreviewFile(item: IFile) {\n if (item.type === 'document') {\n this.previewFileDocument(item);\n return;\n }\n this.previewFileImage(item);\n }\n\n private async previewFileDocument(item: IFile) {\n if (this.previewFileComponentRef) {\n return;\n }\n this.previewFileComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsPreviewFileComponent);\n this.previewFileComponentRef.setInput('data', item);\n this.previewFileComponentRef.setInput('zIndex', this.zIndex() + 1);\n this.previewFileComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.previewFileComponentRef);\n this.previewFileComponentRef = undefined;\n });\n this.dynamicComponentService.addToBody(this.previewFileComponentRef);\n }\n\n private async previewFileImage(item: IFile) {\n if (this.previewFileImageComponentRef) {\n return;\n }\n this.previewFileImageComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsGalleryViewerComponent);\n const url = item.url || item.origin_url;\n this.previewFileImageComponentRef.setInput('images', [{ url }]);\n this.previewFileImageComponentRef.setInput('imageSelected', { url });\n this.previewFileImageComponentRef.setInput('fieldDisplaySrcImage', 'url');\n this.previewFileImageComponentRef.setInput('singleImage', true);\n this.previewFileImageComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.previewFileImageComponentRef);\n this.previewFileImageComponentRef = undefined;\n });\n this.dynamicComponentService.addToBody(this.previewFileImageComponentRef);\n }\n\n protected async handlerEditImage(event: Event, item: WritableSignal<IFile>) {\n event.stopPropagation();\n this.showEditModal(item);\n }\n\n protected async handlerRemoveFile(event: Event, item: WritableSignal<IFile>) {\n event.stopPropagation();\n this.removeFile(item);\n if (this.originFiles().find(file => file().url === item().url)) {\n this.outFileRemoved.emit(item);\n }\n this.validate();\n if (!this.multiple() && this.showPopupUploadWhenHasFileAndModeSingle()) {\n setTimeout(() => {\n this.showUploadPopup();\n }, 0);\n }\n }\n\n protected async removeFile(fileItem: WritableSignal<IFile>) {\n this.fileList.update(fileList => fileList.filter(item => item().id !== fileItem().id));\n if (this.canSetAvatar() && fileItem().isAvatar && this.fileList().length) {\n this.fileList.update(fileList => {\n fileList[0].update(file => ({ ...file, isAvatar: true }));\n\n return [...fileList];\n });\n\n }\n this.outFileChanged.emit(this.fileList());\n }\n\n protected async showEditModal(fileItem: WritableSignal<IFile>) {\n if (this.imageEditorComponentRef) {\n return;\n }\n const fileDataUrl = fileItem().url || fileItem().origin_url || '';\n this.imageEditorComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsImageEditorComponent);\n\n this.imageEditorComponentRef.setInput('imgSrc', fileDataUrl);\n this.imageEditorComponentRef.setInput('zIndex', this.zIndex() + 1);\n this.imageEditorComponentRef.setInput('nameFile', fileItem().name);\n this.imageEditorComponentRef.setInput('aspectRatio', this.aspectRatio());\n this.imageEditorComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.imageEditorComponentRef);\n this.imageEditorComponentRef = undefined;\n });\n\n this.imageEditorComponentRef.instance.outSaveFile.subscribe(async (result: ISaveFile) => {\n const messageError = !(await this.checkValidFileSize(result.file)) ? this.messageMaxSizeError() : undefined;\n const nameFile = fileItem().file?.name || fileItem().name;\n fileItem.update(data => ({ ...data, file: convertBlobToFile(result.file, nameFile), name: nameFile, origin_url: undefined, size: getLabelBySizeFile(result.file.size), error: messageError, url: result.url, isUpdate: true }));\n this.outFileChanged.emit(this.fileList());\n this.imageEditorComponentRef?.instance.outClose.emit({ isClickButtonClose: true });\n });\n this.dynamicComponentService.addToBody(this.imageEditorComponentRef);\n }\n\n protected async checkValidFileExtension(file: File) {\n const extension = getFileExtension(file);\n\n if (!extension) {\n return false;\n }\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const validImage = isIncludeImageExtList(extension, this.imageExtList());\n const validVideo = isIncludeVideoExtList(extension, this.videoExtList());\n const validAudio = isIncludeAudioExtList(extension, this.audioExtList());\n const validDocument = isIncludeDocumentExtList(extension, this.documentExtList());\n\n const typeSplit = this.fileType().split('_');\n\n if (isImage && typeSplit.includes('image')) {\n return validImage;\n }\n if (isVideo && typeSplit.includes('video')) {\n return validVideo;\n }\n if (isAudio && typeSplit.includes('audio')) {\n return validAudio;\n }\n if (typeSplit.includes('document')) {\n return validDocument;\n }\n\n return false;\n }\n\n protected async checkValidFileSize(file: File | Blob) {\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const validImage = file.size <= this.maxImageSize();\n const validVideo = file.size <= this.maxVideoSize();\n const validAudio = file.size <= this.maxAudioSize();\n const validDocument = file.size <= this.maxDocumentSize();\n\n const typeSplit = this.fileType().split('_');\n\n if (isImage && typeSplit.includes('image')) {\n return validImage;\n }\n if (isVideo && typeSplit.includes('video')) {\n return validVideo;\n }\n if (isAudio && typeSplit.includes('audio')) {\n return validAudio;\n }\n if (typeSplit.includes('document')) {\n return validDocument;\n }\n\n return false;\n }\n\n protected async validate() {\n if (this.validRequired()?.isRequired && !this.fileList().length) {\n this.messageError.set(this.validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID);\n\n return false;\n }\n if (this.multiple() && this.fileList().length > this.limitFile()) {\n this.messageError.set(this.messageTotalFileExceedsError());\n\n return false;\n }\n const fileError = this.fileList().find(item => item().error);\n\n if (fileError) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : fileError().error);\n\n return false;\n }\n this.messageError.set(undefined);\n\n return true;\n }\n\n protected async handlerSetAvatar(event: Event, file: WritableSignal<IFile>) {\n event.stopPropagation();\n\n this.fileList().forEach(item => {\n if (item().id === file().id) {\n item.update(file => ({ ...file, isAvatar: true }));\n return;\n }\n item.update(file => ({ ...file, isAvatar: false }));\n });\n this.outFileChanged.emit(this.fileList());\n }\n\n private async removeAllFile() {\n this.fileList.set([]);\n this.messageError.set(undefined);\n }\n\n protected async handlerDownloadSampleFile(event: Event) {\n event.stopPropagation();\n const config = this.configDownloadSampleFile();\n if (!config) {\n return;\n }\n if (config?.callBack) {\n config.callBack();\n\n return;\n }\n if (config?.url) {\n downloadFileByUrl(config.url, config.title);\n }\n }\n\n private async showUploadPopup() {\n this.uploadInputRef()?.nativeElement.click();\n this.uploadInputRef()?.nativeElement.setAttribute('accept', this.accessFiles());\n }\n\n // #endregion\n\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}","<div class=\"flex flex-col w-full h-full\">\n <div>\n @if (labelConfig();as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required \"\n [description]=\"labelConfig.description\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable() || readonly() \"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable() || readonly() \"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable() || readonly() \"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable() || readonly() \"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n @if ((!configDownloadSampleFile()?.position || configDownloadSampleFile()?.position === 'top') && configDownloadSampleFile();as configDownloadSampleFile) {\n <libs_ui-components-buttons-button [type]=\"'button-link-primary'\"\n [classLabel]=\"'libs-ui-font-h7m'\"\n [classInclude]=\"'!mb-[8px] !p-0'\"\n [classIconLeft]=\"'libs-ui-icon-attachment before:!text-[12px]'\"\n [label]=\"configDownloadSampleFile?.title || ' '\"\n (outClick)=\"handlerDownloadSampleFile($event)\" />\n }\n @if (multiple() || !showPopupUploadWhenHasFileAndModeSingle() || (!fileList().length && !multiple())) {\n <div #upload\n LibsUiComponentsInputsUploadDirective\n LibsUiComponentsInputsUploadDropFileDirective\n class=\"libs-ui-components-inputs-upload\"\n [class.libs-ui-components-inputs-upload-disable]=\"disable() || readonly() || (!multiple() && fileList().length && !canUploadIfHasExistFile())\"\n [class.libs-ui-components-inputs-upload-readonly]=\"readonly()\"\n [class.libs-ui-components-inputs-upload-error]=\"messageError()\"\n [multiple]=\"multiple()\"\n [accessFiles]=\"accessFiles()\"\n (outUploadFiles)=\"handleUploadFiles($event)\"\n (outUploadFile)=\"handleUploadFiles([$event])\"\n (outDragOver)=\"handlerSetClassDrag(true)\"\n (outDragLeave)=\"handlerSetClassDrag(false)\"\n (outDrop)=\"handlerSetClassDrag(false)\"\n (outDropFiles)=\"handleUploadFiles($event)\"\n (outDropFile)=\"handleUploadFiles([$event])\">\n <div class=\"flex items-center\">\n <div class=\"mr-[16px]\">\n <i class=\"libs-ui-components-inputs-upload-icon libs-ui-icon-file-upload before:!text-[32px]\"></i>\n </div>\n <div class=\"libs-ui-components-inputs-upload-description\">\n <div class=\"mb-[4px] libs-ui-font-h6m\"\n [innerHTML]=\"(configDescriptionInputUpload().message || '') | translate:configDescriptionInputUpload().interpolateParams\">\n </div>\n @for (item of descriptionFormatAndSizeFileComputed(); track item; let last = $last) {\n <div class=\"libs-ui-font-h7r\"\n [class.mb-[4px]]=\"!last\"\n [innerHTML]=\"item.message | translate:item.interpolateParams\">\n </div>\n }\n </div>\n </div>\n @if (multiple()) {\n <input #uploadInput\n class=\"upload-input hidden\"\n type=\"file\"\n name=\"files[]\"\n multiple\n [accept]=\"accessFiles()\" />\n } @else {\n <input #uploadInput\n class=\"upload-input hidden\"\n type=\"file\"\n name=\"files[]\"\n [accept]=\"accessFiles()\" />\n }\n </div>\n }\n @if (messageError() && (multiple() || !showPopupUploadWhenHasFileAndModeSingle() || (!fileList().length && !multiple()))) {\n <div class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r\">\n {{ (messageError() || '') | translate:{ value: limitFile() } }}\n </div>\n }\n @if (configDownloadSampleFile()?.position === 'bottom' && configDownloadSampleFile();as configDownloadSampleFile) {\n <libs_ui-components-buttons-button [type]=\"'button-link-primary'\"\n [classLabel]=\"'libs-ui-font-h7m'\"\n [classInclude]=\"'!mt-[8px] !p-0'\"\n [classIconLeft]=\"'libs-ui-icon-attachment before:!text-[12px]'\"\n [label]=\"configDownloadSampleFile.title || ' '\"\n (moClick)=\"handlerDownloadSampleFile($event)\" />\n }\n </div>\n @if (fileList().length) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"relative w-full h-full px-[10px] libs-ui-components-inputs-upload-view-list {{ classIncludeFileContent() || '' }}\"\n [class.mt-[12px]]=\"multiple() || !showPopupUploadWhenHasFileAndModeSingle()\">\n <ng-content select=\"[label-file]\"></ng-content>\n @for (item of fileList(); track item(); let first = $first) {\n <div class=\"libs-ui-components-inputs-upload-view-list-item {{ classIncludeListItem() || '' }}\"\n [class.libs-ui-components-inputs-upload-file-full]=\"modeDisplayFile() === 'full'\"\n [class.libs-ui-components-inputs-upload-file-short]=\"modeDisplayFile() === 'short'\"\n [class.libs-ui-border-error-general]=\"item().error || (messageError() && showBorderErrorAllItemWhenError())\"\n [class.mt-0]=\"first && !multiple() && !showPopupUploadWhenHasFileAndModeSingle()\">\n\n <div class=\"flex w-full\">\n <div class=\"flex items-center\">\n @if (canSetAvatar() && item().type === 'image') {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [classIconLeft]=\"'!mr-0' + (item().isAvatar ? ' libs-ui-icon-check-circle-solid before:!text-[#00bc62]': ' libs-ui-icon-check-circle-outline') + ((disable() || readonly() || item().isUploading || !!item().error) ? ' libs-ui-disable' : '')\"\n [popover]=\"{config:{ content: item().isAvatar ? 'i18n_avatar' : 'i18n_choose_as_your_avatar', zIndex: zIndex()}}\"\n [classInclude]=\"'!mr-[12px] !p-0'\"\n [disable]=\"disable() || readonly() || item().isUploading || !!item().error\"\n (outClick)=\"handlerSetAvatar($event, item)\" />\n }\n </div>\n <div class=\"flex\"\n [class.w-[calc(100%-28px)]]=\"canSetAvatar()\"\n [class.w-full]=\"!canSetAvatar()\">\n @if (modeDisplayFile() === 'full') {\n <libs_ui-components-inputs-upload-avatar [disable]=\"disable() || readonly() \"\n [(item)]=\"item\"\n [showVideoDuration]=\"showVideoDuration()\"\n (outOpenPreview)=\"handlerOpenPreviewFile($event)\" />\n }\n <div class=\"relative w-full\">\n <div class=\"flex absolute w-full h-full flex-col\"\n [class.flex-col]=\"modeDisplayFile() === 'full'\"\n [class.justify-center]=\"modeDisplayFile() === 'full'\"\n [class.items-center]=\"modeDisplayFile() === 'short'\">\n <libs_ui-components-label class=\"flex w-full\"\n [labelLeft]=\"item().name\"\n [zIndexPopover]=\"zIndex() + 1\"\n [labelLeftClass]=\"'libs-ui-font-h6m ' + ((disable() || readonly() || item().isUploading || item().error) ? 'text-[#6a7383]' : 'text-[#071631]')\"\n [classInclude]=\"modeDisplayFile() === 'short' ? '!mb-0' : ''\" />\n\n @if (!ignoreShowSizeFile()) {\n <div class=\"text-[#9ca2ad] libs-ui-font-h7r shrink-0\"\n [class.flex]=\"modeDisplayFile() === 'full'\"\n [class.items-center]=\"modeDisplayFile() === 'short'\"\n [class.ml-[12px]]=\"modeDisplayFile() === 'short'\">\n {{ item().size }}\n </div>\n }\n </div>\n </div>\n @if (item().isUploading && item().percentUploading) {\n <div class=\"flex items-center ml-[16px]\"\n [class.mr-[26px]]=\"modeDisplayFile() === 'full'\">\n <div class=\"w-[120px] h-[4px] rounded-[4px] bg-[#f8f9fa] relative\">\n <div class=\"absolute top-0 left-0 h-[4px] rounded-[4px] bg-[#00bc62]\"\n [style.width.px]=\"(item().percentUploading ?? 0)*1.2\"></div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex ml-[16px]\">\n @if (!ignoreIconPreview()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-eye-outline !mr-0'\"\n [popover]=\"{config:{ content: 'i18n_preview', zIndex: zIndex()+1}}\"\n [classInclude]=\"'!p-0' + (ignoreIconRemove() && !ignoreIconEdit() ? '' : ' !mr-[12px]')\"\n [disable]=\"item().isUploading || disable() || readonly() \"\n (outClick)=\"handlerOpenPreviewFile(item())\" />\n }\n @if (item().type === 'image' && !item().error && !ignoreIconEdit()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-edit-line !mr-0'\"\n [popover]=\"{config:{ content: 'i18n_edit', zIndex: zIndex()+1}}\"\n [classInclude]=\"'!p-0' + (ignoreIconRemove() ? '' : ' !mr-[12px]')\"\n [disable]=\"item().isUploading || disable() || readonly() \"\n (outClick)=\"handlerEditImage($event, item)\" />\n }\n @if (!ignoreIconRemove()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-close !mr-0'\"\n [popover]=\"{config: {content: 'i18n_delete', zIndex: zIndex()+1}}\"\n [classInclude]=\"'!p-0'\"\n [disable]=\"item().isUploading || disable() || readonly() \"\n (outClick)=\"handlerRemoveFile($event, item)\" />\n }\n </div>\n </div>\n @if (item().error && (multiple() || showPopupUploadWhenHasFileAndModeSingle())) {\n <div class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r\">{{ (item().error || ' ') | translate }}</div>\n }\n }\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-inputs-upload.mjs","sources":["../../../../../../libs-ui/components/inputs/upload/src/pipes/calc-duration-video.pipe.ts","../../../../../../libs-ui/components/inputs/upload/src/pipes/check-file-extension.pipe.ts","../../../../../../libs-ui/components/inputs/upload/src/avatar/avatar.component.ts","../../../../../../libs-ui/components/inputs/upload/src/avatar/avatar.component.html","../../../../../../libs-ui/components/inputs/upload/src/defines/helper.define.ts","../../../../../../libs-ui/components/inputs/upload/src/upload-drop-file.directive.ts","../../../../../../libs-ui/components/inputs/upload/src/upload-file.directive.ts","../../../../../../libs-ui/components/inputs/upload/src/upload.component.ts","../../../../../../libs-ui/components/inputs/upload/src/upload.component.html","../../../../../../libs-ui/components/inputs/upload/src/libs-ui-components-inputs-upload.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'LibsUiPipesInputsUploadCalcDurationVideoPipe',\n standalone: true\n})\nexport class LibsUiPipesInputsUploadCalcDurationVideoPipe implements PipeTransform {\n\n transform(duration: number) {\n if (!duration) {\n return '0:0';\n }\n duration = Math.round(duration);\n if (duration >= 3600) {\n const hour = Math.floor(duration / 3600);\n const minute = Math.floor((duration - (hour * 3600)) / 60);\n const second = duration - (hour * 3600 + minute * 60);\n\n return `${hour}:${minute < 10 ? `0${minute}` : minute}:${second < 10 ? `0${second}` : second}`;\n }\n if (duration >= 60) {\n const minute = Math.floor(duration / 60);\n const second = duration - (minute * 60);\n\n return `${minute}:${second < 10 ? `0${second}` : second}`;\n }\n\n return `0:${duration}`;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IFile } from '@libs-ui/interfaces-types';\nimport { DocumentExtList, getFileExtension, ImageExtList, VideoExtList } from '@libs-ui/utils';\n\n@Pipe({\n name: 'LibsUiPipesInputsUploadCheckFileExtensionPipe',\n standalone: true\n})\nexport class LibsUiPipesInputsUploadCheckFileExtensionPipe implements PipeTransform {\n\n transform(file: IFile, type: 'image' | 'video' | 'word' | 'xlsx' | 'pdf' | 'pptx' | 'other') {\n const fileExtension = getFileExtension(file);\n\n if (!fileExtension) {\n return false;\n }\n switch (type) {\n case 'image':\n\n return ImageExtList.includes(fileExtension);\n\n case 'video':\n\n return VideoExtList.includes(fileExtension);\n\n case 'word':\n return ['doc', 'docx', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'].includes(fileExtension)\n\n case 'xlsx':\n return ['xls', 'xlsx', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'].includes(fileExtension)\n\n case 'pdf':\n return ['pdf', 'application/pdf'].includes(fileExtension)\n\n case 'pptx':\n return ['ppt', 'pptx', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'].includes(fileExtension)\n\n case 'other':\n return ![...ImageExtList, ...VideoExtList, ...DocumentExtList].includes(fileExtension);\n }\n }\n\n}\n","import { AsyncPipe, NgComponentOutlet } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, Inject, input, model, Optional, output } from \"@angular/core\";\nimport { LibsUiComponentsSpinnerComponent } from \"@libs-ui/components-spinner\";\nimport { LibsUiIconsGetIconComponentPipe } from \"@libs-ui/icons\";\nimport { IEvent, IFile } from \"@libs-ui/interfaces-types\";\nimport { LibsUiPipesSecurityTrustPipe } from \"@libs-ui/pipes-security-trust\";\nimport { LINK_IMAGE_ERROR_TOKEN_INJECT } from \"@libs-ui/utils\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { LibsUiPipesInputsUploadCalcDurationVideoPipe } from \"../pipes/calc-duration-video.pipe\";\nimport { LibsUiPipesInputsUploadCheckFileExtensionPipe } from \"../pipes/check-file-extension.pipe\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-upload-avatar',\n templateUrl: './avatar.component.html',\n standalone: true,\n imports: [\n NgComponentOutlet, AsyncPipe, TranslateModule,\n LibsUiComponentsSpinnerComponent,\n LibsUiPipesSecurityTrustPipe,\n LibsUiPipesInputsUploadCalcDurationVideoPipe,\n LibsUiPipesInputsUploadCheckFileExtensionPipe,\n LibsUiIconsGetIconComponentPipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LibsUiComponentsInputsUploadAvatarComponent {\n readonly item = model.required<IFile>();\n readonly showVideoDuration = input<boolean>();\n readonly disable = input<boolean>();\n readonly size = input<number>();\n readonly outOpenPreview = output<IFile>();\n\n constructor(@Optional() @Inject(LINK_IMAGE_ERROR_TOKEN_INJECT) private linkImageError: string) {\n }\n\n protected async handlerImageError(event: Event) {\n if (!this.linkImageError) {\n return;\n }\n (event as IEvent).target.src = this.linkImageError;\n }\n\n protected handlerImageClick(event: Event) {\n event.stopPropagation();\n this.outOpenPreview.emit(this.item());\n }\n}\n","<div class=\"flex mr-[12px] bg-[#ffffff] rounded-[4px]\"\n [class.libs-ui-disable]=\"disable() || item().isUploading || item().error\">\n @if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'image') {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"relative\">\n @if (item().url || item().origin_url; as url) {\n <img [src]=\"url\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"rounded-[4px] cursor-pointer\"\n alt\n (error)=\"handlerImageError($event)\"\n (click)=\"handlerImageClick($event)\" />\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'video') {\n <div class=\"relative\"\n [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\">\n @if (item().url || item().origin_url) {\n <video #videoRef\n [style.width.px]=\"size || 32\"\n [style.height.px]=\"size || 32\"\n class=\"rounded-[4px]\"\n preload=\"metadata\"\n [src]=\"(item().url || item().origin_url || '') | LibsUiPipesSecurityTrustPipe:'resourceUrl'\"></video>\n <div class=\"absolute w-full h-full top-0 bg-[#001433] opacity-40 rounded-[4px]\">\n </div>\n <div class=\"absolute w-full h-full flex items-center justify-center top-0\">\n <i class=\"text-[#ffffff] libs-ui-icon-play-solid before:!text-[10px]\"></i>\n </div>\n @if (showVideoDuration()) {\n <div\n class=\"flex text-[5px] absolute bottom-0 right-0 py-[2px] px-[4px] rounded-[4px] bg-[#000000] text-[#ffffff]\">\n {{ videoRef.duration | LibsUiPipesInputsUploadCalcDurationVideoPipe }}\n </div>\n }\n } @else {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pdf') {\n <ng-container *ngComponentOutlet=\"'pdf'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'word') {\n <ng-container *ngComponentOutlet=\"'word'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'pptx') {\n <ng-container *ngComponentOutlet=\"'pptx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else if (item() | LibsUiPipesInputsUploadCheckFileExtensionPipe:'xlsx') {\n <ng-container *ngComponentOutlet=\"'xlsx'|LibsUiIconsGetIconComponentPipe|async\" />\n }\n @else {\n <div [style.width.px]=\"size() || 32\"\n [style.height.px]=\"size() || 32\"\n class=\"flex items-center justify-center\">\n <i class=\"libs-ui-icon-file before:!text-[19px]\"\n [class.text-[#6a7383]]=\"!item().isUploading && !item().error\"\n [class.text-[#071631]]=\"disable() || item().isUploading || item().error\"></i>\n </div>\n }\n</div>\n","import { getLabelBySizeFile } from '@libs-ui/utils';\nimport { IUploadDescriptionFormatAndSizeFile, TYPE_FILE_UPLOAD } from '../interfaces/upload.interface';\n\nexport const getDescriptionFormatAndSizeFileDefault = (type: TYPE_FILE_UPLOAD, maxImageSize: number, maxVideoSize: number, maxDocumentSize: number, maxAudioSize: number): IUploadDescriptionFormatAndSizeFile[] => {\n const image = {\n message: 'i18n_note_upload_image_volume',\n interpolateParams: { value: getLabelBySizeFile(maxImageSize, 0) }\n };\n const video = {\n message: 'i18n_note_upload_video_volume',\n interpolateParams: { value: getLabelBySizeFile(maxVideoSize, 0) }\n };\n const document = {\n message: 'i18n_note_upload_file_volume',\n interpolateParams: { value: getLabelBySizeFile(maxDocumentSize, 0) }\n };\n const audio = {\n message: 'i18n_note_upload_audio_volume',\n interpolateParams: { value: getLabelBySizeFile(maxAudioSize, 0) }\n };\n\n const typeSplit = type.split('_');\n const description = [];\n\n if (typeSplit.includes('image')) {\n description.push(image);\n }\n if (typeSplit.includes('audio')) {\n description.push(audio);\n }\n if (typeSplit.includes('video')) {\n description.push(video);\n }\n if (typeSplit.includes('document')) {\n description.push(document);\n }\n\n return description;\n};","import { AfterViewInit, Directive, ElementRef, input, OnDestroy, output } from '@angular/core';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { checkMouseOverInContainer, isTypeFile } from '@libs-ui/utils';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsInputsUploadDropFileDirective]',\n standalone: true\n})\nexport class LibsUiComponentsInputsUploadDropFileDirective implements AfterViewInit, OnDestroy {\n\n private onDestroy = new Subject<void>();\n\n readonly multiple = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n\n readonly outDragOver = output<IEvent>();\n readonly outDragLeave = output<IEvent>();\n readonly outDrop = output<IEvent>();\n readonly outDropFiles = output<File[]>();\n readonly outDropFile = output<File>();\n\n constructor(\n private elementRef: ElementRef\n ) {\n }\n\n ngAfterViewInit() {\n fromEvent<IEvent>(this.elementRef.nativeElement, 'dragover').pipe(takeUntil(this.onDestroy)).subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n this.outDragOver.emit(e);\n });\n fromEvent<IEvent>(this.elementRef.nativeElement, 'dragleave').pipe(takeUntil(this.onDestroy)).subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n if (checkMouseOverInContainer(e, this.elementRef.nativeElement)) {\n return;\n }\n this.outDragLeave.emit(e);\n });\n\n fromEvent<IEvent>(this.elementRef.nativeElement, 'drop').pipe(takeUntil(this.onDestroy)).subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n this.outDrop.emit(e);\n\n const fileList: File[] = Array.from(e.dataTransfer?.files || e.clipboardData?.files || []).filter(isTypeFile);\n\n if (!fileList || !fileList.length) {\n return;\n }\n\n if (this.multiple()) {\n this.outDropFiles.emit(fileList);\n\n return;\n }\n this.outDropFile.emit(fileList[0]);\n });\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}","import { AfterViewInit, Directive, ElementRef, inject, input, OnDestroy, output } from '@angular/core';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsInputsUploadDirective]',\n standalone: true\n})\nexport class LibsUiComponentsInputsUploadDirective implements AfterViewInit,OnDestroy {\n private onDestroy = new Subject<void>();\n\n readonly multiple = input<boolean, boolean | undefined>(true, { transform: val => val ?? true });\n readonly accessFiles = input<string, string | undefined>('image/x-png,image/jpg,image/jpeg,image/PNG,image/x-PNG,image/JPG,image/JPEG', { transform: val => val ?? 'image/x-png,image/jpg,image/jpeg,image/PNG,image/x-PNG,image/JPG,image/JPEG' });\n\n readonly outUploadFiles = output<File[]>();\n readonly outUploadFile = output<File>();\n\n private elementRef = inject(ElementRef);\n\n\n ngAfterViewInit() {\n fromEvent<IEvent>(this.elementRef.nativeElement, 'click').pipe(takeUntil(this.onDestroy)).subscribe((e: IEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n const inputElementUpload= document.createElement('input');\n inputElementUpload.type = 'file';\n inputElementUpload.accept = this.accessFiles();\n inputElementUpload.multiple = this.multiple();\n inputElementUpload.style.display = 'none';\n inputElementUpload.click();\n fromEvent<IEvent>(inputElementUpload, 'change').pipe(takeUntil(this.onDestroy)).subscribe((event: IEvent) => {\n const files = event.dataTransfer?.files || event.target?.files;\n inputElementUpload.remove();\n if (!files?.length) {\n return;\n }\n if (this.multiple()) {\n this.outUploadFiles.emit(files);\n\n return;\n }\n this.outUploadFile.emit(files[0]);\n });\n });\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ComponentRef, computed, effect, ElementRef, inject, input, OnDestroy, OnInit, output, signal, untracked, viewChild, WritableSignal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsGalleryViewerComponent } from '@libs-ui/components-gallery';\nimport { ISaveFile, LibsUiComponentsImageEditorComponent } from '@libs-ui/components-image-editor';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { LibsUiComponentsPreviewFileComponent } from '@libs-ui/components-preview-file';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { IAspectRatio, IFile, IIsValidRequired, IMessageTranslate } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { LibsUiNotificationService } from '@libs-ui/services-notification';\nimport { AudioExtList, convertBlobToFile, convertFileToBase64_ObjectUrl, DocumentExtList, downloadFileByUrl, ERROR_MESSAGE_EMPTY_VALID, getFileExtension, getLabelBySizeFile, ImageExtList, isIncludeAudioExtList, isIncludeDocumentExtList, isIncludeImageExtList, isIncludeVideoExtList, isTypeAudio, isTypeImage, isTypeVideo, uuid, VideoExtList } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { LibsUiComponentsInputsUploadAvatarComponent } from './avatar/avatar.component';\nimport { getDescriptionFormatAndSizeFileDefault } from './defines/helper.define';\nimport { IUploadConfigDownloadSampleFile, IUploadDescriptionFormatAndSizeFile, IUploadFunctionControlEvent, TYPE_FILE_UPLOAD, TYPE_MODE_FILE_DISPLAY } from './interfaces/upload.interface';\nimport { LibsUiComponentsInputsUploadDropFileDirective } from './upload-drop-file.directive';\nimport { LibsUiComponentsInputsUploadDirective } from './upload-file.directive';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-upload',\n templateUrl: './upload.component.html',\n styleUrls: ['./upload.component.scss'],\n standalone: true,\n imports: [TranslateModule,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsInputsUploadAvatarComponent,\n LibsUiComponentsScrollOverlayDirective,\n LibsUiComponentsInputsUploadDirective,\n LibsUiComponentsInputsUploadDropFileDirective\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LibsUiComponentsInputsUploadComponent implements OnInit, AfterViewInit, OnDestroy {\n // #region PROPERTIES\n private imageEditorComponentRef?: ComponentRef<LibsUiComponentsImageEditorComponent>;\n private previewFileComponentRef?: ComponentRef<LibsUiComponentsPreviewFileComponent>;\n private previewFileImageComponentRef?: ComponentRef<LibsUiComponentsGalleryViewerComponent>;\n protected isDragOver = signal(false);\n protected fileList = signal<Array<WritableSignal<IFile>>>([]);\n protected accessFiles = signal<string>('');\n protected messageError = signal<string | undefined>(undefined);\n protected descriptionFormatAndSizeFileComputed = computed<Array<IUploadDescriptionFormatAndSizeFile>>(() => {\n if (this.descriptionFormatAndSizeFile()?.length) {\n return this.descriptionFormatAndSizeFile() as unknown as Array<IUploadDescriptionFormatAndSizeFile>;\n }\n return getDescriptionFormatAndSizeFileDefault(this.fileType(), this.maxImageSize(), this.maxVideoSize(), this.maxDocumentSize(), this.maxAudioSize());\n });\n\n private onDestroy = new Subject<void>();\n // #endregion\n\n // #region INPUTS\n readonly originFiles = input<Array<WritableSignal<IFile>>, Array<WritableSignal<IFile>> | undefined>([], { transform: val => val ?? [] });\n readonly fileType = input<TYPE_FILE_UPLOAD, TYPE_FILE_UPLOAD | undefined>('image_video_document', { transform: val => val ?? 'image_video_document' });\n readonly multiple = input<boolean>();\n readonly canUploadIfHasExistFile = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly canSetAvatar = input<boolean | undefined>(false);\n readonly limitFile = input<number, number | undefined>(10, { transform: val => val ?? 10 });\n readonly maxTotalSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: val => val ?? 10 * 1024 * 1024 });\n readonly maxImageSize = input<number, number | undefined>(5 * 1024 * 1024, { transform: val => val ?? 5 * 1024 * 1024 });\n readonly maxVideoSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: val => val ?? 10 * 1024 * 1024 });\n readonly maxDocumentSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: val => val ?? 10 * 1024 * 1024 });\n readonly maxAudioSize = input<number, number | undefined>(10 * 1024 * 1024, { transform: val => val ?? 10 * 1024 * 1024 });\n readonly imageExtList = input<string[], string[] | undefined>(ImageExtList, { transform: val => val ?? ImageExtList });\n readonly videoExtList = input<string[], string[] | undefined>(VideoExtList, { transform: val => val ?? VideoExtList });\n readonly documentExtList = input<string[], string[] | undefined>(DocumentExtList, { transform: val => val ?? DocumentExtList });\n readonly audioExtList = input<string[], string[] | undefined>(AudioExtList, { transform: val => val ?? AudioExtList });\n readonly classIncludeListItem = input<string>();\n readonly validRequired = input<IIsValidRequired>();\n readonly disable = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly readonly = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly aspectRatio = input<IAspectRatio>();\n readonly zIndex = input<number, number | undefined>(1200, { transform: val => val ?? 1200 });\n readonly ignoreShowSizeFile = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly allowShowPushMessageMaxSizeError = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly messageTypeFileError = input<string, string | undefined>('i18n_the_file_support_format_is_not_correct', { transform: val => val || 'i18n_the_file_support_format_is_not_correct' });\n readonly messageMaxSizeError = input<string, string | undefined>('i18n_file_size_exceeds_the_allowed_limit', { transform: val => val || 'i18n_file_size_exceeds_the_allowed_limit' });\n readonly messageFileUploadError = input<string, string | undefined>('i18n_invalid_file_upload', { transform: val => val || 'i18n_invalid_file_upload' });\n readonly messageTotalFileExceedsError = input<string, string | undefined>('i18n_file_number_exceeds_the_allowed_limit_please_delete_the_file', { transform: val => val || 'i18n_file_number_exceeds_the_allowed_limit_please_delete_the_file' })\n readonly configDescriptionInputUpload = input<IMessageTranslate, IMessageTranslate | undefined>({ message: 'i18n_drag_file_here_to_upload_or_select_file' }, {\n transform: val => val ?? { message: 'i18n_drag_file_here_to_upload_or_select_file' }\n });\n\n readonly modeDisplayFile = input<TYPE_MODE_FILE_DISPLAY, TYPE_MODE_FILE_DISPLAY | undefined>('full', { transform: val => val || 'full' });\n readonly descriptionFormatAndSizeFile = input<WritableSignal<Array<IUploadDescriptionFormatAndSizeFile>>>();\n readonly showVideoDuration = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly labelConfig = input<ILabel>();\n readonly showPopupUploadWhenHasFileAndModeSingle = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly ignoreIconRemove = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly ignoreIconEdit = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly ignoreIconPreview = input<boolean, boolean | undefined>(true, { transform: val => val ?? true });\n readonly classIncludeFileContent = input<string>();\n readonly showBorderErrorAllItemWhenError = input<boolean, boolean | undefined>(false, { transform: val => val ?? false });\n readonly configDownloadSampleFile = input<IUploadConfigDownloadSampleFile>();\n // #endregion\n\n // #region OUTPUTS\n readonly outClose = output<boolean>();\n readonly outFileChanged = output<Array<WritableSignal<IFile>>>();\n readonly outFileRemoved = output<WritableSignal<IFile>>();\n readonly outFunctionsControl = output<IUploadFunctionControlEvent>();\n // #endregion\n\n // #region VIEW CHILDREN\n readonly uploadRef = viewChild<ElementRef>('upload');\n readonly uploadInputRef = viewChild<ElementRef>('uploadInput');\n // #endregion\n\n // #region INJECTIONS\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n private translateService = inject(TranslateService);\n private notificationService = inject(LibsUiNotificationService);\n // #endregion\n\n constructor() {\n effect(() => {\n if (this.originFiles()) {\n untracked(() => {\n this.fileList.set([...this.originFiles()]);\n })\n }\n });\n }\n\n // #region LIFECYCLE HOOKS\n ngOnInit() {\n this.outFunctionsControl.emit({\n checkIsValid: this.validate.bind(this),\n removeAll: this.removeAllFile.bind(this),\n uploading: async (process, id) => {\n const fileUploading = this.fileList().find(file => file().id === id);\n\n if (fileUploading) {\n fileUploading.update(file => ({ ...file, percentUploading: process.percent, isUploading: process.percent !== 100 }));\n }\n },\n setMessageError: async (message, id) => {\n this.messageError.set(message);\n if (id) {\n const fileError = this.fileList().find(file => file().id === id);\n\n if (fileError) {\n fileError.update(file => ({ ...file, error: message }));\n }\n }\n },\n handlerUploadFile: this.showUploadPopup.bind(this)\n });\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.initAccessFiles();\n }, 0);\n }\n // #endregion\n\n // #region INITIALIZATION\n protected async initAccessFiles() {\n const accessExts: string[] = [];\n const typeSplit = this.fileType().split('_');\n\n if (typeSplit.includes('image')) {\n accessExts.push(...this.imageExtList());\n }\n if (typeSplit.includes('document')) {\n accessExts.push(...this.documentExtList());\n }\n if (typeSplit.includes('video')) {\n accessExts.push(...this.videoExtList());\n }\n if (typeSplit.includes('audio')) {\n accessExts.push(...this.audioExtList());\n }\n this.accessFiles.set(accessExts.map(ext => `.${ext}`).join(','));\n }\n // #endregion\n\n\n // #region FILE OPERATIONS\n protected async handlerSetClassDrag(toogle: boolean) {\n this.uploadRef()?.nativeElement.classList.toggle('libs-ui-components-inputs-upload-drag-over', toogle);\n }\n\n protected async handleUploadFiles(files: Array<File>) {\n if (this.maxTotalSize()) {\n let total = 0;\n\n for (let i = 0; i < files.length; i++) {\n total += files[i].size;\n }\n\n if (this.maxTotalSize() < total) {\n this.notificationService.showCompTypeTextError(this.translateService.instant('i18n_size_not_number_mb', { number: this.maxTotalSize() / 1024 / 1024 }), { timeRemove: 3000 });\n\n return;\n }\n }\n\n let errorExceedsMaxFile = false;\n if (!files || !files.length) {\n return;\n }\n if (!this.multiple() && this.fileList().length && !this.canUploadIfHasExistFile()) {\n return;\n }\n\n const remainFileTotal = this.limitFile() - this.fileList().length;\n if (files.length > remainFileTotal) {\n errorExceedsMaxFile = true;\n this.messageError.set(this.messageTotalFileExceedsError());\n }\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const newFile: IFile = {\n name: file.name,\n file: file,\n size: getLabelBySizeFile(file.size),\n type: isImage ? 'image' : isVideo ? 'video' : isAudio ? 'audio' : 'document',\n id: uuid()\n };\n if (!(await this.checkValidFileExtension(file))) {\n if (!errorExceedsMaxFile) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : this.messageTypeFileError());\n }\n newFile.error = this.messageTypeFileError();\n await this.pushFileInList(file, newFile);\n continue;\n }\n if (!(await this.checkValidFileSize(file))) {\n if (!errorExceedsMaxFile) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : this.messageMaxSizeError());\n }\n newFile.error = this.messageMaxSizeError();\n if (!this.multiple() && this.allowShowPushMessageMaxSizeError()) {\n this.notificationService.showCompTypeTextError(this.messageMaxSizeError());\n\n return;\n }\n await this.pushFileInList(file, newFile);\n continue;\n }\n await this.pushFileInList(file, newFile);\n }\n if (this.canSetAvatar() && this.fileList().length && !this.fileList().find(file => file().isAvatar)) {\n this.fileList.update(fileList => {\n const itemImage = fileList.find(file => file().type === 'image');\n if (itemImage) {\n itemImage.update(file => ({ ...file, isAvatar: true }));\n }\n return [...fileList];\n });\n }\n this.outFileChanged.emit(this.fileList());\n this.validate();\n }\n\n private async pushFileInList(file: File, newFile: IFile) {\n newFile.url = await convertFileToBase64_ObjectUrl(file) as string;\n\n this.fileList.update(fileList => {\n fileList.splice(0, this.canUploadIfHasExistFile() ? 1 : 0, signal(newFile));\n return [...fileList];\n });\n }\n\n protected async handlerOpenPreviewFile(item: IFile) {\n if (item.type === 'document') {\n this.previewFileDocument(item);\n return;\n }\n this.previewFileImage(item);\n }\n\n private async previewFileDocument(item: IFile) {\n if (this.previewFileComponentRef) {\n return;\n }\n this.previewFileComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsPreviewFileComponent);\n this.previewFileComponentRef.setInput('data', item);\n this.previewFileComponentRef.setInput('zIndex', this.zIndex() + 1);\n this.previewFileComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.previewFileComponentRef);\n this.previewFileComponentRef = undefined;\n });\n this.dynamicComponentService.addToBody(this.previewFileComponentRef);\n }\n\n private async previewFileImage(item: IFile) {\n if (this.previewFileImageComponentRef) {\n return;\n }\n this.previewFileImageComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsGalleryViewerComponent);\n const url = item.url || item.origin_url;\n this.previewFileImageComponentRef.setInput('images', [{ url }]);\n this.previewFileImageComponentRef.setInput('imageSelected', { url });\n this.previewFileImageComponentRef.setInput('fieldDisplaySrcImage', 'url');\n this.previewFileImageComponentRef.setInput('singleImage', true);\n this.previewFileImageComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.previewFileImageComponentRef);\n this.previewFileImageComponentRef = undefined;\n });\n this.dynamicComponentService.addToBody(this.previewFileImageComponentRef);\n }\n\n protected async handlerEditImage(event: Event, item: WritableSignal<IFile>) {\n event.stopPropagation();\n this.showEditModal(item);\n }\n\n protected async handlerRemoveFile(event: Event, item: WritableSignal<IFile>) {\n event.stopPropagation();\n this.removeFile(item);\n if (this.originFiles().find(file => file().url === item().url)) {\n this.outFileRemoved.emit(item);\n }\n this.validate();\n if (!this.multiple() && this.showPopupUploadWhenHasFileAndModeSingle()) {\n setTimeout(() => {\n this.showUploadPopup();\n }, 0);\n }\n }\n\n protected async removeFile(fileItem: WritableSignal<IFile>) {\n this.fileList.update(fileList => fileList.filter(item => item().id !== fileItem().id));\n if (this.canSetAvatar() && fileItem().isAvatar && this.fileList().length) {\n this.fileList.update(fileList => {\n fileList[0].update(file => ({ ...file, isAvatar: true }));\n\n return [...fileList];\n });\n\n }\n this.outFileChanged.emit(this.fileList());\n }\n\n protected async showEditModal(fileItem: WritableSignal<IFile>) {\n if (this.imageEditorComponentRef) {\n return;\n }\n const fileDataUrl = fileItem().url || fileItem().origin_url || '';\n this.imageEditorComponentRef = this.dynamicComponentService.resolveComponentFactory(LibsUiComponentsImageEditorComponent);\n\n this.imageEditorComponentRef.setInput('imgSrc', fileDataUrl);\n this.imageEditorComponentRef.setInput('zIndex', this.zIndex() + 1);\n this.imageEditorComponentRef.setInput('nameFile', fileItem().name);\n this.imageEditorComponentRef.setInput('aspectRatio', this.aspectRatio());\n this.imageEditorComponentRef.instance.outClose.subscribe(() => {\n this.dynamicComponentService.remove(this.imageEditorComponentRef);\n this.imageEditorComponentRef = undefined;\n });\n\n this.imageEditorComponentRef.instance.outSaveFile.subscribe(async (result: ISaveFile) => {\n const messageError = !(await this.checkValidFileSize(result.file)) ? this.messageMaxSizeError() : undefined;\n const nameFile = fileItem().file?.name || fileItem().name;\n fileItem.update(data => ({ ...data, file: convertBlobToFile(result.file, nameFile), name: nameFile, origin_url: undefined, size: getLabelBySizeFile(result.file.size), error: messageError, url: result.url, isUpdate: true }));\n this.outFileChanged.emit(this.fileList());\n this.imageEditorComponentRef?.instance.outClose.emit({ isClickButtonClose: true });\n });\n this.dynamicComponentService.addToBody(this.imageEditorComponentRef);\n }\n\n protected async checkValidFileExtension(file: File) {\n const extension = getFileExtension(file);\n\n if (!extension) {\n return false;\n }\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const validImage = isIncludeImageExtList(extension, this.imageExtList());\n const validVideo = isIncludeVideoExtList(extension, this.videoExtList());\n const validAudio = isIncludeAudioExtList(extension, this.audioExtList());\n const validDocument = isIncludeDocumentExtList(extension, this.documentExtList());\n\n const typeSplit = this.fileType().split('_');\n\n if (isImage && typeSplit.includes('image')) {\n return validImage;\n }\n if (isVideo && typeSplit.includes('video')) {\n return validVideo;\n }\n if (isAudio && typeSplit.includes('audio')) {\n return validAudio;\n }\n if (typeSplit.includes('document')) {\n return validDocument;\n }\n\n return false;\n }\n\n protected async checkValidFileSize(file: File | Blob) {\n const isImage = isTypeImage(file);\n const isVideo = isTypeVideo(file);\n const isAudio = isTypeAudio(file);\n const validImage = file.size <= this.maxImageSize();\n const validVideo = file.size <= this.maxVideoSize();\n const validAudio = file.size <= this.maxAudioSize();\n const validDocument = file.size <= this.maxDocumentSize();\n\n const typeSplit = this.fileType().split('_');\n\n if (isImage && typeSplit.includes('image')) {\n return validImage;\n }\n if (isVideo && typeSplit.includes('video')) {\n return validVideo;\n }\n if (isAudio && typeSplit.includes('audio')) {\n return validAudio;\n }\n if (typeSplit.includes('document')) {\n return validDocument;\n }\n\n return false;\n }\n\n protected async validate() {\n if (this.validRequired()?.isRequired && !this.fileList().length) {\n this.messageError.set(this.validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID);\n\n return false;\n }\n if (this.multiple() && this.fileList().length > this.limitFile()) {\n this.messageError.set(this.messageTotalFileExceedsError());\n\n return false;\n }\n const fileError = this.fileList().find(item => item().error);\n\n if (fileError) {\n this.messageError.set(this.multiple() ? this.messageFileUploadError() : fileError().error);\n\n return false;\n }\n this.messageError.set(undefined);\n\n return true;\n }\n\n protected async handlerSetAvatar(event: Event, file: WritableSignal<IFile>) {\n event.stopPropagation();\n\n this.fileList().forEach(item => {\n if (item().id === file().id) {\n item.update(file => ({ ...file, isAvatar: true }));\n return;\n }\n item.update(file => ({ ...file, isAvatar: false }));\n });\n this.outFileChanged.emit(this.fileList());\n }\n\n private async removeAllFile() {\n this.fileList.set([]);\n this.messageError.set(undefined);\n }\n\n protected async handlerDownloadSampleFile(event: Event) {\n event.stopPropagation();\n const config = this.configDownloadSampleFile();\n if (!config) {\n return;\n }\n if (config?.callBack) {\n config.callBack();\n\n return;\n }\n if (config?.url) {\n downloadFileByUrl(config.url, config.title);\n }\n }\n\n private async showUploadPopup() {\n this.uploadInputRef()?.nativeElement.click();\n this.uploadInputRef()?.nativeElement.setAttribute('accept', this.accessFiles());\n }\n\n // #endregion\n\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}","<div class=\"flex flex-col w-full h-full\">\n <div>\n @if (labelConfig();as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required \"\n [description]=\"labelConfig.description\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable() || readonly() \"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable() || readonly() \"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable() || readonly() \"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable() || readonly() \"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n @if ((!configDownloadSampleFile()?.position || configDownloadSampleFile()?.position === 'top') && configDownloadSampleFile();as configDownloadSampleFile) {\n <libs_ui-components-buttons-button [type]=\"'button-link-primary'\"\n [classLabel]=\"'libs-ui-font-h7m'\"\n [classInclude]=\"'!mb-[8px] !p-0'\"\n [classIconLeft]=\"'libs-ui-icon-attachment before:!text-[12px]'\"\n [label]=\"configDownloadSampleFile?.title || ' '\"\n (outClick)=\"handlerDownloadSampleFile($event)\" />\n }\n @if (multiple() || !showPopupUploadWhenHasFileAndModeSingle() || (!fileList().length && !multiple())) {\n <div #upload\n LibsUiComponentsInputsUploadDirective\n LibsUiComponentsInputsUploadDropFileDirective\n class=\"libs-ui-components-inputs-upload\"\n [class.libs-ui-components-inputs-upload-disable]=\"disable() || readonly() || (!multiple() && fileList().length && !canUploadIfHasExistFile())\"\n [class.libs-ui-components-inputs-upload-readonly]=\"readonly()\"\n [class.libs-ui-components-inputs-upload-error]=\"messageError()\"\n [multiple]=\"multiple()\"\n [accessFiles]=\"accessFiles()\"\n (outUploadFiles)=\"handleUploadFiles($event)\"\n (outUploadFile)=\"handleUploadFiles([$event])\"\n (outDragOver)=\"handlerSetClassDrag(true)\"\n (outDragLeave)=\"handlerSetClassDrag(false)\"\n (outDrop)=\"handlerSetClassDrag(false)\"\n (outDropFiles)=\"handleUploadFiles($event)\"\n (outDropFile)=\"handleUploadFiles([$event])\">\n <div class=\"flex items-center\">\n <div class=\"mr-[16px]\">\n <i class=\"libs-ui-components-inputs-upload-icon libs-ui-icon-file-upload before:!text-[32px]\"></i>\n </div>\n <div class=\"libs-ui-components-inputs-upload-description\">\n <div class=\"mb-[4px] libs-ui-font-h6m\"\n [innerHTML]=\"(configDescriptionInputUpload().message || '') | translate:configDescriptionInputUpload().interpolateParams\">\n </div>\n @for (item of descriptionFormatAndSizeFileComputed(); track item; let last = $last) {\n <div class=\"libs-ui-font-h7r\"\n [class.mb-[4px]]=\"!last\"\n [innerHTML]=\"item.message | translate:item.interpolateParams\">\n </div>\n }\n </div>\n </div>\n @if (multiple()) {\n <input #uploadInput\n class=\"upload-input hidden\"\n type=\"file\"\n name=\"files[]\"\n multiple\n [accept]=\"accessFiles()\" />\n } @else {\n <input #uploadInput\n class=\"upload-input hidden\"\n type=\"file\"\n name=\"files[]\"\n [accept]=\"accessFiles()\" />\n }\n </div>\n }\n @if (messageError() && (multiple() || !showPopupUploadWhenHasFileAndModeSingle() || (!fileList().length && !multiple()))) {\n <div class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r\">\n {{ (messageError() || '') | translate:{ value: limitFile() } }}\n </div>\n }\n @if (configDownloadSampleFile()?.position === 'bottom' && configDownloadSampleFile();as configDownloadSampleFile) {\n <libs_ui-components-buttons-button [type]=\"'button-link-primary'\"\n [classLabel]=\"'libs-ui-font-h7m'\"\n [classInclude]=\"'!mt-[8px] !p-0'\"\n [classIconLeft]=\"'libs-ui-icon-attachment before:!text-[12px]'\"\n [label]=\"configDownloadSampleFile.title || ' '\"\n (moClick)=\"handlerDownloadSampleFile($event)\" />\n }\n </div>\n @if (fileList().length) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"relative w-full h-full px-[10px] libs-ui-components-inputs-upload-view-list {{ classIncludeFileContent() || '' }}\"\n [class.mt-[12px]]=\"multiple() || !showPopupUploadWhenHasFileAndModeSingle()\">\n <ng-content select=\"[label-file]\"></ng-content>\n @for (item of fileList(); track item(); let first = $first) {\n <div class=\"libs-ui-components-inputs-upload-view-list-item {{ classIncludeListItem() || '' }}\"\n [class.libs-ui-components-inputs-upload-file-full]=\"modeDisplayFile() === 'full'\"\n [class.libs-ui-components-inputs-upload-file-short]=\"modeDisplayFile() === 'short'\"\n [class.libs-ui-border-error-general]=\"item().error || (messageError() && showBorderErrorAllItemWhenError())\"\n [class.mt-0]=\"first && !multiple() && !showPopupUploadWhenHasFileAndModeSingle()\">\n\n <div class=\"flex w-full\">\n <div class=\"flex items-center\">\n @if (canSetAvatar() && item().type === 'image') {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [classIconLeft]=\"'!mr-0' + (item().isAvatar ? ' libs-ui-icon-check-circle-solid before:!text-[#00bc62]': ' libs-ui-icon-check-circle-outline') + ((disable() || readonly() || item().isUploading || !!item().error) ? ' libs-ui-disable' : '')\"\n [popover]=\"{config:{ content: item().isAvatar ? 'i18n_avatar' : 'i18n_choose_as_your_avatar', zIndex: zIndex()}}\"\n [classInclude]=\"'!mr-[12px] !p-0'\"\n [disable]=\"disable() || readonly() || item().isUploading || !!item().error\"\n (outClick)=\"handlerSetAvatar($event, item)\" />\n }\n </div>\n <div class=\"flex\"\n [class.w-[calc(100%-28px)]]=\"canSetAvatar()\"\n [class.w-full]=\"!canSetAvatar()\">\n @if (modeDisplayFile() === 'full') {\n <libs_ui-components-inputs-upload-avatar [disable]=\"disable() || readonly() \"\n [(item)]=\"item\"\n [showVideoDuration]=\"showVideoDuration()\"\n (outOpenPreview)=\"handlerOpenPreviewFile($event)\" />\n }\n <div class=\"relative w-full\">\n <div class=\"flex absolute w-full h-full flex-col\"\n [class.flex-col]=\"modeDisplayFile() === 'full'\"\n [class.justify-center]=\"modeDisplayFile() === 'full'\"\n [class.items-center]=\"modeDisplayFile() === 'short'\">\n <libs_ui-components-label class=\"flex w-full\"\n [labelLeft]=\"item().name\"\n [zIndexPopover]=\"zIndex() + 1\"\n [labelLeftClass]=\"'libs-ui-font-h6m ' + ((disable() || readonly() || item().isUploading || item().error) ? 'text-[#6a7383]' : 'text-[#071631]')\"\n [classInclude]=\"modeDisplayFile() === 'short' ? '!mb-0' : ''\" />\n\n @if (!ignoreShowSizeFile()) {\n <div class=\"text-[#9ca2ad] libs-ui-font-h7r shrink-0\"\n [class.flex]=\"modeDisplayFile() === 'full'\"\n [class.items-center]=\"modeDisplayFile() === 'short'\"\n [class.ml-[12px]]=\"modeDisplayFile() === 'short'\">\n {{ item().size }}\n </div>\n }\n </div>\n </div>\n @if (item().isUploading && item().percentUploading) {\n <div class=\"flex items-center ml-[16px]\"\n [class.mr-[26px]]=\"modeDisplayFile() === 'full'\">\n <div class=\"w-[120px] h-[4px] rounded-[4px] bg-[#f8f9fa] relative\">\n <div class=\"absolute top-0 left-0 h-[4px] rounded-[4px] bg-[#00bc62]\"\n [style.width.px]=\"(item().percentUploading ?? 0)*1.2\"></div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex ml-[16px]\">\n @if (!ignoreIconPreview()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-eye-outline !mr-0'\"\n [popover]=\"{config:{ content: 'i18n_preview', zIndex: zIndex()+1}}\"\n [classInclude]=\"'!p-0' + (ignoreIconRemove() && !ignoreIconEdit() ? '' : ' !mr-[12px]')\"\n [disable]=\"item().isUploading || disable() || readonly() \"\n (outClick)=\"handlerOpenPreviewFile(item())\" />\n }\n @if (item().type === 'image' && !item().error && !ignoreIconEdit()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-edit-line !mr-0'\"\n [popover]=\"{config:{ content: 'i18n_edit', zIndex: zIndex()+1}}\"\n [classInclude]=\"'!p-0' + (ignoreIconRemove() ? '' : ' !mr-[12px]')\"\n [disable]=\"item().isUploading || disable() || readonly() \"\n (outClick)=\"handlerEditImage($event, item)\" />\n }\n @if (!ignoreIconRemove()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [classIconLeft]=\"'libs-ui-icon-close !mr-0'\"\n [popover]=\"{config: {content: 'i18n_delete', zIndex: zIndex()+1}}\"\n [classInclude]=\"'!p-0'\"\n [disable]=\"item().isUploading || disable() || readonly() \"\n (outClick)=\"handlerRemoveFile($event, item)\" />\n }\n </div>\n </div>\n @if (item().error && (multiple() || showPopupUploadWhenHasFileAndModeSingle())) {\n <div class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r\">{{ (item().error || ' ') | translate }}</div>\n }\n }\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@libs-ui/components-inputs-upload",
3
- "version": "0.2.200",
3
+ "version": "0.2.203",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0",
7
- "@libs-ui/components-spinner": "^0.2.200",
8
- "@libs-ui/icons": "^0.2.200",
9
- "@libs-ui/interfaces-types": "^0.2.200",
10
- "@libs-ui/pipes-security-trust": "^0.2.200",
11
- "@libs-ui/utils": "^0.2.200",
7
+ "@libs-ui/components-spinner": "^0.2.203",
8
+ "@libs-ui/icons": "^0.2.203",
9
+ "@libs-ui/interfaces-types": "^0.2.203",
10
+ "@libs-ui/pipes-security-trust": "^0.2.203",
11
+ "@libs-ui/utils": "^0.2.203",
12
12
  "@ngx-translate/core": "^15.0.0",
13
- "@libs-ui/components-buttons-button": "^0.2.200",
14
- "@libs-ui/components-gallery": "^0.2.200",
15
- "@libs-ui/components-image-editor": "^0.2.200",
16
- "@libs-ui/components-label": "^0.2.200",
17
- "@libs-ui/components-preview-file": "^0.2.200",
18
- "@libs-ui/components-scroll-overlay": "^0.2.200",
19
- "@libs-ui/services-dynamic-component": "^0.2.200",
20
- "@libs-ui/services-notification": "^0.2.200",
13
+ "@libs-ui/components-buttons-button": "^0.2.203",
14
+ "@libs-ui/components-gallery": "^0.2.203",
15
+ "@libs-ui/components-image-editor": "^0.2.203",
16
+ "@libs-ui/components-label": "^0.2.203",
17
+ "@libs-ui/components-preview-file": "^0.2.203",
18
+ "@libs-ui/components-scroll-overlay": "^0.2.203",
19
+ "@libs-ui/services-dynamic-component": "^0.2.203",
20
+ "@libs-ui/services-notification": "^0.2.203",
21
21
  "rxjs": "~7.8.0"
22
22
  },
23
23
  "sideEffects": false,