brainloper-ui 18.0.0 → 19.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 (54) hide show
  1. package/fesm2022/brainloper-ui.mjs +116 -107
  2. package/fesm2022/brainloper-ui.mjs.map +1 -1
  3. package/package.json +13 -15
  4. package/esm2022/brainloper-ui.mjs +0 -5
  5. package/esm2022/public_api.mjs +0 -58
  6. package/esm2022/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +0 -303
  7. package/esm2022/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +0 -30
  8. package/esm2022/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +0 -23
  9. package/esm2022/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +0 -83
  10. package/esm2022/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +0 -42
  11. package/esm2022/src/app/modules/brainloper-ui/components/combos/combos.component.mjs +0 -183
  12. package/esm2022/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +0 -747
  13. package/esm2022/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +0 -120
  14. package/esm2022/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +0 -205
  15. package/esm2022/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.mjs +0 -2
  16. package/esm2022/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.mjs +0 -2
  17. package/esm2022/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.mjs +0 -2
  18. package/esm2022/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +0 -227
  19. package/esm2022/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +0 -89
  20. package/esm2022/src/app/modules/brainloper-ui/components/report/template-ot/template-ot.component.mjs +0 -86
  21. package/esm2022/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs +0 -117
  22. package/esm2022/src/app/modules/directives/carousel-item.directive.mjs +0 -20
  23. package/esm2022/src/app/modules/interfaces/buttons/button-icon.mjs +0 -2
  24. package/esm2022/src/app/modules/interfaces/buttons/button-lavel-edit.mjs +0 -2
  25. package/esm2022/src/app/modules/interfaces/combos/combos-configuration.mjs +0 -2
  26. package/esm2022/src/app/modules/interfaces/data-table/params.mjs +0 -2
  27. package/esm2022/src/app/modules/interfaces/data-table/rules.mjs +0 -2
  28. package/esm2022/src/app/modules/interfaces/data-table/table-columns.mjs +0 -2
  29. package/esm2022/src/app/modules/interfaces/data-table/table-configuration.mjs +0 -2
  30. package/esm2022/src/app/modules/interfaces/enum/enumActions.mjs +0 -8
  31. package/esm2022/src/app/modules/interfaces/enum/enumRules.mjs +0 -8
  32. package/esm2022/src/app/modules/interfaces/enum/httpResponseType.mjs +0 -8
  33. package/esm2022/src/app/modules/interfaces/file-forms-service/file-forms-params.mjs +0 -2
  34. package/esm2022/src/app/modules/interfaces/file-forms-service/file-input-params.mjs +0 -2
  35. package/esm2022/src/app/modules/interfaces/filters/header-filters.mjs +0 -2
  36. package/esm2022/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +0 -6
  37. package/esm2022/src/app/modules/interfaces/report/template-pdf-base.mjs +0 -2
  38. package/esm2022/src/app/modules/interfaces/report/template-pdf-ot.mjs +0 -2
  39. package/esm2022/src/app/modules/interfaces/report/template-pdf-purchase-order.mjs +0 -2
  40. package/esm2022/src/app/modules/interfaces/report/template-pfd-fo.mjs +0 -2
  41. package/esm2022/src/app/modules/services/crypto.service.mjs +0 -38
  42. package/esm2022/src/app/modules/services/export-data.service.mjs +0 -169
  43. package/esm2022/src/app/modules/services/file-forms.service.mjs +0 -24
  44. package/esm2022/src/app/modules/services/fuel-order-pdf.service.mjs +0 -346
  45. package/esm2022/src/app/modules/services/functions.service.mjs +0 -75
  46. package/esm2022/src/app/modules/services/generate-pdf.service.mjs +0 -93
  47. package/esm2022/src/app/modules/services/http.service.mjs +0 -142
  48. package/esm2022/src/app/modules/services/loading/loading.component.mjs +0 -30
  49. package/esm2022/src/app/modules/services/local-storage.service.mjs +0 -115
  50. package/esm2022/src/app/modules/services/message.service.mjs +0 -202
  51. package/esm2022/src/app/modules/services/purchase-order-pdf.service.mjs +0 -179
  52. package/esm2022/src/app/modules/services/screen-size-util.mjs +0 -6
  53. package/esm2022/src/app/modules/services/session.service.mjs +0 -43
  54. package/esm2022/src/app/modules/services/work-order-pdf.service.mjs +0 -363
@@ -1,179 +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
- import * as i1 from "./functions.service";
6
- export class PurchaseOrderPdfService {
7
- functions;
8
- constructor(functions) {
9
- this.functions = functions;
10
- }
11
- generatePurchaseOrderPDF(order, options) {
12
- return new Promise((resolve, reject) => {
13
- try {
14
- const opts = {
15
- format: 'letter',
16
- download: true,
17
- filename: `orden_compra_${order.consecutive}.pdf`,
18
- ...options
19
- };
20
- const doc = new jsPDF('p', 'pt', opts.format);
21
- const pageWidth = doc.internal.pageSize.getWidth();
22
- const margin = 40;
23
- let currentY = margin;
24
- // === ENCABEZADO ===
25
- currentY = this.addHeader(doc, order, currentY, pageWidth, margin);
26
- currentY += 18;
27
- // === DETALLES DE LA ORDEN ===
28
- currentY = this.addOrderDetails(doc, order, currentY, margin, pageWidth);
29
- currentY += 20;
30
- // === ITEMS DE LA ORDEN ===
31
- currentY = this.addOrderItems(doc, order, currentY, margin, pageWidth);
32
- currentY += 20;
33
- // === COMENTARIOS ===
34
- if (order.comment) {
35
- currentY = this.addComments(doc, order, currentY, margin, pageWidth);
36
- currentY += 20;
37
- }
38
- // === PIE DE PÁGINA ===
39
- this.addFooter(doc, pageWidth, doc.internal.pageSize.getHeight());
40
- if (opts.download) {
41
- doc.save(opts.filename);
42
- }
43
- resolve(doc);
44
- }
45
- catch (error) {
46
- reject(error);
47
- }
48
- });
49
- }
50
- addHeader(doc, order, y, pageWidth, margin) {
51
- // Título centrado y número derecha
52
- doc.setFont('helvetica', 'bold');
53
- doc.setFontSize(14);
54
- doc.setTextColor(0, 0, 0);
55
- doc.text('ORDEN DE COMPRA', pageWidth / 2, y + 8, { align: 'center' });
56
- doc.setFontSize(10);
57
- doc.text(`N° ${order.consecutive}`, pageWidth - margin, y + 8, { align: 'right' });
58
- y += 26;
59
- // Línea bajo título
60
- doc.setDrawColor(180);
61
- doc.setLineWidth(0.5);
62
- doc.line(margin, y, pageWidth - margin, y);
63
- y += 8;
64
- // Logo a la izquierda
65
- const logoW = 80;
66
- const logoH = 60;
67
- if (order.image) {
68
- try {
69
- doc.addImage(order.image, 'PNG', margin, y, logoW, logoH);
70
- }
71
- catch {
72
- // Logo inválido, se omite
73
- }
74
- }
75
- // Datos empresa a la derecha (alineados a la derecha)
76
- const rightX = pageWidth - margin;
77
- let infoY = y + 2;
78
- doc.setFont('helvetica', 'bold');
79
- doc.setFontSize(10);
80
- if (order.name) {
81
- doc.text(order.name, rightX, infoY, { align: 'right' });
82
- infoY += 14;
83
- }
84
- doc.setFont('helvetica', 'normal');
85
- doc.setFontSize(8);
86
- const add = (value) => {
87
- if (!value)
88
- return;
89
- doc.text(value, rightX, infoY, { align: 'right' });
90
- infoY += 12;
91
- };
92
- add(order.nit ? `Nit: ${order.nit}` : '');
93
- add(order.address);
94
- add(order.telephone ? `Tel: ${order.telephone}` : '');
95
- add(order.mail ? `Email: ${order.mail}` : '');
96
- // Altura total ocupada
97
- const blockBottom = Math.max(y + logoH, infoY);
98
- const separatorY = blockBottom + 6;
99
- // Separador
100
- doc.setDrawColor(180);
101
- doc.line(margin, separatorY, pageWidth - margin, separatorY);
102
- return separatorY + 10;
103
- }
104
- addOrderDetails(doc, order, y, margin, pageWidth) {
105
- doc.setFontSize(10);
106
- const rows = [
107
- [
108
- { content: `Proveedor: ${order.providerName}`, styles: { fontStyle: 'bold' } },
109
- { content: `Fecha de creación: ${this.functions.transformDate(order.created)}`, styles: { halign: 'right' } }
110
- ],
111
- [
112
- { content: `Almacén: ${order.warehouse}` },
113
- { content: `Solicita: ${order.requestsName}`, styles: { halign: 'right' } }
114
- ]
115
- ];
116
- if (order.authorizeName && order.authorizeName !== order.requestsName) {
117
- rows.push([
118
- { content: '' },
119
- { content: `Autoriza: ${order.authorizeName}`, styles: { halign: 'right' } }
120
- ]);
121
- }
122
- doc.autoTable({
123
- startY: y,
124
- body: rows,
125
- theme: 'plain',
126
- styles: { fontSize: 10, cellPadding: 2 }
127
- });
128
- return doc.lastAutoTable.finalY;
129
- }
130
- addOrderItems(doc, order, y, margin, pageWidth) {
131
- const head = [['Código', 'Nombre', 'U.M.', 'Cant.', 'Descripción']];
132
- const body = order.items.map(item => [
133
- item.code,
134
- item.itemName,
135
- item.unitMeasurement,
136
- item.amount,
137
- item.description || ''
138
- ]);
139
- doc.autoTable({
140
- startY: y,
141
- head: head,
142
- body: body,
143
- theme: 'grid',
144
- headStyles: { fillColor: [220, 220, 220], textColor: 0, fontStyle: 'bold' },
145
- columnStyles: {
146
- 3: { halign: 'right' },
147
- 4: { halign: 'right' },
148
- 5: { halign: 'right' }
149
- }
150
- });
151
- let finalY = doc.lastAutoTable.finalY;
152
- return finalY;
153
- }
154
- addComments(doc, order, y, margin, pageWidth) {
155
- doc.setFontSize(10);
156
- doc.setFont('helvetica', 'bold');
157
- doc.text('Comentarios:', margin, y);
158
- y += 15;
159
- doc.setFont('helvetica', 'normal');
160
- const splitText = doc.splitTextToSize(order.comment, pageWidth - margin * 2);
161
- doc.text(splitText, margin, y);
162
- return y + splitText.length * 12;
163
- }
164
- addFooter(doc, pageWidth, pageHeight) {
165
- const footerText = 'Documento generado por Brainloper';
166
- doc.setFontSize(8);
167
- const footerWidth = doc.getStringUnitWidth(footerText) * 8 / doc.internal.scaleFactor;
168
- doc.text(footerText, (pageWidth - footerWidth) / 2, pageHeight - 20);
169
- }
170
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderPdfService, deps: [{ token: i1.FunctionsService }], target: i0.ɵɵFactoryTarget.Injectable });
171
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderPdfService, providedIn: 'root' });
172
- }
173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderPdfService, decorators: [{
174
- type: Injectable,
175
- args: [{
176
- providedIn: 'root'
177
- }]
178
- }], ctorParameters: () => [{ type: i1.FunctionsService }] });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2Utb3JkZXItcGRmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc2VydmljZXMvcHVyY2hhc2Utb3JkZXItcGRmLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzlCLE9BQU8saUJBQWlCLENBQUM7OztBQU16QixNQUFNLE9BQU8sdUJBQXVCO0lBR3hCO0lBRFYsWUFDVSxTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUNqQyxDQUFDO0lBRUwsd0JBQXdCLENBQUMsS0FBK0IsRUFBRSxPQUl6RDtRQUNDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxHQUFHO29CQUNYLE1BQU0sRUFBRSxRQUFRO29CQUNoQixRQUFRLEVBQUUsSUFBSTtvQkFDZCxRQUFRLEVBQUUsZ0JBQWdCLEtBQUssQ0FBQyxXQUFXLE1BQU07b0JBQ2pELEdBQUcsT0FBTztpQkFDWCxDQUFDO2dCQUVGLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUM7Z0JBRXRCLHFCQUFxQjtnQkFDckIsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUs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LENBQUMsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyxTQUFTLENBQUMsR0FBVSxFQUFFLFNBQWlCLEVBQUUsVUFBa0I7UUFDakUsTUFBTSxVQUFVLEdBQUcsbUNBQW1DLENBQUM7UUFDdkQsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3RGLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQzt3R0EvTFUsdUJBQXVCOzRHQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGpzUERGIH0gZnJvbSAnanNwZGYnO1xuaW1wb3J0ICdqc3BkZi1hdXRvdGFibGUnO1xuaW1wb3J0IHsgRnVuY3Rpb25zU2VydmljZSB9IGZyb20gJy4vZnVuY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVtcGxhdGVQZGZQdXJjaGFzZU9yZGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQvdGVtcGxhdGUtcGRmLXB1cmNoYXNlLW9yZGVyJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFB1cmNoYXNlT3JkZXJQZGZTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZ1bmN0aW9uczogRnVuY3Rpb25zU2VydmljZSxcbiAgKSB7IH1cblxuICBnZW5lcmF0ZVB1cmNoYXNlT3JkZXJQREYob3JkZXI6IFRlbXBsYXRlUGRmUHVyY2hhc2VPcmRlciwgb3B0aW9ucz86IHtcbiAgICBmb3JtYXQ/OiAnbGV0dGVyJyB8ICdhNCc7XG4gICAgZG93bmxvYWQ/OiBib29sZWFuO1xuICAgIGZpbGVuYW1lPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxqc1BERj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBvcHRzID0ge1xuICAgICAgICAgIGZvcm1hdDogJ2xldHRlcicsXG4gICAgICAgICAgZG93bmxvYWQ6IHRydWUsXG4gICAgICAgICAgZmlsZW5hbWU6IGBvcmRlbl9jb21wcmFfJHtvcmRlci5jb25zZWN1dGl2ZX0ucGRmYCxcbiAgICAgICAgICAuLi5vcHRpb25zXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZG9jID0gbmV3IGpzUERGKCdwJywgJ3B0Jywgb3B0cy5mb3JtYXQpO1xuICAgICAgICBjb25zdCBwYWdlV2lkdGggPSBkb2MuaW50ZXJuYWwucGFnZVNpemUuZ2V0V2lkdGgoKTtcbiAgICAgICAgY29uc3QgbWFyZ2luID0gNDA7XG4gICAgICAgIGxldCBjdXJyZW50WSA9IG1hcmdpbjtcblxuICAgICAgICAvLyA9PT0gRU5DQUJFWkFETyA9PT1cbiAgICAgICAgY3VycmVudFkgPSB0aGlzLmFkZEhlYWRlcihkb2MsIG9yZGVyLCBjdXJyZW50WSwgcGFnZVdpZHRoLCBtYXJnaW4pO1xuICAgICAgICBjdXJyZW50WSArPSAxODtcblxuICAgICAgICAvLyA9PT0gREVUQUxMRVMgREUgTEEgT1JERU4gPT09XG4gICAgICAgIGN1cnJlbnRZID0gdGhpcy5hZGRPcmRlckRldGFpbHMoZG9jLCBvcmRlciwgY3VycmVudFksIG1hcmdpbiwgcGFnZVdpZHRoKTtcbiAgICAgICAgY3VycmVudFkgKz0gMjA7XG5cbiAgICAgICAgLy8gPT09IElURU1TIERFIExBIE9SREVOID09PVxuICAgICAgICBjdXJyZW50WSA9IHRoaXMuYWRkT3JkZXJJdGVtcyhkb2MsIG9yZGVyLCBjdXJyZW50WSwgbWFyZ2luLCBwYWdlV2lkdGgpO1xuICAgICAgICBjdXJyZW50WSArPSAyMDtcblxuICAgICAgICAvLyA9PT0gQ09NRU5UQVJJT1MgPT09XG4gICAgICAgIGlmIChvcmRlci5jb21tZW50KSB7XG4gICAgICAgICAgY3VycmVudFkgPSB0aGlzLmFkZENvbW1lbnRzKGRvYywgb3JkZXIsIGN1cnJlbnRZLCBtYXJnaW4sIHBhZ2VXaWR0aCk7XG4gICAgICAgICAgY3VycmVudFkgKz0gMjA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA9PT0gUElFIERFIFDDgUdJTkEgPT09XG4gICAgICAgIHRoaXMuYWRkRm9vdGVyKGRvYywgcGFnZVdpZHRoLCBkb2MuaW50ZXJuYWwucGFnZVNpemUuZ2V0SGVpZ2h0KCkpO1xuXG4gICAgICAgIGlmIChvcHRzLmRvd25sb2FkKSB7XG4gICAgICAgICAgZG9jLnNhdmUob3B0cy5maWxlbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZShkb2MpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gICAgcHJpdmF0ZSBhZGRIZWFkZXIoZG9jOiBqc1BERiwgb3JkZXI6IFRlbXBsYXRlUGRmUHVyY2hhc2VPcmRlciwgeTogbnVtYmVyLCBwYWdlV2lkdGg6IG51bWJlciwgbWFyZ2luOiBudW1iZXIpOiBudW1iZXIge1xuICAgIC8vIFTDrXR1bG8gY2VudHJhZG8geSBuw7ptZXJvIGRlcmVjaGFcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoMTQpO1xuICAgIGRvYy5zZXRUZXh0Q29sb3IoMCwgMCwgMCk7XG4gICAgZG9jLnRleHQoJ09SREVOIERFIENPTVBSQScsIHBhZ2VXaWR0aCAvIDIsIHkgKyA4LCB7IGFsaWduOiAnY2VudGVyJyB9KTtcbiAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xuICAgIGRvYy50ZXh0KGBOwrAgJHtvcmRlci5jb25zZWN1dGl2ZX1gLCBwYWdlV2lkdGggLSBtYXJnaW4sIHkgKyA4LCB7IGFsaWduOiAncmlnaHQnIH0pO1xuXG4gICAgeSArPSAyNjtcblxuICAgIC8vIEzDrW5lYSBiYWpvIHTDrXR1bG9cbiAgICBkb2Muc2V0RHJhd0NvbG9yKDE4MCk7XG4gICAgZG9jLnNldExpbmVXaWR0aCgwLjUpO1xuICAgIGRvYy5saW5lKG1hcmdpbiwgeSwgcGFnZVdpZHRoIC0gbWFyZ2luLCB5KTtcbiAgICB5ICs9IDg7XG5cbiAgICAvLyBMb2dvIGEgbGEgaXpxdWllcmRhXG4gICAgY29uc3QgbG9nb1cgPSA4MDtcbiAgICBjb25zdCBsb2dvSCA9IDYwO1xuICAgIGlmIChvcmRlci5pbWFnZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZG9jLmFkZEltYWdlKG9yZGVyLmltYWdlLCAnUE5HJywgbWFyZ2luLCB5LCBsb2dvVywgbG9nb0gpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIExvZ28gaW52w6FsaWRvLCBzZSBvbWl0ZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERhdG9zIGVtcHJlc2EgYSBsYSBkZXJlY2hhIChhbGluZWFkb3MgYSBsYSBkZXJlY2hhKVxuICAgIGNvbnN0IHJpZ2h0WCA9IHBhZ2VXaWR0aCAtIG1hcmdpbjtcbiAgICBsZXQgaW5mb1kgPSB5ICsgMjtcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xuICAgIGlmIChvcmRlci5uYW1lKSB7XG4gICAgICBkb2MudGV4dChvcmRlci5uYW1lLCByaWdodFgsIGluZm9ZLCB7IGFsaWduOiAncmlnaHQnIH0pO1xuICAgICAgaW5mb1kgKz0gMTQ7XG4gICAgfVxuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnbm9ybWFsJyk7XG4gICAgZG9jLnNldEZvbnRTaXplKDgpO1xuXG4gICAgY29uc3QgYWRkID0gKHZhbHVlPzogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSByZXR1cm47XG4gICAgICBkb2MudGV4dCh2YWx1ZSwgcmlnaHRYLCBpbmZvWSwgeyBhbGlnbjogJ3JpZ2h0JyB9KTtcbiAgICAgIGluZm9ZICs9IDEyO1xuICAgIH07XG5cbiAgICBhZGQob3JkZXIubml0ID8gYE5pdDogJHtvcmRlci5uaXR9YCA6ICcnKTtcbiAgICBhZGQob3JkZXIuYWRkcmVzcyk7XG4gICAgYWRkKG9yZGVyLnRlbGVwaG9uZSA/IGBUZWw6ICR7b3JkZXIudGVsZXBob25lfWAgOiAnJyk7XG4gICAgYWRkKG9yZGVyLm1haWwgPyBgRW1haWw6ICR7b3JkZXIubWFpbH1gIDogJycpO1xuXG4gICAgLy8gQWx0dXJhIHRvdGFsIG9jdXBhZGFcbiAgICBjb25zdCBibG9ja0JvdHRvbSA9IE1hdGgubWF4KHkgKyBsb2dvSCwgaW5mb1kpO1xuICAgIGNvbnN0IHNlcGFyYXRvclkgPSBibG9ja0JvdHRvbSArIDY7XG5cbiAgICAvLyBTZXBhcmFkb3JcbiAgICBkb2Muc2V0RHJhd0NvbG9yKDE4MCk7XG4gICAgZG9jLmxpbmUobWFyZ2luLCBzZXBhcmF0b3JZLCBwYWdlV2lkdGggLSBtYXJnaW4sIHNlcGFyYXRvclkpO1xuXG4gICAgcmV0dXJuIHNlcGFyYXRvclkgKyAxMDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT3JkZXJEZXRhaWxzKGRvYzoganNQREYsIG9yZGVyOiBUZW1wbGF0ZVBkZlB1cmNoYXNlT3JkZXIsIHk6IG51bWJlciwgbWFyZ2luOiBudW1iZXIsIHBhZ2VXaWR0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xuXG4gICAgY29uc3Qgcm93czogYW55W10gPSBbXG4gICAgICBbXG4gICAgICAgIHsgY29udGVudDogYFByb3ZlZWRvcjogJHtvcmRlci5wcm92aWRlck5hbWV9YCwgc3R5bGVzOiB7IGZvbnRTdHlsZTogJ2JvbGQnIH0gfSxcbiAgICAgICAgeyBjb250ZW50OiBgRmVjaGEgZGUgY3JlYWNpw7NuOiAke3RoaXMuZnVuY3Rpb25zLnRyYW5zZm9ybURhdGUob3JkZXIuY3JlYXRlZCl9YCwgc3R5bGVzOiB7IGhhbGlnbjogJ3JpZ2h0JyB9IH1cbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIHsgY29udGVudDogYEFsbWFjw6luOiAke29yZGVyLndhcmVob3VzZX1gIH0sXG4gICAgICAgIHsgY29udGVudDogYFNvbGljaXRhOiAke29yZGVyLnJlcXVlc3RzTmFtZX1gLCBzdHlsZXM6IHsgaGFsaWduOiAncmlnaHQnIH0gfVxuICAgICAgXVxuICAgIF07XG5cbiAgICBpZiAob3JkZXIuYXV0aG9yaXplTmFtZSAmJiBvcmRlci5hdXRob3JpemVOYW1lICE9PSBvcmRlci5yZXF1ZXN0c05hbWUpIHtcbiAgICAgIHJvd3MucHVzaChbXG4gICAgICAgIHsgY29udGVudDogJycgfSxcbiAgICAgICAgeyBjb250ZW50OiBgQXV0b3JpemE6ICR7b3JkZXIuYXV0aG9yaXplTmFtZX1gLCBzdHlsZXM6IHsgaGFsaWduOiAncmlnaHQnIH0gfVxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XG4gICAgICBzdGFydFk6IHksXG4gICAgICBib2R5OiByb3dzLFxuICAgICAgdGhlbWU6ICdwbGFpbicsXG4gICAgICBzdHlsZXM6IHsgZm9udFNpemU6IDEwLCBjZWxsUGFkZGluZzogMiB9XG4gICAgfSk7XG4gICAgcmV0dXJuIChkb2MgYXMgYW55KS5sYXN0QXV0b1RhYmxlLmZpbmFsWTtcbiAgfVxuICBwcml2YXRlIGFkZE9yZGVySXRlbXMoZG9jOiBqc1BERiwgb3JkZXI6IFRlbXBsYXRlUGRmUHVyY2hhc2VPcmRlciwgeTogbnVtYmVyLCBtYXJnaW46IG51bWJlciwgcGFnZVdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGhlYWQgPSBbWydDw7NkaWdvJywgJ05vbWJyZScsICdVLk0uJywgJ0NhbnQuJywgJ0Rlc2NyaXBjacOzbiddXTtcbiAgICBjb25zdCBib2R5ID0gb3JkZXIuaXRlbXMubWFwKGl0ZW0gPT4gW1xuICAgICAgaXRlbS5jb2RlLFxuICAgICAgaXRlbS5pdGVtTmFtZSxcbiAgICAgIGl0ZW0udW5pdE1lYXN1cmVtZW50LFxuICAgICAgaXRlbS5hbW91bnQsXG4gICAgICBpdGVtLmRlc2NyaXB0aW9uIHx8ICcnXG4gICAgXSk7XG5cbiAgICAoZG9jIGFzIGFueSkuYXV0b1RhYmxlKHtcbiAgICAgIHN0YXJ0WTogeSxcbiAgICAgIGhlYWQ6IGhlYWQsXG4gICAgICBib2R5OiBib2R5LFxuICAgICAgdGhlbWU6ICdncmlkJyxcbiAgICAgIGhlYWRTdHlsZXM6IHsgZmlsbENvbG9yOiBbMjIwLCAyMjAsIDIyMF0sIHRleHRDb2xvcjogMCwgZm9udFN0eWxlOiAnYm9sZCcgfSxcbiAgICAgIGNvbHVtblN0eWxlczoge1xuICAgICAgICAzOiB7IGhhbGlnbjogJ3JpZ2h0JyB9LFxuICAgICAgICA0OiB7IGhhbGlnbjogJ3JpZ2h0JyB9LFxuICAgICAgICA1OiB7IGhhbGlnbjogJ3JpZ2h0JyB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgZmluYWxZID0gKGRvYyBhcyBhbnkpLmxhc3RBdXRvVGFibGUuZmluYWxZO1xuXG4gICAgcmV0dXJuIGZpbmFsWTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ29tbWVudHMoZG9jOiBqc1BERiwgb3JkZXI6IFRlbXBsYXRlUGRmUHVyY2hhc2VPcmRlciwgeTogbnVtYmVyLCBtYXJnaW46IG51bWJlciwgcGFnZVdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XG4gICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XG4gICAgZG9jLnRleHQoJ0NvbWVudGFyaW9zOicsIG1hcmdpbiwgeSk7XG4gICAgeSArPSAxNTtcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ25vcm1hbCcpO1xuICAgIGNvbnN0IHNwbGl0VGV4dCA9IGRvYy5zcGxpdFRleHRUb1NpemUob3JkZXIuY29tbWVudCwgcGFnZVdpZHRoIC0gbWFyZ2luICogMik7XG4gICAgZG9jLnRleHQoc3BsaXRUZXh0LCBtYXJnaW4sIHkpO1xuICAgIHJldHVybiB5ICsgc3BsaXRUZXh0Lmxlbmd0aCAqIDEyO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRGb290ZXIoZG9jOiBqc1BERiwgcGFnZVdpZHRoOiBudW1iZXIsIHBhZ2VIZWlnaHQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGZvb3RlclRleHQgPSAnRG9jdW1lbnRvIGdlbmVyYWRvIHBvciBCcmFpbmxvcGVyJztcbiAgICBkb2Muc2V0Rm9udFNpemUoOCk7XG4gICAgY29uc3QgZm9vdGVyV2lkdGggPSBkb2MuZ2V0U3RyaW5nVW5pdFdpZHRoKGZvb3RlclRleHQpICogOCAvIGRvYy5pbnRlcm5hbC5zY2FsZUZhY3RvcjtcbiAgICBkb2MudGV4dChmb290ZXJUZXh0LCAocGFnZVdpZHRoIC0gZm9vdGVyV2lkdGgpIC8gMiwgcGFnZUhlaWdodCAtIDIwKTtcbiAgfVxufVxuIl19
@@ -1,6 +0,0 @@
1
- export class ScreenSizeUtil {
2
- static isMobile() {
3
- return screen.width <= 600;
4
- }
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXNpemUtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zZXJ2aWNlcy9zY3JlZW4tc2l6ZS11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTyxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU2NyZWVuU2l6ZVV0aWwge1xuICBzdGF0aWMgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNjcmVlbi53aWR0aCA8PSA2MDA7XG4gIH1cbn1cbiJdfQ==
@@ -1,43 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "./crypto.service";
4
- export class SessionService {
5
- cripto;
6
- key = "V2xoU2JHTnBRbnBpTWxvd1pESkdlVnBUUW10YVYzaHNaRzFXZG1OSE1XeGlibEU9"; //btoa 3 rounds
7
- constructor(cripto) {
8
- this.cripto = cripto;
9
- }
10
- getMain() {
11
- const info = sessionStorage.getItem(this.key);
12
- if (info) {
13
- return this.cripto.decode(info);
14
- }
15
- return {};
16
- }
17
- keyAssign(key) {
18
- this.key = key;
19
- }
20
- getData(key) {
21
- var sesion = this.getMain();
22
- return sesion[key] || '';
23
- }
24
- setData(key, value) {
25
- var actual = this.getMain() || {};
26
- actual[key] = value;
27
- const dataF = this.cripto.encode(actual);
28
- sessionStorage.setItem(this.key, dataF);
29
- }
30
- getSessionVars() {
31
- const info = this.getMain();
32
- return info || {};
33
- }
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SessionService, deps: [{ token: i1.CryptoService }], target: i0.ɵɵFactoryTarget.Injectable });
35
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SessionService, providedIn: 'root' });
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SessionService, decorators: [{
38
- type: Injectable,
39
- args: [{
40
- providedIn: 'root'
41
- }]
42
- }], ctorParameters: () => [{ type: i1.CryptoService }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3NlcnZpY2VzL3Nlc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLGNBQWM7SUFHSDtJQURwQixHQUFHLEdBQUcsa0VBQWtFLENBQUMsQ0FBRSxlQUFlO0lBQzFGLFlBQW9CLE1BQXFCO1FBQXJCLFdBQU0sR0FBTixNQUFNLENBQWU7SUFDekMsQ0FBQztJQUVPLE9BQU87UUFDWCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQyxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQUc7UUFDVCxJQUFJLENBQUMsR0FBRyxHQUFDLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBR0QsT0FBTyxDQUFDLEdBQUc7UUFDUCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFHRCxPQUFPLENBQUMsR0FBTyxFQUFFLEtBQVM7UUFDdEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUMsS0FBSyxDQUFDO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsY0FBYztRQUNWLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzt3R0FuQ1EsY0FBYzs0R0FBZCxjQUFjLGNBRlgsTUFBTTs7NEZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG8uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbiAgfSlcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU2VydmljZSB7XG5cbiAgICBrZXkgPSBcIlYyeG9VMkpIVG5CUmJuQnBUV3h2ZDFwRVNrZGxWbkJVVVcxMFlWWXphSE5hUnpGWFpHMU9TRTFYZUdsaWJFVTlcIjsgIC8vYnRvYSAzIHJvdW5kc1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY3JpcHRvOiBDcnlwdG9TZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYWluKCl7XG4gICAgICAgIGNvbnN0IGluZm8gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5KTtcbiAgICAgICAgaWYgKGluZm8pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyaXB0by5kZWNvZGUoaW5mbykgICAgXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGtleUFzc2lnbihrZXkpe1xuICAgICAgICB0aGlzLmtleT1rZXk7XG4gICAgfVxuXG5cbiAgICBnZXREYXRhKGtleSkge1xuICAgICAgICB2YXIgc2VzaW9uID0gdGhpcy5nZXRNYWluKCk7XG4gICAgICAgIHJldHVybiBzZXNpb25ba2V5XSB8fCAnJztcbiAgICB9XG5cblxuICAgIHNldERhdGEoa2V5OmFueSwgdmFsdWU6YW55KSB7XG4gICAgICAgIHZhciBhY3R1YWwgPSB0aGlzLmdldE1haW4oKSB8fCB7fTtcbiAgICAgICAgYWN0dWFsW2tleV09dmFsdWU7XG4gICAgICAgIGNvbnN0IGRhdGFGID0gdGhpcy5jcmlwdG8uZW5jb2RlKGFjdHVhbCk7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5rZXksIGRhdGFGKTtcbiAgICB9XG5cbiAgICBnZXRTZXNzaW9uVmFycygpe1xuICAgICAgICBjb25zdCBpbmZvID0gdGhpcy5nZXRNYWluKCk7XG4gICAgICAgIHJldHVybiBpbmZvIHx8IHt9O1xuICAgIH1cbn1cblxuIl19