@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/esm/index.js
CHANGED
|
@@ -75,6 +75,7 @@ var singleValueFilterOps = /* @__PURE__ */ new Set([
|
|
|
75
75
|
"starts",
|
|
76
76
|
"ends"
|
|
77
77
|
]);
|
|
78
|
+
var isNamedFilter = (f) => f !== void 0 && f.name !== void 0;
|
|
78
79
|
var isSingleValueFilter = (f) => f !== void 0 && singleValueFilterOps.has(f.op);
|
|
79
80
|
var isFilterClause = (f) => f !== void 0 && (isSingleValueFilter(f) || isMultiValueFilter(f));
|
|
80
81
|
var isMultiValueFilter = (f) => f !== void 0 && f.op === "in";
|
|
@@ -84,6 +85,28 @@ var isOrFilter = (f) => f.op === "or";
|
|
|
84
85
|
function isMultiClauseFilter(f) {
|
|
85
86
|
return f !== void 0 && (f.op === "and" || f.op === "or");
|
|
86
87
|
}
|
|
88
|
+
var filterValue = (value) => typeof value === "string" ? `"${value}"` : value;
|
|
89
|
+
var filterAsQuery = (f) => {
|
|
90
|
+
if (isMultiClauseFilter(f)) {
|
|
91
|
+
return f.filters.map((filter) => filterAsQuery(filter)).join(` ${f.op} `);
|
|
92
|
+
} else if (isMultiValueFilter(f)) {
|
|
93
|
+
return `${f.column} ${f.op} [${f.values.join(",")}]`;
|
|
94
|
+
} else {
|
|
95
|
+
return `${f.column} ${f.op} ${filterValue(f.value)}`;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
var removeColumnFromFilter = (column, filter) => {
|
|
99
|
+
if (isMultiClauseFilter(filter)) {
|
|
100
|
+
const [clause1, clause2] = filter.filters;
|
|
101
|
+
if (clause1.column === column.name) {
|
|
102
|
+
return [clause2, filterAsQuery(clause2)];
|
|
103
|
+
}
|
|
104
|
+
if (clause2.column === column.name) {
|
|
105
|
+
return [clause1, filterAsQuery(clause1)];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return [void 0, ""];
|
|
109
|
+
};
|
|
87
110
|
|
|
88
111
|
// src/column-utils.ts
|
|
89
112
|
var SORT_ASC = "asc";
|
|
@@ -281,7 +304,7 @@ var sortPinnedColumns = (columns) => {
|
|
|
281
304
|
const leftPinnedColumns = [];
|
|
282
305
|
const rightPinnedColumns = [];
|
|
283
306
|
const restColumns = [];
|
|
284
|
-
let pinnedWidthLeft =
|
|
307
|
+
let pinnedWidthLeft = 4;
|
|
285
308
|
for (const column of columns) {
|
|
286
309
|
switch (column.pin) {
|
|
287
310
|
case "left":
|
|
@@ -357,9 +380,17 @@ var getTableHeadings = (columns) => {
|
|
|
357
380
|
};
|
|
358
381
|
var getColumnStyle = ({
|
|
359
382
|
pin,
|
|
360
|
-
pinnedOffset,
|
|
383
|
+
pinnedOffset = pin === "left" ? 0 : 4,
|
|
361
384
|
width
|
|
362
|
-
}) => pin === "left" ? {
|
|
385
|
+
}) => pin === "left" ? {
|
|
386
|
+
left: pinnedOffset,
|
|
387
|
+
width,
|
|
388
|
+
"--pin-width": `${pinnedOffset + width - 5}px`
|
|
389
|
+
} : pin === "right" ? {
|
|
390
|
+
right: pinnedOffset,
|
|
391
|
+
width,
|
|
392
|
+
"--pin-width": `${pinnedOffset + width}px`
|
|
393
|
+
} : { width };
|
|
363
394
|
var setAggregations = (aggregations, column, aggType) => {
|
|
364
395
|
return aggregations.filter((agg) => agg.column !== column.name).concat({ column: column.name, aggType });
|
|
365
396
|
};
|
|
@@ -471,6 +502,17 @@ var findColumn = (columns, columnName) => {
|
|
|
471
502
|
}
|
|
472
503
|
}
|
|
473
504
|
};
|
|
505
|
+
function updateColumn(columns, column, options) {
|
|
506
|
+
const targetColumn = typeof column === "string" ? columns.find((col) => col.name === column) : column;
|
|
507
|
+
if (targetColumn) {
|
|
508
|
+
const replacementColumn = options ? { ...targetColumn, ...options } : targetColumn;
|
|
509
|
+
return columns.map(
|
|
510
|
+
(col) => col.name === replacementColumn.name ? replacementColumn : col
|
|
511
|
+
);
|
|
512
|
+
} else {
|
|
513
|
+
throw Error("column-utils.replaceColun, column not found");
|
|
514
|
+
}
|
|
515
|
+
}
|
|
474
516
|
var toDataSourceColumns = (column) => column.expression ? `${column.name}:${column.serverDataType}:${column.expression}` : column.name;
|
|
475
517
|
var getRowRecord = (row, columnMap) => {
|
|
476
518
|
return Object.entries(columnMap).reduce(
|
|
@@ -518,6 +560,27 @@ var visibleColumnAtIndex = (columns, index) => {
|
|
|
518
560
|
return columns.filter(isNotHidden).at(index);
|
|
519
561
|
}
|
|
520
562
|
};
|
|
563
|
+
var { DEPTH, IS_LEAF } = metadataKeys;
|
|
564
|
+
var getGroupValueAndOffset = (columns, row) => {
|
|
565
|
+
const { [DEPTH]: depth, [IS_LEAF]: isLeaf } = row;
|
|
566
|
+
if (isLeaf || depth > columns.length) {
|
|
567
|
+
return [null, depth === null ? 0 : Math.max(0, depth - 1)];
|
|
568
|
+
} else if (depth === 0) {
|
|
569
|
+
return ["$root", 0];
|
|
570
|
+
} else {
|
|
571
|
+
const { key, valueFormatter } = columns[depth - 1];
|
|
572
|
+
const value = valueFormatter(row[key]);
|
|
573
|
+
return [value, depth - 1];
|
|
574
|
+
}
|
|
575
|
+
};
|
|
576
|
+
|
|
577
|
+
// src/cookie-utils.ts
|
|
578
|
+
var getCookieValue = (name) => {
|
|
579
|
+
var _a, _b;
|
|
580
|
+
if (((_a = globalThis.document) == null ? void 0 : _a.cookie) !== void 0) {
|
|
581
|
+
return (_b = globalThis.document.cookie.split("; ").find((row) => row.startsWith(`${name}=`))) == null ? void 0 : _b.split("=")[1];
|
|
582
|
+
}
|
|
583
|
+
};
|
|
521
584
|
|
|
522
585
|
// src/component-registry.ts
|
|
523
586
|
var cellRenderersMap = /* @__PURE__ */ new Map();
|
|
@@ -763,14 +826,6 @@ var formatDate = (date, format = "dd.mm.yyyy") => {
|
|
|
763
826
|
}
|
|
764
827
|
};
|
|
765
828
|
|
|
766
|
-
// src/cookie-utils.ts
|
|
767
|
-
var getCookieValue = (name) => {
|
|
768
|
-
var _a, _b;
|
|
769
|
-
if (((_a = globalThis.document) == null ? void 0 : _a.cookie) !== void 0) {
|
|
770
|
-
return (_b = globalThis.document.cookie.split("; ").find((row) => row.startsWith(`${name}=`))) == null ? void 0 : _b.split("=")[1];
|
|
771
|
-
}
|
|
772
|
-
};
|
|
773
|
-
|
|
774
829
|
// src/logging-utils.ts
|
|
775
830
|
var logLevels = ["error", "warn", "info", "debug"];
|
|
776
831
|
var isValidLogLevel = (value) => typeof value === "string" && logLevels.includes(value);
|
|
@@ -1305,6 +1360,9 @@ var KeySet = class {
|
|
|
1305
1360
|
}
|
|
1306
1361
|
};
|
|
1307
1362
|
|
|
1363
|
+
// src/menu-utils.ts
|
|
1364
|
+
var isGroupMenuItemDescriptor = (menuItem) => menuItem !== void 0 && "children" in menuItem;
|
|
1365
|
+
|
|
1308
1366
|
// src/nanoid/index.ts
|
|
1309
1367
|
var uuid = (size = 21) => {
|
|
1310
1368
|
let id = "";
|
|
@@ -1375,6 +1433,14 @@ var virtualRowPositioning = (rowHeight, additionalPixelsNeeded, pctScrollTop) =>
|
|
|
1375
1433
|
|
|
1376
1434
|
// src/selection-utils.ts
|
|
1377
1435
|
var NO_SELECTION = [];
|
|
1436
|
+
var { SELECTED } = metadataKeys;
|
|
1437
|
+
var RowSelected = {
|
|
1438
|
+
False: 0,
|
|
1439
|
+
True: 1,
|
|
1440
|
+
First: 2,
|
|
1441
|
+
Last: 4
|
|
1442
|
+
};
|
|
1443
|
+
var isRowSelected = (row) => (row[SELECTED] & RowSelected.True) === RowSelected.True;
|
|
1378
1444
|
var inAscendingOrder = (item1, item2) => {
|
|
1379
1445
|
const n1 = typeof item1 === "number" ? item1 : item1[0];
|
|
1380
1446
|
const n2 = typeof item2 === "number" ? item2 : item2[0];
|
|
@@ -1391,6 +1457,58 @@ var deselectItem = (selectionModel, selected, itemIndex, rangeSelect, keepExisti
|
|
|
1391
1457
|
}
|
|
1392
1458
|
return NO_SELECTION;
|
|
1393
1459
|
};
|
|
1460
|
+
var newSelectedFillsGapOrExtends = (selection, itemIndex) => {
|
|
1461
|
+
for (let i = 0; i < selection.length; i++) {
|
|
1462
|
+
const item = selection[i];
|
|
1463
|
+
if (typeof item === "number") {
|
|
1464
|
+
if (item === itemIndex - 1) {
|
|
1465
|
+
return true;
|
|
1466
|
+
} else if (item > itemIndex) {
|
|
1467
|
+
return false;
|
|
1468
|
+
}
|
|
1469
|
+
} else if (item[0] === itemIndex + 1 || item[1] === itemIndex - 1) {
|
|
1470
|
+
return true;
|
|
1471
|
+
} else if (item[0] > itemIndex) {
|
|
1472
|
+
return false;
|
|
1473
|
+
}
|
|
1474
|
+
}
|
|
1475
|
+
return false;
|
|
1476
|
+
};
|
|
1477
|
+
var fillGapOrExtendSelection = (selection, itemIndex) => {
|
|
1478
|
+
for (let i = 0; i < selection.length; i++) {
|
|
1479
|
+
const item = selection[i];
|
|
1480
|
+
if (typeof item === "number") {
|
|
1481
|
+
if (item === itemIndex - 1) {
|
|
1482
|
+
const nextSelectionItem = selection[i + 1];
|
|
1483
|
+
if (nextSelectionItem === itemIndex + 1) {
|
|
1484
|
+
const newRange = [item, nextSelectionItem];
|
|
1485
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
|
|
1486
|
+
} else {
|
|
1487
|
+
const newRange = [item, itemIndex];
|
|
1488
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
|
|
1489
|
+
}
|
|
1490
|
+
} else if (item > itemIndex) {
|
|
1491
|
+
break;
|
|
1492
|
+
}
|
|
1493
|
+
} else if (item[0] === itemIndex + 1) {
|
|
1494
|
+
const newRange = [itemIndex, item[1]];
|
|
1495
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
|
|
1496
|
+
} else if (item[1] === itemIndex - 1) {
|
|
1497
|
+
const nextItem = selection[i + 1];
|
|
1498
|
+
if (Array.isArray(nextItem) && nextItem[0] === itemIndex + 1) {
|
|
1499
|
+
const newRange = [item[0], nextItem[1]];
|
|
1500
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
|
|
1501
|
+
} else if (typeof nextItem === "number" && nextItem === itemIndex + 1) {
|
|
1502
|
+
const newRange = [item[0], nextItem];
|
|
1503
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
|
|
1504
|
+
} else {
|
|
1505
|
+
const newRange = [item[0], itemIndex];
|
|
1506
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
|
|
1507
|
+
}
|
|
1508
|
+
}
|
|
1509
|
+
}
|
|
1510
|
+
return selection;
|
|
1511
|
+
};
|
|
1394
1512
|
var selectItem = (selectionModel, selected, itemIndex, rangeSelect, keepExistingSelection = false, activeItemIndex = -1) => {
|
|
1395
1513
|
const singleSelect = selectionModel === "single";
|
|
1396
1514
|
const multiSelect = selectionModel === "extended" || selectionModel === "checkbox";
|
|
@@ -1407,7 +1525,11 @@ var selectItem = (selectionModel, selected, itemIndex, rangeSelect, keepExisting
|
|
|
1407
1525
|
return insertRange(selected, range);
|
|
1408
1526
|
}
|
|
1409
1527
|
} else if (!rangeSelect) {
|
|
1410
|
-
|
|
1528
|
+
if (newSelectedFillsGapOrExtends(selected, itemIndex)) {
|
|
1529
|
+
return fillGapOrExtendSelection(selected, itemIndex);
|
|
1530
|
+
} else {
|
|
1531
|
+
return selected == null ? void 0 : selected.concat(itemIndex).sort(inAscendingOrder);
|
|
1532
|
+
}
|
|
1411
1533
|
} else if (multiSelect) {
|
|
1412
1534
|
}
|
|
1413
1535
|
return NO_SELECTION;
|
|
@@ -1463,6 +1585,27 @@ var includedInRange = (selectedItem, index) => {
|
|
|
1463
1585
|
return rangeIncludes(selectedItem, index);
|
|
1464
1586
|
};
|
|
1465
1587
|
var rangeIncludes = (range, index) => index >= range[0] && index <= range[1];
|
|
1588
|
+
var SINGLE_SELECTED_ROW = RowSelected.True + RowSelected.First + RowSelected.Last;
|
|
1589
|
+
var FIRST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.First;
|
|
1590
|
+
var LAST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.Last;
|
|
1591
|
+
var getSelectionStatus = (selected, itemIndex) => {
|
|
1592
|
+
for (const item of selected) {
|
|
1593
|
+
if (typeof item === "number") {
|
|
1594
|
+
if (item === itemIndex) {
|
|
1595
|
+
return SINGLE_SELECTED_ROW;
|
|
1596
|
+
}
|
|
1597
|
+
} else if (rangeIncludes(item, itemIndex)) {
|
|
1598
|
+
if (itemIndex === item[0]) {
|
|
1599
|
+
return FIRST_SELECTED_ROW_OF_BLOCK;
|
|
1600
|
+
} else if (itemIndex === item[1]) {
|
|
1601
|
+
return LAST_SELECTED_ROW_OF_BLOCK;
|
|
1602
|
+
} else {
|
|
1603
|
+
return RowSelected.True;
|
|
1604
|
+
}
|
|
1605
|
+
}
|
|
1606
|
+
}
|
|
1607
|
+
return RowSelected.False;
|
|
1608
|
+
};
|
|
1466
1609
|
var isSelected = (selected, itemIndex) => {
|
|
1467
1610
|
for (const item of selected) {
|
|
1468
1611
|
if (typeof item === "number") {
|
|
@@ -1565,6 +1708,13 @@ var lastWord = (text) => {
|
|
|
1565
1708
|
return trimmedText.slice(pos + 1);
|
|
1566
1709
|
}
|
|
1567
1710
|
};
|
|
1711
|
+
|
|
1712
|
+
// src/url-utils.ts
|
|
1713
|
+
var getUrlParameter = (paramName, defaultValue) => {
|
|
1714
|
+
var _a;
|
|
1715
|
+
return (_a = new URL(document.location.href).searchParams.get(paramName)) != null ? _a : defaultValue;
|
|
1716
|
+
};
|
|
1717
|
+
var hasUrlParameter = (paramName) => new URL(document.location.href).searchParams.has(paramName);
|
|
1568
1718
|
export {
|
|
1569
1719
|
AggregationType,
|
|
1570
1720
|
DOWN1,
|
|
@@ -1573,6 +1723,7 @@ export {
|
|
|
1573
1723
|
EventEmitter,
|
|
1574
1724
|
KeySet,
|
|
1575
1725
|
RangeMonitor,
|
|
1726
|
+
RowSelected,
|
|
1576
1727
|
UP1,
|
|
1577
1728
|
UP2,
|
|
1578
1729
|
WindowRange,
|
|
@@ -1592,6 +1743,7 @@ export {
|
|
|
1592
1743
|
expandSelection,
|
|
1593
1744
|
extractFilterForColumn,
|
|
1594
1745
|
extractGroupColumn,
|
|
1746
|
+
filterAsQuery,
|
|
1595
1747
|
findColumn,
|
|
1596
1748
|
flattenColumnGroup,
|
|
1597
1749
|
formatDate,
|
|
@@ -1603,14 +1755,18 @@ export {
|
|
|
1603
1755
|
getColumnsInViewport,
|
|
1604
1756
|
getCookieValue,
|
|
1605
1757
|
getFullRange,
|
|
1758
|
+
getGroupValueAndOffset,
|
|
1606
1759
|
getLoggingConfigForWorker,
|
|
1607
1760
|
getMovingValueDirection,
|
|
1608
1761
|
getRegisteredCellRenderers,
|
|
1609
1762
|
getRowRecord,
|
|
1763
|
+
getSelectionStatus,
|
|
1610
1764
|
getTableHeadings,
|
|
1611
1765
|
getUniqueId,
|
|
1766
|
+
getUrlParameter,
|
|
1612
1767
|
getValueFormatter,
|
|
1613
1768
|
hasHeadings,
|
|
1769
|
+
hasUrlParameter,
|
|
1614
1770
|
invariant,
|
|
1615
1771
|
isAndFilter,
|
|
1616
1772
|
isCharacterKey,
|
|
@@ -1623,6 +1779,7 @@ export {
|
|
|
1623
1779
|
isFilterClause,
|
|
1624
1780
|
isFilteredColumn,
|
|
1625
1781
|
isGroupColumn,
|
|
1782
|
+
isGroupMenuItemDescriptor,
|
|
1626
1783
|
isInFilter,
|
|
1627
1784
|
isJsonAttribute,
|
|
1628
1785
|
isJsonColumn,
|
|
@@ -1631,11 +1788,13 @@ export {
|
|
|
1631
1788
|
isMappedValueTypeRenderer,
|
|
1632
1789
|
isMultiClauseFilter,
|
|
1633
1790
|
isMultiValueFilter,
|
|
1791
|
+
isNamedFilter,
|
|
1634
1792
|
isNumericColumn,
|
|
1635
1793
|
isOrFilter,
|
|
1636
1794
|
isPinned,
|
|
1637
1795
|
isQuoteKey,
|
|
1638
1796
|
isResizing,
|
|
1797
|
+
isRowSelected,
|
|
1639
1798
|
isSelected,
|
|
1640
1799
|
isSingleValueFilter,
|
|
1641
1800
|
isTextColumn,
|
|
@@ -1657,6 +1816,7 @@ export {
|
|
|
1657
1816
|
projectUpdates,
|
|
1658
1817
|
rangeNewItems,
|
|
1659
1818
|
registerComponent,
|
|
1819
|
+
removeColumnFromFilter,
|
|
1660
1820
|
resetRange,
|
|
1661
1821
|
roundDecimal,
|
|
1662
1822
|
selectItem,
|
|
@@ -1668,6 +1828,7 @@ export {
|
|
|
1668
1828
|
throttle,
|
|
1669
1829
|
toColumnDescriptor,
|
|
1670
1830
|
toDataSourceColumns,
|
|
1831
|
+
updateColumn,
|
|
1671
1832
|
uuid,
|
|
1672
1833
|
virtualRowPositioning,
|
|
1673
1834
|
visibleColumnAtIndex,
|