@seniorsistemas/angular-components 15.2.0 → 15.3.0
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 +44 -21
- 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/file-upload.component.d.ts +8 -5
- package/components/file-upload/models/validate-errors.d.ts +2 -1
- package/esm2015/components/file-upload/file-upload.component.js +37 -15
- package/esm2015/components/file-upload/models/validate-errors.js +2 -1
- package/esm5/components/file-upload/file-upload.component.js +45 -23
- package/esm5/components/file-upload/models/validate-errors.js +2 -1
- package/fesm2015/seniorsistemas-angular-components.js +36 -13
- package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
- package/fesm5/seniorsistemas-angular-components.js +44 -21
- package/fesm5/seniorsistemas-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/seniorsistemas-angular-components.metadata.json +1 -1
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { AfterContentInit, ElementRef, EventEmitter, OnDestroy } from "@angular/core";
|
|
1
|
+
import { AfterContentInit, 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 { FileDto } from "./models/file-dto";
|
|
5
5
|
import { ValidateErrors } from "./models/validate-errors";
|
|
6
|
-
export declare class FileUploadComponent implements OnDestroy, AfterContentInit {
|
|
6
|
+
export declare class FileUploadComponent implements OnInit, OnDestroy, AfterContentInit {
|
|
7
7
|
private readonly sanitizer;
|
|
8
8
|
static nextId: number;
|
|
9
|
-
inputValue: string;
|
|
10
9
|
private readonly inputUpload;
|
|
11
10
|
private readonly anchor;
|
|
12
11
|
id: string;
|
|
@@ -16,6 +15,7 @@ export declare class FileUploadComponent implements OnDestroy, AfterContentInit
|
|
|
16
15
|
successTooltip: string;
|
|
17
16
|
multiple: boolean;
|
|
18
17
|
accept: string;
|
|
18
|
+
supportedExtensions: string[];
|
|
19
19
|
ariaLabelFileName: string;
|
|
20
20
|
maxFileSize: number;
|
|
21
21
|
fileLimit: number;
|
|
@@ -25,6 +25,7 @@ export declare class FileUploadComponent implements OnDestroy, AfterContentInit
|
|
|
25
25
|
ariaLabelRemove: string;
|
|
26
26
|
formGroup: FormControl;
|
|
27
27
|
disabled: boolean;
|
|
28
|
+
set files(files: FileDto[]);
|
|
28
29
|
uploadHandler: EventEmitter<{
|
|
29
30
|
files: FileDto[];
|
|
30
31
|
}>;
|
|
@@ -37,10 +38,12 @@ export declare class FileUploadComponent implements OnDestroy, AfterContentInit
|
|
|
37
38
|
anchor: ElementRef;
|
|
38
39
|
}>;
|
|
39
40
|
validateErros: EventEmitter<ValidateErrors>;
|
|
40
|
-
isSmallDevice: boolean;
|
|
41
41
|
private _files;
|
|
42
42
|
private readonly ngUsubscribe;
|
|
43
|
+
isSmallDevice: boolean;
|
|
44
|
+
inputValue: string;
|
|
43
45
|
constructor(sanitizer: DomSanitizer);
|
|
46
|
+
ngOnInit(): void;
|
|
44
47
|
ngOnDestroy(): void;
|
|
45
48
|
ngAfterContentInit(): void;
|
|
46
49
|
onResize(): void;
|
|
@@ -48,10 +51,10 @@ export declare class FileUploadComponent implements OnDestroy, AfterContentInit
|
|
|
48
51
|
onRemoveFile(file: FileDto): void;
|
|
49
52
|
onCancelUpload(index: number): void;
|
|
50
53
|
onDowloadFile(index: number): void;
|
|
51
|
-
set files(files: FileDto[]);
|
|
52
54
|
get files(): FileDto[];
|
|
53
55
|
private update;
|
|
54
56
|
private isImage;
|
|
55
57
|
private isFileLimitExceeded;
|
|
56
58
|
private isFileSizeExceeded;
|
|
59
|
+
private isUnsupportedFileExtension;
|
|
57
60
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var FileUploadComponent_1;
|
|
2
2
|
import { __decorate } from "tslib";
|
|
3
|
-
import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from "@angular/core";
|
|
3
|
+
import { Component, EventEmitter, HostListener, Input, Output, ViewChild, } from "@angular/core";
|
|
4
4
|
import { DomSanitizer } from "@angular/platform-browser";
|
|
5
5
|
import { Subject } from "rxjs";
|
|
6
6
|
import { ValidateErrors } from "./models/validate-errors";
|
|
@@ -8,12 +8,12 @@ import { Breakpoints } from "../utils";
|
|
|
8
8
|
let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
9
9
|
constructor(sanitizer) {
|
|
10
10
|
this.sanitizer = sanitizer;
|
|
11
|
-
this.inputValue = "";
|
|
12
11
|
this.id = `s-file-upload-${FileUploadComponent_1.nextId++}`;
|
|
13
12
|
this.chooseLabel = "Anexar arquivos";
|
|
14
13
|
this.removeLabel = "Remover";
|
|
15
14
|
this.cancelLabel = "Cancelar";
|
|
16
15
|
this.successTooltip = "Arquivo anexado com sucesso";
|
|
16
|
+
this.supportedExtensions = [];
|
|
17
17
|
this.ariaLabelProgress = "Carregando arquivo";
|
|
18
18
|
this.disabled = false;
|
|
19
19
|
this.uploadHandler = new EventEmitter();
|
|
@@ -23,6 +23,19 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
23
23
|
this.validateErros = new EventEmitter();
|
|
24
24
|
this._files = [];
|
|
25
25
|
this.ngUsubscribe = new Subject();
|
|
26
|
+
this.inputValue = "";
|
|
27
|
+
}
|
|
28
|
+
set files(files) {
|
|
29
|
+
this._files = files.map(file => {
|
|
30
|
+
if (this.isImage(file)) {
|
|
31
|
+
file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(file));
|
|
32
|
+
}
|
|
33
|
+
return file;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.supportedExtensions = this.supportedExtensions
|
|
38
|
+
.map(extension => extension.replace(".", "").toLowerCase());
|
|
26
39
|
}
|
|
27
40
|
ngOnDestroy() {
|
|
28
41
|
this.ngUsubscribe.next();
|
|
@@ -44,9 +57,13 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
44
57
|
return;
|
|
45
58
|
}
|
|
46
59
|
for (const file of files) {
|
|
60
|
+
if (this.isUnsupportedFileExtension(file)) {
|
|
61
|
+
this.validateErros.emit(ValidateErrors.UNSUPPORTED_EXTENSION);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
47
64
|
if (this.isFileSizeExceeded(file)) {
|
|
48
65
|
this.validateErros.emit(ValidateErrors.MAX_FILE_SIZE);
|
|
49
|
-
|
|
66
|
+
continue;
|
|
50
67
|
}
|
|
51
68
|
newFiles.push(file);
|
|
52
69
|
}
|
|
@@ -77,14 +94,6 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
77
94
|
anchor: this.anchor,
|
|
78
95
|
});
|
|
79
96
|
}
|
|
80
|
-
set files(files) {
|
|
81
|
-
this._files = files.map(file => {
|
|
82
|
-
if (this.isImage(file)) {
|
|
83
|
-
file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(file));
|
|
84
|
-
}
|
|
85
|
-
return file;
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
97
|
get files() {
|
|
89
98
|
return this._files;
|
|
90
99
|
}
|
|
@@ -107,6 +116,16 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
107
116
|
}
|
|
108
117
|
return file.size > this.maxFileSize;
|
|
109
118
|
}
|
|
119
|
+
isUnsupportedFileExtension(file) {
|
|
120
|
+
var _a;
|
|
121
|
+
if ((_a = this.supportedExtensions) === null || _a === void 0 ? void 0 : _a.length) {
|
|
122
|
+
const extension = file.name.split(".").pop().toLowerCase();
|
|
123
|
+
if (!this.supportedExtensions.includes(extension)) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
110
129
|
};
|
|
111
130
|
FileUploadComponent.nextId = 0;
|
|
112
131
|
FileUploadComponent.ctorParameters = () => [
|
|
@@ -139,6 +158,9 @@ __decorate([
|
|
|
139
158
|
__decorate([
|
|
140
159
|
Input()
|
|
141
160
|
], FileUploadComponent.prototype, "accept", void 0);
|
|
161
|
+
__decorate([
|
|
162
|
+
Input()
|
|
163
|
+
], FileUploadComponent.prototype, "supportedExtensions", void 0);
|
|
142
164
|
__decorate([
|
|
143
165
|
Input()
|
|
144
166
|
], FileUploadComponent.prototype, "ariaLabelFileName", void 0);
|
|
@@ -166,6 +188,9 @@ __decorate([
|
|
|
166
188
|
__decorate([
|
|
167
189
|
Input()
|
|
168
190
|
], FileUploadComponent.prototype, "disabled", void 0);
|
|
191
|
+
__decorate([
|
|
192
|
+
Input()
|
|
193
|
+
], FileUploadComponent.prototype, "files", null);
|
|
169
194
|
__decorate([
|
|
170
195
|
Output()
|
|
171
196
|
], FileUploadComponent.prototype, "uploadHandler", void 0);
|
|
@@ -184,9 +209,6 @@ __decorate([
|
|
|
184
209
|
__decorate([
|
|
185
210
|
HostListener("window:resize")
|
|
186
211
|
], FileUploadComponent.prototype, "onResize", null);
|
|
187
|
-
__decorate([
|
|
188
|
-
Input()
|
|
189
|
-
], FileUploadComponent.prototype, "files", null);
|
|
190
212
|
FileUploadComponent = FileUploadComponent_1 = __decorate([
|
|
191
213
|
Component({
|
|
192
214
|
selector: "s-file-upload",
|
|
@@ -195,4 +217,4 @@ FileUploadComponent = FileUploadComponent_1 = __decorate([
|
|
|
195
217
|
})
|
|
196
218
|
], FileUploadComponent);
|
|
197
219
|
export { FileUploadComponent };
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFvQixTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU92QyxJQUFhLG1CQUFtQiwyQkFBaEMsTUFBYSxtQkFBbUI7SUEwRTVCLFlBQTZCLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUF2RTdDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFTaEIsT0FBRSxHQUFHLGlCQUFpQixxQkFBbUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBR3JELGdCQUFXLEdBQUcsaUJBQWlCLENBQUM7UUFHaEMsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFHeEIsZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFHekIsbUJBQWMsR0FBRyw2QkFBNkIsQ0FBQztRQWtCL0Msc0JBQWlCLEdBQUcsb0JBQW9CLENBQUM7UUFlekMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUdqQixrQkFBYSxHQUF1QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZFLGVBQVUsR0FBaUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU5RCxpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXhELGlCQUFZLEdBQXdELElBQUksWUFBWSxFQUFFLENBQUM7UUFFdkYsa0JBQWEsR0FBaUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdoRSxXQUFNLEdBQWMsRUFBRSxDQUFDO1FBQ2QsaUJBQVksR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVMLENBQUM7SUFFbEQsV0FBVztRQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBR00sUUFBUTtRQUNYLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQWdCO1FBQ2hDLE1BQU0sUUFBUSxHQUFjLEVBQUUsQ0FBQztRQUUvQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUNuQjtRQUVELElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN2RCxPQUFPO1NBQ1Y7UUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN0QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN0RCxPQUFPO2FBQ1Y7WUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLEtBQUssRUFBRSxRQUFRO2FBQ2xCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDN0M7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLElBQWE7UUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXJELElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWE7UUFDL0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWpELElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNuQixLQUFLO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3RCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCxJQUFXLEtBQUssQ0FBQyxLQUFnQjtRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUM1RjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU8sTUFBTTtRQUNWLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUMzRCxDQUFDO0lBRU8sT0FBTyxDQUFDLElBQVU7UUFDdEIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsS0FBZ0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBVTtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3hDLENBQUM7Q0FDSixDQUFBO0FBbExpQiwwQkFBTSxHQUFHLENBQUMsQ0FBQzs7WUF5RWUsWUFBWTs7QUFwRXBEO0lBREMsU0FBUyxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzt3REFDSDtBQUd6QztJQURDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7bURBQ0g7QUFHcEM7SUFEQyxLQUFLLEVBQUU7K0NBQ29EO0FBRzVEO0lBREMsS0FBSyxFQUFFO3dEQUMrQjtBQUd2QztJQURDLEtBQUssRUFBRTt3REFDdUI7QUFHL0I7SUFEQyxLQUFLLEVBQUU7d0RBQ3dCO0FBR2hDO0lBREMsS0FBSyxFQUFFOzJEQUM4QztBQUd0RDtJQURDLEtBQUssRUFBRTtxREFDaUI7QUFHekI7SUFEQyxLQUFLLEVBQUU7bURBQ2M7QUFHdEI7SUFEQyxLQUFLLEVBQUU7OERBQ3lCO0FBR2pDO0lBREMsS0FBSyxFQUFFO3dEQUNtQjtBQUczQjtJQURDLEtBQUssRUFBRTtzREFDaUI7QUFHekI7SUFEQyxLQUFLLEVBQUU7OERBQ3dDO0FBR2hEO0lBREMsS0FBSyxFQUFFOzZEQUN3QjtBQUdoQztJQURDLEtBQUssRUFBRTsyREFDc0I7QUFHOUI7SUFEQyxLQUFLLEVBQUU7NERBQ3VCO0FBRy9CO0lBREMsS0FBSyxFQUFFO3NEQUNzQjtBQUc5QjtJQURDLEtBQUssRUFBRTtxREFDZ0I7QUFHeEI7SUFEQyxNQUFNLEVBQUU7MERBQ3FFO0FBRTlFO0lBREMsTUFBTSxFQUFFO3VEQUM0RDtBQUVyRTtJQURDLE1BQU0sRUFBRTt5REFDc0Q7QUFFL0Q7SUFEQyxNQUFNLEVBQUU7eURBQ3FGO0FBRTlGO0lBREMsTUFBTSxFQUFFOzBEQUMrRDtBQWtCeEU7SUFEQyxZQUFZLENBQUMsZUFBZSxDQUFDO21EQUc3QjtBQXdERDtJQURDLEtBQUssRUFBRTtnREFRUDtBQXZKUSxtQkFBbUI7SUFML0IsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGVBQWU7UUFDekIsK3VLQUEyQzs7S0FFOUMsQ0FBQztHQUNXLG1CQUFtQixDQW1ML0I7U0FuTFksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQgeyBGaWxlRHRvIH0gZnJvbSBcIi4vbW9kZWxzL2ZpbGUtZHRvXCI7XG5pbXBvcnQgeyBWYWxpZGF0ZUVycm9ycyB9IGZyb20gXCIuL21vZGVscy92YWxpZGF0ZS1lcnJvcnNcIjtcbmltcG9ydCB7IEJyZWFrcG9pbnRzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtZmlsZS11cGxvYWRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBwdWJsaWMgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgICBwdWJsaWMgaW5wdXRWYWx1ZSA9IFwiXCI7XG5cbiAgICBAVmlld0NoaWxkKFwiaW5wdXRVcGxvYWRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFVwbG9hZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoXCJhbmNob3JcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbmNob3I6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBzLWZpbGUtdXBsb2FkLSR7RmlsZVVwbG9hZENvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2hvb3NlTGFiZWwgPSBcIkFuZXhhciBhcnF1aXZvc1wiO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlTGFiZWwgPSBcIlJlbW92ZXJcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhbmNlbExhYmVsID0gXCJDYW5jZWxhclwiO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3VjY2Vzc1Rvb2x0aXAgPSBcIkFycXVpdm8gYW5leGFkbyBjb20gc3VjZXNzb1wiO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhY2NlcHQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbEZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhGaWxlU2l6ZTogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsZUxpbWl0OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxQcm9ncmVzcyA9IFwiQ2FycmVnYW5kbyBhcnF1aXZvXCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxTdWNjZXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxFcnJvcjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsUmVtb3ZlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Db250cm9sO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB1cGxvYWRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8eyBmaWxlczogRmlsZUR0b1tdIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZW1vdmVGaWxlOiBFdmVudEVtaXR0ZXI8eyBmaWxlOiBGaWxlIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxVcGxvYWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBkb3dubG9hZEZpbGU6IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXI7IGFuY2hvcjogRWxlbWVudFJlZiB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmFsaWRhdGVFcnJvczogRXZlbnRFbWl0dGVyPFZhbGlkYXRlRXJyb3JzPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBpc1NtYWxsRGV2aWNlOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2ZpbGVzOiBGaWxlRHRvW10gPSBbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVXN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7IH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1VzdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIilcbiAgICBwdWJsaWMgb25SZXNpemUoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRmlsZVNlbGVjdChmaWxlczogRmlsZUR0b1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld0ZpbGVzOiBGaWxlRHRvW10gPSBbXTtcblxuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRmlsZUxpbWl0RXhjZWVkZWQoZmlsZXMpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlRXJyb3MuZW1pdChWYWxpZGF0ZUVycm9ycy5NQVhfRklMRV9MSU1JVCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRmlsZVNpemVFeGNlZWRlZChmaWxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcy5lbWl0KFZhbGlkYXRlRXJyb3JzLk1BWF9GSUxFX1NJWkUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld0ZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3RmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5jb25jYXQobmV3RmlsZXMpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRIYW5kbGVyLmVtaXQoe1xuICAgICAgICAgICAgICAgIGZpbGVzOiBuZXdGaWxlcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFVwbG9hZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblJlbW92ZUZpbGUoZmlsZTogRmlsZUR0byk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlSW5kZXggPSB0aGlzLmZpbGVzLmluZGV4T2YoZmlsZSk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRGaWxlcyA9IHRoaXMuZmlsZXMuc3BsaWNlKGZpbGVJbmRleCwgMSk7XG5cbiAgICAgICAgaWYgKHJlbW92ZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRmlsZS5lbWl0KHsgZmlsZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNhbmNlbFVwbG9hZChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRGaWxlcyA9IHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICBpZiAocmVtb3ZlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxVcGxvYWQuZW1pdChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Eb3dsb2FkRmlsZShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRGaWxlLmVtaXQoe1xuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBhbmNob3I6IHRoaXMuYW5jaG9yLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZmlsZXMoZmlsZXM6IEZpbGVEdG9bXSkge1xuICAgICAgICB0aGlzLl9maWxlcyA9IGZpbGVzLm1hcChmaWxlID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSW1hZ2UoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICBmaWxlLm9iamVjdFVSTCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwod2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsZXMoKTogRmlsZUR0b1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlKCkge1xuICAgICAgICBjb25zdCB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB0aGlzLmlzU21hbGxEZXZpY2UgPSB3aW5kb3dXaWR0aCA8PSBCcmVha3BvaW50cy5TTV9NQVg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ltYWdlKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC9eaW1hZ2VcXC8vLnRlc3QoZmlsZS50eXBlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsZUxpbWl0RXhjZWVkZWQoZmlsZXM6IEZpbGVEdG9bXSkge1xuICAgICAgICBpZiAoIXRoaXMuZmlsZUxpbWl0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZXMubGVuZ3RoICsgZmlsZXMubGVuZ3RoID4gdGhpcy5maWxlTGltaXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpbGVTaXplRXhjZWVkZWQoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMubWF4RmlsZVNpemUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZTtcbiAgICB9XG59XG4iXX0=
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBT3ZDLElBQWEsbUJBQW1CLDJCQUFoQyxNQUFhLG1CQUFtQjtJQStDNUIsWUFBNkIsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQXJDcEMsT0FBRSxHQUFHLGlCQUFpQixxQkFBbUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ3JELGdCQUFXLEdBQUcsaUJBQWlCLENBQUM7UUFDaEMsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFDekIsbUJBQWMsR0FBRyw2QkFBNkIsQ0FBQztRQUcvQyx3QkFBbUIsR0FBYSxFQUFFLENBQUM7UUFJbkMsc0JBQWlCLEdBQUcsb0JBQW9CLENBQUM7UUFLekMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVVoQixrQkFBYSxHQUF1QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZFLGVBQVUsR0FBaUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5RCxpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hE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REFBNEI7QUFDM0I7SUFBUixLQUFLLEVBQUU7c0RBQTBCO0FBQ3pCO0lBQVIsS0FBSyxFQUFFOzhEQUFpRDtBQUNoRDtJQUFSLEtBQUssRUFBRTs2REFBaUM7QUFDaEM7SUFBUixLQUFLLEVBQUU7MkRBQStCO0FBQzlCO0lBQVIsS0FBSyxFQUFFOzREQUFnQztBQUMvQjtJQUFSLEtBQUssRUFBRTtzREFBK0I7QUFDOUI7SUFBUixLQUFLLEVBQUU7cURBQXlCO0FBQ3hCO0lBQVIsS0FBSyxFQUFFO2dEQU9QO0FBRVM7SUFBVCxNQUFNLEVBQUU7MERBQStFO0FBQzlFO0lBQVQsTUFBTSxFQUFFO3VEQUFzRTtBQUNyRTtJQUFULE1BQU0sRUFBRTt5REFBZ0U7QUFDL0Q7SUFBVCxNQUFNLEVBQUU7eURBQStGO0FBQzlGO0lBQVQsTUFBTSxFQUFFOzBEQUF5RTtBQXdCbEY7SUFEQyxZQUFZLENBQUMsZUFBZSxDQUFDO21EQUc3QjtBQWxFUSxtQkFBbUI7SUFML0IsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGVBQWU7UUFDekIsK3VLQUEyQzs7S0FFOUMsQ0FBQztHQUNXLG1CQUFtQixDQW1LL0I7U0FuS1ksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQgeyBGaWxlRHRvIH0gZnJvbSBcIi4vbW9kZWxzL2ZpbGUtZHRvXCI7XG5pbXBvcnQgeyBWYWxpZGF0ZUVycm9ycyB9IGZyb20gXCIuL21vZGVscy92YWxpZGF0ZS1lcnJvcnNcIjtcbmltcG9ydCB7IEJyZWFrcG9pbnRzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtZmlsZS11cGxvYWRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIHB1YmxpYyBzdGF0aWMgbmV4dElkID0gMDtcblxuXG4gICAgQFZpZXdDaGlsZChcImlucHV0VXBsb2FkXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRVcGxvYWQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKFwiYW5jaG9yXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgYW5jaG9yOiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KCkgcHVibGljIGlkID0gYHMtZmlsZS11cGxvYWQtJHtGaWxlVXBsb2FkQ29tcG9uZW50Lm5leHRJZCsrfWA7XG4gICAgQElucHV0KCkgcHVibGljIGNob29zZUxhYmVsID0gXCJBbmV4YXIgYXJxdWl2b3NcIjtcbiAgICBASW5wdXQoKSBwdWJsaWMgcmVtb3ZlTGFiZWwgPSBcIlJlbW92ZXJcIjtcbiAgICBASW5wdXQoKSBwdWJsaWMgY2FuY2VsTGFiZWwgPSBcIkNhbmNlbGFyXCI7XG4gICAgQElucHV0KCkgcHVibGljIHN1Y2Nlc3NUb29sdGlwID0gXCJBcnF1aXZvIGFuZXhhZG8gY29tIHN1Y2Vzc29cIjtcbiAgICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGFjY2VwdDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzdXBwb3J0ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhcmlhTGFiZWxGaWxlTmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXhGaWxlU2l6ZTogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmaWxlTGltaXQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBwdWJsaWMgYXJpYUxhYmVsUHJvZ3Jlc3MgPSBcIkNhcnJlZ2FuZG8gYXJxdWl2b1wiO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhcmlhTGFiZWxTdWNjZXNzOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGFyaWFMYWJlbEVycm9yOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGFyaWFMYWJlbFJlbW92ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Db250cm9sO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZXQgZmlsZXMoZmlsZXM6IEZpbGVEdG9bXSkge1xuICAgICAgICB0aGlzLl9maWxlcyA9IGZpbGVzLm1hcChmaWxlID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSW1hZ2UoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICBmaWxlLm9iamVjdFVSTCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwod2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBwdWJsaWMgdXBsb2FkSGFuZGxlcjogRXZlbnRFbWl0dGVyPHsgZmlsZXM6IEZpbGVEdG9bXSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIHJlbW92ZUZpbGU6IEV2ZW50RW1pdHRlcjx7IGZpbGU6IEZpbGUgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBjYW5jZWxVcGxvYWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgZG93bmxvYWRGaWxlOiBFdmVudEVtaXR0ZXI8eyBpbmRleDogbnVtYmVyOyBhbmNob3I6IEVsZW1lbnRSZWYgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyB2YWxpZGF0ZUVycm9zOiBFdmVudEVtaXR0ZXI8VmFsaWRhdGVFcnJvcnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBfZmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwdWJsaWMgaXNTbWFsbERldmljZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgaW5wdXRWYWx1ZSA9IFwiXCI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7IH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zID0gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAubWFwKGV4dGVuc2lvbiA9PiBleHRlbnNpb24ucmVwbGFjZShcIi5cIiwgXCJcIikudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxuICAgIHB1YmxpYyBvblJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaWxlU2VsZWN0KGZpbGVzOiBGaWxlRHRvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3RmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNGaWxlTGltaXRFeGNlZWRlZChmaWxlcykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcy5lbWl0KFZhbGlkYXRlRXJyb3JzLk1BWF9GSUxFX0xJTUlUKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNVbnN1cHBvcnRlZEZpbGVFeHRlbnNpb24oZmlsZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlRXJyb3MuZW1pdChWYWxpZGF0ZUVycm9ycy5VTlNVUFBPUlRFRF9FWFRFTlNJT04pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZpbGVTaXplRXhjZWVkZWQoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlRXJyb3MuZW1pdChWYWxpZGF0ZUVycm9ycy5NQVhfRklMRV9TSVpFKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbmV3RmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmNvbmNhdChuZXdGaWxlcyk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEhhbmRsZXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXM6IG5ld0ZpbGVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmlucHV0VXBsb2FkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVtb3ZlRmlsZShmaWxlOiBGaWxlRHRvKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbGVJbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEZpbGVzID0gdGhpcy5maWxlcy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcblxuICAgICAgICBpZiAocmVtb3ZlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlLmVtaXQoeyBmaWxlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2FuY2VsVXBsb2FkKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEZpbGVzID0gdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIGlmIChyZW1vdmVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbFVwbG9hZC5lbWl0KGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkRvd2xvYWRGaWxlKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUuZW1pdCh7XG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGFuY2hvcjogdGhpcy5hbmNob3IsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsZXMoKTogRmlsZUR0b1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlKCkge1xuICAgICAgICBjb25zdCB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB0aGlzLmlzU21hbGxEZXZpY2UgPSB3aW5kb3dXaWR0aCA8PSBCcmVha3BvaW50cy5TTV9NQVg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ltYWdlKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC9eaW1hZ2VcXC8vLnRlc3QoZmlsZS50eXBlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsZUxpbWl0RXhjZWVkZWQoZmlsZXM6IEZpbGVEdG9bXSkge1xuICAgICAgICBpZiAoIXRoaXMuZmlsZUxpbWl0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZXMubGVuZ3RoICsgZmlsZXMubGVuZ3RoID4gdGhpcy5maWxlTGltaXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpbGVTaXplRXhjZWVkZWQoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMubWF4RmlsZVNpemUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVW5zdXBwb3J0ZWRGaWxlRXh0ZW5zaW9uKGZpbGU6IEZpbGUpIHtcbiAgICAgICAgaWYgKHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpLnBvcCgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9ucy5pbmNsdWRlcyhleHRlbnNpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -2,5 +2,6 @@ export var ValidateErrors;
|
|
|
2
2
|
(function (ValidateErrors) {
|
|
3
3
|
ValidateErrors["MAX_FILE_SIZE"] = "MAX_FILE_SIZE";
|
|
4
4
|
ValidateErrors["MAX_FILE_LIMIT"] = "MAX_FILE_LIMIT";
|
|
5
|
+
ValidateErrors["UNSUPPORTED_EXTENSION"] = "UNSUPPORTED_EXTENSION";
|
|
5
6
|
})(ValidateErrors || (ValidateErrors = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtZXJyb3JzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvbW9kZWxzL3ZhbGlkYXRlLWVycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3ZCLGlEQUErQixDQUFBO0lBQy9CLG1EQUFpQyxDQUFBO0lBQ2pDLGlFQUErQyxDQUFBO0FBQ2xELENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFZhbGlkYXRlRXJyb3JzIHtcbiAgIE1BWF9GSUxFX1NJWkUgPSBcIk1BWF9GSUxFX1NJWkVcIixcbiAgIE1BWF9GSUxFX0xJTUlUID0gXCJNQVhfRklMRV9MSU1JVFwiLFxuICAgVU5TVVBQT1JURURfRVhURU5TSU9OID0gXCJVTlNVUFBPUlRFRF9FWFRFTlNJT05cIixcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate, __values } from "tslib";
|
|
2
|
-
import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from "@angular/core";
|
|
2
|
+
import { Component, EventEmitter, HostListener, Input, Output, ViewChild, } from "@angular/core";
|
|
3
3
|
import { DomSanitizer } from "@angular/platform-browser";
|
|
4
4
|
import { Subject } from "rxjs";
|
|
5
5
|
import { ValidateErrors } from "./models/validate-errors";
|
|
@@ -7,12 +7,12 @@ import { Breakpoints } from "../utils";
|
|
|
7
7
|
var FileUploadComponent = /** @class */ (function () {
|
|
8
8
|
function FileUploadComponent(sanitizer) {
|
|
9
9
|
this.sanitizer = sanitizer;
|
|
10
|
-
this.inputValue = "";
|
|
11
10
|
this.id = "s-file-upload-" + FileUploadComponent_1.nextId++;
|
|
12
11
|
this.chooseLabel = "Anexar arquivos";
|
|
13
12
|
this.removeLabel = "Remover";
|
|
14
13
|
this.cancelLabel = "Cancelar";
|
|
15
14
|
this.successTooltip = "Arquivo anexado com sucesso";
|
|
15
|
+
this.supportedExtensions = [];
|
|
16
16
|
this.ariaLabelProgress = "Carregando arquivo";
|
|
17
17
|
this.disabled = false;
|
|
18
18
|
this.uploadHandler = new EventEmitter();
|
|
@@ -22,8 +22,29 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
22
22
|
this.validateErros = new EventEmitter();
|
|
23
23
|
this._files = [];
|
|
24
24
|
this.ngUsubscribe = new Subject();
|
|
25
|
+
this.inputValue = "";
|
|
25
26
|
}
|
|
26
27
|
FileUploadComponent_1 = FileUploadComponent;
|
|
28
|
+
Object.defineProperty(FileUploadComponent.prototype, "files", {
|
|
29
|
+
get: function () {
|
|
30
|
+
return this._files;
|
|
31
|
+
},
|
|
32
|
+
set: function (files) {
|
|
33
|
+
var _this = this;
|
|
34
|
+
this._files = files.map(function (file) {
|
|
35
|
+
if (_this.isImage(file)) {
|
|
36
|
+
file.objectURL = _this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(file));
|
|
37
|
+
}
|
|
38
|
+
return file;
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
enumerable: true,
|
|
42
|
+
configurable: true
|
|
43
|
+
});
|
|
44
|
+
FileUploadComponent.prototype.ngOnInit = function () {
|
|
45
|
+
this.supportedExtensions = this.supportedExtensions
|
|
46
|
+
.map(function (extension) { return extension.replace(".", "").toLowerCase(); });
|
|
47
|
+
};
|
|
27
48
|
FileUploadComponent.prototype.ngOnDestroy = function () {
|
|
28
49
|
this.ngUsubscribe.next();
|
|
29
50
|
this.ngUsubscribe.complete();
|
|
@@ -47,9 +68,13 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
47
68
|
try {
|
|
48
69
|
for (var files_1 = __values(files), files_1_1 = files_1.next(); !files_1_1.done; files_1_1 = files_1.next()) {
|
|
49
70
|
var file = files_1_1.value;
|
|
71
|
+
if (this.isUnsupportedFileExtension(file)) {
|
|
72
|
+
this.validateErros.emit(ValidateErrors.UNSUPPORTED_EXTENSION);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
50
75
|
if (this.isFileSizeExceeded(file)) {
|
|
51
76
|
this.validateErros.emit(ValidateErrors.MAX_FILE_SIZE);
|
|
52
|
-
|
|
77
|
+
continue;
|
|
53
78
|
}
|
|
54
79
|
newFiles.push(file);
|
|
55
80
|
}
|
|
@@ -88,22 +113,6 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
88
113
|
anchor: this.anchor,
|
|
89
114
|
});
|
|
90
115
|
};
|
|
91
|
-
Object.defineProperty(FileUploadComponent.prototype, "files", {
|
|
92
|
-
get: function () {
|
|
93
|
-
return this._files;
|
|
94
|
-
},
|
|
95
|
-
set: function (files) {
|
|
96
|
-
var _this = this;
|
|
97
|
-
this._files = files.map(function (file) {
|
|
98
|
-
if (_this.isImage(file)) {
|
|
99
|
-
file.objectURL = _this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(file));
|
|
100
|
-
}
|
|
101
|
-
return file;
|
|
102
|
-
});
|
|
103
|
-
},
|
|
104
|
-
enumerable: true,
|
|
105
|
-
configurable: true
|
|
106
|
-
});
|
|
107
116
|
FileUploadComponent.prototype.update = function () {
|
|
108
117
|
var windowWidth = window.innerWidth;
|
|
109
118
|
this.isSmallDevice = windowWidth <= Breakpoints.SM_MAX;
|
|
@@ -123,6 +132,16 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
123
132
|
}
|
|
124
133
|
return file.size > this.maxFileSize;
|
|
125
134
|
};
|
|
135
|
+
FileUploadComponent.prototype.isUnsupportedFileExtension = function (file) {
|
|
136
|
+
var _a;
|
|
137
|
+
if ((_a = this.supportedExtensions) === null || _a === void 0 ? void 0 : _a.length) {
|
|
138
|
+
var extension = file.name.split(".").pop().toLowerCase();
|
|
139
|
+
if (!this.supportedExtensions.includes(extension)) {
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return false;
|
|
144
|
+
};
|
|
126
145
|
var FileUploadComponent_1;
|
|
127
146
|
FileUploadComponent.nextId = 0;
|
|
128
147
|
FileUploadComponent.ctorParameters = function () { return [
|
|
@@ -155,6 +174,9 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
155
174
|
__decorate([
|
|
156
175
|
Input()
|
|
157
176
|
], FileUploadComponent.prototype, "accept", void 0);
|
|
177
|
+
__decorate([
|
|
178
|
+
Input()
|
|
179
|
+
], FileUploadComponent.prototype, "supportedExtensions", void 0);
|
|
158
180
|
__decorate([
|
|
159
181
|
Input()
|
|
160
182
|
], FileUploadComponent.prototype, "ariaLabelFileName", void 0);
|
|
@@ -182,6 +204,9 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
182
204
|
__decorate([
|
|
183
205
|
Input()
|
|
184
206
|
], FileUploadComponent.prototype, "disabled", void 0);
|
|
207
|
+
__decorate([
|
|
208
|
+
Input()
|
|
209
|
+
], FileUploadComponent.prototype, "files", null);
|
|
185
210
|
__decorate([
|
|
186
211
|
Output()
|
|
187
212
|
], FileUploadComponent.prototype, "uploadHandler", void 0);
|
|
@@ -200,9 +225,6 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
200
225
|
__decorate([
|
|
201
226
|
HostListener("window:resize")
|
|
202
227
|
], FileUploadComponent.prototype, "onResize", null);
|
|
203
|
-
__decorate([
|
|
204
|
-
Input()
|
|
205
|
-
], FileUploadComponent.prototype, "files", null);
|
|
206
228
|
FileUploadComponent = FileUploadComponent_1 = __decorate([
|
|
207
229
|
Component({
|
|
208
230
|
selector: "s-file-upload",
|
|
@@ -213,4 +235,4 @@ var FileUploadComponent = /** @class */ (function () {
|
|
|
213
235
|
return FileUploadComponent;
|
|
214
236
|
}());
|
|
215
237
|
export { FileUploadComponent };
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBT3ZDO0lBMEVJLDZCQUE2QixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBdkU3QyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBU2hCLE9BQUUsR0FBRyxtQkFBaUIscUJBQW1CLENBQUMsTUFBTSxFQUFJLENBQUM7UUFHckQsZ0JBQVcsR0FBRyxpQkFBaUIsQ0FBQztRQUdoQyxnQkFBVyxHQUFHLFNBQVMsQ0FBQztRQUd4QixnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUd6QixtQkFBYyxHQUFHLDZCQUE2QixDQUFDO1FBa0IvQyxzQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztRQWV6QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLGtCQUFhLEdBQXVDLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdkUsZUFBVSxHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTlELGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEQsaUJBQVksR0FBd0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV2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bkxELElBbUxDO1NBbkxZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgRmlsZUR0byB9IGZyb20gXCIuL21vZGVscy9maWxlLWR0b1wiO1xuaW1wb3J0IHsgVmFsaWRhdGVFcnJvcnMgfSBmcm9tIFwiLi9tb2RlbHMvdmFsaWRhdGUtZXJyb3JzXCI7XG5pbXBvcnQgeyBCcmVha3BvaW50cyB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJzLWZpbGUtdXBsb2FkXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHVibGljIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gICAgcHVibGljIGlucHV0VmFsdWUgPSBcIlwiO1xuXG4gICAgQFZpZXdDaGlsZChcImlucHV0VXBsb2FkXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRVcGxvYWQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKFwiYW5jaG9yXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgYW5jaG9yOiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgcy1maWxlLXVwbG9hZC0ke0ZpbGVVcGxvYWRDb21wb25lbnQubmV4dElkKyt9YDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNob29zZUxhYmVsID0gXCJBbmV4YXIgYXJxdWl2b3NcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlbW92ZUxhYmVsID0gXCJSZW1vdmVyXCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxMYWJlbCA9IFwiQ2FuY2VsYXJcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN1Y2Nlc3NUb29sdGlwID0gXCJBcnF1aXZvIGFuZXhhZG8gY29tIHN1Y2Vzc29cIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWNjZXB0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxGaWxlTmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbGVMaW1pdDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsUHJvZ3Jlc3MgPSBcIkNhcnJlZ2FuZG8gYXJxdWl2b1wiO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsU3VjY2Vzczogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsRXJyb3I6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbFJlbW92ZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtQ29udHJvbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdXBsb2FkSGFuZGxlcjogRXZlbnRFbWl0dGVyPHsgZmlsZXM6IEZpbGVEdG9bXSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlRmlsZTogRXZlbnRFbWl0dGVyPHsgZmlsZTogRmlsZSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2FuY2VsVXBsb2FkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZG93bmxvYWRGaWxlOiBFdmVudEVtaXR0ZXI8eyBpbmRleDogbnVtYmVyOyBhbmNob3I6IEVsZW1lbnRSZWYgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRlRXJyb3M6IEV2ZW50RW1pdHRlcjxWYWxpZGF0ZUVycm9ycz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgaXNTbWFsbERldmljZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9maWxlczogRmlsZUR0b1tdID0gW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1VzdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1VzdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIpXG4gICAgcHVibGljIG9uUmVzaXplKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpbGVTZWxlY3QoZmlsZXM6IEZpbGVEdG9bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdGaWxlczogRmlsZUR0b1tdID0gW107XG5cbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0ZpbGVMaW1pdEV4Y2VlZGVkKGZpbGVzKSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVycm9zLmVtaXQoVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfTElNSVQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZpbGVTaXplRXhjZWVkZWQoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlRXJyb3MuZW1pdChWYWxpZGF0ZUVycm9ycy5NQVhfRklMRV9TSVpFKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdGaWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0ZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuY29uY2F0KG5ld0ZpbGVzKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkSGFuZGxlci5lbWl0KHtcbiAgICAgICAgICAgICAgICBmaWxlczogbmV3RmlsZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRVcGxvYWQubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmVGaWxlKGZpbGU6IEZpbGVEdG8pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZUluZGV4ID0gdGhpcy5maWxlcy5pbmRleE9mKGZpbGUpO1xuICAgICAgICBjb25zdCByZW1vdmVkRmlsZXMgPSB0aGlzLmZpbGVzLnNwbGljZShmaWxlSW5kZXgsIDEpO1xuXG4gICAgICAgIGlmIChyZW1vdmVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUuZW1pdCh7IGZpbGUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DYW5jZWxVcGxvYWQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCByZW1vdmVkRmlsZXMgPSB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgaWYgKHJlbW92ZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsVXBsb2FkLmVtaXQoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uRG93bG9hZEZpbGUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmRvd25sb2FkRmlsZS5lbWl0KHtcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgYW5jaG9yOiB0aGlzLmFuY2hvcixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGZpbGVzKGZpbGVzOiBGaWxlRHRvW10pIHtcbiAgICAgICAgdGhpcy5fZmlsZXMgPSBmaWxlcy5tYXAoZmlsZSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0ltYWdlKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgZmlsZS5vYmplY3RVUkwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVzKCk6IEZpbGVEdG9bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgdGhpcy5pc1NtYWxsRGV2aWNlID0gd2luZG93V2lkdGggPD0gQnJlYWtwb2ludHMuU01fTUFYO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNJbWFnZShmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvXmltYWdlXFwvLy50ZXN0KGZpbGUudHlwZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpbGVMaW1pdEV4Y2VlZGVkKGZpbGVzOiBGaWxlRHRvW10pIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVMaW1pdCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVzLmxlbmd0aCArIGZpbGVzLmxlbmd0aCA+IHRoaXMuZmlsZUxpbWl0O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWxlU2l6ZUV4Y2VlZGVkKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLm1heEZpbGVTaXplKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGUuc2l6ZSA+IHRoaXMubWF4RmlsZVNpemU7XG4gICAgfVxufVxuIl19
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFPdkM7SUErQ0ksNkJBQTZCLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFyQ3BDLE9BQUUsR0FBRyxtQkFBaUIscUJBQW1CLENBQUMsTUFBTSxFQUFJLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxpQkFBaUIsQ0FBQztRQUNoQyxnQkFBVyxHQUFHLFNBQVMsQ0FBQztRQUN4QixnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUN6QixtQkFBYyxHQUFHLDZCQUE2QixDQUFDO1FBRy9DLHdCQUFtQixHQUFhLEVBQUUsQ0FBQztRQUluQyxzQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztRQUt6QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBVWhCLGtCQUFhLEdBQXVDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkUsZUFBVSxHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlELGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEQsaUJBQVksR0FBd0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2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SyxFQUFFOytEQUF1RDtJQUN0RDtRQUFSLEtBQUssRUFBRTt5REFBMEI7SUFDekI7UUFBUixLQUFLLEVBQUU7dURBQXVCO0lBQ3RCO1FBQVIsS0FBSyxFQUFFO29FQUEyQztJQUMxQztRQUFSLEtBQUssRUFBRTtrRUFBa0M7SUFDakM7UUFBUixLQUFLLEVBQUU7NERBQTRCO0lBQzNCO1FBQVIsS0FBSyxFQUFFOzBEQUEwQjtJQUN6QjtRQUFSLEtBQUssRUFBRTtrRUFBaUQ7SUFDaEQ7UUFBUixLQUFLLEVBQUU7aUVBQWlDO0lBQ2hDO1FBQVIsS0FBSyxFQUFFOytEQUErQjtJQUM5QjtRQUFSLEtBQUssRUFBRTtnRUFBZ0M7SUFDL0I7UUFBUixLQUFLLEVBQUU7MERBQStCO0lBQzlCO1FBQVIsS0FBSyxFQUFFO3lEQUF5QjtJQUN4QjtRQUFSLEtBQUssRUFBRTtvREFPUDtJQUVTO1FBQVQsTUFBTSxFQUFFOzhEQUErRTtJQUM5RTtRQUFULE1BQU0sRUFBRTsyREFBc0U7SUFDckU7UUFBVCxNQUFNLEVBQUU7NkRBQWdFO0lBQy9EO1FBQVQsTUFBTSxFQUFFOzZEQUErRjtJQUM5RjtRQUFULE1BQU0sRUFBRTs4REFBeUU7SUF3QmxGO1FBREMsWUFBWSxDQUFDLGVBQWUsQ0FBQzt1REFHN0I7SUFsRVEsbUJBQW1CO1FBTC9CLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLCt1S0FBMkM7O1NBRTlDLENBQUM7T0FDVyxtQkFBbUIsQ0FtSy9CO0lBQUQsMEJBQUM7Q0FBQSxBQW5LRCxJQW1LQztTQW5LWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5cbmltcG9ydCB7IEZpbGVEdG8gfSBmcm9tIFwiLi9tb2RlbHMvZmlsZS1kdG9cIjtcbmltcG9ydCB7IFZhbGlkYXRlRXJyb3JzIH0gZnJvbSBcIi4vbW9kZWxzL3ZhbGlkYXRlLWVycm9yc1wiO1xuaW1wb3J0IHsgQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1maWxlLXVwbG9hZFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHVibGljIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG5cbiAgICBAVmlld0NoaWxkKFwiaW5wdXRVcGxvYWRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFVwbG9hZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoXCJhbmNob3JcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbmNob3I6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgaWQgPSBgcy1maWxlLXVwbG9hZC0ke0ZpbGVVcGxvYWRDb21wb25lbnQubmV4dElkKyt9YDtcbiAgICBASW5wdXQoKSBwdWJsaWMgY2hvb3NlTGFiZWwgPSBcIkFuZXhhciBhcnF1aXZvc1wiO1xuICAgIEBJbnB1dCgpIHB1YmxpYyByZW1vdmVMYWJlbCA9IFwiUmVtb3ZlclwiO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjYW5jZWxMYWJlbCA9IFwiQ2FuY2VsYXJcIjtcbiAgICBASW5wdXQoKSBwdWJsaWMgc3VjY2Vzc1Rvb2x0aXAgPSBcIkFycXVpdm8gYW5leGFkbyBjb20gc3VjZXNzb1wiO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtdWx0aXBsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgYWNjZXB0OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIHN1cHBvcnRlZEV4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XG4gICAgQElucHV0KCkgcHVibGljIGFyaWFMYWJlbEZpbGVOYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIG1heEZpbGVTaXplOiBudW1iZXI7XG4gICAgQElucHV0KCkgcHVibGljIGZpbGVMaW1pdDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhcmlhTGFiZWxQcm9ncmVzcyA9IFwiQ2FycmVnYW5kbyBhcnF1aXZvXCI7XG4gICAgQElucHV0KCkgcHVibGljIGFyaWFMYWJlbFN1Y2Nlc3M6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgYXJpYUxhYmVsRXJyb3I6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgYXJpYUxhYmVsUmVtb3ZlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGZvcm1Hcm91cDogRm9ybUNvbnRyb2w7XG4gICAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIHNldCBmaWxlcyhmaWxlczogRmlsZUR0b1tdKSB7XG4gICAgICAgIHRoaXMuX2ZpbGVzID0gZmlsZXMubWFwKGZpbGUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbWFnZShmaWxlKSkge1xuICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHB1YmxpYyB1cGxvYWRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8eyBmaWxlczogRmlsZUR0b1tdIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVtb3ZlRmlsZTogRXZlbnRFbWl0dGVyPHsgZmlsZTogRmlsZSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIGNhbmNlbFVwbG9hZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBkb3dubG9hZEZpbGU6IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXI7IGFuY2hvcjogRWxlbWVudFJlZiB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIHZhbGlkYXRlRXJyb3M6IEV2ZW50RW1pdHRlcjxWYWxpZGF0ZUVycm9ycz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcml2YXRlIF9maWxlczogRmlsZUR0b1tdID0gW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1VzdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHB1YmxpYyBpc1NtYWxsRGV2aWNlOiBib29sZWFuO1xuICAgIHB1YmxpYyBpbnB1dFZhbHVlID0gXCJcIjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHsgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnMgPSB0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnNcbiAgICAgICAgICAgIC5tYXAoZXh0ZW5zaW9uID0+IGV4dGVuc2lvbi5yZXBsYWNlKFwiLlwiLCBcIlwiKS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1VzdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIpXG4gICAgcHVibGljIG9uUmVzaXplKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpbGVTZWxlY3QoZmlsZXM6IEZpbGVEdG9bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdGaWxlczogRmlsZUR0b1tdID0gW107XG5cbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0ZpbGVMaW1pdEV4Y2VlZGVkKGZpbGVzKSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVycm9zLmVtaXQoVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfTElNSVQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Vuc3VwcG9ydGVkRmlsZUV4dGVuc2lvbihmaWxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcy5lbWl0KFZhbGlkYXRlRXJyb3JzLlVOU1VQUE9SVEVEX0VYVEVOU0lPTik7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzRmlsZVNpemVFeGNlZWRlZChmaWxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcy5lbWl0KFZhbGlkYXRlRXJyb3JzLk1BWF9GSUxFX1NJWkUpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBuZXdGaWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0ZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuY29uY2F0KG5ld0ZpbGVzKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkSGFuZGxlci5lbWl0KHtcbiAgICAgICAgICAgICAgICBmaWxlczogbmV3RmlsZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRVcGxvYWQubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmVGaWxlKGZpbGU6IEZpbGVEdG8pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZUluZGV4ID0gdGhpcy5maWxlcy5pbmRleE9mKGZpbGUpO1xuICAgICAgICBjb25zdCByZW1vdmVkRmlsZXMgPSB0aGlzLmZpbGVzLnNwbGljZShmaWxlSW5kZXgsIDEpO1xuXG4gICAgICAgIGlmIChyZW1vdmVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUuZW1pdCh7IGZpbGUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DYW5jZWxVcGxvYWQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCByZW1vdmVkRmlsZXMgPSB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgaWYgKHJlbW92ZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsVXBsb2FkLmVtaXQoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uRG93bG9hZEZpbGUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmRvd25sb2FkRmlsZS5lbWl0KHtcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgYW5jaG9yOiB0aGlzLmFuY2hvcixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlcygpOiBGaWxlRHRvW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIHRoaXMuaXNTbWFsbERldmljZSA9IHdpbmRvd1dpZHRoIDw9IEJyZWFrcG9pbnRzLlNNX01BWDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW1hZ2UoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gL15pbWFnZVxcLy8udGVzdChmaWxlLnR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWxlTGltaXRFeGNlZWRlZChmaWxlczogRmlsZUR0b1tdKSB7XG4gICAgICAgIGlmICghdGhpcy5maWxlTGltaXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5maWxlcy5sZW5ndGggKyBmaWxlcy5sZW5ndGggPiB0aGlzLmZpbGVMaW1pdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsZVNpemVFeGNlZWRlZChmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tYXhGaWxlU2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlLnNpemUgPiB0aGlzLm1heEZpbGVTaXplO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNVbnN1cHBvcnRlZEZpbGVFeHRlbnNpb24oZmlsZTogRmlsZSkge1xuICAgICAgICBpZiAodGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUubmFtZS5zcGxpdChcIi5cIikucG9wKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zLmluY2x1ZGVzKGV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
|
|
@@ -2,5 +2,6 @@ export var ValidateErrors;
|
|
|
2
2
|
(function (ValidateErrors) {
|
|
3
3
|
ValidateErrors["MAX_FILE_SIZE"] = "MAX_FILE_SIZE";
|
|
4
4
|
ValidateErrors["MAX_FILE_LIMIT"] = "MAX_FILE_LIMIT";
|
|
5
|
+
ValidateErrors["UNSUPPORTED_EXTENSION"] = "UNSUPPORTED_EXTENSION";
|
|
5
6
|
})(ValidateErrors || (ValidateErrors = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtZXJyb3JzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvbW9kZWxzL3ZhbGlkYXRlLWVycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3ZCLGlEQUErQixDQUFBO0lBQy9CLG1EQUFpQyxDQUFBO0lBQ2pDLGlFQUErQyxDQUFBO0FBQ2xELENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFZhbGlkYXRlRXJyb3JzIHtcbiAgIE1BWF9GSUxFX1NJWkUgPSBcIk1BWF9GSUxFX1NJWkVcIixcbiAgIE1BWF9GSUxFX0xJTUlUID0gXCJNQVhfRklMRV9MSU1JVFwiLFxuICAgVU5TVVBQT1JURURfRVhURU5TSU9OID0gXCJVTlNVUFBPUlRFRF9FWFRFTlNJT05cIixcbn1cbiJdfQ==
|
|
@@ -2520,6 +2520,7 @@ var ValidateErrors;
|
|
|
2520
2520
|
(function (ValidateErrors) {
|
|
2521
2521
|
ValidateErrors["MAX_FILE_SIZE"] = "MAX_FILE_SIZE";
|
|
2522
2522
|
ValidateErrors["MAX_FILE_LIMIT"] = "MAX_FILE_LIMIT";
|
|
2523
|
+
ValidateErrors["UNSUPPORTED_EXTENSION"] = "UNSUPPORTED_EXTENSION";
|
|
2523
2524
|
})(ValidateErrors || (ValidateErrors = {}));
|
|
2524
2525
|
|
|
2525
2526
|
const Breakpoints = {
|
|
@@ -2626,12 +2627,12 @@ var FileUploadComponent_1;
|
|
|
2626
2627
|
let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
2627
2628
|
constructor(sanitizer) {
|
|
2628
2629
|
this.sanitizer = sanitizer;
|
|
2629
|
-
this.inputValue = "";
|
|
2630
2630
|
this.id = `s-file-upload-${FileUploadComponent_1.nextId++}`;
|
|
2631
2631
|
this.chooseLabel = "Anexar arquivos";
|
|
2632
2632
|
this.removeLabel = "Remover";
|
|
2633
2633
|
this.cancelLabel = "Cancelar";
|
|
2634
2634
|
this.successTooltip = "Arquivo anexado com sucesso";
|
|
2635
|
+
this.supportedExtensions = [];
|
|
2635
2636
|
this.ariaLabelProgress = "Carregando arquivo";
|
|
2636
2637
|
this.disabled = false;
|
|
2637
2638
|
this.uploadHandler = new EventEmitter();
|
|
@@ -2641,6 +2642,19 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
2641
2642
|
this.validateErros = new EventEmitter();
|
|
2642
2643
|
this._files = [];
|
|
2643
2644
|
this.ngUsubscribe = new Subject();
|
|
2645
|
+
this.inputValue = "";
|
|
2646
|
+
}
|
|
2647
|
+
set files(files) {
|
|
2648
|
+
this._files = files.map(file => {
|
|
2649
|
+
if (this.isImage(file)) {
|
|
2650
|
+
file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(file));
|
|
2651
|
+
}
|
|
2652
|
+
return file;
|
|
2653
|
+
});
|
|
2654
|
+
}
|
|
2655
|
+
ngOnInit() {
|
|
2656
|
+
this.supportedExtensions = this.supportedExtensions
|
|
2657
|
+
.map(extension => extension.replace(".", "").toLowerCase());
|
|
2644
2658
|
}
|
|
2645
2659
|
ngOnDestroy() {
|
|
2646
2660
|
this.ngUsubscribe.next();
|
|
@@ -2662,9 +2676,13 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
2662
2676
|
return;
|
|
2663
2677
|
}
|
|
2664
2678
|
for (const file of files) {
|
|
2679
|
+
if (this.isUnsupportedFileExtension(file)) {
|
|
2680
|
+
this.validateErros.emit(ValidateErrors.UNSUPPORTED_EXTENSION);
|
|
2681
|
+
continue;
|
|
2682
|
+
}
|
|
2665
2683
|
if (this.isFileSizeExceeded(file)) {
|
|
2666
2684
|
this.validateErros.emit(ValidateErrors.MAX_FILE_SIZE);
|
|
2667
|
-
|
|
2685
|
+
continue;
|
|
2668
2686
|
}
|
|
2669
2687
|
newFiles.push(file);
|
|
2670
2688
|
}
|
|
@@ -2695,14 +2713,6 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
2695
2713
|
anchor: this.anchor,
|
|
2696
2714
|
});
|
|
2697
2715
|
}
|
|
2698
|
-
set files(files) {
|
|
2699
|
-
this._files = files.map(file => {
|
|
2700
|
-
if (this.isImage(file)) {
|
|
2701
|
-
file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(file));
|
|
2702
|
-
}
|
|
2703
|
-
return file;
|
|
2704
|
-
});
|
|
2705
|
-
}
|
|
2706
2716
|
get files() {
|
|
2707
2717
|
return this._files;
|
|
2708
2718
|
}
|
|
@@ -2725,6 +2735,16 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
|
|
|
2725
2735
|
}
|
|
2726
2736
|
return file.size > this.maxFileSize;
|
|
2727
2737
|
}
|
|
2738
|
+
isUnsupportedFileExtension(file) {
|
|
2739
|
+
var _a;
|
|
2740
|
+
if ((_a = this.supportedExtensions) === null || _a === void 0 ? void 0 : _a.length) {
|
|
2741
|
+
const extension = file.name.split(".").pop().toLowerCase();
|
|
2742
|
+
if (!this.supportedExtensions.includes(extension)) {
|
|
2743
|
+
return true;
|
|
2744
|
+
}
|
|
2745
|
+
}
|
|
2746
|
+
return false;
|
|
2747
|
+
}
|
|
2728
2748
|
};
|
|
2729
2749
|
FileUploadComponent.nextId = 0;
|
|
2730
2750
|
FileUploadComponent.ctorParameters = () => [
|
|
@@ -2757,6 +2777,9 @@ __decorate([
|
|
|
2757
2777
|
__decorate([
|
|
2758
2778
|
Input()
|
|
2759
2779
|
], FileUploadComponent.prototype, "accept", void 0);
|
|
2780
|
+
__decorate([
|
|
2781
|
+
Input()
|
|
2782
|
+
], FileUploadComponent.prototype, "supportedExtensions", void 0);
|
|
2760
2783
|
__decorate([
|
|
2761
2784
|
Input()
|
|
2762
2785
|
], FileUploadComponent.prototype, "ariaLabelFileName", void 0);
|
|
@@ -2784,6 +2807,9 @@ __decorate([
|
|
|
2784
2807
|
__decorate([
|
|
2785
2808
|
Input()
|
|
2786
2809
|
], FileUploadComponent.prototype, "disabled", void 0);
|
|
2810
|
+
__decorate([
|
|
2811
|
+
Input()
|
|
2812
|
+
], FileUploadComponent.prototype, "files", null);
|
|
2787
2813
|
__decorate([
|
|
2788
2814
|
Output()
|
|
2789
2815
|
], FileUploadComponent.prototype, "uploadHandler", void 0);
|
|
@@ -2802,9 +2828,6 @@ __decorate([
|
|
|
2802
2828
|
__decorate([
|
|
2803
2829
|
HostListener("window:resize")
|
|
2804
2830
|
], FileUploadComponent.prototype, "onResize", null);
|
|
2805
|
-
__decorate([
|
|
2806
|
-
Input()
|
|
2807
|
-
], FileUploadComponent.prototype, "files", null);
|
|
2808
2831
|
FileUploadComponent = FileUploadComponent_1 = __decorate([
|
|
2809
2832
|
Component({
|
|
2810
2833
|
selector: "s-file-upload",
|