@seniorsistemas/angular-components 17.3.15 → 17.3.16
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/bundles/seniorsistemas-angular-components.umd.js +409 -314
- package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js +2 -2
- package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
- package/components/file-upload/components/file-item/file-item.component.d.ts +20 -0
- package/components/file-upload/file-upload.component.d.ts +11 -15
- package/components/file-upload/models/index.d.ts +1 -0
- package/components/file-upload/models/storage-units.d.ts +5 -0
- package/esm2015/components/file-upload/components/file-item/file-item.component.js +88 -0
- package/esm2015/components/file-upload/file-upload.component.js +42 -43
- package/esm2015/components/file-upload/file-upload.module.js +9 -5
- package/esm2015/components/file-upload/file-upload.service.js +3 -1
- package/esm2015/components/file-upload/models/index.js +2 -1
- package/esm2015/components/file-upload/models/storage-units.js +6 -0
- package/esm2015/seniorsistemas-angular-components.js +65 -64
- package/esm5/components/file-upload/components/file-item/file-item.component.js +89 -0
- package/esm5/components/file-upload/file-upload.component.js +41 -42
- package/esm5/components/file-upload/file-upload.module.js +9 -5
- package/esm5/components/file-upload/file-upload.service.js +3 -1
- package/esm5/components/file-upload/models/index.js +2 -1
- package/esm5/components/file-upload/models/storage-units.js +6 -0
- package/esm5/seniorsistemas-angular-components.js +65 -64
- package/fesm2015/seniorsistemas-angular-components.js +330 -238
- package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
- package/fesm5/seniorsistemas-angular-components.js +342 -249
- package/fesm5/seniorsistemas-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/seniorsistemas-angular-components.d.ts +64 -63
- package/seniorsistemas-angular-components.metadata.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EventEmitter, AfterContentInit } from "@angular/core";
|
|
2
|
+
import { FileDto } from "../../models";
|
|
3
|
+
export declare class FileItemComponent implements AfterContentInit {
|
|
4
|
+
id: string;
|
|
5
|
+
file: FileDto;
|
|
6
|
+
canReadFiles: boolean;
|
|
7
|
+
canRemoveFiles: boolean;
|
|
8
|
+
cancelLabel: string;
|
|
9
|
+
removeLabel: string;
|
|
10
|
+
ariaLabelProgress: string;
|
|
11
|
+
successTooltip: string;
|
|
12
|
+
ariaLabelSuccess: string;
|
|
13
|
+
cancelUpload: EventEmitter<FileDto>;
|
|
14
|
+
removeFile: EventEmitter<FileDto>;
|
|
15
|
+
ngAfterContentInit(): void;
|
|
16
|
+
onResize(): void;
|
|
17
|
+
isSmallDevice: boolean;
|
|
18
|
+
private _update;
|
|
19
|
+
simplifySize(size: number): string;
|
|
20
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ElementRef, EventEmitter, OnDestroy, OnInit } from "@angular/core";
|
|
2
2
|
import { FormControl } from "@angular/forms";
|
|
3
3
|
import { DomSanitizer } from "@angular/platform-browser";
|
|
4
4
|
import { TranslateService } from "@ngx-translate/core";
|
|
5
5
|
import { FileUploadService } from "./file-upload.service";
|
|
6
6
|
import { FileDto } from "./models/file-dto";
|
|
7
|
-
import { UploadError } from "./models/uploadError";
|
|
8
7
|
import { FileUploadPermissions } from "./models/file-upload-permissions";
|
|
9
|
-
|
|
8
|
+
import { UploadError } from "./models/uploadError";
|
|
9
|
+
export declare class FileUploadComponent implements OnInit, OnDestroy {
|
|
10
10
|
private readonly sanitizer;
|
|
11
11
|
private readonly fileUploadService;
|
|
12
12
|
private readonly translate;
|
|
@@ -50,25 +50,21 @@ export declare class FileUploadComponent implements OnInit, OnDestroy, AfterCont
|
|
|
50
50
|
validateErrors: EventEmitter<UploadError>;
|
|
51
51
|
private _files;
|
|
52
52
|
private readonly ngUsubscribe;
|
|
53
|
-
isSmallDevice: boolean;
|
|
54
53
|
inputValue: string;
|
|
55
54
|
modifiedDate: string;
|
|
56
55
|
constructor(sanitizer: DomSanitizer, fileUploadService: FileUploadService, translate: TranslateService);
|
|
57
56
|
ngOnInit(): void;
|
|
58
57
|
ngOnDestroy(): void;
|
|
59
|
-
ngAfterContentInit(): void;
|
|
60
|
-
onResize(): void;
|
|
61
58
|
onFileSelect(files: FileDto[]): void;
|
|
62
59
|
onRemoveFile(file: FileDto): void;
|
|
63
|
-
onCancelUpload(
|
|
60
|
+
onCancelUpload(file: FileDto): void;
|
|
64
61
|
onDowloadFile(index: number): void;
|
|
65
62
|
get files(): FileDto[];
|
|
66
|
-
private
|
|
67
|
-
private
|
|
68
|
-
private
|
|
69
|
-
private
|
|
70
|
-
private
|
|
71
|
-
private
|
|
72
|
-
private
|
|
73
|
-
private setModifiedDate;
|
|
63
|
+
private _isImage;
|
|
64
|
+
private _isFileLimitExceeded;
|
|
65
|
+
private _isFileSizeExceeded;
|
|
66
|
+
private _isUnsupportedFileExtension;
|
|
67
|
+
private _clearFileInput;
|
|
68
|
+
private _getUploadDate;
|
|
69
|
+
private _setModifiedDate;
|
|
74
70
|
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, Input, EventEmitter, Output, HostListener } from "@angular/core";
|
|
3
|
+
import { StorageUnits } from "../../models";
|
|
4
|
+
import { Breakpoints } from "../../../utils";
|
|
5
|
+
let FileItemComponent = class FileItemComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.canReadFiles = true;
|
|
8
|
+
this.canRemoveFiles = true;
|
|
9
|
+
this.cancelUpload = new EventEmitter();
|
|
10
|
+
this.removeFile = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
ngAfterContentInit() {
|
|
13
|
+
this._update();
|
|
14
|
+
}
|
|
15
|
+
onResize() {
|
|
16
|
+
this._update();
|
|
17
|
+
}
|
|
18
|
+
_update() {
|
|
19
|
+
const windowWidth = window.innerWidth;
|
|
20
|
+
this.isSmallDevice = windowWidth <= Breakpoints.SM_MAX;
|
|
21
|
+
}
|
|
22
|
+
simplifySize(size) {
|
|
23
|
+
let unit;
|
|
24
|
+
let convertedSize;
|
|
25
|
+
if (size < StorageUnits.KB) {
|
|
26
|
+
convertedSize = size;
|
|
27
|
+
unit = "bytes";
|
|
28
|
+
}
|
|
29
|
+
else if (size < StorageUnits.MB) {
|
|
30
|
+
convertedSize = size / StorageUnits.KB;
|
|
31
|
+
unit = "KB";
|
|
32
|
+
}
|
|
33
|
+
else if (size < StorageUnits.GB) {
|
|
34
|
+
convertedSize = size / StorageUnits.MB;
|
|
35
|
+
unit = "MB";
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
convertedSize = size / StorageUnits.GB;
|
|
39
|
+
unit = "GB";
|
|
40
|
+
}
|
|
41
|
+
return `${convertedSize} ${unit}`;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
__decorate([
|
|
45
|
+
Input()
|
|
46
|
+
], FileItemComponent.prototype, "id", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
Input()
|
|
49
|
+
], FileItemComponent.prototype, "file", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
Input()
|
|
52
|
+
], FileItemComponent.prototype, "canReadFiles", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
Input()
|
|
55
|
+
], FileItemComponent.prototype, "canRemoveFiles", void 0);
|
|
56
|
+
__decorate([
|
|
57
|
+
Input()
|
|
58
|
+
], FileItemComponent.prototype, "cancelLabel", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
Input()
|
|
61
|
+
], FileItemComponent.prototype, "removeLabel", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
Input()
|
|
64
|
+
], FileItemComponent.prototype, "ariaLabelProgress", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
Input()
|
|
67
|
+
], FileItemComponent.prototype, "successTooltip", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
Input()
|
|
70
|
+
], FileItemComponent.prototype, "ariaLabelSuccess", void 0);
|
|
71
|
+
__decorate([
|
|
72
|
+
Output()
|
|
73
|
+
], FileItemComponent.prototype, "cancelUpload", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
Output()
|
|
76
|
+
], FileItemComponent.prototype, "removeFile", void 0);
|
|
77
|
+
__decorate([
|
|
78
|
+
HostListener("window:resize")
|
|
79
|
+
], FileItemComponent.prototype, "onResize", null);
|
|
80
|
+
FileItemComponent = __decorate([
|
|
81
|
+
Component({
|
|
82
|
+
selector: "s-file-item",
|
|
83
|
+
template: "<div [id]=\"id\" class=\"file-item-container\">\n <div class=\"file-info\">\n <ng-container *ngIf=\"canReadFiles; then fileNameUrl; else fileName\"></ng-container>\n <ng-template #fileNameUrl>\n <a\n class=\"file-name file-name--link\"\n tabindex=\"0\"\n [href]=\"file.objectURL\"\n download>\n {{ file.name }}\n </a>\n </ng-template>\n <ng-template #fileName>\n <span\n *ngIf=\"!canReadFiles\"\n class=\"file-name\">\n {{ file.name }}\n </span>\n </ng-template>\n <span class=\"file-size\">\n {{ simplifySize(file.size) }}\n </span>\n <div\n *ngIf=\"file.isUploading && !isSmallDevice\"\n class=\"progressbar\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\">\n <s-progressbar\n [value]=\"file.progress\"\n activeColor=\"blue\"\n [showValue]=\"true\">\n </s-progressbar>\n </div>\n <span\n *ngIf=\"file.isUploading && isSmallDevice\" \n class=\"fas fa-circle-notch fa-spin\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\">\n </span>\n\n <span\n *ngIf=\"!file.isUploading && !file.error\"\n class=\"status-icon status-icon--success fas fa-check\"\n [attr.aria-label]=\"ariaLabelSuccess || successTooltip || 'platform.angular_components.file_attached_successfully' | translate\"\n [sTooltip]=\"successTooltip || 'platform.angular_components.file_attached_successfully' | translate\">\n </span>\n <span\n *ngIf=\"!file.isUploading && file.error\"\n class=\"status-icon status-icon--fail fas fa-times\"\n [attr.aria-label]=\"file.error?.message\"\n [sTooltip]=\"file.error?.message\">\n </span>\n </div>\n <button\n *ngIf=\"file.isUploading\"\n class=\"file-option file-option--cancel\"\n (click)=\"cancelUpload.emit(file)\">\n {{ cancelLabel || \"platform.angular_components.cancel\" | translate }}\n </button>\n <button\n *ngIf=\"canRemoveFiles && !file.isUploading\"\n class=\"file-option file-option--remove\"\n (click)=\"removeFile.emit(file)\">\n {{ removeLabel || \"platform.angular_components.remove\" | translate }}\n </button>\n</div>\n",
|
|
84
|
+
styles: [".file-item-container{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:16px;padding:16px}.file-item-container .file-info{color:#212533;display:-ms-flexbox;display:flex;font-family:\"Open Sans\",sans-serif;font-size:14px;gap:16px;width:100%;-ms-flex-align:center;align-items:center}.file-item-container .file-info .file-name{-ms-flex-positive:1;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-item-container .file-info .file-name--link{color:#428bca;text-decoration:none}.file-item-container .file-info .file-size{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-item-container .progressbar{width:20%}.file-item-container .status-icon{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;font-size:12px}.file-item-container .status-icon--success{color:#0c9348}.file-item-container .status-icon--fail{color:#c13018}.file-item-container .file-option{background-color:transparent;border:none;color:#428bca;cursor:pointer;font-family:\"Open Sans\",sans-serif;font-size:14px;overflow:hidden;text-overflow:ellipsis;max-width:100%}@media screen and (max-width:600px){.file-item-container{-ms-flex-align:start;align-items:flex-start;-ms-flex-direction:column;flex-direction:column}}"]
|
|
85
|
+
})
|
|
86
|
+
], FileItemComponent);
|
|
87
|
+
export { FileItemComponent };
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2ZpbGUtdXBsb2FkL2NvbXBvbmVudHMvZmlsZS1pdGVtL2ZpbGUtaXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQW9CLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU83QyxJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtJQUE5QjtRQVFXLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBR3BCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBa0J0QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHM0MsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFzQ3BELENBQUM7SUFwQ1Usa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBR00sUUFBUTtRQUNYLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBSU8sT0FBTztRQUNYLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUMzRCxDQUFDO0lBRU0sWUFBWSxDQUFDLElBQVk7UUFDNUIsSUFBSSxJQUFZLENBQUM7UUFDakIsSUFBSSxhQUFxQixDQUFDO1FBRTFCLElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDeEIsYUFBYSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLEdBQUcsT0FBTyxDQUFDO1NBQ2xCO2FBQU0sSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUMvQixhQUFhLEdBQUcsSUFBSSxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNmO2FBQU0sSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUMvQixhQUFhLEdBQUcsSUFBSSxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNmO2FBQU07WUFDSCxhQUFhLEdBQUcsSUFBSSxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNmO1FBRUQsT0FBTyxHQUFHLGFBQWEsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQ0osQ0FBQTtBQXBFRztJQURDLEtBQUssRUFBRTs2Q0FDVTtBQUdsQjtJQURDLEtBQUssRUFBRTsrQ0FDYTtBQUdyQjtJQURDLEtBQUssRUFBRTt1REFDbUI7QUFHM0I7SUFEQyxLQUFLLEVBQUU7eURBQ3FCO0FBRzdCO0lBREMsS0FBSyxFQUFFO3NEQUNtQjtBQUczQjtJQURDLEtBQUssRUFBRTtzREFDbUI7QUFHM0I7SUFEQyxLQUFLLEVBQUU7NERBQ3lCO0FBR2pDO0lBREMsS0FBSyxFQUFFO3lEQUNzQjtBQUc5QjtJQURDLEtBQUssRUFBRTsyREFDd0I7QUFHaEM7SUFEQyxNQUFNLEVBQUU7dURBQ3lDO0FBR2xEO0lBREMsTUFBTSxFQUFFO3FEQUN1QztBQU9oRDtJQURDLFlBQVksQ0FBQyxlQUFlLENBQUM7aURBRzdCO0FBekNRLGlCQUFpQjtJQUw3QixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsYUFBYTtRQUN2Qiw4a0ZBQXlDOztLQUU1QyxDQUFDO0dBQ1csaUJBQWlCLENBc0U3QjtTQXRFWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgQWZ0ZXJDb250ZW50SW5pdCwgSG9zdExpc3RlbmVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgU3RvcmFnZVVuaXRzIH0gZnJvbSBcIi4uLy4uL21vZGVsc1wiXG5pbXBvcnQgeyBGaWxlRHRvIH0gZnJvbSBcIi4uLy4uL21vZGVsc1wiO1xuaW1wb3J0IHsgQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHNcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1maWxlLWl0ZW1cIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbGUtaXRlbS5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9maWxlLWl0ZW0uY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbGU6IEZpbGVEdG87XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYW5SZWFkRmlsZXMgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2FuUmVtb3ZlRmlsZXMgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2FuY2VsTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlbW92ZUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxQcm9ncmVzczogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3VjY2Vzc1Rvb2x0aXA6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbFN1Y2Nlc3M6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxVcGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVEdG8+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlRmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZUR0bz4oKTtcblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZSgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIpXG4gICAgcHVibGljIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNTbWFsbERldmljZTogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgX3VwZGF0ZSgpIHtcbiAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgdGhpcy5pc1NtYWxsRGV2aWNlID0gd2luZG93V2lkdGggPD0gQnJlYWtwb2ludHMuU01fTUFYO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaW1wbGlmeVNpemUoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHVuaXQ6IHN0cmluZztcbiAgICAgICAgbGV0IGNvbnZlcnRlZFNpemU6IG51bWJlcjtcblxuICAgICAgICBpZiAoc2l6ZSA8IFN0b3JhZ2VVbml0cy5LQikge1xuICAgICAgICAgICAgY29udmVydGVkU2l6ZSA9IHNpemU7XG4gICAgICAgICAgICB1bml0ID0gXCJieXRlc1wiO1xuICAgICAgICB9IGVsc2UgaWYgKHNpemUgPCBTdG9yYWdlVW5pdHMuTUIpIHtcbiAgICAgICAgICAgIGNvbnZlcnRlZFNpemUgPSBzaXplIC8gU3RvcmFnZVVuaXRzLktCO1xuICAgICAgICAgICAgdW5pdCA9IFwiS0JcIjtcbiAgICAgICAgfSBlbHNlIGlmIChzaXplIDwgU3RvcmFnZVVuaXRzLkdCKSB7XG4gICAgICAgICAgICBjb252ZXJ0ZWRTaXplID0gc2l6ZSAvIFN0b3JhZ2VVbml0cy5NQjtcbiAgICAgICAgICAgIHVuaXQgPSBcIk1CXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb252ZXJ0ZWRTaXplID0gc2l6ZSAvIFN0b3JhZ2VVbml0cy5HQjtcbiAgICAgICAgICAgIHVuaXQgPSBcIkdCXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7Y29udmVydGVkU2l6ZX0gJHt1bml0fWA7XG4gICAgfVxufVxuIl19
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
var FileUploadComponent_1;
|
|
2
2
|
import { __decorate } from "tslib";
|
|
3
|
-
import { Component, EventEmitter,
|
|
3
|
+
import { Component, EventEmitter, Input, Output, ViewChild, } from "@angular/core";
|
|
4
4
|
import { DomSanitizer } from "@angular/platform-browser";
|
|
5
5
|
import { TranslateService } from "@ngx-translate/core";
|
|
6
6
|
import { Subject } from "rxjs";
|
|
7
7
|
import * as moment_ from "moment";
|
|
8
|
-
import { Breakpoints } from "../utils";
|
|
9
8
|
import { FileUploadService } from "./file-upload.service";
|
|
9
|
+
import { ALL_PERMISSIONS, FileUploadPermissions } from "./models/file-upload-permissions";
|
|
10
10
|
import { ValidateErrors } from "./models/validate-errors";
|
|
11
|
-
import { FileUploadPermissions, ALL_PERMISSIONS } from "./models/file-upload-permissions";
|
|
12
11
|
const moment = moment_;
|
|
13
12
|
let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
14
13
|
constructor(sanitizer, fileUploadService, translate) {
|
|
@@ -35,10 +34,10 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
35
34
|
set files(files) {
|
|
36
35
|
var _a;
|
|
37
36
|
if (this.showFileUploadDate && ((_a = files[0]) === null || _a === void 0 ? void 0 : _a.objectId)) {
|
|
38
|
-
this.
|
|
37
|
+
this._getUploadDate(files);
|
|
39
38
|
}
|
|
40
|
-
this._files = files.map(file => {
|
|
41
|
-
if (this.
|
|
39
|
+
this._files = files.map((file) => {
|
|
40
|
+
if (this._isImage(file)) {
|
|
42
41
|
file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(file));
|
|
43
42
|
}
|
|
44
43
|
return file;
|
|
@@ -46,40 +45,36 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
46
45
|
}
|
|
47
46
|
ngOnInit() {
|
|
48
47
|
this.supportedExtensions = this.supportedExtensions
|
|
49
|
-
.map(extension => extension
|
|
48
|
+
.map((extension) => extension
|
|
49
|
+
.replace(".", "")
|
|
50
|
+
.toLowerCase());
|
|
50
51
|
}
|
|
51
52
|
ngOnDestroy() {
|
|
52
53
|
this.ngUsubscribe.next();
|
|
53
54
|
this.ngUsubscribe.complete();
|
|
54
55
|
}
|
|
55
|
-
ngAfterContentInit() {
|
|
56
|
-
this.update();
|
|
57
|
-
}
|
|
58
|
-
onResize() {
|
|
59
|
-
this.update();
|
|
60
|
-
}
|
|
61
56
|
onFileSelect(files) {
|
|
62
57
|
const newFiles = [];
|
|
63
58
|
if (!this.multiple) {
|
|
64
59
|
this.files = [];
|
|
65
60
|
}
|
|
66
|
-
if (this.
|
|
61
|
+
if (this._isFileLimitExceeded(files)) {
|
|
67
62
|
this.validateErrors.emit({
|
|
68
63
|
files,
|
|
69
64
|
validation: ValidateErrors.MAX_FILE_LIMIT,
|
|
70
65
|
});
|
|
71
|
-
this.
|
|
66
|
+
this._clearFileInput();
|
|
72
67
|
return;
|
|
73
68
|
}
|
|
74
69
|
for (const file of files) {
|
|
75
|
-
if (this.
|
|
70
|
+
if (this._isUnsupportedFileExtension(file)) {
|
|
76
71
|
this.validateErrors.emit({
|
|
77
72
|
files: [file],
|
|
78
73
|
validation: ValidateErrors.UNSUPPORTED_EXTENSION,
|
|
79
74
|
});
|
|
80
75
|
continue;
|
|
81
76
|
}
|
|
82
|
-
if (this.
|
|
77
|
+
if (this._isFileSizeExceeded(file)) {
|
|
83
78
|
this.validateErrors.emit({
|
|
84
79
|
files: [file],
|
|
85
80
|
validation: ValidateErrors.MAX_FILE_SIZE,
|
|
@@ -94,7 +89,7 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
94
89
|
files: newFiles,
|
|
95
90
|
});
|
|
96
91
|
}
|
|
97
|
-
this.
|
|
92
|
+
this._clearFileInput();
|
|
98
93
|
}
|
|
99
94
|
onRemoveFile(file) {
|
|
100
95
|
const fileIndex = this.files.indexOf(file);
|
|
@@ -103,12 +98,13 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
103
98
|
this.removeFile.emit({ file });
|
|
104
99
|
}
|
|
105
100
|
}
|
|
106
|
-
onCancelUpload(
|
|
107
|
-
const
|
|
108
|
-
if (
|
|
101
|
+
onCancelUpload(file) {
|
|
102
|
+
const index = this.files.indexOf(file);
|
|
103
|
+
if (index != -1) {
|
|
104
|
+
this.files.splice(index, 1);
|
|
109
105
|
this.cancelUpload.emit(index);
|
|
110
106
|
}
|
|
111
|
-
this.
|
|
107
|
+
this._clearFileInput();
|
|
112
108
|
}
|
|
113
109
|
onDowloadFile(index) {
|
|
114
110
|
this.downloadFile.emit({
|
|
@@ -119,50 +115,56 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
119
115
|
get files() {
|
|
120
116
|
return this._files;
|
|
121
117
|
}
|
|
122
|
-
|
|
123
|
-
const windowWidth = window.innerWidth;
|
|
124
|
-
this.isSmallDevice = windowWidth <= Breakpoints.SM_MAX;
|
|
125
|
-
}
|
|
126
|
-
isImage(file) {
|
|
118
|
+
_isImage(file) {
|
|
127
119
|
return /^image\//.test(file.type);
|
|
128
120
|
}
|
|
129
|
-
|
|
121
|
+
_isFileLimitExceeded(files) {
|
|
130
122
|
if (!this.fileLimit) {
|
|
131
123
|
return false;
|
|
132
124
|
}
|
|
133
125
|
return this.files.length + files.length > this.fileLimit;
|
|
134
126
|
}
|
|
135
|
-
|
|
127
|
+
_isFileSizeExceeded(file) {
|
|
136
128
|
if (!this.maxFileSize) {
|
|
137
129
|
return false;
|
|
138
130
|
}
|
|
139
131
|
return file.size > this.maxFileSize;
|
|
140
132
|
}
|
|
141
|
-
|
|
133
|
+
_isUnsupportedFileExtension(file) {
|
|
142
134
|
var _a;
|
|
143
135
|
if ((_a = this.supportedExtensions) === null || _a === void 0 ? void 0 : _a.length) {
|
|
144
|
-
const extension = file.name
|
|
136
|
+
const extension = file.name
|
|
137
|
+
.split(".")
|
|
138
|
+
.pop()
|
|
139
|
+
.toLowerCase();
|
|
145
140
|
return !this.supportedExtensions.includes(extension);
|
|
146
141
|
}
|
|
147
142
|
return false;
|
|
148
143
|
}
|
|
149
|
-
|
|
144
|
+
_clearFileInput() {
|
|
150
145
|
this.inputUpload.nativeElement.value = null;
|
|
151
146
|
}
|
|
152
|
-
|
|
147
|
+
_getUploadDate(blobFile) {
|
|
153
148
|
if (!blobFile) {
|
|
154
149
|
return;
|
|
155
150
|
}
|
|
156
|
-
this.fileUploadService
|
|
157
|
-
.
|
|
151
|
+
this.fileUploadService
|
|
152
|
+
.getMetadataCustomField({ objectId: blobFile[0].objectId })
|
|
153
|
+
.then((metadata) => this._setModifiedDate(metadata));
|
|
158
154
|
}
|
|
159
|
-
|
|
155
|
+
_setModifiedDate(metadata) {
|
|
160
156
|
const hour = moment(metadata.modified).format("HH");
|
|
161
157
|
const minutes = moment(metadata.modified).format("mm");
|
|
162
158
|
const day = moment(metadata.modified).format("DD");
|
|
163
159
|
const month = moment(metadata.modified).format("MM");
|
|
164
160
|
const fullYear = moment(metadata.modified).format("YYYY");
|
|
165
|
-
this.modifiedDate = this.translate.instant("platform.angular_components.date_modified_custom_blob", {
|
|
161
|
+
this.modifiedDate = this.translate.instant("platform.angular_components.date_modified_custom_blob", {
|
|
162
|
+
hour,
|
|
163
|
+
minutes,
|
|
164
|
+
day,
|
|
165
|
+
month,
|
|
166
|
+
fullYear,
|
|
167
|
+
});
|
|
166
168
|
}
|
|
167
169
|
};
|
|
168
170
|
FileUploadComponent.nextId = 0;
|
|
@@ -252,15 +254,12 @@ __decorate([
|
|
|
252
254
|
__decorate([
|
|
253
255
|
Output()
|
|
254
256
|
], FileUploadComponent.prototype, "validateErrors", void 0);
|
|
255
|
-
__decorate([
|
|
256
|
-
HostListener("window:resize")
|
|
257
|
-
], FileUploadComponent.prototype, "onResize", null);
|
|
258
257
|
FileUploadComponent = FileUploadComponent_1 = __decorate([
|
|
259
258
|
Component({
|
|
260
259
|
selector: "s-file-upload",
|
|
261
|
-
template: "<div
|
|
262
|
-
styles: [".
|
|
260
|
+
template: "<div [id]=\"id\" class=\"fileupload\">\n <div class=\"fileupload-choose\">\n <input\n #inputUpload\n type=\"file\"\n name=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onFileSelect($event.dataTransfer ? $event.dataTransfer.files : $event.target.files)\"\n />\n <s-button\n *ngIf=\"permissions.includes(ADD_PERMISSION)\"\n [label]=\"chooseLabel || 'platform.angular_components.attach_files' | translate\"\n (onClick)=\"inputUpload.click()\"\n priority=\"primary\"\n [disabled]=\"disabled || !!formGroup?.disabled\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n <ul\n *ngIf=\"files.length\"\n class=\"file-list\"\n role=\"grid\">\n <li *ngFor=\"let file of files; let i = index\" class=\"file-list-item\">\n <s-file-item\n [id]=\"'file-' + i\"\n [file]=\"file\"\n [canReadFiles]=\"permissions.includes(READ_PERMISSION) && file.savedFile || file.progress === 100\"\n [canRemoveFiles]=\"permissions.includes(REMOVE_PERMISSION) && !(disabled || !!formGroup?.disabled)\"\n [cancelLabel]=\"cancelLabel\"\n [removeLabel]=\"removeLabel\"\n [ariaLabelProgress]=\"ariaLabelProgress\"\n [successTooltip]=\"successTooltip\"\n [ariaLabelSuccess]=\"ariaLabelSuccess\"\n (cancelUpload)=\"onCancelUpload($event)\"\n (removeFile)=\"onRemoveFile($event)\"\n >\n </s-file-item>\n </li>\n </ul>\n</div>\n",
|
|
261
|
+
styles: [".fileupload .fileupload-choose{position:relative;margin:15px 0;width:-webkit-max-content;width:max-content}.fileupload input[type=file]{display:none}.fileupload .file-list{border:1px solid #c1c1cc;border-radius:4px;padding:0}.fileupload .file-list .file-list-item{list-style-type:none}.fileupload .file-list .file-list-item:not(:first-child){border-top:1px solid #ccc}"]
|
|
263
262
|
})
|
|
264
263
|
], FileUploadComponent);
|
|
265
264
|
export { FileUploadComponent };
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxRixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFPdkIsSUFBYSxtQkFBbUIsMkJBQWhDLE1BQWEsbUJBQW1CO0lBd0c1QixZQUE2QixTQUF1QixFQUMvQixpQkFBb0MsRUFDcEMsU0FBMkI7UUFGbkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUMvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBdkd6QyxtQkFBYyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztRQUMzQyxvQkFBZSxHQUFHLHFCQUFxQixDQUFDLElBQUks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QVdQO0FBR0Q7SUFEQyxNQUFNLEVBQUU7MERBQ3FFO0FBRzlFO0lBREMsTUFBTSxFQUFFO3VEQUM0RDtBQUdyRTtJQURDLE1BQU0sRUFBRTt5REFDc0Q7QUFHL0Q7SUFEQyxNQUFNLEVBQUU7eURBQ3FGO0FBRzlGO0lBREMsTUFBTSxFQUFFOzJEQUM2RDtBQTJCdEU7SUFEQyxZQUFZLENBQUMsZUFBZSxDQUFDO21EQUc3QjtBQTdIUSxtQkFBbUI7SUFML0IsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGVBQWU7UUFDekIsbzlMQUEyQzs7S0FFOUMsQ0FBQztHQUNXLG1CQUFtQixDQWdRL0I7U0FoUVksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gXCJtb21lbnRcIjtcblxuaW1wb3J0IHsgQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IEZpbGVVcGxvYWRTZXJ2aWNlIH0gZnJvbSBcIi4vZmlsZS11cGxvYWQuc2VydmljZVwiO1xuaW1wb3J0IHsgTGlzdEJsb2JNZXRhZGF0YVJlc3BvbnNlIH0gZnJvbSBcIi4vbW9kZWxzL2xpc3QtYmxvYi1tZXRhZGF0YVwiO1xuaW1wb3J0IHsgRmlsZUR0byB9IGZyb20gXCIuL21vZGVscy9maWxlLWR0b1wiO1xuaW1wb3J0IHsgVXBsb2FkRXJyb3IgfSBmcm9tIFwiLi9tb2RlbHMvdXBsb2FkRXJyb3JcIjtcbmltcG9ydCB7IFZhbGlkYXRlRXJyb3JzIH0gZnJvbSBcIi4vbW9kZWxzL3ZhbGlkYXRlLWVycm9yc1wiO1xuaW1wb3J0IHsgRmlsZVVwbG9hZFBlcm1pc3Npb25zLCBBTExfUEVSTUlTU0lPTlMgfSBmcm9tIFwiLi9tb2RlbHMvZmlsZS11cGxvYWQtcGVybWlzc2lvbnNcIjtcblxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1maWxlLXVwbG9hZFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHVibGljIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gICAgcHVibGljIEFERF9QRVJNSVNTSU9OID0gRmlsZVVwbG9hZFBlcm1pc3Npb25zLkFkZDtcbiAgICBwdWJsaWMgUkVBRF9QRVJNSVNTSU9OID0gRmlsZVVwbG9hZFBlcm1pc3Npb25zLlJlYWQ7XG4gICAgcHVibGljIFJFTU9WRV9QRVJNSVNTSU9OID0gRmlsZVVwbG9hZFBlcm1pc3Npb25zLlJlbW92ZTtcblxuICAgIEBWaWV3Q2hpbGQoXCJpbnB1dFVwbG9hZFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0VXBsb2FkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZChcImFuY2hvclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuY2hvcjogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYHMtZmlsZS11cGxvYWQtJHtGaWxlVXBsb2FkQ29tcG9uZW50Lm5leHRJZCsrfWA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjaG9vc2VMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhbmNlbExhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdWNjZXNzVG9vbHRpcDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhY2NlcHQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN1cHBvcnRlZEV4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxGaWxlTmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbGVMaW1pdDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsUHJvZ3Jlc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbFN1Y2Nlc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbEVycm9yOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxSZW1vdmU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvcm1Hcm91cDogRm9ybUNvbnRyb2w7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0ZpbGVVcGxvYWREYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwZXJtaXNzaW9uczogRmlsZVVwbG9hZFBlcm1pc3Npb25zW10gPSBBTExfUEVSTUlTU0lPTlM7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZmlsZXMoZmlsZXM6IEZpbGVEdG9bXSkge1xuICAgICAgICBpZiAodGhpcy5zaG93RmlsZVVwbG9hZERhdGUgJiYgZmlsZXNbMF0/Lm9iamVjdElkKSB7XG4gICAgICAgICAgICB0aGlzLmdldFVwbG9hZERhdGUoZmlsZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZpbGVzID0gZmlsZXMubWFwKGZpbGUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbWFnZShmaWxlKSkge1xuICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHVwbG9hZEhhbmRsZXI6IEV2ZW50RW1pdHRlcjx7IGZpbGVzOiBGaWxlRHRvW10gfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlRmlsZTogRXZlbnRFbWl0dGVyPHsgZmlsZTogRmlsZSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxVcGxvYWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRvd25sb2FkRmlsZTogRXZlbnRFbWl0dGVyPHsgaW5kZXg6IG51bWJlcjsgYW5jaG9yOiBFbGVtZW50UmVmIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRlRXJyb3JzOiBFdmVudEVtaXR0ZXI8VXBsb2FkRXJyb3I+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBfZmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwdWJsaWMgaXNTbWFsbERldmljZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgaW5wdXRWYWx1ZSA9IFwiXCI7XG4gICAgcHVibGljIG1vZGlmaWVkRGF0ZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmaWxlVXBsb2FkU2VydmljZTogRmlsZVVwbG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7IH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zID0gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAubWFwKGV4dGVuc2lvbiA9PiBleHRlbnNpb24ucmVwbGFjZShcIi5cIiwgXCJcIikudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxuICAgIHB1YmxpYyBvblJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaWxlU2VsZWN0KGZpbGVzOiBGaWxlRHRvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3RmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNGaWxlTGltaXRFeGNlZWRlZChmaWxlcykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXMsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfTElNSVQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNVbnN1cHBvcnRlZEZpbGVFeHRlbnNpb24oZmlsZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlRXJyb3JzLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBmaWxlczogW2ZpbGVdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBWYWxpZGF0ZUVycm9ycy5VTlNVUFBPUlRFRF9FWFRFTlNJT04sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzRmlsZVNpemVFeGNlZWRlZChmaWxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzOiBbZmlsZV0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFZhbGlkYXRlRXJyb3JzLk1BWF9GSUxFX1NJWkUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5ld0ZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3RmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5jb25jYXQobmV3RmlsZXMpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRIYW5kbGVyLmVtaXQoe1xuICAgICAgICAgICAgICAgIGZpbGVzOiBuZXdGaWxlcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbGVhckZpbGVJbnB1dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJlbW92ZUZpbGUoZmlsZTogRmlsZUR0byk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlSW5kZXggPSB0aGlzLmZpbGVzLmluZGV4T2YoZmlsZSk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRGaWxlcyA9IHRoaXMuZmlsZXMuc3BsaWNlKGZpbGVJbmRleCwgMSk7XG5cbiAgICAgICAgaWYgKHJlbW92ZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRmlsZS5lbWl0KHsgZmlsZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNhbmNlbFVwbG9hZChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRGaWxlcyA9IHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICBpZiAocmVtb3ZlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxVcGxvYWQuZW1pdChpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFyRmlsZUlucHV0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRG93bG9hZEZpbGUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmRvd25sb2FkRmlsZS5lbWl0KHtcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgYW5jaG9yOiB0aGlzLmFuY2hvcixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlcygpOiBGaWxlRHRvW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIHRoaXMuaXNTbWFsbERldmljZSA9IHdpbmRvd1dpZHRoIDw9IEJyZWFrcG9pbnRzLlNNX01BWDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW1hZ2UoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gL15pbWFnZVxcLy8udGVzdChmaWxlLnR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWxlTGltaXRFeGNlZWRlZChmaWxlczogRmlsZUR0b1tdKSB7XG4gICAgICAgIGlmICghdGhpcy5maWxlTGltaXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5maWxlcy5sZW5ndGggKyBmaWxlcy5sZW5ndGggPiB0aGlzLmZpbGVMaW1pdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsZVNpemVFeGNlZWRlZChmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tYXhGaWxlU2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlLnNpemUgPiB0aGlzLm1heEZpbGVTaXplO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNVbnN1cHBvcnRlZEZpbGVFeHRlbnNpb24oZmlsZTogRmlsZSkge1xuICAgICAgICBpZiAodGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUubmFtZS5zcGxpdChcIi5cIikucG9wKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zLmluY2x1ZGVzKGV4dGVuc2lvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJGaWxlSW5wdXQoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRVcGxvYWQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVcGxvYWREYXRlKGJsb2JGaWxlOiBGaWxlRHRvW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFibG9iRmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWxlVXBsb2FkU2VydmljZS5nZXRNZXRhZGF0YUN1c3RvbUZpZWxkKHsgb2JqZWN0SWQ6IGJsb2JGaWxlWzBdLm9iamVjdElkIH0pXG4gICAgICAgICAgICAudGhlbihtZXRhZGF0YSA9PiB0aGlzLnNldE1vZGlmaWVkRGF0ZShtZXRhZGF0YSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TW9kaWZpZWREYXRlKG1ldGFkYXRhOiBMaXN0QmxvYk1ldGFkYXRhUmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaG91ciA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiSEhcIik7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIm1tXCIpO1xuICAgICAgICBjb25zdCBkYXkgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIkREXCIpO1xuICAgICAgICBjb25zdCBtb250aCA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiTU1cIik7XG4gICAgICAgIGNvbnN0IGZ1bGxZZWFyID0gbW9tZW50KG1ldGFkYXRhLm1vZGlmaWVkKS5mb3JtYXQoXCJZWVlZXCIpO1xuXG4gICAgICAgIHRoaXMubW9kaWZpZWREYXRlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5kYXRlX21vZGlmaWVkX2N1c3RvbV9ibG9iXCIsIHsgaG91ciwgbWludXRlcywgZGF5LCBtb250aCwgZnVsbFllYXIgfSk7XG4gICAgfVxufVxuIl19
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFHbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUcxRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFPdkIsSUFBYSxtQkFBbUIsMkJBQWhDLE1BQWEsbUJBQW1CO0lBd0c1QixZQUNxQixTQUF1QixFQUN2QixpQkFBb0MsRUFDcEMsU0FBMkI7UUFGM0IsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBeEd6QyxtQkFBYyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztRQUMzQyxvQkFBZSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQztRQUM3QyxzQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFTakQs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UUFDekIsMHNEQUEyQzs7S0FFOUMsQ0FBQztHQUNXLG1CQUFtQixDQWlRL0I7U0FqUVksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gXCJtb21lbnRcIjtcblxuaW1wb3J0IHsgQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IEZpbGVVcGxvYWRTZXJ2aWNlIH0gZnJvbSBcIi4vZmlsZS11cGxvYWQuc2VydmljZVwiO1xuaW1wb3J0IHsgRmlsZUR0byB9IGZyb20gXCIuL21vZGVscy9maWxlLWR0b1wiO1xuaW1wb3J0IHsgQUxMX1BFUk1JU1NJT05TLCBGaWxlVXBsb2FkUGVybWlzc2lvbnMgfSBmcm9tIFwiLi9tb2RlbHMvZmlsZS11cGxvYWQtcGVybWlzc2lvbnNcIjtcbmltcG9ydCB7IFVwbG9hZEVycm9yIH0gZnJvbSBcIi4vbW9kZWxzL3VwbG9hZEVycm9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0ZUVycm9ycyB9IGZyb20gXCIuL21vZGVscy92YWxpZGF0ZS1lcnJvcnNcIjtcbmltcG9ydCB7IExpc3RCbG9iTWV0YWRhdGFSZXNwb25zZSB9IGZyb20gXCIuL21vZGVscy9saXN0LWJsb2ItbWV0YWRhdGFcIjtcblxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1maWxlLXVwbG9hZFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gICAgcHVibGljIEFERF9QRVJNSVNTSU9OID0gRmlsZVVwbG9hZFBlcm1pc3Npb25zLkFkZDtcbiAgICBwdWJsaWMgUkVBRF9QRVJNSVNTSU9OID0gRmlsZVVwbG9hZFBlcm1pc3Npb25zLlJlYWQ7XG4gICAgcHVibGljIFJFTU9WRV9QRVJNSVNTSU9OID0gRmlsZVVwbG9hZFBlcm1pc3Npb25zLlJlbW92ZTtcblxuICAgIEBWaWV3Q2hpbGQoXCJpbnB1dFVwbG9hZFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0VXBsb2FkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZChcImFuY2hvclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuY2hvcjogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYHMtZmlsZS11cGxvYWQtJHtGaWxlVXBsb2FkQ29tcG9uZW50Lm5leHRJZCsrfWA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjaG9vc2VMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhbmNlbExhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdWNjZXNzVG9vbHRpcDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhY2NlcHQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN1cHBvcnRlZEV4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxGaWxlTmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbGVMaW1pdDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsUHJvZ3Jlc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbFN1Y2Nlc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbEVycm9yOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxSZW1vdmU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvcm1Hcm91cDogRm9ybUNvbnRyb2w7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0ZpbGVVcGxvYWREYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwZXJtaXNzaW9uczogRmlsZVVwbG9hZFBlcm1pc3Npb25zW10gPSBBTExfUEVSTUlTU0lPTlM7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZmlsZXMoZmlsZXM6IEZpbGVEdG9bXSkge1xuICAgICAgICBpZiAodGhpcy5zaG93RmlsZVVwbG9hZERhdGUgJiYgZmlsZXNbMF0/Lm9iamVjdElkKSB7XG4gICAgICAgICAgICB0aGlzLl9nZXRVcGxvYWREYXRlKGZpbGVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maWxlcyA9IGZpbGVzLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzSW1hZ2UoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICBmaWxlLm9iamVjdFVSTCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwod2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB1cGxvYWRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8eyBmaWxlczogRmlsZUR0b1tdIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlbW92ZUZpbGU6IEV2ZW50RW1pdHRlcjx7IGZpbGU6IEZpbGUgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2FuY2VsVXBsb2FkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBkb3dubG9hZEZpbGU6IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXI7IGFuY2hvcjogRWxlbWVudFJlZiB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB2YWxpZGF0ZUVycm9yczogRXZlbnRFbWl0dGVyPFVwbG9hZEVycm9yPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHByaXZhdGUgX2ZpbGVzOiBGaWxlRHRvW10gPSBbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVXN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgXG4gICAgcHVibGljIGlucHV0VmFsdWUgPSBcIlwiO1xuICAgIHB1YmxpYyBtb2RpZmllZERhdGU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbGVVcGxvYWRTZXJ2aWNlOiBGaWxlVXBsb2FkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9ucyA9IHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9uc1xuICAgICAgICAgICAgLm1hcCgoZXh0ZW5zaW9uKSA9PiBleHRlbnNpb25cbiAgICAgICAgICAgIC5yZXBsYWNlKFwiLlwiLCBcIlwiKVxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1VzdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpbGVTZWxlY3QoZmlsZXM6IEZpbGVEdG9bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdGaWxlczogRmlsZUR0b1tdID0gW107XG5cbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5faXNGaWxlTGltaXRFeGNlZWRlZChmaWxlcykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXMsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfTElNSVQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2NsZWFyRmlsZUlucHV0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1Vuc3VwcG9ydGVkRmlsZUV4dGVuc2lvbihmaWxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzOiBbZmlsZV0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFZhbGlkYXRlRXJyb3JzLlVOU1VQUE9SVEVEX0VYVEVOU0lPTixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzRmlsZVNpemVFeGNlZWRlZChmaWxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzOiBbZmlsZV0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFZhbGlkYXRlRXJyb3JzLk1BWF9GSUxFX1NJWkUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5ld0ZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3RmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5jb25jYXQobmV3RmlsZXMpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRIYW5kbGVyLmVtaXQoe1xuICAgICAgICAgICAgICAgIGZpbGVzOiBuZXdGaWxlcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2xlYXJGaWxlSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmVGaWxlKGZpbGU6IEZpbGVEdG8pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZUluZGV4ID0gdGhpcy5maWxlcy5pbmRleE9mKGZpbGUpO1xuICAgICAgICBjb25zdCByZW1vdmVkRmlsZXMgPSB0aGlzLmZpbGVzLnNwbGljZShmaWxlSW5kZXgsIDEpO1xuXG4gICAgICAgIGlmIChyZW1vdmVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUuZW1pdCh7IGZpbGUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DYW5jZWxVcGxvYWQoZmlsZTogRmlsZUR0byk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcblxuICAgICAgICBpZiAoaW5kZXggIT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsVXBsb2FkLmVtaXQoaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2xlYXJGaWxlSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Eb3dsb2FkRmlsZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRGaWxlLmVtaXQoe1xuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBhbmNob3I6IHRoaXMuYW5jaG9yLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVzKCk6IEZpbGVEdG9bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pc0ltYWdlKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC9eaW1hZ2VcXC8vLnRlc3QoZmlsZS50eXBlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pc0ZpbGVMaW1pdEV4Y2VlZGVkKGZpbGVzOiBGaWxlRHRvW10pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVMaW1pdCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVzLmxlbmd0aCArIGZpbGVzLmxlbmd0aCA+IHRoaXMuZmlsZUxpbWl0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzRmlsZVNpemVFeGNlZWRlZChmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tYXhGaWxlU2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlLnNpemUgPiB0aGlzLm1heEZpbGVTaXplO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzVW5zdXBwb3J0ZWRGaWxlRXh0ZW5zaW9uKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLm5hbWVcbiAgICAgICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAgICAgLnBvcCgpXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9ucy5pbmNsdWRlcyhleHRlbnNpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jbGVhckZpbGVJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFVwbG9hZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRVcGxvYWREYXRlKGJsb2JGaWxlOiBGaWxlRHRvW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFibG9iRmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWxlVXBsb2FkU2VydmljZVxuICAgICAgICAgICAgLmdldE1ldGFkYXRhQ3VzdG9tRmllbGQoeyBvYmplY3RJZDogYmxvYkZpbGVbMF0ub2JqZWN0SWQgfSlcbiAgICAgICAgICAgIC50aGVuKChtZXRhZGF0YSkgPT4gdGhpcy5fc2V0TW9kaWZpZWREYXRlKG1ldGFkYXRhKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0TW9kaWZpZWREYXRlKG1ldGFkYXRhOiBMaXN0QmxvYk1ldGFkYXRhUmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaG91ciA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiSEhcIik7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIm1tXCIpO1xuICAgICAgICBjb25zdCBkYXkgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIkREXCIpO1xuICAgICAgICBjb25zdCBtb250aCA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiTU1cIik7XG4gICAgICAgIGNvbnN0IGZ1bGxZZWFyID0gbW9tZW50KG1ldGFkYXRhLm1vZGlmaWVkKS5mb3JtYXQoXCJZWVlZXCIpO1xuXG4gICAgICAgIHRoaXMubW9kaWZpZWREYXRlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5kYXRlX21vZGlmaWVkX2N1c3RvbV9ibG9iXCIsIHtcbiAgICAgICAgICAgIGhvdXIsXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICBmdWxsWWVhcixcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -2,16 +2,16 @@ import { __decorate } from "tslib";
|
|
|
2
2
|
import { CommonModule } from "@angular/common";
|
|
3
3
|
import { NgModule } from "@angular/core";
|
|
4
4
|
import { TranslateModule } from "@ngx-translate/core";
|
|
5
|
-
import { ProgressBarModule } from "primeng/progressbar";
|
|
6
|
-
import { TooltipModule } from "primeng/tooltip";
|
|
7
5
|
import { ButtonModule } from "../button/button.module";
|
|
8
|
-
import {
|
|
6
|
+
import { ProgressBarModule } from "../progressbar/progressbar.module";
|
|
7
|
+
import { TooltipModule } from "../tooltip/tooltip.module";
|
|
8
|
+
import { FileItemComponent } from "./components/file-item/file-item.component";
|
|
9
9
|
import { FileUploadComponent } from "./file-upload.component";
|
|
10
|
+
import { FileUploadService } from "./file-upload.service";
|
|
10
11
|
let FileUploadModule = class FileUploadModule {
|
|
11
12
|
};
|
|
12
13
|
FileUploadModule = __decorate([
|
|
13
14
|
NgModule({
|
|
14
|
-
declarations: [FileUploadComponent],
|
|
15
15
|
imports: [
|
|
16
16
|
CommonModule,
|
|
17
17
|
ButtonModule,
|
|
@@ -19,9 +19,13 @@ FileUploadModule = __decorate([
|
|
|
19
19
|
ProgressBarModule,
|
|
20
20
|
TranslateModule,
|
|
21
21
|
],
|
|
22
|
+
declarations: [
|
|
23
|
+
FileUploadComponent,
|
|
24
|
+
FileItemComponent,
|
|
25
|
+
],
|
|
22
26
|
providers: [FileUploadService],
|
|
23
27
|
exports: [FileUploadComponent],
|
|
24
28
|
})
|
|
25
29
|
], FileUploadModule);
|
|
26
30
|
export { FileUploadModule };
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWlCMUQsSUFBYSxnQkFBZ0IsR0FBN0IsTUFBYSxnQkFBZ0I7Q0FBRyxDQUFBO0FBQW5CLGdCQUFnQjtJQWY1QixRQUFRLENBQUM7UUFDTixPQUFPLEVBQUU7WUFDTCxZQUFZO1lBQ1osWUFBWTtZQUNaLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsZUFBZTtTQUNsQjtRQUNELFlBQVksRUFBRTtZQUNWLG1CQUFtQjtZQUNuQixpQkFBaUI7U0FDcEI7UUFDRCxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztRQUM5QixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztLQUNqQyxDQUFDO0dBQ1csZ0JBQWdCLENBQUc7U0FBbkIsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tIFwiLi4vYnV0dG9uL2J1dHRvbi5tb2R1bGVcIjtcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSBcIi4uL3Byb2dyZXNzYmFyL3Byb2dyZXNzYmFyLm1vZHVsZVwiO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gXCIuLi90b29sdGlwL3Rvb2x0aXAubW9kdWxlXCI7XG5pbXBvcnQgeyBGaWxlSXRlbUNvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvZmlsZS1pdGVtL2ZpbGUtaXRlbS5jb21wb25lbnRcIjtcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tIFwiLi9maWxlLXVwbG9hZC5jb21wb25lbnRcIjtcbmltcG9ydCB7IEZpbGVVcGxvYWRTZXJ2aWNlIH0gZnJvbSBcIi4vZmlsZS11cGxvYWQuc2VydmljZVwiO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBCdXR0b25Nb2R1bGUsXG4gICAgICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgICAgIFByb2dyZXNzQmFyTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgICAgRmlsZUl0ZW1Db21wb25lbnQsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtGaWxlVXBsb2FkU2VydmljZV0sXG4gICAgZXhwb3J0czogW0ZpbGVVcGxvYWRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { __awaiter, __decorate } from "tslib";
|
|
2
2
|
import { Injectable } from "@angular/core";
|
|
3
|
+
import * as moment_ from "moment";
|
|
3
4
|
import { CustomHttpClient } from "../code-editor/infra/utils";
|
|
5
|
+
const moment = moment_;
|
|
4
6
|
let FileUploadService = class FileUploadService {
|
|
5
7
|
constructor() {
|
|
6
8
|
this.BASE_URL_FIELD_CUSTOMIZATION = "platform/field_customization";
|
|
@@ -16,4 +18,4 @@ FileUploadService = __decorate([
|
|
|
16
18
|
Injectable()
|
|
17
19
|
], FileUploadService);
|
|
18
20
|
export { FileUploadService };
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFFbEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFNOUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBR3ZCLElBQWEsaUJBQWlCLEdBQTlCLE1BQWEsaUJBQWlCO0lBQTlCO1FBQ1ksaUNBQTRCLEdBQUcsOEJBQThCLENBQUM7UUFDOUQsVUFBSyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7SUFTMUMsQ0FBQztJQVBnQixzQkFBc0IsQ0FBSSxPQUFnQzs7WUFDbkUsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsSUFBSSxDQUFDLDRCQUE0QiwwQkFBMEIsRUFDOUQsT0FBTyxFQUNQLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ2hDLENBQUM7UUFDTixDQUFDO0tBQUE7Q0FDSixDQUFBO0FBWFksaUJBQWlCO0lBRDdCLFVBQVUsRUFBRTtHQUNBLGlCQUFpQixDQVc3QjtTQVhZLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gXCJtb21lbnRcIjtcblxuaW1wb3J0IHsgQ3VzdG9tSHR0cENsaWVudCB9IGZyb20gXCIuLi9jb2RlLWVkaXRvci9pbmZyYS91dGlsc1wiO1xuaW1wb3J0IHtcbiAgICBMaXN0QmxvYk1ldGFkYXRhUmVxdWVzdCxcbiAgICBMaXN0QmxvYk1ldGFkYXRhUmVzcG9uc2Vcbn0gZnJvbSBcIi4vbW9kZWxzL2xpc3QtYmxvYi1tZXRhZGF0YVwiO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZFNlcnZpY2Uge1xuICAgIHByaXZhdGUgQkFTRV9VUkxfRklFTERfQ1VTVE9NSVpBVElPTiA9IFwicGxhdGZvcm0vZmllbGRfY3VzdG9taXphdGlvblwiO1xuICAgIHByaXZhdGUgVE9LRU4gPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWV0YWRhdGFDdXN0b21GaWVsZDxUPihyZXF1ZXN0OiBMaXN0QmxvYk1ldGFkYXRhUmVxdWVzdCk6IFByb21pc2U8TGlzdEJsb2JNZXRhZGF0YVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBDdXN0b21IdHRwQ2xpZW50LlBPU1QoXG4gICAgICAgICAgICBgJHt0aGlzLkJBU0VfVVJMX0ZJRUxEX0NVU1RPTUlaQVRJT059L3F1ZXJpZXMvZ2V0RmlsZU1ldGFkYXRhYCxcbiAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICB7IHNpZ25hbDogdGhpcy5UT0tFTi5zaWduYWwgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { ValidateErrors } from "./validate-errors";
|
|
2
2
|
export { FileUploadPermissions } from "./file-upload-permissions";
|
|
3
|
-
|
|
3
|
+
export { StorageUnits } from "./storage-units";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maWxlLXVwbG9hZC9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEZpbGVEdG8gfSBmcm9tIFwiLi9maWxlLWR0b1wiO1xuZXhwb3J0IHsgVmFsaWRhdGVFcnJvcnMgfSBmcm9tIFwiLi92YWxpZGF0ZS1lcnJvcnNcIjtcbmV4cG9ydCB7IFVwbG9hZEVycm9yIH0gZnJvbSBcIi4vdXBsb2FkRXJyb3JcIjtcbmV4cG9ydCB7IEZpbGVVcGxvYWRQZXJtaXNzaW9ucyB9IGZyb20gXCIuL2ZpbGUtdXBsb2FkLXBlcm1pc3Npb25zXCI7XG5leHBvcnQgeyBTdG9yYWdlVW5pdHMgfSBmcm9tIFwiLi9zdG9yYWdlLXVuaXRzXCI7XG4iXX0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const StorageUnits = {
|
|
2
|
+
KB: 1024,
|
|
3
|
+
MB: Math.pow(1024, 2),
|
|
4
|
+
GB: Math.pow(1024, 3),
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS11bml0cy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2ZpbGUtdXBsb2FkL21vZGVscy9zdG9yYWdlLXVuaXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUN4QixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckIsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFN0b3JhZ2VVbml0cyA9IHtcbiAgICBLQjogMTAyNCxcbiAgICBNQjogTWF0aC5wb3coMTAyNCwgMiksXG4gICAgR0I6IE1hdGgucG93KDEwMjQsIDMpLFxufTtcbiJdfQ==
|