@guiexpert/table 1.1.74 → 1.1.76

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/index.js CHANGED
@@ -15,7 +15,7 @@ function Ge(d, e = 500) {
15
15
  }, e);
16
16
  };
17
17
  }
18
- function Ht(d = 500) {
18
+ function Vt(d = 500) {
19
19
  return function(e, t, s) {
20
20
  let o = 0;
21
21
  const i = s.value;
@@ -25,8 +25,8 @@ function Ht(d = 500) {
25
25
  }, s;
26
26
  };
27
27
  }
28
- const De = "any", j = "undefined", Pe = "null", Fe = "string", ce = "number", de = "boolean", Le = "Array", U = "object", X = [Pe, j, De];
29
- class Oe {
28
+ const De = "any", j = "undefined", Pe = "null", Fe = "string", ce = "number", de = "boolean", Oe = "Array", U = "object", X = [Pe, j, De];
29
+ class Le {
30
30
  constructor(e) {
31
31
  this.propertyName = e, this.type = De;
32
32
  }
@@ -56,12 +56,12 @@ class Ye {
56
56
  this.propertyName = e, this.type = de;
57
57
  }
58
58
  }
59
- class H {
59
+ class V {
60
60
  constructor(e, t = []) {
61
- this.propertyName = e, this.items = t, this.type = Le;
61
+ this.propertyName = e, this.items = t, this.type = Oe;
62
62
  }
63
63
  }
64
- class $e {
64
+ class _e {
65
65
  constructor(e, t = []) {
66
66
  this.propertyName = e, this.types = t;
67
67
  }
@@ -74,7 +74,7 @@ class D {
74
74
  this.propertyName = e, this.className = t, this.properties = s, this.type = U;
75
75
  }
76
76
  }
77
- class Vt {
77
+ class Ht {
78
78
  constructor() {
79
79
  this.rootPropertyType = null, this.allowCustomRenderer = !0, this.bufCustomRenderer = [], this.LABEL_MAPPINGS = {
80
80
  Id: "ID",
@@ -100,7 +100,7 @@ class Vt {
100
100
  const s = [];
101
101
  if (!this.rootPropertyType)
102
102
  return s;
103
- if (e instanceof H) {
103
+ if (e instanceof V) {
104
104
  const o = e.items.find((i) => i.type === U);
105
105
  if (o && o instanceof D) {
106
106
  const i = o.properties;
@@ -119,13 +119,13 @@ class Vt {
119
119
  this.iteratePropertyItems(e, n.properties, l);
120
120
  else {
121
121
  let a = "";
122
- if (n instanceof H) {
122
+ if (n instanceof V) {
123
123
  const p = n.items.find((m) => m.type === U);
124
124
  p && p instanceof D && (a = p.className);
125
125
  }
126
126
  const c = this.getReadableColumnLabel(l);
127
127
  let h = 100, u = "", g = "ge-table-text-align-left";
128
- if (n.type === Le) {
128
+ if (n.type === Oe) {
129
129
  if (this.allowCustomRenderer && a) {
130
130
  const p = `${a}ArrayCellRenderer`;
131
131
  u = ` bodyRenderer: new ${p}(),`, g = "", this.renderCumstomCellRenderer(a, p);
@@ -262,7 +262,7 @@ class ye {
262
262
  }
263
263
  class Ke {
264
264
  constructor() {
265
- this.property = "", this.value = "", this.path = "", this.propertyItem = new $e("", [new Oe("")]);
265
+ this.property = "", this.value = "", this.path = "", this.propertyItem = new _e("", [new Le("")]);
266
266
  }
267
267
  toString() {
268
268
  var e;
@@ -515,7 +515,7 @@ class Wt {
515
515
  const l = r.propertyItem.types.filter((a) => !X.includes(a.type));
516
516
  if (l.length === 1) {
517
517
  const a = l[0];
518
- if (a instanceof H) {
518
+ if (a instanceof V) {
519
519
  n = !0;
520
520
  for (const c of o.propertyItem.types)
521
521
  a.items.push(c);
@@ -527,7 +527,7 @@ class Wt {
527
527
  }
528
528
  }
529
529
  }
530
- return t || new Oe("");
530
+ return t || new Le("");
531
531
  }
532
532
  logValueInfos(e) {
533
533
  for (let t = 0; t < e.length; t++) {
@@ -594,12 +594,12 @@ class Wt {
594
594
  return o(e, "root", t), s.sort((i, r) => i.path.localeCompare(r.path));
595
595
  }
596
596
  createPropertyItem(e, t) {
597
- return new $e(t, [
597
+ return new _e(t, [
598
598
  this.createPropertyType(e, t)
599
599
  ]);
600
600
  }
601
601
  createPropertyType(e, t) {
602
- return e === null ? new ze(t) : e === void 0 ? new se(t) : typeof e === Fe ? new je(t) : typeof e === ce && !isNaN(e) ? new Ue(t) : typeof e === de ? new Ye(t) : Array.isArray(e) ? new H(t) : typeof e === U ? new D(t, Xe(t)) : new se(t);
602
+ return e === null ? new ze(t) : e === void 0 ? new se(t) : typeof e === Fe ? new je(t) : typeof e === ce && !isNaN(e) ? new Ue(t) : typeof e === de ? new Ye(t) : Array.isArray(e) ? new V(t) : typeof e === U ? new D(t, Xe(t)) : new se(t);
603
603
  }
604
604
  }
605
605
  class Nt {
@@ -620,7 +620,7 @@ class Nt {
620
620
  }
621
621
  renderTypeScriptInterfacesRecursive(e = this.rootPropertyType, t = [], s = this.rootName) {
622
622
  if (!e) return t;
623
- if (e instanceof H) {
623
+ if (e instanceof V) {
624
624
  for (const o of e.items)
625
625
  if (this.renderTypeScriptInterfacesRecursive(o, t, s), o instanceof D) {
626
626
  const i = o;
@@ -638,7 +638,7 @@ class Nt {
638
638
  for (const a of r.types)
639
639
  if (a instanceof D)
640
640
  a !== this.rootPropertyType && this.renderTypeScriptInterfacesFifo.push(a);
641
- else if (a instanceof H)
641
+ else if (a instanceof V)
642
642
  for (const c of a.items)
643
643
  c instanceof D && this.renderTypeScriptInterfacesFifo.push(c);
644
644
  }
@@ -655,7 +655,7 @@ class Nt {
655
655
  return t.includes(this.orOperator) ? "(" + t + ")" : t;
656
656
  }
657
657
  renderType(e, t) {
658
- if (e instanceof H) {
658
+ if (e instanceof V) {
659
659
  const s = e.items.map((o) => this.renderType(o, t)).join(this.orOperator);
660
660
  return s.includes(this.orOperator) ? `(${s})[]` : `${s}[]`;
661
661
  }
@@ -721,25 +721,25 @@ class he {
721
721
  );
722
722
  }
723
723
  }
724
- class O {
724
+ class _ {
725
725
  constructor(e = ">", t = "", s = []) {
726
726
  this.content = e, this.style = t, this.classes = s;
727
727
  }
728
728
  }
729
- class _e {
730
- constructor(e = new O(
729
+ class $e {
730
+ constructor(e = new _(
731
731
  ">",
732
732
  "transform: rotate(90deg) translate(66%, -66%); transform-origin: 0 0;",
733
733
  ["gt-table-tree-arrow-expanded"]
734
- ), t = new O(
734
+ ), t = new _(
735
735
  ">",
736
736
  "",
737
737
  ["ge-table-tree-arrow-collapsed"]
738
- ), s = new O(
738
+ ), s = new _(
739
739
  ">",
740
740
  "color:transparent;",
741
741
  ["gt-table-tree-arrow-hidden"]
742
- ), o = new O(
742
+ ), o = new _(
743
743
  "↕",
744
744
  "",
745
745
  ["gt-table-tree-arrow-expanded-all"]
@@ -748,7 +748,7 @@ class _e {
748
748
  }
749
749
  }
750
750
  class Be {
751
- constructor(e = new O("↑", "", ["ge-header-sorted-asc"]), t = new O("↓", "", ["ge-header-sorted-desc"]), s = new O("↑", "color:transparent;", [])) {
751
+ constructor(e = new _("↑", "", ["ge-header-sorted-asc"]), t = new _("↓", "", ["ge-header-sorted-desc"]), s = new _("↑", "color:transparent;", [])) {
752
752
  this.iconAsc = e, this.iconDesc = t, this.iconPlaceholder = s;
753
753
  }
754
754
  }
@@ -883,7 +883,7 @@ class Qe {
883
883
  this.domService.addClass(i, a);
884
884
  return this.domService.appendChild(e, i), i;
885
885
  }
886
- addArrowDiv(e, t = "none", s = new _e(), o = -1, i = -1, r = "body") {
886
+ addArrowDiv(e, t = "none", s = new $e(), o = -1, i = -1, r = "body") {
887
887
  const n = this.domService.createElement("div");
888
888
  this.domService.addClass(n, "ge-table-tree-arrow-div"), this.domService.setStyle(n, "display", "inline-block"), this.domService.setStyle(n, "position", ""), this.domService.setStyle(n, "width", "20px"), this.domService.setStyle(n, "background", "transparent"), this.domService.setStyle(n, "cursor", "pointer"), this.domService.setAttribute(n, "data-row-index", `${o}`), this.domService.setAttribute(n, "data-col-index", `${i}`), this.domService.setAttribute(n, "data-area", `${r}`);
889
889
  let l;
@@ -1140,6 +1140,8 @@ class ue {
1140
1140
  doSort(e) {
1141
1141
  return !1;
1142
1142
  }
1143
+ sort(e) {
1144
+ }
1143
1145
  isEditable(e, t) {
1144
1146
  var o, i;
1145
1147
  const s = (o = this.columnDefs) == null ? void 0 : o[t];
@@ -1177,7 +1179,7 @@ class ue {
1177
1179
  this.yPositions[t + 1] = this.getRowHeight(t) + this.yPositions[t];
1178
1180
  }
1179
1181
  }
1180
- class He {
1182
+ class Ve {
1181
1183
  genericSortComparator(e, t, s) {
1182
1184
  if (typeof e == "number" && typeof t == "number")
1183
1185
  return s * (e - t);
@@ -1195,9 +1197,15 @@ class He {
1195
1197
  return s * ("" + e).localeCompare("" + t);
1196
1198
  }
1197
1199
  }
1198
- class $ extends ue {
1200
+ class O extends ue {
1199
1201
  constructor(e, t, s, o = [], i = "ge-selected-row", r = "ge-focused-row") {
1200
- super(e, o, s), this.areaIdent = e, this.rows = t, this.defaultRowHeight = s, this.columnDefs = o, this.selectedRowClass = i, this.focusedRowClass = r, this.focusedRowIndex = 0, this.sorterService = new He(), this.filteredRows = [...t], this.properties = o.map((n) => n.property);
1202
+ super(e, o, s), this.areaIdent = e, this.rows = t, this.defaultRowHeight = s, this.columnDefs = o, this.selectedRowClass = i, this.focusedRowClass = r, this.sorterService = new Ve(), this._focusedRowIndex = 0, this.filteredRows = [...t], this.properties = o.map((n) => n.property);
1203
+ }
1204
+ getFocusedRowIndex() {
1205
+ return this._focusedRowIndex;
1206
+ }
1207
+ setFocusedRowIndex(e) {
1208
+ this._focusedRowIndex = e;
1201
1209
  }
1202
1210
  setRows(e) {
1203
1211
  this.rows = e, this.filteredRows = [...e];
@@ -1229,6 +1237,28 @@ class $ extends ue {
1229
1237
  getAllRows() {
1230
1238
  return this.rows;
1231
1239
  }
1240
+ /**
1241
+ * Returns the first row from the filtered rows that matches the given criteria based on the provided predicate function.
1242
+ *
1243
+ * @param {Partial<T>} criteria - A partial object containing the search criteria
1244
+ * @param {(criteria: Partial<T>, row: T) => boolean} predicate - A function that takes the search criteria and a row,
1245
+ * and returns true if the row matches the criteria
1246
+ * @returns {T | undefined} The first matching row, or undefined if no match is found
1247
+ */
1248
+ findRowFromFilteredRowsByAllCriteria(e, t) {
1249
+ return this.getFilteredRows().find((s) => t(e, s));
1250
+ }
1251
+ /**
1252
+ * Searches through all rows to find a row that matches the given criteria based on the predicate function.
1253
+ *
1254
+ * @param {Partial<T>} criteria - A partial object containing the search criteria
1255
+ * @param {(criteria: Partial<T>, row: T) => boolean} predicate - A function that takes the search criteria and a row,
1256
+ * and returns true if the row matches the criteria
1257
+ * @returns {T | undefined} The first matching row from all rows, or undefined if no match is found
1258
+ */
1259
+ findRowFromAllRowsByAllCriteria(e, t) {
1260
+ return this.getAllRows().find((s) => t(e, s));
1261
+ }
1232
1262
  getRowHeight(e) {
1233
1263
  return this.defaultRowHeight;
1234
1264
  }
@@ -1245,6 +1275,9 @@ class $ extends ue {
1245
1275
  }
1246
1276
  return !0;
1247
1277
  }
1278
+ sort(e) {
1279
+ this.filteredRows = this.filteredRows.sort(e);
1280
+ }
1248
1281
  getValueByT(e, t) {
1249
1282
  if (e && t)
1250
1283
  return t.includes(".") ? this.getPropertyValue(e, t.split(".")) : e[t];
@@ -1254,7 +1287,7 @@ class $ extends ue {
1254
1287
  }
1255
1288
  getCustomClassesAt(e, t) {
1256
1289
  const s = super.getCustomClassesAt(e, t);
1257
- return this.getRowByIndex(e).selected && s.push(this.selectedRowClass), this.focusedRowIndex === e && s.push(this.focusedRowClass), s;
1290
+ return this.getRowByIndex(e).selected && s.push(this.selectedRowClass), this._focusedRowIndex === e && s.push(this.focusedRowClass), s;
1258
1291
  }
1259
1292
  genericFlatTableSortComparator(e, t) {
1260
1293
  const s = this.columnDefs.find((o) => o.property === e);
@@ -1482,58 +1515,314 @@ class st {
1482
1515
  getSelectionModel() {
1483
1516
  return this.tableScope.selectionModel();
1484
1517
  }
1518
+ /**
1519
+ * Automatically resizes all columns to fit their content.
1520
+ *
1521
+ * @param {boolean} recalcWrappers - Determines whether to recalculate wrapper dimensions after resizing columns.
1522
+ * Default value is true.
1523
+ *
1524
+ * @return {void} - This method doesn't return anything.
1525
+ */
1485
1526
  autoResizeColumns(e = !0) {
1486
1527
  this.tableScope.autoResizeColumns(e);
1487
1528
  }
1529
+ /**
1530
+ * Recalculates the dimensions of all wrapper elements in the table.
1531
+ *
1532
+ * This method is typically called after changes to the table structure or content
1533
+ * that might affect the layout, such as resizing columns or changing row heights.
1534
+ * It ensures that all wrapper elements are properly sized to match their content.
1535
+ *
1536
+ * @return {void} - This method doesn't return anything.
1537
+ */
1488
1538
  recalcWrappers() {
1489
1539
  this.tableScope.recalcWrappers();
1490
1540
  }
1541
+ /**
1542
+ * Sets the width of a specific column in the table.
1543
+ *
1544
+ * @param {number} columnIndex - The index of the column to resize.
1545
+ * @param {number} width - The new width to set for the column, in pixels.
1546
+ *
1547
+ * @return {void} - This method doesn't return anything.
1548
+ */
1491
1549
  setColumnWidth(e, t) {
1492
1550
  this.tableScope.setColumnWidth(e, t);
1493
1551
  }
1552
+ /**
1553
+ * Retrieves the table model that contains all data and structure information for the table.
1554
+ *
1555
+ * @return {TableModelIf} The table model interface that provides access to the table's data structure,
1556
+ * including header, body, and footer area models.
1557
+ */
1494
1558
  getTableModel() {
1495
1559
  return this.tableScope.tableModel;
1496
1560
  }
1561
+ /**
1562
+ * Retrieves the area model for the body section of the table.
1563
+ *
1564
+ * @return {AreaModelIf} The area model interface that provides access to the table's body data,
1565
+ * including rows, cells, and their values.
1566
+ */
1497
1567
  getBodyModel() {
1498
1568
  return this.tableScope.tableModel.getBodyModel();
1499
1569
  }
1570
+ /**
1571
+ * Sets the rows data for the table body, replacing any existing rows.
1572
+ *
1573
+ * @template T - The type of elements in the rows array
1574
+ * @param {T[]} rows - An array of data objects to set as the table's rows
1575
+ *
1576
+ * @description
1577
+ * This method replaces all existing rows in the table body with the provided array of data objects.
1578
+ * It only works with tables that use AreaModelObjectArray as their body model.
1579
+ *
1580
+ * @return {void} - This method doesn't return anything.
1581
+ *
1582
+ * @throws {Warning} Logs a console warning if the table's body model is not an AreaModelObjectArray
1583
+ */
1500
1584
  setRows(e) {
1501
1585
  const t = this.getBodyModel();
1502
- t instanceof $ ? t.setRows(e) : console.warn("setRows<T>(rows: T[]) only works with AreaModelObjectArray<T>, but this body area model is ", typeof t, t);
1586
+ t instanceof O ? t.setRows(e) : console.warn("setRows<T>(rows: T[]) only works with AreaModelObjectArray<T>, but this body area model is ", typeof t, t);
1503
1587
  }
1588
+ /**
1589
+ * Adds new rows to the end of the table body.
1590
+ *
1591
+ * @template T - The type of elements in the rows array
1592
+ * @param {T[]} rows - An array of data objects to append to the table's existing rows
1593
+ *
1594
+ * @description
1595
+ * This method appends the provided array of data objects to the end of the existing rows in the table body.
1596
+ * It only works with tables that use AreaModelObjectArray as their body model.
1597
+ *
1598
+ * @return {void} - This method doesn't return anything.
1599
+ *
1600
+ * @throws {Warning} Logs a console warning if the table's body model is not an AreaModelObjectArray
1601
+ */
1504
1602
  addRows(e) {
1505
1603
  const t = this.getBodyModel();
1506
- if (t instanceof $) {
1604
+ if (t instanceof O) {
1507
1605
  const s = t;
1508
1606
  let o = s.getAllRows();
1509
1607
  s.setRows([...o, ...e]);
1510
1608
  } else
1511
1609
  console.warn("addRows<T>(rows: T[]) only works with AreaModelObjectArray<T>, but this body area model is ", typeof t, t);
1512
1610
  }
1611
+ /**
1612
+ * Inserts new rows at a specific position in the table body.
1613
+ *
1614
+ * @template T - The type of elements in the rows array
1615
+ * @param {T[]} rows - An array of data objects to insert into the table
1616
+ * @param {number} rowIndex - The index position where the new rows should be inserted
1617
+ *
1618
+ * @description
1619
+ * This method inserts the provided array of data objects at the specified index position in the table body.
1620
+ * Existing rows at or after the specified index will be shifted down.
1621
+ * It only works with tables that use AreaModelObjectArray as their body model.
1622
+ *
1623
+ * @return {void} - This method doesn't return anything.
1624
+ *
1625
+ * @throws {Warning} Logs a console warning if the table's body model is not an AreaModelObjectArray
1626
+ */
1513
1627
  addRowsAt(e, t) {
1514
1628
  const s = this.getBodyModel();
1515
- if (s instanceof $) {
1629
+ if (s instanceof O) {
1516
1630
  const o = s;
1517
1631
  let i = o.getAllRows();
1518
1632
  o.setRows([...i.slice(0, t), ...e, ...i.slice(t)]);
1519
1633
  } else
1520
1634
  console.warn("addRowsAt<T>(rows: T[]) only works with AreaModelObjectArray<T>, but this body area model is ", typeof s, s);
1521
1635
  }
1636
+ /**
1637
+ * Removes specified rows from the table body.
1638
+ *
1639
+ * @template T - The type of elements in the rows array
1640
+ * @param {T[]} rows - An array of data objects to remove from the table
1641
+ * @param {(a: T, b: T) => boolean} predicate - A comparison function that determines if two rows match
1642
+ * - Default predicate uses strict equality (===)
1643
+ * - The function should return true if the rows are considered a match
1644
+ *
1645
+ * @description
1646
+ * This method removes rows from the table body that match any of the provided rows based on the predicate function.
1647
+ * It only works with tables that use AreaModelObjectArray as their body model.
1648
+ *
1649
+ * @return {void} - This method doesn't return anything.
1650
+ *
1651
+ * @throws {Warning} Logs a console warning if the table's body model is not an AreaModelObjectArray
1652
+ */
1522
1653
  removeRows(e, t = (s, o) => s === o) {
1523
1654
  const s = this.getBodyModel();
1524
- if (s instanceof $) {
1655
+ if (s instanceof O) {
1525
1656
  const o = s, i = o.getAllRows().filter((r) => !e.some((n) => t(r, n)));
1526
1657
  o.setRows(i);
1527
1658
  } else
1528
1659
  console.warn("removeRows<T>(rows: T[]) only works with AreaModelObjectArray<T>, but this body area model is ", typeof s, s);
1529
1660
  }
1661
+ /**
1662
+ * Searches for and returns rows from the table body that match the given criteria.
1663
+ *
1664
+ * @template T - The type of elements in the rows array
1665
+ *
1666
+ * @description
1667
+ * This method searches through the table body model for rows that match the provided criteria.
1668
+ * It only works with tables that use AreaModelObjectArray as their body model.
1669
+ * The method uses a predicate function to determine matches between rows.
1670
+ *
1671
+ * @param {T[]} rows - An array of rows to search for in the table body
1672
+ * @param {(a: T, b: T) => boolean} predicate - A comparison function that determines if two rows match
1673
+ * - Default predicate uses strict equality (===)
1674
+ * - The function should return true if the rows are considered a match
1675
+ * - Parameters:
1676
+ * - a: The row from the table body being checked
1677
+ * - b: The row from the input array being searched for
1678
+ *
1679
+ * @returns {T[]} An array containing all matching rows found in the table body
1680
+ * - Returns an empty array if:
1681
+ * - The body model is not an instance of AreaModelObjectArray
1682
+ * - No matches are found
1683
+ *
1684
+ * @example
1685
+ * // Find rows with simple equality comparison
1686
+ * const matchingRows = table.findRows([row1, row2]);
1687
+ *
1688
+ * @example
1689
+ * // Find rows with custom comparison logic
1690
+ * const matchingRows = table.findRows([row1, row2], (a, b) => a.id === b.id);
1691
+ *
1692
+ * @throws {Warning} Logs a console warning if the table's body model is not an AreaModelObjectArray
1693
+ */
1530
1694
  findRows(e, t = (s, o) => s === o) {
1531
1695
  const s = this.getBodyModel();
1532
- return s instanceof $ ? s.getAllRows().filter((i) => e.some((r) => t(i, r))) : (console.warn("findRows<T>(rows: T[], predicate: (a: T, b: T) => boolean) only works with AreaModelObjectArray<T>, but this body area model is ", typeof s, s), []);
1696
+ return s instanceof O ? s.getAllRows().filter((i) => e.some((r) => t(i, r))) : (console.warn("findRows<T>(rows: T[], predicate: (a: T, b: T) => boolean) only works with AreaModelObjectArray<T>, but this body area model is ", typeof s, s), []);
1697
+ }
1698
+ /**
1699
+ * Searches through the filtered rows of the table to find a row that matches specific criteria.
1700
+ * This method only works with tables that use AreaModelObjectArray as their body model.
1701
+ *
1702
+ * @template T - The type of the row objects in the table
1703
+ *
1704
+ * @param {Partial<T>} criteria - A partial object containing the search criteria.
1705
+ * Only needs to include the properties you want to match against.
1706
+ *
1707
+ * @param {(criteria: Partial<T>, row: T) => boolean} predicate - A function that defines how to match rows against the criteria.
1708
+ * Returns true if the row matches the criteria, false otherwise.
1709
+ *
1710
+ * @returns {T | undefined} The first matching row from the filtered rows, or undefined if no match is found
1711
+ * or if the body model is not an instance of AreaModelObjectArray.
1712
+ *
1713
+ * @example
1714
+ * ```typescript
1715
+ * interface Person {
1716
+ * id: number;
1717
+ * name: string;
1718
+ * age: number;
1719
+ * }
1720
+ *
1721
+ * // Find a person by exact match
1722
+ * const criteria = { name: "John", age: 30 };
1723
+ * const person = tableApi.findRowFromFilteredRowsByAllCriteria<Person>(
1724
+ * criteria,
1725
+ * (criteria, row) => row.name === criteria.name && row.age === criteria.age
1726
+ * );
1727
+ *
1728
+ * // Find a person by partial name match
1729
+ * const searchCriteria = { name: "Jo" };
1730
+ * const person2 = tableApi.findRowFromFilteredRowsByAllCriteria<Person>(
1731
+ * searchCriteria,
1732
+ * (criteria, row) => row.name.toLowerCase().includes(criteria.name!.toLowerCase())
1733
+ * );
1734
+ *
1735
+ * // Find a person within age range
1736
+ * const ageCriteria = { minAge: 25, maxAge: 35 };
1737
+ * const person3 = tableApi.findRowFromFilteredRowsByAllCriteria<Person>(
1738
+ * ageCriteria,
1739
+ * (criteria, row) => row.age >= criteria.minAge! && row.age <= criteria.maxAge!
1740
+ * );
1741
+ * ```
1742
+ *
1743
+ * @throws {Warning} Logs a warning to console if the body model is not an instance of AreaModelObjectArray
1744
+ *
1745
+ * @remarks
1746
+ * - This method only searches through filtered rows (rows that are currently visible in the table)
1747
+ * - If you need to search through all rows (including filtered out ones), use findRowFromAllRowsByAllCriteria instead
1748
+ * - The predicate function gives you full control over how to match rows against your criteria
1749
+ * - Returns undefined if either no match is found or if the table's body model is not compatible
1750
+ */
1751
+ findRowFromFilteredRowsByAllCriteria(e, t) {
1752
+ const s = this.getBodyModel();
1753
+ if (s instanceof O)
1754
+ return s.getFilteredRows().find((i) => t(e, i));
1755
+ console.warn("findRowFromFilteredRowsByAllCriteria(...) only works with AreaModelObjectArray<T>, but this body area model is ", typeof s, s);
1756
+ }
1757
+ /**
1758
+ * Searches through all rows in the table's body model to find a row that matches specified criteria.
1759
+ * This method works only with AreaModelObjectArray<T> body models.
1760
+ *
1761
+ * @template T - The type of objects/rows in the table
1762
+ *
1763
+ * @param {Partial<T>} criteria - A partial object containing the search criteria.
1764
+ * Only needs to include the properties you want to match against.
1765
+ *
1766
+ * @param {(criteria: Partial<T>, row: T) => boolean} predicate - A function that defines how to match rows against the criteria.
1767
+ * Returns true if the row matches the criteria, false otherwise.
1768
+ *
1769
+ * @returns {T | undefined} The first matching row, or undefined if no match is found or if the body model is not AreaModelObjectArray.
1770
+ *
1771
+ * @example
1772
+ * // Find a user row by id and name
1773
+ * const criteria = { id: 1, name: "John" };
1774
+ * const user = tableApi.findRowFromAllRowsByAllCriteria(criteria,
1775
+ * (criteria, row) => row.id === criteria.id && row.name === criteria.name
1776
+ * );
1777
+ *
1778
+ * @example
1779
+ * // Find a product row with partial match on name
1780
+ * const criteria = { name: "Phone" };
1781
+ * const product = tableApi.findRowFromAllRowsByAllCriteria(criteria,
1782
+ * (criteria, row) => row.name.includes(criteria.name)
1783
+ * );
1784
+ *
1785
+ * @example
1786
+ * // Find an order with complex matching logic
1787
+ * const criteria = { total: 100, status: "pending" };
1788
+ * const order = tableApi.findRowFromAllRowsByAllCriteria(criteria,
1789
+ * (criteria, row) => {
1790
+ * return row.total > criteria.total &&
1791
+ * row.status === criteria.status &&
1792
+ * row.items.length > 0;
1793
+ * }
1794
+ * );
1795
+ *
1796
+ * @throws {Warning} Logs a warning to console if the body model is not an instance of AreaModelObjectArray
1797
+ */
1798
+ findRowFromAllRowsByAllCriteria(e, t) {
1799
+ const s = this.getBodyModel();
1800
+ if (s instanceof O)
1801
+ return s.getAllRows().find((i) => t(e, i));
1802
+ console.warn("findRowFromAllRowsByAllCriteria(...) only works with AreaModelObjectArray<T>, but this body area model is ", typeof s, s);
1533
1803
  }
1804
+ /**
1805
+ * Updates existing rows in the table body with new data.
1806
+ *
1807
+ * @template T - The type of elements in the rows array
1808
+ * @param {T[]} rows - An array of data objects containing the updated values
1809
+ * @param {(a: T, b: T) => boolean} predicate - A comparison function that determines which rows to update
1810
+ * - Default predicate uses strict equality (===)
1811
+ * - The function should return true if the row should be updated
1812
+ *
1813
+ * @description
1814
+ * This method updates existing rows in the table body with new values from the provided rows array.
1815
+ * For each row in the table, if the predicate returns true when compared with any row in the provided array,
1816
+ * all properties from the provided row will be copied to the existing row.
1817
+ * It only works with tables that use AreaModelObjectArray as their body model.
1818
+ *
1819
+ * @return {void} - This method doesn't return anything.
1820
+ *
1821
+ * @throws {Warning} Logs a console warning if the table's body model is not an AreaModelObjectArray
1822
+ */
1534
1823
  updateRows(e, t = (s, o) => s === o) {
1535
1824
  const s = this.getBodyModel();
1536
- if (s instanceof $) {
1825
+ if (s instanceof O) {
1537
1826
  let i = s.getAllRows();
1538
1827
  for (const r of i)
1539
1828
  for (const n of e)
@@ -1543,12 +1832,165 @@ class st {
1543
1832
  } else
1544
1833
  console.warn("updateRows<T>(rows: T[], predicate: (a: T, b: T) => boolean) only works with AreaModelObjectArray<T>, but this body area model is ", typeof s, s);
1545
1834
  }
1835
+ /**
1836
+ * Re-applies the current sorting configuration to the table data.
1837
+ *
1838
+ * @description
1839
+ * This method triggers a re-sort of the table data using the current sorting configuration.
1840
+ * It's useful when the underlying data has changed and needs to be re-sorted without changing
1841
+ * the sort columns or direction.
1842
+ *
1843
+ * @return {void} - This method doesn't return anything.
1844
+ */
1546
1845
  reSort() {
1547
1846
  this.tableScope.reSort();
1548
1847
  }
1848
+ /**
1849
+ * Sorts the table data using a custom comparison function.
1850
+ *
1851
+ * This method allows sorting of table rows by providing a custom comparison function. The comparison function
1852
+ * should follow the standard JavaScript array sort comparator pattern, returning:
1853
+ * - A negative number if the first element should be sorted before the second
1854
+ * - A positive number if the first element should be sorted after the second
1855
+ * - Zero if the elements are equal
1856
+ *
1857
+ * @param compareFn - A function that defines the sort order. The function should accept two arguments
1858
+ * and return a number indicating their relative order:
1859
+ * - Negative number: first argument should come before second
1860
+ * - Positive number: second argument should come before first
1861
+ * - Zero: elements are equal
1862
+ *
1863
+ * @example
1864
+ * // Sort table rows by a specific property in ascending order
1865
+ * table.api.sort((a, b) => {
1866
+ * if (a.name < b.name) return -1;
1867
+ * if (a.name > b.name) return 1;
1868
+ * return 0;
1869
+ * });
1870
+ *
1871
+ * @example
1872
+ * // Sort numbers in descending order
1873
+ * table.api.sort((a, b) => b.value - a.value);
1874
+ *
1875
+ * @example
1876
+ * // Sort with multiple criteria
1877
+ * table.api.sort((a, b) => {
1878
+ * // First sort by status
1879
+ * const statusCompare = a.status.localeCompare(b.status);
1880
+ * if (statusCompare !== 0) return statusCompare;
1881
+ *
1882
+ * // Then sort by name if status is equal
1883
+ * return a.name.localeCompare(b.name);
1884
+ * });
1885
+ *
1886
+ * @example
1887
+ * // Case-insensitive string sorting
1888
+ * table.api.sort((a, b) =>
1889
+ * a.name.toLowerCase().localeCompare(b.name.toLowerCase())
1890
+ * );
1891
+ */
1892
+ sort(e) {
1893
+ this.tableScope.sort(e);
1894
+ }
1895
+ /**
1896
+ * Ensures that a specific row is visible in the viewport by scrolling if necessary.
1897
+ * This method checks if the target row is within the currently visible range and
1898
+ * adjusts the scroll position if it's not visible.
1899
+ *
1900
+ * The method performs the following:
1901
+ * 1. Checks if the row is above the current viewport (before first visible row)
1902
+ * 2. Checks if the row is below the current viewport (after last visible row)
1903
+ * 3. Scrolls to make the row visible if needed
1904
+ *
1905
+ * @param {number} rowIndex - The index of the row to make visible
1906
+ * @returns {boolean} Returns true if scrolling was needed and performed, false if the row was already visible
1907
+ *
1908
+ * @example
1909
+ * // Ensure row 5 is visible in the viewport
1910
+ * tableApi.ensureRowIsVisible(5);
1911
+ *
1912
+ * @example
1913
+ * // Example usage in a component
1914
+ * class MyTableComponent {
1915
+ * private tableApi: TableApi;
1916
+ *
1917
+ * scrollToSpecificRow(rowIndex: number) {
1918
+ * // This will scroll the row into view if it's not visible
1919
+ * const didScroll = this.tableApi.ensureRowIsVisible(rowIndex);
1920
+ *
1921
+ * if (didScroll) {
1922
+ * console.log(`Table scrolled to show row ${rowIndex}`);
1923
+ * } else {
1924
+ * console.log(`Row ${rowIndex} was already visible`);
1925
+ * }
1926
+ * }
1927
+ * }
1928
+ *
1929
+ * @example
1930
+ * // Example with row selection
1931
+ * class TableHandler {
1932
+ * selectAndShowRow(rowIndex: number) {
1933
+ * // First ensure the row is visible
1934
+ * this.tableApi.ensureRowIsVisible(rowIndex);
1935
+ *
1936
+ * // Then perform selection
1937
+ * this.selectionModel.selectRow(rowIndex);
1938
+ * }
1939
+ * }
1940
+ *
1941
+ * @throws {Error} Implicitly may throw if rowIndex is not a number or if required properties are undefined
1942
+ *
1943
+ * @see {@link scrollToIndex} - The underlying method used for scrolling
1944
+ * @see {@link getDisplayedRowCount} - Related method for getting visible row count
1945
+ */
1946
+ ensureRowIsVisible(e) {
1947
+ return this.tableScope.ensureRowIsVisible(e);
1948
+ }
1949
+ /**
1950
+ * Retrieves the number of rows currently displayed in the table.
1951
+ *
1952
+ * @description
1953
+ * This method returns the count of rows that are currently visible in the table after
1954
+ * applying any filtering, pagination, or other visibility constraints.
1955
+ *
1956
+ * @return {number} The number of rows currently displayed in the table.
1957
+ */
1549
1958
  getDisplayedRowCount() {
1550
1959
  return this.tableScope.getDisplayedRowCount();
1551
1960
  }
1961
+ /**
1962
+ * Returns the index of the first visible row in the table's viewport.
1963
+ *
1964
+ * This method retrieves the first visible row index from the table's scope, which is useful
1965
+ * for virtual scrolling and viewport-related calculations. The index represents the topmost
1966
+ * visible row in the current scroll position of the table.
1967
+ *
1968
+ * This value is maintained internally by the table and updated during scrolling operations.
1969
+ * It's particularly important for:
1970
+ * - Virtual scrolling optimization
1971
+ * - Calculating visible range of rows
1972
+ * - Viewport-related operations
1973
+ * - Scroll position restoration
1974
+ *
1975
+ * @returns {number} The index of the first visible row in the table's viewport.
1976
+ * Returns -1 if no rows are visible or if the table is not yet rendered.
1977
+ *
1978
+ * @example
1979
+ * ```typescript
1980
+ * // Get the first visible row index
1981
+ * const tableApi = new TableApi(tableScope);
1982
+ * const firstVisibleIndex = tableApi.getFirstVisibleRowIndex();
1983
+ *
1984
+ * // Use the index for scroll position calculations
1985
+ * if (firstVisibleIndex >= 0) {
1986
+ * // Perform operations with the first visible row
1987
+ * console.log(`First visible row index: ${firstVisibleIndex}`);
1988
+ * }
1989
+ * ```
1990
+ */
1991
+ getFirstVisibleRowIndex() {
1992
+ return this.tableScope.getFirstVisibleRowIndex();
1993
+ }
1552
1994
  }
1553
1995
  class pe {
1554
1996
  constructor(e) {
@@ -3251,11 +3693,11 @@ class xt {
3251
3693
  }
3252
3694
  }
3253
3695
  class me {
3254
- constructor(e = new O(
3696
+ constructor(e = new _(
3255
3697
  "❯",
3256
3698
  "",
3257
3699
  ["gt-table-icon-expanded"]
3258
- ), t = new O(
3700
+ ), t = new _(
3259
3701
  "❯",
3260
3702
  "transform: rotate(180deg) translate(-100%, -100%); transform-origin: 0 0;",
3261
3703
  ["ge-table-icon-collapsed"]
@@ -3271,7 +3713,7 @@ class J {
3271
3713
  header: 34,
3272
3714
  body: 34,
3273
3715
  footer: 34
3274
- }, this.footerVerticalSeparator = !1, this.headerToggleExpandCollapseIcons = !1, this.headerVerticalSeparator = !1, this.treeOptions = new _e(), this.headerGroupOptions = new me(), this.showCheckboxWihoutExtraColumn = !1, this.externalFilterFunction = void 0, this.sortedOptions = new Be(), this.sortOrder = ["asc", "desc"], this.shortcutActionsDisabled = !1, this.resizeEventDebounceDelay = 500, this.getEditRenderer = (e, t) => new wt(), this.getSelectionModel = () => St, this.getFocusModel = () => Ct;
3716
+ }, this.footerVerticalSeparator = !1, this.headerToggleExpandCollapseIcons = !1, this.headerVerticalSeparator = !1, this.treeOptions = new $e(), this.headerGroupOptions = new me(), this.showCheckboxWihoutExtraColumn = !1, this.externalFilterFunction = void 0, this.sortedOptions = new Be(), this.sortOrder = ["asc", "desc"], this.shortcutActionsDisabled = !1, this.resizeEventDebounceDelay = 500, this.getEditRenderer = (e, t) => new wt(), this.getSelectionModel = () => St, this.getFocusModel = () => Ct;
3275
3717
  }
3276
3718
  }
3277
3719
  const N = class N {
@@ -3474,7 +3916,7 @@ class Rt {
3474
3916
  return this.createZip(s);
3475
3917
  }
3476
3918
  }
3477
- class Ve extends ct {
3919
+ class He extends ct {
3478
3920
  constructor(e, t, s, o, i, r = new q(), n = new Rt()) {
3479
3921
  var c;
3480
3922
  if (super(e, t, new Qe(s), o), this.eventListener = i, this.copyService = r, this.excelService = n, this.licenseManager = W.getInstance(), this.selectionService = new pt(this), this.api = new st(this), this.mouseStartAction = "", this.mouseStartWidth = -1, this.mouseStartColumnIndex = -1, this.dragFrom = -1, this.dragTo = -1, this.lastDragFrom = -1, this.lastDragTo = -1, this.firstDraggingRendering = !0, this.lastContextmenu = Date.now(), t.setTableScope(this), i || (this.eventListener = new ne()), (c = this.tableOptions) != null && c.autoRestoreOptions) {
@@ -3500,7 +3942,7 @@ class Ve extends ct {
3500
3942
  * @return {TableScope} - The newly created TableScope instance.
3501
3943
  */
3502
3944
  static create(e, t, s = new J(), o = new ne(), i = new yt(), r = new q()) {
3503
- return new Ve(e, t, i, s, o, r);
3945
+ return new He(e, t, i, s, o, r);
3504
3946
  }
3505
3947
  /**
3506
3948
  * Triggers an action based on the provided actionId.
@@ -3899,9 +4341,70 @@ class Ve extends ct {
3899
4341
  let e = ((t = this.storeSortingService) == null ? void 0 : t.getSortItems()) ?? [];
3900
4342
  this.tableModel.doSort(e);
3901
4343
  }
4344
+ sort(e) {
4345
+ this.tableModel.sort(e);
4346
+ }
3902
4347
  getDisplayedRowCount() {
3903
4348
  return this.displayedRowCount;
3904
4349
  }
4350
+ /**
4351
+ * Ensures that a specific row is visible in the viewport by scrolling if necessary.
4352
+ * This method checks if the target row is within the currently visible range and
4353
+ * adjusts the scroll position if it's not visible.
4354
+ *
4355
+ * The method performs the following:
4356
+ * 1. Checks if the row is above the current viewport (before first visible row)
4357
+ * 2. Checks if the row is below the current viewport (after last visible row)
4358
+ * 3. Scrolls to make the row visible if needed
4359
+ *
4360
+ * @param {number} rowIndex - The index of the row to make visible
4361
+ * @returns {boolean} Returns true if scrolling was needed and performed, false if the row was already visible
4362
+ *
4363
+ * @example
4364
+ * // Ensure row 5 is visible in the viewport
4365
+ * tableScope.ensureRowIsVisible(5);
4366
+ *
4367
+ * @example
4368
+ * // Example usage in a component
4369
+ * class MyTableComponent {
4370
+ * private tableScope: TableScope;
4371
+ *
4372
+ * scrollToSpecificRow(rowIndex: number) {
4373
+ * // This will scroll the row into view if it's not visible
4374
+ * const didScroll = this.tableScope.ensureRowIsVisible(rowIndex);
4375
+ *
4376
+ * if (didScroll) {
4377
+ * console.log(`Table scrolled to show row ${rowIndex}`);
4378
+ * } else {
4379
+ * console.log(`Row ${rowIndex} was already visible`);
4380
+ * }
4381
+ * }
4382
+ * }
4383
+ *
4384
+ * @example
4385
+ * // Example with row selection
4386
+ * class TableHandler {
4387
+ * selectAndShowRow(rowIndex: number) {
4388
+ * // First ensure the row is visible
4389
+ * this.tableScope.ensureRowIsVisible(rowIndex);
4390
+ *
4391
+ * // Then perform selection
4392
+ * this.selectionModel.selectRow(rowIndex);
4393
+ * }
4394
+ * }
4395
+ *
4396
+ * @throws {Error} Implicitly may throw if rowIndex is not a number or if required properties are undefined
4397
+ *
4398
+ * @see {@link scrollToIndex} - The underlying method used for scrolling
4399
+ * @see {@link getDisplayedRowCount} - Related method for getting visible row count
4400
+ */
4401
+ ensureRowIsVisible(e) {
4402
+ const t = this.firstVisibleRowIndex, s = this.firstVisibleRowIndex + this.displayedRowCount - 1;
4403
+ return e < t ? (this.scrollToIndex(0, e), !0) : e > s ? (this.scrollToIndex(0, e - this.displayedRowCount + 1), !0) : !1;
4404
+ }
4405
+ getFirstVisibleRowIndex() {
4406
+ return this.firstVisibleRowIndex;
4407
+ }
3905
4408
  }
3906
4409
  class Gt extends ne {
3907
4410
  constructor(e) {
@@ -4189,7 +4692,7 @@ class y {
4189
4692
  }
4190
4693
  }
4191
4694
  const At = () => !0, ve = () => !1;
4192
- class V {
4695
+ class H {
4193
4696
  constructor(e, t, s = new y(100, "px"), o = new I(), i = new I(), r = new y(100, "px"), n = new y(100, "px"), l, a, c, h, u, g, p, m, f = () => this.visible) {
4194
4697
  this.property = e, this.headerLabel = t, this.width = s, this.classes = o, this.rendererMap = i, this.minWidth = r, this.maxWidth = n, this.sortable = l, this.sortComparator = a, this.sortState = c, this.sortStatesOrder = h, this.sortIconVisible = u, this.editable = g, this.getEditRenderer = p, this.editInputPipe = m, this.isVisible = f, this.visible = !0, s.unit !== "px" && (this.minWidth = new y(0, "px"), this.maxWidth = new y(1e5, "px"));
4195
4698
  }
@@ -4210,7 +4713,7 @@ class V {
4210
4713
  e.bodyClasses,
4211
4714
  e.footerClasses
4212
4715
  ), o = e.sortIconVisible ?? e.sortable ?? ve, i = e.editable ?? e.editable ?? ve, r = e.isVisible ?? e.isVisible ?? At;
4213
- return new V(
4716
+ return new H(
4214
4717
  e.property ?? "",
4215
4718
  e.headerLabel ?? "",
4216
4719
  e.width ?? new y(100, "px"),
@@ -4263,6 +4766,8 @@ class F {
4263
4766
  constructor(e = "body") {
4264
4767
  this.areaIdent = e, this.rowSelectionModel = void 0;
4265
4768
  }
4769
+ sort(e) {
4770
+ }
4266
4771
  getRowCount() {
4267
4772
  return 0;
4268
4773
  }
@@ -4344,7 +4849,7 @@ class Mt {
4344
4849
  }
4345
4850
  class Ae extends ue {
4346
4851
  constructor(e, t, s, o = []) {
4347
- super(e, o, s), this.areaIdent = e, this.rows = t, this.defaultRowHeight = s, this.columnDefs = o, this.type = "AreaModelTree", this.sorterService = new He(), this.service = new Mt(), this.properties = o.map((i) => i.property), this.flattenRows = this.service.flattenTree(t), this.filteredFlattenRows = [...this.flattenRows];
4852
+ super(e, o, s), this.areaIdent = e, this.rows = t, this.defaultRowHeight = s, this.columnDefs = o, this.type = "AreaModelTree", this.sorterService = new Ve(), this.service = new Mt(), this.properties = o.map((i) => i.property), this.flattenRows = this.service.flattenTree(t), this.filteredFlattenRows = [...this.flattenRows];
4348
4853
  }
4349
4854
  changeColumnOrder(e, t) {
4350
4855
  this.arrayMove(this.properties, e, t), super.changeColumnOrder(e, t);
@@ -4814,6 +5319,9 @@ class oe {
4814
5319
  doSort(e) {
4815
5320
  return this.getAreaModel("body").doSort(e);
4816
5321
  }
5322
+ sort(e) {
5323
+ return this.getAreaModel("body").sort(e);
5324
+ }
4817
5325
  /**
4818
5326
  * Returns an array of ColumnDefIf objects or undefined.
4819
5327
  *
@@ -4934,7 +5442,7 @@ class oe {
4934
5442
  return this.tableScope;
4935
5443
  }
4936
5444
  }
4937
- class Te extends $ {
5445
+ class Te extends O {
4938
5446
  constructor(e, t, s, o, i = "ge-selected-row", r = "ge-focused-row") {
4939
5447
  super(
4940
5448
  e,
@@ -5002,7 +5510,7 @@ class B {
5002
5510
  f > -1 && (e.defaultRowHeights.footer = f);
5003
5511
  }
5004
5512
  }
5005
- if (e.columnDefs === void 0 && ((s = e.properties) != null && s.length ? e.columnDefs = e.properties.map((f) => new V(f, f.toUpperCase(), Re)) : (o = e.rows) != null && o.length ? e.columnDefs = Object.keys(e.rows[0]).map((f) => new V(f, f.toUpperCase(), Re)) : e.columnDefs = []), e.columnCount === void 0 && ((i = e.columnDefs) != null && i.length ? e.columnCount = e.columnDefs.length : (r = e.headerData) != null && r.length ? e.columnCount = e.headerData[0].length : (n = e.columnSizes) != null && n.length ? e.columnCount = (l = e.columnSizes) == null ? void 0 : l.length : console.warn('Property "columnCount" is missing and cannot be derived from other properties.')), e.headerAreaModel || ((a = e.headerData) != null && a.length ? e.headerAreaModel = new P(
5513
+ if (e.columnDefs === void 0 && ((s = e.properties) != null && s.length ? e.columnDefs = e.properties.map((f) => new H(f, f.toUpperCase(), Re)) : (o = e.rows) != null && o.length ? e.columnDefs = Object.keys(e.rows[0]).map((f) => new H(f, f.toUpperCase(), Re)) : e.columnDefs = []), e.columnCount === void 0 && ((i = e.columnDefs) != null && i.length ? e.columnCount = e.columnDefs.length : (r = e.headerData) != null && r.length ? e.columnCount = e.headerData[0].length : (n = e.columnSizes) != null && n.length ? e.columnCount = (l = e.columnSizes) == null ? void 0 : l.length : console.warn('Property "columnCount" is missing and cannot be derived from other properties.')), e.headerAreaModel || ((a = e.headerData) != null && a.length ? e.headerAreaModel = new P(
5006
5514
  "header",
5007
5515
  e.headerData,
5008
5516
  e.defaultRowHeights.header,
@@ -5494,7 +6002,7 @@ class Fs {
5494
6002
  this.area = e, this.rowIndex = t, this.columnIndex = s, this.value = o, this.cssClasses = i;
5495
6003
  }
5496
6004
  }
5497
- class Ls {
6005
+ class Os {
5498
6006
  constructor() {
5499
6007
  this.autoRestoreSortingState = !1, this.autoRestoreCollapsedExpandedState = !1, this.autoRestoreScrollPosition = !1, this.autoRestoreCheckedState = !1, this.autoRestoreSelectedState = !1, this.getStorageKeyFn = void 0, this.isSame = (e, t, s) => {
5500
6008
  if (e && t && s.getRowId) {
@@ -5620,7 +6128,7 @@ class T {
5620
6128
  static buildColumnDefs(e, t = []) {
5621
6129
  for (const s of e)
5622
6130
  s.property && t.push(
5623
- V.create({
6131
+ H.create({
5624
6132
  property: s.property,
5625
6133
  headerLabel: s.data ? s.data : s.property,
5626
6134
  isVisible: () => typeof s.isVisible == "function" ? s.isVisible() : !0
@@ -5691,7 +6199,7 @@ class T {
5691
6199
  e.push(o.data + " rowIndex:" + o.rowIndex), (s = o.children) != null && s.length && T.iterateThrowColumns(e, o.children);
5692
6200
  }
5693
6201
  }
5694
- class Os {
6202
+ class Ls {
5695
6203
  constructor() {
5696
6204
  this.areaIdent = "body", this.rowSelectionModel = void 0;
5697
6205
  }
@@ -5700,6 +6208,8 @@ class Os {
5700
6208
  doSort(e) {
5701
6209
  return !1;
5702
6210
  }
6211
+ sort(e) {
6212
+ }
5703
6213
  externalFilterChanged(e) {
5704
6214
  }
5705
6215
  getCellRenderer(e, t) {
@@ -5802,10 +6312,12 @@ const Q = class Q {
5802
6312
  };
5803
6313
  Q.toggleHeaderGroup = "toggleHeaderGroup";
5804
6314
  let ae = Q;
5805
- class $s {
6315
+ class _s {
5806
6316
  constructor(e = "header", t, s = [], o, i = new me()) {
5807
6317
  this.areaIdent = e, this.groups = t, this.columnDefs = s, this.defaultRowHeight = o, this.headerGroupOptions = i, this.gammaCells = !0, this.arr = [], this.groupExts = [], this.cellGroupExtCellRenderer = new ae(this.headerGroupOptions), this.groupExts = T.buildGroupExts(t), this.init();
5808
6318
  }
6319
+ sort(e) {
6320
+ }
5809
6321
  init() {
5810
6322
  var e;
5811
6323
  for (const t of this.groupExts)
@@ -5902,7 +6414,7 @@ class $s {
5902
6414
  return t != null && t.toggle && t.visibility !== "always" && (t.closed = !t.closed, this.init()), T.buildColumnDefs(this.groupExts);
5903
6415
  }
5904
6416
  }
5905
- class _s {
6417
+ class $s {
5906
6418
  filterPredict(e, t, s = this.objectToString.bind(this)) {
5907
6419
  if (!e)
5908
6420
  return !1;
@@ -5961,7 +6473,7 @@ class Bs {
5961
6473
  return new I(void 0, e, void 0);
5962
6474
  }
5963
6475
  }
5964
- class Hs {
6476
+ class Vs {
5965
6477
  constructor(e, t = !0, s = !1) {
5966
6478
  this.property = e, this.skipCheckableCheck = t, this.readonly = s;
5967
6479
  }
@@ -5986,7 +6498,7 @@ class Hs {
5986
6498
  }
5987
6499
  }
5988
6500
  }
5989
- class Vs {
6501
+ class Hs {
5990
6502
  render(e, t, s, o, i, r, n) {
5991
6503
  r && (e.innerText = new Date(r).toISOString());
5992
6504
  }
@@ -6164,12 +6676,12 @@ class We {
6164
6676
  this.action = e, this.area = t, this.areaModel = s, this.rowIndex = o, this.columnIndex = i, this.id = r;
6165
6677
  }
6166
6678
  }
6167
- class _ {
6679
+ class $ {
6168
6680
  constructor(e, t, s = "", o = "", i = "button", r = !0) {
6169
6681
  this.action = e, this.label = t, this.icon = s, this.elementClass = o, this.elementType = i, this.enabled = r;
6170
6682
  }
6171
6683
  }
6172
- class Lt {
6684
+ class Ot {
6173
6685
  constructor(e, t) {
6174
6686
  this.actionEventListener = e, this.crudActions = t;
6175
6687
  }
@@ -6231,7 +6743,7 @@ class Lt {
6231
6743
  return null;
6232
6744
  }
6233
6745
  getCrudActions(e) {
6234
- return Array.isArray(e) && e.every((t) => t instanceof _) ? e : this.crudActions;
6746
+ return Array.isArray(e) && e.every((t) => t instanceof $) ? e : this.crudActions;
6235
6747
  }
6236
6748
  }
6237
6749
  const Zs = function(d, e, t) {
@@ -6379,12 +6891,12 @@ class to {
6379
6891
  this.minValue = e, this.minColor = t, this.middleValue = s, this.middleColor = o, this.maxValue = i, this.maxColor = r;
6380
6892
  }
6381
6893
  }
6382
- class Ot {
6894
+ class Lt {
6383
6895
  constructor(e = !0, t = !0, s = (r, n) => r * 10 + 10, o = 50, i = 450) {
6384
6896
  this.autoCalc = e, this.takeHeaderLabelsIntoAccount = t, this.charCountToWidth = s, this.minWidth = o, this.maxWidth = i;
6385
6897
  }
6386
6898
  }
6387
- class $t {
6899
+ class _t {
6388
6900
  constructor(e) {
6389
6901
  this.object = e;
6390
6902
  }
@@ -6516,7 +7028,7 @@ class ie {
6516
7028
  return e.replace(/\./g, " ");
6517
7029
  }
6518
7030
  }
6519
- class _t {
7031
+ class $t {
6520
7032
  constructor() {
6521
7033
  this.urls = {
6522
7034
  list: {
@@ -6524,15 +7036,15 @@ class _t {
6524
7036
  method: "GET"
6525
7037
  }
6526
7038
  }, this.singleRowActions = [
6527
- new _("VIEW", "View", "", "", "link"),
6528
- new _("EDIT", "Edit", "", "", "link"),
6529
- new _("CLONE", "Clone", "", "", "link"),
6530
- new _("DELETE", "Delete", "", "", "link")
7039
+ new $("VIEW", "View", "", "", "link"),
7040
+ new $("EDIT", "Edit", "", "", "link"),
7041
+ new $("CLONE", "Clone", "", "", "link"),
7042
+ new $("DELETE", "Delete", "", "", "link")
6531
7043
  // new CrudAction('CREATE', 'Create', '', '', 'link'),
6532
7044
  ], this.tableActions = [
6533
- new _("CREATE", "Create", "", "", "button"),
6534
- new _("DELETE_SELECTED", "Delete Selected", "", "", "button")
6535
- ], this.autoAddActionColumn = !0, this.columnWidths = new Ot(), this.calcFixedRightColumnCount = (e) => e > 6 ? 1 : 0, this.getHeadersInit = () => ({}), this.getIdKey = () => "id", this.getIdByObject = (e) => (this.getIdKey() ?? "id") in e ? e.id : e, this.fetchList = (e) => {
7045
+ new $("CREATE", "Create", "", "", "button"),
7046
+ new $("DELETE_SELECTED", "Delete Selected", "", "", "button")
7047
+ ], this.autoAddActionColumn = !0, this.columnWidths = new Lt(), this.calcFixedRightColumnCount = (e) => e > 6 ? 1 : 0, this.getHeadersInit = () => ({}), this.getIdKey = () => "id", this.getIdByObject = (e) => (this.getIdKey() ?? "id") in e ? e.id : e, this.fetchList = (e) => {
6536
7048
  const t = e.getHeadersInit ? e.getHeadersInit() : {};
6537
7049
  let s = e.urls.list.url, o = e.urls.list.method ?? "GET";
6538
7050
  return fetch(s, {
@@ -6585,7 +7097,7 @@ class _t {
6585
7097
  }
6586
7098
  class so {
6587
7099
  constructor() {
6588
- this.crudOptions = new _t(), this.listenActionEvent = (e) => {
7100
+ this.crudOptions = new $t(), this.listenActionEvent = (e) => {
6589
7101
  };
6590
7102
  }
6591
7103
  createTableModel(e, t, s = (i) => {
@@ -6601,14 +7113,14 @@ class so {
6601
7113
  hoverColumnVisible: !1,
6602
7114
  getSelectionModel: u
6603
7115
  };
6604
- const g = this.calcAutoColumnWidths(i, c), p = (n = t.columnDefs) != null && n.length ? t.columnDefs : c.map((w, S) => new V(w, w.toUpperCase(), new y(g[S], "px")));
7116
+ const g = this.calcAutoColumnWidths(i, c), p = (n = t.columnDefs) != null && n.length ? t.columnDefs : c.map((w, S) => new H(w, w.toUpperCase(), new y(g[S], "px")));
6605
7117
  if ((l = e == null ? void 0 : e.columnWidths) != null && l.autoCalc)
6606
7118
  for (let w = 0; w < p.length; w++) {
6607
7119
  const S = p[w];
6608
7120
  S.width = new y(g[w], "px");
6609
7121
  }
6610
7122
  if (e.autoAddActionColumn) {
6611
- let w = new V(
7123
+ let w = new H(
6612
7124
  "id",
6613
7125
  "Actions",
6614
7126
  Et,
@@ -6616,7 +7128,7 @@ class so {
6616
7128
  );
6617
7129
  w.rendererMap = new I(
6618
7130
  void 0,
6619
- new Lt(this, e.singleRowActions),
7131
+ new Ot(this, e.singleRowActions),
6620
7132
  void 0
6621
7133
  ), p.push(w);
6622
7134
  }
@@ -6643,7 +7155,7 @@ class so {
6643
7155
  var t, s, o, i;
6644
7156
  if (this.listenActionEvent && this.listenActionEvent(e), e.action === "VIEW") {
6645
7157
  let r = e.id;
6646
- (t = this.crudOptions) == null || t.fetchItem(this.crudOptions, r).then((n) => (console.info(n), new $t(n).openDialog(), n));
7158
+ (t = this.crudOptions) == null || t.fetchItem(this.crudOptions, r).then((n) => (console.info(n), new _t(n).openDialog(), n));
6647
7159
  } else if (e.action === "EDIT") {
6648
7160
  let r = e.id;
6649
7161
  const n = this.crudOptions.getIdKey() ?? "id";
@@ -6732,27 +7244,27 @@ class oo {
6732
7244
  export {
6733
7245
  ue as AbstractAreaModel,
6734
7246
  We as ActionEvent,
6735
- Lt as ActionsCellRenderer,
6736
- Oe as AnyPropertyType,
7247
+ Ot as ActionsCellRenderer,
7248
+ Le as AnyPropertyType,
6737
7249
  Ds as AreaMapFactory,
6738
- Os as AreaModel,
7250
+ Ls as AreaModel,
6739
7251
  P as AreaModelArrayOfArrays,
6740
- $s as AreaModelCellGroups,
7252
+ _s as AreaModelCellGroups,
6741
7253
  F as AreaModelHidden,
6742
- $ as AreaModelObjectArray,
7254
+ O as AreaModelObjectArray,
6743
7255
  Te as AreaModelObjectArrayWithColumndefs,
6744
7256
  Ae as AreaModelTree,
6745
7257
  I as AreaObjectMap,
6746
- H as ArrayPropertyType,
6747
- Ls as AutoRestoreOptions,
6748
- Ht as AvoidDoubleExecution,
7258
+ V as ArrayPropertyType,
7259
+ Os as AutoRestoreOptions,
7260
+ Vt as AvoidDoubleExecution,
6749
7261
  Ye as BooleanPropertyType,
6750
7262
  Pt as CellGroup,
6751
7263
  Ft as CellGroupExt,
6752
7264
  ae as CellGroupExtCellRenderer,
6753
7265
  A as CellRange,
6754
7266
  T as CellgroupFactory,
6755
- Hs as CheckboxBooleanPropertyCellRenderer,
7267
+ Vs as CheckboxBooleanPropertyCellRenderer,
6756
7268
  Ie as CheckboxCellRenderer,
6757
7269
  ks as CheckboxColumnDef,
6758
7270
  Tt as CheckboxModel,
@@ -6760,19 +7272,19 @@ export {
6760
7272
  at as ColAndRowspanModel,
6761
7273
  it as CollapsedExpandedData,
6762
7274
  eo as ColorRgb,
6763
- V as ColumnDef,
6764
- Vt as ColumnDefGenerator,
6765
- Ot as ColumnWidths,
7275
+ H as ColumnDef,
7276
+ Ht as ColumnDefGenerator,
7277
+ Lt as ColumnWidths,
6766
7278
  Qe as ConvenienceDomService,
6767
7279
  q as CopyService,
6768
- _ as CrudAction,
7280
+ $ as CrudAction,
6769
7281
  ie as CrudObjectEdit,
6770
- $t as CrudObjectView,
6771
- _t as CrudOptions,
7282
+ _t as CrudObjectView,
7283
+ $t as CrudOptions,
6772
7284
  so as CrudTableModelFactory,
6773
7285
  Se as CssVars,
6774
7286
  Ws as DateToIntlDDMMYYYYCellRenderer,
6775
- Vs as DateToIsoCellRenderer,
7287
+ Hs as DateToIsoCellRenderer,
6776
7288
  Ns as DateToLocaleDateCellRenderer,
6777
7289
  Us as DateToTecCellRenderer,
6778
7290
  z as DefaultRowHeights,
@@ -6784,12 +7296,12 @@ export {
6784
7296
  xt as FocusModel,
6785
7297
  ut as GeCellIndices,
6786
7298
  K as GeCssColorUtil,
6787
- _s as GeFilterService,
7299
+ $s as GeFilterService,
6788
7300
  Ps as GeKeyEvent,
6789
7301
  fe as GeModelChangeEvent,
6790
7302
  he as GeMouseEvent,
6791
7303
  L as GeoData,
6792
- O as Icon,
7304
+ _ as Icon,
6793
7305
  vs as IndexAndPx,
6794
7306
  wt as InputCellRenderer,
6795
7307
  ht as InputHandler,
@@ -6806,7 +7318,7 @@ export {
6806
7318
  D as ObjectPropertyType,
6807
7319
  gt as OsxShortcutActionIdMapping,
6808
7320
  De as PROPERTY_TYPE_KEY_ANY,
6809
- Le as PROPERTY_TYPE_KEY_ARRAY,
7321
+ Oe as PROPERTY_TYPE_KEY_ARRAY,
6810
7322
  de as PROPERTY_TYPE_KEY_BOOLEAN,
6811
7323
  Pe as PROPERTY_TYPE_KEY_NULL,
6812
7324
  ce as PROPERTY_TYPE_KEY_NUMBER,
@@ -6816,7 +7328,7 @@ export {
6816
7328
  Me as Padding,
6817
7329
  qs as PositiveAndNegativeNumberRenderer,
6818
7330
  Js as ProgressBarCellRenderer,
6819
- $e as PropertyItem,
7331
+ _e as PropertyItem,
6820
7332
  Wt as PropertyTypeService,
6821
7333
  ct as RenderScope,
6822
7334
  Bs as Renderer,
@@ -6843,11 +7355,11 @@ export {
6843
7355
  oe as TableModel,
6844
7356
  It as TableModelAndOptions,
6845
7357
  J as TableOptions,
6846
- Ve as TableScope,
7358
+ He as TableScope,
6847
7359
  to as ThreeColorGradientArg,
6848
7360
  Ee as TreeCheckboxModel,
6849
7361
  le as TreeFactory,
6850
- _e as TreeOptions,
7362
+ $e as TreeOptions,
6851
7363
  Ce as TreeRow,
6852
7364
  Mt as TreeRowService,
6853
7365
  js as TrueFalseCellRenderer,