@swimlane/ngx-datatable 17.0.0 → 20.0.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/README.md +0 -1
- package/assets/icons.css +39 -19
- package/bundles/swimlane-ngx-datatable.umd.js +1103 -1564
- package/bundles/swimlane-ngx-datatable.umd.js.map +1 -1
- package/esm2015/lib/components/body/body-cell.component.js +40 -86
- package/esm2015/lib/components/body/body-group-header-template.directive.js +8 -10
- package/esm2015/lib/components/body/body-group-header.directive.js +11 -19
- package/esm2015/lib/components/body/body-row-wrapper.component.js +32 -54
- package/esm2015/lib/components/body/body-row.component.js +38 -75
- package/esm2015/lib/components/body/body.component.js +61 -137
- package/esm2015/lib/components/body/progress-bar.component.js +10 -12
- package/esm2015/lib/components/body/scroller.component.js +21 -33
- package/esm2015/lib/components/body/selection.component.js +19 -35
- package/esm2015/lib/components/body/summary/summary-row.component.js +19 -29
- package/esm2015/lib/components/columns/column-cell.directive.js +6 -8
- package/esm2015/lib/components/columns/column-header.directive.js +6 -8
- package/esm2015/lib/components/columns/column.directive.js +36 -92
- package/esm2015/lib/components/columns/tree.directive.js +6 -8
- package/esm2015/lib/components/datatable.component.js +85 -214
- package/esm2015/lib/components/footer/footer-template.directive.js +6 -8
- package/esm2015/lib/components/footer/footer.component.js +28 -54
- package/esm2015/lib/components/footer/footer.directive.js +16 -34
- package/esm2015/lib/components/footer/pager.component.js +23 -39
- package/esm2015/lib/components/header/header-cell.component.js +45 -80
- package/esm2015/lib/components/header/header.component.js +43 -80
- package/esm2015/lib/components/row-detail/row-detail-template.directive.js +8 -10
- package/esm2015/lib/components/row-detail/row-detail.directive.js +11 -19
- package/esm2015/lib/directives/draggable.directive.js +16 -30
- package/esm2015/lib/directives/long-press.directive.js +16 -34
- package/esm2015/lib/directives/orderable.directive.js +12 -19
- package/esm2015/lib/directives/resizeable.directive.js +19 -29
- package/esm2015/lib/directives/visibility.directive.js +11 -15
- package/esm2015/lib/events.js +1 -1
- package/esm2015/lib/ngx-datatable.module.js +54 -57
- package/esm2015/lib/services/column-changes.service.js +6 -8
- package/esm2015/lib/services/dimensions-helper.service.js +6 -8
- package/esm2015/lib/services/scrollbar-helper.service.js +6 -9
- package/esm2015/lib/types/click.type.js +1 -1
- package/esm2015/lib/types/column-mode.type.js +1 -1
- package/esm2015/lib/types/contextmenu.type.js +1 -1
- package/esm2015/lib/types/selection.type.js +1 -1
- package/esm2015/lib/types/sort-direction.type.js +1 -1
- package/esm2015/lib/types/sort-prop-dir.type.js +2 -1
- package/esm2015/lib/types/sort.type.js +1 -1
- package/esm2015/lib/types/table-column.type.js +2 -1
- package/esm2015/lib/utils/camel-case.js +1 -1
- package/esm2015/lib/utils/column-helper.js +1 -1
- package/esm2015/lib/utils/column-prop-getters.js +1 -1
- package/esm2015/lib/utils/column.js +1 -1
- package/esm2015/lib/utils/elm-from-point.js +1 -1
- package/esm2015/lib/utils/id.js +1 -1
- package/esm2015/lib/utils/keys.js +1 -1
- package/esm2015/lib/utils/math.js +1 -1
- package/esm2015/lib/utils/prefixes.js +1 -1
- package/esm2015/lib/utils/row-height-cache.js +1 -1
- package/esm2015/lib/utils/selection.js +1 -1
- package/esm2015/lib/utils/sort.js +1 -1
- package/esm2015/lib/utils/throttle.js +1 -1
- package/esm2015/lib/utils/translate.js +1 -1
- package/esm2015/lib/utils/tree.js +1 -1
- package/esm2015/public-api.js +3 -1
- package/esm2015/swimlane-ngx-datatable.js +1 -1
- package/fesm2015/swimlane-ngx-datatable.js +682 -1248
- package/fesm2015/swimlane-ngx-datatable.js.map +1 -1
- package/lib/components/header/header-cell.component.d.ts +2 -0
- package/lib/components/header/header.component.d.ts +1 -0
- package/lib/utils/throttle.d.ts +1 -1
- package/package.json +10 -10
- package/swimlane-ngx-datatable.metadata.json +1 -1
- package/bundles/swimlane-ngx-datatable.umd.min.js +0 -16
- package/bundles/swimlane-ngx-datatable.umd.min.js.map +0 -1
- package/esm5/lib/components/body/body-cell.component.js +0 -438
- package/esm5/lib/components/body/body-group-header-template.directive.js +0 -18
- package/esm5/lib/components/body/body-group-header.directive.js +0 -67
- package/esm5/lib/components/body/body-row-wrapper.component.js +0 -114
- package/esm5/lib/components/body/body-row.component.js +0 -260
- package/esm5/lib/components/body/body.component.js +0 -775
- package/esm5/lib/components/body/progress-bar.component.js +0 -16
- package/esm5/lib/components/body/scroller.component.js +0 -97
- package/esm5/lib/components/body/selection.component.js +0 -159
- package/esm5/lib/components/body/summary/summary-row.component.js +0 -81
- package/esm5/lib/components/columns/column-cell.directive.js +0 -16
- package/esm5/lib/components/columns/column-header.directive.js +0 -16
- package/esm5/lib/components/columns/column.directive.js +0 -134
- package/esm5/lib/components/columns/tree.directive.js +0 -16
- package/esm5/lib/components/datatable.component.js +0 -1147
- package/esm5/lib/components/footer/footer-template.directive.js +0 -16
- package/esm5/lib/components/footer/footer.component.js +0 -74
- package/esm5/lib/components/footer/footer.directive.js +0 -47
- package/esm5/lib/components/footer/pager.component.js +0 -135
- package/esm5/lib/components/header/header-cell.component.js +0 -253
- package/esm5/lib/components/header/header.component.js +0 -317
- package/esm5/lib/components/row-detail/row-detail-template.directive.js +0 -18
- package/esm5/lib/components/row-detail/row-detail.directive.js +0 -68
- package/esm5/lib/directives/draggable.directive.js +0 -118
- package/esm5/lib/directives/long-press.directive.js +0 -132
- package/esm5/lib/directives/orderable.directive.js +0 -161
- package/esm5/lib/directives/resizeable.directive.js +0 -101
- package/esm5/lib/directives/visibility.directive.js +0 -69
- package/esm5/lib/events.js +0 -7
- package/esm5/lib/ngx-datatable.module.js +0 -103
- package/esm5/lib/services/column-changes.service.js +0 -28
- package/esm5/lib/services/dimensions-helper.service.js +0 -19
- package/esm5/lib/services/scrollbar-helper.service.js +0 -38
- package/esm5/lib/types/click.type.js +0 -6
- package/esm5/lib/types/column-mode.type.js +0 -7
- package/esm5/lib/types/contextmenu.type.js +0 -6
- package/esm5/lib/types/selection.type.js +0 -9
- package/esm5/lib/types/sort-direction.type.js +0 -6
- package/esm5/lib/types/sort-prop-dir.type.js +0 -1
- package/esm5/lib/types/sort.type.js +0 -6
- package/esm5/lib/types/table-column.type.js +0 -1
- package/esm5/lib/utils/camel-case.js +0 -28
- package/esm5/lib/utils/column-helper.js +0 -128
- package/esm5/lib/utils/column-prop-getters.js +0 -96
- package/esm5/lib/utils/column.js +0 -103
- package/esm5/lib/utils/elm-from-point.js +0 -38
- package/esm5/lib/utils/id.js +0 -8
- package/esm5/lib/utils/keys.js +0 -10
- package/esm5/lib/utils/math.js +0 -224
- package/esm5/lib/utils/prefixes.js +0 -40
- package/esm5/lib/utils/row-height-cache.js +0 -137
- package/esm5/lib/utils/selection.js +0 -40
- package/esm5/lib/utils/sort.js +0 -139
- package/esm5/lib/utils/throttle.js +0 -60
- package/esm5/lib/utils/translate.js +0 -25
- package/esm5/lib/utils/tree.js +0 -106
- package/esm5/public-api.js +0 -62
- package/esm5/swimlane-ngx-datatable.js +0 -5
- package/fesm5/swimlane-ngx-datatable.js +0 -6088
- package/fesm5/swimlane-ngx-datatable.js.map +0 -1
- package/lib/test/jasmine-matchers.d.ts +0 -12
package/esm5/lib/utils/column.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { __values } from "tslib";
|
|
2
|
-
/**
|
|
3
|
-
* Returns the columns by pin.
|
|
4
|
-
*/
|
|
5
|
-
export function columnsByPin(cols) {
|
|
6
|
-
var e_1, _a;
|
|
7
|
-
var ret = {
|
|
8
|
-
left: [],
|
|
9
|
-
center: [],
|
|
10
|
-
right: []
|
|
11
|
-
};
|
|
12
|
-
if (cols) {
|
|
13
|
-
try {
|
|
14
|
-
for (var cols_1 = __values(cols), cols_1_1 = cols_1.next(); !cols_1_1.done; cols_1_1 = cols_1.next()) {
|
|
15
|
-
var col = cols_1_1.value;
|
|
16
|
-
if (col.frozenLeft) {
|
|
17
|
-
ret.left.push(col);
|
|
18
|
-
}
|
|
19
|
-
else if (col.frozenRight) {
|
|
20
|
-
ret.right.push(col);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
ret.center.push(col);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
28
|
-
finally {
|
|
29
|
-
try {
|
|
30
|
-
if (cols_1_1 && !cols_1_1.done && (_a = cols_1.return)) _a.call(cols_1);
|
|
31
|
-
}
|
|
32
|
-
finally { if (e_1) throw e_1.error; }
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return ret;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Returns the widths of all group sets of a column
|
|
39
|
-
*/
|
|
40
|
-
export function columnGroupWidths(groups, all) {
|
|
41
|
-
return {
|
|
42
|
-
left: columnTotalWidth(groups.left),
|
|
43
|
-
center: columnTotalWidth(groups.center),
|
|
44
|
-
right: columnTotalWidth(groups.right),
|
|
45
|
-
total: Math.floor(columnTotalWidth(all))
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Calculates the total width of all columns and their groups
|
|
50
|
-
*/
|
|
51
|
-
export function columnTotalWidth(columns, prop) {
|
|
52
|
-
var e_2, _a;
|
|
53
|
-
var totalWidth = 0;
|
|
54
|
-
if (columns) {
|
|
55
|
-
try {
|
|
56
|
-
for (var columns_1 = __values(columns), columns_1_1 = columns_1.next(); !columns_1_1.done; columns_1_1 = columns_1.next()) {
|
|
57
|
-
var c = columns_1_1.value;
|
|
58
|
-
var has = prop && c[prop];
|
|
59
|
-
var width = has ? c[prop] : c.width;
|
|
60
|
-
totalWidth = totalWidth + parseFloat(width);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
64
|
-
finally {
|
|
65
|
-
try {
|
|
66
|
-
if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
|
|
67
|
-
}
|
|
68
|
-
finally { if (e_2) throw e_2.error; }
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return totalWidth;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Calculates the total width of all columns and their groups
|
|
75
|
-
*/
|
|
76
|
-
export function columnsTotalWidth(columns, prop) {
|
|
77
|
-
var e_3, _a;
|
|
78
|
-
var totalWidth = 0;
|
|
79
|
-
try {
|
|
80
|
-
for (var columns_2 = __values(columns), columns_2_1 = columns_2.next(); !columns_2_1.done; columns_2_1 = columns_2.next()) {
|
|
81
|
-
var column = columns_2_1.value;
|
|
82
|
-
var has = prop && column[prop];
|
|
83
|
-
totalWidth = totalWidth + (has ? column[prop] : column.width);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
87
|
-
finally {
|
|
88
|
-
try {
|
|
89
|
-
if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
|
|
90
|
-
}
|
|
91
|
-
finally { if (e_3) throw e_3.error; }
|
|
92
|
-
}
|
|
93
|
-
return totalWidth;
|
|
94
|
-
}
|
|
95
|
-
export function columnsByPinArr(val) {
|
|
96
|
-
var colsByPinArr = [];
|
|
97
|
-
var colsByPin = columnsByPin(val);
|
|
98
|
-
colsByPinArr.push({ type: 'left', columns: colsByPin['left'] });
|
|
99
|
-
colsByPinArr.push({ type: 'center', columns: colsByPin['center'] });
|
|
100
|
-
colsByPinArr.push({ type: 'right', columns: colsByPin['right'] });
|
|
101
|
-
return colsByPinArr;
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN3aW1sYW5lL25neC1kYXRhdGFibGUvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBVzs7SUFDdEMsSUFBTSxHQUFHLEdBQTJDO1FBQ2xELElBQUksRUFBRSxFQUFFO1FBQ1IsTUFBTSxFQUFFLEVBQUU7UUFDVixLQUFLLEVBQUUsRUFBRTtLQUNWLENBQUM7SUFFRixJQUFJLElBQUksRUFBRTs7WUFDUixLQUFrQixJQUFBLFNBQUEsU0FBQSxJQUFJLENBQUEsMEJBQUEsNENBQUU7Z0JBQW5CLElBQU0sR0FBRyxpQkFBQTtnQkFDWixJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUU7b0JBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNwQjtxQkFBTSxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUU7b0JBQzFCLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNyQjtxQkFBTTtvQkFDTCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDdEI7YUFDRjs7Ozs7Ozs7O0tBQ0Y7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUFXLEVBQUUsR0FBUTtJQUNyRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDbkMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDdkMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDekMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFjLEVBQUUsSUFBYTs7SUFDNUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLElBQUksT0FBTyxFQUFFOztZQUNYLEtBQWdCLElBQUEsWUFBQSxTQUFBLE9BQU8sQ0FBQSxnQ0FBQSxxREFBRTtnQkFBcEIsSUFBTSxDQUFDLG9CQUFBO2dCQUNWLElBQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLElBQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUN0QyxVQUFVLEdBQUcsVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3Qzs7Ozs7Ozs7O0tBQ0Y7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsT0FBWSxFQUFFLElBQVU7O0lBQ3hELElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQzs7UUFFbkIsS0FBcUIsSUFBQSxZQUFBLFNBQUEsT0FBTyxDQUFBLGdDQUFBLHFEQUFFO1lBQXpCLElBQU0sTUFBTSxvQkFBQTtZQUNmLElBQU0sR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsVUFBVSxHQUFHLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0Q7Ozs7Ozs7OztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQVE7SUFDdEMsSUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLElBQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVwQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVsRSxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXR1cm5zIHRoZSBjb2x1bW5zIGJ5IHBpbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbHVtbnNCeVBpbihjb2xzOiBhbnlbXSkge1xuICBjb25zdCByZXQ6IHsgbGVmdDogYW55OyBjZW50ZXI6IGFueTsgcmlnaHQ6IGFueSB9ID0ge1xuICAgIGxlZnQ6IFtdLFxuICAgIGNlbnRlcjogW10sXG4gICAgcmlnaHQ6IFtdXG4gIH07XG5cbiAgaWYgKGNvbHMpIHtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzKSB7XG4gICAgICBpZiAoY29sLmZyb3plbkxlZnQpIHtcbiAgICAgICAgcmV0LmxlZnQucHVzaChjb2wpO1xuICAgICAgfSBlbHNlIGlmIChjb2wuZnJvemVuUmlnaHQpIHtcbiAgICAgICAgcmV0LnJpZ2h0LnB1c2goY29sKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldC5jZW50ZXIucHVzaChjb2wpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgd2lkdGhzIG9mIGFsbCBncm91cCBzZXRzIG9mIGEgY29sdW1uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2x1bW5Hcm91cFdpZHRocyhncm91cHM6IGFueSwgYWxsOiBhbnkpIHtcbiAgcmV0dXJuIHtcbiAgICBsZWZ0OiBjb2x1bW5Ub3RhbFdpZHRoKGdyb3Vwcy5sZWZ0KSxcbiAgICBjZW50ZXI6IGNvbHVtblRvdGFsV2lkdGgoZ3JvdXBzLmNlbnRlciksXG4gICAgcmlnaHQ6IGNvbHVtblRvdGFsV2lkdGgoZ3JvdXBzLnJpZ2h0KSxcbiAgICB0b3RhbDogTWF0aC5mbG9vcihjb2x1bW5Ub3RhbFdpZHRoKGFsbCkpXG4gIH07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgd2lkdGggb2YgYWxsIGNvbHVtbnMgYW5kIHRoZWlyIGdyb3Vwc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29sdW1uVG90YWxXaWR0aChjb2x1bW5zOiBhbnlbXSwgcHJvcD86IHN0cmluZykge1xuICBsZXQgdG90YWxXaWR0aCA9IDA7XG5cbiAgaWYgKGNvbHVtbnMpIHtcbiAgICBmb3IgKGNvbnN0IGMgb2YgY29sdW1ucykge1xuICAgICAgY29uc3QgaGFzID0gcHJvcCAmJiBjW3Byb3BdO1xuICAgICAgY29uc3Qgd2lkdGggPSBoYXMgPyBjW3Byb3BdIDogYy53aWR0aDtcbiAgICAgIHRvdGFsV2lkdGggPSB0b3RhbFdpZHRoICsgcGFyc2VGbG9hdCh3aWR0aCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRvdGFsV2lkdGg7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgd2lkdGggb2YgYWxsIGNvbHVtbnMgYW5kIHRoZWlyIGdyb3Vwc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29sdW1uc1RvdGFsV2lkdGgoY29sdW1uczogYW55LCBwcm9wPzogYW55KSB7XG4gIGxldCB0b3RhbFdpZHRoID0gMDtcblxuICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgY29uc3QgaGFzID0gcHJvcCAmJiBjb2x1bW5bcHJvcF07XG4gICAgdG90YWxXaWR0aCA9IHRvdGFsV2lkdGggKyAoaGFzID8gY29sdW1uW3Byb3BdIDogY29sdW1uLndpZHRoKTtcbiAgfVxuXG4gIHJldHVybiB0b3RhbFdpZHRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sdW1uc0J5UGluQXJyKHZhbDogYW55KSB7XG4gIGNvbnN0IGNvbHNCeVBpbkFyciA9IFtdO1xuICBjb25zdCBjb2xzQnlQaW4gPSBjb2x1bW5zQnlQaW4odmFsKTtcblxuICBjb2xzQnlQaW5BcnIucHVzaCh7IHR5cGU6ICdsZWZ0JywgY29sdW1uczogY29sc0J5UGluWydsZWZ0J10gfSk7XG4gIGNvbHNCeVBpbkFyci5wdXNoKHsgdHlwZTogJ2NlbnRlcicsIGNvbHVtbnM6IGNvbHNCeVBpblsnY2VudGVyJ10gfSk7XG4gIGNvbHNCeVBpbkFyci5wdXNoKHsgdHlwZTogJ3JpZ2h0JywgY29sdW1uczogY29sc0J5UGluWydyaWdodCddIH0pO1xuXG4gIHJldHVybiBjb2xzQnlQaW5BcnI7XG59XG4iXX0=
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
if (typeof document !== 'undefined' && !document.elementsFromPoint) {
|
|
2
|
-
document.elementsFromPoint = elementsFromPoint;
|
|
3
|
-
}
|
|
4
|
-
/*tslint:disable*/
|
|
5
|
-
/**
|
|
6
|
-
* Polyfill for `elementsFromPoint`
|
|
7
|
-
*
|
|
8
|
-
* https://developer.mozilla.org/en-US/docs/Web/API/Document/elementsFromPoint
|
|
9
|
-
* https://gist.github.com/iddan/54d5d9e58311b0495a91bf06de661380
|
|
10
|
-
* https://gist.github.com/oslego/7265412
|
|
11
|
-
*/
|
|
12
|
-
export function elementsFromPoint(x, y) {
|
|
13
|
-
var elements = [];
|
|
14
|
-
var previousPointerEvents = [];
|
|
15
|
-
var current; // TODO: window.getComputedStyle should be used with inferred type (Element)
|
|
16
|
-
var i;
|
|
17
|
-
var d;
|
|
18
|
-
//if (document === undefined) return elements;
|
|
19
|
-
// get all elements via elementFromPoint, and remove them from hit-testing in order
|
|
20
|
-
while ((current = document.elementFromPoint(x, y)) && elements.indexOf(current) === -1 && current != null) {
|
|
21
|
-
// push the element and its current style
|
|
22
|
-
elements.push(current);
|
|
23
|
-
previousPointerEvents.push({
|
|
24
|
-
value: current.style.getPropertyValue('pointer-events'),
|
|
25
|
-
priority: current.style.getPropertyPriority('pointer-events')
|
|
26
|
-
});
|
|
27
|
-
// add "pointer-events: none", to get to the underlying element
|
|
28
|
-
current.style.setProperty('pointer-events', 'none', 'important');
|
|
29
|
-
}
|
|
30
|
-
// restore the previous pointer-events values
|
|
31
|
-
for (i = previousPointerEvents.length; (d = previousPointerEvents[--i]);) {
|
|
32
|
-
elements[i].style.setProperty('pointer-events', d.value ? d.value : '', d.priority);
|
|
33
|
-
}
|
|
34
|
-
// return our results
|
|
35
|
-
return elements;
|
|
36
|
-
}
|
|
37
|
-
/*tslint:enable*/
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxtLWZyb20tcG9pbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3dpbWxhbmUvbmd4LWRhdGF0YWJsZS8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9lbG0tZnJvbS1wb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtJQUNsRSxRQUFRLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7Q0FDaEQ7QUFFRCxrQkFBa0I7QUFDbEI7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLENBQVMsRUFBRSxDQUFTO0lBQ3BELElBQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixJQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztJQUNqQyxJQUFJLE9BQVksQ0FBQyxDQUFDLDRFQUE0RTtJQUM5RixJQUFJLENBQUMsQ0FBQztJQUNOLElBQUksQ0FBQyxDQUFDO0lBRU4sOENBQThDO0lBRTlDLG1GQUFtRjtJQUNuRixPQUFPLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7UUFDekcseUNBQXlDO1FBQ3pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIscUJBQXFCLENBQUMsSUFBSSxDQUFDO1lBQ3pCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1lBQ3ZELFFBQVEsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDO1NBQzlELENBQUMsQ0FBQztRQUVILCtEQUErRDtRQUMvRCxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDbEU7SUFFRCw2Q0FBNkM7SUFDN0MsS0FBSyxDQUFDLEdBQUcscUJBQXFCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBSTtRQUN6RSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3JGO0lBRUQscUJBQXFCO0lBQ3JCLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFDRCxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiAhZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQpIHtcbiAgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQgPSBlbGVtZW50c0Zyb21Qb2ludDtcbn1cblxuLyp0c2xpbnQ6ZGlzYWJsZSovXG4vKipcbiAqIFBvbHlmaWxsIGZvciBgZWxlbWVudHNGcm9tUG9pbnRgXG4gKlxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L2VsZW1lbnRzRnJvbVBvaW50XG4gKiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9pZGRhbi81NGQ1ZDllNTgzMTFiMDQ5NWE5MWJmMDZkZTY2MTM4MFxuICogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vb3NsZWdvLzcyNjU0MTJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVsZW1lbnRzRnJvbVBvaW50KHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gW107XG4gIGNvbnN0IHByZXZpb3VzUG9pbnRlckV2ZW50cyA9IFtdO1xuICBsZXQgY3VycmVudDogYW55OyAvLyBUT0RPOiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSBzaG91bGQgYmUgdXNlZCB3aXRoIGluZmVycmVkIHR5cGUgKEVsZW1lbnQpXG4gIGxldCBpO1xuICBsZXQgZDtcblxuICAvL2lmIChkb2N1bWVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZWxlbWVudHM7XG5cbiAgLy8gZ2V0IGFsbCBlbGVtZW50cyB2aWEgZWxlbWVudEZyb21Qb2ludCwgYW5kIHJlbW92ZSB0aGVtIGZyb20gaGl0LXRlc3RpbmcgaW4gb3JkZXJcbiAgd2hpbGUgKChjdXJyZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KSkgJiYgZWxlbWVudHMuaW5kZXhPZihjdXJyZW50KSA9PT0gLTEgJiYgY3VycmVudCAhPSBudWxsKSB7XG4gICAgLy8gcHVzaCB0aGUgZWxlbWVudCBhbmQgaXRzIGN1cnJlbnQgc3R5bGVcbiAgICBlbGVtZW50cy5wdXNoKGN1cnJlbnQpO1xuICAgIHByZXZpb3VzUG9pbnRlckV2ZW50cy5wdXNoKHtcbiAgICAgIHZhbHVlOiBjdXJyZW50LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BvaW50ZXItZXZlbnRzJyksXG4gICAgICBwcmlvcml0eTogY3VycmVudC5zdHlsZS5nZXRQcm9wZXJ0eVByaW9yaXR5KCdwb2ludGVyLWV2ZW50cycpXG4gICAgfSk7XG5cbiAgICAvLyBhZGQgXCJwb2ludGVyLWV2ZW50czogbm9uZVwiLCB0byBnZXQgdG8gdGhlIHVuZGVybHlpbmcgZWxlbWVudFxuICAgIGN1cnJlbnQuc3R5bGUuc2V0UHJvcGVydHkoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnLCAnaW1wb3J0YW50Jyk7XG4gIH1cblxuICAvLyByZXN0b3JlIHRoZSBwcmV2aW91cyBwb2ludGVyLWV2ZW50cyB2YWx1ZXNcbiAgZm9yIChpID0gcHJldmlvdXNQb2ludGVyRXZlbnRzLmxlbmd0aDsgKGQgPSBwcmV2aW91c1BvaW50ZXJFdmVudHNbLS1pXSk7ICkge1xuICAgIGVsZW1lbnRzW2ldLnN0eWxlLnNldFByb3BlcnR5KCdwb2ludGVyLWV2ZW50cycsIGQudmFsdWUgPyBkLnZhbHVlIDogJycsIGQucHJpb3JpdHkpO1xuICB9XG5cbiAgLy8gcmV0dXJuIG91ciByZXN1bHRzXG4gIHJldHVybiBlbGVtZW50cztcbn1cbi8qdHNsaW50OmVuYWJsZSovXG4iXX0=
|
package/esm5/lib/utils/id.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Creates a unique object id.
|
|
3
|
-
* http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js
|
|
4
|
-
*/
|
|
5
|
-
export function id() {
|
|
6
|
-
return ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3dpbWxhbmUvbmd4LWRhdGF0YWJsZS8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9pZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsRUFBRTtJQUNoQixPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVzIGEgdW5pcXVlIG9iamVjdCBpZC5cbiAqIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNjI0ODY2Ni9ob3ctdG8tZ2VuZXJhdGUtc2hvcnQtdWlkLWxpa2UtYXg0ajl6LWluLWpzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZCgpIHtcbiAgcmV0dXJuICgnMDAwMCcgKyAoKE1hdGgucmFuZG9tKCkgKiBNYXRoLnBvdygzNiwgNCkpIDw8IDApLnRvU3RyaW5nKDM2KSkuc2xpY2UoLTQpO1xufVxuIl19
|
package/esm5/lib/utils/keys.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export var Keys;
|
|
2
|
-
(function (Keys) {
|
|
3
|
-
Keys[Keys["up"] = 38] = "up";
|
|
4
|
-
Keys[Keys["down"] = 40] = "down";
|
|
5
|
-
Keys[Keys["return"] = 13] = "return";
|
|
6
|
-
Keys[Keys["escape"] = 27] = "escape";
|
|
7
|
-
Keys[Keys["left"] = 37] = "left";
|
|
8
|
-
Keys[Keys["right"] = 39] = "right";
|
|
9
|
-
})(Keys || (Keys = {}));
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL2tleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksSUFPWDtBQVBELFdBQVksSUFBSTtJQUNkLDRCQUFPLENBQUE7SUFDUCxnQ0FBUyxDQUFBO0lBQ1Qsb0NBQVcsQ0FBQTtJQUNYLG9DQUFXLENBQUE7SUFDWCxnQ0FBUyxDQUFBO0lBQ1Qsa0NBQVUsQ0FBQTtBQUNaLENBQUMsRUFQVyxJQUFJLEtBQUosSUFBSSxRQU9mIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gS2V5cyB7XG4gIHVwID0gMzgsXG4gIGRvd24gPSA0MCxcbiAgcmV0dXJuID0gMTMsXG4gIGVzY2FwZSA9IDI3LFxuICBsZWZ0ID0gMzcsXG4gIHJpZ2h0ID0gMzlcbn1cbiJdfQ==
|
package/esm5/lib/utils/math.js
DELETED
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
import { __values } from "tslib";
|
|
2
|
-
import { columnsByPin, columnsTotalWidth } from './column';
|
|
3
|
-
/**
|
|
4
|
-
* Calculates the Total Flex Grow
|
|
5
|
-
*/
|
|
6
|
-
export function getTotalFlexGrow(columns) {
|
|
7
|
-
var e_1, _a;
|
|
8
|
-
var totalFlexGrow = 0;
|
|
9
|
-
try {
|
|
10
|
-
for (var columns_1 = __values(columns), columns_1_1 = columns_1.next(); !columns_1_1.done; columns_1_1 = columns_1.next()) {
|
|
11
|
-
var c = columns_1_1.value;
|
|
12
|
-
totalFlexGrow += c.flexGrow || 0;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
16
|
-
finally {
|
|
17
|
-
try {
|
|
18
|
-
if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
|
|
19
|
-
}
|
|
20
|
-
finally { if (e_1) throw e_1.error; }
|
|
21
|
-
}
|
|
22
|
-
return totalFlexGrow;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Adjusts the column widths.
|
|
26
|
-
* Inspired by: https://github.com/facebook/fixed-data-table/blob/master/src/FixedDataTableWidthHelper.js
|
|
27
|
-
*/
|
|
28
|
-
export function adjustColumnWidths(allColumns, expectedWidth) {
|
|
29
|
-
var columnsWidth = columnsTotalWidth(allColumns);
|
|
30
|
-
var totalFlexGrow = getTotalFlexGrow(allColumns);
|
|
31
|
-
var colsByGroup = columnsByPin(allColumns);
|
|
32
|
-
if (columnsWidth !== expectedWidth) {
|
|
33
|
-
scaleColumns(colsByGroup, expectedWidth, totalFlexGrow);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Resizes columns based on the flexGrow property, while respecting manually set widths
|
|
38
|
-
*/
|
|
39
|
-
function scaleColumns(colsByGroup, maxWidth, totalFlexGrow) {
|
|
40
|
-
var e_2, _a, e_3, _b;
|
|
41
|
-
// calculate total width and flexgrow points for coulumns that can be resized
|
|
42
|
-
for (var attr in colsByGroup) {
|
|
43
|
-
try {
|
|
44
|
-
for (var _c = (e_2 = void 0, __values(colsByGroup[attr])), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
45
|
-
var column = _d.value;
|
|
46
|
-
if (!column.canAutoResize) {
|
|
47
|
-
maxWidth -= column.width;
|
|
48
|
-
totalFlexGrow -= column.flexGrow ? column.flexGrow : 0;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
column.width = 0;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
56
|
-
finally {
|
|
57
|
-
try {
|
|
58
|
-
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
59
|
-
}
|
|
60
|
-
finally { if (e_2) throw e_2.error; }
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
var hasMinWidth = {};
|
|
64
|
-
var remainingWidth = maxWidth;
|
|
65
|
-
// resize columns until no width is left to be distributed
|
|
66
|
-
do {
|
|
67
|
-
var widthPerFlexPoint = remainingWidth / totalFlexGrow;
|
|
68
|
-
remainingWidth = 0;
|
|
69
|
-
for (var attr in colsByGroup) {
|
|
70
|
-
try {
|
|
71
|
-
for (var _e = (e_3 = void 0, __values(colsByGroup[attr])), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
72
|
-
var column = _f.value;
|
|
73
|
-
// if the column can be resize and it hasn't reached its minimum width yet
|
|
74
|
-
if (column.canAutoResize && !hasMinWidth[column.prop]) {
|
|
75
|
-
var newWidth = column.width + column.flexGrow * widthPerFlexPoint;
|
|
76
|
-
if (column.minWidth !== undefined && newWidth < column.minWidth) {
|
|
77
|
-
remainingWidth += newWidth - column.minWidth;
|
|
78
|
-
column.width = column.minWidth;
|
|
79
|
-
hasMinWidth[column.prop] = true;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
column.width = newWidth;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
88
|
-
finally {
|
|
89
|
-
try {
|
|
90
|
-
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
|
|
91
|
-
}
|
|
92
|
-
finally { if (e_3) throw e_3.error; }
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
} while (remainingWidth !== 0);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Forces the width of the columns to
|
|
99
|
-
* distribute equally but overflowing when necessary
|
|
100
|
-
*
|
|
101
|
-
* Rules:
|
|
102
|
-
*
|
|
103
|
-
* - If combined withs are less than the total width of the grid,
|
|
104
|
-
* proportion the widths given the min / max / normal widths to fill the width.
|
|
105
|
-
*
|
|
106
|
-
* - If the combined widths, exceed the total width of the grid,
|
|
107
|
-
* use the standard widths.
|
|
108
|
-
*
|
|
109
|
-
* - If a column is resized, it should always use that width
|
|
110
|
-
*
|
|
111
|
-
* - The proportional widths should never fall below min size if specified.
|
|
112
|
-
*
|
|
113
|
-
* - If the grid starts off small but then becomes greater than the size ( + / - )
|
|
114
|
-
* the width should use the original width; not the newly proportioned widths.
|
|
115
|
-
*/
|
|
116
|
-
export function forceFillColumnWidths(allColumns, expectedWidth, startIdx, allowBleed, defaultColWidth) {
|
|
117
|
-
var e_4, _a, e_5, _b;
|
|
118
|
-
if (defaultColWidth === void 0) { defaultColWidth = 300; }
|
|
119
|
-
var columnsToResize = allColumns.slice(startIdx + 1, allColumns.length).filter(function (c) {
|
|
120
|
-
return c.canAutoResize !== false;
|
|
121
|
-
});
|
|
122
|
-
try {
|
|
123
|
-
for (var columnsToResize_1 = __values(columnsToResize), columnsToResize_1_1 = columnsToResize_1.next(); !columnsToResize_1_1.done; columnsToResize_1_1 = columnsToResize_1.next()) {
|
|
124
|
-
var column = columnsToResize_1_1.value;
|
|
125
|
-
if (!column.$$oldWidth) {
|
|
126
|
-
column.$$oldWidth = column.width;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
131
|
-
finally {
|
|
132
|
-
try {
|
|
133
|
-
if (columnsToResize_1_1 && !columnsToResize_1_1.done && (_a = columnsToResize_1.return)) _a.call(columnsToResize_1);
|
|
134
|
-
}
|
|
135
|
-
finally { if (e_4) throw e_4.error; }
|
|
136
|
-
}
|
|
137
|
-
var additionWidthPerColumn = 0;
|
|
138
|
-
var exceedsWindow = false;
|
|
139
|
-
var contentWidth = getContentWidth(allColumns, defaultColWidth);
|
|
140
|
-
var remainingWidth = expectedWidth - contentWidth;
|
|
141
|
-
var columnsProcessed = [];
|
|
142
|
-
var remainingWidthLimit = 1; // when to stop
|
|
143
|
-
// This loop takes care of the
|
|
144
|
-
do {
|
|
145
|
-
additionWidthPerColumn = remainingWidth / columnsToResize.length;
|
|
146
|
-
exceedsWindow = contentWidth >= expectedWidth;
|
|
147
|
-
try {
|
|
148
|
-
for (var columnsToResize_2 = (e_5 = void 0, __values(columnsToResize)), columnsToResize_2_1 = columnsToResize_2.next(); !columnsToResize_2_1.done; columnsToResize_2_1 = columnsToResize_2.next()) {
|
|
149
|
-
var column = columnsToResize_2_1.value;
|
|
150
|
-
if (exceedsWindow && allowBleed) {
|
|
151
|
-
column.width = column.$$oldWidth || column.width || defaultColWidth;
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
var newSize = (column.width || defaultColWidth) + additionWidthPerColumn;
|
|
155
|
-
if (column.minWidth && newSize < column.minWidth) {
|
|
156
|
-
column.width = column.minWidth;
|
|
157
|
-
columnsProcessed.push(column);
|
|
158
|
-
}
|
|
159
|
-
else if (column.maxWidth && newSize > column.maxWidth) {
|
|
160
|
-
column.width = column.maxWidth;
|
|
161
|
-
columnsProcessed.push(column);
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
column.width = newSize;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
column.width = Math.max(0, column.width);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
171
|
-
finally {
|
|
172
|
-
try {
|
|
173
|
-
if (columnsToResize_2_1 && !columnsToResize_2_1.done && (_b = columnsToResize_2.return)) _b.call(columnsToResize_2);
|
|
174
|
-
}
|
|
175
|
-
finally { if (e_5) throw e_5.error; }
|
|
176
|
-
}
|
|
177
|
-
contentWidth = getContentWidth(allColumns);
|
|
178
|
-
remainingWidth = expectedWidth - contentWidth;
|
|
179
|
-
removeProcessedColumns(columnsToResize, columnsProcessed);
|
|
180
|
-
} while (remainingWidth > remainingWidthLimit && columnsToResize.length !== 0);
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Remove the processed columns from the current active columns.
|
|
184
|
-
*/
|
|
185
|
-
function removeProcessedColumns(columnsToResize, columnsProcessed) {
|
|
186
|
-
var e_6, _a;
|
|
187
|
-
try {
|
|
188
|
-
for (var columnsProcessed_1 = __values(columnsProcessed), columnsProcessed_1_1 = columnsProcessed_1.next(); !columnsProcessed_1_1.done; columnsProcessed_1_1 = columnsProcessed_1.next()) {
|
|
189
|
-
var column = columnsProcessed_1_1.value;
|
|
190
|
-
var index = columnsToResize.indexOf(column);
|
|
191
|
-
columnsToResize.splice(index, 1);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
195
|
-
finally {
|
|
196
|
-
try {
|
|
197
|
-
if (columnsProcessed_1_1 && !columnsProcessed_1_1.done && (_a = columnsProcessed_1.return)) _a.call(columnsProcessed_1);
|
|
198
|
-
}
|
|
199
|
-
finally { if (e_6) throw e_6.error; }
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Gets the width of the columns
|
|
204
|
-
*/
|
|
205
|
-
function getContentWidth(allColumns, defaultColWidth) {
|
|
206
|
-
var e_7, _a;
|
|
207
|
-
if (defaultColWidth === void 0) { defaultColWidth = 300; }
|
|
208
|
-
var contentWidth = 0;
|
|
209
|
-
try {
|
|
210
|
-
for (var allColumns_1 = __values(allColumns), allColumns_1_1 = allColumns_1.next(); !allColumns_1_1.done; allColumns_1_1 = allColumns_1.next()) {
|
|
211
|
-
var column = allColumns_1_1.value;
|
|
212
|
-
contentWidth += column.width || defaultColWidth;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
216
|
-
finally {
|
|
217
|
-
try {
|
|
218
|
-
if (allColumns_1_1 && !allColumns_1_1.done && (_a = allColumns_1.return)) _a.call(allColumns_1);
|
|
219
|
-
}
|
|
220
|
-
finally { if (e_7) throw e_7.error; }
|
|
221
|
-
}
|
|
222
|
-
return contentWidth;
|
|
223
|
-
}
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFM0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBYzs7SUFDN0MsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDOztRQUV0QixLQUFnQixJQUFBLFlBQUEsU0FBQSxPQUFPLENBQUEsZ0NBQUEscURBQUU7WUFBcEIsSUFBTSxDQUFDLG9CQUFBO1lBQ1YsYUFBYSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1NBQ2xDOzs7Ozs7Ozs7SUFFRCxPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFVBQWUsRUFBRSxhQUFrQjtJQUNwRSxJQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxJQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxJQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFN0MsSUFBSSxZQUFZLEtBQUssYUFBYSxFQUFFO1FBQ2xDLFlBQVksQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxZQUFZLENBQUMsV0FBZ0IsRUFBRSxRQUFhLEVBQUUsYUFBa0I7O0lBQ3ZFLDZFQUE2RTtJQUM3RSxLQUFLLElBQU0sSUFBSSxJQUFJLFdBQVcsRUFBRTs7WUFDOUIsS0FBcUIsSUFBQSxvQkFBQSxTQUFBLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLGdCQUFBLDRCQUFFO2dCQUFu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QUFnQixDQUFDLENBQUM7S0FDM0QsUUFBUSxjQUFjLEdBQUcsbUJBQW1CLElBQUksZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDakYsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxlQUFzQixFQUFFLGdCQUF1Qjs7O1FBQzdFLEtBQXFCLElBQUEscUJBQUEsU0FBQSxnQkFBZ0IsQ0FBQSxrREFBQSxnRkFBRTtZQUFsQyxJQUFNLE1BQU0sNkJBQUE7WUFDZixJQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2xDOzs7Ozs7Ozs7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxVQUFlLEVBQUUsZUFBNkI7O0lBQTdCLGdDQUFBLEVBQUEscUJBQTZCO0lBQ3JFLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQzs7UUFFckIsS0FBcUIsSUFBQSxlQUFBLFNBQUEsVUFBVSxDQUFBLHNDQUFBLDhEQUFFO1lBQTVCLElBQU0sTUFBTSx1QkFBQTtZQUNmLFlBQVksSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLGVBQWUsQ0FBQztTQUNqRDs7Ozs7Ozs7O0lBRUQsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbHVtbnNCeVBpbiwgY29sdW1uc1RvdGFsV2lkdGggfSBmcm9tICcuL2NvbHVtbic7XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgVG90YWwgRmxleCBHcm93XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3RhbEZsZXhHcm93KGNvbHVtbnM6IGFueVtdKSB7XG4gIGxldCB0b3RhbEZsZXhHcm93ID0gMDtcblxuICBmb3IgKGNvbnN0IGMgb2YgY29sdW1ucykge1xuICAgIHRvdGFsRmxleEdyb3cgKz0gYy5mbGV4R3JvdyB8fCAwO1xuICB9XG5cbiAgcmV0dXJuIHRvdGFsRmxleEdyb3c7XG59XG5cbi8qKlxuICogQWRqdXN0cyB0aGUgY29sdW1uIHdpZHRocy5cbiAqIEluc3BpcmVkIGJ5OiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZml4ZWQtZGF0YS10YWJsZS9ibG9iL21hc3Rlci9zcmMvRml4ZWREYXRhVGFibGVXaWR0aEhlbHBlci5qc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0Q29sdW1uV2lkdGhzKGFsbENvbHVtbnM6IGFueSwgZXhwZWN0ZWRXaWR0aDogYW55KSB7XG4gIGNvbnN0IGNvbHVtbnNXaWR0aCA9IGNvbHVtbnNUb3RhbFdpZHRoKGFsbENvbHVtbnMpO1xuICBjb25zdCB0b3RhbEZsZXhHcm93ID0gZ2V0VG90YWxGbGV4R3JvdyhhbGxDb2x1bW5zKTtcbiAgY29uc3QgY29sc0J5R3JvdXAgPSBjb2x1bW5zQnlQaW4oYWxsQ29sdW1ucyk7XG5cbiAgaWYgKGNvbHVtbnNXaWR0aCAhPT0gZXhwZWN0ZWRXaWR0aCkge1xuICAgIHNjYWxlQ29sdW1ucyhjb2xzQnlHcm91cCwgZXhwZWN0ZWRXaWR0aCwgdG90YWxGbGV4R3Jvdyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNpemVzIGNvbHVtbnMgYmFzZWQgb24gdGhlIGZsZXhHcm93IHByb3BlcnR5LCB3aGlsZSByZXNwZWN0aW5nIG1hbnVhbGx5IHNldCB3aWR0aHNcbiAqL1xuZnVuY3Rpb24gc2NhbGVDb2x1bW5zKGNvbHNCeUdyb3VwOiBhbnksIG1heFdpZHRoOiBhbnksIHRvdGFsRmxleEdyb3c6IGFueSkge1xuICAvLyBjYWxjdWxhdGUgdG90YWwgd2lkdGggYW5kIGZsZXhncm93IHBvaW50cyBmb3IgY291bHVtbnMgdGhhdCBjYW4gYmUgcmVzaXplZFxuICBmb3IgKGNvbnN0IGF0dHIgaW4gY29sc0J5R3JvdXApIHtcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2xzQnlHcm91cFthdHRyXSkge1xuICAgICAgaWYgKCFjb2x1bW4uY2FuQXV0b1Jlc2l6ZSkge1xuICAgICAgICBtYXhXaWR0aCAtPSBjb2x1bW4ud2lkdGg7XG4gICAgICAgIHRvdGFsRmxleEdyb3cgLT0gY29sdW1uLmZsZXhHcm93ID8gY29sdW1uLmZsZXhHcm93IDogMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbHVtbi53aWR0aCA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFzTWluV2lkdGggPSB7fTtcbiAgbGV0IHJlbWFpbmluZ1dpZHRoID0gbWF4V2lkdGg7XG5cbiAgLy8gcmVzaXplIGNvbHVtbnMgdW50aWwgbm8gd2lkdGggaXMgbGVmdCB0byBiZSBkaXN0cmlidXRlZFxuICBkbyB7XG4gICAgY29uc3Qgd2lkdGhQZXJGbGV4UG9pbnQgPSByZW1haW5pbmdXaWR0aCAvIHRvdGFsRmxleEdyb3c7XG4gICAgcmVtYWluaW5nV2lkdGggPSAwO1xuXG4gICAgZm9yIChjb25zdCBhdHRyIGluIGNvbHNCeUdyb3VwKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2xzQnlHcm91cFthdHRyXSkge1xuICAgICAgICAvLyBpZiB0aGUgY29sdW1uIGNhbiBiZSByZXNpemUgYW5kIGl0IGhhc24ndCByZWFjaGVkIGl0cyBtaW5pbXVtIHdpZHRoIHlldFxuICAgICAgICBpZiAoY29sdW1uLmNhbkF1dG9SZXNpemUgJiYgIWhhc01pbldpZHRoW2NvbHVtbi5wcm9wXSkge1xuICAgICAgICAgIGNvbnN0IG5ld1dpZHRoID0gY29sdW1uLndpZHRoICsgY29sdW1uLmZsZXhHcm93ICogd2lkdGhQZXJGbGV4UG9pbnQ7XG4gICAgICAgICAgaWYgKGNvbHVtbi5taW5XaWR0aCAhPT0gdW5kZWZpbmVkICYmIG5ld1dpZHRoIDwgY29sdW1uLm1pbldpZHRoKSB7XG4gICAgICAgICAgICByZW1haW5pbmdXaWR0aCArPSBuZXdXaWR0aCAtIGNvbHVtbi5taW5XaWR0aDtcbiAgICAgICAgICAgIGNvbHVtbi53aWR0aCA9IGNvbHVtbi5taW5XaWR0aDtcbiAgICAgICAgICAgIGhhc01pbldpZHRoW2NvbHVtbi5wcm9wXSA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbHVtbi53aWR0aCA9IG5ld1dpZHRoO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAocmVtYWluaW5nV2lkdGggIT09IDApO1xufVxuXG4vKipcbiAqIEZvcmNlcyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbnMgdG9cbiAqIGRpc3RyaWJ1dGUgZXF1YWxseSBidXQgb3ZlcmZsb3dpbmcgd2hlbiBuZWNlc3NhcnlcbiAqXG4gKiBSdWxlczpcbiAqXG4gKiAgLSBJZiBjb21iaW5lZCB3aXRocyBhcmUgbGVzcyB0aGFuIHRoZSB0b3RhbCB3aWR0aCBvZiB0aGUgZ3JpZCxcbiAqICAgIHByb3BvcnRpb24gdGhlIHdpZHRocyBnaXZlbiB0aGUgbWluIC8gbWF4IC8gbm9ybWFsIHdpZHRocyB0byBmaWxsIHRoZSB3aWR0aC5cbiAqXG4gKiAgLSBJZiB0aGUgY29tYmluZWQgd2lkdGhzLCBleGNlZWQgdGhlIHRvdGFsIHdpZHRoIG9mIHRoZSBncmlkLFxuICogICAgdXNlIHRoZSBzdGFuZGFyZCB3aWR0aHMuXG4gKlxuICogIC0gSWYgYSBjb2x1bW4gaXMgcmVzaXplZCwgaXQgc2hvdWxkIGFsd2F5cyB1c2UgdGhhdCB3aWR0aFxuICpcbiAqICAtIFRoZSBwcm9wb3J0aW9uYWwgd2lkdGhzIHNob3VsZCBuZXZlciBmYWxsIGJlbG93IG1pbiBzaXplIGlmIHNwZWNpZmllZC5cbiAqXG4gKiAgLSBJZiB0aGUgZ3JpZCBzdGFydHMgb2ZmIHNtYWxsIGJ1dCB0aGVuIGJlY29tZXMgZ3JlYXRlciB0aGFuIHRoZSBzaXplICggKyAvIC0gKVxuICogICAgdGhlIHdpZHRoIHNob3VsZCB1c2UgdGhlIG9yaWdpbmFsIHdpZHRoOyBub3QgdGhlIG5ld2x5IHByb3BvcnRpb25lZCB3aWR0aHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JjZUZpbGxDb2x1bW5XaWR0aHMoXG4gIGFsbENvbHVtbnM6IGFueVtdLFxuICBleHBlY3RlZFdpZHRoOiBudW1iZXIsXG4gIHN0YXJ0SWR4OiBudW1iZXIsXG4gIGFsbG93QmxlZWQ6IGJvb2xlYW4sXG4gIGRlZmF1bHRDb2xXaWR0aDogbnVtYmVyID0gMzAwXG4pIHtcbiAgY29uc3QgY29sdW1uc1RvUmVzaXplID0gYWxsQ29sdW1ucy5zbGljZShzdGFydElkeCArIDEsIGFsbENvbHVtbnMubGVuZ3RoKS5maWx0ZXIoYyA9PiB7XG4gICAgcmV0dXJuIGMuY2FuQXV0b1Jlc2l6ZSAhPT0gZmFsc2U7XG4gIH0pO1xuXG4gIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnNUb1Jlc2l6ZSkge1xuICAgIGlmICghY29sdW1uLiQkb2xkV2lkdGgpIHtcbiAgICAgIGNvbHVtbi4kJG9sZFdpZHRoID0gY29sdW1uLndpZHRoO1xuICAgIH1cbiAgfVxuXG4gIGxldCBhZGRpdGlvbldpZHRoUGVyQ29sdW1uID0gMDtcbiAgbGV0IGV4Y2VlZHNXaW5kb3cgPSBmYWxzZTtcbiAgbGV0IGNvbnRlbnRXaWR0aCA9IGdldENvbnRlbnRXaWR0aChhbGxDb2x1bW5zLCBkZWZhdWx0Q29sV2lkdGgpO1xuICBsZXQgcmVtYWluaW5nV2lkdGggPSBleHBlY3RlZFdpZHRoIC0gY29udGVudFdpZHRoO1xuICBjb25zdCBjb2x1bW5zUHJvY2Vzc2VkOiBhbnlbXSA9IFtdO1xuICBjb25zdCByZW1haW5pbmdXaWR0aExpbWl0ID0gMTsgLy8gd2hlbiB0byBzdG9wXG5cbiAgLy8gVGhpcyBsb29wIHRha2VzIGNhcmUgb2YgdGhlXG4gIGRvIHtcbiAgICBhZGRpdGlvbldpZHRoUGVyQ29sdW1uID0gcmVtYWluaW5nV2lkdGggLyBjb2x1bW5zVG9SZXNpemUubGVuZ3RoO1xuICAgIGV4Y2VlZHNXaW5kb3cgPSBjb250ZW50V2lkdGggPj0gZXhwZWN0ZWRXaWR0aDtcblxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnNUb1Jlc2l6ZSkge1xuICAgICAgaWYgKGV4Y2VlZHNXaW5kb3cgJiYgYWxsb3dCbGVlZCkge1xuICAgICAgICBjb2x1bW4ud2lkdGggPSBjb2x1bW4uJCRvbGRXaWR0aCB8fCBjb2x1bW4ud2lkdGggfHwgZGVmYXVsdENvbFdpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV3U2l6ZSA9IChjb2x1bW4ud2lkdGggfHwgZGVmYXVsdENvbFdpZHRoKSArIGFkZGl0aW9uV2lkdGhQZXJDb2x1bW47XG5cbiAgICAgICAgaWYgKGNvbHVtbi5taW5XaWR0aCAmJiBuZXdTaXplIDwgY29sdW1uLm1pbldpZHRoKSB7XG4gICAgICAgICAgY29sdW1uLndpZHRoID0gY29sdW1uLm1pbldpZHRoO1xuICAgICAgICAgIGNvbHVtbnNQcm9jZXNzZWQucHVzaChjb2x1bW4pO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5tYXhXaWR0aCAmJiBuZXdTaXplID4gY29sdW1uLm1heFdpZHRoKSB7XG4gICAgICAgICAgY29sdW1uLndpZHRoID0gY29sdW1uLm1heFdpZHRoO1xuICAgICAgICAgIGNvbHVtbnNQcm9jZXNzZWQucHVzaChjb2x1bW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbHVtbi53aWR0aCA9IG5ld1NpemU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29sdW1uLndpZHRoID0gTWF0aC5tYXgoMCwgY29sdW1uLndpZHRoKTtcbiAgICB9XG5cbiAgICBjb250ZW50V2lkdGggPSBnZXRDb250ZW50V2lkdGgoYWxsQ29sdW1ucyk7XG4gICAgcmVtYWluaW5nV2lkdGggPSBleHBlY3RlZFdpZHRoIC0gY29udGVudFdpZHRoO1xuICAgIHJlbW92ZVByb2Nlc3NlZENvbHVtbnMoY29sdW1uc1RvUmVzaXplLCBjb2x1bW5zUHJvY2Vzc2VkKTtcbiAgfSB3aGlsZSAocmVtYWluaW5nV2lkdGggPiByZW1haW5pbmdXaWR0aExpbWl0ICYmIGNvbHVtbnNUb1Jlc2l6ZS5sZW5ndGggIT09IDApO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgcHJvY2Vzc2VkIGNvbHVtbnMgZnJvbSB0aGUgY3VycmVudCBhY3RpdmUgY29sdW1ucy5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlUHJvY2Vzc2VkQ29sdW1ucyhjb2x1bW5zVG9SZXNpemU6IGFueVtdLCBjb2x1bW5zUHJvY2Vzc2VkOiBhbnlbXSkge1xuICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zUHJvY2Vzc2VkKSB7XG4gICAgY29uc3QgaW5kZXggPSBjb2x1bW5zVG9SZXNpemUuaW5kZXhPZihjb2x1bW4pO1xuICAgIGNvbHVtbnNUb1Jlc2l6ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbnNcbiAqL1xuZnVuY3Rpb24gZ2V0Q29udGVudFdpZHRoKGFsbENvbHVtbnM6IGFueSwgZGVmYXVsdENvbFdpZHRoOiBudW1iZXIgPSAzMDApOiBudW1iZXIge1xuICBsZXQgY29udGVudFdpZHRoID0gMDtcblxuICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBhbGxDb2x1bW5zKSB7XG4gICAgY29udGVudFdpZHRoICs9IGNvbHVtbi53aWR0aCB8fCBkZWZhdWx0Q29sV2lkdGg7XG4gIH1cblxuICByZXR1cm4gY29udGVudFdpZHRoO1xufVxuIl19
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { camelCase } from './camel-case';
|
|
2
|
-
var cache = {};
|
|
3
|
-
var testStyle = typeof document !== 'undefined' ? document.createElement('div').style : undefined;
|
|
4
|
-
var ɵ0 = function () {
|
|
5
|
-
var styles = typeof window !== 'undefined' ? window.getComputedStyle(document.documentElement, '') : undefined;
|
|
6
|
-
var match = typeof styles !== 'undefined'
|
|
7
|
-
? Array.prototype.slice
|
|
8
|
-
.call(styles)
|
|
9
|
-
.join('')
|
|
10
|
-
.match(/-(moz|webkit|ms)-/)
|
|
11
|
-
: null;
|
|
12
|
-
var pre = match !== null ? match[1] : undefined;
|
|
13
|
-
// tslint:disable-next-line: tsr-detect-non-literal-regexp
|
|
14
|
-
var dom = typeof pre !== 'undefined' ? 'WebKit|Moz|MS|O'.match(new RegExp('(' + pre + ')', 'i'))[1] : undefined;
|
|
15
|
-
return dom
|
|
16
|
-
? {
|
|
17
|
-
dom: dom,
|
|
18
|
-
lowercase: pre,
|
|
19
|
-
css: "-" + pre + "-",
|
|
20
|
-
js: pre[0].toUpperCase() + pre.substr(1)
|
|
21
|
-
}
|
|
22
|
-
: undefined;
|
|
23
|
-
};
|
|
24
|
-
// Get Prefix
|
|
25
|
-
// http://davidwalsh.name/vendor-prefix
|
|
26
|
-
var prefix = (ɵ0)();
|
|
27
|
-
export function getVendorPrefixedName(property) {
|
|
28
|
-
var name = camelCase(property);
|
|
29
|
-
if (!cache[name]) {
|
|
30
|
-
if (prefix !== undefined && testStyle[prefix.css + property] !== undefined) {
|
|
31
|
-
cache[name] = prefix.css + property;
|
|
32
|
-
}
|
|
33
|
-
else if (testStyle[property] !== undefined) {
|
|
34
|
-
cache[name] = property;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return cache[name];
|
|
38
|
-
}
|
|
39
|
-
export { ɵ0 };
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4ZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3dpbWxhbmUvbmd4LWRhdGF0YWJsZS8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9wcmVmaXhlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLElBQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNqQixJQUFNLFNBQVMsR0FBRyxPQUFPLFFBQVEsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FJcEY7SUFDZCxJQUFNLE1BQU0sR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDakgsSUFBTSxLQUFLLEdBQ1QsT0FBTyxNQUFNLEtBQUssV0FBVztRQUMzQixDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLO2FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDWixJQUFJLENBQUMsRUFBRSxDQUFDO2FBQ1IsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxJQUFNLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRCwwREFBMEQ7SUFDMUQsSUFBTSxHQUFHLEdBQUcsT0FBTyxHQUFHLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRWxILE9BQU8sR0FBRztRQUNSLENBQUMsQ0FBQztZQUNFLEdBQUcsS0FBQTtZQUNILFNBQVMsRUFBRSxHQUFHO1lBQ2QsR0FBRyxFQUFFLE1BQUksR0FBRyxNQUFHO1lBQ2YsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUN6QztRQUNILENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDaEIsQ0FBQztBQXZCRCxhQUFhO0FBQ2IsdUNBQXVDO0FBQ3ZDLElBQU0sTUFBTSxHQUFHLElBcUJiLEVBQUUsQ0FBQztBQUVMLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxRQUFnQjtJQUNwRCxJQUFNLElBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNoQixJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQzFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQztTQUNyQzthQUFNLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUM1QyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQ3hCO0tBQ0Y7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FtZWxDYXNlIH0gZnJvbSAnLi9jYW1lbC1jYXNlJztcblxuY29uc3QgY2FjaGUgPSB7fTtcbmNvbnN0IHRlc3RTdHlsZSA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZSA6IHVuZGVmaW5lZDtcblxuLy8gR2V0IFByZWZpeFxuLy8gaHR0cDovL2Rhdmlkd2Fsc2gubmFtZS92ZW5kb3ItcHJlZml4XG5jb25zdCBwcmVmaXggPSAoZnVuY3Rpb24gKCkge1xuICBjb25zdCBzdHlsZXMgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJycpIDogdW5kZWZpbmVkO1xuICBjb25zdCBtYXRjaCA9XG4gICAgdHlwZW9mIHN0eWxlcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgID8gQXJyYXkucHJvdG90eXBlLnNsaWNlXG4gICAgICAgICAgLmNhbGwoc3R5bGVzKVxuICAgICAgICAgIC5qb2luKCcnKVxuICAgICAgICAgIC5tYXRjaCgvLShtb3p8d2Via2l0fG1zKS0vKVxuICAgICAgOiBudWxsO1xuICBjb25zdCBwcmUgPSBtYXRjaCAhPT0gbnVsbCA/IG1hdGNoWzFdIDogdW5kZWZpbmVkO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHRzci1kZXRlY3Qtbm9uLWxpdGVyYWwtcmVnZXhwXG4gIGNvbnN0IGRvbSA9IHR5cGVvZiBwcmUgIT09ICd1bmRlZmluZWQnID8gJ1dlYktpdHxNb3p8TVN8TycubWF0Y2gobmV3IFJlZ0V4cCgnKCcgKyBwcmUgKyAnKScsICdpJykpWzFdIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiBkb21cbiAgICA/IHtcbiAgICAgICAgZG9tLFxuICAgICAgICBsb3dlcmNhc2U6IHByZSxcbiAgICAgICAgY3NzOiBgLSR7cHJlfS1gLFxuICAgICAgICBqczogcHJlWzBdLnRvVXBwZXJDYXNlKCkgKyBwcmUuc3Vic3RyKDEpXG4gICAgICB9XG4gICAgOiB1bmRlZmluZWQ7XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVuZG9yUHJlZml4ZWROYW1lKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgY29uc3QgbmFtZSA9IGNhbWVsQ2FzZShwcm9wZXJ0eSk7XG5cbiAgaWYgKCFjYWNoZVtuYW1lXSkge1xuICAgIGlmIChwcmVmaXggIT09IHVuZGVmaW5lZCAmJiB0ZXN0U3R5bGVbcHJlZml4LmNzcyArIHByb3BlcnR5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYWNoZVtuYW1lXSA9IHByZWZpeC5jc3MgKyBwcm9wZXJ0eTtcbiAgICB9IGVsc2UgaWYgKHRlc3RTdHlsZVtwcm9wZXJ0eV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2FjaGVbbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2FjaGVbbmFtZV07XG59XG4iXX0=
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This object contains the cache of the various row heights that are present inside
|
|
3
|
-
* the data table. Its based on Fenwick tree data structure that helps with
|
|
4
|
-
* querying sums that have time complexity of log n.
|
|
5
|
-
*
|
|
6
|
-
* Fenwick Tree Credits: http://petr-mitrichev.blogspot.com/2013/05/fenwick-tree-range-updates.html
|
|
7
|
-
* https://github.com/mikolalysenko/fenwick-tree
|
|
8
|
-
*
|
|
9
|
-
*/
|
|
10
|
-
var RowHeightCache = /** @class */ (function () {
|
|
11
|
-
function RowHeightCache() {
|
|
12
|
-
/**
|
|
13
|
-
* Tree Array stores the cumulative information of the row heights to perform efficient
|
|
14
|
-
* range queries and updates. Currently the tree is initialized to the base row
|
|
15
|
-
* height instead of the detail row height.
|
|
16
|
-
*/
|
|
17
|
-
this.treeArray = [];
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Clear the Tree array.
|
|
21
|
-
*/
|
|
22
|
-
RowHeightCache.prototype.clearCache = function () {
|
|
23
|
-
this.treeArray = [];
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Initialize the Fenwick tree with row Heights.
|
|
27
|
-
*
|
|
28
|
-
* @param rows The array of rows which contain the expanded status.
|
|
29
|
-
* @param rowHeight The row height.
|
|
30
|
-
* @param detailRowHeight The detail row height.
|
|
31
|
-
*/
|
|
32
|
-
RowHeightCache.prototype.initCache = function (details) {
|
|
33
|
-
var rows = details.rows, rowHeight = details.rowHeight, detailRowHeight = details.detailRowHeight, externalVirtual = details.externalVirtual, rowCount = details.rowCount, rowIndexes = details.rowIndexes, rowExpansions = details.rowExpansions;
|
|
34
|
-
var isFn = typeof rowHeight === 'function';
|
|
35
|
-
var isDetailFn = typeof detailRowHeight === 'function';
|
|
36
|
-
if (!isFn && isNaN(rowHeight)) {
|
|
37
|
-
throw new Error("Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n valid number or function value: (" + rowHeight + ") when 'scrollbarV' is enabled.");
|
|
38
|
-
}
|
|
39
|
-
// Add this additional guard in case detailRowHeight is set to 'auto' as it wont work.
|
|
40
|
-
if (!isDetailFn && isNaN(detailRowHeight)) {
|
|
41
|
-
throw new Error("Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n valid number or function value: (" + detailRowHeight + ") when 'scrollbarV' is enabled.");
|
|
42
|
-
}
|
|
43
|
-
var n = externalVirtual ? rowCount : rows.length;
|
|
44
|
-
this.treeArray = new Array(n);
|
|
45
|
-
for (var i = 0; i < n; ++i) {
|
|
46
|
-
this.treeArray[i] = 0;
|
|
47
|
-
}
|
|
48
|
-
for (var i = 0; i < n; ++i) {
|
|
49
|
-
var row = rows[i];
|
|
50
|
-
var currentRowHeight = rowHeight;
|
|
51
|
-
if (isFn) {
|
|
52
|
-
currentRowHeight = rowHeight(row);
|
|
53
|
-
}
|
|
54
|
-
// Add the detail row height to the already expanded rows.
|
|
55
|
-
// This is useful for the table that goes through a filter or sort.
|
|
56
|
-
var expanded = rowExpansions.has(row);
|
|
57
|
-
if (row && expanded) {
|
|
58
|
-
if (isDetailFn) {
|
|
59
|
-
var index = rowIndexes.get(row);
|
|
60
|
-
currentRowHeight += detailRowHeight(row, index);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
currentRowHeight += detailRowHeight;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
this.update(i, currentRowHeight);
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* Given the ScrollY position i.e. sum, provide the rowIndex
|
|
71
|
-
* that is present in the current view port. Below handles edge cases.
|
|
72
|
-
*/
|
|
73
|
-
RowHeightCache.prototype.getRowIndex = function (scrollY) {
|
|
74
|
-
if (scrollY === 0)
|
|
75
|
-
return 0;
|
|
76
|
-
return this.calcRowIndex(scrollY);
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* When a row is expanded or rowHeight is changed, update the height. This can
|
|
80
|
-
* be utilized in future when Angular Data table supports dynamic row heights.
|
|
81
|
-
*/
|
|
82
|
-
RowHeightCache.prototype.update = function (atRowIndex, byRowHeight) {
|
|
83
|
-
if (!this.treeArray.length) {
|
|
84
|
-
throw new Error("Update at index " + atRowIndex + " with value " + byRowHeight + " failed:\n Row Height cache not initialized.");
|
|
85
|
-
}
|
|
86
|
-
var n = this.treeArray.length;
|
|
87
|
-
atRowIndex |= 0;
|
|
88
|
-
while (atRowIndex < n) {
|
|
89
|
-
this.treeArray[atRowIndex] += byRowHeight;
|
|
90
|
-
atRowIndex |= atRowIndex + 1;
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
/**
|
|
94
|
-
* Range Sum query from 1 to the rowIndex
|
|
95
|
-
*/
|
|
96
|
-
RowHeightCache.prototype.query = function (atIndex) {
|
|
97
|
-
if (!this.treeArray.length) {
|
|
98
|
-
throw new Error("query at index " + atIndex + " failed: Fenwick tree array not initialized.");
|
|
99
|
-
}
|
|
100
|
-
var sum = 0;
|
|
101
|
-
atIndex |= 0;
|
|
102
|
-
while (atIndex >= 0) {
|
|
103
|
-
sum += this.treeArray[atIndex];
|
|
104
|
-
atIndex = (atIndex & (atIndex + 1)) - 1;
|
|
105
|
-
}
|
|
106
|
-
return sum;
|
|
107
|
-
};
|
|
108
|
-
/**
|
|
109
|
-
* Find the total height between 2 row indexes
|
|
110
|
-
*/
|
|
111
|
-
RowHeightCache.prototype.queryBetween = function (atIndexA, atIndexB) {
|
|
112
|
-
return this.query(atIndexB) - this.query(atIndexA - 1);
|
|
113
|
-
};
|
|
114
|
-
/**
|
|
115
|
-
* Given the ScrollY position i.e. sum, provide the rowIndex
|
|
116
|
-
* that is present in the current view port.
|
|
117
|
-
*/
|
|
118
|
-
RowHeightCache.prototype.calcRowIndex = function (sum) {
|
|
119
|
-
if (!this.treeArray.length)
|
|
120
|
-
return 0;
|
|
121
|
-
var pos = -1;
|
|
122
|
-
var dataLength = this.treeArray.length;
|
|
123
|
-
// Get the highest bit for the block size.
|
|
124
|
-
var highestBit = Math.pow(2, dataLength.toString(2).length - 1);
|
|
125
|
-
for (var blockSize = highestBit; blockSize !== 0; blockSize >>= 1) {
|
|
126
|
-
var nextPos = pos + blockSize;
|
|
127
|
-
if (nextPos < dataLength && sum >= this.treeArray[nextPos]) {
|
|
128
|
-
sum -= this.treeArray[nextPos];
|
|
129
|
-
pos = nextPos;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return pos + 1;
|
|
133
|
-
};
|
|
134
|
-
return RowHeightCache;
|
|
135
|
-
}());
|
|
136
|
-
export { RowHeightCache };
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWhlaWdodC1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL3Jvdy1oZWlnaHQtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSDtJQUFBO1FBQ0U7Ozs7V0FJRztRQUNLLGNBQVMsR0FBYSxFQUFFLENBQUM7SUEySW5DLENBQUM7SUF6SUM7O09BRUc7SUFDSCxtQ0FBVSxHQUFWO1FBQ0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGtDQUFTLEdBQVQsVUFBVSxPQUFZO1FBQ1osSUFBQSxtQkFBSSxFQUFFLDZCQUFTLEVBQUUseUNBQWUsRUFBRSx5Q0FBZSxFQUFFLDJCQUFRLEVBQUUsK0JBQVUsRUFBRSxxQ0FBYSxDQUFhO1FBQzNHLElBQU0sSUFBSSxHQUFHLE9BQU8sU0FBUyxLQUFLLFVBQVUsQ0FBQztRQUM3QyxJQUFNLFVBQVUsR0FBRyxPQUFPLGVBQWUsS0FBSyxVQUFVLENBQUM7UUFFekQsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQywySEFDcUIsU0FBUyxvQ0FBaUMsQ0FBQyxDQUFDO1NBQ2xGO1FBRUQsc0ZBQXNGO1FBQ3RGLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUlBQ3FCLGVBQWUsb0NBQWlDLENBQUMsQ0FBQztTQUN4RjtRQUVELElBQU0sQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFF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VUFBcUIsR0FBVztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFFckMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDYixJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUV6QywwQ0FBMEM7UUFDMUMsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFbEUsS0FBSyxJQUFJLFNBQVMsR0FBRyxVQUFVLEVBQUUsU0FBUyxLQUFLLENBQUMsRUFBRSxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQ2pFLElBQU0sT0FBTyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUM7WUFDaEMsSUFBSSxPQUFPLEdBQUcsVUFBVSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMxRCxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0IsR0FBRyxHQUFHLE9BQU8sQ0FBQzthQUNmO1NBQ0Y7UUFFRCxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNILHFCQUFDO0FBQUQsQ0FBQyxBQWpKRCxJQWlKQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBvYmplY3QgY29udGFpbnMgdGhlIGNhY2hlIG9mIHRoZSB2YXJpb3VzIHJvdyBoZWlnaHRzIHRoYXQgYXJlIHByZXNlbnQgaW5zaWRlXG4gKiB0aGUgZGF0YSB0YWJsZS4gICBJdHMgYmFzZWQgb24gRmVud2ljayB0cmVlIGRhdGEgc3RydWN0dXJlIHRoYXQgaGVscHMgd2l0aFxuICogcXVlcnlpbmcgc3VtcyB0aGF0IGhhdmUgdGltZSBjb21wbGV4aXR5IG9mIGxvZyBuLlxuICpcbiAqIEZlbndpY2sgVHJlZSBDcmVkaXRzOiBodHRwOi8vcGV0ci1taXRyaWNoZXYuYmxvZ3Nwb3QuY29tLzIwMTMvMDUvZmVud2ljay10cmVlLXJhbmdlLXVwZGF0ZXMuaHRtbFxuICogaHR0cHM6Ly9naXRodWIuY29tL21pa29sYWx5c2Vua28vZmVud2ljay10cmVlXG4gKlxuICovXG5leHBvcnQgY2xhc3MgUm93SGVpZ2h0Q2FjaGUge1xuICAvKipcbiAgICogVHJlZSBBcnJheSBzdG9yZXMgdGhlIGN1bXVsYXRpdmUgaW5mb3JtYXRpb24gb2YgdGhlIHJvdyBoZWlnaHRzIHRvIHBlcmZvcm0gZWZmaWNpZW50XG4gICAqIHJhbmdlIHF1ZXJpZXMgYW5kIHVwZGF0ZXMuICBDdXJyZW50bHkgdGhlIHRyZWUgaXMgaW5pdGlhbGl6ZWQgdG8gdGhlIGJhc2Ugcm93XG4gICAqIGhlaWdodCBpbnN0ZWFkIG9mIHRoZSBkZXRhaWwgcm93IGhlaWdodC5cbiAgICovXG4gIHByaXZhdGUgdHJlZUFycmF5OiBudW1iZXJbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgVHJlZSBhcnJheS5cbiAgICovXG4gIGNsZWFyQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy50cmVlQXJyYXkgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBGZW53aWNrIHRyZWUgd2l0aCByb3cgSGVpZ2h0cy5cbiAgICpcbiAgICogQHBhcmFtIHJvd3MgVGhlIGFycmF5IG9mIHJvd3Mgd2hpY2ggY29udGFpbiB0aGUgZXhwYW5kZWQgc3RhdHVzLlxuICAgKiBAcGFyYW0gcm93SGVpZ2h0IFRoZSByb3cgaGVpZ2h0LlxuICAgKiBAcGFyYW0gZGV0YWlsUm93SGVpZ2h0IFRoZSBkZXRhaWwgcm93IGhlaWdodC5cbiAgICovXG4gIGluaXRDYWNoZShkZXRhaWxzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB7IHJvd3MsIHJvd0hlaWdodCwgZGV0YWlsUm93SGVpZ2h0LCBleHRlcm5hbFZpcnR1YWwsIHJvd0NvdW50LCByb3dJbmRleGVzLCByb3dFeHBhbnNpb25zIH0gPSBkZXRhaWxzO1xuICAgIGNvbnN0IGlzRm4gPSB0eXBlb2Ygcm93SGVpZ2h0ID09PSAnZnVuY3Rpb24nO1xuICAgIGNvbnN0IGlzRGV0YWlsRm4gPSB0eXBlb2YgZGV0YWlsUm93SGVpZ2h0ID09PSAnZnVuY3Rpb24nO1xuXG4gICAgaWYgKCFpc0ZuICYmIGlzTmFOKHJvd0hlaWdodCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUm93IEhlaWdodCBjYWNoZSBpbml0aWFsaXphdGlvbiBmYWlsZWQuIFBsZWFzZSBlbnN1cmUgdGhhdCAncm93SGVpZ2h0JyBpcyBhXG4gICAgICAgIHZhbGlkIG51bWJlciBvciBmdW5jdGlvbiB2YWx1ZTogKCR7cm93SGVpZ2h0fSkgd2hlbiAnc2Nyb2xsYmFyVicgaXMgZW5hYmxlZC5gKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhpcyBhZGRpdGlvbmFsIGd1YXJkIGluIGNhc2UgZGV0YWlsUm93SGVpZ2h0IGlzIHNldCB0byAnYXV0bycgYXMgaXQgd29udCB3b3JrLlxuICAgIGlmICghaXNEZXRhaWxGbiAmJiBpc05hTihkZXRhaWxSb3dIZWlnaHQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvdyBIZWlnaHQgY2FjaGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiBQbGVhc2UgZW5zdXJlIHRoYXQgJ2RldGFpbFJvd0hlaWdodCcgaXMgYVxuICAgICAgICB2YWxpZCBudW1iZXIgb3IgZnVuY3Rpb24gdmFsdWU6ICgke2RldGFpbFJvd0hlaWdodH0pIHdoZW4gJ3Njcm9sbGJhclYnIGlzIGVuYWJsZWQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbiA9IGV4dGVybmFsVmlydHVhbCA/IHJvd0NvdW50IDogcm93cy5sZW5ndGg7XG4gICAgdGhpcy50cmVlQXJyYXkgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdGhpcy50cmVlQXJyYXlbaV0gPSAwO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBjb25zdCByb3cgPSByb3dzW2ldO1xuICAgICAgbGV0IGN1cnJlbnRSb3dIZWlnaHQgPSByb3dIZWlnaHQ7XG4gICAgICBpZiAoaXNGbikge1xuICAgICAgICBjdXJyZW50Um93SGVpZ2h0ID0gcm93SGVpZ2h0KHJvdyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCB0aGUgZGV0YWlsIHJvdyBoZWlnaHQgdG8gdGhlIGFscmVhZHkgZXhwYW5kZWQgcm93cy5cbiAgICAgIC8vIFRoaXMgaXMgdXNlZnVsIGZvciB0aGUgdGFibGUgdGhhdCBnb2VzIHRocm91Z2ggYSBmaWx0ZXIgb3Igc29ydC5cbiAgICAgIGNvbnN0IGV4cGFuZGVkID0gcm93RXhwYW5zaW9ucy5oYXMocm93KTtcbiAgICAgIGlmIChyb3cgJiYgZXhwYW5kZWQpIHtcbiAgICAgICAgaWYgKGlzRGV0YWlsRm4pIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHJvd0luZGV4ZXMuZ2V0KHJvdyk7XG4gICAgICAgICAgY3VycmVudFJvd0hlaWdodCArPSBkZXRhaWxSb3dIZWlnaHQocm93LCBpbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudFJvd0hlaWdodCArPSBkZXRhaWxSb3dIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGUoaSwgY3VycmVudFJvd0hlaWdodCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIHRoZSBTY3JvbGxZIHBvc2l0aW9uIGkuZS4gc3VtLCBwcm92aWRlIHRoZSByb3dJbmRleFxuICAgKiB0aGF0IGlzIHByZXNlbnQgaW4gdGhlIGN1cnJlbnQgdmlldyBwb3J0LiAgQmVsb3cgaGFuZGxlcyBlZGdlIGNhc2VzLlxuICAgKi9cbiAgZ2V0Um93SW5kZXgoc2Nyb2xsWTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoc2Nyb2xsWSA9PT0gMCkgcmV0dXJuIDA7XG4gICAgcmV0dXJuIHRoaXMuY2FsY1Jvd0luZGV4KHNjcm9sbFkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gYSByb3cgaXMgZXhwYW5kZWQgb3Igcm93SGVpZ2h0IGlzIGNoYW5nZWQsIHVwZGF0ZSB0aGUgaGVpZ2h0LiAgVGhpcyBjYW5cbiAgICogYmUgdXRpbGl6ZWQgaW4gZnV0dXJlIHdoZW4gQW5ndWxhciBEYXRhIHRhYmxlIHN1cHBvcnRzIGR5bmFtaWMgcm93IGhlaWdodHMuXG4gICAqL1xuICB1cGRhdGUoYXRSb3dJbmRleDogbnVtYmVyLCBieVJvd0hlaWdodDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyZWVBcnJheS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVXBkYXRlIGF0IGluZGV4ICR7YXRSb3dJbmRleH0gd2l0aCB2YWx1ZSAke2J5Um93SGVpZ2h0fSBmYWlsZWQ6XG4gICAgICAgIFJvdyBIZWlnaHQgY2FjaGUgbm90IGluaXRpYWxpemVkLmApO1xuICAgIH1cblxuICAgIGNvbnN0IG4gPSB0aGlzLnRyZWVBcnJheS5sZW5ndGg7XG4gICAgYXRSb3dJbmRleCB8PSAwO1xuXG4gICAgd2hpbGUgKGF0Um93SW5kZXggPCBuKSB7XG4gICAgICB0aGlzLnRyZWVBcnJheVthdFJvd0luZGV4XSArPSBieVJvd0hlaWdodDtcbiAgICAgIGF0Um93SW5kZXggfD0gYXRSb3dJbmRleCArIDE7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJhbmdlIFN1bSBxdWVyeSBmcm9tIDEgdG8gdGhlIHJvd0luZGV4XG4gICAqL1xuICBxdWVyeShhdEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50cmVlQXJyYXkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHF1ZXJ5IGF0IGluZGV4ICR7YXRJbmRleH0gZmFpbGVkOiBGZW53aWNrIHRyZWUgYXJyYXkgbm90IGluaXRpYWxpemVkLmApO1xuICAgIH1cblxuICAgIGxldCBzdW0gPSAwO1xuICAgIGF0SW5kZXggfD0gMDtcblxuICAgIHdoaWxlIChhdEluZGV4ID49IDApIHtcbiAgICAgIHN1bSArPSB0aGlzLnRyZWVBcnJheVthdEluZGV4XTtcbiAgICAgIGF0SW5kZXggPSAoYXRJbmRleCAmIChhdEluZGV4ICsgMSkpIC0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VtO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIHRvdGFsIGhlaWdodCBiZXR3ZWVuIDIgcm93IGluZGV4ZXNcbiAgICovXG4gIHF1ZXJ5QmV0d2VlbihhdEluZGV4QTogbnVtYmVyLCBhdEluZGV4QjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeShhdEluZGV4QikgLSB0aGlzLnF1ZXJ5KGF0SW5kZXhBIC0gMSk7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gdGhlIFNjcm9sbFkgcG9zaXRpb24gaS5lLiBzdW0sIHByb3ZpZGUgdGhlIHJvd0luZGV4XG4gICAqIHRoYXQgaXMgcHJlc2VudCBpbiB0aGUgY3VycmVudCB2aWV3IHBvcnQuXG4gICAqL1xuICBwcml2YXRlIGNhbGNSb3dJbmRleChzdW06IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRyZWVBcnJheS5sZW5ndGgpIHJldHVybiAwO1xuXG4gICAgbGV0IHBvcyA9IC0xO1xuICAgIGNvbnN0IGRhdGFMZW5ndGggPSB0aGlzLnRyZWVBcnJheS5sZW5ndGg7XG5cbiAgICAvLyBHZXQgdGhlIGhpZ2hlc3QgYml0IGZvciB0aGUgYmxvY2sgc2l6ZS5cbiAgICBjb25zdCBoaWdoZXN0Qml0ID0gTWF0aC5wb3coMiwgZGF0YUxlbmd0aC50b1N0cmluZygyKS5sZW5ndGggLSAxKTtcblxuICAgIGZvciAobGV0IGJsb2NrU2l6ZSA9IGhpZ2hlc3RCaXQ7IGJsb2NrU2l6ZSAhPT0gMDsgYmxvY2tTaXplID4+PSAxKSB7XG4gICAgICBjb25zdCBuZXh0UG9zID0gcG9zICsgYmxvY2tTaXplO1xuICAgICAgaWYgKG5leHRQb3MgPCBkYXRhTGVuZ3RoICYmIHN1bSA+PSB0aGlzLnRyZWVBcnJheVtuZXh0UG9zXSkge1xuICAgICAgICBzdW0gLT0gdGhpcy50cmVlQXJyYXlbbmV4dFBvc107XG4gICAgICAgIHBvcyA9IG5leHRQb3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvcyArIDE7XG4gIH1cbn1cbiJdfQ==
|