@libs-ui/components-inputs-upload 0.2.30-6.1

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.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # inputs-upload
2
+
3
+ This library was generated with [Nx](https://nx.dev).
@@ -0,0 +1,15 @@
1
+ import { IFile } from "@libs-ui/interfaces-types";
2
+ import * as i0 from "@angular/core";
3
+ export declare class LibsUiComponentsInputsUploadAvatarComponent {
4
+ private linkImageError;
5
+ readonly item: import("@angular/core").ModelSignal<IFile>;
6
+ readonly showVideoDuration: import("@angular/core").InputSignal<boolean | undefined>;
7
+ readonly disable: import("@angular/core").InputSignal<boolean | undefined>;
8
+ readonly size: import("@angular/core").InputSignal<number | undefined>;
9
+ readonly outOpenPreview: import("@angular/core").OutputEmitterRef<IFile>;
10
+ constructor(linkImageError: string);
11
+ protected handlerImageError(event: Event): Promise<void>;
12
+ protected handlerImageClick(event: Event): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsInputsUploadAvatarComponent, [{ optional: true; }]>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsInputsUploadAvatarComponent, "libs_ui-components-inputs-upload-avatar", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "showVideoDuration": { "alias": "showVideoDuration"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "item": "itemChange"; "outOpenPreview": "outOpenPreview"; }, never, never, true, never>;
15
+ }
@@ -0,0 +1,2 @@
1
+ import { IUploadDescriptionFormatAndSizeFile, TYPE_FILE_UPLOAD } from '../interfaces/upload.interface';
2
+ export declare const getDescriptionFormatAndSizeFileDefault: (type: TYPE_FILE_UPLOAD, maxImageSize: number, maxVideoSize: number, maxDocumentSize: number, maxAudioSize: number) => IUploadDescriptionFormatAndSizeFile[];
@@ -0,0 +1,50 @@
1
+ import { AsyncPipe, NgComponentOutlet } from "@angular/common";
2
+ import { ChangeDetectionStrategy, Component, Inject, input, model, Optional, output } from "@angular/core";
3
+ import { LibsUiComponentsSpinnerComponent } from "@libs-ui/components-spinner";
4
+ import { LibsUiIconsGetIconComponentPipe } from "@libs-ui/icons";
5
+ import { LibsUiPipesSecurityTrustPipe } from "@libs-ui/pipes-security-trust";
6
+ import { LINK_IMAGE_ERROR_TOKEN_INJECT } from "@libs-ui/utils";
7
+ import { TranslateModule } from "@ngx-translate/core";
8
+ import { LibsUiPipesInputsUploadCalcDurationVideoPipe } from "../pipes/calc-duration-video.pipe";
9
+ import { LibsUiPipesInputsUploadCheckFileExtensionPipe } from "../pipes/check-file-extension.pipe";
10
+ import * as i0 from "@angular/core";
11
+ export class LibsUiComponentsInputsUploadAvatarComponent {
12
+ linkImageError;
13
+ item = model.required();
14
+ showVideoDuration = input();
15
+ disable = input();
16
+ size = input();
17
+ outOpenPreview = output();
18
+ constructor(linkImageError) {
19
+ this.linkImageError = linkImageError;
20
+ }
21
+ async handlerImageError(event) {
22
+ if (!this.linkImageError) {
23
+ return;
24
+ }
25
+ event.target.src = this.linkImageError;
26
+ }
27
+ handlerImageClick(event) {
28
+ event.stopPropagation();
29
+ this.outOpenPreview.emit(this.item());
30
+ }
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.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
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsUploadAvatarComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'libs_ui-components-inputs-upload-avatar', standalone: true, imports: [
37
+ NgComponentOutlet, AsyncPipe, TranslateModule,
38
+ LibsUiComponentsSpinnerComponent,
39
+ LibsUiPipesSecurityTrustPipe,
40
+ LibsUiPipesInputsUploadCalcDurationVideoPipe,
41
+ LibsUiPipesInputsUploadCheckFileExtensionPipe,
42
+ LibsUiIconsGetIconComponentPipe,
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
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
45
+ type: Optional
46
+ }, {
47
+ type: Inject,
48
+ args: [LINK_IMAGE_ERROR_TOKEN_INJECT]
49
+ }] }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvdXBsb2FkL3NyYy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvdXBsb2FkL3NyYy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQWlCbkcsTUFBTSxPQUFPLDJDQUEyQztJQU9pQjtJQU45RCxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBUyxDQUFDO0lBQy9CLGlCQUFpQixHQUFHLEtBQUssRUFBVyxDQUFDO0lBQ3JDLE9BQU8sR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUMzQixJQUFJLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDdkIsY0FBYyxHQUFHLE1BQU0sRUFBUyxDQUFDO0lBRTFDLFlBQXVFLGNBQXNCO1FBQXRCLG1CQUFjLEdBQWQsY0FBYyxDQUFRO0lBQzdGLENBQUM7SUFFUyxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBWTtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBQ0EsS0FBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDckQsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQVk7UUFDdEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7d0dBcEJVLDJDQUEyQyxrQkFPdEIsNkJBQTZCOzRGQVBsRCwyQ0FBMkMscXJCQzFCeEQseWdHQW9FQSw0Q0RuREksaUJBQWlCLCtPQUFFLFNBQVMsNkNBQUUsZUFBZSwrQkFDN0MsZ0NBQWdDLDRGQUNoQyw0QkFBNEIsZ0VBQzVCLDRDQUE0QyxnRkFDNUMsNkNBQTZDLGlGQUM3QywrQkFBK0I7OzRGQUl0QiwyQ0FBMkM7a0JBZnZELFNBQVM7K0JBRUUseUNBQXlDLGNBRXZDLElBQUksV0FDUDt3QkFDUCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZUFBZTt3QkFDN0MsZ0NBQWdDO3dCQUNoQyw0QkFBNEI7d0JBQzVCLDRDQUE0Qzt3QkFDNUMsNkNBQTZDO3dCQUM3QywrQkFBK0I7cUJBQ2hDLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFTbEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBpbnB1dCwgbW9kZWwsIE9wdGlvbmFsLCBvdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1NwaW5uZXJDb21wb25lbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1zcGlubmVyXCI7XG5pbXBvcnQgeyBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlIH0gZnJvbSBcIkBsaWJzLXVpL2ljb25zXCI7XG5pbXBvcnQgeyBJRXZlbnQsIElGaWxlIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcbmltcG9ydCB7IExpYnNVaVBpcGVzU2VjdXJpdHlUcnVzdFBpcGUgfSBmcm9tIFwiQGxpYnMtdWkvcGlwZXMtc2VjdXJpdHktdHJ1c3RcIjtcbmltcG9ydCB7IExJTktfSU1BR0VfRVJST1JfVE9LRU5fSU5KRUNUIH0gZnJvbSBcIkBsaWJzLXVpL3V0aWxzXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDYWxjRHVyYXRpb25WaWRlb1BpcGUgfSBmcm9tIFwiLi4vcGlwZXMvY2FsYy1kdXJhdGlvbi12aWRlby5waXBlXCI7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0lucHV0c1VwbG9hZENoZWNrRmlsZUV4dGVuc2lvblBpcGUgfSBmcm9tIFwiLi4vcGlwZXMvY2hlY2stZmlsZS1leHRlbnNpb24ucGlwZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLXVwbG9hZC1hdmF0YXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYXZhdGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ29tcG9uZW50T3V0bGV0LCBBc3luY1BpcGUsIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCxcbiAgICBMaWJzVWlQaXBlc1NlY3VyaXR5VHJ1c3RQaXBlLFxuICAgIExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2FsY0R1cmF0aW9uVmlkZW9QaXBlLFxuICAgIExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZSxcbiAgICBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzSW5wdXRzVXBsb2FkQXZhdGFyQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgaXRlbSA9IG1vZGVsLnJlcXVpcmVkPElGaWxlPigpO1xuICByZWFkb25seSBzaG93VmlkZW9EdXJhdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBzaXplID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBvdXRPcGVuUHJldmlldyA9IG91dHB1dDxJRmlsZT4oKTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KExJTktfSU1BR0VfRVJST1JfVE9LRU5fSU5KRUNUKSBwcml2YXRlIGxpbmtJbWFnZUVycm9yOiBzdHJpbmcpIHtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVySW1hZ2VFcnJvcihldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubGlua0ltYWdlRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgKGV2ZW50IGFzIElFdmVudCkudGFyZ2V0LnNyYyA9IHRoaXMubGlua0ltYWdlRXJyb3I7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckltYWdlQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5vdXRPcGVuUHJldmlldy5lbWl0KHRoaXMuaXRlbSgpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggbXItWzEycHhdIGJnLVsjZmZmZmZmXSByb3VuZGVkLVs0cHhdXCJcbiAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJkaXNhYmxlKCkgfHwgaXRlbSgpLmlzVXBsb2FkaW5nIHx8IGl0ZW0oKS5lcnJvclwiPlxuICBAaWYgKGl0ZW0oKSB8IExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZTonaW1hZ2UnKSB7XG4gICAgPGRpdiBbc3R5bGUud2lkdGgucHhdPVwic2l6ZSgpIHx8IDMyXCJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwic2l6ZSgpIHx8IDMyXCJcbiAgICAgIGNsYXNzPVwicmVsYXRpdmVcIj5cbiAgICAgIEBpZiAoaXRlbSgpLnVybCB8fCBpdGVtKCkub3JpZ2luX3VybDsgYXMgdXJsKSB7XG4gICAgICAgIDxpbWcgW3NyY109XCJ1cmxcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJzaXplKCkgfHwgMzJcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwic2l6ZSgpIHx8IDMyXCJcbiAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtWzRweF0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgIGFsdFxuICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVySW1hZ2VFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckltYWdlQ2xpY2soJGV2ZW50KVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1zcGlubmVyIFtzaXplXT1cIidtZWRpdW0nXCIgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuICBAZWxzZSBpZiAoaXRlbSgpIHwgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDaGVja0ZpbGVFeHRlbnNpb25QaXBlOid2aWRlbycpIHtcbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInNpemUoKSB8fCAzMlwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInNpemUoKSB8fCAzMlwiPlxuICAgICAgQGlmIChpdGVtKCkudXJsIHx8IGl0ZW0oKS5vcmlnaW5fdXJsKSB7XG4gICAgICAgIDx2aWRlbyAjdmlkZW9SZWZcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwic2l6ZSB8fCAzMlwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJzaXplIHx8IDMyXCJcbiAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtWzRweF1cIlxuICAgICAgICAgIHByZWxvYWQ9XCJtZXRhZGF0YVwiXG4gICAgICAgICAgW3NyY109XCIoaXRlbSgpLnVybCB8fCBpdGVtKCkub3JpZ2luX3VybCB8fCAnJykgfCBMaWJzVWlQaXBlc1NlY3VyaXR5VHJ1c3RQaXBlOidyZXNvdXJjZVVybCdcIj48L3ZpZGVvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdy1mdWxsIGgtZnVsbCB0b3AtMCBiZy1bIzAwMTQzM10gb3BhY2l0eS00MCByb3VuZGVkLVs0cHhdXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdy1mdWxsIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0b3AtMFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwidGV4dC1bI2ZmZmZmZl0gbGlicy11aS1pY29uLXBsYXktc29saWQgYmVmb3JlOiF0ZXh0LVsxMHB4XVwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoc2hvd1ZpZGVvRHVyYXRpb24oKSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCB0ZXh0LVs1cHhdIGFic29sdXRlIGJvdHRvbS0wIHJpZ2h0LTAgcHktWzJweF0gcHgtWzRweF0gcm91bmRlZC1bNHB4XSBiZy1bIzAwMDAwMF0gdGV4dC1bI2ZmZmZmZl1cIj5cbiAgICAgICAgICAgIHt7IHZpZGVvUmVmLmR1cmF0aW9uIHwgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDYWxjRHVyYXRpb25WaWRlb1BpcGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtc3Bpbm5lciBbc2l6ZV09XCInbWVkaXVtJ1wiIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbiAgQGVsc2UgaWYgKGl0ZW0oKSB8IExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZToncGRmJykge1xuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiJ3BkZid8TGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZXxhc3luY1wiIC8+XG4gIH1cbiAgQGVsc2UgaWYgKGl0ZW0oKSB8IExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2hlY2tGaWxlRXh0ZW5zaW9uUGlwZTond29yZCcpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cIid3b3JkJ3xMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlfGFzeW5jXCIgLz5cbiAgfVxuICBAZWxzZSBpZiAoaXRlbSgpIHwgTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDaGVja0ZpbGVFeHRlbnNpb25QaXBlOidwcHR4Jykge1xuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiJ3BwdHgnfExpYnNVaUljb25zR2V0SWNvbkNvbXBvbmVudFBpcGV8YXN5bmNcIiAvPlxuICB9XG4gIEBlbHNlIGlmIChpdGVtKCkgfCBMaWJzVWlQaXBlc0lucHV0c1VwbG9hZENoZWNrRmlsZUV4dGVuc2lvblBpcGU6J3hsc3gnKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCIneGxzeCd8TGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZXxhc3luY1wiIC8+XG4gIH1cbiAgQGVsc2Uge1xuICAgIDxkaXYgW3N0eWxlLndpZHRoLnB4XT1cInNpemUoKSB8fCAzMlwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInNpemUoKSB8fCAzMlwiXG4gICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8aSBjbGFzcz1cImxpYnMtdWktaWNvbi1maWxlIGJlZm9yZTohdGV4dC1bMTlweF1cIlxuICAgICAgICBbY2xhc3MudGV4dC1bIzZhNzM4M11dPVwiIWl0ZW0oKS5pc1VwbG9hZGluZyAmJiAhaXRlbSgpLmVycm9yXCJcbiAgICAgICAgW2NsYXNzLnRleHQtWyMwNzE2MzFdXT1cImRpc2FibGUoKSB8fCBpdGVtKCkuaXNVcGxvYWRpbmcgfHwgaXRlbSgpLmVycm9yXCI+PC9pPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,35 @@
1
+ import { getLabelBySizeFile } from '@libs-ui/utils';
2
+ export const getDescriptionFormatAndSizeFileDefault = (type, maxImageSize, maxVideoSize, maxDocumentSize, maxAudioSize) => {
3
+ const image = {
4
+ message: 'i18n_note_upload_image_volume',
5
+ interpolateParams: { value: getLabelBySizeFile(maxImageSize, 0) }
6
+ };
7
+ const video = {
8
+ message: 'i18n_note_upload_video_volume',
9
+ interpolateParams: { value: getLabelBySizeFile(maxVideoSize, 0) }
10
+ };
11
+ const document = {
12
+ message: 'i18n_note_upload_file_volume',
13
+ interpolateParams: { value: getLabelBySizeFile(maxDocumentSize, 0) }
14
+ };
15
+ const audio = {
16
+ message: 'i18n_note_upload_audio_volume',
17
+ interpolateParams: { value: getLabelBySizeFile(maxAudioSize, 0) }
18
+ };
19
+ const typeSplit = type.split('_');
20
+ const description = [];
21
+ if (typeSplit.includes('image')) {
22
+ description.push(image);
23
+ }
24
+ if (typeSplit.includes('audio')) {
25
+ description.push(audio);
26
+ }
27
+ if (typeSplit.includes('video')) {
28
+ description.push(video);
29
+ }
30
+ if (typeSplit.includes('document')) {
31
+ description.push(document);
32
+ }
33
+ return description;
34
+ };
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmRlZmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvdXBsb2FkL3NyYy9kZWZpbmVzL2hlbHBlci5kZWZpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEQsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsQ0FBQyxJQUFzQixFQUFFLFlBQW9CLEVBQUUsWUFBb0IsRUFBRSxlQUF1QixFQUFFLFlBQW9CLEVBQXlDLEVBQUU7SUFDak4sTUFBTSxLQUFLLEdBQUc7UUFDWixPQUFPLEVBQUUsK0JBQStCO1FBQ3hDLGlCQUFpQixFQUFFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRTtLQUNsRSxDQUFDO0lBQ0YsTUFBTSxLQUFLLEdBQUc7UUFDWixPQUFPLEVBQUUsK0JBQStCO1FBQ3hDLGlCQUFpQixFQUFFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRTtLQUNsRSxDQUFDO0lBQ0YsTUFBTSxRQUFRLEdBQUc7UUFDZixPQUFPLEVBQUUsOEJBQThCO1FBQ3ZDLGlCQUFpQixFQUFFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsRUFBRTtLQUNyRSxDQUFDO0lBQ0YsTUFBTSxLQUFLLEdBQUc7UUFDWixPQUFPLEVBQUUsK0JBQStCO1FBQ3hDLGlCQUFpQixFQUFFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRTtLQUNsRSxDQUFDO0lBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFFdkIsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDaEMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDaEMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDaEMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDbkMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TGFiZWxCeVNpemVGaWxlIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgSVVwbG9hZERlc2NyaXB0aW9uRm9ybWF0QW5kU2l6ZUZpbGUsIFRZUEVfRklMRV9VUExPQUQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3VwbG9hZC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgZ2V0RGVzY3JpcHRpb25Gb3JtYXRBbmRTaXplRmlsZURlZmF1bHQgPSAodHlwZTogVFlQRV9GSUxFX1VQTE9BRCwgbWF4SW1hZ2VTaXplOiBudW1iZXIsIG1heFZpZGVvU2l6ZTogbnVtYmVyLCBtYXhEb2N1bWVudFNpemU6IG51bWJlciwgbWF4QXVkaW9TaXplOiBudW1iZXIpOiBJVXBsb2FkRGVzY3JpcHRpb25Gb3JtYXRBbmRTaXplRmlsZVtdID0+IHtcbiAgY29uc3QgaW1hZ2UgPSB7XG4gICAgbWVzc2FnZTogJ2kxOG5fbm90ZV91cGxvYWRfaW1hZ2Vfdm9sdW1lJyxcbiAgICBpbnRlcnBvbGF0ZVBhcmFtczogeyB2YWx1ZTogZ2V0TGFiZWxCeVNpemVGaWxlKG1heEltYWdlU2l6ZSwgMCkgfVxuICB9O1xuICBjb25zdCB2aWRlbyA9IHtcbiAgICBtZXNzYWdlOiAnaTE4bl9ub3RlX3VwbG9hZF92aWRlb192b2x1bWUnLFxuICAgIGludGVycG9sYXRlUGFyYW1zOiB7IHZhbHVlOiBnZXRMYWJlbEJ5U2l6ZUZpbGUobWF4VmlkZW9TaXplLCAwKSB9XG4gIH07XG4gIGNvbnN0IGRvY3VtZW50ID0ge1xuICAgIG1lc3NhZ2U6ICdpMThuX25vdGVfdXBsb2FkX2ZpbGVfdm9sdW1lJyxcbiAgICBpbnRlcnBvbGF0ZVBhcmFtczogeyB2YWx1ZTogZ2V0TGFiZWxCeVNpemVGaWxlKG1heERvY3VtZW50U2l6ZSwgMCkgfVxuICB9O1xuICBjb25zdCBhdWRpbyA9IHtcbiAgICBtZXNzYWdlOiAnaTE4bl9ub3RlX3VwbG9hZF9hdWRpb192b2x1bWUnLFxuICAgIGludGVycG9sYXRlUGFyYW1zOiB7IHZhbHVlOiBnZXRMYWJlbEJ5U2l6ZUZpbGUobWF4QXVkaW9TaXplLCAwKSB9XG4gIH07XG5cbiAgY29uc3QgdHlwZVNwbGl0ID0gdHlwZS5zcGxpdCgnXycpO1xuICBjb25zdCBkZXNjcmlwdGlvbiA9IFtdO1xuXG4gIGlmICh0eXBlU3BsaXQuaW5jbHVkZXMoJ2ltYWdlJykpIHtcbiAgICBkZXNjcmlwdGlvbi5wdXNoKGltYWdlKTtcbiAgfVxuICBpZiAodHlwZVNwbGl0LmluY2x1ZGVzKCdhdWRpbycpKSB7XG4gICAgZGVzY3JpcHRpb24ucHVzaChhdWRpbyk7XG4gIH1cbiAgaWYgKHR5cGVTcGxpdC5pbmNsdWRlcygndmlkZW8nKSkge1xuICAgIGRlc2NyaXB0aW9uLnB1c2godmlkZW8pO1xuICB9XG4gIGlmICh0eXBlU3BsaXQuaW5jbHVkZXMoJ2RvY3VtZW50JykpIHtcbiAgICBkZXNjcmlwdGlvbi5wdXNoKGRvY3VtZW50KTtcbiAgfVxuXG4gIHJldHVybiBkZXNjcmlwdGlvbjtcbn07Il19
@@ -0,0 +1,6 @@
1
+ export * from './upload.component';
2
+ export * from './avatar/avatar.component';
3
+ export * from './interfaces/upload.interface';
4
+ export * from './upload-file.directive';
5
+ export * from './upload-drop-file.directive';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3VwbG9hZC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi91cGxvYWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL3VwbG9hZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi91cGxvYWQtZmlsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi91cGxvYWQtZHJvcC1maWxlLmRpcmVjdGl2ZSc7Il19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvdXBsb2FkL3NyYy9pbnRlcmZhY2VzL3VwbG9hZC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRZUEVfT0JKRUNULCBJSHR0cFByb2Nlc3NVcGxvYWQsIElGaWxlIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFRZUEVfTU9ERV9GSUxFX0RJU1BMQVkgPSAnZnVsbCcgfCAnc2hvcnQnO1xuZXhwb3J0IHR5cGUgVFlQRV9GSUxFX1VQTE9BRCA9ICdkb2N1bWVudCcgfCAnaW1hZ2UnIHwgJ3ZpZGVvJyB8ICdhdWRpbycgfCAnaW1hZ2VfZG9jdW1lbnQnIHwgJ2ltYWdlX3ZpZGVvJyB8ICdpbWFnZV9hdWRpbycgfCAnZG9jdW1lbnRfYXVkaW8nIHwgJ3ZpZGVvX2F1ZGlvJyB8ICdpbWFnZV9kb2N1bWVudF9hdWRpbycgfCAnaW1hZ2VfdmlkZW9fYXVkaW8nIHwgJ2RvY3VtZW50X3ZpZGVvX2F1ZGlvJyB8ICdpbWFnZV92aWRlb19kb2N1bWVudCcgfCAnaW1hZ2VfYXVkaW9fdmlkZW9fZG9jdW1lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElVcGxvYWREZXNjcmlwdGlvbkZvcm1hdEFuZFNpemVGaWxlIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBpbnRlcnBvbGF0ZVBhcmFtcz86IFRZUEVfT0JKRUNUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGaWxlQ2hhbmdlIHtcbiAgZmlsZXM6IEFycmF5PElGaWxlPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVVwbG9hZENvbmZpZ0Rvd25sb2FkU2FtcGxlRmlsZSB7XG4gIHBvc2l0aW9uPzogJ3RvcCcgfCAnYm90dG9tJztcbiAgdGl0bGU6IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICBjbGFzc0xhYmVsPzogc3RyaW5nLFxuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG4gIGNsYXNzSWNvbkxlZnRJbmNsdWRlPzogc3RyaW5nO1xuICBjYWxsQmFjaz86ICgpID0+IHZvaWQ7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBJVXBsb2FkRnVuY3Rpb25Db250cm9sRXZlbnQge1xuICBjaGVja0lzVmFsaWQ6ICgpID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIHJlbW92ZUFsbDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgdXBsb2FkaW5nOiAocHJvY2VzczogSUh0dHBQcm9jZXNzVXBsb2FkLCBpZDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBzZXRNZXNzYWdlRXJyb3I6IChtZXNzYWdlOiBzdHJpbmcsIGlkPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBoYW5kbGVyVXBsb2FkRmlsZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxufSJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1jb21wb25lbnRzLWlucHV0cy11cGxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3VwbG9hZC9zcmMvbGlicy11aS1jb21wb25lbnRzLWlucHV0cy11cGxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class LibsUiPipesInputsUploadCalcDurationVideoPipe {
4
+ transform(duration) {
5
+ if (!duration) {
6
+ return '0:0';
7
+ }
8
+ duration = Math.round(duration);
9
+ if (duration >= 3600) {
10
+ const hour = Math.floor(duration / 3600);
11
+ const minute = Math.floor((duration - (hour * 3600)) / 60);
12
+ const second = duration - (hour * 3600 + minute * 60);
13
+ return `${hour}:${minute < 10 ? `0${minute}` : minute}:${second < 10 ? `0${second}` : second}`;
14
+ }
15
+ if (duration >= 60) {
16
+ const minute = Math.floor(duration / 60);
17
+ const second = duration - (minute * 60);
18
+ return `${minute}:${second < 10 ? `0${second}` : second}`;
19
+ }
20
+ return `0:${duration}`;
21
+ }
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiPipesInputsUploadCalcDurationVideoPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
23
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LibsUiPipesInputsUploadCalcDurationVideoPipe, isStandalone: true, name: "LibsUiPipesInputsUploadCalcDurationVideoPipe" });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiPipesInputsUploadCalcDurationVideoPipe, decorators: [{
26
+ type: Pipe,
27
+ args: [{
28
+ name: 'LibsUiPipesInputsUploadCalcDurationVideoPipe',
29
+ standalone: true
30
+ }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsYy1kdXJhdGlvbi12aWRlby5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy91cGxvYWQvc3JjL3BpcGVzL2NhbGMtZHVyYXRpb24tdmlkZW8ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLDRDQUE0QztJQUV2RCxTQUFTLENBQUMsUUFBZ0I7UUFDeEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzNELE1BQU0sTUFBTSxHQUFHLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBRXRELE9BQU8sR0FBRyxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pHLENBQUM7UUFDRCxJQUFJLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN6QyxNQUFNLE1BQU0sR0FBRyxRQUFRLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFeEMsT0FBTyxHQUFHLE1BQU0sSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1RCxDQUFDO1FBRUQsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7d0dBdEJVLDRDQUE0QztzR0FBNUMsNENBQTRDOzs0RkFBNUMsNENBQTRDO2tCQUp4RCxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSw4Q0FBOEM7b0JBQ3BELFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDYWxjRHVyYXRpb25WaWRlb1BpcGUnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaVBpcGVzSW5wdXRzVXBsb2FkQ2FsY0R1cmF0aW9uVmlkZW9QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKGR1cmF0aW9uOiBudW1iZXIpIHtcbiAgICBpZiAoIWR1cmF0aW9uKSB7XG4gICAgICByZXR1cm4gJzA6MCc7XG4gICAgfVxuICAgIGR1cmF0aW9uID0gTWF0aC5yb3VuZChkdXJhdGlvbik7XG4gICAgaWYgKGR1cmF0aW9uID49IDM2MDApIHtcbiAgICAgIGNvbnN0IGhvdXIgPSBNYXRoLmZsb29yKGR1cmF0aW9uIC8gMzYwMCk7XG4gICAgICBjb25zdCBtaW51dGUgPSBNYXRoLmZsb29yKChkdXJhdGlvbiAtIChob3VyICogMzYwMCkpIC8gNjApO1xuICAgICAgY29uc3Qgc2Vjb25kID0gZHVyYXRpb24gLSAoaG91ciAqIDM2MDAgKyBtaW51dGUgKiA2MCk7XG5cbiAgICAgIHJldHVybiBgJHtob3VyfToke21pbnV0ZSA8IDEwID8gYDAke21pbnV0ZX1gIDogbWludXRlfToke3NlY29uZCA8IDEwID8gYDAke3NlY29uZH1gIDogc2Vjb25kfWA7XG4gICAgfVxuICAgIGlmIChkdXJhdGlvbiA+PSA2MCkge1xuICAgICAgY29uc3QgbWludXRlID0gTWF0aC5mbG9vcihkdXJhdGlvbiAvIDYwKTtcbiAgICAgIGNvbnN0IHNlY29uZCA9IGR1cmF0aW9uIC0gKG1pbnV0ZSAqIDYwKTtcblxuICAgICAgcmV0dXJuIGAke21pbnV0ZX06JHtzZWNvbmQgPCAxMCA/IGAwJHtzZWNvbmR9YCA6IHNlY29uZH1gO1xuICAgIH1cblxuICAgIHJldHVybiBgMDoke2R1cmF0aW9ufWA7XG4gIH1cblxufVxuIl19
@@ -0,0 +1,37 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { DocumentExtList, getFileExtension, ImageExtList, VideoExtList } from '@libs-ui/utils';
3
+ import * as i0 from "@angular/core";
4
+ export class LibsUiPipesInputsUploadCheckFileExtensionPipe {
5
+ transform(file, type) {
6
+ const fileExtension = getFileExtension(file);
7
+ if (!fileExtension) {
8
+ return false;
9
+ }
10
+ switch (type) {
11
+ case 'image':
12
+ return ImageExtList.includes(fileExtension);
13
+ case 'video':
14
+ return VideoExtList.includes(fileExtension);
15
+ case 'word':
16
+ return ['doc', 'docx', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'].includes(fileExtension);
17
+ case 'xlsx':
18
+ return ['xls', 'xlsx', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'].includes(fileExtension);
19
+ case 'pdf':
20
+ return ['pdf', 'application/pdf'].includes(fileExtension);
21
+ case 'pptx':
22
+ return ['ppt', 'pptx', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'].includes(fileExtension);
23
+ case 'other':
24
+ return ![...ImageExtList, ...VideoExtList, ...DocumentExtList].includes(fileExtension);
25
+ }
26
+ }
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiPipesInputsUploadCheckFileExtensionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
28
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LibsUiPipesInputsUploadCheckFileExtensionPipe, isStandalone: true, name: "LibsUiPipesInputsUploadCheckFileExtensionPipe" });
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiPipesInputsUploadCheckFileExtensionPipe, decorators: [{
31
+ type: Pipe,
32
+ args: [{
33
+ name: 'LibsUiPipesInputsUploadCheckFileExtensionPipe',
34
+ standalone: true
35
+ }]
36
+ }] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stZmlsZS1leHRlbnNpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvdXBsb2FkL3NyYy9waXBlcy9jaGVjay1maWxlLWV4dGVuc2lvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQU0vRixNQUFNLE9BQU8sNkNBQTZDO0lBRXhELFNBQVMsQ0FBQyxJQUFXLEVBQUUsSUFBb0U7UUFDekYsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLE9BQU87Z0JBRVYsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTlDLEtBQUssT0FBTztnQkFFVixPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFOUMsS0FBSyxNQUFNO2dCQUNULE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLHlFQUF5RSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBRWpKLEtBQUssTUFBTTtnQkFDVCxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSwwQkFBMEIsRUFBRSxtRUFBbUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUVqSixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUUzRCxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsK0JBQStCLEVBQUUsMkVBQTJFLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUE7WUFFOUosS0FBSyxPQUFPO2dCQUNWLE9BQU8sQ0FBQyxDQUFDLEdBQUcsWUFBWSxFQUFFLEdBQUcsWUFBWSxFQUFFLEdBQUcsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNGLENBQUM7SUFDSCxDQUFDO3dHQWhDVSw2Q0FBNkM7c0dBQTdDLDZDQUE2Qzs7NEZBQTdDLDZDQUE2QztrQkFKekQsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsK0NBQStDO29CQUNyRCxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRmlsZSB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgRG9jdW1lbnRFeHRMaXN0LCBnZXRGaWxlRXh0ZW5zaW9uLCBJbWFnZUV4dExpc3QsIFZpZGVvRXh0TGlzdCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcblxuQFBpcGUoe1xuICBuYW1lOiAnTGlic1VpUGlwZXNJbnB1dHNVcGxvYWRDaGVja0ZpbGVFeHRlbnNpb25QaXBlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlQaXBlc0lucHV0c1VwbG9hZENoZWNrRmlsZUV4dGVuc2lvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICB0cmFuc2Zvcm0oZmlsZTogSUZpbGUsIHR5cGU6ICdpbWFnZScgfCAndmlkZW8nIHwgJ3dvcmQnIHwgJ3hsc3gnIHwgJ3BkZicgfCAncHB0eCcgfCAnb3RoZXInKSB7XG4gICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGdldEZpbGVFeHRlbnNpb24oZmlsZSk7XG5cbiAgICBpZiAoIWZpbGVFeHRlbnNpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdpbWFnZSc6XG5cbiAgICAgICAgcmV0dXJuIEltYWdlRXh0TGlzdC5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uKTtcblxuICAgICAgY2FzZSAndmlkZW8nOlxuXG4gICAgICAgIHJldHVybiBWaWRlb0V4dExpc3QuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbik7XG5cbiAgICAgIGNhc2UgJ3dvcmQnOlxuICAgICAgICByZXR1cm4gWydkb2MnLCAnZG9jeCcsICdhcHBsaWNhdGlvbi9tc3dvcmQnLCAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnXS5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uKVxuXG4gICAgICBjYXNlICd4bHN4JzpcbiAgICAgICAgcmV0dXJuIFsneGxzJywgJ3hsc3gnLCAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0J10uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbilcblxuICAgICAgY2FzZSAncGRmJzpcbiAgICAgICAgcmV0dXJuIFsncGRmJywgJ2FwcGxpY2F0aW9uL3BkZiddLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pXG5cbiAgICAgIGNhc2UgJ3BwdHgnOlxuICAgICAgICByZXR1cm4gWydwcHQnLCAncHB0eCcsICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJ10uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbilcblxuICAgICAgY2FzZSAnb3RoZXInOlxuICAgICAgICByZXR1cm4gIVsuLi5JbWFnZUV4dExpc3QsIC4uLlZpZGVvRXh0TGlzdCwgLi4uRG9jdW1lbnRFeHRMaXN0XS5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uKTtcbiAgICB9XG4gIH1cblxufVxuIl19
@@ -0,0 +1,62 @@
1
+ import { Directive, ElementRef, input, output } from '@angular/core';
2
+ import { checkMouseOverInContainer, isTypeFile } from '@libs-ui/utils';
3
+ import { fromEvent, Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ export class LibsUiComponentsInputsUploadDropFileDirective {
7
+ elementRef;
8
+ onDestroy = new Subject();
9
+ multiple = input(true, { transform: (value) => value ?? true });
10
+ outDragOver = output();
11
+ outDragLeave = output();
12
+ outDrop = output();
13
+ outDropFiles = output();
14
+ outDropFile = output();
15
+ constructor(elementRef) {
16
+ this.elementRef = elementRef;
17
+ }
18
+ ngAfterViewInit() {
19
+ fromEvent(this.elementRef.nativeElement, 'dragover').pipe(takeUntil(this.onDestroy)).subscribe((e) => {
20
+ e.stopPropagation();
21
+ e.preventDefault();
22
+ this.outDragOver.emit(e);
23
+ });
24
+ fromEvent(this.elementRef.nativeElement, 'dragleave').pipe(takeUntil(this.onDestroy)).subscribe((e) => {
25
+ e.stopPropagation();
26
+ e.preventDefault();
27
+ if (checkMouseOverInContainer(e, this.elementRef.nativeElement)) {
28
+ return;
29
+ }
30
+ this.outDragLeave.emit(e);
31
+ });
32
+ fromEvent(this.elementRef.nativeElement, 'drop').pipe(takeUntil(this.onDestroy)).subscribe((e) => {
33
+ e.stopPropagation();
34
+ e.preventDefault();
35
+ this.outDrop.emit(e);
36
+ const fileList = Array.from(e.dataTransfer?.files || e.clipboardData?.files || []).filter(isTypeFile);
37
+ if (!fileList || !fileList.length) {
38
+ return;
39
+ }
40
+ if (this.multiple()) {
41
+ this.outDropFiles.emit(fileList);
42
+ return;
43
+ }
44
+ this.outDropFile.emit(fileList[0]);
45
+ });
46
+ }
47
+ ngOnDestroy() {
48
+ this.onDestroy.next();
49
+ this.onDestroy.complete();
50
+ }
51
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsUploadDropFileDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
52
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: LibsUiComponentsInputsUploadDropFileDirective, isStandalone: true, selector: "[LibsUiComponentsInputsUploadDropFileDirective]", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outDragOver: "outDragOver", outDragLeave: "outDragLeave", outDrop: "outDrop", outDropFiles: "outDropFiles", outDropFile: "outDropFile" }, ngImport: i0 });
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsUploadDropFileDirective, decorators: [{
55
+ type: Directive,
56
+ args: [{
57
+ // eslint-disable-next-line @angular-eslint/directive-selector
58
+ selector: '[LibsUiComponentsInputsUploadDropFileDirective]',
59
+ standalone: true
60
+ }]
61
+ }], ctorParameters: () => [{ type: i0.ElementRef }] });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWRyb3AtZmlsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3VwbG9hZC9zcmMvdXBsb2FkLWRyb3AtZmlsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLDZDQUE2QztJQWE5QztJQVhGLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRS9CLFFBQVEsR0FBRyxLQUFLLENBQStCLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFFOUYsV0FBVyxHQUFHLE1BQU0sRUFBVSxDQUFDO0lBQy9CLFlBQVksR0FBRyxNQUFNLEVBQVUsQ0FBQztJQUNoQyxPQUFPLEdBQUcsTUFBTSxFQUFVLENBQUM7SUFDM0IsWUFBWSxHQUFHLE1BQU0sRUFBVSxDQUFDO0lBQ2hDLFdBQVcsR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUV0QyxZQUNVLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFFaEMsQ0FBQztJQUVELGVBQWU7UUFDYixTQUFTLENBQVMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRTtZQUNuSCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUU7WUFDcEgsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLHlCQUF5QixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxTQUFTLENBQVMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRTtZQUMvRyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTVHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xDLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRWpDLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQXZEVSw2Q0FBNkM7NEZBQTdDLDZDQUE2Qzs7NEZBQTdDLDZDQUE2QztrQkFMekQsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxpREFBaUQ7b0JBQzNELFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5wdXQsIE9uRGVzdHJveSwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCB7IGNoZWNrTW91c2VPdmVySW5Db250YWluZXIsIGlzVHlwZUZpbGUgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tMaWJzVWlDb21wb25lbnRzSW5wdXRzVXBsb2FkRHJvcEZpbGVEaXJlY3RpdmVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzSW5wdXRzVXBsb2FkRHJvcEZpbGVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICByZWFkb25seSBtdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4gfCB1bmRlZmluZWQ+KHRydWUsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IHRydWUgfSk7XG5cbiAgcmVhZG9ubHkgb3V0RHJhZ092ZXIgPSBvdXRwdXQ8SUV2ZW50PigpO1xuICByZWFkb25seSBvdXREcmFnTGVhdmUgPSBvdXRwdXQ8SUV2ZW50PigpO1xuICByZWFkb25seSBvdXREcm9wID0gb3V0cHV0PElFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJvcEZpbGVzID0gb3V0cHV0PEZpbGVbXT4oKTtcbiAgcmVhZG9ubHkgb3V0RHJvcEZpbGUgPSBvdXRwdXQ8RmlsZT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgZnJvbUV2ZW50PElFdmVudD4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnb3ZlcicpLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChlOiBJRXZlbnQpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm91dERyYWdPdmVyLmVtaXQoZSk7XG4gICAgfSk7XG4gICAgZnJvbUV2ZW50PElFdmVudD4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnbGVhdmUnKS5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoZTogSUV2ZW50KSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKGNoZWNrTW91c2VPdmVySW5Db250YWluZXIoZSwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMub3V0RHJhZ0xlYXZlLmVtaXQoZSk7XG4gICAgfSk7XG5cbiAgICBmcm9tRXZlbnQ8SUV2ZW50Pih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Ryb3AnKS5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoZTogSUV2ZW50KSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5vdXREcm9wLmVtaXQoZSk7XG5cbiAgICAgIGNvbnN0IGZpbGVMaXN0ID0gQXJyYXkuZnJvbTxGaWxlPihlLmRhdGFUcmFuc2Zlcj8uZmlsZXMgfHwgZS5jbGlwYm9hcmREYXRhPy5maWxlcyB8fCBbXSkuZmlsdGVyKGlzVHlwZUZpbGUpO1xuXG4gICAgICBpZiAoIWZpbGVMaXN0IHx8ICFmaWxlTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XG4gICAgICAgIHRoaXMub3V0RHJvcEZpbGVzLmVtaXQoZmlsZUxpc3QpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMub3V0RHJvcEZpbGUuZW1pdChmaWxlTGlzdFswXSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufSJdfQ==
@@ -0,0 +1,50 @@
1
+ import { Directive, ElementRef, inject, input, output } from '@angular/core';
2
+ import { fromEvent, Subject, takeUntil } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class LibsUiComponentsInputsUploadDirective {
5
+ onDestroy = new Subject();
6
+ multiple = input(true, { transform: val => val ?? true });
7
+ accessFiles = input('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' });
8
+ outUploadFiles = output();
9
+ outUploadFile = output();
10
+ elementRef = inject(ElementRef);
11
+ ngAfterViewInit() {
12
+ fromEvent(this.elementRef.nativeElement, 'click').pipe(takeUntil(this.onDestroy)).subscribe((e) => {
13
+ e.stopPropagation();
14
+ e.preventDefault();
15
+ const inputElementUpload = document.createElement('input');
16
+ inputElementUpload.type = 'file';
17
+ inputElementUpload.accept = this.accessFiles();
18
+ inputElementUpload.multiple = this.multiple();
19
+ inputElementUpload.style.display = 'none';
20
+ inputElementUpload.click();
21
+ fromEvent(inputElementUpload, 'change').pipe(takeUntil(this.onDestroy)).subscribe((event) => {
22
+ const files = Array.from(event.dataTransfer?.files || event.target?.files || []);
23
+ inputElementUpload.remove();
24
+ if (!files?.length) {
25
+ return;
26
+ }
27
+ if (this.multiple()) {
28
+ this.outUploadFiles.emit(files);
29
+ return;
30
+ }
31
+ this.outUploadFile.emit(files[0]);
32
+ });
33
+ });
34
+ }
35
+ ngOnDestroy() {
36
+ this.onDestroy.next();
37
+ this.onDestroy.complete();
38
+ }
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsUploadDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
40
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: LibsUiComponentsInputsUploadDirective, isStandalone: true, selector: "[LibsUiComponentsInputsUploadDirective]", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, accessFiles: { classPropertyName: "accessFiles", publicName: "accessFiles", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outUploadFiles: "outUploadFiles", outUploadFile: "outUploadFile" }, ngImport: i0 });
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsUploadDirective, decorators: [{
43
+ type: Directive,
44
+ args: [{
45
+ // eslint-disable-next-line @angular-eslint/directive-selector
46
+ selector: '[LibsUiComponentsInputsUploadDirective]',
47
+ standalone: true
48
+ }]
49
+ }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy91cGxvYWQvc3JjL3VwbG9hZC1maWxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU9yRCxNQUFNLE9BQU8scUNBQXFDO0lBQ3hDLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRS9CLFFBQVEsR0FBRyxLQUFLLENBQStCLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLFdBQVcsR0FBRyxLQUFLLENBQTZCLDZFQUE2RSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLDZFQUE2RSxFQUFFLENBQUMsQ0FBQztJQUUzTyxjQUFjLEdBQUcsTUFBTSxFQUFVLENBQUM7SUFDbEMsYUFBYSxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBRWhDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFHeEMsZUFBZTtRQUNiLFNBQVMsQ0FBUyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFO1lBQ2hILENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFbkIsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNELGtCQUFrQixDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7WUFDakMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQyxrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQzFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLFNBQVMsQ0FBUyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO2dCQUMxRyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFPLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RixrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDbkIsT0FBTztnQkFDVCxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUVoQyxPQUFPO2dCQUNULENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBMUNVLHFDQUFxQzs0RkFBckMscUNBQXFDOzs0RkFBckMscUNBQXFDO2tCQUxqRCxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLHlDQUF5QztvQkFDbkQsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBPbkRlc3Ryb3ksIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbTGlic1VpQ29tcG9uZW50c0lucHV0c1VwbG9hZERpcmVjdGl2ZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNJbnB1dHNVcGxvYWREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgbXVsdGlwbGUgPSBpbnB1dDxib29sZWFuLCBib29sZWFuIHwgdW5kZWZpbmVkPih0cnVlLCB7IHRyYW5zZm9ybTogdmFsID0+IHZhbCA/PyB0cnVlIH0pO1xuICByZWFkb25seSBhY2Nlc3NGaWxlcyA9IGlucHV0PHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPignaW1hZ2UveC1wbmcsaW1hZ2UvanBnLGltYWdlL2pwZWcsaW1hZ2UvUE5HLGltYWdlL3gtUE5HLGltYWdlL0pQRyxpbWFnZS9KUEVHJywgeyB0cmFuc2Zvcm06IHZhbCA9PiB2YWwgPz8gJ2ltYWdlL3gtcG5nLGltYWdlL2pwZyxpbWFnZS9qcGVnLGltYWdlL1BORyxpbWFnZS94LVBORyxpbWFnZS9KUEcsaW1hZ2UvSlBFRycgfSk7XG5cbiAgcmVhZG9ubHkgb3V0VXBsb2FkRmlsZXMgPSBvdXRwdXQ8RmlsZVtdPigpO1xuICByZWFkb25seSBvdXRVcGxvYWRGaWxlID0gb3V0cHV0PEZpbGU+KCk7XG5cbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGZyb21FdmVudDxJRXZlbnQ+KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY2xpY2snKS5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoZTogSUV2ZW50KSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBjb25zdCBpbnB1dEVsZW1lbnRVcGxvYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgaW5wdXRFbGVtZW50VXBsb2FkLnR5cGUgPSAnZmlsZSc7XG4gICAgICBpbnB1dEVsZW1lbnRVcGxvYWQuYWNjZXB0ID0gdGhpcy5hY2Nlc3NGaWxlcygpO1xuICAgICAgaW5wdXRFbGVtZW50VXBsb2FkLm11bHRpcGxlID0gdGhpcy5tdWx0aXBsZSgpO1xuICAgICAgaW5wdXRFbGVtZW50VXBsb2FkLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICBpbnB1dEVsZW1lbnRVcGxvYWQuY2xpY2soKTtcbiAgICAgIGZyb21FdmVudDxJRXZlbnQ+KGlucHV0RWxlbWVudFVwbG9hZCwgJ2NoYW5nZScpLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChldmVudDogSUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbTxGaWxlPihldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzIHx8IGV2ZW50LnRhcmdldD8uZmlsZXMgfHwgW10pO1xuICAgICAgICBpbnB1dEVsZW1lbnRVcGxvYWQucmVtb3ZlKCk7XG4gICAgICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XG4gICAgICAgICAgdGhpcy5vdXRVcGxvYWRGaWxlcy5lbWl0KGZpbGVzKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm91dFVwbG9hZEZpbGUuZW1pdChmaWxlc1swXSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=