@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/esm/index.js CHANGED
@@ -135,6 +135,7 @@ var toColumnDescriptor = (name) => ({
135
135
  });
136
136
  var isTypeDescriptor = (type) => typeof type !== "undefined" && typeof type !== "string";
137
137
  var EMPTY_COLUMN_MAP = {};
138
+ var isColumnTypeRenderer = (renderer) => typeof (renderer == null ? void 0 : renderer.name) !== "undefined";
138
139
  var isMappedValueTypeRenderer = (renderer) => renderer !== void 0 && typeof (renderer == null ? void 0 : renderer.map) !== "undefined";
139
140
  function buildColumnMap(columns) {
140
141
  const start = metadataKeys.count;
@@ -324,13 +325,13 @@ var getTableHeadings = (columns) => {
324
325
  let tableHeadingsRow;
325
326
  for (let level = 0; level < maxHeadingDepth; level++) {
326
327
  tableHeadingsRow = [];
327
- columns.forEach(({ heading: columnHeading = NO_HEADINGS }) => {
328
+ columns.forEach(({ heading: columnHeading = NO_HEADINGS, width }) => {
328
329
  var _a;
329
330
  const label = (_a = columnHeading[level]) != null ? _a : "";
330
331
  if (heading && heading.label === label) {
331
- heading.span += 1;
332
+ heading.width += width;
332
333
  } else {
333
- heading = { label, span: 1 };
334
+ heading = { label, width };
334
335
  tableHeadingsRow.push(heading);
335
336
  }
336
337
  });
@@ -341,7 +342,11 @@ var getTableHeadings = (columns) => {
341
342
  }
342
343
  return NO_HEADINGS;
343
344
  };
344
- var getColumnPinStyle = (column) => column.pin === "left" ? { left: column.pinnedOffset } : column.pin === "right" ? { right: column.pinnedOffset } : void 0;
345
+ var getColumnStyle = ({
346
+ pin,
347
+ pinnedOffset,
348
+ width
349
+ }) => pin === "left" ? { left: pinnedOffset, width } : pin === "right" ? { right: pinnedOffset, width } : { width };
345
350
  var setAggregations = (aggregations, column, aggType) => {
346
351
  return aggregations.filter((agg) => agg.column !== column.name).concat({ column: column.name, aggType });
347
352
  };
@@ -475,10 +480,12 @@ var getColumnsInViewport = (columns, vpStart, vpEnd) => {
475
480
  if (column.hidden) {
476
481
  continue;
477
482
  } else if (offset + column.width < vpStart) {
478
- if (offset + column.width + ((_a = columns[i + 1]) == null ? void 0 : _a.width) > vpStart) {
483
+ if (column.pin === "left") {
484
+ visibleColumns.push(column);
485
+ } else if (offset + column.width + ((_a = columns[i + 1]) == null ? void 0 : _a.width) > vpStart) {
479
486
  visibleColumns.push(column);
480
487
  } else {
481
- preSpan += 1;
488
+ preSpan += column.width;
482
489
  }
483
490
  } else if (offset > vpEnd) {
484
491
  visibleColumns.push(column);
@@ -585,6 +592,12 @@ function resetRange({ from, to, bufferSize = 0 }) {
585
592
  };
586
593
  }
587
594
  var withinRange = (value, { from, to }) => value >= from && value < to;
595
+ var rangeNewItems = ({ from: from1, to: to1 }, newRange) => {
596
+ const { from: from2, to: to2 } = newRange;
597
+ const noOverlap = from2 >= to1 || to2 <= from1;
598
+ const newFullySubsumesOld = from2 < from1 && to2 > to1;
599
+ return noOverlap || newFullySubsumesOld ? newRange : to2 > to1 ? { from: to1, to: to2 } : { from: from2, to: from1 };
600
+ };
588
601
  var WindowRange = class {
589
602
  constructor(from, to) {
590
603
  this.from = from;
@@ -1226,7 +1239,7 @@ var KeySet = class {
1226
1239
  });
1227
1240
  const size = to - from;
1228
1241
  if (this.keys.size + this.free.length > size) {
1229
- this.free.length = size - this.keys.size;
1242
+ this.free.length = Math.max(0, size - this.keys.size);
1230
1243
  }
1231
1244
  for (let rowIndex = from; rowIndex < to; rowIndex++) {
1232
1245
  if (!this.keys.has(rowIndex)) {
@@ -1234,6 +1247,9 @@ var KeySet = class {
1234
1247
  this.keys.set(rowIndex, nextKeyValue);
1235
1248
  }
1236
1249
  }
1250
+ if (this.nextKeyValue > this.keys.size) {
1251
+ this.nextKeyValue = this.keys.size;
1252
+ }
1237
1253
  }
1238
1254
  keyFor(rowIndex) {
1239
1255
  const key = this.keys.get(rowIndex);
@@ -1301,6 +1317,24 @@ function throttle(callback, limit) {
1301
1317
  };
1302
1318
  }
1303
1319
 
1320
+ // src/row-utils.ts
1321
+ var { IDX } = metadataKeys;
1322
+ var actualRowPositioning = (rowHeight) => [
1323
+ (row) => row[IDX] * rowHeight,
1324
+ (position) => Math.floor(position / rowHeight)
1325
+ ];
1326
+ var virtualRowPositioning = (rowHeight, additionalPixelsNeeded, pctScrollTop) => [
1327
+ (row) => {
1328
+ const rowOffset = pctScrollTop.current * additionalPixelsNeeded;
1329
+ return row[IDX] * rowHeight - rowOffset;
1330
+ },
1331
+ (position) => {
1332
+ const rowOffset = pctScrollTop.current * additionalPixelsNeeded;
1333
+ const result = Math.floor((position + rowOffset) / rowHeight);
1334
+ return result;
1335
+ }
1336
+ ];
1337
+
1304
1338
  // src/selection-utils.ts
1305
1339
  var NO_SELECTION = [];
1306
1340
  var inAscendingOrder = (item1, item2) => {
@@ -1504,6 +1538,7 @@ export {
1504
1538
  UP1,
1505
1539
  UP2,
1506
1540
  WindowRange,
1541
+ actualRowPositioning,
1507
1542
  addGroupColumn,
1508
1543
  addSortColumn,
1509
1544
  applyFilterToColumns,
@@ -1526,7 +1561,7 @@ export {
1526
1561
  getCellConfigPanelRenderer,
1527
1562
  getCellRenderer,
1528
1563
  getColumnName,
1529
- getColumnPinStyle,
1564
+ getColumnStyle,
1530
1565
  getColumnsInViewport,
1531
1566
  getCookieValue,
1532
1567
  getFullRange,
@@ -1541,6 +1576,7 @@ export {
1541
1576
  invariant,
1542
1577
  isAndFilter,
1543
1578
  isCharacterKey,
1579
+ isColumnTypeRenderer,
1544
1580
  isDataLoading,
1545
1581
  isDateColumn,
1546
1582
  isDatePattern,
@@ -1580,6 +1616,7 @@ export {
1580
1616
  numericFormatter,
1581
1617
  partition,
1582
1618
  projectUpdates,
1619
+ rangeNewItems,
1583
1620
  registerComponent,
1584
1621
  resetRange,
1585
1622
  roundDecimal,
@@ -1592,6 +1629,7 @@ export {
1592
1629
  toColumnDescriptor,
1593
1630
  toDataSourceColumns,
1594
1631
  uuid,
1632
+ virtualRowPositioning,
1595
1633
  visibleColumnAtIndex,
1596
1634
  withinRange
1597
1635
  };