ngx-redi-core 0.0.0-watch

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 (93) hide show
  1. package/Helper/index.d.ts +5 -0
  2. package/Helper/package.json +3 -0
  3. package/Helper/public-api.d.ts +3 -0
  4. package/Helper/src/helpers/bag-data-subject.service.d.ts +43 -0
  5. package/Helper/src/helpers/csv.service.d.ts +33 -0
  6. package/Helper/src/helpers/data-subject.service.d.ts +32 -0
  7. package/Helper/src/models/interfaces/data-subject.interface.d.ts +6 -0
  8. package/README.md +24 -0
  9. package/RediDragDrop/index.d.ts +5 -0
  10. package/RediDragDrop/package.json +3 -0
  11. package/RediDragDrop/public-api.d.ts +4 -0
  12. package/RediDragDrop/src/models/classes/proceso-archivo-csv.d.ts +29 -0
  13. package/RediDragDrop/src/models/directives/drag-drop.directive.d.ts +43 -0
  14. package/RediDragDrop/src/modules/redi-drag-drop/redi-drag-drop.component.d.ts +188 -0
  15. package/RediDragDrop/src/modules/redi-drag-drop.module.d.ts +13 -0
  16. package/RediGrid/index.d.ts +5 -0
  17. package/RediGrid/package.json +3 -0
  18. package/RediGrid/public-api.d.ts +4 -0
  19. package/RediGrid/src/models/interfaces/cell.d.ts +37 -0
  20. package/RediGrid/src/models/interfaces/data-grid.d.ts +30 -0
  21. package/RediGrid/src/modules/redi-grid/redi-grid.component.d.ts +92 -0
  22. package/RediGrid/src/modules/redi-grid.module.d.ts +14 -0
  23. package/RediTable/index.d.ts +5 -0
  24. package/RediTable/package.json +3 -0
  25. package/RediTable/public-api.d.ts +6 -0
  26. package/RediTable/src/components/filter-data/filter-data.component.d.ts +23 -0
  27. package/RediTable/src/components/redi-table/redi-table.component.d.ts +139 -0
  28. package/RediTable/src/models/interfaces/column-definition.d.ts +18 -0
  29. package/RediTable/src/models/interfaces/data-table.d.ts +24 -0
  30. package/RediTable/src/models/interfaces/filter-item.d.ts +5 -0
  31. package/RediTable/src/models/interfaces/row-action.d.ts +24 -0
  32. package/RediTable/src/models/types/event-table.type.d.ts +5 -0
  33. package/Security/index.d.ts +5 -0
  34. package/Security/package.json +3 -0
  35. package/Security/public-api.d.ts +6 -0
  36. package/Security/src/modules/security-web-intercept/interceptors/redi-secure.interceptor.d.ts +39 -0
  37. package/Security/src/modules/security-web-intercept/models/secure-factory.model.d.ts +10 -0
  38. package/Security/src/modules/security-web-intercept/services/cifrado-basico.service.d.ts +14 -0
  39. package/Security/src/modules/security-web-intercept/services/cifrado.service.d.ts +21 -0
  40. package/Security/src/modules/security-web-intercept/services/reflection.service.d.ts +58 -0
  41. package/Security/src/modules/security.module.d.ts +11 -0
  42. package/esm2022/Helper/ngx-redi-core-Helper.mjs +5 -0
  43. package/esm2022/Helper/public-api.mjs +4 -0
  44. package/esm2022/Helper/src/helpers/bag-data-subject.service.mjs +61 -0
  45. package/esm2022/Helper/src/helpers/csv.service.mjs +69 -0
  46. package/esm2022/Helper/src/helpers/data-subject.service.mjs +34 -0
  47. package/esm2022/Helper/src/models/interfaces/data-subject.interface.mjs +2 -0
  48. package/esm2022/RediDragDrop/ngx-redi-core-RediDragDrop.mjs +5 -0
  49. package/esm2022/RediDragDrop/public-api.mjs +5 -0
  50. package/esm2022/RediDragDrop/src/models/classes/proceso-archivo-csv.mjs +132 -0
  51. package/esm2022/RediDragDrop/src/models/directives/drag-drop.directive.mjs +95 -0
  52. package/esm2022/RediDragDrop/src/modules/redi-drag-drop/redi-drag-drop.component.mjs +369 -0
  53. package/esm2022/RediDragDrop/src/modules/redi-drag-drop.module.mjs +34 -0
  54. package/esm2022/RediGrid/ngx-redi-core-RediGrid.mjs +5 -0
  55. package/esm2022/RediGrid/public-api.mjs +5 -0
  56. package/esm2022/RediGrid/src/models/interfaces/cell.mjs +2 -0
  57. package/esm2022/RediGrid/src/models/interfaces/data-grid.mjs +2 -0
  58. package/esm2022/RediGrid/src/modules/redi-grid/redi-grid.component.mjs +159 -0
  59. package/esm2022/RediGrid/src/modules/redi-grid.module.mjs +34 -0
  60. package/esm2022/RediTable/ngx-redi-core-RediTable.mjs +5 -0
  61. package/esm2022/RediTable/public-api.mjs +9 -0
  62. package/esm2022/RediTable/src/components/filter-data/filter-data.component.mjs +84 -0
  63. package/esm2022/RediTable/src/components/redi-table/redi-table.component.mjs +404 -0
  64. package/esm2022/RediTable/src/models/interfaces/column-definition.mjs +2 -0
  65. package/esm2022/RediTable/src/models/interfaces/data-table.mjs +2 -0
  66. package/esm2022/RediTable/src/models/interfaces/filter-item.mjs +2 -0
  67. package/esm2022/RediTable/src/models/interfaces/row-action.mjs +2 -0
  68. package/esm2022/RediTable/src/models/types/event-table.type.mjs +2 -0
  69. package/esm2022/Security/ngx-redi-core-Security.mjs +5 -0
  70. package/esm2022/Security/public-api.mjs +7 -0
  71. package/esm2022/Security/src/modules/security-web-intercept/interceptors/redi-secure.interceptor.mjs +88 -0
  72. package/esm2022/Security/src/modules/security-web-intercept/models/secure-factory.model.mjs +27 -0
  73. package/esm2022/Security/src/modules/security-web-intercept/services/cifrado-basico.service.mjs +51 -0
  74. package/esm2022/Security/src/modules/security-web-intercept/services/cifrado.service.mjs +33 -0
  75. package/esm2022/Security/src/modules/security-web-intercept/services/reflection.service.mjs +122 -0
  76. package/esm2022/Security/src/modules/security.module.mjs +23 -0
  77. package/esm2022/ngx-redi-core.mjs +5 -0
  78. package/esm2022/public-api.mjs +8 -0
  79. package/fesm2022/ngx-redi-core-Helper.mjs +166 -0
  80. package/fesm2022/ngx-redi-core-Helper.mjs.map +1 -0
  81. package/fesm2022/ngx-redi-core-RediDragDrop.mjs +628 -0
  82. package/fesm2022/ngx-redi-core-RediDragDrop.mjs.map +1 -0
  83. package/fesm2022/ngx-redi-core-RediGrid.mjs +196 -0
  84. package/fesm2022/ngx-redi-core-RediGrid.mjs.map +1 -0
  85. package/fesm2022/ngx-redi-core-RediTable.mjs +496 -0
  86. package/fesm2022/ngx-redi-core-RediTable.mjs.map +1 -0
  87. package/fesm2022/ngx-redi-core-Security.mjs +339 -0
  88. package/fesm2022/ngx-redi-core-Security.mjs.map +1 -0
  89. package/fesm2022/ngx-redi-core.mjs +14 -0
  90. package/fesm2022/ngx-redi-core.mjs.map +1 -0
  91. package/index.d.ts +5 -0
  92. package/package.json +57 -0
  93. package/public-api.d.ts +4 -0
@@ -0,0 +1,369 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { ProcesoArchivoCsv } from '../../models/classes/proceso-archivo-csv';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../models/classes/proceso-archivo-csv";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/material/list";
7
+ import * as i4 from "@angular/material/button";
8
+ import * as i5 from "@angular/material/core";
9
+ import * as i6 from "../../models/directives/drag-drop.directive";
10
+ export class RediDragDropComponent {
11
+ /**
12
+ * Verifica si existe archivo cargado en el componente.
13
+ */
14
+ get existeArchivo() {
15
+ if (this.archivo) {
16
+ return this.archivo.length > 0;
17
+ }
18
+ return false;
19
+ }
20
+ /**
21
+ * Obtiene una lista con los archivos cargados.
22
+ */
23
+ get archivos() {
24
+ if (this.archivo) {
25
+ return this.generarListaNombreArchivos(this.archivo);
26
+ }
27
+ else {
28
+ return [];
29
+ }
30
+ }
31
+ /**
32
+ * Obtiene el nombre del primer archivo de la lista.
33
+ */
34
+ get nombreArchivo() { return this.archivo?.item(0)?.name; }
35
+ /**
36
+ * Establece si la carga de archivos es múltiple.
37
+ */
38
+ set archivosMultiples(value) {
39
+ if (this.procesoCsv) {
40
+ this.multiple = false;
41
+ }
42
+ else {
43
+ this.multiple = value;
44
+ }
45
+ }
46
+ /**
47
+ * Obtiene si la carga de los archivos es múltiple.
48
+ */
49
+ get archivosMultiples() { return this.multiple; }
50
+ /**
51
+ * Establece si la selección de archivos se realizará desde distintos directorios.
52
+ */
53
+ set cargaDiferida(value) {
54
+ this.multiple = true;
55
+ this.seleccionDiferida = value;
56
+ }
57
+ /**
58
+ * Obtiene si la selección de archivos se realizará desde distintos directorios.
59
+ */
60
+ get cargaDiferida() { return this.seleccionDiferida; }
61
+ /**
62
+ * Especifica que el archivo a cargar en el componente es un `csv`. Y establece en `true` la propiedad `procesoCsv`.
63
+ */
64
+ set procesarCsvTabla(value) {
65
+ this.procesoCsv = value;
66
+ if (value) {
67
+ this.archivosMultiples = false;
68
+ this.extensionesAceptadas = '.csv';
69
+ }
70
+ }
71
+ constructor(procesoArchivoCsv) {
72
+ this.procesoArchivoCsv = procesoArchivoCsv;
73
+ /**
74
+ * Obtiene o establece si el titulo se muestra.
75
+ * @default 'true'
76
+ */
77
+ this.muestraTitulo = true;
78
+ /**
79
+ * Obtiene o establece si los datos procesados en la carga de un archivo `csv` son para el grid.
80
+ * @default true
81
+ */
82
+ this.datosParaDataGrid = true;
83
+ /**
84
+ * Obtiene o establece si la carga de archivos es múltiple.
85
+ */
86
+ this.multiple = false;
87
+ /**
88
+ * Obtiene o establece si la selección de archivos,se realizará desde distintos directorios.
89
+ */
90
+ this.seleccionDiferida = false;
91
+ /**
92
+ * Obtiene o establece aquellos archivos que ya se encuentran cargados en el componente.
93
+ */
94
+ this.repetidos = [];
95
+ /**
96
+ * Obtiene o establece que se realizará un proceso de lectura al archivo csv cargado en el componente.
97
+ */
98
+ this.procesoCsv = false;
99
+ /**
100
+ * Evento que se emite una vez que el archivo `csv` es procesado.
101
+ * @example
102
+ * Si la propiedad ´datosParaDataGrid = true´ devuelve ´{cols:[],rows:[]}´
103
+ * Si la propiedad ´datosParaDataGrid = false´ devuelve ´[{propiedad1:'valor',propiedad2:'valor2'}]´
104
+ *
105
+ */
106
+ this.csvDatosProcesados = new EventEmitter();
107
+ /**
108
+ * Obtiene o establece si existe un error.
109
+ */
110
+ this.error = false;
111
+ this.cambioArchivo = new EventEmitter();
112
+ }
113
+ /**
114
+ * Método que establece el proceso a realizar con el o los archivos seleccionados.
115
+ * @param fileList Los archivos seleccionados
116
+ */
117
+ establecerProceso(fileList) {
118
+ if (this.cargaDiferida) {
119
+ this.procesarArchivosPorSeparado(fileList);
120
+ }
121
+ else {
122
+ this.procesarArchivo(fileList);
123
+ }
124
+ }
125
+ /**
126
+ * Método encargado para el proceso de archivo individual.
127
+ * @param archivo El archivo csv seleccionado.
128
+ */
129
+ async procesarArchivo(archivo) {
130
+ if (!this.validoTamanioArchivos(archivo)) {
131
+ return;
132
+ }
133
+ this.archivo = (archivo.length === 0) ? null : archivo;
134
+ if (this.manejoErrorExtensionesValidas(this.archivos.map(stringArchivos => stringArchivos?.split(/[.]/).pop() ?? ''))) {
135
+ if (this.procesoCsv) {
136
+ await this.procesoArchivoCsv.procesar(archivo, this.datosParaDataGrid)
137
+ .then(datos => {
138
+ this.csvDatosProcesados.emit(datos);
139
+ }).catch((error) => {
140
+ this.estableceMensajeError(error.mensaje);
141
+ this.archivo = null;
142
+ this.csvDatosProcesados.emit(null);
143
+ });
144
+ }
145
+ else {
146
+ this.cambioArchivo.emit(this.archivo);
147
+ }
148
+ }
149
+ }
150
+ /**
151
+ * Método encargado para el proceso de múltiples archivos.
152
+ * @param archivo Los archivos seleccionados.
153
+ * @returns Void
154
+ */
155
+ procesarArchivosPorSeparado(archivo) {
156
+ this.repetidos = [];
157
+ if (!this.validoTamanioArchivos(archivo)) {
158
+ return;
159
+ }
160
+ const archivosNuevos = this.generarListaNombreArchivos(archivo);
161
+ if (this.manejoErrorExtensionesValidas(archivosNuevos.map(stringArchivos => stringArchivos?.split(/[.]/).pop() ?? ''))) {
162
+ if (this.archivo) {
163
+ this.cargarArchivos(archivo, archivosNuevos);
164
+ }
165
+ else {
166
+ this.archivo = archivo;
167
+ (this.inputArchivo?.nativeElement || {}).files = this.archivo;
168
+ this.cambioArchivo.emit(this.archivo);
169
+ }
170
+ }
171
+ }
172
+ /**
173
+ * Método que carga los archivos nuevos a la lista de archivos seleccionados anteriormente.
174
+ * @param archivo Los archivos seleccionados
175
+ * @param archivosNuevos Arreglo con la lista de los archivos seleccionados.
176
+ */
177
+ cargarArchivos(archivo, archivosNuevos) {
178
+ const dataTransfer = new DataTransfer();
179
+ const repetidos = this.generarListaNombreArchivos(this.archivo ?? new FileList()).map(nombreArchivo => {
180
+ return archivosNuevos.find(elm => elm === nombreArchivo);
181
+ }).filter(o => !!o);
182
+ if (repetidos.length === 0) {
183
+ for (let index = 0; index < (this.archivo ?? new FileList()).length; index++) {
184
+ dataTransfer.items.add((this.archivo ?? new FileList())[index]);
185
+ }
186
+ for (let index = 0; index < archivo.length; index++) {
187
+ dataTransfer.items.add(archivo[index]);
188
+ }
189
+ this.archivo = dataTransfer.files;
190
+ (this.inputArchivo?.nativeElement || {}).files = this.archivo;
191
+ this.cambioArchivo.emit(this.archivo);
192
+ }
193
+ else {
194
+ this.repetidos.push(...repetidos);
195
+ (this.inputArchivo?.nativeElement || {}).files = this.archivo;
196
+ }
197
+ }
198
+ /**
199
+ * Método que elimina los archivos seleccionados de lista.
200
+ * @param selectionModel La lista de opciones seleccionadas
201
+ */
202
+ eliminarArchivo(selectionModel) {
203
+ const dataTransfer = new DataTransfer();
204
+ const archivosCargados = this.archivo;
205
+ const archivosToEliminar = selectionModel.selected.map((matListOption) => matListOption.value.toString());
206
+ for (let index = 0; index < archivosCargados.length; index++) {
207
+ if (!archivosToEliminar.some(stringArchivos => stringArchivos === archivosCargados.item(index)?.name)) {
208
+ dataTransfer.items.add(archivosCargados[index]);
209
+ }
210
+ }
211
+ if (dataTransfer.files.length > 0) {
212
+ this.archivo = dataTransfer.files;
213
+ (this.inputArchivo?.nativeElement || {}).files = dataTransfer.files;
214
+ this.cambioArchivo.emit(this.archivo);
215
+ }
216
+ else {
217
+ this.eliminarTodosArchivos();
218
+ }
219
+ }
220
+ eliminarTodosArchivos() {
221
+ this.archivo = null;
222
+ (this.inputArchivo?.nativeElement || {}).files = null;
223
+ (this.inputArchivo?.nativeElement || {}).value = '';
224
+ this.cambioArchivo.emit(this.archivo);
225
+ }
226
+ /**
227
+ * Método que genera y retorna un arreglo con los nombres de los archivos cargados.
228
+ * @param fileList Objeto que contiene los archivos seleccionados
229
+ * @returns Retorna arreglo de cadenas.
230
+ * `['archivo.pdf','archivo2.avi']`
231
+ */
232
+ generarListaNombreArchivos(fileList) {
233
+ const archivos = [];
234
+ for (let index = 0; index < fileList.length; index++) {
235
+ archivos.push(fileList.item(index)?.name ?? '');
236
+ }
237
+ return archivos.sort();
238
+ }
239
+ /**
240
+ * Método que genera y retorna un arreglo numérico con los tamaños de cada uno de los archivos seleccionados.
241
+ * @param fileList Objeto que contiene los archivos seleccionados
242
+ * @returns Retorna arreglo numérico con el tamaño de cada archivo en bytes.
243
+ * `[124661,123132]`
244
+ */
245
+ generarListaTamanioArchivos(fileList) {
246
+ const archivos = [];
247
+ for (let index = 0; index < fileList.length; index++) {
248
+ archivos.push(fileList.item(index)?.size ?? 0);
249
+ }
250
+ return archivos;
251
+ }
252
+ /**
253
+ * Método que verifica si las extensiones son válidas.
254
+ * @param extensionesArchivosSeleccionados Arreglo con las extensiones de cada uno de los archivos seleccionados.
255
+ * @returns Boolean
256
+ */
257
+ manejoErrorExtensionesValidas(extensionesArchivosSeleccionados) {
258
+ if (this.extensionesAceptadas) {
259
+ return this.verificaExtensiones(extensionesArchivosSeleccionados);
260
+ }
261
+ else {
262
+ if (!this.cargaDiferida) {
263
+ (this.inputArchivo?.nativeElement || {}).files = this.archivo;
264
+ }
265
+ return true;
266
+ }
267
+ }
268
+ /**
269
+ * Método que verifica si las extensiones de los archivos seleccionados son válidas, y asigna los archivos
270
+ * a la propiedad `inputArchivo` en caso de que sean válidos.
271
+ * @param extensionesArchivosSeleccionados Arreglo con las extensiones de cada uno de los archivos seleccionados.
272
+ * @returns Boolean
273
+ */
274
+ verificaExtensiones(extensionesArchivosSeleccionados) {
275
+ const extensiones = this.extensionesAceptadas?.split(/,/).map(extension => extension.replace(/./, ''));
276
+ if (!this.extensionesValidas(extensiones ?? [], extensionesArchivosSeleccionados)) {
277
+ this.estableceMensajeError(this.archivosMultiples ? 'Existe archivo no válido en su selección. Intente nuevamente.' : 'El archivo no es válido');
278
+ if (!this.cargaDiferida) {
279
+ (this.inputArchivo?.nativeElement || {}).files = null;
280
+ this.archivo = null;
281
+ }
282
+ return false;
283
+ }
284
+ else {
285
+ if (!this.cargaDiferida) {
286
+ (this.inputArchivo?.nativeElement || {}).files = this.archivo;
287
+ }
288
+ return true;
289
+ }
290
+ }
291
+ /**
292
+ * Método para establecer el mensaje de error en el componente, el mensaje dura 3 segundos después de eso desaparece.
293
+ * @param mensaje El mensaje de error a mostrar en el componente
294
+ */
295
+ estableceMensajeError(mensaje) {
296
+ const tiempo = 3000;
297
+ this.mensajeError = mensaje;
298
+ this.error = true;
299
+ setTimeout(() => {
300
+ this.error = false;
301
+ }, tiempo);
302
+ }
303
+ /**
304
+ * Método que valida si las extensiones de los archivos son válidos con respectos a los especificados en la propiedad `extensionesAceptadas`.
305
+ * @param extensiones Arreglo que contiene las extensiones aceptadas por el componente.
306
+ * @param extensionesArchivosSeleccionados Arreglo que contiene la extensiones de los archivos seleccionados.
307
+ * @returns Boolean
308
+ */
309
+ extensionesValidas(extensiones, extensionesArchivosSeleccionados) {
310
+ return extensionesArchivosSeleccionados.every(valor => extensiones.includes(valor));
311
+ }
312
+ /**
313
+ * Método para validar que el tamaño de los archivos seleccionados sea menor o igual al especificado en la propiedad `tamanoMaximoArchivo`. Si este no es especificado
314
+ * se permite cualquier tamaño de archivo.
315
+ * @param archivo El o los archivos seleccionados.
316
+ * @returns Boolean
317
+ */
318
+ validoTamanioArchivos(archivo) {
319
+ if (this.tamanoMaximoArchivo) {
320
+ if (this.tamanoMaximoArchivo <= 0) {
321
+ return false;
322
+ }
323
+ const no = 1024;
324
+ const size = this.tamanoMaximoArchivo * no * no;
325
+ if (this.generarListaTamanioArchivos(archivo).some(tamanoAarchivo => tamanoAarchivo > size)) {
326
+ this.estableceMensajeError(`El tamaño máximo por archivo es de: ${this.tamanoMaximoArchivo} MB`);
327
+ (this.inputArchivo?.nativeElement || {}).files = this.existeArchivo ? this.archivo : null;
328
+ return false;
329
+ }
330
+ else {
331
+ return true;
332
+ }
333
+ }
334
+ return true;
335
+ }
336
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RediDragDropComponent, deps: [{ token: i1.ProcesoArchivoCsv }], target: i0.ɵɵFactoryTarget.Component }); }
337
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: RediDragDropComponent, selector: "redi-drag-drop", inputs: { titulo: "titulo", muestraTitulo: "muestraTitulo", extensionesAceptadas: "extensionesAceptadas", tamanoMaximoArchivo: "tamanoMaximoArchivo", datosParaDataGrid: "datosParaDataGrid", archivosMultiples: "archivosMultiples", cargaDiferida: "cargaDiferida", procesarCsvTabla: "procesarCsvTabla" }, outputs: { csvDatosProcesados: "csvDatosProcesados", cambioArchivo: "cambioArchivo" }, providers: [ProcesoArchivoCsv], viewQueries: [{ propertyName: "inputArchivo", first: true, predicate: ["inputArchivo"], descendants: true }, { propertyName: "listArchivos", first: true, predicate: ["listArchivos"], descendants: true }], ngImport: i0, template: "<p *ngIf=\"muestraTitulo\" class=\"titulo\">{{titulo? titulo : 'Sube tu archivo'}}</p>\r\n<div class=\"contenedor\" matRipple dragDrop (clicked)=\"inputArchivo.click()\" tabindex=\"0\"\r\n (fileDropped)=\"establecerProceso($event)\">\r\n <div class=\"contenedor-input\">\r\n <label for=\"file\"> File</label>\r\n <input id=\"file\" name=\"file\" type=\"file\" #inputArchivo hidden\r\n (change)=\"establecerProceso($any($event).target.files)\" [multiple]=\"archivosMultiples\"\r\n [accept]=\"extensionesAceptadas\">\r\n </div>\r\n <div *ngIf=\"!existeArchivo\">\r\n <div class=\"imagen\"></div>\r\n <p class=\"dragdrop\"> DRAG & DROP </p>\r\n <p> Arrastre y suelte aqu\u00ED \u00F3 click para buscar </p>\r\n </div>\r\n <div *ngIf=\"existeArchivo && !archivosMultiples\">\r\n <div class=\"imagen archivo\"></div>\r\n <p>{{nombreArchivo}}</p>\r\n </div>\r\n <div *ngIf=\"existeArchivo && archivosMultiples\">\r\n <div class=\"imagen archivo-lista\"></div>\r\n </div>\r\n</div>\r\n<div class=\"error\" *ngIf=\"error\">\r\n <p>{{mensajeError}}</p>\r\n</div>\r\n<div class=\"error\" *ngIf=\"repetidos.length > 0\">\r\n <p> Los siguientes archivos ya se encuentran cargados: </p>\r\n <ul class=\"repetidos\">\r\n <li *ngFor=\"let r of repetidos\">{{r}}</li>\r\n </ul>\r\n <button class=\"cerrar\" (click)=\"repetidos=[]\"> X </button>\r\n</div>\r\n\r\n<div *ngIf=\"existeArchivo && archivosMultiples\" class=\"contenedor-lista\">\r\n <p class=\"titulo-lista\"> Archivos selecionados {{archivos.length}}</p>\r\n <div class=\"lista-archivos\">\r\n <mat-selection-list dense #listArchivos color=\"primary\">\r\n <mat-list-option *ngFor=\"let elm of archivos;index as i\" [value]=\"elm\">\r\n <div matListItemTitle>{{elm}}</div>\r\n </mat-list-option>\r\n </mat-selection-list>\r\n </div>\r\n <div class=\"botones\">\r\n <button mat-button color=\"primary\" [disabled]=\"listArchivos.selectedOptions.selected.length === 0\"\r\n (click)=\"eliminarArchivo(listArchivos.selectedOptions)\">\r\n Eliminar archivos seleccionados ({{listArchivos.selectedOptions.selected.length}})\r\n </button>\r\n <button mat-button color=\"warn\" [disabled]=\"archivos.length === 0\" (click)=\"eliminarTodosArchivos()\">\r\n Eliminar archivos\r\n </button>\r\n </div>\r\n</div>", styles: [":host{display:block;height:100%}:host p{text-align:center;font-size:12px;font-weight:lighter;margin:0}.contenedor{display:flex;align-items:center;justify-content:center;margin-top:10px;padding:10px;cursor:pointer;border-radius:10px;background-color:#f1f2f7;height:90%}.contenedor-input{display:none}.imagen{width:75px;height:75px;margin:0 auto;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48\" viewBox=\"0 96 960 960\" width=\"48\"><path d=\"M250 896q-86 0-148-62T40 686q0-78 49.5-137.5T217 477q20-97 94-158.5T482 257q113 0 189.5 81.5T748 534v24q72-2 122 46.5T920 727q0 69-50 119t-119 50H510q-24 0-42-18t-18-42V578l-83 83-43-43 156-156 156 156-43 43-83-83v258h241q45 0 77-32t32-77q0-45-32-77t-77-32h-63v-84q0-89-60.5-153T478 317q-89 0-150 64t-61 153h-19q-62 0-105 43.5T100 685q0 62 43.929 106.5Q187.857 836 250 836h140v60H250Zm230-290Z\" style=\"fill:rgb(131, 131, 131);\"/></svg>');background-repeat:no-repeat;background-position:center;background-size:contain}.archivo{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48\" viewBox=\"0 96 960 960\" width=\"48\"><path d=\"M319 806h322v-60H319v60Zm0-170h322v-60H319v60Zm-99 340q-24 0-42-18t-18-42V236q0-24 18-42t42-18h361l219 219v521q0 24-18 42t-42 18H220Zm331-554V236H220v680h520V422H551ZM220 236v186-186 680-680Z\" style=\"fill:rgb(131, 131, 131);\"/></svg>')!important}.archivo-lista{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48\" viewBox=\"0 96 960 960\" width=\"48\"><path d=\"m612 506 141-142-28-28-113 113-57-57-28 29 85 85ZM120 896v-60h480v60H120Zm519.894-290Q561 606 505.5 550.394t-55.5-134.5Q450 337 505.606 281.5t134.5-55.5Q719 226 774.5 281.606t55.5 134.5Q830 495 774.394 550.5t-134.5 55.5ZM120 556v-60h262q5.32 16.323 12.16 31.161Q401 542 409 556H120Zm0 170v-60h419q13.8 6.364 29.4 10.682Q584 681 600 683v43H120Z\" style=\"fill:rgb(131, 131, 131);\"/></svg>')!important}.titulo{font-size:medium!important;text-align:left!important;border-bottom:solid #40529d;margin-bottom:5px}.dragdrop{font-size:larger!important;margin-bottom:5px!important}.botones{display:flex;justify-content:space-between;background:#fff;padding:5px;border-radius:0 0 5px 5px}.contenedor-lista{border:solid 1px rgb(131,131,131);margin:5px;border-radius:5px;background-color:#f5f5f5;height:100%}.titulo-lista{text-align:left!important;background:#fff;padding:5px;font-weight:500!important;border-radius:5px 5px 0 0}.lista-archivos{max-height:250px;overflow:auto}.error{position:relative;font-size:small;color:#f5f5f5;padding:5px;font-weight:lighter;background-color:#be1704ab;border-radius:5px;margin:5px;text-align:center}.repetidos{list-style-type:auto}.repetidos li{text-align:left}.cerrar{position:absolute;top:5px;right:5px;border-radius:10px;background-color:#f5f5f5;border:none;height:20px;width:20px;color:#d36357;cursor:pointer}.avatar{opacity:.3;display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i3.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i6.DragDropDirective, selector: "[dragDrop]", outputs: ["fileDropped", "clicked"] }] }); }
338
+ }
339
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RediDragDropComponent, decorators: [{
340
+ type: Component,
341
+ args: [{ selector: 'redi-drag-drop', providers: [ProcesoArchivoCsv], template: "<p *ngIf=\"muestraTitulo\" class=\"titulo\">{{titulo? titulo : 'Sube tu archivo'}}</p>\r\n<div class=\"contenedor\" matRipple dragDrop (clicked)=\"inputArchivo.click()\" tabindex=\"0\"\r\n (fileDropped)=\"establecerProceso($event)\">\r\n <div class=\"contenedor-input\">\r\n <label for=\"file\"> File</label>\r\n <input id=\"file\" name=\"file\" type=\"file\" #inputArchivo hidden\r\n (change)=\"establecerProceso($any($event).target.files)\" [multiple]=\"archivosMultiples\"\r\n [accept]=\"extensionesAceptadas\">\r\n </div>\r\n <div *ngIf=\"!existeArchivo\">\r\n <div class=\"imagen\"></div>\r\n <p class=\"dragdrop\"> DRAG & DROP </p>\r\n <p> Arrastre y suelte aqu\u00ED \u00F3 click para buscar </p>\r\n </div>\r\n <div *ngIf=\"existeArchivo && !archivosMultiples\">\r\n <div class=\"imagen archivo\"></div>\r\n <p>{{nombreArchivo}}</p>\r\n </div>\r\n <div *ngIf=\"existeArchivo && archivosMultiples\">\r\n <div class=\"imagen archivo-lista\"></div>\r\n </div>\r\n</div>\r\n<div class=\"error\" *ngIf=\"error\">\r\n <p>{{mensajeError}}</p>\r\n</div>\r\n<div class=\"error\" *ngIf=\"repetidos.length > 0\">\r\n <p> Los siguientes archivos ya se encuentran cargados: </p>\r\n <ul class=\"repetidos\">\r\n <li *ngFor=\"let r of repetidos\">{{r}}</li>\r\n </ul>\r\n <button class=\"cerrar\" (click)=\"repetidos=[]\"> X </button>\r\n</div>\r\n\r\n<div *ngIf=\"existeArchivo && archivosMultiples\" class=\"contenedor-lista\">\r\n <p class=\"titulo-lista\"> Archivos selecionados {{archivos.length}}</p>\r\n <div class=\"lista-archivos\">\r\n <mat-selection-list dense #listArchivos color=\"primary\">\r\n <mat-list-option *ngFor=\"let elm of archivos;index as i\" [value]=\"elm\">\r\n <div matListItemTitle>{{elm}}</div>\r\n </mat-list-option>\r\n </mat-selection-list>\r\n </div>\r\n <div class=\"botones\">\r\n <button mat-button color=\"primary\" [disabled]=\"listArchivos.selectedOptions.selected.length === 0\"\r\n (click)=\"eliminarArchivo(listArchivos.selectedOptions)\">\r\n Eliminar archivos seleccionados ({{listArchivos.selectedOptions.selected.length}})\r\n </button>\r\n <button mat-button color=\"warn\" [disabled]=\"archivos.length === 0\" (click)=\"eliminarTodosArchivos()\">\r\n Eliminar archivos\r\n </button>\r\n </div>\r\n</div>", styles: [":host{display:block;height:100%}:host p{text-align:center;font-size:12px;font-weight:lighter;margin:0}.contenedor{display:flex;align-items:center;justify-content:center;margin-top:10px;padding:10px;cursor:pointer;border-radius:10px;background-color:#f1f2f7;height:90%}.contenedor-input{display:none}.imagen{width:75px;height:75px;margin:0 auto;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48\" viewBox=\"0 96 960 960\" width=\"48\"><path d=\"M250 896q-86 0-148-62T40 686q0-78 49.5-137.5T217 477q20-97 94-158.5T482 257q113 0 189.5 81.5T748 534v24q72-2 122 46.5T920 727q0 69-50 119t-119 50H510q-24 0-42-18t-18-42V578l-83 83-43-43 156-156 156 156-43 43-83-83v258h241q45 0 77-32t32-77q0-45-32-77t-77-32h-63v-84q0-89-60.5-153T478 317q-89 0-150 64t-61 153h-19q-62 0-105 43.5T100 685q0 62 43.929 106.5Q187.857 836 250 836h140v60H250Zm230-290Z\" style=\"fill:rgb(131, 131, 131);\"/></svg>');background-repeat:no-repeat;background-position:center;background-size:contain}.archivo{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48\" viewBox=\"0 96 960 960\" width=\"48\"><path d=\"M319 806h322v-60H319v60Zm0-170h322v-60H319v60Zm-99 340q-24 0-42-18t-18-42V236q0-24 18-42t42-18h361l219 219v521q0 24-18 42t-42 18H220Zm331-554V236H220v680h520V422H551ZM220 236v186-186 680-680Z\" style=\"fill:rgb(131, 131, 131);\"/></svg>')!important}.archivo-lista{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48\" viewBox=\"0 96 960 960\" width=\"48\"><path d=\"m612 506 141-142-28-28-113 113-57-57-28 29 85 85ZM120 896v-60h480v60H120Zm519.894-290Q561 606 505.5 550.394t-55.5-134.5Q450 337 505.606 281.5t134.5-55.5Q719 226 774.5 281.606t55.5 134.5Q830 495 774.394 550.5t-134.5 55.5ZM120 556v-60h262q5.32 16.323 12.16 31.161Q401 542 409 556H120Zm0 170v-60h419q13.8 6.364 29.4 10.682Q584 681 600 683v43H120Z\" style=\"fill:rgb(131, 131, 131);\"/></svg>')!important}.titulo{font-size:medium!important;text-align:left!important;border-bottom:solid #40529d;margin-bottom:5px}.dragdrop{font-size:larger!important;margin-bottom:5px!important}.botones{display:flex;justify-content:space-between;background:#fff;padding:5px;border-radius:0 0 5px 5px}.contenedor-lista{border:solid 1px rgb(131,131,131);margin:5px;border-radius:5px;background-color:#f5f5f5;height:100%}.titulo-lista{text-align:left!important;background:#fff;padding:5px;font-weight:500!important;border-radius:5px 5px 0 0}.lista-archivos{max-height:250px;overflow:auto}.error{position:relative;font-size:small;color:#f5f5f5;padding:5px;font-weight:lighter;background-color:#be1704ab;border-radius:5px;margin:5px;text-align:center}.repetidos{list-style-type:auto}.repetidos li{text-align:left}.cerrar{position:absolute;top:5px;right:5px;border-radius:10px;background-color:#f5f5f5;border:none;height:20px;width:20px;color:#d36357;cursor:pointer}.avatar{opacity:.3;display:block}\n"] }]
342
+ }], ctorParameters: () => [{ type: i1.ProcesoArchivoCsv }], propDecorators: { titulo: [{
343
+ type: Input
344
+ }], muestraTitulo: [{
345
+ type: Input
346
+ }], extensionesAceptadas: [{
347
+ type: Input
348
+ }], tamanoMaximoArchivo: [{
349
+ type: Input
350
+ }], datosParaDataGrid: [{
351
+ type: Input
352
+ }], inputArchivo: [{
353
+ type: ViewChild,
354
+ args: ['inputArchivo']
355
+ }], listArchivos: [{
356
+ type: ViewChild,
357
+ args: ['listArchivos']
358
+ }], archivosMultiples: [{
359
+ type: Input
360
+ }], cargaDiferida: [{
361
+ type: Input
362
+ }], procesarCsvTabla: [{
363
+ type: Input
364
+ }], csvDatosProcesados: [{
365
+ type: Output
366
+ }], cambioArchivo: [{
367
+ type: Output
368
+ }] } });
369
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaS1kcmFnLWRyb3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZGktY29yZS9SZWRpRHJhZ0Ryb3Avc3JjL21vZHVsZXMvcmVkaS1kcmFnLWRyb3AvcmVkaS1kcmFnLWRyb3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZGktY29yZS9SZWRpRHJhZ0Ryb3Avc3JjL21vZHVsZXMvcmVkaS1kcmFnLWRyb3AvcmVkaS1kcmFnLWRyb3AuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7O0FBTzdFLE1BQU0sT0FBTyxxQkFBcUI7SUFvRGhDOztPQUVHO0lBQ0gsSUFBYyxhQUFhO1FBQ3pCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFjLGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxF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QjtzQkFBNUIsS0FBSztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQVVxQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBS0UsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQXlDWixpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBcUJPLGFBQWE7c0JBQXpCLEtBQUs7Z0JBcUJPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFlSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBT0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRMaXN0T3B0aW9uLCBNYXRTZWxlY3Rpb25MaXN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IFByb2Nlc29BcmNoaXZvQ3N2IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvcHJvY2Vzby1hcmNoaXZvLWNzdic7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmVkaS1kcmFnLWRyb3AnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWRpLWRyYWctZHJvcC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVkaS1kcmFnLWRyb3AuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtQcm9jZXNvQXJjaGl2b0Nzdl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlZGlEcmFnRHJvcENvbXBvbmVudCB7XHJcbiAgLyoqXHJcbiAgICogT2J0aWVuZSBvIGVzdGFibGVjZSBlbCB0aXR1bG8gcXVlIHNlIG1vc3RyYXJhIGVuIGVsIGNvbXBvbmVudGUuXHJcbiAgICogQGRlZmF1bHQgJ1N1YmUgdHUgYXJjaGl2bydcclxuICAgKi9cclxuICBASW5wdXQoKSB0aXR1bG86IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgKiBPYnRpZW5lIG8gZXN0YWJsZWNlIHNpIGVsIHRpdHVsbyBzZSBtdWVzdHJhLlxyXG4gICogQGRlZmF1bHQgJ3RydWUnXHJcbiAgKi9cclxuICBASW5wdXQoKSBtdWVzdHJhVGl0dWxvID0gdHJ1ZTtcclxuICBcclxuICAvKipcclxuICAgKiBPYnRpZW5lIG8gZXN0YWJsZWNlIGxhcyBleHRlbnNpb25lcyBhY2VwdGFkYXMgcG9yIGVsIGNvbXBvbmVudGUuXHJcbiAgICogQGRlZmF1bHQgQWNlcHRhIHRvZGFzIGxhcyBleHRlbnNpb25lcy5cclxuICAgKiBAZXhhbXBsZSAnLnBkZix4bHMsLnppcCdcclxuICAgKi9cclxuICBASW5wdXQoKSBleHRlbnNpb25lc0FjZXB0YWRhczogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBPYnRpZW5lIG8gZXN0YWJsZWNlIGVsIHRhbWHDsW8gbcOheGltbyAoTUIpIHBlcm1pdGlkbyBwYXJhIGNhZGEgYXJjaGl2byBxdWUgc2UgcHVlZGUgY2FyZ2FyIGVuIGVsIGNvbXBvbmVudGUuXHJcbiAgICogQGRlZmF1bHQgQWNlcHRhIGN1YWxxdWllciB0YW1hw7FvIHNpIG5vIGVzIGVzcGVjaWZpY2Fkby5cclxuICAgKi9cclxuICBASW5wdXQoKSB0YW1hbm9NYXhpbW9BcmNoaXZvOiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9idGllbmUgbyBlc3RhYmxlY2Ugc2kgbG9zIGRhdG9zIHByb2Nlc2Fkb3MgZW4gbGEgY2FyZ2EgZGUgdW4gYXJjaGl2byBgY3N2YCBzb24gcGFyYSBlbCBncmlkLlxyXG4gICAqIEBkZWZhdWx0IHRydWUgXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGF0b3NQYXJhRGF0YUdyaWQgPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBPYnRpZW5lIG8gZXN0YWJsZWNlIGVsIG1lbnNhamUgZGUgZXJyb3IuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG1lbnNhamVFcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBPYnRpZW5lIG8gZXN0YWJsZWNlIGVsIGlucHV0IHBhcmEgbGEgY2FyZ2EgZGUgbG9zIGFyY2hpdm9zLlxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0QXJjaGl2bycpIGlucHV0QXJjaGl2bzogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgKiBPYnRpZW5lIG8gZXN0YWJsZWNlIGxhIGxpc3RhIGRlIGxvcyBhcmNoaXZvcyBjYXJnYWRvcyBlbiBlbCBmcm9udC5cclxuICAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2xpc3RBcmNoaXZvcycpIGxpc3RBcmNoaXZvczogTWF0U2VsZWN0aW9uTGlzdCB8IHVuZGVmaW5lZDtcclxuXHJcblxyXG4gIC8qKiBcclxuICAgKiBPYnRpZW5lIG8gZXN0YWJsZWNlIGVsIGFyY2hpdm8gY2FyZ2Fkby5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXJjaGl2bzogRmlsZUxpc3QgfCB1bmRlZmluZWQgfCBudWxsO1xyXG4gIC8qKlxyXG4gICAqIFZlcmlmaWNhIHNpIGV4aXN0ZSBhcmNoaXZvIGNhcmdhZG8gZW4gZWwgY29tcG9uZW50ZS5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0IGV4aXN0ZUFyY2hpdm8oKSB7XHJcbiAgICBpZiAodGhpcy5hcmNoaXZvKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFyY2hpdm8ubGVuZ3RoID4gMDtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9idGllbmUgdW5hIGxpc3RhIGNvbiBsb3MgYXJjaGl2b3MgY2FyZ2Fkb3MuXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBhcmNoaXZvcygpIHtcclxuICAgIGlmICh0aGlzLmFyY2hpdm8pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhckxpc3RhTm9tYnJlQXJjaGl2b3ModGhpcy5hcmNoaXZvKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9idGllbmUgZWwgbm9tYnJlIGRlbCBwcmltZXIgYXJjaGl2byBkZSBsYSBsaXN0YS5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0IG5vbWJyZUFyY2hpdm8oKSB7IHJldHVybiB0aGlzLmFyY2hpdm8/Lml0ZW0oMCk/Lm5hbWU7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogT2J0aWVuZSBvIGVzdGFibGVjZSBzaSBsYSBjYXJnYSBkZSBhcmNoaXZvcyBlcyBtw7psdGlwbGUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtdWx0aXBsZSA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBFc3RhYmxlY2Ugc2kgbGEgY2FyZ2EgZGUgYXJjaGl2b3MgZXMgbcO6bHRpcGxlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNldCBhcmNoaXZvc011bHRpcGxlcyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMucHJvY2Vzb0Nzdikge1xyXG4gICAgICB0aGlzLm11bHRpcGxlID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm11bHRpcGxlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPYnRpZW5lIHNpIGxhIGNhcmdhIGRlIGxvcyBhcmNoaXZvcyBlcyBtw7psdGlwbGUuXHJcbiAgICovXHJcbiAgZ2V0IGFyY2hpdm9zTXVsdGlwbGVzKCkgeyByZXR1cm4gdGhpcy5tdWx0aXBsZTsgfVxyXG5cclxuICAvKipcclxuICAgKiBPYnRpZW5lIG8gZXN0YWJsZWNlIHNpIGxhIHNlbGVjY2nDs24gZGUgYXJjaGl2b3Msc2UgcmVhbGl6YXLDoSBkZXNkZSBkaXN0aW50b3MgZGlyZWN0b3Jpb3MuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZWxlY2Npb25EaWZlcmlkYSA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBFc3RhYmxlY2Ugc2kgbGEgc2VsZWNjacOzbiBkZSBhcmNoaXZvcyBzZSByZWFsaXphcsOhIGRlc2RlIGRpc3RpbnRvcyBkaXJlY3Rvcmlvcy5cclxuICAgKi9cclxuICBASW5wdXQoKSBzZXQgY2FyZ2FEaWZlcmlkYSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5tdWx0aXBsZSA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjY2lvbkRpZmVyaWRhID0gdmFsdWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9idGllbmUgc2kgbGEgc2VsZWNjacOzbiBkZSBhcmNoaXZvcyBzZSByZWFsaXphcsOhIGRlc2RlIGRpc3RpbnRvcyBkaXJlY3Rvcmlvcy5cclxuICAgKi9cclxuICBnZXQgY2FyZ2FEaWZlcmlkYSgpIHsgcmV0dXJuIHRoaXMuc2VsZWNjaW9uRGlmZXJpZGE7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogT2J0aWVuZSBvIGVzdGFibGVjZSBhcXVlbGxvcyBhcmNoaXZvcyBxdWUgeWEgc2UgZW5jdWVudHJhbiBjYXJnYWRvcyBlbiBlbCBjb21wb25lbnRlLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZXBldGlkb3M6IChzdHJpbmcgfCB1bmRlZmluZWQpW10gPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2J0aWVuZSBvIGVzdGFibGVjZSBxdWUgc2UgcmVhbGl6YXLDoSB1biBwcm9jZXNvIGRlIGxlY3R1cmEgYWwgYXJjaGl2byBjc3YgY2FyZ2FkbyBlbiBlbCBjb21wb25lbnRlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcHJvY2Vzb0NzdiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIEVzcGVjaWZpY2EgcXVlIGVsIGFyY2hpdm8gYSBjYXJnYXIgZW4gZWwgY29tcG9uZW50ZSBlcyB1biBgY3N2YC4gWSBlc3RhYmxlY2UgZW4gYHRydWVgIGxhIHByb3BpZWRhZCBgcHJvY2Vzb0NzdmAuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2V0IHByb2Nlc2FyQ3N2VGFibGEodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucHJvY2Vzb0NzdiA9IHZhbHVlO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuYXJjaGl2b3NNdWx0aXBsZXMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5leHRlbnNpb25lc0FjZXB0YWRhcyA9ICcuY3N2JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50byBxdWUgc2UgZW1pdGUgdW5hIHZleiBxdWUgZWwgYXJjaGl2byBgY3N2YCBlcyBwcm9jZXNhZG8uXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBTaSBsYSBwcm9waWVkYWQgwrRkYXRvc1BhcmFEYXRhR3JpZCA9IHRydWXCtCAgZGV2dWVsdmUgwrR7Y29sczpbXSxyb3dzOltdfcK0XHJcbiAgICogU2kgbGEgcHJvcGllZGFkIMK0ZGF0b3NQYXJhRGF0YUdyaWQgPSBmYWxzZcK0ICBkZXZ1ZWx2ZSDCtFt7cHJvcGllZGFkMTondmFsb3InLHByb3BpZWRhZDI6J3ZhbG9yMid9XcK0XHJcbiAgICogXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGNzdkRhdG9zUHJvY2VzYWRvcyA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2J0aWVuZSBvIGVzdGFibGVjZSBzaSBleGlzdGUgdW4gZXJyb3IuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGVycm9yID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBjYW1iaW9BcmNoaXZvID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlTGlzdCB8IG51bGw+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzb0FyY2hpdm9Dc3Y6IFByb2Nlc29BcmNoaXZvQ3N2KSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHF1ZSBlc3RhYmxlY2UgZWwgcHJvY2VzbyBhIHJlYWxpemFyIGNvbiBlbCBvIGxvcyBhcmNoaXZvcyBzZWxlY2Npb25hZG9zLlxyXG4gICAqIEBwYXJhbSBmaWxlTGlzdCBMb3MgYXJjaGl2b3Mgc2VsZWNjaW9uYWRvc1xyXG4gICAqL1xyXG4gIGVzdGFibGVjZXJQcm9jZXNvKGZpbGVMaXN0OiBGaWxlTGlzdCkge1xyXG4gICAgaWYgKHRoaXMuY2FyZ2FEaWZlcmlkYSkge1xyXG4gICAgICB0aGlzLnByb2Nlc2FyQXJjaGl2b3NQb3JTZXBhcmFkbyhmaWxlTGlzdCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5wcm9jZXNhckFyY2hpdm8oZmlsZUxpc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBlbmNhcmdhZG8gcGFyYSBlbCBwcm9jZXNvIGRlIGFyY2hpdm8gaW5kaXZpZHVhbC5cclxuICAgKiBAcGFyYW0gYXJjaGl2byBFbCBhcmNoaXZvIGNzdiBzZWxlY2Npb25hZG8uXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFzeW5jIHByb2Nlc2FyQXJjaGl2byhhcmNoaXZvOiBGaWxlTGlzdCkge1xyXG4gICAgaWYgKCF0aGlzLnZhbGlkb1RhbWFuaW9BcmNoaXZvcyhhcmNoaXZvKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFyY2hpdm8gPSAoYXJjaGl2by5sZW5ndGggPT09IDApID8gbnVsbCA6IGFyY2hpdm87XHJcbiAgICBpZiAodGhpcy5tYW5lam9FcnJvckV4dGVuc2lvbmVzVmFsaWRhcyh0aGlzLmFyY2hpdm9zLm1hcChzdHJpbmdBcmNoaXZvcyA9PiBzdHJpbmdBcmNoaXZvcz8uc3BsaXQoL1suXS8pLnBvcCgpID8/ICcnKSkpIHtcclxuICAgICAgaWYgKHRoaXMucHJvY2Vzb0Nzdikge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvY2Vzb0FyY2hpdm9Dc3YucHJvY2VzYXIoYXJjaGl2bywgdGhpcy5kYXRvc1BhcmFEYXRhR3JpZClcclxuICAgICAgICAgIC50aGVuKGRhdG9zID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jc3ZEYXRvc1Byb2Nlc2Fkb3MuZW1pdChkYXRvcyk7XHJcbiAgICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lc3RhYmxlY2VNZW5zYWplRXJyb3IoZXJyb3IubWVuc2FqZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXJjaGl2byA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuY3N2RGF0b3NQcm9jZXNhZG9zLmVtaXQobnVsbCk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jYW1iaW9BcmNoaXZvLmVtaXQodGhpcy5hcmNoaXZvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBNw6l0b2RvIGVuY2FyZ2FkbyBwYXJhIGVsIHByb2Nlc28gZGUgbcO6bHRpcGxlcyBhcmNoaXZvcy5cclxuICAgKiBAcGFyYW0gYXJjaGl2byBMb3MgYXJjaGl2b3Mgc2VsZWNjaW9uYWRvcy5cclxuICAgKiBAcmV0dXJucyBWb2lkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHByb2Nlc2FyQXJjaGl2b3NQb3JTZXBhcmFkbyhhcmNoaXZvOiBGaWxlTGlzdCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXBldGlkb3MgPSBbXTtcclxuICAgIGlmICghdGhpcy52YWxpZG9UYW1hbmlvQXJjaGl2b3MoYXJjaGl2bykpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXJjaGl2b3NOdWV2b3MgPSB0aGlzLmdlbmVyYXJMaXN0YU5vbWJyZUFyY2hpdm9zKGFyY2hpdm8pO1xyXG4gICAgaWYgKHRoaXMubWFuZWpvRXJyb3JFeHRlbnNpb25lc1ZhbGlkYXMoYXJjaGl2b3NOdWV2b3MubWFwKHN0cmluZ0FyY2hpdm9zID0+IHN0cmluZ0FyY2hpdm9zPy5zcGxpdCgvWy5dLykucG9wKCkgPz8gJycpKSkge1xyXG4gICAgICBpZiAodGhpcy5hcmNoaXZvKSB7XHJcbiAgICAgICAgdGhpcy5jYXJnYXJBcmNoaXZvcyhhcmNoaXZvLCBhcmNoaXZvc051ZXZvcyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hcmNoaXZvID0gYXJjaGl2bztcclxuICAgICAgICAodGhpcy5pbnB1dEFyY2hpdm8/Lm5hdGl2ZUVsZW1lbnQgfHwge30pLmZpbGVzID0gdGhpcy5hcmNoaXZvO1xyXG4gICAgICAgIHRoaXMuY2FtYmlvQXJjaGl2by5lbWl0KHRoaXMuYXJjaGl2byk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gcXVlIGNhcmdhIGxvcyBhcmNoaXZvcyBudWV2b3MgYSBsYSBsaXN0YSBkZSBhcmNoaXZvcyBzZWxlY2Npb25hZG9zIGFudGVyaW9ybWVudGUuXHJcbiAgICogQHBhcmFtIGFyY2hpdm8gTG9zIGFyY2hpdm9zIHNlbGVjY2lvbmFkb3MgXHJcbiAgICogQHBhcmFtIGFyY2hpdm9zTnVldm9zIEFycmVnbG8gY29uIGxhIGxpc3RhIGRlIGxvcyBhcmNoaXZvcyBzZWxlY2Npb25hZG9zLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2FyZ2FyQXJjaGl2b3MoYXJjaGl2bzogRmlsZUxpc3QsIGFyY2hpdm9zTnVldm9zOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpO1xyXG4gICAgY29uc3QgcmVwZXRpZG9zID0gdGhpcy5nZW5lcmFyTGlzdGFOb21icmVBcmNoaXZvcyh0aGlzLmFyY2hpdm8gPz8gbmV3IEZpbGVMaXN0KCkpLm1hcChub21icmVBcmNoaXZvID0+IHtcclxuICAgICAgcmV0dXJuIGFyY2hpdm9zTnVldm9zLmZpbmQoZWxtID0+IGVsbSA9PT0gbm9tYnJlQXJjaGl2byk7XHJcbiAgICB9KS5maWx0ZXIobyA9PiAhIW8pO1xyXG5cclxuICAgIGlmIChyZXBldGlkb3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAodGhpcy5hcmNoaXZvID8/IG5ldyBGaWxlTGlzdCgpKS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBkYXRhVHJhbnNmZXIuaXRlbXMuYWRkKCh0aGlzLmFyY2hpdm8gPz8gbmV3IEZpbGVMaXN0KCkpW2luZGV4XSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcmNoaXZvLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGRhdGFUcmFuc2Zlci5pdGVtcy5hZGQoYXJjaGl2b1tpbmRleF0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFyY2hpdm8gPSBkYXRhVHJhbnNmZXIuZmlsZXM7XHJcbiAgICAgICh0aGlzLmlucHV0QXJjaGl2bz8ubmF0aXZlRWxlbWVudCB8fCB7fSkuZmlsZXMgPSB0aGlzLmFyY2hpdm87XHJcbiAgICAgIHRoaXMuY2FtYmlvQXJjaGl2by5lbWl0KHRoaXMuYXJjaGl2byk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlcGV0aWRvcy5wdXNoKC4uLnJlcGV0aWRvcyk7XHJcbiAgICAgICh0aGlzLmlucHV0QXJjaGl2bz8ubmF0aXZlRWxlbWVudCB8fCB7fSkuZmlsZXMgPSB0aGlzLmFyY2hpdm87XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHF1ZSBlbGltaW5hIGxvcyBhcmNoaXZvcyBzZWxlY2Npb25hZG9zIGRlIGxpc3RhLlxyXG4gICAqIEBwYXJhbSBzZWxlY3Rpb25Nb2RlbCBMYSBsaXN0YSBkZSBvcGNpb25lcyBzZWxlY2Npb25hZGFzXHJcbiAgICovXHJcbiAgZWxpbWluYXJBcmNoaXZvKHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxNYXRMaXN0T3B0aW9uPik6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpO1xyXG4gICAgY29uc3QgYXJjaGl2b3NDYXJnYWRvcyA9ICh0aGlzLmFyY2hpdm8gYXMgRmlsZUxpc3QpO1xyXG4gICAgY29uc3QgYXJjaGl2b3NUb0VsaW1pbmFyOiBzdHJpbmdbXSA9IHNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkLm1hcDxzdHJpbmc+KChtYXRMaXN0T3B0aW9uOiBNYXRMaXN0T3B0aW9uKSA9PiBtYXRMaXN0T3B0aW9uLnZhbHVlLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcmNoaXZvc0NhcmdhZG9zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBpZiAoIWFyY2hpdm9zVG9FbGltaW5hci5zb21lKHN0cmluZ0FyY2hpdm9zID0+IHN0cmluZ0FyY2hpdm9zID09PSBhcmNoaXZvc0NhcmdhZG9zLml0ZW0oaW5kZXgpPy5uYW1lKSkge1xyXG4gICAgICAgIGRhdGFUcmFuc2Zlci5pdGVtcy5hZGQoYXJjaGl2b3NDYXJnYWRvc1tpbmRleF0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5hcmNoaXZvID0gZGF0YVRyYW5zZmVyLmZpbGVzO1xyXG4gICAgICAodGhpcy5pbnB1dEFyY2hpdm8/Lm5hdGl2ZUVsZW1lbnQgfHwge30pLmZpbGVzID0gZGF0YVRyYW5zZmVyLmZpbGVzO1xyXG4gICAgICB0aGlzLmNhbWJpb0FyY2hpdm8uZW1pdCh0aGlzLmFyY2hpdm8pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbGltaW5hclRvZG9zQXJjaGl2b3MoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVsaW1pbmFyVG9kb3NBcmNoaXZvcygpIHtcclxuICAgIHRoaXMuYXJjaGl2byA9IG51bGw7XHJcbiAgICAodGhpcy5pbnB1dEFyY2hpdm8/Lm5hdGl2ZUVsZW1lbnQgfHwge30pLmZpbGVzID0gbnVsbDtcclxuICAgICh0aGlzLmlucHV0QXJjaGl2bz8ubmF0aXZlRWxlbWVudCB8fCB7fSkudmFsdWUgPSAnJztcclxuXHJcbiAgICB0aGlzLmNhbWJpb0FyY2hpdm8uZW1pdCh0aGlzLmFyY2hpdm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBxdWUgZ2VuZXJhIHkgcmV0b3JuYSB1biBhcnJlZ2xvIGNvbiBsb3Mgbm9tYnJlcyBkZSBsb3MgYXJjaGl2b3MgY2FyZ2Fkb3MuXHJcbiAgICogQHBhcmFtIGZpbGVMaXN0IE9iamV0byBxdWUgY29udGllbmUgbG9zIGFyY2hpdm9zIHNlbGVjY2lvbmFkb3NcclxuICAgKiBAcmV0dXJucyBSZXRvcm5hIGFycmVnbG8gZGUgY2FkZW5hcy5cclxuICAgKiBgWydhcmNoaXZvLnBkZicsJ2FyY2hpdm8yLmF2aSddYFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2VuZXJhckxpc3RhTm9tYnJlQXJjaGl2b3MoZmlsZUxpc3Q6IEZpbGVMaXN0KSB7XHJcbiAgICBjb25zdCBhcmNoaXZvcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZpbGVMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBhcmNoaXZvcy5wdXNoKGZpbGVMaXN0Lml0ZW0oaW5kZXgpPy5uYW1lID8/ICcnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhcmNoaXZvcy5zb3J0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHF1ZSBnZW5lcmEgeSByZXRvcm5hIHVuIGFycmVnbG8gbnVtw6lyaWNvIGNvbiBsb3MgdGFtYcOxb3MgZGUgY2FkYSB1bm8gZGUgbG9zIGFyY2hpdm9zIHNlbGVjY2lvbmFkb3MuXHJcbiAgICogQHBhcmFtIGZpbGVMaXN0IE9iamV0byBxdWUgY29udGllbmUgbG9zIGFyY2hpdm9zIHNlbGVjY2lvbmFkb3NcclxuICAgKiBAcmV0dXJucyBSZXRvcm5hIGFycmVnbG8gbnVtw6lyaWNvIGNvbiBlbCB0YW1hw7FvIGRlIGNhZGEgYXJjaGl2byBlbiBieXRlcy5cclxuICAgKiBgWzEyNDY2MSwxMjMxMzJdYFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2VuZXJhckxpc3RhVGFtYW5pb0FyY2hpdm9zKGZpbGVMaXN0OiBGaWxlTGlzdCk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IGFyY2hpdm9zOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZpbGVMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBhcmNoaXZvcy5wdXNoKGZpbGVMaXN0Lml0ZW0oaW5kZXgpPy5zaXplID8/IDApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyY2hpdm9zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBxdWUgdmVyaWZpY2Egc2kgbGFzIGV4dGVuc2lvbmVzIHNvbiB2w6FsaWRhcy5cclxuICAgKiBAcGFyYW0gZXh0ZW5zaW9uZXNBcmNoaXZvc1NlbGVjY2lvbmFkb3MgQXJyZWdsbyBjb24gbGFzIGV4dGVuc2lvbmVzIGRlIGNhZGEgdW5vIGRlIGxvcyBhcmNoaXZvcyBzZWxlY2Npb25hZG9zLlxyXG4gICAqIEByZXR1cm5zIEJvb2xlYW5cclxuICAgKi9cclxuICBwcml2YXRlIG1hbmVqb0Vycm9yRXh0ZW5zaW9uZXNWYWxpZGFzKGV4dGVuc2lvbmVzQXJjaGl2b3NTZWxlY2Npb25hZG9zOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKHRoaXMuZXh0ZW5zaW9uZXNBY2VwdGFkYXMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudmVyaWZpY2FFeHRlbnNpb25lcyhleHRlbnNpb25lc0FyY2hpdm9zU2VsZWNjaW9uYWRvcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMuY2FyZ2FEaWZlcmlkYSkge1xyXG4gICAgICAgICh0aGlzLmlucHV0QXJjaGl2bz8ubmF0aXZlRWxlbWVudCB8fCB7fSkuZmlsZXMgPSB0aGlzLmFyY2hpdm87XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gcXVlIHZlcmlmaWNhIHNpIGxhcyBleHRlbnNpb25lcyBkZSBsb3MgYXJjaGl2b3Mgc2VsZWNjaW9uYWRvcyBzb24gdsOhbGlkYXMsIHkgYXNpZ25hIGxvcyBhcmNoaXZvc1xyXG4gICAqICBhIGxhIHByb3BpZWRhZCBgaW5wdXRBcmNoaXZvYCBlbiBjYXNvIGRlIHF1ZSBzZWFuIHbDoWxpZG9zLlxyXG4gICAqIEBwYXJhbSBleHRlbnNpb25lc0FyY2hpdm9zU2VsZWNjaW9uYWRvcyBBcnJlZ2xvIGNvbiBsYXMgZXh0ZW5zaW9uZXMgZGUgY2FkYSB1bm8gZGUgbG9zIGFyY2hpdm9zIHNlbGVjY2lvbmFkb3MuXHJcbiAgICogQHJldHVybnMgQm9vbGVhblxyXG4gICAqL1xyXG4gIHByaXZhdGUgdmVyaWZpY2FFeHRlbnNpb25lcyhleHRlbnNpb25lc0FyY2hpdm9zU2VsZWNjaW9uYWRvczogc3RyaW5nW10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGV4dGVuc2lvbmVzID0gdGhpcy5leHRlbnNpb25lc0FjZXB0YWRhcz8uc3BsaXQoLywvKS5tYXAoZXh0ZW5zaW9uID0+IGV4dGVuc2lvbi5yZXBsYWNlKC8uLywgJycpKTtcclxuICAgIGlmICghdGhpcy5leHRlbnNpb25lc1ZhbGlkYXMoZXh0ZW5zaW9uZXMgPz8gW10sIGV4dGVuc2lvbmVzQXJjaGl2b3NTZWxlY2Npb25hZG9zKSkge1xyXG4gICAgICB0aGlzLmVzdGFibGVjZU1lbnNhamVFcnJvcihcclxuICAgICAgICB0aGlzLmFyY2hpdm9zTXVsdGlwbGVzID8gJ0V4aXN0ZSBhcmNoaXZvIG5vIHbDoWxpZG8gZW4gc3Ugc2VsZWNjacOzbi4gSW50ZW50ZSBudWV2YW1lbnRlLicgOiAnRWwgYXJjaGl2byBubyBlcyB2w6FsaWRvJ1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoIXRoaXMuY2FyZ2FEaWZlcmlkYSkge1xyXG4gICAgICAgICh0aGlzLmlucHV0QXJjaGl2bz8ubmF0aXZlRWxlbWVudCB8fCB7fSkuZmlsZXMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuYXJjaGl2byA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmNhcmdhRGlmZXJpZGEpIHtcclxuICAgICAgICAodGhpcy5pbnB1dEFyY2hpdm8/Lm5hdGl2ZUVsZW1lbnQgfHwge30pLmZpbGVzID0gdGhpcy5hcmNoaXZvO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBwYXJhIGVzdGFibGVjZXIgZWwgbWVuc2FqZSBkZSBlcnJvciBlbiBlbCBjb21wb25lbnRlLCBlbCBtZW5zYWplIGR1cmEgMyBzZWd1bmRvcyBkZXNwdcOpcyBkZSBlc28gZGVzYXBhcmVjZS5cclxuICAgKiBAcGFyYW0gbWVuc2FqZSBFbCBtZW5zYWplICBkZSBlcnJvciBhIG1vc3RyYXIgZW4gZWwgY29tcG9uZW50ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZXN0YWJsZWNlTWVuc2FqZUVycm9yKG1lbnNhamU6IHN0cmluZykge1xyXG4gICAgY29uc3QgdGllbXBvID0gMzAwMDtcclxuICAgIHRoaXMubWVuc2FqZUVycm9yID0gbWVuc2FqZTtcclxuICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcclxuICAgIH0sIHRpZW1wbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHF1ZSB2YWxpZGEgc2kgbGFzIGV4dGVuc2lvbmVzIGRlIGxvcyBhcmNoaXZvcyBzb24gdsOhbGlkb3MgY29uIHJlc3BlY3RvcyBhIGxvcyBlc3BlY2lmaWNhZG9zIGVuIGxhIHByb3BpZWRhZCBgZXh0ZW5zaW9uZXNBY2VwdGFkYXNgLlxyXG4gICAqIEBwYXJhbSBleHRlbnNpb25lcyBBcnJlZ2xvIHF1ZSBjb250aWVuZSBsYXMgZXh0ZW5zaW9uZXMgYWNlcHRhZGFzIHBvciBlbCBjb21wb25lbnRlLlxyXG4gICAqIEBwYXJhbSBleHRlbnNpb25lc0FyY2hpdm9zU2VsZWNjaW9uYWRvcyBBcnJlZ2xvIHF1ZSBjb250aWVuZSBsYSBleHRlbnNpb25lcyBkZSBsb3MgYXJjaGl2b3Mgc2VsZWNjaW9uYWRvcy5cclxuICAgKiBAcmV0dXJucyBCb29sZWFuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBleHRlbnNpb25lc1ZhbGlkYXMoZXh0ZW5zaW9uZXM6IHN0cmluZ1tdLCBleHRlbnNpb25lc0FyY2hpdm9zU2VsZWNjaW9uYWRvczogc3RyaW5nW10pIHtcclxuICAgIHJldHVybiBleHRlbnNpb25lc0FyY2hpdm9zU2VsZWNjaW9uYWRvcy5ldmVyeSh2YWxvciA9PiBleHRlbnNpb25lcy5pbmNsdWRlcyh2YWxvcikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBwYXJhIHZhbGlkYXIgcXVlIGVsIHRhbWHDsW8gZGUgbG9zIGFyY2hpdm9zIHNlbGVjY2lvbmFkb3Mgc2VhIG1lbm9yIG8gaWd1YWwgYWwgZXNwZWNpZmljYWRvIGVuIGxhIHByb3BpZWRhZCBgdGFtYW5vTWF4aW1vQXJjaGl2b2AuIFNpIGVzdGUgbm8gZXMgZXNwZWNpZmljYWRvXHJcbiAgICogc2UgcGVybWl0ZSBjdWFscXVpZXIgdGFtYcOxbyBkZSBhcmNoaXZvLlxyXG4gICAqIEBwYXJhbSBhcmNoaXZvIEVsIG8gbG9zIGFyY2hpdm9zIHNlbGVjY2lvbmFkb3MuXHJcbiAgICogQHJldHVybnMgQm9vbGVhblxyXG4gICAqL1xyXG4gIHByaXZhdGUgdmFsaWRvVGFtYW5pb0FyY2hpdm9zKGFyY2hpdm86IEZpbGVMaXN0KSB7XHJcbiAgICBpZiAodGhpcy50YW1hbm9NYXhpbW9BcmNoaXZvKSB7XHJcbiAgICAgIGlmICh0aGlzLnRhbWFub01heGltb0FyY2hpdm8gPD0gMCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBubyA9IDEwMjQ7XHJcbiAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnRhbWFub01heGltb0FyY2hpdm8gKiBubyAqIG5vO1xyXG4gICAgICBpZiAodGhpcy5nZW5lcmFyTGlzdGFUYW1hbmlvQXJjaGl2b3MoYXJjaGl2bykuc29tZSh0YW1hbm9BYXJjaGl2byA9PiB0YW1hbm9BYXJjaGl2byA+IHNpemUpKSB7XHJcbiAgICAgICAgdGhpcy5lc3RhYmxlY2VNZW5zYWplRXJyb3IoYEVsIHRhbWHDsW8gbcOheGltbyBwb3IgYXJjaGl2byBlcyBkZTogJHt0aGlzLnRhbWFub01heGltb0FyY2hpdm99IE1CYCk7XHJcbiAgICAgICAgKHRoaXMuaW5wdXRBcmNoaXZvPy5uYXRpdmVFbGVtZW50IHx8IHt9KS5maWxlcyA9IHRoaXMuZXhpc3RlQXJjaGl2byA/IHRoaXMuYXJjaGl2byA6IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPHAgKm5nSWY9XCJtdWVzdHJhVGl0dWxvXCIgY2xhc3M9XCJ0aXR1bG9cIj57e3RpdHVsbz8gdGl0dWxvIDogJ1N1YmUgdHUgYXJjaGl2byd9fTwvcD5cclxuPGRpdiBjbGFzcz1cImNvbnRlbmVkb3JcIiBtYXRSaXBwbGUgZHJhZ0Ryb3AgKGNsaWNrZWQpPVwiaW5wdXRBcmNoaXZvLmNsaWNrKClcIiB0YWJpbmRleD1cIjBcIlxyXG4gICAgKGZpbGVEcm9wcGVkKT1cImVzdGFibGVjZXJQcm9jZXNvKCRldmVudClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWlucHV0XCI+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cImZpbGVcIj4gRmlsZTwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IGlkPVwiZmlsZVwiIG5hbWU9XCJmaWxlXCIgdHlwZT1cImZpbGVcIiAjaW5wdXRBcmNoaXZvIGhpZGRlblxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cImVzdGFibGVjZXJQcm9jZXNvKCRhbnkoJGV2ZW50KS50YXJnZXQuZmlsZXMpXCIgW211bHRpcGxlXT1cImFyY2hpdm9zTXVsdGlwbGVzXCJcclxuICAgICAgICAgICAgW2FjY2VwdF09XCJleHRlbnNpb25lc0FjZXB0YWRhc1wiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWV4aXN0ZUFyY2hpdm9cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VuXCI+PC9kaXY+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkcmFnZHJvcFwiPiBEUkFHICYgRFJPUCA8L3A+XHJcbiAgICAgICAgPHA+IEFycmFzdHJlIHkgc3VlbHRlIGFxdcOtIMOzIGNsaWNrIHBhcmEgYnVzY2FyIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImV4aXN0ZUFyY2hpdm8gJiYgIWFyY2hpdm9zTXVsdGlwbGVzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlbiBhcmNoaXZvXCI+PC9kaXY+XHJcbiAgICAgICAgPHA+e3tub21icmVBcmNoaXZvfX08L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJleGlzdGVBcmNoaXZvICYmIGFyY2hpdm9zTXVsdGlwbGVzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlbiBhcmNoaXZvLWxpc3RhXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiZXJyb3JcIj5cclxuICAgIDxwPnt7bWVuc2FqZUVycm9yfX08L3A+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwiZXJyb3JcIiAqbmdJZj1cInJlcGV0aWRvcy5sZW5ndGggPiAwXCI+XHJcbiAgICA8cD4gTG9zIHNpZ3VpZW50ZXMgYXJjaGl2b3MgeWEgc2UgZW5jdWVudHJhbiBjYXJnYWRvczogPC9wPlxyXG4gICAgPHVsIGNsYXNzPVwicmVwZXRpZG9zXCI+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByIG9mIHJlcGV0aWRvc1wiPnt7cn19PC9saT5cclxuICAgIDwvdWw+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiY2VycmFyXCIgKGNsaWNrKT1cInJlcGV0aWRvcz1bXVwiPiBYIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJleGlzdGVBcmNoaXZvICYmIGFyY2hpdm9zTXVsdGlwbGVzXCIgY2xhc3M9XCJjb250ZW5lZG9yLWxpc3RhXCI+XHJcbiAgICA8cCBjbGFzcz1cInRpdHVsby1saXN0YVwiPiBBcmNoaXZvcyBzZWxlY2lvbmFkb3Mge3thcmNoaXZvcy5sZW5ndGh9fTwvcD5cclxuICAgIDxkaXYgY2xhc3M9XCJsaXN0YS1hcmNoaXZvc1wiPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgZGVuc2UgI2xpc3RBcmNoaXZvcyBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZWxtIG9mIGFyY2hpdm9zO2luZGV4IGFzIGlcIiBbdmFsdWVdPVwiZWxtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG1hdExpc3RJdGVtVGl0bGU+e3tlbG19fTwvZGl2PlxyXG4gICAgICAgICAgICA8L21hdC1saXN0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImJvdG9uZXNcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImxpc3RBcmNoaXZvcy5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID09PSAwXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImVsaW1pbmFyQXJjaGl2byhsaXN0QXJjaGl2b3Muc2VsZWN0ZWRPcHRpb25zKVwiPlxyXG4gICAgICAgICAgICBFbGltaW5hciBhcmNoaXZvcyBzZWxlY2Npb25hZG9zICh7e2xpc3RBcmNoaXZvcy5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RofX0pXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwid2FyblwiIFtkaXNhYmxlZF09XCJhcmNoaXZvcy5sZW5ndGggPT09IDBcIiAoY2xpY2spPVwiZWxpbWluYXJUb2Rvc0FyY2hpdm9zKClcIj5cclxuICAgICAgICAgICAgRWxpbWluYXIgYXJjaGl2b3NcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -0,0 +1,34 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { RediDragDropComponent } from './redi-drag-drop/redi-drag-drop.component';
4
+ import { MatListModule } from '@angular/material/list';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { MatRippleModule } from '@angular/material/core';
8
+ import { DragDropDirective } from '../models/directives/drag-drop.directive';
9
+ import * as i0 from "@angular/core";
10
+ export class RediDragDropModule {
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RediDragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.4", ngImport: i0, type: RediDragDropModule, declarations: [RediDragDropComponent,
13
+ DragDropDirective], imports: [CommonModule,
14
+ MatListModule, MatButtonModule, MatIconModule, MatRippleModule], exports: [RediDragDropComponent] }); }
15
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RediDragDropModule, imports: [CommonModule,
16
+ MatListModule, MatButtonModule, MatIconModule, MatRippleModule] }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RediDragDropModule, decorators: [{
19
+ type: NgModule,
20
+ args: [{
21
+ declarations: [
22
+ RediDragDropComponent,
23
+ DragDropDirective
24
+ ],
25
+ imports: [
26
+ CommonModule,
27
+ MatListModule, MatButtonModule, MatIconModule, MatRippleModule
28
+ ],
29
+ exports: [
30
+ RediDragDropComponent
31
+ ]
32
+ }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaS1kcmFnLWRyb3AubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZGktY29yZS9SZWRpRHJhZ0Ryb3Avc3JjL21vZHVsZXMvcmVkaS1kcmFnLWRyb3AubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBR2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFlN0UsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsaUJBWDNCLHFCQUFxQjtZQUNyQixpQkFBaUIsYUFHakIsWUFBWTtZQUNaLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsYUFHOUQscUJBQXFCOytHQUdaLGtCQUFrQixZQVAzQixZQUFZO1lBQ1osYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZTs7MkZBTXJELGtCQUFrQjtrQkFiOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1oscUJBQXFCO3dCQUNyQixpQkFBaUI7cUJBQ2xCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWU7cUJBQy9EO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7cUJBQ3RCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUmVkaURyYWdEcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9yZWRpLWRyYWctZHJvcC9yZWRpLWRyYWctZHJvcC5jb21wb25lbnQnO1xyXG5cclxuXHJcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRSaXBwbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgRHJhZ0Ryb3BEaXJlY3RpdmUgfSBmcm9tICcuLi9tb2RlbHMvZGlyZWN0aXZlcy9kcmFnLWRyb3AuZGlyZWN0aXZlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBSZWRpRHJhZ0Ryb3BDb21wb25lbnQsXHJcbiAgICBEcmFnRHJvcERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0TGlzdE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRSaXBwbGVNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFJlZGlEcmFnRHJvcENvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlZGlEcmFnRHJvcE1vZHVsZSB7IH1cclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJlZGktY29yZS1SZWRpR3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWRpLWNvcmUvUmVkaUdyaWQvbmd4LXJlZGktY29yZS1SZWRpR3JpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,5 @@
1
+ export * from './src/modules/redi-grid.module';
2
+ export * from './src/modules/redi-grid/redi-grid.component';
3
+ export * from './src/models/interfaces/cell';
4
+ export * from './src/models/interfaces/data-grid';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWRpLWNvcmUvUmVkaUdyaWQvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL21vZHVsZXMvcmVkaS1ncmlkLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL21vZHVsZXMvcmVkaS1ncmlkL3JlZGktZ3JpZC5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvbW9kZWxzL2ludGVyZmFjZXMvY2VsbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL21vZGVscy9pbnRlcmZhY2VzL2RhdGEtZ3JpZCc7Il19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWRpLWNvcmUvUmVkaUdyaWQvc3JjL21vZGVscy9pbnRlcmZhY2VzL2NlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBJbnRlcmZhY2UgcXVlIHJlcHJlc2VudGEgdW5hIGNlbGRhIGVuIGVsIGdyaWRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbCB7XHJcbiAgICAvKipcclxuICAgICAqIEluZGljZSBkZSBsYSBjb2x1bW5hXHJcbiAgICAgKi9cclxuICAgIGluZGljZUNvbHVtbmE/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2UgZGUgbGEgZmlsYVxyXG4gICAgICovXHJcbiAgICBpbmRpY2VGaWxhPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNpIGVzIHZhbGlkb1xyXG4gICAgICovXHJcbiAgICBlc1ZhbGlkbz86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250aWVuZSBlbCB0YW1hw7FvIG3DoXhpbW9cclxuICAgICAqL1xyXG4gICAgbG9uZ2l0dWQ/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250aWVuZSBlbCB2YWxvciBkZSBsYSBjZWxkYVxyXG4gICAgICovXHJcbiAgICB2YWxvcj86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzaSBzdSB2YWxvciBmdWUgZWRpdGFkbyBlbiBlbCBncmlkXHJcbiAgICAgKi9cclxuICAgIGVkaXRhZG8/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNpIGVsIHZhbG9yIGVzdGEgYmxvcXVlYWRvXHJcbiAgICAgKi9cclxuICAgIGJsb3F1ZWFkbz86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9waWVkYWQgcXVlIGluZGljYSBzaSBlbCB2YWxvciBlcyBzZXJpYWxpemFibGVcclxuICAgICAqL1xyXG4gICAgc2VyaWFsaXphYmxlPzogYm9vbGVhbjtcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZGktY29yZS9SZWRpR3JpZC9zcmMvbW9kZWxzL2ludGVyZmFjZXMvZGF0YS1ncmlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZWxsIH0gZnJvbSAnLi9jZWxsJztcclxuXHJcbi8qKlxyXG4gKiBJbnRlcmZhY2UgcXVlIGNvbnRpZW5lIGxhIGNvbmZpZ3VyYWNpw7NuIHkgZWwgb3JpZ2VuIGRlIGRhdG9zIHBhcmEgdW4gR3JpZFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZCB7XHJcbiAgICAvKipcclxuICAgICAqIENvbnRpZW5lIGVsIGFycmVnbG8gZGUgY2VsdGFzIHBhcmEgZWwgR3JpZFxyXG4gICAgICovXHJcbiAgICBjb2x1bW5hczogQXJyYXk8Q2VsbD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250aWVuZSBlbCBhcnJlZ2xvIGRlIGZpbGFzIHBhcmEgZWwgZ3JpZFxyXG4gICAgICovXHJcbiAgICBmaWxhczogQXJyYXk8QXJyYXk8Q2VsbD4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcGllZGFkIHF1ZSBpbmRpY2Egc2kgZWwgZ3JpZCBzZSBlbnVtZXJhXHJcbiAgICAgKi9cclxuICAgIGVudW1lcmFibGU/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcGllZGFkIHF1ZSBpbmRpY2Egc2kgZWwgZ3JpZCBlcyBlZGl0YWJsZVxyXG4gICAgICovXHJcbiAgICBlZGl0YWJsZT86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJlZ2xvIGRlIGluZGljZXMgZGUgY29sdW1uYXMgYmxvcXVlYWRhc1xyXG4gICAgICovXHJcbiAgICBibG9xdWVhckNvbHVtbmFzPzogQXJyYXk8bnVtYmVyPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFycmVnbG8gZGUgaW5kaWNlcyBkZSBjb2x1bW5hcyBubyB2aXNpYmxlc1xyXG4gICAgICovXHJcbiAgICBvY3VsdGFyQ29sdW1uYXM/OiBBcnJheTxudW1iZXI+XHJcbn1cclxuIl19