@ninebone/datagrid 0.0.14 → 0.0.15

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.
@@ -274,6 +274,14 @@ var n = new class extends e.constructor {
274
274
  let a = this.#u(e), o = this.#t.rawRecords[a];
275
275
  o && (o.v[i] !== n && o.m._[r.META.INDEX.ROW_STATE] !== r.ROW_STATE.INSERT && (o.m._[r.META.INDEX.ROW_STATE] = r.ROW_STATE.UPDATE), o.v[i] = n);
276
276
  };
277
+ getChangedData = (e) => {
278
+ let t = this.#t.rawRecords;
279
+ return e ? this.#d(t.filter((t) => t.m._[r.META.INDEX.ROW_STATE] === e)) : {
280
+ C: this.#d(t.filter((e) => e.m._[r.META.INDEX.ROW_STATE] === r.ROW_STATE.INSERT)),
281
+ U: this.#d(t.filter((e) => e.m._[r.META.INDEX.ROW_STATE] === r.ROW_STATE.UPDATE)),
282
+ D: this.#d(t.filter((e) => e.m._[r.META.INDEX.ROW_STATE] === r.ROW_STATE.DELETE))
283
+ };
284
+ };
277
285
  #d = (e) => {
278
286
  if (!e) return e;
279
287
  let t = !Array.isArray(e), n = t ? [e] : e, r = this.getHostFields(), i = n.filter((e) => !e.__ng?.deleted).map((e) => {
@@ -296,7 +304,7 @@ var n = new class extends e.constructor {
296
304
  if (!(t >= this.data.count())) return this.data.getValidData()[t]?.__ng?.rowState;
297
305
  }, this.getRowPosition = () => this.row.at, this.setRowPosition = (e) => {
298
306
  this.row.at = e;
299
- }, this.scrollTo_V1 = (e) => (e < 0 && (e = 0), e >= this.rawRecords.length && (e = this.rawRecords.length - 1), this.viewRecords.rawIndex = e, this.viewRecords.reset && this.viewRecords.reset(), !(e <= 0 || e >= this.rawRecords.length - 1)), this.getColumn = (e, t) => this.data.get(e, t), this.setColumn = (e, t, n) => {
307
+ }, this.getColumn = (e, t) => this.data.get(e, t), this.setColumn = (e, t, n) => {
300
308
  e = parseInt(e, 10), this.data.setValue(e, t, n);
301
309
  }, this.setDataSource([]);
302
310
  }
@@ -1193,13 +1201,15 @@ var m = {
1193
1201
  e.classList.remove("selected-start");
1194
1202
  });
1195
1203
  }), e < 0 || t < 0 || i.forEach((i) => {
1196
- Array.from(i.querySelectorAll("tbody tr")).filter((e) => e.style.display !== "none").forEach((i) => {
1197
- let { matrixRow: a } = this.#n(i);
1198
- a < 0 || (a >= e && a <= n && i.classList.add("selected"), i.querySelectorAll("td, th").forEach((i) => {
1199
- let o = parseInt(i.dataset.col, 10);
1200
- if (isNaN(o)) return;
1201
- let s = parseInt(i.rowSpan || 1, 10), c = parseInt(i.colSpan || 1, 10), l = a + s - 1, u = o + c - 1;
1202
- l >= e && a <= n && u >= t && o <= r && (i.classList.add("selected"), a <= e && i.classList.add("selected-top"), l >= n && i.classList.add("selected-bottom"), o <= t && i.classList.add("selected-left"), u >= r && i.classList.add("selected-right"));
1204
+ Array.from(i.querySelectorAll("tbody tr")).filter((e) => e.style.display !== "none").forEach((a) => {
1205
+ let { matrixRow: o } = this.#n(a);
1206
+ o < 0 || (o >= e && o <= n && i.querySelectorAll(`tbody tr[data-index="${a.dataset.index}"]`).forEach((e) => {
1207
+ e.classList.add("selected");
1208
+ }), a.querySelectorAll("td, th").forEach((i) => {
1209
+ let a = parseInt(i.dataset.col, 10);
1210
+ if (isNaN(a)) return;
1211
+ let s = parseInt(i.rowSpan || 1, 10), c = parseInt(i.colSpan || 1, 10), l = o + s - 1, u = a + c - 1;
1212
+ l >= e && o <= n && u >= t && a <= r && (i.classList.add("selected"), o <= e && i.classList.add("selected-top"), l >= n && i.classList.add("selected-bottom"), a <= t && i.classList.add("selected-left"), u >= r && i.classList.add("selected-right"));
1203
1213
  }));
1204
1214
  });
1205
1215
  });
@@ -1429,7 +1439,7 @@ var m = {
1429
1439
  this.#e.addEventListener("mousedown", (e) => {
1430
1440
  if (e.button !== 0) return;
1431
1441
  let t = e.target.closest("td, th");
1432
- t && t.dataset.index !== void 0 && t.dataset.col !== void 0 && (this.currentCell = t);
1442
+ t && t.dataset.index !== void 0 && t.dataset.col !== void 0 && (t.querySelector("cell-row-indicator") ? this.#e.row.focus(t.dataset.index) : this.currentCell = t);
1433
1443
  }), this.#e.addEventListener("keydown", (e) => {
1434
1444
  [
1435
1445
  "Enter",
@@ -2516,7 +2526,50 @@ var k = class {
2516
2526
  }
2517
2527
  });
2518
2528
  }
2519
- }, M = class extends HTMLElement {
2529
+ }, M = class {
2530
+ #e;
2531
+ #t;
2532
+ constructor(e) {
2533
+ this.#e = e, this.#t = e.getRootNode().host;
2534
+ }
2535
+ row = {
2536
+ at: () => Math.floor(this.#e.selection.minRow / this.#e.template.length),
2537
+ focus: (e) => {
2538
+ this.#e.row.isVisible(e) || this.#e.row.moveTo(e);
2539
+ let t = this.#e.querySelectorAll(`tbody.body tr[data-index="${e}"]`), n = Array.from(t, (e) => parseInt(e.dataset.matrixRow, 10)).filter((e) => !isNaN(e)), r = [];
2540
+ return t.forEach((e) => {
2541
+ e.querySelectorAll("td, th").forEach((e) => {
2542
+ parseInt(e.dataset.col, 10) != 0 && r.push(parseInt(e.dataset.col, 10));
2543
+ });
2544
+ }), this.#e.selection.setRange(Math.min(...n), Math.min(...r), Math.max(...n), Math.max(...r));
2545
+ },
2546
+ isVisible: (e) => {
2547
+ let t = this.#e.querySelector(".ng-sheet-body"), n = t.querySelectorAll(`.ng-container-body tbody.body tr[data-index="${e}"]`);
2548
+ if (!n || n.length === 0) return !1;
2549
+ let r = t.getBoundingClientRect(), i = t.querySelector("thead")?.offsetHeight || 0, a = t.querySelector("tfoot")?.offsetHeight || 0, o = r.top + i, s = r.bottom - a, c = !0;
2550
+ for (let e of n) {
2551
+ let t = e.getBoundingClientRect(), n = t.top < o, r = t.bottom > s;
2552
+ if (n || r) {
2553
+ c = !1;
2554
+ break;
2555
+ }
2556
+ }
2557
+ return c;
2558
+ },
2559
+ add: (e, t) => this.#t.data.add(e, t),
2560
+ moveTo: (e, t) => {
2561
+ this.#e.row.isVisible(e) || this.#e.scrollTo(e, t);
2562
+ },
2563
+ insert: (e, t, n = !0) => {
2564
+ let i = this.#e.view.get(e).m._[r.META.INDEX.ROWID], a = this.#t.data.insert(i, t, n);
2565
+ return this.#e.view.getArray().findIndex((e) => !e || !e.m || !e.m._ ? !1 : e.m._[r.META.INDEX.ROWID] === a);
2566
+ },
2567
+ remove: (e) => {
2568
+ let t = this.#e.view.get(e).m._[r.META.INDEX.ROWID];
2569
+ this.#t.data.remove(t);
2570
+ }
2571
+ };
2572
+ }, N = class extends HTMLElement {
2520
2573
  #e;
2521
2574
  #t;
2522
2575
  #n;
@@ -2529,14 +2582,15 @@ var k = class {
2529
2582
  #l;
2530
2583
  #u;
2531
2584
  #d;
2532
- #f = { table: null };
2533
- #p;
2585
+ #f;
2586
+ #p = { table: null };
2587
+ #m;
2534
2588
  static SCROLLBAR_SIZE = 16;
2535
2589
  constructor() {
2536
- super(), this.#t = this.getRootNode().host, this.#n = new _(this);
2590
+ super(), this.#t = this.getRootNode().host, this.#n = new _(this), this.#d = new M(this), this.#E();
2537
2591
  }
2538
2592
  connectedCallback() {
2539
- this.#b();
2593
+ this.#x();
2540
2594
  }
2541
2595
  get index() {
2542
2596
  return this.#e;
@@ -2566,29 +2620,35 @@ var k = class {
2566
2620
  return this.#i;
2567
2621
  }
2568
2622
  get templateLength() {
2569
- return this.#f.tbody.tr.length || 0;
2623
+ return this.#p.tbody.tr.length || 0;
2570
2624
  }
2571
2625
  get elements() {
2572
- return this.#p;
2626
+ return this.#m;
2627
+ }
2628
+ get template() {
2629
+ return {
2630
+ length: this.#p?.tbody?.tr?.length || 0,
2631
+ trs: this.#p?.tbody?.tr || []
2632
+ };
2573
2633
  }
2574
2634
  get isAutoFitCol() {
2575
- let e = this.getAttribute("auto-fit-col") === "true" || this.#t?.getAttribute("auto-fit-col") === "true", t = this.#f.table?.getAttribute("auto-fit-col") === "true";
2635
+ let e = this.getAttribute("auto-fit-col") === "true" || this.#t?.getAttribute("auto-fit-col") === "true", t = this.#p.table?.getAttribute("auto-fit-col") === "true";
2576
2636
  return e || t;
2577
2637
  }
2578
2638
  get sourceTable() {
2579
- return this.#f.table;
2639
+ return this.#p.table;
2580
2640
  }
2581
2641
  get source() {
2582
- return this.#f;
2642
+ return this.#p;
2583
2643
  }
2584
- get #m() {
2644
+ get #h() {
2585
2645
  return this.#t.hasAttribute("simple") || this.#t.getAttribute("theme") === "simple";
2586
2646
  }
2587
2647
  scrollTo = (e, t) => {
2588
2648
  this.rowManager.scrollToDataRow(e, "top", t);
2589
2649
  };
2590
2650
  recompileAndRefresh() {
2591
- this.#f.table && (v.recompile(this.#f.table), [
2651
+ this.#p.table && (v.recompile(this.#p.table), [
2592
2652
  "left",
2593
2653
  "right",
2594
2654
  "body"
@@ -2601,31 +2661,31 @@ var k = class {
2601
2661
  let n = this.querySelector(`.ng-sheet-${t} .ng-container-${e}`);
2602
2662
  n && n.querySelectorAll("table").forEach((e) => e.remove());
2603
2663
  });
2604
- }), this.#v(), this.#_(), this.#n.initialize(), this.isAutoFitCol ? this.autoFit(!0) : this.querySelector("nine-table-hscrollbar")?.refresh(), requestAnimationFrame(() => {
2605
- this.#_(), this.#n?.refresh();
2664
+ }), this.#y(), this.#v(), this.#n.initialize(), this.isAutoFitCol ? this.autoFit(!0) : this.querySelector("nine-table-hscrollbar")?.refresh(), requestAnimationFrame(() => {
2665
+ this.#v(), this.#n?.refresh();
2606
2666
  }));
2607
2667
  }
2608
2668
  refreshLayout() {
2609
2669
  requestAnimationFrame(() => {
2610
- this.classList.contains("active") && this.#f.table && (this.#_(), this.isAutoFitCol ? this.autoFit(!0) : this.querySelector("nine-table-hscrollbar")?.refresh(), this.#h(), this.#a?.refreshLayout(), this.#n?.refresh());
2670
+ this.classList.contains("active") && this.#p.table && (this.#v(), this.isAutoFitCol ? this.autoFit(!0) : this.querySelector("nine-table-hscrollbar")?.refresh(), this.#g(), this.#a?.refreshLayout(), this.#n?.refresh());
2611
2671
  });
2612
2672
  }
2613
- #h = () => {
2673
+ #g = () => {
2614
2674
  let e = this.querySelector(".ng-container-body thead"), t = this.querySelector(".nodata-overlay");
2615
2675
  t.style.top = `${e.offsetHeight}px`;
2616
2676
  };
2617
2677
  get view() {
2618
- return !this.#d && this.#t?.data && (this.#d = new A(this)), this.#d;
2678
+ return !this.#f && this.#t?.data && (this.#f = new A(this)), this.#f;
2619
2679
  }
2620
2680
  invalidate = () => {
2621
2681
  this.view.refresh(), this.#n.refresh(!0), this.isAutoFitCol && this.autoFit(!0);
2622
2682
  };
2623
2683
  autoFit = (e = !0) => {
2624
2684
  requestAnimationFrame(() => {
2625
- this.#g?.(e);
2685
+ this.#_?.(e);
2626
2686
  });
2627
2687
  };
2628
- #g = (e = !0) => {
2688
+ #_ = (e = !0) => {
2629
2689
  let t = this.querySelector(".ng-sheet-body .ng-container-body");
2630
2690
  if (!t) return;
2631
2691
  let n = this.querySelector(".ng-container-body table colgroup");
@@ -2685,16 +2745,16 @@ var k = class {
2685
2745
  }
2686
2746
  };
2687
2747
  generate = (e, t) => {
2688
- e.style.display = "none", this.#e = t, j.initializeTable(this.#t, e), e.style.display = "", this.#f = {
2748
+ e.style.display = "none", this.#e = t, j.initializeTable(this.#t, e), e.style.display = "", this.#p = {
2689
2749
  table: v.compile(e),
2690
2750
  tbody: { tr: e.querySelectorAll("tbody tr") }
2691
- }, this.#v(), this.#_(), this.#S(), this.#w(), [
2751
+ }, this.#y(), this.#v(), this.#C(), this.#T(), [
2692
2752
  "left",
2693
2753
  "body",
2694
2754
  "right"
2695
2755
  ].forEach((e) => {
2696
2756
  let t = `.ng-container-${e}`;
2697
- this.#p[e] = {
2757
+ this.#m[e] = {
2698
2758
  thead: this.querySelector(`${t} thead`),
2699
2759
  tbody: {
2700
2760
  head: this.querySelector(`${t} tbody.head`),
@@ -2705,7 +2765,7 @@ var k = class {
2705
2765
  };
2706
2766
  }), this.#n.initialize(), this.isAutoFitCol ? this.autoFit(!0) : this.querySelector("nine-table-hscrollbar").refresh(), this.#u.initialize(), this.loaded = !0;
2707
2767
  };
2708
- #_ = () => {
2768
+ #v = () => {
2709
2769
  [
2710
2770
  "left",
2711
2771
  "right",
@@ -2724,7 +2784,7 @@ var k = class {
2724
2784
  });
2725
2785
  });
2726
2786
  };
2727
- #v = () => {
2787
+ #y = () => {
2728
2788
  [
2729
2789
  {
2730
2790
  selector: ".ng-container-left",
@@ -2739,11 +2799,11 @@ var k = class {
2739
2799
  type: "right"
2740
2800
  }
2741
2801
  ].forEach(({ selector: e, type: t }) => {
2742
- this.querySelector(`.ng-sheet-body ${e}`).appendChild(this.#y(t));
2802
+ this.querySelector(`.ng-sheet-body ${e}`).appendChild(this.#b(t));
2743
2803
  });
2744
2804
  };
2745
- #y = (e) => {
2746
- let t = this.#f.table.cloneNode(!0);
2805
+ #b = (e) => {
2806
+ let t = this.#p.table.cloneNode(!0);
2747
2807
  return e === "left" ? t.querySelectorAll("col, th, td").forEach((e) => {
2748
2808
  e.getAttribute("fixed") !== "left" && e.remove();
2749
2809
  }) : e === "right" ? t.querySelectorAll("col, th, td").forEach((e) => {
@@ -2753,9 +2813,9 @@ var k = class {
2753
2813
  }), t;
2754
2814
  };
2755
2815
  getRowHeight = () => this.#n.getRowHeight();
2756
- getViewHeight = () => (this.#p.content.offsetHeight || 0) - ((this.#p.body.thead?.offsetHeight || 0) + (this.#p.body.tfoot?.offsetHeight || 0) + (this.#p.body.tbody.head.offsetHeight || 0));
2816
+ getViewHeight = () => (this.#m.content.offsetHeight || 0) - ((this.#m.body.thead?.offsetHeight || 0) + (this.#m.body.tfoot?.offsetHeight || 0) + (this.#m.body.tbody.head.offsetHeight || 0));
2757
2817
  isLastRow = () => {
2758
- let e = this.querySelector(".ng-sheet-body"), t = this.querySelector(".ng-container-body tbody.body"), n = this.#p.body.tfoot?.offsetHeight || 0, r = e.getBoundingClientRect().bottom, i = t.getBoundingClientRect().bottom;
2818
+ let e = this.querySelector(".ng-sheet-body"), t = this.querySelector(".ng-container-body tbody.body"), n = this.#m.body.tfoot?.offsetHeight || 0, r = e.getBoundingClientRect().bottom, i = t.getBoundingClientRect().bottom;
2759
2819
  return r - n >= i;
2760
2820
  };
2761
2821
  scrollToX = (e) => {
@@ -2766,13 +2826,13 @@ var k = class {
2766
2826
  let t = this.querySelector(".ng-sheet-body");
2767
2827
  t && (t.scrollTop = e);
2768
2828
  };
2769
- #b = () => {
2770
- this.#x(), this.#r = new y(this), this.#i = new b(this), this.#a = new S(this), this.#o = new w(this), this.#s = new T(this), this.#d = new A(this), this.#l = new O(this), this.#u = new h(this), this.#m || (this.#c = new k(this)), this.#p.mainBody.addEventListener("scroll", () => {
2829
+ #x = () => {
2830
+ this.#S(), this.#r = new y(this), this.#i = new b(this), this.#a = new S(this), this.#o = new w(this), this.#s = new T(this), this.#f = new A(this), this.#l = new O(this), this.#u = new h(this), this.#h || (this.#c = new k(this)), this.#m.mainBody.addEventListener("scroll", () => {
2771
2831
  this.querySelector("nine-table-hscrollbar").refresh();
2772
2832
  });
2773
2833
  };
2774
- #x = () => {
2775
- this.innerHTML = "\n <div class=\"ng-sheet-body\">\n <div class=\"ng-sheet-body-content\">\n <div class=\"ng-container-left\"></div>\n <div class=\"ng-container-body\"></div>\n <div class=\"ng-container-right\"></div>\n </div>\n <div class=\"ng-virtual-height-holder\"></div>\n </div>\n\n <div class=\"nodata-overlay\">Data Not Found</div>\n\n <nine-table-vscrollbar></nine-table-vscrollbar>\n <nine-table-hscrollbar></nine-table-hscrollbar>\n <div class=\"scroll-edge\"></div>\n \n <nine-table-col-resizer-panel></nine-table-col-resizer-panel>\n \n <div class=\"ng-col-mover-grip\"></div>\n <div class=\"ng-col-mover-indi\"></div>\n ", this.#p = {
2834
+ #S = () => {
2835
+ this.innerHTML = "\n <div class=\"ng-sheet-body\">\n <div class=\"ng-sheet-body-content\">\n <div class=\"ng-container-left\"></div>\n <div class=\"ng-container-body\"></div>\n <div class=\"ng-container-right\"></div>\n </div>\n <div class=\"ng-virtual-height-holder\"></div>\n </div>\n\n <div class=\"nodata-overlay\">Data Not Found</div>\n\n <nine-table-vscrollbar></nine-table-vscrollbar>\n <nine-table-hscrollbar></nine-table-hscrollbar>\n <div class=\"scroll-edge\"></div>\n \n <nine-table-col-resizer-panel></nine-table-col-resizer-panel>\n \n <div class=\"ng-col-mover-grip\"></div>\n <div class=\"ng-col-mover-indi\"></div>\n ", this.#m = {
2776
2836
  mainBody: this.querySelector(".ng-sheet-body .ng-container-body"),
2777
2837
  hscrollbar: this.querySelector("nine-table-hscrollbar"),
2778
2838
  vscrollbar: this.querySelector("nine-table-vscrollbar"),
@@ -2780,13 +2840,13 @@ var k = class {
2780
2840
  scrollHolder: this.querySelector(".ng-sheet-body .ng-virtual-height-holder")
2781
2841
  };
2782
2842
  };
2783
- #S = () => {
2843
+ #C = () => {
2784
2844
  let e = this.querySelector(".ng-container-left table"), t = this.querySelector(".ng-container-body table"), n = this.querySelector(".ng-container-right table"), r = Array.from(e.querySelectorAll("thead tr:not(.col-indicator-rowgroup)")), i = Array.from(t.querySelectorAll("thead tr:not(.col-indicator-rowgroup)")), a = Array.from(n.querySelectorAll("thead tr:not(.col-indicator-rowgroup)"));
2785
- this.#C(r, i, a);
2845
+ this.#w(r, i, a);
2786
2846
  let o = Array.from(e.querySelectorAll("tfoot tr")), s = Array.from(t.querySelectorAll("tfoot tr")), c = Array.from(n.querySelectorAll("tfoot tr"));
2787
- this.#C(o, s, c);
2847
+ this.#w(o, s, c);
2788
2848
  };
2789
- #C = (e, t, n) => {
2849
+ #w = (e, t, n) => {
2790
2850
  setTimeout(() => {
2791
2851
  let r = Math.max(e.length, t.length, n.length);
2792
2852
  for (let i = 0; i < r; i++) {
@@ -2799,7 +2859,7 @@ var k = class {
2799
2859
  }
2800
2860
  });
2801
2861
  };
2802
- #w = () => {
2862
+ #T = () => {
2803
2863
  let e = this.querySelector(".ng-sheet-body");
2804
2864
  if (!e) return;
2805
2865
  let t = null;
@@ -2819,13 +2879,22 @@ var k = class {
2819
2879
  }), t = null);
2820
2880
  });
2821
2881
  };
2882
+ #E = () => {
2883
+ [this.#d].forEach((e) => {
2884
+ (/* @__PURE__ */ new Set([...Reflect.ownKeys(e), ...Reflect.ownKeys(Object.getPrototypeOf(e))])).forEach((t) => {
2885
+ if (t === "constructor" || String(t).startsWith("#")) return;
2886
+ let n = e[t];
2887
+ typeof n == "function" ? this[t] || (this[t] = (...t) => n.apply(e, t)) : typeof n == "object" && n && (this[t] || (this[t] = n));
2888
+ });
2889
+ });
2890
+ };
2822
2891
  disconnectedCallback() {
2823
2892
  this.#a?.destroy(), this.#o?.destroy(), this.innerHTML = "";
2824
2893
  }
2825
2894
  };
2826
- customElements.get("nine-table-sheet") || customElements.define("nine-table-sheet", M);
2895
+ customElements.get("nine-table-sheet") || customElements.define("nine-table-sheet", N);
2827
2896
  // src/layout/core/LayoutManager.js
2828
- var N = class {
2897
+ var P = class {
2829
2898
  #e;
2830
2899
  constructor(e) {
2831
2900
  this.#e = e, this.#t();
@@ -2841,14 +2910,14 @@ var N = class {
2841
2910
  #n = () => {
2842
2911
  let e = Array.from(this.#e.shadowRoot.querySelectorAll("nine-table-sheet.active"));
2843
2912
  if (e.length === 0) return;
2844
- let t = parseInt(this.#e.getAttribute("max-display-row"), 10) || 10, n = Math.max(...e.map((e) => e.getRowHeight())), r = this.#e.shadowRoot.querySelector("nine-table-toolbar"), i = this.#e.shadowRoot.querySelector("nine-table-sheets-footer"), a = r ? r.getBoundingClientRect().height : 0, o = i ? i.getBoundingClientRect().height : 0, s = M.SCROLLBAR_SIZE, c = t * n + a + o + s;
2913
+ let t = parseInt(this.#e.getAttribute("max-display-row"), 10) || 10, n = Math.max(...e.map((e) => e.getRowHeight())), r = this.#e.shadowRoot.querySelector("nine-table-toolbar"), i = this.#e.shadowRoot.querySelector("nine-table-sheets-footer"), a = r ? r.getBoundingClientRect().height : 0, o = i ? i.getBoundingClientRect().height : 0, s = N.SCROLLBAR_SIZE, c = t * n + a + o + s;
2845
2914
  this.#e.style.height = `${c}px`;
2846
2915
  };
2847
2916
  #r = () => {
2848
2917
  let e = Array.from(this.#e.children).filter((e) => e.tagName.toUpperCase() === "TABLE"), t = this.#e.getAttribute("auto-height") === "true", n = e.length, r = e.map((e, t) => {
2849
2918
  let r = t === 0 ? "active" : "", i = e.id || `sheet${t + 1}`;
2850
2919
  return `<nine-table-sheet class="${r}" data-index="${t}" data-sheet-id="${i}" id="${i}"></nine-table-sheet>` + (t < n - 1 ? `<nine-splitter class="h" data-split-index="${t}"></nine-splitter>` : "");
2851
- }).join(""), i = ["@import \"https://cdn.jsdelivr.net/npm/@ninebone/datagrid@0.0.14/dist/css/nine-table.css\";"];
2920
+ }).join(""), i = ["@import \"https://cdn.jsdelivr.net/npm/@ninebone/datagrid@0.0.15/dist/css/nine-table.css\";"];
2852
2921
  nine["nine-table"] && nine["nine-table"].cssFile && i.push(`@import "${nine["nine-table"].cssFile}";`), this.#e.shadowRoot.innerHTML = `
2853
2922
  <style>
2854
2923
  ${i.join("\n")}
@@ -2875,7 +2944,7 @@ var N = class {
2875
2944
  });
2876
2945
  });
2877
2946
  };
2878
- }, P = class {
2947
+ }, F = class {
2879
2948
  #e;
2880
2949
  #t;
2881
2950
  #n = /* @__PURE__ */ new Map();
@@ -2910,30 +2979,56 @@ var N = class {
2910
2979
  return e;
2911
2980
  }
2912
2981
  }
2913
- }, F = class extends HTMLElement {
2982
+ }, I = class {
2983
+ #e;
2984
+ constructor(e) {
2985
+ this.#e = e;
2986
+ }
2987
+ }, L = class {
2988
+ #e;
2989
+ constructor(e) {
2990
+ this.#e = e, ["row"].forEach((e) => {
2991
+ this[e] = new Proxy({}, { get: (t, n) => {
2992
+ let r = this.getActiveSheet();
2993
+ if (!r || !r[e]) return;
2994
+ let i = r[e][n];
2995
+ return typeof i == "function" ? (...t) => i.apply(r[e], t) : i;
2996
+ } });
2997
+ });
2998
+ }
2999
+ getActiveSheets() {
3000
+ return this.#e.shadow.querySelectorAll("nine-table-sheet.active");
3001
+ }
3002
+ getActiveSheet() {
3003
+ let e = this.getActiveSheets();
3004
+ return e.length > 0 ? e[0] : null;
3005
+ }
3006
+ }, R = class extends HTMLElement {
2914
3007
  #e;
2915
3008
  #t;
2916
3009
  #n;
2917
- #r = 0;
2918
- #i = "";
3010
+ #r;
3011
+ #i;
3012
+ #a = 0;
3013
+ #o = "";
2919
3014
  constructor() {
2920
- super(), ["NINE-TABLE"].includes(this.tagName) && n.log("Welcome nine-table", "0.0.14"), this.#e = this.attachShadow({ mode: "open" }), this.#t = new o(this);
3015
+ super(), ["NINE-TABLE"].includes(this.tagName) && n.log("Welcome nine-table", "0.0.15"), this.#e = this.attachShadow({ mode: "open" }), this.#t = new o(this), this.#r = new I(this), this.#i = new L(this), this.#l();
2921
3016
  }
2922
3017
  connectedCallback() {
2923
3018
  setTimeout(() => {
2924
- this.#r = this.querySelectorAll("table")?.length, this.fields = new s(this), this.exprEngine = new P(this), this.#o(), this.#n = new N(this), this.#a();
3019
+ this.#a = this.querySelectorAll("table")?.length, this.fields = new s(this), this.exprEngine = new F(this), this.#c(), this.#n = new P(this), this.#s();
2925
3020
  });
2926
3021
  }
2927
3022
  disconnectedCallback() {}
2928
- #a = () => {
3023
+ #s = () => {
2929
3024
  let e = 0, t = setInterval(() => {
2930
3025
  e++;
2931
3026
  let n = this.shadow.querySelectorAll("nine-table-sheet");
2932
- if (e >= 50 && clearInterval(t), n.length >= this.#r) {
3027
+ if (e >= 50 && clearInterval(t), n.length >= this.#a) {
2933
3028
  let e = 0;
2934
3029
  n.forEach((t) => {
2935
3030
  t.loaded && e++;
2936
- }), e >= this.#r && (clearInterval(t), this.loaded = !0, this.dispatchEvent(new CustomEvent(r.EVENT.LOAD, {
3031
+ }), e >= this.#a && (clearInterval(t), this.loaded = !0, this.dispatchEvent(new CustomEvent(r.EVENT.LOAD, {
2937
3032
  bubbles: !0,
2938
3033
  detail: { target: this }
2939
3034
  })));
@@ -2949,56 +3044,14 @@ var N = class {
2949
3044
  get data() {
2950
3045
  return this.#t.data;
2951
3046
  }
2952
- get row() {
2953
- return this.#t.row;
2954
- }
2955
3047
  get customStyle() {
2956
- return this.#i;
3048
+ return this.#o;
2957
3049
  }
2958
- scrollTo = (e, t) => {
2959
- this.#e.querySelectorAll("nine-table-sheet.active").forEach((n) => {
2960
- n.scrollTo(e, t);
2961
- });
2962
- };
2963
- currentRow = () => {
2964
- let e = this.currentRows();
2965
- return e.length === 0 ? -1 : e[0];
2966
- };
2967
- currentRows = () => {
2968
- let e = [];
2969
- return this.#e.querySelectorAll("nine-table-sheet.active").forEach((t) => {
2970
- let n = t.view.getArray(t.selection.minRow).m._[r.META.INDEX.ROWID];
2971
- e.push(n);
2972
- }), e;
2973
- };
2974
- addRow = (e, t = !0) => this.data.add(e, t);
2975
- insertRow = (e, t, n = !0) => {
2976
- let i = this.#e.querySelector("nine-table-sheet.active");
2977
- if (!i) return;
2978
- let a = i.view.get(e).m._[r.META.INDEX.ROWID], o = this.data.insert(a, t, n);
2979
- return i.view.getArray().findIndex((e) => !e || !e.m || !e.m._ ? !1 : e.m._[r.META.INDEX.ROWID] === o);
2980
- };
2981
- removeRow = (e) => {
2982
- let t = this.#e.querySelector("nine-table-sheet.active");
2983
- if (!t) return;
2984
- let n = t.view.get(e).m._[r.META.INDEX.ROWID];
2985
- this.data.remove(n);
2986
- };
2987
- currentIndex = () => {
2988
- let e = this.currentIndexs();
2989
- return e.length === 0 ? -1 : e[0];
2990
- };
2991
- currentIndexs = () => {
2992
- let e = [];
2993
- return this.#e.querySelectorAll("nine-table-sheet.active").forEach((t) => {
2994
- e.push(t.selection.minRow);
2995
- }), e;
2996
- };
2997
3050
  addProvider(e) {
2998
3051
  if (!e || typeof e != "object") return;
2999
3052
  let { style: t, ...n } = e;
3000
3053
  if (t && typeof t == "string") {
3001
- this.#i = t;
3054
+ this.#o = t;
3002
3055
  let e = this.#e.getElementById("nine-table-scoped-custom-style");
3003
3056
  e && (e.textContent = t);
3004
3057
  }
@@ -3033,7 +3086,7 @@ var N = class {
3033
3086
  get activeSheet() {
3034
3087
  return this.shadow.querySelector("nine-table-sheet.active") || null;
3035
3088
  }
3036
- #o() {
3089
+ #c() {
3037
3090
  let e = /* @__PURE__ */ new Set();
3038
3091
  this.querySelectorAll("[data-source]").forEach((t) => {
3039
3092
  let n = t.getAttribute("data-source");
@@ -3066,20 +3119,29 @@ var N = class {
3066
3119
  });
3067
3120
  });
3068
3121
  };
3122
+ #l() {
3123
+ [this.#i].forEach((e) => {
3124
+ (/* @__PURE__ */ new Set([...Reflect.ownKeys(e), ...Reflect.ownKeys(Object.getPrototypeOf(e))])).forEach((t) => {
3125
+ if (t === "constructor" || String(t).startsWith("#")) return;
3126
+ let n = e[t];
3127
+ typeof n == "function" ? this[t] || (this[t] = (...t) => n.apply(e, t)) : typeof n == "object" && n && (this[t] || (this[t] = n));
3128
+ });
3129
+ });
3130
+ }
3069
3131
  };
3070
- customElements.get("nine-table") || customElements.define("nine-table", F), customElements.get("nine-table-simple") || customElements.define("nine-table-simple", class extends F {
3132
+ customElements.get("nine-table") || customElements.define("nine-table", R), customElements.get("nine-table-simple") || customElements.define("nine-table-simple", class extends R {
3071
3133
  connectedCallback() {
3072
3134
  this.setAttribute("theme", "simple"), super.connectedCallback();
3073
3135
  }
3074
3136
  });
3075
3137
  // src/cell/core/BasicCellElement.js
3076
- var I = class extends HTMLElement {
3138
+ var z = class extends HTMLElement {
3077
3139
  constructor() {
3078
3140
  super();
3079
3141
  }
3080
3142
  applyBaseStyle() {}
3081
3143
  connectedCallback() {}
3082
- }, L = /* @__PURE__ */ new Map(), R = class extends I {
3144
+ }, B = /* @__PURE__ */ new Map(), V = class extends z {
3083
3145
  #e;
3084
3146
  #t;
3085
3147
  #n;
@@ -3251,7 +3313,7 @@ var I = class extends HTMLElement {
3251
3313
  }
3252
3314
  if (this.#e && typeof this.#e.exprFunction == "function") return this.#e.exprFunction(e).call(this, t, n, this.#e.data);
3253
3315
  if (e.includes("data.") || e.includes("childRecords") || e.includes("groupRecord")) {
3254
- let i = L.get("grp_" + e);
3316
+ let i = B.get("grp_" + e);
3255
3317
  return i || (i = Function("groupRecord", "row", "cell", "host", `
3256
3318
  const indices = groupRecord[3]; // GROUP_IDX.CHILDREN = 3
3257
3319
  const allRecords = host?.data?.getArray ? host.data.getArray() : [];
@@ -3276,14 +3338,14 @@ var I = class extends HTMLElement {
3276
3338
 
3277
3339
  const data = childRecords; // data.length 등을 쓸 수 있도록 호환
3278
3340
  return ${e};
3279
- `), L.set("grp_" + e, i)), i(t, n, r, this.#e);
3341
+ `), B.set("grp_" + e, i)), i(t, n, r, this.#e);
3280
3342
  }
3281
3343
  return e;
3282
3344
  } catch (t) {
3283
3345
  return console.error("Group expr evaluation error:", e, t), e;
3284
3346
  }
3285
3347
  };
3286
- }, z = class extends R {
3348
+ }, H = class extends V {
3287
3349
  get host() {
3288
3350
  return super.host;
3289
3351
  }
@@ -3314,7 +3376,7 @@ var I = class extends HTMLElement {
3314
3376
  getExprValue = (e, t, n, r) => super.getExprValue(e, t, n, r);
3315
3377
  isValid = () => super.isValid();
3316
3378
  isInvalid = () => super.isInvalid();
3317
- }, B = class extends z {
3379
+ }, U = class extends H {
3318
3380
  #e;
3319
3381
  constructor() {
3320
3382
  super();
@@ -3343,9 +3405,9 @@ var I = class extends HTMLElement {
3343
3405
  return this.cell.getAttribute("maxbyte") || this.cell.getAttribute("max-byte");
3344
3406
  }
3345
3407
  };
3346
- customElements.get("cell-input") || customElements.define("cell-input", B);
3408
+ customElements.get("cell-input") || customElements.define("cell-input", U);
3347
3409
  // src/cell/cell-input-number.js
3348
- var V = class extends z {
3410
+ var W = class extends H {
3349
3411
  #e;
3350
3412
  constructor() {
3351
3413
  super();
@@ -3429,9 +3491,9 @@ var V = class extends z {
3429
3491
  return this.cell.getAttribute("maxbyte") || this.cell.getAttribute("max-byte");
3430
3492
  }
3431
3493
  };
3432
- customElements.get("cell-input-number") || customElements.define("cell-input-number", V);
3494
+ customElements.get("cell-input-number") || customElements.define("cell-input-number", W);
3433
3495
  // src/cell/cell-input-color.js
3434
- var H = class extends z {
3496
+ var G = class extends H {
3435
3497
  #e;
3436
3498
  #t;
3437
3499
  #n;
@@ -3487,9 +3549,9 @@ var H = class extends z {
3487
3549
  return !(isNaN(t) || isNaN(n) || isNaN(r) || t < 0 || t > 255 || n < 0 || n > 255 || r < 0 || r > 255);
3488
3550
  };
3489
3551
  };
3490
- customElements.get("cell-input-color") || customElements.define("cell-input-color", H);
3552
+ customElements.get("cell-input-color") || customElements.define("cell-input-color", G);
3491
3553
  // src/cell/cell-input-date.js
3492
- var U = class extends z {
3554
+ var K = class extends H {
3493
3555
  #e;
3494
3556
  #t;
3495
3557
  constructor() {
@@ -3595,9 +3657,9 @@ var U = class extends z {
3595
3657
  return this.cell.getAttribute("max");
3596
3658
  }
3597
3659
  };
3598
- customElements.get("cell-input-date") || customElements.define("cell-input-date", U);
3660
+ customElements.get("cell-input-date") || customElements.define("cell-input-date", K);
3599
3661
  // src/cell/cell-checkbox.js
3600
- var W = class extends z {
3662
+ var q = class extends H {
3601
3663
  #e;
3602
3664
  #t;
3603
3665
  constructor() {
@@ -3670,9 +3732,9 @@ var W = class extends z {
3670
3732
  return this.cell.getAttribute("visible") || !1;
3671
3733
  }
3672
3734
  };
3673
- customElements.get("cell-checkbox") || customElements.define("cell-checkbox", W);
3735
+ customElements.get("cell-checkbox") || customElements.define("cell-checkbox", q);
3674
3736
  // src/cell/cell-radio.js
3675
- var G = class extends z {
3737
+ var J = class extends H {
3676
3738
  #e;
3677
3739
  #t = [];
3678
3740
  #n = [];
@@ -3735,9 +3797,9 @@ var G = class extends z {
3735
3797
  return this.cell.getAttribute("value-name") || "v";
3736
3798
  }
3737
3799
  };
3738
- customElements.get("cell-radio") || customElements.define("cell-radio", G);
3800
+ customElements.get("cell-radio") || customElements.define("cell-radio", J);
3739
3801
  // src/cell/cell-combo-panel.js
3740
- var K = class extends HTMLElement {
3802
+ var Y = class extends HTMLElement {
3741
3803
  #e;
3742
3804
  #t;
3743
3805
  #n;
@@ -3835,9 +3897,9 @@ var K = class extends HTMLElement {
3835
3897
  this.innerHTML = "\n <div class=\"head\">\n <input type=\"text\" class=\"search-input\" placeholder=\"Search...\" />\n </div>\n \n <nine-table-simple class=\"combo-list\" theme=\"simple\">\n <table auto-fit-col=\"true\">\n <colgroup>\n <col width=\"30\" fixed=\"left\" />\n <col width=\"100\" />\n <col width=\"100\" />\n <col width=\"100\" />\n <col width=\"100\" />\n <col width=\"100\" />\n <col width=\"100\" />\n <col width=\"100\" />\n <col width=\"100\" />\n <col width=\"100\" />\n <col width=\"100\" />\n <col width=\"0\" />\n </colgroup>\n <tbody>\n <tr>\n <td cell-type=\"checkbox\" data-bind=\"CHK\"></td>\n <td data-bind=\"tmp1\" />\n <td data-bind=\"tmp2\" />\n <td data-bind=\"tmp3\" />\n <td data-bind=\"tmp4\" />\n <td data-bind=\"tmp5\" />\n <td data-bind=\"tmp6\" />\n <td data-bind=\"tmp7\" />\n <td data-bind=\"tmp8\" />\n <td data-bind=\"tmp9\" />\n <td data-bind=\"tmp10\" />\n <td data-bind=\"k\" />\n </tr>\n </tbody>\n </table>\n </nine-table-simple>\n \n <div class=\"footer\">\n <div>\n <input id=\"chkAll\" type=\"checkbox\" checked>\n <label for=\"chkAll\">Select All</label>\n </div>\n <button id=\"btnOk\">OK</button>\n </div>\n ";
3836
3898
  };
3837
3899
  };
3838
- customElements.get("cell-combo-panel") || customElements.define("cell-combo-panel", K);
3900
+ customElements.get("cell-combo-panel") || customElements.define("cell-combo-panel", Y);
3839
3901
  // src/cell/cell-combo.js
3840
- var q = class extends z {
3902
+ var X = class extends H {
3841
3903
  #e;
3842
3904
  #t = [];
3843
3905
  #n;
@@ -3899,9 +3961,9 @@ var q = class extends z {
3899
3961
  return this.#t;
3900
3962
  }
3901
3963
  };
3902
- customElements.get("cell-combo") || customElements.define("cell-combo", q);
3964
+ customElements.get("cell-combo") || customElements.define("cell-combo", X);
3903
3965
  // src/cell/cell-renderer.js
3904
- var J = class extends R {
3966
+ var Z = class extends V {
3905
3967
  #e;
3906
3968
  constructor() {
3907
3969
  super();
@@ -3916,9 +3978,9 @@ var J = class extends R {
3916
3978
  this.innerHTML = "\n <span class=\"wrapper\"></span>\n ";
3917
3979
  };
3918
3980
  };
3919
- customElements.get("cell-renderer") || customElements.define("cell-renderer", J);
3981
+ customElements.get("cell-renderer") || customElements.define("cell-renderer", Z);
3920
3982
  // src/cell/cell-button.js
3921
- var Y = class extends R {
3983
+ var Q = class extends V {
3922
3984
  #e;
3923
3985
  constructor() {
3924
3986
  super();
@@ -3951,9 +4013,9 @@ var Y = class extends R {
3951
4013
  this.innerHTML = "\n <button class=\"button\">...</button>\n ";
3952
4014
  };
3953
4015
  };
3954
- customElements.get("cell-button") || customElements.define("cell-button", Y);
4016
+ customElements.get("cell-button") || customElements.define("cell-button", Q);
3955
4017
  // src/cell/cell-row-indicator.js
3956
- var X = class extends R {
4018
+ var $ = class extends V {
3957
4019
  #e;
3958
4020
  #t;
3959
4021
  #n;
@@ -3994,9 +4056,9 @@ var X = class extends R {
3994
4056
  this.#t.innerHTML = e, this.#t.style.display = a || o ? "" : "none";
3995
4057
  };
3996
4058
  };
3997
- customElements.get("cell-row-indicator") || customElements.define("cell-row-indicator", X);
4059
+ customElements.get("cell-row-indicator") || customElements.define("cell-row-indicator", $);
3998
4060
  // src/col/col-expand.js
3999
- var Z = class extends HTMLElement {
4061
+ var ee = class extends HTMLElement {
4000
4062
  #e;
4001
4063
  #t;
4002
4064
  constructor() {
@@ -4044,9 +4106,9 @@ var Z = class extends HTMLElement {
4044
4106
  this.removeEventListener("click", this.#n);
4045
4107
  }
4046
4108
  };
4047
- customElements.get("nine-table-col-expand") || customElements.define("nine-table-col-expand", Z);
4109
+ customElements.get("nine-table-col-expand") || customElements.define("nine-table-col-expand", ee);
4048
4110
  // src/menu/nine-table-menu.js
4049
- var Q = class extends HTMLElement {
4111
+ var te = class extends HTMLElement {
4050
4112
  #e;
4051
4113
  #t;
4052
4114
  connectedCallback() {
@@ -4215,9 +4277,9 @@ var Q = class extends HTMLElement {
4215
4277
  this.#e?.removeEventListener("contextmenu", this.#n);
4216
4278
  }
4217
4279
  };
4218
- customElements.get("nine-table-menu") || customElements.define("nine-table-menu", Q);
4280
+ customElements.get("nine-table-menu") || customElements.define("nine-table-menu", te);
4219
4281
  // src/menu/nine-table-menu-panel.js
4220
- var $ = class extends HTMLElement {
4282
+ var ne = class extends HTMLElement {
4221
4283
  #e;
4222
4284
  #t = null;
4223
4285
  constructor() {
@@ -4294,7 +4356,7 @@ var $ = class extends HTMLElement {
4294
4356
  this.close();
4295
4357
  }
4296
4358
  };
4297
- customElements.get("nine-table-menu-panel") || customElements.define("nine-table-menu-panel", $);
4359
+ customElements.get("nine-table-menu-panel") || customElements.define("nine-table-menu-panel", ne);
4298
4360
  export { r as NINE_TABLE };
4299
4361
 
4300
4362
  //# sourceMappingURL=nine-table.js.map