@libs-ui/components-table 0.2.184 → 0.2.185
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 +53 -25
- package/esm2022/table.component.mjs +4 -3
- package/fesm2022/libs-ui-components-table.mjs +56 -27
- 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 -1
|
@@ -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
|
-
offsetWidth -= widthMax;
|
|
19
|
-
return 0;
|
|
20
|
-
}
|
|
21
|
-
return widthMax;
|
|
22
|
-
};
|
|
23
|
-
let totalWidthHeader = headerLeftConfig?.reduce((acc, curr) => acc + getWidthOfStyle(curr), 0) ?? 0;
|
|
24
|
-
if (headerRightConfig?.length) {
|
|
25
|
-
totalWidthHeader = headerRightConfig?.reduce((acc, curr) => acc + getWidthOfStyle(curr), totalWidthHeader) ?? 0;
|
|
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;
|
|
26
18
|
}
|
|
27
|
-
|
|
28
|
-
|
|
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);
|
|
29
26
|
}
|
|
30
|
-
if (
|
|
27
|
+
if (totalPxWidthHeader > offsetWidth || header.keepWidthIsPxColumnIfTableWidthGrandTotalColumnsHeader || totalPercentWidthHeader) {
|
|
31
28
|
return header.ngStyle;
|
|
32
29
|
}
|
|
33
|
-
const width =
|
|
34
|
-
const widthCalculator = (width /
|
|
30
|
+
const width = this.getWidthPxOfStyle(header);
|
|
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;
|
|
38
|
+
}
|
|
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;
|
|
44
|
+
}
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1jb2x1bW4ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJsZS9zcmMvcGlwZXMvY2FsY3VsYXRvci1jb2x1bW4ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFRcEQsTUFBTSxPQUFPLCtCQUErQjtJQUMxQyxTQUFTLENBQUMsTUFBc0MsRUFBRSxXQUFtQixFQUFFLGdCQUE0QyxFQUFFLGlCQUE2QztRQUNoSyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwRixJQUFJLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sdUJBQXVCLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEgsTUFBTSx1REFBdUQsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLHNEQUFzRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWpOLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDNUQsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSx1REFBdUQsRUFBRSxDQUFDO1lBQzVELFdBQVcsSUFBSSx1REFBdUQsQ0FBQztZQUN2RSxrQkFBa0IsSUFBSSx1REFBdUQsQ0FBQztRQUNoRixDQUFDO1FBRUQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixXQUFXLElBQUksa0JBQWtCLENBQUM7WUFDbEMsTUFBTSxhQUFhLEdBQUcsQ0FBQyx1QkFBdUIsR0FBRyxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO1lBQy9FLE9BQU8sSUFBSSxhQUFhLENBQUM7WUFDekIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQ3RELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxJQUFJLGtCQUFrQixHQUFHLFdBQVcsSUFBSSxNQUFNLENBQUMsc0RBQXNELElBQUksdUJBQXVCLEVBQUUsQ0FBQztZQUNqSSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLFdBQVcsQ0FBQztRQUNuRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU5RCxDQUFDO0lBRU8saUJBQWlCLENBQUMsY0FBa0M7UUFDMUQsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsY0FBYyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDN0QsSUFBSSxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNFLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUNELEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVPLHNCQUFzQixDQUFDLGNBQWtDO1FBQy9ELElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLGNBQWMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQzdELElBQUksSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM5RSxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQztRQUMvQixRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakMsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxjQUFjLENBQUMsZUFBdUIsRUFBRSxPQUFvQjtRQUNsRSxPQUFPO1lBQ0wsR0FBRyxPQUFPO1lBQ1YsSUFBSSxFQUFFLE9BQU8sZUFBZSxJQUFJO1lBQ2hDLEtBQUssRUFBRSxHQUFHLGVBQWUsSUFBSTtZQUM3QixRQUFRLEVBQUUsR0FBRyxlQUFlLElBQUk7U0FDakMsQ0FBQztJQUNKLENBQUM7d0dBN0VVLCtCQUErQjtzR0FBL0IsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUwzQyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxpQ0FBaUM7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElUYWJsZUhlYWRlckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUWVBFX09CSkVDVCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuQFBpcGUoe1xuICBuYW1lOiAnTGlic1VpVGFibGVDYWxjdWxhdG9yQ29sdW1uUGlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5cbmV4cG9ydCBjbGFzcyBMaWJzVWlUYWJsZUNhbGN1bGF0b3JDb2x1bW5QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShoZWFkZXI6IElUYWJsZUhlYWRlckNvbmZpZyB8IHVuZGVmaW5lZCwgb2Zmc2V0V2lkdGg6IG51bWJlciwgaGVhZGVyTGVmdENvbmZpZz86IEFycmF5PElUYWJsZUhlYWRlckNvbmZpZz4sIGhlYWRlclJpZ2h0Q29uZmlnPzogQXJyYXk8SVRhYmxlSGVhZGVyQ29uZmlnPik6IFRZUEVfT0JKRUNUIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWhlYWRlcj8ubmdTdHlsZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBtaXhIZWFkZXJDb25maWcgPSBbLi4uKGhlYWRlckxlZnRDb25maWcgfHwgW10pLCAuLi4oaGVhZGVyUmlnaHRDb25maWcgfHwgW10pXTtcblxuICAgIGxldCB0b3RhbFB4V2lkdGhIZWFkZXIgPSBtaXhIZWFkZXJDb25maWcucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIHRoaXMuZ2V0V2lkdGhQeE9mU3R5bGUoY3VyciksIDApO1xuICAgIGNvbnN0IHRvdGFsUGVyY2VudFdpZHRoSGVhZGVyID0gbWl4SGVhZGVyQ29uZmlnLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgKyB0aGlzLmdldFdpZHRoUGVyY2VudE9mU3R5bGUoY3VyciksIDApO1xuICAgIGNvbnN0IHRvdGFsV2lkdGhJc1B4Q29sdW1uSWZUYWJsZVdpZHRoR3JhbmRUb3RhbENvbHVtbnNIZWFkZXIgPSBtaXhIZWFkZXJDb25maWcucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIChjdXJyLmtlZXBXaWR0aElzUHhDb2x1bW5JZlRhYmxlV2lkdGhHcmFuZFRvdGFsQ29sdW1uc0hlYWRlciA/IHRoaXMuZ2V0V2lkdGhQeE9mU3R5bGUoY3VycikgOiAwKSwgMCk7XG5cbiAgICBpZiAobWl4SGVhZGVyQ29uZmlnLnNvbWUoaGVhZGVyID0+IGhlYWRlci5pc1Nob3dJbmRleE9uUm93KSkge1xuICAgICAgb2Zmc2V0V2lkdGggLT0gNTA7XG4gICAgfVxuXG4gICAgaWYgKHRvdGFsV2lkdGhJc1B4Q29sdW1uSWZUYWJsZVdpZHRoR3JhbmRUb3RhbENvbHVtbnNIZWFkZXIpIHtcbiAgICAgIG9mZnNldFdpZHRoIC09IHRvdGFsV2lkdGhJc1B4Q29sdW1uSWZUYWJsZVdpZHRoR3JhbmRUb3RhbENvbHVtbnNIZWFkZXI7XG4gICAgICB0b3RhbFB4V2lkdGhIZWFkZXIgLT0gdG90YWxXaWR0aElzUHhDb2x1bW5JZlRhYmxlV2lkdGhHcmFuZFRvdGFsQ29sdW1uc0hlYWRlcjtcbiAgICB9XG5cbiAgICBsZXQgcGVyY2VudCA9IHRoaXMuZ2V0V2lkdGhQZXJjZW50T2ZTdHlsZShoZWFkZXIpO1xuICAgIGlmIChwZXJjZW50KSB7XG4gICAgICBvZmZzZXRXaWR0aCAtPSB0b3RhbFB4V2lkdGhIZWFkZXI7XG4gICAgICBjb25zdCBwZXJjZW50RGl2aWRlID0gKHRvdGFsUGVyY2VudFdpZHRoSGVhZGVyIC0gMTAwKSAvIG1peEhlYWRlckNvbmZpZy5sZW5ndGg7XG4gICAgICBwZXJjZW50IC09IHBlcmNlbnREaXZpZGU7XG4gICAgICBjb25zdCB3aWR0aENhbGN1bGF0b3IgPSAocGVyY2VudCAvIDEwMCkgKiBvZmZzZXRXaWR0aDtcbiAgICAgIHJldHVybiB0aGlzLmdldFN0eWxlVXBkYXRlKHdpZHRoQ2FsY3VsYXRvciwgaGVhZGVyLm5nU3R5bGUpO1xuICAgIH1cblxuICAgIGlmICh0b3RhbFB4V2lkdGhIZWFkZXIgPiBvZmZzZXRXaWR0aCB8fCBoZWFkZXIua2VlcFdpZHRoSXNQeENvbHVtbklmVGFibGVXaWR0aEdyYW5kVG90YWxDb2x1bW5zSGVhZGVyIHx8IHRvdGFsUGVyY2VudFdpZHRoSGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLm5nU3R5bGU7XG4gICAgfVxuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5nZXRXaWR0aFB4T2ZTdHlsZShoZWFkZXIpO1xuICAgIGNvbnN0IHdpZHRoQ2FsY3VsYXRvciA9ICh3aWR0aCAvIHRvdGFsUHhXaWR0aEhlYWRlcikgKiBvZmZzZXRXaWR0aDtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHlsZVVwZGF0ZSh3aWR0aENhbGN1bGF0b3IsIGhlYWRlci5uZ1N0eWxlKTtcblxuICB9XG5cbiAgcHJpdmF0ZSBnZXRXaWR0aFB4T2ZTdHlsZShoZWFkZXJHZXRXaWR0aDogSVRhYmxlSGVhZGVyQ29uZmlnKTogbnVtYmVyIHtcbiAgICBsZXQgeyBmbGV4LCB3aWR0aCwgbWF4V2lkdGggfSA9IGhlYWRlckdldFdpZHRoLm5nU3R5bGUgfHwge307XG4gICAgaWYgKGZsZXg/LmluY2x1ZGVzKCclJykgfHwgd2lkdGg/LmluY2x1ZGVzKCclJykgfHwgbWF4V2lkdGg/LmluY2x1ZGVzKCclJykpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB3aWR0aCA9IHBhcnNlSW50KHdpZHRoIHx8ICcwJyk7XG4gICAgbWF4V2lkdGggPSBwYXJzZUludChtYXhXaWR0aCB8fCAnMCcpO1xuICAgIGZsZXggPSBwYXJzZUludCgoZmxleCB8fCAnMCcpLnNwbGl0KCcgJykucG9wKCkgfHwgJzAnKTtcblxuICAgIGlmICghZmxleCAmJiAhd2lkdGggJiYgIW1heFdpZHRoKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY29uc3Qgd2lkdGhNYXggPSBNYXRoLm1heCh3aWR0aCwgbWF4V2lkdGgsIGZsZXgpO1xuICAgIHJldHVybiB3aWR0aE1heDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2lkdGhQZXJjZW50T2ZTdHlsZShoZWFkZXJHZXRXaWR0aDogSVRhYmxlSGVhZGVyQ29uZmlnKTogbnVtYmVyIHtcbiAgICBsZXQgeyBmbGV4LCB3aWR0aCwgbWF4V2lkdGggfSA9IGhlYWRlckdldFdpZHRoLm5nU3R5bGUgfHwge307XG4gICAgaWYgKGZsZXg/LmluY2x1ZGVzKCdweCcpIHx8IHdpZHRoPy5pbmNsdWRlcygncHgnKSB8fCBtYXhXaWR0aD8uaW5jbHVkZXMoJ3B4JykpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB3aWR0aCA9IHBhcnNlSW50KHdpZHRoIHx8ICcwJyk7XG4gICAgbWF4V2lkdGggPSBwYXJzZUludChtYXhXaWR0aCB8fCAnMCcpO1xuICAgIGZsZXggPSBwYXJzZUludCgoZmxleCB8fCAnMCcpLnNwbGl0KCcgJykucG9wKCkgfHwgJzAnKTtcbiAgICBpZiAoIWZsZXggJiYgIXdpZHRoICYmICFtYXhXaWR0aCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNvbnN0IHdpZHRoTWF4ID0gTWF0aC5tYXgod2lkdGgsIG1heFdpZHRoLCBmbGV4KTtcbiAgICByZXR1cm4gd2lkdGhNYXg7XG4gIH1cblxuICBwcml2YXRlIGdldFN0eWxlVXBkYXRlKHdpZHRoQ2FsY3VsYXRvcjogbnVtYmVyLCBuZ1N0eWxlOiBUWVBFX09CSkVDVCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5uZ1N0eWxlLFxuICAgICAgZmxleDogYDAgMCAke3dpZHRoQ2FsY3VsYXRvcn1weGAsXG4gICAgICB3aWR0aDogYCR7d2lkdGhDYWxjdWxhdG9yfXB4YCxcbiAgICAgIG1heFdpZHRoOiBgJHt3aWR0aENhbGN1bGF0b3J9cHhgXG4gICAgfTtcbiAgfVxufVxuIl19
|