@dbg-riskit/angular-file 12.3.0 → 13.0.3
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/dbg-riskit-angular-file.d.ts +1 -0
- package/docs/README.md +1 -11
- package/{esm2015/dbg-riskit-angular-file.js → esm2020/dbg-riskit-angular-file.mjs} +0 -0
- package/esm2020/lib/abstract.file.download.directive.mjs +139 -0
- package/esm2020/lib/abstract.file.upload.component.mjs +84 -0
- package/esm2020/lib/binary.file.upload.component.mjs +25 -0
- package/esm2020/lib/binary.file.upload.service.mjs +41 -0
- package/esm2020/lib/csv.file.download.directive.mjs +83 -0
- package/esm2020/lib/csv.file.upload.component.mjs +47 -0
- package/esm2020/lib/csv.file.upload.service.mjs +108 -0
- package/esm2020/lib/download.menu.component.mjs +34 -0
- package/esm2020/lib/file.download.directive.mjs +53 -0
- package/esm2020/lib/file.module.mjs +78 -0
- package/esm2020/lib/file.size.pipe.mjs +34 -0
- package/{esm2015/lib/file.types.js → esm2020/lib/file.types.mjs} +0 -0
- package/esm2020/lib/text.file.upload.component.mjs +26 -0
- package/esm2020/lib/text.file.upload.service.mjs +41 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
- package/fesm2015/dbg-riskit-angular-file.mjs +727 -0
- package/fesm2015/dbg-riskit-angular-file.mjs.map +1 -0
- package/fesm2020/dbg-riskit-angular-file.mjs +727 -0
- package/fesm2020/dbg-riskit-angular-file.mjs.map +1 -0
- package/lib/abstract.file.download.directive.d.ts +3 -0
- package/lib/abstract.file.upload.component.d.ts +3 -0
- package/lib/binary.file.upload.component.d.ts +3 -0
- package/lib/binary.file.upload.service.d.ts +3 -0
- package/lib/csv.file.download.directive.d.ts +3 -0
- package/lib/csv.file.upload.component.d.ts +3 -0
- package/lib/csv.file.upload.service.d.ts +3 -0
- package/lib/download.menu.component.d.ts +3 -0
- package/lib/file.download.directive.d.ts +3 -0
- package/lib/file.module.d.ts +14 -0
- package/lib/file.size.pipe.d.ts +3 -0
- package/lib/text.file.upload.component.d.ts +3 -0
- package/lib/text.file.upload.service.d.ts +3 -0
- package/package.json +27 -15
- package/bundles/dbg-riskit-angular-file.umd.js +0 -1129
- package/bundles/dbg-riskit-angular-file.umd.js.map +0 -1
- package/dbg-riskit-angular-file.metadata.json +0 -1
- package/esm2015/lib/abstract.file.download.directive.js +0 -141
- package/esm2015/lib/abstract.file.upload.component.js +0 -73
- package/esm2015/lib/binary.file.upload.component.js +0 -29
- package/esm2015/lib/binary.file.upload.service.js +0 -38
- package/esm2015/lib/csv.file.download.directive.js +0 -79
- package/esm2015/lib/csv.file.upload.component.js +0 -51
- package/esm2015/lib/csv.file.upload.service.js +0 -105
- package/esm2015/lib/download.menu.component.js +0 -28
- package/esm2015/lib/file.download.directive.js +0 -51
- package/esm2015/lib/file.module.js +0 -50
- package/esm2015/lib/file.size.pipe.js +0 -46
- package/esm2015/lib/text.file.upload.component.js +0 -30
- package/esm2015/lib/text.file.upload.service.js +0 -38
- package/fesm2015/dbg-riskit-angular-file.js +0 -704
- package/fesm2015/dbg-riskit-angular-file.js.map +0 -1
package/docs/README.md
CHANGED
|
@@ -2,24 +2,14 @@
|
|
|
2
2
|

|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
# risk-angular-common (Angular
|
|
5
|
+
# risk-angular-common (Angular 13 and @angular/material based library for RiskIT applications)
|
|
6
6
|
|
|
7
7
|
Used by:
|
|
8
8
|
- [dev/DAVe-UI](https://github.deutsche-boerse.de/dev/DAVe-UI)
|
|
9
9
|
- [dev/DAVe-MarginEstimator-UI](https://github.deutsche-boerse.de/dev/DAVe-MarginEstimator-UI)
|
|
10
|
-
- [dev/prisma-gui](https://github.deutsche-boerse.de/dev/prisma-gui)
|
|
11
10
|
- [dev/MDH-UI](https://github.deutsche-boerse.de/dev/MDH-UI)
|
|
12
11
|
- [RiskIT/openid-k8s-token-generator](https://github.deutsche-boerse.de/RiskIT/openid-k8s-token-generator)
|
|
13
12
|
|
|
14
|
-
## Browser support (tested via [BrowserStack](https://www.browserstack.com))
|
|
15
|
-
|  Chrome |  Firefox |  Edge |  IE |  Safari |  iOS |
|
|
16
|
-
|:------:|:-------:|:----:|:------:|:------:|:-------:|
|
|
17
|
-
| Latest | Latest | 16 | 11 | 11.1 | 9.1+\* |
|
|
18
|
-
| 50 | 50 | 15 | 10\* | 10.1 | |
|
|
19
|
-
| | | | | 9.1 | |
|
|
20
|
-
|
|
21
|
-
\* In IE 10 and iOS the application is working, but with layout issues.
|
|
22
|
-
|
|
23
13
|
## Packages
|
|
24
14
|
|
|
25
15
|
To use in your application add the following packages into your app:
|
|
File without changes
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { BaseComponent } from '@dbg-riskit/angular-view';
|
|
3
|
+
import { isEventObject, ObservableEventType } from '@dbg-riskit/common';
|
|
4
|
+
import { saveAs } from 'file-saver';
|
|
5
|
+
import { EMPTY, Observable, of, Subject } from 'rxjs';
|
|
6
|
+
import { catchError, filter, finalize, map, take, takeUntil, tap } from 'rxjs/operators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@dbg-riskit/angular-view";
|
|
9
|
+
import * as i2 from "./file.size.pipe";
|
|
10
|
+
import * as i3 from "@dbg-riskit/common";
|
|
11
|
+
export class AbstractFileDownloadDirective extends BaseComponent {
|
|
12
|
+
constructor(elementRef, dialogService, fileSizePipe, logger) {
|
|
13
|
+
super();
|
|
14
|
+
this.elementRef = elementRef;
|
|
15
|
+
this.dialogService = dialogService;
|
|
16
|
+
this.fileSizePipe = fileSizePipe;
|
|
17
|
+
this.logger = logger;
|
|
18
|
+
}
|
|
19
|
+
isDisabled() {
|
|
20
|
+
if (this.elementRef.nativeElement.disabled === true) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
if (this.disabled == null) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
switch (typeof this.disabled) {
|
|
27
|
+
case 'boolean':
|
|
28
|
+
return this.disabled;
|
|
29
|
+
case 'string':
|
|
30
|
+
return this.disabled.toLowerCase() === 'disabled' || this.disabled.toLowerCase() === 'true';
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
download() {
|
|
35
|
+
if (this.isDisabled()) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (this.data == null) {
|
|
39
|
+
this.logger.error(new Error('No data provided for download!'));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this.getDataObservable(this.data).pipe(takeUntil(this.destroyed), take(1), map((data) => this.mapToFile(data))).subscribe((file) => this.store(file));
|
|
43
|
+
}
|
|
44
|
+
store(file) {
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
saveAs(file.content, file.filename || 'data.txt');
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
getDataObservable(data) {
|
|
50
|
+
if (!(data instanceof Observable)) {
|
|
51
|
+
return of(data);
|
|
52
|
+
}
|
|
53
|
+
return this.downloadWithProgress(data);
|
|
54
|
+
}
|
|
55
|
+
downloadWithProgress(observableWithProgress) {
|
|
56
|
+
const canceled = new Subject();
|
|
57
|
+
let dialog;
|
|
58
|
+
return observableWithProgress.pipe(takeUntil(canceled), takeUntil(this.destroyed), tap((event) => {
|
|
59
|
+
dialog = this.updateProgress(event, dialog, canceled);
|
|
60
|
+
}), filter((event) => !isEventObject(event)
|
|
61
|
+
|| event.type === ObservableEventType.Result), map((event) => {
|
|
62
|
+
if (isEventObject(event)) {
|
|
63
|
+
const resultEvent = event;
|
|
64
|
+
return resultEvent.result;
|
|
65
|
+
}
|
|
66
|
+
return event;
|
|
67
|
+
}), catchError((err) => this.processError(err)), finalize(() => {
|
|
68
|
+
if (dialog != null) {
|
|
69
|
+
dialog.close();
|
|
70
|
+
}
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
updateProgress(event, dialog, canceledSubject) {
|
|
74
|
+
if (isEventObject(event) && event.type === ObservableEventType.Progress) {
|
|
75
|
+
const progressEvent = event;
|
|
76
|
+
if (dialog == null) {
|
|
77
|
+
dialog = this.dialogService.showProgressLoaderDialog({
|
|
78
|
+
title: 'Downloading file...',
|
|
79
|
+
cancel: () => {
|
|
80
|
+
canceledSubject.next();
|
|
81
|
+
canceledSubject.complete();
|
|
82
|
+
},
|
|
83
|
+
valueFormatter: this.fileSizePipe
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
dialog.value = progressEvent.current;
|
|
87
|
+
dialog.total = progressEvent.total;
|
|
88
|
+
}
|
|
89
|
+
return dialog;
|
|
90
|
+
}
|
|
91
|
+
processError(err) {
|
|
92
|
+
let title = 'Failed to download file:';
|
|
93
|
+
let message;
|
|
94
|
+
if ('errorType' in err) {
|
|
95
|
+
const errorMessage = err;
|
|
96
|
+
switch (errorMessage.status) {
|
|
97
|
+
case 401:
|
|
98
|
+
case 403:
|
|
99
|
+
message = 'You are not authorized to download this file.';
|
|
100
|
+
break;
|
|
101
|
+
case 404:
|
|
102
|
+
message = 'File not found.';
|
|
103
|
+
break;
|
|
104
|
+
default:
|
|
105
|
+
message = errorMessage.message;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
if ('message' in err) {
|
|
110
|
+
message = err.message;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
message = 'Failed to download file.';
|
|
114
|
+
title = undefined;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
this.dialogService.showMessageDialog({
|
|
118
|
+
dialogType: 'error',
|
|
119
|
+
icon: 'cloud_off',
|
|
120
|
+
title,
|
|
121
|
+
message
|
|
122
|
+
});
|
|
123
|
+
return EMPTY;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Blob constructor for testing purposes.
|
|
127
|
+
*/
|
|
128
|
+
createBlob(data, contentType) {
|
|
129
|
+
return new Blob(data, contentType);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
AbstractFileDownloadDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AbstractFileDownloadDirective, deps: [{ token: i0.ElementRef }, { token: i1.DialogService }, { token: i2.FileSizePipe }, { token: i3.Logger }], target: i0.ɵɵFactoryTarget.Directive });
|
|
133
|
+
AbstractFileDownloadDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: AbstractFileDownloadDirective, inputs: { disabled: "disabled" }, usesInheritance: true, ngImport: i0 });
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AbstractFileDownloadDirective, decorators: [{
|
|
135
|
+
type: Directive
|
|
136
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DialogService }, { type: i2.FileSizePipe }, { type: i3.Logger }]; }, propDecorators: { disabled: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}] } });
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QuZmlsZS5kb3dubG9hZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9hYnN0cmFjdC5maWxlLmRvd25sb2FkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUF5QyxNQUFNLDBCQUEwQixDQUFDO0FBQy9GLE9BQU8sRUFHSCxhQUFhLEVBR2IsbUJBQW1CLEVBSXRCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNsQyxPQUFPLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFJdkYsTUFBTSxPQUFnQiw2QkFBaUMsU0FBUSxhQUFhO0lBU3hFLFlBQW9DLFVBQXNCLEVBQ3RCLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLE1BQWM7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFKd0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBRWxELENBQUM7SUFFTyxVQUFVO1FBQ2QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQ2pELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLElB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QUFPLEdBQUcsaUJBQWlCLENBQUM7b0JBQzVCLE1BQU07Z0JBQ1Y7b0JBQ0ksT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7YUFDdEM7U0FDSjthQUFNO1lBQ0gsSUFBSSxTQUFTLElBQUksR0FBRyxFQUFFO2dCQUNsQixPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQzthQUN6QjtpQkFBTTtnQkFDSCxPQUFPLEdBQUcsMEJBQTBCLENBQUM7Z0JBQ3JDLEtBQUssR0FBRyxTQUFTLENBQUM7YUFDckI7U0FDSjtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUM7WUFDakMsVUFBVSxFQUFFLE9BQU87WUFDbkIsSUFBSSxFQUFRLFdBQVc7WUFDdkIsS0FBSztZQUNMLE9BQU87U0FDVixDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsSUFBZ0IsRUFBRSxXQUE2QjtRQUM3RCxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDOzswSEFqS2lCLDZCQUE2Qjs4R0FBN0IsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7a0JBRGxELFNBQVM7NktBSUMsUUFBUTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmFzZUNvbXBvbmVudCwgRGlhbG9nU2VydmljZSwgUHJvZ3Jlc3NMb2FkZXJDb21wb25lbnR9IGZyb20gJ0BkYmctcmlza2l0L2FuZ3VsYXItdmlldyc7XG5pbXBvcnQge1xuICAgIEVycm9yTWVzc2FnZSxcbiAgICBGaWxlV2l0aENvbnRlbnQsXG4gICAgaXNFdmVudE9iamVjdCxcbiAgICBMb2dnZXIsXG4gICAgT2JzZXJ2YWJsZUV2ZW50LFxuICAgIE9ic2VydmFibGVFdmVudFR5cGUsXG4gICAgT2JzZXJ2YWJsZVdpdGhQcm9ncmVzcyxcbiAgICBQcm9ncmVzc0V2ZW50LFxuICAgIFJlc3VsdEV2ZW50XG59IGZyb20gJ0BkYmctcmlza2l0L2NvbW1vbic7XG5pbXBvcnQge3NhdmVBc30gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQge0VNUFRZLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbHRlciwgZmluYWxpemUsIG1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RmlsZVNpemVQaXBlfSBmcm9tICcuL2ZpbGUuc2l6ZS5waXBlJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGaWxlRG93bmxvYWREaXJlY3RpdmU8VD4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkPzogYm9vbGVhbiB8IHN0cmluZztcblxuICAgIHB1YmxpYyBkYXRhPzogT2JzZXJ2YWJsZVdpdGhQcm9ncmVzczxUPlxuICAgICAgICB8IE9ic2VydmFibGU8VD5cbiAgICAgICAgfCBUO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbGVTaXplUGlwZTogRmlsZVNpemVQaXBlLFxuICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0eXBlb2YgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQ7XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkLnRvTG93ZXJDYXNlKCkgPT09ICdkaXNhYmxlZCcgfHwgdGhpcy5kaXNhYmxlZC50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGRvd25sb2FkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IobmV3IEVycm9yKCdObyBkYXRhIHByb3ZpZGVkIGZvciBkb3dubG9hZCEnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdldERhdGFPYnNlcnZhYmxlKHRoaXMuZGF0YSkucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgbWFwKChkYXRhOiBUKSA9PiB0aGlzLm1hcFRvRmlsZShkYXRhKSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKGZpbGUpID0+IHRoaXMuc3RvcmUoZmlsZSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBtYXBUb0ZpbGUoZGF0YTogVCk6IEZpbGVXaXRoQ29udGVudDtcblxuICAgIHByaXZhdGUgc3RvcmUoZmlsZTogRmlsZVdpdGhDb250ZW50KSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2F2ZUFzKGZpbGUuY29udGVudCwgZmlsZS5maWxlbmFtZSB8fCAnZGF0YS50eHQnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRhT2JzZXJ2YWJsZShcbiAgICAgICAgZGF0YTogT2JzZXJ2YWJsZVdpdGhQcm9ncmVzczxUPlxuICAgICAgICAgICAgfCBPYnNlcnZhYmxlPFQ+XG4gICAgICAgICAgICB8IFRcbiAgICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgaWYgKCEoZGF0YSBpbnN0YW5jZW9mIE9ic2VydmFibGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFdpdGhQcm9ncmVzcyhkYXRhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRvd25sb2FkV2l0aFByb2dyZXNzKFxuICAgICAgICBvYnNlcnZhYmxlV2l0aFByb2dyZXNzOiBPYnNlcnZhYmxlPFQgfCBPYnNlcnZhYmxlRXZlbnQ8VD4+XG4gICAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IGNhbmNlbGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgbGV0IGRpYWxvZzogUHJvZ3Jlc3NMb2FkZXJDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGVXaXRoUHJvZ3Jlc3MucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbChjYW5jZWxlZCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpLFxuICAgICAgICAgICAgdGFwKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGRpYWxvZyA9IHRoaXMudXBkYXRlUHJvZ3Jlc3MoZXZlbnQsIGRpYWxvZywgY2FuY2VsZWQpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiAhaXNFdmVudE9iamVjdChldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChldmVudCBhcyBPYnNlcnZhYmxlRXZlbnQ8VD4pLnR5cGUgPT09IE9ic2VydmFibGVFdmVudFR5cGUuUmVzdWx0KSxcbiAgICAgICAgICAgIG1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNFdmVudE9iamVjdChldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0RXZlbnQgPSBldmVudCBhcyBSZXN1bHRFdmVudDxUPjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdEV2ZW50LnJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50IGFzIFQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gdGhpcy5wcm9jZXNzRXJyb3IoZXJyKSksXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRpYWxvZyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQcm9ncmVzcyhldmVudDogVCB8IE9ic2VydmFibGVFdmVudDxUPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxvZzogUHJvZ3Jlc3NMb2FkZXJDb21wb25lbnQgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxlZFN1YmplY3Q6IFN1YmplY3Q8dm9pZD4pIHtcbiAgICAgICAgaWYgKGlzRXZlbnRPYmplY3QoZXZlbnQpICYmIChldmVudCBhcyBPYnNlcnZhYmxlRXZlbnQ8VD4pLnR5cGUgPT09IE9ic2VydmFibGVFdmVudFR5cGUuUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzRXZlbnQgPSBldmVudCBhcyBQcm9ncmVzc0V2ZW50O1xuICAgICAgICAgICAgaWYgKGRpYWxvZyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZGlhbG9nID0gdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dQcm9ncmVzc0xvYWRlckRpYWxvZyh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlICAgICAgICAgOiAnRG93bmxvYWRpbmcgZmlsZS4uLicsXG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbCAgICAgICAgOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxlZFN1YmplY3QubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsZWRTdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiB0aGlzLmZpbGVTaXplUGlwZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlhbG9nLnZhbHVlID0gcHJvZ3Jlc3NFdmVudC5jdXJyZW50O1xuICAgICAgICAgICAgZGlhbG9nLnRvdGFsID0gcHJvZ3Jlc3NFdmVudC50b3RhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlhbG9nO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc0Vycm9yKGVycjogRXJyb3JNZXNzYWdlIHwgb2JqZWN0KSB7XG4gICAgICAgIGxldCB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ0ZhaWxlZCB0byBkb3dubG9hZCBmaWxlOic7XG4gICAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgICBpZiAoJ2Vycm9yVHlwZScgaW4gKGVyciBhcyBFcnJvck1lc3NhZ2UpKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZSA9IGVyciBhcyBFcnJvck1lc3NhZ2U7XG4gICAgICAgICAgICBzd2l0Y2ggKGVycm9yTWVzc2FnZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDQwMTpcbiAgICAgICAgICAgICAgICBjYXNlIDQwMzpcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIGRvd25sb2FkIHRoaXMgZmlsZS4nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQwNDpcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdGaWxlIG5vdCBmb3VuZC4nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXJyb3JNZXNzYWdlLm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoJ21lc3NhZ2UnIGluIGVycikge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdGYWlsZWQgdG8gZG93bmxvYWQgZmlsZS4nO1xuICAgICAgICAgICAgICAgIHRpdGxlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93TWVzc2FnZURpYWxvZyh7XG4gICAgICAgICAgICBkaWFsb2dUeXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgaWNvbiAgICAgIDogJ2Nsb3VkX29mZicsXG4gICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCbG9iIGNvbnN0cnVjdG9yIGZvciB0ZXN0aW5nIHB1cnBvc2VzLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVCbG9iKGRhdGE6IEJsb2JQYXJ0W10sIGNvbnRlbnRUeXBlPzogQmxvYlByb3BlcnR5QmFnKSB7XG4gICAgICAgIHJldHVybiBuZXcgQmxvYihkYXRhLCBjb250ZW50VHlwZSk7XG4gICAgfVxufVxuXG5cbiJdfQ==
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { BaseComponent } from '@dbg-riskit/angular-view';
|
|
3
|
+
import { ErrorType, toString } from '@dbg-riskit/common';
|
|
4
|
+
import { first, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class AbstractFileUploadComponent extends BaseComponent {
|
|
7
|
+
constructor(renderer) {
|
|
8
|
+
super();
|
|
9
|
+
this.renderer = renderer;
|
|
10
|
+
this.error = new EventEmitter(true);
|
|
11
|
+
this.multiple = true;
|
|
12
|
+
this.filesLoaded = new EventEmitter(true);
|
|
13
|
+
this.fileInputHidden = false;
|
|
14
|
+
this.raised = true;
|
|
15
|
+
this.color = 'primary';
|
|
16
|
+
this.disabled = false;
|
|
17
|
+
}
|
|
18
|
+
move(event) {
|
|
19
|
+
if (this.fileInput && event.target !== this.fileInput.nativeElement) {
|
|
20
|
+
this.renderer.setStyle(this.wrapper.nativeElement, 'left', `${event.offsetX}px`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
handleFiles(fileList) {
|
|
24
|
+
// Check for the various File API support.
|
|
25
|
+
if ('FileReader' in window) {
|
|
26
|
+
this.readFiles(fileList).pipe(takeUntil(this.destroyed), first()).subscribe((files) => {
|
|
27
|
+
this.filesLoaded.emit(files);
|
|
28
|
+
this.resetInputField();
|
|
29
|
+
}, (error) => {
|
|
30
|
+
this.error.emit({
|
|
31
|
+
message: toString(error),
|
|
32
|
+
errorType: ErrorType.ERROR,
|
|
33
|
+
status: 0
|
|
34
|
+
});
|
|
35
|
+
this.resetInputField();
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.error.emit({
|
|
40
|
+
message: 'FileReader is not supported in your browser! A newer browser (IE 11+, Chrome 50+, '
|
|
41
|
+
+ 'FireFox 50+, Safari 9+) is required to use this application.',
|
|
42
|
+
errorType: ErrorType.ERROR,
|
|
43
|
+
status: 0
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Hide and show the input field to reset the selection
|
|
48
|
+
resetInputField() {
|
|
49
|
+
this.fileInputHidden = true;
|
|
50
|
+
setTimeout(() => {
|
|
51
|
+
this.fileInputHidden = false;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
AbstractFileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AbstractFileUploadComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
56
|
+
AbstractFileUploadComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: AbstractFileUploadComponent, inputs: { label: "label", accept: "accept", multiple: "multiple", raised: "raised", color: "color", icon: "icon", disabled: "disabled" }, outputs: { error: "error", filesLoaded: "filesLoaded" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], usesInheritance: true, ngImport: i0 });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AbstractFileUploadComponent, decorators: [{
|
|
58
|
+
type: Directive
|
|
59
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { error: [{
|
|
60
|
+
type: Output
|
|
61
|
+
}], label: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], accept: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], multiple: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], filesLoaded: [{
|
|
68
|
+
type: Output
|
|
69
|
+
}], fileInput: [{
|
|
70
|
+
type: ViewChild,
|
|
71
|
+
args: ['fileInput']
|
|
72
|
+
}], wrapper: [{
|
|
73
|
+
type: ViewChild,
|
|
74
|
+
args: ['wrapper']
|
|
75
|
+
}], raised: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], color: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], icon: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], disabled: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}] } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci1maWxlL3NyYy9saWIvYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXZHLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQWUsU0FBUyxFQUFFLFFBQVEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRXJFLE9BQU8sRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBSWhELE1BQU0sT0FBZ0IsMkJBQTZDLFNBQVEsYUFBYTtJQXFDcEYsWUFBdUMsUUFBbUI7UUFDdEQsS0FBSyxFQUFFLENBQUM7UUFEMkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQWxDMUMsVUFBSyxHQUFHLElBQUksWUFBWSxDQUFlLElBQUksQ0FBQyxDQUFDO1FBU3RELGFBQVEsR0FBRyxJQUFJLENBQUM7UUFHUCxnQkFBVyxHQUFHLElBQUksWUFBWSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBUW5ELG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBR3hCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFHZCxVQUFLLEdBQWtCLFNBQVMsQ0FBQztRQU1qQyxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBSXhCLENBQUM7SUFFTSxJQUFJLENBQUMsS0FBaUI7UUFDekIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUU7WUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7U0FDckY7SUFDTCxDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWtCO1FBQ2pDLDBDQUEwQztRQUMxQyxJQUFJLFlBQVksSUFBSSxNQUFNLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ3pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3pCLEtBQUssRUFBRSxDQUNWLENBQUMsU0FBUyxDQUNQLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzQixDQUFDLEVBQ0QsQ0FBQyxLQUFhLEVBQUUsRUFBRTtnQkFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDWixPQUFPLEVBQUksUUFBUSxDQUFDLEtBQUssQ0FBQztvQkFDMUIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxLQUFLO29CQUMxQixNQUFNLEVBQUssQ0FBQztpQkFDZixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FDSixDQUFDO1NBQ0w7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNaLE9BQU8sRUFBSSxvRkFBb0Y7c0JBQ2xGLDhEQUE4RDtnQkFDM0UsU0FBUyxFQUFFLFNBQVMsQ0FBQyxLQUFLO2dCQUMxQixNQUFNLEVBQUssQ0FBQzthQUNmLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUlELHVEQUF1RDtJQUMvQyxlQUFlO1FBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3dIQXJGaUIsMkJBQTJCOzRHQUEzQiwyQkFBMkI7MkZBQTNCLDJCQUEyQjtrQkFEaEQsU0FBUztnR0FJVSxLQUFLO3NCQURwQixNQUFNO2dCQUlBLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlVLFdBQVc7c0JBRDFCLE1BQU07Z0JBSUEsU0FBUztzQkFEZixTQUFTO3VCQUFDLFdBQVc7Z0JBSWYsT0FBTztzQkFEYixTQUFTO3VCQUFDLFNBQVM7Z0JBTWIsTUFBTTtzQkFEWixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRDb2xvclRoZW1lfSBmcm9tICdAZGJnLXJpc2tpdC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQge0Jhc2VDb21wb25lbnR9IGZyb20gJ0BkYmctcmlza2l0L2FuZ3VsYXItdmlldyc7XG5pbXBvcnQge0Vycm9yTWVzc2FnZSwgRXJyb3JUeXBlLCB0b1N0cmluZ30gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpcnN0LCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SUZpbGV9IGZyb20gJy4vZmlsZS50eXBlcyc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RmlsZVVwbG9hZENvbXBvbmVudDxUIGV4dGVuZHMgSUZpbGU+IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPEVycm9yTWVzc2FnZT4odHJ1ZSk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYWJlbD86IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFjY2VwdD86IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBmaWxlc0xvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPih0cnVlKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpXG4gICAgcHVibGljIGZpbGVJbnB1dD86IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCd3cmFwcGVyJylcbiAgICBwdWJsaWMgd3JhcHBlcj86IEVsZW1lbnRSZWY7XG5cbiAgICBwdWJsaWMgZmlsZUlucHV0SGlkZGVuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByYWlzZWQgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sb3I6IE1hdENvbG9yVGhlbWUgPSAncHJpbWFyeSc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpY29uPzogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbW92ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5maWxlSW5wdXQgJiYgZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMud3JhcHBlciEubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCBgJHtldmVudC5vZmZzZXRYfXB4YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRmlsZXMoZmlsZUxpc3Q6IEZpbGVMaXN0KSB7XG4gICAgICAgIC8vIENoZWNrIGZvciB0aGUgdmFyaW91cyBGaWxlIEFQSSBzdXBwb3J0LlxuICAgICAgICBpZiAoJ0ZpbGVSZWFkZXInIGluIHdpbmRvdykge1xuICAgICAgICAgICAgdGhpcy5yZWFkRmlsZXMoZmlsZUxpc3QpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSxcbiAgICAgICAgICAgICAgICBmaXJzdCgpXG4gICAgICAgICAgICApLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoZmlsZXM6IFRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzTG9hZGVkLmVtaXQoZmlsZXMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0SW5wdXRGaWVsZCgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgIDogdG9TdHJpbmcoZXJyb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JUeXBlOiBFcnJvclR5cGUuRVJST1IsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgICA6IDBcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRJbnB1dEZpZWxkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdCh7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSAgOiAnRmlsZVJlYWRlciBpcyBub3Qgc3VwcG9ydGVkIGluIHlvdXIgYnJvd3NlciEgQSBuZXdlciBicm93c2VyIChJRSAxMSssIENocm9tZSA1MCssICdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJ0ZpcmVGb3ggNTArLCBTYWZhcmkgOSspIGlzIHJlcXVpcmVkIHRvIHVzZSB0aGlzIGFwcGxpY2F0aW9uLicsXG4gICAgICAgICAgICAgICAgZXJyb3JUeXBlOiBFcnJvclR5cGUuRVJST1IsXG4gICAgICAgICAgICAgICAgc3RhdHVzICAgOiAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkRmlsZXMoZmlsZUxpc3Q6IEZpbGVMaXN0KTogT2JzZXJ2YWJsZTxUW10+O1xuXG4gICAgLy8gSGlkZSBhbmQgc2hvdyB0aGUgaW5wdXQgZmllbGQgdG8gcmVzZXQgdGhlIHNlbGVjdGlvblxuICAgIHByaXZhdGUgcmVzZXRJbnB1dEZpZWxkKCkge1xuICAgICAgICB0aGlzLmZpbGVJbnB1dEhpZGRlbiA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXRIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
+
import { AbstractFileUploadComponent } from './abstract.file.upload.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./binary.file.upload.service";
|
|
5
|
+
import * as i2 from "@angular/material/button";
|
|
6
|
+
import * as i3 from "@angular/material/icon";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class BinaryFileUploadComponent extends AbstractFileUploadComponent {
|
|
9
|
+
constructor(fileUploadService, renderer) {
|
|
10
|
+
super(renderer);
|
|
11
|
+
this.fileUploadService = fileUploadService;
|
|
12
|
+
}
|
|
13
|
+
readFiles(fileList) {
|
|
14
|
+
return this.fileUploadService.readFiles(fileList);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
BinaryFileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: BinaryFileUploadComponent, deps: [{ token: i1.BinaryFileUploadService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
+
BinaryFileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: BinaryFileUploadComponent, selector: "risk-binary-file-upload", host: { properties: { "class.risk-binary-file-upload": "true" } }, usesInheritance: true, ngImport: i0, template: "<a *ngIf=\"raised; else notRaised\"\n mat-raised-button\n [disabled]=\"disabled\"\n [color]=\"color\"\n (mousemove)=\"move($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n <div #wrapper\n class=\"risk-file-upload-input-wrapper\">\n <input *ngIf=\"!fileInputHidden\" type=\"file\"\n id=\"fileInput\"\n #fileInput\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n title=\"\"\n (change)=\"handleFiles($event.target.files)\"\n [accept]=\"accept\">\n </div>\n</a>\n<ng-template #notRaised>\n <a mat-button\n [disabled]=\"disabled\"\n [color]=\"color\"\n (mousemove)=\"move($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n <div #wrapper\n class=\"risk-file-upload-input-wrapper\">\n <input *ngIf=\"!fileInputHidden\" type=\"file\"\n id=\"fileInput\"\n #fileInput\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n title=\"\"\n (change)=\"handleFiles($event.target.files)\"\n [accept]=\"accept\">\n </div>\n </a>\n</ng-template>\n", styles: [":host{display:block;padding:0;margin:0}:host>*{vertical-align:bottom}\n", ":host{display:inline-block}a{overflow:hidden}a .risk-file-upload-input-wrapper{width:30px;height:36px;margin-left:-15px;top:0;left:0;position:absolute;overflow:hidden;cursor:pointer;z-index:1}a .risk-file-upload-input-wrapper input{position:absolute;display:block;cursor:pointer;height:36px;font-size:36px;top:0;right:0;outline:0 none;opacity:0}\n"], components: [{ type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: BinaryFileUploadComponent, decorators: [{
|
|
20
|
+
type: Component,
|
|
21
|
+
args: [{ selector: 'risk-binary-file-upload', host: {
|
|
22
|
+
'[class.risk-binary-file-upload]': 'true'
|
|
23
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, template: "<a *ngIf=\"raised; else notRaised\"\n mat-raised-button\n [disabled]=\"disabled\"\n [color]=\"color\"\n (mousemove)=\"move($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n <div #wrapper\n class=\"risk-file-upload-input-wrapper\">\n <input *ngIf=\"!fileInputHidden\" type=\"file\"\n id=\"fileInput\"\n #fileInput\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n title=\"\"\n (change)=\"handleFiles($event.target.files)\"\n [accept]=\"accept\">\n </div>\n</a>\n<ng-template #notRaised>\n <a mat-button\n [disabled]=\"disabled\"\n [color]=\"color\"\n (mousemove)=\"move($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n <div #wrapper\n class=\"risk-file-upload-input-wrapper\">\n <input *ngIf=\"!fileInputHidden\" type=\"file\"\n id=\"fileInput\"\n #fileInput\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n title=\"\"\n (change)=\"handleFiles($event.target.files)\"\n [accept]=\"accept\">\n </div>\n </a>\n</ng-template>\n", styles: [":host{display:block;padding:0;margin:0}:host>*{vertical-align:bottom}\n", ":host{display:inline-block}a{overflow:hidden}a .risk-file-upload-input-wrapper{width:30px;height:36px;margin-left:-15px;top:0;left:0;position:absolute;overflow:hidden;cursor:pointer;z-index:1}a .risk-file-upload-input-wrapper input{position:absolute;display:block;cursor:pointer;height:36px;font-size:36px;top:0;right:0;outline:0 none;opacity:0}\n"] }]
|
|
24
|
+
}], ctorParameters: function () { return [{ type: i1.BinaryFileUploadService }, { type: i0.Renderer2 }]; } });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmZpbGUudXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItZmlsZS9zcmMvbGliL2JpbmFyeS5maWxlLnVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9hYnN0cmFjdC5maWxlLnVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7QUFpQjdFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSwyQkFBdUM7SUFFbEYsWUFBb0MsaUJBQTBDLEVBQzNELFFBQW1CO1FBQ2xDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUZnQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXlCO0lBRzlFLENBQUM7SUFFUyxTQUFTLENBQUMsUUFBa0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7O3NIQVRRLHlCQUF5QjswR0FBekIseUJBQXlCLHlKQ25CdEMsZ3lDQXVDQTsyRkRwQmEseUJBQXlCO2tCQWJyQyxTQUFTOytCQUNlLHlCQUF5QixRQU16Qjt3QkFDakIsaUNBQWlDLEVBQUUsTUFBTTtxQkFDNUMsbUJBQ29CLHVCQUF1QixDQUFDLE1BQU0sdUJBQzlCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBYnN0cmFjdEZpbGVVcGxvYWRDb21wb25lbnR9IGZyb20gJy4vYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7QmluYXJ5RmlsZVVwbG9hZFNlcnZpY2V9IGZyb20gJy4vYmluYXJ5LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHtCaW5hcnlGaWxlfSBmcm9tICcuL2ZpbGUudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvciAgICAgICAgICAgOiAncmlzay1iaW5hcnktZmlsZS11cGxvYWQnLFxuICAgIHRlbXBsYXRlVXJsICAgICAgICA6ICdhYnN0cmFjdC5maWxlLnVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzICAgICAgICAgIDogW1xuICAgICAgICAnLi4vLi4vLi4vY29tcG9uZW50LnNjc3MnLFxuICAgICAgICAnYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50LnNjc3MnXG4gICAgXSxcbiAgICBob3N0ICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICdbY2xhc3Mucmlzay1iaW5hcnktZmlsZS11cGxvYWRdJzogJ3RydWUnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb24gICAgOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgQmluYXJ5RmlsZVVwbG9hZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmlsZVVwbG9hZENvbXBvbmVudDxCaW5hcnlGaWxlPiB7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmaWxlVXBsb2FkU2VydmljZTogQmluYXJ5RmlsZVVwbG9hZFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgc3VwZXIocmVuZGVyZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZWFkRmlsZXMoZmlsZUxpc3Q6IEZpbGVMaXN0KTogT2JzZXJ2YWJsZTxCaW5hcnlGaWxlW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UucmVhZEZpbGVzKGZpbGVMaXN0KTtcbiAgICB9XG59XG4iLCI8YSAqbmdJZj1cInJhaXNlZDsgZWxzZSBub3RSYWlzZWRcIlxuICAgbWF0LXJhaXNlZC1idXR0b25cbiAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICBbY29sb3JdPVwiY29sb3JcIlxuICAgKG1vdXNlbW92ZSk9XCJtb3ZlKCRldmVudClcIj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uXCI+e3tpY29ufX08L21hdC1pY29uPlxuICAgIHt7bGFiZWx9fVxuICAgIDxkaXYgI3dyYXBwZXJcbiAgICAgICAgIGNsYXNzPVwicmlzay1maWxlLXVwbG9hZC1pbnB1dC13cmFwcGVyXCI+XG4gICAgICAgIDxpbnB1dCAqbmdJZj1cIiFmaWxlSW5wdXRIaWRkZW5cIiB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICBpZD1cImZpbGVJbnB1dFwiXG4gICAgICAgICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgIHRpdGxlPVwiXCJcbiAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlRmlsZXMoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIj5cbiAgICA8L2Rpdj5cbjwvYT5cbjxuZy10ZW1wbGF0ZSAjbm90UmFpc2VkPlxuICAgIDxhIG1hdC1idXR0b25cbiAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgIFtjb2xvcl09XCJjb2xvclwiXG4gICAgICAgKG1vdXNlbW92ZSk9XCJtb3ZlKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblwiPnt7aWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAge3tsYWJlbH19XG4gICAgICAgIDxkaXYgI3dyYXBwZXJcbiAgICAgICAgICAgICBjbGFzcz1cInJpc2stZmlsZS11cGxvYWQtaW5wdXQtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiIWZpbGVJbnB1dEhpZGRlblwiIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgICBpZD1cImZpbGVJbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVGaWxlcygkZXZlbnQudGFyZ2V0LmZpbGVzKVwiXG4gICAgICAgICAgICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { base64encode } from '@dbg-riskit/common';
|
|
3
|
+
import { forkJoin, Observable } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class BinaryFileUploadService {
|
|
6
|
+
readFiles(files) {
|
|
7
|
+
const fileOservables = [];
|
|
8
|
+
for (const file of Array.from(files)) {
|
|
9
|
+
fileOservables.push(new Observable((observer) => {
|
|
10
|
+
setTimeout(() => {
|
|
11
|
+
try {
|
|
12
|
+
const reader = new FileReader();
|
|
13
|
+
// Handle errors load
|
|
14
|
+
reader.onload = (event) => {
|
|
15
|
+
observer.next({
|
|
16
|
+
bodyBase64: base64encode((event.target.result)),
|
|
17
|
+
file
|
|
18
|
+
});
|
|
19
|
+
observer.complete();
|
|
20
|
+
};
|
|
21
|
+
reader.onerror = (event) => {
|
|
22
|
+
observer.error(event.target.error);
|
|
23
|
+
};
|
|
24
|
+
// Read file into memory as UTF-8
|
|
25
|
+
reader.readAsArrayBuffer(file);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
observer.error(err);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
return forkJoin(fileOservables);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
BinaryFileUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: BinaryFileUploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
BinaryFileUploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: BinaryFileUploadService });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: BinaryFileUploadService, decorators: [{
|
|
39
|
+
type: Injectable
|
|
40
|
+
}] });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmZpbGUudXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9iaW5hcnkuZmlsZS51cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBYSxNQUFNLE1BQU0sQ0FBQzs7QUFJdEQsTUFBTSxPQUFPLHVCQUF1QjtJQUV6QixTQUFTLENBQUMsS0FBZTtRQUM1QixNQUFNLGNBQWMsR0FBa0MsRUFBRSxDQUFDO1FBQ3pELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsUUFBZ0MsRUFBRSxFQUFFO2dCQUNwRSxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQUk7d0JBQ0EsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFDaEMscUJBQXFCO3dCQUNyQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFOzRCQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dDQUNWLFVBQVUsRUFBRSxZQUFZLENBQ3BCLENBQUUsS0FBSyxDQUFDLE1BQXFCLENBQUMsTUFBTSxDQUFnQixDQUFDO2dDQUN6RCxJQUFJOzZCQUNQLENBQUMsQ0FBQzs0QkFDSCxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3hCLENBQUMsQ0FBQzt3QkFDRixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFOzRCQUN0QyxRQUFRLENBQUMsS0FBSyxDQUFFLEtBQUssQ0FBQyxNQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN2RCxDQUFDLENBQUM7d0JBQ0YsaUNBQWlDO3dCQUNqQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ2xDO29CQUFDLE9BQU8sR0FBRyxFQUFFO3dCQUNWLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3ZCO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNQO1FBQ0QsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7b0hBOUJRLHVCQUF1Qjt3SEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtiYXNlNjRlbmNvZGV9IGZyb20gJ0BkYmctcmlza2l0L2NvbW1vbic7XG5pbXBvcnQge2ZvcmtKb2luLCBPYnNlcnZhYmxlLCBTdWJzY3JpYmVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QmluYXJ5RmlsZX0gZnJvbSAnLi9maWxlLnR5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJpbmFyeUZpbGVVcGxvYWRTZXJ2aWNlIHtcblxuICAgIHB1YmxpYyByZWFkRmlsZXMoZmlsZXM6IEZpbGVMaXN0KTogT2JzZXJ2YWJsZTxCaW5hcnlGaWxlW10+IHtcbiAgICAgICAgY29uc3QgZmlsZU9zZXJ2YWJsZXM6IEFycmF5PE9ic2VydmFibGU8QmluYXJ5RmlsZT4+ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBBcnJheS5mcm9tKGZpbGVzKSkge1xuICAgICAgICAgICAgZmlsZU9zZXJ2YWJsZXMucHVzaChuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IFN1YnNjcmliZXI8QmluYXJ5RmlsZT4pID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgZXJyb3JzIGxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keUJhc2U2NDogYmFzZTY0ZW5jb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChldmVudC50YXJnZXQgYXMgRmlsZVJlYWRlcikucmVzdWx0KSBhcyBBcnJheUJ1ZmZlciksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoKGV2ZW50LnRhcmdldCBhcyBGaWxlUmVhZGVyKS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhZCBmaWxlIGludG8gbWVtb3J5IGFzIFVURi04XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JrSm9pbihmaWxlT3NlcnZhYmxlcyk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { CONTENT_TYPE, toString } from '@dbg-riskit/common';
|
|
3
|
+
import { AbstractFileDownloadDirective } from './abstract.file.download.directive';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@dbg-riskit/angular-view";
|
|
6
|
+
import * as i2 from "./file.size.pipe";
|
|
7
|
+
import * as i3 from "@dbg-riskit/common";
|
|
8
|
+
export class CSVFileDownloadDirective extends AbstractFileDownloadDirective {
|
|
9
|
+
constructor(dateFormatter, elementRef, dialogService, fileSizePipe, logger) {
|
|
10
|
+
super(elementRef, dialogService, fileSizePipe, logger);
|
|
11
|
+
this.dateFormatter = dateFormatter;
|
|
12
|
+
this.filename = 'data.csv';
|
|
13
|
+
this.crlfLineEnding = false;
|
|
14
|
+
}
|
|
15
|
+
mapToFile(data) {
|
|
16
|
+
let csvFile = '';
|
|
17
|
+
if (this.columns) {
|
|
18
|
+
csvFile += this.createHeader();
|
|
19
|
+
for (const row of data) {
|
|
20
|
+
csvFile += this.processRow(row);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
filename: this.filename,
|
|
25
|
+
content: this.createBlob([csvFile], { type: CONTENT_TYPE.TEXT_CSV })
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
processRow(row) {
|
|
29
|
+
return this.columns.map((column) => {
|
|
30
|
+
const value = column.get(row);
|
|
31
|
+
let innerValue = toString(value);
|
|
32
|
+
if (value instanceof Date) {
|
|
33
|
+
innerValue = this.dateFormatter.transform(value) || '';
|
|
34
|
+
}
|
|
35
|
+
let result = innerValue.replace(/"/g, '""');
|
|
36
|
+
if (result.search(/([",\n])/g) >= 0) {
|
|
37
|
+
result = `"${result}"`;
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}).join(',') + this.getLineEnding();
|
|
41
|
+
}
|
|
42
|
+
createHeader() {
|
|
43
|
+
return this.columns.map((column) => {
|
|
44
|
+
const innerValue = toString(column.header);
|
|
45
|
+
let result = innerValue.replace(/"/g, '""');
|
|
46
|
+
if (result.search(/([",\n])/g) >= 0) {
|
|
47
|
+
result = `"${result}"`;
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}).join(',') + this.getLineEnding();
|
|
51
|
+
}
|
|
52
|
+
getLineEnding() {
|
|
53
|
+
if (this.crlfLineEnding) {
|
|
54
|
+
return '\r\n';
|
|
55
|
+
}
|
|
56
|
+
return '\n';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
CSVFileDownloadDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CSVFileDownloadDirective, deps: [{ token: i1.DateFormatter }, { token: i0.ElementRef }, { token: i1.DialogService }, { token: i2.FileSizePipe }, { token: i3.Logger }], target: i0.ɵɵFactoryTarget.Directive });
|
|
60
|
+
CSVFileDownloadDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: CSVFileDownloadDirective, selector: "[risk-csv-download]", inputs: { columns: ["risk-csv-download-columns", "columns"], data: ["risk-csv-download", "data"], filename: ["risk-csv-download-filename", "filename"], crlfLineEnding: ["risk-csv-download-crlf", "crlfLineEnding"] }, host: { listeners: { "click": "download()" }, properties: { "class.risk-csv-download": "true" } }, usesInheritance: true, ngImport: i0 });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CSVFileDownloadDirective, decorators: [{
|
|
62
|
+
type: Directive,
|
|
63
|
+
args: [{
|
|
64
|
+
selector: '[risk-csv-download]',
|
|
65
|
+
host: {
|
|
66
|
+
'[class.risk-csv-download]': 'true',
|
|
67
|
+
'(click)': 'download()'
|
|
68
|
+
}
|
|
69
|
+
}]
|
|
70
|
+
}], ctorParameters: function () { return [{ type: i1.DateFormatter }, { type: i0.ElementRef }, { type: i1.DialogService }, { type: i2.FileSizePipe }, { type: i3.Logger }]; }, propDecorators: { columns: [{
|
|
71
|
+
type: Input,
|
|
72
|
+
args: ['risk-csv-download-columns']
|
|
73
|
+
}], data: [{
|
|
74
|
+
type: Input,
|
|
75
|
+
args: ['risk-csv-download']
|
|
76
|
+
}], filename: [{
|
|
77
|
+
type: Input,
|
|
78
|
+
args: ['risk-csv-download-filename']
|
|
79
|
+
}], crlfLineEnding: [{
|
|
80
|
+
type: Input,
|
|
81
|
+
args: ['risk-csv-download-crlf']
|
|
82
|
+
}] } });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmZpbGUuZG93bmxvYWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci1maWxlL3NyYy9saWIvY3N2LmZpbGUuZG93bmxvYWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBQyxZQUFZLEVBQW1ELFFBQVEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRTNHLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDOzs7OztBQVdqRixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsNkJBQXdDO0lBZ0JsRixZQUFvQyxhQUE0QixFQUM3QyxVQUFzQixFQUN0QixhQUE0QixFQUM1QixZQUEwQixFQUMxQixNQUFjO1FBQzdCLEtBQUssQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUx2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUx6RCxhQUFRLEdBQUcsVUFBVSxDQUFDO1FBR3RCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBUTlCLENBQUM7SUFFUyxTQUFTLENBQUMsSUFBZTtRQUMvQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFFakIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUUvQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDcEIsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDbkM7U0FDSjtRQUVELE9BQU87WUFDSCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFDLENBQUM7U0FDckUsQ0FBQztJQUNOLENBQUM7SUFFTyxVQUFVLENBQUMsR0FBWTtRQUMzQixPQUFPLElBQUksQ0FBQyxPQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBZ0MsRUFBRSxFQUFFO1lBQzFELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWpDLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtnQkFDdkIsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUMxRDtZQUVELElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTVDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pDLE1BQU0sR0FBRyxJQUFJLE1BQU0sR0FBRyxDQUFDO2FBQzFCO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRU8sWUFBWTtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBZ0MsRUFBRSxFQUFFO1lBQzFELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDakMsTUFBTSxHQUFHLElBQUksTUFBTSxHQUFHLENBQUM7YUFDMUI7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixPQUFPLE1BQU0sQ0FBQztTQUNqQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7O3FIQTVFUSx3QkFBd0I7eUdBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQVBwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLElBQUksRUFBTTt3QkFDTiwyQkFBMkIsRUFBRSxNQUFNO3dCQUNuQyxTQUFTLEVBQW9CLFlBQVk7cUJBQzVDO2lCQUNKO3lNQUlVLE9BQU87c0JBRGIsS0FBSzt1QkFBQywyQkFBMkI7Z0JBSTNCLElBQUk7c0JBRFYsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBTW5CLFFBQVE7c0JBRGQsS0FBSzt1QkFBQyw0QkFBNEI7Z0JBSTVCLGNBQWM7c0JBRHBCLEtBQUs7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0ZUZvcm1hdHRlciwgRGlhbG9nU2VydmljZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci12aWV3JztcbmltcG9ydCB7Q09OVEVOVF9UWVBFLCBGaWxlV2l0aENvbnRlbnQsIExvZ2dlciwgT2JzZXJ2YWJsZVdpdGhQcm9ncmVzcywgdG9TdHJpbmd9IGZyb20gJ0BkYmctcmlza2l0L2NvbW1vbic7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBYnN0cmFjdEZpbGVEb3dubG9hZERpcmVjdGl2ZX0gZnJvbSAnLi9hYnN0cmFjdC5maWxlLmRvd25sb2FkLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0ZpbGVTaXplUGlwZX0gZnJvbSAnLi9maWxlLnNpemUucGlwZSc7XG5pbXBvcnQge0NTVkV4cG9ydENvbHVtbn0gZnJvbSAnLi9maWxlLnR5cGVzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmlzay1jc3YtZG93bmxvYWRdJyxcbiAgICBob3N0ICAgIDoge1xuICAgICAgICAnW2NsYXNzLnJpc2stY3N2LWRvd25sb2FkXSc6ICd0cnVlJyxcbiAgICAgICAgJyhjbGljayknICAgICAgICAgICAgICAgICAgOiAnZG93bmxvYWQoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIENTVkZpbGVEb3dubG9hZERpcmVjdGl2ZSBleHRlbmRzIEFic3RyYWN0RmlsZURvd25sb2FkRGlyZWN0aXZlPHVua25vd25bXT4ge1xuXG4gICAgQElucHV0KCdyaXNrLWNzdi1kb3dubG9hZC1jb2x1bW5zJylcbiAgICBwdWJsaWMgY29sdW1ucz86IEFycmF5PENTVkV4cG9ydENvbHVtbjx1bmtub3duPj47XG5cbiAgICBASW5wdXQoJ3Jpc2stY3N2LWRvd25sb2FkJylcbiAgICBwdWJsaWMgZGF0YT86IE9ic2VydmFibGVXaXRoUHJvZ3Jlc3M8dW5rbm93bltdPlxuICAgICAgICB8IE9ic2VydmFibGU8dW5rbm93bltdPlxuICAgICAgICB8IHVua25vd25bXTtcblxuICAgIEBJbnB1dCgncmlzay1jc3YtZG93bmxvYWQtZmlsZW5hbWUnKVxuICAgIHB1YmxpYyBmaWxlbmFtZSA9ICdkYXRhLmNzdic7XG5cbiAgICBASW5wdXQoJ3Jpc2stY3N2LWRvd25sb2FkLWNybGYnKVxuICAgIHB1YmxpYyBjcmxmTGluZUVuZGluZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGF0ZUZvcm1hdHRlcjogRGF0ZUZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgZmlsZVNpemVQaXBlOiBGaWxlU2l6ZVBpcGUsXG4gICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlcjogTG9nZ2VyKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGRpYWxvZ1NlcnZpY2UsIGZpbGVTaXplUGlwZSwgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbWFwVG9GaWxlKGRhdGE6IHVua25vd25bXSk6IEZpbGVXaXRoQ29udGVudCB7XG4gICAgICAgIGxldCBjc3ZGaWxlID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuY29sdW1ucykge1xuICAgICAgICAgICAgY3N2RmlsZSArPSB0aGlzLmNyZWF0ZUhlYWRlcigpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgY3N2RmlsZSArPSB0aGlzLnByb2Nlc3NSb3cocm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWxlbmFtZTogdGhpcy5maWxlbmFtZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuY3JlYXRlQmxvYihbY3N2RmlsZV0sIHt0eXBlOiBDT05URU5UX1RZUEUuVEVYVF9DU1Z9KVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1Jvdyhyb3c6IHVua25vd24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zIS5tYXAoKGNvbHVtbjogQ1NWRXhwb3J0Q29sdW1uPHVua25vd24+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbHVtbi5nZXQocm93KTtcbiAgICAgICAgICAgIGxldCBpbm5lclZhbHVlID0gdG9TdHJpbmcodmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgaW5uZXJWYWx1ZSA9IHRoaXMuZGF0ZUZvcm1hdHRlci50cmFuc2Zvcm0odmFsdWUpIHx8ICcnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gaW5uZXJWYWx1ZS5yZXBsYWNlKC9cIi9nLCAnXCJcIicpO1xuXG4gICAgICAgICAgICBpZiAocmVzdWx0LnNlYXJjaCgvKFtcIixcXG5dKS9nKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYFwiJHtyZXN1bHR9XCJgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KS5qb2luKCcsJykgKyB0aGlzLmdldExpbmVFbmRpbmcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUhlYWRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zIS5tYXAoKGNvbHVtbjogQ1NWRXhwb3J0Q29sdW1uPHVua25vd24+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbm5lclZhbHVlID0gdG9TdHJpbmcoY29sdW1uLmhlYWRlcik7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gaW5uZXJWYWx1ZS5yZXBsYWNlKC9cIi9nLCAnXCJcIicpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zZWFyY2goLyhbXCIsXFxuXSkvZykgPj0gMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGBcIiR7cmVzdWx0fVwiYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pLmpvaW4oJywnKSArIHRoaXMuZ2V0TGluZUVuZGluZygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGluZUVuZGluZygpIHtcbiAgICAgICAgaWYgKHRoaXMuY3JsZkxpbmVFbmRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiAnXFxyXFxuJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1xcbic7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { of, throwError } from 'rxjs';
|
|
3
|
+
import { switchMap } from 'rxjs/operators';
|
|
4
|
+
import { AbstractFileUploadComponent } from './abstract.file.upload.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./csv.file.upload.service";
|
|
7
|
+
import * as i2 from "@angular/material/button";
|
|
8
|
+
import * as i3 from "@angular/material/icon";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
export class CSVFileUploadComponent extends AbstractFileUploadComponent {
|
|
11
|
+
constructor(fileUploadService, renderer) {
|
|
12
|
+
super(renderer);
|
|
13
|
+
this.fileUploadService = fileUploadService;
|
|
14
|
+
}
|
|
15
|
+
readFiles(fileList) {
|
|
16
|
+
return this.fileUploadService.readFiles(fileList, this.nameMapper).pipe(switchMap((files) => {
|
|
17
|
+
const validationErrors = [];
|
|
18
|
+
if (!this.validator || files.every((file) => {
|
|
19
|
+
const result = this.validator(file);
|
|
20
|
+
if (!result.result && result.messages != null) {
|
|
21
|
+
result.messages.forEach((message) => {
|
|
22
|
+
validationErrors.push(message);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return result.result;
|
|
26
|
+
})) {
|
|
27
|
+
return of(files);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return throwError(`<li>${validationErrors.join('</li><li>')}</li>`);
|
|
31
|
+
}
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
CSVFileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CSVFileUploadComponent, deps: [{ token: i1.CSVFileUploadService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
+
CSVFileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CSVFileUploadComponent, selector: "risk-csv-file-upload", inputs: { validator: "validator", nameMapper: "nameMapper" }, host: { properties: { "class.risk-csv-file-upload": "true" } }, usesInheritance: true, ngImport: i0, template: "<a *ngIf=\"raised; else notRaised\"\n mat-raised-button\n [disabled]=\"disabled\"\n [color]=\"color\"\n (mousemove)=\"move($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n <div #wrapper\n class=\"risk-file-upload-input-wrapper\">\n <input *ngIf=\"!fileInputHidden\" type=\"file\"\n id=\"fileInput\"\n #fileInput\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n title=\"\"\n (change)=\"handleFiles($event.target.files)\"\n [accept]=\"accept\">\n </div>\n</a>\n<ng-template #notRaised>\n <a mat-button\n [disabled]=\"disabled\"\n [color]=\"color\"\n (mousemove)=\"move($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n <div #wrapper\n class=\"risk-file-upload-input-wrapper\">\n <input *ngIf=\"!fileInputHidden\" type=\"file\"\n id=\"fileInput\"\n #fileInput\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n title=\"\"\n (change)=\"handleFiles($event.target.files)\"\n [accept]=\"accept\">\n </div>\n </a>\n</ng-template>\n", styles: [":host{display:block;padding:0;margin:0}:host>*{vertical-align:bottom}\n", ":host{display:inline-block}a{overflow:hidden}a .risk-file-upload-input-wrapper{width:30px;height:36px;margin-left:-15px;top:0;left:0;position:absolute;overflow:hidden;cursor:pointer;z-index:1}a .risk-file-upload-input-wrapper input{position:absolute;display:block;cursor:pointer;height:36px;font-size:36px;top:0;right:0;outline:0 none;opacity:0}\n"], components: [{ type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CSVFileUploadComponent, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{ selector: 'risk-csv-file-upload', host: {
|
|
40
|
+
'[class.risk-csv-file-upload]': 'true'
|
|
41
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, template: "<a *ngIf=\"raised; else notRaised\"\n mat-raised-button\n [disabled]=\"disabled\"\n [color]=\"color\"\n (mousemove)=\"move($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n <div #wrapper\n class=\"risk-file-upload-input-wrapper\">\n <input *ngIf=\"!fileInputHidden\" type=\"file\"\n id=\"fileInput\"\n #fileInput\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n title=\"\"\n (change)=\"handleFiles($event.target.files)\"\n [accept]=\"accept\">\n </div>\n</a>\n<ng-template #notRaised>\n <a mat-button\n [disabled]=\"disabled\"\n [color]=\"color\"\n (mousemove)=\"move($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n <div #wrapper\n class=\"risk-file-upload-input-wrapper\">\n <input *ngIf=\"!fileInputHidden\" type=\"file\"\n id=\"fileInput\"\n #fileInput\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n title=\"\"\n (change)=\"handleFiles($event.target.files)\"\n [accept]=\"accept\">\n </div>\n </a>\n</ng-template>\n", styles: [":host{display:block;padding:0;margin:0}:host>*{vertical-align:bottom}\n", ":host{display:inline-block}a{overflow:hidden}a .risk-file-upload-input-wrapper{width:30px;height:36px;margin-left:-15px;top:0;left:0;position:absolute;overflow:hidden;cursor:pointer;z-index:1}a .risk-file-upload-input-wrapper input{position:absolute;display:block;cursor:pointer;height:36px;font-size:36px;top:0;right:0;outline:0 none;opacity:0}\n"] }]
|
|
42
|
+
}], ctorParameters: function () { return [{ type: i1.CSVFileUploadService }, { type: i0.Renderer2 }]; }, propDecorators: { validator: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], nameMapper: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}] } });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmZpbGUudXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItZmlsZS9zcmMvbGliL2Nzdi5maWxlLnVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9hYnN0cmFjdC5maWxlLnVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQWEsRUFBRSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQWlCN0UsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDJCQUFvQztJQVE1RSxZQUFvQyxpQkFBdUMsRUFBRSxRQUFtQjtRQUM1RixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFEZ0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtJQUUzRSxDQUFDO0lBRVMsU0FBUyxDQUFDLFFBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDbkUsU0FBUyxDQUFDLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQzNCLE1BQU0sZ0JBQWdCLEdBQWEsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQzlCLENBQUMsSUFBYSxFQUFFLEVBQUU7Z0JBQ2QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUU7b0JBQzNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUU7d0JBQ3hDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDbkMsQ0FBQyxDQUFDLENBQUM7aUJBQ047Z0JBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxFQUFFO2dCQUNKLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3BCO2lCQUFNO2dCQUNILE9BQU8sVUFBVSxDQUFDLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN2RTtRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOzttSEFoQ1Esc0JBQXNCO3VHQUF0QixzQkFBc0IsaU5DcEJuQyxneUNBdUNBOzJGRG5CYSxzQkFBc0I7a0JBYmxDLFNBQVM7K0JBQ2Usc0JBQXNCLFFBTXRCO3dCQUNqQiw4QkFBOEIsRUFBRSxNQUFNO3FCQUN6QyxtQkFDb0IsdUJBQXVCLENBQUMsTUFBTSx1QkFDOUIsS0FBSzttSUFLbkIsU0FBUztzQkFEZixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBYnN0cmFjdEZpbGVVcGxvYWRDb21wb25lbnR9IGZyb20gJy4vYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7Q1NWRmlsZVVwbG9hZFNlcnZpY2V9IGZyb20gJy4vY3N2LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHtDU1ZDb2x1bW5OYW1lTWFwcGVyLCBDU1ZGaWxlLCBDU1ZWYWxpZGF0b3J9IGZyb20gJy4vZmlsZS50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yICAgICAgICAgICA6ICdyaXNrLWNzdi1maWxlLXVwbG9hZCcsXG4gICAgdGVtcGxhdGVVcmwgICAgICAgIDogJ2Fic3RyYWN0LmZpbGUudXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHMgICAgICAgICAgOiBbXG4gICAgICAgICcuLi8uLi8uLi9jb21wb25lbnQuc2NzcycsXG4gICAgICAgICdhYnN0cmFjdC5maWxlLnVwbG9hZC5jb21wb25lbnQuc2NzcydcbiAgICBdLFxuICAgIGhvc3QgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgJ1tjbGFzcy5yaXNrLWNzdi1maWxlLXVwbG9hZF0nOiAndHJ1ZSdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbiAgICA6IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBDU1ZGaWxlVXBsb2FkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWxlVXBsb2FkQ29tcG9uZW50PENTVkZpbGU+IHtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRvcj86IENTVlZhbGlkYXRvcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG5hbWVNYXBwZXI/OiBDU1ZDb2x1bW5OYW1lTWFwcGVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmlsZVVwbG9hZFNlcnZpY2U6IENTVkZpbGVVcGxvYWRTZXJ2aWNlLCByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgICAgIHN1cGVyKHJlbmRlcmVyKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZEZpbGVzKGZpbGVMaXN0OiBGaWxlTGlzdCk6IE9ic2VydmFibGU8Q1NWRmlsZVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLnJlYWRGaWxlcyhmaWxlTGlzdCwgdGhpcy5uYW1lTWFwcGVyKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChmaWxlczogQ1NWRmlsZVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdGlvbkVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudmFsaWRhdG9yIHx8IGZpbGVzLmV2ZXJ5KFxuICAgICAgICAgICAgICAgICAgICAoZmlsZTogQ1NWRmlsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy52YWxpZGF0b3IhKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQucmVzdWx0ICYmIHJlc3VsdC5tZXNzYWdlcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzLnB1c2gobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZpbGVzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihgPGxpPiR7dmFsaWRhdGlvbkVycm9ycy5qb2luKCc8L2xpPjxsaT4nKX08L2xpPmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiPGEgKm5nSWY9XCJyYWlzZWQ7IGVsc2Ugbm90UmFpc2VkXCJcbiAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgIChtb3VzZW1vdmUpPVwibW92ZSgkZXZlbnQpXCI+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblwiPnt7aWNvbn19PC9tYXQtaWNvbj5cbiAgICB7e2xhYmVsfX1cbiAgICA8ZGl2ICN3cmFwcGVyXG4gICAgICAgICBjbGFzcz1cInJpc2stZmlsZS11cGxvYWQtaW5wdXQtd3JhcHBlclwiPlxuICAgICAgICA8aW5wdXQgKm5nSWY9XCIhZmlsZUlucHV0SGlkZGVuXCIgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgaWQ9XCJmaWxlSW5wdXRcIlxuICAgICAgICAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICAgICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUZpbGVzKCRldmVudC50YXJnZXQuZmlsZXMpXCJcbiAgICAgICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0XCI+XG4gICAgPC9kaXY+XG48L2E+XG48bmctdGVtcGxhdGUgI25vdFJhaXNlZD5cbiAgICA8YSBtYXQtYnV0dG9uXG4gICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICBbY29sb3JdPVwiY29sb3JcIlxuICAgICAgIChtb3VzZW1vdmUpPVwibW92ZSgkZXZlbnQpXCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25cIj57e2ljb259fTwvbWF0LWljb24+XG4gICAgICAgIHt7bGFiZWx9fVxuICAgICAgICA8ZGl2ICN3cmFwcGVyXG4gICAgICAgICAgICAgY2xhc3M9XCJyaXNrLWZpbGUtdXBsb2FkLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIiFmaWxlSW5wdXRIaWRkZW5cIiB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgaWQ9XCJmaWxlSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgdGl0bGU9XCJcIlxuICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlRmlsZXMoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgICAgICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0XCI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvYT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|