@dbg-riskit/angular-file 12.3.0 → 9999.9999.9999-rc.12148
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
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { toString } from '@dbg-riskit/common';
|
|
3
|
+
import { forkJoin, Observable } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
// Create a regular expression to parse the CSV values.
|
|
6
|
+
const CSV_FILE_PATTERN = new RegExp((
|
|
7
|
+
// Delimiters.
|
|
8
|
+
'([,;]|\\r?\\n|\\r|^)' +
|
|
9
|
+
// Quoted fields.
|
|
10
|
+
'(?:"([^"]*(?:""[^"]*)*)"|' +
|
|
11
|
+
// Standard fields.
|
|
12
|
+
'([^",;\\r\\n]*))'), 'gi');
|
|
13
|
+
export class CSVFileUploadService {
|
|
14
|
+
readFiles(files, nameMapper = (name) => name) {
|
|
15
|
+
const fileOservables = [];
|
|
16
|
+
for (const file of Array.from(files)) {
|
|
17
|
+
fileOservables.push(new Observable((observer) => {
|
|
18
|
+
setTimeout(() => {
|
|
19
|
+
try {
|
|
20
|
+
const reader = new FileReader();
|
|
21
|
+
// Handle errors load
|
|
22
|
+
reader.onload = (event) => {
|
|
23
|
+
observer.next(CSVFileUploadService.getCSVFile(toString(event.target.result), file, nameMapper));
|
|
24
|
+
observer.complete();
|
|
25
|
+
};
|
|
26
|
+
reader.onerror = (event) => {
|
|
27
|
+
observer.error(event.target.error);
|
|
28
|
+
};
|
|
29
|
+
// Read file into memory as UTF-8
|
|
30
|
+
reader.readAsText(file);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
observer.error(err);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
return forkJoin(fileOservables);
|
|
39
|
+
}
|
|
40
|
+
static getCSVFile(content, file, nameMapper) {
|
|
41
|
+
// Create an array to hold our data. Give the array
|
|
42
|
+
// a default empty first row.
|
|
43
|
+
let arrData = [[]];
|
|
44
|
+
// Create an array to hold our individual pattern
|
|
45
|
+
// matching groups.
|
|
46
|
+
// Keep looping over the regular expression matches
|
|
47
|
+
// until we can no longer find a match.
|
|
48
|
+
while (true) {
|
|
49
|
+
const arrMatches = CSV_FILE_PATTERN.exec(content);
|
|
50
|
+
if (arrMatches == null) {
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
// Get the delimiter that was found.
|
|
54
|
+
const strMatchedDelimiter = arrMatches[1];
|
|
55
|
+
// Check to see if the given delimiter has a length
|
|
56
|
+
// (is not the start of string) and if it matches
|
|
57
|
+
// field delimiter. If id does not, then we know
|
|
58
|
+
// that this delimiter is a row delimiter.
|
|
59
|
+
if (strMatchedDelimiter.length && strMatchedDelimiter !== ',' && strMatchedDelimiter !== ';') {
|
|
60
|
+
// Since we have reached a new row of data,
|
|
61
|
+
// add an empty row to our data array.
|
|
62
|
+
arrData.push([]);
|
|
63
|
+
}
|
|
64
|
+
let strMatchedValue;
|
|
65
|
+
// Now that we have our delimiter out of the way,
|
|
66
|
+
// let's check to see which kind of value we
|
|
67
|
+
// captured (quoted or unquoted).
|
|
68
|
+
if (arrMatches[2]) {
|
|
69
|
+
// We found a quoted value. When we capture
|
|
70
|
+
// this value, unescape any double quotes.
|
|
71
|
+
strMatchedValue = arrMatches[2].replace(new RegExp('""', 'g'), '"');
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// We found a non-quoted value.
|
|
75
|
+
strMatchedValue = arrMatches[3];
|
|
76
|
+
}
|
|
77
|
+
// Now that we have our value string, let's add
|
|
78
|
+
// it to the data array.
|
|
79
|
+
arrData[arrData.length - 1].push(strMatchedValue);
|
|
80
|
+
}
|
|
81
|
+
// Filter out empty rows
|
|
82
|
+
arrData = arrData.filter((dataRow) => {
|
|
83
|
+
return dataRow.some((item) => item != null && item.trim() !== '');
|
|
84
|
+
});
|
|
85
|
+
// Return the parsed data.
|
|
86
|
+
return {
|
|
87
|
+
header: arrData[0],
|
|
88
|
+
body: arrData.slice(1).map((dataRow) => {
|
|
89
|
+
const row = {};
|
|
90
|
+
for (let i = 0; i < arrData[0].length; i++) {
|
|
91
|
+
row[nameMapper(arrData[0][i])] = dataRow[i];
|
|
92
|
+
}
|
|
93
|
+
return row;
|
|
94
|
+
}),
|
|
95
|
+
file: {
|
|
96
|
+
name: file.name,
|
|
97
|
+
size: file.size,
|
|
98
|
+
type: file.type
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
CSVFileUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CSVFileUploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
104
|
+
CSVFileUploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CSVFileUploadService });
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CSVFileUploadService, decorators: [{
|
|
106
|
+
type: Injectable
|
|
107
|
+
}] });
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmZpbGUudXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9jc3YuZmlsZS51cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBYSxNQUFNLE1BQU0sQ0FBQzs7QUFHdEQsdURBQXVEO0FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxNQUFNLENBQy9CO0FBQ0ksY0FBYztBQUNkLHNCQUFzQjtJQUV0QixpQkFBaUI7SUFDakIsMkJBQTJCO0lBRTNCLG1CQUFtQjtJQUNuQixrQkFBa0IsQ0FDckIsRUFDRCxJQUFJLENBQ1AsQ0FBQztBQUdGLE1BQU0sT0FBTyxvQkFBb0I7SUFFdEIsU0FBUyxDQUFDLEtBQWUsRUFBRSxhQUFrQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSTtRQUN0RixNQUFNLGNBQWMsR0FBK0IsRUFBRSxDQUFDO1FBQ3RELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsUUFBNkIsRUFBRSxFQUFFO2dCQUNqRSxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQUk7d0JBQ0EsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFDaEMscUJBQXFCO3dCQUNyQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFOzRCQUNyQyxRQUFRLENBQUMsSUFBSSxDQUNULG9CQUFvQixDQUFDLFVBQVUsQ0FDM0IsUUFBUSxDQUFFLEtBQUssQ0FBQyxNQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUM3QyxJQUFJLEVBQ0osVUFBVSxDQUFDLENBQ2xCLENBQUM7NEJBQ0YsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUN4QixDQUFDLENBQUM7d0JBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTs0QkFDdEMsUUFBUSxDQUFDLEtBQUssQ0FBRSxLQUFLLENBQUMsTUFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDdkQsQ0FBQyxDQUFDO3dCQUNGLGlDQUFpQzt3QkFDakMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDM0I7b0JBQUMsT0FBTyxHQUFHLEVBQUU7d0JBQ1YsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDdkI7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1A7UUFDRCxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFlLEVBQUUsSUFBVSxFQUFFLFVBQStCO1FBQ2pGLG1EQUFtRDtRQUNuRCw2QkFBNkI7UUFDN0IsSUFBSSxPQUFPLEdBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUvQixpREFBaUQ7UUFDakQsbUJBQW1CO1FBRW5CLG1EQUFtRDtRQUNuRCx1Q0FBdUM7UUFDdkMsT0FBTyxJQUFJLEVBQUU7WUFDVCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEQsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFO2dCQUNwQixNQUFNO2FBQ1Q7WUFFRCxvQ0FBb0M7WUFDcEMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFMUMsbURBQW1EO1lBQ25ELGlEQUFpRDtZQUNqRCxnREFBZ0Q7WUFDaEQsMENBQTBDO1lBQzFDLElBQUksbUJBQW1CLENBQUMsTUFBTSxJQUFJLG1CQUFtQixLQUFLLEdBQUcsSUFBSSxtQkFBbUIsS0FBSyxHQUFHLEVBQUU7Z0JBQzFGLDJDQUEyQztnQkFDM0Msc0NBQXNDO2dCQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3BCO1lBRUQsSUFBSSxlQUFlLENBQUM7WUFFcEIsaURBQWlEO1lBQ2pELDRDQUE0QztZQUM1QyxpQ0FBaUM7WUFDakMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBRWYsMkNBQTJDO2dCQUMzQywwQ0FBMEM7Z0JBQzFDLGVBQWUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNuQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQ3JCLEdBQUcsQ0FDTixDQUFDO2FBRUw7aUJBQU07Z0JBRUgsK0JBQStCO2dCQUMvQixlQUFlLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBRW5DO1lBRUQsK0NBQStDO1lBQy9DLHdCQUF3QjtZQUN4QixPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDckQ7UUFFRCx3QkFBd0I7UUFDeEIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFpQixFQUFFLEVBQUU7WUFDM0MsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztRQUVILDBCQUEwQjtRQUMxQixPQUFPO1lBQ0gsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDbEIsSUFBSSxFQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBaUIsRUFBRSxFQUFFO2dCQUMvQyxNQUFNLEdBQUcsR0FBOEIsRUFBRSxDQUFDO2dCQUMxQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDeEMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDZixDQUFDLENBQUM7WUFDRixJQUFJLEVBQUk7Z0JBQ0osSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDbEI7U0FDSixDQUFDO0lBQ04sQ0FBQzs7aUhBN0dRLG9CQUFvQjtxSEFBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b1N0cmluZ30gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcbmltcG9ydCB7Zm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YnNjcmliZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDU1ZDb2x1bW5OYW1lTWFwcGVyLCBDU1ZGaWxlfSBmcm9tICcuL2ZpbGUudHlwZXMnO1xuXG4vLyBDcmVhdGUgYSByZWd1bGFyIGV4cHJlc3Npb24gdG8gcGFyc2UgdGhlIENTViB2YWx1ZXMuXG5jb25zdCBDU1ZfRklMRV9QQVRURVJOID0gbmV3IFJlZ0V4cChcbiAgICAoXG4gICAgICAgIC8vIERlbGltaXRlcnMuXG4gICAgICAgICcoWyw7XXxcXFxccj9cXFxcbnxcXFxccnxeKScgK1xuXG4gICAgICAgIC8vIFF1b3RlZCBmaWVsZHMuXG4gICAgICAgICcoPzpcIihbXlwiXSooPzpcIlwiW15cIl0qKSopXCJ8JyArXG5cbiAgICAgICAgLy8gU3RhbmRhcmQgZmllbGRzLlxuICAgICAgICAnKFteXCIsO1xcXFxyXFxcXG5dKikpJ1xuICAgICksXG4gICAgJ2dpJ1xuKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENTVkZpbGVVcGxvYWRTZXJ2aWNlIHtcblxuICAgIHB1YmxpYyByZWFkRmlsZXMoZmlsZXM6IEZpbGVMaXN0LCBuYW1lTWFwcGVyOiBDU1ZDb2x1bW5OYW1lTWFwcGVyID0gKG5hbWU6IHN0cmluZykgPT4gbmFtZSk6IE9ic2VydmFibGU8Q1NWRmlsZVtdPiB7XG4gICAgICAgIGNvbnN0IGZpbGVPc2VydmFibGVzOiBBcnJheTxPYnNlcnZhYmxlPENTVkZpbGU+PiA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgQXJyYXkuZnJvbShmaWxlcykpIHtcbiAgICAgICAgICAgIGZpbGVPc2VydmFibGVzLnB1c2gobmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBTdWJzY3JpYmVyPENTVkZpbGU+KSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGVycm9ycyBsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NWRmlsZVVwbG9hZFNlcnZpY2UuZ2V0Q1NWRmlsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvU3RyaW5nKChldmVudC50YXJnZXQgYXMgRmlsZVJlYWRlcikucmVzdWx0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lTWFwcGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIub25lcnJvciA9IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKChldmVudC50YXJnZXQgYXMgRmlsZVJlYWRlcikuZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlYWQgZmlsZSBpbnRvIG1lbW9yeSBhcyBVVEYtOFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JrSm9pbihmaWxlT3NlcnZhYmxlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRDU1ZGaWxlKGNvbnRlbnQ6IHN0cmluZywgZmlsZTogRmlsZSwgbmFtZU1hcHBlcjogQ1NWQ29sdW1uTmFtZU1hcHBlcik6IENTVkZpbGUge1xuICAgICAgICAvLyBDcmVhdGUgYW4gYXJyYXkgdG8gaG9sZCBvdXIgZGF0YS4gR2l2ZSB0aGUgYXJyYXlcbiAgICAgICAgLy8gYSBkZWZhdWx0IGVtcHR5IGZpcnN0IHJvdy5cbiAgICAgICAgbGV0IGFyckRhdGE6IHN0cmluZ1tdW10gPSBbW11dO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhbiBhcnJheSB0byBob2xkIG91ciBpbmRpdmlkdWFsIHBhdHRlcm5cbiAgICAgICAgLy8gbWF0Y2hpbmcgZ3JvdXBzLlxuXG4gICAgICAgIC8vIEtlZXAgbG9vcGluZyBvdmVyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hlc1xuICAgICAgICAvLyB1bnRpbCB3ZSBjYW4gbm8gbG9uZ2VyIGZpbmQgYSBtYXRjaC5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyck1hdGNoZXMgPSBDU1ZfRklMRV9QQVRURVJOLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICBpZiAoYXJyTWF0Y2hlcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEdldCB0aGUgZGVsaW1pdGVyIHRoYXQgd2FzIGZvdW5kLlxuICAgICAgICAgICAgY29uc3Qgc3RyTWF0Y2hlZERlbGltaXRlciA9IGFyck1hdGNoZXNbMV07XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZ2l2ZW4gZGVsaW1pdGVyIGhhcyBhIGxlbmd0aFxuICAgICAgICAgICAgLy8gKGlzIG5vdCB0aGUgc3RhcnQgb2Ygc3RyaW5nKSBhbmQgaWYgaXQgbWF0Y2hlc1xuICAgICAgICAgICAgLy8gZmllbGQgZGVsaW1pdGVyLiBJZiBpZCBkb2VzIG5vdCwgdGhlbiB3ZSBrbm93XG4gICAgICAgICAgICAvLyB0aGF0IHRoaXMgZGVsaW1pdGVyIGlzIGEgcm93IGRlbGltaXRlci5cbiAgICAgICAgICAgIGlmIChzdHJNYXRjaGVkRGVsaW1pdGVyLmxlbmd0aCAmJiBzdHJNYXRjaGVkRGVsaW1pdGVyICE9PSAnLCcgJiYgc3RyTWF0Y2hlZERlbGltaXRlciAhPT0gJzsnKSB7XG4gICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgaGF2ZSByZWFjaGVkIGEgbmV3IHJvdyBvZiBkYXRhLFxuICAgICAgICAgICAgICAgIC8vIGFkZCBhbiBlbXB0eSByb3cgdG8gb3VyIGRhdGEgYXJyYXkuXG4gICAgICAgICAgICAgICAgYXJyRGF0YS5wdXNoKFtdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHN0ck1hdGNoZWRWYWx1ZTtcblxuICAgICAgICAgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSBvdXIgZGVsaW1pdGVyIG91dCBvZiB0aGUgd2F5LFxuICAgICAgICAgICAgLy8gbGV0J3MgY2hlY2sgdG8gc2VlIHdoaWNoIGtpbmQgb2YgdmFsdWUgd2VcbiAgICAgICAgICAgIC8vIGNhcHR1cmVkIChxdW90ZWQgb3IgdW5xdW90ZWQpLlxuICAgICAgICAgICAgaWYgKGFyck1hdGNoZXNbMl0pIHtcblxuICAgICAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgcXVvdGVkIHZhbHVlLiBXaGVuIHdlIGNhcHR1cmVcbiAgICAgICAgICAgICAgICAvLyB0aGlzIHZhbHVlLCB1bmVzY2FwZSBhbnkgZG91YmxlIHF1b3Rlcy5cbiAgICAgICAgICAgICAgICBzdHJNYXRjaGVkVmFsdWUgPSBhcnJNYXRjaGVzWzJdLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBSZWdFeHAoJ1wiXCInLCAnZycpLFxuICAgICAgICAgICAgICAgICAgICAnXCInXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgbm9uLXF1b3RlZCB2YWx1ZS5cbiAgICAgICAgICAgICAgICBzdHJNYXRjaGVkVmFsdWUgPSBhcnJNYXRjaGVzWzNdO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgb3VyIHZhbHVlIHN0cmluZywgbGV0J3MgYWRkXG4gICAgICAgICAgICAvLyBpdCB0byB0aGUgZGF0YSBhcnJheS5cbiAgICAgICAgICAgIGFyckRhdGFbYXJyRGF0YS5sZW5ndGggLSAxXS5wdXNoKHN0ck1hdGNoZWRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaWx0ZXIgb3V0IGVtcHR5IHJvd3NcbiAgICAgICAgYXJyRGF0YSA9IGFyckRhdGEuZmlsdGVyKChkYXRhUm93OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFSb3cuc29tZSgoaXRlbTogc3RyaW5nKSA9PiBpdGVtICE9IG51bGwgJiYgaXRlbS50cmltKCkgIT09ICcnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBwYXJzZWQgZGF0YS5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcjogYXJyRGF0YVswXSxcbiAgICAgICAgICAgIGJvZHkgIDogYXJyRGF0YS5zbGljZSgxKS5tYXAoKGRhdGFSb3c6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJEYXRhWzBdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd1tuYW1lTWFwcGVyKGFyckRhdGFbMF1baV0pXSA9IGRhdGFSb3dbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbGUgIDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICBzaXplOiBmaWxlLnNpemUsXG4gICAgICAgICAgICAgICAgdHlwZTogZmlsZS50eXBlXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/material/menu";
|
|
4
|
+
import * as i2 from "@angular/material/button";
|
|
5
|
+
import * as i3 from "@angular/material/icon";
|
|
6
|
+
import * as i4 from "./csv.file.download.directive";
|
|
7
|
+
import * as i5 from "@angular/material/tooltip";
|
|
8
|
+
export class CSVDownloadMenuComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.menuLabel = 'Download';
|
|
11
|
+
this.disabled = false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
CSVDownloadMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CSVDownloadMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
CSVDownloadMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CSVDownloadMenuComponent, selector: "risk-download-menu", inputs: { menuLabel: "menuLabel", menuTooltip: "menuTooltip", columns: "columns", data: "data", disabled: "disabled", filename: "filename" }, host: { properties: { "class.risk-download-menu": "true" } }, ngImport: i0, 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", styles: [":host{display:block;padding:0;margin:0}:host>*{vertical-align:bottom}\n", ":host{display:inline-block}\n"], components: [{ type: i1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4.CSVFileDownloadDirective, selector: "[risk-csv-download]", inputs: ["risk-csv-download-columns", "risk-csv-download", "risk-csv-download-filename", "risk-csv-download-crlf"] }, { type: i1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CSVDownloadMenuComponent, decorators: [{
|
|
17
|
+
type: Component,
|
|
18
|
+
args: [{ selector: 'risk-download-menu', host: {
|
|
19
|
+
'[class.risk-download-menu]': 'true'
|
|
20
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, 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", styles: [":host{display:block;padding:0;margin:0}:host>*{vertical-align:bottom}\n", ":host{display:inline-block}\n"] }]
|
|
21
|
+
}], propDecorators: { menuLabel: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], menuTooltip: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], columns: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], data: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], disabled: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], filename: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}] } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQubWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9kb3dubG9hZC5tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItZmlsZS9zcmMvbGliL2Rvd25sb2FkLm1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFpQnhFLE1BQU0sT0FBTyx3QkFBd0I7SUFickM7UUFnQlcsY0FBUyxHQUFHLFVBQVUsQ0FBQztRQVl2QixhQUFRLEdBQUcsS0FBSyxDQUFDO0tBSTNCOztxSEFuQlksd0JBQXdCO3lHQUF4Qix3QkFBd0Isc1FDakJyQyx3ekJBMEJBOzJGRFRhLHdCQUF3QjtrQkFicEMsU0FBUzsrQkFDZSxvQkFBb0IsUUFNcEI7d0JBQ2pCLDRCQUE0QixFQUFFLE1BQU07cUJBQ3ZDLG1CQUNvQix1QkFBdUIsQ0FBQyxNQUFNLHVCQUM5QixLQUFLOzhCQUtuQixTQUFTO3NCQURmLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NTVkV4cG9ydENvbHVtbn0gZnJvbSAnLi9maWxlLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3IgICAgICAgICAgIDogJ3Jpc2stZG93bmxvYWQtbWVudScsXG4gICAgdGVtcGxhdGVVcmwgICAgICAgIDogJ2Rvd25sb2FkLm1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJscyAgICAgICAgICA6IFtcbiAgICAgICAgJy4uLy4uLy4uL2NvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJ2Rvd25sb2FkLm1lbnUuY29tcG9uZW50LnNjc3MnXG4gICAgXSxcbiAgICBob3N0ICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICdbY2xhc3Mucmlzay1kb3dubG9hZC1tZW51XSc6ICd0cnVlJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uICAgIDogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIENTVkRvd25sb2FkTWVudUNvbXBvbmVudCB7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtZW51TGFiZWwgPSAnRG93bmxvYWQnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWVudVRvb2x0aXA/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2x1bW5zPzogQXJyYXk8Q1NWRXhwb3J0Q29sdW1uPHVua25vd24+PjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRhdGE/OiB1bmtub3duW10gfCBPYnNlcnZhYmxlPHVua25vd25bXT47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsZW5hbWU/OiBzdHJpbmc7XG59XG4iLCI8bWF0LW1lbnUgI2Rvd25sb2FkTWVudT1cIm1hdE1lbnVcIlxuICAgICAgICAgIFtvdmVybGFwVHJpZ2dlcl09XCJmYWxzZVwiPlxuICAgIDxhIG1hdC1tZW51LWl0ZW1cbiAgICAgICBbcmlzay1jc3YtZG93bmxvYWRdPVwiZGF0YVwiXG4gICAgICAgW3Jpc2stY3N2LWRvd25sb2FkLWNvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgICAgW3Jpc2stY3N2LWRvd25sb2FkLWZpbGVuYW1lXT1cImZpbGVuYW1lXCJcbiAgICAgICBbcmlzay1jc3YtZG93bmxvYWQtY3JsZl09XCJ0cnVlXCI+XG4gICAgICAgIEFzIENTViBmaWxlIChXaW5kb3dzKVxuICAgIDwvYT5cbiAgICA8YSBtYXQtbWVudS1pdGVtXG4gICAgICAgW3Jpc2stY3N2LWRvd25sb2FkXT1cImRhdGFcIlxuICAgICAgIFtyaXNrLWNzdi1kb3dubG9hZC1jb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgIFtyaXNrLWNzdi1kb3dubG9hZC1maWxlbmFtZV09XCJmaWxlbmFtZVwiPlxuICAgICAgICBBcyBDU1YgZmlsZSAoVW5peClcbiAgICA8L2E+XG48L21hdC1tZW51PlxuXG48YnV0dG9uIG1hdC1idXR0b25cbiAgICAgICAgI21lbnU9XCJtYXRNZW51VHJpZ2dlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJkb3dubG9hZE1lbnVcIlxuICAgICAgICBbY2xhc3Mucmlzay1tZW51LW9wZW5dPVwibWVudS5tZW51T3BlblwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cIm1lbnVUb29sdGlwXCI+XG4gICAgPG1hdC1pY29uPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgIHt7IG1lbnVMYWJlbCB9fVxuPC9idXR0b24+XG4iXX0=
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { AbstractFileDownloadDirective } from './abstract.file.download.directive';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@dbg-riskit/angular-view";
|
|
5
|
+
import * as i2 from "./file.size.pipe";
|
|
6
|
+
import * as i3 from "@dbg-riskit/common";
|
|
7
|
+
export class FileDownloadDirective extends AbstractFileDownloadDirective {
|
|
8
|
+
constructor(elementRef, dialogService, fileSizePipe, logger) {
|
|
9
|
+
super(elementRef, dialogService, fileSizePipe, logger);
|
|
10
|
+
}
|
|
11
|
+
mapToFile(data) {
|
|
12
|
+
const filename = this.filename || 'data.txt';
|
|
13
|
+
if (data instanceof Blob) {
|
|
14
|
+
return {
|
|
15
|
+
content: data,
|
|
16
|
+
filename
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
if (typeof data === 'object' && 'content' in data && data.content instanceof Blob) {
|
|
20
|
+
return {
|
|
21
|
+
content: data.content,
|
|
22
|
+
filename: data.filename || filename
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const stringData = typeof data === 'string' ? data : JSON.stringify(data);
|
|
26
|
+
return {
|
|
27
|
+
content: this.createBlob([stringData], { type: this.contentType }),
|
|
28
|
+
filename
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
FileDownloadDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FileDownloadDirective, deps: [{ token: i0.ElementRef }, { token: i1.DialogService }, { token: i2.FileSizePipe }, { token: i3.Logger }], target: i0.ɵɵFactoryTarget.Directive });
|
|
33
|
+
FileDownloadDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: FileDownloadDirective, selector: "[risk-download]", inputs: { data: ["risk-download", "data"], contentType: ["risk-download-content-type", "contentType"], filename: ["risk-download-filename", "filename"] }, host: { listeners: { "click": "download()" }, properties: { "class.risk-download": "true" } }, usesInheritance: true, ngImport: i0 });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FileDownloadDirective, decorators: [{
|
|
35
|
+
type: Directive,
|
|
36
|
+
args: [{
|
|
37
|
+
selector: '[risk-download]',
|
|
38
|
+
host: {
|
|
39
|
+
'[class.risk-download]': 'true',
|
|
40
|
+
'(click)': 'download()'
|
|
41
|
+
}
|
|
42
|
+
}]
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DialogService }, { type: i2.FileSizePipe }, { type: i3.Logger }]; }, propDecorators: { data: [{
|
|
44
|
+
type: Input,
|
|
45
|
+
args: ['risk-download']
|
|
46
|
+
}], contentType: [{
|
|
47
|
+
type: Input,
|
|
48
|
+
args: ['risk-download-content-type']
|
|
49
|
+
}], filename: [{
|
|
50
|
+
type: Input,
|
|
51
|
+
args: ['risk-download-filename']
|
|
52
|
+
}] } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5kb3dubG9hZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9maWxlLmRvd25sb2FkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUkzRCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFZakYsTUFBTSxPQUFPLHFCQUFzQixTQUFRLDZCQUF1RDtJQWE5RixZQUFtQixVQUFzQixFQUN0QixhQUE0QixFQUM1QixZQUEwQixFQUMxQixNQUFjO1FBQzdCLEtBQUssQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRVMsU0FBUyxDQUFDLElBQThCO1FBQzlDLE1BQU0sUUFBUSxHQUFXLElBQUksQ0FBQyxRQUFRLElBQUksVUFBVSxDQUFDO1FBQ3JELElBQUksSUFBSSxZQUFZLElBQUksRUFBRTtZQUN0QixPQUFPO2dCQUNILE9BQU8sRUFBRSxJQUFJO2dCQUNiLFFBQVE7YUFDWCxDQUFDO1NBQ0w7UUFFRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxTQUFTLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLFlBQVksSUFBSSxFQUFFO1lBQy9FLE9BQU87Z0JBQ0gsT0FBTyxFQUFHLElBQUksQ0FBQyxPQUFPO2dCQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRO2FBQ3RDLENBQUM7U0FDTDtRQUVELE1BQU0sVUFBVSxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFFLE9BQU87WUFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUMsQ0FBQztZQUNoRSxRQUFRO1NBQ1gsQ0FBQztJQUNOLENBQUM7O2tIQXpDUSxxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQVBqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLElBQUksRUFBTTt3QkFDTix1QkFBdUIsRUFBRSxNQUFNO3dCQUMvQixTQUFTLEVBQWdCLFlBQVk7cUJBQ3hDO2lCQUNKOzZLQUlVLElBQUk7c0JBRFYsS0FBSzt1QkFBQyxlQUFlO2dCQU1mLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsNEJBQTRCO2dCQUk1QixRQUFRO3NCQURkLEtBQUs7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci12aWV3JztcbmltcG9ydCB7RmlsZVdpdGhDb250ZW50LCBMb2dnZXIsIE9ic2VydmFibGVXaXRoUHJvZ3Jlc3N9IGZyb20gJ0BkYmctcmlza2l0L2NvbW1vbic7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBYnN0cmFjdEZpbGVEb3dubG9hZERpcmVjdGl2ZX0gZnJvbSAnLi9hYnN0cmFjdC5maWxlLmRvd25sb2FkLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0ZpbGVTaXplUGlwZX0gZnJvbSAnLi9maWxlLnNpemUucGlwZSc7XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZERvd25sb2FkRm9ybWF0cyA9IEZpbGVXaXRoQ29udGVudCB8IEJsb2IgfCBvYmplY3QgfCBzdHJpbmc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3Jpc2stZG93bmxvYWRdJyxcbiAgICBob3N0ICAgIDoge1xuICAgICAgICAnW2NsYXNzLnJpc2stZG93bmxvYWRdJzogJ3RydWUnLFxuICAgICAgICAnKGNsaWNrKScgICAgICAgICAgICAgIDogJ2Rvd25sb2FkKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRG93bmxvYWREaXJlY3RpdmUgZXh0ZW5kcyBBYnN0cmFjdEZpbGVEb3dubG9hZERpcmVjdGl2ZTxTdXBwb3J0ZWREb3dubG9hZEZvcm1hdHM+IHtcblxuICAgIEBJbnB1dCgncmlzay1kb3dubG9hZCcpXG4gICAgcHVibGljIGRhdGE/OiBPYnNlcnZhYmxlV2l0aFByb2dyZXNzPFN1cHBvcnRlZERvd25sb2FkRm9ybWF0cz5cbiAgICAgICAgfCBPYnNlcnZhYmxlPFN1cHBvcnRlZERvd25sb2FkRm9ybWF0cz5cbiAgICAgICAgfCBTdXBwb3J0ZWREb3dubG9hZEZvcm1hdHM7XG5cbiAgICBASW5wdXQoJ3Jpc2stZG93bmxvYWQtY29udGVudC10eXBlJylcbiAgICBwdWJsaWMgY29udGVudFR5cGU/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoJ3Jpc2stZG93bmxvYWQtZmlsZW5hbWUnKVxuICAgIHB1YmxpYyBmaWxlbmFtZT86IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICAgICAgICAgICBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICBmaWxlU2l6ZVBpcGU6IEZpbGVTaXplUGlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyOiBMb2dnZXIpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZGlhbG9nU2VydmljZSwgZmlsZVNpemVQaXBlLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBtYXBUb0ZpbGUoZGF0YTogU3VwcG9ydGVkRG93bmxvYWRGb3JtYXRzKTogRmlsZVdpdGhDb250ZW50IHtcbiAgICAgICAgY29uc3QgZmlsZW5hbWU6IHN0cmluZyA9IHRoaXMuZmlsZW5hbWUgfHwgJ2RhdGEudHh0JztcbiAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGRhdGEsXG4gICAgICAgICAgICAgICAgZmlsZW5hbWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdjb250ZW50JyBpbiBkYXRhICYmIGRhdGEuY29udGVudCBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29udGVudCA6IGRhdGEuY29udGVudCxcbiAgICAgICAgICAgICAgICBmaWxlbmFtZTogZGF0YS5maWxlbmFtZSB8fCBmaWxlbmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0cmluZ0RhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgPyBkYXRhIDogSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmNyZWF0ZUJsb2IoW3N0cmluZ0RhdGFdLCB7dHlwZTogdGhpcy5jb250ZW50VHlwZX0pLFxuICAgICAgICAgICAgZmlsZW5hbWVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,78 @@
|
|
|
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
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
export class FileModule {
|
|
17
|
+
}
|
|
18
|
+
FileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
19
|
+
FileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FileModule, declarations: [BinaryFileUploadComponent,
|
|
20
|
+
CSVFileUploadComponent,
|
|
21
|
+
TextFileUploadComponent,
|
|
22
|
+
CSVFileDownloadDirective,
|
|
23
|
+
CSVDownloadMenuComponent,
|
|
24
|
+
FileDownloadDirective,
|
|
25
|
+
FileSizePipe], imports: [CommonModule,
|
|
26
|
+
CommonViewModule,
|
|
27
|
+
LoggingModule], exports: [BinaryFileUploadComponent,
|
|
28
|
+
CSVFileUploadComponent,
|
|
29
|
+
TextFileUploadComponent,
|
|
30
|
+
CSVFileDownloadDirective,
|
|
31
|
+
CSVDownloadMenuComponent,
|
|
32
|
+
FileDownloadDirective,
|
|
33
|
+
FileSizePipe] });
|
|
34
|
+
FileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FileModule, providers: [
|
|
35
|
+
BinaryFileUploadService,
|
|
36
|
+
CSVFileUploadService,
|
|
37
|
+
TextFileUploadService,
|
|
38
|
+
FileSizePipe
|
|
39
|
+
], imports: [[
|
|
40
|
+
CommonModule,
|
|
41
|
+
CommonViewModule,
|
|
42
|
+
LoggingModule
|
|
43
|
+
]] });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FileModule, decorators: [{
|
|
45
|
+
type: NgModule,
|
|
46
|
+
args: [{
|
|
47
|
+
imports: [
|
|
48
|
+
CommonModule,
|
|
49
|
+
CommonViewModule,
|
|
50
|
+
LoggingModule
|
|
51
|
+
],
|
|
52
|
+
declarations: [
|
|
53
|
+
BinaryFileUploadComponent,
|
|
54
|
+
CSVFileUploadComponent,
|
|
55
|
+
TextFileUploadComponent,
|
|
56
|
+
CSVFileDownloadDirective,
|
|
57
|
+
CSVDownloadMenuComponent,
|
|
58
|
+
FileDownloadDirective,
|
|
59
|
+
FileSizePipe
|
|
60
|
+
],
|
|
61
|
+
exports: [
|
|
62
|
+
BinaryFileUploadComponent,
|
|
63
|
+
CSVFileUploadComponent,
|
|
64
|
+
TextFileUploadComponent,
|
|
65
|
+
CSVFileDownloadDirective,
|
|
66
|
+
CSVDownloadMenuComponent,
|
|
67
|
+
FileDownloadDirective,
|
|
68
|
+
FileSizePipe
|
|
69
|
+
],
|
|
70
|
+
providers: [
|
|
71
|
+
BinaryFileUploadService,
|
|
72
|
+
CSVFileUploadService,
|
|
73
|
+
TextFileUploadService,
|
|
74
|
+
FileSizePipe
|
|
75
|
+
]
|
|
76
|
+
}]
|
|
77
|
+
}] });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9maWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDOztBQWlDakUsTUFBTSxPQUFPLFVBQVU7O3VHQUFWLFVBQVU7d0dBQVYsVUFBVSxpQkF4QmYseUJBQXlCO1FBQ3pCLHNCQUFzQjtRQUN0Qix1QkFBdUI7UUFDdkIsd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4QixxQkFBcUI7UUFDckIsWUFBWSxhQVhaLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsYUFBYSxhQVliLHlCQUF5QjtRQUN6QixzQkFBc0I7UUFDdEIsdUJBQXVCO1FBQ3ZCLHdCQUF3QjtRQUN4Qix3QkFBd0I7UUFDeEIscUJBQXFCO1FBQ3JCLFlBQVk7d0dBU1AsVUFBVSxhQVBMO1FBQ1YsdUJBQXVCO1FBQ3ZCLG9CQUFvQjtRQUNwQixxQkFBcUI7UUFDckIsWUFBWTtLQUNmLFlBNUJhO1lBQ1YsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixhQUFhO1NBQ2hCOzJGQTBCUSxVQUFVO2tCQS9CdEIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQU87d0JBQ1YsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGFBQWE7cUJBQ2hCO29CQUNELFlBQVksRUFBRTt3QkFDVix5QkFBeUI7d0JBQ3pCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixZQUFZO3FCQUNmO29CQUNELE9BQU8sRUFBTzt3QkFDVix5QkFBeUI7d0JBQ3pCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixZQUFZO3FCQUNmO29CQUNELFNBQVMsRUFBSzt3QkFDVix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixZQUFZO3FCQUNmO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2luZ01vZHVsZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci1sb2dnaW5nJztcbmltcG9ydCB7Q29tbW9uVmlld01vZHVsZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci12aWV3JztcbmltcG9ydCB7QmluYXJ5RmlsZVVwbG9hZENvbXBvbmVudH0gZnJvbSAnLi9iaW5hcnkuZmlsZS51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7QmluYXJ5RmlsZVVwbG9hZFNlcnZpY2V9IGZyb20gJy4vYmluYXJ5LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHtDU1ZGaWxlRG93bmxvYWREaXJlY3RpdmV9IGZyb20gJy4vY3N2LmZpbGUuZG93bmxvYWQuZGlyZWN0aXZlJztcbmltcG9ydCB7Q1NWRmlsZVVwbG9hZENvbXBvbmVudH0gZnJvbSAnLi9jc3YuZmlsZS51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7Q1NWRmlsZVVwbG9hZFNlcnZpY2V9IGZyb20gJy4vY3N2LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHtDU1ZEb3dubG9hZE1lbnVDb21wb25lbnR9IGZyb20gJy4vZG93bmxvYWQubWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHtGaWxlRG93bmxvYWREaXJlY3RpdmV9IGZyb20gJy4vZmlsZS5kb3dubG9hZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtGaWxlU2l6ZVBpcGV9IGZyb20gJy4vZmlsZS5zaXplLnBpcGUnO1xuaW1wb3J0IHtUZXh0RmlsZVVwbG9hZENvbXBvbmVudH0gZnJvbSAnLi90ZXh0LmZpbGUudXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQge1RleHRGaWxlVXBsb2FkU2VydmljZX0gZnJvbSAnLi90ZXh0LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHMgICAgIDogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIENvbW1vblZpZXdNb2R1bGUsXG4gICAgICAgIExvZ2dpbmdNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBCaW5hcnlGaWxlVXBsb2FkQ29tcG9uZW50LFxuICAgICAgICBDU1ZGaWxlVXBsb2FkQ29tcG9uZW50LFxuICAgICAgICBUZXh0RmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgICAgQ1NWRmlsZURvd25sb2FkRGlyZWN0aXZlLFxuICAgICAgICBDU1ZEb3dubG9hZE1lbnVDb21wb25lbnQsXG4gICAgICAgIEZpbGVEb3dubG9hZERpcmVjdGl2ZSxcbiAgICAgICAgRmlsZVNpemVQaXBlXG4gICAgXSxcbiAgICBleHBvcnRzICAgICA6IFtcbiAgICAgICAgQmluYXJ5RmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgICAgQ1NWRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgICAgVGV4dEZpbGVVcGxvYWRDb21wb25lbnQsXG4gICAgICAgIENTVkZpbGVEb3dubG9hZERpcmVjdGl2ZSxcbiAgICAgICAgQ1NWRG93bmxvYWRNZW51Q29tcG9uZW50LFxuICAgICAgICBGaWxlRG93bmxvYWREaXJlY3RpdmUsXG4gICAgICAgIEZpbGVTaXplUGlwZVxuICAgIF0sXG4gICAgcHJvdmlkZXJzICAgOiBbXG4gICAgICAgIEJpbmFyeUZpbGVVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBDU1ZGaWxlVXBsb2FkU2VydmljZSxcbiAgICAgICAgVGV4dEZpbGVVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBGaWxlU2l6ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVNb2R1bGUge1xufVxuIl19
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class FileSizePipe {
|
|
5
|
+
constructor(decimalPipe) {
|
|
6
|
+
this.decimalPipe = decimalPipe;
|
|
7
|
+
this.base = 1024;
|
|
8
|
+
this.powerSuffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];
|
|
9
|
+
}
|
|
10
|
+
transform(value) {
|
|
11
|
+
if (value == null) {
|
|
12
|
+
return '';
|
|
13
|
+
}
|
|
14
|
+
if (typeof value === 'string') {
|
|
15
|
+
value = parseFloat(value);
|
|
16
|
+
}
|
|
17
|
+
let divider = 1;
|
|
18
|
+
let power = 0;
|
|
19
|
+
while (value / divider > this.base && power < this.powerSuffixes.length - 1) {
|
|
20
|
+
divider *= this.base;
|
|
21
|
+
power += 1;
|
|
22
|
+
}
|
|
23
|
+
const formatted = this.decimalPipe.transform(value / divider, '1.2-2') || '';
|
|
24
|
+
const suffix = this.powerSuffixes[power];
|
|
25
|
+
return suffix ? `${formatted}${suffix}` : formatted;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
FileSizePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FileSizePipe, deps: [{ token: i1.DecimalPipe }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
29
|
+
FileSizePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FileSizePipe, name: "riskFileSize" });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FileSizePipe, decorators: [{
|
|
31
|
+
type: Pipe,
|
|
32
|
+
args: [{ name: 'riskFileSize' }]
|
|
33
|
+
}], ctorParameters: function () { return [{ type: i1.DecimalPipe }]; } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zaXplLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9maWxlLnNpemUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQzs7O0FBSWxELE1BQU0sT0FBTyxZQUFZO0lBSXJCLFlBQW9DLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBSDNDLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixrQkFBYSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUdyRSxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQTZCO1FBQzFDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNmLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUMzQixLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO1FBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVkLE9BQU8sS0FBSyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDckIsS0FBSyxJQUFJLENBQUMsQ0FBQztTQUNkO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN4RCxDQUFDOzt5R0EzQlEsWUFBWTt1R0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBRHhCLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEt1YmVybmV0ZXMgQXV0aG9ycy5cbi8vXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCB7RGVjaW1hbFBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXliZX0gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcblxuQFBpcGUoe25hbWU6ICdyaXNrRmlsZVNpemUnfSlcbmV4cG9ydCBjbGFzcyBGaWxlU2l6ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhc2UgPSAxMDI0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG93ZXJTdWZmaXhlcyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQiddO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlKSB7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogTWF5YmU8bnVtYmVyIHwgc3RyaW5nPik6IHN0cmluZyB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkaXZpZGVyID0gMTtcbiAgICAgICAgbGV0IHBvd2VyID0gMDtcblxuICAgICAgICB3aGlsZSAodmFsdWUgLyBkaXZpZGVyID4gdGhpcy5iYXNlICYmIHBvd2VyIDwgdGhpcy5wb3dlclN1ZmZpeGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGRpdmlkZXIgKj0gdGhpcy5iYXNlO1xuICAgICAgICAgICAgcG93ZXIgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlIC8gZGl2aWRlciwgJzEuMi0yJykgfHwgJyc7XG4gICAgICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMucG93ZXJTdWZmaXhlc1twb3dlcl07XG4gICAgICAgIHJldHVybiBzdWZmaXggPyBgJHtmb3JtYXR0ZWR9JHtzdWZmaXh9YCA6IGZvcm1hdHRlZDtcbiAgICB9XG59XG4iXX0=
|
|
File without changes
|
|
@@ -0,0 +1,26 @@
|
|
|
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 "./text.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 TextFileUploadComponent extends AbstractFileUploadComponent {
|
|
9
|
+
constructor(fileUploadService, renderer) {
|
|
10
|
+
super(renderer);
|
|
11
|
+
this.fileUploadService = fileUploadService;
|
|
12
|
+
}
|
|
13
|
+
readFiles(fileList) {
|
|
14
|
+
return this.fileUploadService
|
|
15
|
+
.readFiles(fileList);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
TextFileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TextFileUploadComponent, deps: [{ token: i1.TextFileUploadService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
TextFileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: TextFileUploadComponent, selector: "risk-text-file-upload", host: { properties: { "class.risk-text-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 });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TextFileUploadComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ selector: 'risk-text-file-upload', host: {
|
|
23
|
+
'[class.risk-text-file-upload]': 'true'
|
|
24
|
+
}, 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"] }]
|
|
25
|
+
}], ctorParameters: function () { return [{ type: i1.TextFileUploadService }, { type: i0.Renderer2 }]; } });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5maWxlLnVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi90ZXh0LmZpbGUudXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItZmlsZS9zcmMvbGliL2Fic3RyYWN0LmZpbGUudXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQWlCN0UsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDJCQUFxQztJQUU5RSxZQUFvQyxpQkFBd0MsRUFDekQsUUFBbUI7UUFDbEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRmdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBdUI7SUFHNUUsQ0FBQztJQUVTLFNBQVMsQ0FBQyxRQUFrQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxpQkFBaUI7YUFDeEIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLENBQUM7O29IQVZRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHFKQ25CcEMsZ3lDQXVDQTsyRkRwQmEsdUJBQXVCO2tCQWJuQyxTQUFTOytCQUNlLHVCQUF1QixRQU12Qjt3QkFDakIsK0JBQStCLEVBQUUsTUFBTTtxQkFDMUMsbUJBQ29CLHVCQUF1QixDQUFDLE1BQU0sdUJBQzlCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBYnN0cmFjdEZpbGVVcGxvYWRDb21wb25lbnR9IGZyb20gJy4vYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7VGV4dEZpbGV9IGZyb20gJy4vZmlsZS50eXBlcyc7XG5pbXBvcnQge1RleHRGaWxlVXBsb2FkU2VydmljZX0gZnJvbSAnLi90ZXh0LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvciAgICAgICAgICAgOiAncmlzay10ZXh0LWZpbGUtdXBsb2FkJyxcbiAgICB0ZW1wbGF0ZVVybCAgICAgICAgOiAnYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJscyAgICAgICAgICA6IFtcbiAgICAgICAgJy4uLy4uLy4uL2NvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJ2Fic3RyYWN0LmZpbGUudXBsb2FkLmNvbXBvbmVudC5zY3NzJ1xuICAgIF0sXG4gICAgaG9zdCAgICAgICAgICAgICAgIDoge1xuICAgICAgICAnW2NsYXNzLnJpc2stdGV4dC1maWxlLXVwbG9hZF0nOiAndHJ1ZSdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbiAgICA6IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBUZXh0RmlsZVVwbG9hZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmlsZVVwbG9hZENvbXBvbmVudDxUZXh0RmlsZT4ge1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmlsZVVwbG9hZFNlcnZpY2U6IFRleHRGaWxlVXBsb2FkU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgICAgICBzdXBlcihyZW5kZXJlcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRGaWxlcyhmaWxlTGlzdDogRmlsZUxpc3QpOiBPYnNlcnZhYmxlPFRleHRGaWxlW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2VcbiAgICAgICAgICAgIC5yZWFkRmlsZXMoZmlsZUxpc3QpO1xuICAgIH1cbn1cbiIsIjxhICpuZ0lmPVwicmFpc2VkOyBlbHNlIG5vdFJhaXNlZFwiXG4gICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgIFtjb2xvcl09XCJjb2xvclwiXG4gICAobW91c2Vtb3ZlKT1cIm1vdmUoJGV2ZW50KVwiPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25cIj57e2ljb259fTwvbWF0LWljb24+XG4gICAge3tsYWJlbH19XG4gICAgPGRpdiAjd3JhcHBlclxuICAgICAgICAgY2xhc3M9XCJyaXNrLWZpbGUtdXBsb2FkLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgPGlucHV0ICpuZ0lmPVwiIWZpbGVJbnB1dEhpZGRlblwiIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgIGlkPVwiZmlsZUlucHV0XCJcbiAgICAgICAgICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgdGl0bGU9XCJcIlxuICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVGaWxlcygkZXZlbnQudGFyZ2V0LmZpbGVzKVwiXG4gICAgICAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiPlxuICAgIDwvZGl2PlxuPC9hPlxuPG5nLXRlbXBsYXRlICNub3RSYWlzZWQ+XG4gICAgPGEgbWF0LWJ1dHRvblxuICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICAgICAobW91c2Vtb3ZlKT1cIm1vdmUoJGV2ZW50KVwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uXCI+e3tpY29ufX08L21hdC1pY29uPlxuICAgICAgICB7e2xhYmVsfX1cbiAgICAgICAgPGRpdiAjd3JhcHBlclxuICAgICAgICAgICAgIGNsYXNzPVwicmlzay1maWxlLXVwbG9hZC1pbnB1dC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCIhZmlsZUlucHV0SGlkZGVuXCIgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgICAgIGlkPVwiZmlsZUlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiXCJcbiAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUZpbGVzKCRldmVudC50YXJnZXQuZmlsZXMpXCJcbiAgICAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2E+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { toString } from '@dbg-riskit/common';
|
|
3
|
+
import { forkJoin, Observable } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class TextFileUploadService {
|
|
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
|
+
body: toString(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.readAsText(file);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
observer.error(err);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
return forkJoin(fileOservables);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
TextFileUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TextFileUploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
TextFileUploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TextFileUploadService });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TextFileUploadService, decorators: [{
|
|
39
|
+
type: Injectable
|
|
40
|
+
}] });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5maWxlLnVwbG9hZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci1maWxlL3NyYy9saWIvdGV4dC5maWxlLnVwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFhLE1BQU0sTUFBTSxDQUFDOztBQUl0RCxNQUFNLE9BQU8scUJBQXFCO0lBRXZCLFNBQVMsQ0FBQyxLQUFlO1FBQzVCLE1BQU0sY0FBYyxHQUFnQyxFQUFFLENBQUM7UUFDdkQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUE4QixFQUFFLEVBQUU7Z0JBQ2xFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1osSUFBSTt3QkFDQSxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNoQyxxQkFBcUI7d0JBQ3JCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7NEJBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0NBQ1YsSUFBSSxFQUFFLFFBQVEsQ0FBRSxLQUFLLENBQUMsTUFBcUIsQ0FBQyxNQUFNLENBQUM7Z0NBQ25ELElBQUk7NkJBQ1AsQ0FBQyxDQUFDOzRCQUNILFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDeEIsQ0FBQyxDQUFDO3dCQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7NEJBQ3RDLFFBQVEsQ0FBQyxLQUFLLENBQUUsS0FBSyxDQUFDLE1BQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3ZELENBQUMsQ0FBQzt3QkFDRixpQ0FBaUM7d0JBQ2pDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQzNCO29CQUFDLE9BQU8sR0FBRyxFQUFFO3dCQUNWLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3ZCO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNQO1FBQ0QsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7a0hBN0JRLHFCQUFxQjtzSEFBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b1N0cmluZ30gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcbmltcG9ydCB7Zm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YnNjcmliZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtUZXh0RmlsZX0gZnJvbSAnLi9maWxlLnR5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRleHRGaWxlVXBsb2FkU2VydmljZSB7XG5cbiAgICBwdWJsaWMgcmVhZEZpbGVzKGZpbGVzOiBGaWxlTGlzdCk6IE9ic2VydmFibGU8VGV4dEZpbGVbXT4ge1xuICAgICAgICBjb25zdCBmaWxlT3NlcnZhYmxlczogQXJyYXk8T2JzZXJ2YWJsZTxUZXh0RmlsZT4+ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBBcnJheS5mcm9tKGZpbGVzKSkge1xuICAgICAgICAgICAgZmlsZU9zZXJ2YWJsZXMucHVzaChuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IFN1YnNjcmliZXI8VGV4dEZpbGU+KSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGVycm9ycyBsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHRvU3RyaW5nKChldmVudC50YXJnZXQgYXMgRmlsZVJlYWRlcikucmVzdWx0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcigoZXZlbnQudGFyZ2V0IGFzIEZpbGVSZWFkZXIpLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFkIGZpbGUgaW50byBtZW1vcnkgYXMgVVRGLThcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oZmlsZU9zZXJ2YWJsZXMpO1xuICAgIH1cbn1cbiJdfQ==
|
|
File without changes
|