@vuu-ui/vuu-utils 0.7.6-debug → 0.8.0-debug
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/cjs/index.js +173 -12
- package/cjs/index.js.map +3 -3
- package/esm/index.js +173 -12
- package/esm/index.js.map +3 -3
- package/package.json +5 -5
- package/types/column-utils.d.ts +5 -3
- package/types/filter-utils.d.ts +4 -0
- package/types/index.d.ts +4 -2
- package/types/json-utils.d.ts +1 -1
- package/types/menu-utils.d.ts +2 -0
- package/types/row-utils.d.ts +1 -1
- package/types/selection-utils.d.ts +14 -1
- package/types/url-utils.d.ts +2 -0
- package/LICENSE +0 -201
package/cjs/index.js
CHANGED
|
@@ -40,6 +40,7 @@ __export(src_exports, {
|
|
|
40
40
|
EventEmitter: () => EventEmitter,
|
|
41
41
|
KeySet: () => KeySet,
|
|
42
42
|
RangeMonitor: () => RangeMonitor,
|
|
43
|
+
RowSelected: () => RowSelected,
|
|
43
44
|
UP1: () => UP1,
|
|
44
45
|
UP2: () => UP2,
|
|
45
46
|
WindowRange: () => WindowRange,
|
|
@@ -59,6 +60,7 @@ __export(src_exports, {
|
|
|
59
60
|
expandSelection: () => expandSelection,
|
|
60
61
|
extractFilterForColumn: () => extractFilterForColumn,
|
|
61
62
|
extractGroupColumn: () => extractGroupColumn,
|
|
63
|
+
filterAsQuery: () => filterAsQuery,
|
|
62
64
|
findColumn: () => findColumn,
|
|
63
65
|
flattenColumnGroup: () => flattenColumnGroup,
|
|
64
66
|
formatDate: () => formatDate,
|
|
@@ -70,14 +72,18 @@ __export(src_exports, {
|
|
|
70
72
|
getColumnsInViewport: () => getColumnsInViewport,
|
|
71
73
|
getCookieValue: () => getCookieValue,
|
|
72
74
|
getFullRange: () => getFullRange,
|
|
75
|
+
getGroupValueAndOffset: () => getGroupValueAndOffset,
|
|
73
76
|
getLoggingConfigForWorker: () => getLoggingConfigForWorker,
|
|
74
77
|
getMovingValueDirection: () => getMovingValueDirection,
|
|
75
78
|
getRegisteredCellRenderers: () => getRegisteredCellRenderers,
|
|
76
79
|
getRowRecord: () => getRowRecord,
|
|
80
|
+
getSelectionStatus: () => getSelectionStatus,
|
|
77
81
|
getTableHeadings: () => getTableHeadings,
|
|
78
82
|
getUniqueId: () => getUniqueId,
|
|
83
|
+
getUrlParameter: () => getUrlParameter,
|
|
79
84
|
getValueFormatter: () => getValueFormatter,
|
|
80
85
|
hasHeadings: () => hasHeadings,
|
|
86
|
+
hasUrlParameter: () => hasUrlParameter,
|
|
81
87
|
invariant: () => invariant,
|
|
82
88
|
isAndFilter: () => isAndFilter,
|
|
83
89
|
isCharacterKey: () => isCharacterKey,
|
|
@@ -90,6 +96,7 @@ __export(src_exports, {
|
|
|
90
96
|
isFilterClause: () => isFilterClause,
|
|
91
97
|
isFilteredColumn: () => isFilteredColumn,
|
|
92
98
|
isGroupColumn: () => isGroupColumn,
|
|
99
|
+
isGroupMenuItemDescriptor: () => isGroupMenuItemDescriptor,
|
|
93
100
|
isInFilter: () => isInFilter,
|
|
94
101
|
isJsonAttribute: () => isJsonAttribute,
|
|
95
102
|
isJsonColumn: () => isJsonColumn,
|
|
@@ -98,11 +105,13 @@ __export(src_exports, {
|
|
|
98
105
|
isMappedValueTypeRenderer: () => isMappedValueTypeRenderer,
|
|
99
106
|
isMultiClauseFilter: () => isMultiClauseFilter,
|
|
100
107
|
isMultiValueFilter: () => isMultiValueFilter,
|
|
108
|
+
isNamedFilter: () => isNamedFilter,
|
|
101
109
|
isNumericColumn: () => isNumericColumn,
|
|
102
110
|
isOrFilter: () => isOrFilter,
|
|
103
111
|
isPinned: () => isPinned,
|
|
104
112
|
isQuoteKey: () => isQuoteKey,
|
|
105
113
|
isResizing: () => isResizing,
|
|
114
|
+
isRowSelected: () => isRowSelected,
|
|
106
115
|
isSelected: () => isSelected,
|
|
107
116
|
isSingleValueFilter: () => isSingleValueFilter,
|
|
108
117
|
isTextColumn: () => isTextColumn,
|
|
@@ -124,6 +133,7 @@ __export(src_exports, {
|
|
|
124
133
|
projectUpdates: () => projectUpdates,
|
|
125
134
|
rangeNewItems: () => rangeNewItems,
|
|
126
135
|
registerComponent: () => registerComponent,
|
|
136
|
+
removeColumnFromFilter: () => removeColumnFromFilter,
|
|
127
137
|
resetRange: () => resetRange,
|
|
128
138
|
roundDecimal: () => roundDecimal,
|
|
129
139
|
selectItem: () => selectItem,
|
|
@@ -135,6 +145,7 @@ __export(src_exports, {
|
|
|
135
145
|
throttle: () => throttle,
|
|
136
146
|
toColumnDescriptor: () => toColumnDescriptor,
|
|
137
147
|
toDataSourceColumns: () => toDataSourceColumns,
|
|
148
|
+
updateColumn: () => updateColumn,
|
|
138
149
|
uuid: () => uuid,
|
|
139
150
|
virtualRowPositioning: () => virtualRowPositioning,
|
|
140
151
|
visibleColumnAtIndex: () => visibleColumnAtIndex,
|
|
@@ -205,6 +216,7 @@ var singleValueFilterOps = /* @__PURE__ */ new Set([
|
|
|
205
216
|
"starts",
|
|
206
217
|
"ends"
|
|
207
218
|
]);
|
|
219
|
+
var isNamedFilter = (f) => f !== void 0 && f.name !== void 0;
|
|
208
220
|
var isSingleValueFilter = (f) => f !== void 0 && singleValueFilterOps.has(f.op);
|
|
209
221
|
var isFilterClause = (f) => f !== void 0 && (isSingleValueFilter(f) || isMultiValueFilter(f));
|
|
210
222
|
var isMultiValueFilter = (f) => f !== void 0 && f.op === "in";
|
|
@@ -214,6 +226,28 @@ var isOrFilter = (f) => f.op === "or";
|
|
|
214
226
|
function isMultiClauseFilter(f) {
|
|
215
227
|
return f !== void 0 && (f.op === "and" || f.op === "or");
|
|
216
228
|
}
|
|
229
|
+
var filterValue = (value) => typeof value === "string" ? `"${value}"` : value;
|
|
230
|
+
var filterAsQuery = (f) => {
|
|
231
|
+
if (isMultiClauseFilter(f)) {
|
|
232
|
+
return f.filters.map((filter) => filterAsQuery(filter)).join(` ${f.op} `);
|
|
233
|
+
} else if (isMultiValueFilter(f)) {
|
|
234
|
+
return `${f.column} ${f.op} [${f.values.join(",")}]`;
|
|
235
|
+
} else {
|
|
236
|
+
return `${f.column} ${f.op} ${filterValue(f.value)}`;
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
var removeColumnFromFilter = (column, filter) => {
|
|
240
|
+
if (isMultiClauseFilter(filter)) {
|
|
241
|
+
const [clause1, clause2] = filter.filters;
|
|
242
|
+
if (clause1.column === column.name) {
|
|
243
|
+
return [clause2, filterAsQuery(clause2)];
|
|
244
|
+
}
|
|
245
|
+
if (clause2.column === column.name) {
|
|
246
|
+
return [clause1, filterAsQuery(clause1)];
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return [void 0, ""];
|
|
250
|
+
};
|
|
217
251
|
|
|
218
252
|
// src/column-utils.ts
|
|
219
253
|
var SORT_ASC = "asc";
|
|
@@ -411,7 +445,7 @@ var sortPinnedColumns = (columns) => {
|
|
|
411
445
|
const leftPinnedColumns = [];
|
|
412
446
|
const rightPinnedColumns = [];
|
|
413
447
|
const restColumns = [];
|
|
414
|
-
let pinnedWidthLeft =
|
|
448
|
+
let pinnedWidthLeft = 4;
|
|
415
449
|
for (const column of columns) {
|
|
416
450
|
switch (column.pin) {
|
|
417
451
|
case "left":
|
|
@@ -487,9 +521,17 @@ var getTableHeadings = (columns) => {
|
|
|
487
521
|
};
|
|
488
522
|
var getColumnStyle = ({
|
|
489
523
|
pin,
|
|
490
|
-
pinnedOffset,
|
|
524
|
+
pinnedOffset = pin === "left" ? 0 : 4,
|
|
491
525
|
width
|
|
492
|
-
}) => pin === "left" ? {
|
|
526
|
+
}) => pin === "left" ? {
|
|
527
|
+
left: pinnedOffset,
|
|
528
|
+
width,
|
|
529
|
+
"--pin-width": `${pinnedOffset + width - 5}px`
|
|
530
|
+
} : pin === "right" ? {
|
|
531
|
+
right: pinnedOffset,
|
|
532
|
+
width,
|
|
533
|
+
"--pin-width": `${pinnedOffset + width}px`
|
|
534
|
+
} : { width };
|
|
493
535
|
var setAggregations = (aggregations, column, aggType) => {
|
|
494
536
|
return aggregations.filter((agg) => agg.column !== column.name).concat({ column: column.name, aggType });
|
|
495
537
|
};
|
|
@@ -601,6 +643,17 @@ var findColumn = (columns, columnName) => {
|
|
|
601
643
|
}
|
|
602
644
|
}
|
|
603
645
|
};
|
|
646
|
+
function updateColumn(columns, column, options) {
|
|
647
|
+
const targetColumn = typeof column === "string" ? columns.find((col) => col.name === column) : column;
|
|
648
|
+
if (targetColumn) {
|
|
649
|
+
const replacementColumn = options ? { ...targetColumn, ...options } : targetColumn;
|
|
650
|
+
return columns.map(
|
|
651
|
+
(col) => col.name === replacementColumn.name ? replacementColumn : col
|
|
652
|
+
);
|
|
653
|
+
} else {
|
|
654
|
+
throw Error("column-utils.replaceColun, column not found");
|
|
655
|
+
}
|
|
656
|
+
}
|
|
604
657
|
var toDataSourceColumns = (column) => column.expression ? `${column.name}:${column.serverDataType}:${column.expression}` : column.name;
|
|
605
658
|
var getRowRecord = (row, columnMap) => {
|
|
606
659
|
return Object.entries(columnMap).reduce(
|
|
@@ -648,6 +701,27 @@ var visibleColumnAtIndex = (columns, index) => {
|
|
|
648
701
|
return columns.filter(isNotHidden).at(index);
|
|
649
702
|
}
|
|
650
703
|
};
|
|
704
|
+
var { DEPTH, IS_LEAF } = metadataKeys;
|
|
705
|
+
var getGroupValueAndOffset = (columns, row) => {
|
|
706
|
+
const { [DEPTH]: depth, [IS_LEAF]: isLeaf } = row;
|
|
707
|
+
if (isLeaf || depth > columns.length) {
|
|
708
|
+
return [null, depth === null ? 0 : Math.max(0, depth - 1)];
|
|
709
|
+
} else if (depth === 0) {
|
|
710
|
+
return ["$root", 0];
|
|
711
|
+
} else {
|
|
712
|
+
const { key, valueFormatter } = columns[depth - 1];
|
|
713
|
+
const value = valueFormatter(row[key]);
|
|
714
|
+
return [value, depth - 1];
|
|
715
|
+
}
|
|
716
|
+
};
|
|
717
|
+
|
|
718
|
+
// src/cookie-utils.ts
|
|
719
|
+
var getCookieValue = (name) => {
|
|
720
|
+
var _a, _b;
|
|
721
|
+
if (((_a = globalThis.document) == null ? void 0 : _a.cookie) !== void 0) {
|
|
722
|
+
return (_b = globalThis.document.cookie.split("; ").find((row) => row.startsWith(`${name}=`))) == null ? void 0 : _b.split("=")[1];
|
|
723
|
+
}
|
|
724
|
+
};
|
|
651
725
|
|
|
652
726
|
// src/component-registry.ts
|
|
653
727
|
var cellRenderersMap = /* @__PURE__ */ new Map();
|
|
@@ -893,14 +967,6 @@ var formatDate = (date, format = "dd.mm.yyyy") => {
|
|
|
893
967
|
}
|
|
894
968
|
};
|
|
895
969
|
|
|
896
|
-
// src/cookie-utils.ts
|
|
897
|
-
var getCookieValue = (name) => {
|
|
898
|
-
var _a, _b;
|
|
899
|
-
if (((_a = globalThis.document) == null ? void 0 : _a.cookie) !== void 0) {
|
|
900
|
-
return (_b = globalThis.document.cookie.split("; ").find((row) => row.startsWith(`${name}=`))) == null ? void 0 : _b.split("=")[1];
|
|
901
|
-
}
|
|
902
|
-
};
|
|
903
|
-
|
|
904
970
|
// src/logging-utils.ts
|
|
905
971
|
var logLevels = ["error", "warn", "info", "debug"];
|
|
906
972
|
var isValidLogLevel = (value) => typeof value === "string" && logLevels.includes(value);
|
|
@@ -1435,6 +1501,9 @@ var KeySet = class {
|
|
|
1435
1501
|
}
|
|
1436
1502
|
};
|
|
1437
1503
|
|
|
1504
|
+
// src/menu-utils.ts
|
|
1505
|
+
var isGroupMenuItemDescriptor = (menuItem) => menuItem !== void 0 && "children" in menuItem;
|
|
1506
|
+
|
|
1438
1507
|
// src/nanoid/index.ts
|
|
1439
1508
|
var uuid = (size = 21) => {
|
|
1440
1509
|
let id = "";
|
|
@@ -1505,6 +1574,14 @@ var virtualRowPositioning = (rowHeight, additionalPixelsNeeded, pctScrollTop) =>
|
|
|
1505
1574
|
|
|
1506
1575
|
// src/selection-utils.ts
|
|
1507
1576
|
var NO_SELECTION = [];
|
|
1577
|
+
var { SELECTED } = metadataKeys;
|
|
1578
|
+
var RowSelected = {
|
|
1579
|
+
False: 0,
|
|
1580
|
+
True: 1,
|
|
1581
|
+
First: 2,
|
|
1582
|
+
Last: 4
|
|
1583
|
+
};
|
|
1584
|
+
var isRowSelected = (row) => (row[SELECTED] & RowSelected.True) === RowSelected.True;
|
|
1508
1585
|
var inAscendingOrder = (item1, item2) => {
|
|
1509
1586
|
const n1 = typeof item1 === "number" ? item1 : item1[0];
|
|
1510
1587
|
const n2 = typeof item2 === "number" ? item2 : item2[0];
|
|
@@ -1521,6 +1598,58 @@ var deselectItem = (selectionModel, selected, itemIndex, rangeSelect, keepExisti
|
|
|
1521
1598
|
}
|
|
1522
1599
|
return NO_SELECTION;
|
|
1523
1600
|
};
|
|
1601
|
+
var newSelectedFillsGapOrExtends = (selection, itemIndex) => {
|
|
1602
|
+
for (let i = 0; i < selection.length; i++) {
|
|
1603
|
+
const item = selection[i];
|
|
1604
|
+
if (typeof item === "number") {
|
|
1605
|
+
if (item === itemIndex - 1) {
|
|
1606
|
+
return true;
|
|
1607
|
+
} else if (item > itemIndex) {
|
|
1608
|
+
return false;
|
|
1609
|
+
}
|
|
1610
|
+
} else if (item[0] === itemIndex + 1 || item[1] === itemIndex - 1) {
|
|
1611
|
+
return true;
|
|
1612
|
+
} else if (item[0] > itemIndex) {
|
|
1613
|
+
return false;
|
|
1614
|
+
}
|
|
1615
|
+
}
|
|
1616
|
+
return false;
|
|
1617
|
+
};
|
|
1618
|
+
var fillGapOrExtendSelection = (selection, itemIndex) => {
|
|
1619
|
+
for (let i = 0; i < selection.length; i++) {
|
|
1620
|
+
const item = selection[i];
|
|
1621
|
+
if (typeof item === "number") {
|
|
1622
|
+
if (item === itemIndex - 1) {
|
|
1623
|
+
const nextSelectionItem = selection[i + 1];
|
|
1624
|
+
if (nextSelectionItem === itemIndex + 1) {
|
|
1625
|
+
const newRange = [item, nextSelectionItem];
|
|
1626
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
|
|
1627
|
+
} else {
|
|
1628
|
+
const newRange = [item, itemIndex];
|
|
1629
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
|
|
1630
|
+
}
|
|
1631
|
+
} else if (item > itemIndex) {
|
|
1632
|
+
break;
|
|
1633
|
+
}
|
|
1634
|
+
} else if (item[0] === itemIndex + 1) {
|
|
1635
|
+
const newRange = [itemIndex, item[1]];
|
|
1636
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
|
|
1637
|
+
} else if (item[1] === itemIndex - 1) {
|
|
1638
|
+
const nextItem = selection[i + 1];
|
|
1639
|
+
if (Array.isArray(nextItem) && nextItem[0] === itemIndex + 1) {
|
|
1640
|
+
const newRange = [item[0], nextItem[1]];
|
|
1641
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
|
|
1642
|
+
} else if (typeof nextItem === "number" && nextItem === itemIndex + 1) {
|
|
1643
|
+
const newRange = [item[0], nextItem];
|
|
1644
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
|
|
1645
|
+
} else {
|
|
1646
|
+
const newRange = [item[0], itemIndex];
|
|
1647
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
|
|
1648
|
+
}
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
return selection;
|
|
1652
|
+
};
|
|
1524
1653
|
var selectItem = (selectionModel, selected, itemIndex, rangeSelect, keepExistingSelection = false, activeItemIndex = -1) => {
|
|
1525
1654
|
const singleSelect = selectionModel === "single";
|
|
1526
1655
|
const multiSelect = selectionModel === "extended" || selectionModel === "checkbox";
|
|
@@ -1537,7 +1666,11 @@ var selectItem = (selectionModel, selected, itemIndex, rangeSelect, keepExisting
|
|
|
1537
1666
|
return insertRange(selected, range);
|
|
1538
1667
|
}
|
|
1539
1668
|
} else if (!rangeSelect) {
|
|
1540
|
-
|
|
1669
|
+
if (newSelectedFillsGapOrExtends(selected, itemIndex)) {
|
|
1670
|
+
return fillGapOrExtendSelection(selected, itemIndex);
|
|
1671
|
+
} else {
|
|
1672
|
+
return selected == null ? void 0 : selected.concat(itemIndex).sort(inAscendingOrder);
|
|
1673
|
+
}
|
|
1541
1674
|
} else if (multiSelect) {
|
|
1542
1675
|
}
|
|
1543
1676
|
return NO_SELECTION;
|
|
@@ -1593,6 +1726,27 @@ var includedInRange = (selectedItem, index) => {
|
|
|
1593
1726
|
return rangeIncludes(selectedItem, index);
|
|
1594
1727
|
};
|
|
1595
1728
|
var rangeIncludes = (range, index) => index >= range[0] && index <= range[1];
|
|
1729
|
+
var SINGLE_SELECTED_ROW = RowSelected.True + RowSelected.First + RowSelected.Last;
|
|
1730
|
+
var FIRST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.First;
|
|
1731
|
+
var LAST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.Last;
|
|
1732
|
+
var getSelectionStatus = (selected, itemIndex) => {
|
|
1733
|
+
for (const item of selected) {
|
|
1734
|
+
if (typeof item === "number") {
|
|
1735
|
+
if (item === itemIndex) {
|
|
1736
|
+
return SINGLE_SELECTED_ROW;
|
|
1737
|
+
}
|
|
1738
|
+
} else if (rangeIncludes(item, itemIndex)) {
|
|
1739
|
+
if (itemIndex === item[0]) {
|
|
1740
|
+
return FIRST_SELECTED_ROW_OF_BLOCK;
|
|
1741
|
+
} else if (itemIndex === item[1]) {
|
|
1742
|
+
return LAST_SELECTED_ROW_OF_BLOCK;
|
|
1743
|
+
} else {
|
|
1744
|
+
return RowSelected.True;
|
|
1745
|
+
}
|
|
1746
|
+
}
|
|
1747
|
+
}
|
|
1748
|
+
return RowSelected.False;
|
|
1749
|
+
};
|
|
1596
1750
|
var isSelected = (selected, itemIndex) => {
|
|
1597
1751
|
for (const item of selected) {
|
|
1598
1752
|
if (typeof item === "number") {
|
|
@@ -1695,4 +1849,11 @@ var lastWord = (text) => {
|
|
|
1695
1849
|
return trimmedText.slice(pos + 1);
|
|
1696
1850
|
}
|
|
1697
1851
|
};
|
|
1852
|
+
|
|
1853
|
+
// src/url-utils.ts
|
|
1854
|
+
var getUrlParameter = (paramName, defaultValue) => {
|
|
1855
|
+
var _a;
|
|
1856
|
+
return (_a = new URL(document.location.href).searchParams.get(paramName)) != null ? _a : defaultValue;
|
|
1857
|
+
};
|
|
1858
|
+
var hasUrlParameter = (paramName) => new URL(document.location.href).searchParams.has(paramName);
|
|
1698
1859
|
//# sourceMappingURL=index.js.map
|