@guiexpert/table 1.1.84 → 1.1.86

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
@@ -1,4 +1,4 @@
1
- function Nt(d, e = 500) {
1
+ function Ut(d, e = 500) {
2
2
  let t = null, s = 0;
3
3
  return function(...o) {
4
4
  const i = Date.now(), r = e - (i - s);
@@ -7,7 +7,7 @@ function Nt(d, e = 500) {
7
7
  }, r));
8
8
  };
9
9
  }
10
- function Ge(d, e = 500) {
10
+ function Ye(d, e = 500) {
11
11
  let t = null;
12
12
  return function(...s) {
13
13
  t && window.clearTimeout(t), t = window.setTimeout(() => {
@@ -15,7 +15,7 @@ function Ge(d, e = 500) {
15
15
  }, e);
16
16
  };
17
17
  }
18
- function Gt(d = 500) {
18
+ function Yt(d = 500) {
19
19
  return function(e, t, s) {
20
20
  let o = 0;
21
21
  const i = s.value;
@@ -25,43 +25,43 @@ function Gt(d = 500) {
25
25
  }, s;
26
26
  };
27
27
  }
28
- const Fe = "any", j = "undefined", Pe = "null", _e = "string", de = "number", he = "boolean", Le = "Array", U = "object", J = [Pe, j, Fe];
29
- class Oe {
28
+ const Le = "any", X = "undefined", Oe = "null", Ve = "string", fe = "number", me = "boolean", He = "Array", K = "object", Q = [Oe, X, Le];
29
+ class $e {
30
30
  constructor(e) {
31
- this.propertyName = e, this.type = Fe;
31
+ this.propertyName = e, this.type = Le;
32
32
  }
33
33
  }
34
- class se {
34
+ class le {
35
35
  constructor(e) {
36
- this.propertyName = e, this.type = j;
36
+ this.propertyName = e, this.type = X;
37
37
  }
38
38
  }
39
- class ze {
39
+ class Xe {
40
40
  constructor(e) {
41
- this.propertyName = e, this.type = Pe;
41
+ this.propertyName = e, this.type = Oe;
42
42
  }
43
43
  }
44
- class je {
44
+ class Ke {
45
45
  constructor(e) {
46
- this.propertyName = e, this.type = _e;
46
+ this.propertyName = e, this.type = Ve;
47
47
  }
48
48
  }
49
- class Ue {
49
+ class Je {
50
50
  constructor(e) {
51
- this.propertyName = e, this.type = de;
51
+ this.propertyName = e, this.type = fe;
52
52
  }
53
53
  }
54
- class Ye {
54
+ class qe {
55
55
  constructor(e) {
56
- this.propertyName = e, this.type = he;
56
+ this.propertyName = e, this.type = me;
57
57
  }
58
58
  }
59
59
  class B {
60
60
  constructor(e, t = []) {
61
- this.propertyName = e, this.items = t, this.type = Le;
61
+ this.propertyName = e, this.items = t, this.type = He;
62
62
  }
63
63
  }
64
- class Ve {
64
+ class Be {
65
65
  constructor(e, t = []) {
66
66
  this.propertyName = e, this.types = t;
67
67
  }
@@ -69,12 +69,12 @@ class Ve {
69
69
  return `PropertyItem(propertyName: ${this.propertyName}, types: [${this.types.map((e) => e.type).join(", ")}])`;
70
70
  }
71
71
  }
72
- class F {
72
+ class L {
73
73
  constructor(e, t, s = []) {
74
- this.propertyName = e, this.className = t, this.properties = s, this.type = U;
74
+ this.propertyName = e, this.className = t, this.properties = s, this.type = K;
75
75
  }
76
76
  }
77
- class zt {
77
+ class Xt {
78
78
  constructor() {
79
79
  this.rootPropertyType = null, this.allowCustomRenderer = !0, this.bufCustomRenderer = [], this.LABEL_MAPPINGS = {
80
80
  Id: "ID",
@@ -101,8 +101,8 @@ class zt {
101
101
  if (!this.rootPropertyType)
102
102
  return s;
103
103
  if (e instanceof B) {
104
- const o = e.items.find((i) => i.type === U);
105
- if (o && o instanceof F) {
104
+ const o = e.items.find((i) => i.type === K);
105
+ if (o && o instanceof L) {
106
106
  const i = o.properties;
107
107
  s.push(" const columnDefs: ColumnDefIf[] = ["), this.iteratePropertyItems(s, i, ""), s.push(" ];");
108
108
  }
@@ -111,28 +111,28 @@ class zt {
111
111
  }
112
112
  iteratePropertyItems(e, t, s = "") {
113
113
  for (let o = 0; o < t.length; o++) {
114
- let r = t[o].types.filter((n) => !J.includes(n.type));
114
+ let r = t[o].types.filter((n) => !Q.includes(n.type));
115
115
  if (r.length === 1) {
116
116
  let n = r[0];
117
117
  const l = s ? [s, n.propertyName].join(".") : n.propertyName;
118
- if (n instanceof F)
118
+ if (n instanceof L)
119
119
  this.iteratePropertyItems(e, n.properties, l);
120
120
  else {
121
121
  let a = "";
122
122
  if (n instanceof B) {
123
- const p = n.items.find((m) => m.type === U);
124
- p && p instanceof F && (a = p.className);
123
+ const p = n.items.find((m) => m.type === K);
124
+ p && p instanceof L && (a = p.className);
125
125
  }
126
126
  const c = this.getReadableColumnLabel(l);
127
127
  let h = 100, u = "", f = "ge-table-text-align-left";
128
- if (n.type === Le) {
128
+ if (n.type === He) {
129
129
  if (this.allowCustomRenderer && a) {
130
130
  const p = `${a}ArrayCellRenderer`;
131
131
  u = ` bodyRenderer: new ${p}(),`, f = "", this.renderCumstomCellRenderer(a, p);
132
132
  } else
133
133
  u = " bodyRenderer: new SimpleArrayCellRenderer(),";
134
134
  h = 250;
135
- } else n.type === de ? (u = " bodyRenderer: new NumberCellRenderer(),", f = "ge-table-text-align-right") : n.type === he && (u = " bodyRenderer: new TrueFalseCellRenderer(),", f = "ge-table-text-align-center", h = 80);
135
+ } else n.type === fe ? (u = " bodyRenderer: new NumberCellRenderer(),", f = "ge-table-text-align-right") : n.type === me && (u = " bodyRenderer: new TrueFalseCellRenderer(),", f = "ge-table-text-align-center", h = 80);
136
136
  e.push(` ColumnDef.create({
137
137
  property: "${l}",
138
138
  headerLabel: "${c}",
@@ -194,7 +194,7 @@ export class ${t} implements CellRendererIf {
194
194
  `);
195
195
  }
196
196
  }
197
- class xe {
197
+ class Re {
198
198
  /**
199
199
  *
200
200
  * Fixes an invalid json like this:
@@ -260,21 +260,21 @@ class xe {
260
260
  return s;
261
261
  }
262
262
  }
263
- class Ke {
263
+ class Ze {
264
264
  constructor() {
265
- this.property = "", this.value = "", this.path = "", this.propertyItem = new Ve("", [new Oe("")]);
265
+ this.property = "", this.value = "", this.path = "", this.propertyItem = new Be("", [new $e("")]);
266
266
  }
267
267
  toString() {
268
268
  var e;
269
269
  return `${this.path} -> : ${((e = this.propertyItem) == null ? void 0 : e.toString()) ?? ""}`;
270
270
  }
271
271
  }
272
- const Se = "Entity";
273
- function Xe(d) {
274
- let e = Je(qe(d));
275
- return e.includes(Se) || (e = e + Se), e;
272
+ const Ae = "Entity";
273
+ function Qe(d) {
274
+ let e = et(tt(d));
275
+ return e.includes(Ae) || (e = e + Ae), e;
276
276
  }
277
- function Je(d) {
277
+ function et(d) {
278
278
  if (!d || d.length === 0) return d;
279
279
  const e = ["Array", "Arr", "List", "s"];
280
280
  for (const t of e)
@@ -282,10 +282,10 @@ function Je(d) {
282
282
  return d.slice(0, -t.length);
283
283
  return d;
284
284
  }
285
- function qe(d) {
285
+ function tt(d) {
286
286
  return !d || d.length === 0 ? "" : d[0].toUpperCase() + d.slice(1);
287
287
  }
288
- class jt {
288
+ class Kt {
289
289
  constructor() {
290
290
  this.debugging = !1;
291
291
  }
@@ -372,7 +372,7 @@ class jt {
372
372
  json2PropertyType(e, t = "") {
373
373
  let s;
374
374
  if (typeof e == "string") {
375
- const o = new xe().fixJSON(e);
375
+ const o = new Re().fixJSON(e);
376
376
  s = this.json2Object(o);
377
377
  } else
378
378
  s = e;
@@ -488,7 +488,7 @@ class jt {
488
488
  json2ValueInfos(e, t = "") {
489
489
  let s;
490
490
  if (typeof e == "string") {
491
- const o = new xe().fixJSON(e);
491
+ const o = new Re().fixJSON(e);
492
492
  s = this.json2Object(o);
493
493
  } else
494
494
  s = e;
@@ -512,14 +512,14 @@ class jt {
512
512
  const r = s.get(i);
513
513
  if (r) {
514
514
  let n = !1;
515
- const l = r.propertyItem.types.filter((a) => !J.includes(a.type));
515
+ const l = r.propertyItem.types.filter((a) => !Q.includes(a.type));
516
516
  if (l.length === 1) {
517
517
  const a = l[0];
518
518
  if (a instanceof B) {
519
519
  n = !0;
520
520
  for (const c of o.propertyItem.types)
521
521
  a.items.push(c);
522
- } else a instanceof F && (n = !0, a.properties.push(o.propertyItem));
522
+ } else a instanceof L && (n = !0, a.properties.push(o.propertyItem));
523
523
  }
524
524
  if (!n)
525
525
  for (const a of o.propertyItem.types)
@@ -527,7 +527,7 @@ class jt {
527
527
  }
528
528
  }
529
529
  }
530
- return t || new Oe("");
530
+ return t || new $e("");
531
531
  }
532
532
  logValueInfos(e) {
533
533
  for (let t = 0; t < e.length; t++) {
@@ -557,7 +557,7 @@ class jt {
557
557
  const l = this.getFirstValueInfoByPath(e, n);
558
558
  if (Array.isArray(l == null ? void 0 : l.value)) {
559
559
  const a = (l == null ? void 0 : l.value.length) ?? 0, c = this.countPath(e, i.path);
560
- a > c && (i.propertyItem.types.some((h) => h.type === j) || i.propertyItem.types.push(new se(i.property)));
560
+ a > c && (i.propertyItem.types.some((h) => h.type === X) || i.propertyItem.types.push(new le(i.property)));
561
561
  }
562
562
  }
563
563
  }
@@ -578,9 +578,9 @@ class jt {
578
578
  }
579
579
  extractValueInfos(e, t) {
580
580
  const s = [], o = (i, r, n) => {
581
- const l = new Ke();
581
+ const l = new Ze();
582
582
  let a = r.split("/").pop() || "";
583
- if (a === "[]" ? a = n : a === "root" && (a = t), l.property = a, l.value = i, l.path = r, l.propertyItem = this.createPropertyItem(i, l.property), s.push(l), i && typeof i === U && !Array.isArray(i)) {
583
+ if (a === "[]" ? a = n : a === "root" && (a = t), l.property = a, l.value = i, l.path = r, l.propertyItem = this.createPropertyItem(i, l.property), s.push(l), i && typeof i === K && !Array.isArray(i)) {
584
584
  for (const c in i)
585
585
  if (i.hasOwnProperty(c)) {
586
586
  const h = r ? `${r}/${c}` : c;
@@ -594,15 +594,15 @@ class jt {
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 Ve(t, [
597
+ return new Be(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 === _e ? new je(t) : typeof e === de && !isNaN(e) ? new Ue(t) : typeof e === he ? new Ye(t) : Array.isArray(e) ? new B(t) : typeof e === U ? new F(t, Xe(t)) : new se(t);
602
+ return e === null ? new Xe(t) : e === void 0 ? new le(t) : typeof e === Ve ? new Ke(t) : typeof e === fe && !isNaN(e) ? new Je(t) : typeof e === me ? new qe(t) : Array.isArray(e) ? new B(t) : typeof e === K ? new L(t, Qe(t)) : new le(t);
603
603
  }
604
604
  }
605
- class Ut {
605
+ class Jt {
606
606
  constructor() {
607
607
  this.orOperator = "|", this.rootPropertyType = null, this.rootName = "Root", this.renderTypeScriptInterfacesFifo = [], this.renderTypeScriptInterfacesDone = [];
608
608
  }
@@ -622,11 +622,11 @@ class Ut {
622
622
  if (!e) return t;
623
623
  if (e instanceof B) {
624
624
  for (const o of e.items)
625
- if (this.renderTypeScriptInterfacesRecursive(o, t, s), o instanceof F) {
625
+ if (this.renderTypeScriptInterfacesRecursive(o, t, s), o instanceof L) {
626
626
  const i = o;
627
627
  i !== this.rootPropertyType && this.renderTypeScriptInterfacesFifo.push(i);
628
628
  }
629
- } else if (e instanceof F) {
629
+ } else if (e instanceof L) {
630
630
  const o = e, i = o.className;
631
631
  if (!this.renderTypeScriptInterfacesDone.includes(i)) {
632
632
  this.renderTypeScriptInterfacesDone.push(i), t.push(`export interface ${i} {`);
@@ -636,11 +636,11 @@ class Ut {
636
636
  const l = this.containsUndefinedPropertyType(r) ? "?" : "";
637
637
  t.push(" " + r.propertyName + l + ": " + n + ";");
638
638
  for (const a of r.types)
639
- if (a instanceof F)
639
+ if (a instanceof L)
640
640
  a !== this.rootPropertyType && this.renderTypeScriptInterfacesFifo.push(a);
641
641
  else if (a instanceof B)
642
642
  for (const c of a.items)
643
- c instanceof F && this.renderTypeScriptInterfacesFifo.push(c);
643
+ c instanceof L && this.renderTypeScriptInterfacesFifo.push(c);
644
644
  }
645
645
  t.push("}"), t.push("");
646
646
  }
@@ -651,7 +651,7 @@ class Ut {
651
651
  var s, o;
652
652
  if (((s = e.types) == null ? void 0 : s.length) === 0) return "any";
653
653
  if (((o = e.types) == null ? void 0 : o.length) === 1) return this.renderType(e.types[0], e);
654
- const t = e.types.map((i) => this.renderType(i, e)).filter((i) => i !== j).sort((i, r) => J.includes(i) ? 100 : J.includes(r) ? -100 : i.localeCompare(r)).join(this.orOperator);
654
+ const t = e.types.map((i) => this.renderType(i, e)).filter((i) => i !== X).sort((i, r) => Q.includes(i) ? 100 : Q.includes(r) ? -100 : i.localeCompare(r)).join(this.orOperator);
655
655
  return t.includes(this.orOperator) ? "(" + t + ")" : t;
656
656
  }
657
657
  renderType(e, t) {
@@ -659,22 +659,22 @@ class Ut {
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
  }
662
- return e instanceof F ? e.className : e.type;
662
+ return e instanceof L ? e.className : e.type;
663
663
  }
664
664
  containsUndefinedPropertyType(e) {
665
665
  for (const t of e.types)
666
- if (t.type === j) return !0;
666
+ if (t.type === X) return !0;
667
667
  return !1;
668
668
  }
669
669
  }
670
- class W {
670
+ class G {
671
671
  // The constructor is private to prevent direct construction calls
672
672
  // with the `new` operator
673
673
  constructor() {
674
674
  this.alreadySet = !1;
675
675
  }
676
676
  static getInstance() {
677
- return W.instance || (W.instance = new W()), W.instance;
677
+ return G.instance || (G.instance = new G()), G.instance;
678
678
  }
679
679
  /**
680
680
  * Method to set the license key for the application.
@@ -692,21 +692,21 @@ class W {
692
692
  }
693
693
  }
694
694
  }
695
- function G(d) {
695
+ function j(d) {
696
696
  return d && d.type === "TreeRow";
697
697
  }
698
- function re(d) {
698
+ function de(d) {
699
699
  return d && d.type === "AreaModelTree";
700
700
  }
701
- function Ze(d) {
701
+ function st(d) {
702
702
  return d && d.type === "CheckboxColumnDef";
703
703
  }
704
- class ue {
704
+ class be {
705
705
  constructor(e = -1, t = -1, s = -1, o = -1, i, r, n, l = 0, a = 0, c = 0, h = "") {
706
706
  this.rowIndex = e, this.rowTop = t, this.columnIndex = s, this.columnLeft = o, this.areaIdent = i, this.sideIdent = r, this.originalEvent = n, this.clickCount = l, this.draggingX = a, this.draggingY = c, this.action = h;
707
707
  }
708
708
  clone() {
709
- return new ue(
709
+ return new be(
710
710
  this.rowIndex,
711
711
  this.rowTop,
712
712
  this.columnIndex,
@@ -721,25 +721,25 @@ class ue {
721
721
  );
722
722
  }
723
723
  }
724
- class O {
724
+ class V {
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 We {
730
+ constructor(e = new V(
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 V(
735
735
  ">",
736
736
  "",
737
737
  ["ge-table-tree-arrow-collapsed"]
738
- ), s = new O(
738
+ ), s = new V(
739
739
  ">",
740
740
  "color:transparent;",
741
741
  ["gt-table-tree-arrow-hidden"]
742
- ), o = new O(
742
+ ), o = new V(
743
743
  "↕",
744
744
  "",
745
745
  ["gt-table-tree-arrow-expanded-all"]
@@ -747,12 +747,12 @@ class $e {
747
747
  this.arrowExpanded = e, this.arrowCollapsed = t, this.arrowPlaceholder = s, this.arrowExpandCollapseAll = o;
748
748
  }
749
749
  }
750
- class Be {
751
- constructor(e = new O("↑", "", ["ge-header-sorted-asc"]), t = new O("↓", "", ["ge-header-sorted-desc"]), s = new O("↑", "color:transparent;", [])) {
750
+ class Ne {
751
+ constructor(e = new V("↑", "", ["ge-header-sorted-asc"]), t = new V("↓", "", ["ge-header-sorted-desc"]), s = new V("↑", "color:transparent;", [])) {
752
752
  this.iconAsc = e, this.iconDesc = t, this.iconPlaceholder = s;
753
753
  }
754
754
  }
755
- class Qe {
755
+ class ot {
756
756
  constructor(e) {
757
757
  this.domService = e;
758
758
  }
@@ -842,8 +842,8 @@ class Qe {
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
843
  const g = ((s == null ? void 0 : s.index) ?? 0) % 2 === 0 ? "even" : "odd";
844
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) {
845
- const b = a !== "none" && i === 0;
846
- this.addLabelDiv(m, l, b, o, i, r);
845
+ const y = a !== "none" && i === 0;
846
+ this.addLabelDiv(m, l, y, o, i, r);
847
847
  }
848
848
  return u && this.addSortedIcon(m, u, c == null ? void 0 : c.sortedOptions, i), this.domService.appendChild(t, m), m;
849
849
  }
@@ -872,7 +872,7 @@ class Qe {
872
872
  }
873
873
  return this.domService.appendChild(e, n), n;
874
874
  }
875
- addSortedIcon(e, t = "", s = new Be(), o = -1) {
875
+ addSortedIcon(e, t = "", s = new Ne(), o = -1) {
876
876
  const i = this.domService.createElement("div");
877
877
  this.domService.addClass(i, "ge-table-sorted-icon-div"), this.domService.setStyle(i, "position", "absolute"), this.domService.setStyle(i, "top", "0"), this.domService.setStyle(i, "right", "0"), this.domService.setStyle(i, "width", "20px"), this.domService.setStyle(i, "background", "transparent"), this.domService.setStyle(i, "cursor", "pointer"), this.domService.setAttribute(i, "data-col-index", `${o}`), this.domService.setAttribute(i, "data-area", "header");
878
878
  let r;
@@ -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 We(), 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;
@@ -934,23 +934,25 @@ class Qe {
934
934
  return s ? (s.innerText = "", s) : (s = this.domService.createElement("div"), t.cache[e] = s, s);
935
935
  }
936
936
  }
937
- const ee = (d) => d === "header" ? "header" : d === "footer" ? "footer" : "body";
938
- class et {
937
+ const ne = (d) => d === "header" ? "header" : d === "footer" ? "footer" : "body";
938
+ class it {
939
939
  constructor(e, t) {
940
940
  if (this.rowIdx = -1, this.colIdx = -1, this.action = null, this.inputType = null, this.className = "", e !== null && (e instanceof HTMLDivElement || e instanceof HTMLSpanElement || e instanceof HTMLInputElement)) {
941
941
  this.className = e.className, this.action = e.getAttribute("data-ge-action"), this.inputType = e.getAttribute("data-input-type"), this.rowIdx = Number(e.getAttribute("data-row-index")), this.colIdx = Number(e.getAttribute("data-col-index"));
942
942
  const s = e.getAttribute("data-area");
943
- if (s && (this.areaIdent = ee(s), this.areaModel = t.tableModel.getAreaModel(this.areaIdent), this.row = this.areaModel.getRowByIndex(this.rowIdx)), e instanceof HTMLInputElement) {
943
+ if (s && (this.areaIdent = ne(s), this.areaModel = t.tableModel.getAreaModel(this.areaIdent), this.row = this.areaModel.getRowByIndex(this.rowIdx)), e instanceof HTMLInputElement) {
944
944
  const o = e;
945
945
  this.value = o.value;
946
946
  }
947
947
  }
948
948
  }
949
949
  }
950
- class tt {
950
+ class rt {
951
951
  constructor(e) {
952
- this.tableScope = e, this.doubleClickDelay = 500, this.expandedAll = !0, this.mouseDown = !1, this.dragging = !1, this.lastClicked = 0, this.tableScope.hostElement.addEventListener("click", this.onHostElementClicked.bind(this)), this.tableScope.hostElement.addEventListener("dblclick", this.onHostElementDblClicked.bind(this)), this.tableScope.hostElement.addEventListener("mousedown", this.onMouseDown.bind(this)), this.tableScope.hostElement.addEventListener("mousemove", this.onMouseMove.bind(this)), this.tableScope.hostElement.addEventListener("mouseup", this.onMouseUp.bind(this)), this.tableScope.hostElement.addEventListener("contextmenu", this.onContextmenu.bind(this)), this.tableScope.hostElement._MouseHandler = "true", this.tableScope.scrollViewport.addEventListener("scroll", this.tableScope.adjustAfterScrolling.bind(this.tableScope)), [window, this.tableScope.hostElement].forEach(
953
- (t) => t.addEventListener("resize", this.tableScope.adjustContainersAndRows.bind(this.tableScope))
952
+ this.tableScope = e, this.doubleClickDelay = 500, this.expandedAll = !0, this.mouseDown = !1, this.dragging = !1, this.lastClicked = 0;
953
+ const t = this.tableScope.listenerAbortController.signal;
954
+ this.tableScope.hostElement.addEventListener("click", this.onHostElementClicked.bind(this), { signal: t }), this.tableScope.hostElement.addEventListener("dblclick", this.onHostElementDblClicked.bind(this), { signal: t }), this.tableScope.hostElement.addEventListener("mousedown", this.onMouseDown.bind(this), { signal: t }), this.tableScope.hostElement.addEventListener("mousemove", this.onMouseMove.bind(this), { signal: t }), this.tableScope.hostElement.addEventListener("mouseup", this.onMouseUp.bind(this), { signal: t }), this.tableScope.hostElement.addEventListener("contextmenu", this.onContextmenu.bind(this), { signal: t }), this.tableScope.hostElement._MouseHandler = "true", this.tableScope.scrollViewport.addEventListener("scroll", this.tableScope.adjustAfterScrolling.bind(this.tableScope), { signal: t }), this.tableScope.scrollViewport.addEventListener("wheel", this.tableScope.onWheel.bind(this.tableScope), { passive: !1, signal: t }), [window, this.tableScope.hostElement].forEach(
955
+ (s) => s.addEventListener("resize", this.tableScope.adjustContainersAndRows.bind(this.tableScope), { signal: t })
954
956
  );
955
957
  }
956
958
  /**
@@ -979,14 +981,14 @@ class tt {
979
981
  return;
980
982
  }
981
983
  this.lastClicked = t;
982
- const s = new et(e.target, this.tableScope);
984
+ const s = new it(e.target, this.tableScope);
983
985
  if (s.action === "toggleExpandCollapseAll")
984
986
  this.expandedAll = !this.expandedAll, this.tableScope.toggleExpandCollapseAll(this.expandedAll), e.preventDefault(), e.stopPropagation();
985
987
  else if (s.action === "toggleHeaderGroup")
986
988
  this.tableScope.toggleHeaderGroup(s), e.preventDefault(), e.stopPropagation();
987
989
  else if (s.inputType === "checkbox" && s.areaIdent)
988
990
  this.tableScope.toggleRowCheckbox(s.rowIdx, s.colIdx, s.areaIdent), e.preventDefault(), e.stopPropagation();
989
- else if (G(s.row) && s.areaModel) {
991
+ else if (j(s.row) && s.areaModel) {
990
992
  const o = s.colIdx === this.getArrowColumnIndex() && e.altKey, i = s.className.includes("ge-table-tree-arrow-div");
991
993
  if (o || i) {
992
994
  e.preventDefault(), e.stopPropagation();
@@ -1008,12 +1010,12 @@ class tt {
1008
1010
  */
1009
1011
  onHostElementDblClicked(e) {
1010
1012
  if (this.lastClicked = Date.now(), e.target instanceof HTMLElement) {
1011
- const t = e.target, s = t.getAttribute("data-area"), o = ee(s), i = Number(t.getAttribute("data-row-index")), r = Number(t.getAttribute("data-col-index")), n = this.tableScope.tableModel.getAreaModel(o);
1013
+ const t = e.target, s = t.getAttribute("data-area"), o = ne(s), i = Number(t.getAttribute("data-row-index")), r = Number(t.getAttribute("data-col-index")), n = this.tableScope.tableModel.getAreaModel(o);
1012
1014
  if (s && o === "header")
1013
1015
  this.tableScope.tableModel.isSortable(r) && (this.tableScope.clearSelection(), this.tableScope.onHeaderDblClicked(e, i, r));
1014
1016
  else if (t.getAttribute("data-row-index")) {
1015
1017
  const l = n.getRowByIndex(i);
1016
- if (s && o === "body" && n.isEditable(i, r) && (this.tableScope.clearSelection(), this.tableScope.initRenderEditor(i, r)), G(l) && r === this.getArrowColumnIndex()) {
1018
+ if (s && o === "body" && n.isEditable(i, r) && (this.tableScope.clearSelection(), this.tableScope.initRenderEditor(i, r)), j(l) && r === this.getArrowColumnIndex()) {
1017
1019
  e.preventDefault(), e.stopPropagation();
1018
1020
  const a = l;
1019
1021
  a.expanded = !a.expanded, "recalcVisibleTreeRows" in n && n.recalcVisibleTreeRows(), this.tableScope.tableModel.recalcSize(this.tableScope.hostElement.clientWidth), this.tableScope.adjustContainersAndRows(), this.updateCollapsedExpandedState(a);
@@ -1081,7 +1083,7 @@ class tt {
1081
1083
  }
1082
1084
  }
1083
1085
  }
1084
- class pe {
1086
+ class ye {
1085
1087
  constructor(e, t = [], s = -1) {
1086
1088
  this.areaIdent = e, this.columnDefs = t, this.defaultRowHeight = s, this.rowSelectionModel = void 0, this.yPositions = [], this.cellRenderers = t.map((o) => o.rendererMap[e]);
1087
1089
  }
@@ -1179,7 +1181,7 @@ class pe {
1179
1181
  this.yPositions[t + 1] = this.getRowHeight(t) + this.yPositions[t];
1180
1182
  }
1181
1183
  }
1182
- class ge {
1184
+ class we {
1183
1185
  genericSortComparator(e, t, s) {
1184
1186
  if (typeof e == "number" && typeof t == "number")
1185
1187
  return s * (e - t);
@@ -1197,7 +1199,7 @@ class ge {
1197
1199
  return s * ("" + e).localeCompare("" + t);
1198
1200
  }
1199
1201
  }
1200
- class _ extends pe {
1202
+ class _ extends ye {
1201
1203
  /**
1202
1204
  * Creates an instance of AreaModelObjectArray.
1203
1205
  *
@@ -1228,7 +1230,7 @@ class _ extends pe {
1228
1230
  * );
1229
1231
  */
1230
1232
  constructor(e, t, s, o = [], i = "ge-selected-row", r = "ge-focused-row") {
1231
- 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 ge(), this._focusedRowIndex = 0, this.filteredRows = [...t], this.properties = o.map((n) => n.property);
1233
+ 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 we(), this._focusedRowIndex = 0, this.filteredRows = [...t], this.properties = o.map((n) => n.property);
1232
1234
  }
1233
1235
  /**
1234
1236
  * Gets the index of the currently focused row.
@@ -1323,7 +1325,7 @@ class _ extends pe {
1323
1325
  getValueAt(e, t) {
1324
1326
  const s = this.properties[t];
1325
1327
  let o = this.filteredRows[e];
1326
- return G(o) && (o = o.data), o ? this.getValueByT(o, s) : "";
1328
+ return j(o) && (o = o.data), o ? this.getValueByT(o, s) : "";
1327
1329
  }
1328
1330
  /**
1329
1331
  * Retrieves the filtered and sorted rows from the dataset.
@@ -1430,6 +1432,15 @@ class _ extends pe {
1430
1432
  getRowHeight(e) {
1431
1433
  return this.defaultRowHeight;
1432
1434
  }
1435
+ /**
1436
+ * All rows share `defaultRowHeight` – unless a subclass overrides `getRowHeight()`, then row heights may
1437
+ * vary and `undefined` is returned.
1438
+ *
1439
+ * @returns {number | undefined} The constant row height or `undefined`.
1440
+ */
1441
+ getConstantRowHeight() {
1442
+ return this.getRowHeight === _.prototype.getRowHeight && this.defaultRowHeight > 0 ? this.defaultRowHeight : void 0;
1443
+ }
1433
1444
  /**
1434
1445
  * Returns the row object at the specified index from the filtered rows array.
1435
1446
  * This method overrides the parent class implementation.
@@ -1631,7 +1642,7 @@ class _ extends pe {
1631
1642
  return o && t.length ? this.getPropertyValue(o, t) : o;
1632
1643
  }
1633
1644
  }
1634
- class st {
1645
+ class nt {
1635
1646
  constructor(e) {
1636
1647
  this.tableScope = e;
1637
1648
  }
@@ -2021,6 +2032,22 @@ class st {
2021
2032
  repaint() {
2022
2033
  this.tableScope.repaint();
2023
2034
  }
2035
+ /**
2036
+ * Releases the table: removes all DOM listeners (incl. the window resize listener), stops the
2037
+ * resize observer, calls the cleanup functions of all cell renderers and clears the host element.
2038
+ * The framework wrappers call it automatically when they are unmounted or receive a new table model.
2039
+ *
2040
+ * @example
2041
+ * // Plain TS: replace the table with a new model
2042
+ * tableApi.destroy();
2043
+ * const scope = new TableScope(hostDiv, newModel, new SimpleDomService(), new TableOptions(), new EventAdapter());
2044
+ * scope.firstInit();
2045
+ *
2046
+ * @returns {void}
2047
+ */
2048
+ destroy() {
2049
+ this.tableScope.destroy();
2050
+ }
2024
2051
  /**
2025
2052
  * Performs a complete repaint of the table by triggering a hard repaint on the underlying table scope.
2026
2053
  *
@@ -2979,7 +3006,7 @@ class st {
2979
3006
  return this.tableScope.loggingActive;
2980
3007
  }
2981
3008
  }
2982
- class fe {
3009
+ class xe {
2983
3010
  constructor(e) {
2984
3011
  this.getStorageKeyFn = e;
2985
3012
  }
@@ -3046,7 +3073,7 @@ class fe {
3046
3073
  // }
3047
3074
  // }
3048
3075
  }
3049
- class ot extends fe {
3076
+ class lt extends xe {
3050
3077
  constructor(e) {
3051
3078
  super(e), this.SCROLL_STATE = "scrollState", this.scrollOffset = [0, 0], this.load();
3052
3079
  }
@@ -3068,14 +3095,14 @@ class ot extends fe {
3068
3095
  }
3069
3096
  }
3070
3097
  }
3071
- class it {
3098
+ class at {
3072
3099
  constructor(e = "collapsed", t = [], s = !1, o = !1) {
3073
3100
  this.mode = e, this.rowIds = t, this.allCollapsed = s, this.allExpanded = o;
3074
3101
  }
3075
3102
  }
3076
- class rt extends fe {
3103
+ class ct extends xe {
3077
3104
  constructor(e) {
3078
- super(e), this.COLLAPSED_EXPANDED_STATE = "collapsedExpandedState", this.collapsedExpandedState = new it(), this.load();
3105
+ super(e), this.COLLAPSED_EXPANDED_STATE = "collapsedExpandedState", this.collapsedExpandedState = new at(), this.load();
3079
3106
  }
3080
3107
  collapsedExpandedStateGet() {
3081
3108
  return this.collapsedExpandedState;
@@ -3107,7 +3134,7 @@ class rt extends fe {
3107
3134
  this.checkAndPersistItem(this.COLLAPSED_EXPANDED_STATE, this.collapsedExpandedState);
3108
3135
  }
3109
3136
  }
3110
- class nt extends fe {
3137
+ class dt extends xe {
3111
3138
  constructor(e) {
3112
3139
  super(e), this.SORTING_STATE = "sortingState", this.sortItems = [], this.load();
3113
3140
  }
@@ -3128,14 +3155,14 @@ class nt extends fe {
3128
3155
  }
3129
3156
  }
3130
3157
  }
3131
- class L {
3158
+ class O {
3132
3159
  constructor(e = 0, t = 0, s = 0, o = 0, i) {
3133
3160
  this.left = e, this.width = t, this.height = s, this.top = o, this.index = i;
3134
3161
  }
3135
3162
  }
3136
- class lt {
3163
+ const oe = class oe {
3137
3164
  constructor(e, t, s, o) {
3138
- this.hostElement = e, this.tableModel = t, this.dom = s, this.tableOptions = o, this.scrollTop = 0, this.areaBodyWestGeo = new L(), this.areaBodyCenterGeo = new L(), this.areaBodyEastGeo = new L();
3165
+ this.hostElement = e, this.tableModel = t, this.dom = s, this.tableOptions = o, this.scrollTop = 0, this.areaBodyWestGeo = new O(), this.areaBodyCenterGeo = new O(), this.areaBodyEastGeo = new O();
3139
3166
  const i = this.hostElement;
3140
3167
  i.innerText = "", this.dom.setAttribute(i, "tabindex", "0"), this.dom.setStyle(
3141
3168
  this.dom.addClass("ge-table", i),
@@ -3300,11 +3327,13 @@ class lt {
3300
3327
  * @returns {void} Returns nothing.
3301
3328
  */
3302
3329
  resetSizeOfWrapperDiv() {
3303
- const e = `${this.tableModel.getContentWidthInPixel()}px`, t = `${this.tableModel.getContentHeightInPixel() + 1}px`;
3304
- this.dom.setStyle(this.contentWrapperDiv, "width", e), this.dom.setStyle(this.contentWrapperDiv, "height", t);
3330
+ const e = `${this.tableModel.getContentWidthInPixel()}px`, t = this.tableModel.getContentHeightInPixel() + 1, s = `${Math.min(t, oe.maxScrollHeightInPx)}px`;
3331
+ this.dom.setStyle(this.contentWrapperDiv, "width", e), this.dom.setStyle(this.contentWrapperDiv, "height", s);
3305
3332
  }
3306
- }
3307
- class A {
3333
+ };
3334
+ oe.maxScrollHeightInPx = 8e6;
3335
+ let ee = oe;
3336
+ class M {
3308
3337
  /**
3309
3338
  * Represents a constructor for a class.
3310
3339
  * @constructor
@@ -3318,7 +3347,7 @@ class A {
3318
3347
  this.r1 = e, this.c1 = t, this.r2 = s, this.c2 = o, this.gammaRange = i;
3319
3348
  }
3320
3349
  static create(e) {
3321
- return e.gammaRange === void 0 && (e.gammaRange = !1), new A(
3350
+ return e.gammaRange === void 0 && (e.gammaRange = !1), new M(
3322
3351
  e.rowIndex1,
3323
3352
  e.columnIndex1,
3324
3353
  e.rowIndex2,
@@ -3327,19 +3356,19 @@ class A {
3327
3356
  );
3328
3357
  }
3329
3358
  static singleCell(e, t) {
3330
- return new A(e, t, e, t);
3359
+ return new M(e, t, e, t);
3331
3360
  }
3332
3361
  static singleRow(e) {
3333
- return new A(e, 0, e, Number.MAX_SAFE_INTEGER);
3362
+ return new M(e, 0, e, Number.MAX_SAFE_INTEGER);
3334
3363
  }
3335
3364
  static singleColumn(e) {
3336
- return new A(0, e, Number.MAX_SAFE_INTEGER, e);
3365
+ return new M(0, e, Number.MAX_SAFE_INTEGER, e);
3337
3366
  }
3338
3367
  isInRange(e, t) {
3339
3368
  return e >= this.r1 && e <= this.r2 && t >= this.c1 && t <= this.c2;
3340
3369
  }
3341
3370
  }
3342
- class at {
3371
+ class ht {
3343
3372
  constructor(e, t) {
3344
3373
  this.tableModel = e, this.areaModel = t, this.colAndRowspanRanges = void 0;
3345
3374
  }
@@ -3355,7 +3384,7 @@ class at {
3355
3384
  i === 0 && (i = 1), r === 0 && (r = 1);
3356
3385
  const n = "gammaCells" in this.areaModel;
3357
3386
  this.colAndRowspanRanges.push(
3358
- new A(s, o, s + r - 1, o + i - 1, n)
3387
+ new M(s, o, s + r - 1, o + i - 1, n)
3359
3388
  );
3360
3389
  }
3361
3390
  }
@@ -3377,17 +3406,17 @@ class T {
3377
3406
  this.header = e, this.body = t, this.footer = s;
3378
3407
  }
3379
3408
  }
3380
- class ct extends lt {
3409
+ class ut extends ee {
3381
3410
  constructor(e, t, s, o) {
3382
3411
  var r, n;
3383
3412
  super(e, t, s, o), this.firstVisibleRowIndex = -1, this.lastVisibleRowIndex = -1, this.firstFullVisibleRowIndex = -1, this.lastFullVisibleRowIndex = -1, this.displayedRowCount = 0, this.pixelLimitForFullVisible = 5, this.loggingActive = !1, this.dragging = !1, this.editing = !1, this.storedColumnWidths = [], this.scrollLeft = 0, this.scrollViewportLeft = 0, this.scrollFactorY = 0, this.scrollFactorX = 0, this.cleanupFunctions = {
3384
3413
  header: [],
3385
3414
  body: [],
3386
3415
  footer: []
3387
- }, this.tree = !1, this.colAndRowspanModels = new T(), this.draggingTargetColumnIndex = -1, this.removables = [], this.tableModel.getSelectionModel ? this.getSelectionModel = this.tableModel.getSelectionModel : (r = this.tableOptions) != null && r.getSelectionModel && (this.getSelectionModel = this.tableOptions.getSelectionModel), (n = this.tableOptions) != null && n.getFocusModel && (this.getFocusModel = this.tableOptions.getFocusModel), re(t.getAreaModel("body")) && (this.tree = !0), ["header", "body", "footer"].forEach(
3416
+ }, this.tree = !1, this.colAndRowspanModels = new T(), this.draggingTargetColumnIndex = -1, this.contentScrollTop = 0, this.removables = [], this.tableModel.getSelectionModel ? this.getSelectionModel = this.tableModel.getSelectionModel : (r = this.tableOptions) != null && r.getSelectionModel && (this.getSelectionModel = this.tableOptions.getSelectionModel), (n = this.tableOptions) != null && n.getFocusModel && (this.getFocusModel = this.tableOptions.getFocusModel), de(t.getAreaModel("body")) && (this.tree = !0), ["header", "body", "footer"].forEach(
3388
3417
  (l) => {
3389
3418
  var a;
3390
- this.colAndRowspanModels[l] = new at(t, t.getAreaModel(l)), (a = this.colAndRowspanModels[l]) == null || a.init();
3419
+ this.colAndRowspanModels[l] = new ht(t, t.getAreaModel(l)), (a = this.colAndRowspanModels[l]) == null || a.init();
3391
3420
  }
3392
3421
  );
3393
3422
  }
@@ -3469,23 +3498,39 @@ class ct extends lt {
3469
3498
  * to the table's appearance and behavior after a scroll event occurs.
3470
3499
  */
3471
3500
  adjustAfterScrolling() {
3472
- var e;
3473
- for (const t of this.removables)
3474
- t.remove();
3475
- this.hideHoverRow(), this.hideHoverColumn(), this.scrollTop = this.scrollViewport.scrollTop, this.scrollLeft = this.scrollViewport.scrollLeft, this.debounce(this.checkForScrollPosSaving.bind(this)), this.scrollFactorY = this.scrollTop / (this.scrollViewport.scrollHeight - this.scrollViewport.clientHeight), this.scrollFactorX = this.scrollLeft / (this.scrollViewport.scrollWidth - this.scrollViewport.clientWidth), isNaN(this.scrollFactorY) && (this.scrollFactorY = 0), isNaN(this.scrollFactorX) && (this.scrollFactorX = 0), this.adjustBody(), this.adjustArea("footer"), this.adjustArea("header"), this.tableOptions.tableTopBorderVisible && this.removables.push(this.dom.addHorizontalBorder(
3476
- new L(0, this.hostElement.clientWidth, 1, 0),
3501
+ var i;
3502
+ for (const r of this.removables)
3503
+ r.remove();
3504
+ if (this.hideHoverRow(), this.hideHoverColumn(), this.scrollTop = this.scrollViewport.scrollTop, this.scrollLeft = this.scrollViewport.scrollLeft, this.scrollViewportLeft = this.scrollLeft, this.debounce(this.checkForScrollPosSaving.bind(this)), this.scrollFactorY = this.scrollTop / (this.scrollViewport.scrollHeight - this.scrollViewport.clientHeight), this.scrollFactorX = this.scrollLeft / (this.scrollViewport.scrollWidth - this.scrollViewport.clientWidth), isNaN(this.scrollFactorY) && (this.scrollFactorY = 0), this.pendingContentScroll) {
3505
+ const r = this.getContentScrollRangeY();
3506
+ Math.abs(this.scrollTop - this.pendingContentScroll.scrollTop) <= 1 && r > 0 ? this.scrollFactorY = Math.min(1, Math.max(0, this.pendingContentScroll.contentTop / r)) : this.pendingContentScroll = void 0;
3507
+ }
3508
+ isNaN(this.scrollFactorX) && (this.scrollFactorX = 0);
3509
+ const e = this.hostElement.clientWidth, t = this.hostElement.clientHeight, s = this.areaBodyWest.child.clientWidth, o = this.areaHeaderCenter.child.clientHeight;
3510
+ this.areaHeightsOfRenderPass = {
3511
+ body: this.areaBodyCenter.child.clientHeight,
3512
+ footer: this.areaFooterCenter.child.clientHeight,
3513
+ header: o
3514
+ };
3515
+ try {
3516
+ this.adjustBody(), this.adjustArea("footer"), this.adjustArea("header");
3517
+ } finally {
3518
+ this.areaHeightsOfRenderPass = void 0;
3519
+ }
3520
+ this.tableOptions.tableTopBorderVisible && this.removables.push(this.dom.addHorizontalBorder(
3521
+ new O(0, e, 1, 0),
3477
3522
  this.hostElement,
3478
3523
  "ge-table-border"
3479
3524
  )), this.tableOptions.tableBottomBorderVisible && this.removables.push(this.dom.addHorizontalBorder(
3480
- new L(0, this.hostElement.clientWidth, 1, this.hostElement.clientHeight - 1),
3525
+ new O(0, e, 1, t - 1),
3481
3526
  this.hostElement,
3482
3527
  "ge-table-border"
3483
3528
  )), this.tableModel.getFixedLeftColumnCount() > 0 && this.removables.push(this.dom.addVerticalBorder(
3484
- new L(this.areaBodyWest.child.clientWidth, 1, this.hostElement.clientHeight, 0),
3529
+ new O(s, 1, t, 0),
3485
3530
  this.hostElement,
3486
3531
  "ge-table-body-west-vertical-border"
3487
- )), ((e = this.tableModel.getAreaModel("header")) == null ? void 0 : e.getRowCount()) > 0 && this.removables.push(this.dom.addHorizontalBorder(
3488
- new L(0, this.hostElement.clientWidth, 1, this.areaHeaderCenter.child.clientHeight),
3532
+ )), ((i = this.tableModel.getAreaModel("header")) == null ? void 0 : i.getRowCount()) > 0 && this.removables.push(this.dom.addHorizontalBorder(
3533
+ new O(0, e, 1, o),
3489
3534
  this.hostElement,
3490
3535
  "ge-table-body-west-vertical-border"
3491
3536
  ));
@@ -3608,9 +3653,53 @@ class ct extends lt {
3608
3653
  * @protected
3609
3654
  * @return {void}
3610
3655
  */
3656
+ /**
3657
+ * Rounds a pixel offset to whole device pixels. The scroll offsets are derived from a scroll factor and are
3658
+ * fractional; rows and cells placed at fractional positions render blurry text and 1px borders.
3659
+ *
3660
+ * @param {number} px - offset in CSS pixels
3661
+ * @returns {number} offset snapped to the device pixel grid
3662
+ * @protected
3663
+ */
3664
+ snapToDevicePixel(e) {
3665
+ const t = typeof window < "u" && window.devicePixelRatio || 1;
3666
+ return Math.round(e * t) / t;
3667
+ }
3668
+ /**
3669
+ * True if the table content is taller than {@link EleScope.maxScrollHeightInPx}; then the scroll bar is
3670
+ * scaled and scrollTop is no longer a content pixel position.
3671
+ */
3672
+ isScrollHeightCapped() {
3673
+ return this.tableModel.getContentHeightInPixel() + 1 > ee.maxScrollHeightInPx;
3674
+ }
3675
+ /** Scrollable range of the content in content pixels (content height minus visible body height). */
3676
+ getContentScrollRangeY() {
3677
+ return this.tableModel.getContentHeightInPixel() - this.areaBodyCenterGeo.height;
3678
+ }
3679
+ /** Scrollable range of the scroll viewport in scroll bar pixels. */
3680
+ getScrollerRangeY() {
3681
+ return this.scrollViewport.scrollHeight - this.scrollViewport.clientHeight;
3682
+ }
3683
+ /**
3684
+ * Mouse wheel on a capped scroll height: scale the wheel delta, so one wheel step still moves the content
3685
+ * by the usual amount of pixels (otherwise it would jump many rows). No-op for normal tables.
3686
+ *
3687
+ * @param {WheelEvent} evt - the wheel event of the scroll viewport
3688
+ */
3689
+ onWheel(e) {
3690
+ if (e.ctrlKey || !this.isScrollHeightCapped())
3691
+ return;
3692
+ const t = this.getContentScrollRangeY(), s = this.getScrollerRangeY();
3693
+ if (t <= 0 || s <= 0)
3694
+ return;
3695
+ const o = s / t, i = e.deltaMode === 1 ? 16 : e.deltaMode === 2 ? this.scrollViewport.clientHeight : 1;
3696
+ e.preventDefault(), e.deltaY && (this.scrollViewport.scrollTop += e.deltaY * i * o), e.deltaX && (this.scrollViewport.scrollLeft += e.deltaX * i);
3697
+ }
3611
3698
  adjustBody() {
3612
- const e = this.areaBodyCenterGeo.height - this.tableModel.getContentHeightInPixel(), t = this.scrollFactorY * e;
3613
- this.dom.setStyle(this.contentDiv, "top", `${this.scrollTop}px`), this.dom.setStyle(this.contentDiv, "left", `${this.scrollViewport.scrollLeft}px`), this.adjustArea("body", t);
3699
+ const e = this.areaBodyCenterGeo.height - this.tableModel.getContentHeightInPixel(), t = this.snapToDevicePixel(this.scrollFactorY * e);
3700
+ this.contentScrollTop = -t, this.dom.setStyle(this.contentDiv, "top", `${this.scrollTop}px`);
3701
+ const s = this.areaHeightsOfRenderPass ? this.scrollLeft : this.scrollViewport.scrollLeft;
3702
+ this.dom.setStyle(this.contentDiv, "left", `${s}px`), this.adjustArea("body", t);
3614
3703
  }
3615
3704
  /**
3616
3705
  * Returns a number value extracted from the specified attribute of the source element.
@@ -3653,93 +3742,100 @@ class ct extends lt {
3653
3742
  * @protected
3654
3743
  */
3655
3744
  adjustArea(e, t = 0) {
3656
- var g;
3657
- const s = this.getArea(e, "west"), o = this.getArea(e, "center"), i = this.getArea(e, "east"), r = o.child.clientHeight;
3745
+ var x, A, k;
3746
+ const s = this.getArea(e, "west"), o = this.getArea(e, "center"), i = this.getArea(e, "east"), r = ((x = this.areaHeightsOfRenderPass) == null ? void 0 : x[e]) ?? o.child.clientHeight;
3658
3747
  s.child.innerText = "", o.child.innerText = "", i.child.innerText = "";
3659
3748
  const n = 0, l = this.areaBodyCenterGeo.width, a = this.tableModel.getPadding(), c = this.tableModel.getAreaModel(e), h = c.getRowCount();
3660
3749
  for (; this.cleanupFunctions[e].length; ) {
3661
- const b = this.cleanupFunctions[e].shift();
3662
- b && b();
3750
+ const w = this.cleanupFunctions[e].shift();
3751
+ w && w();
3663
3752
  }
3664
3753
  let u = t;
3665
3754
  const f = this.tableModel.getColumnCount(), p = this.tableModel.getFixedRightColumnCount(), m = this.tableModel.getFixedLeftColumnCount();
3666
3755
  e === "body" && (this.firstVisibleRowIndex = -1, this.firstFullVisibleRowIndex = -1, this.lastVisibleRowIndex = -1, this.lastFullVisibleRowIndex = -1);
3667
- for (let b = 0; b < h; b++) {
3668
- const w = u, S = b === h - 1, R = this.tableModel.getRowHeight(e, b);
3669
- if (w + R > 0) {
3670
- e === "body" && this.firstVisibleRowIndex === -1 && (this.firstVisibleRowIndex = b, this.firstFullVisibleRowIndex = w < -this.pixelLimitForFullVisible ? this.firstVisibleRowIndex + 1 : this.firstVisibleRowIndex);
3671
- let C = { left: n, width: l, height: R, top: w, index: b }, x = this.dom.addRowDiv(o, C, b, e, "center");
3672
- const D = m;
3756
+ let g = 0;
3757
+ const y = (A = c.getConstantRowHeight) == null ? void 0 : A.call(c);
3758
+ if (y !== void 0 && y > 0 && u < 0) {
3759
+ for (g = Math.min(h, Math.floor(-u / y)); g > 0 && u + g * y > 0; )
3760
+ g--;
3761
+ u = u + g * y;
3762
+ }
3763
+ for (let w = g; w < h; w++) {
3764
+ const S = u, I = w === h - 1, v = this.tableModel.getRowHeight(e, w);
3765
+ if (S + v > 0) {
3766
+ e === "body" && this.firstVisibleRowIndex === -1 && (this.firstVisibleRowIndex = w, this.firstFullVisibleRowIndex = S < -this.pixelLimitForFullVisible ? this.firstVisibleRowIndex + 1 : this.firstVisibleRowIndex);
3767
+ let R = { left: n, width: l, height: v, top: S, index: w }, D = this.dom.addRowDiv(o, R, w, e, "center");
3768
+ const N = m;
3673
3769
  if (this.adjustColumnsToRowParent({
3674
3770
  areaIdent: e,
3675
3771
  sideIdent: "center",
3676
3772
  areaModel: c,
3677
- geo: C,
3678
- parent: x,
3679
- rowIndex: b,
3680
- columnIndexStart: D,
3773
+ geo: R,
3774
+ parent: D,
3775
+ rowIndex: w,
3776
+ columnIndexStart: N,
3681
3777
  columnIndexEnd: f - p - 1,
3682
3778
  verticalFixed: !1,
3683
- lastRowOfModel: S
3684
- }), 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({
3779
+ lastRowOfModel: I
3780
+ }), a.left > 0 && (R = { left: n, width: this.areaBodyWestGeo.width, height: v, top: S, index: w }, D = this.dom.addRowDiv(s, R, w, e, "west"), this.adjustColumnsToRowParent({
3685
3781
  areaIdent: e,
3686
3782
  sideIdent: "west",
3687
3783
  areaModel: c,
3688
- geo: C,
3689
- parent: x,
3690
- rowIndex: b,
3784
+ geo: R,
3785
+ parent: D,
3786
+ rowIndex: w,
3691
3787
  columnIndexStart: 0,
3692
- columnIndexEnd: D - 1,
3788
+ columnIndexEnd: N - 1,
3693
3789
  verticalFixed: !0,
3694
- lastRowOfModel: S
3695
- })), a.right > 0 && (C = { left: n, width: this.areaBodyEastGeo.width, height: R, top: w, index: b }, x = this.dom.addRowDiv(i, C, b, e, "east"), this.adjustColumnsToRowParent({
3790
+ lastRowOfModel: I
3791
+ })), a.right > 0 && (R = { left: n, width: this.areaBodyEastGeo.width, height: v, top: S, index: w }, D = this.dom.addRowDiv(i, R, w, e, "east"), this.adjustColumnsToRowParent({
3696
3792
  areaIdent: e,
3697
3793
  sideIdent: "east",
3698
3794
  areaModel: c,
3699
- geo: C,
3700
- parent: x,
3701
- rowIndex: b,
3795
+ geo: R,
3796
+ parent: D,
3797
+ rowIndex: w,
3702
3798
  columnIndexStart: f - p,
3703
3799
  columnIndexEnd: f - 1,
3704
3800
  verticalFixed: !0,
3705
- lastRowOfModel: S
3706
- })), e === "header" && this.tree && b === h - 1) {
3707
- const M = this.dom.applyStyle(
3801
+ lastRowOfModel: I
3802
+ })), e === "header" && this.tree && w === h - 1) {
3803
+ const U = this.dom.applyStyle(
3708
3804
  this.dom.setAttribute(
3709
- this.dom.addDiv(x, new L(16, 20, 20, 8)),
3805
+ this.dom.addDiv(D, new O(16, 20, 20, 8)),
3710
3806
  "data-ge-action",
3711
3807
  "toggleExpandCollapseAll"
3712
3808
  ),
3713
3809
  { cursor: "pointer" }
3714
- ), I = this.tableOptions.treeOptions.arrowExpandCollapseAll;
3715
- if (I) {
3716
- const K = this.dom.domService.createText(I.content);
3717
- this.dom.domService.appendChild(M, K), I.style && this.dom.applyStyleString(M, I.style);
3810
+ ), C = this.tableOptions.treeOptions.arrowExpandCollapseAll;
3811
+ if (C) {
3812
+ const Ue = this.dom.domService.createText(C.content);
3813
+ this.dom.domService.appendChild(U, Ue), C.style && this.dom.applyStyleString(U, C.style);
3718
3814
  }
3719
3815
  }
3720
3816
  }
3721
- if (u = u + R, u > r) {
3722
- e === "body" && (this.lastVisibleRowIndex = b, this.lastFullVisibleRowIndex = r - u < -this.pixelLimitForFullVisible ? b - 1 : b, this.displayedRowCount = this.lastFullVisibleRowIndex - this.firstFullVisibleRowIndex + 1);
3817
+ if (u = u + v, u > r) {
3818
+ e === "body" && (this.lastVisibleRowIndex = w, this.lastFullVisibleRowIndex = r - u < -this.pixelLimitForFullVisible ? w - 1 : w, this.displayedRowCount = this.lastFullVisibleRowIndex - this.firstFullVisibleRowIndex + 1);
3723
3819
  break;
3724
3820
  }
3725
3821
  }
3726
- if (this.loggingActive && e === "body" && console.log("render scope: this.firstVisibleRowIndex <- " + this.firstVisibleRowIndex + `
3822
+ if (e === "body" && this.firstVisibleRowIndex > -1 && this.lastVisibleRowIndex === -1 && (this.lastVisibleRowIndex = h - 1, this.lastFullVisibleRowIndex = h - 1, this.displayedRowCount = this.lastFullVisibleRowIndex - this.firstFullVisibleRowIndex + 1), this.loggingActive && e === "body" && console.log("render scope: this.firstVisibleRowIndex <- " + this.firstVisibleRowIndex + `
3727
3823
  render scope: this.firstFullVisibleRowIndex <- ` + this.firstFullVisibleRowIndex + `
3728
3824
  render scope: this.lastVisibleRowIndex <- ` + this.lastVisibleRowIndex + `
3729
3825
  render scope: this.lastFullVisibleRowIndex <- ` + this.lastFullVisibleRowIndex), this.colAndRowspanModels && this.colAndRowspanModels[e]) {
3730
- const b = ((g = this.colAndRowspanModels[e]) == null ? void 0 : g.getRanges()) ?? [];
3731
- if (b.length)
3732
- for (const w of b) {
3733
- let S = 0, R = o.child, C = "center";
3734
- if (w.c1 < m)
3735
- R = s.child, C = "west";
3736
- else if (p > 0 && w.c1 >= f - p)
3737
- R = i.child, C = "east";
3826
+ const w = ((k = this.colAndRowspanModels[e]) == null ? void 0 : k.getRanges()) ?? [];
3827
+ if (w.length)
3828
+ for (const S of w) {
3829
+ let I = 0, v = o.child, R = "center";
3830
+ if (S.c1 < m)
3831
+ v = s.child, R = "west";
3832
+ else if (p > 0 && S.c1 >= f - p)
3833
+ v = i.child, R = "east";
3738
3834
  else {
3739
- const x = this.areaBodyCenterGeo.width - this.tableModel.getContentWidthInPixel();
3740
- S = this.scrollFactorX * x - this.areaBodyWestGeo.width, C = "center";
3835
+ const D = this.areaBodyCenterGeo.width - this.tableModel.getContentWidthInPixel();
3836
+ I = this.snapToDevicePixel(this.scrollFactorX * D) - this.areaBodyWestGeo.width, R = "center";
3741
3837
  }
3742
- this.drawBigCell(w, S, t, c, R, C);
3838
+ this.drawBigCell(S, I, t, c, v, R);
3743
3839
  }
3744
3840
  }
3745
3841
  }
@@ -3754,10 +3850,10 @@ render scope: this.lastFullVisibleRowIndex <- ` + this.lastFullVisibleRowIndex),
3754
3850
  * @protected
3755
3851
  */
3756
3852
  drawBigCell(e, t, s, o, i, r) {
3757
- const n = s + this.getRowHeights(0, e.r1 - 1, o).reduce((g, b) => g + b, 0), l = this.tableModel.getColumnCount(), a = this.tableModel.getFixedRightColumnCount();
3853
+ const n = s + this.getRowHeights(0, e.r1 - 1, o).reduce((g, y) => g + y, 0), l = this.tableModel.getColumnCount(), a = this.tableModel.getFixedRightColumnCount();
3758
3854
  let c = 0;
3759
3855
  a > 0 && e.c1 >= l - a && (c = l - a);
3760
- 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);
3856
+ const h = t + this.getColumnWidths(c, e.c1 - 1).reduce((g, y) => g + y, 0), u = this.getRowHeights(e.r1, e.r2, o).reduce((g, y) => g + y, 0), f = this.getColumnWidths(e.c1, e.c2).reduce((g, y) => g + y, 0);
3761
3857
  let p = !1;
3762
3858
  const m = this.getSelectionModel ? this.getSelectionModel() : void 0;
3763
3859
  m && (p = m.getSelectionCount(e.r1, e.c1) > 0), e.gammaRange ? this.renderCell({
@@ -3838,58 +3934,57 @@ render scope: this.lastFullVisibleRowIndex <- ` + this.lastFullVisibleRowIndex),
3838
3934
  lastRowOfModel: c = !1
3839
3935
  }) {
3840
3936
  var m;
3841
- this.scrollViewportLeft = this.scrollViewport.scrollLeft;
3842
3937
  let h = 0;
3843
3938
  if (!a) {
3844
3939
  const g = this.areaBodyCenterGeo.width - this.tableModel.getContentWidthInPixel();
3845
- h = this.scrollFactorX * g;
3940
+ h = this.snapToDevicePixel(this.scrollFactorX * g);
3846
3941
  }
3847
3942
  const u = 0, f = !!(e === "body" && t);
3848
3943
  let p = h;
3849
3944
  for (let g = n; g <= l; g++) {
3850
- const b = p, w = this.tableModel.getColumnWidth(g);
3851
- if (w > 0 && b + w > 0) {
3852
- let S = o.height;
3853
- const R = s.getRowspanAt(r, g), C = s.getColspanAt(r, g);
3854
- R > 1 && (S = this.getRowHeights(r, r + R - 1, s).reduce((M, I) => M + I, 0));
3855
- let x = w;
3856
- C > 1 && (x = this.getColumnWidths(g, g + C - 1).reduce((M, I) => M + I, 0));
3857
- let D = !1;
3858
- if (this.colAndRowspanModels && this.colAndRowspanModels[e] && (m = this.colAndRowspanModels[e]) != null && m.isInRange(r, g) && (D = !0), this.draggingTargetColumnIndex === g && e !== "header") {
3859
- this.renderDragTargetDiv(i, b, u, x, S);
3860
- const M = { left: b, top: u, width: x, height: S };
3861
- this.dom.addColumnBorderDivs(this.tableOptions, i, M, e, t);
3945
+ const y = p, x = this.tableModel.getColumnWidth(g);
3946
+ if (x > 0 && y + x > 0) {
3947
+ let A = o.height;
3948
+ const k = s.getRowspanAt(r, g), w = s.getColspanAt(r, g);
3949
+ k > 1 && (A = this.getRowHeights(r, r + k - 1, s).reduce((v, R) => v + R, 0));
3950
+ let S = x;
3951
+ w > 1 && (S = this.getColumnWidths(g, g + w - 1).reduce((v, R) => v + R, 0));
3952
+ let I = !1;
3953
+ if (this.colAndRowspanModels && this.colAndRowspanModels[e] && (m = this.colAndRowspanModels[e]) != null && m.isInRange(r, g) && (I = !0), this.draggingTargetColumnIndex === g && e !== "header") {
3954
+ this.renderDragTargetDiv(i, y, u, S, A);
3955
+ const v = { left: y, top: u, width: S, height: A };
3956
+ this.dom.addColumnBorderDivs(this.tableOptions, i, v, e, t);
3862
3957
  } else {
3863
- const M = this.renderSelectedBackgroundDiv(D, f, t, s, r, g, i, b, u, x, S);
3864
- "gammaCells" in s && s.getValueAt(r, g) && (D = !1), D || this.renderCell({
3958
+ const v = this.renderSelectedBackgroundDiv(I, f, t, s, r, g, i, y, u, S, A);
3959
+ "gammaCells" in s && s.getValueAt(r, g) && (I = !1), I || this.renderCell({
3865
3960
  areaModel: s,
3866
3961
  areaIdent: e,
3867
3962
  sideIdent: t,
3868
3963
  rowIndex: r,
3869
3964
  columnIndex: g,
3870
- left: b,
3965
+ left: y,
3871
3966
  top: u,
3872
- width: x,
3873
- height: S,
3967
+ width: S,
3968
+ height: A,
3874
3969
  parent: i,
3875
- cellSelected: M,
3970
+ cellSelected: v,
3876
3971
  lastRowOfModel: c,
3877
3972
  gammaRange: !0
3878
3973
  }), e === "header" && this.tableOptions.columnsResizable && this.renderHeaderCellResizeHandle({
3879
3974
  rowIndex: r,
3880
3975
  columnIndex: g,
3881
- cellLeft: b,
3976
+ cellLeft: y,
3882
3977
  cellTop: u,
3883
- cellWidth: x,
3884
- cellHeight: S,
3978
+ cellWidth: S,
3979
+ cellHeight: A,
3885
3980
  parent: i
3886
3981
  });
3887
3982
  }
3888
3983
  }
3889
- if (p = p + w, p > this.areaBodyCenterGeo.width)
3984
+ if (p = p + x, p > this.areaBodyCenterGeo.width)
3890
3985
  break;
3891
3986
  }
3892
- this.tableOptions.verticalBorderVisible && this.dom.addVerticalBorder(new L(p - 1, 1, o.height, 0), i);
3987
+ this.tableOptions.verticalBorderVisible && this.dom.addVerticalBorder(new O(p - 1, 1, o.height, 0), i);
3893
3988
  }
3894
3989
  /**
3895
3990
  * Retrieves the column index of the tree arrow column in the table.
@@ -3916,19 +4011,19 @@ render scope: this.lastFullVisibleRowIndex <- ` + this.lastFullVisibleRowIndex),
3916
4011
  parent: c,
3917
4012
  lastRowOfModel: h
3918
4013
  }) {
3919
- var we;
4014
+ var U;
3920
4015
  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);
3921
4016
  let g = "none";
3922
- if (i === this.getTreeArrowColumnIndex() && G(m)) {
3923
- const v = m;
3924
- (we = v.children) != null && we.length ? v.expanded ? g = "expanded" : g = "collapsed" : g = "hidden";
4017
+ if (i === this.getTreeArrowColumnIndex() && j(m)) {
4018
+ const C = m;
4019
+ (U = C.children) != null && U.length ? C.expanded ? g = "expanded" : g = "collapsed" : g = "hidden";
3925
4020
  }
3926
- let w;
4021
+ let x;
3927
4022
  if (t === "header") {
3928
- const v = this.tableModel.getColumnDef(i);
3929
- (!(v != null && v.sortIconVisible) || v != null && v.sortIconVisible()) && (w = v == null ? void 0 : v.sortState);
4023
+ const C = this.tableModel.getColumnDef(i);
4024
+ (!(C != null && C.sortIconVisible) || C != null && C.sortIconVisible()) && (x = C == null ? void 0 : C.sortState);
3930
4025
  }
3931
- const S = e.getValueAt(o, i), R = f ? "" : `${S}`, C = e.isRowChecked(o), x = this.dom.addColumnDiv(
4026
+ const A = e.getValueAt(o, i), k = f ? "" : `${A}`, w = e.isRowChecked(o), S = this.dom.addColumnDiv(
3932
4027
  {
3933
4028
  parent: c,
3934
4029
  geo: p,
@@ -3936,29 +4031,29 @@ render scope: this.lastFullVisibleRowIndex <- ` + this.lastFullVisibleRowIndex),
3936
4031
  columnIndex: i,
3937
4032
  areaIdent: t,
3938
4033
  sideIdent: s,
3939
- text: R,
4034
+ text: k,
3940
4035
  treeArrow: g,
3941
4036
  tableOptions: this.tableOptions,
3942
- checkedType: C,
3943
- sortState: w
4037
+ checkedType: w,
4038
+ sortState: x
3944
4039
  }
3945
- ), D = e.getTooltipAt(o, i);
3946
- D && this.dom.setAttribute(x, "title", D);
3947
- const M = this.tableModel.getColumnDef(i);
3948
- M && M.classes[t] && this.dom.addClasses(M.classes[t], x);
3949
- let I;
3950
- f && (I = f.render(x, o, i, t, e, S, this.dom.domService));
3951
- const K = e.getCustomClassesAt(o, i);
3952
- if (K.length && this.dom.addClasses(K, 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") {
3953
- const v = this.getFocusModel();
3954
- v != null && v.hasFocus(o, i) && this.dom.addFocusBorderDivs(c, p, {});
4040
+ ), I = e.getTooltipAt(o, i);
4041
+ I && this.dom.setAttribute(S, "title", I);
4042
+ const v = this.tableModel.getColumnDef(i);
4043
+ v && v.classes[t] && this.dom.addClasses(v.classes[t], S);
4044
+ let R;
4045
+ f && (R = f.render(S, o, i, t, e, A, this.dom.domService));
4046
+ const D = e.getCustomClassesAt(o, i);
4047
+ if (D.length && this.dom.addClasses(D, S), 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") {
4048
+ const C = this.getFocusModel();
4049
+ C != null && C.hasFocus(o, i) && this.dom.addFocusBorderDivs(c, p, {});
3955
4050
  }
3956
- t === "header" && this.dom.setAttribute(x, "data-ge-action", "drag-column");
3957
- const te = e.getCustomStyleAt(o, i);
3958
- if (te)
3959
- for (const v in te)
3960
- this.dom.setStyle(x, v, te[v]);
3961
- return [x, I];
4051
+ t === "header" && this.dom.setAttribute(S, "data-ge-action", "drag-column");
4052
+ const N = e.getCustomStyleAt(o, i);
4053
+ if (N)
4054
+ for (const C in N)
4055
+ this.dom.setStyle(S, C, N[C]);
4056
+ return [S, R];
3962
4057
  }
3963
4058
  /**
3964
4059
  * Applies CSS classes to an HTML element.
@@ -4009,10 +4104,10 @@ render scope: this.lastFullVisibleRowIndex <- ` + this.lastFullVisibleRowIndex),
4009
4104
  */
4010
4105
  adjustHoverRows(e) {
4011
4106
  if (this.tableOptions.hoverRowVisible && e.rowIndex > -1) {
4012
- const t = this.hostElement.clientWidth, s = this.tableModel.getAreaModel("body").getRowHeight(e.rowIndex), o = e.rowTop + this.areaHeaderCenter.parent.clientHeight - this.scrollTop;
4107
+ const t = this.hostElement.clientWidth, s = this.tableModel.getAreaModel("body").getRowHeight(e.rowIndex), o = this.isScrollHeightCapped() ? this.contentScrollTop : this.scrollTop, i = e.rowTop + this.areaHeaderCenter.parent.clientHeight - o;
4013
4108
  this.dom.applyStyle(this.hoverRow, {
4014
4109
  left: "0",
4015
- top: o + "px",
4110
+ top: i + "px",
4016
4111
  width: t + "px",
4017
4112
  height: s + "px",
4018
4113
  display: "block"
@@ -4075,6 +4170,18 @@ render scope: this.lastFullVisibleRowIndex <- ` + this.lastFullVisibleRowIndex),
4075
4170
  *
4076
4171
  * @return {undefined}
4077
4172
  */
4173
+ /**
4174
+ * Cancels a pending debounced rendering and calls all renderer cleanup functions
4175
+ * (e.g. unmounts framework components rendered into cells). Used by {@link TableScope.destroy}.
4176
+ */
4177
+ disposeRendering() {
4178
+ this.debounceTimeout && (clearTimeout(this.debounceTimeout), this.debounceTimeout = null);
4179
+ for (const e of ["header", "body", "footer"])
4180
+ for (; this.cleanupFunctions[e].length; ) {
4181
+ const t = this.cleanupFunctions[e].shift();
4182
+ t && t();
4183
+ }
4184
+ }
4078
4185
  debounce(e, t = 1e3) {
4079
4186
  this.debounceTimeout && clearTimeout(this.debounceTimeout), this.debounceTimeout = setTimeout(e.bind(this), t);
4080
4187
  }
@@ -4132,17 +4239,17 @@ render scope: this.lastFullVisibleRowIndex <- ` + this.lastFullVisibleRowIndex),
4132
4239
  areaIdent: t,
4133
4240
  sideIdent: o,
4134
4241
  text: m
4135
- }, b = this.dom.addColumnDiv(g);
4136
- let w;
4137
- p && (w = p.render(b, a, n, t, i, f, this.dom.domService), w && this.cleanupFunctions[t].push(w));
4138
- const S = i.getCustomClassesAt(a, n);
4139
- S.length && this.dom.addClasses(S, b);
4140
- const R = this.tableModel.getColumnDef(n);
4141
- R && R.classes[t] && this.dom.addClasses(R.classes[t], b), this.dom.addColumnBorderDivs(this.tableOptions, l, u, t, o);
4142
- const C = i.getCustomStyleAt(a, n);
4143
- if (C)
4144
- for (const x in C)
4145
- this.dom.setStyle(b, x, C[x]);
4242
+ }, y = this.dom.addColumnDiv(g);
4243
+ let x;
4244
+ p && (x = p.render(y, a, n, t, i, f, this.dom.domService), x && this.cleanupFunctions[t].push(x));
4245
+ const A = i.getCustomClassesAt(a, n);
4246
+ A.length && this.dom.addClasses(A, y);
4247
+ const k = this.tableModel.getColumnDef(n);
4248
+ k && k.classes[t] && this.dom.addClasses(k.classes[t], y), this.dom.addColumnBorderDivs(this.tableOptions, l, u, t, o);
4249
+ const w = i.getCustomStyleAt(a, n);
4250
+ if (w)
4251
+ for (const S in w)
4252
+ this.dom.setStyle(y, S, w[S]);
4146
4253
  s = s + h;
4147
4254
  }
4148
4255
  }
@@ -4277,14 +4384,18 @@ render scope: this.lastFullVisibleRowIndex <- ` + this.lastFullVisibleRowIndex),
4277
4384
  l.setAttribute(c, "data-col-index", `${t}`), l.setAttribute(c, "data-row-index", `${e}`), l.setAttribute(c, "data-area", "header"), l.setAttribute(c, "data-ge-action", "resize-column"), l.addClass(c, "ge-table-column-resize-handle"), l.setStyle(c, "display", "clip"), l.setStyle(c, "position", "absolute"), l.setStyle(c, "cursor", "col-resize"), l.setStyle(c, "left", `${s + i - a}px`), l.setStyle(c, "top", `${o}px`), l.setStyle(c, "width", `${a}px`), l.setStyle(c, "height", `${r}px`), l.appendChild(n, c);
4278
4385
  }
4279
4386
  }
4280
- class dt {
4387
+ class pt {
4281
4388
  constructor(e, t) {
4282
4389
  this.columnIndex = e, this.sortState = t;
4283
4390
  }
4284
4391
  }
4285
- class ht {
4392
+ class gt {
4286
4393
  constructor(e) {
4287
- this.tableScope = e, this.tableScope.hostElement.addEventListener("change", this.onHostElementChanged.bind(this));
4394
+ this.tableScope = e, this.tableScope.hostElement.addEventListener(
4395
+ "change",
4396
+ this.onHostElementChanged.bind(this),
4397
+ { signal: this.tableScope.listenerAbortController.signal }
4398
+ );
4288
4399
  }
4289
4400
  /**
4290
4401
  * Handles the onHostElementChanged event.
@@ -4298,31 +4409,31 @@ class ht {
4298
4409
  if (e.target instanceof HTMLInputElement || e.target instanceof HTMLSelectElement || e.target instanceof HTMLTextAreaElement) {
4299
4410
  const t = e.target, s = t.getAttribute("data-area"), o = t.getAttribute("data-row-index"), i = t.getAttribute("data-col-index");
4300
4411
  if (s && o && i) {
4301
- const r = ee(s), n = Number(o), l = Number(i);
4412
+ const r = ne(s), n = Number(o), l = Number(i);
4302
4413
  this.tableScope.updateModelValueAfterEdit(r, n, l, t.value);
4303
4414
  }
4304
4415
  }
4305
4416
  }
4306
4417
  }
4307
- class ut {
4418
+ class ft {
4308
4419
  constructor(e = -1, t = -1) {
4309
4420
  this.rowIndex = e, this.columnIndex = t;
4310
4421
  }
4311
4422
  }
4312
- class me {
4423
+ class Se {
4313
4424
  constructor(e) {
4314
4425
  this.cells = e;
4315
4426
  }
4316
4427
  static createSingle(e, t) {
4317
- return new me([new ut(e, t)]);
4428
+ return new Se([new ft(e, t)]);
4318
4429
  }
4319
4430
  }
4320
- class pt {
4431
+ class mt {
4321
4432
  constructor(e, t, s, o, i, r, n, l) {
4322
4433
  this.scrollTop = e, this.scrollLeft = t, this.scrollHeight = s, this.scrollWidth = o, this.clientHeight = i, this.clientWidth = r, this.scrollFactorY = n, this.scrollFactorX = l;
4323
4434
  }
4324
4435
  }
4325
- class gt {
4436
+ class bt {
4326
4437
  constructor(e) {
4327
4438
  var t, s;
4328
4439
  this.tableScope = e, (t = this.tableScope.tableOptions) != null && t.getSelectionModel && (this.getSelectionModel = this.tableScope.tableOptions.getSelectionModel), (s = this.tableScope.tableOptions) != null && s.getFocusModel && (this.getFocusModel = this.tableScope.tableOptions.getFocusModel);
@@ -4332,7 +4443,7 @@ class gt {
4332
4443
  let s = !1, o = !1;
4333
4444
  if (this.getSelectionModel && this.getFocusModel) {
4334
4445
  const u = this.getSelectionModel(), f = this.getFocusModel();
4335
- 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));
4446
+ 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(M.singleCell(e.rowIndex, e.columnIndex)), o = !0, s = !0) : (c = e.originalEvent) != null && c.ctrlKey || (h = e.originalEvent) != null && h.metaKey ? (u.addSelection(M.singleCell(e.rowIndex, e.columnIndex)), o = !0, s = !0) : (u.firstClick(e.rowIndex, e.columnIndex), s = !0), this.tableScope.onSelectionChanged(u));
4336
4447
  }
4337
4448
  return o ? this.previousEvt = void 0 : this.previousEvt = e == null ? void 0 : e.clone(), s;
4338
4449
  }
@@ -4355,7 +4466,7 @@ class gt {
4355
4466
  createRangeByEvents(e, t) {
4356
4467
  t || (t = e);
4357
4468
  const s = Math.min(e.rowIndex, t == null ? void 0 : t.rowIndex), o = Math.max(e.rowIndex, t == null ? void 0 : t.rowIndex), i = Math.min(e.columnIndex, t == null ? void 0 : t.columnIndex), r = Math.max(e.columnIndex, t == null ? void 0 : t.columnIndex);
4358
- return A.create({
4469
+ return M.create({
4359
4470
  rowIndex1: s,
4360
4471
  columnIndex1: i,
4361
4472
  rowIndex2: o,
@@ -4363,7 +4474,7 @@ class gt {
4363
4474
  });
4364
4475
  }
4365
4476
  }
4366
- class ft {
4477
+ class yt {
4367
4478
  get() {
4368
4479
  return {
4369
4480
  f2: "START_EDITING",
@@ -4383,7 +4494,7 @@ class ft {
4383
4494
  };
4384
4495
  }
4385
4496
  }
4386
- class mt {
4497
+ class wt {
4387
4498
  get() {
4388
4499
  return {
4389
4500
  f2: "START_EDITING",
@@ -4405,13 +4516,13 @@ class mt {
4405
4516
  };
4406
4517
  }
4407
4518
  }
4408
- function bt(d) {
4519
+ function xt(d) {
4409
4520
  return d.trim().replace(/\+/g, " ").replace(/ +/g, " ").replace(/⌫/g, "backspace").replace(/↩/g, "enter").replace(/⇧/g, "shift").replace(/⌥/g, "alt").replace(/option/g, "alt").replace(/opt/g, "alt").replace(/⌃/g, "ctrl").replace(/control/g, "ctrl").replace(/command/g, "cmd").replace(/meta/g, "cmd").replace(/escape/g, "esc").replace(/⌘/g, "cmd").replace(/\*/g, "multiply").split(" ").filter((e) => e).filter((e, t, s) => s.indexOf(e) === t).sort((e, t) => {
4410
4521
  const s = { cmd: 1, ctrl: 2, alt: 3, shift: 4 }, o = s[e] || 5, i = s[t] || 5;
4411
4522
  return o !== i ? o - i : e.localeCompare(t);
4412
4523
  }).join(" ");
4413
4524
  }
4414
- function Ce(d) {
4525
+ function Me(d) {
4415
4526
  let e = d.key.toLowerCase();
4416
4527
  if (e === " " && (e = "space"), e === "arrowleft" && (e = "left"), e === "arrowright" && (e = "right"), e === "arrowup" && (e = "up"), e === "arrowdown" && (e = "down"), e === "delete" && d.code === "Delete" && (e = "delete"), e === "backspace" && (e = "backspace"), e === "escape" && (e = "esc"), e === "return" && (e = "enter"), d.code.startsWith("Numpad")) {
4417
4528
  const s = d.code.replace("Numpad", "").toLowerCase();
@@ -4419,9 +4530,9 @@ function Ce(d) {
4419
4530
  }
4420
4531
  d.code.match(/^F\d+$/) && (e = d.code.toLowerCase()), d.code.match(/^Digit\d+$/) && (e = d.code.replace(/Digit/g, ""));
4421
4532
  let t = "";
4422
- return d.ctrlKey && (t += " ctrl"), d.altKey && (t += t + " alt"), d.shiftKey && (t += t + " shift"), d.metaKey && (t += t + " cmd"), bt(t + " " + e);
4533
+ return d.ctrlKey && (t += " ctrl"), d.altKey && (t += t + " alt"), d.shiftKey && (t += t + " shift"), d.metaKey && (t += t + " cmd"), xt(t + " " + e);
4423
4534
  }
4424
- class yt {
4535
+ class St {
4425
4536
  constructor(e) {
4426
4537
  this.tableScope = e, this.shortcutActionIdMapping = {}, this.listener = [], this.listener.push(e), this.init();
4427
4538
  }
@@ -4440,10 +4551,14 @@ class yt {
4440
4551
  */
4441
4552
  init() {
4442
4553
  var e, t;
4443
- (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)));
4554
+ (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(
4555
+ "keydown",
4556
+ this.onKeyDown.bind(this),
4557
+ { signal: this.tableScope.listenerAbortController.signal }
4558
+ ));
4444
4559
  }
4445
4560
  assignPredefinedSystemShortcutMappings() {
4446
- this.isMacintosh() ? Object.assign(this.shortcutActionIdMapping, new mt().get()) : Object.assign(this.shortcutActionIdMapping, new ft().get());
4561
+ this.isMacintosh() ? Object.assign(this.shortcutActionIdMapping, new wt().get()) : Object.assign(this.shortcutActionIdMapping, new yt().get());
4447
4562
  }
4448
4563
  isMacintosh() {
4449
4564
  return navigator.platform.indexOf("Mac") > -1;
@@ -4466,10 +4581,10 @@ class yt {
4466
4581
  return t;
4467
4582
  }
4468
4583
  findEntity(e) {
4469
- const t = Ce(e);
4584
+ const t = Me(e);
4470
4585
  this.isDebug() && console.debug("ShortcutService shortcut :", t);
4471
4586
  for (const s in this.shortcutActionIdMapping)
4472
- if (Ce(e) === t)
4587
+ if (Me(e) === t)
4473
4588
  return this.isDebug() && console.debug("ShortcutService action :", this.shortcutActionIdMapping[s]), this.shortcutActionIdMapping[s];
4474
4589
  }
4475
4590
  // private areTokensEquals(tokens1: string[], tokens2: string[]): boolean {
@@ -4516,7 +4631,7 @@ class yt {
4516
4631
  return this.shortcutActionIdMapping;
4517
4632
  }
4518
4633
  }
4519
- class ne {
4634
+ class he {
4520
4635
  onCheckboxChanged(e) {
4521
4636
  }
4522
4637
  onContextmenu(e) {
@@ -4538,7 +4653,7 @@ class ne {
4538
4653
  onFocusChanged(e) {
4539
4654
  }
4540
4655
  }
4541
- class wt {
4656
+ class Ct {
4542
4657
  setStyle(e, t, s) {
4543
4658
  return e.style[t] = s, e;
4544
4659
  }
@@ -4565,7 +4680,7 @@ class wt {
4565
4680
  e.setAttribute(t, s);
4566
4681
  }
4567
4682
  }
4568
- class xt {
4683
+ class vt {
4569
4684
  render(e, t, s, o, i, r, n) {
4570
4685
  if (i.isEditable(t, s)) {
4571
4686
  n.addClass(e, "ge-table-row-input-div");
@@ -4586,7 +4701,7 @@ class xt {
4586
4701
  }
4587
4702
  }
4588
4703
  }
4589
- class be {
4704
+ class Ce {
4590
4705
  constructor(e = "none", t = "single") {
4591
4706
  this.selectionType = e, this.selectionMode = t, this.ranges = [], this.negativeRanges = [], this.allSelected = !1, this.silent = !1, this.listenerArr = [];
4592
4707
  }
@@ -4605,7 +4720,7 @@ class be {
4605
4720
  this.silent || this.listenerArr.forEach((e) => e.onSelectionChanged(this));
4606
4721
  }
4607
4722
  firstClick(e, t) {
4608
- this.selectionType === "row" ? this.addRange(A.singleRow(e)) : this.selectionType === "column" && this.addRange(A.singleColumn(t));
4723
+ this.selectionType === "row" ? this.addRange(M.singleRow(e)) : this.selectionType === "column" && this.addRange(M.singleColumn(t));
4609
4724
  }
4610
4725
  getSelectionCount(e, t) {
4611
4726
  let s = 0;
@@ -4656,10 +4771,10 @@ class be {
4656
4771
  if (this.selectionType === "none")
4657
4772
  return;
4658
4773
  let t = e;
4659
- this.selectionType === "row" ? t = A.singleRow(e.r1) : this.selectionType === "column" && (t = A.singleColumn(e.c1)), this.negativeRanges.push(t), this.fireChangeEvent();
4774
+ this.selectionType === "row" ? t = M.singleRow(e.r1) : this.selectionType === "column" && (t = M.singleColumn(e.c1)), this.negativeRanges.push(t), this.fireChangeEvent();
4660
4775
  }
4661
4776
  togglePoint(e, t) {
4662
- this.getSelectionCount(e, t) > 0 ? this.removeSelection(A.singleCell(e, t)) : this.addSelection(A.singleCell(e, t));
4777
+ this.getSelectionCount(e, t) > 0 ? this.removeSelection(M.singleCell(e, t)) : this.addSelection(M.singleCell(e, t));
4663
4778
  }
4664
4779
  isSelected(e, t) {
4665
4780
  return this.getSelectionCount(e, t) > 0;
@@ -4668,7 +4783,7 @@ class be {
4668
4783
  this.selectionType !== "none" && (this.allSelected = !1, this.selectionMode === "single" && (this.ranges = []), this.selectionType === "row" ? (e.c1 = 0, e.c2 = Number.MAX_SAFE_INTEGER) : this.selectionType === "column" ? (e.r1 = 0, e.r2 = Number.MAX_SAFE_INTEGER) : this.selectionType === "cell" ? (e.r2 = e.r1, e.c2 = e.c1) : this.selectionType, this.ranges.push(e), this.fireChangeEvent());
4669
4784
  }
4670
4785
  }
4671
- class St {
4786
+ class Rt {
4672
4787
  constructor(e = "none") {
4673
4788
  this.selectionType = e, this.rowIndex = -1, this.columnIndex = -1, this.changed = !1, this.listenerArr = [];
4674
4789
  }
@@ -4705,12 +4820,12 @@ class St {
4705
4820
  return [this.rowIndex, this.columnIndex];
4706
4821
  }
4707
4822
  }
4708
- class ye {
4709
- constructor(e = new O(
4823
+ class ve {
4824
+ constructor(e = new V(
4710
4825
  "❯",
4711
4826
  "",
4712
4827
  ["gt-table-icon-expanded"]
4713
- ), t = new O(
4828
+ ), t = new V(
4714
4829
  "❯",
4715
4830
  "transform: rotate(180deg) translate(-100%, -100%); transform-origin: 0 0;",
4716
4831
  ["ge-table-icon-collapsed"]
@@ -4719,17 +4834,17 @@ class ye {
4719
4834
  }
4720
4835
  // `⊖ `, `⊕ `;
4721
4836
  }
4722
- const Ct = new be(), vt = new St("cell");
4723
- class Y {
4837
+ const At = new Ce(), Mt = new Rt("cell");
4838
+ class J {
4724
4839
  constructor() {
4725
4840
  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 = {
4726
4841
  header: 34,
4727
4842
  body: 34,
4728
4843
  footer: 34
4729
- }, this.footerVerticalSeparator = !1, this.headerToggleExpandCollapseIcons = !1, this.headerVerticalSeparator = !1, this.treeOptions = new $e(), this.headerGroupOptions = new ye(), 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 xt(), this.getSelectionModel = () => Ct, this.getFocusModel = () => vt;
4844
+ }, this.footerVerticalSeparator = !1, this.headerToggleExpandCollapseIcons = !1, this.headerVerticalSeparator = !1, this.treeOptions = new We(), this.headerGroupOptions = new ve(), this.showCheckboxWihoutExtraColumn = !1, this.externalFilterFunction = void 0, this.sortedOptions = new Ne(), this.sortOrder = ["asc", "desc"], this.shortcutActionsDisabled = !1, this.resizeEventDebounceDelay = 500, this.getEditRenderer = (e, t) => new vt(), this.getSelectionModel = () => At, this.getFocusModel = () => Mt;
4730
4845
  }
4731
4846
  }
4732
- const N = class N {
4847
+ const z = class z {
4733
4848
  /**
4734
4849
  * Returns the content to be copied based on the provided table model, selection model, and focus model.
4735
4850
  *
@@ -4752,9 +4867,9 @@ const N = class N {
4752
4867
  const h = t.isSelected(l, c) ? e.getBodyModel().getTextValueAt(l, c) : "";
4753
4868
  a.push(h);
4754
4869
  }
4755
- n.push(a.join(N.columnSeparatorChar));
4870
+ n.push(a.join(z.columnSeparatorChar));
4756
4871
  }
4757
- return o(n.join(N.rowSeparatorChar));
4872
+ return o(n.join(z.rowSeparatorChar));
4758
4873
  }
4759
4874
  }
4760
4875
  if (s) {
@@ -4807,23 +4922,47 @@ const N = class N {
4807
4922
  mergeRanges(e) {
4808
4923
  let t;
4809
4924
  for (const s of e)
4810
- t ? (t.r1 = Math.min(t.r1, s.r1), t.c1 = Math.min(t.c1, s.c1), t.r2 = Math.max(t.r2, s.r2), t.c2 = Math.max(t.c2, s.c2)) : t = new A(s.r1, s.c1, s.r2, s.c2);
4925
+ t ? (t.r1 = Math.min(t.r1, s.r1), t.c1 = Math.min(t.c1, s.c1), t.r2 = Math.max(t.r2, s.r2), t.c2 = Math.max(t.c2, s.c2)) : t = new M(s.r1, s.c1, s.r2, s.c2);
4811
4926
  return t;
4812
4927
  }
4813
4928
  };
4814
- N.columnSeparatorChar = " ", N.rowSeparatorChar = `
4929
+ z.columnSeparatorChar = " ", z.rowSeparatorChar = `
4815
4930
  `;
4816
- let q = N;
4817
- class Rt {
4931
+ let te = z;
4932
+ class It {
4818
4933
  constructor(e, t = 500) {
4819
- this.tableScope = e, this.debounceDelay = t, new ResizeObserver(Ge(this.handleResize.bind(this), t)).observe(this.tableScope.hostElement);
4934
+ this.tableScope = e, this.debounceDelay = t, this.disconnected = !1, this.resizeObserver = new ResizeObserver(Ye(this.handleResize.bind(this), t)), this.resizeObserver.observe(this.tableScope.hostElement);
4935
+ }
4936
+ /**
4937
+ * Stops observing the host element. Called by {@link TableScope.destroy}.
4938
+ */
4939
+ disconnect() {
4940
+ this.disconnected = !0, this.resizeObserver.disconnect();
4820
4941
  }
4821
4942
  handleResize(e) {
4943
+ if (this.disconnected)
4944
+ return;
4822
4945
  const t = e[0], { width: s } = t.contentRect;
4823
4946
  this.tableScope.recalcColumnWidths(s);
4824
4947
  }
4825
4948
  }
4826
- class At {
4949
+ let q;
4950
+ function Et(d) {
4951
+ if (!q) {
4952
+ q = new Uint32Array(256);
4953
+ for (let t = 0; t < 256; t++) {
4954
+ let s = t;
4955
+ for (let o = 0; o < 8; o++)
4956
+ s = s & 1 ? 3988292384 ^ s >>> 1 : s >>> 1;
4957
+ q[t] = s >>> 0;
4958
+ }
4959
+ }
4960
+ let e = 4294967295;
4961
+ for (let t = 0; t < d.length; t++)
4962
+ e = q[(e ^ d[t]) & 255] ^ e >>> 8;
4963
+ return (e ^ 4294967295) >>> 0;
4964
+ }
4965
+ class Tt {
4827
4966
  /**
4828
4967
  * Downloads a matrix data as an Excel file.
4829
4968
  *
@@ -4861,32 +5000,32 @@ class At {
4861
5000
  return u.set("_rels/.rels", s), u.set("docProps/app.xml", o), u.set("docProps/core.xml", i), u.set("xl/_rels/workbook.xml.rels", r), u.set("xl/theme/theme1.xml", n), u.set("xl/worksheets/sheet1.xml", this.getX1WorksheetsSheet1Xml(e)), u.set("xl/sharedStrings.xml", l), u.set("xl/styles.xml", a), u.set("xl/workbook.xml", c), u.set("[Content_Types].xml", h), u;
4862
5001
  }
4863
5002
  getX1WorksheetsSheet1Xml(e) {
4864
- const t = [];
4865
- t.push(`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
5003
+ const t = e.reduce((i, r) => Math.max(i, r.length), 1), s = e.length ? `A1:${this.getCellAddress(e.length - 1, t - 1)}` : "A1", o = [];
5004
+ o.push(`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
4866
5005
  <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac xr xr2 xr3" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision" xmlns:xr2="http://schemas.microsoft.com/office/spreadsheetml/2015/revision2" xmlns:xr3="http://schemas.microsoft.com/office/spreadsheetml/2016/revision3" xr:uid="{E15F8FC4-4D40-434C-921A-3D9CFAAA2865}">
4867
- <dimension ref="A1:B3"/>
5006
+ <dimension ref="${s}"/>
4868
5007
  <sheetViews>
4869
5008
  <sheetView tabSelected="1" workbookViewId="0"/></sheetViews>
4870
5009
  <sheetFormatPr baseColWidth="10" defaultRowHeight="16" x14ac:dyDescent="0.2"/>
4871
5010
  <sheetData>`);
4872
- for (let s = 0; s < e.length; s++) {
4873
- const o = e[s];
4874
- t.push('<row r="${r + 1}" spans="1:2" x14ac:dyDescent="0.2">');
4875
- for (let i = 0; i < o.length; i++) {
4876
- const r = o[i], n = this.getCellAddress(s, i);
4877
- if (typeof r == "number")
4878
- t.push(`<c r="${n}"><v>${r}</v></c>`);
4879
- else if (r instanceof Date) {
4880
- const l = r;
4881
- t.push(`<c r="${n}" t="inlineStr"><is><t>${l.toISOString()}</t></is></c>`);
5011
+ for (let i = 0; i < e.length; i++) {
5012
+ const r = e[i];
5013
+ o.push(`<row r="${i + 1}" spans="1:${t}" x14ac:dyDescent="0.2">`);
5014
+ for (let n = 0; n < r.length; n++) {
5015
+ const l = r[n], a = this.getCellAddress(i, n);
5016
+ if (typeof l == "number")
5017
+ o.push(`<c r="${a}"><v>${l}</v></c>`);
5018
+ else if (l instanceof Date) {
5019
+ const c = l;
5020
+ o.push(`<c r="${a}" t="inlineStr"><is><t>${c.toISOString()}</t></is></c>`);
4882
5021
  } else {
4883
- const l = r != null ? this.escapeXml(String(r)) : "";
4884
- t.push(`<c r="${n}" t="inlineStr"><is><t>${l}</t></is></c>`);
5022
+ const c = l != null ? this.escapeXml(String(l)) : "";
5023
+ o.push(`<c r="${a}" t="inlineStr"><is><t>${c}</t></is></c>`);
4885
5024
  }
4886
5025
  }
4887
- t.push("</row>");
5026
+ o.push("</row>");
4888
5027
  }
4889
- return t.push(""), t.push(""), t.push('</sheetData><pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>'), t.push("</worksheet>"), t.join(`
5028
+ return o.push(""), o.push(""), o.push('</sheetData><pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>'), o.push("</worksheet>"), o.join(`
4890
5029
  `);
4891
5030
  }
4892
5031
  escapeXml(e) {
@@ -4904,17 +5043,18 @@ class At {
4904
5043
  let s = 0;
4905
5044
  const o = [];
4906
5045
  e.forEach((h, u) => {
4907
- const f = new TextEncoder().encode(u), p = new TextEncoder().encode(h), m = new Uint8Array(30 + f.length), g = new DataView(m.buffer);
4908
- 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({
5046
+ const f = new TextEncoder().encode(u), p = new TextEncoder().encode(h), m = Et(p), g = new Uint8Array(30 + f.length), y = new DataView(g.buffer);
5047
+ g.set([80, 75, 3, 4], 0), y.setUint16(4, 20, !0), y.setUint16(6, 0, !0), y.setUint16(8, 0, !0), y.setUint16(10, 0, !0), y.setUint16(12, 0, !0), y.setUint32(14, m, !0), y.setUint32(18, p.length, !0), y.setUint32(22, p.length, !0), y.setUint16(26, f.length, !0), y.setUint16(28, 0, !0), g.set(f, 30), t.push(g, p), o.push({
4909
5048
  path: u,
4910
5049
  offset: s,
4911
- contentSize: p.length
4912
- }), s += m.length + p.length;
5050
+ contentSize: p.length,
5051
+ crc: m
5052
+ }), s += g.length + p.length;
4913
5053
  });
4914
5054
  const i = s;
4915
5055
  o.forEach((h) => {
4916
5056
  const u = new TextEncoder().encode(h.path), f = new Uint8Array(46 + u.length), p = new DataView(f.buffer);
4917
- 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;
5057
+ 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, h.crc, !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;
4918
5058
  });
4919
5059
  const r = new Uint8Array(22), n = new DataView(r.buffer);
4920
5060
  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);
@@ -4929,14 +5069,14 @@ class At {
4929
5069
  return this.createZip(s);
4930
5070
  }
4931
5071
  }
4932
- class He extends ct {
4933
- constructor(e, t, s, o, i, r = new q(), n = new At()) {
5072
+ class Ge extends ut {
5073
+ constructor(e, t, s, o, i, r = new te(), n = new Tt()) {
4934
5074
  var c;
4935
- if (super(e, t, new Qe(s), o), this.eventListener = i, this.copyService = r, this.excelService = n, this.licenseManager = W.getInstance(), this.selectionService = new gt(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) {
5075
+ if (super(e, t, new ot(s), o), this.eventListener = i, this.copyService = r, this.excelService = n, this.licenseManager = G.getInstance(), this.listenerAbortController = new AbortController(), this.destroyed = !1, this.selectionService = new bt(this), this.api = new nt(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 he()), (c = this.tableOptions) != null && c.autoRestoreOptions) {
4936
5076
  const h = this.tableOptions.autoRestoreOptions, u = h.getStorageKeyFn;
4937
- u && (h.autoRestoreScrollPosition && (this.storeScrollPosStateService = new ot(u)), h.autoRestoreCollapsedExpandedState && (this.storeStateCollapsedExpandService = new rt(u)), h.autoRestoreSortingState && (this.storeSortingService = new nt(u)));
5077
+ u && (h.autoRestoreScrollPosition && (this.storeScrollPosStateService = new lt(u)), h.autoRestoreCollapsedExpandedState && (this.storeStateCollapsedExpandService = new ct(u)), h.autoRestoreSortingState && (this.storeSortingService = new dt(u)));
4938
5078
  }
4939
- this.mouseHandler = new tt(this), this.inputHandler = new ht(this), this.resizeHandler = new Rt(this, o.resizeEventDebounceDelay), this.shortcutService = new yt(this), this.shortcutService.addListener(this.selectionService);
5079
+ this.mouseHandler = new rt(this), this.inputHandler = new gt(this), this.resizeHandler = new It(this, o.resizeEventDebounceDelay), this.shortcutService = new St(this), this.shortcutService.addListener(this.selectionService);
4940
5080
  const l = this.getSelectionModel ? this.getSelectionModel() : void 0;
4941
5081
  l && l.addEventSelectionChangedListener(this);
4942
5082
  const a = this.getFocusModel ? this.getFocusModel() : void 0;
@@ -4954,8 +5094,8 @@ class He extends ct {
4954
5094
  *
4955
5095
  * @return {TableScope} - The newly created TableScope instance.
4956
5096
  */
4957
- static create(e, t, s = new Y(), o = new ne(), i = new wt(), r = new q()) {
4958
- return new He(e, t, i, s, o, r);
5097
+ static create(e, t, s = new J(), o = new he(), i = new Ct(), r = new te()) {
5098
+ return new Ge(e, t, i, s, o, r);
4959
5099
  }
4960
5100
  /**
4961
5101
  * Triggers an action based on the provided actionId.
@@ -4983,7 +5123,8 @@ class He extends ct {
4983
5123
  return !1;
4984
5124
  }
4985
5125
  updateModelValueAfterEdit(e, t, s, o) {
4986
- e === "body" && this.tableModel.getAreaModel(e).setValue(t, s, o) && (this.resetEditorRenderer(), this.repaint(), this.eventListener.onModelChanged(me.createSingle(t, s)), this.hostElement.focus());
5126
+ var i, r;
5127
+ e === "body" && this.tableModel.getAreaModel(e).setValue(t, s, o) && (this.resetEditorRenderer(), this.repaint(), (r = (i = this.eventListener).onModelChanged) == null || r.call(i, Se.createSingle(t, s)), this.hostElement.focus());
4987
5128
  }
4988
5129
  /**
4989
5130
  * Retrieves the TableApi object.
@@ -5005,6 +5146,37 @@ class He extends ct {
5005
5146
  var e;
5006
5147
  return this.tableModel.init(), (e = this.tableOptions) != null && e.externalFilterFunction && this.externalFilterChanged(!1), this.autoRestoreCollapsedExpandedState(), this.autoRestoreSortingState(), this.resetSizeOfWrapperDiv(), this.adjustContainersAndRows(), this.autoRestoreScrollPosition(), this;
5007
5148
  }
5149
+ /**
5150
+ * Releases the table: removes all DOM listeners (host element, scroll viewport, window resize),
5151
+ * stops the resize observer, unregisters from the selection and focus model, calls the cleanup
5152
+ * functions of all cell renderers and clears the host element.
5153
+ *
5154
+ * Call it before you create a new `TableScope` for the same host element (e.g. when a framework
5155
+ * wrapper receives a new table model) or when the table is removed from the page.
5156
+ * Calling it twice is harmless.
5157
+ *
5158
+ * @example
5159
+ * const scope = new TableScope(hostDiv, tableModel, new SimpleDomService(), new TableOptions(), new EventAdapter());
5160
+ * scope.firstInit();
5161
+ * // later, e.g. when a new model arrives:
5162
+ * scope.destroy();
5163
+ * new TableScope(hostDiv, newTableModel, new SimpleDomService(), new TableOptions(), new EventAdapter()).firstInit();
5164
+ */
5165
+ destroy() {
5166
+ if (this.destroyed)
5167
+ return;
5168
+ this.destroyed = !0, this.listenerAbortController.abort(), this.resizeHandler.disconnect();
5169
+ const e = this.getSelectionModel ? this.getSelectionModel() : void 0;
5170
+ e == null || e.removeEventSelectionChangedListener(this);
5171
+ const t = this.getFocusModel ? this.getFocusModel() : void 0;
5172
+ t == null || t.removeEventFocusChangedListener(this), this.disposeRendering(), this.hostElement.innerText = "";
5173
+ }
5174
+ /**
5175
+ * Returns `true` once {@link destroy} has been called.
5176
+ */
5177
+ isDestroyed() {
5178
+ return this.destroyed;
5179
+ }
5008
5180
  /**
5009
5181
  * Creates a GeMouseEvent object based on a MouseEvent.
5010
5182
  *
@@ -5012,7 +5184,7 @@ class He extends ct {
5012
5184
  * @return {GeMouseEvent} - The created GeMouseEvent object.
5013
5185
  */
5014
5186
  createGeMouseEvent(e) {
5015
- const t = new ue();
5187
+ const t = new be();
5016
5188
  if (t.originalEvent = e, e) {
5017
5189
  const s = e.target;
5018
5190
  if ([t.areaIdent, t.sideIdent] = this.getAreaAndSideIdentByAttr(s), t.rowIndex = this.getNumberByAttr(s, "data-row-index"), t.columnIndex = this.getNumberByAttr(s, "data-col-index"), t.action = this.getStringByAttr(s, "data-ge-action"), t.areaIdent) {
@@ -5042,7 +5214,8 @@ class He extends ct {
5042
5214
  * @param startMouseEvent
5043
5215
  */
5044
5216
  mouseDraggingOnFrame(e, t) {
5045
- this.eventListener.onMouseDragging(e), this.mouseEvent = e, this.mouseStartColumnIndex > -1 && this.mouseStartAction === "resize-column" && this.tableOptions.columnsResizable ? this.resizeColumn(e) : this.mouseStartAction === "drag-column" && e.columnIndex > -1 && this.tableOptions.columnsDraggable && (this.draggingTargetColumnIndex = e.columnIndex, this.dragTo = this.draggingTargetColumnIndex, this.dragFrom > -1 && this.dragTo > -1 && this.dragFrom !== this.dragTo && (this.lastDragFrom === this.dragTo && this.lastDragTo === this.dragFrom || (this.tableModel.changeColumnOrder(this.dragFrom, this.dragTo), this.lastDragFrom = this.dragFrom, this.lastDragTo = this.dragTo, this.dragFrom = this.dragTo, this.resetSizeOfWrapperDiv(), this.adjustContainersAndRows())), t && (this.adjustDraggingColumn(e, t.columnIndex, this.firstDraggingRendering), this.firstDraggingRendering = !1), this.repaint());
5217
+ var s, o;
5218
+ (o = (s = this.eventListener).onMouseDragging) == null || o.call(s, e), this.mouseEvent = e, this.mouseStartColumnIndex > -1 && this.mouseStartAction === "resize-column" && this.tableOptions.columnsResizable ? this.resizeColumn(e) : this.mouseStartAction === "drag-column" && e.columnIndex > -1 && this.tableOptions.columnsDraggable && (this.draggingTargetColumnIndex = e.columnIndex, this.dragTo = this.draggingTargetColumnIndex, this.dragFrom > -1 && this.dragTo > -1 && this.dragFrom !== this.dragTo && (this.lastDragFrom === this.dragTo && this.lastDragTo === this.dragFrom || (this.tableModel.changeColumnOrder(this.dragFrom, this.dragTo), this.lastDragFrom = this.dragFrom, this.lastDragTo = this.dragTo, this.dragFrom = this.dragTo, this.resetSizeOfWrapperDiv(), this.adjustContainersAndRows())), t && (this.adjustDraggingColumn(e, t.columnIndex, this.firstDraggingRendering), this.firstDraggingRendering = !1), this.repaint());
5046
5219
  }
5047
5220
  /**
5048
5221
  * Handles the end of mouse dragging event on a frame.
@@ -5052,7 +5225,8 @@ class He extends ct {
5052
5225
  * @returns {void}
5053
5226
  */
5054
5227
  mouseDraggingEndOnFrame(e) {
5055
- this.eventListener.onMouseDraggingEnd(e), this.draggingTargetColumnIndex = -1, this.mouseStartAction === "resize-column" ? this.resizeColumn(e) : this.mouseStartAction === "drag-column" && (this.hideDraggingColumn(), this.repaint()), this.mouseStartWidth = -1, this.mouseStartColumnIndex = -1, this.dragFrom = -1, this.dragTo = -1, this.firstDraggingRendering = !0, this.mouseStartAction = "";
5228
+ var t, s;
5229
+ (s = (t = this.eventListener).onMouseDraggingEnd) == null || s.call(t, e), this.draggingTargetColumnIndex = -1, this.mouseStartAction === "resize-column" ? this.resizeColumn(e) : this.mouseStartAction === "drag-column" && (this.hideDraggingColumn(), this.repaint()), this.mouseStartWidth = -1, this.mouseStartColumnIndex = -1, this.dragFrom = -1, this.dragTo = -1, this.firstDraggingRendering = !0, this.mouseStartAction = "";
5056
5230
  }
5057
5231
  /**
5058
5232
  * Handles the mouse move event.
@@ -5061,7 +5235,8 @@ class He extends ct {
5061
5235
  * @return {void}
5062
5236
  */
5063
5237
  mouseMove(e) {
5064
- this.eventListener.onMouseMoved(e), this.adjustHoverRows(e), this.adjustHoverColumns(e);
5238
+ var t, s;
5239
+ (s = (t = this.eventListener).onMouseMoved) == null || s.call(t, e), this.adjustHoverRows(e), this.adjustHoverColumns(e);
5065
5240
  }
5066
5241
  /**
5067
5242
  * Triggers the context menu event based on the mouse move event.
@@ -5070,13 +5245,13 @@ class He extends ct {
5070
5245
  * @return {void}
5071
5246
  */
5072
5247
  contextmenu(e) {
5073
- var s, o;
5248
+ var s, o, i, r;
5074
5249
  const t = Date.now();
5075
5250
  if (t - this.lastContextmenu < 50) {
5076
5251
  this.lastContextmenu = t, (s = e.originalEvent) == null || s.preventDefault(), (o = e.originalEvent) == null || o.stopImmediatePropagation();
5077
5252
  return;
5078
5253
  }
5079
- this.lastContextmenu = t, this.eventListener.onContextmenu(e);
5254
+ this.lastContextmenu = t, (r = (i = this.eventListener).onContextmenu) == null || r.call(i, e);
5080
5255
  }
5081
5256
  /**
5082
5257
  * Toggles the expand or collapse state of all items in the body area model.
@@ -5088,7 +5263,7 @@ class He extends ct {
5088
5263
  toggleExpandCollapseAll(e = !0) {
5089
5264
  var s;
5090
5265
  const t = this.tableModel.getBodyModel();
5091
- re(t) && (t.toggleExpandCollapseAll(e), this.repaint(), (s = this.storeStateCollapsedExpandService) == null || s.collapsedStateAll(e));
5266
+ de(t) && (t.toggleExpandCollapseAll(e), this.repaint(), (s = this.storeStateCollapsedExpandService) == null || s.collapsedStateAll(e));
5092
5267
  }
5093
5268
  /**
5094
5269
  * Toggles the checkbox state of a specific row in a table.
@@ -5100,11 +5275,11 @@ class He extends ct {
5100
5275
  * @return {void} - This method does not return anything.
5101
5276
  */
5102
5277
  toggleRowCheckbox(e, t, s) {
5103
- var l;
5278
+ var l, a, c;
5104
5279
  const o = this.tableModel.getAreaModel(s), i = o.isRowChecked(e), r = i === void 0 || i === "semi" || i === "none";
5105
5280
  o.setRowChecked(e, r), this.repaint();
5106
5281
  const n = (l = o.rowSelectionModel) == null ? void 0 : l.getCheckedRows();
5107
- this.eventListener.onCheckboxChanged(n || []);
5282
+ (c = (a = this.eventListener).onCheckboxChanged) == null || c.call(a, n || []);
5108
5283
  }
5109
5284
  /**
5110
5285
  * Handle mouse click events.
@@ -5126,13 +5301,16 @@ class He extends ct {
5126
5301
  this.debounce(this.repaint.bind(this), 1);
5127
5302
  }
5128
5303
  publishGeMouseEvent(e) {
5129
- this.eventListener.onMouseClicked(e);
5304
+ var t, s;
5305
+ (s = (t = this.eventListener).onMouseClicked) == null || s.call(t, e);
5130
5306
  }
5131
5307
  onFocusChanged(e) {
5132
- this.eventListener.onFocusChanged(e);
5308
+ var t, s;
5309
+ (s = (t = this.eventListener).onFocusChanged) == null || s.call(t, e);
5133
5310
  }
5134
5311
  onSelectionChanged(e) {
5135
- this.eventListener.onSelectionChanged(e);
5312
+ var t, s;
5313
+ (s = (t = this.eventListener).onSelectionChanged) == null || s.call(t, e);
5136
5314
  }
5137
5315
  /**
5138
5316
  * Updates the table (repaint) when an external filter is changed.
@@ -5158,7 +5336,7 @@ class He extends ct {
5158
5336
  const o = this.tableModel.getColumnDef(s);
5159
5337
  if (o != null && o.sortable && o.sortable()) {
5160
5338
  e.preventDefault(), e.stopPropagation();
5161
- const n = o.sortStatesOrder ? o.sortStatesOrder : this.tableOptions.sortOrder, l = o.sortState ?? "", a = n[(n.indexOf(l) + 1) % n.length], c = new dt(s, a);
5339
+ const n = o.sortStatesOrder ? o.sortStatesOrder : this.tableOptions.sortOrder, l = o.sortState ?? "", a = n[(n.indexOf(l) + 1) % n.length], c = new pt(s, a);
5162
5340
  this.tableModel.doSort([c]) && ((i = this.tableModel.getColumnDefs()) == null || i.forEach((u) => u.sortState = ""), o.sortState = a), this.repaint(), (r = this.storeSortingService) == null || r.setSortItems([c]);
5163
5341
  }
5164
5342
  }
@@ -5171,6 +5349,14 @@ class He extends ct {
5171
5349
  * @return {void}
5172
5350
  */
5173
5351
  scrollToPixel(e, t) {
5352
+ if (this.isScrollHeightCapped()) {
5353
+ const s = this.getContentScrollRangeY(), o = this.getScrollerRangeY();
5354
+ if (s > 0 && o > 0) {
5355
+ const i = Math.min(s, Math.max(0, t)), r = i / s * o;
5356
+ this.scrollViewport.scrollTo(e, r), this.pendingContentScroll = { scrollTop: this.scrollViewport.scrollTop, contentTop: i }, this.adjustAfterScrolling();
5357
+ return;
5358
+ }
5359
+ }
5174
5360
  this.scrollViewport.scrollTo(e, t);
5175
5361
  }
5176
5362
  /**
@@ -5185,9 +5371,10 @@ class He extends ct {
5185
5371
  this.scrollToPixel(0, o);
5186
5372
  }
5187
5373
  adjustAfterScrolling() {
5374
+ var t, s;
5188
5375
  super.adjustAfterScrolling();
5189
5376
  const e = this.scrollViewport;
5190
- this.eventListener.onScroll(new pt(
5377
+ (s = (t = this.eventListener).onScroll) == null || s.call(t, new mt(
5191
5378
  this.scrollTop,
5192
5379
  this.scrollLeft,
5193
5380
  e.scrollHeight,
@@ -5318,7 +5505,7 @@ class He extends ct {
5318
5505
  const s = this.tableOptions.autoRestoreOptions, o = s.getRowId;
5319
5506
  if (s.autoRestoreCollapsedExpandedState && o) {
5320
5507
  const i = this.storeStateCollapsedExpandService.collapsedExpandedStateGet(), r = this.tableModel.getAreaModel("body");
5321
- if (re(r)) {
5508
+ if (de(r)) {
5322
5509
  const n = r, l = r.getRowCount();
5323
5510
  for (let a = 0; a < l; a++) {
5324
5511
  const c = r.getRowByIndex(a);
@@ -5366,10 +5553,10 @@ class He extends ct {
5366
5553
  reSort() {
5367
5554
  var t;
5368
5555
  let e = ((t = this.storeSortingService) == null ? void 0 : t.getSortItems()) ?? [];
5369
- this.tableModel.doSort(e);
5556
+ this.tableModel.doSort(e), this.repaint();
5370
5557
  }
5371
5558
  sort(e) {
5372
- this.tableModel.sort(e);
5559
+ this.tableModel.sort(e), this.repaint();
5373
5560
  }
5374
5561
  /**
5375
5562
  * Ensures that a specific row is visible in the viewport by scrolling if necessary.
@@ -5427,16 +5614,16 @@ class He extends ct {
5427
5614
  return e < t ? (this.scrollToIndex(0, e), !0) : e > s ? (this.scrollToIndex(0, e - o + 1), !0) : !1;
5428
5615
  }
5429
5616
  }
5430
- class Yt extends ne {
5617
+ class qt extends he {
5431
5618
  constructor(e) {
5432
5619
  super(), this.onCheckboxChangedCallback = e, super.onCheckboxChanged = (t) => {
5433
5620
  this.onCheckboxChangedCallback(t);
5434
5621
  };
5435
5622
  }
5436
5623
  }
5437
- const Z = class Z {
5624
+ const ie = class ie {
5438
5625
  };
5439
- Z.themes = ["light", "combat", "paper", "blackboard"], Z.vars = {
5626
+ ie.themes = ["light", "combat", "paper", "blackboard"], ie.vars = {
5440
5627
  light: `html[data-theme="light"] {
5441
5628
  --ge-table-bg: rgba(255,255,255, 0.5);
5442
5629
  --ge-table-header-west-bg: rgba(233, 233, 233, 0.5);
@@ -5670,28 +5857,28 @@ Z.themes = ["light", "combat", "paper", "blackboard"], Z.vars = {
5670
5857
  --ge-table-drop-zone-bg: #758129;
5671
5858
  }`
5672
5859
  };
5673
- let ve = Z;
5674
- class Re {
5860
+ let Ie = ie;
5861
+ class Ee {
5675
5862
  constructor(e, t = !0, s, o, i = 0, r = !1, n = !1) {
5676
5863
  this.data = e, this.expanded = t, this.children = s, this.parent = o, this.deep = i, this.checked = r, this.keep = n, this.type = "TreeRow";
5677
5864
  }
5678
5865
  }
5679
- class le {
5866
+ class ue {
5680
5867
  static buildTreeRows(e, t = "children", s = 12) {
5681
5868
  const o = [];
5682
5869
  for (const i of e)
5683
- o.push(le.buildTreeRow(i, t, void 0, 0, s));
5870
+ o.push(ue.buildTreeRow(i, t, void 0, 0, s));
5684
5871
  return o;
5685
5872
  }
5686
- static buildTreeRow(e, t = "children", s = new Re(e, !0, [], void 0, 0), o = 0, i = 12) {
5873
+ static buildTreeRow(e, t = "children", s = new Ee(e, !0, [], void 0, 0), o = 0, i = 12) {
5687
5874
  var n;
5688
5875
  if (o > i)
5689
5876
  return console.warn("Max deep limit reached: ", o), s;
5690
5877
  const r = e[t];
5691
5878
  if (r)
5692
5879
  for (const l of r) {
5693
- const a = new Re(l, !0, [], s, o + 1);
5694
- if ((n = s.children) == null || n.push(a), le.buildTreeRow(
5880
+ const a = new Ee(l, !0, [], s, o + 1);
5881
+ if ((n = s.children) == null || n.push(a), ue.buildTreeRow(
5695
5882
  l,
5696
5883
  t,
5697
5884
  a,
@@ -5702,20 +5889,20 @@ class le {
5702
5889
  return s;
5703
5890
  }
5704
5891
  }
5705
- class z {
5892
+ class Y {
5706
5893
  constructor(e = 34, t = 34, s = 34) {
5707
5894
  this.header = e, this.body = t, this.footer = s;
5708
5895
  }
5709
5896
  }
5710
- class y {
5897
+ class b {
5711
5898
  constructor(e = 100, t = "px") {
5712
5899
  this.value = e, this.unit = t;
5713
5900
  }
5714
5901
  }
5715
- const Mt = () => !0, Ae = () => !1;
5716
- class H {
5717
- constructor(e, t, s = new y(100, "px"), o = new T(), i = new T(), r = new y(100, "px"), n = new y(100, "px"), l, a, c, h, u, f, p, m, g = () => this.visible) {
5718
- 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"));
5902
+ const kt = () => !0, Te = () => !1;
5903
+ class W {
5904
+ constructor(e, t, s = new b(100, "px"), o = new T(), i = new T(), r = new b(100, "px"), n = new b(100, "px"), l, a, c, h, u, f, p, m, g = () => this.visible) {
5905
+ 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 b(0, "px"), this.maxWidth = new b(1e5, "px"));
5719
5906
  }
5720
5907
  static bodyRenderer(e) {
5721
5908
  return new T(
@@ -5733,15 +5920,15 @@ class H {
5733
5920
  e.headerClasses,
5734
5921
  e.bodyClasses,
5735
5922
  e.footerClasses
5736
- ), o = e.sortIconVisible ?? e.sortable ?? Ae, i = e.editable ?? e.editable ?? Ae, r = e.isVisible ?? e.isVisible ?? Mt;
5737
- return new H(
5923
+ ), o = e.sortIconVisible ?? e.sortable ?? Te, i = e.editable ?? e.editable ?? Te, r = e.isVisible ?? e.isVisible ?? kt;
5924
+ return new W(
5738
5925
  e.property ?? "",
5739
5926
  e.headerLabel ?? "",
5740
- e.width ?? new y(100, "px"),
5927
+ e.width ?? new b(100, "px"),
5741
5928
  s,
5742
5929
  t,
5743
- e.minWidth ?? new y(100, "px"),
5744
- e.maxWidth ?? new y(100, "px"),
5930
+ e.minWidth ?? new b(100, "px"),
5931
+ e.maxWidth ?? new b(100, "px"),
5745
5932
  e.sortable,
5746
5933
  e.sortComparator,
5747
5934
  e.sortState,
@@ -5754,8 +5941,8 @@ class H {
5754
5941
  );
5755
5942
  }
5756
5943
  }
5757
- const Kt = new y(500, "px"), Xt = new y(400, "px"), It = new y(300, "px"), Jt = new y(290, "px"), qt = new y(280, "px"), Zt = new y(270, "px"), Qt = new y(260, "px"), es = new y(250, "px"), ts = new y(240, "px"), ss = new y(230, "px"), os = new y(220, "px"), is = new y(210, "px"), Me = new y(200, "px"), rs = new y(190, "px"), ns = new y(180, "px"), ls = new y(170, "px"), as = new y(160, "px"), cs = new y(150, "px"), ds = new y(140, "px"), hs = new y(130, "px"), us = new y(120, "px"), ps = new y(110, "px"), gs = new y(100, "px"), fs = new y(90, "px"), ms = new y(80, "px"), bs = new y(70, "px"), ys = new y(60, "px"), ws = new y(50, "px"), xs = new y(40, "px"), Ss = new y(30, "px"), Cs = new y(20, "px"), vs = new y(10, "px"), Rs = new y(0, "px");
5758
- class P extends pe {
5944
+ const Zt = new b(500, "px"), Qt = new b(400, "px"), Dt = new b(300, "px"), es = new b(290, "px"), ts = new b(280, "px"), ss = new b(270, "px"), os = new b(260, "px"), is = new b(250, "px"), rs = new b(240, "px"), ns = new b(230, "px"), ls = new b(220, "px"), as = new b(210, "px"), ke = new b(200, "px"), cs = new b(190, "px"), ds = new b(180, "px"), hs = new b(170, "px"), us = new b(160, "px"), ps = new b(150, "px"), gs = new b(140, "px"), fs = new b(130, "px"), ms = new b(120, "px"), bs = new b(110, "px"), ys = new b(100, "px"), ws = new b(90, "px"), xs = new b(80, "px"), Ss = new b(70, "px"), Cs = new b(60, "px"), vs = new b(50, "px"), Rs = new b(40, "px"), As = new b(30, "px"), Ms = new b(20, "px"), Is = new b(10, "px"), Es = new b(0, "px");
5945
+ class F extends ye {
5759
5946
  constructor(e, t, s, o = []) {
5760
5947
  super(e, o, s), this.areaIdent = e, this.arr = t, this.defaultRowHeight = s, this.columnDefs = o, this.filteredArr = [...t];
5761
5948
  }
@@ -5779,11 +5966,20 @@ class P extends pe {
5779
5966
  getRowHeight(e) {
5780
5967
  return this.defaultRowHeight;
5781
5968
  }
5969
+ /**
5970
+ * All rows share `defaultRowHeight` – unless a subclass overrides `getRowHeight()`, then row heights may
5971
+ * vary and `undefined` is returned.
5972
+ *
5973
+ * @returns {number | undefined} The constant row height or `undefined`.
5974
+ */
5975
+ getConstantRowHeight() {
5976
+ return this.getRowHeight === F.prototype.getRowHeight && this.defaultRowHeight > 0 ? this.defaultRowHeight : void 0;
5977
+ }
5782
5978
  changeColumnOrder(e, t) {
5783
5979
  this.filteredArr.forEach((s) => this.arrayMove(s, e, t)), super.changeColumnOrder(e, t);
5784
5980
  }
5785
5981
  }
5786
- class k {
5982
+ class P {
5787
5983
  constructor(e = "body") {
5788
5984
  this.areaIdent = e, this.rowSelectionModel = void 0;
5789
5985
  }
@@ -5857,7 +6053,7 @@ class k {
5857
6053
  changeColumnOrder(e, t) {
5858
6054
  }
5859
6055
  }
5860
- class Et {
6056
+ class Ft {
5861
6057
  flattenTree(e, t = []) {
5862
6058
  var s;
5863
6059
  for (const o of e)
@@ -5868,9 +6064,9 @@ class Et {
5868
6064
  return e.parent ? e.parent.expanded ? this.isVisible(e.parent) : !1 : !0;
5869
6065
  }
5870
6066
  }
5871
- class Ie extends pe {
6067
+ class se extends ye {
5872
6068
  constructor(e, t, s, o = []) {
5873
- super(e, o, s), this.areaIdent = e, this.rows = t, this.defaultRowHeight = s, this.columnDefs = o, this.type = "AreaModelTree", this.sorterService = new ge(), this.service = new Et(), this.properties = o.map((i) => i.property), this.flattenRows = this.service.flattenTree(t), this.filteredFlattenRows = [...this.flattenRows];
6069
+ super(e, o, s), this.areaIdent = e, this.rows = t, this.defaultRowHeight = s, this.columnDefs = o, this.type = "AreaModelTree", this.sorterService = new we(), this.service = new Ft(), this.properties = o.map((i) => i.property), this.flattenRows = this.service.flattenTree(t), this.filteredFlattenRows = [...this.flattenRows];
5874
6070
  }
5875
6071
  changeColumnOrder(e, t) {
5876
6072
  this.arrayMove(this.properties, e, t), super.changeColumnOrder(e, t);
@@ -5899,6 +6095,15 @@ class Ie extends pe {
5899
6095
  getRowHeight(e) {
5900
6096
  return this.defaultRowHeight;
5901
6097
  }
6098
+ /**
6099
+ * All rows share `defaultRowHeight` – unless a subclass overrides `getRowHeight()`, then row heights may
6100
+ * vary and `undefined` is returned.
6101
+ *
6102
+ * @returns {number | undefined} The constant row height or `undefined`.
6103
+ */
6104
+ getConstantRowHeight() {
6105
+ return this.getRowHeight === se.prototype.getRowHeight && this.defaultRowHeight > 0 ? this.defaultRowHeight : void 0;
6106
+ }
5902
6107
  getCustomClassesAt(e, t) {
5903
6108
  return ["ge-table-tree-cell", "ge-table-tree-deep-" + this.filteredFlattenRows[e].deep];
5904
6109
  }
@@ -5974,7 +6179,7 @@ class Ie extends pe {
5974
6179
  o.children && this.treeSort(o.children, t, s);
5975
6180
  }
5976
6181
  }
5977
- class Ee {
6182
+ class De {
5978
6183
  constructor(e = []) {
5979
6184
  this.allRootNodes = e;
5980
6185
  }
@@ -6034,12 +6239,12 @@ class Ee {
6034
6239
  s.checked && t.push(s), s.children && this.addSelectedRecursive(s.children, t);
6035
6240
  }
6036
6241
  }
6037
- class ae {
6242
+ class pe {
6038
6243
  constructor(e = 0, t = 0, s = 0, o = 0) {
6039
6244
  this.top = e, this.right = t, this.bottom = s, this.left = o;
6040
6245
  }
6041
6246
  }
6042
- class Tt {
6247
+ class Pt {
6043
6248
  constructor() {
6044
6249
  this.checkedRows = [];
6045
6250
  }
@@ -6070,11 +6275,11 @@ class Tt {
6070
6275
  }
6071
6276
  }
6072
6277
  }
6073
- class oe {
6074
- constructor(e, t, s, o = 0, i = 0, r = !1, n = new z(), l = [], a = [], c = -1, h = 0, u = 400, f = () => {
6278
+ class ae {
6279
+ constructor(e, t, s, o = 0, i = 0, r = !1, n = new Y(), l = [], a = [], c = -1, h = 0, u = 400, f = () => {
6075
6280
  }) {
6076
- var p, m, g, b;
6077
- 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 ae(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());
6281
+ var p, m, g, y;
6282
+ 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 pe(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)), (y = this.columnDefs) != null && y.length && st(this.columnDefs[0]) && !t.rowSelectionModel && (t.rowSelectionModel = new Pt());
6078
6283
  }
6079
6284
  init() {
6080
6285
  this.recalcSize(this.parentSize), this.overridingColumnWidth === -1 && this.calcXPositions(), this.headerAreaModel && this.headerAreaModel.init(), this.bodyAreaModel && this.bodyAreaModel.init(), this.footerAreaModel && this.footerAreaModel.init();
@@ -6158,7 +6363,7 @@ class oe {
6158
6363
  */
6159
6364
  recalcPadding() {
6160
6365
  const e = this.getSideAreaWidth("west"), t = this.getSideAreaWidth("east"), s = this.getAreaHeight("header"), o = this.getAreaHeight("footer");
6161
- this.padding = new ae(
6366
+ this.padding = new pe(
6162
6367
  s,
6163
6368
  t,
6164
6369
  o,
@@ -6463,7 +6668,7 @@ class oe {
6463
6668
  return this.tableScope;
6464
6669
  }
6465
6670
  }
6466
- class Te extends _ {
6671
+ class Fe extends _ {
6467
6672
  /**
6468
6673
  * Creates an instance of AreaModelObjectArrayWithColumndefs.
6469
6674
  *
@@ -6547,7 +6752,7 @@ class $ {
6547
6752
  if ((t = e.tableOptions) != null && t.defaultRowHeights)
6548
6753
  e.defaultRowHeights = e.tableOptions.defaultRowHeights;
6549
6754
  else {
6550
- if (e.defaultRowHeights = new z(), e.headerAreaModel && "defaultRowHeight" in e.headerAreaModel) {
6755
+ if (e.defaultRowHeights = new Y(), e.headerAreaModel && "defaultRowHeight" in e.headerAreaModel) {
6551
6756
  const g = e.headerAreaModel.defaultRowHeight;
6552
6757
  g > -1 && (e.defaultRowHeights.header = g);
6553
6758
  }
@@ -6560,44 +6765,44 @@ class $ {
6560
6765
  g > -1 && (e.defaultRowHeights.footer = g);
6561
6766
  }
6562
6767
  }
6563
- if (e.columnDefs === void 0 && ((s = e.properties) != null && s.length ? e.columnDefs = e.properties.map((g) => new H(g, g.toUpperCase(), Me)) : (o = e.rows) != null && o.length ? e.columnDefs = Object.keys(e.rows[0]).map((g) => new H(g, g.toUpperCase(), Me)) : 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(
6768
+ if (e.columnDefs === void 0 && ((s = e.properties) != null && s.length ? e.columnDefs = e.properties.map((g) => new W(g, g.toUpperCase(), ke)) : (o = e.rows) != null && o.length ? e.columnDefs = Object.keys(e.rows[0]).map((g) => new W(g, g.toUpperCase(), ke)) : 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 F(
6564
6769
  "header",
6565
6770
  e.headerData,
6566
6771
  e.defaultRowHeights.header,
6567
6772
  e.columnDefs
6568
- ) : (c = e.columnDefs) != null && c.length ? e.headerAreaModel = new P(
6773
+ ) : (c = e.columnDefs) != null && c.length ? e.headerAreaModel = new F(
6569
6774
  "header",
6570
6775
  [e.columnDefs.map((g) => g.headerLabel)],
6571
6776
  e.defaultRowHeights.header,
6572
6777
  e.columnDefs
6573
- ) : e.headerAreaModel = new k("header")), e.footerAreaModel || ((h = e.footerData) != null && h.length ? e.footerAreaModel = new P(
6778
+ ) : e.headerAreaModel = new P("header")), e.footerAreaModel || ((h = e.footerData) != null && h.length ? e.footerAreaModel = new F(
6574
6779
  "footer",
6575
6780
  e.footerData,
6576
6781
  e.defaultRowHeights.footer,
6577
6782
  e.columnDefs
6578
- ) : e.footerAreaModel = new k("footer")), !e.bodyAreaModel)
6783
+ ) : e.footerAreaModel = new P("footer")), !e.bodyAreaModel)
6579
6784
  if (e.rows)
6580
- if ((u = e.rows) != null && u.length && G(e.rows[0])) {
6785
+ if ((u = e.rows) != null && u.length && j(e.rows[0])) {
6581
6786
  const g = e.rows;
6582
- e.bodyAreaModel = new Ie(
6787
+ e.bodyAreaModel = new se(
6583
6788
  "body",
6584
6789
  g,
6585
6790
  e.defaultRowHeights.body,
6586
6791
  e.columnDefs
6587
- ), (e.columnDefs[0].property === "CheckboxColumn" || (f = e.tableOptions) != null && f.showCheckboxWihoutExtraColumn) && (e.bodyAreaModel.rowSelectionModel = new Ee(g));
6792
+ ), (e.columnDefs[0].property === "CheckboxColumn" || (f = e.tableOptions) != null && f.showCheckboxWihoutExtraColumn) && (e.bodyAreaModel.rowSelectionModel = new De(g));
6588
6793
  } else
6589
- e.bodyAreaModel = new Te(
6794
+ e.bodyAreaModel = new Fe(
6590
6795
  "body",
6591
6796
  e.rows,
6592
6797
  e.columnDefs,
6593
6798
  e.defaultRowHeights.body
6594
6799
  );
6595
- else e.bodyData ? e.bodyAreaModel = new P(
6800
+ else e.bodyData ? e.bodyAreaModel = new F(
6596
6801
  "body",
6597
6802
  e.bodyData,
6598
6803
  e.defaultRowHeights.body
6599
- ) : e.bodyAreaModel = new k("body");
6600
- return e.fixedLeftColumnCount === void 0 && (e.fixedLeftColumnCount = 0), e.fixedRightColumnCount === void 0 && (e.fixedRightColumnCount = 0), e.rowCheckboxVisible === void 0 && (e.rowCheckboxVisible = !1), e.overridingColumnWidth === void 0 && (e.overridingColumnWidth = -1), !e.getSelectionModel && ((p = e.tableOptions) != null && p.getSelectionModel) && (e.getSelectionModel = (m = e.tableOptions) == null ? void 0 : m.getSelectionModel), new oe(
6804
+ ) : e.bodyAreaModel = new P("body");
6805
+ return e.fixedLeftColumnCount === void 0 && (e.fixedLeftColumnCount = 0), e.fixedRightColumnCount === void 0 && (e.fixedRightColumnCount = 0), e.rowCheckboxVisible === void 0 && (e.rowCheckboxVisible = !1), e.overridingColumnWidth === void 0 && (e.overridingColumnWidth = -1), !e.getSelectionModel && ((p = e.tableOptions) != null && p.getSelectionModel) && (e.getSelectionModel = (m = e.tableOptions) == null ? void 0 : m.getSelectionModel), new ae(
6601
6806
  e.headerAreaModel,
6602
6807
  e.bodyAreaModel,
6603
6808
  e.footerAreaModel,
@@ -6634,7 +6839,7 @@ class $ {
6634
6839
  return $.buildByTypedRows(
6635
6840
  e.rows ?? [],
6636
6841
  e.columnDefs,
6637
- e.tableOptions ?? new Y(),
6842
+ e.tableOptions ?? new J(),
6638
6843
  e.fixedLeftColumnCount ?? 0,
6639
6844
  e.fixedRightColumnCount ?? 0
6640
6845
  );
@@ -6675,19 +6880,19 @@ class $ {
6675
6880
  * columnDef is "CheckboxColumn". If the first column is not a checkbox column, ensure that the first columnDef does not have "CheckboxColumn"
6676
6881
  * as its property.
6677
6882
  */
6678
- static buildByTypedRows(e, t, s = new Y(), o = 0, i = 0) {
6883
+ static buildByTypedRows(e, t, s = new J(), o = 0, i = 0) {
6679
6884
  const r = s.defaultRowHeights, n = t[0].property === "CheckboxColumn";
6680
- if (e != null && e.length && G(e[0])) {
6681
- const a = e, c = new Ie(
6885
+ if (e != null && e.length && j(e[0])) {
6886
+ const a = e, c = new se(
6682
6887
  "body",
6683
6888
  a,
6684
6889
  r.body,
6685
6890
  t
6686
6891
  );
6687
- return (n || s.showCheckboxWihoutExtraColumn) && (c.rowSelectionModel = new Ee(a)), $.createByAreaModelsParam({
6688
- headerAreaModel: new P("header", [t.map((h) => h.headerLabel)], r.header),
6892
+ return (n || s.showCheckboxWihoutExtraColumn) && (c.rowSelectionModel = new De(a)), $.createByAreaModelsParam({
6893
+ headerAreaModel: new F("header", [t.map((h) => h.headerLabel)], r.header),
6689
6894
  bodyAreaModel: c,
6690
- footerAreaModel: new P("footer", [], r.footer),
6895
+ footerAreaModel: new F("footer", [], r.footer),
6691
6896
  columnDefs: t,
6692
6897
  fixedLeftColumnCount: o,
6693
6898
  fixedRightColumnCount: i,
@@ -6759,7 +6964,7 @@ class $ {
6759
6964
  e.fixedLeftColumnCount ?? 0,
6760
6965
  e.fixedRightColumnCount ?? 0,
6761
6966
  t,
6762
- e.defaultRowHeights ?? new z(),
6967
+ e.defaultRowHeights ?? new Y(),
6763
6968
  e.columnDefs ?? [],
6764
6969
  e.columnSizes ?? []
6765
6970
  );
@@ -6805,8 +7010,8 @@ class $ {
6805
7010
  * @return A new instance of `TableModel` is created using the provided parameters.
6806
7011
  * If a parameter isn't provided, the default value is used.
6807
7012
  */
6808
- static createByAreaModels(e = new k(), t, s = new k(), o = 0, i = 0, r = !1, n = new z(), l, a = [], c = -1, h) {
6809
- return new oe(
7013
+ static createByAreaModels(e = new P(), t, s = new P(), o = 0, i = 0, r = !1, n = new Y(), l, a = [], c = -1, h) {
7014
+ return new ae(
6810
7015
  e,
6811
7016
  t,
6812
7017
  s,
@@ -6858,9 +7063,9 @@ class $ {
6858
7063
  */
6859
7064
  static createByAreaModelsParam(e) {
6860
7065
  return $.createByAreaModels(
6861
- e.headerAreaModel ?? new k(),
7066
+ e.headerAreaModel ?? new P(),
6862
7067
  e.bodyAreaModel,
6863
- e.footerAreaModel ?? new k(),
7068
+ e.footerAreaModel ?? new P(),
6864
7069
  e.fixedLeftColumnCount ?? 0,
6865
7070
  e.fixedRightColumnCount ?? 0,
6866
7071
  e.rowCheckboxVisible === void 0 ? !1 : e.rowCheckboxVisible,
@@ -6919,11 +7124,11 @@ class $ {
6919
7124
  *
6920
7125
  * Reference: For more details regarding the `DefaultRowHeightsIf`, `ColumnDefIf`, `AreaModelIf`, and `AreaModelArrayOfArrays` classes/interfaces, please refer to the respective API documents.
6921
7126
  */
6922
- static createByObjectArray(e, t = [], s = [], o = 0, i = 0, r = !1, n = new z(), l, a = []) {
7127
+ static createByObjectArray(e, t = [], s = [], o = 0, i = 0, r = !1, n = new Y(), l, a = []) {
6923
7128
  let c;
6924
- 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 k();
6925
- const h = s ? new P("footer", s, n.footer, l) : new k(), u = new Te("body", e, l, n.body);
6926
- return new oe(
7129
+ t != null && t.length ? c = new F("header", t, n.header, l) : l != null && l.length ? c = new F("header", [l.map((f) => f.headerLabel)], n.header, l) : c = new P();
7130
+ const h = s ? new F("footer", s, n.footer, l) : new P(), u = new Fe("body", e, l, n.body);
7131
+ return new ae(
6927
7132
  c,
6928
7133
  u,
6929
7134
  h,
@@ -6936,9 +7141,9 @@ class $ {
6936
7141
  );
6937
7142
  }
6938
7143
  }
6939
- class kt {
7144
+ class _t {
6940
7145
  constructor(e, t, s = 200, o = 300, i = 0, r = 0) {
6941
- this.items = e, this.cellRenderer = t, this.coverWidth = s, this.coverHeight = o, this.width = i, this.firstRowPaddingTop = r, this.rowSelectionModel = void 0, this.areaIdent = "body", this.filteredItems = [], this.sorterService = new ge(), this.filteredItems = e;
7146
+ this.items = e, this.cellRenderer = t, this.coverWidth = s, this.coverHeight = o, this.width = i, this.firstRowPaddingTop = r, this.rowSelectionModel = void 0, this.areaIdent = "body", this.filteredItems = [], this.sorterService = new we(), this.filteredItems = e;
6942
7147
  }
6943
7148
  setParentWidth(e) {
6944
7149
  this.width = e;
@@ -7032,9 +7237,9 @@ class kt {
7032
7237
  arrayMove(e, t, s) {
7033
7238
  }
7034
7239
  }
7035
- class Dt {
7240
+ class Lt {
7036
7241
  constructor(e, t = 0) {
7037
- this.bodyModel = e, this.paddingTop = t, this.headerAreaModel = new k(), this.footerAreaModel = new k();
7242
+ this.bodyModel = e, this.paddingTop = t, this.headerAreaModel = new P(), this.footerAreaModel = new P();
7038
7243
  }
7039
7244
  changeColumnOrder(e, t) {
7040
7245
  }
@@ -7099,7 +7304,7 @@ class Dt {
7099
7304
  recalcHeightAndPadding() {
7100
7305
  }
7101
7306
  getPadding() {
7102
- return new ae(0, 0, 0, 0);
7307
+ return new pe(0, 0, 0, 0);
7103
7308
  }
7104
7309
  getContentHeightInPixel() {
7105
7310
  return this.paddingTop + this.bodyModel.getRowCount() * this.bodyModel.coverHeight;
@@ -7125,7 +7330,7 @@ class Dt {
7125
7330
  return this.tableScope;
7126
7331
  }
7127
7332
  }
7128
- class Ft {
7333
+ class Ot {
7129
7334
  constructor() {
7130
7335
  this.autoRestoreSortingState = !1, this.autoRestoreCollapsedExpandedState = !1, this.autoRestoreScrollPosition = !1, this.autoRestoreCheckedState = !1, this.autoRestoreSelectedState = !1, this.getStorageKeyFn = void 0, this.isSame = (e, t, s) => {
7131
7336
  if (e && t && s.getRowId) {
@@ -7150,14 +7355,14 @@ class Ft {
7150
7355
  };
7151
7356
  }
7152
7357
  }
7153
- class As {
7358
+ class Ts {
7154
7359
  static createCoverGridModel(e, t, s = 200, o = 300, i = 0, r = 0) {
7155
- const n = new kt(e, t, s, o, i, r);
7156
- return new Dt(n, r);
7360
+ const n = new _t(e, t, s, o, i, r);
7361
+ return new Lt(n, r);
7157
7362
  }
7158
7363
  static createCoverGrisDefaultOptions(e, t = () => "CoverGrid") {
7159
7364
  return {
7160
- ...new Y(),
7365
+ ...new J(),
7161
7366
  horizontalBorderVisible: !1,
7162
7367
  verticalBorderVisible: !1,
7163
7368
  footerSeparatorBorderVisible: !1,
@@ -7175,7 +7380,7 @@ class As {
7175
7380
  },
7176
7381
  // externalFilterFunction: this.filterFn.bind(this),
7177
7382
  autoRestoreOptions: {
7178
- ...new Ft(),
7383
+ ...new Ot(),
7179
7384
  getStorageKeyFn: t,
7180
7385
  autoRestoreCollapsedExpandedState: !1,
7181
7386
  autoRestoreScrollPosition: !0,
@@ -7185,7 +7390,7 @@ class As {
7185
7390
  };
7186
7391
  }
7187
7392
  }
7188
- const Ms = [
7393
+ const ks = [
7189
7394
  "COPY_2_CLIPBOARD",
7190
7395
  "START_EDITING",
7191
7396
  "TOGGLE_SELECTION",
@@ -7203,17 +7408,17 @@ const Ms = [
7203
7408
  // "PAGEUP_PRESSED",
7204
7409
  // "PAGEDOWN_PRESSED"
7205
7410
  ];
7206
- class Pt {
7411
+ class Vt {
7207
7412
  constructor(e, t) {
7208
7413
  this.tableModel = e, this.tableOptions = t;
7209
7414
  }
7210
7415
  }
7211
- class _t {
7416
+ class Ht {
7212
7417
  constructor(e, t, s, o, i, r, n) {
7213
7418
  this.emmitDataKey = e, this.emmitCancelKey = t, this.queryId = s, this.filter = o, this.sorting = i, this.startIndex = r, this.endIndex = n;
7214
7419
  }
7215
7420
  }
7216
- class Is extends _t {
7421
+ class Ds extends Ht {
7217
7422
  constructor(e, t, s, o, i, r, n, l) {
7218
7423
  super(
7219
7424
  e,
@@ -7226,30 +7431,30 @@ class Is extends _t {
7226
7431
  ), this.rows = l;
7227
7432
  }
7228
7433
  }
7229
- class Lt {
7434
+ class $t {
7230
7435
  constructor(e, t) {
7231
7436
  this.value = e, this.label = t;
7232
7437
  }
7233
7438
  }
7234
- class Es {
7439
+ class Fs {
7235
7440
  constructor(e, t) {
7236
7441
  this.index = e, this.px = t;
7237
7442
  }
7238
7443
  }
7239
- const Ts = { body: ["ge-table-text-align-left"] }, ks = { body: ["ge-table-text-align-center"] }, Ds = { body: ["ge-table-text-align-right"] }, Fs = {
7444
+ const Ps = { body: ["ge-table-text-align-left"] }, _s = { body: ["ge-table-text-align-center"] }, Ls = { body: ["ge-table-text-align-right"] }, Os = {
7240
7445
  header: ["ge-table-text-align-left"],
7241
7446
  body: ["ge-table-text-align-left"],
7242
7447
  footer: ["ge-table-text-align-left"]
7243
- }, Ps = {
7448
+ }, Vs = {
7244
7449
  header: ["ge-table-text-align-center"],
7245
7450
  body: ["ge-table-text-align-center"],
7246
7451
  footer: ["ge-table-text-align-center"]
7247
- }, _s = {
7452
+ }, Hs = {
7248
7453
  header: ["ge-table-text-align-right"],
7249
7454
  body: ["ge-table-text-align-right"],
7250
7455
  footer: ["ge-table-text-align-right"]
7251
7456
  };
7252
- class ke {
7457
+ class Pe {
7253
7458
  render(e, t, s, o, i, r, n) {
7254
7459
  if (i.isRowCheckable(t)) {
7255
7460
  n.addClass(e, "ge-table-row-checkbox-div");
@@ -7267,16 +7472,16 @@ class ke {
7267
7472
  }
7268
7473
  }
7269
7474
  }
7270
- class Ls {
7475
+ class $s {
7271
7476
  constructor() {
7272
- this.type = "CheckboxColumnDef", this.property = "CheckboxColumn", this.headerLabel = "", this.width = new y(50, "px"), this.minWidth = new y(50, "px"), this.maxWidth = new y(100, "px"), this.rendererMap = new T(new ke(), new ke(), void 0), this.classes = new T(
7477
+ this.type = "CheckboxColumnDef", this.property = "CheckboxColumn", this.headerLabel = "", this.width = new b(50, "px"), this.minWidth = new b(50, "px"), this.maxWidth = new b(100, "px"), this.rendererMap = new T(new Pe(), new Pe(), void 0), this.classes = new T(
7273
7478
  [],
7274
7479
  ["ge-table-text-align-left"],
7275
7480
  []
7276
7481
  );
7277
7482
  }
7278
7483
  }
7279
- class Os {
7484
+ class Bs {
7280
7485
  /**
7281
7486
  * A factory that creates a new AreaObjectMap with the given body renderer.
7282
7487
  *
@@ -7291,22 +7496,22 @@ class Os {
7291
7496
  );
7292
7497
  }
7293
7498
  }
7294
- class Vs {
7499
+ class Ws {
7295
7500
  constructor(e = "down", t) {
7296
7501
  this.status = e, this.originalEvent = t;
7297
7502
  }
7298
7503
  }
7299
- class $s {
7504
+ class Ns {
7300
7505
  constructor(e, t, s, o, i = {}) {
7301
7506
  this.area = e, this.rowIndex = t, this.columnIndex = s, this.value = o, this.cssClasses = i;
7302
7507
  }
7303
7508
  }
7304
- class Ot {
7509
+ class Bt {
7305
7510
  constructor(e, t, s, o = !1, i = "normal", r = void 0) {
7306
7511
  this.data = e, this.property = t, this.toggle = s, this.closed = o, this.visibility = i, this.children = r, this.impl = "CellGroup";
7307
7512
  }
7308
7513
  }
7309
- class Vt extends Ot {
7514
+ class Wt extends Bt {
7310
7515
  constructor(e, t = 0, s = 0, o) {
7311
7516
  super(
7312
7517
  e.data,
@@ -7402,7 +7607,7 @@ class E {
7402
7607
  static buildColumnDefs(e, t = []) {
7403
7608
  for (const s of e)
7404
7609
  s.property && t.push(
7405
- H.create({
7610
+ W.create({
7406
7611
  property: s.property,
7407
7612
  headerLabel: s.data ? s.data : s.property,
7408
7613
  isVisible: () => typeof s.isVisible == "function" ? s.isVisible() : !0
@@ -7431,7 +7636,7 @@ class E {
7431
7636
  static buildGroupExts(e, t = [], s = 0, o) {
7432
7637
  let i;
7433
7638
  for (let r = 0; r < e.length; r++) {
7434
- const n = e[r], l = new Vt(n, s, r, o);
7639
+ const n = e[r], l = new Wt(n, s, r, o);
7435
7640
  i && (l.leftNeighbour = i, i.rightNeighbour = l), t.push(l), n.children && (l.children = E.buildGroupExts(n.children, [], s + 1, l)), i = l;
7436
7641
  }
7437
7642
  return t;
@@ -7473,7 +7678,7 @@ class E {
7473
7678
  e.push(o.data + " rowIndex:" + o.rowIndex), (s = o.children) != null && s.length && E.iterateThrowColumns(e, o.children);
7474
7679
  }
7475
7680
  }
7476
- class Bs {
7681
+ class Gs {
7477
7682
  constructor() {
7478
7683
  this.areaIdent = "body", this.rowSelectionModel = void 0;
7479
7684
  }
@@ -7880,10 +8085,11 @@ class Bs {
7880
8085
  /**
7881
8086
  * Returns the Y-coordinate (in pixels) of the top of the row at the specified index.
7882
8087
  * This method is used for scrolling and positioning rows in the viewport.
7883
- * The base implementation returns 0 and should be overridden by
7884
- * subclasses that support scrolling.
8088
+ * The base implementation computes it from `getConstantRowHeight()` (O(1)) or by summing up
8089
+ * `getRowHeight()` of all rows above (O(n)) – override it for large models with variable row heights.
8090
+ * (Before 1.1.85 the base implementation returned 0.)
7885
8091
  *
7886
- * @param {number} _rowIndex - The index of the row
8092
+ * @param {number} rowIndex - The index of the row
7887
8093
  * @returns {number} The Y-coordinate of the top of the row, in pixels
7888
8094
  *
7889
8095
  * @example
@@ -7907,7 +8113,22 @@ class Bs {
7907
8113
  * }
7908
8114
  */
7909
8115
  getYPosByRowIndex(e) {
7910
- return 0;
8116
+ const t = this.getConstantRowHeight();
8117
+ if (t !== void 0 && t > 0)
8118
+ return e * t;
8119
+ let s = 0;
8120
+ for (let o = 0; o < e; o++)
8121
+ s += this.getRowHeight(o);
8122
+ return s;
8123
+ }
8124
+ /**
8125
+ * Returns the row height if all rows have the same height, otherwise `undefined` (default).
8126
+ * Override it together with `getRowHeight()` if your rows have a constant height – this makes rendering
8127
+ * of very large tables independent of the scroll position.
8128
+ *
8129
+ * @returns {number | undefined} `undefined` in the base implementation.
8130
+ */
8131
+ getConstantRowHeight() {
7911
8132
  }
7912
8133
  /**
7913
8134
  * Initializes the area model.
@@ -8095,14 +8316,14 @@ class Bs {
8095
8316
  return !1;
8096
8317
  }
8097
8318
  }
8098
- const Q = class Q {
8099
- constructor(e = new ye()) {
8319
+ const re = class re {
8320
+ constructor(e = new ve()) {
8100
8321
  this.headerGroupOptions = e;
8101
8322
  }
8102
8323
  render(e, t, s, o, i, r, n) {
8103
8324
  const l = r != null && r.data ? r.data : "";
8104
8325
  if (r) {
8105
- const { toggle: a, visibility: c, closed: h } = r, u = a ? Q.toggleHeaderGroup : "";
8326
+ const { toggle: a, visibility: c, closed: h } = r, u = a ? re.toggleHeaderGroup : "";
8106
8327
  this.addText(e, o, t, s, l, u), a && c !== "always" && this.addArrowDiv(n, e, !h, t, s, o, u);
8107
8328
  } else
8108
8329
  this.addText(e, o, t, s, l, "");
@@ -8134,11 +8355,11 @@ const Q = class Q {
8134
8355
  }
8135
8356
  }
8136
8357
  };
8137
- Q.toggleHeaderGroup = "toggleHeaderGroup";
8138
- let ce = Q;
8139
- class Hs {
8140
- constructor(e = "header", t, s = [], o, i = new ye()) {
8141
- 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 ce(this.headerGroupOptions), this.groupExts = E.buildGroupExts(t), this.init();
8358
+ re.toggleHeaderGroup = "toggleHeaderGroup";
8359
+ let ge = re;
8360
+ class zs {
8361
+ constructor(e = "header", t, s = [], o, i = new ve()) {
8362
+ 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 ge(this.headerGroupOptions), this.groupExts = E.buildGroupExts(t), this.init();
8142
8363
  }
8143
8364
  sort(e) {
8144
8365
  }
@@ -8238,7 +8459,7 @@ class Hs {
8238
8459
  return t != null && t.toggle && t.visibility !== "always" && (t.closed = !t.closed, this.init()), E.buildColumnDefs(this.groupExts);
8239
8460
  }
8240
8461
  }
8241
- class Ws {
8462
+ class js {
8242
8463
  filterPredict(e, t, s = this.objectToString.bind(this)) {
8243
8464
  if (!e)
8244
8465
  return !1;
@@ -8292,12 +8513,12 @@ class Ws {
8292
8513
  return t.join(" ").toLowerCase();
8293
8514
  }
8294
8515
  }
8295
- class Ns {
8516
+ class Us {
8296
8517
  static bodyRenderer(e) {
8297
8518
  return new T(void 0, e, void 0);
8298
8519
  }
8299
8520
  }
8300
- class Gs {
8521
+ class Ys {
8301
8522
  constructor(e, t = !0, s = !1) {
8302
8523
  this.property = e, this.skipCheckableCheck = t, this.readonly = s;
8303
8524
  }
@@ -8322,12 +8543,12 @@ class Gs {
8322
8543
  }
8323
8544
  }
8324
8545
  }
8325
- class zs {
8546
+ class Xs {
8326
8547
  render(e, t, s, o, i, r, n) {
8327
8548
  r && (e.innerText = new Date(r).toISOString());
8328
8549
  }
8329
8550
  }
8330
- class js {
8551
+ class Ks {
8331
8552
  constructor() {
8332
8553
  this.formatter = new Intl.DateTimeFormat("de-DE", {
8333
8554
  year: "numeric",
@@ -8350,17 +8571,17 @@ class js {
8350
8571
  }
8351
8572
  }
8352
8573
  }
8353
- class Us {
8574
+ class Js {
8354
8575
  render(e, t, s, o, i, r, n) {
8355
8576
  r && (e.innerText = new Date(r).toLocaleDateString());
8356
8577
  }
8357
8578
  }
8358
- class Ys {
8579
+ class qs {
8359
8580
  render(e, t, s, o, i, r, n) {
8360
8581
  r === "male" || r === "m" ? e.innerText = "♂" : (r === "female" || r === "f") && (e.innerText = "♀");
8361
8582
  }
8362
8583
  }
8363
- class Ks {
8584
+ class Zs {
8364
8585
  constructor(e = 100, t = !1) {
8365
8586
  this.maxValue = e, this.labelVisible = t;
8366
8587
  }
@@ -8390,17 +8611,17 @@ class Ks {
8390
8611
  }
8391
8612
  }
8392
8613
  }
8393
- class Xs {
8614
+ class Qs {
8394
8615
  render(e, t, s, o, i, r, n) {
8395
8616
  r === "true" || r === !0 ? e.innerHTML = '<span class="ge-true-text-color">✅</span>' : r === "false" || r === !1 ? e.innerHTML = '<span class="ge-false-text-color">❌</span>' : e.innerText = "";
8396
8617
  }
8397
8618
  }
8398
- class Js {
8619
+ class eo {
8399
8620
  render(e, t, s, o, i, r, n) {
8400
8621
  r && (e.innerText = new Date(r).toISOString().replace(/T/g, " ").replace(/\..*/g, ""));
8401
8622
  }
8402
8623
  }
8403
- class qs {
8624
+ class to {
8404
8625
  constructor(e = Number.MIN_SAFE_INTEGER, t = Number.MAX_SAFE_INTEGER) {
8405
8626
  this.min = e, this.max = t;
8406
8627
  }
@@ -8411,7 +8632,7 @@ class qs {
8411
8632
  </div>`, (typeof r == "string" || isNaN(r) || r < this.min || r > this.max) && n.addClass(e, "ge-cell-error"));
8412
8633
  }
8413
8634
  }
8414
- class Zs {
8635
+ class so {
8415
8636
  constructor(e) {
8416
8637
  this.property = e;
8417
8638
  }
@@ -8430,7 +8651,7 @@ class Zs {
8430
8651
  }
8431
8652
  }
8432
8653
  }
8433
- class Qs {
8654
+ class oo {
8434
8655
  render(e, t, s, o, i, r, n) {
8435
8656
  if (r != null && r.length) {
8436
8657
  const l = n.createElement("div");
@@ -8443,7 +8664,7 @@ class Qs {
8443
8664
  e.innerText = "";
8444
8665
  }
8445
8666
  }
8446
- class eo {
8667
+ class io {
8447
8668
  constructor(e, t = 100, s = !1) {
8448
8669
  this.property = e, this.maxValue = t, this.labelVisible = s;
8449
8670
  }
@@ -8475,7 +8696,7 @@ class eo {
8475
8696
  }
8476
8697
  }
8477
8698
  }
8478
- class to {
8699
+ class ro {
8479
8700
  render(e, t, s, o, i, r, n) {
8480
8701
  if (r) {
8481
8702
  e.innerHTML = `
@@ -8495,17 +8716,17 @@ class to {
8495
8716
  }
8496
8717
  }
8497
8718
  }
8498
- class We {
8719
+ class ze {
8499
8720
  constructor(e, t, s, o, i, r) {
8500
8721
  this.action = e, this.area = t, this.areaModel = s, this.rowIndex = o, this.columnIndex = i, this.id = r;
8501
8722
  }
8502
8723
  }
8503
- class V {
8724
+ class H {
8504
8725
  constructor(e, t, s = "", o = "", i = "button", r = !0) {
8505
8726
  this.action = e, this.label = t, this.icon = s, this.elementClass = o, this.elementType = i, this.enabled = r;
8506
8727
  }
8507
8728
  }
8508
- class $t {
8729
+ class Nt {
8509
8730
  constructor(e, t) {
8510
8731
  this.actionEventListener = e, this.crudActions = t;
8511
8732
  }
@@ -8561,25 +8782,25 @@ class $t {
8561
8782
  createActionEvent(e, t) {
8562
8783
  const s = e.getAttribute("data-area"), o = e.getAttribute("data-row-index"), i = e.getAttribute("data-col-index"), r = e.getAttribute("data-action") ?? "unknown", n = e.getAttribute("data-id") ?? "unknown";
8563
8784
  if (s && o && i) {
8564
- const l = ee(s), a = Number(o), c = Number(i);
8565
- return new We(r, l, t, a, c, n);
8785
+ const l = ne(s), a = Number(o), c = Number(i);
8786
+ return new ze(r, l, t, a, c, n);
8566
8787
  }
8567
8788
  return null;
8568
8789
  }
8569
8790
  getCrudActions(e) {
8570
- return Array.isArray(e) && e.every((t) => t instanceof V) ? e : this.crudActions;
8791
+ return Array.isArray(e) && e.every((t) => t instanceof H) ? e : this.crudActions;
8571
8792
  }
8572
8793
  }
8573
- const so = function(d, e, t) {
8794
+ const no = function(d, e, t) {
8574
8795
  return d ? Number(d) : "";
8575
8796
  };
8576
- class Ne {
8797
+ class je {
8577
8798
  constructor(e) {
8578
8799
  this.options = e;
8579
8800
  }
8580
8801
  static create(e) {
8581
- return new Ne(
8582
- e.map((t) => new Lt(t, t))
8802
+ return new je(
8803
+ e.map((t) => new $t(t, t))
8583
8804
  );
8584
8805
  }
8585
8806
  render(e, t, s, o, i, r, n) {
@@ -8605,7 +8826,7 @@ class Ne {
8605
8826
  }
8606
8827
  }
8607
8828
  }
8608
- class oo extends be {
8829
+ class lo extends Ce {
8609
8830
  constructor(e) {
8610
8831
  super("row", "multi"), this.model = e;
8611
8832
  }
@@ -8625,7 +8846,7 @@ class oo extends be {
8625
8846
  * @param {number} rowIndex - The index of the row to be selected.
8626
8847
  */
8627
8848
  selectRow(e) {
8628
- this.addRange(A.singleRow(e));
8849
+ this.addRange(M.singleRow(e));
8629
8850
  }
8630
8851
  /**
8631
8852
  * Unselects the specified row.
@@ -8634,7 +8855,7 @@ class oo extends be {
8634
8855
  * @return {void}
8635
8856
  */
8636
8857
  unselectRow(e) {
8637
- this.removeSelection(A.singleRow(e));
8858
+ this.removeSelection(M.singleRow(e));
8638
8859
  }
8639
8860
  /**
8640
8861
  * Toggles the selection of items based on current selection state.
@@ -8688,39 +8909,39 @@ class oo extends be {
8688
8909
  this.isSelected(e, 0) ? this.unselectRow(e) : this.selectRow(e);
8689
8910
  }
8690
8911
  }
8691
- class io {
8912
+ class ao {
8692
8913
  constructor(e, t, s) {
8693
8914
  this.r = e, this.g = t, this.b = s;
8694
8915
  }
8695
8916
  }
8696
- class De {
8917
+ class _e {
8697
8918
  constructor(e, t, s, o) {
8698
8919
  this.minValue = e, this.minColor = t, this.maxValue = s, this.maxColor = o;
8699
8920
  }
8700
8921
  }
8701
- class X {
8922
+ class Z {
8702
8923
  static normalize(e, t, s, o = 0, i = 1) {
8703
8924
  return (e - t) / (s - t) * (i - o) + o;
8704
8925
  }
8705
8926
  static getTwoColorGradientRGB(e, t) {
8706
- const s = X.normalize(e, t.minValue, t.maxValue, 0, 1), o = t.maxColor.r - t.minColor.r, i = t.maxColor.g - t.minColor.g, r = t.maxColor.b - t.minColor.b, n = o * s + t.minColor.r, l = i * s + t.minColor.g, a = r * s + t.minColor.b;
8927
+ const s = Z.normalize(e, t.minValue, t.maxValue, 0, 1), o = t.maxColor.r - t.minColor.r, i = t.maxColor.g - t.minColor.g, r = t.maxColor.b - t.minColor.b, n = o * s + t.minColor.r, l = i * s + t.minColor.g, a = r * s + t.minColor.b;
8707
8928
  return `rgb(${Math.round(n)}, ${Math.round(l)}, ${Math.round(a)})`;
8708
8929
  }
8709
8930
  static getThreeColorGradientRGB(e, t) {
8710
- return e < t.middleValue ? X.getTwoColorGradientRGB(e, new De(t.minValue, t.minColor, t.middleValue, t.middleColor)) : e > t.middleValue ? X.getTwoColorGradientRGB(e, new De(t.middleValue, t.middleColor, t.maxValue, t.maxColor)) : `rgb(${t.middleColor.r}, ${t.middleColor.g}, ${t.middleColor.b})`;
8931
+ return e < t.middleValue ? Z.getTwoColorGradientRGB(e, new _e(t.minValue, t.minColor, t.middleValue, t.middleColor)) : e > t.middleValue ? Z.getTwoColorGradientRGB(e, new _e(t.middleValue, t.middleColor, t.maxValue, t.maxColor)) : `rgb(${t.middleColor.r}, ${t.middleColor.g}, ${t.middleColor.b})`;
8711
8932
  }
8712
8933
  }
8713
- class ro {
8934
+ class co {
8714
8935
  constructor(e, t, s, o, i, r) {
8715
8936
  this.minValue = e, this.minColor = t, this.middleValue = s, this.middleColor = o, this.maxValue = i, this.maxColor = r;
8716
8937
  }
8717
8938
  }
8718
- class Bt {
8939
+ class Gt {
8719
8940
  constructor(e = !0, t = !0, s = (r, n) => r * 10 + 10, o = 50, i = 450) {
8720
8941
  this.autoCalc = e, this.takeHeaderLabelsIntoAccount = t, this.charCountToWidth = s, this.minWidth = o, this.maxWidth = i;
8721
8942
  }
8722
8943
  }
8723
- class Ht {
8944
+ class zt {
8724
8945
  constructor(e) {
8725
8946
  this.object = e;
8726
8947
  }
@@ -8771,7 +8992,7 @@ class Ht {
8771
8992
  return s.join("");
8772
8993
  }
8773
8994
  }
8774
- class ie {
8995
+ class ce {
8775
8996
  constructor(e, t, s = "Edit Item") {
8776
8997
  this.idKey = e, this.dialogTitle = s, this.object = { ...t };
8777
8998
  }
@@ -8852,7 +9073,7 @@ class ie {
8852
9073
  return e.replace(/\./g, " ");
8853
9074
  }
8854
9075
  }
8855
- class Wt {
9076
+ class jt {
8856
9077
  constructor() {
8857
9078
  this.urls = {
8858
9079
  list: {
@@ -8860,15 +9081,15 @@ class Wt {
8860
9081
  method: "GET"
8861
9082
  }
8862
9083
  }, this.singleRowActions = [
8863
- new V("VIEW", "View", "", "", "link"),
8864
- new V("EDIT", "Edit", "", "", "link"),
8865
- new V("CLONE", "Clone", "", "", "link"),
8866
- new V("DELETE", "Delete", "", "", "link")
9084
+ new H("VIEW", "View", "", "", "link"),
9085
+ new H("EDIT", "Edit", "", "", "link"),
9086
+ new H("CLONE", "Clone", "", "", "link"),
9087
+ new H("DELETE", "Delete", "", "", "link")
8867
9088
  // new CrudAction('CREATE', 'Create', '', '', 'link'),
8868
9089
  ], this.tableActions = [
8869
- new V("CREATE", "Create", "", "", "button"),
8870
- new V("DELETE_SELECTED", "Delete Selected", "", "", "button")
8871
- ], this.autoAddActionColumn = !0, this.columnWidths = new Bt(), 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) => {
9090
+ new H("CREATE", "Create", "", "", "button"),
9091
+ new H("DELETE_SELECTED", "Delete Selected", "", "", "button")
9092
+ ], this.autoAddActionColumn = !0, this.columnWidths = new Gt(), 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) => {
8872
9093
  const t = e.getHeadersInit ? e.getHeadersInit() : {};
8873
9094
  let s = e.urls.list.url, o = e.urls.list.method ?? "GET";
8874
9095
  return fetch(s, {
@@ -8919,9 +9140,9 @@ class Wt {
8919
9140
  };
8920
9141
  }
8921
9142
  }
8922
- class no {
9143
+ class ho {
8923
9144
  constructor() {
8924
- this.crudOptions = new Wt(), this.listenActionEvent = (e) => {
9145
+ this.crudOptions = new jt(), this.listenActionEvent = (e) => {
8925
9146
  };
8926
9147
  }
8927
9148
  createTableModel(e, t, s = (i) => {
@@ -8930,31 +9151,31 @@ class no {
8930
9151
  this.crudOptions = e, this.listenActionEvent = o, e.fetchList(e).then((i) => {
8931
9152
  var r, n, l, a;
8932
9153
  if (t.rows = i, i != null && i.length) {
8933
- const c = (r = t.columnDefs) != null && r.length ? t.columnDefs.map((w) => w.property) : this.extractProperties(i[0]), h = new be("row", "multi"), u = () => h;
9154
+ const c = (r = t.columnDefs) != null && r.length ? t.columnDefs.map((x) => x.property) : this.extractProperties(i[0]), h = new Ce("row", "multi"), u = () => h;
8934
9155
  this.tableOptions = {
8935
- ...new Y(),
9156
+ ...new J(),
8936
9157
  ...t.tableOptions,
8937
9158
  hoverColumnVisible: !1,
8938
9159
  getSelectionModel: u
8939
9160
  };
8940
- const f = this.calcAutoColumnWidths(i, c), p = (n = t.columnDefs) != null && n.length ? t.columnDefs : c.map(((w, S) => new H(w, w.toUpperCase(), new y(f[S], "px"))));
9161
+ const f = this.calcAutoColumnWidths(i, c), p = (n = t.columnDefs) != null && n.length ? t.columnDefs : c.map(((x, A) => new W(x, x.toUpperCase(), new b(f[A], "px"))));
8941
9162
  if ((l = e == null ? void 0 : e.columnWidths) != null && l.autoCalc)
8942
- for (let w = 0; w < p.length; w++) {
8943
- const S = p[w];
8944
- S.width = new y(f[w], "px");
9163
+ for (let x = 0; x < p.length; x++) {
9164
+ const A = p[x];
9165
+ A.width = new b(f[x], "px");
8945
9166
  }
8946
9167
  if (e.autoAddActionColumn) {
8947
- let w = new H(
9168
+ let x = new W(
8948
9169
  "id",
8949
9170
  "Actions",
8950
- It,
9171
+ Dt,
8951
9172
  new T(["ge-table-text-align-left"], ["ge-table-text-align-left ge-table-actions-cell"], void 0)
8952
9173
  );
8953
- w.rendererMap = new T(
9174
+ x.rendererMap = new T(
8954
9175
  void 0,
8955
- new $t(this, e.singleRowActions),
9176
+ new Nt(this, e.singleRowActions),
8956
9177
  void 0
8957
- ), p.push(w);
9178
+ ), p.push(x);
8958
9179
  }
8959
9180
  const m = 0, g = e.calcFixedRightColumnCount(p.length);
8960
9181
  this.tableModel = $.buildByTypedRowsParam({
@@ -8964,14 +9185,14 @@ class no {
8964
9185
  fixedLeftColumnCount: m,
8965
9186
  fixedRightColumnCount: g
8966
9187
  }), this.tableModel.getSelectionModel = u, this.bodyModel = (a = this.tableModel) == null ? void 0 : a.getBodyModel();
8967
- const b = new Pt(this.tableModel, this.tableOptions);
8968
- s(b);
9188
+ const y = new Vt(this.tableModel, this.tableOptions);
9189
+ s(y);
8969
9190
  }
8970
9191
  });
8971
9192
  }
8972
9193
  openDialogForCreate() {
8973
9194
  if (this.bodyModel) {
8974
- const e = new We("CREATE", "body", this.bodyModel, -1, -1, null);
9195
+ const e = new ze("CREATE", "body", this.bodyModel, -1, -1, null);
8975
9196
  this.onActionEvent(e);
8976
9197
  }
8977
9198
  }
@@ -8979,11 +9200,11 @@ class no {
8979
9200
  var t, s, o, i;
8980
9201
  if (this.listenActionEvent && this.listenActionEvent(e), e.action === "VIEW") {
8981
9202
  let r = e.id;
8982
- (t = this.crudOptions) == null || t.fetchItem(this.crudOptions, r).then((n) => (console.info(n), new Ht(n).openDialog(), n));
9203
+ (t = this.crudOptions) == null || t.fetchItem(this.crudOptions, r).then((n) => (console.info(n), new zt(n).openDialog(), n));
8983
9204
  } else if (e.action === "EDIT") {
8984
9205
  let r = e.id;
8985
9206
  const n = this.crudOptions.getIdKey() ?? "id";
8986
- (s = this.crudOptions) == null || s.fetchItem(this.crudOptions, r).then((l) => (console.info(l), new ie(
9207
+ (s = this.crudOptions) == null || s.fetchItem(this.crudOptions, r).then((l) => (console.info(l), new ce(
8987
9208
  n,
8988
9209
  l
8989
9210
  ).openDialog((a) => {
@@ -8994,7 +9215,7 @@ class no {
8994
9215
  const n = this.crudOptions.getIdKey() ?? "id";
8995
9216
  (o = this.crudOptions) == null || o.fetchItem(this.crudOptions, r).then((l) => {
8996
9217
  const a = JSON.parse(JSON.stringify(l));
8997
- return new ie(
9218
+ return new ce(
8998
9219
  n,
8999
9220
  a,
9000
9221
  "Clone Item"
@@ -9004,7 +9225,7 @@ class no {
9004
9225
  });
9005
9226
  } else if (e.action === "CREATE") {
9006
9227
  const r = this.crudOptions.getIdKey() ?? "id", n = JSON.parse(JSON.stringify(this.crudOptions.getEmptyItem()));
9007
- return new ie(
9228
+ return new ce(
9008
9229
  r,
9009
9230
  n,
9010
9231
  "Create Item"
@@ -9060,196 +9281,196 @@ class no {
9060
9281
  return s;
9061
9282
  }
9062
9283
  }
9063
- class lo {
9284
+ class uo {
9064
9285
  constructor(e, t) {
9065
9286
  this.method = e, this.url = t;
9066
9287
  }
9067
9288
  }
9068
9289
  export {
9069
- pe as AbstractAreaModel,
9070
- We as ActionEvent,
9071
- $t as ActionsCellRenderer,
9072
- Oe as AnyPropertyType,
9073
- Os as AreaMapFactory,
9074
- Bs as AreaModel,
9075
- P as AreaModelArrayOfArrays,
9076
- Hs as AreaModelCellGroups,
9077
- k as AreaModelHidden,
9290
+ ye as AbstractAreaModel,
9291
+ ze as ActionEvent,
9292
+ Nt as ActionsCellRenderer,
9293
+ $e as AnyPropertyType,
9294
+ Bs as AreaMapFactory,
9295
+ Gs as AreaModel,
9296
+ F as AreaModelArrayOfArrays,
9297
+ zs as AreaModelCellGroups,
9298
+ P as AreaModelHidden,
9078
9299
  _ as AreaModelObjectArray,
9079
- Te as AreaModelObjectArrayWithColumndefs,
9080
- Ie as AreaModelTree,
9300
+ Fe as AreaModelObjectArrayWithColumndefs,
9301
+ se as AreaModelTree,
9081
9302
  T as AreaObjectMap,
9082
9303
  B as ArrayPropertyType,
9083
- Ft as AutoRestoreOptions,
9084
- Gt as AvoidDoubleExecution,
9085
- Ye as BooleanPropertyType,
9086
- Ot as CellGroup,
9087
- Vt as CellGroupExt,
9088
- ce as CellGroupExtCellRenderer,
9089
- A as CellRange,
9304
+ Ot as AutoRestoreOptions,
9305
+ Yt as AvoidDoubleExecution,
9306
+ qe as BooleanPropertyType,
9307
+ Bt as CellGroup,
9308
+ Wt as CellGroupExt,
9309
+ ge as CellGroupExtCellRenderer,
9310
+ M as CellRange,
9090
9311
  E as CellgroupFactory,
9091
- Gs as CheckboxBooleanPropertyCellRenderer,
9092
- ke as CheckboxCellRenderer,
9093
- Ls as CheckboxColumnDef,
9094
- Tt as CheckboxModel,
9095
- Is as ChunkData,
9096
- at as ColAndRowspanModel,
9097
- it as CollapsedExpandedData,
9098
- io as ColorRgb,
9099
- H as ColumnDef,
9100
- zt as ColumnDefGenerator,
9101
- Bt as ColumnWidths,
9102
- Qe as ConvenienceDomService,
9103
- q as CopyService,
9104
- kt as CoverGridBodyModel,
9105
- As as CoverGridFactory,
9106
- Dt as CoverGridTableModel,
9107
- V as CrudAction,
9108
- ie as CrudObjectEdit,
9109
- Ht as CrudObjectView,
9110
- Wt as CrudOptions,
9111
- no as CrudTableModelFactory,
9112
- ve as CssVars,
9113
- js as DateToIntlDDMMYYYYCellRenderer,
9114
- zs as DateToIsoCellRenderer,
9115
- Us as DateToLocaleDateCellRenderer,
9116
- Js as DateToTecCellRenderer,
9117
- z as DefaultRowHeights,
9118
- lt as EleScope,
9119
- ne as EventAdapter,
9120
- Yt as EventCheckboxChangedHandler,
9121
- At as ExcelService,
9122
- Ae as FalseFn,
9123
- St as FocusModel,
9124
- ut as GeCellIndices,
9125
- X as GeCssColorUtil,
9126
- Ws as GeFilterService,
9127
- Vs as GeKeyEvent,
9128
- me as GeModelChangeEvent,
9129
- ue as GeMouseEvent,
9130
- pt as GeScrollEvent,
9131
- L as GeoData,
9132
- O as Icon,
9133
- Es as IndexAndPx,
9134
- xt as InputCellRenderer,
9135
- ht as InputHandler,
9136
- xe as JsonService,
9137
- W as LicenseManager,
9138
- Ys as MaleFemaleToIconCellRenderer,
9139
- tt as MouseHandler,
9140
- et as MouseTargetData,
9141
- oo as MultiRowsSelectionModel,
9142
- ze as NullPropertyType,
9143
- Ks as NumberCellProgressBarCellRenderer,
9144
- qs as NumberCellRenderer,
9145
- Ue as NumberPropertyType,
9146
- F as ObjectPropertyType,
9147
- mt as OsxShortcutActionIdMapping,
9148
- Fe as PROPERTY_TYPE_KEY_ANY,
9149
- Le as PROPERTY_TYPE_KEY_ARRAY,
9150
- he as PROPERTY_TYPE_KEY_BOOLEAN,
9151
- Pe as PROPERTY_TYPE_KEY_NULL,
9152
- de as PROPERTY_TYPE_KEY_NUMBER,
9153
- U as PROPERTY_TYPE_KEY_OBJECT,
9154
- _e as PROPERTY_TYPE_KEY_STRING,
9155
- j as PROPERTY_TYPE_KEY_UNDEFINED,
9156
- ae as Padding,
9157
- to as PositiveAndNegativeNumberRenderer,
9158
- eo as ProgressBarCellRenderer,
9159
- Ve as PropertyItem,
9160
- jt as PropertyTypeService,
9161
- ct as RenderScope,
9162
- Ns as Renderer,
9163
- _t as RequestChunk,
9164
- Rt as ResizeHandler,
9165
- Ut as SchemeGenerator,
9166
- Ne as SelectCellRenderer,
9167
- be as SelectionModel,
9168
- gt as SelectionService,
9169
- yt as ShortcutService,
9170
- Qs as SimpleArrayCellRenderer,
9171
- wt as SimpleDomService,
9172
- y as Size,
9173
- dt as SortItem,
9174
- Be as SortedOptions,
9175
- Zs as StarRatingCellRenderer,
9176
- rt as StoreStateCollapsedExpandService,
9177
- ot as StoreStateScrollPosService,
9178
- nt as StoreStateSortingService,
9179
- je as StringPropertyType,
9180
- st as TableApi,
9181
- $s as TableCellUpdateEvent,
9312
+ Ys as CheckboxBooleanPropertyCellRenderer,
9313
+ Pe as CheckboxCellRenderer,
9314
+ $s as CheckboxColumnDef,
9315
+ Pt as CheckboxModel,
9316
+ Ds as ChunkData,
9317
+ ht as ColAndRowspanModel,
9318
+ at as CollapsedExpandedData,
9319
+ ao as ColorRgb,
9320
+ W as ColumnDef,
9321
+ Xt as ColumnDefGenerator,
9322
+ Gt as ColumnWidths,
9323
+ ot as ConvenienceDomService,
9324
+ te as CopyService,
9325
+ _t as CoverGridBodyModel,
9326
+ Ts as CoverGridFactory,
9327
+ Lt as CoverGridTableModel,
9328
+ H as CrudAction,
9329
+ ce as CrudObjectEdit,
9330
+ zt as CrudObjectView,
9331
+ jt as CrudOptions,
9332
+ ho as CrudTableModelFactory,
9333
+ Ie as CssVars,
9334
+ Ks as DateToIntlDDMMYYYYCellRenderer,
9335
+ Xs as DateToIsoCellRenderer,
9336
+ Js as DateToLocaleDateCellRenderer,
9337
+ eo as DateToTecCellRenderer,
9338
+ Y as DefaultRowHeights,
9339
+ ee as EleScope,
9340
+ he as EventAdapter,
9341
+ qt as EventCheckboxChangedHandler,
9342
+ Tt as ExcelService,
9343
+ Te as FalseFn,
9344
+ Rt as FocusModel,
9345
+ ft as GeCellIndices,
9346
+ Z as GeCssColorUtil,
9347
+ js as GeFilterService,
9348
+ Ws as GeKeyEvent,
9349
+ Se as GeModelChangeEvent,
9350
+ be as GeMouseEvent,
9351
+ mt as GeScrollEvent,
9352
+ O as GeoData,
9353
+ V as Icon,
9354
+ Fs as IndexAndPx,
9355
+ vt as InputCellRenderer,
9356
+ gt as InputHandler,
9357
+ Re as JsonService,
9358
+ G as LicenseManager,
9359
+ qs as MaleFemaleToIconCellRenderer,
9360
+ rt as MouseHandler,
9361
+ it as MouseTargetData,
9362
+ lo as MultiRowsSelectionModel,
9363
+ Xe as NullPropertyType,
9364
+ Zs as NumberCellProgressBarCellRenderer,
9365
+ to as NumberCellRenderer,
9366
+ Je as NumberPropertyType,
9367
+ L as ObjectPropertyType,
9368
+ wt as OsxShortcutActionIdMapping,
9369
+ Le as PROPERTY_TYPE_KEY_ANY,
9370
+ He as PROPERTY_TYPE_KEY_ARRAY,
9371
+ me as PROPERTY_TYPE_KEY_BOOLEAN,
9372
+ Oe as PROPERTY_TYPE_KEY_NULL,
9373
+ fe as PROPERTY_TYPE_KEY_NUMBER,
9374
+ K as PROPERTY_TYPE_KEY_OBJECT,
9375
+ Ve as PROPERTY_TYPE_KEY_STRING,
9376
+ X as PROPERTY_TYPE_KEY_UNDEFINED,
9377
+ pe as Padding,
9378
+ ro as PositiveAndNegativeNumberRenderer,
9379
+ io as ProgressBarCellRenderer,
9380
+ Be as PropertyItem,
9381
+ Kt as PropertyTypeService,
9382
+ ut as RenderScope,
9383
+ Us as Renderer,
9384
+ Ht as RequestChunk,
9385
+ It as ResizeHandler,
9386
+ Jt as SchemeGenerator,
9387
+ je as SelectCellRenderer,
9388
+ Ce as SelectionModel,
9389
+ bt as SelectionService,
9390
+ St as ShortcutService,
9391
+ oo as SimpleArrayCellRenderer,
9392
+ Ct as SimpleDomService,
9393
+ b as Size,
9394
+ pt as SortItem,
9395
+ Ne as SortedOptions,
9396
+ so as StarRatingCellRenderer,
9397
+ ct as StoreStateCollapsedExpandService,
9398
+ lt as StoreStateScrollPosService,
9399
+ dt as StoreStateSortingService,
9400
+ Ke as StringPropertyType,
9401
+ nt as TableApi,
9402
+ Ns as TableCellUpdateEvent,
9182
9403
  $ as TableFactory,
9183
- oe as TableModel,
9184
- Pt as TableModelAndOptions,
9185
- Y as TableOptions,
9186
- He as TableScope,
9187
- ro as ThreeColorGradientArg,
9188
- Ee as TreeCheckboxModel,
9189
- le as TreeFactory,
9190
- $e as TreeOptions,
9191
- Re as TreeRow,
9192
- Et as TreeRowService,
9193
- Xs as TrueFalseCellRenderer,
9194
- Mt as TrueFn,
9195
- De as TwoColorGradientArg,
9196
- J as UNIMPORTANT_TYPES,
9197
- se as UndefinedPropertyType,
9198
- lo as UrlInfo,
9199
- Ke as ValueInfo,
9200
- Lt as ValueLabel,
9201
- ft as WindowsShortcutActionIdMapping,
9202
- Ms as actionIds,
9203
- Ps as allCenter,
9204
- Fs as allLeft,
9205
- _s as allRight,
9206
- ks as bodyCenter,
9207
- Ts as bodyLeft,
9208
- Ds as bodyRight,
9209
- Ce as createHarmonizedShortcutByKeyboardEvent,
9210
- Ge as debounce,
9211
- so as editInputPipeForNumber,
9212
- Se as entitySuffix,
9213
- qe as firstLetterUppercase,
9214
- ee as getAreaIdentByString,
9215
- Xe as getEntityName,
9216
- bt as harmonizeShortcut,
9217
- re as isAreaModelTree,
9218
- Ze as isCheckboxColumnDef,
9219
- G as isTreeRow,
9220
- Rs as px0,
9221
- vs as px10,
9222
- gs as px100,
9223
- ps as px110,
9224
- us as px120,
9225
- hs as px130,
9226
- ds as px140,
9227
- cs as px150,
9228
- as as px160,
9229
- ls as px170,
9230
- ns as px180,
9231
- rs as px190,
9232
- Cs as px20,
9233
- Me as px200,
9234
- is as px210,
9235
- os as px220,
9236
- ss as px230,
9237
- ts as px240,
9238
- es as px250,
9239
- Qt as px260,
9240
- Zt as px270,
9241
- qt as px280,
9242
- Jt as px290,
9243
- Ss as px30,
9244
- It as px300,
9245
- xs as px40,
9246
- Xt as px400,
9247
- ws as px50,
9248
- Kt as px500,
9249
- ys as px60,
9250
- bs as px70,
9251
- ms as px80,
9252
- fs as px90,
9253
- Nt as throttle,
9254
- Je as trimArraySuffixes
9404
+ ae as TableModel,
9405
+ Vt as TableModelAndOptions,
9406
+ J as TableOptions,
9407
+ Ge as TableScope,
9408
+ co as ThreeColorGradientArg,
9409
+ De as TreeCheckboxModel,
9410
+ ue as TreeFactory,
9411
+ We as TreeOptions,
9412
+ Ee as TreeRow,
9413
+ Ft as TreeRowService,
9414
+ Qs as TrueFalseCellRenderer,
9415
+ kt as TrueFn,
9416
+ _e as TwoColorGradientArg,
9417
+ Q as UNIMPORTANT_TYPES,
9418
+ le as UndefinedPropertyType,
9419
+ uo as UrlInfo,
9420
+ Ze as ValueInfo,
9421
+ $t as ValueLabel,
9422
+ yt as WindowsShortcutActionIdMapping,
9423
+ ks as actionIds,
9424
+ Vs as allCenter,
9425
+ Os as allLeft,
9426
+ Hs as allRight,
9427
+ _s as bodyCenter,
9428
+ Ps as bodyLeft,
9429
+ Ls as bodyRight,
9430
+ Me as createHarmonizedShortcutByKeyboardEvent,
9431
+ Ye as debounce,
9432
+ no as editInputPipeForNumber,
9433
+ Ae as entitySuffix,
9434
+ tt as firstLetterUppercase,
9435
+ ne as getAreaIdentByString,
9436
+ Qe as getEntityName,
9437
+ xt as harmonizeShortcut,
9438
+ de as isAreaModelTree,
9439
+ st as isCheckboxColumnDef,
9440
+ j as isTreeRow,
9441
+ Es as px0,
9442
+ Is as px10,
9443
+ ys as px100,
9444
+ bs as px110,
9445
+ ms as px120,
9446
+ fs as px130,
9447
+ gs as px140,
9448
+ ps as px150,
9449
+ us as px160,
9450
+ hs as px170,
9451
+ ds as px180,
9452
+ cs as px190,
9453
+ Ms as px20,
9454
+ ke as px200,
9455
+ as as px210,
9456
+ ls as px220,
9457
+ ns as px230,
9458
+ rs as px240,
9459
+ is as px250,
9460
+ os as px260,
9461
+ ss as px270,
9462
+ ts as px280,
9463
+ es as px290,
9464
+ As as px30,
9465
+ Dt as px300,
9466
+ Rs as px40,
9467
+ Qt as px400,
9468
+ vs as px50,
9469
+ Zt as px500,
9470
+ Cs as px60,
9471
+ Ss as px70,
9472
+ xs as px80,
9473
+ ws as px90,
9474
+ Ut as throttle,
9475
+ et as trimArraySuffixes
9255
9476
  };