@c80/ui 1.0.44 → 1.0.45
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.
- package/c80-ui.d.ts +5 -0
- package/esm2022/c80-ui.js +5 -0
- package/esm2022/c80-ui.js.map +1 -0
- package/esm2022/index.js +6 -0
- package/esm2022/index.js.map +1 -0
- package/esm2022/lib/card-level/card-level.component.js +56 -0
- package/esm2022/lib/card-level/card-level.component.js.map +1 -0
- package/esm2022/lib/card-level/card-level.interface.js +2 -0
- package/esm2022/lib/card-level/card-level.interface.js.map +1 -0
- package/esm2022/lib/card-level/index.js +3 -0
- package/esm2022/lib/card-level/index.js.map +1 -0
- package/esm2022/lib/icon/icon.component.js +48 -0
- package/esm2022/lib/icon/icon.component.js.map +1 -0
- package/esm2022/lib/icon/icon.constants.js +237 -0
- package/esm2022/lib/icon/icon.constants.js.map +1 -0
- package/esm2022/lib/icon/icon.types.js +2 -0
- package/esm2022/lib/icon/icon.types.js.map +1 -0
- package/esm2022/lib/icon/icon.utils.js +4 -0
- package/esm2022/lib/icon/icon.utils.js.map +1 -0
- package/esm2022/lib/icon/index.js +4 -0
- package/esm2022/lib/icon/index.js.map +1 -0
- package/esm2022/lib/modal/index.js +3 -0
- package/esm2022/lib/modal/index.js.map +1 -0
- package/esm2022/lib/modal/modal.component.js +86 -0
- package/esm2022/lib/modal/modal.component.js.map +1 -0
- package/esm2022/lib/modal/modal.service.js +83 -0
- package/esm2022/lib/modal/modal.service.js.map +1 -0
- package/esm2022/lib/stat-card/index.js +2 -0
- package/esm2022/lib/stat-card/index.js.map +1 -0
- package/esm2022/lib/stat-card/stat-card.component.js +13 -0
- package/esm2022/lib/stat-card/stat-card.component.js.map +1 -0
- package/esm2022/lib/table/index.js +9 -0
- package/esm2022/lib/table/index.js.map +1 -0
- package/esm2022/lib/table/table-column-visibility.service.js +105 -0
- package/esm2022/lib/table/table-column-visibility.service.js.map +1 -0
- package/esm2022/lib/table/table-crud-state.service.js +115 -0
- package/esm2022/lib/table/table-crud-state.service.js.map +1 -0
- package/esm2022/lib/table/table-data-converter.service.js +145 -0
- package/esm2022/lib/table/table-data-converter.service.js.map +1 -0
- package/esm2022/lib/table/table-data-utils.service.js +193 -0
- package/esm2022/lib/table/table-data-utils.service.js.map +1 -0
- package/esm2022/lib/table/table-selection.service.js +121 -0
- package/esm2022/lib/table/table-selection.service.js.map +1 -0
- package/esm2022/lib/table/table.component.js +413 -0
- package/esm2022/lib/table/table.component.js.map +1 -0
- package/esm2022/lib/table/table.types.js +5 -0
- package/esm2022/lib/table/table.types.js.map +1 -0
- package/esm2022/lib/table/table.utils.js +107 -0
- package/esm2022/lib/table/table.utils.js.map +1 -0
- package/lib/icon/icon.component.d.ts +2 -2
- package/lib/modal/index.d.ts +2 -3
- package/lib/stat-card/stat-card.component.d.ts +2 -2
- package/lib/table/table.component.d.ts +10 -13
- package/package.json +7 -9
- package/esm2022/c80-ui.mjs +0 -5
- package/esm2022/index.mjs +0 -6
- package/esm2022/lib/card-level/card-level.component.mjs +0 -57
- package/esm2022/lib/card-level/card-level.interface.mjs +0 -2
- package/esm2022/lib/card-level/index.mjs +0 -3
- package/esm2022/lib/icon/icon.component.mjs +0 -49
- package/esm2022/lib/icon/icon.constants.mjs +0 -237
- package/esm2022/lib/icon/icon.types.mjs +0 -2
- package/esm2022/lib/icon/icon.utils.mjs +0 -4
- package/esm2022/lib/icon/index.mjs +0 -4
- package/esm2022/lib/modal/index.mjs +0 -3
- package/esm2022/lib/modal/modal.component.mjs +0 -86
- package/esm2022/lib/modal/modal.service.mjs +0 -83
- package/esm2022/lib/stat-card/index.mjs +0 -2
- package/esm2022/lib/stat-card/stat-card.component.mjs +0 -16
- package/esm2022/lib/table/index.mjs +0 -9
- package/esm2022/lib/table/table-column-visibility.service.mjs +0 -105
- package/esm2022/lib/table/table-crud-state.service.mjs +0 -115
- package/esm2022/lib/table/table-data-converter.service.mjs +0 -145
- package/esm2022/lib/table/table-data-utils.service.mjs +0 -193
- package/esm2022/lib/table/table-selection.service.mjs +0 -121
- package/esm2022/lib/table/table.component.mjs +0 -432
- package/esm2022/lib/table/table.types.mjs +0 -5
- package/esm2022/lib/table/table.utils.mjs +0 -107
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { Injectable, signal } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Servicio para gestionar la selección de elementos en tablas C80
|
|
5
|
-
*
|
|
6
|
-
* Maneja:
|
|
7
|
-
* - Selección simple y múltiple
|
|
8
|
-
* - Estado de selección completa
|
|
9
|
-
* - Preservación de selección tras actualizaciones de datos
|
|
10
|
-
* - Emisión de eventos de selección
|
|
11
|
-
*/
|
|
12
|
-
export class TableSelectionService {
|
|
13
|
-
/**
|
|
14
|
-
* Inicializa el estado de selección para una nueva tabla
|
|
15
|
-
* @returns Objeto con signals y métodos de selección
|
|
16
|
-
*/
|
|
17
|
-
createSelectionState() {
|
|
18
|
-
const selectedItems = signal(new Set());
|
|
19
|
-
const selectAllChecked = signal(false);
|
|
20
|
-
const selectAllIndeterminate = signal(false);
|
|
21
|
-
const signals = { selectedItems, selectAllChecked, selectAllIndeterminate };
|
|
22
|
-
return {
|
|
23
|
-
selectedItems: selectedItems.asReadonly(),
|
|
24
|
-
selectAllChecked: selectAllChecked.asReadonly(),
|
|
25
|
-
selectAllIndeterminate: selectAllIndeterminate.asReadonly(),
|
|
26
|
-
clearSelection: () => this.clearSelection(signals),
|
|
27
|
-
toggleSelectAll: (allItems) => this.toggleSelectAll(signals, allItems),
|
|
28
|
-
toggleItemSelection: (item, multiple) => this.toggleItemSelection(selectedItems, item, multiple),
|
|
29
|
-
isItemSelected: (item) => this.isItemSelected(selectedItems, item),
|
|
30
|
-
preserveSelection: (newData) => this.preserveSelection(signals, newData),
|
|
31
|
-
getSelectedItems: (allData) => this.getSelectedItems(selectedItems, allData),
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
clearSelection(signals) {
|
|
35
|
-
signals.selectedItems.set(new Set());
|
|
36
|
-
signals.selectAllChecked.set(false);
|
|
37
|
-
signals.selectAllIndeterminate.set(false);
|
|
38
|
-
}
|
|
39
|
-
toggleSelectAll(signals, allItems) {
|
|
40
|
-
const currentSelection = signals.selectedItems();
|
|
41
|
-
if (currentSelection.size === allItems.length) {
|
|
42
|
-
signals.selectedItems.set(new Set());
|
|
43
|
-
signals.selectAllChecked.set(false);
|
|
44
|
-
signals.selectAllIndeterminate.set(false);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
const allIds = new Set(allItems.map(item => item['id']));
|
|
48
|
-
signals.selectedItems.set(allIds);
|
|
49
|
-
this.updateSelectAllState(allItems, allIds.size, signals.selectAllChecked, signals.selectAllIndeterminate);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
toggleItemSelection(selectedItems, item, multiple) {
|
|
53
|
-
const id = item['id'];
|
|
54
|
-
const currentSelection = new Set(selectedItems());
|
|
55
|
-
if (!multiple) {
|
|
56
|
-
currentSelection.clear();
|
|
57
|
-
if (!selectedItems().has(id)) {
|
|
58
|
-
currentSelection.add(id);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
else if (currentSelection.has(id)) {
|
|
62
|
-
currentSelection.delete(id);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
currentSelection.add(id);
|
|
66
|
-
}
|
|
67
|
-
selectedItems.set(currentSelection);
|
|
68
|
-
}
|
|
69
|
-
isItemSelected(selectedItems, item) {
|
|
70
|
-
return selectedItems().has(item['id']);
|
|
71
|
-
}
|
|
72
|
-
preserveSelection(signals, newData) {
|
|
73
|
-
const currentSelection = signals.selectedItems();
|
|
74
|
-
if (currentSelection.size === 0 || newData.length === 0) {
|
|
75
|
-
this.clearSelection(signals);
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
const availableIds = new Set(newData.map(item => item['id']));
|
|
79
|
-
const preservedSelection = new Set(Array.from(currentSelection).filter(id => availableIds.has(id)));
|
|
80
|
-
signals.selectedItems.set(preservedSelection);
|
|
81
|
-
this.updateSelectAllState(newData, preservedSelection.size, signals.selectAllChecked, signals.selectAllIndeterminate);
|
|
82
|
-
}
|
|
83
|
-
getSelectedItems(selectedItems, allData) {
|
|
84
|
-
const selectedIds = selectedItems();
|
|
85
|
-
return allData.filter(item => selectedIds.has(item['id']));
|
|
86
|
-
}
|
|
87
|
-
updateSelectAllState(allItems, selectedCount, selectAllChecked, selectAllIndeterminate) {
|
|
88
|
-
const totalCount = allItems.length;
|
|
89
|
-
if (selectedCount === 0) {
|
|
90
|
-
selectAllChecked.set(false);
|
|
91
|
-
selectAllIndeterminate.set(false);
|
|
92
|
-
}
|
|
93
|
-
else if (selectedCount === totalCount) {
|
|
94
|
-
selectAllChecked.set(true);
|
|
95
|
-
selectAllIndeterminate.set(false);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
selectAllChecked.set(false);
|
|
99
|
-
selectAllIndeterminate.set(true);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Emite los elementos seleccionados a través del output proporcionado
|
|
104
|
-
* @param selectionState - Estado de selección
|
|
105
|
-
* @param allData - Todos los datos de la tabla
|
|
106
|
-
* @param selectableEmitter - Output para emitir la selección
|
|
107
|
-
*/
|
|
108
|
-
emitSelection(selectionState, allData, selectableEmitter) {
|
|
109
|
-
const selectedItems = selectionState.getSelectedItems(allData);
|
|
110
|
-
selectableEmitter.emit(selectedItems);
|
|
111
|
-
}
|
|
112
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableSelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
113
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableSelectionService, providedIn: 'root' });
|
|
114
|
-
}
|
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableSelectionService, decorators: [{
|
|
116
|
-
type: Injectable,
|
|
117
|
-
args: [{
|
|
118
|
-
providedIn: 'root'
|
|
119
|
-
}]
|
|
120
|
-
}] });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvdGFibGUvdGFibGUtc2VsZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQW9CLE1BQU0sZUFBZSxDQUFDOztBQUVyRTs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFaEM7OztPQUdHO0lBQ0gsb0JBQW9CO1FBQ2xCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBYyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsTUFBTSxPQUFPLEdBQUcsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztRQUU1RSxPQUFPO1lBQ0wsYUFBYSxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDekMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1lBQy9DLHNCQUFzQixFQUFFLHNCQUFzQixDQUFDLFVBQVUsRUFBRTtZQUMzRCxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7WUFDbEQsZUFBZSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7WUFDM0UsbUJBQW1CLEVBQUUsQ0FBQyxJQUFPLEVBQUUsUUFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO1lBQzVHLGNBQWMsRUFBRSxDQUFDLElBQU8s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Q0FBQztZQUN4QixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxJQUFJLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0Isc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ04sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUNYLGNBQTJELEVBQzNELE9BQVksRUFDWixpQkFBd0M7UUFFeEMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4QyxDQUFDO3dHQXZKVSxxQkFBcUI7NEdBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBPdXRwdXRFbWl0dGVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBnZXN0aW9uYXIgbGEgc2VsZWNjacOzbiBkZSBlbGVtZW50b3MgZW4gdGFibGFzIEM4MFxuICpcbiAqIE1hbmVqYTpcbiAqIC0gU2VsZWNjacOzbiBzaW1wbGUgeSBtw7psdGlwbGVcbiAqIC0gRXN0YWRvIGRlIHNlbGVjY2nDs24gY29tcGxldGFcbiAqIC0gUHJlc2VydmFjacOzbiBkZSBzZWxlY2Npw7NuIHRyYXMgYWN0dWFsaXphY2lvbmVzIGRlIGRhdG9zXG4gKiAtIEVtaXNpw7NuIGRlIGV2ZW50b3MgZGUgc2VsZWNjacOzblxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVNlbGVjdGlvblNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBJbmljaWFsaXphIGVsIGVzdGFkbyBkZSBzZWxlY2Npw7NuIHBhcmEgdW5hIG51ZXZhIHRhYmxhXG4gICAqIEByZXR1cm5zIE9iamV0byBjb24gc2lnbmFscyB5IG3DqXRvZG9zIGRlIHNlbGVjY2nDs25cbiAgICovXG4gIGNyZWF0ZVNlbGVjdGlvblN0YXRlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHNpZ25hbDxTZXQ8c3RyaW5nPj4obmV3IFNldCgpKTtcbiAgICBjb25zdCBzZWxlY3RBbGxDaGVja2VkID0gc2lnbmFsKGZhbHNlKTtcbiAgICBjb25zdCBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIGNvbnN0IHNpZ25hbHMgPSB7IHNlbGVjdGVkSXRlbXMsIHNlbGVjdEFsbENoZWNrZWQsIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3RlZEl0ZW1zOiBzZWxlY3RlZEl0ZW1zLmFzUmVhZG9ubHkoKSxcbiAgICAgIHNlbGVjdEFsbENoZWNrZWQ6IHNlbGVjdEFsbENoZWNrZWQuYXNSZWFkb25seSgpLFxuICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZTogc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZS5hc1JlYWRvbmx5KCksXG4gICAgICBjbGVhclNlbGVjdGlvbjogKCkgPT4gdGhpcy5jbGVhclNlbGVjdGlvbihzaWduYWxzKSxcbiAgICAgIHRvZ2dsZVNlbGVjdEFsbDogKGFsbEl0ZW1zOiBUW10pID0+IHRoaXMudG9nZ2xlU2VsZWN0QWxsKHNpZ25hbHMsIGFsbEl0ZW1zKSxcbiAgICAgIHRvZ2dsZUl0ZW1TZWxlY3Rpb246IChpdGVtOiBULCBtdWx0aXBsZTogYm9vbGVhbikgPT4gdGhpcy50b2dnbGVJdGVtU2VsZWN0aW9uKHNlbGVjdGVkSXRlbXMsIGl0ZW0sIG11bHRpcGxlKSxcbiAgICAgIGlzSXRlbVNlbGVjdGVkOiAoaXRlbTogVCkgPT4gdGhpcy5pc0l0ZW1TZWxlY3RlZChzZWxlY3RlZEl0ZW1zLCBpdGVtKSxcbiAgICAgIHByZXNlcnZlU2VsZWN0aW9uOiAobmV3RGF0YTogVFtdKSA9PiB0aGlzLnByZXNlcnZlU2VsZWN0aW9uKHNpZ25hbHMsIG5ld0RhdGEpLFxuICAgICAgZ2V0U2VsZWN0ZWRJdGVtczogKGFsbERhdGE6IFRbXSkgPT4gdGhpcy5nZXRTZWxlY3RlZEl0ZW1zKHNlbGVjdGVkSXRlbXMsIGFsbERhdGEpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU2VsZWN0aW9uKHNpZ25hbHM6IHtcbiAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PHN0cmluZz4+PjtcbiAgICBzZWxlY3RBbGxDaGVja2VkOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+O1xuICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGU6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxib29sZWFuPj47XG4gIH0pOiB2b2lkIHtcbiAgICBzaWduYWxzLnNlbGVjdGVkSXRlbXMuc2V0KG5ldyBTZXQoKSk7XG4gICAgc2lnbmFscy5zZWxlY3RBbGxDaGVja2VkLnNldChmYWxzZSk7XG4gICAgc2lnbmFscy5zZWxlY3RBbGxJbmRldGVybWluYXRlLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVNlbGVjdEFsbDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgIHNpZ25hbHM6IHtcbiAgICAgIHNlbGVjdGVkSXRlbXM6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxTZXQ8c3RyaW5nPj4+O1xuICAgICAgc2VsZWN0QWxsQ2hlY2tlZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPGJvb2xlYW4+PjtcbiAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGU6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxib29sZWFuPj47XG4gICAgfSxcbiAgICBhbGxJdGVtczogVFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSBzaWduYWxzLnNlbGVjdGVkSXRlbXMoKTtcblxuICAgIGlmIChjdXJyZW50U2VsZWN0aW9uLnNpemUgPT09IGFsbEl0ZW1zLmxlbmd0aCkge1xuICAgICAgc2lnbmFscy5zZWxlY3RlZEl0ZW1zLnNldChuZXcgU2V0KCkpO1xuICAgICAgc2lnbmFscy5zZWxlY3RBbGxDaGVja2VkLnNldChmYWxzZSk7XG4gICAgICBzaWduYWxzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYWxsSWRzID0gbmV3IFNldChhbGxJdGVtcy5tYXAoaXRlbSA9PiBpdGVtWydpZCddIGFzIHN0cmluZykpO1xuICAgICAgc2lnbmFscy5zZWxlY3RlZEl0ZW1zLnNldChhbGxJZHMpO1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RBbGxTdGF0ZShhbGxJdGVtcywgYWxsSWRzLnNpemUsIHNpZ25hbHMuc2VsZWN0QWxsQ2hlY2tlZCwgc2lnbmFscy5zZWxlY3RBbGxJbmRldGVybWluYXRlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUl0ZW1TZWxlY3Rpb248VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PHN0cmluZz4+PixcbiAgICBpdGVtOiBULFxuICAgIG11bHRpcGxlOiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gaXRlbVsnaWQnXSBhcyBzdHJpbmc7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IG5ldyBTZXQoc2VsZWN0ZWRJdGVtcygpKTtcblxuICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgIGlmICghc2VsZWN0ZWRJdGVtcygpLmhhcyhpZCkpIHtcbiAgICAgICAgY3VycmVudFNlbGVjdGlvbi5hZGQoaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY3VycmVudFNlbGVjdGlvbi5oYXMoaWQpKSB7XG4gICAgICBjdXJyZW50U2VsZWN0aW9uLmRlbGV0ZShpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24uYWRkKGlkKTtcbiAgICB9XG5cbiAgICBzZWxlY3RlZEl0ZW1zLnNldChjdXJyZW50U2VsZWN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNJdGVtU2VsZWN0ZWQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PHN0cmluZz4+PixcbiAgICBpdGVtOiBUXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zKCkuaGFzKGl0ZW1bJ2lkJ10gYXMgc3RyaW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlc2VydmVTZWxlY3Rpb248VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICBzaWduYWxzOiB7XG4gICAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PHN0cmluZz4+PjtcbiAgICAgIHNlbGVjdEFsbENoZWNrZWQ6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxib29sZWFuPj47XG4gICAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+O1xuICAgIH0sXG4gICAgbmV3RGF0YTogVFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSBzaWduYWxzLnNlbGVjdGVkSXRlbXMoKTtcblxuICAgIGlmIChjdXJyZW50U2VsZWN0aW9uLnNpemUgPT09IDAgfHwgbmV3RGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oc2lnbmFscyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXZhaWxhYmxlSWRzID0gbmV3IFNldChuZXdEYXRhLm1hcChpdGVtID0+IGl0ZW1bJ2lkJ10gYXMgc3RyaW5nKSk7XG4gICAgY29uc3QgcHJlc2VydmVkU2VsZWN0aW9uID0gbmV3IFNldChcbiAgICAgIEFycmF5LmZyb20oY3VycmVudFNlbGVjdGlvbikuZmlsdGVyKGlkID0+IGF2YWlsYWJsZUlkcy5oYXMoaWQpKVxuICAgICk7XG5cbiAgICBzaWduYWxzLnNlbGVjdGVkSXRlbXMuc2V0KHByZXNlcnZlZFNlbGVjdGlvbik7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RBbGxTdGF0ZShuZXdEYXRhLCBwcmVzZXJ2ZWRTZWxlY3Rpb24uc2l6ZSwgc2lnbmFscy5zZWxlY3RBbGxDaGVja2VkLCBzaWduYWxzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZEl0ZW1zPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgc2VsZWN0ZWRJdGVtczogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPFNldDxzdHJpbmc+Pj4sXG4gICAgYWxsRGF0YTogVFtdXG4gICk6IFRbXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBzZWxlY3RlZEl0ZW1zKCk7XG4gICAgcmV0dXJuIGFsbERhdGEuZmlsdGVyKGl0ZW0gPT4gc2VsZWN0ZWRJZHMuaGFzKGl0ZW1bJ2lkJ10gYXMgc3RyaW5nKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdEFsbFN0YXRlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgYWxsSXRlbXM6IFRbXSxcbiAgICBzZWxlY3RlZENvdW50OiBudW1iZXIsXG4gICAgc2VsZWN0QWxsQ2hlY2tlZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPGJvb2xlYW4+PixcbiAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHRvdGFsQ291bnQgPSBhbGxJdGVtcy5sZW5ndGg7XG5cbiAgICBpZiAoc2VsZWN0ZWRDb3VudCA9PT0gMCkge1xuICAgICAgc2VsZWN0QWxsQ2hlY2tlZC5zZXQoZmFsc2UpO1xuICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZS5zZXQoZmFsc2UpO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRDb3VudCA9PT0gdG90YWxDb3VudCkge1xuICAgICAgc2VsZWN0QWxsQ2hlY2tlZC5zZXQodHJ1ZSk7XG4gICAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlLnNldChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdEFsbENoZWNrZWQuc2V0KGZhbHNlKTtcbiAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0ZSBsb3MgZWxlbWVudG9zIHNlbGVjY2lvbmFkb3MgYSB0cmF2w6lzIGRlbCBvdXRwdXQgcHJvcG9yY2lvbmFkb1xuICAgKiBAcGFyYW0gc2VsZWN0aW9uU3RhdGUgLSBFc3RhZG8gZGUgc2VsZWNjacOzblxuICAgKiBAcGFyYW0gYWxsRGF0YSAtIFRvZG9zIGxvcyBkYXRvcyBkZSBsYSB0YWJsYVxuICAgKiBAcGFyYW0gc2VsZWN0YWJsZUVtaXR0ZXIgLSBPdXRwdXQgcGFyYSBlbWl0aXIgbGEgc2VsZWNjacOzblxuICAgKi9cbiAgZW1pdFNlbGVjdGlvbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgIHNlbGVjdGlvblN0YXRlOiB7IGdldFNlbGVjdGVkSXRlbXM6IChhbGxEYXRhOiBUW10pID0+IFRbXSB9LFxuICAgIGFsbERhdGE6IFRbXSxcbiAgICBzZWxlY3RhYmxlRW1pdHRlcjogT3V0cHV0RW1pdHRlclJlZjxUW10+XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSBzZWxlY3Rpb25TdGF0ZS5nZXRTZWxlY3RlZEl0ZW1zKGFsbERhdGEpO1xuICAgIHNlbGVjdGFibGVFbWl0dGVyLmVtaXQoc2VsZWN0ZWRJdGVtcyk7XG4gIH1cbn1cbiJdfQ==
|