libey-ng-component-library 0.0.32 → 0.0.34

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 (69) hide show
  1. package/karma.conf.js +44 -0
  2. package/ng-package.json +13 -0
  3. package/package.json +17 -24
  4. package/src/lib/cpm-indicator/libey-ng-cpm-indicator.component.css +216 -0
  5. package/src/lib/cpm-indicator/libey-ng-cpm-indicator.component.html +201 -0
  6. package/src/lib/cpm-indicator/libey-ng-cpm-indicator.component.spec.ts +25 -0
  7. package/src/lib/cpm-indicator/libey-ng-cpm-indicator.component.ts +203 -0
  8. package/src/lib/cpm-indicator/libey-ng-cpm-indicator.module.ts +19 -0
  9. package/src/lib/icons/icons.component.css +9 -0
  10. package/src/lib/icons/icons.module.ts +16 -0
  11. package/src/lib/icons/libey-ng-icons/libey-ng-icons.component.html +1831 -0
  12. package/src/lib/icons/libey-ng-icons/libey-ng-icons.component.ts +36 -0
  13. package/src/lib/libey-ng-component-library.component.spec.ts +25 -0
  14. package/src/lib/libey-ng-component-library.component.ts +20 -0
  15. package/src/lib/libey-ng-component-library.module.ts +32 -0
  16. package/src/lib/libey-ng-component-library.service.spec.ts +16 -0
  17. package/src/lib/libey-ng-component-library.service.ts +9 -0
  18. package/src/lib/signature/libey-ng-signature/libey-ng-signature.component.css +7 -0
  19. package/src/lib/signature/libey-ng-signature/libey-ng-signature.component.html +41 -0
  20. package/src/lib/signature/libey-ng-signature/libey-ng-signature.component.spec.ts +25 -0
  21. package/src/lib/signature/libey-ng-signature/libey-ng-signature.component.ts +214 -0
  22. package/src/lib/signature/libey-ng-signature.module.ts +30 -0
  23. package/src/lib/table/directives/libey-column.directive.ts +29 -0
  24. package/src/lib/table/libey-ng-table.component.css +249 -0
  25. package/src/lib/table/libey-ng-table.component.html +122 -0
  26. package/src/lib/table/libey-ng-table.component.ts +234 -0
  27. package/src/lib/table/libey-ng-table.module.ts +13 -0
  28. package/{public-api.d.ts → src/public-api.ts} +4 -0
  29. package/src/test.ts +28 -0
  30. package/src/utils/CpmIndicator/cpm-indicator-types.ts +63 -0
  31. package/src/utils/SigWeb/SigWeb.ts +1906 -0
  32. package/tsconfig.lib.json +20 -0
  33. package/tsconfig.lib.prod.json +10 -0
  34. package/tsconfig.spec.json +17 -0
  35. package/bundles/libey-ng-component-library.umd.js +0 -2497
  36. package/bundles/libey-ng-component-library.umd.js.map +0 -1
  37. package/esm2015/lib/cpm-indicator/libey-ng-cpm-indicator.component.js +0 -193
  38. package/esm2015/lib/cpm-indicator/libey-ng-cpm-indicator.module.js +0 -26
  39. package/esm2015/lib/icons/icons.module.js +0 -26
  40. package/esm2015/lib/icons/libey-ng-icons/libey-ng-icons.component.js +0 -52
  41. package/esm2015/lib/libey-ng-component-library.component.js +0 -26
  42. package/esm2015/lib/libey-ng-component-library.module.js +0 -60
  43. package/esm2015/lib/libey-ng-component-library.service.js +0 -14
  44. package/esm2015/lib/signature/libey-ng-signature/libey-ng-signature.component.js +0 -197
  45. package/esm2015/lib/signature/libey-ng-signature.module.js +0 -57
  46. package/esm2015/lib/table/directives/libey-column.directive.js +0 -56
  47. package/esm2015/lib/table/libey-ng-table.component.js +0 -229
  48. package/esm2015/lib/table/libey-ng-table.module.js +0 -21
  49. package/esm2015/libey-ng-component-library.js +0 -5
  50. package/esm2015/public-api.js +0 -23
  51. package/esm2015/utils/CpmIndicator/cpm-indicator-types.js +0 -25
  52. package/esm2015/utils/SigWeb/SigWeb.js +0 -1442
  53. package/fesm2015/libey-ng-component-library.js +0 -2393
  54. package/fesm2015/libey-ng-component-library.js.map +0 -1
  55. package/lib/cpm-indicator/libey-ng-cpm-indicator.component.d.ts +0 -66
  56. package/lib/cpm-indicator/libey-ng-cpm-indicator.module.d.ts +0 -8
  57. package/lib/icons/icons.module.d.ts +0 -8
  58. package/lib/icons/libey-ng-icons/libey-ng-icons.component.d.ts +0 -19
  59. package/lib/libey-ng-component-library.component.d.ts +0 -8
  60. package/lib/libey-ng-component-library.module.d.ts +0 -13
  61. package/lib/libey-ng-component-library.service.d.ts +0 -6
  62. package/lib/signature/libey-ng-signature/libey-ng-signature.component.d.ts +0 -40
  63. package/lib/signature/libey-ng-signature.module.d.ts +0 -13
  64. package/lib/table/directives/libey-column.directive.d.ts +0 -23
  65. package/lib/table/libey-ng-table.component.d.ts +0 -63
  66. package/lib/table/libey-ng-table.module.d.ts +0 -10
  67. package/libey-ng-component-library.d.ts +0 -5
  68. package/utils/CpmIndicator/cpm-indicator-types.d.ts +0 -40
  69. package/utils/SigWeb/SigWeb.d.ts +0 -219
@@ -1,229 +0,0 @@
1
- import { Component, ContentChildren, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
- import { LibeyColumnDirective } from './directives/libey-column.directive';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- class DataKey {
6
- }
7
- export class LibeyNgTableComponent {
8
- constructor(cdr) {
9
- this.cdr = cdr;
10
- this.pageSize = 10;
11
- this.totalSize = 0;
12
- this.maxPageButtons = 5;
13
- this.expandable = false;
14
- this.viewPaginate = true;
15
- this.headerfixed = false;
16
- this.internalPagination = true;
17
- this.currentPage = 1;
18
- this.pageChange = new EventEmitter();
19
- this.rowExpandable = [];
20
- this.rowExpandableDetail = [];
21
- this.paginatedData = [];
22
- this._data = [];
23
- this.columnWidths = [];
24
- this.resizingColumnIndex = null;
25
- this.startX = 0;
26
- this.startWidth = 0;
27
- this.onResizeMove = (event) => {
28
- if (this.resizingColumnIndex !== null) {
29
- const diff = event.pageX - this.startX;
30
- this.columnWidths[this.resizingColumnIndex] = Math.max(this.startWidth + diff, 50);
31
- }
32
- };
33
- this.onResizeEnd = () => {
34
- this.resizingColumnIndex = null;
35
- document.removeEventListener('mousemove', this.onResizeMove);
36
- document.removeEventListener('mouseup', this.onResizeEnd);
37
- };
38
- }
39
- set data(value) {
40
- this._data = value;
41
- }
42
- get data() {
43
- return this._data;
44
- }
45
- ngOnChanges(changes) {
46
- if (changes.data && changes.data.previousValue) {
47
- changes.data.currentValue.forEach((value, index) => {
48
- var findData = this.rowExpandableDetail.find(x => x.dataKey == index);
49
- if (findData != null)
50
- findData.autoClose = value.autoClose;
51
- });
52
- this._data = changes.data.currentValue;
53
- this.updatePaginatedData();
54
- }
55
- }
56
- ngOnInit() {
57
- this.updatePaginatedData();
58
- }
59
- ngAfterViewInit() {
60
- this.initializeColumnWidths();
61
- // this.adjustTableWidth()
62
- this.cdr.detectChanges();
63
- }
64
- initializeColumnWidths() {
65
- var padding = 31;
66
- var widthDefault = 150;
67
- this.columnWidths = this.columns.map(column => column.width);
68
- const containerWidth = this.tableContainer.nativeElement.offsetWidth;
69
- const autoColumns = this.columns.filter(column => column.width == null);
70
- const totalFixedWidth = this.columns.reduce((sum, column) => column.width != null ? (sum + this.getWidthValue(column.width)) : sum, 0);
71
- const remainingWidth = containerWidth - (totalFixedWidth + (((this.columns.length - autoColumns.length) * padding) + (this.expandable ? 61 : 0)));
72
- if (autoColumns.length > 0) {
73
- var autoColumnWidth = 0;
74
- if (remainingWidth < widthDefault)
75
- autoColumnWidth = widthDefault;
76
- else
77
- autoColumnWidth = Math.max(0, remainingWidth / autoColumns.length);
78
- autoColumns.forEach(column => column.width = autoColumnWidth - padding);
79
- }
80
- this.columnWidths = this.columns.map(column => column.width);
81
- }
82
- // adjustTableWidth() {
83
- // const totalWidth = this.columns.reduce((sum, column) => sum + this.getWidthValue(column.width), 0);
84
- // this.tableElement.nativeElement.style.width = `${totalWidth}px`;
85
- // }
86
- getWidthValue(width) {
87
- return width === null ? 100 : width;
88
- }
89
- get totalPages() {
90
- return Math.ceil(this.totalSize / this.pageSize);
91
- }
92
- getCellValue(item, column) {
93
- const value = this.getNestedValue(item, column.property);
94
- if (Array.isArray(value) && column.arrayMap) {
95
- return value.map(v => this.getNestedValue(v, column.arrayMap)).join(', ');
96
- }
97
- return value;
98
- }
99
- getNestedValue(obj, path) {
100
- return path.split('.').reduce((o, key) => {
101
- if (o && typeof o === 'object' && key in o) {
102
- return o[key];
103
- }
104
- return undefined;
105
- }, obj);
106
- }
107
- updatePaginatedData() {
108
- if (this.viewPaginate && this.internalPagination) {
109
- const start = (this.currentPage - 1) * this.pageSize;
110
- const end = start + this.pageSize;
111
- this.paginatedData = this.data.slice(start, end);
112
- }
113
- else {
114
- this.paginatedData = this.data;
115
- }
116
- }
117
- pageRange() {
118
- const start = Math.max(1, this.currentPage - Math.floor(this.maxPageButtons / 2));
119
- const end = Math.min(this.totalPages, start + this.maxPageButtons - 1);
120
- const startPreFinish = end - this.maxPageButtons + 1;
121
- const startFinish = startPreFinish < 1 ? 1 : startPreFinish;
122
- return Array.from({ length: end - startFinish + 1 }, (_, i) => startFinish + i);
123
- }
124
- goToPage(page) {
125
- this.currentPage = Math.max(1, Math.min(page, this.totalPages));
126
- if (this.internalPagination) {
127
- this.updatePaginatedData();
128
- }
129
- else {
130
- this.pageChange.emit(this.currentPage);
131
- }
132
- }
133
- // hasChildren(row: any): boolean{
134
- // return Array.isArray(row.child) && row.child.length > 0;
135
- // }
136
- toggleRow(index) {
137
- this.rowExpandable[index] = !this.rowExpandable[index];
138
- }
139
- toggleRowDetail(key, indexData, column, data) {
140
- if (column.expandable) {
141
- var exist = this.rowExpandableDetail.find(x => x.key == key && x.dataKey == indexData);
142
- if (exist == null) {
143
- this.rowExpandableDetail = this.rowExpandableDetail.filter(x => (x.key != key || x.dataKey != indexData) && x.autoClose == false);
144
- var item = new DataKey();
145
- item.key = key;
146
- item.dataKey = indexData;
147
- item.childTableTemplate = column.childTableTemplate;
148
- item.autoClose = column.isAutoClose(data);
149
- this.rowExpandableDetail.push(item);
150
- }
151
- else {
152
- this.rowExpandableDetail = this.rowExpandableDetail.filter(x => x.key != key || x.dataKey != indexData);
153
- }
154
- }
155
- }
156
- getChildren(fila) {
157
- return fila.hijos || [];
158
- }
159
- onResizeStart(index, event) {
160
- this.resizingColumnIndex = index;
161
- this.startX = event.pageX;
162
- this.startWidth = this.columnWidths[index];
163
- document.addEventListener('mousemove', this.onResizeMove);
164
- document.addEventListener('mouseup', this.onResizeEnd);
165
- }
166
- existRowExpandableDetail(key, indexData) {
167
- return this.rowExpandableDetail.filter(x => x.key == key && x.dataKey == indexData).length > 0;
168
- }
169
- viewRowExpandableDetail(indexData) {
170
- return this.rowExpandableDetail.filter(x => x.dataKey == indexData).length > 0;
171
- }
172
- findRowExpandableDetail(indexData) {
173
- var find = this.rowExpandableDetail.find(x => x.dataKey == indexData);
174
- if (find)
175
- return find.childTableTemplate;
176
- else
177
- return null;
178
- }
179
- getRowSpan(column, data) {
180
- return column.rowspan(data);
181
- }
182
- }
183
- LibeyNgTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgTableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
184
- LibeyNgTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: LibeyNgTableComponent, selector: "libey-ng-table", inputs: { data: "data", pageSize: "pageSize", totalSize: "totalSize", maxPageButtons: "maxPageButtons", height: "height", expandable: "expandable", viewPaginate: "viewPaginate", childTableTemplate: "childTableTemplate", headerfixed: "headerfixed", class: "class", internalPagination: "internalPagination", currentPage: "currentPage" }, outputs: { pageChange: "pageChange" }, queries: [{ propertyName: "columns", predicate: LibeyColumnDirective }], viewQueries: [{ propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: true }, { propertyName: "tableElement", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container\" #tableContainer [style.height]=\"height == null ? 'auto':(height + 'px')\">\r\n <!-- <table cdkDropList (cdkDropListDropped)=\"drop($event)\"> -->\r\n <table #table [ngClass]=\"class\">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"expandable\" [ngClass]=\"headerfixed == true ? 'th-fixed':''\" style=\"width: 25px;\"></th>\r\n <ng-container *ngFor=\"let column of columns; let i = index\">\r\n <th *ngIf=\"column.view\" [style.width]=\"column.width ? (column.width + 'px') : 'auto'\"\r\n [ngClass]=\"headerfixed == true ? (column.classHeader + ' th-fixed'): column.classHeader\">\r\n <!-- Custom header template -->\r\n <ng-container *ngIf=\"column.headerTemplate; else defaultHeader\">\r\n <ng-container [ngTemplateOutlet]=\"column.headerTemplate\"\r\n [ngTemplateOutletContext]=\"{ column: column, index: i }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #defaultHeader>\r\n <span style=\"white-space: nowrap;\">{{ column.header }}</span>\r\n </ng-template>\r\n <div class=\"resize-handle\" (mousedown)=\"onResizeStart(i, $event)\"></div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"_data.length == 0\">\r\n <tr>\r\n <td [colSpan]=\"expandable ? (columns.length + 1) : (columns.length)\" class=\"text-center\">\r\n No existen datos disponibles\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"paginatedData.length != 0\">\r\n <ng-container *ngFor=\"let item of paginatedData; let a = index\">\r\n <tr>\r\n <td *ngIf=\"expandable\">\r\n <button (click)=\"toggleRow(a)\">\r\n <i [ngClass]=\"rowExpandable[a] ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </td>\r\n <ng-container *ngFor=\"let column of columns; let i = index\">\r\n <td\r\n *ngIf=\"column.view && (column.isRowspan && column.rowspan(item) > 0)\"\r\n [attr.rowspan]=\"column.rowspan(item)\"\r\n [ngClass]=\"column.class\" (click)=\"toggleRowDetail(i, a, column, item)\" [class]=\"column.expandable ? 'cursor-pointer': ''\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"detailTd\"\r\n [ngTemplateOutletContext]=\"{item:item, column:column, indexData:a, indexColumn:i}\">\r\n </ng-container>\r\n </td>\r\n <td\r\n *ngIf=\"column.view && column.isRowspan != true\"\r\n [ngClass]=\"column.class\" (click)=\"toggleRowDetail(i, a, column, item)\" [class]=\"column.expandable ? 'cursor-pointer': ''\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"detailTd\"\r\n [ngTemplateOutletContext]=\"{item:item, column:column, indexData:a, indexColumn:i}\">\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngIf=\"viewRowExpandableDetail(a)\">\r\n <ng-container *ngTemplateOutlet=\"findRowExpandableDetail(a); context: { $implicit: item }\"></ng-container>\r\n </ng-container>\r\n <tr *ngIf=\"rowExpandable[a]\">\r\n <td [attr.colspan]=\"columns.length + (expandable ? 1 : 0)\">\r\n <ng-container [ngTemplateOutlet]=\"childTableTemplate\"\r\n [ngTemplateOutletContext]=\"{ parentRow: item }\">\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n</div>\r\n<div *ngIf=\"viewPaginate && _data.length != 0\" class=\"pagination-controls\">\r\n <div class=\"d-align-center\">\r\n <label class=\"lbl-footer me-20px\"># Registros: {{this.totalSize}}</label>\r\n <label class=\"lbl-footer\"># Filas: {{this.pageSize}}</label>\r\n </div>\r\n <div class=\"d-align-center\">\r\n <button (click)=\"goToPage(1)\" [disabled]=\"currentPage === 1\">\r\n <i class=\"icon-first-page\"></i>\r\n </button>\r\n <button (click)=\"goToPage(currentPage - 1)\" [disabled]=\"currentPage === 1\">\r\n <i class=\"icon-previous-page\"></i>\r\n </button>\r\n <ng-container *ngFor=\"let page of pageRange()\">\r\n <button class=\"numbers\"\r\n (click)=\"goToPage(page)\"\r\n [class.active]=\"currentPage === page\"\r\n [disabled]=\"currentPage === page\">\r\n {{ page }}\r\n </button>\r\n </ng-container>\r\n <button (click)=\"goToPage(currentPage + 1)\" [disabled]=\"currentPage === totalPages\">\r\n <i class=\"icon-next-page\"></i>\r\n </button>\r\n <button (click)=\"goToPage(totalPages)\" [disabled]=\"currentPage === totalPages\">\r\n <i class=\"icon-last-page\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n<ng-template #detailTd let-item=\"item\" let-column=\"column\" let-indexData=\"indexData\" let-indexColumn=\"indexColumn\">\r\n <ng-container *ngIf=\"column.getCellTemplate(); else defaultCell\">\r\n <div style=\"display: flex; justify-content: space-between; white-space: nowrap; align-items: center;\">\r\n <ng-container [ngTemplateOutlet]=\"column.getCellTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item, column: column, index: indexData }\">\r\n </ng-container>\r\n <button *ngIf=\"column.expandable\">\r\n <i [ngClass]=\"existRowExpandableDetail(indexColumn, indexData) ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-template #defaultCell>\r\n <div style=\"display: flex; justify-content: space-between; white-space: nowrap; align-items: center;\">\r\n {{ getCellValue(item, column) }}\r\n <button *ngIf=\"column.expandable\">\r\n <i [ngClass]=\"existRowExpandableDetail(indexColumn, indexData) ? 'icon-arrow-up':'icon-arrow-down'\"></i>\r\n </button>\r\n </div>\r\n </ng-template>\r\n</ng-template>", styles: [".libey-table{table {font-size: 1.077rem; width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed;};.table-container {width: 100%; overflow-x: auto;};td,th {height: 30px; text-align: left; position: relative; overflow: hidden; vertical-align: middle;};th {padding: 0rem 1rem;};th {font-weight: 400; color: #1087E8; border-top: .077rem solid #D6DEE5; background-color: #EEF5FC; border-right: .077rem solid #fff;};th:last-child {border-right: .077rem solid #D6DEE5;};td {vertical-align: middle; border-bottom: .077rem solid #D6DEE5; border-style: none none solid none; text-transform: uppercase; padding: .2rem 1rem; line-height: normal;};tr td:last-child {border-right: .077rem solid #D6DEE5;};tr td:first-child {border-left: .077rem solid #D6DEE5;};th.sortable {cursor: pointer;};.th-fixed{position: sticky !important; top: 0 !important; z-index: 1 !important;};.th-fixed::after {content: \"\"; position: absolute; left: 0; bottom: 0; width: 100%;};.table-actions {margin-bottom: .769rem; display: flex; justify-content: space-between;};.table-pagination {margin-top: .769rem; display: flex; justify-content: space-between;};.pagination-controls {border-radius: .769rem; justify-content: space-between; border: .077rem solid #D6DEE5; padding: 0 1.154rem; display: flex; align-items: center; margin-top: .769rem; grid-gap: .385rem; gap: .385rem; height: 2.308rem;};button {font-size: 1.077rem; border: .077rem solid transparent; border-radius: .308rem; cursor: pointer; min-width: 1.692rem; margin: .077rem; justify-content: center; height: 1.692rem; background-color: transparent; padding: 0 .231rem; display: flex; justify-content: center; align-items: center;};button.active {border: .077rem solid #38E8C6; background-color: #38E8C6; font-weight: 600; color: #FFF;};button:disabled {cursor: default;};button:hover.numbers {border: .077rem solid #38E8C6 !important; border-radius: .308rem;};tr:first-child th:first-child {border-top-left-radius: .769rem; border-left: .077rem solid #D6DEE5;};tr:first-child th:last-child {border-top-right-radius: .769rem; border-right: .077rem solid #D6DEE5;};tr:last-child td:first-child {border-bottom-left-radius: .769rem;};tr:last-child td:last-child {border-bottom-right-radius: .769rem;};.d-align-center {display: flex !important; align-items: center !important;};.me-20px{margin-right: 1.538rem;};.icon-first-page {background-repeat: no-repeat; display: block; width: .923rem; height: .769rem; background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 12 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.0922 0.292893C10.4827 -0.0976311 11.1159 -0.0976311 11.5064 0.292893C11.8969 0.683417 11.8969 1.31658 11.5064 1.70711L8.21353 5L11.5064 8.29289C11.8969 8.68342 11.8969 9.31658 11.5064 9.70711C11.1159 10.0976 10.4827 10.0976 10.0922 9.70711L6.09221 5.70711C5.70169 5.31658 5.70169 4.68342 6.09221 4.29289L10.0922 0.292893ZM4.49211 0.292893C4.88264 -0.0976311 5.5158 -0.0976311 5.90633 0.292893C6.29685 0.683417 6.29685 1.31658 5.90633 1.70711L2.61343 5L5.90633 8.29289C6.29685 8.68342 6.29685 9.31658 5.90633 9.70711C5.5158 10.0976 4.88264 10.0976 4.49211 9.70711L0.492111 5.70711C0.101587 5.31658 0.101587 4.68342 0.492111 4.29289L4.49211 0.292893Z' fill='%2338E8C6'/%3E%3C/svg%3E%0A\");};button:disabled .icon-first-page {background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 12 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.0922 0.292893C10.4827 -0.0976311 11.1159 -0.0976311 11.5064 0.292893C11.8969 0.683417 11.8969 1.31658 11.5064 1.70711L8.21353 5L11.5064 8.29289C11.8969 8.68342 11.8969 9.31658 11.5064 9.70711C11.1159 10.0976 10.4827 10.0976 10.0922 9.70711L6.09221 5.70711C5.70169 5.31658 5.70169 4.68342 6.09221 4.29289L10.0922 0.292893ZM4.49211 0.292893C4.88264 -0.0976311 5.5158 -0.0976311 5.90633 0.292893C6.29685 0.683417 6.29685 1.31658 5.90633 1.70711L2.61343 5L5.90633 8.29289C6.29685 8.68342 6.29685 9.31658 5.90633 9.70711C5.5158 10.0976 4.88264 10.0976 4.49211 9.70711L0.492111 5.70711C0.101587 5.31658 0.101587 4.68342 0.492111 4.29289L4.49211 0.292893Z' fill='%23D0D0D0'/%3E%3C/svg%3E%0A\");};.icon-previous-page {background-repeat: no-repeat; display: block; width: .538rem; height: .769rem; background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 7 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.90681 0.292893C6.29734 0.683417 6.29734 1.31658 5.90681 1.70711L2.61392 5L5.90681 8.29289C6.29734 8.68342 6.29734 9.31658 5.90681 9.70711C5.51629 10.0976 4.88312 10.0976 4.4926 9.70711L0.4926 5.70711C0.102076 5.31658 0.102076 4.68342 0.4926 4.29289L4.4926 0.292893C4.88312 -0.0976311 5.51629 -0.0976311 5.90681 0.292893Z' fill='%2338E8C6'/%3E%3C/svg%3E%0A\");};button:disabled .icon-previous-page {background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 7 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.90681 0.292893C6.29734 0.683417 6.29734 1.31658 5.90681 1.70711L2.61392 5L5.90681 8.29289C6.29734 8.68342 6.29734 9.31658 5.90681 9.70711C5.51629 10.0976 4.88312 10.0976 4.4926 9.70711L0.4926 5.70711C0.102076 5.31658 0.102076 4.68342 0.4926 4.29289L4.4926 0.292893C4.88312 -0.0976311 5.51629 -0.0976311 5.90681 0.292893Z' fill='%23D0D0D0'/%3E%3C/svg%3E%0A\");};.icon-next-page {background-repeat: no-repeat; display: block; width: .538rem; height: .769rem; background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 7 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.4926 0.292893C0.102076 0.683417 0.102076 1.31658 0.4926 1.70711L3.78549 5L0.4926 8.29289C0.102076 8.68342 0.102076 9.31658 0.4926 9.70711C0.883124 10.0976 1.51629 10.0976 1.90681 9.70711L5.90681 5.70711C6.29734 5.31658 6.29734 4.68342 5.90681 4.29289L1.90681 0.292893C1.51629 -0.0976311 0.883124 -0.0976311 0.4926 0.292893Z' fill='%2338E8C6'/%3E%3C/svg%3E%0A\");};button:disabled .icon-next-page {background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 7 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.4926 0.292893C0.102076 0.683417 0.102076 1.31658 0.4926 1.70711L3.78549 5L0.4926 8.29289C0.102076 8.68342 0.102076 9.31658 0.4926 9.70711C0.883124 10.0976 1.51629 10.0976 1.90681 9.70711L5.90681 5.70711C6.29734 5.31658 6.29734 4.68342 5.90681 4.29289L1.90681 0.292893C1.51629 -0.0976311 0.883124 -0.0976311 0.4926 0.292893Z' fill='%23D0D0D0'/%3E%3C/svg%3E%0A\");};.icon-last-page {background-repeat: no-repeat; display: block; width: .923rem; height: .769rem; background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 12 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.10701 0.292893C1.71648 -0.0976311 1.08332 -0.0976311 0.692796 0.292893C0.302271 0.683417 0.302271 1.31658 0.692796 1.70711L3.98569 5L0.692796 8.29289C0.302271 8.68342 0.302271 9.31658 0.692796 9.70711C1.08332 10.0976 1.71648 10.0976 2.10701 9.70711L6.10701 5.70711C6.49753 5.31658 6.49753 4.68342 6.10701 4.29289L2.10701 0.292893ZM7.70711 0.292893C7.31658 -0.0976311 6.68342 -0.0976311 6.29289 0.292893C5.90237 0.683417 5.90237 1.31658 6.29289 1.70711L9.58579 5L6.29289 8.29289C5.90237 8.68342 5.90237 9.31658 6.29289 9.70711C6.68342 10.0976 7.31658 10.0976 7.70711 9.70711L11.7071 5.70711C12.0976 5.31658 12.0976 4.68342 11.7071 4.29289L7.70711 0.292893Z' fill='%2338E8C6'/%3E%3C/svg%3E%0A\");};button:disabled .icon-last-page {background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 12 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.10701 0.292893C1.71648 -0.0976311 1.08332 -0.0976311 0.692796 0.292893C0.302271 0.683417 0.302271 1.31658 0.692796 1.70711L3.98569 5L0.692796 8.29289C0.302271 8.68342 0.302271 9.31658 0.692796 9.70711C1.08332 10.0976 1.71648 10.0976 2.10701 9.70711L6.10701 5.70711C6.49753 5.31658 6.49753 4.68342 6.10701 4.29289L2.10701 0.292893ZM7.70711 0.292893C7.31658 -0.0976311 6.68342 -0.0976311 6.29289 0.292893C5.90237 0.683417 5.90237 1.31658 6.29289 1.70711L9.58579 5L6.29289 8.29289C5.90237 8.68342 5.90237 9.31658 6.29289 9.70711C6.68342 10.0976 7.31658 10.0976 7.70711 9.70711L11.7071 5.70711C12.0976 5.31658 12.0976 4.68342 11.7071 4.29289L7.70711 0.292893Z' fill='%23D0D0D0'/%3E%3C/svg%3E%0A\");};.resize-handle {position: absolute; right: 0; top: 0; bottom: 0; width: .385rem; cursor: col-resize; background-color: transparent;};::-webkit-scrollbar {width: .7rem; height: .7rem;};::-webkit-scrollbar-thumb {background-color: #d9d9d9 !important; border-radius: 1.538rem !important; border: .231rem solid #d9d9d9 !important;};.icon-arrow-up {background-repeat: no-repeat; display: block; width: .923rem; height: .615rem; background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 19 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.347794 9.61517C0.825615 10.1134 1.6169 10.13 2.11517 9.65221L9.07106 2.98186L16.0269 9.65221C16.5252 10.13 17.3165 10.1134 17.7943 9.61517C18.2721 9.11689 18.2556 8.32561 17.7573 7.84779L9.93623 0.347793C9.45266 -0.115931 8.68946 -0.115931 8.20589 0.347793L0.38483 7.84779C-0.113445 8.32561 -0.130027 9.11689 0.347794 9.61517Z' fill='%23224051'/%3E%3C/svg%3E%0A\");};.icon-arrow-down {background-repeat: no-repeat; display: block; width: .923rem; height: .615rem; background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 18 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M17.6234 0.387653C17.1213 -0.129218 16.3073 -0.129218 15.8051 0.387653L9 7.39295L2.19485 0.387652C1.69275 -0.129219 0.878679 -0.129219 0.376577 0.387651C-0.125527 0.904522 -0.125527 1.74253 0.376577 2.25941L8.09086 10.2006C8.59296 10.7175 9.40703 10.7175 9.90914 10.2006L17.6234 2.25941C18.1255 1.74254 18.1255 0.904523 17.6234 0.387653Z' fill='%23224051'/%3E%3C/svg%3E%0A\");};.text-center {text-align: center !important;};.cursor-pointer{cursor: pointer;}}button:disabled svg path{fill:#abbed1!important}button:disabled svg rect{fill:transparent!important}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgTableComponent, decorators: [{
186
- type: Component,
187
- args: [{
188
- selector: 'libey-ng-table',
189
- templateUrl: './libey-ng-table.component.html',
190
- styleUrls: ['./libey-ng-table.component.css'],
191
- encapsulation: ViewEncapsulation.None
192
- }]
193
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
194
- type: Input
195
- }], pageSize: [{
196
- type: Input
197
- }], totalSize: [{
198
- type: Input
199
- }], maxPageButtons: [{
200
- type: Input
201
- }], height: [{
202
- type: Input
203
- }], expandable: [{
204
- type: Input
205
- }], viewPaginate: [{
206
- type: Input
207
- }], childTableTemplate: [{
208
- type: Input
209
- }], headerfixed: [{
210
- type: Input
211
- }], class: [{
212
- type: Input
213
- }], internalPagination: [{
214
- type: Input
215
- }], currentPage: [{
216
- type: Input
217
- }], pageChange: [{
218
- type: Output
219
- }], columns: [{
220
- type: ContentChildren,
221
- args: [LibeyColumnDirective]
222
- }], tableContainer: [{
223
- type: ViewChild,
224
- args: ['tableContainer']
225
- }], tableElement: [{
226
- type: ViewChild,
227
- args: ['table']
228
- }] } });
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi90YWJsZS9saWJleS1uZy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL3RhYmxlL2xpYmV5LW5nLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQXlDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5TixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBUzNFLE1BQU0sT0FBTztDQU9aO0FBU0QsTUFBTSxPQUFPLHFCQUFxQjtJQWdDaEMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF6QmpDLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUUzQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBRTdCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTdCLHVCQUFrQixHQUFZLElBQUksQ0FBQztRQUNuQyxnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN2QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUlsRCxrQkFBYSxHQUFjLEVBQUUsQ0FBQztRQUM5Qix3QkFBbUIsR0FBZSxFQUFFLENBQUM7UUFDckMsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUNsQixp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TUFBTTtnQkFFZ0MsT0FBTztzQkFBN0MsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBVVIsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ1AsWUFBWTtzQkFBL0IsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExpYmV5Q29sdW1uRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2xpYmV5LWNvbHVtbi5kaXJlY3RpdmUnO1xyXG5pbnRlcmZhY2UgSURhdGFLZXkge1xyXG4gIGtleTogbnVtYmVyO1xyXG4gIGRhdGFLZXk6IG51bWJlcjtcclxuICBjaGlsZFRhYmxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgZGF0YTogYW55W107XHJcbiAgYXV0b0Nsb3NlOiBib29sZWFuO1xyXG59XHJcblxyXG5jbGFzcyBEYXRhS2V5IGltcGxlbWVudHMgSURhdGFLZXkge1xyXG4gIGtleTogbnVtYmVyO1xyXG4gIGRhdGFLZXk6IG51bWJlcjtcclxuICBjaGlsZFRhYmxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgZGF0YTogYW55W107XHJcbiAgYXV0b0Nsb3NlOiBib29sZWFuO1xyXG4gIHJvd3NwYW46IG51bWJlcjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWJleS1uZy10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpYmV5LW5nLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9saWJleS1uZy10YWJsZS5jb21wb25lbnQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIExpYmV5TmdUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBzZXQgZGF0YSh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IGRhdGEoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcclxuICBASW5wdXQoKSB0b3RhbFNpemU6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KCkgbWF4UGFnZUJ1dHRvbnM6IG51bWJlciA9IDU7XHJcbiAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXI7XHJcbiAgQElucHV0KCkgZXhwYW5kYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHZpZXdQYWdpbmF0ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY2hpbGRUYWJsZVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBoZWFkZXJmaXhlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW50ZXJuYWxQYWdpbmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIFxyXG4gIEBDb250ZW50Q2hpbGRyZW4oTGliZXlDb2x1bW5EaXJlY3RpdmUpIGNvbHVtbnMhOiBRdWVyeUxpc3Q8TGliZXlDb2x1bW5EaXJlY3RpdmU+O1xyXG5cclxuICByb3dFeHBhbmRhYmxlOiBib29sZWFuW10gPSBbXTtcclxuICByb3dFeHBhbmRhYmxlRGV0YWlsOiBJRGF0YUtleVtdID0gW107XHJcbiAgcGFnaW5hdGVkRGF0YTogYW55W10gPSBbXTtcclxuICBfZGF0YTogYW55W10gPSBbXTtcclxuICBjb2x1bW5XaWR0aHM6IG51bWJlcltdID0gW107XHJcbiAgcmVzaXppbmdDb2x1bW5JbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgc3RhcnRYOiBudW1iZXIgPSAwO1xyXG4gIHN0YXJ0V2lkdGg6IG51bWJlciA9IDA7XHJcbiAgQFZpZXdDaGlsZCgndGFibGVDb250YWluZXInKSB0YWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZUVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZihjaGFuZ2VzLmRhdGEgJiYgY2hhbmdlcy5kYXRhLnByZXZpb3VzVmFsdWUpe1xyXG4gICAgICBjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlLmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIHZhciBmaW5kRGF0YSA9IHRoaXMucm93RXhwYW5kYWJsZURldGFpbC5maW5kKHggPT4geC5kYXRhS2V5ID09IGluZGV4KTtcclxuICAgICAgICBpZihmaW5kRGF0YSAhPSBudWxsKVxyXG4gICAgICAgICAgZmluZERhdGEuYXV0b0Nsb3NlID0gdmFsdWUuYXV0b0Nsb3NlO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5fZGF0YSA9IGNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGVkRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlUGFnaW5hdGVkRGF0YSgpO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVDb2x1bW5XaWR0aHMoKTtcclxuICAgIC8vIHRoaXMuYWRqdXN0VGFibGVXaWR0aCgpXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplQ29sdW1uV2lkdGhzKCkge1xyXG4gICAgdmFyIHBhZGRpbmcgPSAzMVxyXG4gICAgdmFyIHdpZHRoRGVmYXVsdCA9IDE1MFxyXG4gICAgdGhpcy5jb2x1bW5XaWR0aHMgPSB0aGlzLmNvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4ud2lkdGgpO1xyXG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICBjb25zdCBhdXRvQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi53aWR0aCA9PSBudWxsKTtcclxuICAgIGNvbnN0IHRvdGFsRml4ZWRXaWR0aCA9IHRoaXMuY29sdW1ucy5yZWR1Y2UoKHN1bSwgY29sdW1uKSA9PlxyXG4gICAgICBjb2x1bW4ud2lkdGggIT0gbnVsbCA/IChzdW0gKyB0aGlzLmdldFdpZHRoVmFsdWUoY29sdW1uLndpZHRoKSkgOiBzdW0sIDApO1xyXG4gICAgY29uc3QgcmVtYWluaW5nV2lkdGggPSBjb250YWluZXJXaWR0aCAtICh0b3RhbEZpeGVkV2lkdGggKyAoKCh0aGlzLmNvbHVtbnMubGVuZ3RoIC0gYXV0b0NvbHVtbnMubGVuZ3RoKSAqIHBhZGRpbmcpKyAodGhpcy5leHBhbmRhYmxlID8gNjEgOiAwKSkpO1xyXG5cclxuICAgIGlmIChhdXRvQ29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHZhciBhdXRvQ29sdW1uV2lkdGggPSAwO1xyXG4gICAgICBpZihyZW1haW5pbmdXaWR0aCA8IHdpZHRoRGVmYXVsdClcclxuICAgICAgICBhdXRvQ29sdW1uV2lkdGggPSB3aWR0aERlZmF1bHQ7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBhdXRvQ29sdW1uV2lkdGggPSBNYXRoLm1heCgwLCByZW1haW5pbmdXaWR0aCAvIGF1dG9Db2x1bW5zLmxlbmd0aCk7XHJcbiAgICAgIGF1dG9Db2x1bW5zLmZvckVhY2goY29sdW1uID0+IGNvbHVtbi53aWR0aCA9IGF1dG9Db2x1bW5XaWR0aC0gcGFkZGluZyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbHVtbldpZHRocyA9IHRoaXMuY29sdW1ucy5tYXAoY29sdW1uID0+IGNvbHVtbi53aWR0aCk7XHJcbiAgfVxyXG4gIC8vIGFkanVzdFRhYmxlV2lkdGgoKSB7XHJcbiAgLy8gICBjb25zdCB0b3RhbFdpZHRoID0gdGhpcy5jb2x1bW5zLnJlZHVjZSgoc3VtLCBjb2x1bW4pID0+IHN1bSArIHRoaXMuZ2V0V2lkdGhWYWx1ZShjb2x1bW4ud2lkdGgpLCAwKTtcclxuICAvLyAgIHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt0b3RhbFdpZHRofXB4YDtcclxuICAvLyB9XHJcbiAgZ2V0V2lkdGhWYWx1ZSh3aWR0aDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB3aWR0aCA9PT0gbnVsbCA/IDEwMCA6IHdpZHRoO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbFNpemUgLyB0aGlzLnBhZ2VTaXplKTtcclxuICB9XHJcblxyXG4gIGdldENlbGxWYWx1ZShpdGVtOiBhbnksIGNvbHVtbjogTGliZXlDb2x1bW5EaXJlY3RpdmUpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKGl0ZW0sIGNvbHVtbi5wcm9wZXJ0eSk7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgY29sdW1uLmFycmF5TWFwKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS5tYXAodiA9PiB0aGlzLmdldE5lc3RlZFZhbHVlKHYsIGNvbHVtbi5hcnJheU1hcCEpKS5qb2luKCcsICcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXROZXN0ZWRWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChvLCBrZXkpID0+IHtcclxuICAgICAgaWYgKG8gJiYgdHlwZW9mIG8gPT09ICdvYmplY3QnICYmIGtleSBpbiBvKSB7XHJcbiAgICAgICAgcmV0dXJuIG9ba2V5XTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfSwgb2JqKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlUGFnaW5hdGVkRGF0YSgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMudmlld1BhZ2luYXRlICYmIHRoaXMuaW50ZXJuYWxQYWdpbmF0aW9uKXtcclxuICAgICAgY29uc3Qgc3RhcnQgPSAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdlU2l6ZTtcclxuICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnBhZ2VTaXplO1xyXG4gICAgICB0aGlzLnBhZ2luYXRlZERhdGEgPSB0aGlzLmRhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5wYWdpbmF0ZWREYXRhID0gdGhpcy5kYXRhO1xyXG4gICAgfSAgICBcclxuICB9XHJcbiAgcGFnZVJhbmdlKCk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMSwgdGhpcy5jdXJyZW50UGFnZSAtIE1hdGguZmxvb3IodGhpcy5tYXhQYWdlQnV0dG9ucyAvIDIpKTtcclxuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKHRoaXMudG90YWxQYWdlcywgc3RhcnQgKyB0aGlzLm1heFBhZ2VCdXR0b25zIC0gMSk7XHJcbiAgICBjb25zdCBzdGFydFByZUZpbmlzaCA9IGVuZCAtIHRoaXMubWF4UGFnZUJ1dHRvbnMgKyAxO1xyXG4gICAgY29uc3Qgc3RhcnRGaW5pc2ggPSBzdGFydFByZUZpbmlzaCA8IDEgPyAxIDogc3RhcnRQcmVGaW5pc2g7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7bGVuZ3RoOiBlbmQgLSBzdGFydEZpbmlzaCArIDF9LCAoXywgaSkgPT4gc3RhcnRGaW5pc2ggKyBpKTtcclxuICB9XHJcbiAgZ29Ub1BhZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gTWF0aC5tYXgoMSwgTWF0aC5taW4ocGFnZSwgdGhpcy50b3RhbFBhZ2VzKSk7XHJcbiAgICBpZih0aGlzLmludGVybmFsUGFnaW5hdGlvbil7ICAgICAgXHJcbiAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGVkRGF0YSgpOyAgICAgIFxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHRoaXMuY3VycmVudFBhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBoYXNDaGlsZHJlbihyb3c6IGFueSk6IGJvb2xlYW57XHJcbiAgLy8gICByZXR1cm4gQXJyYXkuaXNBcnJheShyb3cuY2hpbGQpICYmIHJvdy5jaGlsZC5sZW5ndGggPiAwO1xyXG4gIC8vIH1cclxuICB0b2dnbGVSb3coaW5kZXg6IG51bWJlcil7XHJcbiAgICB0aGlzLnJvd0V4cGFuZGFibGVbaW5kZXhdID0gIXRoaXMucm93RXhwYW5kYWJsZVtpbmRleF07XHJcbiAgfVxyXG4gIHRvZ2dsZVJvd0RldGFpbChrZXk6IG51bWJlciwgaW5kZXhEYXRhOiBudW1iZXIsIGNvbHVtbjogTGliZXlDb2x1bW5EaXJlY3RpdmUsIGRhdGE6IGFueSl7XHJcbiAgICBpZihjb2x1bW4uZXhwYW5kYWJsZSl7XHJcbiAgICAgIHZhciBleGlzdCA9IHRoaXMucm93RXhwYW5kYWJsZURldGFpbC5maW5kKHggPT4geC5rZXkgPT0ga2V5ICYmIHguZGF0YUtleSA9PSBpbmRleERhdGEpO1xyXG4gICAgICBpZihleGlzdCA9PSBudWxsKXtcclxuICAgICAgICB0aGlzLnJvd0V4cGFuZGFibGVEZXRhaWwgPSB0aGlzLnJvd0V4cGFuZGFibGVEZXRhaWwuZmlsdGVyKHggPT4gKHgua2V5ICE9IGtleSB8fCB4LmRhdGFLZXkgIT0gaW5kZXhEYXRhKSAmJiB4LmF1dG9DbG9zZSA9PSBmYWxzZSk7XHJcbiAgICAgICAgdmFyIGl0ZW0gPSBuZXcgRGF0YUtleSgpO1xyXG4gICAgICAgIGl0ZW0ua2V5ID0ga2V5O1xyXG4gICAgICAgIGl0ZW0uZGF0YUtleSA9IGluZGV4RGF0YTtcclxuICAgICAgICBpdGVtLmNoaWxkVGFibGVUZW1wbGF0ZSA9IGNvbHVtbi5jaGlsZFRhYmxlVGVtcGxhdGU7XHJcbiAgICAgICAgaXRlbS5hdXRvQ2xvc2UgPSBjb2x1bW4uaXNBdXRvQ2xvc2UoZGF0YSk7XHJcbiAgICAgICAgdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLnB1c2goaXRlbSk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMucm93RXhwYW5kYWJsZURldGFpbCA9IHRoaXMucm93RXhwYW5kYWJsZURldGFpbC5maWx0ZXIoeCA9PiB4LmtleSAhPSBrZXkgfHwgeC5kYXRhS2V5ICE9IGluZGV4RGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ2V0Q2hpbGRyZW4oZmlsYTogYW55KTogYW55W10ge1xyXG4gICAgcmV0dXJuIGZpbGEuaGlqb3MgfHwgW107XHJcbiAgfVxyXG4gIG9uUmVzaXplU3RhcnQoaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMucmVzaXppbmdDb2x1bW5JbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5zdGFydFggPSBldmVudC5wYWdlWDtcclxuICAgIHRoaXMuc3RhcnRXaWR0aCA9IHRoaXMuY29sdW1uV2lkdGhzW2luZGV4XTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25SZXNpemVNb3ZlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uUmVzaXplRW5kKTtcclxuICB9XHJcbiAgb25SZXNpemVNb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICBpZiAodGhpcy5yZXNpemluZ0NvbHVtbkluZGV4ICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGRpZmYgPSBldmVudC5wYWdlWCAtIHRoaXMuc3RhcnRYO1xyXG4gICAgICB0aGlzLmNvbHVtbldpZHRoc1t0aGlzLnJlc2l6aW5nQ29sdW1uSW5kZXhdID0gTWF0aC5tYXgodGhpcy5zdGFydFdpZHRoICsgZGlmZiwgNTApO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgb25SZXNpemVFbmQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJlc2l6aW5nQ29sdW1uSW5kZXggPSBudWxsO1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6ZU1vdmUpO1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVFbmQpO1xyXG4gIH1cclxuICBleGlzdFJvd0V4cGFuZGFibGVEZXRhaWwoa2V5OiBudW1iZXIsIGluZGV4RGF0YTogbnVtYmVyKSA6IGJvb2xlYW57XHJcbiAgICByZXR1cm4gdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLmZpbHRlcih4ID0+IHgua2V5ID09IGtleSAmJiB4LmRhdGFLZXkgPT0gaW5kZXhEYXRhKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuICB2aWV3Um93RXhwYW5kYWJsZURldGFpbChpbmRleERhdGE6IG51bWJlcikgOmJvb2xlYW57XHJcbiAgICByZXR1cm4gdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLmZpbHRlcih4ID0+IHguZGF0YUtleSA9PSBpbmRleERhdGEpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG4gIGZpbmRSb3dFeHBhbmRhYmxlRGV0YWlsKGluZGV4RGF0YTogbnVtYmVyKSA6VGVtcGxhdGVSZWY8YW55PntcclxuICAgIHZhciBmaW5kID0gdGhpcy5yb3dFeHBhbmRhYmxlRGV0YWlsLmZpbmQoeCA9PiB4LmRhdGFLZXkgPT0gaW5kZXhEYXRhKTtcclxuICAgIGlmKGZpbmQpXHJcbiAgICAgIHJldHVybiBmaW5kLmNoaWxkVGFibGVUZW1wbGF0ZTsgXHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBnZXRSb3dTcGFuKGNvbHVtbjogTGliZXlDb2x1bW5EaXJlY3RpdmUsIGRhdGE6IGFueSl7XHJcbiAgICByZXR1cm4gY29sdW1uLnJvd3NwYW4oZGF0YSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIiAgI3RhYmxlQ29udGFpbmVyIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0ID09IG51bGwgPyAnYXV0byc6KGhlaWdodCArICdweCcpXCI+XHJcbiAgPCEtLSA8dGFibGUgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj4gLS0+XHJcbiAgPHRhYmxlICN0YWJsZSBbbmdDbGFzc109XCJjbGFzc1wiPlxyXG4gICAgPHRoZWFkPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoICpuZ0lmPVwiZXhwYW5kYWJsZVwiIFtuZ0NsYXNzXT1cImhlYWRlcmZpeGVkID09IHRydWUgPyAndGgtZml4ZWQnOicnXCIgc3R5bGU9XCJ3aWR0aDogMjVweDtcIj48L3RoPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8dGggKm5nSWY9XCJjb2x1bW4udmlld1wiIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGggPyAoY29sdW1uLndpZHRoICsgJ3B4JykgOiAnYXV0bydcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImhlYWRlcmZpeGVkID09IHRydWUgPyAoY29sdW1uLmNsYXNzSGVhZGVyICsgJyB0aC1maXhlZCcpOiBjb2x1bW4uY2xhc3NIZWFkZXJcIj5cclxuICAgICAgICAgICAgPCEtLSBDdXN0b20gaGVhZGVyIHRlbXBsYXRlIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlOyBlbHNlIGRlZmF1bHRIZWFkZXJcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY29sdW1uOiBjb2x1bW4sIGluZGV4OiBpIH1cIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlcj5cclxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCI+e3sgY29sdW1uLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIiAobW91c2Vkb3duKT1cIm9uUmVzaXplU3RhcnQoaSwgJGV2ZW50KVwiPjwvZGl2PlxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGhlYWQ+XHJcbiAgICA8dGJvZHk+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfZGF0YS5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0ZCBbY29sU3Bhbl09XCJleHBhbmRhYmxlID8gKGNvbHVtbnMubGVuZ3RoICsgMSkgOiAoY29sdW1ucy5sZW5ndGgpXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICBObyBleGlzdGVuIGRhdG9zIGRpc3BvbmlibGVzXHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnaW5hdGVkRGF0YS5sZW5ndGggIT0gMFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFnaW5hdGVkRGF0YTsgbGV0IGEgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJleHBhbmRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlUm93KGEpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJyb3dFeHBhbmRhYmxlW2FdID8gJ2ljb24tYXJyb3ctdXAnOidpY29uLWFycm93LWRvd24nXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnZpZXcgJiYgKGNvbHVtbi5pc1Jvd3NwYW4gJiYgY29sdW1uLnJvd3NwYW4oaXRlbSkgPiAwKVwiXHJcbiAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJjb2x1bW4ucm93c3BhbihpdGVtKVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLmNsYXNzXCIgKGNsaWNrKT1cInRvZ2dsZVJvd0RldGFpbChpLCBhLCBjb2x1bW4sIGl0ZW0pXCIgW2NsYXNzXT1cImNvbHVtbi5leHBhbmRhYmxlID8gJ2N1cnNvci1wb2ludGVyJzogJydcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXRhaWxUZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOml0ZW0sIGNvbHVtbjpjb2x1bW4sIGluZGV4RGF0YTphLCBpbmRleENvbHVtbjppfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi52aWV3ICYmIGNvbHVtbi5pc1Jvd3NwYW4gIT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLmNsYXNzXCIgKGNsaWNrKT1cInRvZ2dsZVJvd0RldGFpbChpLCBhLCBjb2x1bW4sIGl0ZW0pXCIgW2NsYXNzXT1cImNvbHVtbi5leHBhbmRhYmxlID8gJ2N1cnNvci1wb2ludGVyJzogJydcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXRhaWxUZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOml0ZW0sIGNvbHVtbjpjb2x1bW4sIGluZGV4RGF0YTphLCBpbmRleENvbHVtbjppfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdSb3dFeHBhbmRhYmxlRGV0YWlsKGEpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaW5kUm93RXhwYW5kYWJsZURldGFpbChhKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8dHIgKm5nSWY9XCJyb3dFeHBhbmRhYmxlW2FdXCI+XHJcbiAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoICsgKGV4cGFuZGFibGUgPyAxIDogMClcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaWxkVGFibGVUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBwYXJlbnRSb3c6IGl0ZW0gfVwiPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3Rib2R5PlxyXG4gIDwvdGFibGU+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwidmlld1BhZ2luYXRlICYmIF9kYXRhLmxlbmd0aCAhPSAwXCIgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRyb2xzXCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtYWxpZ24tY2VudGVyXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJsYmwtZm9vdGVyIG1lLTIwcHhcIj4jIFJlZ2lzdHJvczoge3t0aGlzLnRvdGFsU2l6ZX19PC9sYWJlbD5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxibC1mb290ZXJcIj4jIEZpbGFzOiB7e3RoaXMucGFnZVNpemV9fTwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImQtYWxpZ24tY2VudGVyXCI+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJnb1RvUGFnZSgxKVwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiPlxyXG4gICAgICA8aSBjbGFzcz1cImljb24tZmlyc3QtcGFnZVwiPjwvaT5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2UgLSAxKVwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiPlxyXG4gICAgICA8aSBjbGFzcz1cImljb24tcHJldmlvdXMtcGFnZVwiPjwvaT5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiBwYWdlUmFuZ2UoKVwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibnVtYmVyc1wiXHJcbiAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2UpXCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRQYWdlID09PSBwYWdlXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHBhZ2VcIj5cclxuICAgICAgICB7eyBwYWdlIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJnb1RvUGFnZShjdXJyZW50UGFnZSArIDEpXCIgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiaWNvbi1uZXh0LXBhZ2VcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gKGNsaWNrKT1cImdvVG9QYWdlKHRvdGFsUGFnZXMpXCIgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiaWNvbi1sYXN0LXBhZ2VcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjZGV0YWlsVGQgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC1pbmRleERhdGE9XCJpbmRleERhdGFcIiBsZXQtaW5kZXhDb2x1bW49XCJpbmRleENvbHVtblwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uZ2V0Q2VsbFRlbXBsYXRlKCk7IGVsc2UgZGVmYXVsdENlbGxcIj5cclxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHdoaXRlLXNwYWNlOiBub3dyYXA7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmdldENlbGxUZW1wbGF0ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLCBjb2x1bW46IGNvbHVtbiwgaW5kZXg6IGluZGV4RGF0YSB9XCI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiY29sdW1uLmV4cGFuZGFibGVcIj5cclxuICAgICAgICA8aSBbbmdDbGFzc109XCJleGlzdFJvd0V4cGFuZGFibGVEZXRhaWwoaW5kZXhDb2x1bW4sIGluZGV4RGF0YSkgPyAnaWNvbi1hcnJvdy11cCc6J2ljb24tYXJyb3ctZG93bidcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbD5cclxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHdoaXRlLXNwYWNlOiBub3dyYXA7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgIHt7IGdldENlbGxWYWx1ZShpdGVtLCBjb2x1bW4pIH19XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJjb2x1bW4uZXhwYW5kYWJsZVwiPlxyXG4gICAgICAgIDxpIFtuZ0NsYXNzXT1cImV4aXN0Um93RXhwYW5kYWJsZURldGFpbChpbmRleENvbHVtbiwgaW5kZXhEYXRhKSA/ICdpY29uLWFycm93LXVwJzonaWNvbi1hcnJvdy1kb3duJ1wiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -1,21 +0,0 @@
1
- // table.module.ts
2
- import { NgModule } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
4
- import { LibeyColumnDirective } from './directives/libey-column.directive';
5
- import { FormsModule } from '@angular/forms';
6
- import { LibeyNgTableComponent } from './libey-ng-table.component';
7
- import * as i0 from "@angular/core";
8
- export class LibeyNgTableModule {
9
- }
10
- LibeyNgTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- LibeyNgTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgTableModule, declarations: [LibeyNgTableComponent, LibeyColumnDirective], imports: [CommonModule, FormsModule], exports: [LibeyNgTableComponent, LibeyColumnDirective] });
12
- LibeyNgTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgTableModule, imports: [[CommonModule, FormsModule]] });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgTableModule, decorators: [{
14
- type: NgModule,
15
- args: [{
16
- declarations: [LibeyNgTableComponent, LibeyColumnDirective],
17
- imports: [CommonModule, FormsModule],
18
- exports: [LibeyNgTableComponent, LibeyColumnDirective]
19
- }]
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctdGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi90YWJsZS9saWJleS1uZy10YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCO0FBQ2xCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFPbkUsTUFBTSxPQUFPLGtCQUFrQjs7Z0hBQWxCLGtCQUFrQjtpSEFBbEIsa0JBQWtCLGlCQUpkLHFCQUFxQixFQUFFLG9CQUFvQixhQUNoRCxZQUFZLEVBQUMsV0FBVyxhQUN4QixxQkFBcUIsRUFBRSxvQkFBb0I7aUhBRTFDLGtCQUFrQixZQUhwQixDQUFDLFlBQVksRUFBQyxXQUFXLENBQUM7NEZBR3hCLGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxvQkFBb0IsQ0FBQztvQkFDM0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLFdBQVcsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMscUJBQXFCLEVBQUUsb0JBQW9CLENBQUM7aUJBQ3ZEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdGFibGUubW9kdWxlLnRzXHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IExpYmV5Q29sdW1uRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2xpYmV5LWNvbHVtbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTGliZXlOZ1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9saWJleS1uZy10YWJsZS5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtMaWJleU5nVGFibGVDb21wb25lbnQsIExpYmV5Q29sdW1uRGlyZWN0aXZlXSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLEZvcm1zTW9kdWxlXSxcclxuICBleHBvcnRzOiBbTGliZXlOZ1RhYmxlQ29tcG9uZW50LCBMaWJleUNvbHVtbkRpcmVjdGl2ZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpYmV5TmdUYWJsZU1vZHVsZSB7IH0iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctY29tcG9uZW50LWxpYnJhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS9zcmMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,23 +0,0 @@
1
- /*
2
- * Public API Surface of libey-ng-component-library
3
- */
4
- export * from './lib/libey-ng-component-library.service';
5
- export * from './lib/libey-ng-component-library.component';
6
- export * from './lib/libey-ng-component-library.module';
7
- export * from './lib/table/libey-ng-table.module';
8
- export * from './lib/table/libey-ng-table.component';
9
- export * from './lib/table/directives/libey-column.directive';
10
- export * from './lib/signature/libey-ng-signature.module';
11
- export * from './lib/signature/libey-ng-signature/libey-ng-signature.component';
12
- export * from './utils/SigWeb/SigWeb';
13
- export * from './utils/CpmIndicator/cpm-indicator-types';
14
- export * from './lib/icons/icons.module';
15
- export * from './lib/icons/libey-ng-icons/libey-ng-icons.component';
16
- export * from './lib/cpm-indicator/libey-ng-cpm-indicator.module';
17
- export * from './lib/cpm-indicator/libey-ng-cpm-indicator.component';
18
- import { SignaturePadModule, SignaturePad } from 'angular2-signaturepad';
19
- export { SignaturePadModule, SignaturePad };
20
- export { NgSelectModule } from '@ng-select/ng-select';
21
- export { NgbModule } from '@ng-bootstrap/ng-bootstrap';
22
- export * from '@popperjs/core';
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGxpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5XHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2xpYmV5LW5nLXRhYmxlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2xpYmV5LW5nLXRhYmxlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2RpcmVjdGl2ZXMvbGliZXktY29sdW1uLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NpZ25hdHVyZS9saWJleS1uZy1zaWduYXR1cmUubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2lnbmF0dXJlL2xpYmV5LW5nLXNpZ25hdHVyZS9saWJleS1uZy1zaWduYXR1cmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9TaWdXZWIvU2lnV2ViJztcclxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9DcG1JbmRpY2F0b3IvY3BtLWluZGljYXRvci10eXBlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zL2ljb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zL2xpYmV5LW5nLWljb25zL2xpYmV5LW5nLWljb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NwbS1pbmRpY2F0b3IvbGliZXktbmctY3BtLWluZGljYXRvci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jcG0taW5kaWNhdG9yL2xpYmV5LW5nLWNwbS1pbmRpY2F0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2lnbmF0dXJlUGFkTW9kdWxlLCBTaWduYXR1cmVQYWQgfSBmcm9tICdhbmd1bGFyMi1zaWduYXR1cmVwYWQnO1xyXG5leHBvcnQgeyBTaWduYXR1cmVQYWRNb2R1bGUsIFNpZ25hdHVyZVBhZCB9O1xyXG5leHBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuZXhwb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5leHBvcnQgKiBmcm9tICdAcG9wcGVyanMvY29yZSc7XHJcbiJdfQ==
@@ -1,25 +0,0 @@
1
- // Modos de visualización del indicador
2
- export var CpmIndicatorMode;
3
- (function (CpmIndicatorMode) {
4
- CpmIndicatorMode["Cpm"] = "cpm";
5
- CpmIndicatorMode["Gauge"] = "gauge";
6
- })(CpmIndicatorMode || (CpmIndicatorMode = {}));
7
- // Tipo de ítem: gasto ya consumido (Base) o estimado (Projected)
8
- export var CpmItemType;
9
- (function (CpmItemType) {
10
- CpmItemType["Base"] = "base";
11
- CpmItemType["Projected"] = "projected";
12
- })(CpmItemType || (CpmItemType = {}));
13
- // Tercios por defecto si no se proporcionan thresholds
14
- export const DEFAULT_THRESHOLDS = {
15
- zone1Max: 1 / 3,
16
- zone2Max: 2 / 3,
17
- zone3Max: 1.0,
18
- };
19
- export const ZONE_COLORS = {
20
- zone1: { dark: '#2B9429', light: '#80BF7F' },
21
- zone2: { dark: '#FFE500', light: '#F4E878' },
22
- zone3: { dark: '#FFA826', light: '#F6C276' },
23
- zone4: { dark: '#D30000', light: '#DB5E60' }, // Rojo
24
- };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BtLWluZGljYXRvci10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy91dGlscy9DcG1JbmRpY2F0b3IvY3BtLWluZGljYXRvci10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1Q0FBdUM7QUFDdkMsTUFBTSxDQUFOLElBQVksZ0JBR1g7QUFIRCxXQUFZLGdCQUFnQjtJQUMxQiwrQkFBYSxDQUFBO0lBQ2IsbUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUczQjtBQUVELGlFQUFpRTtBQUNqRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLDRCQUFrQixDQUFBO0lBQ2xCLHNDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQWtDRCx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQWtCO0lBQy9DLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNmLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNmLFFBQVEsRUFBRSxHQUFHO0NBQ2QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBOEI7SUFDcEQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzVDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtJQUM1QyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7SUFDNUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTztDQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTW9kb3MgZGUgdmlzdWFsaXphY2nDs24gZGVsIGluZGljYWRvclxyXG5leHBvcnQgZW51bSBDcG1JbmRpY2F0b3JNb2RlIHtcclxuICBDcG0gICA9ICdjcG0nLFxyXG4gIEdhdWdlID0gJ2dhdWdlJyxcclxufVxyXG5cclxuLy8gVGlwbyBkZSDDrXRlbTogZ2FzdG8geWEgY29uc3VtaWRvIChCYXNlKSBvIGVzdGltYWRvIChQcm9qZWN0ZWQpXHJcbmV4cG9ydCBlbnVtIENwbUl0ZW1UeXBlIHtcclxuICBCYXNlICAgICAgPSAnYmFzZScsXHJcbiAgUHJvamVjdGVkID0gJ3Byb2plY3RlZCcsXHJcbn1cclxuXHJcbi8vIEVsIHBhZHJlIGV4Y2x1eWUgbG9zIMOtdGVtcyBxdWUgbm8gYXBsaWNhbiBhbCBDUE0gYW50ZXMgZGUgYXJtYXIgZXN0YSBsaXN0YVxyXG5leHBvcnQgaW50ZXJmYWNlIENwbUl0ZW0ge1xyXG4gIGlkOiAgICAgc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGFtb3VudDogbnVtYmVyO1xyXG4gIHR5cGU6ICAgQ3BtSXRlbVR5cGU7XHJcbn1cclxuXHJcbi8vIFBvcmNlbnRhamVzIGRlbCBsw61taXRlICgwLjAg4oaSIDEuMCkuIExhIHpvbmEgNCAocm9qbykgZXMgYXV0b23DoXRpY2FcclxuZXhwb3J0IGludGVyZmFjZSBDcG1UaHJlc2hvbGRzIHtcclxuICB6b25lMU1heDogbnVtYmVyO1xyXG4gIHpvbmUyTWF4OiBudW1iZXI7XHJcbiAgem9uZTNNYXg6IG51bWJlcjtcclxufVxyXG5cclxuLy8gUmVzdW1lbiBxdWUgZW1pdGUgZWwgY29tcG9uZW50ZSBwYXJhIHBlcnNpc3RpciBlbiBCRFxyXG5leHBvcnQgaW50ZXJmYWNlIENwbVN1bW1hcnkge1xyXG4gIGJhc2VBbW91bnQ6ICAgICAgbnVtYmVyO1xyXG4gIHByb2plY3RlZEFtb3VudDogbnVtYmVyO1xyXG4gIHRvdGFsQW1vdW50OiAgICAgbnVtYmVyO1xyXG4gIGxpbWl0OiAgICAgICAgICAgbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFpvbmVDb2xvciB7XHJcbiAgZGFyazogIHN0cmluZztcclxuICBsaWdodDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN2Z1BvaW50IHtcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG59XHJcblxyXG4vLyBUZXJjaW9zIHBvciBkZWZlY3RvIHNpIG5vIHNlIHByb3BvcmNpb25hbiB0aHJlc2hvbGRzXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RIUkVTSE9MRFM6IENwbVRocmVzaG9sZHMgPSB7XHJcbiAgem9uZTFNYXg6IDEgLyAzLFxyXG4gIHpvbmUyTWF4OiAyIC8gMyxcclxuICB6b25lM01heDogMS4wLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFpPTkVfQ09MT1JTOiBSZWNvcmQ8c3RyaW5nLCBab25lQ29sb3I+ID0ge1xyXG4gIHpvbmUxOiB7IGRhcms6ICcjMkI5NDI5JywgbGlnaHQ6ICcjODBCRjdGJyB9LCAvLyBWZXJkZVxyXG4gIHpvbmUyOiB7IGRhcms6ICcjRkZFNTAwJywgbGlnaHQ6ICcjRjRFODc4JyB9LCAvLyBBbWFyaWxsb1xyXG4gIHpvbmUzOiB7IGRhcms6ICcjRkZBODI2JywgbGlnaHQ6ICcjRjZDMjc2JyB9LCAvLyBOYXJhbmphXHJcbiAgem9uZTQ6IHsgZGFyazogJyNEMzAwMDAnLCBsaWdodDogJyNEQjVFNjAnIH0sIC8vIFJvam9cclxufTtcclxuZXhwb3J0IGludGVyZmFjZSBDcG1Db2xvclN0YXRlIHtcclxuICBkYXJrQ29sb3I6ICAgIHN0cmluZzsgIC8vIGNvbG9yIGRlIGxhIHpvbmEgYWN0aXZhIOKAlCBwYXJhIGVsIFJlYWxcclxuICBsaWdodENvbG9yOiAgIHN0cmluZzsgIC8vIGNvbG9yIGNsYXJvIGRlIGxhIHpvbmEgYWN0aXZhIOKAlCBwYXJhIGxhIFByb3llY2Npw7NuXHJcbiAgZ3JheUNvbG9yOiAgICBzdHJpbmc7ICAvLyBzaWVtcHJlIGdyaXMg4oCUIHBhcmEgZWwgRGlzcG9uaWJsZVxyXG4gIGxpbWl0UmVhY2hlZDogYm9vbGVhbjsgLy8gdHJ1ZSBzaSB0b3RhbEFtb3VudCA+PSBsaW1pdFxyXG59Il19