@vuu-ui/vuu-utils 0.6.25-debug → 0.6.26-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 CHANGED
@@ -43,6 +43,7 @@ __export(src_exports, {
43
43
  UP1: () => UP1,
44
44
  UP2: () => UP2,
45
45
  WindowRange: () => WindowRange,
46
+ actualRowPositioning: () => actualRowPositioning,
46
47
  addGroupColumn: () => addGroupColumn,
47
48
  addSortColumn: () => addSortColumn,
48
49
  applyFilterToColumns: () => applyFilterToColumns,
@@ -65,7 +66,7 @@ __export(src_exports, {
65
66
  getCellConfigPanelRenderer: () => getCellConfigPanelRenderer,
66
67
  getCellRenderer: () => getCellRenderer,
67
68
  getColumnName: () => getColumnName,
68
- getColumnPinStyle: () => getColumnPinStyle,
69
+ getColumnStyle: () => getColumnStyle,
69
70
  getColumnsInViewport: () => getColumnsInViewport,
70
71
  getCookieValue: () => getCookieValue,
71
72
  getFullRange: () => getFullRange,
@@ -80,6 +81,7 @@ __export(src_exports, {
80
81
  invariant: () => invariant,
81
82
  isAndFilter: () => isAndFilter,
82
83
  isCharacterKey: () => isCharacterKey,
84
+ isColumnTypeRenderer: () => isColumnTypeRenderer,
83
85
  isDataLoading: () => isDataLoading,
84
86
  isDateColumn: () => isDateColumn,
85
87
  isDatePattern: () => isDatePattern,
@@ -119,6 +121,7 @@ __export(src_exports, {
119
121
  numericFormatter: () => numericFormatter,
120
122
  partition: () => partition,
121
123
  projectUpdates: () => projectUpdates,
124
+ rangeNewItems: () => rangeNewItems,
122
125
  registerComponent: () => registerComponent,
123
126
  resetRange: () => resetRange,
124
127
  roundDecimal: () => roundDecimal,
@@ -131,6 +134,7 @@ __export(src_exports, {
131
134
  toColumnDescriptor: () => toColumnDescriptor,
132
135
  toDataSourceColumns: () => toDataSourceColumns,
133
136
  uuid: () => uuid,
137
+ virtualRowPositioning: () => virtualRowPositioning,
134
138
  visibleColumnAtIndex: () => visibleColumnAtIndex,
135
139
  withinRange: () => withinRange
136
140
  });
@@ -259,6 +263,7 @@ var toColumnDescriptor = (name) => ({
259
263
  });
260
264
  var isTypeDescriptor = (type) => typeof type !== "undefined" && typeof type !== "string";
261
265
  var EMPTY_COLUMN_MAP = {};
266
+ var isColumnTypeRenderer = (renderer) => typeof (renderer == null ? void 0 : renderer.name) !== "undefined";
262
267
  var isMappedValueTypeRenderer = (renderer) => renderer !== void 0 && typeof (renderer == null ? void 0 : renderer.map) !== "undefined";
263
268
  function buildColumnMap(columns) {
264
269
  const start = metadataKeys.count;
@@ -448,13 +453,13 @@ var getTableHeadings = (columns) => {
448
453
  let tableHeadingsRow;
449
454
  for (let level = 0; level < maxHeadingDepth; level++) {
450
455
  tableHeadingsRow = [];
451
- columns.forEach(({ heading: columnHeading = NO_HEADINGS }) => {
456
+ columns.forEach(({ heading: columnHeading = NO_HEADINGS, width }) => {
452
457
  var _a;
453
458
  const label = (_a = columnHeading[level]) != null ? _a : "";
454
459
  if (heading && heading.label === label) {
455
- heading.span += 1;
460
+ heading.width += width;
456
461
  } else {
457
- heading = { label, span: 1 };
462
+ heading = { label, width };
458
463
  tableHeadingsRow.push(heading);
459
464
  }
460
465
  });
@@ -465,7 +470,11 @@ var getTableHeadings = (columns) => {
465
470
  }
466
471
  return NO_HEADINGS;
467
472
  };
468
- var getColumnPinStyle = (column) => column.pin === "left" ? { left: column.pinnedOffset } : column.pin === "right" ? { right: column.pinnedOffset } : void 0;
473
+ var getColumnStyle = ({
474
+ pin,
475
+ pinnedOffset,
476
+ width
477
+ }) => pin === "left" ? { left: pinnedOffset, width } : pin === "right" ? { right: pinnedOffset, width } : { width };
469
478
  var setAggregations = (aggregations, column, aggType) => {
470
479
  return aggregations.filter((agg) => agg.column !== column.name).concat({ column: column.name, aggType });
471
480
  };
@@ -599,10 +608,12 @@ var getColumnsInViewport = (columns, vpStart, vpEnd) => {
599
608
  if (column.hidden) {
600
609
  continue;
601
610
  } else if (offset + column.width < vpStart) {
602
- if (offset + column.width + ((_a = columns[i + 1]) == null ? void 0 : _a.width) > vpStart) {
611
+ if (column.pin === "left") {
612
+ visibleColumns.push(column);
613
+ } else if (offset + column.width + ((_a = columns[i + 1]) == null ? void 0 : _a.width) > vpStart) {
603
614
  visibleColumns.push(column);
604
615
  } else {
605
- preSpan += 1;
616
+ preSpan += column.width;
606
617
  }
607
618
  } else if (offset > vpEnd) {
608
619
  visibleColumns.push(column);
@@ -709,6 +720,12 @@ function resetRange({ from, to, bufferSize = 0 }) {
709
720
  };
710
721
  }
711
722
  var withinRange = (value, { from, to }) => value >= from && value < to;
723
+ var rangeNewItems = ({ from: from1, to: to1 }, newRange) => {
724
+ const { from: from2, to: to2 } = newRange;
725
+ const noOverlap = from2 >= to1 || to2 <= from1;
726
+ const newFullySubsumesOld = from2 < from1 && to2 > to1;
727
+ return noOverlap || newFullySubsumesOld ? newRange : to2 > to1 ? { from: to1, to: to2 } : { from: from2, to: from1 };
728
+ };
712
729
  var WindowRange = class {
713
730
  constructor(from, to) {
714
731
  this.from = from;
@@ -1350,7 +1367,7 @@ var KeySet = class {
1350
1367
  });
1351
1368
  const size = to - from;
1352
1369
  if (this.keys.size + this.free.length > size) {
1353
- this.free.length = size - this.keys.size;
1370
+ this.free.length = Math.max(0, size - this.keys.size);
1354
1371
  }
1355
1372
  for (let rowIndex = from; rowIndex < to; rowIndex++) {
1356
1373
  if (!this.keys.has(rowIndex)) {
@@ -1358,6 +1375,9 @@ var KeySet = class {
1358
1375
  this.keys.set(rowIndex, nextKeyValue);
1359
1376
  }
1360
1377
  }
1378
+ if (this.nextKeyValue > this.keys.size) {
1379
+ this.nextKeyValue = this.keys.size;
1380
+ }
1361
1381
  }
1362
1382
  keyFor(rowIndex) {
1363
1383
  const key = this.keys.get(rowIndex);
@@ -1425,6 +1445,24 @@ function throttle(callback, limit) {
1425
1445
  };
1426
1446
  }
1427
1447
 
1448
+ // src/row-utils.ts
1449
+ var { IDX } = metadataKeys;
1450
+ var actualRowPositioning = (rowHeight) => [
1451
+ (row) => row[IDX] * rowHeight,
1452
+ (position) => Math.floor(position / rowHeight)
1453
+ ];
1454
+ var virtualRowPositioning = (rowHeight, additionalPixelsNeeded, pctScrollTop) => [
1455
+ (row) => {
1456
+ const rowOffset = pctScrollTop.current * additionalPixelsNeeded;
1457
+ return row[IDX] * rowHeight - rowOffset;
1458
+ },
1459
+ (position) => {
1460
+ const rowOffset = pctScrollTop.current * additionalPixelsNeeded;
1461
+ const result = Math.floor((position + rowOffset) / rowHeight);
1462
+ return result;
1463
+ }
1464
+ ];
1465
+
1428
1466
  // src/selection-utils.ts
1429
1467
  var NO_SELECTION = [];
1430
1468
  var inAscendingOrder = (item1, item2) => {