brainloper-ui 14.1.0 → 14.1.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.
Files changed (95) hide show
  1. package/esm2020/brainloper-ui.mjs +4 -4
  2. package/esm2020/public_api.mjs +56 -51
  3. package/esm2020/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +310 -305
  4. package/esm2020/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +29 -29
  5. package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +23 -23
  6. package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +83 -83
  7. package/esm2020/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +37 -31
  8. package/esm2020/src/app/modules/brainloper-ui/components/combos/combos.component.mjs +176 -176
  9. package/esm2020/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +728 -652
  10. package/esm2020/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +118 -118
  11. package/esm2020/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +186 -185
  12. package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.mjs +1 -1
  13. package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.mjs +1 -1
  14. package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.mjs +1 -1
  15. package/esm2020/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +222 -222
  16. package/esm2020/src/app/modules/brainloper-ui/components/report/generate-pdf/generate-pdf.component.mjs +80 -80
  17. package/esm2020/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +81 -81
  18. package/esm2020/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs +108 -108
  19. package/esm2020/src/app/modules/directives/carousel-item.directive.mjs +18 -0
  20. package/esm2020/src/app/modules/interfaces/buttons/button-icon.mjs +2 -2
  21. package/esm2020/src/app/modules/interfaces/buttons/button-lavel-edit.mjs +2 -2
  22. package/esm2020/src/app/modules/interfaces/combos/combos-configuration.mjs +2 -2
  23. package/esm2020/src/app/modules/interfaces/data-table/params.mjs +2 -2
  24. package/esm2020/src/app/modules/interfaces/data-table/rules.mjs +2 -2
  25. package/esm2020/src/app/modules/interfaces/data-table/table-columns.mjs +2 -2
  26. package/esm2020/src/app/modules/interfaces/data-table/table-configuration.mjs +2 -2
  27. package/esm2020/src/app/modules/interfaces/enum/enumActions.mjs +8 -7
  28. package/esm2020/src/app/modules/interfaces/enum/enumRules.mjs +8 -8
  29. package/esm2020/src/app/modules/interfaces/file-forms-service/file-forms-params.mjs +2 -2
  30. package/esm2020/src/app/modules/interfaces/file-forms-service/file-input-params.mjs +2 -2
  31. package/esm2020/src/app/modules/interfaces/filters/header-filters.mjs +2 -2
  32. package/esm2020/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +8 -8
  33. package/esm2020/src/app/modules/interfaces/report/template-pdf-ot.mjs +2 -2
  34. package/esm2020/src/app/modules/interfaces/report/template-pfd-fo.mjs +2 -2
  35. package/esm2020/src/app/modules/services/crypto.service.mjs +37 -37
  36. package/esm2020/src/app/modules/services/export-data.service.mjs +166 -166
  37. package/esm2020/src/app/modules/services/file-forms.service.mjs +24 -24
  38. package/esm2020/src/app/modules/services/functions.service.mjs +54 -54
  39. package/esm2020/src/app/modules/services/generate-pdf.service.mjs +58 -58
  40. package/esm2020/src/app/modules/services/http.service.mjs +97 -154
  41. package/esm2020/src/app/modules/services/loading/loading.component.mjs +28 -28
  42. package/esm2020/src/app/modules/services/local-storage.service.mjs +115 -115
  43. package/esm2020/src/app/modules/services/message.service.mjs +200 -200
  44. package/esm2020/src/app/modules/services/screen-size-util.mjs +6 -6
  45. package/esm2020/src/app/modules/services/session.service.mjs +42 -42
  46. package/fesm2015/brainloper-ui.mjs +2819 -2769
  47. package/fesm2015/brainloper-ui.mjs.map +1 -1
  48. package/fesm2020/brainloper-ui.mjs +2779 -2733
  49. package/fesm2020/brainloper-ui.mjs.map +1 -1
  50. package/index.d.ts +5 -5
  51. package/package.json +3 -1
  52. package/public_api.d.ts +55 -50
  53. package/src/app/modules/brainloper-ui/brainloper-ui.module.d.ts +62 -73
  54. package/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.d.ts +13 -13
  55. package/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.d.ts +10 -10
  56. package/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.d.ts +24 -24
  57. package/src/app/modules/brainloper-ui/components/carousel/carousel.component.d.ts +15 -12
  58. package/src/app/modules/brainloper-ui/components/combos/combos.component.d.ts +46 -46
  59. package/src/app/modules/brainloper-ui/components/data-table/data-table.component.d.ts +125 -119
  60. package/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.d.ts +21 -21
  61. package/src/app/modules/brainloper-ui/components/file-input/file-input.component.d.ts +42 -42
  62. package/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.d.ts +2 -2
  63. package/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.d.ts +2 -2
  64. package/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.d.ts +2 -2
  65. package/src/app/modules/brainloper-ui/components/filters/filters.component.d.ts +30 -30
  66. package/src/app/modules/brainloper-ui/components/report/generate-pdf/generate-pdf.component.d.ts +35 -35
  67. package/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.d.ts +36 -36
  68. package/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.d.ts +26 -26
  69. package/src/app/modules/directives/carousel-item.directive.d.ts +9 -0
  70. package/src/app/modules/interfaces/buttons/button-icon.d.ts +9 -9
  71. package/src/app/modules/interfaces/buttons/button-lavel-edit.d.ts +6 -6
  72. package/src/app/modules/interfaces/combos/combos-configuration.d.ts +13 -13
  73. package/src/app/modules/interfaces/data-table/params.d.ts +7 -7
  74. package/src/app/modules/interfaces/data-table/rules.d.ts +8 -8
  75. package/src/app/modules/interfaces/data-table/table-columns.d.ts +25 -25
  76. package/src/app/modules/interfaces/data-table/table-configuration.d.ts +26 -25
  77. package/src/app/modules/interfaces/enum/enumActions.d.ts +6 -5
  78. package/src/app/modules/interfaces/enum/enumRules.d.ts +6 -6
  79. package/src/app/modules/interfaces/file-forms-service/file-forms-params.d.ts +4 -4
  80. package/src/app/modules/interfaces/file-forms-service/file-input-params.d.ts +13 -13
  81. package/src/app/modules/interfaces/filters/header-filters.d.ts +13 -13
  82. package/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.d.ts +10 -10
  83. package/src/app/modules/interfaces/report/template-pdf-ot.d.ts +19 -19
  84. package/src/app/modules/interfaces/report/template-pfd-fo.d.ts +20 -20
  85. package/src/app/modules/services/crypto.service.d.ts +10 -10
  86. package/src/app/modules/services/export-data.service.d.ts +18 -18
  87. package/src/app/modules/services/file-forms.service.d.ts +7 -7
  88. package/src/app/modules/services/functions.service.d.ts +13 -13
  89. package/src/app/modules/services/generate-pdf.service.d.ts +12 -12
  90. package/src/app/modules/services/http.service.d.ts +22 -21
  91. package/src/app/modules/services/loading/loading.component.d.ts +15 -15
  92. package/src/app/modules/services/local-storage.service.d.ts +49 -49
  93. package/src/app/modules/services/message.service.d.ts +23 -23
  94. package/src/app/modules/services/screen-size-util.d.ts +3 -3
  95. package/src/app/modules/services/session.service.d.ts +14 -14
@@ -1,166 +1,166 @@
1
- import { Injectable } from '@angular/core';
2
- import * as fs from 'file-saver';
3
- import { Workbook } from 'exceljs';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./http.service";
6
- import * as i2 from "./functions.service";
7
- import * as i3 from "./message.service";
8
- export class ExportDataService {
9
- constructor(http, functionEter, message) {
10
- this.http = http;
11
- this.functionEter = functionEter;
12
- this.message = message;
13
- }
14
- async generateExcelWithSheets(title, header, name, bodies, url, params, filtersPost, titleFields, sheetNameFields, BodyFields) {
15
- this.message.openLoading("Cargando", "Generando archivo");
16
- bodies = await this.getDataBody(url, params, bodies, filtersPost);
17
- const workbook = new Workbook();
18
- for (let index = 0; index < bodies.length; index++) {
19
- const body = bodies[index];
20
- if (titleFields) {
21
- title = titleFields.map(param => body[param]).join("-");
22
- }
23
- var nameSheet = "sheet";
24
- if (sheetNameFields) {
25
- nameSheet = sheetNameFields.map(param => body[param]).join("-");
26
- }
27
- const worksheet = await this.generateToXlsx(title, header, `(${(index + 1) + ') ' + nameSheet}`, body, null, null, null, BodyFields, false);
28
- workbook.addWorksheet(worksheet.name, { views: [{ state: 'frozen', ySplit: 1 }] });
29
- const newWorksheet = workbook.getWorksheet(worksheet.name);
30
- newWorksheet.model = worksheet.model;
31
- }
32
- const buffer = await workbook.xlsx.writeBuffer();
33
- this.saveAsExcelFile(buffer, name);
34
- this.message.closeLoading();
35
- }
36
- async generateToXlsx(title, header, name, body, url, params, filtersPost, BodyFields, generateFile = true) {
37
- if (!generateFile)
38
- this.message.openLoading("Cargando", "Generando el archivo");
39
- body = await this.getDataBody(url, params, body, filtersPost);
40
- let workbook = new Workbook();
41
- let worksheet = workbook.addWorksheet(name);
42
- // Add new row
43
- let titleRow = worksheet.addRow([title]);
44
- // Set font, size and style in title row.
45
- titleRow.font = {
46
- name: 'Comic Sans MS',
47
- family: 4,
48
- size: 16,
49
- underline: 'double',
50
- bold: true,
51
- };
52
- // Blank Row
53
- // worksheet.addRow([]);
54
- // let addheader = false
55
- // for (let p of header.filter(x => x.id === null)) {
56
- // worksheet.addRow([body[p.value]??p.value])
57
- // addheader = true
58
- // }
59
- worksheet.addRow([]);
60
- let addheader = false;
61
- for (let p of header.filter(x => x.id === null)) {
62
- let value = p.value;
63
- const matches = value.match(/{(.*?)}/g);
64
- if (matches) {
65
- matches.forEach(match => {
66
- const key = match.slice(1, -1);
67
- value = value.replace(match, body[key] ?? match);
68
- });
69
- }
70
- worksheet.addRow([value]);
71
- addheader = true;
72
- }
73
- if (addheader)
74
- worksheet.addRow([]);
75
- //Add Header Row
76
- let headerRowValue = header.filter(x => x.id != null).map((p) => { return p.value ?? p.id; });
77
- let _headerRowValue = worksheet.addRow(headerRowValue);
78
- // Cell Style : Fill and Border
79
- _headerRowValue.eachCell((cell, number) => {
80
- cell.fill = {
81
- type: 'pattern',
82
- pattern: 'lightUp',
83
- fgColor: { argb: '6775f500' },
84
- bgColor: { argb: '6775f500' },
85
- };
86
- cell.border = {
87
- top: { style: 'thin' },
88
- left: { style: 'thin' },
89
- bottom: { style: 'thin' },
90
- right: { style: 'thin' },
91
- };
92
- });
93
- var headerRow = header.filter(x => x.id != null);
94
- let data = BodyFields != null ? body[BodyFields] ?? [] : body;
95
- for (let d of data) {
96
- var row = [];
97
- for (let h of headerRow) {
98
- var dh = d[`${h.id}`];
99
- if (h.rules) {
100
- for (const rule of h.rules) {
101
- if (rule.rule == enumRules['==']) {
102
- if (dh == rule.valueRule.toString())
103
- dh = rule.valueAction;
104
- }
105
- }
106
- }
107
- row.push(dh?.toString());
108
- }
109
- worksheet.addRow(row);
110
- }
111
- worksheet.columns.forEach(function (column, i) {
112
- var maxLength = 0;
113
- column["eachCell"]({ includeEmpty: true }, function (cell) {
114
- var columnLength = cell.value ? cell.value.toString().length : 10;
115
- if (columnLength > maxLength) {
116
- maxLength = columnLength;
117
- }
118
- });
119
- column.width = maxLength < 10 ? 10 : maxLength;
120
- });
121
- if (!generateFile) {
122
- return worksheet;
123
- }
124
- workbook.xlsx.writeBuffer().then((data) => {
125
- this.saveAsExcelFile(data, name);
126
- });
127
- if (!generateFile)
128
- this.message.closeLoading();
129
- }
130
- saveAsExcelFile(buffer, fileName) {
131
- const data = new Blob([buffer], {
132
- type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'
133
- });
134
- fs.saveAs(data, `${fileName}_export_${new Date().getTime()}.xlsx`);
135
- }
136
- async getDataBody(url, params, body, filtersPost) {
137
- if (body)
138
- return body;
139
- if (url) {
140
- var res;
141
- res = await this.http.postDataBody(url, filtersPost, params);
142
- if (res['count']) {
143
- return res['data'];
144
- }
145
- else {
146
- return res;
147
- }
148
- }
149
- }
150
- }
151
- ExportDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportDataService, deps: [{ token: i1.HttpService }, { token: i2.FunctionsService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
152
- ExportDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportDataService, providedIn: 'root' });
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportDataService, decorators: [{
154
- type: Injectable,
155
- args: [{
156
- providedIn: 'root'
157
- }]
158
- }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.FunctionsService }, { type: i3.MessageService }]; } });
159
- var enumRules;
160
- (function (enumRules) {
161
- enumRules[enumRules[">"] = 0] = ">";
162
- enumRules[enumRules["<"] = 1] = "<";
163
- enumRules[enumRules["=="] = 2] = "==";
164
- enumRules[enumRules["!="] = 3] = "!=";
165
- })(enumRules || (enumRules = {}));
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zZXJ2aWNlcy9leHBvcnQtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7QUFPbkMsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUNVLElBQWlCLEVBQ2pCLFlBQThCLEVBQzlCLE9BQXVCO1FBRnZCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQWdCO0lBQUksQ0FBQztJQUV0QyxLQUFLLENBQUMsdUJBQXVCLENBQzNCLEtBQWEsRUFDYixNQUFxQixFQUNyQixJQUFZLEVBQ1osTUFBbUIsRUFDbkIsR0FBWSxFQUNaLE1BQWlCLEVBQ2pCLFdBQXVDLEVBQ3ZDLFdBQXNCLEVBQ3RCLGVBQTBCLEVBQzFCLFVBQWtCO1FBRWxCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1FBRTFELE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQVcsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDNUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUU5QixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0Is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QUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3BDLElBQUksRUFBRSxpRkFBaUY7U0FDeEYsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUksR0FBVyxFQUFFLE1BQXFCLEVBQUUsSUFBTyxFQUFFLFdBQXVDO1FBQy9HLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRCLElBQUksR0FBRyxFQUFFO1lBQ1AsSUFBSSxHQUFRLENBQUE7WUFDWixHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQzVELElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNoQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUNuQjtpQkFBTTtnQkFDTCxPQUFPLEdBQUcsQ0FBQTthQUNYO1NBQ0Y7SUFFSCxDQUFDOzs4R0ExTFUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQThMRCxJQUFLLFNBS0o7QUFMRCxXQUFLLFNBQVM7SUFDWixtQ0FBRyxDQUFBO0lBQ0gsbUNBQUcsQ0FBQTtJQUNILHFDQUFJLENBQUE7SUFDSixxQ0FBSSxDQUFBO0FBQ04sQ0FBQyxFQUxJLFNBQVMsS0FBVCxTQUFTLFFBS2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IFdvcmtib29rIH0gZnJvbSAnZXhjZWxqcyc7XHJcbmltcG9ydCB7IHBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGF0YS10YWJsZS9wYXJhbXMnO1xyXG5pbXBvcnQgeyBGdW5jdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9mdW5jdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEhlYWRlckZpbHRlcnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ZpbHRlcnMvaGVhZGVyLWZpbHRlcnMnO1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFeHBvcnREYXRhU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcclxuICAgIHByaXZhdGUgZnVuY3Rpb25FdGVyOiBGdW5jdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlOiBNZXNzYWdlU2VydmljZSkgeyB9XHJcblxyXG4gIGFzeW5jIGdlbmVyYXRlRXhjZWxXaXRoU2hlZXRzPFQ+KFxyXG4gICAgdGl0bGU6IHN0cmluZyxcclxuICAgIGhlYWRlcjogQXJyYXk8cGFyYW1zPixcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGJvZGllcz86IEFycmF5PGFueT4sXHJcbiAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICBwYXJhbXM/OiBwYXJhbXNbXSxcclxuICAgIGZpbHRlcnNQb3N0PzogQXJyYXk8SGVhZGVyRmlsdGVyczxhbnk+PixcclxuICAgIHRpdGxlRmllbGRzPzogc3RyaW5nW10sXHJcbiAgICBzaGVldE5hbWVGaWVsZHM/OiBzdHJpbmdbXSxcclxuICAgIEJvZHlGaWVsZHM/OnN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyhcIkNhcmdhbmRvXCIsIFwiR2VuZXJhbmRvIGFyY2hpdm9cIilcclxuXHJcbiAgIGJvZGllcyA9IGF3YWl0IHRoaXMuZ2V0RGF0YUJvZHk8QXJyYXk8VD4+KHVybCwgcGFyYW1zLCBib2RpZXMsIGZpbHRlcnNQb3N0KVxyXG4gIGNvbnN0IHdvcmtib29rID0gbmV3IFdvcmtib29rKCk7XHJcblxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGJvZGllcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgYm9keSA9IGJvZGllc1tpbmRleF07XHJcblxyXG4gICAgICBpZiAodGl0bGVGaWVsZHMpIHtcclxuICAgICAgICB0aXRsZSA9IHRpdGxlRmllbGRzLm1hcChwYXJhbSA9PiBib2R5W3BhcmFtXSkuam9pbihcIi1cIik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciBuYW1lU2hlZXQgPSBcInNoZWV0XCI7XHJcblxyXG4gICAgICBpZiAoc2hlZXROYW1lRmllbGRzKSB7XHJcbiAgICAgICAgbmFtZVNoZWV0ID0gc2hlZXROYW1lRmllbGRzLm1hcChwYXJhbSA9PiBib2R5W3BhcmFtXSkuam9pbihcIi1cIik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHdvcmtzaGVldCA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVUb1hsc3godGl0bGUsIGhlYWRlciwgYCgkeyhpbmRleCsxKSsnKSAnK25hbWVTaGVldH1gLCBib2R5LCBudWxsLCBudWxsLCBudWxsLCBCb2R5RmllbGRzLCBmYWxzZSk7XHJcbiAgICAgIHdvcmtib29rLmFkZFdvcmtzaGVldCh3b3Jrc2hlZXQubmFtZSwgeyB2aWV3czogW3sgc3RhdGU6ICdmcm96ZW4nLCB5U3BsaXQ6IDEgfV0gfSk7XHJcbiAgICAgIGNvbnN0IG5ld1dvcmtzaGVldCA9IHdvcmtib29rLmdldFdvcmtzaGVldCh3b3Jrc2hlZXQubmFtZSk7XHJcbiAgICAgIG5ld1dvcmtzaGVldC5tb2RlbCA9IHdvcmtzaGVldC5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCk7XHJcbiAgICB0aGlzLnNhdmVBc0V4Y2VsRmlsZShidWZmZXIsIG5hbWUpO1xyXG5cclxuICAgIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlVG9YbHN4PFQ+KFxyXG4gICAgdGl0bGU6IHN0cmluZyxcclxuICAgIGhlYWRlcjogQXJyYXk8cGFyYW1zPixcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGJvZHk/OiBULFxyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgcGFyYW1zPzogQXJyYXk8cGFyYW1zPixcclxuICAgIGZpbHRlcnNQb3N0PzogQXJyYXk8SGVhZGVyRmlsdGVyczxhbnk+PixcclxuICAgIEJvZHlGaWVsZHM/OnN0cmluZyxcclxuICAgIGdlbmVyYXRlRmlsZTogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPGFueT4ge1xyXG5cclxuICAgIGlmICghZ2VuZXJhdGVGaWxlKSB0aGlzLm1lc3NhZ2Uub3BlbkxvYWRpbmcoXCJDYXJnYW5kb1wiLCBcIkdlbmVyYW5kbyBlbCBhcmNoaXZvXCIpXHJcblxyXG4gICAgYm9keSA9IGF3YWl0IHRoaXMuZ2V0RGF0YUJvZHk8VD4odXJsLCBwYXJhbXMsIGJvZHksIGZpbHRlcnNQb3N0KVxyXG5cclxuICAgIGxldCB3b3JrYm9vayA9IG5ldyBXb3JrYm9vaygpO1xyXG4gICAgbGV0IHdvcmtzaGVldCA9IHdvcmtib29rLmFkZFdvcmtzaGVldChuYW1lKTtcclxuXHJcbiAgICAvLyBBZGQgbmV3IHJvd1xyXG4gICAgbGV0IHRpdGxlUm93ID0gd29ya3NoZWV0LmFkZFJvdyhbdGl0bGVdKTtcclxuXHJcbiAgICAvLyBTZXQgZm9udCwgc2l6ZSBhbmQgc3R5bGUgaW4gdGl0bGUgcm93LlxyXG4gICAgdGl0bGVSb3cuZm9udCA9IHtcclxuICAgICAgbmFtZTogJ0NvbWljIFNhbnMgTVMnLFxyXG4gICAgICBmYW1pbHk6IDQsXHJcbiAgICAgIHNpemU6IDE2LFxyXG4gICAgICB1bmRlcmxpbmU6ICdkb3VibGUnLFxyXG4gICAgICBib2xkOiB0cnVlLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBCbGFuayBSb3dcclxuICAgIC8vIHdvcmtzaGVldC5hZGRSb3coW10pO1xyXG4gICAgLy8gbGV0IGFkZGhlYWRlciA9IGZhbHNlXHJcbiAgICAvLyBmb3IgKGxldCBwIG9mIGhlYWRlci5maWx0ZXIoeCA9PiB4LmlkID09PSBudWxsKSkge1xyXG4gICAgLy8gICB3b3Jrc2hlZXQuYWRkUm93KFtib2R5W3AudmFsdWVdPz9wLnZhbHVlXSlcclxuICAgIC8vICAgYWRkaGVhZGVyID0gdHJ1ZVxyXG4gICAgLy8gfVxyXG5cclxuICAgIHdvcmtzaGVldC5hZGRSb3coW10pO1xyXG4gICAgbGV0IGFkZGhlYWRlciA9IGZhbHNlO1xyXG4gICAgZm9yIChsZXQgcCBvZiBoZWFkZXIuZmlsdGVyKHggPT4geC5pZCA9PT0gbnVsbCkpIHtcclxuICAgICAgbGV0IHZhbHVlID0gcC52YWx1ZTtcclxuICAgICAgY29uc3QgbWF0Y2hlcyA9IHZhbHVlLm1hdGNoKC97KC4qPyl9L2cpO1xyXG4gICAgICBpZiAobWF0Y2hlcykge1xyXG4gICAgICAgIG1hdGNoZXMuZm9yRWFjaChtYXRjaCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrZXkgPSBtYXRjaC5zbGljZSgxLCAtMSk7XHJcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UobWF0Y2gsIGJvZHlba2V5XSA/PyBtYXRjaCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgd29ya3NoZWV0LmFkZFJvdyhbdmFsdWVdKTtcclxuICAgICAgYWRkaGVhZGVyID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWRkaGVhZGVyKSB3b3Jrc2hlZXQuYWRkUm93KFtdKTtcclxuXHJcbiAgICAvL0FkZCBIZWFkZXIgUm93XHJcbiAgICBsZXQgaGVhZGVyUm93VmFsdWUgPSBoZWFkZXIuZmlsdGVyKHggPT4geC5pZCAhPSBudWxsKS5tYXAoKHApID0+IHsgcmV0dXJuIHAudmFsdWU/P3AuaWQgfSlcclxuICAgIGxldCBfaGVhZGVyUm93VmFsdWUgPSB3b3Jrc2hlZXQuYWRkUm93KGhlYWRlclJvd1ZhbHVlKTtcclxuXHJcbiAgICAvLyBDZWxsIFN0eWxlIDogRmlsbCBhbmQgQm9yZGVyXHJcbiAgICBfaGVhZGVyUm93VmFsdWUuZWFjaENlbGwoKGNlbGwsIG51bWJlcikgPT4ge1xyXG4gICAgICBjZWxsLmZpbGwgPSB7XHJcbiAgICAgICAgdHlwZTogJ3BhdHRlcm4nLFxyXG4gICAgICAgIHBhdHRlcm46ICdsaWdodFVwJyxcclxuICAgICAgICBmZ0NvbG9yOiB7IGFyZ2I6ICc2Nzc1ZjUwMCcgfSxcclxuICAgICAgICBiZ0NvbG9yOiB7IGFyZ2I6ICc2Nzc1ZjUwMCcgfSxcclxuICAgICAgfTtcclxuICAgICAgY2VsbC5ib3JkZXIgPSB7XHJcbiAgICAgICAgdG9wOiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICAgIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBoZWFkZXJSb3cgPSBoZWFkZXIuZmlsdGVyKHggPT4geC5pZCAhPSBudWxsKVxyXG5cclxuICAgIGxldCBkYXRhID0gQm9keUZpZWxkcyAhPSBudWxsID8gYm9keVtCb2R5RmllbGRzXSA/PyBbXSA6IGJvZHlcclxuICAgIGZvciAobGV0IGQgb2YgZGF0YSkge1xyXG4gICAgICB2YXIgcm93ID0gW11cclxuICAgICAgZm9yIChsZXQgaCBvZiBoZWFkZXJSb3cpIHtcclxuICAgICAgICB2YXIgZGggPSBkW2Ake2guaWR9YF1cclxuICAgICAgICBpZiAoaC5ydWxlcykge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIGgucnVsZXMpIHtcclxuICAgICAgICAgICAgaWYgKHJ1bGUucnVsZSA9PSBlbnVtUnVsZXNbJz09J10pIHtcclxuICAgICAgICAgICAgICBpZiAoZGggPT0gcnVsZS52YWx1ZVJ1bGUudG9TdHJpbmcoKSlcclxuICAgICAgICAgICAgICAgIGRoID0gcnVsZS52YWx1ZUFjdGlvblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvdy5wdXNoKGRoPy50b1N0cmluZygpKVxyXG4gICAgICB9XHJcbiAgICAgIHdvcmtzaGVldC5hZGRSb3cocm93KTtcclxuICAgIH1cclxuXHJcbiAgICB3b3Jrc2hlZXQuY29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uIChjb2x1bW4sIGkpIHtcclxuICAgICAgdmFyIG1heExlbmd0aCA9IDA7XHJcbiAgICAgIGNvbHVtbltcImVhY2hDZWxsXCJdKHsgaW5jbHVkZUVtcHR5OiB0cnVlIH0sIGZ1bmN0aW9uIChjZWxsKSB7XHJcbiAgICAgICAgdmFyIGNvbHVtbkxlbmd0aCA9IGNlbGwudmFsdWUgPyBjZWxsLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIDogMTA7XHJcbiAgICAgICAgaWYgKGNvbHVtbkxlbmd0aCA+IG1heExlbmd0aCkge1xyXG4gICAgICAgICAgbWF4TGVuZ3RoID0gY29sdW1uTGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGNvbHVtbi53aWR0aCA9IG1heExlbmd0aCA8IDEwID8gMTAgOiBtYXhMZW5ndGg7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIWdlbmVyYXRlRmlsZSkge1xyXG4gICAgICByZXR1cm4gd29ya3NoZWV0O1xyXG4gICAgfVxyXG5cclxuICAgIHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKS50aGVuKChkYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuc2F2ZUFzRXhjZWxGaWxlKGRhdGEsIG5hbWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKCFnZW5lcmF0ZUZpbGUpIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzYXZlQXNFeGNlbEZpbGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD1VVEYtOCdcclxuICAgIH0pO1xyXG4gICAgZnMuc2F2ZUFzKGRhdGEsIGAke2ZpbGVOYW1lfV9leHBvcnRfJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX0ueGxzeGApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXREYXRhQm9keTxUPih1cmw6IHN0cmluZywgcGFyYW1zOiBBcnJheTxwYXJhbXM+LCBib2R5OiBULCBmaWx0ZXJzUG9zdD86IEFycmF5PEhlYWRlckZpbHRlcnM8YW55Pj4pOiBQcm9taXNlPFQ+IHtcclxuICAgIGlmIChib2R5KSByZXR1cm4gYm9keTtcclxuXHJcbiAgICBpZiAodXJsKSB7XHJcbiAgICAgIHZhciByZXM6IGFueVxyXG4gICAgICByZXMgPSBhd2FpdCB0aGlzLmh0dHAucG9zdERhdGFCb2R5KHVybCwgZmlsdGVyc1Bvc3QsIHBhcmFtcylcclxuICAgICAgaWYgKHJlc1snY291bnQnXSkge1xyXG4gICAgICAgIHJldHVybiByZXNbJ2RhdGEnXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiByZXNcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcbmVudW0gZW51bVJ1bGVzIHtcclxuICBcIj5cIixcclxuICBcIjxcIixcclxuICBcIj09XCIsXHJcbiAgXCIhPVwiXHJcbn1cclxuIl19
1
+ import { Injectable } from '@angular/core';
2
+ import * as fs from 'file-saver';
3
+ import { Workbook } from 'exceljs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./http.service";
6
+ import * as i2 from "./functions.service";
7
+ import * as i3 from "./message.service";
8
+ export class ExportDataService {
9
+ constructor(http, functionEter, message) {
10
+ this.http = http;
11
+ this.functionEter = functionEter;
12
+ this.message = message;
13
+ }
14
+ async generateExcelWithSheets(title, header, name, bodies, url, params, filtersPost, titleFields, sheetNameFields, BodyFields) {
15
+ this.message.openLoading("Cargando", "Generando archivo");
16
+ bodies = await this.getDataBody(url, params, bodies, filtersPost);
17
+ const workbook = new Workbook();
18
+ for (let index = 0; index < bodies.length; index++) {
19
+ const body = bodies[index];
20
+ if (titleFields) {
21
+ title = titleFields.map(param => body[param]).join("-");
22
+ }
23
+ var nameSheet = "sheet";
24
+ if (sheetNameFields) {
25
+ nameSheet = sheetNameFields.map(param => body[param]).join("-");
26
+ }
27
+ const worksheet = await this.generateToXlsx(title, header, `(${(index + 1) + ') ' + nameSheet}`, body, null, null, null, BodyFields, false);
28
+ workbook.addWorksheet(worksheet.name, { views: [{ state: 'frozen', ySplit: 1 }] });
29
+ const newWorksheet = workbook.getWorksheet(worksheet.name);
30
+ newWorksheet.model = worksheet.model;
31
+ }
32
+ const buffer = await workbook.xlsx.writeBuffer();
33
+ this.saveAsExcelFile(buffer, name);
34
+ this.message.closeLoading();
35
+ }
36
+ async generateToXlsx(title, header, name, body, url, params, filtersPost, BodyFields, generateFile = true) {
37
+ if (!generateFile)
38
+ this.message.openLoading("Cargando", "Generando el archivo");
39
+ body = await this.getDataBody(url, params, body, filtersPost);
40
+ let workbook = new Workbook();
41
+ let worksheet = workbook.addWorksheet(name);
42
+ // Add new row
43
+ let titleRow = worksheet.addRow([title]);
44
+ // Set font, size and style in title row.
45
+ titleRow.font = {
46
+ name: 'Comic Sans MS',
47
+ family: 4,
48
+ size: 16,
49
+ underline: 'double',
50
+ bold: true,
51
+ };
52
+ // Blank Row
53
+ // worksheet.addRow([]);
54
+ // let addheader = false
55
+ // for (let p of header.filter(x => x.id === null)) {
56
+ // worksheet.addRow([body[p.value]??p.value])
57
+ // addheader = true
58
+ // }
59
+ worksheet.addRow([]);
60
+ let addheader = false;
61
+ for (let p of header.filter(x => x.id === null)) {
62
+ let value = p.value;
63
+ const matches = value.match(/{(.*?)}/g);
64
+ if (matches) {
65
+ matches.forEach(match => {
66
+ const key = match.slice(1, -1);
67
+ value = value.replace(match, body[key] ?? match);
68
+ });
69
+ }
70
+ worksheet.addRow([value]);
71
+ addheader = true;
72
+ }
73
+ if (addheader)
74
+ worksheet.addRow([]);
75
+ //Add Header Row
76
+ let headerRowValue = header.filter(x => x.id != null).map((p) => { return p.value ?? p.id; });
77
+ let _headerRowValue = worksheet.addRow(headerRowValue);
78
+ // Cell Style : Fill and Border
79
+ _headerRowValue.eachCell((cell, number) => {
80
+ cell.fill = {
81
+ type: 'pattern',
82
+ pattern: 'lightUp',
83
+ fgColor: { argb: '6775f500' },
84
+ bgColor: { argb: '6775f500' },
85
+ };
86
+ cell.border = {
87
+ top: { style: 'thin' },
88
+ left: { style: 'thin' },
89
+ bottom: { style: 'thin' },
90
+ right: { style: 'thin' },
91
+ };
92
+ });
93
+ var headerRow = header.filter(x => x.id != null);
94
+ let data = BodyFields != null ? body[BodyFields] ?? [] : body;
95
+ for (let d of data) {
96
+ var row = [];
97
+ for (let h of headerRow) {
98
+ var dh = d[`${h.id}`];
99
+ if (h.rules) {
100
+ for (const rule of h.rules) {
101
+ if (rule.rule == enumRules['==']) {
102
+ if (dh == rule.valueRule.toString())
103
+ dh = rule.valueAction;
104
+ }
105
+ }
106
+ }
107
+ row.push(dh?.toString());
108
+ }
109
+ worksheet.addRow(row);
110
+ }
111
+ worksheet.columns.forEach(function (column, i) {
112
+ var maxLength = 0;
113
+ column["eachCell"]({ includeEmpty: true }, function (cell) {
114
+ var columnLength = cell.value ? cell.value.toString().length : 10;
115
+ if (columnLength > maxLength) {
116
+ maxLength = columnLength;
117
+ }
118
+ });
119
+ column.width = maxLength < 10 ? 10 : maxLength;
120
+ });
121
+ if (!generateFile) {
122
+ return worksheet;
123
+ }
124
+ workbook.xlsx.writeBuffer().then((data) => {
125
+ this.saveAsExcelFile(data, name);
126
+ });
127
+ if (!generateFile)
128
+ this.message.closeLoading();
129
+ }
130
+ saveAsExcelFile(buffer, fileName) {
131
+ const data = new Blob([buffer], {
132
+ type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'
133
+ });
134
+ fs.saveAs(data, `${fileName}_export_${new Date().getTime()}.xlsx`);
135
+ }
136
+ async getDataBody(url, params, body, filtersPost) {
137
+ if (body)
138
+ return body;
139
+ if (url) {
140
+ var res;
141
+ res = await this.http.postDataBody(url, filtersPost, params);
142
+ if (res['count']) {
143
+ return res['data'];
144
+ }
145
+ else {
146
+ return res;
147
+ }
148
+ }
149
+ }
150
+ }
151
+ ExportDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportDataService, deps: [{ token: i1.HttpService }, { token: i2.FunctionsService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
152
+ ExportDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportDataService, providedIn: 'root' });
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportDataService, decorators: [{
154
+ type: Injectable,
155
+ args: [{
156
+ providedIn: 'root'
157
+ }]
158
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.FunctionsService }, { type: i3.MessageService }]; } });
159
+ var enumRules;
160
+ (function (enumRules) {
161
+ enumRules[enumRules[">"] = 0] = ">";
162
+ enumRules[enumRules["<"] = 1] = "<";
163
+ enumRules[enumRules["=="] = 2] = "==";
164
+ enumRules[enumRules["!="] = 3] = "!=";
165
+ })(enumRules || (enumRules = {}));
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zZXJ2aWNlcy9leHBvcnQtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7QUFPbkMsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUNVLElBQWlCLEVBQ2pCLFlBQThCLEVBQzlCLE9BQXVCO1FBRnZCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQWdCO0lBQUksQ0FBQztJQUV0QyxLQUFLLENBQUMsdUJBQXVCLENBQzNCLEtBQWEsRUFDYixNQUFxQixFQUNyQixJQUFZLEVBQ1osTUFBbUIsRUFDbkIsR0FBWSxFQUNaLE1BQWlCLEVBQ2pCLFdBQXVDLEVBQ3ZDLFdBQXNCLEVBQ3RCLGVBQTBCLEVBQzFCLFVBQWtCO1FBRWxCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1FBRTFELE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQVcsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDNUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUU5QixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0Is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QUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3BDLElBQUksRUFBRSxpRkFBaUY7U0FDeEYsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUksR0FBVyxFQUFFLE1BQXFCLEVBQUUsSUFBTyxFQUFFLFdBQXVDO1FBQy9HLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRCLElBQUksR0FBRyxFQUFFO1lBQ1AsSUFBSSxHQUFRLENBQUE7WUFDWixHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQzVELElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNoQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUNuQjtpQkFBTTtnQkFDTCxPQUFPLEdBQUcsQ0FBQTthQUNYO1NBQ0Y7SUFFSCxDQUFDOzs4R0ExTFUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQThMRCxJQUFLLFNBS0o7QUFMRCxXQUFLLFNBQVM7SUFDWixtQ0FBRyxDQUFBO0lBQ0gsbUNBQUcsQ0FBQTtJQUNILHFDQUFJLENBQUE7SUFDSixxQ0FBSSxDQUFBO0FBQ04sQ0FBQyxFQUxJLFNBQVMsS0FBVCxTQUFTLFFBS2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBXb3JrYm9vayB9IGZyb20gJ2V4Y2VsanMnO1xuaW1wb3J0IHsgcGFyYW1zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kYXRhLXRhYmxlL3BhcmFtcyc7XG5pbXBvcnQgeyBGdW5jdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9mdW5jdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBIZWFkZXJGaWx0ZXJzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9maWx0ZXJzL2hlYWRlci1maWx0ZXJzJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEV4cG9ydERhdGFTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBTZXJ2aWNlLFxuICAgIHByaXZhdGUgZnVuY3Rpb25FdGVyOiBGdW5jdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZTogTWVzc2FnZVNlcnZpY2UpIHsgfVxuXG4gIGFzeW5jIGdlbmVyYXRlRXhjZWxXaXRoU2hlZXRzPFQ+KFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgaGVhZGVyOiBBcnJheTxwYXJhbXM+LFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBib2RpZXM/OiBBcnJheTxhbnk+LFxuICAgIHVybD86IHN0cmluZyxcbiAgICBwYXJhbXM/OiBwYXJhbXNbXSxcbiAgICBmaWx0ZXJzUG9zdD86IEFycmF5PEhlYWRlckZpbHRlcnM8YW55Pj4sXG4gICAgdGl0bGVGaWVsZHM/OiBzdHJpbmdbXSxcbiAgICBzaGVldE5hbWVGaWVsZHM/OiBzdHJpbmdbXSxcbiAgICBCb2R5RmllbGRzPzpzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblxuICAgIHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyhcIkNhcmdhbmRvXCIsIFwiR2VuZXJhbmRvIGFyY2hpdm9cIilcblxuICAgYm9kaWVzID0gYXdhaXQgdGhpcy5nZXREYXRhQm9keTxBcnJheTxUPj4odXJsLCBwYXJhbXMsIGJvZGllcywgZmlsdGVyc1Bvc3QpXG4gIGNvbnN0IHdvcmtib29rID0gbmV3IFdvcmtib29rKCk7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYm9kaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgYm9keSA9IGJvZGllc1tpbmRleF07XG5cbiAgICAgIGlmICh0aXRsZUZpZWxkcykge1xuICAgICAgICB0aXRsZSA9IHRpdGxlRmllbGRzLm1hcChwYXJhbSA9PiBib2R5W3BhcmFtXSkuam9pbihcIi1cIik7XG4gICAgICB9XG5cbiAgICAgIHZhciBuYW1lU2hlZXQgPSBcInNoZWV0XCI7XG5cbiAgICAgIGlmIChzaGVldE5hbWVGaWVsZHMpIHtcbiAgICAgICAgbmFtZVNoZWV0ID0gc2hlZXROYW1lRmllbGRzLm1hcChwYXJhbSA9PiBib2R5W3BhcmFtXSkuam9pbihcIi1cIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdvcmtzaGVldCA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVUb1hsc3godGl0bGUsIGhlYWRlciwgYCgkeyhpbmRleCsxKSsnKSAnK25hbWVTaGVldH1gLCBib2R5LCBudWxsLCBudWxsLCBudWxsLCBCb2R5RmllbGRzLCBmYWxzZSk7XG4gICAgICB3b3JrYm9vay5hZGRXb3Jrc2hlZXQod29ya3NoZWV0Lm5hbWUsIHsgdmlld3M6IFt7IHN0YXRlOiAnZnJvemVuJywgeVNwbGl0OiAxIH1dIH0pO1xuICAgICAgY29uc3QgbmV3V29ya3NoZWV0ID0gd29ya2Jvb2suZ2V0V29ya3NoZWV0KHdvcmtzaGVldC5uYW1lKTtcbiAgICAgIG5ld1dvcmtzaGVldC5tb2RlbCA9IHdvcmtzaGVldC5tb2RlbDtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCk7XG4gICAgdGhpcy5zYXZlQXNFeGNlbEZpbGUoYnVmZmVyLCBuYW1lKTtcblxuICAgIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlVG9YbHN4PFQ+KFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgaGVhZGVyOiBBcnJheTxwYXJhbXM+LFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBib2R5PzogVCxcbiAgICB1cmw/OiBzdHJpbmcsXG4gICAgcGFyYW1zPzogQXJyYXk8cGFyYW1zPixcbiAgICBmaWx0ZXJzUG9zdD86IEFycmF5PEhlYWRlckZpbHRlcnM8YW55Pj4sXG4gICAgQm9keUZpZWxkcz86c3RyaW5nLFxuICAgIGdlbmVyYXRlRmlsZTogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPGFueT4ge1xuXG4gICAgaWYgKCFnZW5lcmF0ZUZpbGUpIHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyhcIkNhcmdhbmRvXCIsIFwiR2VuZXJhbmRvIGVsIGFyY2hpdm9cIilcblxuICAgIGJvZHkgPSBhd2FpdCB0aGlzLmdldERhdGFCb2R5PFQ+KHVybCwgcGFyYW1zLCBib2R5LCBmaWx0ZXJzUG9zdClcblxuICAgIGxldCB3b3JrYm9vayA9IG5ldyBXb3JrYm9vaygpO1xuICAgIGxldCB3b3Jrc2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQobmFtZSk7XG5cbiAgICAvLyBBZGQgbmV3IHJvd1xuICAgIGxldCB0aXRsZVJvdyA9IHdvcmtzaGVldC5hZGRSb3coW3RpdGxlXSk7XG5cbiAgICAvLyBTZXQgZm9udCwgc2l6ZSBhbmQgc3R5bGUgaW4gdGl0bGUgcm93LlxuICAgIHRpdGxlUm93LmZvbnQgPSB7XG4gICAgICBuYW1lOiAnQ29taWMgU2FucyBNUycsXG4gICAgICBmYW1pbHk6IDQsXG4gICAgICBzaXplOiAxNixcbiAgICAgIHVuZGVybGluZTogJ2RvdWJsZScsXG4gICAgICBib2xkOiB0cnVlLFxuICAgIH07XG5cbiAgICAvLyBCbGFuayBSb3dcbiAgICAvLyB3b3Jrc2hlZXQuYWRkUm93KFtdKTtcbiAgICAvLyBsZXQgYWRkaGVhZGVyID0gZmFsc2VcbiAgICAvLyBmb3IgKGxldCBwIG9mIGhlYWRlci5maWx0ZXIoeCA9PiB4LmlkID09PSBudWxsKSkge1xuICAgIC8vICAgd29ya3NoZWV0LmFkZFJvdyhbYm9keVtwLnZhbHVlXT8/cC52YWx1ZV0pXG4gICAgLy8gICBhZGRoZWFkZXIgPSB0cnVlXG4gICAgLy8gfVxuXG4gICAgd29ya3NoZWV0LmFkZFJvdyhbXSk7XG4gICAgbGV0IGFkZGhlYWRlciA9IGZhbHNlO1xuICAgIGZvciAobGV0IHAgb2YgaGVhZGVyLmZpbHRlcih4ID0+IHguaWQgPT09IG51bGwpKSB7XG4gICAgICBsZXQgdmFsdWUgPSBwLnZhbHVlO1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHZhbHVlLm1hdGNoKC97KC4qPyl9L2cpO1xuICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgbWF0Y2hlcy5mb3JFYWNoKG1hdGNoID0+IHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBtYXRjaC5zbGljZSgxLCAtMSk7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKG1hdGNoLCBib2R5W2tleV0gPz8gbWF0Y2gpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHdvcmtzaGVldC5hZGRSb3coW3ZhbHVlXSk7XG4gICAgICBhZGRoZWFkZXIgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChhZGRoZWFkZXIpIHdvcmtzaGVldC5hZGRSb3coW10pO1xuXG4gICAgLy9BZGQgSGVhZGVyIFJvd1xuICAgIGxldCBoZWFkZXJSb3dWYWx1ZSA9IGhlYWRlci5maWx0ZXIoeCA9PiB4LmlkICE9IG51bGwpLm1hcCgocCkgPT4geyByZXR1cm4gcC52YWx1ZT8/cC5pZCB9KVxuICAgIGxldCBfaGVhZGVyUm93VmFsdWUgPSB3b3Jrc2hlZXQuYWRkUm93KGhlYWRlclJvd1ZhbHVlKTtcblxuICAgIC8vIENlbGwgU3R5bGUgOiBGaWxsIGFuZCBCb3JkZXJcbiAgICBfaGVhZGVyUm93VmFsdWUuZWFjaENlbGwoKGNlbGwsIG51bWJlcikgPT4ge1xuICAgICAgY2VsbC5maWxsID0ge1xuICAgICAgICB0eXBlOiAncGF0dGVybicsXG4gICAgICAgIHBhdHRlcm46ICdsaWdodFVwJyxcbiAgICAgICAgZmdDb2xvcjogeyBhcmdiOiAnNjc3NWY1MDAnIH0sXG4gICAgICAgIGJnQ29sb3I6IHsgYXJnYjogJzY3NzVmNTAwJyB9LFxuICAgICAgfTtcbiAgICAgIGNlbGwuYm9yZGVyID0ge1xuICAgICAgICB0b3A6IHsgc3R5bGU6ICd0aGluJyB9LFxuICAgICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSxcbiAgICAgICAgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSxcbiAgICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9LFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHZhciBoZWFkZXJSb3cgPSBoZWFkZXIuZmlsdGVyKHggPT4geC5pZCAhPSBudWxsKVxuXG4gICAgbGV0IGRhdGEgPSBCb2R5RmllbGRzICE9IG51bGwgPyBib2R5W0JvZHlGaWVsZHNdID8/IFtdIDogYm9keVxuICAgIGZvciAobGV0IGQgb2YgZGF0YSkge1xuICAgICAgdmFyIHJvdyA9IFtdXG4gICAgICBmb3IgKGxldCBoIG9mIGhlYWRlclJvdykge1xuICAgICAgICB2YXIgZGggPSBkW2Ake2guaWR9YF1cbiAgICAgICAgaWYgKGgucnVsZXMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgaC5ydWxlcykge1xuICAgICAgICAgICAgaWYgKHJ1bGUucnVsZSA9PSBlbnVtUnVsZXNbJz09J10pIHtcbiAgICAgICAgICAgICAgaWYgKGRoID09IHJ1bGUudmFsdWVSdWxlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAgICAgZGggPSBydWxlLnZhbHVlQWN0aW9uXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJvdy5wdXNoKGRoPy50b1N0cmluZygpKVxuICAgICAgfVxuICAgICAgd29ya3NoZWV0LmFkZFJvdyhyb3cpO1xuICAgIH1cblxuICAgIHdvcmtzaGVldC5jb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbiwgaSkge1xuICAgICAgdmFyIG1heExlbmd0aCA9IDA7XG4gICAgICBjb2x1bW5bXCJlYWNoQ2VsbFwiXSh7IGluY2x1ZGVFbXB0eTogdHJ1ZSB9LCBmdW5jdGlvbiAoY2VsbCkge1xuICAgICAgICB2YXIgY29sdW1uTGVuZ3RoID0gY2VsbC52YWx1ZSA/IGNlbGwudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggOiAxMDtcbiAgICAgICAgaWYgKGNvbHVtbkxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICAgIG1heExlbmd0aCA9IGNvbHVtbkxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb2x1bW4ud2lkdGggPSBtYXhMZW5ndGggPCAxMCA/IDEwIDogbWF4TGVuZ3RoO1xuICAgIH0pO1xuXG4gICAgaWYgKCFnZW5lcmF0ZUZpbGUpIHtcbiAgICAgIHJldHVybiB3b3Jrc2hlZXQ7XG4gICAgfVxuXG4gICAgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuc2F2ZUFzRXhjZWxGaWxlKGRhdGEsIG5hbWUpO1xuICAgIH0pO1xuXG4gICAgaWYgKCFnZW5lcmF0ZUZpbGUpIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKVxuICB9XG5cbiAgcHJpdmF0ZSBzYXZlQXNFeGNlbEZpbGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcbiAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PVVURi04J1xuICAgIH0pO1xuICAgIGZzLnNhdmVBcyhkYXRhLCBgJHtmaWxlTmFtZX1fZXhwb3J0XyR7bmV3IERhdGUoKS5nZXRUaW1lKCl9Lnhsc3hgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RGF0YUJvZHk8VD4odXJsOiBzdHJpbmcsIHBhcmFtczogQXJyYXk8cGFyYW1zPiwgYm9keTogVCwgZmlsdGVyc1Bvc3Q/OiBBcnJheTxIZWFkZXJGaWx0ZXJzPGFueT4+KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKGJvZHkpIHJldHVybiBib2R5O1xuXG4gICAgaWYgKHVybCkge1xuICAgICAgdmFyIHJlczogYW55XG4gICAgICByZXMgPSBhd2FpdCB0aGlzLmh0dHAucG9zdERhdGFCb2R5KHVybCwgZmlsdGVyc1Bvc3QsIHBhcmFtcylcbiAgICAgIGlmIChyZXNbJ2NvdW50J10pIHtcbiAgICAgICAgcmV0dXJuIHJlc1snZGF0YSddXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzXG4gICAgICB9XG4gICAgfVxuXG4gIH1cbn1cblxuZW51bSBlbnVtUnVsZXMge1xuICBcIj5cIixcbiAgXCI8XCIsXG4gIFwiPT1cIixcbiAgXCIhPVwiXG59XG4iXX0=
@@ -1,24 +1,24 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FileFormsService {
4
- constructor() { }
5
- createMultipartForm(file, params) {
6
- const formD = new FormData();
7
- formD.append('file', file, 'form-data'); //Asigna el campo File
8
- if (params) {
9
- params.forEach((element) => {
10
- formD.append(element.id, element.value);
11
- });
12
- }
13
- return (formD);
14
- }
15
- }
16
- FileFormsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FileFormsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17
- FileFormsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FileFormsService, providedIn: 'root' });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FileFormsService, decorators: [{
19
- type: Injectable,
20
- args: [{
21
- providedIn: 'root'
22
- }]
23
- }], ctorParameters: function () { return []; } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1mb3Jtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3NlcnZpY2VzL2ZpbGUtZm9ybXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLGdCQUFnQixDQUFDO0lBRWpCLG1CQUFtQixDQUFDLElBQVMsRUFBRSxNQUFPO1FBRXBDLE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDN0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUEsc0JBQXNCO1FBQzVELElBQUcsTUFBTSxFQUFDO1lBQ1IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVcsRUFBRSxFQUFFO2dCQUM3QixLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFZixDQUFDOzs2R0FmVSxnQkFBZ0I7aUhBQWhCLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVGb3Jtc1NlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBjcmVhdGVNdWx0aXBhcnRGb3JtKGZpbGU6RmlsZSwgcGFyYW1zPyl7XHJcblxyXG4gICAgY29uc3QgZm9ybUQgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1ELmFwcGVuZCgnZmlsZScsZmlsZSwnZm9ybS1kYXRhJyk7Ly9Bc2lnbmEgZWwgY2FtcG8gRmlsZVxyXG4gICAgaWYocGFyYW1zKXtcclxuICAgICAgcGFyYW1zLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XHJcbiAgICAgICAgZm9ybUQuYXBwZW5kKGVsZW1lbnQuaWQsZWxlbWVudC52YWx1ZSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4oZm9ybUQpXHJcblxyXG4gIH1cclxuXHJcbn1cclxuIl19
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FileFormsService {
4
+ constructor() { }
5
+ createMultipartForm(file, params) {
6
+ const formD = new FormData();
7
+ formD.append('file', file, 'form-data'); //Asigna el campo File
8
+ if (params) {
9
+ params.forEach((element) => {
10
+ formD.append(element.id, element.value);
11
+ });
12
+ }
13
+ return (formD);
14
+ }
15
+ }
16
+ FileFormsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FileFormsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17
+ FileFormsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FileFormsService, providedIn: 'root' });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FileFormsService, decorators: [{
19
+ type: Injectable,
20
+ args: [{
21
+ providedIn: 'root'
22
+ }]
23
+ }], ctorParameters: function () { return []; } });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1mb3Jtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3NlcnZpY2VzL2ZpbGUtZm9ybXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLGdCQUFnQixDQUFDO0lBRWpCLG1CQUFtQixDQUFDLElBQVMsRUFBRSxNQUFPO1FBRXBDLE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDN0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUEsc0JBQXNCO1FBQzVELElBQUcsTUFBTSxFQUFDO1lBQ1IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVcsRUFBRSxFQUFFO2dCQUM3QixLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFZixDQUFDOzs2R0FmVSxnQkFBZ0I7aUhBQWhCLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRmlsZUZvcm1zU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBjcmVhdGVNdWx0aXBhcnRGb3JtKGZpbGU6RmlsZSwgcGFyYW1zPyl7XG5cbiAgICBjb25zdCBmb3JtRCA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1ELmFwcGVuZCgnZmlsZScsZmlsZSwnZm9ybS1kYXRhJyk7Ly9Bc2lnbmEgZWwgY2FtcG8gRmlsZVxuICAgIGlmKHBhcmFtcyl7XG4gICAgICBwYXJhbXMuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgICAgZm9ybUQuYXBwZW5kKGVsZW1lbnQuaWQsZWxlbWVudC52YWx1ZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4oZm9ybUQpXG5cbiAgfVxuXG59XG4iXX0=
@@ -1,54 +1,54 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FunctionsService {
4
- constructor() { }
5
- dateForm(date) {
6
- let data = new Date(date);
7
- let change = `${data.getFullYear()}/${data.getMonth() + 1}/${data.getDate()}`;
8
- return (change);
9
- }
10
- dateIso(date) {
11
- let data = date.toString();
12
- let cut = data.replace(/(.*)\T.*/, '$1');
13
- let add = `${cut}T05:00:00.000Z`;
14
- let fecha = add.replace(/(.*)\T.*/, '$1');
15
- return (fecha);
16
- }
17
- dateDB(date) {
18
- let day = this.validateTwoDigitFormat(date.getDate().toString());
19
- let month = this.validateTwoDigitFormat((date.getMonth() + 1).toString());
20
- return `${date.getFullYear()}-${month}-${day}`;
21
- }
22
- dateWithTime(date) {
23
- if (!date)
24
- return "";
25
- var value = date.split("T");
26
- return value[0] + " " + value[1].split(".")[0];
27
- }
28
- areObjectsEqual(obj1, obj2) {
29
- return JSON.stringify(obj1) === JSON.stringify(obj2);
30
- }
31
- removeDuplicateObjects(originalArray) {
32
- const uniqueArray = [];
33
- originalArray.forEach((obj) => {
34
- if (!uniqueArray.some((uniqueObj) => this.areObjectsEqual(obj, uniqueObj))) {
35
- uniqueArray.push(obj);
36
- }
37
- });
38
- return uniqueArray;
39
- }
40
- validateTwoDigitFormat(number) {
41
- if (number.length == 1)
42
- number = "0" + number;
43
- return number;
44
- }
45
- }
46
- FunctionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FunctionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
47
- FunctionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FunctionsService, providedIn: 'root' });
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FunctionsService, decorators: [{
49
- type: Injectable,
50
- args: [{
51
- providedIn: 'root'
52
- }]
53
- }], ctorParameters: function () { return []; } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc2VydmljZXMvZnVuY3Rpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixnQkFBZ0IsQ0FBQztJQUdqQixRQUFRLENBQUUsSUFBSTtRQUNiLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUE7UUFDNUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxPQUFPLENBQUUsSUFBSTtRQUNYLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN4QyxJQUFJLEdBQUcsR0FBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUE7UUFDakMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDekMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUUsSUFBSTtRQUNWLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUNoRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUN2RSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUNoRCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVc7UUFDdEIsSUFBRyxDQUFDLElBQUk7WUFBRSxPQUFPLEVBQUUsQ0FBQTtRQUNuQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzNCLE9BQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUyxFQUFFLElBQVM7UUFDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELHNCQUFzQixDQUFDLGFBQW9CO1FBQ3pDLE1BQU0sV0FBVyxHQUFVLEVBQUUsQ0FBQztRQUM5QixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDdkI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxNQUFjO1FBQzNDLElBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsTUFBTSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUE7UUFDNUMsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDOzs2R0FqRFUsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGdW5jdGlvbnNTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcblxyXG4gIGRhdGVGb3JtIChkYXRlKSB7XHJcbiAgIGxldCBkYXRhID0gbmV3IERhdGUoZGF0ZSlcclxuICAgbGV0IGNoYW5nZSA9IGAke2RhdGEuZ2V0RnVsbFllYXIoKX0vJHtkYXRhLmdldE1vbnRoKCkgKyAxfS8ke2RhdGEuZ2V0RGF0ZSgpfWBcclxuICAgIHJldHVybiAoY2hhbmdlKVxyXG4gIH1cclxuXHJcbiAgZGF0ZUlzbyAoZGF0ZSkge1xyXG4gICAgbGV0IGRhdGEgPSBkYXRlLnRvU3RyaW5nKCk7XHJcbiAgICBsZXQgY3V0ID0gZGF0YS5yZXBsYWNlKC8oLiopXFxULiovLCAnJDEnKVxyXG4gICAgbGV0IGFkZCAgPSBgJHtjdXR9VDA1OjAwOjAwLjAwMFpgXHJcbiAgICBsZXQgZmVjaGEgPSBhZGQucmVwbGFjZSgvKC4qKVxcVC4qLywgJyQxJylcclxuICAgIHJldHVybiAoZmVjaGEpXHJcbiAgfVxyXG5cclxuICBkYXRlREIgKGRhdGUpIHtcclxuICAgIGxldCBkYXkgPSB0aGlzLnZhbGlkYXRlVHdvRGlnaXRGb3JtYXQoZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKSlcclxuICAgIGxldCBtb250aCA9IHRoaXMudmFsaWRhdGVUd29EaWdpdEZvcm1hdCgoZGF0ZS5nZXRNb250aCgpKzEpLnRvU3RyaW5nKCkpXHJcbiAgICByZXR1cm4gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke21vbnRofS0ke2RheX1gXHJcbiAgfVxyXG5cclxuICBkYXRlV2l0aFRpbWUoZGF0ZTpzdHJpbmcpOnN0cmluZ3tcclxuICAgIGlmKCFkYXRlKSByZXR1cm4gXCJcIlxyXG4gICAgdmFyIHZhbHVlID0gZGF0ZS5zcGxpdChcIlRcIilcclxuICAgIHJldHVybiAgdmFsdWVbMF0gKyBcIiBcIiArIHZhbHVlWzFdLnNwbGl0KFwiLlwiKVswXVxyXG4gIH1cclxuXHJcbiAgYXJlT2JqZWN0c0VxdWFsKG9iajE6IGFueSwgb2JqMjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqMSkgPT09IEpTT04uc3RyaW5naWZ5KG9iajIpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRHVwbGljYXRlT2JqZWN0cyhvcmlnaW5hbEFycmF5OiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IHVuaXF1ZUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgb3JpZ2luYWxBcnJheS5mb3JFYWNoKChvYmopID0+IHtcclxuICAgICAgaWYgKCF1bmlxdWVBcnJheS5zb21lKCh1bmlxdWVPYmopID0+IHRoaXMuYXJlT2JqZWN0c0VxdWFsKG9iaiwgdW5pcXVlT2JqKSkpIHtcclxuICAgICAgICB1bmlxdWVBcnJheS5wdXNoKG9iaik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB1bmlxdWVBcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVUd29EaWdpdEZvcm1hdChudW1iZXI6IHN0cmluZyk6c3RyaW5ne1xyXG4gICAgaWYobnVtYmVyLmxlbmd0aCA9PSAxKSBudW1iZXIgPSBcIjBcIiArIG51bWJlclxyXG4gICAgcmV0dXJuIG51bWJlclxyXG4gIH1cclxuXHJcbn1cclxuIl19
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FunctionsService {
4
+ constructor() { }
5
+ dateForm(date) {
6
+ let data = new Date(date);
7
+ let change = `${data.getFullYear()}/${data.getMonth() + 1}/${data.getDate()}`;
8
+ return (change);
9
+ }
10
+ dateIso(date) {
11
+ let data = date.toString();
12
+ let cut = data.replace(/(.*)\T.*/, '$1');
13
+ let add = `${cut}T05:00:00.000Z`;
14
+ let fecha = add.replace(/(.*)\T.*/, '$1');
15
+ return (fecha);
16
+ }
17
+ dateDB(date) {
18
+ let day = this.validateTwoDigitFormat(date.getDate().toString());
19
+ let month = this.validateTwoDigitFormat((date.getMonth() + 1).toString());
20
+ return `${date.getFullYear()}-${month}-${day}`;
21
+ }
22
+ dateWithTime(date) {
23
+ if (!date)
24
+ return "";
25
+ var value = date.split("T");
26
+ return value[0] + " " + value[1].split(".")[0];
27
+ }
28
+ areObjectsEqual(obj1, obj2) {
29
+ return JSON.stringify(obj1) === JSON.stringify(obj2);
30
+ }
31
+ removeDuplicateObjects(originalArray) {
32
+ const uniqueArray = [];
33
+ originalArray.forEach((obj) => {
34
+ if (!uniqueArray.some((uniqueObj) => this.areObjectsEqual(obj, uniqueObj))) {
35
+ uniqueArray.push(obj);
36
+ }
37
+ });
38
+ return uniqueArray;
39
+ }
40
+ validateTwoDigitFormat(number) {
41
+ if (number.length == 1)
42
+ number = "0" + number;
43
+ return number;
44
+ }
45
+ }
46
+ FunctionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FunctionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
47
+ FunctionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FunctionsService, providedIn: 'root' });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FunctionsService, decorators: [{
49
+ type: Injectable,
50
+ args: [{
51
+ providedIn: 'root'
52
+ }]
53
+ }], ctorParameters: function () { return []; } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc2VydmljZXMvZnVuY3Rpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixnQkFBZ0IsQ0FBQztJQUdqQixRQUFRLENBQUUsSUFBSTtRQUNiLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUE7UUFDNUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxPQUFPLENBQUUsSUFBSTtRQUNYLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN4QyxJQUFJLEdBQUcsR0FBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUE7UUFDakMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDekMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUUsSUFBSTtRQUNWLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUNoRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUN2RSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUNoRCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVc7UUFDdEIsSUFBRyxDQUFDLElBQUk7WUFBRSxPQUFPLEVBQUUsQ0FBQTtRQUNuQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzNCLE9BQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUyxFQUFFLElBQVM7UUFDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELHNCQUFzQixDQUFDLGFBQW9CO1FBQ3pDLE1BQU0sV0FBVyxHQUFVLEVBQUUsQ0FBQztRQUM5QixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDdkI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxNQUFjO1FBQzNDLElBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsTUFBTSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUE7UUFDNUMsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDOzs2R0FqRFUsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uc1NlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cblxuICBkYXRlRm9ybSAoZGF0ZSkge1xuICAgbGV0IGRhdGEgPSBuZXcgRGF0ZShkYXRlKVxuICAgbGV0IGNoYW5nZSA9IGAke2RhdGEuZ2V0RnVsbFllYXIoKX0vJHtkYXRhLmdldE1vbnRoKCkgKyAxfS8ke2RhdGEuZ2V0RGF0ZSgpfWBcbiAgICByZXR1cm4gKGNoYW5nZSlcbiAgfVxuXG4gIGRhdGVJc28gKGRhdGUpIHtcbiAgICBsZXQgZGF0YSA9IGRhdGUudG9TdHJpbmcoKTtcbiAgICBsZXQgY3V0ID0gZGF0YS5yZXBsYWNlKC8oLiopXFxULiovLCAnJDEnKVxuICAgIGxldCBhZGQgID0gYCR7Y3V0fVQwNTowMDowMC4wMDBaYFxuICAgIGxldCBmZWNoYSA9IGFkZC5yZXBsYWNlKC8oLiopXFxULiovLCAnJDEnKVxuICAgIHJldHVybiAoZmVjaGEpXG4gIH1cblxuICBkYXRlREIgKGRhdGUpIHtcbiAgICBsZXQgZGF5ID0gdGhpcy52YWxpZGF0ZVR3b0RpZ2l0Rm9ybWF0KGRhdGUuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkpXG4gICAgbGV0IG1vbnRoID0gdGhpcy52YWxpZGF0ZVR3b0RpZ2l0Rm9ybWF0KChkYXRlLmdldE1vbnRoKCkrMSkudG9TdHJpbmcoKSlcbiAgICByZXR1cm4gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke21vbnRofS0ke2RheX1gXG4gIH1cblxuICBkYXRlV2l0aFRpbWUoZGF0ZTpzdHJpbmcpOnN0cmluZ3tcbiAgICBpZighZGF0ZSkgcmV0dXJuIFwiXCJcbiAgICB2YXIgdmFsdWUgPSBkYXRlLnNwbGl0KFwiVFwiKVxuICAgIHJldHVybiAgdmFsdWVbMF0gKyBcIiBcIiArIHZhbHVlWzFdLnNwbGl0KFwiLlwiKVswXVxuICB9XG5cbiAgYXJlT2JqZWN0c0VxdWFsKG9iajE6IGFueSwgb2JqMjogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iajEpID09PSBKU09OLnN0cmluZ2lmeShvYmoyKTtcbiAgfVxuXG4gIHJlbW92ZUR1cGxpY2F0ZU9iamVjdHMob3JpZ2luYWxBcnJheTogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3QgdW5pcXVlQXJyYXk6IGFueVtdID0gW107XG4gICAgb3JpZ2luYWxBcnJheS5mb3JFYWNoKChvYmopID0+IHtcbiAgICAgIGlmICghdW5pcXVlQXJyYXkuc29tZSgodW5pcXVlT2JqKSA9PiB0aGlzLmFyZU9iamVjdHNFcXVhbChvYmosIHVuaXF1ZU9iaikpKSB7XG4gICAgICAgIHVuaXF1ZUFycmF5LnB1c2gob2JqKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1bmlxdWVBcnJheTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUd29EaWdpdEZvcm1hdChudW1iZXI6IHN0cmluZyk6c3RyaW5ne1xuICAgIGlmKG51bWJlci5sZW5ndGggPT0gMSkgbnVtYmVyID0gXCIwXCIgKyBudW1iZXJcbiAgICByZXR1cm4gbnVtYmVyXG4gIH1cblxufVxuIl19