@guiexpert/table 1.1.72 → 1.1.75

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,26 +119,26 @@ 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
- let h = 100, u = "", f = "ge-table-text-align-left";
128
- if (n.type === Le) {
127
+ let h = 100, u = "", g = "ge-table-text-align-left";
128
+ if (n.type === Oe) {
129
129
  if (this.allowCustomRenderer && a) {
130
130
  const p = `${a}ArrayCellRenderer`;
131
- u = ` bodyRenderer: new ${p}(),`, f = "", this.renderCumstomCellRenderer(a, p);
131
+ u = ` bodyRenderer: new ${p}(),`, g = "", this.renderCumstomCellRenderer(a, p);
132
132
  } else
133
133
  u = " bodyRenderer: new SimpleArrayCellRenderer(),";
134
134
  h = 250;
135
- } else n.type === ce ? (u = " bodyRenderer: new NumberCellRenderer(),", f = "ge-table-text-align-right") : n.type === de && (u = " bodyRenderer: new TrueFalseCellRenderer(),", f = "ge-table-text-align-center", h = 80);
135
+ } else n.type === ce ? (u = " bodyRenderer: new NumberCellRenderer(),", g = "ge-table-text-align-right") : n.type === de && (u = " bodyRenderer: new TrueFalseCellRenderer(),", g = "ge-table-text-align-center", h = 80);
136
136
  e.push(` ColumnDef.create({
137
137
  property: "${l}",
138
138
  headerLabel: "${c}",
139
139
  width: new Size(${h}, "px"),
140
- bodyClasses: ["${f}"],
141
- headerClasses: ["${f}"],`), u && e.push(u), e.push(" }),");
140
+ bodyClasses: ["${g}"],
141
+ headerClasses: ["${g}"],`), u && e.push(u), e.push(" }),");
142
142
  }
143
143
  }
144
144
  }
@@ -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
  }
@@ -838,10 +838,10 @@ class Qe {
838
838
  return this.domService.appendChild(e.child, l), l;
839
839
  }
840
840
  addColumnDiv(e) {
841
- const { parent: t, geo: s, rowIndex: o = -1, columnIndex: i = -1, areaIdent: r, sideIdent: n, text: l = "", treeArrow: a, tableOptions: c, checkedType: h = void 0, sortState: u } = e, f = c == null ? void 0 : c.treeOptions, p = c == null ? void 0 : c.showCheckboxWihoutExtraColumn, m = this.domService.createElement("div");
841
+ const { parent: t, geo: s, rowIndex: o = -1, columnIndex: i = -1, areaIdent: r, sideIdent: n, text: l = "", treeArrow: a, tableOptions: c, checkedType: h = void 0, sortState: u } = e, g = c == null ? void 0 : c.treeOptions, p = c == null ? void 0 : c.showCheckboxWihoutExtraColumn, m = this.domService.createElement("div");
842
842
  this.domService.addClass(m, "ge-table-col-div"), p && this.domService.addClass(m, "ge-with-checkbox"), this.domService.addClass(m, `ge-table-col-div-${s.index}`), this.domService.setAttribute(m, "data-col-index", `${s.index}`), this.domService.setAttribute(m, "data-row-index", `${o}`), this.domService.setAttribute(m, "data-area", `${r}`);
843
- const g = ((s == null ? void 0 : s.index) ?? 0) % 2 === 0 ? "even" : "odd";
844
- if (r === "body" && n === "center" && this.domService.addClass(m, `ge-table-column-${g}`), this.domService.setStyle(m, "display", "clip"), this.domService.setStyle(m, "position", "absolute"), this.domService.setStyle(m, "left", `${s.left}px`), this.domService.setStyle(m, "top", `${s.top}px`), this.domService.setStyle(m, "width", `${s.width}px`), this.domService.setStyle(m, "height", `${s.height}px`), a && a !== "none" && (this.domService.addClass(m, "ge-table-col-tree"), this.addArrowDiv(m, a, f, o, i, r)), p && i === 0 && h && this.addCheckboxToDiv(m, h, r, o), l) {
843
+ const f = ((s == null ? void 0 : s.index) ?? 0) % 2 === 0 ? "even" : "odd";
844
+ if (r === "body" && n === "center" && this.domService.addClass(m, `ge-table-column-${f}`), this.domService.setStyle(m, "display", "clip"), this.domService.setStyle(m, "position", "absolute"), this.domService.setStyle(m, "left", `${s.left}px`), this.domService.setStyle(m, "top", `${s.top}px`), this.domService.setStyle(m, "width", `${s.width}px`), this.domService.setStyle(m, "height", `${s.height}px`), a && a !== "none" && (this.domService.addClass(m, "ge-table-col-tree"), this.addArrowDiv(m, a, g, o, i, r)), p && i === 0 && h && this.addCheckboxToDiv(m, h, r, o), l) {
845
845
  const b = a !== "none" && i === 0;
846
846
  this.addLabelDiv(m, l, b, o, i, r);
847
847
  }
@@ -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
+ get focusedRowIndex() {
1205
+ return this._focusedRowIndex;
1206
+ }
1207
+ set focusedRowIndex(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,15 +1275,19 @@ 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
- return t.includes(".") ? this.getPropertyValue(e, t.split(".")) : e[t];
1282
+ if (e && t)
1283
+ return t.includes(".") ? this.getPropertyValue(e, t.split(".")) : e[t];
1250
1284
  }
1251
1285
  changeColumnOrder(e, t) {
1252
1286
  this.arrayMove(this.properties, e, t), super.changeColumnOrder(e, t);
1253
1287
  }
1254
1288
  getCustomClassesAt(e, t) {
1255
1289
  const s = super.getCustomClassesAt(e, t);
1256
- 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;
1257
1291
  }
1258
1292
  genericFlatTableSortComparator(e, t) {
1259
1293
  const s = this.columnDefs.find((o) => o.property === e);
@@ -1481,58 +1515,314 @@ class st {
1481
1515
  getSelectionModel() {
1482
1516
  return this.tableScope.selectionModel();
1483
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
+ */
1484
1526
  autoResizeColumns(e = !0) {
1485
1527
  this.tableScope.autoResizeColumns(e);
1486
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
+ */
1487
1538
  recalcWrappers() {
1488
1539
  this.tableScope.recalcWrappers();
1489
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
+ */
1490
1549
  setColumnWidth(e, t) {
1491
1550
  this.tableScope.setColumnWidth(e, t);
1492
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
+ */
1493
1558
  getTableModel() {
1494
1559
  return this.tableScope.tableModel;
1495
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
+ */
1496
1567
  getBodyModel() {
1497
1568
  return this.tableScope.tableModel.getBodyModel();
1498
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
+ */
1499
1584
  setRows(e) {
1500
1585
  const t = this.getBodyModel();
1501
- 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);
1502
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
+ */
1503
1602
  addRows(e) {
1504
1603
  const t = this.getBodyModel();
1505
- if (t instanceof $) {
1604
+ if (t instanceof O) {
1506
1605
  const s = t;
1507
1606
  let o = s.getAllRows();
1508
1607
  s.setRows([...o, ...e]);
1509
1608
  } else
1510
1609
  console.warn("addRows<T>(rows: T[]) only works with AreaModelObjectArray<T>, but this body area model is ", typeof t, t);
1511
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
+ */
1512
1627
  addRowsAt(e, t) {
1513
1628
  const s = this.getBodyModel();
1514
- if (s instanceof $) {
1629
+ if (s instanceof O) {
1515
1630
  const o = s;
1516
1631
  let i = o.getAllRows();
1517
1632
  o.setRows([...i.slice(0, t), ...e, ...i.slice(t)]);
1518
1633
  } else
1519
1634
  console.warn("addRowsAt<T>(rows: T[]) only works with AreaModelObjectArray<T>, but this body area model is ", typeof s, s);
1520
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
+ */
1521
1653
  removeRows(e, t = (s, o) => s === o) {
1522
1654
  const s = this.getBodyModel();
1523
- if (s instanceof $) {
1655
+ if (s instanceof O) {
1524
1656
  const o = s, i = o.getAllRows().filter((r) => !e.some((n) => t(r, n)));
1525
1657
  o.setRows(i);
1526
1658
  } else
1527
1659
  console.warn("removeRows<T>(rows: T[]) only works with AreaModelObjectArray<T>, but this body area model is ", typeof s, s);
1528
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
+ */
1529
1694
  findRows(e, t = (s, o) => s === o) {
1530
1695
  const s = this.getBodyModel();
1531
- 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);
1532
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
+ */
1533
1823
  updateRows(e, t = (s, o) => s === o) {
1534
1824
  const s = this.getBodyModel();
1535
- if (s instanceof $) {
1825
+ if (s instanceof O) {
1536
1826
  let i = s.getAllRows();
1537
1827
  for (const r of i)
1538
1828
  for (const n of e)
@@ -1542,12 +1832,165 @@ class st {
1542
1832
  } else
1543
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);
1544
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
+ */
1545
1845
  reSort() {
1546
1846
  this.tableScope.reSort();
1547
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
+ */
1548
1958
  getDisplayedRowCount() {
1549
1959
  return this.tableScope.getDisplayedRowCount();
1550
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
+ }
1551
1994
  }
1552
1995
  class pe {
1553
1996
  constructor(e) {
@@ -2107,10 +2550,10 @@ class ct extends lt {
2107
2550
  }
2108
2551
  const u = r.getCustomClassesAt(t, s);
2109
2552
  u.length && this.dom.addClasses(u, l);
2110
- const f = r.getCustomStyleAt(t, s);
2111
- if (f)
2112
- for (const p in f)
2113
- this.dom.setStyle(l, p, f[p]);
2553
+ const g = r.getCustomStyleAt(t, s);
2554
+ if (g)
2555
+ for (const p in g)
2556
+ this.dom.setStyle(l, p, g[p]);
2114
2557
  }
2115
2558
  }
2116
2559
  /**
@@ -2208,7 +2651,7 @@ class ct extends lt {
2208
2651
  * @protected
2209
2652
  */
2210
2653
  adjustArea(e, t = 0) {
2211
- var g;
2654
+ var f;
2212
2655
  const s = this.getArea(e, "west"), o = this.getArea(e, "center"), i = this.getArea(e, "east"), r = o.child.clientHeight;
2213
2656
  s.child.innerText = "", o.child.innerText = "", i.child.innerText = "";
2214
2657
  const n = 0, l = this.areaBodyCenterGeo.width, a = this.tableModel.getPadding(), c = this.tableModel.getAreaModel(e), h = c.getRowCount();
@@ -2217,7 +2660,7 @@ class ct extends lt {
2217
2660
  b && b();
2218
2661
  }
2219
2662
  let u = t;
2220
- const f = this.tableModel.getColumnCount(), p = this.tableModel.getFixedRightColumnCount(), m = this.tableModel.getFixedLeftColumnCount();
2663
+ const g = this.tableModel.getColumnCount(), p = this.tableModel.getFixedRightColumnCount(), m = this.tableModel.getFixedLeftColumnCount();
2221
2664
  for (let b = 0; b < h; b++) {
2222
2665
  const w = u, S = b === h - 1, R = this.tableModel.getRowHeight(e, b);
2223
2666
  if (w + R > 0) {
@@ -2232,7 +2675,7 @@ class ct extends lt {
2232
2675
  parent: x,
2233
2676
  rowIndex: b,
2234
2677
  columnIndexStart: k,
2235
- columnIndexEnd: f - p - 1,
2678
+ columnIndexEnd: g - p - 1,
2236
2679
  verticalFixed: !1,
2237
2680
  lastRowOfModel: S
2238
2681
  }), a.left > 0 && (C = { left: n, width: this.areaBodyWestGeo.width, height: R, top: w, index: b }, x = this.dom.addRowDiv(s, C, b, e, "west"), this.adjustColumnsToRowParent({
@@ -2253,8 +2696,8 @@ class ct extends lt {
2253
2696
  geo: C,
2254
2697
  parent: x,
2255
2698
  rowIndex: b,
2256
- columnIndexStart: f - p,
2257
- columnIndexEnd: f - 1,
2699
+ columnIndexStart: g - p,
2700
+ columnIndexEnd: g - 1,
2258
2701
  verticalFixed: !0,
2259
2702
  lastRowOfModel: S
2260
2703
  })), e === "header" && this.tree && b === h - 1) {
@@ -2278,13 +2721,13 @@ class ct extends lt {
2278
2721
  }
2279
2722
  }
2280
2723
  if (this.colAndRowspanModels && this.colAndRowspanModels[e]) {
2281
- const b = ((g = this.colAndRowspanModels[e]) == null ? void 0 : g.getRanges()) ?? [];
2724
+ const b = ((f = this.colAndRowspanModels[e]) == null ? void 0 : f.getRanges()) ?? [];
2282
2725
  if (b.length)
2283
2726
  for (const w of b) {
2284
2727
  let S = 0, R = o.child, C = "center";
2285
2728
  if (w.c1 < m)
2286
2729
  R = s.child, C = "west";
2287
- else if (p > 0 && w.c1 >= f - p)
2730
+ else if (p > 0 && w.c1 >= g - p)
2288
2731
  R = i.child, C = "east";
2289
2732
  else {
2290
2733
  const x = this.areaBodyCenterGeo.width - this.tableModel.getContentWidthInPixel();
@@ -2305,10 +2748,10 @@ class ct extends lt {
2305
2748
  * @protected
2306
2749
  */
2307
2750
  drawBigCell(e, t, s, o, i, r) {
2308
- const n = s + this.getRowHeights(0, e.r1 - 1, o).reduce((g, b) => g + b, 0), l = this.tableModel.getColumnCount(), a = this.tableModel.getFixedRightColumnCount();
2751
+ const n = s + this.getRowHeights(0, e.r1 - 1, o).reduce((f, b) => f + b, 0), l = this.tableModel.getColumnCount(), a = this.tableModel.getFixedRightColumnCount();
2309
2752
  let c = 0;
2310
2753
  a > 0 && e.c1 >= l - a && (c = l - a);
2311
- const h = t + this.getColumnWidths(c, e.c1 - 1).reduce((g, b) => g + b, 0), u = this.getRowHeights(e.r1, e.r2, o).reduce((g, b) => g + b, 0), f = this.getColumnWidths(e.c1, e.c2).reduce((g, b) => g + b, 0);
2754
+ const h = t + this.getColumnWidths(c, e.c1 - 1).reduce((f, b) => f + b, 0), u = this.getRowHeights(e.r1, e.r2, o).reduce((f, b) => f + b, 0), g = this.getColumnWidths(e.c1, e.c2).reduce((f, b) => f + b, 0);
2312
2755
  let p = !1;
2313
2756
  const m = this.getSelectionModel ? this.getSelectionModel() : void 0;
2314
2757
  m && (p = m.getSelectionCount(e.r1, e.c1) > 0), e.gammaRange ? this.renderCell({
@@ -2319,7 +2762,7 @@ class ct extends lt {
2319
2762
  columnIndex: e.c1,
2320
2763
  left: h,
2321
2764
  top: n,
2322
- width: f,
2765
+ width: g,
2323
2766
  height: u,
2324
2767
  parent: i,
2325
2768
  cellSelected: p,
@@ -2333,7 +2776,7 @@ class ct extends lt {
2333
2776
  columnIndex: e.c1,
2334
2777
  left: h,
2335
2778
  top: n,
2336
- width: f,
2779
+ width: g,
2337
2780
  height: u,
2338
2781
  parent: i,
2339
2782
  cellSelected: p,
@@ -2344,7 +2787,7 @@ class ct extends lt {
2344
2787
  columnIndex: e.c1,
2345
2788
  cellLeft: h,
2346
2789
  cellTop: n,
2347
- cellWidth: f,
2790
+ cellWidth: g,
2348
2791
  cellHeight: u,
2349
2792
  parent: i
2350
2793
  });
@@ -2392,32 +2835,32 @@ class ct extends lt {
2392
2835
  this.scrollViewportLeft = this.scrollViewport.scrollLeft;
2393
2836
  let h = 0;
2394
2837
  if (!a) {
2395
- const g = this.areaBodyCenterGeo.width - this.tableModel.getContentWidthInPixel();
2396
- h = this.scrollFactorX * g;
2838
+ const f = this.areaBodyCenterGeo.width - this.tableModel.getContentWidthInPixel();
2839
+ h = this.scrollFactorX * f;
2397
2840
  }
2398
- const u = 0, f = !!(e === "body" && t);
2841
+ const u = 0, g = !!(e === "body" && t);
2399
2842
  let p = h;
2400
- for (let g = n; g <= l; g++) {
2401
- const b = p, w = this.tableModel.getColumnWidth(g);
2843
+ for (let f = n; f <= l; f++) {
2844
+ const b = p, w = this.tableModel.getColumnWidth(f);
2402
2845
  if (w > 0 && b + w > 0) {
2403
2846
  let S = o.height;
2404
- const R = s.getRowspanAt(r, g), C = s.getColspanAt(r, g);
2847
+ const R = s.getRowspanAt(r, f), C = s.getColspanAt(r, f);
2405
2848
  R > 1 && (S = this.getRowHeights(r, r + R - 1, s).reduce((E, M) => E + M, 0));
2406
2849
  let x = w;
2407
- C > 1 && (x = this.getColumnWidths(g, g + C - 1).reduce((E, M) => E + M, 0));
2850
+ C > 1 && (x = this.getColumnWidths(f, f + C - 1).reduce((E, M) => E + M, 0));
2408
2851
  let k = !1;
2409
- if (this.colAndRowspanModels && this.colAndRowspanModels[e] && (m = this.colAndRowspanModels[e]) != null && m.isInRange(r, g) && (k = !0), this.draggingTargetColumnIndex === g && e !== "header") {
2852
+ if (this.colAndRowspanModels && this.colAndRowspanModels[e] && (m = this.colAndRowspanModels[e]) != null && m.isInRange(r, f) && (k = !0), this.draggingTargetColumnIndex === f && e !== "header") {
2410
2853
  this.renderDragTargetDiv(i, b, u, x, S);
2411
2854
  const E = { left: b, top: u, width: x, height: S };
2412
2855
  this.dom.addColumnBorderDivs(this.tableOptions, i, E, e, t);
2413
2856
  } else {
2414
- const E = this.renderSelectedBackgroundDiv(k, f, t, s, r, g, i, b, u, x, S);
2415
- "gammaCells" in s && s.getValueAt(r, g) && (k = !1), k || this.renderCell({
2857
+ const E = this.renderSelectedBackgroundDiv(k, g, t, s, r, f, i, b, u, x, S);
2858
+ "gammaCells" in s && s.getValueAt(r, f) && (k = !1), k || this.renderCell({
2416
2859
  areaModel: s,
2417
2860
  areaIdent: e,
2418
2861
  sideIdent: t,
2419
2862
  rowIndex: r,
2420
- columnIndex: g,
2863
+ columnIndex: f,
2421
2864
  left: b,
2422
2865
  top: u,
2423
2866
  width: x,
@@ -2428,7 +2871,7 @@ class ct extends lt {
2428
2871
  gammaRange: !0
2429
2872
  }), e === "header" && this.tableOptions.columnsResizable && this.renderHeaderCellResizeHandle({
2430
2873
  rowIndex: r,
2431
- columnIndex: g,
2874
+ columnIndex: f,
2432
2875
  cellLeft: b,
2433
2876
  cellTop: u,
2434
2877
  cellWidth: x,
@@ -2468,18 +2911,18 @@ class ct extends lt {
2468
2911
  lastRowOfModel: h
2469
2912
  }) {
2470
2913
  var be;
2471
- const f = this.editorRenderer && this.editorRendererRow === o && this.editorRendererColumn === i ? this.editorRenderer : e.getCellRenderer(o, i), p = { left: r, width: n, height: l, top: a, index: i }, m = e.getRowByIndex(o);
2472
- let g = "none";
2914
+ const g = this.editorRenderer && this.editorRendererRow === o && this.editorRendererColumn === i ? this.editorRenderer : e.getCellRenderer(o, i), p = { left: r, width: n, height: l, top: a, index: i }, m = e.getRowByIndex(o);
2915
+ let f = "none";
2473
2916
  if (i === this.getTreeArrowColumnIndex() && G(m)) {
2474
2917
  const v = m;
2475
- (be = v.children) != null && be.length ? v.expanded ? g = "expanded" : g = "collapsed" : g = "hidden";
2918
+ (be = v.children) != null && be.length ? v.expanded ? f = "expanded" : f = "collapsed" : f = "hidden";
2476
2919
  }
2477
2920
  let w;
2478
2921
  if (t === "header") {
2479
2922
  const v = this.tableModel.getColumnDef(i);
2480
2923
  (!(v != null && v.sortIconVisible) || v != null && v.sortIconVisible()) && (w = v == null ? void 0 : v.sortState);
2481
2924
  }
2482
- const S = e.getValueAt(o, i), R = f ? "" : `${S}`, C = e.isRowChecked(o), x = this.dom.addColumnDiv(
2925
+ const S = e.getValueAt(o, i), R = g ? "" : `${S}`, C = e.isRowChecked(o), x = this.dom.addColumnDiv(
2483
2926
  {
2484
2927
  parent: c,
2485
2928
  geo: p,
@@ -2488,7 +2931,7 @@ class ct extends lt {
2488
2931
  areaIdent: t,
2489
2932
  sideIdent: s,
2490
2933
  text: R,
2491
- treeArrow: g,
2934
+ treeArrow: f,
2492
2935
  tableOptions: this.tableOptions,
2493
2936
  checkedType: C,
2494
2937
  sortState: w
@@ -2498,7 +2941,7 @@ class ct extends lt {
2498
2941
  const E = this.tableModel.getColumnDef(i);
2499
2942
  E && E.classes[t] && this.dom.addClasses(E.classes[t], x);
2500
2943
  let M;
2501
- f && (M = f.render(x, o, i, t, e, S, this.dom.domService));
2944
+ g && (M = g.render(x, o, i, t, e, S, this.dom.domService));
2502
2945
  const Y = e.getCustomClassesAt(o, i);
2503
2946
  if (Y.length && this.dom.addClasses(Y, x), this.dom.addColumnBorderDivs(this.tableOptions, c, p, t, s), h && this.dom.addHorizontalBorder({ left: r, width: n, height: l, top: a + l }, c), this.getFocusModel && t === "body") {
2504
2947
  const v = this.getFocusModel();
@@ -2675,7 +3118,7 @@ class ct extends lt {
2675
3118
  if (r) {
2676
3119
  const n = e.index ?? 0, l = this.draggingColumn;
2677
3120
  for (let a = 0; a < r; a++) {
2678
- const c = s, h = i.getRowHeight(a), u = { left: 0, width: e.width, height: h, top: c, index: a }, f = i.getValueAt(a, n), p = i.getCellRenderer(a, n), m = p ? "" : `${f}`, g = {
3121
+ const c = s, h = i.getRowHeight(a), u = { left: 0, width: e.width, height: h, top: c, index: a }, g = i.getValueAt(a, n), p = i.getCellRenderer(a, n), m = p ? "" : `${g}`, f = {
2679
3122
  parent: l,
2680
3123
  geo: u,
2681
3124
  rowIndex: a,
@@ -2683,9 +3126,9 @@ class ct extends lt {
2683
3126
  areaIdent: t,
2684
3127
  sideIdent: o,
2685
3128
  text: m
2686
- }, b = this.dom.addColumnDiv(g);
3129
+ }, b = this.dom.addColumnDiv(f);
2687
3130
  let w;
2688
- p && (w = p.render(b, a, n, t, i, f, this.dom.domService), w && this.cleanupFunctions[t].push(w));
3131
+ p && (w = p.render(b, a, n, t, i, g, this.dom.domService), w && this.cleanupFunctions[t].push(w));
2689
3132
  const S = i.getCustomClassesAt(a, n);
2690
3133
  S.length && this.dom.addClasses(S, b);
2691
3134
  const R = this.tableModel.getColumnDef(n);
@@ -2746,16 +3189,16 @@ class ct extends lt {
2746
3189
  renderSelectedBackgroundDiv(e, t, s, o, i, r, n, l, a, c, h) {
2747
3190
  let u = !1;
2748
3191
  if (!e && t && o.isSelectable(i, r) && this.getSelectionModel) {
2749
- const f = this.getSelectionModel();
2750
- if (f) {
2751
- const p = f.getSelectionCount(i, r);
3192
+ const g = this.getSelectionModel();
3193
+ if (g) {
3194
+ const p = g.getSelectionCount(i, r);
2752
3195
  u = p > 0;
2753
3196
  for (let m = 0; m < p; m++) {
2754
- const g = this.dom.applyStylePosistionAbsolute(
3197
+ const f = this.dom.applyStylePosistionAbsolute(
2755
3198
  // ge-table-body-west-selected-range
2756
3199
  this.dom.createDivWithClass(`ge-table-${o.areaIdent}-${s}-selected-range`, n)
2757
3200
  );
2758
- this.dom.setStyle(g, "left", `${l}px`), this.dom.setStyle(g, "top", `${a}px`), this.dom.setStyle(g, "width", `${c}px`), this.dom.setStyle(g, "height", `${h}px`);
3201
+ this.dom.setStyle(f, "left", `${l}px`), this.dom.setStyle(f, "top", `${a}px`), this.dom.setStyle(f, "width", `${c}px`), this.dom.setStyle(f, "height", `${h}px`);
2759
3202
  }
2760
3203
  }
2761
3204
  }
@@ -2794,7 +3237,7 @@ class ct extends lt {
2794
3237
  cellSelected: h,
2795
3238
  lastRowOfModel: u
2796
3239
  }) {
2797
- const [f, p] = this.addAndRenderCellDiv({
3240
+ const [g, p] = this.addAndRenderCellDiv({
2798
3241
  areaModel: e,
2799
3242
  areaIdent: t,
2800
3243
  sideIdent: s,
@@ -2807,7 +3250,7 @@ class ct extends lt {
2807
3250
  parent: c,
2808
3251
  lastRowOfModel: u
2809
3252
  });
2810
- h && this.dom.addClass(`ge-table-${t}-${s}-selected-range`, f), p && this.cleanupFunctions[t].push(p);
3253
+ h && this.dom.addClass(`ge-table-${t}-${s}-selected-range`, g), p && this.cleanupFunctions[t].push(p);
2811
3254
  }
2812
3255
  /**
2813
3256
  * Render the header cell resize handle.
@@ -2860,12 +3303,12 @@ class ut {
2860
3303
  this.rowIndex = e, this.columnIndex = t;
2861
3304
  }
2862
3305
  }
2863
- class ge {
3306
+ class fe {
2864
3307
  constructor(e) {
2865
3308
  this.cells = e;
2866
3309
  }
2867
3310
  static createSingle(e, t) {
2868
- return new ge([new ut(e, t)]);
3311
+ return new fe([new ut(e, t)]);
2869
3312
  }
2870
3313
  }
2871
3314
  class pt {
@@ -2877,8 +3320,8 @@ class pt {
2877
3320
  var i, r, n, l, a, c, h;
2878
3321
  let s = !1, o = !1;
2879
3322
  if (this.getSelectionModel && this.getFocusModel) {
2880
- const u = this.getSelectionModel(), f = this.getFocusModel();
2881
- u && f && (f.hasFocus(e.rowIndex, e.columnIndex) || (f.setFocus(e.rowIndex, e.columnIndex), this.tableScope.onFocusChanged(f), s = !0), (i = e.originalEvent) != null && i.shiftKey || u.hasSelection() && (u.clear(), s = !0), (r = e.originalEvent) != null && r.shiftKey && this.previousEvt ? (u.addSelection(this.createRangeByEvents(e, this.previousEvt)), o = !0, s = !0) : (n = e.originalEvent) != null && n.altKey && ((l = e.originalEvent) != null && l.ctrlKey || (a = e.originalEvent) != null && a.metaKey) ? (u.removeSelection(A.singleCell(e.rowIndex, e.columnIndex)), o = !0, s = !0) : (c = e.originalEvent) != null && c.ctrlKey || (h = e.originalEvent) != null && h.metaKey ? (u.addSelection(A.singleCell(e.rowIndex, e.columnIndex)), o = !0, s = !0) : (u.firstClick(e.rowIndex, e.columnIndex), s = !0), this.tableScope.onSelectionChanged(u));
3323
+ const u = this.getSelectionModel(), g = this.getFocusModel();
3324
+ u && g && (g.hasFocus(e.rowIndex, e.columnIndex) || (g.setFocus(e.rowIndex, e.columnIndex), this.tableScope.onFocusChanged(g), s = !0), (i = e.originalEvent) != null && i.shiftKey || u.hasSelection() && (u.clear(), s = !0), (r = e.originalEvent) != null && r.shiftKey && this.previousEvt ? (u.addSelection(this.createRangeByEvents(e, this.previousEvt)), o = !0, s = !0) : (n = e.originalEvent) != null && n.altKey && ((l = e.originalEvent) != null && l.ctrlKey || (a = e.originalEvent) != null && a.metaKey) ? (u.removeSelection(A.singleCell(e.rowIndex, e.columnIndex)), o = !0, s = !0) : (c = e.originalEvent) != null && c.ctrlKey || (h = e.originalEvent) != null && h.metaKey ? (u.addSelection(A.singleCell(e.rowIndex, e.columnIndex)), o = !0, s = !0) : (u.firstClick(e.rowIndex, e.columnIndex), s = !0), this.tableScope.onSelectionChanged(u));
2882
3325
  }
2883
3326
  return o ? this.previousEvt = void 0 : this.previousEvt = e == null ? void 0 : e.clone(), s;
2884
3327
  }
@@ -2909,7 +3352,7 @@ class pt {
2909
3352
  });
2910
3353
  }
2911
3354
  }
2912
- class gt {
3355
+ class ft {
2913
3356
  get() {
2914
3357
  return {
2915
3358
  f2: "START_EDITING",
@@ -2929,7 +3372,7 @@ class gt {
2929
3372
  };
2930
3373
  }
2931
3374
  }
2932
- class ft {
3375
+ class gt {
2933
3376
  get() {
2934
3377
  return {
2935
3378
  f2: "START_EDITING",
@@ -2989,7 +3432,7 @@ class bt {
2989
3432
  (t = (e = this.tableScope) == null ? void 0 : e.tableOptions) != null && t.shortcutActionsDisabled ? this.isDebug() && console.debug("ShortcutService skipped.") : (this.assignPredefinedSystemShortcutMappings(), Object.assign(this.shortcutActionIdMapping, this.tableScope.tableOptions.shortcutActionIdMapping), this.isDebug() && console.debug("ShortcutService", this.shortcutActionIdMapping), this.tableScope.hostElement.addEventListener("keydown", this.onKeyDown.bind(this)));
2990
3433
  }
2991
3434
  assignPredefinedSystemShortcutMappings() {
2992
- this.isMacintosh() ? Object.assign(this.shortcutActionIdMapping, new ft().get()) : Object.assign(this.shortcutActionIdMapping, new gt().get());
3435
+ this.isMacintosh() ? Object.assign(this.shortcutActionIdMapping, new gt().get()) : Object.assign(this.shortcutActionIdMapping, new ft().get());
2993
3436
  }
2994
3437
  isMacintosh() {
2995
3438
  return navigator.platform.indexOf("Mac") > -1;
@@ -3130,7 +3573,7 @@ class wt {
3130
3573
  }
3131
3574
  }
3132
3575
  }
3133
- class fe {
3576
+ class ge {
3134
3577
  constructor(e = "none", t = "single") {
3135
3578
  this.selectionType = e, this.selectionMode = t, this.ranges = [], this.negativeRanges = [], this.allSelected = !1, this.silent = !1, this.listenerArr = [];
3136
3579
  }
@@ -3250,11 +3693,11 @@ class xt {
3250
3693
  }
3251
3694
  }
3252
3695
  class me {
3253
- constructor(e = new O(
3696
+ constructor(e = new _(
3254
3697
  "❯",
3255
3698
  "",
3256
3699
  ["gt-table-icon-expanded"]
3257
- ), t = new O(
3700
+ ), t = new _(
3258
3701
  "❯",
3259
3702
  "transform: rotate(180deg) translate(-100%, -100%); transform-origin: 0 0;",
3260
3703
  ["ge-table-icon-collapsed"]
@@ -3263,14 +3706,14 @@ class me {
3263
3706
  }
3264
3707
  // `⊖ `, `⊕ `;
3265
3708
  }
3266
- const St = new fe(), Ct = new xt("cell");
3709
+ const St = new ge(), Ct = new xt("cell");
3267
3710
  class J {
3268
3711
  constructor() {
3269
3712
  this.overflowX = "auto", this.overflowY = "auto", this.horizontalBorderVisible = !0, this.verticalBorderVisible = !0, this.footerSeparatorBorderVisible = !0, this.headerSeparatorBorderVisible = !0, this.fixedEastSeparatorBorderVisible = !0, this.fixedWestSeparatorBorderVisible = !0, this.tableTopBorderVisible = !0, this.tableBottomBorderVisible = !0, this.hoverRowVisible = !0, this.hoverColumnVisible = !0, this.columnsResizable = !0, this.columnsDraggable = !0, this.columnResizeHandleWidthInPx = 4, this.defaultRowHeights = {
3270
3713
  header: 34,
3271
3714
  body: 34,
3272
3715
  footer: 34
3273
- }, 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;
3274
3717
  }
3275
3718
  }
3276
3719
  const N = class N {
@@ -3448,8 +3891,8 @@ class Rt {
3448
3891
  let s = 0;
3449
3892
  const o = [];
3450
3893
  e.forEach((h, u) => {
3451
- const f = new TextEncoder().encode(u), p = new TextEncoder().encode(h), m = new Uint8Array(30 + f.length), g = new DataView(m.buffer);
3452
- m.set([80, 75, 3, 4], 0), g.setUint16(4, 20, !0), g.setUint16(6, 0, !0), g.setUint16(8, 0, !0), g.setUint16(10, 0, !0), g.setUint16(12, 0, !0), g.setUint32(14, 0, !0), g.setUint32(18, p.length, !0), g.setUint32(22, p.length, !0), g.setUint16(26, f.length, !0), g.setUint16(28, 0, !0), m.set(f, 30), t.push(m, p), o.push({
3894
+ const g = new TextEncoder().encode(u), p = new TextEncoder().encode(h), m = new Uint8Array(30 + g.length), f = new DataView(m.buffer);
3895
+ m.set([80, 75, 3, 4], 0), f.setUint16(4, 20, !0), f.setUint16(6, 0, !0), f.setUint16(8, 0, !0), f.setUint16(10, 0, !0), f.setUint16(12, 0, !0), f.setUint32(14, 0, !0), f.setUint32(18, p.length, !0), f.setUint32(22, p.length, !0), f.setUint16(26, g.length, !0), f.setUint16(28, 0, !0), m.set(g, 30), t.push(m, p), o.push({
3453
3896
  path: u,
3454
3897
  offset: s,
3455
3898
  contentSize: p.length
@@ -3457,8 +3900,8 @@ class Rt {
3457
3900
  });
3458
3901
  const i = s;
3459
3902
  o.forEach((h) => {
3460
- const u = new TextEncoder().encode(h.path), f = new Uint8Array(46 + u.length), p = new DataView(f.buffer);
3461
- f.set([80, 75, 1, 2], 0), p.setUint16(4, 20, !0), p.setUint16(6, 20, !0), p.setUint16(8, 0, !0), p.setUint16(10, 0, !0), p.setUint16(12, 0, !0), p.setUint16(14, 0, !0), p.setUint32(16, 0, !0), p.setUint32(20, h.contentSize, !0), p.setUint32(24, h.contentSize, !0), p.setUint16(28, u.length, !0), p.setUint16(30, 0, !0), p.setUint16(32, 0, !0), p.setUint16(34, 0, !0), p.setUint16(36, 0, !0), p.setUint32(38, 0, !0), p.setUint32(42, h.offset, !0), f.set(u, 46), t.push(f), s += f.length;
3903
+ const u = new TextEncoder().encode(h.path), g = new Uint8Array(46 + u.length), p = new DataView(g.buffer);
3904
+ g.set([80, 75, 1, 2], 0), p.setUint16(4, 20, !0), p.setUint16(6, 20, !0), p.setUint16(8, 0, !0), p.setUint16(10, 0, !0), p.setUint16(12, 0, !0), p.setUint16(14, 0, !0), p.setUint32(16, 0, !0), p.setUint32(20, h.contentSize, !0), p.setUint32(24, h.contentSize, !0), p.setUint16(28, u.length, !0), p.setUint16(30, 0, !0), p.setUint16(32, 0, !0), p.setUint16(34, 0, !0), p.setUint16(36, 0, !0), p.setUint32(38, 0, !0), p.setUint32(42, h.offset, !0), g.set(u, 46), t.push(g), s += g.length;
3462
3905
  });
3463
3906
  const r = new Uint8Array(22), n = new DataView(r.buffer);
3464
3907
  r.set([80, 75, 5, 6], 0), n.setUint16(4, 0, !0), n.setUint16(6, 0, !0), n.setUint16(8, o.length, !0), n.setUint16(10, o.length, !0), n.setUint32(12, s - i, !0), n.setUint32(16, i, !0), n.setUint16(20, 0, !0), t.push(r);
@@ -3473,7 +3916,7 @@ class Rt {
3473
3916
  return this.createZip(s);
3474
3917
  }
3475
3918
  }
3476
- class Ve extends ct {
3919
+ class He extends ct {
3477
3920
  constructor(e, t, s, o, i, r = new q(), n = new Rt()) {
3478
3921
  var c;
3479
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) {
@@ -3499,7 +3942,7 @@ class Ve extends ct {
3499
3942
  * @return {TableScope} - The newly created TableScope instance.
3500
3943
  */
3501
3944
  static create(e, t, s = new J(), o = new ne(), i = new yt(), r = new q()) {
3502
- return new Ve(e, t, i, s, o, r);
3945
+ return new He(e, t, i, s, o, r);
3503
3946
  }
3504
3947
  /**
3505
3948
  * Triggers an action based on the provided actionId.
@@ -3527,7 +3970,7 @@ class Ve extends ct {
3527
3970
  return !1;
3528
3971
  }
3529
3972
  updateModelValueAfterEdit(e, t, s, o) {
3530
- e === "body" && this.tableModel.getAreaModel(e).setValue(t, s, o) && (this.resetEditorRenderer(), this.repaint(), this.eventListener.onModelChanged(ge.createSingle(t, s)), this.hostElement.focus());
3973
+ e === "body" && this.tableModel.getAreaModel(e).setValue(t, s, o) && (this.resetEditorRenderer(), this.repaint(), this.eventListener.onModelChanged(fe.createSingle(t, s)), this.hostElement.focus());
3531
3974
  }
3532
3975
  /**
3533
3976
  * Retrieves the TableApi object.
@@ -3898,9 +4341,70 @@ class Ve extends ct {
3898
4341
  let e = ((t = this.storeSortingService) == null ? void 0 : t.getSortItems()) ?? [];
3899
4342
  this.tableModel.doSort(e);
3900
4343
  }
4344
+ sort(e) {
4345
+ this.tableModel.sort(e);
4346
+ }
3901
4347
  getDisplayedRowCount() {
3902
4348
  return this.displayedRowCount;
3903
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
+ }
3904
4408
  }
3905
4409
  class Gt extends ne {
3906
4410
  constructor(e) {
@@ -4188,9 +4692,9 @@ class y {
4188
4692
  }
4189
4693
  }
4190
4694
  const At = () => !0, ve = () => !1;
4191
- class V {
4192
- 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, f, p, m, g = () => this.visible) {
4193
- 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 = f, this.getEditRenderer = p, this.editInputPipe = m, this.isVisible = g, this.visible = !0, s.unit !== "px" && (this.minWidth = new y(0, "px"), this.maxWidth = new y(1e5, "px"));
4695
+ class H {
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) {
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"));
4194
4698
  }
4195
4699
  static bodyRenderer(e) {
4196
4700
  return new I(
@@ -4209,7 +4713,7 @@ class V {
4209
4713
  e.bodyClasses,
4210
4714
  e.footerClasses
4211
4715
  ), o = e.sortIconVisible ?? e.sortable ?? ve, i = e.editable ?? e.editable ?? ve, r = e.isVisible ?? e.isVisible ?? At;
4212
- return new V(
4716
+ return new H(
4213
4717
  e.property ?? "",
4214
4718
  e.headerLabel ?? "",
4215
4719
  e.width ?? new y(100, "px"),
@@ -4229,7 +4733,7 @@ class V {
4229
4733
  );
4230
4734
  }
4231
4735
  }
4232
- const zt = new y(500, "px"), jt = new y(400, "px"), Et = new y(300, "px"), Ut = new y(290, "px"), Yt = new y(280, "px"), Kt = new y(270, "px"), Xt = new y(260, "px"), Jt = new y(250, "px"), qt = new y(240, "px"), Zt = new y(230, "px"), Qt = new y(220, "px"), es = new y(210, "px"), Re = new y(200, "px"), ts = new y(190, "px"), ss = new y(180, "px"), os = new y(170, "px"), is = new y(160, "px"), rs = new y(150, "px"), ns = new y(140, "px"), ls = new y(130, "px"), as = new y(120, "px"), cs = new y(110, "px"), ds = new y(100, "px"), hs = new y(90, "px"), us = new y(80, "px"), ps = new y(70, "px"), gs = new y(60, "px"), fs = new y(50, "px"), ms = new y(40, "px"), bs = new y(30, "px"), ys = new y(20, "px"), ws = new y(10, "px"), xs = new y(0, "px");
4736
+ const zt = new y(500, "px"), jt = new y(400, "px"), Et = new y(300, "px"), Ut = new y(290, "px"), Yt = new y(280, "px"), Kt = new y(270, "px"), Xt = new y(260, "px"), Jt = new y(250, "px"), qt = new y(240, "px"), Zt = new y(230, "px"), Qt = new y(220, "px"), es = new y(210, "px"), Re = new y(200, "px"), ts = new y(190, "px"), ss = new y(180, "px"), os = new y(170, "px"), is = new y(160, "px"), rs = new y(150, "px"), ns = new y(140, "px"), ls = new y(130, "px"), as = new y(120, "px"), cs = new y(110, "px"), ds = new y(100, "px"), hs = new y(90, "px"), us = new y(80, "px"), ps = new y(70, "px"), fs = new y(60, "px"), gs = new y(50, "px"), ms = new y(40, "px"), bs = new y(30, "px"), ys = new y(20, "px"), ws = new y(10, "px"), xs = new y(0, "px");
4233
4737
  class P extends ue {
4234
4738
  constructor(e, t, s, o = []) {
4235
4739
  super(e, o, s), this.areaIdent = e, this.arr = t, this.defaultRowHeight = s, this.columnDefs = o, this.filteredArr = [...t];
@@ -4262,6 +4766,8 @@ class F {
4262
4766
  constructor(e = "body") {
4263
4767
  this.areaIdent = e, this.rowSelectionModel = void 0;
4264
4768
  }
4769
+ sort(e) {
4770
+ }
4265
4771
  getRowCount() {
4266
4772
  return 0;
4267
4773
  }
@@ -4343,7 +4849,7 @@ class Mt {
4343
4849
  }
4344
4850
  class Ae extends ue {
4345
4851
  constructor(e, t, s, o = []) {
4346
- 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];
4347
4853
  }
4348
4854
  changeColumnOrder(e, t) {
4349
4855
  this.arrayMove(this.properties, e, t), super.changeColumnOrder(e, t);
@@ -4379,7 +4885,8 @@ class Ae extends ue {
4379
4885
  return this.filteredFlattenRows[e];
4380
4886
  }
4381
4887
  getValueByT(e, t) {
4382
- return t.includes(".") ? this.getPropertyValue(e, t.split(".")) : e[t];
4888
+ if (e && t)
4889
+ return t.includes(".") ? this.getPropertyValue(e, t.split(".")) : e[t];
4383
4890
  }
4384
4891
  externalFilterChanged(e) {
4385
4892
  this.lastPredictFn = e, this.doFiltering();
@@ -4543,10 +5050,10 @@ class Tt {
4543
5050
  }
4544
5051
  }
4545
5052
  class oe {
4546
- constructor(e, t, s, o = 0, i = 0, r = !1, n = new z(), l = [], a = [], c = -1, h = 0, u = 400, f = () => {
5053
+ constructor(e, t, s, o = 0, i = 0, r = !1, n = new z(), l = [], a = [], c = -1, h = 0, u = 400, g = () => {
4547
5054
  }) {
4548
- var p, m, g, b;
4549
- this.headerAreaModel = e, this.bodyAreaModel = t, this.footerAreaModel = s, this.fixedLeftColumnCount = o, this.fixedRightColumnCount = i, this.rowCheckboxVisible = r, this.defaultRowHeights = n, this.columnDefs = l, this.columnSizes = a, this.overridingColumnWidth = c, this.columnCount = h, this.parentSize = u, this.getSelectionModel = f, this.rowCount = 0, this.contentHeightInPx = 0, this.contentWidthInPx = 0, this.padding = new Me(0, 0, 0, 0), this.xPositions = [], e.areaIdent = "header", t.areaIdent = "body", s.areaIdent = "footer", this.columnCount || ((p = this.columnDefs) != null && p.length ? this.columnCount = this.columnDefs.length : (m = this.columnSizes) != null && m.length && (this.columnCount = (g = this.columnSizes) == null ? void 0 : g.length)), (b = this.columnDefs) != null && b.length && Ze(this.columnDefs[0]) && !t.rowSelectionModel && (t.rowSelectionModel = new Tt());
5055
+ var p, m, f, b;
5056
+ this.headerAreaModel = e, this.bodyAreaModel = t, this.footerAreaModel = s, this.fixedLeftColumnCount = o, this.fixedRightColumnCount = i, this.rowCheckboxVisible = r, this.defaultRowHeights = n, this.columnDefs = l, this.columnSizes = a, this.overridingColumnWidth = c, this.columnCount = h, this.parentSize = u, this.getSelectionModel = g, this.rowCount = 0, this.contentHeightInPx = 0, this.contentWidthInPx = 0, this.padding = new Me(0, 0, 0, 0), this.xPositions = [], e.areaIdent = "header", t.areaIdent = "body", s.areaIdent = "footer", this.columnCount || ((p = this.columnDefs) != null && p.length ? this.columnCount = this.columnDefs.length : (m = this.columnSizes) != null && m.length && (this.columnCount = (f = this.columnSizes) == null ? void 0 : f.length)), (b = this.columnDefs) != null && b.length && Ze(this.columnDefs[0]) && !t.rowSelectionModel && (t.rowSelectionModel = new Tt());
4550
5057
  }
4551
5058
  init() {
4552
5059
  this.recalcSize(this.parentSize), this.overridingColumnWidth === -1 && this.calcXPositions(), this.headerAreaModel && this.headerAreaModel.init(), this.bodyAreaModel && this.bodyAreaModel.init(), this.footerAreaModel && this.footerAreaModel.init();
@@ -4812,6 +5319,9 @@ class oe {
4812
5319
  doSort(e) {
4813
5320
  return this.getAreaModel("body").doSort(e);
4814
5321
  }
5322
+ sort(e) {
5323
+ return this.getAreaModel("body").sort(e);
5324
+ }
4815
5325
  /**
4816
5326
  * Returns an array of ColumnDefIf objects or undefined.
4817
5327
  *
@@ -4932,7 +5442,7 @@ class oe {
4932
5442
  return this.tableScope;
4933
5443
  }
4934
5444
  }
4935
- class Te extends $ {
5445
+ class Te extends O {
4936
5446
  constructor(e, t, s, o, i = "ge-selected-row", r = "ge-focused-row") {
4937
5447
  super(
4938
5448
  e,
@@ -4982,32 +5492,32 @@ class B {
4982
5492
  * Please consult each method's documentation for detailed explanation of their functionality.
4983
5493
  */
4984
5494
  static createTableModel(e) {
4985
- var t, s, o, i, r, n, l, a, c, h, u, f, p, m;
5495
+ var t, s, o, i, r, n, l, a, c, h, u, g, p, m;
4986
5496
  if (e.defaultRowHeights === void 0)
4987
5497
  if ((t = e.tableOptions) != null && t.defaultRowHeights)
4988
5498
  e.defaultRowHeights = e.tableOptions.defaultRowHeights;
4989
5499
  else {
4990
5500
  if (e.defaultRowHeights = new z(), e.headerAreaModel && "defaultRowHeight" in e.headerAreaModel) {
4991
- const g = e.headerAreaModel.defaultRowHeight;
4992
- g > -1 && (e.defaultRowHeights.header = g);
5501
+ const f = e.headerAreaModel.defaultRowHeight;
5502
+ f > -1 && (e.defaultRowHeights.header = f);
4993
5503
  }
4994
5504
  if (e.bodyAreaModel && "defaultRowHeight" in e.bodyAreaModel) {
4995
- const g = e.bodyAreaModel.defaultRowHeight;
4996
- g > -1 && (e.defaultRowHeights.body = g);
5505
+ const f = e.bodyAreaModel.defaultRowHeight;
5506
+ f > -1 && (e.defaultRowHeights.body = f);
4997
5507
  }
4998
5508
  if (e.footerAreaModel && "defaultRowHeight" in e.footerAreaModel) {
4999
- const g = e.footerAreaModel.defaultRowHeight;
5000
- g > -1 && (e.defaultRowHeights.footer = g);
5509
+ const f = e.footerAreaModel.defaultRowHeight;
5510
+ f > -1 && (e.defaultRowHeights.footer = f);
5001
5511
  }
5002
5512
  }
5003
- if (e.columnDefs === void 0 && ((s = e.properties) != null && s.length ? e.columnDefs = e.properties.map((g) => new V(g, g.toUpperCase(), Re)) : (o = e.rows) != null && o.length ? e.columnDefs = Object.keys(e.rows[0]).map((g) => new V(g, g.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(
5004
5514
  "header",
5005
5515
  e.headerData,
5006
5516
  e.defaultRowHeights.header,
5007
5517
  e.columnDefs
5008
5518
  ) : (c = e.columnDefs) != null && c.length ? e.headerAreaModel = new P(
5009
5519
  "header",
5010
- [e.columnDefs.map((g) => g.headerLabel)],
5520
+ [e.columnDefs.map((f) => f.headerLabel)],
5011
5521
  e.defaultRowHeights.header,
5012
5522
  e.columnDefs
5013
5523
  ) : e.headerAreaModel = new F("header")), e.footerAreaModel || ((h = e.footerData) != null && h.length ? e.footerAreaModel = new P(
@@ -5018,13 +5528,13 @@ class B {
5018
5528
  ) : e.footerAreaModel = new F("footer")), !e.bodyAreaModel)
5019
5529
  if (e.rows)
5020
5530
  if ((u = e.rows) != null && u.length && G(e.rows[0])) {
5021
- const g = e.rows;
5531
+ const f = e.rows;
5022
5532
  e.bodyAreaModel = new Ae(
5023
5533
  "body",
5024
- g,
5534
+ f,
5025
5535
  e.defaultRowHeights.body,
5026
5536
  e.columnDefs
5027
- ), (e.columnDefs[0].property === "CheckboxColumn" || (f = e.tableOptions) != null && f.showCheckboxWihoutExtraColumn) && (e.bodyAreaModel.rowSelectionModel = new Ee(g));
5537
+ ), (e.columnDefs[0].property === "CheckboxColumn" || (g = e.tableOptions) != null && g.showCheckboxWihoutExtraColumn) && (e.bodyAreaModel.rowSelectionModel = new Ee(f));
5028
5538
  } else
5029
5539
  e.bodyAreaModel = new Te(
5030
5540
  "body",
@@ -5361,7 +5871,7 @@ class B {
5361
5871
  */
5362
5872
  static createByObjectArray(e, t = [], s = [], o = 0, i = 0, r = !1, n = new z(), l, a = []) {
5363
5873
  let c;
5364
- t != null && t.length ? c = new P("header", t, n.header, l) : l != null && l.length ? c = new P("header", [l.map((f) => f.headerLabel)], n.header, l) : c = new F();
5874
+ t != null && t.length ? c = new P("header", t, n.header, l) : l != null && l.length ? c = new P("header", [l.map((g) => g.headerLabel)], n.header, l) : c = new F();
5365
5875
  const h = s ? new P("footer", s, n.footer, l) : new F(), u = new Te("body", e, l, n.body);
5366
5876
  return new oe(
5367
5877
  c,
@@ -5492,7 +6002,7 @@ class Fs {
5492
6002
  this.area = e, this.rowIndex = t, this.columnIndex = s, this.value = o, this.cssClasses = i;
5493
6003
  }
5494
6004
  }
5495
- class Ls {
6005
+ class Os {
5496
6006
  constructor() {
5497
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) => {
5498
6008
  if (e && t && s.getRowId) {
@@ -5618,7 +6128,7 @@ class T {
5618
6128
  static buildColumnDefs(e, t = []) {
5619
6129
  for (const s of e)
5620
6130
  s.property && t.push(
5621
- V.create({
6131
+ H.create({
5622
6132
  property: s.property,
5623
6133
  headerLabel: s.data ? s.data : s.property,
5624
6134
  isVisible: () => typeof s.isVisible == "function" ? s.isVisible() : !0
@@ -5689,7 +6199,7 @@ class T {
5689
6199
  e.push(o.data + " rowIndex:" + o.rowIndex), (s = o.children) != null && s.length && T.iterateThrowColumns(e, o.children);
5690
6200
  }
5691
6201
  }
5692
- class Os {
6202
+ class Ls {
5693
6203
  constructor() {
5694
6204
  this.areaIdent = "body", this.rowSelectionModel = void 0;
5695
6205
  }
@@ -5698,6 +6208,8 @@ class Os {
5698
6208
  doSort(e) {
5699
6209
  return !1;
5700
6210
  }
6211
+ sort(e) {
6212
+ }
5701
6213
  externalFilterChanged(e) {
5702
6214
  }
5703
6215
  getCellRenderer(e, t) {
@@ -5800,10 +6312,12 @@ const Q = class Q {
5800
6312
  };
5801
6313
  Q.toggleHeaderGroup = "toggleHeaderGroup";
5802
6314
  let ae = Q;
5803
- class $s {
6315
+ class _s {
5804
6316
  constructor(e = "header", t, s = [], o, i = new me()) {
5805
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();
5806
6318
  }
6319
+ sort(e) {
6320
+ }
5807
6321
  init() {
5808
6322
  var e;
5809
6323
  for (const t of this.groupExts)
@@ -5900,7 +6414,7 @@ class $s {
5900
6414
  return t != null && t.toggle && t.visibility !== "always" && (t.closed = !t.closed, this.init()), T.buildColumnDefs(this.groupExts);
5901
6415
  }
5902
6416
  }
5903
- class _s {
6417
+ class $s {
5904
6418
  filterPredict(e, t, s = this.objectToString.bind(this)) {
5905
6419
  if (!e)
5906
6420
  return !1;
@@ -5959,7 +6473,7 @@ class Bs {
5959
6473
  return new I(void 0, e, void 0);
5960
6474
  }
5961
6475
  }
5962
- class Hs {
6476
+ class Vs {
5963
6477
  constructor(e, t = !0, s = !1) {
5964
6478
  this.property = e, this.skipCheckableCheck = t, this.readonly = s;
5965
6479
  }
@@ -5979,12 +6493,12 @@ class Hs {
5979
6493
  ${h}
5980
6494
  class="ge-input-checkbox">`, !this.readonly) {
5981
6495
  const u = e.querySelector(".ge-input-checkbox");
5982
- u && u.addEventListener("click", (f, p) => (l[this.property] = !l[this.property], !0));
6496
+ u && u.addEventListener("click", (g, p) => (l[this.property] = !l[this.property], !0));
5983
6497
  }
5984
6498
  }
5985
6499
  }
5986
6500
  }
5987
- class Vs {
6501
+ class Hs {
5988
6502
  render(e, t, s, o, i, r, n) {
5989
6503
  r && (e.innerText = new Date(r).toISOString());
5990
6504
  }
@@ -6162,12 +6676,12 @@ class We {
6162
6676
  this.action = e, this.area = t, this.areaModel = s, this.rowIndex = o, this.columnIndex = i, this.id = r;
6163
6677
  }
6164
6678
  }
6165
- class _ {
6679
+ class $ {
6166
6680
  constructor(e, t, s = "", o = "", i = "button", r = !0) {
6167
6681
  this.action = e, this.label = t, this.icon = s, this.elementClass = o, this.elementType = i, this.enabled = r;
6168
6682
  }
6169
6683
  }
6170
- class Lt {
6684
+ class Ot {
6171
6685
  constructor(e, t) {
6172
6686
  this.actionEventListener = e, this.crudActions = t;
6173
6687
  }
@@ -6229,7 +6743,7 @@ class Lt {
6229
6743
  return null;
6230
6744
  }
6231
6745
  getCrudActions(e) {
6232
- 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;
6233
6747
  }
6234
6748
  }
6235
6749
  const Zs = function(d, e, t) {
@@ -6267,7 +6781,7 @@ class Ne {
6267
6781
  }
6268
6782
  }
6269
6783
  }
6270
- class Qs extends fe {
6784
+ class Qs extends ge {
6271
6785
  constructor(e) {
6272
6786
  super("row", "multi"), this.model = e;
6273
6787
  }
@@ -6377,12 +6891,12 @@ class to {
6377
6891
  this.minValue = e, this.minColor = t, this.middleValue = s, this.middleColor = o, this.maxValue = i, this.maxColor = r;
6378
6892
  }
6379
6893
  }
6380
- class Ot {
6894
+ class Lt {
6381
6895
  constructor(e = !0, t = !0, s = (r, n) => r * 10 + 10, o = 50, i = 450) {
6382
6896
  this.autoCalc = e, this.takeHeaderLabelsIntoAccount = t, this.charCountToWidth = s, this.minWidth = o, this.maxWidth = i;
6383
6897
  }
6384
6898
  }
6385
- class $t {
6899
+ class _t {
6386
6900
  constructor(e) {
6387
6901
  this.object = e;
6388
6902
  }
@@ -6514,7 +7028,7 @@ class ie {
6514
7028
  return e.replace(/\./g, " ");
6515
7029
  }
6516
7030
  }
6517
- class _t {
7031
+ class $t {
6518
7032
  constructor() {
6519
7033
  this.urls = {
6520
7034
  list: {
@@ -6522,15 +7036,15 @@ class _t {
6522
7036
  method: "GET"
6523
7037
  }
6524
7038
  }, this.singleRowActions = [
6525
- new _("VIEW", "View", "", "", "link"),
6526
- new _("EDIT", "Edit", "", "", "link"),
6527
- new _("CLONE", "Clone", "", "", "link"),
6528
- new _("DELETE", "Delete", "", "", "link")
7039
+ new $("VIEW", "View", "", "", "link"),
7040
+ new $("EDIT", "Edit", "", "", "link"),
7041
+ new $("CLONE", "Clone", "", "", "link"),
7042
+ new $("DELETE", "Delete", "", "", "link")
6529
7043
  // new CrudAction('CREATE', 'Create', '', '', 'link'),
6530
7044
  ], this.tableActions = [
6531
- new _("CREATE", "Create", "", "", "button"),
6532
- new _("DELETE_SELECTED", "Delete Selected", "", "", "button")
6533
- ], 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) => {
6534
7048
  const t = e.getHeadersInit ? e.getHeadersInit() : {};
6535
7049
  let s = e.urls.list.url, o = e.urls.list.method ?? "GET";
6536
7050
  return fetch(s, {
@@ -6583,7 +7097,7 @@ class _t {
6583
7097
  }
6584
7098
  class so {
6585
7099
  constructor() {
6586
- this.crudOptions = new _t(), this.listenActionEvent = (e) => {
7100
+ this.crudOptions = new $t(), this.listenActionEvent = (e) => {
6587
7101
  };
6588
7102
  }
6589
7103
  createTableModel(e, t, s = (i) => {
@@ -6592,21 +7106,21 @@ class so {
6592
7106
  this.crudOptions = e, this.listenActionEvent = o, e.fetchList(e).then((i) => {
6593
7107
  var r, n, l, a;
6594
7108
  if (t.rows = i, i != null && i.length) {
6595
- const c = (r = t.columnDefs) != null && r.length ? t.columnDefs.map((w) => w.property) : this.extractProperties(i[0]), h = new fe("row", "multi"), u = () => h;
7109
+ const c = (r = t.columnDefs) != null && r.length ? t.columnDefs.map((w) => w.property) : this.extractProperties(i[0]), h = new ge("row", "multi"), u = () => h;
6596
7110
  this.tableOptions = {
6597
7111
  ...new J(),
6598
7112
  ...t.tableOptions,
6599
7113
  hoverColumnVisible: !1,
6600
7114
  getSelectionModel: u
6601
7115
  };
6602
- const f = this.calcAutoColumnWidths(i, c), p = (n = t.columnDefs) != null && n.length ? t.columnDefs : c.map((w, S) => new V(w, w.toUpperCase(), new y(f[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")));
6603
7117
  if ((l = e == null ? void 0 : e.columnWidths) != null && l.autoCalc)
6604
7118
  for (let w = 0; w < p.length; w++) {
6605
7119
  const S = p[w];
6606
- S.width = new y(f[w], "px");
7120
+ S.width = new y(g[w], "px");
6607
7121
  }
6608
7122
  if (e.autoAddActionColumn) {
6609
- let w = new V(
7123
+ let w = new H(
6610
7124
  "id",
6611
7125
  "Actions",
6612
7126
  Et,
@@ -6614,17 +7128,17 @@ class so {
6614
7128
  );
6615
7129
  w.rendererMap = new I(
6616
7130
  void 0,
6617
- new Lt(this, e.singleRowActions),
7131
+ new Ot(this, e.singleRowActions),
6618
7132
  void 0
6619
7133
  ), p.push(w);
6620
7134
  }
6621
- const m = 0, g = e.calcFixedRightColumnCount(p.length);
7135
+ const m = 0, f = e.calcFixedRightColumnCount(p.length);
6622
7136
  this.tableModel = B.buildByTypedRowsParam({
6623
7137
  rows: i,
6624
7138
  columnDefs: p,
6625
7139
  tableOptions: this.tableOptions,
6626
7140
  fixedLeftColumnCount: m,
6627
- fixedRightColumnCount: g
7141
+ fixedRightColumnCount: f
6628
7142
  }), this.tableModel.getSelectionModel = u, this.bodyModel = (a = this.tableModel) == null ? void 0 : a.getBodyModel();
6629
7143
  const b = new It(this.tableModel, this.tableOptions);
6630
7144
  s(b);
@@ -6641,7 +7155,7 @@ class so {
6641
7155
  var t, s, o, i;
6642
7156
  if (this.listenActionEvent && this.listenActionEvent(e), e.action === "VIEW") {
6643
7157
  let r = e.id;
6644
- (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));
6645
7159
  } else if (e.action === "EDIT") {
6646
7160
  let r = e.id;
6647
7161
  const n = this.crudOptions.getIdKey() ?? "id";
@@ -6677,7 +7191,7 @@ class so {
6677
7191
  let r = e.id;
6678
7192
  (i = this.crudOptions) == null || i.deleteItem(this.crudOptions, r).then((n) => {
6679
7193
  var l, a, c, h, u;
6680
- return (l = this.bodyModel) == null || l.filterRowsByPredict((f) => f.id != r), (c = (a = this.tableModel) == null ? void 0 : a.getTableScope()) == null || c.clearSelection(!0), (u = (h = this.tableModel) == null ? void 0 : h.getTableScope()) == null || u.repaintHard(), n;
7194
+ return (l = this.bodyModel) == null || l.filterRowsByPredict((g) => g.id != r), (c = (a = this.tableModel) == null ? void 0 : a.getTableScope()) == null || c.clearSelection(!0), (u = (h = this.tableModel) == null ? void 0 : h.getTableScope()) == null || u.repaintHard(), n;
6681
7195
  });
6682
7196
  }
6683
7197
  }
@@ -6689,7 +7203,7 @@ class so {
6689
7203
  const i = e.length ?? 0, r = new Array(o).fill(0);
6690
7204
  for (let c = 0; c < i; c++)
6691
7205
  for (let h = 0; h < o; h++) {
6692
- const u = t[h], f = this.getValueByT(e[c], u), p = (f == null ? void 0 : f.toString().length) || 0;
7206
+ const u = t[h], g = this.getValueByT(e[c], u), p = (g == null ? void 0 : g.toString().length) || 0;
6693
7207
  p > r[h] && (r[h] = p);
6694
7208
  }
6695
7209
  if (this.crudOptions.columnWidths.takeHeaderLabelsIntoAccount)
@@ -6730,27 +7244,27 @@ class oo {
6730
7244
  export {
6731
7245
  ue as AbstractAreaModel,
6732
7246
  We as ActionEvent,
6733
- Lt as ActionsCellRenderer,
6734
- Oe as AnyPropertyType,
7247
+ Ot as ActionsCellRenderer,
7248
+ Le as AnyPropertyType,
6735
7249
  Ds as AreaMapFactory,
6736
- Os as AreaModel,
7250
+ Ls as AreaModel,
6737
7251
  P as AreaModelArrayOfArrays,
6738
- $s as AreaModelCellGroups,
7252
+ _s as AreaModelCellGroups,
6739
7253
  F as AreaModelHidden,
6740
- $ as AreaModelObjectArray,
7254
+ O as AreaModelObjectArray,
6741
7255
  Te as AreaModelObjectArrayWithColumndefs,
6742
7256
  Ae as AreaModelTree,
6743
7257
  I as AreaObjectMap,
6744
- H as ArrayPropertyType,
6745
- Ls as AutoRestoreOptions,
6746
- Ht as AvoidDoubleExecution,
7258
+ V as ArrayPropertyType,
7259
+ Os as AutoRestoreOptions,
7260
+ Vt as AvoidDoubleExecution,
6747
7261
  Ye as BooleanPropertyType,
6748
7262
  Pt as CellGroup,
6749
7263
  Ft as CellGroupExt,
6750
7264
  ae as CellGroupExtCellRenderer,
6751
7265
  A as CellRange,
6752
7266
  T as CellgroupFactory,
6753
- Hs as CheckboxBooleanPropertyCellRenderer,
7267
+ Vs as CheckboxBooleanPropertyCellRenderer,
6754
7268
  Ie as CheckboxCellRenderer,
6755
7269
  ks as CheckboxColumnDef,
6756
7270
  Tt as CheckboxModel,
@@ -6758,19 +7272,19 @@ export {
6758
7272
  at as ColAndRowspanModel,
6759
7273
  it as CollapsedExpandedData,
6760
7274
  eo as ColorRgb,
6761
- V as ColumnDef,
6762
- Vt as ColumnDefGenerator,
6763
- Ot as ColumnWidths,
7275
+ H as ColumnDef,
7276
+ Ht as ColumnDefGenerator,
7277
+ Lt as ColumnWidths,
6764
7278
  Qe as ConvenienceDomService,
6765
7279
  q as CopyService,
6766
- _ as CrudAction,
7280
+ $ as CrudAction,
6767
7281
  ie as CrudObjectEdit,
6768
- $t as CrudObjectView,
6769
- _t as CrudOptions,
7282
+ _t as CrudObjectView,
7283
+ $t as CrudOptions,
6770
7284
  so as CrudTableModelFactory,
6771
7285
  Se as CssVars,
6772
7286
  Ws as DateToIntlDDMMYYYYCellRenderer,
6773
- Vs as DateToIsoCellRenderer,
7287
+ Hs as DateToIsoCellRenderer,
6774
7288
  Ns as DateToLocaleDateCellRenderer,
6775
7289
  Us as DateToTecCellRenderer,
6776
7290
  z as DefaultRowHeights,
@@ -6782,12 +7296,12 @@ export {
6782
7296
  xt as FocusModel,
6783
7297
  ut as GeCellIndices,
6784
7298
  K as GeCssColorUtil,
6785
- _s as GeFilterService,
7299
+ $s as GeFilterService,
6786
7300
  Ps as GeKeyEvent,
6787
- ge as GeModelChangeEvent,
7301
+ fe as GeModelChangeEvent,
6788
7302
  he as GeMouseEvent,
6789
7303
  L as GeoData,
6790
- O as Icon,
7304
+ _ as Icon,
6791
7305
  vs as IndexAndPx,
6792
7306
  wt as InputCellRenderer,
6793
7307
  ht as InputHandler,
@@ -6802,9 +7316,9 @@ export {
6802
7316
  Ys as NumberCellRenderer,
6803
7317
  Ue as NumberPropertyType,
6804
7318
  D as ObjectPropertyType,
6805
- ft as OsxShortcutActionIdMapping,
7319
+ gt as OsxShortcutActionIdMapping,
6806
7320
  De as PROPERTY_TYPE_KEY_ANY,
6807
- Le as PROPERTY_TYPE_KEY_ARRAY,
7321
+ Oe as PROPERTY_TYPE_KEY_ARRAY,
6808
7322
  de as PROPERTY_TYPE_KEY_BOOLEAN,
6809
7323
  Pe as PROPERTY_TYPE_KEY_NULL,
6810
7324
  ce as PROPERTY_TYPE_KEY_NUMBER,
@@ -6814,7 +7328,7 @@ export {
6814
7328
  Me as Padding,
6815
7329
  qs as PositiveAndNegativeNumberRenderer,
6816
7330
  Js as ProgressBarCellRenderer,
6817
- $e as PropertyItem,
7331
+ _e as PropertyItem,
6818
7332
  Wt as PropertyTypeService,
6819
7333
  ct as RenderScope,
6820
7334
  Bs as Renderer,
@@ -6822,7 +7336,7 @@ export {
6822
7336
  vt as ResizeHandler,
6823
7337
  Nt as SchemeGenerator,
6824
7338
  Ne as SelectCellRenderer,
6825
- fe as SelectionModel,
7339
+ ge as SelectionModel,
6826
7340
  pt as SelectionService,
6827
7341
  bt as ShortcutService,
6828
7342
  Xs as SimpleArrayCellRenderer,
@@ -6841,11 +7355,11 @@ export {
6841
7355
  oe as TableModel,
6842
7356
  It as TableModelAndOptions,
6843
7357
  J as TableOptions,
6844
- Ve as TableScope,
7358
+ He as TableScope,
6845
7359
  to as ThreeColorGradientArg,
6846
7360
  Ee as TreeCheckboxModel,
6847
7361
  le as TreeFactory,
6848
- _e as TreeOptions,
7362
+ $e as TreeOptions,
6849
7363
  Ce as TreeRow,
6850
7364
  Mt as TreeRowService,
6851
7365
  js as TrueFalseCellRenderer,
@@ -6856,7 +7370,7 @@ export {
6856
7370
  oo as UrlInfo,
6857
7371
  Ke as ValueInfo,
6858
7372
  Dt as ValueLabel,
6859
- gt as WindowsShortcutActionIdMapping,
7373
+ ft as WindowsShortcutActionIdMapping,
6860
7374
  Ss as actionIds,
6861
7375
  Ts as allCenter,
6862
7376
  Ms as allLeft,
@@ -6902,9 +7416,9 @@ export {
6902
7416
  Et as px300,
6903
7417
  ms as px40,
6904
7418
  jt as px400,
6905
- fs as px50,
7419
+ gs as px50,
6906
7420
  zt as px500,
6907
- gs as px60,
7421
+ fs as px60,
6908
7422
  ps as px70,
6909
7423
  us as px80,
6910
7424
  hs as px90,