@ninebone/table 0.0.423 β†’ 0.0.425

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.
@@ -23,12 +23,12 @@ const re = class re extends Se.constructor {
23
23
  a(re, "Trace");
24
24
  let jt = re;
25
25
  const P = new jt();
26
- var M, O, p, Y, V, X, St, U, Et;
26
+ var M, z, p, Y, V, X, St, U, Et;
27
27
  const le = class le extends HTMLElement {
28
28
  constructor() {
29
29
  super();
30
30
  c(this, M);
31
- c(this, O, !1);
31
+ c(this, z, !1);
32
32
  c(this, p);
33
33
  c(this, Y);
34
34
  c(this, V);
@@ -41,7 +41,7 @@ const le = class le extends HTMLElement {
41
41
  })), t(this, X).observe(e));
42
42
  }, "#observeResize"));
43
43
  v(this, "refresh", /* @__PURE__ */ a(() => {
44
- if (!t(this, M) || !t(this, p) || t(this, O)) return;
44
+ if (!t(this, M) || !t(this, p) || t(this, z)) return;
45
45
  const e = t(this, p).container, s = e.querySelector("table");
46
46
  if (!s) return;
47
47
  const n = t(this, p).track, r = t(this, p).thumb, o = t(this, M).querySelector(".ng-container-bottom"), l = e.clientWidth, d = s.scrollWidth;
@@ -99,13 +99,13 @@ const le = class le extends HTMLElement {
99
99
  t(this, U).call(this, n.clientX - r.left - o / 2);
100
100
  }), t(this, p).thumb.addEventListener("mousedown", (n) => {
101
101
  if (n.button !== 0) return;
102
- n.stopPropagation(), n.preventDefault(), b(this, O, !0), this.shiftX = n.clientX - t(this, p).thumb.getBoundingClientRect().left;
102
+ n.stopPropagation(), n.preventDefault(), b(this, z, !0), this.shiftX = n.clientX - t(this, p).thumb.getBoundingClientRect().left;
103
103
  const r = /* @__PURE__ */ a((l) => {
104
- if (!t(this, O)) return;
104
+ if (!t(this, z)) return;
105
105
  const d = t(this, p).track.getBoundingClientRect();
106
106
  t(this, U).call(this, l.clientX - d.left - this.shiftX);
107
107
  }, "onMouseMove"), o = /* @__PURE__ */ a(() => {
108
- b(this, O, !1), s(), document.removeEventListener("mousemove", r), document.removeEventListener("mouseup", o), this.refresh();
108
+ b(this, z, !1), s(), document.removeEventListener("mousemove", r), document.removeEventListener("mouseup", o), this.refresh();
109
109
  }, "onMouseUp");
110
110
  document.addEventListener("mousemove", r), document.addEventListener("mouseup", o);
111
111
  });
@@ -189,7 +189,7 @@ const le = class le extends HTMLElement {
189
189
  left: this.querySelector(".ng-scroll-left"),
190
190
  right: this.querySelector(".ng-scroll-right")
191
191
  }), s.addEventListener("scroll", () => {
192
- t(this, O) || this.refresh();
192
+ t(this, z) || this.refresh();
193
193
  }), t(this, Et).call(this), t(this, St).call(this), this.refresh();
194
194
  }, "initWhenReady");
195
195
  e();
@@ -198,14 +198,14 @@ const le = class le extends HTMLElement {
198
198
  t(this, X) && t(this, X).disconnect();
199
199
  }
200
200
  };
201
- M = new WeakMap(), O = new WeakMap(), p = new WeakMap(), Y = new WeakMap(), V = new WeakMap(), X = new WeakMap(), St = new WeakMap(), U = new WeakMap(), Et = new WeakMap(), a(le, "NineTableHScrollBar");
201
+ M = new WeakMap(), z = new WeakMap(), p = new WeakMap(), Y = new WeakMap(), V = new WeakMap(), X = new WeakMap(), St = new WeakMap(), U = new WeakMap(), Et = new WeakMap(), a(le, "NineTableHScrollBar");
202
202
  let Kt = le;
203
203
  customElements.get("nine-table-hscrollbar") || customElements.define("nine-table-hscrollbar", Kt);
204
- var z, tt, F, E, ht, dt, Rt;
204
+ var _, tt, F, E, ht, dt, Rt;
205
205
  const ae = class ae extends HTMLElement {
206
206
  constructor() {
207
207
  super();
208
- c(this, z);
208
+ c(this, _);
209
209
  c(this, tt);
210
210
  c(this, F, !1);
211
211
  c(this, E);
@@ -215,9 +215,9 @@ const ae = class ae extends HTMLElement {
215
215
  * 🎯 μŠ€ν¬λ‘€λ°” μœ„μΉ˜ 및 썸브 크기 κ°±μ‹ 
216
216
  */
217
217
  v(this, "refresh", /* @__PURE__ */ a(() => {
218
- var W;
219
- if (!t(this, z) || !t(this, E)) return;
220
- const e = t(this, E).container, s = t(this, E).track, n = t(this, E).thumb, r = e.clientHeight, l = (t(this, z).data.get() || []).length, d = ((W = t(this, tt)) == null ? void 0 : W.getRowHeight()) || 24, h = l * d;
218
+ var O;
219
+ if (!t(this, _) || !t(this, E)) return;
220
+ const e = t(this, E).container, s = t(this, E).track, n = t(this, E).thumb, r = e.clientHeight, l = (t(this, _).data.get() || []).length, d = ((O = t(this, tt)) == null ? void 0 : O.getRowHeight()) || 24, h = l * d;
221
221
  if (h <= r) {
222
222
  n.style.display = "none", t(this, E).top.disabled = !0, t(this, E).bottom.disabled = !0;
223
223
  return;
@@ -234,7 +234,7 @@ const ae = class ae extends HTMLElement {
234
234
  c(this, Rt, /* @__PURE__ */ a(() => {
235
235
  const e = t(this, E).container, s = /* @__PURE__ */ a(() => {
236
236
  var l;
237
- const r = (t(this, z).data.get() || []).length, o = ((l = t(this, tt)) == null ? void 0 : l.getRowHeight()) || 24;
237
+ const r = (t(this, _).data.get() || []).length, o = ((l = t(this, tt)) == null ? void 0 : l.getRowHeight()) || 24;
238
238
  return r * o;
239
239
  }, "getContentHeight");
240
240
  e.addEventListener("scroll", () => {
@@ -246,8 +246,8 @@ const ae = class ae extends HTMLElement {
246
246
  if (!t(this, F)) return;
247
247
  const d = t(this, E).track.getBoundingClientRect(), h = t(this, E).thumb.clientHeight, u = d.height - h, g = l.clientY - t(this, ht), y = e.clientHeight, m = s(), S = Math.max(m - y, 1);
248
248
  if (u > 0 && S > 0) {
249
- const W = g / u * S;
250
- let Q = t(this, dt) + W;
249
+ const O = g / u * S;
250
+ let Q = t(this, dt) + O;
251
251
  const ye = Math.max(0, m - y);
252
252
  Q < 0 && (Q = 0), Q > ye && (Q = ye), e.scrollTop = Q;
253
253
  }
@@ -272,7 +272,7 @@ const ae = class ae extends HTMLElement {
272
272
  }, "#init"));
273
273
  }
274
274
  connectedCallback() {
275
- b(this, z, this.getRootNode().host), b(this, tt, this.closest("nine-table-sheet")), this.innerHTML = `
275
+ b(this, _, this.getRootNode().host), b(this, tt, this.closest("nine-table-sheet")), this.innerHTML = `
276
276
  <style>
277
277
  nine-table-vscrollbar {
278
278
  display: flex;
@@ -338,13 +338,15 @@ const ae = class ae extends HTMLElement {
338
338
  <button class='ng-scroll-bottom' disabled><div class='ng-scroll-icon'></div></button>
339
339
  `;
340
340
  const e = /* @__PURE__ */ a(() => {
341
- const s = t(this, z).shadowRoot.querySelector(".ng-container-body");
341
+ const s = t(this, _).shadowRoot.querySelector(".ng-container-body");
342
342
  if (!s) {
343
343
  setTimeout(e, 10);
344
344
  return;
345
345
  }
346
346
  b(this, E, {
347
347
  container: s,
348
+ leftContainer: t(this, _).shadowRoot.querySelector(".ng-container-left"),
349
+ rightContainer: t(this, _).shadowRoot.querySelector(".ng-container-right"),
348
350
  track: this.querySelector(".ng-scroll-track"),
349
351
  thumb: this.querySelector(".ng-scroll-thumb"),
350
352
  top: this.querySelector(".ng-scroll-top"),
@@ -354,7 +356,7 @@ const ae = class ae extends HTMLElement {
354
356
  e();
355
357
  }
356
358
  };
357
- z = new WeakMap(), tt = new WeakMap(), F = new WeakMap(), E = new WeakMap(), ht = new WeakMap(), dt = new WeakMap(), Rt = new WeakMap(), a(ae, "NineTableVScrollBar");
359
+ _ = new WeakMap(), tt = new WeakMap(), F = new WeakMap(), E = new WeakMap(), ht = new WeakMap(), dt = new WeakMap(), Rt = new WeakMap(), a(ae, "NineTableVScrollBar");
358
360
  let Zt = ae;
359
361
  customElements.get("nine-table-vscrollbar") || customElements.define("nine-table-vscrollbar", Zt);
360
362
  var At, et;
@@ -428,25 +430,25 @@ At = new WeakMap(), et = new WeakMap(), a(H, "TableCompiler"), c(H, At, /* @__PU
428
430
  });
429
431
  }, "#resetColIndex"));
430
432
  let Gt = H;
431
- var _, w, I, T, D, j, B, it, Tt, qt, kt, ft, ut, Lt, Ct, bt, Ht, st, gt;
433
+ var I, w, W, q, D, j, N, it, qt, Tt, kt, ft, ut, Lt, Ct, bt, Ht, st, gt;
432
434
  const ce = class ce {
433
435
  constructor(i) {
434
- c(this, _);
436
+ c(this, I);
435
437
  c(this, w);
436
- c(this, I, /* @__PURE__ */ new Map());
437
- c(this, T, null);
438
+ c(this, W, /* @__PURE__ */ new Map());
439
+ c(this, q, null);
438
440
  c(this, D, null);
439
441
  c(this, j, 0);
440
- c(this, B, 40);
442
+ c(this, N, 40);
441
443
  c(this, it, !1);
442
- c(this, Tt, 3);
444
+ c(this, qt, 3);
443
445
  v(this, "refresh", /* @__PURE__ */ a(() => {
444
446
  var e;
445
447
  const i = t(this, w).querySelector(".ng-container-body");
446
448
  i && (t(this, ft).call(this), t(this, st).call(this, i.scrollTop), (e = t(this, w).querySelector("nine-table-vscrollbar")) == null || e.refresh());
447
449
  }, "refresh"));
448
450
  v(this, "initialize", /* @__PURE__ */ a(() => {
449
- b(this, T, null), t(this, I).clear(), [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((n) => {
451
+ b(this, q, null), t(this, W).clear(), [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((n) => {
450
452
  const r = t(this, w).querySelector(n);
451
453
  if (!r) return;
452
454
  const o = r.querySelector("table");
@@ -454,7 +456,7 @@ const ce = class ce {
454
456
  const l = o.querySelector("tbody.bindable-tbody");
455
457
  if (!l) return;
456
458
  const h = Array.from(l.querySelectorAll("tr")).map((f) => f.cloneNode(!0));
457
- t(this, I).set(n, h);
459
+ t(this, W).set(n, h);
458
460
  });
459
461
  const i = t(this, w).querySelector(".ng-container-body"), e = t(this, w).querySelector(".ng-container-left"), s = t(this, w).querySelector(".ng-container-right");
460
462
  if (i) {
@@ -470,23 +472,23 @@ const ce = class ce {
470
472
  });
471
473
  }
472
474
  }, "initialize"));
473
- c(this, qt, /* @__PURE__ */ a((i, e) => {
474
- const s = t(this, I).get(e);
475
+ c(this, Tt, /* @__PURE__ */ a((i, e) => {
476
+ const s = t(this, W).get(e);
475
477
  if (!s || s.length === 0) return;
476
478
  const n = i.querySelector("tbody.bindable-tbody");
477
479
  if (!n) return;
478
480
  n.querySelectorAll("tr:not(.nodata)").forEach((l) => l.remove());
479
481
  const r = n.querySelector("tr.nodata"), o = document.createDocumentFragment();
480
- for (let l = 0; l < t(this, B); l++)
482
+ for (let l = 0; l < t(this, N); l++)
481
483
  s.forEach((d) => {
482
484
  o.appendChild(d.cloneNode(!0));
483
485
  });
484
486
  r ? r.before(o) : n.appendChild(o);
485
487
  }, "#renderRows"));
486
488
  c(this, kt, /* @__PURE__ */ a((i) => {
487
- if (t(this, T) !== null && t(this, T) > 0)
488
- return t(this, T);
489
- const e = t(this, I).get(".ng-container-body");
489
+ if (t(this, q) !== null && t(this, q) > 0)
490
+ return t(this, q);
491
+ const e = t(this, W).get(".ng-container-body");
490
492
  if (!e || e.length === 0) return 24;
491
493
  const s = i.querySelector("tbody.bindable-tbody") || i.querySelector("tbody.bindable-tbody:last-of-type");
492
494
  if (!s) return 24;
@@ -501,40 +503,24 @@ const ce = class ce {
501
503
  const u = s.querySelectorAll("tr:not(.nodata)");
502
504
  return u.forEach((g) => {
503
505
  f += g.offsetHeight || g.getBoundingClientRect().height;
504
- }), u.forEach((g) => g.remove()), o.style.display = l, o.style.visibility = d, o.style.position = h, b(this, T, f > 0 ? f : 24), t(this, ut).call(this), t(this, T);
506
+ }), u.forEach((g) => g.remove()), o.style.display = l, o.style.visibility = d, o.style.position = h, b(this, q, f > 0 ? f : 24), t(this, ut).call(this), t(this, q);
505
507
  }, "#measureAndCacheHeight"));
506
- /**
507
- #updateVirtualScrollHeight = () => {
508
- const bodyContainer = this.#sheet.querySelector('.ng-container-body');
509
- if (!bodyContainer) return;
510
-
511
- const dataList = this.#host.data.get() || [];
512
- const totalCount = dataList.length;
513
- const rowHeight = this.#cachedTemplateHeight || 24;
514
- const totalVirtualHeight = totalCount * rowHeight;
515
-
516
- // 🎯 디버깅 둜그: 전체 데이터가 λͺ‡ 건이고 ν…Œμ΄λΈ” 높이가 μ–Όλ§ˆλ‘œ μž‘νžˆλŠ”μ§€ 확인
517
- trace.log(`[VirtualHeight] totalCount: ${totalCount}, rowHeight: ${rowHeight}, totalVirtualHeight: ${totalVirtualHeight}`);
518
-
519
- ['.ng-container-body', '.ng-container-left', '.ng-container-right'].forEach(selector => {
520
- const container = this.#sheet.querySelector(selector);
521
- const table = container?.querySelector('table');
522
- if (table) {
523
- table.style.height = `${totalVirtualHeight}px`;
524
- }
525
- });
526
- }; */
527
508
  c(this, ft, /* @__PURE__ */ a(() => {
528
509
  if (!t(this, w).querySelector(".ng-container-body")) return;
529
- (t(this, _).data.get() || []).length, t(this, T), [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((s) => {
530
- const n = t(this, w).querySelector(s), r = n == null ? void 0 : n.querySelector("table");
531
- r && (r.style.height = "auto", r.style.minHeight = "auto");
510
+ const s = (t(this, I).data.get() || []).length, n = t(this, q) || 24, r = s * n;
511
+ [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((o) => {
512
+ const l = t(this, w).querySelector(o);
513
+ if (!l) return;
514
+ const d = l.querySelector("table");
515
+ d && (d.style.height = "auto", d.style.minHeight = "auto");
516
+ const h = l.querySelector(".ng-virtual-spacer");
517
+ h && (h.style.height = `${r}px`);
532
518
  });
533
519
  }, "#updateVirtualScrollHeight"));
534
520
  c(this, ut, /* @__PURE__ */ a(() => {
535
- if ((t(this, _).data.get() || []).length, t(this, j) > 0 && t(this, T) > 0) {
536
- const e = Math.ceil(t(this, j) / t(this, T));
537
- b(this, B, e + t(this, Tt)), P.log("visibleRows:", e, "cachedRowCount:", t(this, B));
521
+ if ((t(this, I).data.get() || []).length, t(this, j) > 0 && t(this, q) > 0) {
522
+ const e = Math.ceil(t(this, j) / t(this, q));
523
+ b(this, N, e + t(this, qt)), P.log("visibleRows:", e, "cachedRowCount:", t(this, N));
538
524
  }
539
525
  }, "#updateRowCount"));
540
526
  c(this, Lt, /* @__PURE__ */ a(() => {
@@ -562,7 +548,7 @@ const ce = class ce {
562
548
  const o = s.querySelector("thead");
563
549
  o && (r += o.offsetHeight || o.getBoundingClientRect().height);
564
550
  const l = Math.max(n - r, 100);
565
- t(this, j) !== l && (b(this, j, l), t(this, ut).call(this), t(this, T) !== null && t(this, bt).call(this));
551
+ t(this, j) !== l && (b(this, j, l), t(this, ut).call(this), t(this, q) !== null && t(this, bt).call(this));
566
552
  }
567
553
  }
568
554
  })), t(this, D).observe(t(this, w)));
@@ -570,7 +556,7 @@ const ce = class ce {
570
556
  c(this, bt, /* @__PURE__ */ a(() => {
571
557
  [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((i) => {
572
558
  const e = t(this, w).querySelector(i);
573
- e && e.querySelector("tbody.bindable-tbody") && t(this, qt).call(this, e, i);
559
+ e && e.querySelector("tbody.bindable-tbody") && t(this, Tt).call(this, e, i);
574
560
  }), t(this, Lt).call(this);
575
561
  }, "#renderAllContainers"));
576
562
  c(this, Ht, /* @__PURE__ */ a((i) => {
@@ -580,24 +566,24 @@ const ce = class ce {
580
566
  if (!s) return;
581
567
  const n = s.querySelector("tbody.bindable-tbody");
582
568
  if (!n) return;
583
- const r = Array.from(n.querySelectorAll("tr:not(.nodata)")), o = ((h = t(this, I).get(e)) == null ? void 0 : h.length) || 1, d = (t(this, _).data.get() || []).length;
569
+ const r = Array.from(n.querySelectorAll("tr:not(.nodata)")), o = ((h = t(this, W).get(e)) == null ? void 0 : h.length) || 1, d = (t(this, I).data.get() || []).length;
584
570
  r.forEach((f, u) => {
585
571
  const g = i + Math.floor(u / o);
586
572
  if (g >= d) {
587
573
  f.style.display = "none";
588
574
  return;
589
575
  }
590
- const y = t(this, _).data.get(g);
576
+ const y = t(this, I).data.get(g);
591
577
  f.style.display = "", t(this, gt).call(this, f, y, g);
592
578
  });
593
579
  });
594
580
  }, "#adjustBufferRows"));
595
581
  c(this, st, /* @__PURE__ */ a((i) => {
596
582
  var d;
597
- const e = t(this, T);
583
+ const e = t(this, q);
598
584
  if (!e || e <= 0) return;
599
- const n = (t(this, _).data.get() || []).length, r = Math.max(0, Math.floor(i / e)), o = ((d = t(this, I).get(".ng-container-body")) == null ? void 0 : d.length) || 1, l = r + t(this, B);
600
- P.log(`[Scroll] scrollTop: ${i}, startIndex: ${r}, cachedRowCount: ${t(this, B)}, targetDataIndex range: ${r} ~ ${l} (Total: ${n})`), [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((h) => {
585
+ const n = (t(this, I).data.get() || []).length, r = Math.max(0, Math.floor(i / e)), o = ((d = t(this, W).get(".ng-container-body")) == null ? void 0 : d.length) || 1, l = r + t(this, N);
586
+ P.log(`[Scroll] scrollTop: ${i}, startIndex: ${r}, cachedRowCount: ${t(this, N)}, targetDataIndex range: ${r} ~ ${l} (Total: ${n})`), [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((h) => {
601
587
  const f = t(this, w).querySelector(h);
602
588
  if (!f) return;
603
589
  const u = f.querySelector("tbody.bindable-tbody");
@@ -608,8 +594,8 @@ const ce = class ce {
608
594
  y.style.display = "none";
609
595
  return;
610
596
  }
611
- const W = t(this, _).data.get(S);
612
- y.style.display = "", t(this, gt).call(this, y, W, S);
597
+ const O = t(this, I).data.get(S);
598
+ y.style.display = "", t(this, gt).call(this, y, O, S);
613
599
  });
614
600
  }), t(this, it) || (b(this, it, !0), setTimeout(() => {
615
601
  t(this, Ht).call(this, r), b(this, it, !1);
@@ -624,19 +610,19 @@ const ce = class ce {
624
610
  v(this, "destroy", /* @__PURE__ */ a(() => {
625
611
  t(this, D) && (t(this, D).disconnect(), b(this, D, null));
626
612
  }, "destroy"));
627
- b(this, _, i.getRootNode().host), b(this, w, i), t(this, Ct).call(this);
613
+ b(this, I, i.getRootNode().host), b(this, w, i), t(this, Ct).call(this);
628
614
  }
629
615
  getRowHeight() {
630
- return t(this, T);
616
+ return t(this, q);
631
617
  }
632
618
  templateLength(i = ".ng-container-body") {
633
619
  var e;
634
- return ((e = t(this, I).get(i)) == null ? void 0 : e.length) || 1;
620
+ return ((e = t(this, W).get(i)) == null ? void 0 : e.length) || 1;
635
621
  }
636
622
  };
637
- _ = new WeakMap(), w = new WeakMap(), I = new WeakMap(), T = new WeakMap(), D = new WeakMap(), j = new WeakMap(), B = new WeakMap(), it = new WeakMap(), Tt = new WeakMap(), qt = new WeakMap(), kt = new WeakMap(), ft = new WeakMap(), ut = new WeakMap(), Lt = new WeakMap(), Ct = new WeakMap(), bt = new WeakMap(), Ht = new WeakMap(), st = new WeakMap(), gt = new WeakMap(), a(ce, "RowManager");
623
+ I = new WeakMap(), w = new WeakMap(), W = new WeakMap(), q = new WeakMap(), D = new WeakMap(), j = new WeakMap(), N = new WeakMap(), it = new WeakMap(), qt = new WeakMap(), Tt = new WeakMap(), kt = new WeakMap(), ft = new WeakMap(), ut = new WeakMap(), Lt = new WeakMap(), Ct = new WeakMap(), bt = new WeakMap(), Ht = new WeakMap(), st = new WeakMap(), gt = new WeakMap(), a(ce, "RowManager");
638
624
  let Jt = ce;
639
- var Mt, nt, K, _t, It, $t, Wt, Ot;
625
+ var Mt, nt, K, _t, $t, It, Wt, Ot;
640
626
  const ct = class ct extends HTMLElement {
641
627
  constructor() {
642
628
  super();
@@ -659,11 +645,15 @@ const ct = class ct extends HTMLElement {
659
645
  ].forEach(({ selector: s, type: n }) => {
660
646
  const r = this.querySelector(s);
661
647
  if (!r) return;
662
- const o = t(this, $t).call(this, t(this, nt), n);
663
- r.innerHTML = "", r.appendChild(o);
648
+ const o = t(this, It).call(this, t(this, nt), n);
649
+ r.innerHTML = "";
650
+ const l = document.createElement("div");
651
+ l.className = "ng-scroll-content", l.appendChild(o);
652
+ const d = document.createElement("div");
653
+ d.className = "ng-virtual-spacer", l.appendChild(d), r.appendChild(l);
664
654
  });
665
655
  }, "#renderSplitContainers"));
666
- c(this, It, /* @__PURE__ */ a(() => {
656
+ c(this, $t, /* @__PURE__ */ a(() => {
667
657
  ["left", "right"].forEach((e) => {
668
658
  const s = this.querySelector(`.ng-container-${e}`), n = s == null ? void 0 : s.querySelector("table");
669
659
  if (!s || !n) return;
@@ -675,7 +665,7 @@ const ct = class ct extends HTMLElement {
675
665
  });
676
666
  }, "#updateContainerWidths"));
677
667
  v(this, "generate", /* @__PURE__ */ a((e) => {
678
- e && (b(this, nt, Gt.compile(e)), t(this, nt).style.display = "table", t(this, _t).call(this), t(this, It).call(this), requestAnimationFrame(() => {
668
+ e && (b(this, nt, Gt.compile(e)), t(this, nt).style.display = "table", t(this, _t).call(this), t(this, $t).call(this), requestAnimationFrame(() => {
679
669
  var n;
680
670
  const s = (n = this.querySelector("thead")) == null ? void 0 : n.getBoundingClientRect().height;
681
671
  this.querySelectorAll("tbody.fixed-tbody").forEach((r) => {
@@ -689,7 +679,7 @@ const ct = class ct extends HTMLElement {
689
679
  /**
690
680
  * 🎯 λ§ˆμŠ€ν„° ν…Œμ΄λΈ”μ„ 기반으둜 νŠΉμ • fixed νƒ€μž… μ˜μ—­λ§Œ λ‚¨κΈ°λŠ” λΆ„ν•  헬퍼
691
681
  */
692
- c(this, $t, /* @__PURE__ */ a((e, s) => {
682
+ c(this, It, /* @__PURE__ */ a((e, s) => {
693
683
  const n = e.cloneNode(!0), r = n.querySelector("tbody");
694
684
  if (r) {
695
685
  const o = document.createElement("tbody");
@@ -747,21 +737,14 @@ const ct = class ct extends HTMLElement {
747
737
  nine-table-sheet .ng-container-left {
748
738
  display: flex;
749
739
  flex-direction: column;
750
- overflow: hidden;
740
+ overflow-y: auto;
741
+ overflow-x: hidden;
751
742
  background: #ffffff;
752
743
  border-right: 1px solid #e5e7eb;
753
744
  flex-shrink: 0;
745
+ scrollbar-width: none;
746
+ &::-webkit-scrollbar { display: none; }
754
747
  }
755
-
756
- nine-table-sheet thead {
757
- position: sticky;
758
- top: 0;
759
- }
760
- nine-table-sheet tbody.fixed-tbody {
761
- position: sticky;
762
- z-index: 4;
763
- }
764
-
765
748
 
766
749
  nine-table-sheet .ng-container-body {
767
750
  display: flex;
@@ -771,23 +754,32 @@ const ct = class ct extends HTMLElement {
771
754
  overflow-x: auto;
772
755
  background: #ffffff;
773
756
  position: relative;
774
-
775
- &::-webkit-scrollbar {
776
- display: none;
777
- height: 0px;
778
- }
779
-
780
757
  scrollbar-width: none;
758
+ &::-webkit-scrollbar { display: none; height: 0px; }
781
759
  }
782
760
 
783
761
  nine-table-sheet .ng-container-right {
784
762
  display: flex;
785
- flex-init: 0;
786
763
  flex-direction: column;
787
- overflow: hidden;
764
+ overflow-y: auto;
765
+ overflow-x: hidden;
788
766
  background: #ffffff;
789
767
  border-left: 1px solid #e5e7eb;
790
768
  flex-shrink: 0;
769
+ scrollbar-width: none;
770
+ &::-webkit-scrollbar { display: none; }
771
+ }
772
+
773
+ nine-table-sheet .ng-scroll-content {
774
+ position: relative;
775
+ width: 100%;
776
+ height: auto;
777
+ }
778
+
779
+ nine-table-sheet .ng-virtual-spacer {
780
+ width: 100%;
781
+ visibility: hidden;
782
+ pointer-events: none;
791
783
  }
792
784
 
793
785
  nine-table-sheet .ng-container-bottom {
@@ -815,6 +807,17 @@ const ct = class ct extends HTMLElement {
815
807
  position: relative;
816
808
  }
817
809
 
810
+ nine-table-sheet thead {
811
+ position: sticky;
812
+ top: 0;
813
+ z-index: 3;
814
+ }
815
+
816
+ nine-table-sheet tbody.fixed-tbody {
817
+ position: sticky;
818
+ z-index: 4;
819
+ }
820
+
818
821
  nine-table-sheet th, nine-table-sheet td {
819
822
  box-sizing: border-box;
820
823
  overflow: hidden;
@@ -871,7 +874,7 @@ const ct = class ct extends HTMLElement {
871
874
  this.innerHTML = "", P.log("NineTableSheet destroyed.");
872
875
  }
873
876
  };
874
- Mt = new WeakMap(), nt = new WeakMap(), K = new WeakMap(), _t = new WeakMap(), It = new WeakMap(), $t = new WeakMap(), Wt = new WeakMap(), Ot = new WeakMap(), a(ct, "NineTableSheet"), v(ct, "SCROLLBAR_SIZE", 16);
877
+ Mt = new WeakMap(), nt = new WeakMap(), K = new WeakMap(), _t = new WeakMap(), $t = new WeakMap(), It = new WeakMap(), Wt = new WeakMap(), Ot = new WeakMap(), a(ct, "NineTableSheet"), v(ct, "SCROLLBAR_SIZE", 16);
875
878
  let wt = ct;
876
879
  customElements.get("nine-table-sheet") || customElements.define("nine-table-sheet", wt);
877
880
  var zt, yt;
@@ -892,8 +895,8 @@ const he = class he extends HTMLElement {
892
895
  Array.from(this.querySelectorAll("nine-splitter")).forEach((y) => y.style.setProperty("display", "none"));
893
896
  const g = f.filter((y) => y.classList.contains("active"));
894
897
  g.length < 2 || g.forEach((y) => {
895
- const m = parseInt(y.getAttribute("data-index"), 10), S = this.querySelector(`nine-splitter[data-split-index="${m}"]`), W = f[m + 1];
896
- S && W && W.classList.contains("active") && S.style.setProperty("display", "flex");
898
+ const m = parseInt(y.getAttribute("data-index"), 10), S = this.querySelector(`nine-splitter[data-split-index="${m}"]`), O = f[m + 1];
899
+ S && O && O.classList.contains("active") && S.style.setProperty("display", "flex");
897
900
  });
898
901
  }, "updateSplitters"), r = this.querySelector(".nine-tab-bar"), o = this.querySelector("nine-table-sheets-body"), l = r.querySelectorAll(".nine-tab-item"), d = o.querySelectorAll("nine-table-sheet");
899
902
  if (!l[e]) return;
@@ -925,29 +928,29 @@ const he = class he extends HTMLElement {
925
928
  zt = new WeakMap(), yt = new WeakMap(), a(he, "NineTableSheets");
926
929
  let Qt = he;
927
930
  customElements.get("nine-table-sheets") || customElements.define("nine-table-sheets", Qt);
928
- var q, Dt, pt, Bt;
931
+ var T, Dt, pt, Nt;
929
932
  const de = class de {
930
933
  constructor(i) {
931
- c(this, q);
934
+ c(this, T);
932
935
  c(this, Dt, /* @__PURE__ */ a(() => {
933
- t(this, Bt).call(this), new ResizeObserver((i) => {
936
+ t(this, Nt).call(this), new ResizeObserver((i) => {
934
937
  for (let e of i)
935
- t(this, q).getAttribute("auto-height") === "true" && t(this, pt).call(this);
936
- }).observe(t(this, q));
938
+ t(this, T).getAttribute("auto-height") === "true" && t(this, pt).call(this);
939
+ }).observe(t(this, T));
937
940
  }, "#init"));
938
941
  c(this, pt, /* @__PURE__ */ a(() => {
939
942
  var d, h;
940
- const i = Array.from(t(this, q).shadowRoot.querySelectorAll("nine-table-sheet.active"));
943
+ const i = Array.from(t(this, T).shadowRoot.querySelectorAll("nine-table-sheet.active"));
941
944
  if (i.length === 0) return;
942
- const e = parseInt(t(this, q).getAttribute("max-display-row"), 10) || 10, s = Math.max(...i.map((f) => f.getRowHeight())), n = (d = t(this, q).shadowRoot.querySelector("nine-table-header")) == null ? void 0 : d.getBoundingClientRect().height, r = (h = t(this, q).shadowRoot.querySelector("nine-table-sheets-footer")) == null ? void 0 : h.getBoundingClientRect().height, o = wt.SCROLLBAR_SIZE, l = e * s + n + r + o;
943
- t(this, q).style.height = `${l}px`;
945
+ const e = parseInt(t(this, T).getAttribute("max-display-row"), 10) || 10, s = Math.max(...i.map((f) => f.getRowHeight())), n = (d = t(this, T).shadowRoot.querySelector("nine-table-header")) == null ? void 0 : d.getBoundingClientRect().height, r = (h = t(this, T).shadowRoot.querySelector("nine-table-sheets-footer")) == null ? void 0 : h.getBoundingClientRect().height, o = wt.SCROLLBAR_SIZE, l = e * s + n + r + o;
946
+ t(this, T).style.height = `${l}px`;
944
947
  }, "#applyAutoHeight"));
945
- c(this, Bt, /* @__PURE__ */ a(() => {
946
- const e = Array.from(t(this, q).children).filter((d) => d.tagName === "TABLE"), s = t(this, q).getAttribute("auto-height") === "true", n = e.length, r = e.map((d, h) => {
948
+ c(this, Nt, /* @__PURE__ */ a(() => {
949
+ const e = Array.from(t(this, T).children).filter((d) => d.tagName === "TABLE"), s = t(this, T).getAttribute("auto-height") === "true", n = e.length, r = e.map((d, h) => {
947
950
  const u = `<nine-table-sheet class="${h === 0 ? "active" : ""}" data-index="${h}"></nine-table-sheet>`, g = h < n - 1 ? `<nine-splitter class="h" data-split-index="${h}"></nine-splitter>` : "";
948
951
  return u + g;
949
952
  }).join(""), o = e.map((d, h) => `<div class="nine-tab-item ${h === 0 ? "active" : ""}" data-index="${h}">Sheet ${h + 1}</div>`).join("");
950
- t(this, q).shadowRoot.innerHTML = `
953
+ t(this, T).shadowRoot.innerHTML = `
951
954
  <style>
952
955
  :host {
953
956
  display: flex;
@@ -1038,17 +1041,17 @@ const de = class de {
1038
1041
  </nine-table-body>
1039
1042
  <nine-table-footer></nine-table-footer>
1040
1043
  `;
1041
- const l = t(this, q).shadowRoot.querySelectorAll("nine-table-sheet");
1044
+ const l = t(this, T).shadowRoot.querySelectorAll("nine-table-sheet");
1042
1045
  l == null || l.forEach((d, h) => {
1043
1046
  e[h] && setTimeout(() => {
1044
1047
  d.generate(e[h]), s && t(this, pt).call(this);
1045
1048
  });
1046
1049
  });
1047
1050
  }, "#render"));
1048
- b(this, q, i), t(this, Dt).call(this);
1051
+ b(this, T, i), t(this, Dt).call(this);
1049
1052
  }
1050
1053
  };
1051
- q = new WeakMap(), Dt = new WeakMap(), pt = new WeakMap(), Bt = new WeakMap(), a(de, "LayoutManager");
1054
+ T = new WeakMap(), Dt = new WeakMap(), pt = new WeakMap(), Nt = new WeakMap(), a(de, "LayoutManager");
1052
1055
  let te = de;
1053
1056
  var mt, ot;
1054
1057
  const fe = class fe {
@@ -1068,23 +1071,23 @@ const fe = class fe {
1068
1071
  };
1069
1072
  mt = new WeakMap(), ot = new WeakMap(), a(fe, "ngRow");
1070
1073
  let ee = fe;
1071
- var k, R, L, rt, Nt, N, Pt, Z, xt, Yt, Vt, lt;
1074
+ var k, R, L, rt, Bt, B, Pt, Z, xt, Yt, Vt, lt;
1072
1075
  const C = class C {
1073
1076
  constructor(i, e) {
1074
1077
  c(this, k);
1075
1078
  c(this, R);
1076
1079
  c(this, L, []);
1077
1080
  c(this, rt, []);
1078
- c(this, Nt, 0);
1079
- c(this, N, []);
1081
+ c(this, Bt, 0);
1082
+ c(this, B, []);
1080
1083
  c(this, Pt, /* @__PURE__ */ a(() => {
1081
- b(this, N, []);
1084
+ b(this, B, []);
1082
1085
  const i = t(this, k).template || [];
1083
1086
  Array.from(i).forEach((e) => {
1084
1087
  var s;
1085
- t(this, N).push(((s = e.getBoundingClientRect) == null ? void 0 : s.call(e).height) || 24);
1088
+ t(this, B).push(((s = e.getBoundingClientRect) == null ? void 0 : s.call(e).height) || 24);
1086
1089
  }), (t(this, R).rawRecords || []).forEach((e) => {
1087
- e.__ng || (e.__ng = t(this, xt).call(this)), e.__ng.height = t(this, N).slice();
1090
+ e.__ng || (e.__ng = t(this, xt).call(this)), e.__ng.height = t(this, B).slice();
1088
1091
  });
1089
1092
  }, "#initialize"));
1090
1093
  c(this, Z, /* @__PURE__ */ a(() => {
@@ -1112,10 +1115,10 @@ const C = class C {
1112
1115
  rowState: C.ROW_STATE.EMPTY,
1113
1116
  deleted: !1,
1114
1117
  filtered: !1,
1115
- height: t(this, N).slice(),
1118
+ height: t(this, B).slice(),
1116
1119
  o: {},
1117
1120
  c: {},
1118
- _: [0, 0, 0, 0, C.ROW_STATE.EMPTY, !1, !1, !0, !1, !0, !0, !1, t(this, N).slice(), -1, {}, {}]
1121
+ _: [0, 0, 0, 0, C.ROW_STATE.EMPTY, !1, !1, !0, !1, !0, !0, !1, t(this, B).slice(), -1, {}, {}]
1119
1122
  }), "#getDefaultMeta"));
1120
1123
  v(this, "reset", /* @__PURE__ */ a(() => {
1121
1124
  b(this, L, []), b(this, rt, []), t(this, Z).call(this);
@@ -1198,7 +1201,7 @@ const C = class C {
1198
1201
  this.clear(), this.add(i, !1);
1199
1202
  }
1200
1203
  get nextId() {
1201
- return ++ve(this, Nt)._;
1204
+ return ++ve(this, Bt)._;
1202
1205
  }
1203
1206
  get length() {
1204
1207
  return t(this, L).length;
@@ -1207,7 +1210,7 @@ const C = class C {
1207
1210
  return this.length;
1208
1211
  }
1209
1212
  };
1210
- k = new WeakMap(), R = new WeakMap(), L = new WeakMap(), rt = new WeakMap(), Nt = new WeakMap(), N = new WeakMap(), Pt = new WeakMap(), Z = new WeakMap(), xt = new WeakMap(), Yt = new WeakMap(), Vt = new WeakMap(), lt = new WeakMap(), a(C, "ngData"), // 🎯 ν–‰ μƒνƒœ μ •μ˜ μƒμˆ˜λ₯Ό 클래슀 λ‚΄λΆ€λ‘œ λ‚΄μž¬ν™”
1213
+ k = new WeakMap(), R = new WeakMap(), L = new WeakMap(), rt = new WeakMap(), Bt = new WeakMap(), B = new WeakMap(), Pt = new WeakMap(), Z = new WeakMap(), xt = new WeakMap(), Yt = new WeakMap(), Vt = new WeakMap(), lt = new WeakMap(), a(C, "ngData"), // 🎯 ν–‰ μƒνƒœ μ •μ˜ μƒμˆ˜λ₯Ό 클래슀 λ‚΄λΆ€λ‘œ λ‚΄μž¬ν™”
1211
1214
  v(C, "ROW_STATE", {
1212
1215
  EMPTY: "EMPTY",
1213
1216
  NORMAL: "NORMAL",