@lumeer/pivot 0.0.13 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/lumeer-pivot.mjs +56 -43
- package/fesm2022/lumeer-pivot.mjs.map +1 -1
- package/index.d.ts +332 -5
- package/lumeer-pivot-0.2.0.tgz +0 -0
- package/package.json +4 -6
- package/esm2022/lib/directives/lmr-templates.directive.mjs +0 -27
- package/esm2022/lib/lmr-pivot-table.component.mjs +0 -147
- package/esm2022/lib/lmr-pivot-table.module.mjs +0 -63
- package/esm2022/lib/lmr-simple-pivot-table.component.mjs +0 -101
- package/esm2022/lib/pipes/cell-has-value.pipe.mjs +0 -35
- package/esm2022/lib/pipes/contrast-color.pipe.mjs +0 -41
- package/esm2022/lib/pipes/filter-visible-cells.pipe.mjs +0 -35
- package/esm2022/lib/pipes/is-cell-expandable.pipe.mjs +0 -35
- package/esm2022/lib/pipes/is-cell-expanded.pipe.mjs +0 -37
- package/esm2022/lib/pipes/is-cell-rows-expandable.pipe.mjs +0 -35
- package/esm2022/lib/pipes/pivot-data-empty.pipe.mjs +0 -38
- package/esm2022/lib/util/lmr-pivot-config.mjs +0 -17
- package/esm2022/lib/util/lmr-pivot-constants.mjs +0 -12
- package/esm2022/lib/util/lmr-pivot-data.mjs +0 -2
- package/esm2022/lib/util/lmr-pivot-state.mjs +0 -156
- package/esm2022/lib/util/lmr-pivot-table.mjs +0 -2
- package/esm2022/lib/util/lmr-simple-pivot-config.mjs +0 -2
- package/esm2022/lib/util/pivot-data-converter.mjs +0 -507
- package/esm2022/lib/util/pivot-table-converter.mjs +0 -1017
- package/esm2022/lib/util/pivot-util.mjs +0 -75
- package/esm2022/lumeer-pivot.mjs +0 -5
- package/esm2022/public-api.mjs +0 -13
- package/lib/directives/lmr-templates.directive.d.ts +0 -14
- package/lib/lmr-pivot-table.component.d.ts +0 -49
- package/lib/lmr-pivot-table.module.d.ts +0 -18
- package/lib/lmr-simple-pivot-table.component.d.ts +0 -38
- package/lib/pipes/cell-has-value.pipe.d.ts +0 -8
- package/lib/pipes/contrast-color.pipe.d.ts +0 -11
- package/lib/pipes/filter-visible-cells.pipe.d.ts +0 -9
- package/lib/pipes/is-cell-expandable.pipe.d.ts +0 -8
- package/lib/pipes/is-cell-expanded.pipe.d.ts +0 -9
- package/lib/pipes/is-cell-rows-expandable.pipe.d.ts +0 -8
- package/lib/pipes/pivot-data-empty.pipe.d.ts +0 -8
- package/lib/util/lmr-pivot-config.d.ts +0 -84
- package/lib/util/lmr-pivot-constants.d.ts +0 -11
- package/lib/util/lmr-pivot-data.d.ts +0 -50
- package/lib/util/lmr-pivot-state.d.ts +0 -14
- package/lib/util/lmr-pivot-table.d.ts +0 -25
- package/lib/util/lmr-simple-pivot-config.d.ts +0 -9
- package/lib/util/pivot-data-converter.d.ts +0 -46
- package/lib/util/pivot-table-converter.d.ts +0 -74
- package/lib/util/pivot-util.d.ts +0 -12
- package/lumeer-pivot-0.0.13.tgz +0 -0
- package/public-api.d.ts +0 -9
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { isNullOrUndefined } from '@lumeer/utils';
|
|
2
|
-
export function isCellExpandable(cell) {
|
|
3
|
-
return isCellColumnsExpandable(cell) || isCellRowsExpandable(cell);
|
|
4
|
-
}
|
|
5
|
-
export function isCellColumnsExpandable(cell) {
|
|
6
|
-
return cell?.expandable && cell?.childIndexes?.length > 1;
|
|
7
|
-
}
|
|
8
|
-
export function isCellRowsExpandable(cell) {
|
|
9
|
-
return cell?.expandable && cell?.rowIndexes?.length > 1;
|
|
10
|
-
}
|
|
11
|
-
export function toggleExpanded(cell, columnIndex, state) {
|
|
12
|
-
if (cell.originalRowIndex) {
|
|
13
|
-
return toggleExpandedState(state, cell.originalRowIndex, columnIndex);
|
|
14
|
-
}
|
|
15
|
-
return state;
|
|
16
|
-
}
|
|
17
|
-
export function areCellsSame(c1, c2) {
|
|
18
|
-
return c1?.summary === c2?.summary && c1?.value === c2?.value;
|
|
19
|
-
}
|
|
20
|
-
function toggleExpandedState(state, rowIndex, columnIndex) {
|
|
21
|
-
if (isNullOrUndefined(rowIndex) || isNullOrUndefined(columnIndex) || rowIndex < 0 || columnIndex < 0) {
|
|
22
|
-
return state;
|
|
23
|
-
}
|
|
24
|
-
const cellsCopy = [...(state?.cells || [])];
|
|
25
|
-
const rowCopy = [...(cellsCopy[rowIndex] || [])];
|
|
26
|
-
rowCopy[columnIndex] = { ...rowCopy[columnIndex], collapsed: !rowCopy[columnIndex]?.collapsed };
|
|
27
|
-
cellsCopy[rowIndex] = rowCopy;
|
|
28
|
-
return { ...state, cells: cellsCopy };
|
|
29
|
-
}
|
|
30
|
-
export function filterVisibleCells(cells, state, parentIndex = 0) {
|
|
31
|
-
const cellsChildIndexesMap = createCellsChildIndexesMap(cells);
|
|
32
|
-
return cells.reduce((currentRows, row, index) => {
|
|
33
|
-
const firstCell = row[0];
|
|
34
|
-
if (!firstCell) {
|
|
35
|
-
return currentRows;
|
|
36
|
-
}
|
|
37
|
-
const originalRowIndex = parentIndex + index;
|
|
38
|
-
if (firstCell.isAttributeHeader || firstCell.isSummary || firstCell.isValue) {
|
|
39
|
-
currentRows.push(setOriginalRowIndexForHeaders(row, originalRowIndex));
|
|
40
|
-
for (let i = 1; i < firstCell.rowSpan; i++) {
|
|
41
|
-
currentRows.push(setOriginalRowIndexForHeaders(cells[index + i], originalRowIndex + i));
|
|
42
|
-
}
|
|
43
|
-
return currentRows;
|
|
44
|
-
}
|
|
45
|
-
if (isRowVisible(index, cellsChildIndexesMap, 0, state)) {
|
|
46
|
-
if (row.some(cell => isCellColumnsExpandable(cell))) {
|
|
47
|
-
const isCollapsed = state?.[index]?.[0]?.collapsed;
|
|
48
|
-
if (isCollapsed) {
|
|
49
|
-
const firstDataHeaderIndex = takeIf(row.findIndex(cell => cell.isValue), result => result >= 0) ?? 1;
|
|
50
|
-
const rowCopy = [...row];
|
|
51
|
-
rowCopy[0] = {
|
|
52
|
-
...row[0],
|
|
53
|
-
colSpan: firstDataHeaderIndex,
|
|
54
|
-
rowSpan: 1,
|
|
55
|
-
originalRowIndex,
|
|
56
|
-
};
|
|
57
|
-
for (let i = 1; i < firstDataHeaderIndex; i++) {
|
|
58
|
-
rowCopy[i] = undefined;
|
|
59
|
-
}
|
|
60
|
-
currentRows.push(rowCopy);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
const nestedCells = sliceMatrix(cells, index, index + firstCell.rowSpan - 1, 1, cells[0].length - 1);
|
|
64
|
-
const nestedState = sliceMatrix(state, index, index + firstCell.rowSpan - 1, 1, cells[0].length - 1);
|
|
65
|
-
const nestedFilteredRows = filterVisibleCells(nestedCells, nestedState, originalRowIndex);
|
|
66
|
-
const changedCell = {
|
|
67
|
-
...row[0],
|
|
68
|
-
rowSpan: nestedFilteredRows.length,
|
|
69
|
-
originalRowIndex,
|
|
70
|
-
};
|
|
71
|
-
const newRows = appendCellToMatrix(changedCell, nestedFilteredRows);
|
|
72
|
-
currentRows.push(...newRows);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
currentRows.push(setOriginalRowIndexForHeaders(row, originalRowIndex));
|
|
77
|
-
for (let i = 1; i < firstCell.rowSpan; i++) {
|
|
78
|
-
currentRows.push(setOriginalRowIndexForHeaders(cells[index + i], originalRowIndex + i));
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return currentRows;
|
|
83
|
-
}, []);
|
|
84
|
-
}
|
|
85
|
-
function setOriginalRowIndexForHeaders(row, originalRowIndex) {
|
|
86
|
-
const newRow = [];
|
|
87
|
-
for (let i = 0; i < row.length; i++) {
|
|
88
|
-
const cell = row[i];
|
|
89
|
-
if (!cell) {
|
|
90
|
-
newRow.push(cell);
|
|
91
|
-
}
|
|
92
|
-
else if (cell.isValue) {
|
|
93
|
-
return [...newRow, ...row.slice(i)];
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
newRow.push({ ...cell, originalRowIndex });
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return newRow;
|
|
100
|
-
}
|
|
101
|
-
function appendCellToMatrix(cell, rows) {
|
|
102
|
-
return rows.map((row, index) => index > 0 ? [undefined, ...row] : [cell, ...row]);
|
|
103
|
-
}
|
|
104
|
-
function takeIf(value, predicate) {
|
|
105
|
-
return predicate(value) ? value : undefined;
|
|
106
|
-
}
|
|
107
|
-
function sliceMatrix(cells, fromRow, toRow, fromColumn, toColumn) {
|
|
108
|
-
const slicedMatrix = [];
|
|
109
|
-
for (let i = fromRow; i <= toRow; i++) {
|
|
110
|
-
const row = (cells?.[i] || []).slice(fromColumn, toColumn + 1);
|
|
111
|
-
slicedMatrix.push(row);
|
|
112
|
-
}
|
|
113
|
-
return slicedMatrix;
|
|
114
|
-
}
|
|
115
|
-
function createCellsChildIndexesMap(rowCells) {
|
|
116
|
-
const firstCells = rowCells.map(rowCells => rowCells[0]);
|
|
117
|
-
return createRowsChildIndexesMap(firstCells);
|
|
118
|
-
}
|
|
119
|
-
function createRowsChildIndexesMap(rowCells) {
|
|
120
|
-
return (rowCells || []).reduce((map, cell, index) => {
|
|
121
|
-
if (!cell?.expandable) {
|
|
122
|
-
return map;
|
|
123
|
-
}
|
|
124
|
-
for (const childIndex of (cell?.rowIndexes || [])) {
|
|
125
|
-
if (!map[childIndex])
|
|
126
|
-
map[childIndex] = [];
|
|
127
|
-
map[childIndex].push(index);
|
|
128
|
-
}
|
|
129
|
-
return map;
|
|
130
|
-
}, []);
|
|
131
|
-
}
|
|
132
|
-
function isRowVisible(index, childIndexesMap, columnIndex, state) {
|
|
133
|
-
const childIndexes = childIndexesMap?.[index] || [];
|
|
134
|
-
return !childIndexes.length || childIndexes.some(childIndex => !state?.[childIndex]?.[columnIndex]?.collapsed);
|
|
135
|
-
}
|
|
136
|
-
export function collapseAllCells(table) {
|
|
137
|
-
const cells = [];
|
|
138
|
-
const tableCells = table?.cells || [];
|
|
139
|
-
for (let i = 0; i < tableCells.length; i++) {
|
|
140
|
-
const row = tableCells[i];
|
|
141
|
-
for (let j = 0; j < row.length; j++) {
|
|
142
|
-
const cell = row[j];
|
|
143
|
-
if (cell?.isValue || cell?.isAttributeHeader || cell?.isHeader) {
|
|
144
|
-
break;
|
|
145
|
-
}
|
|
146
|
-
if (isCellExpandable(cell)) {
|
|
147
|
-
if (!cells[i]) {
|
|
148
|
-
cells[i] = [];
|
|
149
|
-
}
|
|
150
|
-
cells[i][j] = { collapsed: true };
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return { cells };
|
|
155
|
-
}
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG1yLXBpdm90LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG1yLXBpdm90LXRhYmxlL3NyYy9saWIvdXRpbC9sbXItcGl2b3Qtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBVWhELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUF1QjtJQUN0RCxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBdUI7SUFDN0QsT0FBTyxJQUFJLEVBQUUsVUFBVSxJQUFJLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQXVCO0lBQzFELE9BQU8sSUFBSSxFQUFFLFVBQVUsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBdUIsRUFBRSxXQUFtQixFQUFFLEtBQXlCO0lBQ3BHLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsT0FBTyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ3ZFLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEVBQXFCLEVBQUUsRUFBcUI7SUFDdkUsT0FBTyxFQUFFLEVBQUUsT0FBTyxLQUFLLEVBQUUsRUFBRSxPQUFPLElBQUksRUFBRSxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFBO0FBQy9ELENBQUM7QUFFRCxT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RyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDM0MsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksSUFBSSxFQUFFLE9BQU8sSUFBSSxJQUFJLEVBQUUsaUJBQWlCLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUMvRCxNQUFNO1lBQ1IsQ0FBQztZQUNELElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNkLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sRUFBQyxLQUFLLEVBQUMsQ0FBQTtBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMbXJQaXZvdFRhYmxlLCBMbXJQaXZvdFRhYmxlQ2VsbH0gZnJvbSAnLi9sbXItcGl2b3QtdGFibGUnO1xuaW1wb3J0IHtpc051bGxPclVuZGVmaW5lZH0gZnJvbSAnQGx1bWVlci91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG1yUGl2b3RUYWJsZVN0YXRlIHtcbiAgY2VsbHM/OiBMbXJQaXZvdFRhYmxlQ2VsbFN0YXRlW11bXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExtclBpdm90VGFibGVDZWxsU3RhdGUge1xuICBjb2xsYXBzZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDZWxsRXhwYW5kYWJsZShjZWxsOiBMbXJQaXZvdFRhYmxlQ2VsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNDZWxsQ29sdW1uc0V4cGFuZGFibGUoY2VsbCkgfHwgaXNDZWxsUm93c0V4cGFuZGFibGUoY2VsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NlbGxDb2x1bW5zRXhwYW5kYWJsZShjZWxsOiBMbXJQaXZvdFRhYmxlQ2VsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2VsbD8uZXhwYW5kYWJsZSAmJiBjZWxsPy5jaGlsZEluZGV4ZXM/Lmxlbmd0aCA+IDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NlbGxSb3dzRXhwYW5kYWJsZShjZWxsOiBMbXJQaXZvdFRhYmxlQ2VsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2VsbD8uZXhwYW5kYWJsZSAmJiBjZWxsPy5yb3dJbmRleGVzPy5sZW5ndGggPiAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlRXhwYW5kZWQoY2VsbDogTG1yUGl2b3RUYWJsZUNlbGwsIGNvbHVtbkluZGV4OiBudW1iZXIsIHN0YXRlOiBMbXJQaXZvdFRhYmxlU3RhdGUpOiBMbXJQaXZvdFRhYmxlU3RhdGUge1xuICBpZiAoY2VsbC5vcmlnaW5hbFJvd0luZGV4KSB7XG4gICAgcmV0dXJuIHRvZ2dsZUV4cGFuZGVkU3RhdGUoc3RhdGUsIGNlbGwub3JpZ2luYWxSb3dJbmRleCwgY29sdW1uSW5kZXgpXG4gIH1cbiAgcmV0dXJuIHN0YXRlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcmVDZWxsc1NhbWUoYzE6IExtclBpdm90VGFibGVDZWxsLCBjMjogTG1yUGl2b3RUYWJsZUNlbGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIGMxPy5zdW1tYXJ5ID09PSBjMj8uc3VtbWFyeSAmJiBjMT8udmFsdWUgPT09IGMyPy52YWx1ZVxufVxuXG5mdW5jdGlvbiB0b2dnbGVFeHBhbmRlZFN0YXRlKHN0YXRlOiBMbXJQaXZvdFRhYmxlU3RhdGUsIHJvd0luZGV4OiBudW1iZXIsIGNvbHVtbkluZGV4OiBudW1iZXIpOiBMbXJQaXZvdFRhYmxlU3RhdGUge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocm93SW5kZXgpIHx8IGlzTnVsbE9yVW5kZWZpbmVkKGNvbHVtbkluZGV4KSB8fCByb3dJbmRleCA8IDAgfHwgY29sdW1uSW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIHN0YXRlXG4gIH1cblxuICBjb25zdCBjZWxsc0NvcHkgPSBbLi4uKHN0YXRlPy5jZWxscyB8fCBbXSldXG4gIGNvbnN0IHJvd0NvcHkgPSBbLi4uKGNlbGxzQ29weVtyb3dJbmRleF0gfHwgW10pXVxuICByb3dDb3B5W2NvbHVtbkluZGV4XSA9IHsuLi5yb3dDb3B5W2NvbHVtbkluZGV4XSwgY29sbGFwc2VkOiAhcm93Q29weVtjb2x1bW5JbmRleF0/LmNvbGxhcHNlZH1cbiAgY2VsbHNDb3B5W3Jvd0luZGV4XSA9IHJvd0NvcHlcbiAgcmV0dXJuIHsuLi5zdGF0ZSwgY2VsbHM6IGNlbGxzQ29weX1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclZpc2libGVDZWxscyhjZWxsczogTG1yUGl2b3RUYWJsZUNlbGxbXVtdLCBzdGF0ZTogTG1yUGl2b3RUYWJsZUNlbGxTdGF0ZVtdW10sIHBhcmVudEluZGV4OiBudW1iZXIgPSAwKTogTG1yUGl2b3RUYWJsZUNlbGxbXVtdIHtcbiAgY29uc3QgY2VsbHNDaGlsZEluZGV4ZXNNYXAgPSBjcmVhdGVDZWxsc0NoaWxkSW5kZXhlc01hcChjZWxscyk7XG4gIHJldHVybiBjZWxscy5yZWR1Y2U8TG1yUGl2b3RUYWJsZUNlbGxbXVtdPigoY3VycmVudFJvd3MsIHJvdywgaW5kZXgpID0+IHtcbiAgICBjb25zdCBmaXJzdENlbGwgPSByb3dbMF1cbiAgICBpZiAoIWZpcnN0Q2VsbCkge1xuICAgICAgcmV0dXJuIGN1cnJlbnRSb3dzXG4gICAgfVxuICAgIGNvbnN0IG9yaWdpbmFsUm93SW5kZXggPSBwYXJlbnRJbmRleCArIGluZGV4XG4gICAgaWYgKGZpcnN0Q2VsbC5pc0F0dHJpYnV0ZUhlYWRlciB8fCBmaXJzdENlbGwuaXNTdW1tYXJ5IHx8IGZpcnN0Q2VsbC5pc1ZhbHVlKSB7XG4gICAgICBjdXJyZW50Um93cy5wdXNoKHNldE9yaWdpbmFsUm93SW5kZXhGb3JIZWFkZXJzKHJvdywgb3JpZ2luYWxSb3dJbmRleCkpXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGZpcnN0Q2VsbC5yb3dTcGFuOyBpKyspIHtcbiAgICAgICAgY3VycmVudFJvd3MucHVzaChzZXRPcmlnaW5hbFJvd0luZGV4Rm9ySGVhZGVycyhjZWxsc1tpbmRleCArIGldLCBvcmlnaW5hbFJvd0luZGV4ICsgaSkpXG4gICAgICB9XG4gICAgICByZXR1cm4gY3VycmVudFJvd3NcbiAgICB9XG5cbiAgICBpZiAoaXNSb3dWaXNpYmxlKGluZGV4LCBjZWxsc0NoaWxkSW5kZXhlc01hcCwgMCwgc3RhdGUpKSB7XG4gICAgICBpZiAocm93LnNvbWUoY2VsbCA9PiBpc0NlbGxDb2x1bW5zRXhwYW5kYWJsZShjZWxsKSkpIHtcbiAgICAgICAgY29uc3QgaXNDb2xsYXBzZWQgPSBzdGF0ZT8uW2luZGV4XT8uWzBdPy5jb2xsYXBzZWRcbiAgICAgICAgaWYgKGlzQ29sbGFwc2VkKSB7XG4gICAgICAgICAgY29uc3QgZmlyc3REYXRhSGVhZGVySW5kZXggPSB0YWtlSWYocm93LmZpbmRJbmRleChjZWxsID0+IGNlbGwuaXNWYWx1ZSksIHJlc3VsdCA9PiByZXN1bHQgPj0gMCkgPz8gMVxuICAgICAgICAgIGNvbnN0IHJvd0NvcHkgPSBbLi4ucm93XVxuICAgICAgICAgIHJvd0NvcHlbMF0gPSB7XG4gICAgICAgICAgICAuLi5yb3dbMF0sXG4gICAgICAgICAgICBjb2xTcGFuOiBmaXJzdERhdGFIZWFkZXJJbmRleCxcbiAgICAgICAgICAgIHJvd1NwYW46IDEsXG4gICAgICAgICAgICBvcmlnaW5hbFJvd0luZGV4LFxuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGZpcnN0RGF0YUhlYWRlckluZGV4OyBpKyspIHtcbiAgICAgICAgICAgIHJvd0NvcHlbaV0gPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudFJvd3MucHVzaChyb3dDb3B5KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5lc3RlZENlbGxzID0gc2xpY2VNYXRyaXgoY2VsbHMsIGluZGV4LCBpbmRleCArIGZpcnN0Q2VsbC5yb3dTcGFuIC0gMSwgMSwgY2VsbHNbMF0ubGVuZ3RoIC0gMSlcbiAgICAgICAgICBjb25zdCBuZXN0ZWRTdGF0ZSA9IHNsaWNlTWF0cml4KHN0YXRlLCBpbmRleCwgaW5kZXggKyBmaXJzdENlbGwucm93U3BhbiAtIDEsIDEsIGNlbGxzWzBdLmxlbmd0aCAtIDEpXG4gICAgICAgICAgY29uc3QgbmVzdGVkRmlsdGVyZWRSb3dzID0gZmlsdGVyVmlzaWJsZUNlbGxzKG5lc3RlZENlbGxzLCBuZXN0ZWRTdGF0ZSwgb3JpZ2luYWxSb3dJbmRleClcbiAgICAgICAgICBjb25zdCBjaGFuZ2VkQ2VsbCA9IHtcbiAgICAgICAgICAgIC4uLnJvd1swXSxcbiAgICAgICAgICAgIHJvd1NwYW46IG5lc3RlZEZpbHRlcmVkUm93cy5sZW5ndGgsXG4gICAgICAgICAgICBvcmlnaW5hbFJvd0luZGV4LFxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXdSb3dzID0gYXBwZW5kQ2VsbFRvTWF0cml4KGNoYW5nZWRDZWxsLCBuZXN0ZWRGaWx0ZXJlZFJvd3MpO1xuICAgICAgICAgIGN1cnJlbnRSb3dzLnB1c2goLi4ubmV3Um93cylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudFJvd3MucHVzaChzZXRPcmlnaW5hbFJvd0luZGV4Rm9ySGVhZGVycyhyb3csIG9yaWdpbmFsUm93SW5kZXgpKVxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGZpcnN0Q2VsbC5yb3dTcGFuOyBpKyspIHtcbiAgICAgICAgICBjdXJyZW50Um93cy5wdXNoKHNldE9yaWdpbmFsUm93SW5kZXhGb3JIZWFkZXJzKGNlbGxzW2luZGV4ICsgaV0sIG9yaWdpbmFsUm93SW5kZXggKyBpKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50Um93c1xuICB9LCBbXSlcbn1cblxuZnVuY3Rpb24gc2V0T3JpZ2luYWxSb3dJbmRleEZvckhlYWRlcnMocm93OiBMbXJQaXZvdFRhYmxlQ2VsbFtdLCBvcmlnaW5hbFJvd0luZGV4OiBudW1iZXIpOiBMbXJQaXZvdFRhYmxlQ2VsbFtdIHtcbiAgY29uc3QgbmV3Um93ID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm93Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2VsbCA9IHJvd1tpXTtcbiAgICBpZiAoIWNlbGwpIHtcbiAgICAgIG5ld1Jvdy5wdXNoKGNlbGwpO1xuICAgIH0gZWxzZSBpZiAoY2VsbC5pc1ZhbHVlKSB7XG4gICAgICByZXR1cm4gWy4uLm5ld1JvdywgLi4ucm93LnNsaWNlKGkpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3Um93LnB1c2goey4uLmNlbGwsIG9yaWdpbmFsUm93SW5kZXh9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3Um93XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENlbGxUb01hdHJpeChjZWxsOiBMbXJQaXZvdFRhYmxlQ2VsbCwgcm93czogTG1yUGl2b3RUYWJsZUNlbGxbXVtdKTogTG1yUGl2b3RUYWJsZUNlbGxbXVtdIHtcbiAgcmV0dXJuIHJvd3MubWFwKChyb3csIGluZGV4KSA9PiBpbmRleCA+IDAgPyBbdW5kZWZpbmVkLCAuLi5yb3ddIDogW2NlbGwsIC4uLnJvd10pXG59XG5cbmZ1bmN0aW9uIHRha2VJZjxUPih2YWx1ZTogVCwgcHJlZGljYXRlOiAodjogVCkgPT4gYm9vbGVhbik6IFQgfCB1bmRlZmluZWQge1xuICByZXR1cm4gcHJlZGljYXRlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNsaWNlTWF0cml4PFQ+KGNlbGxzOiBUW11bXSwgZnJvbVJvdzogbnVtYmVyLCB0b1JvdzogbnVtYmVyLCBmcm9tQ29sdW1uOiBudW1iZXIsIHRvQ29sdW1uOiBudW1iZXIpOiBUW11bXSB7XG4gIGNvbnN0IHNsaWNlZE1hdHJpeDogVFtdW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IGZyb21Sb3c7IGkgPD0gdG9Sb3c7IGkrKykge1xuICAgIGNvbnN0IHJvdzogVFtdID0gKGNlbGxzPy5baV0gfHwgW10pLnNsaWNlKGZyb21Db2x1bW4sIHRvQ29sdW1uICsgMSk7XG4gICAgc2xpY2VkTWF0cml4LnB1c2gocm93KTtcbiAgfVxuXG4gIHJldHVybiBzbGljZWRNYXRyaXg7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNlbGxzQ2hpbGRJbmRleGVzTWFwKHJvd0NlbGxzOiBMbXJQaXZvdFRhYmxlQ2VsbFtdW10pOiBudW1iZXJbXVtdIHtcbiAgY29uc3QgZmlyc3RDZWxscyA9IHJvd0NlbGxzLm1hcChyb3dDZWxscyA9PiByb3dDZWxsc1swXSk7XG4gIHJldHVybiBjcmVhdGVSb3dzQ2hpbGRJbmRleGVzTWFwKGZpcnN0Q2VsbHMpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSb3dzQ2hpbGRJbmRleGVzTWFwKHJvd0NlbGxzOiBMbXJQaXZvdFRhYmxlQ2VsbFtdKTogbnVtYmVyW11bXSB7XG4gIHJldHVybiAocm93Q2VsbHMgfHwgW10pLnJlZHVjZSgobWFwLCBjZWxsLCBpbmRleCkgPT4ge1xuICAgIGlmICghY2VsbD8uZXhwYW5kYWJsZSkge1xuICAgICAgcmV0dXJuIG1hcFxuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGRJbmRleCBvZiAoY2VsbD8ucm93SW5kZXhlcyB8fCBbXSkpIHtcbiAgICAgIGlmICghbWFwW2NoaWxkSW5kZXhdKVxuICAgICAgICBtYXBbY2hpbGRJbmRleF0gPSBbXVxuICAgICAgbWFwW2NoaWxkSW5kZXhdLnB1c2goaW5kZXgpXG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcbiAgfSwgW10pO1xufVxuXG5mdW5jdGlvbiBpc1Jvd1Zpc2libGUoaW5kZXg6IG51bWJlciwgY2hpbGRJbmRleGVzTWFwOiBudW1iZXJbXVtdLCBjb2x1bW5JbmRleDogbnVtYmVyLCBzdGF0ZTogTG1yUGl2b3RUYWJsZUNlbGxTdGF0ZVtdW10pOiBib29sZWFuIHtcbiAgY29uc3QgY2hpbGRJbmRleGVzID0gY2hpbGRJbmRleGVzTWFwPy5baW5kZXhdIHx8IFtdXG4gIHJldHVybiAhY2hpbGRJbmRleGVzLmxlbmd0aCB8fCBjaGlsZEluZGV4ZXMuc29tZShjaGlsZEluZGV4ID0+ICFzdGF0ZT8uW2NoaWxkSW5kZXhdPy5bY29sdW1uSW5kZXhdPy5jb2xsYXBzZWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2xsYXBzZUFsbENlbGxzKHRhYmxlOiBMbXJQaXZvdFRhYmxlKTogTG1yUGl2b3RUYWJsZVN0YXRlIHtcbiAgY29uc3QgY2VsbHM6IExtclBpdm90VGFibGVDZWxsU3RhdGVbXVtdID0gW107XG4gIGNvbnN0IHRhYmxlQ2VsbHMgPSB0YWJsZT8uY2VsbHMgfHwgW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGFibGVDZWxscy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHRhYmxlQ2VsbHNbaV07XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCByb3cubGVuZ3RoOyBqKyspIHtcbiAgICAgIGNvbnN0IGNlbGwgPSByb3dbal07XG4gICAgICBpZiAoY2VsbD8uaXNWYWx1ZSB8fCBjZWxsPy5pc0F0dHJpYnV0ZUhlYWRlciB8fCBjZWxsPy5pc0hlYWRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChpc0NlbGxFeHBhbmRhYmxlKGNlbGwpKSB7XG4gICAgICAgIGlmICghY2VsbHNbaV0pIHtcbiAgICAgICAgICBjZWxsc1tpXSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGNlbGxzW2ldW2pdID0ge2NvbGxhcHNlZDogdHJ1ZX07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB7Y2VsbHN9XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG1yLXBpdm90LXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG1yLXBpdm90LXRhYmxlL3NyYy9saWIvdXRpbC9sbXItcGl2b3QtdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBMdW1lZXI6IE1vZGVybiBEYXRhIERlZmluaXRpb24gYW5kIFByb2Nlc3NpbmcgUGxhdGZvcm1cbiAqXG4gKiBDb3B5cmlnaHQgKEMpIHNpbmNlIDIwMTcgTHVtZWVyLmlvLCBzLnIuby4gYW5kL29yIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cbmltcG9ydCB7Q29uc3RyYWludCwgRGF0YVJlc291cmNlfSBmcm9tICdAbHVtZWVyL2RhdGEtZmlsdGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG1yUGl2b3RUYWJsZSB7XG4gIGNlbGxzOiBMbXJQaXZvdFRhYmxlQ2VsbFtdW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG1yUGl2b3RUYWJsZUNlbGwge1xuICB2YWx1ZTogYW55O1xuICBkYXRhUmVzb3VyY2VzPzogRGF0YVJlc291cmNlW107XG4gIGNvbnN0cmFpbnQ/OiBDb25zdHJhaW50O1xuICBzdW1tYXJ5Pzogc3RyaW5nO1xuICByb3dTcGFuOiBudW1iZXI7XG4gIGNvbFNwYW46IG51bWJlcjtcbiAgY3NzQ2xhc3M6IHN0cmluZztcbiAgaXNWYWx1ZT86IGJvb2xlYW47XG4gIGlzSGVhZGVyPzogYm9vbGVhbjtcbiAgaXNBdHRyaWJ1dGVIZWFkZXI/OiBib29sZWFuO1xuICBpc1N1bW1hcnk/OiBib29sZWFuO1xuICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgc3RpY2t5VG9wPzogYm9vbGVhbjtcbiAgc3RpY2t5U3RhcnQ/OiBib29sZWFuO1xuICByb3dJbmRleGVzPzogbnVtYmVyW107XG4gIGNoaWxkSW5kZXhlcz86IG51bWJlcltdO1xuICBvcmlnaW5hbFJvd0luZGV4PzogbnVtYmVyO1xuICBleHBhbmRhYmxlPzogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG1yLXNpbXBsZS1waXZvdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sbXItcGl2b3QtdGFibGUvc3JjL2xpYi91dGlsL2xtci1zaW1wbGUtcGl2b3QtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xtclBpdm90Q29sdW1uQXR0cmlidXRlLCBMbXJQaXZvdFJvd0F0dHJpYnV0ZSwgTG1yUGl2b3RWYWx1ZUF0dHJpYnV0ZX0gZnJvbSAnLi9sbXItcGl2b3QtY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBMbXJTaW1wbGVQaXZvdENvbmZpZyB7XG4gIHJvd0F0dHJpYnV0ZXM6IExtclNpbXBsZVBpdm90Um93QXR0cmlidXRlW107XG4gIGNvbHVtbkF0dHJpYnV0ZXM6IExtclNpbXBsZVBpdm90Q29sdW1uQXR0cmlidXRlW107XG4gIHZhbHVlQXR0cmlidXRlczogTG1yU2ltcGxlUGl2b3RWYWx1ZUF0dHJpYnV0ZVtdO1xufVxuXG5leHBvcnQgdHlwZSBMbXJTaW1wbGVQaXZvdFJvd0F0dHJpYnV0ZSA9IE9taXQ8TG1yUGl2b3RSb3dBdHRyaWJ1dGUsICdyZXNvdXJjZVR5cGUnIHwgJ3Jlc291cmNlSWQnIHwgJ3Jlc291cmNlSW5kZXgnPlxuZXhwb3J0IHR5cGUgTG1yU2ltcGxlUGl2b3RDb2x1bW5BdHRyaWJ1dGUgPSBPbWl0PExtclBpdm90Q29sdW1uQXR0cmlidXRlLCAncmVzb3VyY2VUeXBlJyB8ICdyZXNvdXJjZUlkJyB8ICdyZXNvdXJjZUluZGV4Jz5cbmV4cG9ydCB0eXBlIExtclNpbXBsZVBpdm90VmFsdWVBdHRyaWJ1dGUgPSBPbWl0PExtclBpdm90VmFsdWVBdHRyaWJ1dGUsICdyZXNvdXJjZVR5cGUnIHwgJ3Jlc291cmNlSWQnIHwgJ3Jlc291cmNlSW5kZXgnPlxuIl19
|