brainloper-ui 15.0.1 → 17.0.0

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 (94) hide show
  1. package/esm2022/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +314 -0
  2. package/esm2022/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +30 -0
  3. package/esm2022/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +23 -0
  4. package/esm2022/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +83 -0
  5. package/esm2022/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +42 -0
  6. package/esm2022/src/app/modules/brainloper-ui/components/combos/combos.component.mjs +183 -0
  7. package/esm2022/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +746 -0
  8. package/esm2022/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +122 -0
  9. package/esm2022/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +205 -0
  10. package/esm2022/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +227 -0
  11. package/esm2022/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +89 -0
  12. package/esm2022/src/app/modules/brainloper-ui/components/report/template-ot/template-ot.component.mjs +86 -0
  13. package/esm2022/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs +117 -0
  14. package/esm2022/src/app/modules/directives/carousel-item.directive.mjs +20 -0
  15. package/esm2022/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +6 -0
  16. package/esm2022/src/app/modules/services/crypto.service.mjs +38 -0
  17. package/esm2022/src/app/modules/services/export-data.service.mjs +169 -0
  18. package/esm2022/src/app/modules/services/file-forms.service.mjs +24 -0
  19. package/esm2022/src/app/modules/services/fuel-order-pdf.service.mjs +346 -0
  20. package/esm2022/src/app/modules/services/functions.service.mjs +75 -0
  21. package/esm2022/src/app/modules/services/generate-pdf.service.mjs +93 -0
  22. package/esm2022/src/app/modules/services/http.service.mjs +142 -0
  23. package/esm2022/src/app/modules/services/loading/loading.component.mjs +30 -0
  24. package/esm2022/src/app/modules/services/local-storage.service.mjs +115 -0
  25. package/esm2022/src/app/modules/services/message.service.mjs +202 -0
  26. package/esm2022/src/app/modules/services/purchase-order-pdf.service.mjs +179 -0
  27. package/esm2022/src/app/modules/services/session.service.mjs +43 -0
  28. package/esm2022/src/app/modules/services/work-order-pdf.service.mjs +363 -0
  29. package/{fesm2020 → fesm2022}/brainloper-ui.mjs +541 -443
  30. package/{fesm2020 → fesm2022}/brainloper-ui.mjs.map +1 -1
  31. package/package.json +17 -23
  32. package/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.d.ts +1 -1
  33. package/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.d.ts +1 -1
  34. package/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.d.ts +1 -1
  35. package/src/app/modules/brainloper-ui/components/carousel/carousel.component.d.ts +1 -1
  36. package/src/app/modules/brainloper-ui/components/combos/combos.component.d.ts +1 -1
  37. package/src/app/modules/brainloper-ui/components/data-table/data-table.component.d.ts +1 -1
  38. package/src/app/modules/brainloper-ui/components/file-input/file-input.component.d.ts +1 -1
  39. package/src/app/modules/brainloper-ui/components/filters/filters.component.d.ts +1 -1
  40. package/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.d.ts +1 -1
  41. package/src/app/modules/directives/carousel-item.directive.d.ts +1 -1
  42. package/esm2020/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +0 -306
  43. package/esm2020/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +0 -29
  44. package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +0 -23
  45. package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +0 -83
  46. package/esm2020/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +0 -40
  47. package/esm2020/src/app/modules/brainloper-ui/components/combos/combos.component.mjs +0 -176
  48. package/esm2020/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +0 -728
  49. package/esm2020/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +0 -118
  50. package/esm2020/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +0 -187
  51. package/esm2020/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +0 -222
  52. package/esm2020/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +0 -84
  53. package/esm2020/src/app/modules/brainloper-ui/components/report/template-ot/template-ot.component.mjs +0 -81
  54. package/esm2020/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs +0 -108
  55. package/esm2020/src/app/modules/directives/carousel-item.directive.mjs +0 -18
  56. package/esm2020/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +0 -8
  57. package/esm2020/src/app/modules/services/crypto.service.mjs +0 -37
  58. package/esm2020/src/app/modules/services/export-data.service.mjs +0 -166
  59. package/esm2020/src/app/modules/services/file-forms.service.mjs +0 -24
  60. package/esm2020/src/app/modules/services/fuel-order-pdf.service.mjs +0 -346
  61. package/esm2020/src/app/modules/services/functions.service.mjs +0 -75
  62. package/esm2020/src/app/modules/services/generate-pdf.service.mjs +0 -89
  63. package/esm2020/src/app/modules/services/http.service.mjs +0 -140
  64. package/esm2020/src/app/modules/services/loading/loading.component.mjs +0 -28
  65. package/esm2020/src/app/modules/services/local-storage.service.mjs +0 -115
  66. package/esm2020/src/app/modules/services/message.service.mjs +0 -200
  67. package/esm2020/src/app/modules/services/purchase-order-pdf.service.mjs +0 -178
  68. package/esm2020/src/app/modules/services/session.service.mjs +0 -42
  69. package/esm2020/src/app/modules/services/work-order-pdf.service.mjs +0 -363
  70. package/fesm2015/brainloper-ui.mjs +0 -3914
  71. package/fesm2015/brainloper-ui.mjs.map +0 -1
  72. /package/{esm2020 → esm2022}/brainloper-ui.mjs +0 -0
  73. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  74. /package/{esm2020 → esm2022}/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.mjs +0 -0
  75. /package/{esm2020 → esm2022}/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.mjs +0 -0
  76. /package/{esm2020 → esm2022}/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.mjs +0 -0
  77. /package/{esm2020 → esm2022}/src/app/modules/interfaces/buttons/button-icon.mjs +0 -0
  78. /package/{esm2020 → esm2022}/src/app/modules/interfaces/buttons/button-lavel-edit.mjs +0 -0
  79. /package/{esm2020 → esm2022}/src/app/modules/interfaces/combos/combos-configuration.mjs +0 -0
  80. /package/{esm2020 → esm2022}/src/app/modules/interfaces/data-table/params.mjs +0 -0
  81. /package/{esm2020 → esm2022}/src/app/modules/interfaces/data-table/rules.mjs +0 -0
  82. /package/{esm2020 → esm2022}/src/app/modules/interfaces/data-table/table-columns.mjs +0 -0
  83. /package/{esm2020 → esm2022}/src/app/modules/interfaces/data-table/table-configuration.mjs +0 -0
  84. /package/{esm2020 → esm2022}/src/app/modules/interfaces/enum/enumActions.mjs +0 -0
  85. /package/{esm2020 → esm2022}/src/app/modules/interfaces/enum/enumRules.mjs +0 -0
  86. /package/{esm2020 → esm2022}/src/app/modules/interfaces/enum/httpResponseType.mjs +0 -0
  87. /package/{esm2020 → esm2022}/src/app/modules/interfaces/file-forms-service/file-forms-params.mjs +0 -0
  88. /package/{esm2020 → esm2022}/src/app/modules/interfaces/file-forms-service/file-input-params.mjs +0 -0
  89. /package/{esm2020 → esm2022}/src/app/modules/interfaces/filters/header-filters.mjs +0 -0
  90. /package/{esm2020 → esm2022}/src/app/modules/interfaces/report/template-pdf-base.mjs +0 -0
  91. /package/{esm2020 → esm2022}/src/app/modules/interfaces/report/template-pdf-ot.mjs +0 -0
  92. /package/{esm2020 → esm2022}/src/app/modules/interfaces/report/template-pdf-purchase-order.mjs +0 -0
  93. /package/{esm2020 → esm2022}/src/app/modules/interfaces/report/template-pfd-fo.mjs +0 -0
  94. /package/{esm2020 → esm2022}/src/app/modules/services/screen-size-util.mjs +0 -0
@@ -1,346 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { jsPDF } from 'jspdf';
3
- import 'jspdf-autotable';
4
- import * as i0 from "@angular/core";
5
- // export interface TemplatePdfFo {
6
- // name: string;
7
- // nit: string;
8
- // address: string;
9
- // telephone: string;
10
- // mail: string;
11
- // image?: string;
12
- // code: string;
13
- // date: string;
14
- // responsible: string;
15
- // id_place: string;
16
- // approved_by: string;
17
- // detalle: string;
18
- // description: string;
19
- // consecutive: string;
20
- // namePlace: string;
21
- // addressPlace: string;
22
- // area: string;
23
- // odometer: string;
24
- // invoiceReference?: string;
25
- // }
26
- export class FuelOrderPdfService {
27
- constructor() { }
28
- generateFuelOrderProfesionalPDF(data, options) {
29
- return new Promise((resolve, reject) => {
30
- try {
31
- const opts = {
32
- format: 'letter',
33
- download: true,
34
- filename: 'orden_combustible.pdf',
35
- ...options
36
- };
37
- const doc = new jsPDF('p', 'pt', opts.format);
38
- const pageWidth = doc.internal.pageSize.getWidth();
39
- const pageHeight = doc.internal.pageSize.getHeight();
40
- const margin = 40;
41
- let currentY = margin;
42
- // Colores corporativos
43
- const primaryColor = [41, 128, 185]; // Azul
44
- const secondaryColor = [52, 73, 94]; // Gris oscuro
45
- const accentColor = [230, 126, 34]; // Naranja
46
- // === ENCABEZADO PRINCIPAL ===
47
- this.addHeader(doc, data, margin, currentY, pageWidth, primaryColor);
48
- currentY = 140;
49
- // === TÍTULO DEL DOCUMENTO ===
50
- currentY = this.addDocumentTitle(doc, data, currentY, pageWidth, accentColor);
51
- currentY += 25;
52
- // === INFORMACIÓN PRINCIPAL ===
53
- currentY = this.addMainInfo(doc, data, currentY, margin, pageWidth);
54
- currentY += 20;
55
- // === DATOS DEL PROVEEDOR ===
56
- currentY = this.addProviderInfo(doc, data, currentY, margin, pageWidth, secondaryColor);
57
- currentY += 20;
58
- // === DETALLES DEL SERVICIO ===
59
- currentY = this.addServiceDetails(doc, data, currentY, margin, pageWidth, secondaryColor);
60
- currentY += 20;
61
- // === AUTORIZACIÓN ===
62
- currentY = this.addAuthorization(doc, data, currentY, margin, pageWidth);
63
- currentY += 30;
64
- // === PIE DE PÁGINA ===
65
- this.addFooter(doc, data, pageHeight - 80, pageWidth, primaryColor);
66
- // === GENERAR/DESCARGAR ===
67
- if (opts.download) {
68
- doc.output('dataurlnewwindow', { filename: opts.filename });
69
- }
70
- resolve(doc);
71
- }
72
- catch (error) {
73
- reject(error);
74
- }
75
- });
76
- }
77
- /**
78
- * Genera PDF optimizado para impresión
79
- */
80
- generateForPrint(data) {
81
- return this.generateFuelOrderProfesionalPDF(data, {
82
- format: 'letter',
83
- download: false
84
- });
85
- }
86
- addHeader(doc, data, margin, y, pageWidth, color) {
87
- // Fondo del encabezado
88
- doc.setFillColor(color[0], color[1], color[2]);
89
- doc.rect(margin, y, pageWidth - (margin * 2), 80, 'F');
90
- // Texto del encabezado en blanco
91
- doc.setTextColor(255, 255, 255);
92
- doc.setFont('helvetica', 'bold');
93
- doc.setFontSize(18);
94
- const companyName = data.name.toUpperCase();
95
- const nameWidth = doc.getTextWidth(companyName);
96
- doc.text(companyName, (pageWidth - nameWidth) / 2, y + 25);
97
- doc.setFontSize(12);
98
- const nitText = `NIT: ${data.nit}`;
99
- const nitWidth = doc.getTextWidth(nitText);
100
- doc.text(nitText, (pageWidth - nitWidth) / 2, y + 45);
101
- doc.setFontSize(10);
102
- const addressText = `${data.address} - TEL: ${data.telephone}`;
103
- const addressWidth = doc.getTextWidth(addressText);
104
- doc.text(addressText, (pageWidth - addressWidth) / 2, y + 65);
105
- // Resetear color de texto
106
- doc.setTextColor(0, 0, 0);
107
- }
108
- addDocumentTitle(doc, data, y, pageWidth, color) {
109
- doc.setTextColor(color[0], color[1], color[2]);
110
- doc.setFont('helvetica', 'bold');
111
- doc.setFontSize(20);
112
- const title = 'ORDEN DE COMBUSTIBLE';
113
- const titleWidth = doc.getTextWidth(title);
114
- doc.text(title, (pageWidth - titleWidth) / 2, y);
115
- doc.setFontSize(16);
116
- const numberText = `N° ${data.consecutive}`;
117
- const numberWidth = doc.getTextWidth(numberText);
118
- doc.text(numberText, (pageWidth - numberWidth) / 2, y + 25);
119
- doc.setTextColor(0, 0, 0);
120
- return y + 40;
121
- }
122
- addMainInfo(doc, data, y, margin, pageWidth) {
123
- const tableData = [
124
- [
125
- { content: 'Área:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
126
- { content: data.area, styles: {} },
127
- { content: 'Código:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
128
- { content: data.code, styles: {} },
129
- { content: 'Fecha:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
130
- { content: data.date, styles: {} }
131
- ],
132
- [
133
- { content: 'Operario:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
134
- { content: data.responsible, styles: { colSpan: 3 } },
135
- { content: 'Odómetro:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
136
- { content: data.odometer, styles: {} }
137
- ]
138
- ];
139
- doc.autoTable({
140
- startY: y,
141
- body: tableData,
142
- theme: 'grid',
143
- styles: {
144
- fontSize: 11,
145
- cellPadding: 8,
146
- lineColor: [200, 200, 200],
147
- lineWidth: 0.5
148
- },
149
- columnStyles: {
150
- 0: { cellWidth: 70 },
151
- 1: { cellWidth: 100 },
152
- 2: { cellWidth: 70 },
153
- 3: { cellWidth: 80 },
154
- 4: { cellWidth: 70 },
155
- 5: { cellWidth: 80 }
156
- },
157
- margin: { left: margin, right: margin }
158
- });
159
- return doc.lastAutoTable.finalY;
160
- }
161
- addProviderInfo(doc, data, y, margin, pageWidth, color) {
162
- // Título de sección
163
- doc.setTextColor(color[0], color[1], color[2]);
164
- doc.setFont('helvetica', 'bold');
165
- doc.setFontSize(14);
166
- const title = 'DATOS DEL PROVEEDOR';
167
- const titleWidth = doc.getTextWidth(title);
168
- doc.text(title, (pageWidth - titleWidth) / 2, y);
169
- doc.setTextColor(0, 0, 0);
170
- const tableData = [
171
- [
172
- { content: 'Lugar:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
173
- { content: data.namePlace, styles: {} },
174
- { content: 'Dirección:', styles: { fontStyle: 'bold', fillColor: [240, 240, 240] } },
175
- { content: data.addressPlace, styles: {} }
176
- ]
177
- ];
178
- doc.autoTable({
179
- startY: y + 20,
180
- body: tableData,
181
- theme: 'grid',
182
- styles: {
183
- fontSize: 11,
184
- cellPadding: 8,
185
- lineColor: [200, 200, 200],
186
- lineWidth: 0.5
187
- },
188
- columnStyles: {
189
- 0: { cellWidth: 80 },
190
- 1: { cellWidth: 160 },
191
- 2: { cellWidth: 80 },
192
- 3: { cellWidth: 150 }
193
- },
194
- margin: { left: margin, right: margin }
195
- });
196
- return doc.lastAutoTable.finalY;
197
- }
198
- addServiceDetails(doc, data, y, margin, pageWidth, color) {
199
- // Título de sección
200
- doc.setTextColor(color[0], color[1], color[2]);
201
- doc.setFont('helvetica', 'bold');
202
- doc.setFontSize(14);
203
- const title = 'DETALLES DEL SERVICIO';
204
- const titleWidth = doc.getTextWidth(title);
205
- doc.text(title, (pageWidth - titleWidth) / 2, y);
206
- doc.setTextColor(0, 0, 0);
207
- // Preparar texto para calcular altura necesaria
208
- const boxY = y + 20;
209
- const boxWidth = pageWidth - (margin * 2);
210
- const textMargin = margin + 15;
211
- const maxWidth = boxWidth - 30;
212
- const lineHeight = 15;
213
- const minBoxHeight = 60; // Altura mínima del contenedor
214
- const padding = 40; // Padding superior e inferior
215
- // Calcular líneas de texto necesarias
216
- doc.setFont('helvetica', 'normal');
217
- doc.setFontSize(11);
218
- let totalLines = 0;
219
- // Contar líneas del detalle
220
- if (data.detalle && data.detalle.trim()) {
221
- const detalleLines = doc.splitTextToSize(data.detalle.trim(), maxWidth);
222
- totalLines += detalleLines.length;
223
- }
224
- // Contar líneas de la descripción (incluye etiqueta "Descripción:")
225
- if (data.description && data.description.trim()) {
226
- totalLines += 2; // Una línea para "Descripción:" + espacio
227
- const descLines = doc.splitTextToSize(data.description.trim(), maxWidth);
228
- totalLines += descLines.length;
229
- }
230
- // Calcular altura necesaria basada en el contenido
231
- const contentHeight = Math.max(totalLines * lineHeight, 30); // Mínimo 30pt para contenido
232
- const boxHeight = Math.max(minBoxHeight, contentHeight + padding);
233
- // Verificar si necesitamos una nueva página
234
- const pageHeight = doc.internal.pageSize.getHeight();
235
- const remainingSpace = pageHeight - boxY - 100; // Dejar espacio para footer
236
- let finalBoxY = boxY;
237
- if (boxHeight > remainingSpace) {
238
- // Añadir nueva página
239
- doc.addPage();
240
- finalBoxY = margin + 40; // Posición en nueva página
241
- }
242
- // Dibujar contenedor con altura dinámica
243
- // Fondo gris claro
244
- doc.setFillColor(250, 250, 250);
245
- doc.rect(margin, finalBoxY, boxWidth, boxHeight, 'F');
246
- // Borde
247
- doc.setDrawColor(200, 200, 200);
248
- doc.rect(margin, finalBoxY, boxWidth, boxHeight, 'S');
249
- // Añadir contenido de texto
250
- let textY = finalBoxY + 20;
251
- // Añadir detalle si existe
252
- if (data.detalle && data.detalle.trim()) {
253
- const detalleLines = doc.splitTextToSize(data.detalle.trim(), maxWidth);
254
- doc.text(detalleLines, textMargin, textY);
255
- textY += detalleLines.length * lineHeight + 10; // Espacio extra después del detalle
256
- }
257
- // Añadir descripción si existe
258
- if (data.description && data.description.trim()) {
259
- doc.setFont('helvetica', 'bold');
260
- doc.text('Descripción:', textMargin, textY);
261
- doc.setFont('helvetica', 'normal');
262
- textY += lineHeight;
263
- const descLines = doc.splitTextToSize(data.description.trim(), maxWidth);
264
- // Verificar si necesitamos manejar contenido muy largo
265
- const remainingHeight = finalBoxY + boxHeight - textY - 20;
266
- const maxLinesInSpace = Math.floor(remainingHeight / lineHeight);
267
- if (descLines.length > maxLinesInSpace && maxLinesInSpace > 0) {
268
- // Mostrar líneas que caben en el espacio actual
269
- const currentLines = descLines.slice(0, maxLinesInSpace);
270
- doc.text(currentLines, textMargin, textY);
271
- // Continuar en nueva página si hay más contenido
272
- if (descLines.length > maxLinesInSpace) {
273
- doc.addPage();
274
- textY = margin + 20;
275
- const remainingLines = descLines.slice(maxLinesInSpace);
276
- doc.text(remainingLines, textMargin, textY);
277
- return textY + (remainingLines.length * lineHeight) + 20;
278
- }
279
- }
280
- else {
281
- doc.text(descLines, textMargin, textY);
282
- }
283
- }
284
- // Si no hay contenido, mostrar un mensaje
285
- if ((!data.detalle || !data.detalle.trim()) && (!data.description || !data.description.trim())) {
286
- doc.setFont('helvetica', 'italic');
287
- doc.setFontSize(10);
288
- doc.setTextColor(150, 150, 150);
289
- doc.text('No se han especificado detalles del servicio.', textMargin, textY);
290
- doc.setTextColor(0, 0, 0);
291
- doc.setFont('helvetica', 'normal');
292
- doc.setFontSize(11);
293
- }
294
- return finalBoxY + boxHeight;
295
- }
296
- addAuthorization(doc, data, y, margin, pageWidth) {
297
- const tableData = [
298
- [
299
- { content: 'AUTORIZADA POR:', styles: { fontStyle: 'bold', fontSize: 12, fillColor: [240, 240, 240] } },
300
- { content: data.approved_by, styles: { fontSize: 12 } }
301
- ]
302
- ];
303
- doc.autoTable({
304
- startY: y,
305
- body: tableData,
306
- theme: 'grid',
307
- styles: {
308
- cellPadding: 12,
309
- lineColor: [200, 200, 200],
310
- lineWidth: 0.5
311
- },
312
- columnStyles: {
313
- 0: { cellWidth: 150 },
314
- 1: { cellWidth: 320 }
315
- },
316
- margin: { left: margin, right: margin }
317
- });
318
- return doc.lastAutoTable.finalY;
319
- }
320
- addFooter(doc, data, y, pageWidth, color) {
321
- // Fondo del pie de página
322
- doc.setFillColor(color[0], color[1], color[2]);
323
- doc.rect(40, y, pageWidth - 80, 60, 'F');
324
- // Texto en blanco
325
- doc.setTextColor(255, 255, 255);
326
- doc.setFont('helvetica', 'bold');
327
- doc.setFontSize(12);
328
- const instruction = 'Favor adjuntar la orden de venta o factura';
329
- const instWidth = doc.getTextWidth(instruction);
330
- doc.text(instruction, (pageWidth - instWidth) / 2, y + 25);
331
- doc.setFontSize(10);
332
- const emailWidth = doc.getTextWidth(data.mail);
333
- doc.text(data.mail, (pageWidth - emailWidth) / 2, y + 45);
334
- // Resetear color
335
- doc.setTextColor(0, 0, 0);
336
- }
337
- }
338
- FuelOrderPdfService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FuelOrderPdfService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
339
- FuelOrderPdfService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FuelOrderPdfService, providedIn: 'root' });
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FuelOrderPdfService, decorators: [{
341
- type: Injectable,
342
- args: [{
343
- providedIn: 'root'
344
- }]
345
- }], ctorParameters: function () { return []; } });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVlbC1vcmRlci1wZGYuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zZXJ2aWNlcy9mdWVsLW9yZGVyLXBkZi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5QixPQUFPLGlCQUFpQixDQUFDOztBQUd6QixtQ0FBbUM7QUFDbkMsa0JBQWtCO0FBQ2xCLGlCQUFpQjtBQUNqQixxQkFBcUI7QUFDckIsdUJBQXVCO0FBQ3ZCLGtCQUFrQjtBQUNsQixvQkFBb0I7QUFDcEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQix5QkFBeUI7QUFDekIsc0JBQXNCO0FBQ3RCLHlCQUF5QjtBQUN6QixxQkFBcUI7QUFDckIseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6Qix1QkFBdUI7QUFDdkIsMEJBQTBCO0FBQzFCLGtCQUFrQjtBQUNsQixzQkFBc0I7QUFDdEIsK0JBQStCO0FBQy9CLElBQUk7QUFLSixNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLGdCQUFnQixDQUFDO0lBRWpCLCtCQUErQixDQUFDLElBQW1CLEVBQUUsT0FJcEQ7UUFDQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUk7Z0JBQ0YsTUFBTSxJQUFJLEdBQUc7b0JBQ1gsTUFBTSxFQUFFLFFBQVE7b0JBQ2hCLFFBQVEsRUFBRSxJQUFJO29CQUNkLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLEdBQUcsT0FBTztpQkFDWCxDQUFDO2dCQUVGLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLFNBQVMs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U0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUUzRCxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRTFELGlCQUFpQjtRQUNqQixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7aUhBcFhVLG1CQUFtQjtxSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGpzUERGIH0gZnJvbSAnanNwZGYnO1xuaW1wb3J0ICdqc3BkZi1hdXRvdGFibGUnO1xuaW1wb3J0IHsgVGVtcGxhdGVQZGZGbyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0L3RlbXBsYXRlLXBmZC1mbyc7XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVQZGZGbyB7XG4vLyAgIG5hbWU6IHN0cmluZztcbi8vICAgbml0OiBzdHJpbmc7XG4vLyAgIGFkZHJlc3M6IHN0cmluZztcbi8vICAgdGVsZXBob25lOiBzdHJpbmc7XG4vLyAgIG1haWw6IHN0cmluZztcbi8vICAgaW1hZ2U/OiBzdHJpbmc7XG4vLyAgIGNvZGU6IHN0cmluZztcbi8vICAgZGF0ZTogc3RyaW5nO1xuLy8gICByZXNwb25zaWJsZTogc3RyaW5nO1xuLy8gICBpZF9wbGFjZTogc3RyaW5nO1xuLy8gICBhcHByb3ZlZF9ieTogc3RyaW5nO1xuLy8gICBkZXRhbGxlOiBzdHJpbmc7XG4vLyAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4vLyAgIGNvbnNlY3V0aXZlOiBzdHJpbmc7XG4vLyAgIG5hbWVQbGFjZTogc3RyaW5nO1xuLy8gICBhZGRyZXNzUGxhY2U6IHN0cmluZztcbi8vICAgYXJlYTogc3RyaW5nO1xuLy8gICBvZG9tZXRlcjogc3RyaW5nO1xuLy8gICBpbnZvaWNlUmVmZXJlbmNlPzogc3RyaW5nO1xuLy8gfVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGdWVsT3JkZXJQZGZTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGdlbmVyYXRlRnVlbE9yZGVyUHJvZmVzaW9uYWxQREYoZGF0YTogVGVtcGxhdGVQZGZGbywgb3B0aW9ucz86IHtcbiAgICBmb3JtYXQ/OiAnbGV0dGVyJyB8ICdhNCc7XG4gICAgZG93bmxvYWQ/OiBib29sZWFuO1xuICAgIGZpbGVuYW1lPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxqc1BERj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBvcHRzID0ge1xuICAgICAgICAgIGZvcm1hdDogJ2xldHRlcicsXG4gICAgICAgICAgZG93bmxvYWQ6IHRydWUsXG4gICAgICAgICAgZmlsZW5hbWU6ICdvcmRlbl9jb21idXN0aWJsZS5wZGYnLFxuICAgICAgICAgIC4uLm9wdGlvbnNcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkb2MgPSBuZXcganNQREYoJ3AnLCAncHQnLCBvcHRzLmZvcm1hdCk7XG4gICAgICAgIGNvbnN0IHBhZ2VXaWR0aCA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRXaWR0aCgpO1xuICAgICAgICBjb25zdCBwYWdlSGVpZ2h0ID0gZG9jLmludGVybmFsLnBhZ2VTaXplLmdldEhlaWdodCgpO1xuICAgICAgICBjb25zdCBtYXJnaW4gPSA0MDtcbiAgICAgICAgbGV0IGN1cnJlbnRZID0gbWFyZ2luO1xuXG4gICAgICAgIC8vIENvbG9yZXMgY29ycG9yYXRpdm9zXG4gICAgICAgIGNvbnN0IHByaW1hcnlDb2xvciA9IFs0MSwgMTI4LCAxODVdOyAvLyBBenVsXG4gICAgICAgIGNvbnN0IHNlY29uZGFyeUNvbG9yID0gWzUyLCA3MywgOTRdOyAvLyBHcmlzIG9zY3Vyb1xuICAgICAgICBjb25zdCBhY2NlbnRDb2xvciA9IFsyMzAsIDEyNiwgMzRdOyAvLyBOYXJhbmphXG5cbiAgICAgICAgLy8gPT09IEVOQ0FCRVpBRE8gUFJJTkNJUEFMID09PVxuICAgICAgICB0aGlzLmFkZEhlYWRlcihkb2MsIGRhdGEsIG1hcmdpbiwgY3VycmVudFksIHBhZ2VXaWR0aCwgcHJpbWFyeUNvbG9yKTtcbiAgICAgICAgY3VycmVudFkgPSAxNDA7XG5cbiAgICAgICAgLy8gPT09IFTDjVRVTE8gREVMIERPQ1VNRU5UTyA9PT1cbiAgICAgICAgY3VycmVudFkgPSB0aGlzLmFkZERvY3VtZW50VGl0bGUoZG9jLCBkYXRhLCBjdXJyZW50WSwgcGFnZVdpZHRoLCBhY2NlbnRDb2xvcik7XG4gICAgICAgIGN1cnJlbnRZICs9IDI1O1xuXG4gICAgICAgIC8vID09PSBJTkZPUk1BQ0nDk04gUFJJTkNJUEFMID09PVxuICAgICAgICBjdXJyZW50WSA9IHRoaXMuYWRkTWFpbkluZm8oZG9jLCBkYXRhLCBjdXJyZW50WSwgbWFyZ2luLCBwYWdlV2lkdGgpO1xuICAgICAgICBjdXJyZW50WSArPSAyMDtcblxuICAgICAgICAvLyA9PT0gREFUT1MgREVMIFBST1ZFRURPUiA9PT1cbiAgICAgICAgY3VycmVudFkgPSB0aGlzLmFkZFByb3ZpZGVySW5mbyhkb2MsIGRhdGEsIGN1cnJlbnRZLCBtYXJnaW4sIHBhZ2VXaWR0aCwgc2Vjb25kYXJ5Q29sb3IpO1xuICAgICAgICBjdXJyZW50WSArPSAyMDtcblxuICAgICAgICAvLyA9PT0gREVUQUxMRVMgREVMIFNFUlZJQ0lPID09PVxuICAgICAgICBjdXJyZW50WSA9IHRoaXMuYWRkU2VydmljZURldGFpbHMoZG9jLCBkYXRhLCBjdXJyZW50WSwgbWFyZ2luLCBwYWdlV2lkdGgsIHNlY29uZGFyeUNvbG9yKTtcbiAgICAgICAgY3VycmVudFkgKz0gMjA7XG5cbiAgICAgICAgLy8gPT09IEFVVE9SSVpBQ0nDk04gPT09XG4gICAgICAgIGN1cnJlbnRZID0gdGhpcy5hZGRBdXRob3JpemF0aW9uKGRvYywgZGF0YSwgY3VycmVudFksIG1hcmdpbiwgcGFnZVdpZHRoKTtcbiAgICAgICAgY3VycmVudFkgKz0gMzA7XG5cbiAgICAgICAgLy8gPT09IFBJRSBERSBQw4FHSU5BID09PVxuICAgICAgICB0aGlzLmFkZEZvb3Rlcihkb2MsIGRhdGEsIHBhZ2VIZWlnaHQgLSA4MCwgcGFnZVdpZHRoLCBwcmltYXJ5Q29sb3IpO1xuXG4gICAgICAgIC8vID09PSBHRU5FUkFSL0RFU0NBUkdBUiA9PT1cbiAgICAgICAgaWYgKG9wdHMuZG93bmxvYWQpIHtcbiAgICAgICAgICBkb2Mub3V0cHV0KCdkYXRhdXJsbmV3d2luZG93JywgeyBmaWxlbmFtZTogb3B0cy5maWxlbmFtZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmUoZG9jKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhIFBERiBvcHRpbWl6YWRvIHBhcmEgaW1wcmVzacOzblxuICAgKi9cbiAgZ2VuZXJhdGVGb3JQcmludChkYXRhOiBUZW1wbGF0ZVBkZkZvKTogUHJvbWlzZTxqc1BERj4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRnVlbE9yZGVyUHJvZmVzaW9uYWxQREYoZGF0YSwge1xuICAgICAgZm9ybWF0OiAnbGV0dGVyJyxcbiAgICAgIGRvd25sb2FkOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIZWFkZXIoZG9jOiBqc1BERiwgZGF0YTogVGVtcGxhdGVQZGZGbywgbWFyZ2luOiBudW1iZXIsIHk6IG51bWJlciwgcGFnZVdpZHRoOiBudW1iZXIsIGNvbG9yOiBudW1iZXJbXSk6IHZvaWQge1xuICAgIC8vIEZvbmRvIGRlbCBlbmNhYmV6YWRvXG4gICAgZG9jLnNldEZpbGxDb2xvcihjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdKTtcbiAgICBkb2MucmVjdChtYXJnaW4sIHksIHBhZ2VXaWR0aCAtIChtYXJnaW4gKiAyKSwgODAsICdGJyk7XG5cbiAgICAvLyBUZXh0byBkZWwgZW5jYWJlemFkbyBlbiBibGFuY29cbiAgICBkb2Muc2V0VGV4dENvbG9yKDI1NSwgMjU1LCAyNTUpO1xuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xuICAgIGRvYy5zZXRGb250U2l6ZSgxOCk7XG5cbiAgICBjb25zdCBjb21wYW55TmFtZSA9IGRhdGEubmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG5hbWVXaWR0aCA9IGRvYy5nZXRUZXh0V2lkdGgoY29tcGFueU5hbWUpO1xuICAgIGRvYy50ZXh0KGNvbXBhbnlOYW1lLCAocGFnZVdpZHRoIC0gbmFtZVdpZHRoKSAvIDIsIHkgKyAyNSk7XG5cbiAgICBkb2Muc2V0Rm9udFNpemUoMTIpO1xuICAgIGNvbnN0IG5pdFRleHQgPSBgTklUOiAke2RhdGEubml0fWA7XG4gICAgY29uc3Qgbml0V2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKG5pdFRleHQpO1xuICAgIGRvYy50ZXh0KG5pdFRleHQsIChwYWdlV2lkdGggLSBuaXRXaWR0aCkgLyAyLCB5ICsgNDUpO1xuXG4gICAgZG9jLnNldEZvbnRTaXplKDEwKTtcbiAgICBjb25zdCBhZGRyZXNzVGV4dCA9IGAke2RhdGEuYWRkcmVzc30gLSBURUw6ICR7ZGF0YS50ZWxlcGhvbmV9YDtcbiAgICBjb25zdCBhZGRyZXNzV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKGFkZHJlc3NUZXh0KTtcbiAgICBkb2MudGV4dChhZGRyZXNzVGV4dCwgKHBhZ2VXaWR0aCAtIGFkZHJlc3NXaWR0aCkgLyAyLCB5ICsgNjUpO1xuXG4gICAgLy8gUmVzZXRlYXIgY29sb3IgZGUgdGV4dG9cbiAgICBkb2Muc2V0VGV4dENvbG9yKDAsIDAsIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREb2N1bWVudFRpdGxlKGRvYzoganNQREYsIGRhdGE6IFRlbXBsYXRlUGRmRm8sIHk6IG51bWJlciwgcGFnZVdpZHRoOiBudW1iZXIsIGNvbG9yOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgZG9jLnNldFRleHRDb2xvcihjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdKTtcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoMjApO1xuXG4gICAgY29uc3QgdGl0bGUgPSAnT1JERU4gREUgQ09NQlVTVElCTEUnO1xuICAgIGNvbnN0IHRpdGxlV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKHRpdGxlKTtcbiAgICBkb2MudGV4dCh0aXRsZSwgKHBhZ2VXaWR0aCAtIHRpdGxlV2lkdGgpIC8gMiwgeSk7XG5cbiAgICBkb2Muc2V0Rm9udFNpemUoMTYpO1xuICAgIGNvbnN0IG51bWJlclRleHQgPSBgTsKwICR7ZGF0YS5jb25zZWN1dGl2ZX1gO1xuICAgIGNvbnN0IG51bWJlcldpZHRoID0gZG9jLmdldFRleHRXaWR0aChudW1iZXJUZXh0KTtcbiAgICBkb2MudGV4dChudW1iZXJUZXh0LCAocGFnZVdpZHRoIC0gbnVtYmVyV2lkdGgpIC8gMiwgeSArIDI1KTtcblxuICAgIGRvYy5zZXRUZXh0Q29sb3IoMCwgMCwgMCk7XG4gICAgcmV0dXJuIHkgKyA0MDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTWFpbkluZm8oZG9jOiBqc1BERiwgZGF0YTogVGVtcGxhdGVQZGZGbywgeTogbnVtYmVyLCBtYXJnaW46IG51bWJlciwgcGFnZVdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHRhYmxlRGF0YSA9IFtcbiAgICAgIFtcbiAgICAgICAgeyBjb250ZW50OiAnw4FyZWE6Jywgc3R5bGVzOiB7IGZvbnRTdHlsZTogJ2JvbGQnLCBmaWxsQ29sb3I6IFsyNDAsIDI0MCwgMjQwXSB9IH0sXG4gICAgICAgIHsgY29udGVudDogZGF0YS5hcmVhLCBzdHlsZXM6IHt9IH0sXG4gICAgICAgIHsgY29udGVudDogJ0PDs2RpZ286Jywgc3R5bGVzOiB7IGZvbnRTdHlsZTogJ2JvbGQnLCBmaWxsQ29sb3I6IFsyNDAsIDI0MCwgMjQwXSB9IH0sXG4gICAgICAgIHsgY29udGVudDogZGF0YS5jb2RlLCBzdHlsZXM6IHt9IH0sXG4gICAgICAgIHsgY29udGVudDogJ0ZlY2hhOicsIHN0eWxlczogeyBmb250U3R5bGU6ICdib2xkJywgZmlsbENvbG9yOiBbMjQwLCAyNDAsIDI0MF0gfSB9LFxuICAgICAgICB7IGNvbnRlbnQ6IGRhdGEuZGF0ZSwgc3R5bGVzOiB7fSB9XG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7IGNvbnRlbnQ6ICdPcGVyYXJpbzonLCBzdHlsZXM6IHsgZm9udFN0eWxlOiAnYm9sZCcsIGZpbGxDb2xvcjogWzI0MCwgMjQwLCAyNDBdIH0gfSxcbiAgICAgICAgeyBjb250ZW50OiBkYXRhLnJlc3BvbnNpYmxlLCBzdHlsZXM6IHsgY29sU3BhbjogMyB9IH0sXG4gICAgICAgIHsgY29udGVudDogJ09kw7NtZXRybzonLCBzdHlsZXM6IHsgZm9udFN0eWxlOiAnYm9sZCcsIGZpbGxDb2xvcjogWzI0MCwgMjQwLCAyNDBdIH0gfSxcbiAgICAgICAgeyBjb250ZW50OiBkYXRhLm9kb21ldGVyLCBzdHlsZXM6IHt9IH1cbiAgICAgIF1cbiAgICBdO1xuXG4gICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XG4gICAgICBzdGFydFk6IHksXG4gICAgICBib2R5OiB0YWJsZURhdGEsXG4gICAgICB0aGVtZTogJ2dyaWQnLFxuICAgICAgc3R5bGVzOiB7XG4gICAgICAgIGZvbnRTaXplOiAxMSxcbiAgICAgICAgY2VsbFBhZGRpbmc6IDgsXG4gICAgICAgIGxpbmVDb2xvcjogWzIwMCwgMjAwLCAyMDBdLFxuICAgICAgICBsaW5lV2lkdGg6IDAuNVxuICAgICAgfSxcbiAgICAgIGNvbHVtblN0eWxlczoge1xuICAgICAgICAwOiB7IGNlbGxXaWR0aDogNzAgfSxcbiAgICAgICAgMTogeyBjZWxsV2lkdGg6IDEwMCB9LFxuICAgICAgICAyOiB7IGNlbGxXaWR0aDogNzAgfSxcbiAgICAgICAgMzogeyBjZWxsV2lkdGg6IDgwIH0sXG4gICAgICAgIDQ6IHsgY2VsbFdpZHRoOiA3MCB9LFxuICAgICAgICA1OiB7IGNlbGxXaWR0aDogODAgfVxuICAgICAgfSxcbiAgICAgIG1hcmdpbjogeyBsZWZ0OiBtYXJnaW4sIHJpZ2h0OiBtYXJnaW4gfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIChkb2MgYXMgYW55KS5sYXN0QXV0b1RhYmxlLmZpbmFsWTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUHJvdmlkZXJJbmZvKGRvYzoganNQREYsIGRhdGE6IFRlbXBsYXRlUGRmRm8sIHk6IG51bWJlciwgbWFyZ2luOiBudW1iZXIsIHBhZ2VXaWR0aDogbnVtYmVyLCBjb2xvcjogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIC8vIFTDrXR1bG8gZGUgc2VjY2nDs25cbiAgICBkb2Muc2V0VGV4dENvbG9yKGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0pO1xuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xuICAgIGRvYy5zZXRGb250U2l6ZSgxNCk7XG4gICAgY29uc3QgdGl0bGUgPSAnREFUT1MgREVMIFBST1ZFRURPUic7XG4gICAgY29uc3QgdGl0bGVXaWR0aCA9IGRvYy5nZXRUZXh0V2lkdGgodGl0bGUpO1xuICAgIGRvYy50ZXh0KHRpdGxlLCAocGFnZVdpZHRoIC0gdGl0bGVXaWR0aCkgLyAyLCB5KTtcbiAgICBkb2Muc2V0VGV4dENvbG9yKDAsIDAsIDApO1xuXG4gICAgY29uc3QgdGFibGVEYXRhID0gW1xuICAgICAgW1xuICAgICAgICB7IGNvbnRlbnQ6ICdMdWdhcjonLCBzdHlsZXM6IHsgZm9udFN0eWxlOiAnYm9sZCcsIGZpbGxDb2xvcjogWzI0MCwgMjQwLCAyNDBdIH0gfSxcbiAgICAgICAgeyBjb250ZW50OiBkYXRhLm5hbWVQbGFjZSwgc3R5bGVzOiB7fSB9LFxuICAgICAgICB7IGNvbnRlbnQ6ICdEaXJlY2Npw7NuOicsIHN0eWxlczogeyBmb250U3R5bGU6ICdib2xkJywgZmlsbENvbG9yOiBbMjQwLCAyNDAsIDI0MF0gfSB9LFxuICAgICAgICB7IGNvbnRlbnQ6IGRhdGEuYWRkcmVzc1BsYWNlLCBzdHlsZXM6IHt9IH1cbiAgICAgIF1cbiAgICBdO1xuXG4gICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XG4gICAgICBzdGFydFk6IHkgKyAyMCxcbiAgICAgIGJvZHk6IHRhYmxlRGF0YSxcbiAgICAgIHRoZW1lOiAnZ3JpZCcsXG4gICAgICBzdHlsZXM6IHtcbiAgICAgICAgZm9udFNpemU6IDExLFxuICAgICAgICBjZWxsUGFkZGluZzogOCxcbiAgICAgICAgbGluZUNvbG9yOiBbMjAwLCAyMDAsIDIwMF0sXG4gICAgICAgIGxpbmVXaWR0aDogMC41XG4gICAgICB9LFxuICAgICAgY29sdW1uU3R5bGVzOiB7XG4gICAgICAgIDA6IHsgY2VsbFdpZHRoOiA4MCB9LFxuICAgICAgICAxOiB7IGNlbGxXaWR0aDogMTYwIH0sXG4gICAgICAgIDI6IHsgY2VsbFdpZHRoOiA4MCB9LFxuICAgICAgICAzOiB7IGNlbGxXaWR0aDogMTUwIH1cbiAgICAgIH0sXG4gICAgICBtYXJnaW46IHsgbGVmdDogbWFyZ2luLCByaWdodDogbWFyZ2luIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoZG9jIGFzIGFueSkubGFzdEF1dG9UYWJsZS5maW5hbFk7XG4gIH1cblxuICBwcml2YXRlIGFkZFNlcnZpY2VEZXRhaWxzKGRvYzoganNQREYsIGRhdGE6IFRlbXBsYXRlUGRmRm8sIHk6IG51bWJlciwgbWFyZ2luOiBudW1iZXIsIHBhZ2VXaWR0aDogbnVtYmVyLCBjb2xvcjogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIC8vIFTDrXR1bG8gZGUgc2VjY2nDs25cbiAgICBkb2Muc2V0VGV4dENvbG9yKGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0pO1xuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xuICAgIGRvYy5zZXRGb250U2l6ZSgxNCk7XG4gICAgY29uc3QgdGl0bGUgPSAnREVUQUxMRVMgREVMIFNFUlZJQ0lPJztcbiAgICBjb25zdCB0aXRsZVdpZHRoID0gZG9jLmdldFRleHRXaWR0aCh0aXRsZSk7XG4gICAgZG9jLnRleHQodGl0bGUsIChwYWdlV2lkdGggLSB0aXRsZVdpZHRoKSAvIDIsIHkpO1xuICAgIGRvYy5zZXRUZXh0Q29sb3IoMCwgMCwgMCk7XG5cbiAgICAvLyBQcmVwYXJhciB0ZXh0byBwYXJhIGNhbGN1bGFyIGFsdHVyYSBuZWNlc2FyaWFcbiAgICBjb25zdCBib3hZID0geSArIDIwO1xuICAgIGNvbnN0IGJveFdpZHRoID0gcGFnZVdpZHRoIC0gKG1hcmdpbiAqIDIpO1xuICAgIGNvbnN0IHRleHRNYXJnaW4gPSBtYXJnaW4gKyAxNTtcbiAgICBjb25zdCBtYXhXaWR0aCA9IGJveFdpZHRoIC0gMzA7XG4gICAgY29uc3QgbGluZUhlaWdodCA9IDE1O1xuICAgIGNvbnN0IG1pbkJveEhlaWdodCA9IDYwOyAvLyBBbHR1cmEgbcOtbmltYSBkZWwgY29udGVuZWRvclxuICAgIGNvbnN0IHBhZGRpbmcgPSA0MDsgLy8gUGFkZGluZyBzdXBlcmlvciBlIGluZmVyaW9yXG5cbiAgICAvLyBDYWxjdWxhciBsw61uZWFzIGRlIHRleHRvIG5lY2VzYXJpYXNcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ25vcm1hbCcpO1xuICAgIGRvYy5zZXRGb250U2l6ZSgxMSk7XG5cbiAgICBsZXQgdG90YWxMaW5lcyA9IDA7XG5cbiAgICAvLyBDb250YXIgbMOtbmVhcyBkZWwgZGV0YWxsZVxuICAgIGlmIChkYXRhLmRldGFsbGUgJiYgZGF0YS5kZXRhbGxlLnRyaW0oKSkge1xuICAgICAgY29uc3QgZGV0YWxsZUxpbmVzID0gZG9jLnNwbGl0VGV4dFRvU2l6ZShkYXRhLmRldGFsbGUudHJpbSgpLCBtYXhXaWR0aCk7XG4gICAgICB0b3RhbExpbmVzICs9IGRldGFsbGVMaW5lcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLy8gQ29udGFyIGzDrW5lYXMgZGUgbGEgZGVzY3JpcGNpw7NuIChpbmNsdXllIGV0aXF1ZXRhIFwiRGVzY3JpcGNpw7NuOlwiKVxuICAgIGlmIChkYXRhLmRlc2NyaXB0aW9uICYmIGRhdGEuZGVzY3JpcHRpb24udHJpbSgpKSB7XG4gICAgICB0b3RhbExpbmVzICs9IDI7IC8vIFVuYSBsw61uZWEgcGFyYSBcIkRlc2NyaXBjacOzbjpcIiArIGVzcGFjaW9cbiAgICAgIGNvbnN0IGRlc2NMaW5lcyA9IGRvYy5zcGxpdFRleHRUb1NpemUoZGF0YS5kZXNjcmlwdGlvbi50cmltKCksIG1heFdpZHRoKTtcbiAgICAgIHRvdGFsTGluZXMgKz0gZGVzY0xpbmVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhciBhbHR1cmEgbmVjZXNhcmlhIGJhc2FkYSBlbiBlbCBjb250ZW5pZG9cbiAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gTWF0aC5tYXgodG90YWxMaW5lcyAqIGxpbmVIZWlnaHQsIDMwKTsgLy8gTcOtbmltbyAzMHB0IHBhcmEgY29udGVuaWRvXG4gICAgY29uc3QgYm94SGVpZ2h0ID0gTWF0aC5tYXgobWluQm94SGVpZ2h0LCBjb250ZW50SGVpZ2h0ICsgcGFkZGluZyk7XG5cbiAgICAvLyBWZXJpZmljYXIgc2kgbmVjZXNpdGFtb3MgdW5hIG51ZXZhIHDDoWdpbmFcbiAgICBjb25zdCBwYWdlSGVpZ2h0ID0gZG9jLmludGVybmFsLnBhZ2VTaXplLmdldEhlaWdodCgpO1xuICAgIGNvbnN0IHJlbWFpbmluZ1NwYWNlID0gcGFnZUhlaWdodCAtIGJveFkgLSAxMDA7IC8vIERlamFyIGVzcGFjaW8gcGFyYSBmb290ZXJcblxuICAgIGxldCBmaW5hbEJveFkgPSBib3hZO1xuICAgIGlmIChib3hIZWlnaHQgPiByZW1haW5pbmdTcGFjZSkge1xuICAgICAgLy8gQcOxYWRpciBudWV2YSBww6FnaW5hXG4gICAgICBkb2MuYWRkUGFnZSgpO1xuICAgICAgZmluYWxCb3hZID0gbWFyZ2luICsgNDA7IC8vIFBvc2ljacOzbiBlbiBudWV2YSBww6FnaW5hXG4gICAgfVxuXG4gICAgLy8gRGlidWphciBjb250ZW5lZG9yIGNvbiBhbHR1cmEgZGluw6FtaWNhXG4gICAgLy8gRm9uZG8gZ3JpcyBjbGFyb1xuICAgIGRvYy5zZXRGaWxsQ29sb3IoMjUwLCAyNTAsIDI1MCk7XG4gICAgZG9jLnJlY3QobWFyZ2luLCBmaW5hbEJveFksIGJveFdpZHRoLCBib3hIZWlnaHQsICdGJyk7XG5cbiAgICAvLyBCb3JkZVxuICAgIGRvYy5zZXREcmF3Q29sb3IoMjAwLCAyMDAsIDIwMCk7XG4gICAgZG9jLnJlY3QobWFyZ2luLCBmaW5hbEJveFksIGJveFdpZHRoLCBib3hIZWlnaHQsICdTJyk7XG5cbiAgICAvLyBBw7FhZGlyIGNvbnRlbmlkbyBkZSB0ZXh0b1xuICAgIGxldCB0ZXh0WSA9IGZpbmFsQm94WSArIDIwO1xuXG4gICAgLy8gQcOxYWRpciBkZXRhbGxlIHNpIGV4aXN0ZVxuICAgIGlmIChkYXRhLmRldGFsbGUgJiYgZGF0YS5kZXRhbGxlLnRyaW0oKSkge1xuICAgICAgY29uc3QgZGV0YWxsZUxpbmVzID0gZG9jLnNwbGl0VGV4dFRvU2l6ZShkYXRhLmRldGFsbGUudHJpbSgpLCBtYXhXaWR0aCk7XG4gICAgICBkb2MudGV4dChkZXRhbGxlTGluZXMsIHRleHRNYXJnaW4sIHRleHRZKTtcbiAgICAgIHRleHRZICs9IGRldGFsbGVMaW5lcy5sZW5ndGggKiBsaW5lSGVpZ2h0ICsgMTA7IC8vIEVzcGFjaW8gZXh0cmEgZGVzcHXDqXMgZGVsIGRldGFsbGVcbiAgICB9XG5cbiAgICAvLyBBw7FhZGlyIGRlc2NyaXBjacOzbiBzaSBleGlzdGVcbiAgICBpZiAoZGF0YS5kZXNjcmlwdGlvbiAmJiBkYXRhLmRlc2NyaXB0aW9uLnRyaW0oKSkge1xuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XG4gICAgICBkb2MudGV4dCgnRGVzY3JpcGNpw7NuOicsIHRleHRNYXJnaW4sIHRleHRZKTtcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnbm9ybWFsJyk7XG4gICAgICB0ZXh0WSArPSBsaW5lSGVpZ2h0O1xuXG4gICAgICBjb25zdCBkZXNjTGluZXMgPSBkb2Muc3BsaXRUZXh0VG9TaXplKGRhdGEuZGVzY3JpcHRpb24udHJpbSgpLCBtYXhXaWR0aCk7XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBuZWNlc2l0YW1vcyBtYW5lamFyIGNvbnRlbmlkbyBtdXkgbGFyZ29cbiAgICAgIGNvbnN0IHJlbWFpbmluZ0hlaWdodCA9IGZpbmFsQm94WSArIGJveEhlaWdodCAtIHRleHRZIC0gMjA7XG4gICAgICBjb25zdCBtYXhMaW5lc0luU3BhY2UgPSBNYXRoLmZsb29yKHJlbWFpbmluZ0hlaWdodCAvIGxpbmVIZWlnaHQpO1xuXG4gICAgICBpZiAoZGVzY0xpbmVzLmxlbmd0aCA+IG1heExpbmVzSW5TcGFjZSAmJiBtYXhMaW5lc0luU3BhY2UgPiAwKSB7XG4gICAgICAgIC8vIE1vc3RyYXIgbMOtbmVhcyBxdWUgY2FiZW4gZW4gZWwgZXNwYWNpbyBhY3R1YWxcbiAgICAgICAgY29uc3QgY3VycmVudExpbmVzID0gZGVzY0xpbmVzLnNsaWNlKDAsIG1heExpbmVzSW5TcGFjZSk7XG4gICAgICAgIGRvYy50ZXh0KGN1cnJlbnRMaW5lcywgdGV4dE1hcmdpbiwgdGV4dFkpO1xuXG4gICAgICAgIC8vIENvbnRpbnVhciBlbiBudWV2YSBww6FnaW5hIHNpIGhheSBtw6FzIGNvbnRlbmlkb1xuICAgICAgICBpZiAoZGVzY0xpbmVzLmxlbmd0aCA+IG1heExpbmVzSW5TcGFjZSkge1xuICAgICAgICAgIGRvYy5hZGRQYWdlKCk7XG4gICAgICAgICAgdGV4dFkgPSBtYXJnaW4gKyAyMDtcbiAgICAgICAgICBjb25zdCByZW1haW5pbmdMaW5lcyA9IGRlc2NMaW5lcy5zbGljZShtYXhMaW5lc0luU3BhY2UpO1xuICAgICAgICAgIGRvYy50ZXh0KHJlbWFpbmluZ0xpbmVzLCB0ZXh0TWFyZ2luLCB0ZXh0WSk7XG4gICAgICAgICAgcmV0dXJuIHRleHRZICsgKHJlbWFpbmluZ0xpbmVzLmxlbmd0aCAqIGxpbmVIZWlnaHQpICsgMjA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvYy50ZXh0KGRlc2NMaW5lcywgdGV4dE1hcmdpbiwgdGV4dFkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNpIG5vIGhheSBjb250ZW5pZG8sIG1vc3RyYXIgdW4gbWVuc2FqZVxuICAgIGlmICgoIWRhdGEuZGV0YWxsZSB8fCAhZGF0YS5kZXRhbGxlLnRyaW0oKSkgJiYgKCFkYXRhLmRlc2NyaXB0aW9uIHx8ICFkYXRhLmRlc2NyaXB0aW9uLnRyaW0oKSkpIHtcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnaXRhbGljJyk7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xuICAgICAgZG9jLnNldFRleHRDb2xvcigxNTAsIDE1MCwgMTUwKTtcbiAgICAgIGRvYy50ZXh0KCdObyBzZSBoYW4gZXNwZWNpZmljYWRvIGRldGFsbGVzIGRlbCBzZXJ2aWNpby4nLCB0ZXh0TWFyZ2luLCB0ZXh0WSk7XG4gICAgICBkb2Muc2V0VGV4dENvbG9yKDAsIDAsIDApO1xuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdub3JtYWwnKTtcbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmFsQm94WSArIGJveEhlaWdodDtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBhZGRBdXRob3JpemF0aW9uKGRvYzoganNQREYsIGRhdGE6IFRlbXBsYXRlUGRmRm8sIHk6IG51bWJlciwgbWFyZ2luOiBudW1iZXIsIHBhZ2VXaWR0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCB0YWJsZURhdGEgPSBbXG4gICAgICBbXG4gICAgICAgIHsgY29udGVudDogJ0FVVE9SSVpBREEgUE9SOicsIHN0eWxlczogeyBmb250U3R5bGU6ICdib2xkJywgZm9udFNpemU6IDEyLCBmaWxsQ29sb3I6IFsyNDAsIDI0MCwgMjQwXSB9IH0sXG4gICAgICAgIHsgY29udGVudDogZGF0YS5hcHByb3ZlZF9ieSwgc3R5bGVzOiB7IGZvbnRTaXplOiAxMiB9IH1cbiAgICAgIF1cbiAgICBdO1xuXG4gICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XG4gICAgICBzdGFydFk6IHksXG4gICAgICBib2R5OiB0YWJsZURhdGEsXG4gICAgICB0aGVtZTogJ2dyaWQnLFxuICAgICAgc3R5bGVzOiB7XG4gICAgICAgIGNlbGxQYWRkaW5nOiAxMixcbiAgICAgICAgbGluZUNvbG9yOiBbMjAwLCAyMDAsIDIwMF0sXG4gICAgICAgIGxpbmVXaWR0aDogMC41XG4gICAgICB9LFxuICAgICAgY29sdW1uU3R5bGVzOiB7XG4gICAgICAgIDA6IHsgY2VsbFdpZHRoOiAxNTAgfSxcbiAgICAgICAgMTogeyBjZWxsV2lkdGg6IDMyMCB9XG4gICAgICB9LFxuICAgICAgbWFyZ2luOiB7IGxlZnQ6IG1hcmdpbiwgcmlnaHQ6IG1hcmdpbiB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKGRvYyBhcyBhbnkpLmxhc3RBdXRvVGFibGUuZmluYWxZO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRGb290ZXIoZG9jOiBqc1BERiwgZGF0YTogVGVtcGxhdGVQZGZGbywgeTogbnVtYmVyLCBwYWdlV2lkdGg6IG51bWJlciwgY29sb3I6IG51bWJlcltdKTogdm9pZCB7XG4gICAgLy8gRm9uZG8gZGVsIHBpZSBkZSBww6FnaW5hXG4gICAgZG9jLnNldEZpbGxDb2xvcihjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdKTtcbiAgICBkb2MucmVjdCg0MCwgeSwgcGFnZVdpZHRoIC0gODAsIDYwLCAnRicpO1xuXG4gICAgLy8gVGV4dG8gZW4gYmxhbmNvXG4gICAgZG9jLnNldFRleHRDb2xvcigyNTUsIDI1NSwgMjU1KTtcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoMTIpO1xuXG4gICAgY29uc3QgaW5zdHJ1Y3Rpb24gPSAnRmF2b3IgYWRqdW50YXIgbGEgb3JkZW4gZGUgdmVudGEgbyBmYWN0dXJhJztcbiAgICBjb25zdCBpbnN0V2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKGluc3RydWN0aW9uKTtcbiAgICBkb2MudGV4dChpbnN0cnVjdGlvbiwgKHBhZ2VXaWR0aCAtIGluc3RXaWR0aCkgLyAyLCB5ICsgMjUpO1xuXG4gICAgZG9jLnNldEZvbnRTaXplKDEwKTtcbiAgICBjb25zdCBlbWFpbFdpZHRoID0gZG9jLmdldFRleHRXaWR0aChkYXRhLm1haWwpO1xuICAgIGRvYy50ZXh0KGRhdGEubWFpbCwgKHBhZ2VXaWR0aCAtIGVtYWlsV2lkdGgpIC8gMiwgeSArIDQ1KTtcblxuICAgIC8vIFJlc2V0ZWFyIGNvbG9yXG4gICAgZG9jLnNldFRleHRDb2xvcigwLCAwLCAwKTtcbiAgfVxuXG59XG4iXX0=
@@ -1,75 +0,0 @@
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
- transformDate(date) {
41
- if (!date) {
42
- return '';
43
- }
44
- const dateObj = new Date(date);
45
- const day = this.validateTwoDigitFormat(dateObj.getDate().toString());
46
- const month = this.validateTwoDigitFormat((dateObj.getMonth() + 1).toString());
47
- const year = dateObj.getFullYear();
48
- return `${day}/${month}/${year}`;
49
- }
50
- formatNumber(value) {
51
- if (value === null || value === undefined) {
52
- return '$ 0';
53
- }
54
- return new Intl.NumberFormat('es-CO', {
55
- style: 'currency',
56
- currency: 'COP',
57
- minimumFractionDigits: 0,
58
- maximumFractionDigits: 0,
59
- }).format(value);
60
- }
61
- validateTwoDigitFormat(number) {
62
- if (number.length == 1)
63
- number = "0" + number;
64
- return number;
65
- }
66
- }
67
- FunctionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FunctionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
68
- FunctionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FunctionsService, providedIn: 'root' });
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FunctionsService, decorators: [{
70
- type: Injectable,
71
- args: [{
72
- providedIn: 'root'
73
- }]
74
- }], ctorParameters: function () { return []; } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc2VydmljZXMvZnVuY3Rpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixnQkFBZ0IsQ0FBQztJQUdqQixRQUFRLENBQUUsSUFBSTtRQUNiLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUE7UUFDNUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxPQUFPLENBQUUsSUFBSTtRQUNYLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN4QyxJQUFJLEdBQUcsR0FBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUE7UUFDakMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDekMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUUsSUFBSTtRQUNWLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUNoRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENB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L2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGdW5jdGlvbnNTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG5cbiAgZGF0ZUZvcm0gKGRhdGUpIHtcbiAgIGxldCBkYXRhID0gbmV3IERhdGUoZGF0ZSlcbiAgIGxldCBjaGFuZ2UgPSBgJHtkYXRhLmdldEZ1bGxZZWFyKCl9LyR7ZGF0YS5nZXRNb250aCgpICsgMX0vJHtkYXRhLmdldERhdGUoKX1gXG4gICAgcmV0dXJuIChjaGFuZ2UpXG4gIH1cblxuICBkYXRlSXNvIChkYXRlKSB7XG4gICAgbGV0IGRhdGEgPSBkYXRlLnRvU3RyaW5nKCk7XG4gICAgbGV0IGN1dCA9IGRhdGEucmVwbGFjZSgvKC4qKVxcVC4qLywgJyQxJylcbiAgICBsZXQgYWRkICA9IGAke2N1dH1UMDU6MDA6MDAuMDAwWmBcbiAgICBsZXQgZmVjaGEgPSBhZGQucmVwbGFjZSgvKC4qKVxcVC4qLywgJyQxJylcbiAgICByZXR1cm4gKGZlY2hhKVxuICB9XG5cbiAgZGF0ZURCIChkYXRlKSB7XG4gICAgbGV0IGRheSA9IHRoaXMudmFsaWRhdGVUd29EaWdpdEZvcm1hdChkYXRlLmdldERhdGUoKS50b1N0cmluZygpKVxuICAgIGxldCBtb250aCA9IHRoaXMudmFsaWRhdGVUd29EaWdpdEZvcm1hdCgoZGF0ZS5nZXRNb250aCgpKzEpLnRvU3RyaW5nKCkpXG4gICAgcmV0dXJuIGAke2RhdGUuZ2V0RnVsbFllYXIoKX0tJHttb250aH0tJHtkYXl9YFxuICB9XG5cbiAgZGF0ZVdpdGhUaW1lKGRhdGU6c3RyaW5nKTpzdHJpbmd7XG4gICAgaWYoIWRhdGUpIHJldHVybiBcIlwiXG4gICAgdmFyIHZhbHVlID0gZGF0ZS5zcGxpdChcIlRcIilcbiAgICByZXR1cm4gIHZhbHVlWzBdICsgXCIgXCIgKyB2YWx1ZVsxXS5zcGxpdChcIi5cIilbMF1cbiAgfVxuXG4gIGFyZU9iamVjdHNFcXVhbChvYmoxOiBhbnksIG9iajI6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmoxKSA9PT0gSlNPTi5zdHJpbmdpZnkob2JqMik7XG4gIH1cblxuICByZW1vdmVEdXBsaWNhdGVPYmplY3RzKG9yaWdpbmFsQXJyYXk6IGFueVtdKTogYW55W10ge1xuICAgIGNvbnN0IHVuaXF1ZUFycmF5OiBhbnlbXSA9IFtdO1xuICAgIG9yaWdpbmFsQXJyYXkuZm9yRWFjaCgob2JqKSA9PiB7XG4gICAgICBpZiAoIXVuaXF1ZUFycmF5LnNvbWUoKHVuaXF1ZU9iaikgPT4gdGhpcy5hcmVPYmplY3RzRXF1YWwob2JqLCB1bmlxdWVPYmopKSkge1xuICAgICAgICB1bmlxdWVBcnJheS5wdXNoKG9iaik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdW5pcXVlQXJyYXk7XG4gIH1cblxuICB0cmFuc2Zvcm1EYXRlKGRhdGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlKTtcbiAgICBjb25zdCBkYXkgPSB0aGlzLnZhbGlkYXRlVHdvRGlnaXRGb3JtYXQoZGF0ZU9iai5nZXREYXRlKCkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLnZhbGlkYXRlVHdvRGlnaXRGb3JtYXQoKGRhdGVPYmouZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IHllYXIgPSBkYXRlT2JqLmdldEZ1bGxZZWFyKCk7XG4gICAgcmV0dXJuIGAke2RheX0vJHttb250aH0vJHt5ZWFyfWA7XG4gIH1cblxuICBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAnJCAwJztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdCgnZXMtQ08nLCB7XG4gICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgIGN1cnJlbmN5OiAnQ09QJyxcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCxcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMCxcbiAgICB9KS5mb3JtYXQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVR3b0RpZ2l0Rm9ybWF0KG51bWJlcjogc3RyaW5nKTpzdHJpbmd7XG4gICAgaWYobnVtYmVyLmxlbmd0aCA9PSAxKSBudW1iZXIgPSBcIjBcIiArIG51bWJlclxuICAgIHJldHVybiBudW1iZXJcbiAgfVxuXG59XG4iXX0=
@@ -1,89 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { TemplateFuelComponent } from '../brainloper-ui/components/report/template-fuel/template-fuel.component';
3
- import { TemplateOtComponent } from '../brainloper-ui/components/report/template-ot/template-ot.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/dialog";
6
- import * as i2 from "./work-order-pdf.service";
7
- import * as i3 from "./fuel-order-pdf.service";
8
- import * as i4 from "./purchase-order-pdf.service";
9
- export class GeneratePdfService {
10
- constructor(dialog, workOrderPdfService, FuelOrderPdfService, purchaseOrderPdfService) {
11
- this.dialog = dialog;
12
- this.workOrderPdfService = workOrderPdfService;
13
- this.FuelOrderPdfService = FuelOrderPdfService;
14
- this.purchaseOrderPdfService = purchaseOrderPdfService;
15
- }
16
- getPdfOt(data, autoGenerateData) {
17
- let autoGenerate = false;
18
- if (autoGenerateData) {
19
- autoGenerate = autoGenerateData;
20
- }
21
- return new Promise((resolve, rejects) => {
22
- let screen = "850px";
23
- // if ( window.screen.width<1000) {
24
- // screen = "100vw"
25
- // }
26
- this.dialog.open(TemplateOtComponent, {
27
- data: {
28
- data,
29
- autoGenerate: autoGenerate
30
- },
31
- width: screen
32
- }).afterClosed().subscribe((res) => {
33
- return resolve(true);
34
- });
35
- });
36
- }
37
- getPdfFo(data, autoGenerateData) {
38
- let autoGenerate = false;
39
- if (autoGenerateData) {
40
- autoGenerate = autoGenerateData;
41
- }
42
- return new Promise((resolve, rejects) => {
43
- let screen = "850px";
44
- this.dialog.open(TemplateFuelComponent, {
45
- data: {
46
- data,
47
- autoGenerate: autoGenerate
48
- },
49
- width: screen
50
- }).afterClosed().subscribe((res) => {
51
- return resolve(true);
52
- });
53
- });
54
- }
55
- getPdfFoV2(data) {
56
- return new Promise((resolve, reject) => {
57
- this.FuelOrderPdfService.generateFuelOrderProfesionalPDF(data)
58
- .then(() => resolve(true))
59
- .catch(error => reject(error));
60
- });
61
- }
62
- getPdfOtV2(data) {
63
- return new Promise((resolve, reject) => {
64
- this.workOrderPdfService.generateWorkOrderPDF(data)
65
- .then(() => resolve(true))
66
- .catch(error => reject(error));
67
- });
68
- }
69
- generatePurchaseOrderPDF(order) {
70
- return new Promise((resolve, reject) => {
71
- this.purchaseOrderPdfService.generatePurchaseOrderPDF(order, { download: false })
72
- .then((doc) => {
73
- const blobUrl = doc.output('bloburl');
74
- window.open(blobUrl, '_blank');
75
- resolve(true);
76
- })
77
- .catch(error => reject(error));
78
- });
79
- }
80
- }
81
- GeneratePdfService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GeneratePdfService, deps: [{ token: i1.MatDialog }, { token: i2.WorkOrderPdfService }, { token: i3.FuelOrderPdfService }, { token: i4.PurchaseOrderPdfService }], target: i0.ɵɵFactoryTarget.Injectable });
82
- GeneratePdfService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GeneratePdfService, providedIn: 'root' });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GeneratePdfService, decorators: [{
84
- type: Injectable,
85
- args: [{
86
- providedIn: 'root'
87
- }]
88
- }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.WorkOrderPdfService }, { type: i3.FuelOrderPdfService }, { type: i4.PurchaseOrderPdfService }]; } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtcGRmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc2VydmljZXMvZ2VuZXJhdGUtcGRmLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUtqSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQzs7Ozs7O0FBTTNHLE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsWUFDVSxNQUFpQixFQUNqQixtQkFBd0MsRUFDeEMsbUJBQXdDLEVBQ3hDLHVCQUFpRDtRQUhqRCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQTBCO0lBQ3ZELENBQUM7SUFFTCxRQUFRLENBQUMsSUFBbUIsRUFBRSxnQkFBMEI7UUFDdEQsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFBO1FBQ3hCLElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsWUFBWSxHQUFHLGdCQUFnQixDQUFBO1NBQ2hDO1FBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUE7WUFDcEIsbUNBQW1DO1lBQ25DLHFCQUFxQjtZQUNyQixJQUFJO1lBRUosSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ3BDLElBQUksRUFBRTtvQkFDSixJQUFJO29CQUNKLFlBQVksRUFBRSxZQUFZO2lCQUMzQjtnQkFDRCxLQUFLLEVBQUUsTUFBTTthQUNkLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDakMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdEIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBbUIsRUFBRSxnQkFBMEI7UUFDdEQsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFBO1FBQ3hCLElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsWUFBWSxHQUFHLGdCQUFnQixDQUFBO1NBQ2hDO1FBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUE7WUFFcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQ3RDLElBQUksRUFBRTtvQkFDSixJQUFJO29CQUNKLFlBQVksRUFBRSxZQUFZO2lCQUMzQjtnQkFDRCxLQUFLLEVBQUUsTUFBTTthQUNkLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDakMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdEIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBbUI7UUFDNUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDO2lCQUMzRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN6QixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBbUI7UUFDNUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO2lCQUNoRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN6QixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxLQUErQjtRQUNsRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQzlFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNSLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDZixDQUFDLENBQ0E7aUJBQ0EsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztnSEFuRlUsa0JBQWtCO29IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFRlbXBsYXRlRnVlbENvbXBvbmVudCB9IGZyb20gJy4uL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9yZXBvcnQvdGVtcGxhdGUtZnVlbC90ZW1wbGF0ZS1mdWVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBkZk90IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQvdGVtcGxhdGUtcGRmLW90JztcbmltcG9ydCB7IFRlbXBsYXRlUGRmRm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC90ZW1wbGF0ZS1wZmQtZm8nO1xuaW1wb3J0IHsgV29ya09yZGVyUGRmU2VydmljZSB9IGZyb20gJy4vd29yay1vcmRlci1wZGYuc2VydmljZSc7XG5pbXBvcnQgeyBGdWVsT3JkZXJQZGZTZXJ2aWNlIH0gZnJvbSAnLi9mdWVsLW9yZGVyLXBkZi5zZXJ2aWNlJztcbmltcG9ydCB7IFRlbXBsYXRlT3RDb21wb25lbnQgfSBmcm9tICcuLi9icmFpbmxvcGVyLXVpL2NvbXBvbmVudHMvcmVwb3J0L3RlbXBsYXRlLW90L3RlbXBsYXRlLW90LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQdXJjaGFzZU9yZGVyUGRmU2VydmljZSB9IGZyb20gJy4vcHVyY2hhc2Utb3JkZXItcGRmLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVtcGxhdGVQZGZQdXJjaGFzZU9yZGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQvdGVtcGxhdGUtcGRmLXB1cmNoYXNlLW9yZGVyJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyYXRlUGRmU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHdvcmtPcmRlclBkZlNlcnZpY2U6IFdvcmtPcmRlclBkZlNlcnZpY2UsXG4gICAgcHJpdmF0ZSBGdWVsT3JkZXJQZGZTZXJ2aWNlOiBGdWVsT3JkZXJQZGZTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHVyY2hhc2VPcmRlclBkZlNlcnZpY2UgOiBQdXJjaGFzZU9yZGVyUGRmU2VydmljZVxuICApIHsgfVxuXG4gIGdldFBkZk90KGRhdGE6IFRlbXBsYXRlUGRmT3QsIGF1dG9HZW5lcmF0ZURhdGE/OiBib29sZWFuKSB7XG4gICAgbGV0IGF1dG9HZW5lcmF0ZSA9IGZhbHNlXG4gICAgaWYgKGF1dG9HZW5lcmF0ZURhdGEpIHtcbiAgICAgIGF1dG9HZW5lcmF0ZSA9IGF1dG9HZW5lcmF0ZURhdGFcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIGxldCBzY3JlZW4gPSBcIjg1MHB4XCJcbiAgICAgIC8vIGlmICggd2luZG93LnNjcmVlbi53aWR0aDwxMDAwKSB7XG4gICAgICAvLyAgIHNjcmVlbiA9IFwiMTAwdndcIlxuICAgICAgLy8gfVxuXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKFRlbXBsYXRlT3RDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgYXV0b0dlbmVyYXRlOiBhdXRvR2VuZXJhdGVcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHNjcmVlblxuICAgICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh0cnVlKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgZ2V0UGRmRm8oZGF0YTogVGVtcGxhdGVQZGZGbywgYXV0b0dlbmVyYXRlRGF0YT86IGJvb2xlYW4pIHtcbiAgICBsZXQgYXV0b0dlbmVyYXRlID0gZmFsc2VcbiAgICBpZiAoYXV0b0dlbmVyYXRlRGF0YSkge1xuICAgICAgYXV0b0dlbmVyYXRlID0gYXV0b0dlbmVyYXRlRGF0YVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgbGV0IHNjcmVlbiA9IFwiODUwcHhcIlxuXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKFRlbXBsYXRlRnVlbENvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBhdXRvR2VuZXJhdGU6IGF1dG9HZW5lcmF0ZVxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogc2NyZWVuXG4gICAgICB9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHRydWUpXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBnZXRQZGZGb1YyKGRhdGE6IFRlbXBsYXRlUGRmRm8pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0aGlzLkZ1ZWxPcmRlclBkZlNlcnZpY2UuZ2VuZXJhdGVGdWVsT3JkZXJQcm9mZXNpb25hbFBERihkYXRhKVxuICAgICAgICAgIC50aGVuKCgpID0+IHJlc29sdmUodHJ1ZSkpXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UGRmT3RWMihkYXRhOiBUZW1wbGF0ZVBkZk90KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy53b3JrT3JkZXJQZGZTZXJ2aWNlLmdlbmVyYXRlV29ya09yZGVyUERGKGRhdGEpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gcmVzb2x2ZSh0cnVlKSlcbiAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIGdlbmVyYXRlUHVyY2hhc2VPcmRlclBERihvcmRlcjogVGVtcGxhdGVQZGZQdXJjaGFzZU9yZGVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMucHVyY2hhc2VPcmRlclBkZlNlcnZpY2UuZ2VuZXJhdGVQdXJjaGFzZU9yZGVyUERGKG9yZGVyLCB7IGRvd25sb2FkOiBmYWxzZSB9KVxuICAgICAgICAgIC50aGVuKChkb2MpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBibG9iVXJsID0gZG9jLm91dHB1dCgnYmxvYnVybCcpO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGJsb2JVcmwsICdfYmxhbmsnKTtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcblxuICAgIH0pO1xuICB9XG5cblxufVxuIl19