@swimlane/ngx-datatable 19.0.0 → 20.0.0-alpha-1
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/esm2020/lib/components/body/body-cell.component.mjs +432 -0
- package/esm2020/lib/components/body/body-group-header-template.directive.mjs +16 -0
- package/esm2020/lib/components/body/body-group-header.directive.mjs +62 -0
- package/esm2020/lib/components/body/body-row-wrapper.component.mjs +140 -0
- package/esm2020/lib/components/body/body-row.component.mjs +262 -0
- package/esm2020/lib/components/body/body.component.mjs +863 -0
- package/esm2020/lib/components/body/progress-bar.component.mjs +27 -0
- package/esm2020/lib/components/body/scroller.component.mjs +91 -0
- package/esm2020/lib/components/body/selection.component.mjs +150 -0
- package/esm2020/lib/components/body/summary/summary-row.component.mjs +105 -0
- package/esm2020/lib/components/columns/column-cell.directive.mjs +14 -0
- package/esm2020/lib/components/columns/column-header.directive.mjs +14 -0
- package/esm2020/lib/components/columns/column.directive.mjs +98 -0
- package/esm2020/lib/components/columns/tree.directive.mjs +14 -0
- package/esm2020/lib/components/datatable.component.mjs +1008 -0
- package/esm2020/lib/components/footer/footer-template.directive.mjs +14 -0
- package/esm2020/lib/components/footer/footer.component.mjs +128 -0
- package/esm2020/lib/components/footer/footer.directive.mjs +35 -0
- package/esm2020/lib/components/footer/pager.component.mjs +181 -0
- package/esm2020/lib/components/header/header-cell.component.mjs +243 -0
- package/esm2020/lib/components/header/header.component.mjs +376 -0
- package/esm2020/lib/components/row-detail/row-detail-template.directive.mjs +16 -0
- package/esm2020/lib/components/row-detail/row-detail.directive.mjs +63 -0
- package/esm2020/lib/directives/draggable.directive.mjs +108 -0
- package/esm2020/lib/directives/long-press.directive.mjs +117 -0
- package/esm2020/lib/directives/orderable.directive.mjs +136 -0
- package/esm2020/lib/directives/resizeable.directive.mjs +93 -0
- package/esm2020/lib/directives/visibility.directive.mjs +63 -0
- package/esm2020/lib/events.mjs +7 -0
- package/esm2020/lib/ngx-datatable.module.mjs +139 -0
- package/esm2020/lib/services/column-changes.service.mjs +24 -0
- package/esm2020/lib/services/dimensions-helper.service.mjs +17 -0
- package/esm2020/lib/services/scrollbar-helper.service.mjs +37 -0
- package/esm2020/lib/types/click.type.mjs +6 -0
- package/esm2020/lib/types/column-mode.type.mjs +7 -0
- package/esm2020/lib/types/contextmenu.type.mjs +6 -0
- package/esm2020/lib/types/selection.type.mjs +9 -0
- package/esm2020/lib/types/sort-direction.type.mjs +6 -0
- package/esm2020/lib/types/sort-prop-dir.type.mjs +2 -0
- package/esm2020/lib/types/sort.type.mjs +6 -0
- package/esm2020/lib/types/table-column.type.mjs +2 -0
- package/esm2020/lib/utils/camel-case.mjs +28 -0
- package/esm2020/lib/utils/column-helper.mjs +95 -0
- package/esm2020/lib/utils/column-prop-getters.mjs +96 -0
- package/esm2020/lib/utils/column.mjs +69 -0
- package/esm2020/lib/utils/elm-from-point.mjs +38 -0
- package/esm2020/lib/utils/id.mjs +8 -0
- package/esm2020/lib/utils/keys.mjs +10 -0
- package/esm2020/lib/utils/math.mjs +146 -0
- package/esm2020/lib/utils/prefixes.mjs +38 -0
- package/esm2020/lib/utils/row-height-cache.mjs +138 -0
- package/esm2020/lib/utils/selection.mjs +40 -0
- package/esm2020/lib/utils/sort.mjs +127 -0
- package/esm2020/lib/utils/throttle.mjs +60 -0
- package/esm2020/lib/utils/translate.mjs +25 -0
- package/esm2020/lib/utils/tree.mjs +103 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +1 -1
- package/{esm2015/swimlane-ngx-datatable.js → esm2020/swimlane-ngx-datatable.mjs} +1 -1
- package/fesm2015/{swimlane-ngx-datatable.js → swimlane-ngx-datatable.mjs} +4104 -3337
- package/fesm2015/swimlane-ngx-datatable.mjs.map +1 -0
- package/fesm2020/swimlane-ngx-datatable.mjs +5974 -0
- package/fesm2020/swimlane-ngx-datatable.mjs.map +1 -0
- package/lib/components/body/body-cell.component.d.ts +3 -0
- package/lib/components/body/body-group-header-template.directive.d.ts +3 -0
- package/lib/components/body/body-group-header.directive.d.ts +3 -0
- package/lib/components/body/body-row-wrapper.component.d.ts +3 -0
- package/lib/components/body/body-row.component.d.ts +3 -0
- package/lib/components/body/body.component.d.ts +3 -0
- package/lib/components/body/progress-bar.component.d.ts +3 -0
- package/lib/components/body/scroller.component.d.ts +3 -0
- package/lib/components/body/selection.component.d.ts +3 -0
- package/lib/components/body/summary/summary-row.component.d.ts +3 -0
- package/lib/components/columns/column-cell.directive.d.ts +3 -0
- package/lib/components/columns/column-header.directive.d.ts +3 -0
- package/lib/components/columns/column.directive.d.ts +3 -0
- package/lib/components/columns/tree.directive.d.ts +3 -0
- package/lib/components/datatable.component.d.ts +3 -0
- package/lib/components/footer/footer-template.directive.d.ts +3 -0
- package/lib/components/footer/footer.component.d.ts +3 -0
- package/lib/components/footer/footer.directive.d.ts +3 -0
- package/lib/components/footer/pager.component.d.ts +3 -0
- package/lib/components/header/header-cell.component.d.ts +3 -0
- package/lib/components/header/header.component.d.ts +3 -0
- package/lib/components/row-detail/row-detail-template.directive.d.ts +3 -0
- package/lib/components/row-detail/row-detail.directive.d.ts +3 -0
- package/lib/directives/draggable.directive.d.ts +3 -0
- package/lib/directives/long-press.directive.d.ts +3 -0
- package/lib/directives/orderable.directive.d.ts +3 -0
- package/lib/directives/resizeable.directive.d.ts +3 -0
- package/lib/directives/visibility.directive.d.ts +3 -0
- package/lib/ngx-datatable.module.d.ts +33 -0
- package/lib/services/column-changes.service.d.ts +3 -0
- package/lib/services/dimensions-helper.service.d.ts +3 -0
- package/lib/services/scrollbar-helper.service.d.ts +3 -0
- package/package.json +24 -12
- package/swimlane-ngx-datatable.d.ts +1 -0
- package/bundles/swimlane-ngx-datatable.umd.js +0 -5876
- package/bundles/swimlane-ngx-datatable.umd.js.map +0 -1
- package/bundles/swimlane-ngx-datatable.umd.min.js +0 -2
- package/bundles/swimlane-ngx-datatable.umd.min.js.map +0 -1
- package/esm2015/lib/components/body/body-cell.component.js +0 -361
- package/esm2015/lib/components/body/body-group-header-template.directive.js +0 -15
- package/esm2015/lib/components/body/body-group-header.directive.js +0 -54
- package/esm2015/lib/components/body/body-row-wrapper.component.js +0 -106
- package/esm2015/lib/components/body/body-row.component.js +0 -212
- package/esm2015/lib/components/body/body.component.js +0 -713
- package/esm2015/lib/components/body/progress-bar.component.js +0 -17
- package/esm2015/lib/components/body/scroller.component.js +0 -83
- package/esm2015/lib/components/body/selection.component.js +0 -140
- package/esm2015/lib/components/body/summary/summary-row.component.js +0 -81
- package/esm2015/lib/components/columns/column-cell.directive.js +0 -13
- package/esm2015/lib/components/columns/column-header.directive.js +0 -13
- package/esm2015/lib/components/columns/column.directive.js +0 -65
- package/esm2015/lib/components/columns/tree.directive.js +0 -13
- package/esm2015/lib/components/datatable.component.js +0 -925
- package/esm2015/lib/components/footer/footer-template.directive.js +0 -13
- package/esm2015/lib/components/footer/footer.component.js +0 -75
- package/esm2015/lib/components/footer/footer.directive.js +0 -22
- package/esm2015/lib/components/footer/pager.component.js +0 -136
- package/esm2015/lib/components/header/header-cell.component.js +0 -191
- package/esm2015/lib/components/header/header.component.js +0 -295
- package/esm2015/lib/components/row-detail/row-detail-template.directive.js +0 -15
- package/esm2015/lib/components/row-detail/row-detail.directive.js +0 -55
- package/esm2015/lib/directives/draggable.directive.js +0 -102
- package/esm2015/lib/directives/long-press.directive.js +0 -103
- package/esm2015/lib/directives/orderable.directive.js +0 -131
- package/esm2015/lib/directives/resizeable.directive.js +0 -89
- package/esm2015/lib/directives/visibility.directive.js +0 -62
- package/esm2015/lib/events.js +0 -7
- package/esm2015/lib/ngx-datatable.module.js +0 -96
- package/esm2015/lib/services/column-changes.service.js +0 -21
- package/esm2015/lib/services/dimensions-helper.service.js +0 -14
- package/esm2015/lib/services/scrollbar-helper.service.js +0 -34
- package/esm2015/lib/types/click.type.js +0 -6
- package/esm2015/lib/types/column-mode.type.js +0 -7
- package/esm2015/lib/types/contextmenu.type.js +0 -6
- package/esm2015/lib/types/selection.type.js +0 -9
- package/esm2015/lib/types/sort-direction.type.js +0 -6
- package/esm2015/lib/types/sort-prop-dir.type.js +0 -2
- package/esm2015/lib/types/sort.type.js +0 -6
- package/esm2015/lib/types/table-column.type.js +0 -2
- package/esm2015/lib/utils/camel-case.js +0 -28
- package/esm2015/lib/utils/column-helper.js +0 -95
- package/esm2015/lib/utils/column-prop-getters.js +0 -96
- package/esm2015/lib/utils/column.js +0 -69
- package/esm2015/lib/utils/elm-from-point.js +0 -38
- package/esm2015/lib/utils/id.js +0 -8
- package/esm2015/lib/utils/keys.js +0 -10
- package/esm2015/lib/utils/math.js +0 -146
- package/esm2015/lib/utils/prefixes.js +0 -40
- package/esm2015/lib/utils/row-height-cache.js +0 -138
- package/esm2015/lib/utils/selection.js +0 -40
- package/esm2015/lib/utils/sort.js +0 -127
- package/esm2015/lib/utils/throttle.js +0 -60
- package/esm2015/lib/utils/translate.js +0 -25
- package/esm2015/lib/utils/tree.js +0 -103
- package/fesm2015/swimlane-ngx-datatable.js.map +0 -1
- package/swimlane-ngx-datatable.metadata.json +0 -1
|
@@ -1,138 +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
|
-
export class RowHeightCache {
|
|
11
|
-
constructor() {
|
|
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
|
-
clearCache() {
|
|
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
|
-
initCache(details) {
|
|
33
|
-
const { rows, rowHeight, detailRowHeight, externalVirtual, rowCount, rowIndexes, rowExpansions } = details;
|
|
34
|
-
const isFn = typeof rowHeight === 'function';
|
|
35
|
-
const isDetailFn = typeof detailRowHeight === 'function';
|
|
36
|
-
if (!isFn && isNaN(rowHeight)) {
|
|
37
|
-
throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a
|
|
38
|
-
valid number or function value: (${rowHeight}) when 'scrollbarV' is enabled.`);
|
|
39
|
-
}
|
|
40
|
-
// Add this additional guard in case detailRowHeight is set to 'auto' as it wont work.
|
|
41
|
-
if (!isDetailFn && isNaN(detailRowHeight)) {
|
|
42
|
-
throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a
|
|
43
|
-
valid number or function value: (${detailRowHeight}) when 'scrollbarV' is enabled.`);
|
|
44
|
-
}
|
|
45
|
-
const n = externalVirtual ? rowCount : rows.length;
|
|
46
|
-
this.treeArray = new Array(n);
|
|
47
|
-
for (let i = 0; i < n; ++i) {
|
|
48
|
-
this.treeArray[i] = 0;
|
|
49
|
-
}
|
|
50
|
-
for (let i = 0; i < n; ++i) {
|
|
51
|
-
const row = rows[i];
|
|
52
|
-
let currentRowHeight = rowHeight;
|
|
53
|
-
if (isFn) {
|
|
54
|
-
currentRowHeight = rowHeight(row);
|
|
55
|
-
}
|
|
56
|
-
// Add the detail row height to the already expanded rows.
|
|
57
|
-
// This is useful for the table that goes through a filter or sort.
|
|
58
|
-
const expanded = rowExpansions.has(row);
|
|
59
|
-
if (row && expanded) {
|
|
60
|
-
if (isDetailFn) {
|
|
61
|
-
const index = rowIndexes.get(row);
|
|
62
|
-
currentRowHeight += detailRowHeight(row, index);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
currentRowHeight += detailRowHeight;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
this.update(i, currentRowHeight);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Given the ScrollY position i.e. sum, provide the rowIndex
|
|
73
|
-
* that is present in the current view port. Below handles edge cases.
|
|
74
|
-
*/
|
|
75
|
-
getRowIndex(scrollY) {
|
|
76
|
-
if (scrollY === 0)
|
|
77
|
-
return 0;
|
|
78
|
-
return this.calcRowIndex(scrollY);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* When a row is expanded or rowHeight is changed, update the height. This can
|
|
82
|
-
* be utilized in future when Angular Data table supports dynamic row heights.
|
|
83
|
-
*/
|
|
84
|
-
update(atRowIndex, byRowHeight) {
|
|
85
|
-
if (!this.treeArray.length) {
|
|
86
|
-
throw new Error(`Update at index ${atRowIndex} with value ${byRowHeight} failed:
|
|
87
|
-
Row Height cache not initialized.`);
|
|
88
|
-
}
|
|
89
|
-
const n = this.treeArray.length;
|
|
90
|
-
atRowIndex |= 0;
|
|
91
|
-
while (atRowIndex < n) {
|
|
92
|
-
this.treeArray[atRowIndex] += byRowHeight;
|
|
93
|
-
atRowIndex |= atRowIndex + 1;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Range Sum query from 1 to the rowIndex
|
|
98
|
-
*/
|
|
99
|
-
query(atIndex) {
|
|
100
|
-
if (!this.treeArray.length) {
|
|
101
|
-
throw new Error(`query at index ${atIndex} failed: Fenwick tree array not initialized.`);
|
|
102
|
-
}
|
|
103
|
-
let sum = 0;
|
|
104
|
-
atIndex |= 0;
|
|
105
|
-
while (atIndex >= 0) {
|
|
106
|
-
sum += this.treeArray[atIndex];
|
|
107
|
-
atIndex = (atIndex & (atIndex + 1)) - 1;
|
|
108
|
-
}
|
|
109
|
-
return sum;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Find the total height between 2 row indexes
|
|
113
|
-
*/
|
|
114
|
-
queryBetween(atIndexA, atIndexB) {
|
|
115
|
-
return this.query(atIndexB) - this.query(atIndexA - 1);
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Given the ScrollY position i.e. sum, provide the rowIndex
|
|
119
|
-
* that is present in the current view port.
|
|
120
|
-
*/
|
|
121
|
-
calcRowIndex(sum) {
|
|
122
|
-
if (!this.treeArray.length)
|
|
123
|
-
return 0;
|
|
124
|
-
let pos = -1;
|
|
125
|
-
const dataLength = this.treeArray.length;
|
|
126
|
-
// Get the highest bit for the block size.
|
|
127
|
-
const highestBit = Math.pow(2, dataLength.toString(2).length - 1);
|
|
128
|
-
for (let blockSize = highestBit; blockSize !== 0; blockSize >>= 1) {
|
|
129
|
-
const nextPos = pos + blockSize;
|
|
130
|
-
if (nextPos < dataLength && sum >= this.treeArray[nextPos]) {
|
|
131
|
-
sum -= this.treeArray[nextPos];
|
|
132
|
-
pos = nextPos;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
return pos + 1;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWhlaWdodC1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zd2ltbGFuZS9uZ3gtZGF0YXRhYmxlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9yb3ctaGVpZ2h0LWNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFBM0I7UUFDRTs7OztXQUlHO1FBQ0ssY0FBUyxHQUFhLEVBQUUsQ0FBQztJQTJJbkMsQ0FBQztJQXpJQzs7T0FFRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLE9BQVk7UUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMzRyxNQUFNLElBQUksR0FBRyxPQUFPLFNBQVMsS0FBSyxVQUFVLENBQUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsT0FBTyxlQUFlLEtBQUssVUFBVSxDQUFDO1FBRXpELElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUM7MkNBQ3FCLFNBQVMsaUNBQWlDLENBQUMsQ0FBQztTQUNsRjtRQUVELHNGQUFzRjtRQUN0RixJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDOzJDQUNxQixlQUFlLGlDQUFpQyxDQUFDLENBQUM7U0FDeEY7UUFFRCxNQUFNLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkI7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixJQUFJLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUNqQyxJQUFJLElBQUksRUFBRTtnQkFDUixnQkFBZ0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDbkM7WUFFRCwwREFBMEQ7WUFDMUQsbUVBQW1FO1lBQ25FLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsSUFBSSxHQUFHLElBQUksUUFBUSxFQUFFO2dCQUNuQixJQUFJLFVBQVUsRUFBRTtvQkFDZCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNsQyxnQkFBZ0IsSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUNqRDtxQkFBTTtvQkFDTCxnQkFBZ0IsSUFBSSxlQUFlLENBQUM7aUJBQ3JDO2FBQ0Y7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxPQUFlO1FBQ3pCLElBQUksT0FBTyxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxVQUFrQixFQUFFLFdBQW1CO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixVQUFVLGVBQWUsV0FBVzswQ0FDbkMsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDaEMsVUFBVSxJQUFJLENBQUMsQ0FBQztRQUVoQixPQUFPLFVBQVUsR0FBRyxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxXQUFXLENBQUM7WUFDMUMsVUFBVSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsT0FBZTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsT0FBTyw4Q0FBOEMsQ0FBQyxDQUFDO1NBQzFGO1FBRUQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osT0FBTyxJQUFJLENBQUMsQ0FBQztRQUViLE9BQU8sT0FBTyxJQUFJLENBQUMsRUFBRTtZQUNuQixHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQixPQUFPLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssWUFBWSxDQUFDLEdBQVc7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXJDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFFekMsMENBQTBDO1FBQzFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWxFLEtBQUssSUFBSSxTQUFTLEdBQUcsVUFBVSxFQUFFLFNBQVMsS0FBSyxDQUFDLEVBQUUsU0FBUyxLQUFLLENBQUMsRUFBRTtZQUNqRSxNQUFNLE9BQU8sR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLElBQUksT0FBTyxHQUFHLFVBQVUsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDMUQsR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9CLEdBQUcsR0FBRyxPQUFPLENBQUM7YUFDZjtTQUNGO1FBRUQsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBvYmplY3QgY29udGFpbnMgdGhlIGNhY2hlIG9mIHRoZSB2YXJpb3VzIHJvdyBoZWlnaHRzIHRoYXQgYXJlIHByZXNlbnQgaW5zaWRlXG4gKiB0aGUgZGF0YSB0YWJsZS4gICBJdHMgYmFzZWQgb24gRmVud2ljayB0cmVlIGRhdGEgc3RydWN0dXJlIHRoYXQgaGVscHMgd2l0aFxuICogcXVlcnlpbmcgc3VtcyB0aGF0IGhhdmUgdGltZSBjb21wbGV4aXR5IG9mIGxvZyBuLlxuICpcbiAqIEZlbndpY2sgVHJlZSBDcmVkaXRzOiBodHRwOi8vcGV0ci1taXRyaWNoZXYuYmxvZ3Nwb3QuY29tLzIwMTMvMDUvZmVud2ljay10cmVlLXJhbmdlLXVwZGF0ZXMuaHRtbFxuICogaHR0cHM6Ly9naXRodWIuY29tL21pa29sYWx5c2Vua28vZmVud2ljay10cmVlXG4gKlxuICovXG5leHBvcnQgY2xhc3MgUm93SGVpZ2h0Q2FjaGUge1xuICAvKipcbiAgICogVHJlZSBBcnJheSBzdG9yZXMgdGhlIGN1bXVsYXRpdmUgaW5mb3JtYXRpb24gb2YgdGhlIHJvdyBoZWlnaHRzIHRvIHBlcmZvcm0gZWZmaWNpZW50XG4gICAqIHJhbmdlIHF1ZXJpZXMgYW5kIHVwZGF0ZXMuICBDdXJyZW50bHkgdGhlIHRyZWUgaXMgaW5pdGlhbGl6ZWQgdG8gdGhlIGJhc2Ugcm93XG4gICAqIGhlaWdodCBpbnN0ZWFkIG9mIHRoZSBkZXRhaWwgcm93IGhlaWdodC5cbiAgICovXG4gIHByaXZhdGUgdHJlZUFycmF5OiBudW1iZXJbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgVHJlZSBhcnJheS5cbiAgICovXG4gIGNsZWFyQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy50cmVlQXJyYXkgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBGZW53aWNrIHRyZWUgd2l0aCByb3cgSGVpZ2h0cy5cbiAgICpcbiAgICogQHBhcmFtIHJvd3MgVGhlIGFycmF5IG9mIHJvd3Mgd2hpY2ggY29udGFpbiB0aGUgZXhwYW5kZWQgc3RhdHVzLlxuICAgKiBAcGFyYW0gcm93SGVpZ2h0IFRoZSByb3cgaGVpZ2h0LlxuICAgKiBAcGFyYW0gZGV0YWlsUm93SGVpZ2h0IFRoZSBkZXRhaWwgcm93IGhlaWdodC5cbiAgICovXG4gIGluaXRDYWNoZShkZXRhaWxzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB7IHJvd3MsIHJvd0hlaWdodCwgZGV0YWlsUm93SGVpZ2h0LCBleHRlcm5hbFZpcnR1YWwsIHJvd0NvdW50LCByb3dJbmRleGVzLCByb3dFeHBhbnNpb25zIH0gPSBkZXRhaWxzO1xuICAgIGNvbnN0IGlzRm4gPSB0eXBlb2Ygcm93SGVpZ2h0ID09PSAnZnVuY3Rpb24nO1xuICAgIGNvbnN0IGlzRGV0YWlsRm4gPSB0eXBlb2YgZGV0YWlsUm93SGVpZ2h0ID09PSAnZnVuY3Rpb24nO1xuXG4gICAgaWYgKCFpc0ZuICYmIGlzTmFOKHJvd0hlaWdodCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUm93IEhlaWdodCBjYWNoZSBpbml0aWFsaXphdGlvbiBmYWlsZWQuIFBsZWFzZSBlbnN1cmUgdGhhdCAncm93SGVpZ2h0JyBpcyBhXG4gICAgICAgIHZhbGlkIG51bWJlciBvciBmdW5jdGlvbiB2YWx1ZTogKCR7cm93SGVpZ2h0fSkgd2hlbiAnc2Nyb2xsYmFyVicgaXMgZW5hYmxlZC5gKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhpcyBhZGRpdGlvbmFsIGd1YXJkIGluIGNhc2UgZGV0YWlsUm93SGVpZ2h0IGlzIHNldCB0byAnYXV0bycgYXMgaXQgd29udCB3b3JrLlxuICAgIGlmICghaXNEZXRhaWxGbiAmJiBpc05hTihkZXRhaWxSb3dIZWlnaHQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvdyBIZWlnaHQgY2FjaGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiBQbGVhc2UgZW5zdXJlIHRoYXQgJ2RldGFpbFJvd0hlaWdodCcgaXMgYVxuICAgICAgICB2YWxpZCBudW1iZXIgb3IgZnVuY3Rpb24gdmFsdWU6ICgke2RldGFpbFJvd0hlaWdodH0pIHdoZW4gJ3Njcm9sbGJhclYnIGlzIGVuYWJsZWQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbiA9IGV4dGVybmFsVmlydHVhbCA/IHJvd0NvdW50IDogcm93cy5sZW5ndGg7XG4gICAgdGhpcy50cmVlQXJyYXkgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdGhpcy50cmVlQXJyYXlbaV0gPSAwO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBjb25zdCByb3cgPSByb3dzW2ldO1xuICAgICAgbGV0IGN1cnJlbnRSb3dIZWlnaHQgPSByb3dIZWlnaHQ7XG4gICAgICBpZiAoaXNGbikge1xuICAgICAgICBjdXJyZW50Um93SGVpZ2h0ID0gcm93SGVpZ2h0KHJvdyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCB0aGUgZGV0YWlsIHJvdyBoZWlnaHQgdG8gdGhlIGFscmVhZHkgZXhwYW5kZWQgcm93cy5cbiAgICAgIC8vIFRoaXMgaXMgdXNlZnVsIGZvciB0aGUgdGFibGUgdGhhdCBnb2VzIHRocm91Z2ggYSBmaWx0ZXIgb3Igc29ydC5cbiAgICAgIGNvbnN0IGV4cGFuZGVkID0gcm93RXhwYW5zaW9ucy5oYXMocm93KTtcbiAgICAgIGlmIChyb3cgJiYgZXhwYW5kZWQpIHtcbiAgICAgICAgaWYgKGlzRGV0YWlsRm4pIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHJvd0luZGV4ZXMuZ2V0KHJvdyk7XG4gICAgICAgICAgY3VycmVudFJvd0hlaWdodCArPSBkZXRhaWxSb3dIZWlnaHQocm93LCBpbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudFJvd0hlaWdodCArPSBkZXRhaWxSb3dIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGUoaSwgY3VycmVudFJvd0hlaWdodCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIHRoZSBTY3JvbGxZIHBvc2l0aW9uIGkuZS4gc3VtLCBwcm92aWRlIHRoZSByb3dJbmRleFxuICAgKiB0aGF0IGlzIHByZXNlbnQgaW4gdGhlIGN1cnJlbnQgdmlldyBwb3J0LiAgQmVsb3cgaGFuZGxlcyBlZGdlIGNhc2VzLlxuICAgKi9cbiAgZ2V0Um93SW5kZXgoc2Nyb2xsWTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoc2Nyb2xsWSA9PT0gMCkgcmV0dXJuIDA7XG4gICAgcmV0dXJuIHRoaXMuY2FsY1Jvd0luZGV4KHNjcm9sbFkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gYSByb3cgaXMgZXhwYW5kZWQgb3Igcm93SGVpZ2h0IGlzIGNoYW5nZWQsIHVwZGF0ZSB0aGUgaGVpZ2h0LiAgVGhpcyBjYW5cbiAgICogYmUgdXRpbGl6ZWQgaW4gZnV0dXJlIHdoZW4gQW5ndWxhciBEYXRhIHRhYmxlIHN1cHBvcnRzIGR5bmFtaWMgcm93IGhlaWdodHMuXG4gICAqL1xuICB1cGRhdGUoYXRSb3dJbmRleDogbnVtYmVyLCBieVJvd0hlaWdodDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyZWVBcnJheS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVXBkYXRlIGF0IGluZGV4ICR7YXRSb3dJbmRleH0gd2l0aCB2YWx1ZSAke2J5Um93SGVpZ2h0fSBmYWlsZWQ6XG4gICAgICAgIFJvdyBIZWlnaHQgY2FjaGUgbm90IGluaXRpYWxpemVkLmApO1xuICAgIH1cblxuICAgIGNvbnN0IG4gPSB0aGlzLnRyZWVBcnJheS5sZW5ndGg7XG4gICAgYXRSb3dJbmRleCB8PSAwO1xuXG4gICAgd2hpbGUgKGF0Um93SW5kZXggPCBuKSB7XG4gICAgICB0aGlzLnRyZWVBcnJheVthdFJvd0luZGV4XSArPSBieVJvd0hlaWdodDtcbiAgICAgIGF0Um93SW5kZXggfD0gYXRSb3dJbmRleCArIDE7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJhbmdlIFN1bSBxdWVyeSBmcm9tIDEgdG8gdGhlIHJvd0luZGV4XG4gICAqL1xuICBxdWVyeShhdEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50cmVlQXJyYXkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHF1ZXJ5IGF0IGluZGV4ICR7YXRJbmRleH0gZmFpbGVkOiBGZW53aWNrIHRyZWUgYXJyYXkgbm90IGluaXRpYWxpemVkLmApO1xuICAgIH1cblxuICAgIGxldCBzdW0gPSAwO1xuICAgIGF0SW5kZXggfD0gMDtcblxuICAgIHdoaWxlIChhdEluZGV4ID49IDApIHtcbiAgICAgIHN1bSArPSB0aGlzLnRyZWVBcnJheVthdEluZGV4XTtcbiAgICAgIGF0SW5kZXggPSAoYXRJbmRleCAmIChhdEluZGV4ICsgMSkpIC0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VtO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIHRvdGFsIGhlaWdodCBiZXR3ZWVuIDIgcm93IGluZGV4ZXNcbiAgICovXG4gIHF1ZXJ5QmV0d2VlbihhdEluZGV4QTogbnVtYmVyLCBhdEluZGV4QjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeShhdEluZGV4QikgLSB0aGlzLnF1ZXJ5KGF0SW5kZXhBIC0gMSk7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gdGhlIFNjcm9sbFkgcG9zaXRpb24gaS5lLiBzdW0sIHByb3ZpZGUgdGhlIHJvd0luZGV4XG4gICAqIHRoYXQgaXMgcHJlc2VudCBpbiB0aGUgY3VycmVudCB2aWV3IHBvcnQuXG4gICAqL1xuICBwcml2YXRlIGNhbGNSb3dJbmRleChzdW06IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRyZWVBcnJheS5sZW5ndGgpIHJldHVybiAwO1xuXG4gICAgbGV0IHBvcyA9IC0xO1xuICAgIGNvbnN0IGRhdGFMZW5ndGggPSB0aGlzLnRyZWVBcnJheS5sZW5ndGg7XG5cbiAgICAvLyBHZXQgdGhlIGhpZ2hlc3QgYml0IGZvciB0aGUgYmxvY2sgc2l6ZS5cbiAgICBjb25zdCBoaWdoZXN0Qml0ID0gTWF0aC5wb3coMiwgZGF0YUxlbmd0aC50b1N0cmluZygyKS5sZW5ndGggLSAxKTtcblxuICAgIGZvciAobGV0IGJsb2NrU2l6ZSA9IGhpZ2hlc3RCaXQ7IGJsb2NrU2l6ZSAhPT0gMDsgYmxvY2tTaXplID4+PSAxKSB7XG4gICAgICBjb25zdCBuZXh0UG9zID0gcG9zICsgYmxvY2tTaXplO1xuICAgICAgaWYgKG5leHRQb3MgPCBkYXRhTGVuZ3RoICYmIHN1bSA+PSB0aGlzLnRyZWVBcnJheVtuZXh0UG9zXSkge1xuICAgICAgICBzdW0gLT0gdGhpcy50cmVlQXJyYXlbbmV4dFBvc107XG4gICAgICAgIHBvcyA9IG5leHRQb3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvcyArIDE7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export function selectRows(selected, row, comparefn) {
|
|
2
|
-
const selectedIndex = comparefn(row, selected);
|
|
3
|
-
if (selectedIndex > -1) {
|
|
4
|
-
selected.splice(selectedIndex, 1);
|
|
5
|
-
}
|
|
6
|
-
else {
|
|
7
|
-
selected.push(row);
|
|
8
|
-
}
|
|
9
|
-
return selected;
|
|
10
|
-
}
|
|
11
|
-
export function selectRowsBetween(selected, rows, index, prevIndex, comparefn) {
|
|
12
|
-
const reverse = index < prevIndex;
|
|
13
|
-
for (let i = 0; i < rows.length; i++) {
|
|
14
|
-
const row = rows[i];
|
|
15
|
-
const greater = i >= prevIndex && i <= index;
|
|
16
|
-
const lesser = i <= prevIndex && i >= index;
|
|
17
|
-
let range = { start: 0, end: 0 };
|
|
18
|
-
if (reverse) {
|
|
19
|
-
range = {
|
|
20
|
-
start: index,
|
|
21
|
-
end: prevIndex
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
range = {
|
|
26
|
-
start: prevIndex,
|
|
27
|
-
end: index + 1
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
if ((reverse && lesser) || (!reverse && greater)) {
|
|
31
|
-
// if in the positive range to be added to `selected`, and
|
|
32
|
-
// not already in the selected array, add it
|
|
33
|
-
if (i >= range.start && i <= range.end) {
|
|
34
|
-
selected.push(row);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return selected;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3N3aW1sYW5lL25neC1kYXRhdGFibGUvc3JjLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL3NlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsVUFBVSxDQUFDLFFBQWUsRUFBRSxHQUFRLEVBQUUsU0FBYztJQUNsRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRS9DLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQ3RCLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ25DO1NBQU07UUFDTCxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3BCO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsUUFBZSxFQUNmLElBQVcsRUFDWCxLQUFhLEVBQ2IsU0FBaUIsRUFDakIsU0FBYztJQUVkLE1BQU0sT0FBTyxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUM7SUFFbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDcEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7UUFFNUMsSUFBSSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxJQUFJLE9BQU8sRUFBRTtZQUNYLEtBQUssR0FBRztnQkFDTixLQUFLLEVBQUUsS0FBSztnQkFDWixHQUFHLEVBQUUsU0FBUzthQUNmLENBQUM7U0FDSDthQUFNO1lBQ0wsS0FBSyxHQUFHO2dCQUNOLEtBQUssRUFBRSxTQUFTO2dCQUNoQixHQUFHLEVBQUUsS0FBSyxHQUFHLENBQUM7YUFDZixDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEVBQUU7WUFDaEQsMERBQTBEO1lBQzFELDRDQUE0QztZQUM1QyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUN0QyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BCO1NBQ0Y7S0FDRjtJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gc2VsZWN0Um93cyhzZWxlY3RlZDogYW55W10sIHJvdzogYW55LCBjb21wYXJlZm46IGFueSkge1xuICBjb25zdCBzZWxlY3RlZEluZGV4ID0gY29tcGFyZWZuKHJvdywgc2VsZWN0ZWQpO1xuXG4gIGlmIChzZWxlY3RlZEluZGV4ID4gLTEpIHtcbiAgICBzZWxlY3RlZC5zcGxpY2Uoc2VsZWN0ZWRJbmRleCwgMSk7XG4gIH0gZWxzZSB7XG4gICAgc2VsZWN0ZWQucHVzaChyb3cpO1xuICB9XG5cbiAgcmV0dXJuIHNlbGVjdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0Um93c0JldHdlZW4oXG4gIHNlbGVjdGVkOiBhbnlbXSxcbiAgcm93czogYW55W10sXG4gIGluZGV4OiBudW1iZXIsXG4gIHByZXZJbmRleDogbnVtYmVyLFxuICBjb21wYXJlZm46IGFueVxuKTogYW55W10ge1xuICBjb25zdCByZXZlcnNlID0gaW5kZXggPCBwcmV2SW5kZXg7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICBjb25zdCBncmVhdGVyID0gaSA+PSBwcmV2SW5kZXggJiYgaSA8PSBpbmRleDtcbiAgICBjb25zdCBsZXNzZXIgPSBpIDw9IHByZXZJbmRleCAmJiBpID49IGluZGV4O1xuXG4gICAgbGV0IHJhbmdlID0geyBzdGFydDogMCwgZW5kOiAwIH07XG4gICAgaWYgKHJldmVyc2UpIHtcbiAgICAgIHJhbmdlID0ge1xuICAgICAgICBzdGFydDogaW5kZXgsXG4gICAgICAgIGVuZDogcHJldkluZGV4XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByYW5nZSA9IHtcbiAgICAgICAgc3RhcnQ6IHByZXZJbmRleCxcbiAgICAgICAgZW5kOiBpbmRleCArIDFcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKChyZXZlcnNlICYmIGxlc3NlcikgfHwgKCFyZXZlcnNlICYmIGdyZWF0ZXIpKSB7XG4gICAgICAvLyBpZiBpbiB0aGUgcG9zaXRpdmUgcmFuZ2UgdG8gYmUgYWRkZWQgdG8gYHNlbGVjdGVkYCwgYW5kXG4gICAgICAvLyBub3QgYWxyZWFkeSBpbiB0aGUgc2VsZWN0ZWQgYXJyYXksIGFkZCBpdFxuICAgICAgaWYgKGkgPj0gcmFuZ2Uuc3RhcnQgJiYgaSA8PSByYW5nZS5lbmQpIHtcbiAgICAgICAgc2VsZWN0ZWQucHVzaChyb3cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxlY3RlZDtcbn1cbiJdfQ==
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { getterForProp } from './column-prop-getters';
|
|
2
|
-
import { SortType } from '../types/sort.type';
|
|
3
|
-
import { SortDirection } from '../types/sort-direction.type';
|
|
4
|
-
/**
|
|
5
|
-
* Gets the next sort direction
|
|
6
|
-
*/
|
|
7
|
-
export function nextSortDir(sortType, current) {
|
|
8
|
-
if (sortType === SortType.single) {
|
|
9
|
-
if (current === SortDirection.asc) {
|
|
10
|
-
return SortDirection.desc;
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
return SortDirection.asc;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
if (!current) {
|
|
18
|
-
return SortDirection.asc;
|
|
19
|
-
}
|
|
20
|
-
else if (current === SortDirection.asc) {
|
|
21
|
-
return SortDirection.desc;
|
|
22
|
-
}
|
|
23
|
-
else if (current === SortDirection.desc) {
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
|
-
// avoid TS7030: Not all code paths return a value.
|
|
27
|
-
return undefined;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Adapted from fueld-ui on 6/216
|
|
32
|
-
* https://github.com/FuelInteractive/fuel-ui/tree/master/src/pipes/OrderBy
|
|
33
|
-
*/
|
|
34
|
-
export function orderByComparator(a, b) {
|
|
35
|
-
if (a === null || typeof a === 'undefined')
|
|
36
|
-
a = 0;
|
|
37
|
-
if (b === null || typeof b === 'undefined')
|
|
38
|
-
b = 0;
|
|
39
|
-
if (a instanceof Date && b instanceof Date) {
|
|
40
|
-
if (a < b)
|
|
41
|
-
return -1;
|
|
42
|
-
if (a > b)
|
|
43
|
-
return 1;
|
|
44
|
-
}
|
|
45
|
-
else if (isNaN(parseFloat(a)) || !isFinite(a) || isNaN(parseFloat(b)) || !isFinite(b)) {
|
|
46
|
-
// Convert to string in case of a=0 or b=0
|
|
47
|
-
a = String(a);
|
|
48
|
-
b = String(b);
|
|
49
|
-
// Isn't a number so lowercase the string to properly compare
|
|
50
|
-
if (a.toLowerCase() < b.toLowerCase())
|
|
51
|
-
return -1;
|
|
52
|
-
if (a.toLowerCase() > b.toLowerCase())
|
|
53
|
-
return 1;
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
// Parse strings as numbers to compare properly
|
|
57
|
-
if (parseFloat(a) < parseFloat(b))
|
|
58
|
-
return -1;
|
|
59
|
-
if (parseFloat(a) > parseFloat(b))
|
|
60
|
-
return 1;
|
|
61
|
-
}
|
|
62
|
-
// equal each other
|
|
63
|
-
return 0;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* creates a shallow copy of the `rows` input and returns the sorted copy. this function
|
|
67
|
-
* does not sort the `rows` argument in place
|
|
68
|
-
*/
|
|
69
|
-
export function sortRows(rows, columns, dirs) {
|
|
70
|
-
if (!rows)
|
|
71
|
-
return [];
|
|
72
|
-
if (!dirs || !dirs.length || !columns)
|
|
73
|
-
return [...rows];
|
|
74
|
-
/**
|
|
75
|
-
* record the row ordering of results from prior sort operations (if applicable)
|
|
76
|
-
* this is necessary to guarantee stable sorting behavior
|
|
77
|
-
*/
|
|
78
|
-
const rowToIndexMap = new Map();
|
|
79
|
-
rows.forEach((row, index) => rowToIndexMap.set(row, index));
|
|
80
|
-
const temp = [...rows];
|
|
81
|
-
const cols = columns.reduce((obj, col) => {
|
|
82
|
-
if (col.comparator && typeof col.comparator === 'function') {
|
|
83
|
-
obj[col.prop] = col.comparator;
|
|
84
|
-
}
|
|
85
|
-
return obj;
|
|
86
|
-
}, {});
|
|
87
|
-
// cache valueGetter and compareFn so that they
|
|
88
|
-
// do not need to be looked-up in the sort function body
|
|
89
|
-
const cachedDirs = dirs.map(dir => {
|
|
90
|
-
const prop = dir.prop;
|
|
91
|
-
return {
|
|
92
|
-
prop,
|
|
93
|
-
dir: dir.dir,
|
|
94
|
-
valueGetter: getterForProp(prop),
|
|
95
|
-
compareFn: cols[prop] || orderByComparator
|
|
96
|
-
};
|
|
97
|
-
});
|
|
98
|
-
return temp.sort(function (rowA, rowB) {
|
|
99
|
-
for (const cachedDir of cachedDirs) {
|
|
100
|
-
// Get property and valuegetters for column to be sorted
|
|
101
|
-
const { prop, valueGetter } = cachedDir;
|
|
102
|
-
// Get A and B cell values from rows based on properties of the columns
|
|
103
|
-
const propA = valueGetter(rowA, prop);
|
|
104
|
-
const propB = valueGetter(rowB, prop);
|
|
105
|
-
// Compare function gets five parameters:
|
|
106
|
-
// Two cell values to be compared as propA and propB
|
|
107
|
-
// Two rows corresponding to the cells as rowA and rowB
|
|
108
|
-
// Direction of the sort for this column as SortDirection
|
|
109
|
-
// Compare can be a standard JS comparison function (a,b) => -1|0|1
|
|
110
|
-
// as additional parameters are silently ignored. The whole row and sort
|
|
111
|
-
// direction enable more complex sort logic.
|
|
112
|
-
const comparison = cachedDir.dir !== SortDirection.desc
|
|
113
|
-
? cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir)
|
|
114
|
-
: -cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir);
|
|
115
|
-
// Don't return 0 yet in case of needing to sort by next property
|
|
116
|
-
if (comparison !== 0)
|
|
117
|
-
return comparison;
|
|
118
|
-
}
|
|
119
|
-
if (!(rowToIndexMap.has(rowA) && rowToIndexMap.has(rowB)))
|
|
120
|
-
return 0;
|
|
121
|
-
/**
|
|
122
|
-
* all else being equal, preserve original order of the rows (stable sort)
|
|
123
|
-
*/
|
|
124
|
-
return rowToIndexMap.get(rowA) < rowToIndexMap.get(rowB) ? -1 : 1;
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zd2ltbGFuZS9uZ3gtZGF0YXRhYmxlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9zb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxRQUFrQixFQUFFLE9BQXNCO0lBQ3BFLElBQUksUUFBUSxLQUFLLFFBQVEsQ0FBQyxNQUFNLEVBQUU7UUFDaEMsSUFBSSxPQUFPLEtBQUssYUFBYSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUM7U0FDM0I7YUFBTTtZQUNMLE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQztTQUMxQjtLQUNGO1NBQU07UUFDTCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDO1NBQzFCO2FBQU0sSUFBSSxPQUFPLEtBQUssYUFBYSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUM7U0FDM0I7YUFBTSxJQUFJLE9BQU8sS0FBSyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQ3pDLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBQ0QsbURBQW1EO1FBQ25ELE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxDQUFNLEVBQUUsQ0FBTTtJQUM5QyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssV0FBVztRQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFD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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXR0ZXJGb3JQcm9wIH0gZnJvbSAnLi9jb2x1bW4tcHJvcC1nZXR0ZXJzJztcbmltcG9ydCB7IFNvcnRUeXBlIH0gZnJvbSAnLi4vdHlwZXMvc29ydC50eXBlJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi90eXBlcy9zb3J0LWRpcmVjdGlvbi50eXBlJztcbmltcG9ydCB7IFNvcnRQcm9wRGlyIH0gZnJvbSAnLi4vdHlwZXMvc29ydC1wcm9wLWRpci50eXBlJztcbi8qKlxuICogR2V0cyB0aGUgbmV4dCBzb3J0IGRpcmVjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dFNvcnREaXIoc29ydFR5cGU6IFNvcnRUeXBlLCBjdXJyZW50OiBTb3J0RGlyZWN0aW9uKTogU29ydERpcmVjdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGlmIChzb3J0VHlwZSA9PT0gU29ydFR5cGUuc2luZ2xlKSB7XG4gICAgaWYgKGN1cnJlbnQgPT09IFNvcnREaXJlY3Rpb24uYXNjKSB7XG4gICAgICByZXR1cm4gU29ydERpcmVjdGlvbi5kZXNjO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gU29ydERpcmVjdGlvbi5hc2M7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICghY3VycmVudCkge1xuICAgICAgcmV0dXJuIFNvcnREaXJlY3Rpb24uYXNjO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudCA9PT0gU29ydERpcmVjdGlvbi5hc2MpIHtcbiAgICAgIHJldHVybiBTb3J0RGlyZWN0aW9uLmRlc2M7XG4gICAgfSBlbHNlIGlmIChjdXJyZW50ID09PSBTb3J0RGlyZWN0aW9uLmRlc2MpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIGF2b2lkIFRTNzAzMDogTm90IGFsbCBjb2RlIHBhdGhzIHJldHVybiBhIHZhbHVlLlxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBBZGFwdGVkIGZyb20gZnVlbGQtdWkgb24gNi8yMTZcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9GdWVsSW50ZXJhY3RpdmUvZnVlbC11aS90cmVlL21hc3Rlci9zcmMvcGlwZXMvT3JkZXJCeVxuICovXG5leHBvcnQgZnVuY3Rpb24gb3JkZXJCeUNvbXBhcmF0b3IoYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xuICBpZiAoYSA9PT0gbnVsbCB8fCB0eXBlb2YgYSA9PT0gJ3VuZGVmaW5lZCcpIGEgPSAwO1xuICBpZiAoYiA9PT0gbnVsbCB8fCB0eXBlb2YgYiA9PT0gJ3VuZGVmaW5lZCcpIGIgPSAwO1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9IGVsc2UgaWYgKGlzTmFOKHBhcnNlRmxvYXQoYSkpIHx8ICFpc0Zpbml0ZShhKSB8fCBpc05hTihwYXJzZUZsb2F0KGIpKSB8fCAhaXNGaW5pdGUoYikpIHtcbiAgICAvLyBDb252ZXJ0IHRvIHN0cmluZyBpbiBjYXNlIG9mIGE9MCBvciBiPTBcbiAgICBhID0gU3RyaW5nKGEpO1xuICAgIGIgPSBTdHJpbmcoYik7XG4gICAgLy8gSXNuJ3QgYSBudW1iZXIgc28gbG93ZXJjYXNlIHRoZSBzdHJpbmcgdG8gcHJvcGVybHkgY29tcGFyZVxuICAgIGlmIChhLnRvTG93ZXJDYXNlKCkgPCBiLnRvTG93ZXJDYXNlKCkpIHJldHVybiAtMTtcbiAgICBpZiAoYS50b0xvd2VyQ2FzZSgpID4gYi50b0xvd2VyQ2FzZSgpKSByZXR1cm4gMTtcbiAgfSBlbHNlIHtcbiAgICAvLyBQYXJzZSBzdHJpbmdzIGFzIG51bWJlcnMgdG8gY29tcGFyZSBwcm9wZXJseVxuICAgIGlmIChwYXJzZUZsb2F0KGEpIDwgcGFyc2VGbG9hdChiKSkgcmV0dXJuIC0xO1xuICAgIGlmIChwYXJzZUZsb2F0KGEpID4gcGFyc2VGbG9hdChiKSkgcmV0dXJuIDE7XG4gIH1cblxuICAvLyBlcXVhbCBlYWNoIG90aGVyXG4gIHJldHVybiAwO1xufVxuXG4vKipcbiAqIGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIGByb3dzYCBpbnB1dCBhbmQgcmV0dXJucyB0aGUgc29ydGVkIGNvcHkuIHRoaXMgZnVuY3Rpb25cbiAqIGRvZXMgbm90IHNvcnQgdGhlIGByb3dzYCBhcmd1bWVudCBpbiBwbGFjZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFJvd3Mocm93czogYW55W10sIGNvbHVtbnM6IGFueVtdLCBkaXJzOiBTb3J0UHJvcERpcltdKTogYW55W10ge1xuICBpZiAoIXJvd3MpIHJldHVybiBbXTtcbiAgaWYgKCFkaXJzIHx8ICFkaXJzLmxlbmd0aCB8fCAhY29sdW1ucykgcmV0dXJuIFsuLi5yb3dzXTtcblxuICAvKipcbiAgICogcmVjb3JkIHRoZSByb3cgb3JkZXJpbmcgb2YgcmVzdWx0cyBmcm9tIHByaW9yIHNvcnQgb3BlcmF0aW9ucyAoaWYgYXBwbGljYWJsZSlcbiAgICogdGhpcyBpcyBuZWNlc3NhcnkgdG8gZ3VhcmFudGVlIHN0YWJsZSBzb3J0aW5nIGJlaGF2aW9yXG4gICAqL1xuICBjb25zdCByb3dUb0luZGV4TWFwID0gbmV3IE1hcDxhbnksIG51bWJlcj4oKTtcbiAgcm93cy5mb3JFYWNoKChyb3csIGluZGV4KSA9PiByb3dUb0luZGV4TWFwLnNldChyb3csIGluZGV4KSk7XG5cbiAgY29uc3QgdGVtcCA9IFsuLi5yb3dzXTtcbiAgY29uc3QgY29scyA9IGNvbHVtbnMucmVkdWNlKChvYmosIGNvbCkgPT4ge1xuICAgIGlmIChjb2wuY29tcGFyYXRvciAmJiB0eXBlb2YgY29sLmNvbXBhcmF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG9ialtjb2wucHJvcF0gPSBjb2wuY29tcGFyYXRvcjtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSwge30pO1xuXG4gIC8vIGNhY2hlIHZhbHVlR2V0dGVyIGFuZCBjb21wYXJlRm4gc28gdGhhdCB0aGV5XG4gIC8vIGRvIG5vdCBuZWVkIHRvIGJlIGxvb2tlZC11cCBpbiB0aGUgc29ydCBmdW5jdGlvbiBib2R5XG4gIGNvbnN0IGNhY2hlZERpcnMgPSBkaXJzLm1hcChkaXIgPT4ge1xuICAgIGNvbnN0IHByb3AgPSBkaXIucHJvcDtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvcCxcbiAgICAgIGRpcjogZGlyLmRpcixcbiAgICAgIHZhbHVlR2V0dGVyOiBnZXR0ZXJGb3JQcm9wKHByb3ApLFxuICAgICAgY29tcGFyZUZuOiBjb2xzW3Byb3BdIHx8IG9yZGVyQnlDb21wYXJhdG9yXG4gICAgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlbXAuc29ydChmdW5jdGlvbiAocm93QTogYW55LCByb3dCOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGNhY2hlZERpciBvZiBjYWNoZWREaXJzKSB7XG4gICAgICAvLyBHZXQgcHJvcGVydHkgYW5kIHZhbHVlZ2V0dGVycyBmb3IgY29sdW1uIHRvIGJlIHNvcnRlZFxuICAgICAgY29uc3QgeyBwcm9wLCB2YWx1ZUdldHRlciB9ID0gY2FjaGVkRGlyO1xuICAgICAgLy8gR2V0IEEgYW5kIEIgY2VsbCB2YWx1ZXMgZnJvbSByb3dzIGJhc2VkIG9uIHByb3BlcnRpZXMgb2YgdGhlIGNvbHVtbnNcbiAgICAgIGNvbnN0IHByb3BBID0gdmFsdWVHZXR0ZXIocm93QSwgcHJvcCk7XG4gICAgICBjb25zdCBwcm9wQiA9IHZhbHVlR2V0dGVyKHJvd0IsIHByb3ApO1xuXG4gICAgICAvLyBDb21wYXJlIGZ1bmN0aW9uIGdldHMgZml2ZSBwYXJhbWV0ZXJzOlxuICAgICAgLy8gVHdvIGNlbGwgdmFsdWVzIHRvIGJlIGNvbXBhcmVkIGFzIHByb3BBIGFuZCBwcm9wQlxuICAgICAgLy8gVHdvIHJvd3MgY29ycmVzcG9uZGluZyB0byB0aGUgY2VsbHMgYXMgcm93QSBhbmQgcm93QlxuICAgICAgLy8gRGlyZWN0aW9uIG9mIHRoZSBzb3J0IGZvciB0aGlzIGNvbHVtbiBhcyBTb3J0RGlyZWN0aW9uXG4gICAgICAvLyBDb21wYXJlIGNhbiBiZSBhIHN0YW5kYXJkIEpTIGNvbXBhcmlzb24gZnVuY3Rpb24gKGEsYikgPT4gLTF8MHwxXG4gICAgICAvLyBhcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgYXJlIHNpbGVudGx5IGlnbm9yZWQuIFRoZSB3aG9sZSByb3cgYW5kIHNvcnRcbiAgICAgIC8vIGRpcmVjdGlvbiBlbmFibGUgbW9yZSBjb21wbGV4IHNvcnQgbG9naWMuXG4gICAgICBjb25zdCBjb21wYXJpc29uID1cbiAgICAgICAgY2FjaGVkRGlyLmRpciAhPT0gU29ydERpcmVjdGlvbi5kZXNjXG4gICAgICAgICAgPyBjYWNoZWREaXIuY29tcGFyZUZuKHByb3BBLCBwcm9wQiwgcm93QSwgcm93QiwgY2FjaGVkRGlyLmRpcilcbiAgICAgICAgICA6IC1jYWNoZWREaXIuY29tcGFyZUZuKHByb3BBLCBwcm9wQiwgcm93QSwgcm93QiwgY2FjaGVkRGlyLmRpcik7XG5cbiAgICAgIC8vIERvbid0IHJldHVybiAwIHlldCBpbiBjYXNlIG9mIG5lZWRpbmcgdG8gc29ydCBieSBuZXh0IHByb3BlcnR5XG4gICAgICBpZiAoY29tcGFyaXNvbiAhPT0gMCkgcmV0dXJuIGNvbXBhcmlzb247XG4gICAgfVxuXG4gICAgaWYgKCEocm93VG9JbmRleE1hcC5oYXMocm93QSkgJiYgcm93VG9JbmRleE1hcC5oYXMocm93QikpKSByZXR1cm4gMDtcblxuICAgIC8qKlxuICAgICAqIGFsbCBlbHNlIGJlaW5nIGVxdWFsLCBwcmVzZXJ2ZSBvcmlnaW5hbCBvcmRlciBvZiB0aGUgcm93cyAoc3RhYmxlIHNvcnQpXG4gICAgICovXG4gICAgcmV0dXJuIHJvd1RvSW5kZXhNYXAuZ2V0KHJvd0EpIDwgcm93VG9JbmRleE1hcC5nZXQocm93QikgPyAtMSA6IDE7XG4gIH0pO1xufVxuIl19
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Throttle a function
|
|
3
|
-
*/
|
|
4
|
-
export function throttle(func, wait, options) {
|
|
5
|
-
options = options || {};
|
|
6
|
-
let context;
|
|
7
|
-
let args;
|
|
8
|
-
let result;
|
|
9
|
-
let timeout = null;
|
|
10
|
-
let previous = 0;
|
|
11
|
-
function later() {
|
|
12
|
-
previous = options.leading === false ? 0 : +new Date();
|
|
13
|
-
timeout = null;
|
|
14
|
-
result = func.apply(context, args);
|
|
15
|
-
}
|
|
16
|
-
return function () {
|
|
17
|
-
const now = +new Date();
|
|
18
|
-
if (!previous && options.leading === false) {
|
|
19
|
-
previous = now;
|
|
20
|
-
}
|
|
21
|
-
const remaining = wait - (now - previous);
|
|
22
|
-
context = this;
|
|
23
|
-
args = arguments;
|
|
24
|
-
if (remaining <= 0) {
|
|
25
|
-
clearTimeout(timeout);
|
|
26
|
-
timeout = null;
|
|
27
|
-
previous = now;
|
|
28
|
-
result = func.apply(context, args);
|
|
29
|
-
}
|
|
30
|
-
else if (!timeout && options.trailing !== false) {
|
|
31
|
-
timeout = setTimeout(later, remaining);
|
|
32
|
-
}
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Throttle decorator
|
|
38
|
-
*
|
|
39
|
-
* class MyClass {
|
|
40
|
-
* throttleable(10)
|
|
41
|
-
* myFn() { ... }
|
|
42
|
-
* }
|
|
43
|
-
*/
|
|
44
|
-
export function throttleable(duration, options) {
|
|
45
|
-
return function innerDecorator(target, key, descriptor) {
|
|
46
|
-
return {
|
|
47
|
-
configurable: true,
|
|
48
|
-
enumerable: descriptor.enumerable,
|
|
49
|
-
get: function getter() {
|
|
50
|
-
Object.defineProperty(this, key, {
|
|
51
|
-
configurable: true,
|
|
52
|
-
enumerable: descriptor.enumerable,
|
|
53
|
-
value: throttle(descriptor.value, duration, options)
|
|
54
|
-
});
|
|
55
|
-
return this[key];
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3R0bGUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3dpbWxhbmUvbmd4LWRhdGF0YWJsZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvdGhyb3R0bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQVMsRUFBRSxJQUFZLEVBQUUsT0FBYTtJQUM3RCxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUN4QixJQUFJLE9BQVksQ0FBQztJQUNqQixJQUFJLElBQVMsQ0FBQztJQUNkLElBQUksTUFBVyxDQUFDO0lBQ2hCLElBQUksT0FBTyxHQUFRLElBQUksQ0FBQztJQUN4QixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFakIsU0FBUyxLQUFLO1FBQ1osUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2RCxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7WUFDMUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztTQUNoQjtRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUVqQixJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUU7WUFDbEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDZixRQUFRLEdBQUcsR0FBRyxDQUFDO1lBQ2YsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BDO2FBQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRTtZQUNqRCxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN4QztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxRQUFnQixFQUFFLE9BQWE7SUFDMUQsT0FBTyxTQUFTLGNBQWMsQ0FBQyxNQUFXLEVBQUUsR0FBZ0IsRUFBRSxVQUE4QjtRQUMxRixPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUk7WUFDbEIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVO1lBQ2pDLEdBQUcsRUFBRSxTQUFTLE1BQU07Z0JBQ2xCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtvQkFDL0IsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtvQkFDakMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUM7aUJBQ3JELENBQUMsQ0FBQztnQkFFSCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRocm90dGxlIGEgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRocm90dGxlKGZ1bmM6IGFueSwgd2FpdDogbnVtYmVyLCBvcHRpb25zPzogYW55KSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsZXQgY29udGV4dDogYW55O1xuICBsZXQgYXJnczogYW55O1xuICBsZXQgcmVzdWx0OiBhbnk7XG4gIGxldCB0aW1lb3V0OiBhbnkgPSBudWxsO1xuICBsZXQgcHJldmlvdXMgPSAwO1xuXG4gIGZ1bmN0aW9uIGxhdGVyKCkge1xuICAgIHByZXZpb3VzID0gb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSA/IDAgOiArbmV3IERhdGUoKTtcbiAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICBjb25zdCBub3cgPSArbmV3IERhdGUoKTtcblxuICAgIGlmICghcHJldmlvdXMgJiYgb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSkge1xuICAgICAgcHJldmlvdXMgPSBub3c7XG4gICAgfVxuXG4gICAgY29uc3QgcmVtYWluaW5nID0gd2FpdCAtIChub3cgLSBwcmV2aW91cyk7XG4gICAgY29udGV4dCA9IHRoaXM7XG4gICAgYXJncyA9IGFyZ3VtZW50cztcblxuICAgIGlmIChyZW1haW5pbmcgPD0gMCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICBwcmV2aW91cyA9IG5vdztcbiAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgfSBlbHNlIGlmICghdGltZW91dCAmJiBvcHRpb25zLnRyYWlsaW5nICE9PSBmYWxzZSkge1xuICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHJlbWFpbmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuLyoqXG4gKiBUaHJvdHRsZSBkZWNvcmF0b3JcbiAqXG4gKiAgY2xhc3MgTXlDbGFzcyB7XG4gKiAgICB0aHJvdHRsZWFibGUoMTApXG4gKiAgICBteUZuKCkgeyAuLi4gfVxuICogIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRocm90dGxlYWJsZShkdXJhdGlvbjogbnVtYmVyLCBvcHRpb25zPzogYW55KSB7XG4gIHJldHVybiBmdW5jdGlvbiBpbm5lckRlY29yYXRvcih0YXJnZXQ6IGFueSwga2V5OiBQcm9wZXJ0eUtleSwgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IGRlc2NyaXB0b3IuZW51bWVyYWJsZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0dGVyKCkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywga2V5LCB7XG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGVudW1lcmFibGU6IGRlc2NyaXB0b3IuZW51bWVyYWJsZSxcbiAgICAgICAgICB2YWx1ZTogdGhyb3R0bGUoZGVzY3JpcHRvci52YWx1ZSwgZHVyYXRpb24sIG9wdGlvbnMpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzW2tleV07XG4gICAgICB9XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { getVendorPrefixedName } from './prefixes';
|
|
2
|
-
import { camelCase } from './camel-case';
|
|
3
|
-
// browser detection and prefixing tools
|
|
4
|
-
const transform = typeof window !== 'undefined' ? getVendorPrefixedName('transform') : undefined;
|
|
5
|
-
const backfaceVisibility = typeof window !== 'undefined' ? getVendorPrefixedName('backfaceVisibility') : undefined;
|
|
6
|
-
const hasCSSTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('transform') : undefined;
|
|
7
|
-
const hasCSS3DTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('perspective') : undefined;
|
|
8
|
-
const ua = typeof window !== 'undefined' ? window.navigator.userAgent : 'Chrome';
|
|
9
|
-
const isSafari = /Safari\//.test(ua) && !/Chrome\//.test(ua);
|
|
10
|
-
export function translateXY(styles, x, y) {
|
|
11
|
-
if (typeof transform !== 'undefined' && hasCSSTransforms) {
|
|
12
|
-
if (!isSafari && hasCSS3DTransforms) {
|
|
13
|
-
styles[transform] = `translate3d(${x}px, ${y}px, 0)`;
|
|
14
|
-
styles[backfaceVisibility] = 'hidden';
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
styles[camelCase(transform)] = `translate(${x}px, ${y}px)`;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
styles.top = `${y}px`;
|
|
22
|
-
styles.left = `${x}px`;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3N3aW1sYW5lL25neC1kYXRhdGFibGUvc3JjLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL3RyYW5zbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6Qyx3Q0FBd0M7QUFDeEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2pHLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDbkgsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzFHLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM5RyxNQUFNLEVBQUUsR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDakYsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFN0QsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFXLEVBQUUsQ0FBUyxFQUFFLENBQVM7SUFDM0QsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksZ0JBQWdCLEVBQUU7UUFDeEQsSUFBSSxDQUFDLFFBQVEsSUFBSSxrQkFBa0IsRUFBRTtZQUNuQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDckQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQ3ZDO2FBQU07WUFDTCxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDNUQ7S0FDRjtTQUFNO1FBQ0wsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztLQUN4QjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRWZW5kb3JQcmVmaXhlZE5hbWUgfSBmcm9tICcuL3ByZWZpeGVzJztcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gJy4vY2FtZWwtY2FzZSc7XG5cbi8vIGJyb3dzZXIgZGV0ZWN0aW9uIGFuZCBwcmVmaXhpbmcgdG9vbHNcbmNvbnN0IHRyYW5zZm9ybSA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gZ2V0VmVuZG9yUHJlZml4ZWROYW1lKCd0cmFuc2Zvcm0nKSA6IHVuZGVmaW5lZDtcbmNvbnN0IGJhY2tmYWNlVmlzaWJpbGl0eSA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gZ2V0VmVuZG9yUHJlZml4ZWROYW1lKCdiYWNrZmFjZVZpc2liaWxpdHknKSA6IHVuZGVmaW5lZDtcbmNvbnN0IGhhc0NTU1RyYW5zZm9ybXMgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/ICEhZ2V0VmVuZG9yUHJlZml4ZWROYW1lKCd0cmFuc2Zvcm0nKSA6IHVuZGVmaW5lZDtcbmNvbnN0IGhhc0NTUzNEVHJhbnNmb3JtcyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gISFnZXRWZW5kb3JQcmVmaXhlZE5hbWUoJ3BlcnNwZWN0aXZlJykgOiB1bmRlZmluZWQ7XG5jb25zdCB1YSA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQgOiAnQ2hyb21lJztcbmNvbnN0IGlzU2FmYXJpID0gL1NhZmFyaVxcLy8udGVzdCh1YSkgJiYgIS9DaHJvbWVcXC8vLnRlc3QodWEpO1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlWFkoc3R5bGVzOiBhbnksIHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gIGlmICh0eXBlb2YgdHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJyAmJiBoYXNDU1NUcmFuc2Zvcm1zKSB7XG4gICAgaWYgKCFpc1NhZmFyaSAmJiBoYXNDU1MzRFRyYW5zZm9ybXMpIHtcbiAgICAgIHN0eWxlc1t0cmFuc2Zvcm1dID0gYHRyYW5zbGF0ZTNkKCR7eH1weCwgJHt5fXB4LCAwKWA7XG4gICAgICBzdHlsZXNbYmFja2ZhY2VWaXNpYmlsaXR5XSA9ICdoaWRkZW4nO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXNbY2FtZWxDYXNlKHRyYW5zZm9ybSldID0gYHRyYW5zbGF0ZSgke3h9cHgsICR7eX1weClgO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzdHlsZXMudG9wID0gYCR7eX1weGA7XG4gICAgc3R5bGVzLmxlZnQgPSBgJHt4fXB4YDtcbiAgfVxufVxuIl19
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { getterForProp } from './column-prop-getters';
|
|
2
|
-
export function optionalGetterForProp(prop) {
|
|
3
|
-
return prop && (row => getterForProp(prop)(row, prop));
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* This functions rearrange items by their parents
|
|
7
|
-
* Also sets the level value to each of the items
|
|
8
|
-
*
|
|
9
|
-
* Note: Expecting each item has a property called parentId
|
|
10
|
-
* Note: This algorithm will fail if a list has two or more items with same ID
|
|
11
|
-
* NOTE: This algorithm will fail if there is a deadlock of relationship
|
|
12
|
-
*
|
|
13
|
-
* For example,
|
|
14
|
-
*
|
|
15
|
-
* Input
|
|
16
|
-
*
|
|
17
|
-
* id -> parent
|
|
18
|
-
* 1 -> 0
|
|
19
|
-
* 2 -> 0
|
|
20
|
-
* 3 -> 1
|
|
21
|
-
* 4 -> 1
|
|
22
|
-
* 5 -> 2
|
|
23
|
-
* 7 -> 8
|
|
24
|
-
* 6 -> 3
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* Output
|
|
28
|
-
* id -> level
|
|
29
|
-
* 1 -> 0
|
|
30
|
-
* --3 -> 1
|
|
31
|
-
* ----6 -> 2
|
|
32
|
-
* --4 -> 1
|
|
33
|
-
* 2 -> 0
|
|
34
|
-
* --5 -> 1
|
|
35
|
-
* 7 -> 8
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* @param rows
|
|
39
|
-
*
|
|
40
|
-
*/
|
|
41
|
-
export function groupRowsByParents(rows, from, to) {
|
|
42
|
-
if (from && to) {
|
|
43
|
-
const nodeById = {};
|
|
44
|
-
const l = rows.length;
|
|
45
|
-
let node = null;
|
|
46
|
-
nodeById[0] = new TreeNode(); // that's the root node
|
|
47
|
-
const uniqIDs = rows.reduce((arr, item) => {
|
|
48
|
-
const toValue = to(item);
|
|
49
|
-
if (arr.indexOf(toValue) === -1) {
|
|
50
|
-
arr.push(toValue);
|
|
51
|
-
}
|
|
52
|
-
return arr;
|
|
53
|
-
}, []);
|
|
54
|
-
for (let i = 0; i < l; i++) {
|
|
55
|
-
// make TreeNode objects for each item
|
|
56
|
-
nodeById[to(rows[i])] = new TreeNode(rows[i]);
|
|
57
|
-
}
|
|
58
|
-
for (let i = 0; i < l; i++) {
|
|
59
|
-
// link all TreeNode objects
|
|
60
|
-
node = nodeById[to(rows[i])];
|
|
61
|
-
let parent = 0;
|
|
62
|
-
const fromValue = from(node.row);
|
|
63
|
-
if (!!fromValue && uniqIDs.indexOf(fromValue) > -1) {
|
|
64
|
-
parent = fromValue;
|
|
65
|
-
}
|
|
66
|
-
node.parent = nodeById[parent];
|
|
67
|
-
node.row['level'] = node.parent.row['level'] + 1;
|
|
68
|
-
node.parent.children.push(node);
|
|
69
|
-
}
|
|
70
|
-
let resolvedRows = [];
|
|
71
|
-
nodeById[0].flatten(function () {
|
|
72
|
-
resolvedRows = [...resolvedRows, this.row];
|
|
73
|
-
}, true);
|
|
74
|
-
return resolvedRows;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
return rows;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
class TreeNode {
|
|
81
|
-
constructor(row = null) {
|
|
82
|
-
if (!row) {
|
|
83
|
-
row = {
|
|
84
|
-
level: -1,
|
|
85
|
-
treeStatus: 'expanded'
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
this.row = row;
|
|
89
|
-
this.parent = null;
|
|
90
|
-
this.children = [];
|
|
91
|
-
}
|
|
92
|
-
flatten(f, recursive) {
|
|
93
|
-
if (this.row['treeStatus'] === 'expanded') {
|
|
94
|
-
for (let i = 0, l = this.children.length; i < l; i++) {
|
|
95
|
-
const child = this.children[i];
|
|
96
|
-
f.apply(child, Array.prototype.slice.call(arguments, 2));
|
|
97
|
-
if (recursive)
|
|
98
|
-
child.flatten.apply(child, arguments);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zd2ltbGFuZS9uZ3gtZGF0YXRhYmxlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi91dGlscy90cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUl0RCxNQUFNLFVBQVUscUJBQXFCLENBQUMsSUFBcUI7SUFDekQsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQVcsRUFBRSxJQUEwQixFQUFFLEVBQXdCO0lBQ2xHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRTtRQUNkLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3RCLElBQUksSUFBSSxHQUFvQixJQUFJLENBQUM7UUFFakMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyx1QkFBdUI7UUFFckQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUN4QyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ25CO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFUCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFCLHNDQUFzQztZQUN0QyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0M7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFCLDRCQUE0QjtZQUM1QixJQUFJLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNmLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xELE1BQU0sR0FBRyxTQUFTLENBQUM7YUFDcEI7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7UUFFRCxJQUFJLFlBQVksR0FBVSxFQUFFLENBQUM7UUFDN0IsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNsQixZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRVQsT0FBTyxZQUFZLENBQUM7S0FDckI7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBRUQsTUFBTSxRQUFRO0lBS1osWUFBWSxNQUFrQixJQUFJO1FBQ2hDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixHQUFHLEdBQUc7Z0JBQ0osS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDVCxVQUFVLEVBQUUsVUFBVTthQUN2QixDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBTSxFQUFFLFNBQWtCO1FBQ2hDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxVQUFVLEVBQUU7WUFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekQsSUFBSSxTQUFTO29CQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQzthQUN0RDtTQUNGO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0dGVyRm9yUHJvcCB9IGZyb20gJy4vY29sdW1uLXByb3AtZ2V0dGVycyc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtblByb3AgfSBmcm9tICcuLi90eXBlcy90YWJsZS1jb2x1bW4udHlwZSc7XG5cbmV4cG9ydCB0eXBlIE9wdGlvbmFsVmFsdWVHZXR0ZXIgPSAocm93OiBhbnkpID0+IGFueSB8IHVuZGVmaW5lZDtcbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbEdldHRlckZvclByb3AocHJvcDogVGFibGVDb2x1bW5Qcm9wKTogT3B0aW9uYWxWYWx1ZUdldHRlciB7XG4gIHJldHVybiBwcm9wICYmIChyb3cgPT4gZ2V0dGVyRm9yUHJvcChwcm9wKShyb3csIHByb3ApKTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9ucyByZWFycmFuZ2UgaXRlbXMgYnkgdGhlaXIgcGFyZW50c1xuICogQWxzbyBzZXRzIHRoZSBsZXZlbCB2YWx1ZSB0byBlYWNoIG9mIHRoZSBpdGVtc1xuICpcbiAqIE5vdGU6IEV4cGVjdGluZyBlYWNoIGl0ZW0gaGFzIGEgcHJvcGVydHkgY2FsbGVkIHBhcmVudElkXG4gKiBOb3RlOiBUaGlzIGFsZ29yaXRobSB3aWxsIGZhaWwgaWYgYSBsaXN0IGhhcyB0d28gb3IgbW9yZSBpdGVtcyB3aXRoIHNhbWUgSURcbiAqIE5PVEU6IFRoaXMgYWxnb3JpdGhtIHdpbGwgZmFpbCBpZiB0aGVyZSBpcyBhIGRlYWRsb2NrIG9mIHJlbGF0aW9uc2hpcFxuICpcbiAqIEZvciBleGFtcGxlLFxuICpcbiAqIElucHV0XG4gKlxuICogaWQgLT4gcGFyZW50XG4gKiAxICAtPiAwXG4gKiAyICAtPiAwXG4gKiAzICAtPiAxXG4gKiA0ICAtPiAxXG4gKiA1ICAtPiAyXG4gKiA3ICAtPiA4XG4gKiA2ICAtPiAzXG4gKlxuICpcbiAqIE91dHB1dFxuICogaWQgLT4gbGV2ZWxcbiAqIDEgICAgICAtPiAwXG4gKiAtLTMgICAgLT4gMVxuICogLS0tLTYgIC0+IDJcbiAqIC0tNCAgICAtPiAxXG4gKiAyICAgICAgLT4gMFxuICogLS01ICAgIC0+IDFcbiAqIDcgICAgIC0+IDhcbiAqXG4gKlxuICogQHBhcmFtIHJvd3NcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncm91cFJvd3NCeVBhcmVudHMocm93czogYW55W10sIGZyb20/OiBPcHRpb25hbFZhbHVlR2V0dGVyLCB0bz86IE9wdGlvbmFsVmFsdWVHZXR0ZXIpOiBhbnlbXSB7XG4gIGlmIChmcm9tICYmIHRvKSB7XG4gICAgY29uc3Qgbm9kZUJ5SWQgPSB7fTtcbiAgICBjb25zdCBsID0gcm93cy5sZW5ndGg7XG4gICAgbGV0IG5vZGU6IFRyZWVOb2RlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBub2RlQnlJZFswXSA9IG5ldyBUcmVlTm9kZSgpOyAvLyB0aGF0J3MgdGhlIHJvb3Qgbm9kZVxuXG4gICAgY29uc3QgdW5pcUlEcyA9IHJvd3MucmVkdWNlKChhcnIsIGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHRvVmFsdWUgPSB0byhpdGVtKTtcbiAgICAgIGlmIChhcnIuaW5kZXhPZih0b1ZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgYXJyLnB1c2godG9WYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH0sIFtdKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAvLyBtYWtlIFRyZWVOb2RlIG9iamVjdHMgZm9yIGVhY2ggaXRlbVxuICAgICAgbm9kZUJ5SWRbdG8ocm93c1tpXSldID0gbmV3IFRyZWVOb2RlKHJvd3NbaV0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAvLyBsaW5rIGFsbCBUcmVlTm9kZSBvYmplY3RzXG4gICAgICBub2RlID0gbm9kZUJ5SWRbdG8ocm93c1tpXSldO1xuICAgICAgbGV0IHBhcmVudCA9IDA7XG4gICAgICBjb25zdCBmcm9tVmFsdWUgPSBmcm9tKG5vZGUucm93KTtcbiAgICAgIGlmICghIWZyb21WYWx1ZSAmJiB1bmlxSURzLmluZGV4T2YoZnJvbVZhbHVlKSA+IC0xKSB7XG4gICAgICAgIHBhcmVudCA9IGZyb21WYWx1ZTtcbiAgICAgIH1cbiAgICAgIG5vZGUucGFyZW50ID0gbm9kZUJ5SWRbcGFyZW50XTtcbiAgICAgIG5vZGUucm93WydsZXZlbCddID0gbm9kZS5wYXJlbnQucm93WydsZXZlbCddICsgMTtcbiAgICAgIG5vZGUucGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgfVxuXG4gICAgbGV0IHJlc29sdmVkUm93czogYW55W10gPSBbXTtcbiAgICBub2RlQnlJZFswXS5mbGF0dGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlc29sdmVkUm93cyA9IFsuLi5yZXNvbHZlZFJvd3MsIHRoaXMucm93XTtcbiAgICB9LCB0cnVlKTtcblxuICAgIHJldHVybiByZXNvbHZlZFJvd3M7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cbn1cblxuY2xhc3MgVHJlZU5vZGUge1xuICBwdWJsaWMgcm93OiBhbnk7XG4gIHB1YmxpYyBwYXJlbnQ6IGFueTtcbiAgcHVibGljIGNoaWxkcmVuOiBhbnlbXTtcblxuICBjb25zdHJ1Y3Rvcihyb3c6IGFueSB8IG51bGwgPSBudWxsKSB7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgIHJvdyA9IHtcbiAgICAgICAgbGV2ZWw6IC0xLFxuICAgICAgICB0cmVlU3RhdHVzOiAnZXhwYW5kZWQnXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLnJvdyA9IHJvdztcbiAgICB0aGlzLnBhcmVudCA9IG51bGw7XG4gICAgdGhpcy5jaGlsZHJlbiA9IFtdO1xuICB9XG5cbiAgZmxhdHRlbihmOiBhbnksIHJlY3Vyc2l2ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnJvd1sndHJlZVN0YXR1cyddID09PSAnZXhwYW5kZWQnKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICAgICAgZi5hcHBseShjaGlsZCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSk7XG4gICAgICAgIGlmIChyZWN1cnNpdmUpIGNoaWxkLmZsYXR0ZW4uYXBwbHkoY2hpbGQsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|