ng-firebase-table-kxp 1.2.6 → 1.2.8
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/README.md +602 -602
- package/esm2020/lib/components/table/table.component.mjs +1559 -1557
- package/esm2020/lib/components/table-tabs/table-tabs.component.mjs +129 -129
- package/esm2020/lib/components/table-tooltip/table-tooltip.component.mjs +49 -49
- package/esm2020/lib/ng-firebase-table-kxp.component.mjs +14 -14
- package/esm2020/lib/ng-firebase-table-kxp.module.mjs +102 -102
- package/esm2020/lib/ng-firebase-table-kxp.service.mjs +14 -14
- package/esm2020/lib/services/filter.service.mjs +419 -416
- package/esm2020/lib/services/pagination.service.mjs +115 -115
- package/esm2020/lib/services/table.service.mjs +1140 -1140
- package/esm2020/lib/services/tooltip.service.mjs +141 -141
- package/esm2020/lib/types/Table.mjs +9 -9
- package/esm2020/lib/utils/table.utils.mjs +75 -75
- package/esm2020/ng-firebase-table-kxp.mjs +4 -4
- package/esm2020/public-api.mjs +22 -22
- package/fesm2015/ng-firebase-table-kxp.mjs +3966 -3960
- package/fesm2015/ng-firebase-table-kxp.mjs.map +1 -1
- package/fesm2020/ng-firebase-table-kxp.mjs +3668 -3663
- package/fesm2020/ng-firebase-table-kxp.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/components/table/table.component.d.ts +135 -135
- package/lib/components/table-tabs/table-tabs.component.d.ts +34 -34
- package/lib/components/table-tooltip/table-tooltip.component.d.ts +18 -18
- package/lib/ng-firebase-table-kxp.component.d.ts +5 -5
- package/lib/ng-firebase-table-kxp.module.d.ts +24 -24
- package/lib/ng-firebase-table-kxp.service.d.ts +6 -6
- package/lib/services/filter.service.d.ts +88 -88
- package/lib/services/pagination.service.d.ts +34 -34
- package/lib/services/table.service.d.ts +80 -80
- package/lib/services/tooltip.service.d.ts +73 -73
- package/lib/types/Table.d.ts +162 -162
- package/lib/utils/table.utils.d.ts +25 -25
- package/package.json +1 -1
- package/public-api.d.ts +12 -12
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class PaginationService {
|
|
4
|
-
calculateNavigation(event, currentState) {
|
|
5
|
-
const previousPageIndex = event.previousPageIndex ?? 0;
|
|
6
|
-
const pageIndex = event.pageIndex;
|
|
7
|
-
const eventPageSize = event.pageSize;
|
|
8
|
-
const totalItems = currentState.totalItems;
|
|
9
|
-
const currentComponentPageSize = currentState.pageSize;
|
|
10
|
-
let navigationDirection = 'reload';
|
|
11
|
-
let resetDocs = false;
|
|
12
|
-
let originalPageSize = null;
|
|
13
|
-
let shouldNavigate = true;
|
|
14
|
-
let newClientPageIndex = pageIndex;
|
|
15
|
-
let newPageNumber = currentState.currentPageNumber;
|
|
16
|
-
const lastPageIndex = Math.max(0, Math.ceil(totalItems / eventPageSize) - 1);
|
|
17
|
-
// Atualizar número da página
|
|
18
|
-
if (previousPageIndex !== undefined && pageIndex > previousPageIndex) {
|
|
19
|
-
newPageNumber++;
|
|
20
|
-
}
|
|
21
|
-
else if (previousPageIndex !== undefined &&
|
|
22
|
-
pageIndex < previousPageIndex) {
|
|
23
|
-
newPageNumber = Math.max(1, newPageNumber - 1);
|
|
24
|
-
}
|
|
25
|
-
// Mudança de tamanho de página
|
|
26
|
-
if (eventPageSize !== currentComponentPageSize) {
|
|
27
|
-
navigationDirection = 'forward';
|
|
28
|
-
resetDocs = true;
|
|
29
|
-
newClientPageIndex = 0;
|
|
30
|
-
}
|
|
31
|
-
// Indo para primeira página
|
|
32
|
-
else if (pageIndex === 0 &&
|
|
33
|
-
previousPageIndex !== undefined &&
|
|
34
|
-
pageIndex < previousPageIndex) {
|
|
35
|
-
navigationDirection = 'forward';
|
|
36
|
-
newPageNumber = 1;
|
|
37
|
-
newClientPageIndex = 0;
|
|
38
|
-
resetDocs = true;
|
|
39
|
-
}
|
|
40
|
-
// Indo para última página (salto)
|
|
41
|
-
else if (pageIndex === lastPageIndex &&
|
|
42
|
-
previousPageIndex !== undefined &&
|
|
43
|
-
pageIndex > previousPageIndex &&
|
|
44
|
-
pageIndex - previousPageIndex > 1) {
|
|
45
|
-
navigationDirection = 'backward';
|
|
46
|
-
resetDocs = true;
|
|
47
|
-
const itemsExpectedInLastPage = totalItems - lastPageIndex * eventPageSize;
|
|
48
|
-
if (itemsExpectedInLastPage > 0 &&
|
|
49
|
-
itemsExpectedInLastPage < eventPageSize) {
|
|
50
|
-
originalPageSize = currentComponentPageSize;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// Próxima página
|
|
54
|
-
else if (previousPageIndex !== undefined && pageIndex > previousPageIndex) {
|
|
55
|
-
navigationDirection = 'forward';
|
|
56
|
-
resetDocs = false;
|
|
57
|
-
}
|
|
58
|
-
// Página anterior
|
|
59
|
-
else if (previousPageIndex !== undefined && pageIndex < previousPageIndex) {
|
|
60
|
-
navigationDirection = 'backward';
|
|
61
|
-
resetDocs = false;
|
|
62
|
-
}
|
|
63
|
-
// Mesma página (reload)
|
|
64
|
-
else if (previousPageIndex !== undefined &&
|
|
65
|
-
pageIndex === previousPageIndex) {
|
|
66
|
-
navigationDirection = 'reload';
|
|
67
|
-
resetDocs = false;
|
|
68
|
-
}
|
|
69
|
-
// Caso inicial (primeira carga)
|
|
70
|
-
else if (previousPageIndex === undefined && pageIndex === 0) {
|
|
71
|
-
shouldNavigate = false;
|
|
72
|
-
}
|
|
73
|
-
// Caso não tratado
|
|
74
|
-
else {
|
|
75
|
-
console.warn('Condição de navegação não tratada:', event);
|
|
76
|
-
shouldNavigate = false;
|
|
77
|
-
}
|
|
78
|
-
return {
|
|
79
|
-
direction: navigationDirection,
|
|
80
|
-
resetDocs,
|
|
81
|
-
originalPageSize,
|
|
82
|
-
shouldNavigate,
|
|
83
|
-
newClientPageIndex,
|
|
84
|
-
newPageNumber,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Calcula o número de itens esperados na última página
|
|
89
|
-
*/
|
|
90
|
-
calculateLastPageItemCount(totalItems, pageSize) {
|
|
91
|
-
const lastPageIndex = Math.max(0, Math.ceil(totalItems / pageSize) - 1);
|
|
92
|
-
return totalItems - lastPageIndex * pageSize;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Calcula o índice da última página
|
|
96
|
-
*/
|
|
97
|
-
calculateLastPageIndex(totalItems, pageSize) {
|
|
98
|
-
return Math.max(0, Math.ceil(totalItems / pageSize) - 1);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Verifica se deve mostrar o botão de próxima página
|
|
102
|
-
*/
|
|
103
|
-
shouldShowNextButton(hasNextPage, isPaginated) {
|
|
104
|
-
return hasNextPage || !isPaginated;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
PaginationService.ɵfac = function PaginationService_Factory(t) { return new (t || PaginationService)(); };
|
|
108
|
-
PaginationService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PaginationService, factory: PaginationService.ɵfac, providedIn: 'root' });
|
|
109
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationService, [{
|
|
110
|
-
type: Injectable,
|
|
111
|
-
args: [{
|
|
112
|
-
providedIn: 'root',
|
|
113
|
-
}]
|
|
114
|
-
}], null, null); })();
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZmlyZWJhc2UtdGFibGUta3hwL3NyYy9saWIvc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBdUIzQyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLG1CQUFtQixDQUNqQixLQUFnQixFQUNoQixZQUE2QjtRQUU3QixNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNsQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ3JDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFDM0MsTUFBTSx3QkFBd0IsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBRXZELElBQUksbUJBQW1CLEdBQXNDLFFBQVEsQ0FBQztRQUN0RSxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxnQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBQzNDLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUNuQyxJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUM7UUFFbkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDNUIsQ0FBQyxFQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FDMUMsQ0FBQztRQUVGLDZCQUE2QjtRQUM3QixJQUFJLGlCQUFpQixLQUFLLFNBQVMsSUFBSSxTQUFTLEdBQUcsaUJBQWlCLEVBQUU7WUFDcEUsYUFBYSxFQUFFLENBQUM7U0FDakI7YUFBTSxJQUNMLGlCQUFpQixLQUFLLFNBQVM7WUFDL0IsU0FBUyxHQUFHLGlCQUFpQixFQUM3QjtZQUNBLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7UUFFRCwrQkFBK0I7UUFDL0IsSUFBSSxhQUFhLEtBQUssd0JBQXdCLEVBQUU7WUFDOUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDakIsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsNEJBQTRCO2FBQ3ZCLElBQ0gsU0FBUyxLQUFLLENBQUM7WUFDZixpQkFBaUIsS0FBSyxTQUFTO1lBQy9CLFNBQVMsR0FBRyxpQkFBaUIsRUFDN0I7WUFDQSxtQkFBbUIsR0FBRyxTQUFTLENBQUM7WUFDaEMsYUFBYSxHQUFHLENBQUMsQ0FBQztZQUNsQixrQkFBa0IsR0FBRyxDQUFDLENBQUM7WUFDdkIsU0FBUyxHQUFHLElBQUksQ0FBQztTQUNsQjtRQUNELGtDQUFrQzthQUM3QixJQUNILFNBQVMsS0FBSyxhQUFhO1lBQzNCLGlCQUFpQixLQUFLLFNBQVM7WUFDL0IsU0FBUyxHQUFHLGlCQUFpQjtZQUM3QixTQUFTLEdBQUcsaUJBQWlCLEdBQUcsQ0FBQyxFQUNqQztZQUNBLG1CQUFtQixHQUFHLFVBQVUsQ0FBQztZQUNqQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBRWpCLE1BQU0sdUJBQXVCLEdBQzNCLFVBQVUsR0FBRyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBRTdDLElBQ0UsdUJBQXVCLEdBQUcsQ0FBQztnQkFDM0IsdUJBQXVCLEdBQUcsYUFBYSxFQUN2QztnQkFDQSxnQkFBZ0IsR0FBRyx3QkFBd0IsQ0FBQzthQUM3QztTQUNGO1FBQ0QsaUJBQWlCO2FBQ1osSUFBSSxpQkFBaUIsS0FBSyxTQUFTLElBQUksU0FBUyxHQUFHLGlCQUFpQixFQUFFO1lBQ3pFLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztZQUNoQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ25CO1FBQ0Qsa0JBQWtCO2FBQ2IsSUFBSSxpQkFBaUIsS0FBSyxTQUFTLElBQUksU0FBUyxHQUFHLGlCQUFpQixFQUFFO1lBQ3pFLG1CQUFtQixHQUFHLFVBQVUsQ0FBQztZQUNqQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ25CO1FBQ0Qsd0JBQXdCO2FBQ25CLElBQ0gsaUJBQWlCLEtBQUssU0FBUztZQUMvQixTQUFTLEtBQUssaUJBQWlCLEVBQy9CO1lBQ0EsbUJBQW1CLEdBQUcsUUFBUSxDQUFDO1lBQy9CLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDbkI7UUFDRCxnQ0FBZ0M7YUFDM0IsSUFBSSxpQkFBaUIsS0FBSyxTQUFTLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRTtZQUMzRCxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO1FBQ0QsbUJBQW1CO2FBQ2Q7WUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFELGNBQWMsR0FBRyxLQUFLLENBQUM7U0FDeEI7UUFFRCxPQUFPO1lBQ0wsU0FBUyxFQUFFLG1CQUFtQjtZQUM5QixTQUFTO1lBQ1QsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsYUFBYTtTQUNkLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCwwQkFBMEIsQ0FBQyxVQUFrQixFQUFFLFFBQWdCO1FBQzdELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sVUFBVSxHQUFHLGFBQWEsR0FBRyxRQUFRLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsVUFBa0IsRUFBRSxRQUFnQjtRQUN6RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLFdBQW9CLEVBQUUsV0FBb0I7UUFDN0QsT0FBTyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDckMsQ0FBQzs7a0ZBaElVLGlCQUFpQjt1RUFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQixtQkFGaEIsTUFBTTt1RkFFUCxpQkFBaUI7Y0FIN0IsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uU3RhdGUge1xyXG4gIGN1cnJlbnRQYWdlTnVtYmVyOiBudW1iZXI7XHJcbiAgY3VycmVudENsaWVudFBhZ2VJbmRleDogbnVtYmVyO1xyXG4gIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgdG90YWxJdGVtczogbnVtYmVyO1xyXG4gIGhhc05leHRQYWdlOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRpb25SZXN1bHQge1xyXG4gIGRpcmVjdGlvbjogJ2ZvcndhcmQnIHwgJ2JhY2t3YXJkJyB8ICdyZWxvYWQnO1xyXG4gIHJlc2V0RG9jczogYm9vbGVhbjtcclxuICBvcmlnaW5hbFBhZ2VTaXplOiBudW1iZXIgfCBudWxsO1xyXG4gIHNob3VsZE5hdmlnYXRlOiBib29sZWFuO1xyXG4gIG5ld0NsaWVudFBhZ2VJbmRleDogbnVtYmVyO1xyXG4gIG5ld1BhZ2VOdW1iZXI6IG51bWJlcjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25TZXJ2aWNlIHtcclxuICBjYWxjdWxhdGVOYXZpZ2F0aW9uKFxyXG4gICAgZXZlbnQ6IFBhZ2VFdmVudCxcclxuICAgIGN1cnJlbnRTdGF0ZTogUGFnaW5hdGlvblN0YXRlXHJcbiAgKTogTmF2aWdhdGlvblJlc3VsdCB7XHJcbiAgICBjb25zdCBwcmV2aW91c1BhZ2VJbmRleCA9IGV2ZW50LnByZXZpb3VzUGFnZUluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBwYWdlSW5kZXggPSBldmVudC5wYWdlSW5kZXg7XHJcbiAgICBjb25zdCBldmVudFBhZ2VTaXplID0gZXZlbnQucGFnZVNpemU7XHJcbiAgICBjb25zdCB0b3RhbEl0ZW1zID0gY3VycmVudFN0YXRlLnRvdGFsSXRlbXM7XHJcbiAgICBjb25zdCBjdXJyZW50Q29tcG9uZW50UGFnZVNpemUgPSBjdXJyZW50U3RhdGUucGFnZVNpemU7XHJcblxyXG4gICAgbGV0IG5hdmlnYXRpb25EaXJlY3Rpb246ICdmb3J3YXJkJyB8ICdiYWNrd2FyZCcgfCAncmVsb2FkJyA9ICdyZWxvYWQnO1xyXG4gICAgbGV0IHJlc2V0RG9jcyA9IGZhbHNlO1xyXG4gICAgbGV0IG9yaWdpbmFsUGFnZVNpemU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IHNob3VsZE5hdmlnYXRlID0gdHJ1ZTtcclxuICAgIGxldCBuZXdDbGllbnRQYWdlSW5kZXggPSBwYWdlSW5kZXg7XHJcbiAgICBsZXQgbmV3UGFnZU51bWJlciA9IGN1cnJlbnRTdGF0ZS5jdXJyZW50UGFnZU51bWJlcjtcclxuXHJcbiAgICBjb25zdCBsYXN0UGFnZUluZGV4ID0gTWF0aC5tYXgoXHJcbiAgICAgIDAsXHJcbiAgICAgIE1hdGguY2VpbCh0b3RhbEl0ZW1zIC8gZXZlbnRQYWdlU2l6ZSkgLSAxXHJcbiAgICApO1xyXG5cclxuICAgIC8vIEF0dWFsaXphciBuw7ptZXJvIGRhIHDDoWdpbmFcclxuICAgIGlmIChwcmV2aW91c1BhZ2VJbmRleCAhPT0gdW5kZWZpbmVkICYmIHBhZ2VJbmRleCA+IHByZXZpb3VzUGFnZUluZGV4KSB7XHJcbiAgICAgIG5ld1BhZ2VOdW1iZXIrKztcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHByZXZpb3VzUGFnZUluZGV4ICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgcGFnZUluZGV4IDwgcHJldmlvdXNQYWdlSW5kZXhcclxuICAgICkge1xyXG4gICAgICBuZXdQYWdlTnVtYmVyID0gTWF0aC5tYXgoMSwgbmV3UGFnZU51bWJlciAtIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE11ZGFuw6dhIGRlIHRhbWFuaG8gZGUgcMOhZ2luYVxyXG4gICAgaWYgKGV2ZW50UGFnZVNpemUgIT09IGN1cnJlbnRDb21wb25lbnRQYWdlU2l6ZSkge1xyXG4gICAgICBuYXZpZ2F0aW9uRGlyZWN0aW9uID0gJ2ZvcndhcmQnO1xyXG4gICAgICByZXNldERvY3MgPSB0cnVlO1xyXG4gICAgICBuZXdDbGllbnRQYWdlSW5kZXggPSAwO1xyXG4gICAgfVxyXG4gICAgLy8gSW5kbyBwYXJhIHByaW1laXJhIHDDoWdpbmFcclxuICAgIGVsc2UgaWYgKFxyXG4gICAgICBwYWdlSW5kZXggPT09IDAgJiZcclxuICAgICAgcHJldmlvdXNQYWdlSW5kZXggIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICBwYWdlSW5kZXggPCBwcmV2aW91c1BhZ2VJbmRleFxyXG4gICAgKSB7XHJcbiAgICAgIG5hdmlnYXRpb25EaXJlY3Rpb24gPSAnZm9yd2FyZCc7XHJcbiAgICAgIG5ld1BhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICBuZXdDbGllbnRQYWdlSW5kZXggPSAwO1xyXG4gICAgICByZXNldERvY3MgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gSW5kbyBwYXJhIMO6bHRpbWEgcMOhZ2luYSAoc2FsdG8pXHJcbiAgICBlbHNlIGlmIChcclxuICAgICAgcGFnZUluZGV4ID09PSBsYXN0UGFnZUluZGV4ICYmXHJcbiAgICAgIHByZXZpb3VzUGFnZUluZGV4ICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgcGFnZUluZGV4ID4gcHJldmlvdXNQYWdlSW5kZXggJiZcclxuICAgICAgcGFnZUluZGV4IC0gcHJldmlvdXNQYWdlSW5kZXggPiAxXHJcbiAgICApIHtcclxuICAgICAgbmF2aWdhdGlvbkRpcmVjdGlvbiA9ICdiYWNrd2FyZCc7XHJcbiAgICAgIHJlc2V0RG9jcyA9IHRydWU7XHJcblxyXG4gICAgICBjb25zdCBpdGVtc0V4cGVjdGVkSW5MYXN0UGFnZSA9XHJcbiAgICAgICAgdG90YWxJdGVtcyAtIGxhc3RQYWdlSW5kZXggKiBldmVudFBhZ2VTaXplO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW1zRXhwZWN0ZWRJbkxhc3RQYWdlID4gMCAmJlxyXG4gICAgICAgIGl0ZW1zRXhwZWN0ZWRJbkxhc3RQYWdlIDwgZXZlbnRQYWdlU2l6ZVxyXG4gICAgICApIHtcclxuICAgICAgICBvcmlnaW5hbFBhZ2VTaXplID0gY3VycmVudENvbXBvbmVudFBhZ2VTaXplO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBQcsOzeGltYSBww6FnaW5hXHJcbiAgICBlbHNlIGlmIChwcmV2aW91c1BhZ2VJbmRleCAhPT0gdW5kZWZpbmVkICYmIHBhZ2VJbmRleCA+IHByZXZpb3VzUGFnZUluZGV4KSB7XHJcbiAgICAgIG5hdmlnYXRpb25EaXJlY3Rpb24gPSAnZm9yd2FyZCc7XHJcbiAgICAgIHJlc2V0RG9jcyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gUMOhZ2luYSBhbnRlcmlvclxyXG4gICAgZWxzZSBpZiAocHJldmlvdXNQYWdlSW5kZXggIT09IHVuZGVmaW5lZCAmJiBwYWdlSW5kZXggPCBwcmV2aW91c1BhZ2VJbmRleCkge1xyXG4gICAgICBuYXZpZ2F0aW9uRGlyZWN0aW9uID0gJ2JhY2t3YXJkJztcclxuICAgICAgcmVzZXREb2NzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBNZXNtYSBww6FnaW5hIChyZWxvYWQpXHJcbiAgICBlbHNlIGlmIChcclxuICAgICAgcHJldmlvdXNQYWdlSW5kZXggIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICBwYWdlSW5kZXggPT09IHByZXZpb3VzUGFnZUluZGV4XHJcbiAgICApIHtcclxuICAgICAgbmF2aWdhdGlvbkRpcmVjdGlvbiA9ICdyZWxvYWQnO1xyXG4gICAgICByZXNldERvY3MgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENhc28gaW5pY2lhbCAocHJpbWVpcmEgY2FyZ2EpXHJcbiAgICBlbHNlIGlmIChwcmV2aW91c1BhZ2VJbmRleCA9PT0gdW5kZWZpbmVkICYmIHBhZ2VJbmRleCA9PT0gMCkge1xyXG4gICAgICBzaG91bGROYXZpZ2F0ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2FzbyBuw6NvIHRyYXRhZG9cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ0NvbmRpw6fDo28gZGUgbmF2ZWdhw6fDo28gbsOjbyB0cmF0YWRhOicsIGV2ZW50KTtcclxuICAgICAgc2hvdWxkTmF2aWdhdGUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkaXJlY3Rpb246IG5hdmlnYXRpb25EaXJlY3Rpb24sXHJcbiAgICAgIHJlc2V0RG9jcyxcclxuICAgICAgb3JpZ2luYWxQYWdlU2l6ZSxcclxuICAgICAgc2hvdWxkTmF2aWdhdGUsXHJcbiAgICAgIG5ld0NsaWVudFBhZ2VJbmRleCxcclxuICAgICAgbmV3UGFnZU51bWJlcixcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhIG8gbsO6bWVybyBkZSBpdGVucyBlc3BlcmFkb3MgbmEgw7psdGltYSBww6FnaW5hXHJcbiAgICovXHJcbiAgY2FsY3VsYXRlTGFzdFBhZ2VJdGVtQ291bnQodG90YWxJdGVtczogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGxhc3RQYWdlSW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLmNlaWwodG90YWxJdGVtcyAvIHBhZ2VTaXplKSAtIDEpO1xyXG4gICAgcmV0dXJuIHRvdGFsSXRlbXMgLSBsYXN0UGFnZUluZGV4ICogcGFnZVNpemU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhIG8gw61uZGljZSBkYSDDumx0aW1hIHDDoWdpbmFcclxuICAgKi9cclxuICBjYWxjdWxhdGVMYXN0UGFnZUluZGV4KHRvdGFsSXRlbXM6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKHRvdGFsSXRlbXMgLyBwYWdlU2l6ZSkgLSAxKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcmlmaWNhIHNlIGRldmUgbW9zdHJhciBvIGJvdMOjbyBkZSBwcsOzeGltYSBww6FnaW5hXHJcbiAgICovXHJcbiAgc2hvdWxkU2hvd05leHRCdXR0b24oaGFzTmV4dFBhZ2U6IGJvb2xlYW4sIGlzUGFnaW5hdGVkOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaGFzTmV4dFBhZ2UgfHwgIWlzUGFnaW5hdGVkO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class PaginationService {
|
|
4
|
+
calculateNavigation(event, currentState) {
|
|
5
|
+
const previousPageIndex = event.previousPageIndex ?? 0;
|
|
6
|
+
const pageIndex = event.pageIndex;
|
|
7
|
+
const eventPageSize = event.pageSize;
|
|
8
|
+
const totalItems = currentState.totalItems;
|
|
9
|
+
const currentComponentPageSize = currentState.pageSize;
|
|
10
|
+
let navigationDirection = 'reload';
|
|
11
|
+
let resetDocs = false;
|
|
12
|
+
let originalPageSize = null;
|
|
13
|
+
let shouldNavigate = true;
|
|
14
|
+
let newClientPageIndex = pageIndex;
|
|
15
|
+
let newPageNumber = currentState.currentPageNumber;
|
|
16
|
+
const lastPageIndex = Math.max(0, Math.ceil(totalItems / eventPageSize) - 1);
|
|
17
|
+
// Atualizar número da página
|
|
18
|
+
if (previousPageIndex !== undefined && pageIndex > previousPageIndex) {
|
|
19
|
+
newPageNumber++;
|
|
20
|
+
}
|
|
21
|
+
else if (previousPageIndex !== undefined &&
|
|
22
|
+
pageIndex < previousPageIndex) {
|
|
23
|
+
newPageNumber = Math.max(1, newPageNumber - 1);
|
|
24
|
+
}
|
|
25
|
+
// Mudança de tamanho de página
|
|
26
|
+
if (eventPageSize !== currentComponentPageSize) {
|
|
27
|
+
navigationDirection = 'forward';
|
|
28
|
+
resetDocs = true;
|
|
29
|
+
newClientPageIndex = 0;
|
|
30
|
+
}
|
|
31
|
+
// Indo para primeira página
|
|
32
|
+
else if (pageIndex === 0 &&
|
|
33
|
+
previousPageIndex !== undefined &&
|
|
34
|
+
pageIndex < previousPageIndex) {
|
|
35
|
+
navigationDirection = 'forward';
|
|
36
|
+
newPageNumber = 1;
|
|
37
|
+
newClientPageIndex = 0;
|
|
38
|
+
resetDocs = true;
|
|
39
|
+
}
|
|
40
|
+
// Indo para última página (salto)
|
|
41
|
+
else if (pageIndex === lastPageIndex &&
|
|
42
|
+
previousPageIndex !== undefined &&
|
|
43
|
+
pageIndex > previousPageIndex &&
|
|
44
|
+
pageIndex - previousPageIndex > 1) {
|
|
45
|
+
navigationDirection = 'backward';
|
|
46
|
+
resetDocs = true;
|
|
47
|
+
const itemsExpectedInLastPage = totalItems - lastPageIndex * eventPageSize;
|
|
48
|
+
if (itemsExpectedInLastPage > 0 &&
|
|
49
|
+
itemsExpectedInLastPage < eventPageSize) {
|
|
50
|
+
originalPageSize = currentComponentPageSize;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Próxima página
|
|
54
|
+
else if (previousPageIndex !== undefined && pageIndex > previousPageIndex) {
|
|
55
|
+
navigationDirection = 'forward';
|
|
56
|
+
resetDocs = false;
|
|
57
|
+
}
|
|
58
|
+
// Página anterior
|
|
59
|
+
else if (previousPageIndex !== undefined && pageIndex < previousPageIndex) {
|
|
60
|
+
navigationDirection = 'backward';
|
|
61
|
+
resetDocs = false;
|
|
62
|
+
}
|
|
63
|
+
// Mesma página (reload)
|
|
64
|
+
else if (previousPageIndex !== undefined &&
|
|
65
|
+
pageIndex === previousPageIndex) {
|
|
66
|
+
navigationDirection = 'reload';
|
|
67
|
+
resetDocs = false;
|
|
68
|
+
}
|
|
69
|
+
// Caso inicial (primeira carga)
|
|
70
|
+
else if (previousPageIndex === undefined && pageIndex === 0) {
|
|
71
|
+
shouldNavigate = false;
|
|
72
|
+
}
|
|
73
|
+
// Caso não tratado
|
|
74
|
+
else {
|
|
75
|
+
console.warn('Condição de navegação não tratada:', event);
|
|
76
|
+
shouldNavigate = false;
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
direction: navigationDirection,
|
|
80
|
+
resetDocs,
|
|
81
|
+
originalPageSize,
|
|
82
|
+
shouldNavigate,
|
|
83
|
+
newClientPageIndex,
|
|
84
|
+
newPageNumber,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Calcula o número de itens esperados na última página
|
|
89
|
+
*/
|
|
90
|
+
calculateLastPageItemCount(totalItems, pageSize) {
|
|
91
|
+
const lastPageIndex = Math.max(0, Math.ceil(totalItems / pageSize) - 1);
|
|
92
|
+
return totalItems - lastPageIndex * pageSize;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Calcula o índice da última página
|
|
96
|
+
*/
|
|
97
|
+
calculateLastPageIndex(totalItems, pageSize) {
|
|
98
|
+
return Math.max(0, Math.ceil(totalItems / pageSize) - 1);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Verifica se deve mostrar o botão de próxima página
|
|
102
|
+
*/
|
|
103
|
+
shouldShowNextButton(hasNextPage, isPaginated) {
|
|
104
|
+
return hasNextPage || !isPaginated;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
PaginationService.ɵfac = function PaginationService_Factory(t) { return new (t || PaginationService)(); };
|
|
108
|
+
PaginationService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PaginationService, factory: PaginationService.ɵfac, providedIn: 'root' });
|
|
109
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationService, [{
|
|
110
|
+
type: Injectable,
|
|
111
|
+
args: [{
|
|
112
|
+
providedIn: 'root',
|
|
113
|
+
}]
|
|
114
|
+
}], null, null); })();
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZmlyZWJhc2UtdGFibGUta3hwL3NyYy9saWIvc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBdUIzQyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLG1CQUFtQixDQUNqQixLQUFnQixFQUNoQixZQUE2QjtRQUU3QixNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNsQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ3JDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFDM0MsTUFBTSx3QkFBd0IsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBRXZELElBQUksbUJBQW1CLEdBQXNDLFFBQVEsQ0FBQztRQUN0RSxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxnQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBQzNDLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUNuQyxJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUM7UUFFbkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDNUIsQ0FBQyxFQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FDMUMsQ0FBQztRQUVGLDZCQUE2QjtRQUM3QixJQUFJLGlCQUFpQixLQUFLLFNBQVMsSUFBSSxTQUFTLEdBQUcsaUJBQWlCLEVBQUU7WUFDcEUsYUFB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Q0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLFdBQW9CLEVBQUUsV0FBb0I7UUFDN0QsT0FBTyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDckMsQ0FBQzs7a0ZBaElVLGlCQUFpQjt1RUFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQixtQkFGaEIsTUFBTTt1RkFFUCxpQkFBaUI7Y0FIN0IsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uU3RhdGUge1xuICBjdXJyZW50UGFnZU51bWJlcjogbnVtYmVyO1xuICBjdXJyZW50Q2xpZW50UGFnZUluZGV4OiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHRvdGFsSXRlbXM6IG51bWJlcjtcbiAgaGFzTmV4dFBhZ2U6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2aWdhdGlvblJlc3VsdCB7XG4gIGRpcmVjdGlvbjogJ2ZvcndhcmQnIHwgJ2JhY2t3YXJkJyB8ICdyZWxvYWQnO1xuICByZXNldERvY3M6IGJvb2xlYW47XG4gIG9yaWdpbmFsUGFnZVNpemU6IG51bWJlciB8IG51bGw7XG4gIHNob3VsZE5hdmlnYXRlOiBib29sZWFuO1xuICBuZXdDbGllbnRQYWdlSW5kZXg6IG51bWJlcjtcbiAgbmV3UGFnZU51bWJlcjogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvblNlcnZpY2Uge1xuICBjYWxjdWxhdGVOYXZpZ2F0aW9uKFxuICAgIGV2ZW50OiBQYWdlRXZlbnQsXG4gICAgY3VycmVudFN0YXRlOiBQYWdpbmF0aW9uU3RhdGVcbiAgKTogTmF2aWdhdGlvblJlc3VsdCB7XG4gICAgY29uc3QgcHJldmlvdXNQYWdlSW5kZXggPSBldmVudC5wcmV2aW91c1BhZ2VJbmRleCA/PyAwO1xuICAgIGNvbnN0IHBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcbiAgICBjb25zdCBldmVudFBhZ2VTaXplID0gZXZlbnQucGFnZVNpemU7XG4gICAgY29uc3QgdG90YWxJdGVtcyA9IGN1cnJlbnRTdGF0ZS50b3RhbEl0ZW1zO1xuICAgIGNvbnN0IGN1cnJlbnRDb21wb25lbnRQYWdlU2l6ZSA9IGN1cnJlbnRTdGF0ZS5wYWdlU2l6ZTtcblxuICAgIGxldCBuYXZpZ2F0aW9uRGlyZWN0aW9uOiAnZm9yd2FyZCcgfCAnYmFja3dhcmQnIHwgJ3JlbG9hZCcgPSAncmVsb2FkJztcbiAgICBsZXQgcmVzZXREb2NzID0gZmFsc2U7XG4gICAgbGV0IG9yaWdpbmFsUGFnZVNpemU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzaG91bGROYXZpZ2F0ZSA9IHRydWU7XG4gICAgbGV0IG5ld0NsaWVudFBhZ2VJbmRleCA9IHBhZ2VJbmRleDtcbiAgICBsZXQgbmV3UGFnZU51bWJlciA9IGN1cnJlbnRTdGF0ZS5jdXJyZW50UGFnZU51bWJlcjtcblxuICAgIGNvbnN0IGxhc3RQYWdlSW5kZXggPSBNYXRoLm1heChcbiAgICAgIDAsXG4gICAgICBNYXRoLmNlaWwodG90YWxJdGVtcyAvIGV2ZW50UGFnZVNpemUpIC0gMVxuICAgICk7XG5cbiAgICAvLyBBdHVhbGl6YXIgbsO6bWVybyBkYSBww6FnaW5hXG4gICAgaWYgKHByZXZpb3VzUGFnZUluZGV4ICE9PSB1bmRlZmluZWQgJiYgcGFnZUluZGV4ID4gcHJldmlvdXNQYWdlSW5kZXgpIHtcbiAgICAgIG5ld1BhZ2VOdW1iZXIrKztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgcHJldmlvdXNQYWdlSW5kZXggIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcGFnZUluZGV4IDwgcHJldmlvdXNQYWdlSW5kZXhcbiAgICApIHtcbiAgICAgIG5ld1BhZ2VOdW1iZXIgPSBNYXRoLm1heCgxLCBuZXdQYWdlTnVtYmVyIC0gMSk7XG4gICAgfVxuXG4gICAgLy8gTXVkYW7Dp2EgZGUgdGFtYW5obyBkZSBww6FnaW5hXG4gICAgaWYgKGV2ZW50UGFnZVNpemUgIT09IGN1cnJlbnRDb21wb25lbnRQYWdlU2l6ZSkge1xuICAgICAgbmF2aWdhdGlvbkRpcmVjdGlvbiA9ICdmb3J3YXJkJztcbiAgICAgIHJlc2V0RG9jcyA9IHRydWU7XG4gICAgICBuZXdDbGllbnRQYWdlSW5kZXggPSAwO1xuICAgIH1cbiAgICAvLyBJbmRvIHBhcmEgcHJpbWVpcmEgcMOhZ2luYVxuICAgIGVsc2UgaWYgKFxuICAgICAgcGFnZUluZGV4ID09PSAwICYmXG4gICAgICBwcmV2aW91c1BhZ2VJbmRleCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwYWdlSW5kZXggPCBwcmV2aW91c1BhZ2VJbmRleFxuICAgICkge1xuICAgICAgbmF2aWdhdGlvbkRpcmVjdGlvbiA9ICdmb3J3YXJkJztcbiAgICAgIG5ld1BhZ2VOdW1iZXIgPSAxO1xuICAgICAgbmV3Q2xpZW50UGFnZUluZGV4ID0gMDtcbiAgICAgIHJlc2V0RG9jcyA9IHRydWU7XG4gICAgfVxuICAgIC8vIEluZG8gcGFyYSDDumx0aW1hIHDDoWdpbmEgKHNhbHRvKVxuICAgIGVsc2UgaWYgKFxuICAgICAgcGFnZUluZGV4ID09PSBsYXN0UGFnZUluZGV4ICYmXG4gICAgICBwcmV2aW91c1BhZ2VJbmRleCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwYWdlSW5kZXggPiBwcmV2aW91c1BhZ2VJbmRleCAmJlxuICAgICAgcGFnZUluZGV4IC0gcHJldmlvdXNQYWdlSW5kZXggPiAxXG4gICAgKSB7XG4gICAgICBuYXZpZ2F0aW9uRGlyZWN0aW9uID0gJ2JhY2t3YXJkJztcbiAgICAgIHJlc2V0RG9jcyA9IHRydWU7XG5cbiAgICAgIGNvbnN0IGl0ZW1zRXhwZWN0ZWRJbkxhc3RQYWdlID1cbiAgICAgICAgdG90YWxJdGVtcyAtIGxhc3RQYWdlSW5kZXggKiBldmVudFBhZ2VTaXplO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGl0ZW1zRXhwZWN0ZWRJbkxhc3RQYWdlID4gMCAmJlxuICAgICAgICBpdGVtc0V4cGVjdGVkSW5MYXN0UGFnZSA8IGV2ZW50UGFnZVNpemVcbiAgICAgICkge1xuICAgICAgICBvcmlnaW5hbFBhZ2VTaXplID0gY3VycmVudENvbXBvbmVudFBhZ2VTaXplO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQcsOzeGltYSBww6FnaW5hXG4gICAgZWxzZSBpZiAocHJldmlvdXNQYWdlSW5kZXggIT09IHVuZGVmaW5lZCAmJiBwYWdlSW5kZXggPiBwcmV2aW91c1BhZ2VJbmRleCkge1xuICAgICAgbmF2aWdhdGlvbkRpcmVjdGlvbiA9ICdmb3J3YXJkJztcbiAgICAgIHJlc2V0RG9jcyA9IGZhbHNlO1xuICAgIH1cbiAgICAvLyBQw6FnaW5hIGFudGVyaW9yXG4gICAgZWxzZSBpZiAocHJldmlvdXNQYWdlSW5kZXggIT09IHVuZGVmaW5lZCAmJiBwYWdlSW5kZXggPCBwcmV2aW91c1BhZ2VJbmRleCkge1xuICAgICAgbmF2aWdhdGlvbkRpcmVjdGlvbiA9ICdiYWNrd2FyZCc7XG4gICAgICByZXNldERvY3MgPSBmYWxzZTtcbiAgICB9XG4gICAgLy8gTWVzbWEgcMOhZ2luYSAocmVsb2FkKVxuICAgIGVsc2UgaWYgKFxuICAgICAgcHJldmlvdXNQYWdlSW5kZXggIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcGFnZUluZGV4ID09PSBwcmV2aW91c1BhZ2VJbmRleFxuICAgICkge1xuICAgICAgbmF2aWdhdGlvbkRpcmVjdGlvbiA9ICdyZWxvYWQnO1xuICAgICAgcmVzZXREb2NzID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIENhc28gaW5pY2lhbCAocHJpbWVpcmEgY2FyZ2EpXG4gICAgZWxzZSBpZiAocHJldmlvdXNQYWdlSW5kZXggPT09IHVuZGVmaW5lZCAmJiBwYWdlSW5kZXggPT09IDApIHtcbiAgICAgIHNob3VsZE5hdmlnYXRlID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIENhc28gbsOjbyB0cmF0YWRvXG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0NvbmRpw6fDo28gZGUgbmF2ZWdhw6fDo28gbsOjbyB0cmF0YWRhOicsIGV2ZW50KTtcbiAgICAgIHNob3VsZE5hdmlnYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpcmVjdGlvbjogbmF2aWdhdGlvbkRpcmVjdGlvbixcbiAgICAgIHJlc2V0RG9jcyxcbiAgICAgIG9yaWdpbmFsUGFnZVNpemUsXG4gICAgICBzaG91bGROYXZpZ2F0ZSxcbiAgICAgIG5ld0NsaWVudFBhZ2VJbmRleCxcbiAgICAgIG5ld1BhZ2VOdW1iZXIsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhIG8gbsO6bWVybyBkZSBpdGVucyBlc3BlcmFkb3MgbmEgw7psdGltYSBww6FnaW5hXG4gICAqL1xuICBjYWxjdWxhdGVMYXN0UGFnZUl0ZW1Db3VudCh0b3RhbEl0ZW1zOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGxhc3RQYWdlSW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLmNlaWwodG90YWxJdGVtcyAvIHBhZ2VTaXplKSAtIDEpO1xuICAgIHJldHVybiB0b3RhbEl0ZW1zIC0gbGFzdFBhZ2VJbmRleCAqIHBhZ2VTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGEgbyDDrW5kaWNlIGRhIMO6bHRpbWEgcMOhZ2luYVxuICAgKi9cbiAgY2FsY3VsYXRlTGFzdFBhZ2VJbmRleCh0b3RhbEl0ZW1zOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLmNlaWwodG90YWxJdGVtcyAvIHBhZ2VTaXplKSAtIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNlIGRldmUgbW9zdHJhciBvIGJvdMOjbyBkZSBwcsOzeGltYSBww6FnaW5hXG4gICAqL1xuICBzaG91bGRTaG93TmV4dEJ1dHRvbihoYXNOZXh0UGFnZTogYm9vbGVhbiwgaXNQYWdpbmF0ZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGFzTmV4dFBhZ2UgfHwgIWlzUGFnaW5hdGVkO1xuICB9XG59XG4iXX0=
|