@libs-ui/components-table 0.2.184 → 0.2.186
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/esm2022/interfaces/table-config.interface.mjs +1 -1
- package/esm2022/pipes/calculator-column.pipe.mjs +54 -26
- package/esm2022/table.component.mjs +4 -28
- package/fesm2022/libs-ui-components-table.mjs +59 -55
- package/fesm2022/libs-ui-components-table.mjs.map +1 -1
- package/interfaces/table-config.interface.d.ts +1 -1
- package/package.json +23 -23
- package/pipes/calculator-column.pipe.d.ts +3 -0
- package/table.component.d.ts +2 -5
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlnLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJsZS9zcmMvaW50ZXJmYWNlcy90YWJsZS1jb25maWcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBUWVBFX1NPUlRfVFlQRSB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtc29ydFwiO1xuaW1wb3J0IHsgSVBvcG92ZXIsIFRZUEVfUE9QT1ZFUl9UWVBFIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3ZlclwiO1xuaW1wb3J0IHsgVFlQRV9GVU5DVElPTiwgVFlQRV9PQkpFQ1QgfSBmcm9tIFwiQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlc1wiO1xuaW1wb3J0IHsgSVRhYmxlVGVtcGxhdGVDb25maWcgfSBmcm9tIFwiLi90ZW1wbGF0ZS1jb25maWcuaW50ZXJmYWNlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlSGVhZGVyQ29uZmlnIHtcbiAgbmdTdHlsZT86IFRZUEVfT0JKRUNUO1xuICBrZWVwV2lkdGhJc1B4Q29sdW1uSWZUYWJsZVdpZHRoR3JhbmRUb3RhbENvbHVtbnNIZWFkZXI/OiBib29sZWFuO1xuICBuZ0NsYXNzPzogVFlQRV9PQkpFQ1Q7XG4gIHR5cGU/OiBUWVBFX1BPUE9WRVJfVFlQRTtcbiAgbGFiZWw/OiBzdHJpbmcgfCBUWVBFX09CSkVDVDtcbiAgbGFiZWxDb25maWc/OiBJUG9wb3ZlcjsgLy8gY29uZmlnIGRhdGFWaWV3IGtow7RuZyBjw7MgdMOhYyBk4bulbmcsIHPhu60gZOG7pW5nIGxhYmVsIMSR4buDIGNvbmZpZy5cbiAgcGFyc2VWYWx1ZT86IFRZUEVfRlVOQ1RJT047IC8vIGTDuW5nIGtoaSBtdeG7kW4gY3VzdG9tIGxhYmVsIGhlYWRlclxuICB0b29sdGlwT3RoZXI/OiBJUG9wb3ZlcjsgLy8gRMO5bmcga2hpIGhlYWRlciB0YWJsZSBjw7MgdG9vbHRpcFxuICBoYXNDaGVja2JveD86IGJvb2xlYW47IC8vIETDuW5nIGtoaSBjw7MgY2hlY2tib3hcbiAgaGFzQ2hlY2tib3hBbGw/OiBib29sZWFuOyAvLyBEw7luZyBraGkgY8OzIGNoZWNrYm94XG4gIGNoZWNrYm94QWxpZ25DZW50ZXI/OiBib29sZWFuO1xuICBjb250ZW50SGVhZGVyQWxpZ25DZW50ZXI/OiBib29sZWFuOyAvLyBkw7luZyDEkeG7gyBjxINuIGdp4buvYSBu4buZaSBkdW5nIGtoaSBjw7MgdGjDqm0gdG9vbHRpcE90aGVyXG4gIGNvbnRlbnRIZWFkZXJKdXN0aWZ5Q29udGVudEVuZD86IGJvb2xlYW47IC8vIGTDuW5nIMSR4buDIGPEg24gbuG7mWkgZHVuZyB2ZSBiZW4gcGhhaVxuICBpZ25vcmVCb3JkZXJSaWdodD86IGJvb2xlYW47XG4gIGhhc1NvcnQ/OiBib29sZWFuO1xuICBvcmRlcmJ5Pzogc3RyaW5nOyAvLyBvcmRlciBjb3QgdGhlbyB0cnVvbmcgbmFvLlxuICBwYWRkaW5nTGVmdFJpZ2h0SGVhZGVyQ29udGFpbmVyPzogc3RyaW5nOyAvLyBwYWRkaW5nIGNobyBoZWFkZXJcbiAgaWdub3JlUHlEZWZhdWx0PzogYm9vbGVhbjsgLy8gdOG6r3QgcGFkZGluZyBkZWZhdWx0IGhlYWRlclxuICB0ZW1wbGF0ZUNzc1dyYXBwZXI/OiBzdHJpbmc7XG4gIHRlbXBsYXRlQ3NzV3JhcHBlckhvc3Q/OiBzdHJpbmc7XG4gIGNvbFRlbXBsYXRlQ29uZmlnPzogQXJyYXk8SVRhYmxlVGVtcGxhdGVDb25maWc+O1xuICBzb3J0SWdub3JlVG9vbHRpcENvbnRlbnQ/OiBib29sZWFuO1xuICBzb3J0VG9vbHRpcENvbnRlbnRBc2M/OiBzdHJpbmc7XG4gIHNvcnRUb29sdGlwQ29udGVudERlc2M/OiBzdHJpbmc7XG4gIHpJbmRleFRvb2x0aXBTb3J0PzogbnVtYmVyO1xuICBkZWZhdWx0TW9kZT86IFRZUEVfU09SVF9UWVBFO1xuICBsYWJlbERlc2NyaXB0aW9uPzoge1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG4gIH07XG4gIHJvd3NDb25maWc/OiB7XG4gICAgY2xhc3NDb250YWluZXJSb3dzPzogc3RyaW5nO1xuICAgIHJvd3M6IEFycmF5PHsgY2xhc3NSb3c/OiBzdHJpbmc7IGNvbHM6IEFycmF5PElUYWJsZUhlYWRlckNvbmZpZ0NvbD4gfT47XG4gIH07XG4gIGNoZWNrYm94Q2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICBjaGVja0NvbmRpdGlvbkNoZWNrQm94SGlkZGVuPzogVFlQRV9GVU5DVElPTjxib29sZWFuPjsgLy8gRMO5bmcga2hpIGPDsyBjaGVja2JveCBuaMawbmcgY8OzIMSRaeG7gXUga2nhu4duIGLhu5Ugc3VuZyDEkeG7gyDhuqluIMSRaSBjaGVja2JveCBj4bunYSAxIHbDoGkgaXRlbVxuICBjaGVja2JveEFsbENsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgaXNTaG93SW5kZXhPblJvdz86IGJvb2xlYW47XG4gIGNsYXNzSW5jbHVkZUluZGV4T25Sb3c/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlSGVhZGVyQ29uZmlnQ29sIHtcbiAgbmdTdHlsZT86IFRZUEVfT0JKRUNUO1xuICBuZ0NsYXNzPzogVFlQRV9PQkpFQ1Q7XG4gIHR5cGU/OiBUWVBFX1BPUE9WRVJfVFlQRTtcbiAgbGFiZWw/OiBzdHJpbmcgfCBUWVBFX09CSkVDVDtcbiAgbGFiZWxDb25maWc/OiBJUG9wb3ZlcjsgLy8gY29uZmlnIGRhdGFWaWV3IGtow7RuZyBjw7MgdMOhYyBk4bulbmcsIHPhu60gZOG7pW5nIGxhYmVsIMSR4buDIGNvbmZpZy5cbiAgcGFyc2VWYWx1ZT86IFRZUEVfRlVOQ1RJT047IC8vIGTDuW5nIGtoaSBtdeG7kW4gY3VzdG9tIGxhYmVsIGhlYWRlclxuICB0b29sdGlwT3RoZXI/OiBJUG9wb3ZlcjsgLy8gRMO5bmcga2hpIGhlYWRlciB0YWJsZSBjw7MgdG9vbHRpcFxuICBjb250ZW50SGVhZGVyQWxpZ25DZW50ZXI/OiBib29sZWFuOyAvLyBkw7luZyDEkeG7gyBjxINuIGdp4buvYSBu4buZaSBkdW5nIGtoaSBjw7MgdGjDqm0gdG9vbHRpcE90aGVyXG4gIGNvbnRlbnRIZWFkZXJKdXN0aWZ5Q29udGVudEVuZD86IGJvb2xlYW47IC8vIGTDuW5nIMSR4buDIGPEg24gbuG7mWkgZHVuZyB2ZSBiZW4gcGhhaVxuICBoYXNTb3J0PzogYm9vbGVhbjtcbiAgb3JkZXJieT86IHN0cmluZzsgLy8gb3JkZXIgY290IHRoZW8gdHJ1b25nIG5hby5cbiAgc29ydElnbm9yZVRvb2x0aXBDb250ZW50PzogYm9vbGVhbjtcbiAgc29ydFRvb2x0aXBDb250ZW50QXNjPzogc3RyaW5nO1xuICBzb3J0VG9vbHRpcENvbnRlbnREZXNjPzogc3RyaW5nO1xuICBkZWZhdWx0TW9kZT86IFRZUEVfU09SVF9UWVBFO1xuICBsYWJlbERlc2NyaXB0aW9uPzoge1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZ1RlbXBsYXRlSXRlbUNvbGxhcHNlRXhwYW5kIHtcbiAgZmllbGRHZXREYXRhRXhwYW5kPzogc3RyaW5nO1xuICBjc3NXcmFwcGVyPzogc3RyaW5nO1xuICB0ZW1wbGF0ZUNzc1dyYXBwZXI/OiBzdHJpbmc7XG4gIGNvbFRlbXBsYXRlQ29uZmlnPzogQXJyYXk8SVRhYmxlVGVtcGxhdGVDb25maWc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUZvb3RlckNvbmZpZyB7XG4gIGlnbm9yZUJvcmRlclJpZ2h0PzogYm9vbGVhbjtcbiAgbmdTdHlsZT86IFRZUEVfT0JKRUNUO1xuICBuZ0NsYXNzPzogVFlQRV9PQkpFQ1Q7XG4gIHRlbXBsYXRlQ3NzV3JhcHBlcj86IHN0cmluZztcbiAgY29sVGVtcGxhdGVDb25maWc/OiBBcnJheTxJVGFibGVUZW1wbGF0ZUNvbmZpZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZ1NlbGVjdE1vcmVJdGVtIHtcbiAga2V5UGVyUGFnZT86IHN0cmluZztcbiAgcGFnaW5nTnVtYmVyPzogYm9vbGVhbjtcbiAgZ2V0VmFsdWU6IChpdGVtOiBhbnkpID0+IHN0cmluZzsgLy8gbMOgIGjDoG0gZ2V0IHZhbHVlIGPhu6dhIGxpc3RWaWV3IHR5cGUgdGV4dFxuICBsaXN0T3B0aW9uOiBBcnJheTx7IGtleTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyB9Pjtcbn0iXX0=
|
|
@@ -5,35 +5,63 @@ export class LibsUiTableCalculatorColumnPipe {
|
|
|
5
5
|
if (!header?.ngStyle) {
|
|
6
6
|
return undefined;
|
|
7
7
|
}
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
8
|
+
const mixHeaderConfig = [...(headerLeftConfig || []), ...(headerRightConfig || [])];
|
|
9
|
+
let totalPxWidthHeader = mixHeaderConfig.reduce((acc, curr) => acc + this.getWidthPxOfStyle(curr), 0);
|
|
10
|
+
const totalPercentWidthHeader = mixHeaderConfig.reduce((acc, curr) => acc + this.getWidthPercentOfStyle(curr), 0);
|
|
11
|
+
const totalWidthIsPxColumnIfTableWidthGrandTotalColumnsHeader = mixHeaderConfig.reduce((acc, curr) => acc + (curr.keepWidthIsPxColumnIfTableWidthGrandTotalColumnsHeader ? this.getWidthPxOfStyle(curr) : 0), 0);
|
|
12
|
+
if (mixHeaderConfig.some(header => header.isShowIndexOnRow)) {
|
|
13
|
+
offsetWidth -= 50;
|
|
14
|
+
}
|
|
15
|
+
if (totalWidthIsPxColumnIfTableWidthGrandTotalColumnsHeader) {
|
|
16
|
+
offsetWidth -= totalWidthIsPxColumnIfTableWidthGrandTotalColumnsHeader;
|
|
17
|
+
totalPxWidthHeader -= totalWidthIsPxColumnIfTableWidthGrandTotalColumnsHeader;
|
|
18
|
+
}
|
|
19
|
+
let percent = this.getWidthPercentOfStyle(header);
|
|
20
|
+
if (percent) {
|
|
21
|
+
offsetWidth -= totalPxWidthHeader;
|
|
22
|
+
const percentDivide = (totalPercentWidthHeader - 100) / mixHeaderConfig.length;
|
|
23
|
+
percent -= percentDivide;
|
|
24
|
+
const widthCalculator = (percent / 100) * offsetWidth;
|
|
25
|
+
return this.getStyleUpdate(widthCalculator, header.ngStyle);
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
const width = this.getWidthPxOfStyle(header);
|
|
28
|
+
if (totalPxWidthHeader > offsetWidth || header.keepWidthIsPxColumnIfTableWidthGrandTotalColumnsHeader || totalPercentWidthHeader) {
|
|
29
|
+
return this.getStyleUpdate(width, header.ngStyle);
|
|
30
|
+
}
|
|
31
|
+
const widthCalculator = (width / totalPxWidthHeader) * offsetWidth;
|
|
32
|
+
return this.getStyleUpdate(widthCalculator, header.ngStyle);
|
|
33
|
+
}
|
|
34
|
+
getWidthPxOfStyle(headerGetWidth) {
|
|
35
|
+
let { flex, width, maxWidth } = headerGetWidth.ngStyle || {};
|
|
36
|
+
if (flex?.includes('%') || width?.includes('%') || maxWidth?.includes('%')) {
|
|
37
|
+
return 0;
|
|
29
38
|
}
|
|
30
|
-
|
|
31
|
-
|
|
39
|
+
width = parseInt(width || '0');
|
|
40
|
+
maxWidth = parseInt(maxWidth || '0');
|
|
41
|
+
flex = parseInt((flex || '0').split(' ').pop() || '0');
|
|
42
|
+
if (!flex && !width && !maxWidth) {
|
|
43
|
+
return 0;
|
|
32
44
|
}
|
|
33
|
-
const
|
|
34
|
-
|
|
45
|
+
const widthMax = Math.max(width, maxWidth, flex);
|
|
46
|
+
return widthMax;
|
|
47
|
+
}
|
|
48
|
+
getWidthPercentOfStyle(headerGetWidth) {
|
|
49
|
+
let { flex, width, maxWidth } = headerGetWidth.ngStyle || {};
|
|
50
|
+
if (flex?.includes('px') || width?.includes('px') || maxWidth?.includes('px')) {
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
width = parseInt(width || '0');
|
|
54
|
+
maxWidth = parseInt(maxWidth || '0');
|
|
55
|
+
flex = parseInt((flex || '0').split(' ').pop() || '0');
|
|
56
|
+
if (!flex && !width && !maxWidth) {
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
const widthMax = Math.max(width, maxWidth, flex);
|
|
60
|
+
return widthMax;
|
|
61
|
+
}
|
|
62
|
+
getStyleUpdate(widthCalculator, ngStyle) {
|
|
35
63
|
return {
|
|
36
|
-
...
|
|
64
|
+
...ngStyle,
|
|
37
65
|
flex: `0 0 ${widthCalculator}px`,
|
|
38
66
|
width: `${widthCalculator}px`,
|
|
39
67
|
maxWidth: `${widthCalculator}px`
|
|
@@ -49,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
49
77
|
standalone: true
|
|
50
78
|
}]
|
|
51
79
|
}] });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1jb2x1bW4ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJsZS9zcmMvcGlwZXMvY2FsY3VsYXRvci1jb2x1bW4ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFRcEQsTUFBTSxPQUFPLCtCQUErQjtJQUMxQyxTQUFTLENBQUMsTUFBc0MsRUFBRSxXQUFtQixFQUFFLGdCQUE0QyxFQUFFLGlCQUE2QztRQUNoSyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwRixJQUFJLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sdUJBQXVCLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEgsTUFBTSx1REFBdUQsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLHNEQUFzRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlC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LENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzlFLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUNELEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxlQUF1QixFQUFFLE9BQW9CO1FBQ2xFLE9BQU87WUFDTCxHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsT0FBTyxlQUFlLElBQUk7WUFDaEMsS0FBSyxFQUFFLEdBQUcsZUFBZSxJQUFJO1lBQzdCLFFBQVEsRUFBRSxHQUFHLGVBQWUsSUFBSTtTQUNqQyxDQUFDO0lBQ0osQ0FBQzt3R0E3RVUsK0JBQStCO3NHQUEvQiwrQkFBK0I7OzRGQUEvQiwrQkFBK0I7a0JBTDNDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGlDQUFpQztvQkFDdkMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVRhYmxlSGVhZGVyQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRZUEVfT0JKRUNUIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5AUGlwZSh7XG4gIG5hbWU6ICdMaWJzVWlUYWJsZUNhbGN1bGF0b3JDb2x1bW5QaXBlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaVRhYmxlQ2FsY3VsYXRvckNvbHVtblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKGhlYWRlcjogSVRhYmxlSGVhZGVyQ29uZmlnIHwgdW5kZWZpbmVkLCBvZmZzZXRXaWR0aDogbnVtYmVyLCBoZWFkZXJMZWZ0Q29uZmlnPzogQXJyYXk8SVRhYmxlSGVhZGVyQ29uZmlnPiwgaGVhZGVyUmlnaHRDb25maWc/OiBBcnJheTxJVGFibGVIZWFkZXJDb25maWc+KTogVFlQRV9PQkpFQ1QgfCB1bmRlZmluZWQge1xuICAgIGlmICghaGVhZGVyPy5uZ1N0eWxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG1peEhlYWRlckNvbmZpZyA9IFsuLi4oaGVhZGVyTGVmdENvbmZpZyB8fCBbXSksIC4uLihoZWFkZXJSaWdodENvbmZpZyB8fCBbXSldO1xuXG4gICAgbGV0IHRvdGFsUHhXaWR0aEhlYWRlciA9IG1peEhlYWRlckNvbmZpZy5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgdGhpcy5nZXRXaWR0aFB4T2ZTdHlsZShjdXJyKSwgMCk7XG4gICAgY29uc3QgdG90YWxQZXJjZW50V2lkdGhIZWFkZXIgPSBtaXhIZWFkZXJDb25maWcucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIHRoaXMuZ2V0V2lkdGhQZXJjZW50T2ZTdHlsZShjdXJyKSwgMCk7XG4gICAgY29uc3QgdG90YWxXaWR0aElzUHhDb2x1bW5JZlRhYmxlV2lkdGhHcmFuZFRvdGFsQ29sdW1uc0hlYWRlciA9IG1peEhlYWRlckNvbmZpZy5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgKGN1cnIua2VlcFdpZHRoSXNQeENvbHVtbklmVGFibGVXaWR0aEdyYW5kVG90YWxDb2x1bW5zSGVhZGVyID8gdGhpcy5nZXRXaWR0aFB4T2ZTdHlsZShjdXJyKSA6IDApLCAwKTtcblxuICAgIGlmIChtaXhIZWFkZXJDb25maWcuc29tZShoZWFkZXIgPT4gaGVhZGVyLmlzU2hvd0luZGV4T25Sb3cpKSB7XG4gICAgICBvZmZzZXRXaWR0aCAtPSA1MDtcbiAgICB9XG5cbiAgICBpZiAodG90YWxXaWR0aElzUHhDb2x1bW5JZlRhYmxlV2lkdGhHcmFuZFRvdGFsQ29sdW1uc0hlYWRlcikge1xuICAgICAgb2Zmc2V0V2lkdGggLT0gdG90YWxXaWR0aElzUHhDb2x1bW5JZlRhYmxlV2lkdGhHcmFuZFRvdGFsQ29sdW1uc0hlYWRlcjtcbiAgICAgIHRvdGFsUHhXaWR0aEhlYWRlciAtPSB0b3RhbFdpZHRoSXNQeENvbHVtbklmVGFibGVXaWR0aEdyYW5kVG90YWxDb2x1bW5zSGVhZGVyO1xuICAgIH1cblxuICAgIGxldCBwZXJjZW50ID0gdGhpcy5nZXRXaWR0aFBlcmNlbnRPZlN0eWxlKGhlYWRlcik7XG4gICAgaWYgKHBlcmNlbnQpIHtcbiAgICAgIG9mZnNldFdpZHRoIC09IHRvdGFsUHhXaWR0aEhlYWRlcjtcbiAgICAgIGNvbnN0IHBlcmNlbnREaXZpZGUgPSAodG90YWxQZXJjZW50V2lkdGhIZWFkZXIgLSAxMDApIC8gbWl4SGVhZGVyQ29uZmlnLmxlbmd0aDtcbiAgICAgIHBlcmNlbnQgLT0gcGVyY2VudERpdmlkZTtcbiAgICAgIGNvbnN0IHdpZHRoQ2FsY3VsYXRvciA9IChwZXJjZW50IC8gMTAwKSAqIG9mZnNldFdpZHRoO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U3R5bGVVcGRhdGUod2lkdGhDYWxjdWxhdG9yLCBoZWFkZXIubmdTdHlsZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLmdldFdpZHRoUHhPZlN0eWxlKGhlYWRlcik7XG4gICAgaWYgKHRvdGFsUHhXaWR0aEhlYWRlciA+IG9mZnNldFdpZHRoIHx8IGhlYWRlci5rZWVwV2lkdGhJc1B4Q29sdW1uSWZUYWJsZVdpZHRoR3JhbmRUb3RhbENvbHVtbnNIZWFkZXIgfHwgdG90YWxQZXJjZW50V2lkdGhIZWFkZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFN0eWxlVXBkYXRlKHdpZHRoLCBoZWFkZXIubmdTdHlsZSk7XG4gICAgfVxuICAgIGNvbnN0IHdpZHRoQ2FsY3VsYXRvciA9ICh3aWR0aCAvIHRvdGFsUHhXaWR0aEhlYWRlcikgKiBvZmZzZXRXaWR0aDtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHlsZVVwZGF0ZSh3aWR0aENhbGN1bGF0b3IsIGhlYWRlci5uZ1N0eWxlKTtcblxuICB9XG5cbiAgcHJpdmF0ZSBnZXRXaWR0aFB4T2ZTdHlsZShoZWFkZXJHZXRXaWR0aDogSVRhYmxlSGVhZGVyQ29uZmlnKTogbnVtYmVyIHtcbiAgICBsZXQgeyBmbGV4LCB3aWR0aCwgbWF4V2lkdGggfSA9IGhlYWRlckdldFdpZHRoLm5nU3R5bGUgfHwge307XG4gICAgaWYgKGZsZXg/LmluY2x1ZGVzKCclJykgfHwgd2lkdGg/LmluY2x1ZGVzKCclJykgfHwgbWF4V2lkdGg/LmluY2x1ZGVzKCclJykpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB3aWR0aCA9IHBhcnNlSW50KHdpZHRoIHx8ICcwJyk7XG4gICAgbWF4V2lkdGggPSBwYXJzZUludChtYXhXaWR0aCB8fCAnMCcpO1xuICAgIGZsZXggPSBwYXJzZUludCgoZmxleCB8fCAnMCcpLnNwbGl0KCcgJykucG9wKCkgfHwgJzAnKTtcblxuICAgIGlmICghZmxleCAmJiAhd2lkdGggJiYgIW1heFdpZHRoKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY29uc3Qgd2lkdGhNYXggPSBNYXRoLm1heCh3aWR0aCwgbWF4V2lkdGgsIGZsZXgpO1xuICAgIHJldHVybiB3aWR0aE1heDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2lkdGhQZXJjZW50T2ZTdHlsZShoZWFkZXJHZXRXaWR0aDogSVRhYmxlSGVhZGVyQ29uZmlnKTogbnVtYmVyIHtcbiAgICBsZXQgeyBmbGV4LCB3aWR0aCwgbWF4V2lkdGggfSA9IGhlYWRlckdldFdpZHRoLm5nU3R5bGUgfHwge307XG4gICAgaWYgKGZsZXg/LmluY2x1ZGVzKCdweCcpIHx8IHdpZHRoPy5pbmNsdWRlcygncHgnKSB8fCBtYXhXaWR0aD8uaW5jbHVkZXMoJ3B4JykpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB3aWR0aCA9IHBhcnNlSW50KHdpZHRoIHx8ICcwJyk7XG4gICAgbWF4V2lkdGggPSBwYXJzZUludChtYXhXaWR0aCB8fCAnMCcpO1xuICAgIGZsZXggPSBwYXJzZUludCgoZmxleCB8fCAnMCcpLnNwbGl0KCcgJykucG9wKCkgfHwgJzAnKTtcbiAgICBpZiAoIWZsZXggJiYgIXdpZHRoICYmICFtYXhXaWR0aCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNvbnN0IHdpZHRoTWF4ID0gTWF0aC5tYXgod2lkdGgsIG1heFdpZHRoLCBmbGV4KTtcbiAgICByZXR1cm4gd2lkdGhNYXg7XG4gIH1cblxuICBwcml2YXRlIGdldFN0eWxlVXBkYXRlKHdpZHRoQ2FsY3VsYXRvcjogbnVtYmVyLCBuZ1N0eWxlOiBUWVBFX09CSkVDVCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5uZ1N0eWxlLFxuICAgICAgZmxleDogYDAgMCAke3dpZHRoQ2FsY3VsYXRvcn1weGAsXG4gICAgICB3aWR0aDogYCR7d2lkdGhDYWxjdWxhdG9yfXB4YCxcbiAgICAgIG1heFdpZHRoOiBgJHt3aWR0aENhbGN1bGF0b3J9cHhgXG4gICAgfTtcbiAgfVxufVxuIl19
|