@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.
Files changed (54) hide show
  1. package/dbg-riskit-angular-file.d.ts +1 -0
  2. package/docs/README.md +1 -11
  3. package/{esm2015/dbg-riskit-angular-file.js → esm2020/dbg-riskit-angular-file.mjs} +0 -0
  4. package/esm2020/lib/abstract.file.download.directive.mjs +139 -0
  5. package/esm2020/lib/abstract.file.upload.component.mjs +84 -0
  6. package/esm2020/lib/binary.file.upload.component.mjs +25 -0
  7. package/esm2020/lib/binary.file.upload.service.mjs +41 -0
  8. package/esm2020/lib/csv.file.download.directive.mjs +83 -0
  9. package/esm2020/lib/csv.file.upload.component.mjs +47 -0
  10. package/esm2020/lib/csv.file.upload.service.mjs +108 -0
  11. package/esm2020/lib/download.menu.component.mjs +34 -0
  12. package/esm2020/lib/file.download.directive.mjs +53 -0
  13. package/esm2020/lib/file.module.mjs +78 -0
  14. package/esm2020/lib/file.size.pipe.mjs +34 -0
  15. package/{esm2015/lib/file.types.js → esm2020/lib/file.types.mjs} +0 -0
  16. package/esm2020/lib/text.file.upload.component.mjs +26 -0
  17. package/esm2020/lib/text.file.upload.service.mjs +41 -0
  18. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  19. package/fesm2015/dbg-riskit-angular-file.mjs +727 -0
  20. package/fesm2015/dbg-riskit-angular-file.mjs.map +1 -0
  21. package/fesm2020/dbg-riskit-angular-file.mjs +727 -0
  22. package/fesm2020/dbg-riskit-angular-file.mjs.map +1 -0
  23. package/lib/abstract.file.download.directive.d.ts +3 -0
  24. package/lib/abstract.file.upload.component.d.ts +3 -0
  25. package/lib/binary.file.upload.component.d.ts +3 -0
  26. package/lib/binary.file.upload.service.d.ts +3 -0
  27. package/lib/csv.file.download.directive.d.ts +3 -0
  28. package/lib/csv.file.upload.component.d.ts +3 -0
  29. package/lib/csv.file.upload.service.d.ts +3 -0
  30. package/lib/download.menu.component.d.ts +3 -0
  31. package/lib/file.download.directive.d.ts +3 -0
  32. package/lib/file.module.d.ts +14 -0
  33. package/lib/file.size.pipe.d.ts +3 -0
  34. package/lib/text.file.upload.component.d.ts +3 -0
  35. package/lib/text.file.upload.service.d.ts +3 -0
  36. package/package.json +27 -15
  37. package/bundles/dbg-riskit-angular-file.umd.js +0 -1129
  38. package/bundles/dbg-riskit-angular-file.umd.js.map +0 -1
  39. package/dbg-riskit-angular-file.metadata.json +0 -1
  40. package/esm2015/lib/abstract.file.download.directive.js +0 -141
  41. package/esm2015/lib/abstract.file.upload.component.js +0 -73
  42. package/esm2015/lib/binary.file.upload.component.js +0 -29
  43. package/esm2015/lib/binary.file.upload.service.js +0 -38
  44. package/esm2015/lib/csv.file.download.directive.js +0 -79
  45. package/esm2015/lib/csv.file.upload.component.js +0 -51
  46. package/esm2015/lib/csv.file.upload.service.js +0 -105
  47. package/esm2015/lib/download.menu.component.js +0 -28
  48. package/esm2015/lib/file.download.directive.js +0 -51
  49. package/esm2015/lib/file.module.js +0 -50
  50. package/esm2015/lib/file.size.pipe.js +0 -46
  51. package/esm2015/lib/text.file.upload.component.js +0 -30
  52. package/esm2015/lib/text.file.upload.service.js +0 -38
  53. package/fesm2015/dbg-riskit-angular-file.js +0 -704
  54. package/fesm2015/dbg-riskit-angular-file.js.map +0 -1
@@ -1,79 +0,0 @@
1
- import { Directive, ElementRef, Input } from '@angular/core';
2
- import { DateFormatter, DialogService } from '@dbg-riskit/angular-view';
3
- import { CONTENT_TYPE, Logger, toString } from '@dbg-riskit/common';
4
- import { AbstractFileDownloadDirective } from './abstract.file.download.directive';
5
- import { FileSizePipe } from './file.size.pipe';
6
- export class CSVFileDownloadDirective extends AbstractFileDownloadDirective {
7
- constructor(dateFormatter, elementRef, dialogService, fileSizePipe, logger) {
8
- super(elementRef, dialogService, fileSizePipe, logger);
9
- this.dateFormatter = dateFormatter;
10
- this.filename = 'data.csv';
11
- this.crlfLineEnding = false;
12
- }
13
- mapToFile(data) {
14
- let csvFile = '';
15
- if (this.columns) {
16
- csvFile += this.createHeader();
17
- for (const row of data) {
18
- csvFile += this.processRow(row);
19
- }
20
- }
21
- return {
22
- filename: this.filename,
23
- content: this.createBlob([csvFile], { type: CONTENT_TYPE.TEXT_CSV })
24
- };
25
- }
26
- processRow(row) {
27
- return this.columns.map((column) => {
28
- const value = column.get(row);
29
- let innerValue = toString(value);
30
- if (value instanceof Date) {
31
- innerValue = this.dateFormatter.transform(value) || '';
32
- }
33
- let result = innerValue.replace(/"/g, '""');
34
- if (result.search(/([",\n])/g) >= 0) {
35
- result = `"${result}"`;
36
- }
37
- return result;
38
- }).join(',') + this.getLineEnding();
39
- }
40
- createHeader() {
41
- return this.columns.map((column) => {
42
- const innerValue = toString(column.header);
43
- let result = innerValue.replace(/"/g, '""');
44
- if (result.search(/([",\n])/g) >= 0) {
45
- result = `"${result}"`;
46
- }
47
- return result;
48
- }).join(',') + this.getLineEnding();
49
- }
50
- getLineEnding() {
51
- if (this.crlfLineEnding) {
52
- return '\r\n';
53
- }
54
- return '\n';
55
- }
56
- }
57
- CSVFileDownloadDirective.decorators = [
58
- { type: Directive, args: [{
59
- selector: '[risk-csv-download]',
60
- host: {
61
- '[class.risk-csv-download]': 'true',
62
- '(click)': 'download()'
63
- }
64
- },] }
65
- ];
66
- CSVFileDownloadDirective.ctorParameters = () => [
67
- { type: DateFormatter },
68
- { type: ElementRef },
69
- { type: DialogService },
70
- { type: FileSizePipe },
71
- { type: Logger }
72
- ];
73
- CSVFileDownloadDirective.propDecorators = {
74
- columns: [{ type: Input, args: ['risk-csv-download-columns',] }],
75
- data: [{ type: Input, args: ['risk-csv-download',] }],
76
- filename: [{ type: Input, args: ['risk-csv-download-filename',] }],
77
- crlfLineEnding: [{ type: Input, args: ['risk-csv-download-crlf',] }]
78
- };
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmZpbGUuZG93bmxvYWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci1maWxlL3NyYy9saWIvY3N2LmZpbGUuZG93bmxvYWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFFLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQW1CLE1BQU0sRUFBMEIsUUFBUSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFM0csT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBVTlDLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSw2QkFBd0M7SUFnQmxGLFlBQW9DLGFBQTRCLEVBQzdDLFVBQXNCLEVBQ3RCLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLE1BQWM7UUFDN0IsS0FBSyxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBTHZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBTHpELGFBQVEsR0FBVyxVQUFVLENBQUM7UUFHOUIsbUJBQWMsR0FBWSxLQUFLLENBQUM7SUFRdkMsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFlO1FBQy9CLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUVqQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRS9CLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO2dCQUNwQixPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNuQztTQUNKO1FBRUQsT0FBTztZQUNILFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxRQUFRLEVBQUMsQ0FBQztTQUNyRSxDQUFDO0lBQ04sQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFZO1FBQzNCLE9BQU8sSUFBSSxDQUFDLE9BQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFnQyxFQUFFLEVBQUU7WUFDMUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFakMsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFO2dCQUN2QixVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzFEO1lBRUQsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFNUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDakMsTUFBTSxHQUFHLElBQUksTUFBTSxHQUFHLENBQUM7YUFDMUI7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxZQUFZO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFnQyxFQUFFLEVBQUU7WUFDMUQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQyxJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqQyxNQUFNLEdBQUcsSUFBSSxNQUFNLEdBQUcsQ0FBQzthQUMxQjtZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVPLGFBQWE7UUFDakIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLE9BQU8sTUFBTSxDQUFDO1NBQ2pCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7O1lBbkZKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixJQUFJLEVBQU07b0JBQ04sMkJBQTJCLEVBQUUsTUFBTTtvQkFDbkMsU0FBUyxFQUFvQixZQUFZO2lCQUM1QzthQUNKOzs7WUFiTyxhQUFhO1lBREYsVUFBVTtZQUNOLGFBQWE7WUFJNUIsWUFBWTtZQUhtQixNQUFNOzs7c0JBZXhDLEtBQUssU0FBQywyQkFBMkI7bUJBR2pDLEtBQUssU0FBQyxtQkFBbUI7dUJBS3pCLEtBQUssU0FBQyw0QkFBNEI7NkJBR2xDLEtBQUssU0FBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEYXRlRm9ybWF0dGVyLCBEaWFsb2dTZXJ2aWNlfSBmcm9tICdAZGJnLXJpc2tpdC9hbmd1bGFyLXZpZXcnO1xuaW1wb3J0IHtDT05URU5UX1RZUEUsIEZpbGVXaXRoQ29udGVudCwgTG9nZ2VyLCBPYnNlcnZhYmxlV2l0aFByb2dyZXNzLCB0b1N0cmluZ30gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Fic3RyYWN0RmlsZURvd25sb2FkRGlyZWN0aXZlfSBmcm9tICcuL2Fic3RyYWN0LmZpbGUuZG93bmxvYWQuZGlyZWN0aXZlJztcbmltcG9ydCB7RmlsZVNpemVQaXBlfSBmcm9tICcuL2ZpbGUuc2l6ZS5waXBlJztcbmltcG9ydCB7Q1NWRXhwb3J0Q29sdW1ufSBmcm9tICcuL2ZpbGUudHlwZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyaXNrLWNzdi1kb3dubG9hZF0nLFxuICAgIGhvc3QgICAgOiB7XG4gICAgICAgICdbY2xhc3Mucmlzay1jc3YtZG93bmxvYWRdJzogJ3RydWUnLFxuICAgICAgICAnKGNsaWNrKScgICAgICAgICAgICAgICAgICA6ICdkb3dubG9hZCgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQ1NWRmlsZURvd25sb2FkRGlyZWN0aXZlIGV4dGVuZHMgQWJzdHJhY3RGaWxlRG93bmxvYWREaXJlY3RpdmU8dW5rbm93bltdPiB7XG5cbiAgICBASW5wdXQoJ3Jpc2stY3N2LWRvd25sb2FkLWNvbHVtbnMnKVxuICAgIHB1YmxpYyBjb2x1bW5zPzogQXJyYXk8Q1NWRXhwb3J0Q29sdW1uPHVua25vd24+PjtcblxuICAgIEBJbnB1dCgncmlzay1jc3YtZG93bmxvYWQnKVxuICAgIHB1YmxpYyBkYXRhPzogT2JzZXJ2YWJsZVdpdGhQcm9ncmVzczx1bmtub3duW10+XG4gICAgICAgIHwgT2JzZXJ2YWJsZTx1bmtub3duW10+XG4gICAgICAgIHwgdW5rbm93bltdO1xuXG4gICAgQElucHV0KCdyaXNrLWNzdi1kb3dubG9hZC1maWxlbmFtZScpXG4gICAgcHVibGljIGZpbGVuYW1lOiBzdHJpbmcgPSAnZGF0YS5jc3YnO1xuXG4gICAgQElucHV0KCdyaXNrLWNzdi1kb3dubG9hZC1jcmxmJylcbiAgICBwdWJsaWMgY3JsZkxpbmVFbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRhdGVGb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgIGZpbGVTaXplUGlwZTogRmlsZVNpemVQaXBlLFxuICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXI6IExvZ2dlcikge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBkaWFsb2dTZXJ2aWNlLCBmaWxlU2l6ZVBpcGUsIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG1hcFRvRmlsZShkYXRhOiB1bmtub3duW10pOiBGaWxlV2l0aENvbnRlbnQge1xuICAgICAgICBsZXQgY3N2RmlsZSA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGNzdkZpbGUgKz0gdGhpcy5jcmVhdGVIZWFkZXIoKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgZGF0YSkge1xuICAgICAgICAgICAgICAgIGNzdkZpbGUgKz0gdGhpcy5wcm9jZXNzUm93KHJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsZW5hbWU6IHRoaXMuZmlsZW5hbWUsXG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmNyZWF0ZUJsb2IoW2NzdkZpbGVdLCB7dHlwZTogQ09OVEVOVF9UWVBFLlRFWFRfQ1NWfSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NSb3cocm93OiB1bmtub3duKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1ucyEubWFwKChjb2x1bW46IENTVkV4cG9ydENvbHVtbjx1bmtub3duPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb2x1bW4uZ2V0KHJvdyk7XG4gICAgICAgICAgICBsZXQgaW5uZXJWYWx1ZSA9IHRvU3RyaW5nKHZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIGlubmVyVmFsdWUgPSB0aGlzLmRhdGVGb3JtYXR0ZXIudHJhbnNmb3JtKHZhbHVlKSB8fCAnJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGlubmVyVmFsdWUucmVwbGFjZSgvXCIvZywgJ1wiXCInKTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdC5zZWFyY2goLyhbXCIsXFxuXSkvZykgPj0gMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGBcIiR7cmVzdWx0fVwiYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSkuam9pbignLCcpICsgdGhpcy5nZXRMaW5lRW5kaW5nKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVIZWFkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1ucyEubWFwKChjb2x1bW46IENTVkV4cG9ydENvbHVtbjx1bmtub3duPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5uZXJWYWx1ZSA9IHRvU3RyaW5nKGNvbHVtbi5oZWFkZXIpO1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGlubmVyVmFsdWUucmVwbGFjZSgvXCIvZywgJ1wiXCInKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc2VhcmNoKC8oW1wiLFxcbl0pL2cpID49IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBgXCIke3Jlc3VsdH1cImA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KS5qb2luKCcsJykgKyB0aGlzLmdldExpbmVFbmRpbmcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExpbmVFbmRpbmcoKSB7XG4gICAgICAgIGlmICh0aGlzLmNybGZMaW5lRW5kaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1xcclxcbic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdcXG4nO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input, Renderer2 } 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 { CSVFileUploadService } from './csv.file.upload.service';
6
- export class CSVFileUploadComponent extends AbstractFileUploadComponent {
7
- constructor(fileUploadService, renderer) {
8
- super(renderer);
9
- this.fileUploadService = fileUploadService;
10
- }
11
- readFiles(fileList) {
12
- return this.fileUploadService.readFiles(fileList, this.nameMapper).pipe(switchMap((files) => {
13
- const validationErrors = [];
14
- if (!this.validator || files.every((file) => {
15
- const result = this.validator(file);
16
- if (!result.result && result.messages != null) {
17
- result.messages.forEach((message) => {
18
- validationErrors.push(message);
19
- });
20
- }
21
- return result.result;
22
- })) {
23
- return of(files);
24
- }
25
- else {
26
- return throwError(`<li>${validationErrors.join('</li><li>')}</li>`);
27
- }
28
- }));
29
- }
30
- }
31
- CSVFileUploadComponent.decorators = [
32
- { type: Component, args: [{
33
- selector: 'risk-csv-file-upload',
34
- 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",
35
- host: {
36
- '[class.risk-csv-file-upload]': 'true'
37
- },
38
- changeDetection: ChangeDetectionStrategy.OnPush,
39
- preserveWhitespaces: false,
40
- 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"]
41
- },] }
42
- ];
43
- CSVFileUploadComponent.ctorParameters = () => [
44
- { type: CSVFileUploadService },
45
- { type: Renderer2 }
46
- ];
47
- CSVFileUploadComponent.propDecorators = {
48
- validator: [{ type: Input }],
49
- nameMapper: [{ type: Input }]
50
- };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmZpbGUudXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItZmlsZS9zcmMvbGliL2Nzdi5maWxlLnVwbG9hZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQWdCL0QsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDJCQUFvQztJQVE1RSxZQUFvQyxpQkFBdUMsRUFBRSxRQUFtQjtRQUM1RixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFEZ0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtJQUUzRSxDQUFDO0lBRVMsU0FBUyxDQUFDLFFBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDbkUsU0FBUyxDQUFDLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQzNCLE1BQU0sZ0JBQWdCLEdBQWEsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQzlCLENBQUMsSUFBYSxFQUFFLEVBQUU7Z0JBQ2QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUU7b0JBQzNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUU7d0JBQ3hDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDbkMsQ0FBQyxDQUFDLENBQUM7aUJBQ047Z0JBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxFQUFFO2dCQUNKLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3BCO2lCQUFNO2dCQUNILE9BQU8sVUFBVSxDQUFDLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN2RTtRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOzs7WUE3Q0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBYSxzQkFBc0I7Z0JBQzNDLDB5Q0FBMEQ7Z0JBSzFELElBQUksRUFBaUI7b0JBQ2pCLDhCQUE4QixFQUFFLE1BQU07aUJBQ3pDO2dCQUNELGVBQWUsRUFBTSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUNuRCxtQkFBbUIsRUFBRSxLQUFLOzthQUM3Qjs7O1lBZk8sb0JBQW9CO1lBSnVCLFNBQVM7Ozt3QkFzQnZELEtBQUs7eUJBR0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0Fic3RyYWN0RmlsZVVwbG9hZENvbXBvbmVudH0gZnJvbSAnLi9hYnN0cmFjdC5maWxlLnVwbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHtDU1ZGaWxlVXBsb2FkU2VydmljZX0gZnJvbSAnLi9jc3YuZmlsZS51cGxvYWQuc2VydmljZSc7XG5pbXBvcnQge0NTVkNvbHVtbk5hbWVNYXBwZXIsIENTVkZpbGUsIENTVlZhbGlkYXRvcn0gZnJvbSAnLi9maWxlLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3IgICAgICAgICAgIDogJ3Jpc2stY3N2LWZpbGUtdXBsb2FkJyxcbiAgICB0ZW1wbGF0ZVVybCAgICAgICAgOiAnYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJscyAgICAgICAgICA6IFtcbiAgICAgICAgJy4uLy4uLy4uL2NvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJ2Fic3RyYWN0LmZpbGUudXBsb2FkLmNvbXBvbmVudC5zY3NzJ1xuICAgIF0sXG4gICAgaG9zdCAgICAgICAgICAgICAgIDoge1xuICAgICAgICAnW2NsYXNzLnJpc2stY3N2LWZpbGUtdXBsb2FkXSc6ICd0cnVlJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uICAgIDogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIENTVkZpbGVVcGxvYWRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpbGVVcGxvYWRDb21wb25lbnQ8Q1NWRmlsZT4ge1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsaWRhdG9yPzogQ1NWVmFsaWRhdG9yO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbmFtZU1hcHBlcj86IENTVkNvbHVtbk5hbWVNYXBwZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmaWxlVXBsb2FkU2VydmljZTogQ1NWRmlsZVVwbG9hZFNlcnZpY2UsIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgc3VwZXIocmVuZGVyZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZWFkRmlsZXMoZmlsZUxpc3Q6IEZpbGVMaXN0KTogT2JzZXJ2YWJsZTxDU1ZGaWxlW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UucmVhZEZpbGVzKGZpbGVMaXN0LCB0aGlzLm5hbWVNYXBwZXIpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGZpbGVzOiBDU1ZGaWxlW10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uRXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy52YWxpZGF0b3IgfHwgZmlsZXMuZXZlcnkoXG4gICAgICAgICAgICAgICAgICAgIChmaWxlOiBDU1ZGaWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnZhbGlkYXRvciEoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5yZXN1bHQgJiYgcmVzdWx0Lm1lc3NhZ2VzICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmlsZXMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGA8bGk+JHt2YWxpZGF0aW9uRXJyb3JzLmpvaW4oJzwvbGk+PGxpPicpfTwvbGk+YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -1,105 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { toString } from '@dbg-riskit/common';
3
- import { forkJoin, Observable } from 'rxjs';
4
- // Create a regular expression to parse the CSV values.
5
- const CSV_FILE_PATTERN = new RegExp((
6
- // Delimiters.
7
- '([,;]|\\r?\\n|\\r|^)' +
8
- // Quoted fields.
9
- '(?:"([^"]*(?:""[^"]*)*)"|' +
10
- // Standard fields.
11
- '([^",;\\r\\n]*))'), 'gi');
12
- export class CSVFileUploadService {
13
- readFiles(files, nameMapper = (name) => name) {
14
- const fileOservables = [];
15
- for (const file of Array.from(files)) {
16
- fileOservables.push(new Observable((observer) => {
17
- setTimeout(() => {
18
- try {
19
- const reader = new FileReader();
20
- // Handle errors load
21
- reader.onload = (event) => {
22
- observer.next(CSVFileUploadService.getCSVFile(toString(event.target.result), file, nameMapper));
23
- observer.complete();
24
- };
25
- reader.onerror = (event) => {
26
- observer.error(event.target.error);
27
- };
28
- // Read file into memory as UTF-8
29
- reader.readAsText(file);
30
- }
31
- catch (err) {
32
- observer.error(err);
33
- }
34
- });
35
- }));
36
- }
37
- return forkJoin(fileOservables);
38
- }
39
- static getCSVFile(content, file, nameMapper) {
40
- // Create an array to hold our data. Give the array
41
- // a default empty first row.
42
- let arrData = [[]];
43
- // Create an array to hold our individual pattern
44
- // matching groups.
45
- // Keep looping over the regular expression matches
46
- // until we can no longer find a match.
47
- while (true) {
48
- const arrMatches = CSV_FILE_PATTERN.exec(content);
49
- if (arrMatches == null) {
50
- break;
51
- }
52
- // Get the delimiter that was found.
53
- const strMatchedDelimiter = arrMatches[1];
54
- // Check to see if the given delimiter has a length
55
- // (is not the start of string) and if it matches
56
- // field delimiter. If id does not, then we know
57
- // that this delimiter is a row delimiter.
58
- if (strMatchedDelimiter.length && strMatchedDelimiter !== ',' && strMatchedDelimiter !== ';') {
59
- // Since we have reached a new row of data,
60
- // add an empty row to our data array.
61
- arrData.push([]);
62
- }
63
- let strMatchedValue;
64
- // Now that we have our delimiter out of the way,
65
- // let's check to see which kind of value we
66
- // captured (quoted or unquoted).
67
- if (arrMatches[2]) {
68
- // We found a quoted value. When we capture
69
- // this value, unescape any double quotes.
70
- strMatchedValue = arrMatches[2].replace(new RegExp('""', 'g'), '"');
71
- }
72
- else {
73
- // We found a non-quoted value.
74
- strMatchedValue = arrMatches[3];
75
- }
76
- // Now that we have our value string, let's add
77
- // it to the data array.
78
- arrData[arrData.length - 1].push(strMatchedValue);
79
- }
80
- // Filter out empty rows
81
- arrData = arrData.filter((dataRow) => {
82
- return dataRow.some((item) => item != null && item.trim() !== '');
83
- });
84
- // Return the parsed data.
85
- return {
86
- header: arrData[0],
87
- body: arrData.slice(1).map((dataRow) => {
88
- const row = {};
89
- for (let i = 0; i < arrData[0].length; i++) {
90
- row[nameMapper(arrData[0][i])] = dataRow[i];
91
- }
92
- return row;
93
- }),
94
- file: {
95
- name: file.name,
96
- size: file.size,
97
- type: file.type
98
- }
99
- };
100
- }
101
- }
102
- CSVFileUploadService.decorators = [
103
- { type: Injectable }
104
- ];
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmZpbGUudXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9jc3YuZmlsZS51cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUd0RCx1REFBdUQ7QUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLE1BQU0sQ0FDL0I7QUFDSSxjQUFjO0FBQ2Qsc0JBQXNCO0lBRXRCLGlCQUFpQjtJQUNqQiwyQkFBMkI7SUFFM0IsbUJBQW1CO0lBQ25CLGtCQUFrQixDQUNyQixFQUNELElBQUksQ0FDUCxDQUFDO0FBR0YsTUFBTSxPQUFPLG9CQUFvQjtJQUV0QixTQUFTLENBQUMsS0FBZSxFQUFFLGFBQWtDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJO1FBQ3RGLE1BQU0sY0FBYyxHQUErQixFQUFFLENBQUM7UUFDdEQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUE2QixFQUFFLEVBQUU7Z0JBQ2pFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1osSUFBSTt3QkFDQSxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNoQyxxQkFBcUI7d0JBQ3JCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7NEJBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQ1Qsb0JBQW9CLENBQUMsVUFBVSxDQUMzQixRQUFRLENBQUUsS0FBSyxDQUFDLE1BQXFCLENBQUMsTUFBTSxDQUFDLEVBQzdDLElBQUksRUFDSixVQUFVLENBQUMsQ0FDbEIsQ0FBQzs0QkFDRixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3hCLENBQUMsQ0FBQzt3QkFDRixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFOzRCQUN0QyxRQUFRLENBQUMsS0FBSyxDQUFFLEtBQUssQ0FBQyxNQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN2RCxDQUFDLENBQUM7d0JBQ0YsaUNBQWlDO3dCQUNqQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUMzQjtvQkFBQyxPQUFPLEdBQUcsRUFBRTt3QkFDVixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUN2QjtnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDUDtRQUNELE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQWUsRUFBRSxJQUFVLEVBQUUsVUFBK0I7UUFDakYsbURBQW1EO1FBQ25ELDZCQUE2QjtRQUM3QixJQUFJLE9BQU8sR0FBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRS9CLGlEQUFpRDtRQUNqRCxtQkFBbUI7UUFFbkIsbURBQW1EO1FBQ25ELHVDQUF1QztRQUN2QyxPQUFPLElBQUksRUFBRTtZQUNULE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsRCxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLE1BQU07YUFDVDtZQUVELG9DQUFvQztZQUNwQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUxQyxtREFBbUQ7WUFDbkQsaURBQWlEO1lBQ2pELGdEQUFnRDtZQUNoRCwwQ0FBMEM7WUFDMUMsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLElBQUksbUJBQW1CLEtBQUssR0FBRyxJQUFJLG1CQUFtQixLQUFLLEdBQUcsRUFBRTtnQkFDMUYsMkNBQTJDO2dCQUMzQyxzQ0FBc0M7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDcEI7WUFFRCxJQUFJLGVBQWUsQ0FBQztZQUVwQixpREFBaUQ7WUFDakQsNENBQTRDO1lBQzVDLGlDQUFpQztZQUNqQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFFZiwyQ0FBMkM7Z0JBQzNDLDBDQUEwQztnQkFDMUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ25DLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFDckIsR0FBRyxDQUNOLENBQUM7YUFFTDtpQkFBTTtnQkFFSCwrQkFBK0I7Z0JBQy9CLGVBQWUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFFbkM7WUFFRCwrQ0FBK0M7WUFDL0Msd0JBQXdCO1lBQ3hCLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNyRDtRQUVELHdCQUF3QjtRQUN4QixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQWlCLEVBQUUsRUFBRTtZQUMzQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO1FBRUgsMEJBQTBCO1FBQzFCLE9BQU87WUFDSCxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLEVBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFpQixFQUFFLEVBQUU7Z0JBQy9DLE1BQU0sR0FBRyxHQUE4QixFQUFFLENBQUM7Z0JBQzFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUN4QyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMvQztnQkFDRCxPQUFPLEdBQUcsQ0FBQztZQUNmLENBQUMsQ0FBQztZQUNGLElBQUksRUFBSTtnQkFDSixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNsQjtTQUNKLENBQUM7SUFDTixDQUFDOzs7WUE5R0osVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU3RyaW5nfSBmcm9tICdAZGJnLXJpc2tpdC9jb21tb24nO1xuaW1wb3J0IHtmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NTVkNvbHVtbk5hbWVNYXBwZXIsIENTVkZpbGV9IGZyb20gJy4vZmlsZS50eXBlcyc7XG5cbi8vIENyZWF0ZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBwYXJzZSB0aGUgQ1NWIHZhbHVlcy5cbmNvbnN0IENTVl9GSUxFX1BBVFRFUk4gPSBuZXcgUmVnRXhwKFxuICAgIChcbiAgICAgICAgLy8gRGVsaW1pdGVycy5cbiAgICAgICAgJyhbLDtdfFxcXFxyP1xcXFxufFxcXFxyfF4pJyArXG5cbiAgICAgICAgLy8gUXVvdGVkIGZpZWxkcy5cbiAgICAgICAgJyg/OlwiKFteXCJdKig/OlwiXCJbXlwiXSopKilcInwnICtcblxuICAgICAgICAvLyBTdGFuZGFyZCBmaWVsZHMuXG4gICAgICAgICcoW15cIiw7XFxcXHJcXFxcbl0qKSknXG4gICAgKSxcbiAgICAnZ2knXG4pO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ1NWRmlsZVVwbG9hZFNlcnZpY2Uge1xuXG4gICAgcHVibGljIHJlYWRGaWxlcyhmaWxlczogRmlsZUxpc3QsIG5hbWVNYXBwZXI6IENTVkNvbHVtbk5hbWVNYXBwZXIgPSAobmFtZTogc3RyaW5nKSA9PiBuYW1lKTogT2JzZXJ2YWJsZTxDU1ZGaWxlW10+IHtcbiAgICAgICAgY29uc3QgZmlsZU9zZXJ2YWJsZXM6IEFycmF5PE9ic2VydmFibGU8Q1NWRmlsZT4+ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBBcnJheS5mcm9tKGZpbGVzKSkge1xuICAgICAgICAgICAgZmlsZU9zZXJ2YWJsZXMucHVzaChuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IFN1YnNjcmliZXI8Q1NWRmlsZT4pID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgZXJyb3JzIGxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1ZGaWxlVXBsb2FkU2VydmljZS5nZXRDU1ZGaWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9TdHJpbmcoKGV2ZW50LnRhcmdldCBhcyBGaWxlUmVhZGVyKS5yZXN1bHQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVNYXBwZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoKGV2ZW50LnRhcmdldCBhcyBGaWxlUmVhZGVyKS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhZCBmaWxlIGludG8gbWVtb3J5IGFzIFVURi04XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKGZpbGVPc2VydmFibGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldENTVkZpbGUoY29udGVudDogc3RyaW5nLCBmaWxlOiBGaWxlLCBuYW1lTWFwcGVyOiBDU1ZDb2x1bW5OYW1lTWFwcGVyKTogQ1NWRmlsZSB7XG4gICAgICAgIC8vIENyZWF0ZSBhbiBhcnJheSB0byBob2xkIG91ciBkYXRhLiBHaXZlIHRoZSBhcnJheVxuICAgICAgICAvLyBhIGRlZmF1bHQgZW1wdHkgZmlyc3Qgcm93LlxuICAgICAgICBsZXQgYXJyRGF0YTogc3RyaW5nW11bXSA9IFtbXV07XG5cbiAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IHRvIGhvbGQgb3VyIGluZGl2aWR1YWwgcGF0dGVyblxuICAgICAgICAvLyBtYXRjaGluZyBncm91cHMuXG5cbiAgICAgICAgLy8gS2VlcCBsb29waW5nIG92ZXIgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGVzXG4gICAgICAgIC8vIHVudGlsIHdlIGNhbiBubyBsb25nZXIgZmluZCBhIG1hdGNoLlxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgY29uc3QgYXJyTWF0Y2hlcyA9IENTVl9GSUxFX1BBVFRFUk4uZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgIGlmIChhcnJNYXRjaGVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gR2V0IHRoZSBkZWxpbWl0ZXIgdGhhdCB3YXMgZm91bmQuXG4gICAgICAgICAgICBjb25zdCBzdHJNYXRjaGVkRGVsaW1pdGVyID0gYXJyTWF0Y2hlc1sxXTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBnaXZlbiBkZWxpbWl0ZXIgaGFzIGEgbGVuZ3RoXG4gICAgICAgICAgICAvLyAoaXMgbm90IHRoZSBzdGFydCBvZiBzdHJpbmcpIGFuZCBpZiBpdCBtYXRjaGVzXG4gICAgICAgICAgICAvLyBmaWVsZCBkZWxpbWl0ZXIuIElmIGlkIGRvZXMgbm90LCB0aGVuIHdlIGtub3dcbiAgICAgICAgICAgIC8vIHRoYXQgdGhpcyBkZWxpbWl0ZXIgaXMgYSByb3cgZGVsaW1pdGVyLlxuICAgICAgICAgICAgaWYgKHN0ck1hdGNoZWREZWxpbWl0ZXIubGVuZ3RoICYmIHN0ck1hdGNoZWREZWxpbWl0ZXIgIT09ICcsJyAmJiBzdHJNYXRjaGVkRGVsaW1pdGVyICE9PSAnOycpIHtcbiAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBoYXZlIHJlYWNoZWQgYSBuZXcgcm93IG9mIGRhdGEsXG4gICAgICAgICAgICAgICAgLy8gYWRkIGFuIGVtcHR5IHJvdyB0byBvdXIgZGF0YSBhcnJheS5cbiAgICAgICAgICAgICAgICBhcnJEYXRhLnB1c2goW10pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgc3RyTWF0Y2hlZFZhbHVlO1xuXG4gICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIG91ciBkZWxpbWl0ZXIgb3V0IG9mIHRoZSB3YXksXG4gICAgICAgICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgd2hpY2gga2luZCBvZiB2YWx1ZSB3ZVxuICAgICAgICAgICAgLy8gY2FwdHVyZWQgKHF1b3RlZCBvciB1bnF1b3RlZCkuXG4gICAgICAgICAgICBpZiAoYXJyTWF0Y2hlc1syXSkge1xuXG4gICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBxdW90ZWQgdmFsdWUuIFdoZW4gd2UgY2FwdHVyZVxuICAgICAgICAgICAgICAgIC8vIHRoaXMgdmFsdWUsIHVuZXNjYXBlIGFueSBkb3VibGUgcXVvdGVzLlxuICAgICAgICAgICAgICAgIHN0ck1hdGNoZWRWYWx1ZSA9IGFyck1hdGNoZXNbMl0ucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgbmV3IFJlZ0V4cCgnXCJcIicsICdnJyksXG4gICAgICAgICAgICAgICAgICAgICdcIidcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBub24tcXVvdGVkIHZhbHVlLlxuICAgICAgICAgICAgICAgIHN0ck1hdGNoZWRWYWx1ZSA9IGFyck1hdGNoZXNbM107XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSBvdXIgdmFsdWUgc3RyaW5nLCBsZXQncyBhZGRcbiAgICAgICAgICAgIC8vIGl0IHRvIHRoZSBkYXRhIGFycmF5LlxuICAgICAgICAgICAgYXJyRGF0YVthcnJEYXRhLmxlbmd0aCAtIDFdLnB1c2goc3RyTWF0Y2hlZFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbHRlciBvdXQgZW1wdHkgcm93c1xuICAgICAgICBhcnJEYXRhID0gYXJyRGF0YS5maWx0ZXIoKGRhdGFSb3c6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVJvdy5zb21lKChpdGVtOiBzdHJpbmcpID0+IGl0ZW0gIT0gbnVsbCAmJiBpdGVtLnRyaW0oKSAhPT0gJycpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZXR1cm4gdGhlIHBhcnNlZCBkYXRhLlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyOiBhcnJEYXRhWzBdLFxuICAgICAgICAgICAgYm9keSAgOiBhcnJEYXRhLnNsaWNlKDEpLm1hcCgoZGF0YVJvdzogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3c6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyckRhdGFbMF0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgcm93W25hbWVNYXBwZXIoYXJyRGF0YVswXVtpXSldID0gZGF0YVJvd1tpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsZSAgOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -1,28 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- export class CSVDownloadMenuComponent {
3
- constructor() {
4
- this.menuLabel = 'Download';
5
- this.disabled = false;
6
- }
7
- }
8
- CSVDownloadMenuComponent.decorators = [
9
- { type: Component, args: [{
10
- selector: 'risk-download-menu',
11
- template: "<mat-menu #downloadMenu=\"matMenu\"\n [overlapTrigger]=\"false\">\n <a mat-menu-item\n [risk-csv-download]=\"data\"\n [risk-csv-download-columns]=\"columns\"\n [risk-csv-download-filename]=\"filename\"\n [risk-csv-download-crlf]=\"true\">\n As CSV file (Windows)\n </a>\n <a mat-menu-item\n [risk-csv-download]=\"data\"\n [risk-csv-download-columns]=\"columns\"\n [risk-csv-download-filename]=\"filename\">\n As CSV file (Unix)\n </a>\n</mat-menu>\n\n<button mat-button\n #menu=\"matMenuTrigger\"\n [disabled]=\"disabled\"\n [matMenuTriggerFor]=\"downloadMenu\"\n [class.risk-menu-open]=\"menu.menuOpen\"\n [matTooltip]=\"menuTooltip\">\n <mat-icon>file_download</mat-icon>\n {{ menuLabel }}\n</button>\n",
12
- host: {
13
- '[class.risk-download-menu]': 'true'
14
- },
15
- changeDetection: ChangeDetectionStrategy.OnPush,
16
- preserveWhitespaces: false,
17
- styles: [":host{display:block;padding:0;margin:0}:host>*{vertical-align:bottom}\n", ":host{display:inline-block}\n"]
18
- },] }
19
- ];
20
- CSVDownloadMenuComponent.propDecorators = {
21
- menuLabel: [{ type: Input }],
22
- menuTooltip: [{ type: Input }],
23
- columns: [{ type: Input }],
24
- data: [{ type: Input }],
25
- disabled: [{ type: Input }],
26
- filename: [{ type: Input }]
27
- };
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQubWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9kb3dubG9hZC5tZW51LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQWlCeEUsTUFBTSxPQUFPLHdCQUF3QjtJQWJyQztRQWdCVyxjQUFTLEdBQVcsVUFBVSxDQUFDO1FBWS9CLGFBQVEsR0FBWSxLQUFLLENBQUM7SUFJckMsQ0FBQzs7O1lBaENBLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQWEsb0JBQW9CO2dCQUN6QyxrMEJBQW1EO2dCQUtuRCxJQUFJLEVBQWlCO29CQUNqQiw0QkFBNEIsRUFBRSxNQUFNO2lCQUN2QztnQkFDRCxlQUFlLEVBQU0sdUJBQXVCLENBQUMsTUFBTTtnQkFDbkQsbUJBQW1CLEVBQUUsS0FBSzs7YUFDN0I7Ozt3QkFHSSxLQUFLOzBCQUdMLEtBQUs7c0JBR0wsS0FBSzttQkFHTCxLQUFLO3VCQUdMLEtBQUs7dUJBR0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q1NWRXhwb3J0Q29sdW1ufSBmcm9tICcuL2ZpbGUudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvciAgICAgICAgICAgOiAncmlzay1kb3dubG9hZC1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybCAgICAgICAgOiAnZG93bmxvYWQubWVudS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzICAgICAgICAgIDogW1xuICAgICAgICAnLi4vLi4vLi4vY29tcG9uZW50LnNjc3MnLFxuICAgICAgICAnZG93bmxvYWQubWVudS5jb21wb25lbnQuc2NzcydcbiAgICBdLFxuICAgIGhvc3QgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgJ1tjbGFzcy5yaXNrLWRvd25sb2FkLW1lbnVdJzogJ3RydWUnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb24gICAgOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgQ1NWRG93bmxvYWRNZW51Q29tcG9uZW50IHtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1lbnVMYWJlbDogc3RyaW5nID0gJ0Rvd25sb2FkJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1lbnVUb29sdGlwPzogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sdW1ucz86IEFycmF5PENTVkV4cG9ydENvbHVtbjx1bmtub3duPj47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkYXRhPzogdW5rbm93bltdIHwgT2JzZXJ2YWJsZTx1bmtub3duW10+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbGVuYW1lPzogc3RyaW5nO1xufVxuIl19
@@ -1,51 +0,0 @@
1
- import { Directive, ElementRef, Input } from '@angular/core';
2
- import { DialogService } from '@dbg-riskit/angular-view';
3
- import { Logger } from '@dbg-riskit/common';
4
- import { AbstractFileDownloadDirective } from './abstract.file.download.directive';
5
- import { FileSizePipe } from './file.size.pipe';
6
- export class FileDownloadDirective extends AbstractFileDownloadDirective {
7
- constructor(elementRef, dialogService, fileSizePipe, logger) {
8
- super(elementRef, dialogService, fileSizePipe, logger);
9
- }
10
- mapToFile(data) {
11
- const filename = this.filename || 'data.txt';
12
- if (data instanceof Blob) {
13
- return {
14
- content: data,
15
- filename
16
- };
17
- }
18
- if (typeof data === 'object' && 'content' in data && data.content instanceof Blob) {
19
- return {
20
- content: data.content,
21
- filename: data.filename || filename
22
- };
23
- }
24
- const stringData = typeof data === 'string' ? data : JSON.stringify(data);
25
- return {
26
- content: this.createBlob([stringData], { type: this.contentType }),
27
- filename
28
- };
29
- }
30
- }
31
- FileDownloadDirective.decorators = [
32
- { type: Directive, args: [{
33
- selector: '[risk-download]',
34
- host: {
35
- '[class.risk-download]': 'true',
36
- '(click)': 'download()'
37
- }
38
- },] }
39
- ];
40
- FileDownloadDirective.ctorParameters = () => [
41
- { type: ElementRef },
42
- { type: DialogService },
43
- { type: FileSizePipe },
44
- { type: Logger }
45
- ];
46
- FileDownloadDirective.propDecorators = {
47
- data: [{ type: Input, args: ['risk-download',] }],
48
- contentType: [{ type: Input, args: ['risk-download-content-type',] }],
49
- filename: [{ type: Input, args: ['risk-download-filename',] }]
50
- };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5kb3dubG9hZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9maWxlLmRvd25sb2FkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBa0IsTUFBTSxFQUF5QixNQUFNLG9CQUFvQixDQUFDO0FBRW5GLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQVc5QyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsNkJBQXVEO0lBYTlGLFlBQW1CLFVBQXNCLEVBQ3RCLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLE1BQWM7UUFDN0IsS0FBSyxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFUyxTQUFTLENBQUMsSUFBOEI7UUFDOUMsTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUM7UUFDckQsSUFBSSxJQUFJLFlBQVksSUFBSSxFQUFFO1lBQ3RCLE9BQU87Z0JBQ0gsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsUUFBUTthQUNYLENBQUM7U0FDTDtRQUVELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sWUFBWSxJQUFJLEVBQUU7WUFDL0UsT0FBTztnQkFDSCxPQUFPLEVBQUcsSUFBSSxDQUFDLE9BQU87Z0JBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVE7YUFDdEMsQ0FBQztTQUNMO1FBRUQsTUFBTSxVQUFVLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUUsT0FBTztZQUNILE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQ2hFLFFBQVE7U0FDWCxDQUFDO0lBQ04sQ0FBQzs7O1lBaERKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixJQUFJLEVBQU07b0JBQ04sdUJBQXVCLEVBQUUsTUFBTTtvQkFDL0IsU0FBUyxFQUFnQixZQUFZO2lCQUN4QzthQUNKOzs7WUFma0IsVUFBVTtZQUNyQixhQUFhO1lBSWIsWUFBWTtZQUhLLE1BQU07OzttQkFnQjFCLEtBQUssU0FBQyxlQUFlOzBCQUtyQixLQUFLLFNBQUMsNEJBQTRCO3VCQUdsQyxLQUFLLFNBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci12aWV3JztcbmltcG9ydCB7RmlsZVdpdGhDb250ZW50LCBMb2dnZXIsIE9ic2VydmFibGVXaXRoUHJvZ3Jlc3N9IGZyb20gJ0BkYmctcmlza2l0L2NvbW1vbic7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBYnN0cmFjdEZpbGVEb3dubG9hZERpcmVjdGl2ZX0gZnJvbSAnLi9hYnN0cmFjdC5maWxlLmRvd25sb2FkLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0ZpbGVTaXplUGlwZX0gZnJvbSAnLi9maWxlLnNpemUucGlwZSc7XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZERvd25sb2FkRm9ybWF0cyA9IEZpbGVXaXRoQ29udGVudCB8IEJsb2IgfCBvYmplY3QgfCBzdHJpbmc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3Jpc2stZG93bmxvYWRdJyxcbiAgICBob3N0ICAgIDoge1xuICAgICAgICAnW2NsYXNzLnJpc2stZG93bmxvYWRdJzogJ3RydWUnLFxuICAgICAgICAnKGNsaWNrKScgICAgICAgICAgICAgIDogJ2Rvd25sb2FkKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRG93bmxvYWREaXJlY3RpdmUgZXh0ZW5kcyBBYnN0cmFjdEZpbGVEb3dubG9hZERpcmVjdGl2ZTxTdXBwb3J0ZWREb3dubG9hZEZvcm1hdHM+IHtcblxuICAgIEBJbnB1dCgncmlzay1kb3dubG9hZCcpXG4gICAgcHVibGljIGRhdGE/OiBPYnNlcnZhYmxlV2l0aFByb2dyZXNzPFN1cHBvcnRlZERvd25sb2FkRm9ybWF0cz5cbiAgICAgICAgfCBPYnNlcnZhYmxlPFN1cHBvcnRlZERvd25sb2FkRm9ybWF0cz5cbiAgICAgICAgfCBTdXBwb3J0ZWREb3dubG9hZEZvcm1hdHM7XG5cbiAgICBASW5wdXQoJ3Jpc2stZG93bmxvYWQtY29udGVudC10eXBlJylcbiAgICBwdWJsaWMgY29udGVudFR5cGU/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoJ3Jpc2stZG93bmxvYWQtZmlsZW5hbWUnKVxuICAgIHB1YmxpYyBmaWxlbmFtZT86IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICAgICAgICAgICBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICBmaWxlU2l6ZVBpcGU6IEZpbGVTaXplUGlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyOiBMb2dnZXIpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZGlhbG9nU2VydmljZSwgZmlsZVNpemVQaXBlLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBtYXBUb0ZpbGUoZGF0YTogU3VwcG9ydGVkRG93bmxvYWRGb3JtYXRzKTogRmlsZVdpdGhDb250ZW50IHtcbiAgICAgICAgY29uc3QgZmlsZW5hbWU6IHN0cmluZyA9IHRoaXMuZmlsZW5hbWUgfHwgJ2RhdGEudHh0JztcbiAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGRhdGEsXG4gICAgICAgICAgICAgICAgZmlsZW5hbWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdjb250ZW50JyBpbiBkYXRhICYmIGRhdGEuY29udGVudCBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29udGVudCA6IGRhdGEuY29udGVudCxcbiAgICAgICAgICAgICAgICBmaWxlbmFtZTogZGF0YS5maWxlbmFtZSB8fCBmaWxlbmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0cmluZ0RhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgPyBkYXRhIDogSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmNyZWF0ZUJsb2IoW3N0cmluZ0RhdGFdLCB7dHlwZTogdGhpcy5jb250ZW50VHlwZX0pLFxuICAgICAgICAgICAgZmlsZW5hbWVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -1,50 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { LoggingModule } from '@dbg-riskit/angular-logging';
4
- import { CommonViewModule } from '@dbg-riskit/angular-view';
5
- import { BinaryFileUploadComponent } from './binary.file.upload.component';
6
- import { BinaryFileUploadService } from './binary.file.upload.service';
7
- import { CSVFileDownloadDirective } from './csv.file.download.directive';
8
- import { CSVFileUploadComponent } from './csv.file.upload.component';
9
- import { CSVFileUploadService } from './csv.file.upload.service';
10
- import { CSVDownloadMenuComponent } from './download.menu.component';
11
- import { FileDownloadDirective } from './file.download.directive';
12
- import { FileSizePipe } from './file.size.pipe';
13
- import { TextFileUploadComponent } from './text.file.upload.component';
14
- import { TextFileUploadService } from './text.file.upload.service';
15
- export class FileModule {
16
- }
17
- FileModule.decorators = [
18
- { type: NgModule, args: [{
19
- imports: [
20
- CommonModule,
21
- CommonViewModule,
22
- LoggingModule
23
- ],
24
- declarations: [
25
- BinaryFileUploadComponent,
26
- CSVFileUploadComponent,
27
- TextFileUploadComponent,
28
- CSVFileDownloadDirective,
29
- CSVDownloadMenuComponent,
30
- FileDownloadDirective,
31
- FileSizePipe
32
- ],
33
- exports: [
34
- BinaryFileUploadComponent,
35
- CSVFileUploadComponent,
36
- TextFileUploadComponent,
37
- CSVFileDownloadDirective,
38
- CSVDownloadMenuComponent,
39
- FileDownloadDirective,
40
- FileSizePipe
41
- ],
42
- providers: [
43
- BinaryFileUploadService,
44
- CSVFileUploadService,
45
- TextFileUploadService,
46
- FileSizePipe
47
- ]
48
- },] }
49
- ];
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9maWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBaUNqRSxNQUFNLE9BQU8sVUFBVTs7O1lBL0J0QixRQUFRLFNBQUM7Z0JBQ04sT0FBTyxFQUFPO29CQUNWLFlBQVk7b0JBQ1osZ0JBQWdCO29CQUNoQixhQUFhO2lCQUNoQjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1YseUJBQXlCO29CQUN6QixzQkFBc0I7b0JBQ3RCLHVCQUF1QjtvQkFDdkIsd0JBQXdCO29CQUN4Qix3QkFBd0I7b0JBQ3hCLHFCQUFxQjtvQkFDckIsWUFBWTtpQkFDZjtnQkFDRCxPQUFPLEVBQU87b0JBQ1YseUJBQXlCO29CQUN6QixzQkFBc0I7b0JBQ3RCLHVCQUF1QjtvQkFDdkIsd0JBQXdCO29CQUN4Qix3QkFBd0I7b0JBQ3hCLHFCQUFxQjtvQkFDckIsWUFBWTtpQkFDZjtnQkFDRCxTQUFTLEVBQUs7b0JBQ1YsdUJBQXVCO29CQUN2QixvQkFBb0I7b0JBQ3BCLHFCQUFxQjtvQkFDckIsWUFBWTtpQkFDZjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2luZ01vZHVsZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci1sb2dnaW5nJztcbmltcG9ydCB7Q29tbW9uVmlld01vZHVsZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci12aWV3JztcbmltcG9ydCB7QmluYXJ5RmlsZVVwbG9hZENvbXBvbmVudH0gZnJvbSAnLi9iaW5hcnkuZmlsZS51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7QmluYXJ5RmlsZVVwbG9hZFNlcnZpY2V9IGZyb20gJy4vYmluYXJ5LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHtDU1ZGaWxlRG93bmxvYWREaXJlY3RpdmV9IGZyb20gJy4vY3N2LmZpbGUuZG93bmxvYWQuZGlyZWN0aXZlJztcbmltcG9ydCB7Q1NWRmlsZVVwbG9hZENvbXBvbmVudH0gZnJvbSAnLi9jc3YuZmlsZS51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7Q1NWRmlsZVVwbG9hZFNlcnZpY2V9IGZyb20gJy4vY3N2LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHtDU1ZEb3dubG9hZE1lbnVDb21wb25lbnR9IGZyb20gJy4vZG93bmxvYWQubWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHtGaWxlRG93bmxvYWREaXJlY3RpdmV9IGZyb20gJy4vZmlsZS5kb3dubG9hZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtGaWxlU2l6ZVBpcGV9IGZyb20gJy4vZmlsZS5zaXplLnBpcGUnO1xuaW1wb3J0IHtUZXh0RmlsZVVwbG9hZENvbXBvbmVudH0gZnJvbSAnLi90ZXh0LmZpbGUudXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQge1RleHRGaWxlVXBsb2FkU2VydmljZX0gZnJvbSAnLi90ZXh0LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHMgICAgIDogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIENvbW1vblZpZXdNb2R1bGUsXG4gICAgICAgIExvZ2dpbmdNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBCaW5hcnlGaWxlVXBsb2FkQ29tcG9uZW50LFxuICAgICAgICBDU1ZGaWxlVXBsb2FkQ29tcG9uZW50LFxuICAgICAgICBUZXh0RmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgICAgQ1NWRmlsZURvd25sb2FkRGlyZWN0aXZlLFxuICAgICAgICBDU1ZEb3dubG9hZE1lbnVDb21wb25lbnQsXG4gICAgICAgIEZpbGVEb3dubG9hZERpcmVjdGl2ZSxcbiAgICAgICAgRmlsZVNpemVQaXBlXG4gICAgXSxcbiAgICBleHBvcnRzICAgICA6IFtcbiAgICAgICAgQmluYXJ5RmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgICAgQ1NWRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgICAgVGV4dEZpbGVVcGxvYWRDb21wb25lbnQsXG4gICAgICAgIENTVkZpbGVEb3dubG9hZERpcmVjdGl2ZSxcbiAgICAgICAgQ1NWRG93bmxvYWRNZW51Q29tcG9uZW50LFxuICAgICAgICBGaWxlRG93bmxvYWREaXJlY3RpdmUsXG4gICAgICAgIEZpbGVTaXplUGlwZVxuICAgIF0sXG4gICAgcHJvdmlkZXJzICAgOiBbXG4gICAgICAgIEJpbmFyeUZpbGVVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBDU1ZGaWxlVXBsb2FkU2VydmljZSxcbiAgICAgICAgVGV4dEZpbGVVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBGaWxlU2l6ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVNb2R1bGUge1xufVxuIl19
@@ -1,46 +0,0 @@
1
- // Copyright 2017 The Kubernetes Authors.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- import { DecimalPipe } from '@angular/common';
15
- import { Pipe } from '@angular/core';
16
- export class FileSizePipe {
17
- constructor(decimalPipe) {
18
- this.decimalPipe = decimalPipe;
19
- this.base = 1024;
20
- this.powerSuffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];
21
- }
22
- transform(value) {
23
- if (value == null) {
24
- return '';
25
- }
26
- if (typeof value === 'string') {
27
- value = parseFloat(value);
28
- }
29
- let divider = 1;
30
- let power = 0;
31
- while (value / divider > this.base && power < this.powerSuffixes.length - 1) {
32
- divider *= this.base;
33
- power += 1;
34
- }
35
- const formatted = this.decimalPipe.transform(value / divider, '1.2-2') || '';
36
- const suffix = this.powerSuffixes[power];
37
- return suffix ? `${formatted}${suffix}` : formatted;
38
- }
39
- }
40
- FileSizePipe.decorators = [
41
- { type: Pipe, args: [{ name: 'riskFileSize' },] }
42
- ];
43
- FileSizePipe.ctorParameters = () => [
44
- { type: DecimalPipe }
45
- ];
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zaXplLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9maWxlLnNpemUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFDekMsRUFBRTtBQUNGLGtFQUFrRTtBQUNsRSxtRUFBbUU7QUFDbkUsMENBQTBDO0FBQzFDLEVBQUU7QUFDRixpREFBaUQ7QUFDakQsRUFBRTtBQUNGLHNFQUFzRTtBQUN0RSxvRUFBb0U7QUFDcEUsMkVBQTJFO0FBQzNFLHNFQUFzRTtBQUN0RSxpQ0FBaUM7QUFFakMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBSWxELE1BQU0sT0FBTyxZQUFZO0lBSXJCLFlBQW9DLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBSDNDLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixrQkFBYSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUdyRSxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQTZCO1FBQzFDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNmLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUMzQixLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO1FBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVkLE9BQU8sS0FBSyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDckIsS0FBSyxJQUFJLENBQUMsQ0FBQztTQUNkO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN4RCxDQUFDOzs7WUE1QkosSUFBSSxTQUFDLEVBQUMsSUFBSSxFQUFFLGNBQWMsRUFBQzs7O1lBSnBCLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxNyBUaGUgS3ViZXJuZXRlcyBBdXRob3JzLlxuLy9cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4vLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4vLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4vLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4vLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHtEZWNpbWFsUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01heWJlfSBmcm9tICdAZGJnLXJpc2tpdC9jb21tb24nO1xuXG5AUGlwZSh7bmFtZTogJ3Jpc2tGaWxlU2l6ZSd9KVxuZXhwb3J0IGNsYXNzIEZpbGVTaXplUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYmFzZSA9IDEwMjQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3dlclN1ZmZpeGVzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJ107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUpIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBNYXliZTxudW1iZXIgfCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRpdmlkZXIgPSAxO1xuICAgICAgICBsZXQgcG93ZXIgPSAwO1xuXG4gICAgICAgIHdoaWxlICh2YWx1ZSAvIGRpdmlkZXIgPiB0aGlzLmJhc2UgJiYgcG93ZXIgPCB0aGlzLnBvd2VyU3VmZml4ZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgZGl2aWRlciAqPSB0aGlzLmJhc2U7XG4gICAgICAgICAgICBwb3dlciArPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0odmFsdWUgLyBkaXZpZGVyLCAnMS4yLTInKSB8fCAnJztcbiAgICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy5wb3dlclN1ZmZpeGVzW3Bvd2VyXTtcbiAgICAgICAgcmV0dXJuIHN1ZmZpeCA/IGAke2Zvcm1hdHRlZH0ke3N1ZmZpeH1gIDogZm9ybWF0dGVkO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,30 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Renderer2 } from '@angular/core';
2
- import { AbstractFileUploadComponent } from './abstract.file.upload.component';
3
- import { TextFileUploadService } from './text.file.upload.service';
4
- export class TextFileUploadComponent extends AbstractFileUploadComponent {
5
- constructor(fileUploadService, renderer) {
6
- super(renderer);
7
- this.fileUploadService = fileUploadService;
8
- }
9
- readFiles(fileList) {
10
- return this.fileUploadService
11
- .readFiles(fileList);
12
- }
13
- }
14
- TextFileUploadComponent.decorators = [
15
- { type: Component, args: [{
16
- selector: 'risk-text-file-upload',
17
- 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",
18
- host: {
19
- '[class.risk-text-file-upload]': 'true'
20
- },
21
- changeDetection: ChangeDetectionStrategy.OnPush,
22
- preserveWhitespaces: false,
23
- 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
- },] }
25
- ];
26
- TextFileUploadComponent.ctorParameters = () => [
27
- { type: TextFileUploadService },
28
- { type: Renderer2 }
29
- ];
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5maWxlLnVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi90ZXh0LmZpbGUudXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU1RSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUU3RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQWVqRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsMkJBQXFDO0lBRTlFLFlBQW9DLGlCQUF3QyxFQUN6RCxRQUFtQjtRQUNsQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFGZ0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF1QjtJQUc1RSxDQUFDO0lBRVMsU0FBUyxDQUFDLFFBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQjthQUN4QixTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7O1lBdkJKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQWEsdUJBQXVCO2dCQUM1QywweUNBQTBEO2dCQUsxRCxJQUFJLEVBQWlCO29CQUNqQiwrQkFBK0IsRUFBRSxNQUFNO2lCQUMxQztnQkFDRCxlQUFlLEVBQU0sdUJBQXVCLENBQUMsTUFBTTtnQkFDbkQsbUJBQW1CLEVBQUUsS0FBSzs7YUFDN0I7OztZQWRPLHFCQUFxQjtZQUplLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBYnN0cmFjdEZpbGVVcGxvYWRDb21wb25lbnR9IGZyb20gJy4vYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7VGV4dEZpbGV9IGZyb20gJy4vZmlsZS50eXBlcyc7XG5pbXBvcnQge1RleHRGaWxlVXBsb2FkU2VydmljZX0gZnJvbSAnLi90ZXh0LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvciAgICAgICAgICAgOiAncmlzay10ZXh0LWZpbGUtdXBsb2FkJyxcbiAgICB0ZW1wbGF0ZVVybCAgICAgICAgOiAnYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJscyAgICAgICAgICA6IFtcbiAgICAgICAgJy4uLy4uLy4uL2NvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJ2Fic3RyYWN0LmZpbGUudXBsb2FkLmNvbXBvbmVudC5zY3NzJ1xuICAgIF0sXG4gICAgaG9zdCAgICAgICAgICAgICAgIDoge1xuICAgICAgICAnW2NsYXNzLnJpc2stdGV4dC1maWxlLXVwbG9hZF0nOiAndHJ1ZSdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbiAgICA6IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBUZXh0RmlsZVVwbG9hZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmlsZVVwbG9hZENvbXBvbmVudDxUZXh0RmlsZT4ge1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmlsZVVwbG9hZFNlcnZpY2U6IFRleHRGaWxlVXBsb2FkU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgICAgICBzdXBlcihyZW5kZXJlcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRGaWxlcyhmaWxlTGlzdDogRmlsZUxpc3QpOiBPYnNlcnZhYmxlPFRleHRGaWxlW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2VcbiAgICAgICAgICAgIC5yZWFkRmlsZXMoZmlsZUxpc3QpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,38 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { toString } from '@dbg-riskit/common';
3
- import { forkJoin, Observable } from 'rxjs';
4
- export class TextFileUploadService {
5
- readFiles(files) {
6
- const fileOservables = [];
7
- for (const file of Array.from(files)) {
8
- fileOservables.push(new Observable((observer) => {
9
- setTimeout(() => {
10
- try {
11
- const reader = new FileReader();
12
- // Handle errors load
13
- reader.onload = (event) => {
14
- observer.next({
15
- body: toString(event.target.result),
16
- file
17
- });
18
- observer.complete();
19
- };
20
- reader.onerror = (event) => {
21
- observer.error(event.target.error);
22
- };
23
- // Read file into memory as UTF-8
24
- reader.readAsText(file);
25
- }
26
- catch (err) {
27
- observer.error(err);
28
- }
29
- });
30
- }));
31
- }
32
- return forkJoin(fileOservables);
33
- }
34
- }
35
- TextFileUploadService.decorators = [
36
- { type: Injectable }
37
- ];
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5maWxlLnVwbG9hZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci1maWxlL3NyYy9saWIvdGV4dC5maWxlLnVwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBSXRELE1BQU0sT0FBTyxxQkFBcUI7SUFFdkIsU0FBUyxDQUFDLEtBQWU7UUFDNUIsTUFBTSxjQUFjLEdBQWdDLEVBQUUsQ0FBQztRQUN2RCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbEMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQThCLEVBQUUsRUFBRTtnQkFDbEUsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixJQUFJO3dCQUNBLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7d0JBQ2hDLHFCQUFxQjt3QkFDckIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTs0QkFDckMsUUFBUSxDQUFDLElBQUksQ0FBQztnQ0FDVixJQUFJLEVBQUUsUUFBUSxDQUFFLEtBQUssQ0FBQyxNQUFxQixDQUFDLE1BQU0sQ0FBQztnQ0FDbkQsSUFBSTs2QkFDUCxDQUFDLENBQUM7NEJBQ0gsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUN4QixDQUFDLENBQUM7d0JBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTs0QkFDdEMsUUFBUSxDQUFDLEtBQUssQ0FBRSxLQUFLLENBQUMsTUFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDdkQsQ0FBQyxDQUFDO3dCQUNGLGlDQUFpQzt3QkFDakMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDM0I7b0JBQUMsT0FBTyxHQUFHLEVBQUU7d0JBQ1YsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDdkI7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1A7UUFDRCxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs7WUE5QkosVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU3RyaW5nfSBmcm9tICdAZGJnLXJpc2tpdC9jb21tb24nO1xuaW1wb3J0IHtmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1RleHRGaWxlfSBmcm9tICcuL2ZpbGUudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGV4dEZpbGVVcGxvYWRTZXJ2aWNlIHtcblxuICAgIHB1YmxpYyByZWFkRmlsZXMoZmlsZXM6IEZpbGVMaXN0KTogT2JzZXJ2YWJsZTxUZXh0RmlsZVtdPiB7XG4gICAgICAgIGNvbnN0IGZpbGVPc2VydmFibGVzOiBBcnJheTxPYnNlcnZhYmxlPFRleHRGaWxlPj4gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIEFycmF5LmZyb20oZmlsZXMpKSB7XG4gICAgICAgICAgICBmaWxlT3NlcnZhYmxlcy5wdXNoKG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcjogU3Vic2NyaWJlcjxUZXh0RmlsZT4pID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgZXJyb3JzIGxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogdG9TdHJpbmcoKGV2ZW50LnRhcmdldCBhcyBGaWxlUmVhZGVyKS5yZXN1bHQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIub25lcnJvciA9IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKChldmVudC50YXJnZXQgYXMgRmlsZVJlYWRlcikuZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlYWQgZmlsZSBpbnRvIG1lbW9yeSBhcyBVVEYtOFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JrSm9pbihmaWxlT3NlcnZhYmxlcyk7XG4gICAgfVxufVxuIl19