@dbg-riskit/angular-file 15.0.1 → 15.0.2

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.
@@ -0,0 +1,109 @@
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, startFromRow) {
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
+ const fromRow = startFromRow ? startFromRow : 0;
87
+ return {
88
+ header: arrData[fromRow],
89
+ body: arrData.slice(fromRow + 1).map((dataRow) => {
90
+ const row = {};
91
+ for (let i = 0; i < arrData[fromRow].length; i++) {
92
+ row[nameMapper(arrData[fromRow][i])] = dataRow[i];
93
+ }
94
+ return row;
95
+ }),
96
+ file: {
97
+ name: file.name,
98
+ size: file.size,
99
+ type: file.type
100
+ }
101
+ };
102
+ }
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CSVFileUploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
104
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CSVFileUploadService }); }
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CSVFileUploadService, decorators: [{
107
+ type: Injectable
108
+ }] });
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmZpbGUudXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9jc3YuZmlsZS51cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBYSxNQUFNLE1BQU0sQ0FBQzs7QUFHdEQsdURBQXVEO0FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxNQUFNLENBQy9CO0FBQ0ksY0FBYztBQUNkLHNCQUFzQjtJQUV0QixpQkFBaUI7SUFDakIsMkJBQTJCO0lBRTNCLG1CQUFtQjtJQUNuQixrQkFBa0IsQ0FDckIsRUFDRCxJQUFJLENBQ1AsQ0FBQztBQUdGLE1BQU0sT0FBTyxvQkFBb0I7SUFFdEIsU0FBUyxDQUFDLEtBQWUsRUFBRSxhQUFrQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSTtRQUN0RixNQUFNLGNBQWMsR0FBK0IsRUFBRSxDQUFDO1FBQ3RELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsUUFBNkIsRUFBRSxFQUFFO2dCQUNqRSxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQUk7d0JBQ0EsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFDaEMscUJBQXFCO3dCQUNyQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFOzRCQUNyQyxRQUFRLENBQUMsSUFBSSxDQUNULG9CQUFvQixDQUFDLFVBQVUsQ0FDM0IsUUFBUSxDQUFFLEtBQUssQ0FBQyxNQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUM3QyxJQUFJLEVBQ0osVUFBVSxDQUFDLENBQ2xCLENBQUM7NEJBQ0YsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUN4QixDQUFDLENBQUM7d0JBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTs0QkFDdEMsUUFBUSxDQUFDLEtBQUssQ0FBRSxLQUFLLENBQUMsTUFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDdkQsQ0FBQyxDQUFDO3dCQUNGLGlDQUFpQzt3QkFDakMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDM0I7b0JBQUMsT0FBTyxHQUFHLEVBQUU7d0JBQ1YsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDdkI7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1A7UUFDRCxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFlLEVBQUUsSUFBVSxFQUFFLFVBQStCLEVBQUUsWUFBcUI7UUFDeEcsbURBQW1EO1FBQ25ELDZCQUE2QjtRQUM3QixJQUFJLE9BQU8sR0FBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRS9CLGlEQUFpRDtRQUNqRCxtQkFBbUI7UUFFbkIsbURBQW1EO1FBQ25ELHVDQUF1QztRQUN2QyxPQUFPLElBQUksRUFBRTtZQUNULE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsRCxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLE1BQU07YUFDVDtZQUVELG9DQUFvQztZQUNwQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUxQyxtREFBbUQ7WUFDbkQsaURBQWlEO1lBQ2pELGdEQUFnRDtZQUNoRCwwQ0FBMEM7WUFDMUMsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLElBQUksbUJBQW1CLEtBQUssR0FBRyxJQUFJLG1CQUFtQixLQUFLLEdBQUcsRUFBRTtnQkFDMUYsMkNBQTJDO2dCQUMzQyxzQ0FBc0M7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDcEI7WUFFRCxJQUFJLGVBQWUsQ0FBQztZQUVwQixpREFBaUQ7WUFDakQsNENBQTRDO1lBQzVDLGlDQUFpQztZQUNqQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFFZiwyQ0FBMkM7Z0JBQzNDLDBDQUEwQztnQkFDMUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ25DLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFDckIsR0FBRyxDQUNOLENBQUM7YUFFTDtpQkFBTTtnQkFFSCwrQkFBK0I7Z0JBQy9CLGVBQWUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFFbkM7WUFFRCwrQ0FBK0M7WUFDL0Msd0JBQXdCO1lBQ3hCLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNyRDtRQUVELHdCQUF3QjtRQUN4QixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQWlCLEVBQUUsRUFBRTtZQUMzQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO1FBRUgsMEJBQTBCO1FBQzFCLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsT0FBTztZQUNILE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3hCLElBQUksRUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFpQixFQUFFLEVBQUU7Z0JBQ3pELE1BQU0sR0FBRyxHQUE4QixFQUFFLENBQUM7Z0JBQzFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUM5QyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNyRDtnQkFDRCxPQUFPLEdBQUcsQ0FBQztZQUNmLENBQUMsQ0FBQztZQUNGLElBQUksRUFBSTtnQkFDSixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNsQjtTQUNKLENBQUM7SUFDTixDQUFDOytHQTlHUSxvQkFBb0I7bUhBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU3RyaW5nfSBmcm9tICdAZGJnLXJpc2tpdC9jb21tb24nO1xuaW1wb3J0IHtmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NTVkNvbHVtbk5hbWVNYXBwZXIsIENTVkZpbGV9IGZyb20gJy4vZmlsZS50eXBlcyc7XG5cbi8vIENyZWF0ZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBwYXJzZSB0aGUgQ1NWIHZhbHVlcy5cbmNvbnN0IENTVl9GSUxFX1BBVFRFUk4gPSBuZXcgUmVnRXhwKFxuICAgIChcbiAgICAgICAgLy8gRGVsaW1pdGVycy5cbiAgICAgICAgJyhbLDtdfFxcXFxyP1xcXFxufFxcXFxyfF4pJyArXG5cbiAgICAgICAgLy8gUXVvdGVkIGZpZWxkcy5cbiAgICAgICAgJyg/OlwiKFteXCJdKig/OlwiXCJbXlwiXSopKilcInwnICtcblxuICAgICAgICAvLyBTdGFuZGFyZCBmaWVsZHMuXG4gICAgICAgICcoW15cIiw7XFxcXHJcXFxcbl0qKSknXG4gICAgKSxcbiAgICAnZ2knXG4pO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ1NWRmlsZVVwbG9hZFNlcnZpY2Uge1xuXG4gICAgcHVibGljIHJlYWRGaWxlcyhmaWxlczogRmlsZUxpc3QsIG5hbWVNYXBwZXI6IENTVkNvbHVtbk5hbWVNYXBwZXIgPSAobmFtZTogc3RyaW5nKSA9PiBuYW1lKTogT2JzZXJ2YWJsZTxDU1ZGaWxlW10+IHtcbiAgICAgICAgY29uc3QgZmlsZU9zZXJ2YWJsZXM6IEFycmF5PE9ic2VydmFibGU8Q1NWRmlsZT4+ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBBcnJheS5mcm9tKGZpbGVzKSkge1xuICAgICAgICAgICAgZmlsZU9zZXJ2YWJsZXMucHVzaChuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IFN1YnNjcmliZXI8Q1NWRmlsZT4pID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgZXJyb3JzIGxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1ZGaWxlVXBsb2FkU2VydmljZS5nZXRDU1ZGaWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9TdHJpbmcoKGV2ZW50LnRhcmdldCBhcyBGaWxlUmVhZGVyKS5yZXN1bHQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVNYXBwZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoKGV2ZW50LnRhcmdldCBhcyBGaWxlUmVhZGVyKS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhZCBmaWxlIGludG8gbWVtb3J5IGFzIFVURi04XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKGZpbGVPc2VydmFibGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldENTVkZpbGUoY29udGVudDogc3RyaW5nLCBmaWxlOiBGaWxlLCBuYW1lTWFwcGVyOiBDU1ZDb2x1bW5OYW1lTWFwcGVyLCBzdGFydEZyb21Sb3c/OiBudW1iZXIpOiBDU1ZGaWxlIHtcbiAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IHRvIGhvbGQgb3VyIGRhdGEuIEdpdmUgdGhlIGFycmF5XG4gICAgICAgIC8vIGEgZGVmYXVsdCBlbXB0eSBmaXJzdCByb3cuXG4gICAgICAgIGxldCBhcnJEYXRhOiBzdHJpbmdbXVtdID0gW1tdXTtcblxuICAgICAgICAvLyBDcmVhdGUgYW4gYXJyYXkgdG8gaG9sZCBvdXIgaW5kaXZpZHVhbCBwYXR0ZXJuXG4gICAgICAgIC8vIG1hdGNoaW5nIGdyb3Vwcy5cblxuICAgICAgICAvLyBLZWVwIGxvb3Bpbmcgb3ZlciB0aGUgcmVndWxhciBleHByZXNzaW9uIG1hdGNoZXNcbiAgICAgICAgLy8gdW50aWwgd2UgY2FuIG5vIGxvbmdlciBmaW5kIGEgbWF0Y2guXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBhcnJNYXRjaGVzID0gQ1NWX0ZJTEVfUEFUVEVSTi5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgaWYgKGFyck1hdGNoZXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIGRlbGltaXRlciB0aGF0IHdhcyBmb3VuZC5cbiAgICAgICAgICAgIGNvbnN0IHN0ck1hdGNoZWREZWxpbWl0ZXIgPSBhcnJNYXRjaGVzWzFdO1xuXG4gICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGdpdmVuIGRlbGltaXRlciBoYXMgYSBsZW5ndGhcbiAgICAgICAgICAgIC8vIChpcyBub3QgdGhlIHN0YXJ0IG9mIHN0cmluZykgYW5kIGlmIGl0IG1hdGNoZXNcbiAgICAgICAgICAgIC8vIGZpZWxkIGRlbGltaXRlci4gSWYgaWQgZG9lcyBub3QsIHRoZW4gd2Uga25vd1xuICAgICAgICAgICAgLy8gdGhhdCB0aGlzIGRlbGltaXRlciBpcyBhIHJvdyBkZWxpbWl0ZXIuXG4gICAgICAgICAgICBpZiAoc3RyTWF0Y2hlZERlbGltaXRlci5sZW5ndGggJiYgc3RyTWF0Y2hlZERlbGltaXRlciAhPT0gJywnICYmIHN0ck1hdGNoZWREZWxpbWl0ZXIgIT09ICc7Jykge1xuICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIGhhdmUgcmVhY2hlZCBhIG5ldyByb3cgb2YgZGF0YSxcbiAgICAgICAgICAgICAgICAvLyBhZGQgYW4gZW1wdHkgcm93IHRvIG91ciBkYXRhIGFycmF5LlxuICAgICAgICAgICAgICAgIGFyckRhdGEucHVzaChbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBzdHJNYXRjaGVkVmFsdWU7XG5cbiAgICAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgb3VyIGRlbGltaXRlciBvdXQgb2YgdGhlIHdheSxcbiAgICAgICAgICAgIC8vIGxldCdzIGNoZWNrIHRvIHNlZSB3aGljaCBraW5kIG9mIHZhbHVlIHdlXG4gICAgICAgICAgICAvLyBjYXB0dXJlZCAocXVvdGVkIG9yIHVucXVvdGVkKS5cbiAgICAgICAgICAgIGlmIChhcnJNYXRjaGVzWzJdKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBXZSBmb3VuZCBhIHF1b3RlZCB2YWx1ZS4gV2hlbiB3ZSBjYXB0dXJlXG4gICAgICAgICAgICAgICAgLy8gdGhpcyB2YWx1ZSwgdW5lc2NhcGUgYW55IGRvdWJsZSBxdW90ZXMuXG4gICAgICAgICAgICAgICAgc3RyTWF0Y2hlZFZhbHVlID0gYXJyTWF0Y2hlc1syXS5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICBuZXcgUmVnRXhwKCdcIlwiJywgJ2cnKSxcbiAgICAgICAgICAgICAgICAgICAgJ1wiJ1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAvLyBXZSBmb3VuZCBhIG5vbi1xdW90ZWQgdmFsdWUuXG4gICAgICAgICAgICAgICAgc3RyTWF0Y2hlZFZhbHVlID0gYXJyTWF0Y2hlc1szXTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIG91ciB2YWx1ZSBzdHJpbmcsIGxldCdzIGFkZFxuICAgICAgICAgICAgLy8gaXQgdG8gdGhlIGRhdGEgYXJyYXkuXG4gICAgICAgICAgICBhcnJEYXRhW2FyckRhdGEubGVuZ3RoIC0gMV0ucHVzaChzdHJNYXRjaGVkVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlsdGVyIG91dCBlbXB0eSByb3dzXG4gICAgICAgIGFyckRhdGEgPSBhcnJEYXRhLmZpbHRlcigoZGF0YVJvdzogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhUm93LnNvbWUoKGl0ZW06IHN0cmluZykgPT4gaXRlbSAhPSBudWxsICYmIGl0ZW0udHJpbSgpICE9PSAnJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJldHVybiB0aGUgcGFyc2VkIGRhdGEuXG4gICAgICAgIGNvbnN0IGZyb21Sb3cgPSBzdGFydEZyb21Sb3cgPyBzdGFydEZyb21Sb3cgOiAwO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyOiBhcnJEYXRhW2Zyb21Sb3ddLFxuICAgICAgICAgICAgYm9keSAgOiBhcnJEYXRhLnNsaWNlKGZyb21Sb3cgKyAxKS5tYXAoKGRhdGFSb3c6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJEYXRhW2Zyb21Sb3ddLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd1tuYW1lTWFwcGVyKGFyckRhdGFbZnJvbVJvd11baV0pXSA9IGRhdGFSb3dbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbGUgIDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICBzaXplOiBmaWxlLnNpemUsXG4gICAgICAgICAgICAgICAgdHlwZTogZmlsZS50eXBlXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
@@ -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/button";
4
+ import * as i2 from "@angular/material/icon";
5
+ import * as i3 from "@angular/material/menu";
6
+ import * as i4 from "@angular/material/tooltip";
7
+ import * as i5 from "./csv.file.download.directive";
8
+ export class CSVDownloadMenuComponent {
9
+ constructor() {
10
+ this.menuLabel = 'Download';
11
+ this.disabled = false;
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CSVDownloadMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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"], dependencies: [{ kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i5.CSVFileDownloadDirective, selector: "[risk-csv-download]", inputs: ["risk-csv-download-columns", "risk-csv-download", "risk-csv-download-filename", "risk-csv-download-crlf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQubWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9kb3dubG9hZC5tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItZmlsZS9zcmMvbGliL2Rvd25sb2FkLm1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFpQnhFLE1BQU0sT0FBTyx3QkFBd0I7SUFickM7UUFnQlcsY0FBUyxHQUFHLFVBQVUsQ0FBQztRQVl2QixhQUFRLEdBQUcsS0FBSyxDQUFDO0tBSTNCOytHQW5CWSx3QkFBd0I7bUdBQXhCLHdCQUF3QixzUUNqQnJDLHd6QkEwQkE7OzRGRFRhLHdCQUF3QjtrQkFicEMsU0FBUzsrQkFDZSxvQkFBb0IsUUFNcEI7d0JBQ2pCLDRCQUE0QixFQUFFLE1BQU07cUJBQ3ZDLG1CQUNvQix1QkFBdUIsQ0FBQyxNQUFNLHVCQUM5QixLQUFLOzhCQUtuQixTQUFTO3NCQURmLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NTVkV4cG9ydENvbHVtbn0gZnJvbSAnLi9maWxlLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3IgICAgICAgICAgIDogJ3Jpc2stZG93bmxvYWQtbWVudScsXG4gICAgdGVtcGxhdGVVcmwgICAgICAgIDogJ2Rvd25sb2FkLm1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJscyAgICAgICAgICA6IFtcbiAgICAgICAgJy4uLy4uLy4uL2NvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJ2Rvd25sb2FkLm1lbnUuY29tcG9uZW50LnNjc3MnXG4gICAgXSxcbiAgICBob3N0ICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICdbY2xhc3Mucmlzay1kb3dubG9hZC1tZW51XSc6ICd0cnVlJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uICAgIDogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIENTVkRvd25sb2FkTWVudUNvbXBvbmVudCB7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtZW51TGFiZWwgPSAnRG93bmxvYWQnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWVudVRvb2x0aXA/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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDownloadDirective, deps: [{ token: i0.ElementRef }, { token: i1.DialogService }, { token: i2.FileSizePipe }, { token: i3.Logger }], target: i0.ɵɵFactoryTarget.Directive }); }
32
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", 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 }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5kb3dubG9hZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9maWxlLmRvd25sb2FkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUkzRCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFZakYsTUFBTSxPQUFPLHFCQUFzQixTQUFRLDZCQUF1RDtJQWE5RixZQUFtQixVQUFzQixFQUN0QixhQUE0QixFQUM1QixZQUEwQixFQUMxQixNQUFjO1FBQzdCLEtBQUssQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRVMsU0FBUyxDQUFDLElBQThCO1FBQzlDLE1BQU0sUUFBUSxHQUFXLElBQUksQ0FBQyxRQUFRLElBQUksVUFBVSxDQUFDO1FBQ3JELElBQUksSUFBSSxZQUFZLElBQUksRUFBRTtZQUN0QixPQUFPO2dCQUNILE9BQU8sRUFBRSxJQUFJO2dCQUNiLFFBQVE7YUFDWCxDQUFDO1NBQ0w7UUFFRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxTQUFTLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLFlBQVksSUFBSSxFQUFFO1lBQy9FLE9BQU87Z0JBQ0gsT0FBTyxFQUFHLElBQUksQ0FBQyxPQUFPO2dCQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRO2FBQ3RDLENBQUM7U0FDTDtRQUVELE1BQU0sVUFBVSxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFFLE9BQU87WUFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUMsQ0FBQztZQUNoRSxRQUFRO1NBQ1gsQ0FBQztJQUNOLENBQUM7K0dBekNRLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQVBqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLElBQUksRUFBTTt3QkFDTix1QkFBdUIsRUFBRSxNQUFNO3dCQUMvQixTQUFTLEVBQWdCLFlBQVk7cUJBQ3hDO2lCQUNKOzZLQUlVLElBQUk7c0JBRFYsS0FBSzt1QkFBQyxlQUFlO2dCQU1mLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsNEJBQTRCO2dCQUk1QixRQUFRO3NCQURkLEtBQUs7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci12aWV3JztcbmltcG9ydCB7RmlsZVdpdGhDb250ZW50LCBMb2dnZXIsIE9ic2VydmFibGVXaXRoUHJvZ3Jlc3N9IGZyb20gJ0BkYmctcmlza2l0L2NvbW1vbic7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBYnN0cmFjdEZpbGVEb3dubG9hZERpcmVjdGl2ZX0gZnJvbSAnLi9hYnN0cmFjdC5maWxlLmRvd25sb2FkLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0ZpbGVTaXplUGlwZX0gZnJvbSAnLi9maWxlLnNpemUucGlwZSc7XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZERvd25sb2FkRm9ybWF0cyA9IEZpbGVXaXRoQ29udGVudCB8IEJsb2IgfCBvYmplY3QgfCBzdHJpbmc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3Jpc2stZG93bmxvYWRdJyxcbiAgICBob3N0ICAgIDoge1xuICAgICAgICAnW2NsYXNzLnJpc2stZG93bmxvYWRdJzogJ3RydWUnLFxuICAgICAgICAnKGNsaWNrKScgICAgICAgICAgICAgIDogJ2Rvd25sb2FkKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRG93bmxvYWREaXJlY3RpdmUgZXh0ZW5kcyBBYnN0cmFjdEZpbGVEb3dubG9hZERpcmVjdGl2ZTxTdXBwb3J0ZWREb3dubG9hZEZvcm1hdHM+IHtcblxuICAgIEBJbnB1dCgncmlzay1kb3dubG9hZCcpXG4gICAgcHVibGljIGRhdGE/OiBPYnNlcnZhYmxlV2l0aFByb2dyZXNzPFN1cHBvcnRlZERvd25sb2FkRm9ybWF0cz5cbiAgICAgICAgfCBPYnNlcnZhYmxlPFN1cHBvcnRlZERvd25sb2FkRm9ybWF0cz5cbiAgICAgICAgfCBTdXBwb3J0ZWREb3dubG9hZEZvcm1hdHM7XG5cbiAgICBASW5wdXQoJ3Jpc2stZG93bmxvYWQtY29udGVudC10eXBlJylcbiAgICBwdWJsaWMgY29udGVudFR5cGU/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoJ3Jpc2stZG93bmxvYWQtZmlsZW5hbWUnKVxuICAgIHB1YmxpYyBmaWxlbmFtZT86IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICAgICAgICAgICBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICBmaWxlU2l6ZVBpcGU6IEZpbGVTaXplUGlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyOiBMb2dnZXIpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZGlhbG9nU2VydmljZSwgZmlsZVNpemVQaXBlLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBtYXBUb0ZpbGUoZGF0YTogU3VwcG9ydGVkRG93bmxvYWRGb3JtYXRzKTogRmlsZVdpdGhDb250ZW50IHtcbiAgICAgICAgY29uc3QgZmlsZW5hbWU6IHN0cmluZyA9IHRoaXMuZmlsZW5hbWUgfHwgJ2RhdGEudHh0JztcbiAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGRhdGEsXG4gICAgICAgICAgICAgICAgZmlsZW5hbWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdjb250ZW50JyBpbiBkYXRhICYmIGRhdGEuY29udGVudCBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29udGVudCA6IGRhdGEuY29udGVudCxcbiAgICAgICAgICAgICAgICBmaWxlbmFtZTogZGF0YS5maWxlbmFtZSB8fCBmaWxlbmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0cmluZ0RhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgPyBkYXRhIDogSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmNyZWF0ZUJsb2IoW3N0cmluZ0RhdGFdLCB7dHlwZTogdGhpcy5jb250ZW50VHlwZX0pLFxuICAgICAgICAgICAgZmlsZW5hbWVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,76 @@
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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FileModule, declarations: [BinaryFileUploadComponent,
19
+ CSVFileUploadComponent,
20
+ TextFileUploadComponent,
21
+ CSVFileDownloadDirective,
22
+ CSVDownloadMenuComponent,
23
+ FileDownloadDirective,
24
+ FileSizePipe], imports: [CommonModule,
25
+ CommonViewModule,
26
+ LoggingModule], exports: [BinaryFileUploadComponent,
27
+ CSVFileUploadComponent,
28
+ TextFileUploadComponent,
29
+ CSVFileDownloadDirective,
30
+ CSVDownloadMenuComponent,
31
+ FileDownloadDirective,
32
+ FileSizePipe] }); }
33
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileModule, providers: [
34
+ BinaryFileUploadService,
35
+ CSVFileUploadService,
36
+ TextFileUploadService,
37
+ FileSizePipe
38
+ ], imports: [CommonModule,
39
+ CommonViewModule,
40
+ LoggingModule] }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileModule, decorators: [{
43
+ type: NgModule,
44
+ args: [{
45
+ imports: [
46
+ CommonModule,
47
+ CommonViewModule,
48
+ LoggingModule
49
+ ],
50
+ declarations: [
51
+ BinaryFileUploadComponent,
52
+ CSVFileUploadComponent,
53
+ TextFileUploadComponent,
54
+ CSVFileDownloadDirective,
55
+ CSVDownloadMenuComponent,
56
+ FileDownloadDirective,
57
+ FileSizePipe
58
+ ],
59
+ exports: [
60
+ BinaryFileUploadComponent,
61
+ CSVFileUploadComponent,
62
+ TextFileUploadComponent,
63
+ CSVFileDownloadDirective,
64
+ CSVDownloadMenuComponent,
65
+ FileDownloadDirective,
66
+ FileSizePipe
67
+ ],
68
+ providers: [
69
+ BinaryFileUploadService,
70
+ CSVFileUploadService,
71
+ TextFileUploadService,
72
+ FileSizePipe
73
+ ]
74
+ }]
75
+ }] });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9maWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDOztBQWlDakUsTUFBTSxPQUFPLFVBQVU7K0dBQVYsVUFBVTtnSEFBVixVQUFVLGlCQXhCZix5QkFBeUI7WUFDekIsc0JBQXNCO1lBQ3RCLHVCQUF1QjtZQUN2Qix3QkFBd0I7WUFDeEIsd0JBQXdCO1lBQ3hCLHFCQUFxQjtZQUNyQixZQUFZLGFBWFosWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixhQUFhLGFBWWIseUJBQXlCO1lBQ3pCLHNCQUFzQjtZQUN0Qix1QkFBdUI7WUFDdkIsd0JBQXdCO1lBQ3hCLHdCQUF3QjtZQUN4QixxQkFBcUI7WUFDckIsWUFBWTtnSEFTUCxVQUFVLGFBUEw7WUFDVix1QkFBdUI7WUFDdkIsb0JBQW9CO1lBQ3BCLHFCQUFxQjtZQUNyQixZQUFZO1NBQ2YsWUEzQkcsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixhQUFhOzs0RkEyQlIsVUFBVTtrQkEvQnRCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFPO3dCQUNWLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixhQUFhO3FCQUNoQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1YseUJBQXlCO3dCQUN6QixzQkFBc0I7d0JBQ3RCLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIsWUFBWTtxQkFDZjtvQkFDRCxPQUFPLEVBQU87d0JBQ1YseUJBQXlCO3dCQUN6QixzQkFBc0I7d0JBQ3RCLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIsWUFBWTtxQkFDZjtvQkFDRCxTQUFTLEVBQUs7d0JBQ1YsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsWUFBWTtxQkFDZjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvZ2dpbmdNb2R1bGV9IGZyb20gJ0BkYmctcmlza2l0L2FuZ3VsYXItbG9nZ2luZyc7XG5pbXBvcnQge0NvbW1vblZpZXdNb2R1bGV9IGZyb20gJ0BkYmctcmlza2l0L2FuZ3VsYXItdmlldyc7XG5pbXBvcnQge0JpbmFyeUZpbGVVcGxvYWRDb21wb25lbnR9IGZyb20gJy4vYmluYXJ5LmZpbGUudXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQge0JpbmFyeUZpbGVVcGxvYWRTZXJ2aWNlfSBmcm9tICcuL2JpbmFyeS5maWxlLnVwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7Q1NWRmlsZURvd25sb2FkRGlyZWN0aXZlfSBmcm9tICcuL2Nzdi5maWxlLmRvd25sb2FkLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0NTVkZpbGVVcGxvYWRDb21wb25lbnR9IGZyb20gJy4vY3N2LmZpbGUudXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQge0NTVkZpbGVVcGxvYWRTZXJ2aWNlfSBmcm9tICcuL2Nzdi5maWxlLnVwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7Q1NWRG93bmxvYWRNZW51Q29tcG9uZW50fSBmcm9tICcuL2Rvd25sb2FkLm1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7RmlsZURvd25sb2FkRGlyZWN0aXZlfSBmcm9tICcuL2ZpbGUuZG93bmxvYWQuZGlyZWN0aXZlJztcbmltcG9ydCB7RmlsZVNpemVQaXBlfSBmcm9tICcuL2ZpbGUuc2l6ZS5waXBlJztcbmltcG9ydCB7VGV4dEZpbGVVcGxvYWRDb21wb25lbnR9IGZyb20gJy4vdGV4dC5maWxlLnVwbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHtUZXh0RmlsZVVwbG9hZFNlcnZpY2V9IGZyb20gJy4vdGV4dC5maWxlLnVwbG9hZC5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzICAgICA6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBDb21tb25WaWV3TW9kdWxlLFxuICAgICAgICBMb2dnaW5nTW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgQmluYXJ5RmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgICAgQ1NWRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgICAgVGV4dEZpbGVVcGxvYWRDb21wb25lbnQsXG4gICAgICAgIENTVkZpbGVEb3dubG9hZERpcmVjdGl2ZSxcbiAgICAgICAgQ1NWRG93bmxvYWRNZW51Q29tcG9uZW50LFxuICAgICAgICBGaWxlRG93bmxvYWREaXJlY3RpdmUsXG4gICAgICAgIEZpbGVTaXplUGlwZVxuICAgIF0sXG4gICAgZXhwb3J0cyAgICAgOiBbXG4gICAgICAgIEJpbmFyeUZpbGVVcGxvYWRDb21wb25lbnQsXG4gICAgICAgIENTVkZpbGVVcGxvYWRDb21wb25lbnQsXG4gICAgICAgIFRleHRGaWxlVXBsb2FkQ29tcG9uZW50LFxuICAgICAgICBDU1ZGaWxlRG93bmxvYWREaXJlY3RpdmUsXG4gICAgICAgIENTVkRvd25sb2FkTWVudUNvbXBvbmVudCxcbiAgICAgICAgRmlsZURvd25sb2FkRGlyZWN0aXZlLFxuICAgICAgICBGaWxlU2l6ZVBpcGVcbiAgICBdLFxuICAgIHByb3ZpZGVycyAgIDogW1xuICAgICAgICBCaW5hcnlGaWxlVXBsb2FkU2VydmljZSxcbiAgICAgICAgQ1NWRmlsZVVwbG9hZFNlcnZpY2UsXG4gICAgICAgIFRleHRGaWxlVXBsb2FkU2VydmljZSxcbiAgICAgICAgRmlsZVNpemVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlTW9kdWxlIHtcbn1cbiJdfQ==
@@ -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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileSizePipe, deps: [{ token: i1.DecimalPipe }], target: i0.ɵɵFactoryTarget.Pipe }); }
28
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FileSizePipe, name: "riskFileSize" }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zaXplLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi9maWxlLnNpemUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQzs7O0FBSWxELE1BQU0sT0FBTyxZQUFZO0lBSXJCLFlBQW9DLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBSDNDLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixrQkFBYSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUdyRSxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQTZCO1FBQzFDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNmLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUMzQixLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO1FBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVkLE9BQU8sS0FBSyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDckIsS0FBSyxJQUFJLENBQUMsQ0FBQztTQUNkO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN4RCxDQUFDOytHQTNCUSxZQUFZOzZHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBRHhCLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEt1YmVybmV0ZXMgQXV0aG9ycy5cbi8vXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCB7RGVjaW1hbFBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXliZX0gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcblxuQFBpcGUoe25hbWU6ICdyaXNrRmlsZVNpemUnfSlcbmV4cG9ydCBjbGFzcyBGaWxlU2l6ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhc2UgPSAxMDI0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG93ZXJTdWZmaXhlcyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQiddO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlKSB7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogTWF5YmU8bnVtYmVyIHwgc3RyaW5nPik6IHN0cmluZyB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkaXZpZGVyID0gMTtcbiAgICAgICAgbGV0IHBvd2VyID0gMDtcblxuICAgICAgICB3aGlsZSAodmFsdWUgLyBkaXZpZGVyID4gdGhpcy5iYXNlICYmIHBvd2VyIDwgdGhpcy5wb3dlclN1ZmZpeGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGRpdmlkZXIgKj0gdGhpcy5iYXNlO1xuICAgICAgICAgICAgcG93ZXIgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlIC8gZGl2aWRlciwgJzEuMi0yJykgfHwgJyc7XG4gICAgICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMucG93ZXJTdWZmaXhlc1twb3dlcl07XG4gICAgICAgIHJldHVybiBzdWZmaXggPyBgJHtmb3JtYXR0ZWR9JHtzdWZmaXh9YCA6IGZvcm1hdHRlZDtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItZmlsZS9zcmMvbGliL2ZpbGUudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VmFsdWVHZXR0ZXJ9IGZyb20gJ0BkYmctcmlza2l0L2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHNpemU6IG51bWJlcjtcbiAgICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblJlc3VsdCB7XG4gICAgcmVzdWx0OiBib29sZWFuO1xuICAgIG1lc3NhZ2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCB0eXBlIENTVlZhbGlkYXRvciA9IChmaWxlOiBDU1ZGaWxlKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuXG5leHBvcnQgdHlwZSBDU1ZDb2x1bW5OYW1lTWFwcGVyID0gKG5hbWU6IHN0cmluZykgPT4gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENTVlJvdyB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENTVkV4cG9ydENvbHVtbjxUPiB7XG4gICAgZ2V0OiBWYWx1ZUdldHRlcjxUPjtcbiAgICBoZWFkZXI6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRmlsZSB7XG4gICAgZmlsZTogRmlsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDU1ZGaWxlIGV4dGVuZHMgSUZpbGUge1xuICAgIGhlYWRlcjogc3RyaW5nW107XG4gICAgYm9keTogQ1NWUm93W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dEZpbGUgZXh0ZW5kcyBJRmlsZSB7XG4gICAgYm9keTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpbmFyeUZpbGUgZXh0ZW5kcyBJRmlsZSB7XG4gICAgYm9keUJhc2U2NDogc3RyaW5nO1xufVxuIl19
@@ -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/common";
6
+ import * as i3 from "@angular/material/button";
7
+ import * as i4 from "@angular/material/icon";
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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextFileUploadComponent, deps: [{ token: i1.TextFileUploadService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5maWxlLnVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUvc3JjL2xpYi90ZXh0LmZpbGUudXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItZmlsZS9zcmMvbGliL2Fic3RyYWN0LmZpbGUudXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQWlCN0UsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDJCQUFxQztJQUU5RSxZQUFvQyxpQkFBd0MsRUFDekQsUUFBbUI7UUFDbEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRmdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBdUI7SUFHNUUsQ0FBQztJQUVTLFNBQVMsQ0FBQyxRQUFrQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxpQkFBaUI7YUFDeEIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLENBQUM7K0dBVlEsdUJBQXVCO21HQUF2Qix1QkFBdUIscUpDbkJwQyxneUNBdUNBOzs0RkRwQmEsdUJBQXVCO2tCQWJuQyxTQUFTOytCQUNlLHVCQUF1QixRQU12Qjt3QkFDakIsK0JBQStCLEVBQUUsTUFBTTtxQkFDMUMsbUJBQ29CLHVCQUF1QixDQUFDLE1BQU0sdUJBQzlCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBYnN0cmFjdEZpbGVVcGxvYWRDb21wb25lbnR9IGZyb20gJy4vYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7VGV4dEZpbGV9IGZyb20gJy4vZmlsZS50eXBlcyc7XG5pbXBvcnQge1RleHRGaWxlVXBsb2FkU2VydmljZX0gZnJvbSAnLi90ZXh0LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvciAgICAgICAgICAgOiAncmlzay10ZXh0LWZpbGUtdXBsb2FkJyxcbiAgICB0ZW1wbGF0ZVVybCAgICAgICAgOiAnYWJzdHJhY3QuZmlsZS51cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJscyAgICAgICAgICA6IFtcbiAgICAgICAgJy4uLy4uLy4uL2NvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJ2Fic3RyYWN0LmZpbGUudXBsb2FkLmNvbXBvbmVudC5zY3NzJ1xuICAgIF0sXG4gICAgaG9zdCAgICAgICAgICAgICAgIDoge1xuICAgICAgICAnW2NsYXNzLnJpc2stdGV4dC1maWxlLXVwbG9hZF0nOiAndHJ1ZSdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbiAgICA6IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBUZXh0RmlsZVVwbG9hZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmlsZVVwbG9hZENvbXBvbmVudDxUZXh0RmlsZT4ge1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmlsZVVwbG9hZFNlcnZpY2U6IFRleHRGaWxlVXBsb2FkU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgICAgICBzdXBlcihyZW5kZXJlcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRGaWxlcyhmaWxlTGlzdDogRmlsZUxpc3QpOiBPYnNlcnZhYmxlPFRleHRGaWxlW10+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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextFileUploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
36
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextFileUploadService }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextFileUploadService, decorators: [{
39
+ type: Injectable
40
+ }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5maWxlLnVwbG9hZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci1maWxlL3NyYy9saWIvdGV4dC5maWxlLnVwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFhLE1BQU0sTUFBTSxDQUFDOztBQUl0RCxNQUFNLE9BQU8scUJBQXFCO0lBRXZCLFNBQVMsQ0FBQyxLQUFlO1FBQzVCLE1BQU0sY0FBYyxHQUFnQyxFQUFFLENBQUM7UUFDdkQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUE4QixFQUFFLEVBQUU7Z0JBQ2xFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1osSUFBSTt3QkFDQSxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNoQyxxQkFBcUI7d0JBQ3JCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7NEJBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0NBQ1YsSUFBSSxFQUFFLFFBQVEsQ0FBRSxLQUFLLENBQUMsTUFBcUIsQ0FBQyxNQUFNLENBQUM7Z0NBQ25ELElBQUk7NkJBQ1AsQ0FBQyxDQUFDOzRCQUNILFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDeEIsQ0FBQyxDQUFDO3dCQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7NEJBQ3RDLFFBQVEsQ0FBQyxLQUFLLENBQUUsS0FBSyxDQUFDLE1BQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3ZELENBQUMsQ0FBQzt3QkFDRixpQ0FBaUM7d0JBQ2pDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQzNCO29CQUFDLE9BQU8sR0FBRyxFQUFFO3dCQUNWLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3ZCO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNQO1FBQ0QsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEMsQ0FBQzsrR0E3QlEscUJBQXFCO21IQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b1N0cmluZ30gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcbmltcG9ydCB7Zm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YnNjcmliZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtUZXh0RmlsZX0gZnJvbSAnLi9maWxlLnR5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRleHRGaWxlVXBsb2FkU2VydmljZSB7XG5cbiAgICBwdWJsaWMgcmVhZEZpbGVzKGZpbGVzOiBGaWxlTGlzdCk6IE9ic2VydmFibGU8VGV4dEZpbGVbXT4ge1xuICAgICAgICBjb25zdCBmaWxlT3NlcnZhYmxlczogQXJyYXk8T2JzZXJ2YWJsZTxUZXh0RmlsZT4+ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBBcnJheS5mcm9tKGZpbGVzKSkge1xuICAgICAgICAgICAgZmlsZU9zZXJ2YWJsZXMucHVzaChuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IFN1YnNjcmliZXI8VGV4dEZpbGU+KSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGVycm9ycyBsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHRvU3RyaW5nKChldmVudC50YXJnZXQgYXMgRmlsZVJlYWRlcikucmVzdWx0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcigoZXZlbnQudGFyZ2V0IGFzIEZpbGVSZWFkZXIpLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFkIGZpbGUgaW50byBtZW1vcnkgYXMgVVRGLThcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oZmlsZU9zZXJ2YWJsZXMpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ export * from './lib/abstract.file.download.directive';
2
+ export * from './lib/abstract.file.upload.component';
3
+ export * from './lib/binary.file.upload.service';
4
+ export * from './lib/binary.file.upload.component';
5
+ export * from './lib/csv.file.download.directive';
6
+ export * from './lib/csv.file.upload.component';
7
+ export * from './lib/csv.file.upload.service';
8
+ export * from './lib/text.file.upload.service';
9
+ export * from './lib/text.file.upload.component';
10
+ export * from './lib/download.menu.component';
11
+ export * from './lib/file.download.directive';
12
+ export * from './lib/file.module';
13
+ export * from './lib/file.size.pipe';
14
+ export * from './lib/file.types';
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BrZy9kYmctcmlza2l0L2FuZ3VsYXItZmlsZS9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9hYnN0cmFjdC5maWxlLmRvd25sb2FkLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hYnN0cmFjdC5maWxlLnVwbG9hZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmluYXJ5LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmluYXJ5LmZpbGUudXBsb2FkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jc3YuZmlsZS5kb3dubG9hZC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3N2LmZpbGUudXBsb2FkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jc3YuZmlsZS51cGxvYWQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXh0LmZpbGUudXBsb2FkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGV4dC5maWxlLnVwbG9hZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZG93bmxvYWQubWVudS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS5kb3dubG9hZC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS5zaXplLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS50eXBlcyc7XG4iXX0=