@ninebone/table 0.0.774 → 0.0.775
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/dist/nine-table.js +671 -659
- package/dist/nine-table.js.map +1 -1
- package/dist/nine-table.umd.js +8 -8
- package/dist/nine-table.umd.js.map +1 -1
- package/package.json +1 -1
package/dist/nine-table.js
CHANGED
|
@@ -2,16 +2,16 @@ var ps = Object.defineProperty;
|
|
|
2
2
|
var ys = (C) => {
|
|
3
3
|
throw TypeError(C);
|
|
4
4
|
};
|
|
5
|
-
var vs = (C,
|
|
6
|
-
var h = (C,
|
|
7
|
-
var q = (C,
|
|
8
|
-
var t = (C,
|
|
9
|
-
var ms = (C,
|
|
10
|
-
set _(
|
|
11
|
-
|
|
5
|
+
var vs = (C, s, e) => s in C ? ps(C, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : C[s] = e;
|
|
6
|
+
var h = (C, s) => ps(C, "name", { value: s, configurable: !0 });
|
|
7
|
+
var q = (C, s, e) => vs(C, typeof s != "symbol" ? s + "" : s, e), Ee = (C, s, e) => s.has(C) || ys("Cannot " + e);
|
|
8
|
+
var t = (C, s, e) => (Ee(C, s, "read from private field"), e ? e.call(C) : s.get(C)), d = (C, s, e) => s.has(C) ? ys("Cannot add the same private member more than once") : s instanceof WeakSet ? s.add(C) : s.set(C, e), y = (C, s, e, n) => (Ee(C, s, "write to private field"), n ? n.call(C, e) : s.set(C, e), e), Q = (C, s, e) => (Ee(C, s, "access private method"), e);
|
|
9
|
+
var ms = (C, s, e, n) => ({
|
|
10
|
+
set _(o) {
|
|
11
|
+
y(C, s, o, e);
|
|
12
12
|
},
|
|
13
13
|
get _() {
|
|
14
|
-
return t(C,
|
|
14
|
+
return t(C, s, n);
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
17
|
import { trace as Ss } from "@ninebone/util";
|
|
@@ -23,12 +23,12 @@ const Qe = class Qe extends Ss.constructor {
|
|
|
23
23
|
h(Qe, "Trace");
|
|
24
24
|
let qe = Qe;
|
|
25
25
|
const S = new qe();
|
|
26
|
-
var F,
|
|
26
|
+
var F, K, E, tt, et, st, Zt, nt, Jt;
|
|
27
27
|
const ts = class ts extends HTMLElement {
|
|
28
28
|
constructor() {
|
|
29
29
|
super();
|
|
30
30
|
d(this, F);
|
|
31
|
-
d(this,
|
|
31
|
+
d(this, K, !1);
|
|
32
32
|
d(this, E);
|
|
33
33
|
d(this, tt);
|
|
34
34
|
d(this, et);
|
|
@@ -36,83 +36,83 @@ const ts = class ts extends HTMLElement {
|
|
|
36
36
|
d(this, Zt, /* @__PURE__ */ h(() => {
|
|
37
37
|
if (!t(this, F)) return;
|
|
38
38
|
const e = t(this, F).querySelector(".ng-container-body .ng-part-body");
|
|
39
|
-
e && (
|
|
39
|
+
e && (y(this, st, new ResizeObserver(() => {
|
|
40
40
|
this.refresh();
|
|
41
41
|
})), t(this, st).observe(e));
|
|
42
42
|
}, "#observeResize"));
|
|
43
43
|
q(this, "refresh", /* @__PURE__ */ h(() => {
|
|
44
|
-
if (!t(this, F) || !t(this, E) || t(this,
|
|
45
|
-
const e = t(this, E).container,
|
|
46
|
-
if (!
|
|
47
|
-
const
|
|
44
|
+
if (!t(this, F) || !t(this, E) || t(this, K)) return;
|
|
45
|
+
const e = t(this, E).container, n = e.querySelector("table");
|
|
46
|
+
if (!n) return;
|
|
47
|
+
const o = t(this, E).track, i = t(this, E).thumb, r = t(this, F).querySelector(".ng-container-bottom"), a = e.clientWidth, c = n.scrollWidth;
|
|
48
48
|
if (a !== 0 && c > a)
|
|
49
|
-
|
|
49
|
+
r && (r.style.display = "flex");
|
|
50
50
|
else {
|
|
51
|
-
|
|
51
|
+
r && (r.style.display = "none");
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
|
-
const l =
|
|
54
|
+
const l = o.clientWidth;
|
|
55
55
|
if (l <= 0) return;
|
|
56
|
-
const
|
|
57
|
-
|
|
56
|
+
const g = Math.max(Math.min(l * (a / c), l), 20);
|
|
57
|
+
i.style.width = `${g}px`;
|
|
58
58
|
const f = e.scrollLeft, b = c - a;
|
|
59
|
-
let
|
|
60
|
-
b > 0 && (
|
|
61
|
-
const
|
|
62
|
-
|
|
59
|
+
let u = 0;
|
|
60
|
+
b > 0 && (u = parseInt(f / b * (l - g), 10)), u < 0 && (u = 0);
|
|
61
|
+
const p = l - g;
|
|
62
|
+
u > p && (u = p), i.style.left = `${u}px`, t(this, E).left.disabled = u === 0, t(this, E).right.disabled = u >= p - 1;
|
|
63
63
|
}, "refresh"));
|
|
64
64
|
d(this, nt, /* @__PURE__ */ h((e) => {
|
|
65
65
|
if (!t(this, E)) return !1;
|
|
66
|
-
const
|
|
67
|
-
if (!
|
|
68
|
-
const
|
|
66
|
+
const n = t(this, E).container, o = n.querySelector("table");
|
|
67
|
+
if (!o) return !1;
|
|
68
|
+
const i = t(this, E).track.getBoundingClientRect(), r = t(this, E).thumb.clientWidth;
|
|
69
69
|
let a = e;
|
|
70
70
|
a < 0 && (a = 0);
|
|
71
|
-
const c =
|
|
71
|
+
const c = i.width - r;
|
|
72
72
|
a > c && (a = c), a = parseInt(a, 10), t(this, E).thumb.style.left = `${a}px`, t(this, E).left.disabled = a === 0, t(this, E).right.disabled = a >= c - 1;
|
|
73
|
-
const l =
|
|
74
|
-
return c > 0 && f > 0 && (
|
|
73
|
+
const l = n.clientWidth, f = o.scrollWidth - l;
|
|
74
|
+
return c > 0 && f > 0 && (n.scrollLeft = a / c * f), a > 0 && a < c - 1;
|
|
75
75
|
}, "#thumbMoveTo"));
|
|
76
76
|
d(this, Jt, /* @__PURE__ */ h(() => {
|
|
77
|
-
const e = /* @__PURE__ */ h((
|
|
77
|
+
const e = /* @__PURE__ */ h((o) => {
|
|
78
78
|
clearInterval(t(this, tt)), clearInterval(t(this, et));
|
|
79
|
-
const
|
|
80
|
-
t(this, nt).call(this,
|
|
81
|
-
clearInterval(t(this, tt)),
|
|
82
|
-
const
|
|
83
|
-
t(this, nt).call(this,
|
|
79
|
+
const i = parseInt(t(this, E).thumb.style.left || 0, 10);
|
|
80
|
+
t(this, nt).call(this, i + o), y(this, tt, setInterval(() => {
|
|
81
|
+
clearInterval(t(this, tt)), y(this, et, setInterval(() => {
|
|
82
|
+
const r = parseInt(t(this, E).thumb.style.left || 0, 10);
|
|
83
|
+
t(this, nt).call(this, r + o) || clearInterval(t(this, et));
|
|
84
84
|
}, 50));
|
|
85
85
|
}, 500));
|
|
86
|
-
}, "delayScroll"),
|
|
86
|
+
}, "delayScroll"), n = /* @__PURE__ */ h(() => {
|
|
87
87
|
clearInterval(t(this, tt)), clearInterval(t(this, et));
|
|
88
88
|
}, "clearTimer");
|
|
89
|
-
["mouseup", "mouseleave", "touchend"].forEach((
|
|
90
|
-
t(this, E).left.addEventListener(
|
|
91
|
-
}), t(this, E).left.addEventListener("mousedown", (
|
|
92
|
-
|
|
93
|
-
}), t(this, E).right.addEventListener("mousedown", (
|
|
94
|
-
|
|
95
|
-
}), t(this, E).left.addEventListener("touchstart", () => e(-20)), t(this, E).right.addEventListener("touchstart", () => e(20)), t(this, E).track.addEventListener("mousedown", (
|
|
96
|
-
if (
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
t(this, nt).call(this,
|
|
100
|
-
}), t(this, E).thumb.addEventListener("mousedown", (
|
|
101
|
-
if (
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
if (!t(this,
|
|
89
|
+
["mouseup", "mouseleave", "touchend"].forEach((o) => {
|
|
90
|
+
t(this, E).left.addEventListener(o, n), t(this, E).right.addEventListener(o, n), t(this, E).track.addEventListener(o, n);
|
|
91
|
+
}), t(this, E).left.addEventListener("mousedown", (o) => {
|
|
92
|
+
o.button === 0 && e(-20);
|
|
93
|
+
}), t(this, E).right.addEventListener("mousedown", (o) => {
|
|
94
|
+
o.button === 0 && e(20);
|
|
95
|
+
}), t(this, E).left.addEventListener("touchstart", () => e(-20)), t(this, E).right.addEventListener("touchstart", () => e(20)), t(this, E).track.addEventListener("mousedown", (o) => {
|
|
96
|
+
if (o.button !== 0) return;
|
|
97
|
+
o.preventDefault();
|
|
98
|
+
const i = t(this, E).track.getBoundingClientRect(), r = t(this, E).thumb.clientWidth;
|
|
99
|
+
t(this, nt).call(this, o.clientX - i.left - r / 2);
|
|
100
|
+
}), t(this, E).thumb.addEventListener("mousedown", (o) => {
|
|
101
|
+
if (o.button !== 0) return;
|
|
102
|
+
o.stopPropagation(), o.preventDefault(), y(this, K, !0), this.shiftX = o.clientX - t(this, E).thumb.getBoundingClientRect().left;
|
|
103
|
+
const i = /* @__PURE__ */ h((a) => {
|
|
104
|
+
if (!t(this, K)) return;
|
|
105
105
|
const c = t(this, E).track.getBoundingClientRect();
|
|
106
106
|
t(this, nt).call(this, a.clientX - c.left - this.shiftX);
|
|
107
|
-
}, "onMouseMove"),
|
|
108
|
-
|
|
107
|
+
}, "onMouseMove"), r = /* @__PURE__ */ h(() => {
|
|
108
|
+
y(this, K, !1), n(), document.removeEventListener("mousemove", i), document.removeEventListener("mouseup", r), this.refresh();
|
|
109
109
|
}, "onMouseUp");
|
|
110
|
-
document.addEventListener("mousemove",
|
|
110
|
+
document.addEventListener("mousemove", i), document.addEventListener("mouseup", r);
|
|
111
111
|
});
|
|
112
112
|
}, "#init"));
|
|
113
113
|
}
|
|
114
114
|
connectedCallback() {
|
|
115
|
-
if (
|
|
115
|
+
if (y(this, F, this.closest("nine-table-sheet") || this.getRootNode().host), !t(this, F)) return;
|
|
116
116
|
this.innerHTML = `
|
|
117
117
|
<style>
|
|
118
118
|
nine-table-hscrollbar {
|
|
@@ -177,19 +177,19 @@ const ts = class ts extends HTMLElement {
|
|
|
177
177
|
<button class='ng-scroll-right' disabled><div class='ng-scroll-icon'></div></button>
|
|
178
178
|
`;
|
|
179
179
|
const e = /* @__PURE__ */ h(() => {
|
|
180
|
-
const
|
|
181
|
-
if (!
|
|
180
|
+
const n = t(this, F).querySelector(".ng-container-body .ng-part-body");
|
|
181
|
+
if (!n) {
|
|
182
182
|
setTimeout(e, 10);
|
|
183
183
|
return;
|
|
184
184
|
}
|
|
185
|
-
|
|
186
|
-
container:
|
|
185
|
+
y(this, E, {
|
|
186
|
+
container: n,
|
|
187
187
|
track: this.querySelector(".ng-scroll-track"),
|
|
188
188
|
thumb: this.querySelector(".ng-scroll-thumb"),
|
|
189
189
|
left: this.querySelector(".ng-scroll-left"),
|
|
190
190
|
right: this.querySelector(".ng-scroll-right")
|
|
191
|
-
}),
|
|
192
|
-
t(this,
|
|
191
|
+
}), n.addEventListener("scroll", () => {
|
|
192
|
+
t(this, K) || this.refresh();
|
|
193
193
|
}), t(this, Jt).call(this), t(this, Zt).call(this), this.refresh();
|
|
194
194
|
}, "initWhenReady");
|
|
195
195
|
e();
|
|
@@ -198,7 +198,7 @@ const ts = class ts extends HTMLElement {
|
|
|
198
198
|
t(this, st) && t(this, st).disconnect();
|
|
199
199
|
}
|
|
200
200
|
};
|
|
201
|
-
F = new WeakMap(),
|
|
201
|
+
F = new WeakMap(), K = new WeakMap(), E = new WeakMap(), tt = new WeakMap(), et = new WeakMap(), st = new WeakMap(), Zt = new WeakMap(), nt = new WeakMap(), Jt = new WeakMap(), h(ts, "NineTableHScrollBar");
|
|
202
202
|
let Ce = ts;
|
|
203
203
|
customElements.get("nine-table-hscrollbar") || customElements.define("nine-table-hscrollbar", Ce);
|
|
204
204
|
var rt, ot, pt, k, Tt, kt, Qt;
|
|
@@ -213,52 +213,52 @@ const es = class es extends HTMLElement {
|
|
|
213
213
|
d(this, kt, 0);
|
|
214
214
|
q(this, "refresh", /* @__PURE__ */ h(() => {
|
|
215
215
|
if (S.log("vscrollbar.refresh"), !t(this, rt) || !t(this, k)) return;
|
|
216
|
-
const e = t(this, k).container,
|
|
217
|
-
if (c <=
|
|
216
|
+
const e = t(this, k).container, n = t(this, k).track, o = t(this, k).thumb, i = e.clientHeight, r = t(this, rt).data.length, a = t(this, ot).getRowHeight(), c = r * a;
|
|
217
|
+
if (c <= i || r === 0) {
|
|
218
218
|
this.style.display = "none";
|
|
219
219
|
return;
|
|
220
220
|
} else
|
|
221
221
|
this.style.display = "flex";
|
|
222
|
-
const l =
|
|
222
|
+
const l = n.clientHeight;
|
|
223
223
|
if (l <= 0) return;
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
const f = e.scrollTop, b = Math.max(c -
|
|
224
|
+
const g = Math.max(Math.min(l * (i / c), l), 20);
|
|
225
|
+
o.style.height = `${g}px`;
|
|
226
|
+
const f = e.scrollTop, b = Math.max(c - i, 1);
|
|
227
227
|
S.log(e, f, b);
|
|
228
|
-
let
|
|
229
|
-
b > 0 && (
|
|
230
|
-
const
|
|
231
|
-
|
|
228
|
+
let u = 0;
|
|
229
|
+
b > 0 && (u = f / b * (l - g));
|
|
230
|
+
const p = l - g;
|
|
231
|
+
u < 0 && (u = 0), u > p && (u = p), o.style.top = `${u}px`, t(this, k).top.disabled = f <= 0, t(this, k).bottom.disabled = f >= b - 1;
|
|
232
232
|
}, "refresh"));
|
|
233
233
|
d(this, Qt, /* @__PURE__ */ h(() => {
|
|
234
234
|
S.log("nine-table-vscrollbar.#init");
|
|
235
|
-
const e = t(this, k).container,
|
|
236
|
-
const
|
|
237
|
-
return
|
|
235
|
+
const e = t(this, k).container, n = /* @__PURE__ */ h(() => {
|
|
236
|
+
const i = (t(this, rt).data.get() || []).length, r = t(this, ot).getRowHeight();
|
|
237
|
+
return i * r;
|
|
238
238
|
}, "getContentHeight");
|
|
239
|
-
t(this, k).thumb.addEventListener("mousedown", (
|
|
240
|
-
if (
|
|
241
|
-
|
|
242
|
-
const
|
|
239
|
+
t(this, k).thumb.addEventListener("mousedown", (o) => {
|
|
240
|
+
if (o.button !== 0) return;
|
|
241
|
+
o.stopPropagation(), o.preventDefault(), y(this, pt, !0), y(this, Tt, o.clientY), y(this, kt, e.scrollTop);
|
|
242
|
+
const i = /* @__PURE__ */ h((a) => {
|
|
243
243
|
if (!t(this, pt)) return;
|
|
244
|
-
const c = t(this, k).track.getBoundingClientRect(), l = t(this, k).thumb.clientHeight, f = c.height - l, b = a.clientY - t(this, Tt),
|
|
245
|
-
if (f > 0 &&
|
|
246
|
-
const
|
|
247
|
-
let m = t(this, kt) +
|
|
248
|
-
const T = Math.max(0,
|
|
244
|
+
const c = t(this, k).track.getBoundingClientRect(), l = t(this, k).thumb.clientHeight, f = c.height - l, b = a.clientY - t(this, Tt), u = e.clientHeight, p = n(), x = Math.max(p - u, 1);
|
|
245
|
+
if (f > 0 && x > 0) {
|
|
246
|
+
const w = b / f * x;
|
|
247
|
+
let m = t(this, kt) + w;
|
|
248
|
+
const T = Math.max(0, p - u);
|
|
249
249
|
m < 0 && (m = 0), m > T && (m = T), e.scrollTop = m;
|
|
250
250
|
}
|
|
251
251
|
this.refresh();
|
|
252
|
-
}, "onMouseMove"),
|
|
253
|
-
|
|
252
|
+
}, "onMouseMove"), r = /* @__PURE__ */ h(() => {
|
|
253
|
+
y(this, pt, !1), document.removeEventListener("mousemove", i), document.removeEventListener("mouseup", r), this.refresh();
|
|
254
254
|
}, "onMouseUp");
|
|
255
|
-
document.addEventListener("mousemove",
|
|
256
|
-
}), t(this, k).track.addEventListener("mousedown", (
|
|
257
|
-
if (
|
|
258
|
-
const
|
|
255
|
+
document.addEventListener("mousemove", i), document.addEventListener("mouseup", r);
|
|
256
|
+
}), t(this, k).track.addEventListener("mousedown", (o) => {
|
|
257
|
+
if (o.button !== 0 || o.target === t(this, k).thumb) return;
|
|
258
|
+
const i = t(this, k).track.getBoundingClientRect(), r = t(this, k).thumb.clientHeight, a = o.clientY - i.top - r / 2, l = i.height - r, g = e.clientHeight, f = n(), b = Math.max(f - g, 1);
|
|
259
259
|
if (l > 0 && b > 0) {
|
|
260
|
-
const
|
|
261
|
-
e.scrollTop =
|
|
260
|
+
const u = Math.max(0, Math.min(1, a / l));
|
|
261
|
+
e.scrollTop = u * b;
|
|
262
262
|
}
|
|
263
263
|
this.refresh();
|
|
264
264
|
}), t(this, k).top.addEventListener("click", () => {
|
|
@@ -269,7 +269,7 @@ const es = class es extends HTMLElement {
|
|
|
269
269
|
}, "#init"));
|
|
270
270
|
}
|
|
271
271
|
connectedCallback() {
|
|
272
|
-
|
|
272
|
+
y(this, rt, this.getRootNode().host), y(this, ot, this.closest("nine-table-sheet")), this.innerHTML = `
|
|
273
273
|
<style>
|
|
274
274
|
nine-table-vscrollbar {
|
|
275
275
|
display: flex;
|
|
@@ -334,13 +334,13 @@ const es = class es extends HTMLElement {
|
|
|
334
334
|
<button class='ng-scroll-bottom' disabled><div class='ng-scroll-icon'></div></button>
|
|
335
335
|
`;
|
|
336
336
|
const e = /* @__PURE__ */ h(() => {
|
|
337
|
-
const
|
|
338
|
-
if (!
|
|
337
|
+
const n = t(this, ot).querySelector(".ng-container-body .ng-part-body");
|
|
338
|
+
if (!n) {
|
|
339
339
|
setTimeout(e, 10);
|
|
340
340
|
return;
|
|
341
341
|
}
|
|
342
|
-
|
|
343
|
-
container:
|
|
342
|
+
y(this, k, {
|
|
343
|
+
container: n,
|
|
344
344
|
track: this.querySelector(".ng-scroll-track"),
|
|
345
345
|
thumb: this.querySelector(".ng-scroll-thumb"),
|
|
346
346
|
top: this.querySelector(".ng-scroll-top"),
|
|
@@ -353,15 +353,15 @@ const es = class es extends HTMLElement {
|
|
|
353
353
|
rt = new WeakMap(), ot = new WeakMap(), pt = new WeakMap(), k = new WeakMap(), Tt = new WeakMap(), kt = new WeakMap(), Qt = new WeakMap(), h(es, "NineTableVScrollBar");
|
|
354
354
|
let Te = es;
|
|
355
355
|
customElements.get("nine-table-vscrollbar") || customElements.define("nine-table-vscrollbar", Te);
|
|
356
|
-
var V, R, it, j, O,
|
|
356
|
+
var V, R, it, j, O, G, at, It, je, Ye, te, ee, Lt, Mt, Ht, se, ne, $t, Ve, yt, Nt, re;
|
|
357
357
|
const ss = class ss {
|
|
358
|
-
constructor(
|
|
358
|
+
constructor(s) {
|
|
359
359
|
d(this, V);
|
|
360
360
|
d(this, R);
|
|
361
361
|
d(this, it);
|
|
362
362
|
d(this, j, /* @__PURE__ */ new Map());
|
|
363
363
|
d(this, O, null);
|
|
364
|
-
d(this,
|
|
364
|
+
d(this, G, null);
|
|
365
365
|
d(this, at, 0);
|
|
366
366
|
d(this, It, 40);
|
|
367
367
|
d(this, je, !1);
|
|
@@ -371,188 +371,188 @@ const ss = class ss {
|
|
|
371
371
|
q(this, "refresh", /* @__PURE__ */ h(() => {
|
|
372
372
|
var e;
|
|
373
373
|
S.log("rowManager.refresh");
|
|
374
|
-
const
|
|
375
|
-
|
|
374
|
+
const s = t(this, R).querySelector(".ng-container-body .ng-part-body");
|
|
375
|
+
s && (t(this, Lt).call(this), t(this, Mt).call(this), t(this, yt).call(this, s.scrollTop), (e = t(this, R).querySelector("nine-table-vscrollbar")) == null || e.refresh());
|
|
376
376
|
}, "refresh"));
|
|
377
377
|
q(this, "initialize", /* @__PURE__ */ h(() => {
|
|
378
|
-
S.log("rowManager.initialize"),
|
|
378
|
+
S.log("rowManager.initialize"), y(this, it, {
|
|
379
379
|
scrollTables: t(this, R).querySelectorAll(".ng-part-body table"),
|
|
380
380
|
firstTr: t(this, R).querySelector(".ng-container-body .ng-part-body tbody.bindable-tbody tr:not(.nodata)")
|
|
381
|
-
}),
|
|
382
|
-
const a = t(this, R).querySelector(
|
|
381
|
+
}), y(this, O, null), t(this, j).clear(), [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((r) => {
|
|
382
|
+
const a = t(this, R).querySelector(r);
|
|
383
383
|
if (!a) return;
|
|
384
384
|
const c = a.querySelector(".ng-part-body table");
|
|
385
385
|
if (!c) return;
|
|
386
386
|
const l = c.querySelector("tbody.bindable-tbody");
|
|
387
387
|
if (!l) return;
|
|
388
388
|
const f = Array.from(l.querySelectorAll("tr")).map((b) => b.cloneNode(!0));
|
|
389
|
-
t(this, j).set(
|
|
389
|
+
t(this, j).set(r, f);
|
|
390
390
|
});
|
|
391
|
-
const
|
|
392
|
-
if (
|
|
393
|
-
t(this, Lt).call(this), t(this, $t).call(this), t(this, Mt).call(this), t(this, yt).call(this,
|
|
394
|
-
let
|
|
391
|
+
const s = t(this, R).querySelector(".ng-container-body .ng-part-body"), e = t(this, R).querySelector(".ng-container-left .ng-part-body"), n = t(this, R).querySelector(".ng-container-right .ng-part-body"), o = t(this, R).querySelector(".ng-container-body .ng-part-header"), i = t(this, R).querySelector(".ng-container-body .ng-part-footer");
|
|
392
|
+
if (s) {
|
|
393
|
+
t(this, Lt).call(this), t(this, $t).call(this), t(this, Mt).call(this), t(this, yt).call(this, s.scrollTop);
|
|
394
|
+
let r = !1;
|
|
395
395
|
const a = /* @__PURE__ */ h((c) => {
|
|
396
396
|
var f;
|
|
397
|
-
if (
|
|
398
|
-
|
|
399
|
-
const l = c.scrollTop,
|
|
400
|
-
|
|
397
|
+
if (r) return;
|
|
398
|
+
r = !0;
|
|
399
|
+
const l = c.scrollTop, g = c.scrollLeft;
|
|
400
|
+
s && s.scrollTop !== l && (s.scrollTop = l), e && e.scrollTop !== l && (e.scrollTop = l), n && n.scrollTop !== l && (n.scrollTop = l), o && o.scrollLeft !== g && (o.scrollLeft = g), i && i.scrollLeft !== g && (i.scrollLeft = g), t(this, yt).call(this, l), (f = t(this, R).querySelector("nine-table-vscrollbar")) == null || f.refresh(), r = !1;
|
|
401
401
|
}, "handleContainerScroll");
|
|
402
|
-
[
|
|
402
|
+
[s, e, n].forEach((c) => {
|
|
403
403
|
c == null || c.addEventListener("scroll", (l) => {
|
|
404
404
|
S.log(l), S.log("rowManager.scroll event"), a(c);
|
|
405
405
|
});
|
|
406
406
|
});
|
|
407
407
|
}
|
|
408
408
|
}, "initialize"));
|
|
409
|
-
d(this, ee, /* @__PURE__ */ h((
|
|
409
|
+
d(this, ee, /* @__PURE__ */ h((s, e) => {
|
|
410
410
|
S.log("rowManager.#renderRows");
|
|
411
|
-
const
|
|
412
|
-
if (!
|
|
413
|
-
const
|
|
414
|
-
if (!
|
|
415
|
-
|
|
416
|
-
const
|
|
411
|
+
const n = t(this, j).get(e);
|
|
412
|
+
if (!n || n.length === 0) return;
|
|
413
|
+
const o = s.querySelector(".ng-part-body tbody.bindable-tbody");
|
|
414
|
+
if (!o) return;
|
|
415
|
+
o.querySelectorAll("tr:not(.nodata)").forEach((a) => a.remove());
|
|
416
|
+
const i = o.querySelector("tr.nodata"), r = document.createDocumentFragment();
|
|
417
417
|
for (let a = 0; a < t(this, It); a++)
|
|
418
|
-
|
|
419
|
-
|
|
418
|
+
n.forEach((c) => {
|
|
419
|
+
r.appendChild(c.cloneNode(!0));
|
|
420
420
|
});
|
|
421
|
-
|
|
421
|
+
i ? i.before(r) : o.appendChild(r), e === ".ng-container-body" && (t(this, it).firstTr = o.querySelector("tr:not(.nodata)"));
|
|
422
422
|
}, "#renderRows"));
|
|
423
423
|
d(this, Lt, /* @__PURE__ */ h(() => {
|
|
424
424
|
if (t(this, O) !== null && t(this, O) > 0)
|
|
425
425
|
return t(this, O);
|
|
426
|
-
const
|
|
426
|
+
const s = t(this, R).querySelector(".ng-container-body .ng-part-body");
|
|
427
427
|
S.log("rowManager.#measureAndCacheHeight");
|
|
428
428
|
const e = t(this, j).get(".ng-container-body");
|
|
429
429
|
if (!e || e.length === 0) throw new Error("invalid dom");
|
|
430
|
-
const
|
|
431
|
-
if (S.log(
|
|
432
|
-
|
|
433
|
-
const
|
|
430
|
+
const n = s.querySelector("tbody.bindable-tbody");
|
|
431
|
+
if (S.log(n), !n) throw new Error("invalid dom");
|
|
432
|
+
n.querySelectorAll("tr:not(.nodata)").forEach((b) => b.remove());
|
|
433
|
+
const o = n.querySelector("tr.nodata"), i = document.createDocumentFragment();
|
|
434
434
|
e.forEach((b) => {
|
|
435
|
-
|
|
436
|
-
}),
|
|
437
|
-
const
|
|
438
|
-
(a === "none" || window.getComputedStyle(
|
|
439
|
-
let
|
|
440
|
-
const f =
|
|
435
|
+
i.appendChild(b.cloneNode(!0));
|
|
436
|
+
}), o ? o.before(i) : n.appendChild(i);
|
|
437
|
+
const r = t(this, R), a = r.style.display, c = r.style.visibility, l = r.style.position;
|
|
438
|
+
(a === "none" || window.getComputedStyle(r).display === "none") && (r.style.display = "block", r.style.visibility = "hidden", r.style.position = "absolute");
|
|
439
|
+
let g = 0;
|
|
440
|
+
const f = n.querySelectorAll("tr");
|
|
441
441
|
return f.forEach((b) => {
|
|
442
|
-
let
|
|
443
|
-
if (
|
|
444
|
-
const
|
|
445
|
-
|
|
442
|
+
let u = b.offsetHeight || b.getBoundingClientRect().height;
|
|
443
|
+
if (u === 0) {
|
|
444
|
+
const p = window.getComputedStyle(b);
|
|
445
|
+
u = parseFloat(p.height) || parseFloat(p.minHeight) || 0;
|
|
446
446
|
}
|
|
447
|
-
|
|
448
|
-
}), f.forEach((b) => b.remove()),
|
|
447
|
+
g += u;
|
|
448
|
+
}), f.forEach((b) => b.remove()), r.style.display = a, r.style.visibility = c, r.style.position = l, g <= 0 ? -1 : (y(this, O, g), t(this, Ht).call(this), t(this, O));
|
|
449
449
|
}, "#measureAndCacheHeight"));
|
|
450
450
|
d(this, Mt, /* @__PURE__ */ h(() => {
|
|
451
451
|
S.log("rowManager.#updateVirtualScrollHeight");
|
|
452
|
-
const e = (t(this, V).data.get() || []).length,
|
|
453
|
-
S.log("🔍 [VirtualHeight]", { totalCount: e, rowHeight:
|
|
454
|
-
const
|
|
455
|
-
if (!
|
|
456
|
-
const a =
|
|
457
|
-
a && (a.style.height = `${
|
|
452
|
+
const e = (t(this, V).data.get() || []).length, n = t(this, O), o = e * n;
|
|
453
|
+
S.log("🔍 [VirtualHeight]", { totalCount: e, rowHeight: n, totalVirtualHeight: o }), [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((i) => {
|
|
454
|
+
const r = t(this, R).querySelector(i);
|
|
455
|
+
if (!r) return;
|
|
456
|
+
const a = r.querySelector(".ng-part-body .ng-virtual-spacer");
|
|
457
|
+
a && (a.style.height = `${o}px`);
|
|
458
458
|
});
|
|
459
459
|
}, "#updateVirtualScrollHeight"));
|
|
460
460
|
d(this, Ht, /* @__PURE__ */ h(() => {
|
|
461
461
|
if (t(this, at) > 0 && t(this, O) > 0) {
|
|
462
|
-
const
|
|
463
|
-
|
|
462
|
+
const s = Math.ceil(t(this, at) / t(this, O));
|
|
463
|
+
y(this, It, s + t(this, te));
|
|
464
464
|
}
|
|
465
465
|
}, "#updateRowCount"));
|
|
466
466
|
d(this, se, /* @__PURE__ */ h(() => {
|
|
467
|
-
var a, c, l,
|
|
468
|
-
const
|
|
467
|
+
var a, c, l, g, f, b;
|
|
468
|
+
const s = t(this, R).querySelector(".ng-container-left .ng-part-body table"), e = t(this, R).querySelector(".ng-container-body .ng-part-body table"), n = t(this, R).querySelector(".ng-container-right .ng-part-body table");
|
|
469
469
|
if (e) {
|
|
470
|
-
const
|
|
471
|
-
for (let m = 0; m <
|
|
470
|
+
const u = s ? Array.from(s.querySelectorAll("tbody tr")) : [], p = Array.from(e.querySelectorAll("tbody tr")), x = n ? Array.from(n.querySelectorAll("tbody tr")) : [], w = Math.max(u.length, p.length, x.length);
|
|
471
|
+
for (let m = 0; m < w; m++) {
|
|
472
472
|
const T = [
|
|
473
|
-
((a =
|
|
474
|
-
((c =
|
|
475
|
-
((l =
|
|
473
|
+
((a = u[m]) == null ? void 0 : a.getBoundingClientRect().height) || 0,
|
|
474
|
+
((c = p[m]) == null ? void 0 : c.getBoundingClientRect().height) || 0,
|
|
475
|
+
((l = x[m]) == null ? void 0 : l.getBoundingClientRect().height) || 0
|
|
476
476
|
], A = Math.max(...T);
|
|
477
|
-
A > 0 && (
|
|
477
|
+
A > 0 && (u[m] && (u[m].style.height = `${A}px`), p[m] && (p[m].style.height = `${A}px`), x[m] && (x[m].style.height = `${A}px`));
|
|
478
478
|
}
|
|
479
479
|
}
|
|
480
|
-
const
|
|
481
|
-
if (
|
|
482
|
-
const
|
|
483
|
-
for (let m = 0; m <
|
|
480
|
+
const o = t(this, R).querySelector(".ng-container-left .ng-part-footer table"), i = t(this, R).querySelector(".ng-container-body .ng-part-footer table"), r = t(this, R).querySelector(".ng-container-right .ng-part-footer table");
|
|
481
|
+
if (i) {
|
|
482
|
+
const u = o ? Array.from(o.querySelectorAll("tfoot tr")) : [], p = Array.from(i.querySelectorAll("tfoot tr")), x = r ? Array.from(r.querySelectorAll("tfoot tr")) : [], w = Math.max(u.length, p.length, x.length);
|
|
483
|
+
for (let m = 0; m < w; m++) {
|
|
484
484
|
const T = [
|
|
485
|
-
((
|
|
486
|
-
((f =
|
|
487
|
-
((b =
|
|
485
|
+
((g = u[m]) == null ? void 0 : g.getBoundingClientRect().height) || 0,
|
|
486
|
+
((f = p[m]) == null ? void 0 : f.getBoundingClientRect().height) || 0,
|
|
487
|
+
((b = x[m]) == null ? void 0 : b.getBoundingClientRect().height) || 0
|
|
488
488
|
], A = Math.max(...T);
|
|
489
|
-
A > 0 && (
|
|
489
|
+
A > 0 && (u[m] && (u[m].style.height = `${A}px`), p[m] && (p[m].style.height = `${A}px`), x[m] && (x[m].style.height = `${A}px`));
|
|
490
490
|
}
|
|
491
491
|
}
|
|
492
492
|
}, "#syncRowHeights"));
|
|
493
493
|
d(this, ne, /* @__PURE__ */ h(() => {
|
|
494
|
-
!t(this, R) || !(t(this, R) instanceof HTMLElement) || (
|
|
495
|
-
for (const e of
|
|
496
|
-
const
|
|
497
|
-
if (!
|
|
498
|
-
const
|
|
499
|
-
if (
|
|
500
|
-
let
|
|
501
|
-
const
|
|
502
|
-
|
|
503
|
-
const c = Math.max(
|
|
504
|
-
t(this, at) !== c && (
|
|
494
|
+
!t(this, R) || !(t(this, R) instanceof HTMLElement) || (y(this, G, new ResizeObserver((s) => {
|
|
495
|
+
for (const e of s) {
|
|
496
|
+
const n = e.target;
|
|
497
|
+
if (!n.classList.contains("active")) continue;
|
|
498
|
+
const o = e.contentRect.height;
|
|
499
|
+
if (o > 0) {
|
|
500
|
+
let i = 0;
|
|
501
|
+
const r = n.querySelector(".ng-part-header"), a = n.querySelector(".ng-part-footer");
|
|
502
|
+
r && (i += r.offsetHeight), a && (i += a.offsetHeight);
|
|
503
|
+
const c = Math.max(o - i, 100);
|
|
504
|
+
t(this, at) !== c && (y(this, at, c), t(this, Ht).call(this), t(this, O) !== null && (t(this, $t).call(this), this.refresh()));
|
|
505
505
|
}
|
|
506
506
|
}
|
|
507
|
-
})), t(this,
|
|
507
|
+
})), t(this, G).observe(t(this, R)));
|
|
508
508
|
}, "#initResizeObserver"));
|
|
509
509
|
d(this, $t, /* @__PURE__ */ h(() => {
|
|
510
|
-
S.log("rowManager.#renderAllContainers"), [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((
|
|
511
|
-
const e = t(this, R).querySelector(
|
|
512
|
-
e && e.querySelector(".ng-part-body tbody.bindable-tbody") && t(this, ee).call(this, e,
|
|
510
|
+
S.log("rowManager.#renderAllContainers"), [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((s) => {
|
|
511
|
+
const e = t(this, R).querySelector(s);
|
|
512
|
+
e && e.querySelector(".ng-part-body tbody.bindable-tbody") && t(this, ee).call(this, e, s);
|
|
513
513
|
}), t(this, re).call(this), t(this, se).call(this);
|
|
514
514
|
}, "#renderAllContainers"));
|
|
515
|
-
d(this, Ve, /* @__PURE__ */ h((
|
|
515
|
+
d(this, Ve, /* @__PURE__ */ h((s) => {
|
|
516
516
|
[".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((e) => {
|
|
517
517
|
var l;
|
|
518
|
-
const
|
|
519
|
-
if (!
|
|
520
|
-
const
|
|
521
|
-
if (!
|
|
522
|
-
const
|
|
523
|
-
|
|
524
|
-
const b =
|
|
518
|
+
const n = t(this, R).querySelector(e);
|
|
519
|
+
if (!n) return;
|
|
520
|
+
const o = n.querySelector(".ng-part-body tbody.bindable-tbody");
|
|
521
|
+
if (!o) return;
|
|
522
|
+
const i = Array.from(o.querySelectorAll("tr:not(.nodata)")), r = ((l = t(this, j).get(e)) == null ? void 0 : l.length) || 1, c = (t(this, V).data.get() || []).length;
|
|
523
|
+
i.forEach((g, f) => {
|
|
524
|
+
const b = s + Math.floor(f / r);
|
|
525
525
|
if (b >= c) {
|
|
526
|
-
|
|
526
|
+
g.style.visibility = "hidden";
|
|
527
527
|
return;
|
|
528
528
|
}
|
|
529
|
-
const
|
|
530
|
-
|
|
529
|
+
const u = t(this, V).data.get(b);
|
|
530
|
+
g.style.display = "", t(this, Nt).call(this, g, u, b);
|
|
531
531
|
});
|
|
532
532
|
});
|
|
533
533
|
}, "#adjustBufferRows"));
|
|
534
|
-
d(this, yt, /* @__PURE__ */ h((
|
|
534
|
+
d(this, yt, /* @__PURE__ */ h((s) => {
|
|
535
535
|
var f, b;
|
|
536
536
|
const e = t(this, O);
|
|
537
537
|
if (!e || e <= 0) return;
|
|
538
|
-
const
|
|
539
|
-
if (
|
|
540
|
-
const
|
|
541
|
-
S.log("bodyContainer.clientHeight",
|
|
542
|
-
const
|
|
538
|
+
const n = t(this, V).data.length;
|
|
539
|
+
if (n === 0) return;
|
|
540
|
+
const o = ((f = t(this, j).get(".ng-container-body")) == null ? void 0 : f.length) || 1, i = t(this, R).querySelector(".ng-container-body .ng-part-body");
|
|
541
|
+
S.log("bodyContainer.clientHeight", i.clientHeight);
|
|
542
|
+
const r = Math.max(0, n - Math.floor(i.clientHeight / e)), a = Math.min(r, Math.max(0, Math.floor(s / e)));
|
|
543
543
|
let c = Math.floor(a * e);
|
|
544
|
-
S.log(`📜 [Scroll Calc] maxStartIndex: ${
|
|
545
|
-
const l = t(this, it).firstTr,
|
|
546
|
-
(b = t(this, it)) == null || b.scrollTables.forEach((
|
|
547
|
-
|
|
548
|
-
}),
|
|
549
|
-
const
|
|
550
|
-
if (!
|
|
551
|
-
const
|
|
552
|
-
if (!
|
|
553
|
-
Array.from(
|
|
554
|
-
const A = a + Math.floor(T /
|
|
555
|
-
if (A >=
|
|
544
|
+
S.log(`📜 [Scroll Calc] maxStartIndex: ${r}, startIndex: ${a}, offsetY: ${c}`), a === r && S.log(`📜 [Scroll Inspect] scrollTop: ${s}, rowHeight: ${e}, maxStartIndex: ${r}, startIndex: ${a}, offsetY: ${c}`);
|
|
545
|
+
const l = t(this, it).firstTr, g = l && l.dataset.row !== void 0 ? parseInt(l.dataset.row, 10) : -1;
|
|
546
|
+
(b = t(this, it)) == null || b.scrollTables.forEach((u) => {
|
|
547
|
+
u.style.transform = `translate3d(0, ${c}px, 0)`;
|
|
548
|
+
}), g !== a && (S.log(`🔄 [Row Bind Trigger] currentStartIndex(${g}) !== startIndex(${a})`), [".ng-container-body", ".ng-container-left", ".ng-container-right"].forEach((u) => {
|
|
549
|
+
const p = t(this, R).querySelector(u);
|
|
550
|
+
if (!p) return;
|
|
551
|
+
const x = p.querySelector(".ng-part-body tbody.bindable-tbody");
|
|
552
|
+
if (!x) return;
|
|
553
|
+
Array.from(x.querySelectorAll("tr:not(.nodata)")).forEach((m, T) => {
|
|
554
|
+
const A = a + Math.floor(T / o);
|
|
555
|
+
if (A >= n) {
|
|
556
556
|
m.style.display = "none";
|
|
557
557
|
return;
|
|
558
558
|
}
|
|
@@ -575,119 +575,119 @@ const ss = class ss {
|
|
|
575
575
|
cell.dataset.row = dataIndex;
|
|
576
576
|
});
|
|
577
577
|
}; */
|
|
578
|
-
d(this, Nt, /* @__PURE__ */ h((
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
const
|
|
582
|
-
|
|
578
|
+
d(this, Nt, /* @__PURE__ */ h((s, e, n) => {
|
|
579
|
+
s.dataset.row = n, s.data = e, Array.from(s.cells).forEach((o, i) => {
|
|
580
|
+
o.dataset.row = n;
|
|
581
|
+
const r = Array.from(o.children).find((a) => a.tagName.toLowerCase().startsWith("cell-") || typeof a.refresh == "function");
|
|
582
|
+
r && typeof r.refresh == "function" && r.refresh();
|
|
583
583
|
});
|
|
584
584
|
}, "#bindRowData"));
|
|
585
585
|
d(this, re, /* @__PURE__ */ h(() => {
|
|
586
|
-
var c, l,
|
|
586
|
+
var c, l, g;
|
|
587
587
|
S.log("rowManager.#syncHeaderHeights");
|
|
588
|
-
const
|
|
588
|
+
const s = t(this, R).querySelector(".ng-container-left .ng-part-header table"), e = t(this, R).querySelector(".ng-container-body .ng-part-header table"), n = t(this, R).querySelector(".ng-container-right .ng-part-header table");
|
|
589
589
|
if (!e) return;
|
|
590
|
-
const
|
|
590
|
+
const o = s ? Array.from(s.querySelectorAll("tr")) : [], i = Array.from(e.querySelectorAll("tr")), r = n ? Array.from(n.querySelectorAll("tr")) : [], a = Math.max(o.length, i.length, r.length);
|
|
591
591
|
for (let f = 0; f < a; f++) {
|
|
592
592
|
const b = [
|
|
593
|
-
((c =
|
|
594
|
-
((l =
|
|
595
|
-
((
|
|
596
|
-
],
|
|
597
|
-
|
|
593
|
+
((c = o[f]) == null ? void 0 : c.getBoundingClientRect().height) || 0,
|
|
594
|
+
((l = i[f]) == null ? void 0 : l.getBoundingClientRect().height) || 0,
|
|
595
|
+
((g = r[f]) == null ? void 0 : g.getBoundingClientRect().height) || 0
|
|
596
|
+
], u = Math.max(...b);
|
|
597
|
+
u > 0 && (o[f] && (o[f].style.height = `${u}px`), i[f] && (i[f].style.height = `${u}px`), r[f] && (r[f].style.height = `${u}px`));
|
|
598
598
|
}
|
|
599
599
|
}, "#syncHeaderHeights"));
|
|
600
600
|
q(this, "destroy", /* @__PURE__ */ h(() => {
|
|
601
|
-
t(this,
|
|
601
|
+
t(this, G) && (t(this, G).disconnect(), y(this, G, null));
|
|
602
602
|
}, "destroy"));
|
|
603
|
-
|
|
603
|
+
y(this, V, s.getRootNode().host), y(this, R, s), t(this, ne).call(this);
|
|
604
604
|
}
|
|
605
605
|
getRowHeight() {
|
|
606
606
|
return t(this, O);
|
|
607
607
|
}
|
|
608
|
-
templateLength(
|
|
608
|
+
templateLength(s = ".ng-container-body") {
|
|
609
609
|
var e;
|
|
610
|
-
return ((e = t(this, j).get(
|
|
610
|
+
return ((e = t(this, j).get(s)) == null ? void 0 : e.length) || 1;
|
|
611
611
|
}
|
|
612
612
|
};
|
|
613
|
-
V = new WeakMap(), R = new WeakMap(), it = new WeakMap(), j = new WeakMap(), O = new WeakMap(),
|
|
613
|
+
V = new WeakMap(), R = new WeakMap(), it = new WeakMap(), j = new WeakMap(), O = new WeakMap(), G = new WeakMap(), at = new WeakMap(), It = new WeakMap(), je = new WeakMap(), Ye = new WeakMap(), te = new WeakMap(), ee = new WeakMap(), Lt = new WeakMap(), Mt = new WeakMap(), Ht = new WeakMap(), se = new WeakMap(), ne = new WeakMap(), $t = new WeakMap(), Ve = new WeakMap(), yt = new WeakMap(), Nt = new WeakMap(), re = new WeakMap(), h(ss, "RowManager");
|
|
614
614
|
let ke = ss;
|
|
615
615
|
const oe = class oe {
|
|
616
616
|
/**
|
|
617
617
|
* 🎯 레이아웃 내의 여러 rawTables 배열을 일괄로 받아 단일 마스터 템플릿으로 사전 컴파일합니다.
|
|
618
618
|
*/
|
|
619
|
-
static compileAll(
|
|
620
|
-
return Array.isArray(
|
|
619
|
+
static compileAll(s) {
|
|
620
|
+
return Array.isArray(s) ? s.map((e) => oe.compile(e)) : [];
|
|
621
621
|
}
|
|
622
622
|
/**
|
|
623
623
|
* 🎯 단일 원본 테이블을 받아 기본 구조 보정 및 2차원 격자 인덱스 사전 부여 완료된 마스터 테이블 반환
|
|
624
624
|
*/
|
|
625
|
-
static compile(
|
|
626
|
-
if (!
|
|
625
|
+
static compile(s) {
|
|
626
|
+
if (!s) return null;
|
|
627
627
|
const e = /* @__PURE__ */ h((a) => {
|
|
628
628
|
a.querySelectorAll("tbody td, tbody th, tfoot td, tfoot th").forEach((l) => {
|
|
629
|
-
const
|
|
629
|
+
const g = l.getAttribute("cell-type") || "renderer";
|
|
630
630
|
if (l.children.length > 0 && l.firstElementChild.tagName.includes("-")) return;
|
|
631
|
-
let f = `cell-${
|
|
632
|
-
const b = l.getAttribute("data-bind"),
|
|
633
|
-
let
|
|
634
|
-
b &&
|
|
631
|
+
let f = `cell-${g}`;
|
|
632
|
+
const b = l.getAttribute("data-bind"), u = l.getAttribute("data-expr"), p = l.getAttribute("maxbyte"), x = l.getAttribute("type");
|
|
633
|
+
let w = [];
|
|
634
|
+
b && w.push(`data-bind="${b}"`), u && w.push(`data-expr="${u}"`), p && w.push(`maxbyte="${p}"`), x && w.push(`type="${x}"`), l.innerHTML = `<${f} ${w.join(" ")}></${f}>`;
|
|
635
635
|
}), a.querySelectorAll("tbody td, tfoot td").forEach((l) => {
|
|
636
636
|
l.setAttribute("tabindex", "0");
|
|
637
637
|
});
|
|
638
|
-
}, "processCellTypes"),
|
|
638
|
+
}, "processCellTypes"), n = /* @__PURE__ */ h((a) => {
|
|
639
639
|
if (!a.querySelector("colgroup")) {
|
|
640
|
-
const c = a.querySelector("tbody tr") || a.querySelector("tr"), l = c ? c.querySelectorAll("th, td").length : 1,
|
|
640
|
+
const c = a.querySelector("tbody tr") || a.querySelector("tr"), l = c ? c.querySelectorAll("th, td").length : 1, g = document.createElement("colgroup"), f = Math.max(Math.floor(a.clientWidth / l), 100);
|
|
641
641
|
for (let b = 0; b < l; b++) {
|
|
642
|
-
const
|
|
643
|
-
|
|
642
|
+
const u = document.createElement("col");
|
|
643
|
+
u.setAttribute("width", f), g.appendChild(u);
|
|
644
644
|
}
|
|
645
|
-
a.prepend(
|
|
645
|
+
a.prepend(g);
|
|
646
646
|
}
|
|
647
647
|
if (!a.querySelector("thead")) {
|
|
648
648
|
const c = document.createElement("thead"), l = a.querySelector("colgroup");
|
|
649
649
|
l ? l.after(c) : a.prepend(c);
|
|
650
650
|
}
|
|
651
651
|
a.classList.add("nine-table-element");
|
|
652
|
-
}, "ensureTableStructure"),
|
|
653
|
-
const l = Array.from(a.querySelectorAll(c + " tr")),
|
|
654
|
-
if (f === 0 ||
|
|
652
|
+
}, "ensureTableStructure"), o = /* @__PURE__ */ h((a, c) => {
|
|
653
|
+
const l = Array.from(a.querySelectorAll(c + " tr")), g = Array.from(a.querySelectorAll(c + " th," + c + " td")), f = l.length;
|
|
654
|
+
if (f === 0 || g.length === 0) return;
|
|
655
655
|
let b = 0;
|
|
656
|
-
|
|
657
|
-
b +=
|
|
656
|
+
g.forEach((p) => {
|
|
657
|
+
b += p.colSpan || 1;
|
|
658
658
|
});
|
|
659
|
-
const
|
|
660
|
-
l.forEach((
|
|
661
|
-
const
|
|
662
|
-
let
|
|
663
|
-
Array.from(
|
|
664
|
-
for (let M = 0; M <
|
|
665
|
-
if (
|
|
666
|
-
|
|
659
|
+
const u = Array.from(Array(f), () => Array(b).fill(null));
|
|
660
|
+
l.forEach((p) => {
|
|
661
|
+
const x = p.sectionRowIndex;
|
|
662
|
+
let w = 0;
|
|
663
|
+
Array.from(p.querySelectorAll("th,td")).forEach((m) => {
|
|
664
|
+
for (let M = 0; M < u[x].length; M++)
|
|
665
|
+
if (u[x][M] === null) {
|
|
666
|
+
w = M;
|
|
667
667
|
break;
|
|
668
668
|
}
|
|
669
669
|
const T = m.rowSpan || 1, A = m.colSpan || 1;
|
|
670
670
|
for (let M = 0; M < T; M++)
|
|
671
671
|
for (let W = 0; W < A; W++)
|
|
672
|
-
|
|
672
|
+
x + M < f && w + W < b && (u[x + M][w + W] = M === 0 && W === 0 ? "1" : "0");
|
|
673
673
|
});
|
|
674
|
-
}), l.forEach((
|
|
675
|
-
const
|
|
676
|
-
Array.from(
|
|
677
|
-
for (let m = 0; m <
|
|
678
|
-
if (
|
|
679
|
-
|
|
674
|
+
}), l.forEach((p) => {
|
|
675
|
+
const x = p.sectionRowIndex;
|
|
676
|
+
Array.from(p.querySelectorAll("th,td")).forEach((w) => {
|
|
677
|
+
for (let m = 0; m < u[x].length; m++)
|
|
678
|
+
if (u[x][m] === "1") {
|
|
679
|
+
w.dataset.col = m, u[x][m] = "0";
|
|
680
680
|
break;
|
|
681
681
|
}
|
|
682
682
|
});
|
|
683
683
|
});
|
|
684
|
-
}, "resetColIndex"),
|
|
685
|
-
return
|
|
684
|
+
}, "resetColIndex"), i = s.cloneNode(!0);
|
|
685
|
+
return n(i), e(i), o(i, "thead"), o(i, "tbody"), o(i, "tfoot"), Array.from(i.querySelectorAll("colgroup col")).forEach((a, c) => {
|
|
686
686
|
const l = a.getAttribute("fixed");
|
|
687
|
-
l &&
|
|
688
|
-
|
|
687
|
+
l && i.querySelectorAll(`thead [data-col="${c}"], tbody [data-col="${c}"], tfoot [data-col="${c}"]`).forEach((g) => {
|
|
688
|
+
g.setAttribute("fixed", l);
|
|
689
689
|
});
|
|
690
|
-
}),
|
|
690
|
+
}), i;
|
|
691
691
|
}
|
|
692
692
|
// 🎯 [추가] td/th에 선언된 cell-type 속성을 읽어 커스텀 태그로 자동 감싸기
|
|
693
693
|
};
|
|
@@ -695,260 +695,272 @@ h(oe, "TableCompiler");
|
|
|
695
695
|
let Ie = oe;
|
|
696
696
|
var N, U, X, Et, xs;
|
|
697
697
|
const ns = class ns {
|
|
698
|
-
constructor(
|
|
698
|
+
constructor(s) {
|
|
699
699
|
d(this, X);
|
|
700
700
|
d(this, N);
|
|
701
701
|
d(this, U, { startRow: -1, startCol: -1, endRow: -1, endCol: -1 });
|
|
702
702
|
q(this, "render", /* @__PURE__ */ h(() => {
|
|
703
|
-
const { startRow:
|
|
703
|
+
const { startRow: s, startCol: e, endRow: n, endCol: o } = t(this, U);
|
|
704
704
|
S.log("🎨 [CellSelection.render] Rendering range ->", t(this, U));
|
|
705
|
-
const
|
|
705
|
+
const i = t(this, N).querySelectorAll(
|
|
706
706
|
".ng-container-left .ng-part-body, .ng-container-body .ng-part-body, .ng-container-right .ng-part-body"
|
|
707
707
|
);
|
|
708
|
-
if (
|
|
708
|
+
if (i.forEach((a) => {
|
|
709
709
|
a.querySelectorAll(".selected, .selected-top, .selected-bottom, .selected-left, .selected-right").forEach((c) => {
|
|
710
710
|
c.classList.remove("selected", "selected-top", "selected-bottom", "selected-left", "selected-right");
|
|
711
711
|
});
|
|
712
|
-
}),
|
|
712
|
+
}), s < 0 || e < 0) {
|
|
713
713
|
S.log("⚠️ [CellSelection.render] Range is invalid (< 0), skipping render.");
|
|
714
714
|
return;
|
|
715
715
|
}
|
|
716
|
-
let
|
|
717
|
-
|
|
716
|
+
let r = 0;
|
|
717
|
+
i.forEach((a) => {
|
|
718
718
|
a.querySelectorAll("tbody tr").forEach((c) => {
|
|
719
719
|
const { matrixRow: l } = Q(this, X, Et).call(this, c);
|
|
720
|
-
l < 0 || c.querySelectorAll("td, th").forEach((
|
|
721
|
-
const f = parseInt(
|
|
720
|
+
l < 0 || c.querySelectorAll("td, th").forEach((g) => {
|
|
721
|
+
const f = parseInt(g.dataset.col, 10);
|
|
722
722
|
if (isNaN(f)) return;
|
|
723
|
-
const b = parseInt(
|
|
724
|
-
|
|
723
|
+
const b = parseInt(g.rowSpan || 1, 10), u = parseInt(g.colSpan || 1, 10), p = l + b - 1, x = f + u - 1;
|
|
724
|
+
p >= s && l <= n && x >= e && f <= o && (r++, g.classList.add("selected"), S.log(g, s, e, n, o), l <= s && g.classList.add("selected-top"), p >= n && g.classList.add("selected-bottom"), f <= e && g.classList.add("selected-left"), x >= o && g.classList.add("selected-right"));
|
|
725
725
|
});
|
|
726
726
|
});
|
|
727
|
-
}), S.log(`✨ [CellSelection.render] Total rendered cells marked: ${
|
|
727
|
+
}), S.log(`✨ [CellSelection.render] Total rendered cells marked: ${r}`);
|
|
728
728
|
}, "render"));
|
|
729
|
-
|
|
729
|
+
y(this, N, s), Q(this, X, xs).call(this), t(this, N).querySelectorAll(
|
|
730
730
|
".ng-container-left .ng-part-body, .ng-container-body .ng-part-body, .ng-container-right .ng-part-body"
|
|
731
|
-
).forEach((
|
|
732
|
-
|
|
731
|
+
).forEach((n) => {
|
|
732
|
+
n.addEventListener("scroll", () => {
|
|
733
733
|
t(this, U).startRow >= 0 && t(this, U).startCol >= 0 && this.render();
|
|
734
734
|
});
|
|
735
735
|
}), S.log("🎯 [CellSelection] Initialized");
|
|
736
736
|
}
|
|
737
|
-
setRange(
|
|
738
|
-
S.log(`🔍 [CellSelection.setRange] Input -> startRow: ${
|
|
739
|
-
let
|
|
737
|
+
setRange(s, e, n, o) {
|
|
738
|
+
S.log(`🔍 [CellSelection.setRange] Input -> startRow: ${s}, startCol: ${e}, endRow: ${n}, endCol: ${o}`);
|
|
739
|
+
let i = Math.min(s, n), r = Math.max(s, n), a = Math.min(e, o), c = Math.max(e, o);
|
|
740
740
|
const l = t(this, N).querySelectorAll(
|
|
741
741
|
".ng-container-left .ng-part-body, .ng-container-body .ng-part-body, .ng-container-right .ng-part-body"
|
|
742
742
|
);
|
|
743
|
-
let
|
|
744
|
-
for (;
|
|
745
|
-
|
|
746
|
-
b.querySelectorAll("tbody tr").forEach((
|
|
747
|
-
if (
|
|
748
|
-
const { matrixRow:
|
|
749
|
-
|
|
750
|
-
const
|
|
751
|
-
if (isNaN(
|
|
752
|
-
const m = parseInt(
|
|
753
|
-
if (A >=
|
|
754
|
-
const B = Math.min(
|
|
755
|
-
(B !==
|
|
743
|
+
let g = !0, f = 0;
|
|
744
|
+
for (; g && f < 5; )
|
|
745
|
+
g = !1, f++, l.forEach((b) => {
|
|
746
|
+
b.querySelectorAll("tbody tr").forEach((u) => {
|
|
747
|
+
if (u.classList.contains("nodata")) return;
|
|
748
|
+
const { matrixRow: p } = Q(this, X, Et).call(this, u);
|
|
749
|
+
p < 0 || u.querySelectorAll("td, th").forEach((x) => {
|
|
750
|
+
const w = parseInt(x.dataset.col, 10);
|
|
751
|
+
if (isNaN(w)) return;
|
|
752
|
+
const m = parseInt(x.rowSpan || 1, 10), T = parseInt(x.colSpan || 1, 10), A = p + m - 1, M = w + T - 1;
|
|
753
|
+
if (A >= i && p <= r && M >= a && w <= c) {
|
|
754
|
+
const B = Math.min(i, p), Kt = Math.max(r, A), gs = Math.min(a, w), bs = Math.max(c, M);
|
|
755
|
+
(B !== i || Kt !== r || gs !== a || bs !== c) && (i = B, r = Kt, a = gs, c = bs, g = !0);
|
|
756
756
|
}
|
|
757
757
|
});
|
|
758
758
|
});
|
|
759
759
|
});
|
|
760
|
-
|
|
760
|
+
y(this, U, { startRow: i, startCol: a, endRow: r, endCol: c }), S.log("📦 [CellSelection.setRange] Final Range ->", t(this, U)), this.render();
|
|
761
761
|
}
|
|
762
762
|
};
|
|
763
|
-
N = new WeakMap(), U = new WeakMap(), X = new WeakSet(), Et = /* @__PURE__ */ h(function(
|
|
764
|
-
if (!
|
|
765
|
-
const e = parseInt(
|
|
763
|
+
N = new WeakMap(), U = new WeakMap(), X = new WeakSet(), Et = /* @__PURE__ */ h(function(s) {
|
|
764
|
+
if (!s || s.classList.contains("nodata")) return { dataRow: -1, subRowIndex: -1, matrixRow: -1 };
|
|
765
|
+
const e = parseInt(s.dataset.row, 10);
|
|
766
766
|
if (isNaN(e)) return { dataRow: -1, subRowIndex: -1, matrixRow: -1 };
|
|
767
|
-
const
|
|
768
|
-
return { dataRow: e, subRowIndex:
|
|
767
|
+
const n = s.closest("tbody"), i = Array.from(n.querySelectorAll("tr:not(.nodata)")).filter((l) => parseInt(l.dataset.row, 10) === e), r = i.indexOf(s), a = i.length > 0 ? i.length : 1, c = e * a + (r >= 0 ? r : s.sectionRowIndex % a);
|
|
768
|
+
return { dataRow: e, subRowIndex: r, matrixRow: c };
|
|
769
769
|
}, "#getMatrixRow"), xs = /* @__PURE__ */ h(function() {
|
|
770
|
-
const
|
|
771
|
-
if (!
|
|
770
|
+
const s = t(this, N).querySelector(".ng-container-top");
|
|
771
|
+
if (!s) {
|
|
772
772
|
S.log("❌ [CellSelection] .ng-container-top not found!");
|
|
773
773
|
return;
|
|
774
774
|
}
|
|
775
|
-
|
|
775
|
+
s.addEventListener("mousedown", (e) => {
|
|
776
776
|
if (e.button !== 0) return;
|
|
777
|
-
const
|
|
778
|
-
if (!
|
|
777
|
+
const n = e.target.closest("td, th");
|
|
778
|
+
if (!n || n.dataset.row === void 0 || n.dataset.col === void 0 || n.closest("tr").classList.contains("nodata")) return;
|
|
779
779
|
t(this, N).style.userSelect = "none", t(this, N).style.webkitUserSelect = "none";
|
|
780
|
-
const
|
|
781
|
-
if (
|
|
780
|
+
const o = n.closest("tr"), { matrixRow: i } = Q(this, X, Et).call(this, o), r = parseInt(n.dataset.col, 10);
|
|
781
|
+
if (i < 0) {
|
|
782
782
|
t(this, N).style.userSelect = "", t(this, N).style.webkitUserSelect = "";
|
|
783
783
|
return;
|
|
784
784
|
}
|
|
785
|
-
S.log(`🖱️ [MouseDown Success] startRow: ${
|
|
786
|
-
let a =
|
|
785
|
+
S.log(`🖱️ [MouseDown Success] startRow: ${i}, startCol: ${r}`), t(this, N).navigation.currentCell = n;
|
|
786
|
+
let a = i, c = r;
|
|
787
787
|
const l = /* @__PURE__ */ h((f) => {
|
|
788
788
|
const b = document.elementFromPoint(f.clientX, f.clientY);
|
|
789
|
-
let
|
|
790
|
-
if (!
|
|
789
|
+
let u = b == null ? void 0 : b.closest("td, th");
|
|
790
|
+
if (!u || !t(this, N).contains(u)) {
|
|
791
791
|
const m = t(this, N).querySelectorAll(".ng-part-body tbody tr:not(.nodata) td, .ng-part-body tbody tr:not(.nodata) th");
|
|
792
792
|
for (const T of m) {
|
|
793
793
|
const A = T.getBoundingClientRect();
|
|
794
794
|
if (f.clientX >= A.left && f.clientX <= A.right && f.clientY >= A.top && f.clientY <= A.bottom) {
|
|
795
|
-
|
|
795
|
+
u = T;
|
|
796
796
|
break;
|
|
797
797
|
}
|
|
798
798
|
}
|
|
799
799
|
}
|
|
800
|
-
if (!
|
|
801
|
-
const
|
|
802
|
-
|
|
803
|
-
}, "onMouseMove"),
|
|
804
|
-
S.log("🖱️ [MouseUp] Drag ended."), t(this, N).style.userSelect = "", t(this, N).style.webkitUserSelect = "", document.removeEventListener("mousemove", l), document.removeEventListener("mouseup",
|
|
800
|
+
if (!u || u.dataset.row === void 0 || u.dataset.col === void 0 || u.closest("tr").classList.contains("nodata")) return;
|
|
801
|
+
const p = u.closest("tr"), { matrixRow: x } = Q(this, X, Et).call(this, p), w = parseInt(u.dataset.col, 10);
|
|
802
|
+
x < 0 || a === x && c === w || (a = x, c = w, this.setRange(i, r, x, w));
|
|
803
|
+
}, "onMouseMove"), g = /* @__PURE__ */ h(() => {
|
|
804
|
+
S.log("🖱️ [MouseUp] Drag ended."), t(this, N).style.userSelect = "", t(this, N).style.webkitUserSelect = "", document.removeEventListener("mousemove", l), document.removeEventListener("mouseup", g);
|
|
805
805
|
}, "onMouseUp");
|
|
806
|
-
document.addEventListener("mousemove", l), document.addEventListener("mouseup",
|
|
806
|
+
document.addEventListener("mousemove", l), document.addEventListener("mouseup", g);
|
|
807
807
|
});
|
|
808
808
|
}, "#initEvents"), h(ns, "CellSelection");
|
|
809
809
|
let Le = ns;
|
|
810
810
|
var Y, lt, ie, ae, _t, Ot, Dt, ct, Wt, le, ws;
|
|
811
811
|
const rs = class rs {
|
|
812
|
-
constructor(
|
|
812
|
+
constructor(s) {
|
|
813
813
|
d(this, le);
|
|
814
814
|
d(this, Y);
|
|
815
815
|
d(this, lt, null);
|
|
816
816
|
d(this, ie, -1);
|
|
817
817
|
d(this, ae, -1);
|
|
818
|
-
d(this, _t, /* @__PURE__ */ h((
|
|
818
|
+
d(this, _t, /* @__PURE__ */ h((s) => {
|
|
819
819
|
const e = [];
|
|
820
|
-
return
|
|
820
|
+
return s.forEach((n) => e.push(...Array.from(n.querySelectorAll("td")))), e.length === 0 ? null : (e.sort((n, o) => parseInt(n.dataset.col, 10) - parseInt(o.dataset.col, 10)), e[e.length - 1]);
|
|
821
821
|
}, "#getMaxColCell"));
|
|
822
|
-
d(this, Ot, /* @__PURE__ */ h((
|
|
823
|
-
const
|
|
824
|
-
if (
|
|
825
|
-
let
|
|
826
|
-
const
|
|
827
|
-
|
|
828
|
-
for (const
|
|
829
|
-
const a = parseInt(
|
|
822
|
+
d(this, Ot, /* @__PURE__ */ h((s, e) => {
|
|
823
|
+
const n = t(this, ct).call(this, s);
|
|
824
|
+
if (n.length === 0) return e + 1;
|
|
825
|
+
let o = e + 1;
|
|
826
|
+
const i = [];
|
|
827
|
+
n.forEach((r) => i.push(...Array.from(r.querySelectorAll("td")))), i.sort((r, a) => parseInt(r.dataset.col, 10) - parseInt(a.dataset.col, 10));
|
|
828
|
+
for (const r of i) {
|
|
829
|
+
const a = parseInt(r.dataset.col, 10), c = parseInt(r.colSpan || 1, 10);
|
|
830
830
|
if (e >= a && e < a + c) {
|
|
831
|
-
|
|
831
|
+
o = a + c;
|
|
832
832
|
break;
|
|
833
833
|
}
|
|
834
834
|
}
|
|
835
|
-
return
|
|
835
|
+
return o;
|
|
836
836
|
}, "#getNextCol"));
|
|
837
|
-
d(this, Dt, /* @__PURE__ */ h((
|
|
838
|
-
const
|
|
839
|
-
if (
|
|
840
|
-
let
|
|
841
|
-
const
|
|
842
|
-
|
|
843
|
-
for (const
|
|
844
|
-
const a = parseInt(
|
|
837
|
+
d(this, Dt, /* @__PURE__ */ h((s, e) => {
|
|
838
|
+
const n = t(this, ct).call(this, s);
|
|
839
|
+
if (n.length === 0) return Math.max(0, e - 1);
|
|
840
|
+
let o = -1;
|
|
841
|
+
const i = [];
|
|
842
|
+
n.forEach((r) => i.push(...Array.from(r.querySelectorAll("td")))), i.sort((r, a) => parseInt(r.dataset.col, 10) - parseInt(a.dataset.col, 10));
|
|
843
|
+
for (const r of i) {
|
|
844
|
+
const a = parseInt(r.dataset.col, 10);
|
|
845
845
|
if (a < e)
|
|
846
|
-
|
|
846
|
+
o = a;
|
|
847
847
|
else
|
|
848
848
|
break;
|
|
849
849
|
}
|
|
850
|
-
return
|
|
850
|
+
return o;
|
|
851
851
|
}, "#getPreviousCol"));
|
|
852
|
-
|
|
852
|
+
// 🎯 레거시의 병합 셀(rowSpan) 블록 포용 탐색 로직 이식
|
|
853
|
+
d(this, ct, /* @__PURE__ */ h((s) => {
|
|
853
854
|
const e = t(this, Y).querySelectorAll(
|
|
854
855
|
".ng-container-left .ng-part-body, .ng-container-body .ng-part-body, .ng-container-right .ng-part-body"
|
|
855
|
-
),
|
|
856
|
-
return e.forEach((
|
|
857
|
-
const
|
|
858
|
-
for (const
|
|
859
|
-
const a = parseInt(
|
|
860
|
-
if (
|
|
861
|
-
|
|
856
|
+
), n = [];
|
|
857
|
+
return e.forEach((o) => {
|
|
858
|
+
const i = Array.from(o.querySelectorAll("tbody tr:not(.nodata)"));
|
|
859
|
+
for (const r of i) {
|
|
860
|
+
const a = parseInt(r.dataset.row, 10), c = i.filter((p) => parseInt(p.dataset.row, 10) === a), l = c.length > 0 ? c.length : 1, g = c.indexOf(r), f = a * l + (g >= 0 ? g : 0);
|
|
861
|
+
if (f === s) {
|
|
862
|
+
n.push(r);
|
|
862
863
|
break;
|
|
863
864
|
}
|
|
865
|
+
const b = Array.from(r.querySelectorAll("td"));
|
|
866
|
+
let u = !1;
|
|
867
|
+
for (const p of b) {
|
|
868
|
+
const x = parseInt(p.rowSpan || 1, 10);
|
|
869
|
+
if (x > 1 && s >= f && s < f + x) {
|
|
870
|
+
n.push(r), u = !0;
|
|
871
|
+
break;
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
if (u) break;
|
|
864
875
|
}
|
|
865
|
-
}),
|
|
876
|
+
}), n;
|
|
866
877
|
}, "#findTargetTrsByMatrix"));
|
|
867
|
-
|
|
868
|
-
|
|
878
|
+
// 🎯 rowSpan 및 colSpan 경계를 모두 충족하는 셀을 3분할 전체 영역에서 탐색
|
|
879
|
+
d(this, Wt, /* @__PURE__ */ h((s, e, n, o) => {
|
|
880
|
+
const i = t(this, Y).querySelectorAll(
|
|
869
881
|
".ng-container-left .ng-part-body, .ng-container-body .ng-part-body, .ng-container-right .ng-part-body"
|
|
870
|
-
);
|
|
871
|
-
for (const
|
|
872
|
-
const c = Array.from(
|
|
873
|
-
|
|
874
|
-
const l = Array.from(
|
|
875
|
-
for (const
|
|
876
|
-
const
|
|
877
|
-
if (!isNaN(
|
|
878
|
-
return
|
|
882
|
+
), r = o !== void 0 ? o : s * 1 + e;
|
|
883
|
+
for (const a of i) {
|
|
884
|
+
const c = Array.from(a.querySelectorAll("tbody tr:not(.nodata)"));
|
|
885
|
+
for (const l of c) {
|
|
886
|
+
const g = parseInt(l.dataset.row, 10), f = c.filter((w) => parseInt(w.dataset.row, 10) === g), b = f.length > 0 ? f.length : 1, u = f.indexOf(l), p = g * b + (u >= 0 ? u : 0), x = Array.from(l.querySelectorAll("td"));
|
|
887
|
+
for (const w of x) {
|
|
888
|
+
const m = parseInt(w.dataset.col, 10), T = parseInt(w.colSpan || 1, 10), A = parseInt(w.rowSpan || 1, 10);
|
|
889
|
+
if (!isNaN(m) && n >= m && n < m + T && r >= p && r < p + A && window.getComputedStyle(w).display !== "none")
|
|
890
|
+
return w;
|
|
879
891
|
}
|
|
880
892
|
}
|
|
881
893
|
}
|
|
882
894
|
return null;
|
|
883
895
|
}, "#getNearElement"));
|
|
884
|
-
|
|
896
|
+
y(this, Y, s), Q(this, le, ws).call(this), S.log("🎯 [CellNavigation] Initialized");
|
|
885
897
|
}
|
|
886
898
|
get currentCell() {
|
|
887
899
|
return t(this, lt);
|
|
888
900
|
}
|
|
889
|
-
set currentCell(
|
|
890
|
-
if (!
|
|
891
|
-
|
|
892
|
-
const e = parseInt(
|
|
893
|
-
if (!isNaN(e) && !isNaN(
|
|
894
|
-
|
|
895
|
-
const
|
|
896
|
-
if (
|
|
897
|
-
const a = Array.from(
|
|
898
|
-
t(this, Y).selection.setRange(
|
|
901
|
+
set currentCell(s) {
|
|
902
|
+
if (!s) return;
|
|
903
|
+
y(this, lt, s), s.focus({ preventScroll: !0 });
|
|
904
|
+
const e = parseInt(s.dataset.row, 10), n = parseInt(s.dataset.col, 10);
|
|
905
|
+
if (!isNaN(e) && !isNaN(n)) {
|
|
906
|
+
y(this, ie, e), y(this, ae, n);
|
|
907
|
+
const o = s.closest("tr"), i = o == null ? void 0 : o.closest("tbody");
|
|
908
|
+
if (i) {
|
|
909
|
+
const a = Array.from(i.querySelectorAll("tr:not(.nodata)")).filter((f) => parseInt(f.dataset.row, 10) === e), c = a.length > 0 ? a.length : 1, l = a.indexOf(o), g = e * c + (l >= 0 ? l : 0);
|
|
910
|
+
t(this, Y).selection.setRange(g, n, g, n);
|
|
899
911
|
}
|
|
900
912
|
}
|
|
901
913
|
}
|
|
902
|
-
moveCell(
|
|
914
|
+
moveCell(s) {
|
|
903
915
|
var m, T, A, M;
|
|
904
916
|
if (!t(this, lt)) return;
|
|
905
|
-
const e = t(this, lt),
|
|
906
|
-
if (!
|
|
907
|
-
const c = Array.from(
|
|
908
|
-
let b = f,
|
|
909
|
-
switch (
|
|
917
|
+
const e = t(this, lt), n = e.closest("tr"), o = parseInt(e.dataset.row, 10), i = parseInt(e.dataset.col, 10), r = n == null ? void 0 : n.closest("tbody");
|
|
918
|
+
if (!r) return;
|
|
919
|
+
const c = Array.from(r.querySelectorAll("tr:not(.nodata)")).filter((W) => parseInt(W.dataset.row, 10) === o), l = c.length > 0 ? c.length : 1, g = c.indexOf(n), f = o * l + (g >= 0 ? g : 0);
|
|
920
|
+
let b = f, u = i;
|
|
921
|
+
switch (s.code) {
|
|
910
922
|
case "Tab":
|
|
911
|
-
if (
|
|
912
|
-
if (
|
|
923
|
+
if (s.preventDefault(), s.shiftKey) {
|
|
924
|
+
if (u = t(this, Dt).call(this, f, i), u < 0 && f > 0) {
|
|
913
925
|
b = f - 1;
|
|
914
926
|
const W = t(this, ct).call(this, b), B = t(this, _t).call(this, W);
|
|
915
|
-
|
|
927
|
+
u = B ? parseInt(B.dataset.col, 10) : 0;
|
|
916
928
|
}
|
|
917
929
|
} else {
|
|
918
|
-
|
|
919
|
-
const W = t(this, ct).call(this, f), B = t(this, _t).call(this, W),
|
|
920
|
-
|
|
930
|
+
u = t(this, Ot).call(this, f, i);
|
|
931
|
+
const W = t(this, ct).call(this, f), B = t(this, _t).call(this, W), Kt = B ? parseInt(B.dataset.col, 10) + parseInt(B.colSpan || 1, 10) : 0;
|
|
932
|
+
u >= Kt && (b = f + 1, u = 0);
|
|
921
933
|
}
|
|
922
934
|
break;
|
|
923
935
|
case "ArrowRight":
|
|
924
|
-
|
|
936
|
+
u = t(this, Ot).call(this, f, i);
|
|
925
937
|
break;
|
|
926
938
|
case "ArrowLeft":
|
|
927
|
-
|
|
939
|
+
u = t(this, Dt).call(this, f, i);
|
|
928
940
|
break;
|
|
929
941
|
case "ArrowDown":
|
|
930
|
-
|
|
942
|
+
s.preventDefault(), b = f + (e.rowSpan || 1);
|
|
931
943
|
break;
|
|
932
944
|
case "ArrowUp":
|
|
933
|
-
|
|
945
|
+
s.preventDefault(), b = Math.max(0, f - (e.rowSpan || 1));
|
|
934
946
|
break;
|
|
935
947
|
}
|
|
936
|
-
const
|
|
937
|
-
let
|
|
938
|
-
if (
|
|
939
|
-
this.currentCell =
|
|
940
|
-
else if (
|
|
948
|
+
const p = Math.floor(b / l), x = b % l;
|
|
949
|
+
let w = t(this, Wt).call(this, p, x, u, b);
|
|
950
|
+
if (w)
|
|
951
|
+
this.currentCell = w;
|
|
952
|
+
else if (p !== o && p >= 0) {
|
|
941
953
|
const W = ((T = (m = t(this, Y)).getRowHeight) == null ? void 0 : T.call(m)) || 40;
|
|
942
|
-
(M = (A = t(this, Y)).scrollToY) == null || M.call(A,
|
|
943
|
-
const B = t(this, Wt).call(this,
|
|
954
|
+
(M = (A = t(this, Y)).scrollToY) == null || M.call(A, p * W), setTimeout(() => {
|
|
955
|
+
const B = t(this, Wt).call(this, p, x, u, b);
|
|
944
956
|
B && (this.currentCell = B);
|
|
945
957
|
}, 0);
|
|
946
958
|
}
|
|
947
959
|
}
|
|
948
960
|
};
|
|
949
961
|
Y = new WeakMap(), lt = new WeakMap(), ie = new WeakMap(), ae = new WeakMap(), _t = new WeakMap(), Ot = new WeakMap(), Dt = new WeakMap(), ct = new WeakMap(), Wt = new WeakMap(), le = new WeakSet(), ws = /* @__PURE__ */ h(function() {
|
|
950
|
-
t(this, Y).addEventListener("keydown", (
|
|
951
|
-
["Tab", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"].includes(
|
|
962
|
+
t(this, Y).addEventListener("keydown", (s) => {
|
|
963
|
+
["Tab", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"].includes(s.code) && this.moveCell(s);
|
|
952
964
|
});
|
|
953
965
|
}, "#initEvents"), h(rs, "CellNavigation");
|
|
954
966
|
let Me = rs;
|
|
@@ -966,11 +978,11 @@ const qt = class qt extends HTMLElement {
|
|
|
966
978
|
}, "invalidate"));
|
|
967
979
|
q(this, "generate", /* @__PURE__ */ h((e) => {
|
|
968
980
|
if (S.log("sheet.generate()"), !e) return;
|
|
969
|
-
|
|
970
|
-
const
|
|
971
|
-
|
|
972
|
-
var
|
|
973
|
-
(
|
|
981
|
+
y(this, ht, Ie.compile(e)), t(this, he).call(this), t(this, de).call(this);
|
|
982
|
+
const n = this.querySelector(".ng-container-body .ng-part-header"), o = this.querySelector(".ng-container-body .ng-part-footer"), i = this.querySelector(".ng-nodata-overlay");
|
|
983
|
+
n && i && (i.style.top = `${n.offsetHeight}px`), o && i && (i.style.bottom = `${o.offsetHeight}px`), t(this, dt).initialize(), setTimeout(() => {
|
|
984
|
+
var r;
|
|
985
|
+
(r = this.querySelector("nine-table-hscrollbar")) == null || r.refresh();
|
|
974
986
|
}, 0);
|
|
975
987
|
}, "generate"));
|
|
976
988
|
d(this, he, /* @__PURE__ */ h(() => {
|
|
@@ -978,53 +990,53 @@ const qt = class qt extends HTMLElement {
|
|
|
978
990
|
{ selector: ".ng-container-body", type: null },
|
|
979
991
|
{ selector: ".ng-container-left", type: "left" },
|
|
980
992
|
{ selector: ".ng-container-right", type: "right" }
|
|
981
|
-
].forEach(({ selector:
|
|
982
|
-
var
|
|
983
|
-
(
|
|
993
|
+
].forEach(({ selector: n, type: o }) => {
|
|
994
|
+
var i, r, a;
|
|
995
|
+
(i = this.querySelector(`${n} .ng-part-header`)) == null || i.appendChild(t(this, mt).call(this, t(this, ht), o, "header")), (r = this.querySelector(`${n} .ng-virtual-spacer`)) == null || r.before(t(this, mt).call(this, t(this, ht), o, "body")), (a = this.querySelector(`${n} .ng-part-footer`)) == null || a.appendChild(t(this, mt).call(this, t(this, ht), o, "footer"));
|
|
984
996
|
});
|
|
985
997
|
}, "#renderSplitContainers"));
|
|
986
998
|
d(this, de, /* @__PURE__ */ h(() => {
|
|
987
999
|
["left", "right", "body"].forEach((e) => {
|
|
988
|
-
const
|
|
989
|
-
if (!
|
|
990
|
-
let
|
|
991
|
-
|
|
992
|
-
const a = parseInt(
|
|
993
|
-
isNaN(a) || (
|
|
994
|
-
}), e === "body" ? (
|
|
995
|
-
|
|
996
|
-
})) : (
|
|
997
|
-
|
|
1000
|
+
const n = this.querySelector(`.ng-container-${e}`), o = n == null ? void 0 : n.querySelectorAll("table");
|
|
1001
|
+
if (!n || !o || o.length === 0) return;
|
|
1002
|
+
let i = 0;
|
|
1003
|
+
o[0].querySelectorAll("col").forEach((r) => {
|
|
1004
|
+
const a = parseInt(r.getAttribute("width"), 10);
|
|
1005
|
+
isNaN(a) || (i += a);
|
|
1006
|
+
}), e === "body" ? (n.style.flex = "1", o.forEach((r) => {
|
|
1007
|
+
r.style.width = `${i}px`, r.style.minWidth = `${i}px`;
|
|
1008
|
+
})) : (n.style.flex = `0 0 ${i}px`, n.style.width = `${i}px`, o.forEach((r) => {
|
|
1009
|
+
r.style.width = `${i}px`, r.style.minWidth = `${i}px`;
|
|
998
1010
|
}));
|
|
999
1011
|
});
|
|
1000
1012
|
}, "#updateContainerWidths"));
|
|
1001
|
-
d(this, mt, /* @__PURE__ */ h((e,
|
|
1002
|
-
const
|
|
1003
|
-
if (
|
|
1013
|
+
d(this, mt, /* @__PURE__ */ h((e, n, o) => {
|
|
1014
|
+
const i = e.cloneNode(!0), r = i.querySelector("thead"), a = i.querySelector("tbody"), c = i.querySelector("tfoot");
|
|
1015
|
+
if (o === "header") {
|
|
1004
1016
|
if (a && a.remove(), c && c.remove(), e.querySelector("tbody")) {
|
|
1005
|
-
const
|
|
1006
|
-
|
|
1017
|
+
const g = document.createElement("tbody");
|
|
1018
|
+
g.className = "fixed-tbody", i.appendChild(g);
|
|
1007
1019
|
}
|
|
1008
|
-
} else
|
|
1009
|
-
return
|
|
1020
|
+
} else o === "body" ? (r && r.remove(), c && c.remove(), a && (a.className = "bindable-tbody")) : o === "footer" && (r && r.remove(), a && a.remove());
|
|
1021
|
+
return n === "left" ? i.querySelectorAll("col, th, td, tfoot td, tfoot th").forEach((l) => {
|
|
1010
1022
|
l.getAttribute("fixed") !== "left" && l.remove();
|
|
1011
|
-
}) :
|
|
1023
|
+
}) : n === "right" ? i.querySelectorAll("col, th, td, tfoot td, tfoot th").forEach((l) => {
|
|
1012
1024
|
l.getAttribute("fixed") !== "right" && l.remove();
|
|
1013
|
-
}) :
|
|
1025
|
+
}) : i.querySelectorAll("[fixed=left], [fixed=right]").forEach((l) => {
|
|
1014
1026
|
l.remove();
|
|
1015
|
-
}),
|
|
1027
|
+
}), i;
|
|
1016
1028
|
}, "#createSplitTable"));
|
|
1017
1029
|
q(this, "getRowHeight", /* @__PURE__ */ h(() => t(this, dt).getRowHeight(), "getRowHeight"));
|
|
1018
1030
|
q(this, "scrollToX", /* @__PURE__ */ h((e) => {
|
|
1019
|
-
const
|
|
1020
|
-
|
|
1031
|
+
const n = this.querySelector(".ng-container-body .ng-part-body");
|
|
1032
|
+
n && (n.scrollLeft = e);
|
|
1021
1033
|
}, "scrollToX"));
|
|
1022
1034
|
q(this, "scrollToY", /* @__PURE__ */ h((e) => {
|
|
1023
|
-
const
|
|
1024
|
-
|
|
1035
|
+
const n = this.querySelector(".ng-container-body .ng-part-body");
|
|
1036
|
+
n && (n.scrollTop = e);
|
|
1025
1037
|
}, "scrollToY"));
|
|
1026
1038
|
d(this, fe, /* @__PURE__ */ h(() => {
|
|
1027
|
-
t(this, ue).call(this),
|
|
1039
|
+
t(this, ue).call(this), y(this, zt, new Le(this)), y(this, Bt, new Me(this));
|
|
1028
1040
|
}, "#init"));
|
|
1029
1041
|
d(this, ue, /* @__PURE__ */ h(() => {
|
|
1030
1042
|
const e = qt.SCROLLBAR_SIZE;
|
|
@@ -1228,7 +1240,7 @@ const qt = class qt extends HTMLElement {
|
|
|
1228
1240
|
</div>
|
|
1229
1241
|
`;
|
|
1230
1242
|
}, "#render"));
|
|
1231
|
-
|
|
1243
|
+
y(this, dt, new ke(this)), y(this, ce, this.getRootNode().host);
|
|
1232
1244
|
}
|
|
1233
1245
|
connectedCallback() {
|
|
1234
1246
|
t(this, fe).call(this);
|
|
@@ -1244,50 +1256,50 @@ const qt = class qt extends HTMLElement {
|
|
|
1244
1256
|
}
|
|
1245
1257
|
};
|
|
1246
1258
|
ce = new WeakMap(), ht = new WeakMap(), dt = new WeakMap(), zt = new WeakMap(), Bt = new WeakMap(), he = new WeakMap(), de = new WeakMap(), mt = new WeakMap(), fe = new WeakMap(), ue = new WeakMap(), h(qt, "NineTableSheet"), q(qt, "SCROLLBAR_SIZE", 16);
|
|
1247
|
-
let
|
|
1248
|
-
customElements.get("nine-table-sheet") || customElements.define("nine-table-sheet",
|
|
1259
|
+
let Gt = qt;
|
|
1260
|
+
customElements.get("nine-table-sheet") || customElements.define("nine-table-sheet", Gt);
|
|
1249
1261
|
var ge, Pt;
|
|
1250
1262
|
const os = class os extends HTMLElement {
|
|
1251
1263
|
constructor() {
|
|
1252
1264
|
super();
|
|
1253
1265
|
d(this, ge, /* @__PURE__ */ h(() => {
|
|
1254
1266
|
var e;
|
|
1255
|
-
(e = this.querySelector(".nine-tab-bar")) == null || e.addEventListener("click", (
|
|
1256
|
-
var
|
|
1257
|
-
const
|
|
1258
|
-
t(this, Pt).call(this,
|
|
1267
|
+
(e = this.querySelector(".nine-tab-bar")) == null || e.addEventListener("click", (n) => {
|
|
1268
|
+
var r;
|
|
1269
|
+
const o = n.ctrlKey || n.metaKey || n.shiftKey, i = parseInt((r = n.target.closest(".nine-tab-item")) == null ? void 0 : r.dataset.index, 10);
|
|
1270
|
+
t(this, Pt).call(this, i, o);
|
|
1259
1271
|
}), t(this, Pt).call(this, 0, !1);
|
|
1260
1272
|
}, "#init"));
|
|
1261
|
-
d(this, Pt, /* @__PURE__ */ h((e,
|
|
1262
|
-
const
|
|
1263
|
-
const
|
|
1264
|
-
Array.from(this.querySelectorAll("nine-splitter")).forEach((
|
|
1265
|
-
const b =
|
|
1266
|
-
b.length < 2 || b.forEach((
|
|
1267
|
-
const
|
|
1268
|
-
|
|
1273
|
+
d(this, Pt, /* @__PURE__ */ h((e, n = !1) => {
|
|
1274
|
+
const o = /* @__PURE__ */ h(() => {
|
|
1275
|
+
const g = Array.from(this.querySelectorAll("nine-table-sheet"));
|
|
1276
|
+
Array.from(this.querySelectorAll("nine-splitter")).forEach((u) => u.style.setProperty("display", "none"));
|
|
1277
|
+
const b = g.filter((u) => u.classList.contains("active"));
|
|
1278
|
+
b.length < 2 || b.forEach((u) => {
|
|
1279
|
+
const p = parseInt(u.getAttribute("data-index"), 10), x = this.querySelector(`nine-splitter[data-split-index="${p}"]`), w = g[p + 1];
|
|
1280
|
+
x && w && w.classList.contains("active") && x.style.setProperty("display", "flex");
|
|
1269
1281
|
});
|
|
1270
|
-
}, "updateSplitters"),
|
|
1282
|
+
}, "updateSplitters"), i = this.querySelector(".nine-tab-bar"), r = this.querySelector("nine-table-sheets-body"), a = i.querySelectorAll(".nine-tab-item"), c = r.querySelectorAll("nine-table-sheet");
|
|
1271
1283
|
if (!a[e]) return;
|
|
1272
|
-
if (!
|
|
1273
|
-
a.forEach((
|
|
1274
|
-
|
|
1275
|
-
}), c.forEach((
|
|
1284
|
+
if (!n)
|
|
1285
|
+
a.forEach((g, f) => {
|
|
1286
|
+
g.classList.toggle("active", f === e);
|
|
1287
|
+
}), c.forEach((g, f) => {
|
|
1276
1288
|
const b = f === e;
|
|
1277
|
-
|
|
1289
|
+
g.classList.toggle("active", b), g.style.flex = b ? "1 1 100%" : "";
|
|
1278
1290
|
});
|
|
1279
1291
|
else {
|
|
1280
|
-
const
|
|
1281
|
-
if (
|
|
1292
|
+
const g = a[e], f = i.querySelectorAll(".nine-tab-item.active");
|
|
1293
|
+
if (g.classList.contains("active") && f.length <= 1)
|
|
1282
1294
|
return;
|
|
1283
|
-
|
|
1284
|
-
const b =
|
|
1295
|
+
g.classList.toggle("active");
|
|
1296
|
+
const b = r.querySelector(`nine-table-sheet[data-index="${e}"]`);
|
|
1285
1297
|
b && (b.classList.toggle("active"), b.classList.contains("active") || (b.style.flex = ""));
|
|
1286
1298
|
}
|
|
1287
|
-
const l =
|
|
1288
|
-
l == null || l.forEach((
|
|
1289
|
-
|
|
1290
|
-
}),
|
|
1299
|
+
const l = r.querySelectorAll("nine-table-sheet.active");
|
|
1300
|
+
l == null || l.forEach((g) => {
|
|
1301
|
+
g.style.flex = l.length > 1 ? "1 1 0%" : "1 1 100%";
|
|
1302
|
+
}), o();
|
|
1291
1303
|
}, "#switchSheet"));
|
|
1292
1304
|
}
|
|
1293
1305
|
connectedCallback() {
|
|
@@ -1299,26 +1311,26 @@ let He = os;
|
|
|
1299
1311
|
customElements.get("nine-table-sheets") || customElements.define("nine-table-sheets", He);
|
|
1300
1312
|
var _, be, Ft, pe;
|
|
1301
1313
|
const is = class is {
|
|
1302
|
-
constructor(
|
|
1314
|
+
constructor(s) {
|
|
1303
1315
|
d(this, _);
|
|
1304
1316
|
d(this, be, /* @__PURE__ */ h(() => {
|
|
1305
|
-
t(this, pe).call(this), new ResizeObserver((
|
|
1306
|
-
for (let e of
|
|
1317
|
+
t(this, pe).call(this), new ResizeObserver((s) => {
|
|
1318
|
+
for (let e of s)
|
|
1307
1319
|
t(this, _).getAttribute("auto-height") === "true" && t(this, Ft).call(this);
|
|
1308
1320
|
}).observe(t(this, _));
|
|
1309
1321
|
}, "#init"));
|
|
1310
1322
|
d(this, Ft, /* @__PURE__ */ h(() => {
|
|
1311
1323
|
var c, l;
|
|
1312
|
-
const
|
|
1313
|
-
if (
|
|
1314
|
-
const e = parseInt(t(this, _).getAttribute("max-display-row"), 10) || 10,
|
|
1324
|
+
const s = Array.from(t(this, _).shadowRoot.querySelectorAll("nine-table-sheet.active"));
|
|
1325
|
+
if (s.length === 0) return;
|
|
1326
|
+
const e = parseInt(t(this, _).getAttribute("max-display-row"), 10) || 10, n = Math.max(...s.map((g) => g.getRowHeight())), o = (c = t(this, _).shadowRoot.querySelector("nine-table-header")) == null ? void 0 : c.getBoundingClientRect().height, i = (l = t(this, _).shadowRoot.querySelector("nine-table-sheets-footer")) == null ? void 0 : l.getBoundingClientRect().height, r = Gt.SCROLLBAR_SIZE, a = e * n + o + i + r;
|
|
1315
1327
|
t(this, _).style.height = `${a}px`;
|
|
1316
1328
|
}, "#applyAutoHeight"));
|
|
1317
1329
|
d(this, pe, /* @__PURE__ */ h(() => {
|
|
1318
|
-
const e = Array.from(t(this, _).children).filter((c) => c.tagName === "TABLE"),
|
|
1319
|
-
const f = `<nine-table-sheet class="${l === 0 ? "active" : ""}" data-index="${l}"></nine-table-sheet>`, b = l <
|
|
1330
|
+
const e = Array.from(t(this, _).children).filter((c) => c.tagName === "TABLE"), n = t(this, _).getAttribute("auto-height") === "true", o = e.length, i = e.map((c, l) => {
|
|
1331
|
+
const f = `<nine-table-sheet class="${l === 0 ? "active" : ""}" data-index="${l}"></nine-table-sheet>`, b = l < o - 1 ? `<nine-splitter class="h" data-split-index="${l}"></nine-splitter>` : "";
|
|
1320
1332
|
return f + b;
|
|
1321
|
-
}).join(""),
|
|
1333
|
+
}).join(""), r = e.map((c, l) => `<div class="nine-tab-item ${l === 0 ? "active" : ""}" data-index="${l}">Sheet ${l + 1}</div>`).join("");
|
|
1322
1334
|
t(this, _).shadowRoot.innerHTML = `
|
|
1323
1335
|
<style>
|
|
1324
1336
|
:host {
|
|
@@ -1326,7 +1338,7 @@ const is = class is {
|
|
|
1326
1338
|
flex-direction: column;
|
|
1327
1339
|
position: relative;
|
|
1328
1340
|
overflow: hidden;
|
|
1329
|
-
height: ${
|
|
1341
|
+
height: ${n ? "auto" : "100%"};
|
|
1330
1342
|
background: #fff;
|
|
1331
1343
|
}
|
|
1332
1344
|
|
|
@@ -1430,9 +1442,9 @@ const is = class is {
|
|
|
1430
1442
|
<nine-table-body>
|
|
1431
1443
|
<nine-table-summary></nine-table-summary>
|
|
1432
1444
|
<nine-table-sheets>
|
|
1433
|
-
<nine-table-sheets-body>${
|
|
1445
|
+
<nine-table-sheets-body>${i}</nine-table-sheets-body>
|
|
1434
1446
|
<nine-table-sheets-footer>
|
|
1435
|
-
<div class="nine-tab-bar">${
|
|
1447
|
+
<div class="nine-tab-bar">${r}</div>
|
|
1436
1448
|
<div class="sheets-counter">Total : <span id="row-count">0</span></div>
|
|
1437
1449
|
</nine-table-sheets-footer>
|
|
1438
1450
|
</nine-table-sheets>
|
|
@@ -1443,28 +1455,28 @@ const is = class is {
|
|
|
1443
1455
|
const a = t(this, _).shadowRoot.querySelectorAll("nine-table-sheet");
|
|
1444
1456
|
a == null || a.forEach((c, l) => {
|
|
1445
1457
|
e[l] && setTimeout(() => {
|
|
1446
|
-
c.generate(e[l]),
|
|
1458
|
+
c.generate(e[l]), n && t(this, Ft).call(this);
|
|
1447
1459
|
});
|
|
1448
1460
|
});
|
|
1449
1461
|
}, "#render"));
|
|
1450
|
-
|
|
1462
|
+
y(this, _, s), t(this, be).call(this);
|
|
1451
1463
|
}
|
|
1452
1464
|
};
|
|
1453
1465
|
_ = new WeakMap(), be = new WeakMap(), Ft = new WeakMap(), pe = new WeakMap(), h(is, "LayoutManager");
|
|
1454
1466
|
let $e = is;
|
|
1455
1467
|
var jt, xt;
|
|
1456
1468
|
const as = class as {
|
|
1457
|
-
constructor(
|
|
1469
|
+
constructor(s) {
|
|
1458
1470
|
d(this, jt);
|
|
1459
1471
|
d(this, xt, -1);
|
|
1460
1472
|
q(this, "count", /* @__PURE__ */ h(() => t(this, jt).rawRecords.length, "count"));
|
|
1461
|
-
|
|
1473
|
+
y(this, jt, s);
|
|
1462
1474
|
}
|
|
1463
1475
|
get at() {
|
|
1464
1476
|
return t(this, xt);
|
|
1465
1477
|
}
|
|
1466
|
-
set at(
|
|
1467
|
-
|
|
1478
|
+
set at(s) {
|
|
1479
|
+
y(this, xt, parseInt(s, 10)), body && !body.querySelector(`tbody.bindable tr[data-row="${t(this, xt)}"]`) && setTimeout(() => {
|
|
1468
1480
|
});
|
|
1469
1481
|
}
|
|
1470
1482
|
};
|
|
@@ -1472,7 +1484,7 @@ jt = new WeakMap(), xt = new WeakMap(), h(as, "ngRow");
|
|
|
1472
1484
|
let Ne = as;
|
|
1473
1485
|
var D, I, z, wt, ye, Z, me, ft, Yt, xe, we, vt;
|
|
1474
1486
|
const P = class P {
|
|
1475
|
-
constructor(
|
|
1487
|
+
constructor(s, e) {
|
|
1476
1488
|
d(this, D);
|
|
1477
1489
|
d(this, I);
|
|
1478
1490
|
d(this, z, []);
|
|
@@ -1480,36 +1492,36 @@ const P = class P {
|
|
|
1480
1492
|
d(this, ye, 0);
|
|
1481
1493
|
d(this, Z, []);
|
|
1482
1494
|
d(this, me, /* @__PURE__ */ h(() => {
|
|
1483
|
-
|
|
1484
|
-
const
|
|
1485
|
-
Array.from(
|
|
1486
|
-
var
|
|
1487
|
-
t(this, Z).push(((
|
|
1495
|
+
y(this, Z, []);
|
|
1496
|
+
const s = t(this, D).template || [];
|
|
1497
|
+
Array.from(s).forEach((e) => {
|
|
1498
|
+
var n;
|
|
1499
|
+
t(this, Z).push(((n = e.getBoundingClientRect) == null ? void 0 : n.call(e).height) || 24);
|
|
1488
1500
|
}), (t(this, I).rawRecords || []).forEach((e) => {
|
|
1489
1501
|
e.__ng || (e.__ng = t(this, Yt).call(this)), e.__ng.height = t(this, Z).slice();
|
|
1490
1502
|
});
|
|
1491
1503
|
}, "#initialize"));
|
|
1492
1504
|
d(this, ft, /* @__PURE__ */ h(() => {
|
|
1493
|
-
const
|
|
1494
|
-
|
|
1505
|
+
const s = t(this, D).shadowRoot.querySelector("nine-table-sheets");
|
|
1506
|
+
s == null || s.classList.toggle("nodata", this.length === 0), t(this, D).shadowRoot.querySelectorAll("nine-table-sheet").forEach((e) => {
|
|
1495
1507
|
e.invalidate();
|
|
1496
1508
|
});
|
|
1497
1509
|
}, "#invalidate"));
|
|
1498
|
-
q(this, "get", /* @__PURE__ */ h((
|
|
1499
|
-
var
|
|
1500
|
-
const
|
|
1501
|
-
if (!
|
|
1502
|
-
if (
|
|
1503
|
-
if (
|
|
1504
|
-
const
|
|
1510
|
+
q(this, "get", /* @__PURE__ */ h((s, e) => {
|
|
1511
|
+
var i;
|
|
1512
|
+
const n = this.getValidData();
|
|
1513
|
+
if (!n || n.length <= 0) return;
|
|
1514
|
+
if (s == null) return t(this, vt).call(this, n);
|
|
1515
|
+
if (s < 0 || s >= n.length) return null;
|
|
1516
|
+
const o = typeof ((i = t(this, D).fields) == null ? void 0 : i.get) == "function" ? t(this, D).fields.get() : [];
|
|
1505
1517
|
if (e != null) {
|
|
1506
|
-
const
|
|
1507
|
-
return
|
|
1518
|
+
const r = o.indexOf(e);
|
|
1519
|
+
return r >= 0 ? n[s].v[r] : null;
|
|
1508
1520
|
}
|
|
1509
|
-
return t(this, vt).call(this, s
|
|
1521
|
+
return t(this, vt).call(this, n[s]);
|
|
1510
1522
|
}, "get"));
|
|
1511
|
-
q(this, "set", /* @__PURE__ */ h((
|
|
1512
|
-
this.clear(), this.add(
|
|
1523
|
+
q(this, "set", /* @__PURE__ */ h((s) => {
|
|
1524
|
+
this.clear(), this.add(s, !1), t(this, ft).call(this);
|
|
1513
1525
|
}, "set"));
|
|
1514
1526
|
d(this, Yt, /* @__PURE__ */ h(() => ({
|
|
1515
1527
|
rowState: P.ROW_STATE.EMPTY,
|
|
@@ -1521,84 +1533,84 @@ const P = class P {
|
|
|
1521
1533
|
_: [0, 0, 0, 0, P.ROW_STATE.EMPTY, !1, !1, !0, !1, !0, !0, !1, t(this, Z).slice(), -1, {}, {}]
|
|
1522
1534
|
}), "#getDefaultMeta"));
|
|
1523
1535
|
q(this, "reset", /* @__PURE__ */ h(() => {
|
|
1524
|
-
|
|
1536
|
+
y(this, z, []), y(this, wt, []), t(this, ft).call(this);
|
|
1525
1537
|
}, "reset"));
|
|
1526
1538
|
q(this, "clear", /* @__PURE__ */ h(() => {
|
|
1527
|
-
var
|
|
1528
|
-
t(this, I).rawRecords = [],
|
|
1539
|
+
var s;
|
|
1540
|
+
t(this, I).rawRecords = [], y(this, z, []), y(this, wt, []), (s = t(this, I).viewRecords) != null && s.reset && t(this, I).viewRecords.reset();
|
|
1529
1541
|
}, "clear"));
|
|
1530
|
-
d(this, xe, /* @__PURE__ */ h((
|
|
1531
|
-
var
|
|
1532
|
-
Array.isArray(
|
|
1533
|
-
const e = typeof ((
|
|
1534
|
-
return
|
|
1535
|
-
const
|
|
1542
|
+
d(this, xe, /* @__PURE__ */ h((s) => {
|
|
1543
|
+
var o;
|
|
1544
|
+
Array.isArray(s) || (s = [s]);
|
|
1545
|
+
const e = typeof ((o = t(this, D).fields) == null ? void 0 : o.get) == "function" ? t(this, D).fields.get() : Object.keys(s[0] || {}), n = [];
|
|
1546
|
+
return s.forEach((i) => {
|
|
1547
|
+
const r = { v: [] };
|
|
1536
1548
|
e.forEach((a) => {
|
|
1537
|
-
|
|
1538
|
-
}),
|
|
1539
|
-
}),
|
|
1549
|
+
r.v.push(i[a] !== void 0 && i[a] !== null ? i[a] : "");
|
|
1550
|
+
}), n.push(r);
|
|
1551
|
+
}), n;
|
|
1540
1552
|
}, "#json2Array"));
|
|
1541
|
-
d(this, we, /* @__PURE__ */ h((
|
|
1553
|
+
d(this, we, /* @__PURE__ */ h((s) => (Array.isArray(s) || (s = [s]), s.forEach((e) => {
|
|
1542
1554
|
e.__ng = t(this, Yt).call(this), e.__ng.rowid = this.nextId, e.__ng.rowState = P.ROW_STATE.INSERT, e.__ng._[0] = e.__ng.rowid;
|
|
1543
|
-
}),
|
|
1544
|
-
q(this, "add", /* @__PURE__ */ h((
|
|
1545
|
-
|
|
1546
|
-
const
|
|
1547
|
-
t(this, I).rawRecords = t(this, I).rawRecords.concat(t(this, we).call(this,
|
|
1548
|
-
const
|
|
1549
|
-
return e ||
|
|
1550
|
-
const a = t(this, I).rawRecords[
|
|
1555
|
+
}), s), "#defaultInsert"));
|
|
1556
|
+
q(this, "add", /* @__PURE__ */ h((s, e = !0) => {
|
|
1557
|
+
s === void 0 && (s = {});
|
|
1558
|
+
const n = t(this, xe).call(this, s);
|
|
1559
|
+
t(this, I).rawRecords = t(this, I).rawRecords.concat(t(this, we).call(this, n)), this.resetRecords();
|
|
1560
|
+
const o = this.count() - 1;
|
|
1561
|
+
return e || n.forEach((i, r) => {
|
|
1562
|
+
const a = t(this, I).rawRecords[o - r];
|
|
1551
1563
|
a && (a.__ng.rowState = P.ROW_STATE.EMPTY);
|
|
1552
|
-
}), t(this, ft).call(this),
|
|
1564
|
+
}), t(this, ft).call(this), o;
|
|
1553
1565
|
}, "add"));
|
|
1554
|
-
q(this, "delete", /* @__PURE__ */ h((
|
|
1566
|
+
q(this, "delete", /* @__PURE__ */ h((s) => {
|
|
1555
1567
|
let e = [];
|
|
1556
|
-
Array.isArray(
|
|
1557
|
-
if (t(this, z)[
|
|
1558
|
-
const
|
|
1559
|
-
t(this, z)[
|
|
1560
|
-
|
|
1568
|
+
Array.isArray(s) ? e = s : typeof s > "u" ? e = [t(this, I).host.row.at] : e = [parseInt(s, 10)], e.sort((n, o) => o - n).forEach((n) => {
|
|
1569
|
+
if (t(this, z)[n]) {
|
|
1570
|
+
const o = t(this, z)[n].__ng.rowid;
|
|
1571
|
+
t(this, z)[n].__ng.rowState === P.ROW_STATE.INSERT ? t(this, I).rawRecords = t(this, I).rawRecords.filter((i) => i.__ng.rowid !== o) : t(this, I).rawRecords.forEach((i) => {
|
|
1572
|
+
i.__ng.rowid === o && (i.__ng.deleted = !0, i.__ng.rowState = P.ROW_STATE.DELETE);
|
|
1561
1573
|
});
|
|
1562
1574
|
}
|
|
1563
1575
|
}), this.resetRecords(), t(this, ft).call(this);
|
|
1564
1576
|
}, "delete"));
|
|
1565
|
-
q(this, "setValue", /* @__PURE__ */ h((
|
|
1577
|
+
q(this, "setValue", /* @__PURE__ */ h((s, e, n) => {
|
|
1566
1578
|
var c;
|
|
1567
|
-
|
|
1568
|
-
const
|
|
1569
|
-
if (
|
|
1570
|
-
const
|
|
1571
|
-
if (!
|
|
1572
|
-
const a =
|
|
1573
|
-
a !==
|
|
1579
|
+
s = parseInt(s, 10);
|
|
1580
|
+
const i = (typeof ((c = t(this, D).fields) == null ? void 0 : c.get) == "function" ? t(this, D).fields.get() : []).indexOf(e);
|
|
1581
|
+
if (i < 0) return;
|
|
1582
|
+
const r = this.getValidData()[s];
|
|
1583
|
+
if (!r) return;
|
|
1584
|
+
const a = r.v[i];
|
|
1585
|
+
a !== n && r.__ng.rowState !== P.ROW_STATE.INSERT && (r.__ng.o.hasOwnProperty(e) || (r.__ng.o[e] = a), r.__ng.rowState = P.ROW_STATE.UPDATE), r.v[i] = n;
|
|
1574
1586
|
}, "setValue"));
|
|
1575
1587
|
q(this, "resetRecords", /* @__PURE__ */ h(() => {
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
}), t(this, z).forEach((
|
|
1579
|
-
|
|
1588
|
+
y(this, wt, t(this, I).rawRecords.filter((s) => !s.__ng.deleted)), y(this, z, t(this, I).rawRecords.filter((s) => !s.__ng.deleted && !s.__ng.filtered)), t(this, I).rawRecords.forEach((s, e) => {
|
|
1589
|
+
s.__ng.rowidx = e;
|
|
1590
|
+
}), t(this, z).forEach((s, e) => {
|
|
1591
|
+
s.__ng.i = e;
|
|
1580
1592
|
});
|
|
1581
1593
|
}, "resetRecords"));
|
|
1582
1594
|
q(this, "getValidData", /* @__PURE__ */ h(() => (t(this, z).length === 0 && t(this, I).rawRecords.length > 0 && this.resetRecords(), t(this, z)), "getValidData"));
|
|
1583
|
-
d(this, vt, /* @__PURE__ */ h((
|
|
1584
|
-
var
|
|
1585
|
-
if (!
|
|
1586
|
-
const e = !Array.isArray(
|
|
1595
|
+
d(this, vt, /* @__PURE__ */ h((s) => {
|
|
1596
|
+
var r;
|
|
1597
|
+
if (!s) return s;
|
|
1598
|
+
const e = !Array.isArray(s), n = e ? [s] : s, o = typeof ((r = t(this, D).fields) == null ? void 0 : r.get) == "function" ? t(this, D).fields.get() : [], i = n.filter((a) => !a.__ng.deleted).map((a) => {
|
|
1587
1599
|
const c = {};
|
|
1588
|
-
return
|
|
1589
|
-
c[l] = a.v ? a.v[
|
|
1600
|
+
return o.forEach((l, g) => {
|
|
1601
|
+
c[l] = a.v ? a.v[g] : a[l];
|
|
1590
1602
|
}), c.__ng = a.__ng, c;
|
|
1591
1603
|
});
|
|
1592
|
-
return e ?
|
|
1604
|
+
return e ? i[0] : i;
|
|
1593
1605
|
}, "#conv"));
|
|
1594
1606
|
q(this, "count", /* @__PURE__ */ h(() => this.getValidData().length, "count"));
|
|
1595
|
-
|
|
1607
|
+
y(this, D, s), y(this, I, e), t(this, me).call(this);
|
|
1596
1608
|
}
|
|
1597
1609
|
get source() {
|
|
1598
1610
|
return t(this, vt).call(this, t(this, I).rawRecords);
|
|
1599
1611
|
}
|
|
1600
|
-
set source(
|
|
1601
|
-
this.clear(), this.add(
|
|
1612
|
+
set source(s) {
|
|
1613
|
+
this.clear(), this.add(s, !1);
|
|
1602
1614
|
}
|
|
1603
1615
|
get nextId() {
|
|
1604
1616
|
return ++ms(this, ye)._;
|
|
@@ -1624,22 +1636,22 @@ q(P, "ROW_STATE", {
|
|
|
1624
1636
|
let _e = P;
|
|
1625
1637
|
var ut;
|
|
1626
1638
|
const ls = class ls {
|
|
1627
|
-
constructor(
|
|
1639
|
+
constructor(s) {
|
|
1628
1640
|
d(this, ut);
|
|
1629
|
-
|
|
1641
|
+
y(this, ut, s), this.row = new Ne(this), this.data = new _e(t(this, ut), this), this.rawRecords = [], this.viewRecords = [], this.delRecords = [], this.pageCnt = 25, this.viewRecords.reset = () => {
|
|
1630
1642
|
var e;
|
|
1631
1643
|
(e = t(this, ut).view) != null && e.redraw && t(this, ut).view.redraw();
|
|
1632
1644
|
}, this.setDataSource = (e) => {
|
|
1633
1645
|
this.data && this.data.reset(), this.rawRecords = [], this.viewRecords = [], this.delRecords = [], this.data.set(e || []);
|
|
1634
1646
|
}, this.getRowState = (e) => {
|
|
1635
|
-
var
|
|
1636
|
-
const
|
|
1637
|
-
if (!(
|
|
1638
|
-
return (
|
|
1647
|
+
var o, i;
|
|
1648
|
+
const n = parseInt(e, 10);
|
|
1649
|
+
if (!(n >= this.data.count()))
|
|
1650
|
+
return (i = (o = this.data.getValidData()[n]) == null ? void 0 : o.__ng) == null ? void 0 : i.rowState;
|
|
1639
1651
|
}, this.getRowPosition = () => this.row.at, this.setRowPosition = (e) => {
|
|
1640
1652
|
this.row.at = e;
|
|
1641
|
-
}, 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,
|
|
1642
|
-
e = parseInt(e, 10), this.data.setValue(e,
|
|
1653
|
+
}, 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, n) => this.data.get(e, n), this.setColumn = (e, n, o) => {
|
|
1654
|
+
e = parseInt(e, 10), this.data.setValue(e, n, o);
|
|
1643
1655
|
}, this.setDataSource([]);
|
|
1644
1656
|
}
|
|
1645
1657
|
};
|
|
@@ -1648,45 +1660,45 @@ let Oe = ls;
|
|
|
1648
1660
|
var St, H, Vt, ve;
|
|
1649
1661
|
const cs = class cs {
|
|
1650
1662
|
// 🎯 이제 { name: string, type: string } 객체들의 배열로 관리합니다.
|
|
1651
|
-
constructor(
|
|
1663
|
+
constructor(s) {
|
|
1652
1664
|
d(this, St);
|
|
1653
1665
|
d(this, H, []);
|
|
1654
|
-
q(this, "add", /* @__PURE__ */ h((
|
|
1655
|
-
|
|
1656
|
-
t(this, H).some((
|
|
1666
|
+
q(this, "add", /* @__PURE__ */ h((s, e = "string") => {
|
|
1667
|
+
s.forEach((n) => {
|
|
1668
|
+
t(this, H).some((o) => o.name === n) || t(this, H).push({ name: n, type: e });
|
|
1657
1669
|
}), t(this, Vt).call(this);
|
|
1658
1670
|
}, "add"));
|
|
1659
1671
|
d(this, Vt, /* @__PURE__ */ h(() => {
|
|
1660
|
-
const
|
|
1672
|
+
const s = /* @__PURE__ */ new Map();
|
|
1661
1673
|
t(this, H).forEach((e) => {
|
|
1662
|
-
|
|
1663
|
-
}),
|
|
1674
|
+
s.set(e.name, e.type);
|
|
1675
|
+
}), y(this, H, Array.from(s, ([e, n]) => ({ name: e, type: n }))), y(this, H, t(this, H).filter((e) => e.name !== "" && e.name !== "__ng")), t(this, H).sort((e, n) => e.name.length < n.name.length ? 1 : -1);
|
|
1664
1676
|
}, "#adjust"));
|
|
1665
1677
|
d(this, ve, /* @__PURE__ */ h(() => {
|
|
1666
|
-
|
|
1667
|
-
const
|
|
1668
|
-
if (!(!
|
|
1669
|
-
for (const e of
|
|
1670
|
-
S.log(e), $("[data-bind]", e).each((
|
|
1671
|
-
const
|
|
1672
|
-
|
|
1673
|
-
}), ["data-expr", "background-color", "color", "tooltip", "visible", "readonly", "enable-button", "enable-check", "class-expr", "icon-color", "icon-src"].forEach((
|
|
1674
|
-
$(`[${
|
|
1675
|
-
var
|
|
1676
|
-
if (
|
|
1677
|
-
const a =
|
|
1678
|
+
y(this, H, []), S.log(t(this, St).querySelectorAll("table"));
|
|
1679
|
+
const s = Array.from(t(this, St).querySelectorAll("table"));
|
|
1680
|
+
if (!(!s || s.length === 0)) {
|
|
1681
|
+
for (const e of s)
|
|
1682
|
+
S.log(e), $("[data-bind]", e).each((n, o) => {
|
|
1683
|
+
const i = o.dataset.bind, r = o.getAttribute("data-type") || "string";
|
|
1684
|
+
i && t(this, H).push({ name: i, type: r });
|
|
1685
|
+
}), ["data-expr", "background-color", "color", "tooltip", "visible", "readonly", "enable-button", "enable-check", "class-expr", "icon-color", "icon-src"].forEach((n) => {
|
|
1686
|
+
$(`[${n}]`, e).each((o, i) => {
|
|
1687
|
+
var r = i.getAttribute(n);
|
|
1688
|
+
if (r.indexOf("data.") < 0) {
|
|
1689
|
+
const a = r.search(/[(]/g);
|
|
1678
1690
|
if (a > 0)
|
|
1679
1691
|
try {
|
|
1680
|
-
|
|
1692
|
+
r = String(window[r.substring(0, a).trim()]);
|
|
1681
1693
|
} catch {
|
|
1682
|
-
|
|
1694
|
+
r = "";
|
|
1683
1695
|
}
|
|
1684
1696
|
}
|
|
1685
|
-
|
|
1697
|
+
r.split("data.").forEach((a) => {
|
|
1686
1698
|
if (a.trim() != "") {
|
|
1687
1699
|
const c = a.search(/[^_A-Za-z0-9]/g);
|
|
1688
1700
|
let l = "";
|
|
1689
|
-
c >= 0 ? l = a.substring(0, c) :
|
|
1701
|
+
c >= 0 ? l = a.substring(0, c) : r.startsWith("data.") && (l = a.replace("data.", "")), l && t(this, H).push({ name: l, type: "string" });
|
|
1690
1702
|
}
|
|
1691
1703
|
});
|
|
1692
1704
|
});
|
|
@@ -1694,44 +1706,44 @@ const cs = class cs {
|
|
|
1694
1706
|
t(this, Vt).call(this);
|
|
1695
1707
|
}
|
|
1696
1708
|
}, "#init"));
|
|
1697
|
-
|
|
1709
|
+
y(this, St, s), t(this, ve).call(this);
|
|
1698
1710
|
}
|
|
1699
1711
|
// 🎯 기존에 필드 이름만 쓰던 곳들과의 호환을 위해 이름 배열만 리턴하는 메서드 유지
|
|
1700
1712
|
get() {
|
|
1701
|
-
return t(this, H).map((
|
|
1713
|
+
return t(this, H).map((s) => s.name);
|
|
1702
1714
|
}
|
|
1703
1715
|
// 🎯 내부 객체 통째로 얻기
|
|
1704
1716
|
getFields() {
|
|
1705
1717
|
return t(this, H);
|
|
1706
1718
|
}
|
|
1707
1719
|
// 🎯 특정 필드의 데이터 타입 조회
|
|
1708
|
-
getType(
|
|
1709
|
-
const e = t(this, H).find((
|
|
1720
|
+
getType(s) {
|
|
1721
|
+
const e = t(this, H).find((n) => n.name === s);
|
|
1710
1722
|
return e ? e.type : "string";
|
|
1711
1723
|
}
|
|
1712
|
-
indexOf(
|
|
1713
|
-
return t(this, H).findIndex((e) => e.name ===
|
|
1724
|
+
indexOf(s) {
|
|
1725
|
+
return t(this, H).findIndex((e) => e.name === s);
|
|
1714
1726
|
}
|
|
1715
|
-
includes(
|
|
1716
|
-
return t(this, H).some((e) => e.name ===
|
|
1727
|
+
includes(s) {
|
|
1728
|
+
return t(this, H).some((e) => e.name === s);
|
|
1717
1729
|
}
|
|
1718
1730
|
};
|
|
1719
1731
|
St = new WeakMap(), H = new WeakMap(), Vt = new WeakMap(), ve = new WeakMap(), h(cs, "ngFields");
|
|
1720
1732
|
let De = cs;
|
|
1721
|
-
var gt, Se,
|
|
1733
|
+
var gt, Se, Ae;
|
|
1722
1734
|
const hs = class hs extends HTMLElement {
|
|
1723
1735
|
constructor() {
|
|
1724
1736
|
super();
|
|
1725
1737
|
//#created = false;
|
|
1726
1738
|
d(this, gt);
|
|
1727
1739
|
d(this, Se);
|
|
1728
|
-
d(this,
|
|
1729
|
-
this.fields = new De(this),
|
|
1740
|
+
d(this, Ae, /* @__PURE__ */ h(() => {
|
|
1741
|
+
this.fields = new De(this), y(this, Se, new $e(this)), S.log("NineTable connected."), this.dispatchEvent(new CustomEvent("load", { bubbles: !0, detail: { target: this } }));
|
|
1730
1742
|
}, "#init"));
|
|
1731
|
-
this.attachShadow({ mode: "open" }),
|
|
1743
|
+
this.attachShadow({ mode: "open" }), y(this, gt, new Oe(this));
|
|
1732
1744
|
}
|
|
1733
1745
|
connectedCallback() {
|
|
1734
|
-
t(this,
|
|
1746
|
+
t(this, Ae).call(this);
|
|
1735
1747
|
}
|
|
1736
1748
|
disconnectedCallback() {
|
|
1737
1749
|
S.log("NineTable disconnected.");
|
|
@@ -1749,7 +1761,7 @@ const hs = class hs extends HTMLElement {
|
|
|
1749
1761
|
return t(this, gt);
|
|
1750
1762
|
}
|
|
1751
1763
|
};
|
|
1752
|
-
gt = new WeakMap(), Se = new WeakMap(),
|
|
1764
|
+
gt = new WeakMap(), Se = new WeakMap(), Ae = new WeakMap(), h(hs, "NineTable");
|
|
1753
1765
|
let We = hs;
|
|
1754
1766
|
customElements.get("nine-table") || customElements.define("nine-table", We);
|
|
1755
1767
|
const Ct = class Ct extends HTMLElement {
|
|
@@ -1765,72 +1777,72 @@ const Ct = class Ct extends HTMLElement {
|
|
|
1765
1777
|
};
|
|
1766
1778
|
h(Ct, "BasicCellElement"), q(Ct, "_styleCache", /* @__PURE__ */ new Map()), q(Ct, "_customStyleCache", /* @__PURE__ */ new Map());
|
|
1767
1779
|
let ze = Ct;
|
|
1768
|
-
var L, Ut,
|
|
1780
|
+
var L, Ut, v, Ue, Xe, Ke, Ge, Ze;
|
|
1769
1781
|
const ds = class ds extends ze {
|
|
1770
1782
|
constructor() {
|
|
1771
1783
|
super();
|
|
1772
1784
|
d(this, L);
|
|
1773
1785
|
d(this, Ut);
|
|
1774
|
-
d(this,
|
|
1786
|
+
d(this, v);
|
|
1775
1787
|
d(this, Ue);
|
|
1776
1788
|
d(this, Xe);
|
|
1777
|
-
d(this, Ge);
|
|
1778
1789
|
d(this, Ke);
|
|
1790
|
+
d(this, Ge);
|
|
1779
1791
|
q(this, "getDisplayText", /* @__PURE__ */ h((e) => {
|
|
1780
|
-
if (t(this,
|
|
1781
|
-
if (t(this,
|
|
1782
|
-
const
|
|
1783
|
-
if (!
|
|
1784
|
-
if (ninegrid.isNull(t(this,
|
|
1785
|
-
if (!ninegrid.isNull(t(this,
|
|
1786
|
-
return
|
|
1792
|
+
if (t(this, v))
|
|
1793
|
+
if (t(this, v).closest("tbody")) {
|
|
1794
|
+
const n = t(this, v).closest("tr").data, o = parseInt(t(this, v).dataset.row);
|
|
1795
|
+
if (!n) return "";
|
|
1796
|
+
if (ninegrid.isNull(t(this, v).dataset.expr)) {
|
|
1797
|
+
if (!ninegrid.isNull(t(this, v).dataset.bind))
|
|
1798
|
+
return n[t(this, v).dataset.bind] || ninegrid.nvl(e, "");
|
|
1787
1799
|
} else try {
|
|
1788
|
-
return this.getExprValue(t(this,
|
|
1800
|
+
return this.getExprValue(t(this, v).dataset.expr, n, o, t(this, v));
|
|
1789
1801
|
} catch {
|
|
1790
|
-
console.error(t(this,
|
|
1802
|
+
console.error(t(this, v).dataset.expr, n, t(this, v).dataset.row);
|
|
1791
1803
|
}
|
|
1792
1804
|
return ninegrid.nvl(e, "");
|
|
1793
1805
|
} else
|
|
1794
1806
|
try {
|
|
1795
|
-
return t(this, L).exprFunction(t(this,
|
|
1807
|
+
return t(this, L).exprFunction(t(this, v).dataset.expr).call(this, null, -1, t(this, L).data);
|
|
1796
1808
|
} catch {
|
|
1797
1809
|
}
|
|
1798
1810
|
}, "getDisplayText"));
|
|
1799
1811
|
d(this, Ze, /* @__PURE__ */ h(() => {
|
|
1800
|
-
if (!(!t(this, L) || !t(this, L).template || !t(this,
|
|
1801
|
-
var e = ninegrid.j.querySelectorAll(t(this,
|
|
1812
|
+
if (!(!t(this, L) || !t(this, L).template || !t(this, v).closest("tbody.bindable"))) {
|
|
1813
|
+
var e = ninegrid.j.querySelectorAll(t(this, v)).attr("suppress");
|
|
1802
1814
|
if (e && (e = parseInt(e)), e && !isNaN(e)) {
|
|
1803
|
-
var
|
|
1804
|
-
$("th,td",
|
|
1815
|
+
var n = t(this, v).closest("tr"), o = [];
|
|
1816
|
+
$("th,td", n).each((m, T) => {
|
|
1805
1817
|
var A = ninegrid.j.querySelectorAll(T).attr("suppress");
|
|
1806
|
-
A && T.dataset.row && (A = parseInt(A), !isNaN(A) && A <= e &&
|
|
1807
|
-
}),
|
|
1808
|
-
var
|
|
1809
|
-
if (parseInt(
|
|
1810
|
-
for (var
|
|
1811
|
-
if (
|
|
1812
|
-
var a = parseInt(t(this,
|
|
1813
|
-
t(this,
|
|
1814
|
-
var f = t(this, L).body.querySelector(`tbody.bindable [suppress="${
|
|
1815
|
-
if (b !=
|
|
1816
|
-
|
|
1818
|
+
A && T.dataset.row && (A = parseInt(A), !isNaN(A) && A <= e && o.push(A));
|
|
1819
|
+
}), o.sort();
|
|
1820
|
+
var i = !1;
|
|
1821
|
+
if (parseInt(n.sectionRowIndex / t(this, L).template.length) > 0)
|
|
1822
|
+
for (var r of o) {
|
|
1823
|
+
if (r > e) break;
|
|
1824
|
+
var a = parseInt(t(this, v).dataset.row), c = a - 1, l = t(this, v).closest("tr").data, g = t(this, L).data.get(c);
|
|
1825
|
+
t(this, v).dataset.matrixRow;
|
|
1826
|
+
var f = t(this, L).body.querySelector(`tbody.bindable [suppress="${r}"][data-matrix-row="${t(this, v).dataset.matrixRow}"]`), b = f.dataset.expr ? this.getExprValue(f.dataset.expr, l, a) : l[f.dataset.bind], u = f.dataset.expr ? this.getExprValue(f.dataset.expr, g, c) : g[f.dataset.bind];
|
|
1827
|
+
if (b != u) {
|
|
1828
|
+
i = !0;
|
|
1817
1829
|
break;
|
|
1818
1830
|
}
|
|
1819
1831
|
}
|
|
1820
1832
|
else
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
var
|
|
1824
|
-
$(
|
|
1833
|
+
i = !0;
|
|
1834
|
+
i ? ninegrid.j.querySelectorAll(t(this, v)).removeClass("suppress") : ninegrid.j.querySelectorAll(t(this, v)).addClass("suppress"), ninegrid.j.querySelectorAll(t(this, v)).hasClass("hidden") || (i ? ninegrid.j.querySelectorAll(t(this, v)).removeClass("hidden") : ninegrid.j.querySelectorAll(t(this, v)).addClass("hidden"));
|
|
1835
|
+
var p = parseInt(t(this, v).dataset.matrixRow), x = p - 1, w = t(this, L).body.querySelector(`tbody.bindable [data-col="${t(this, v).dataset.col}"][data-matrix-row="${x}"]`);
|
|
1836
|
+
$(w).hasClass("suppress") && !ninegrid.j.querySelectorAll(t(this, v)).hasClass("suppress") ? ninegrid.j.querySelectorAll(w).removeClass("last-none-suppress").addClass("last-suppress") : !$(w).hasClass("suppress") && ninegrid.j.querySelectorAll(t(this, v)).hasClass("suppress") ? ninegrid.j.querySelectorAll(w).removeClass("last-suppress").addClass("last-none-suppress") : ninegrid.j.querySelectorAll(w).removeClass("last-none-suppress").removeClass("last-suppress");
|
|
1825
1837
|
}
|
|
1826
1838
|
}
|
|
1827
1839
|
}, "#resetSuppress"));
|
|
1828
|
-
q(this, "getExprValue", /* @__PURE__ */ h((e,
|
|
1840
|
+
q(this, "getExprValue", /* @__PURE__ */ h((e, n, o, i) => {
|
|
1829
1841
|
if (typeof e < "u")
|
|
1830
1842
|
try {
|
|
1831
|
-
|
|
1832
|
-
const
|
|
1833
|
-
return t(this, L)[
|
|
1843
|
+
o = parseInt(o);
|
|
1844
|
+
const r = e.replace("()", "");
|
|
1845
|
+
return t(this, L)[r] ? t(this, L)[r].call(this, n, o, t(this, v)) : t(this, L).exprFunction(e).call(this, n, o, t(this, L).data);
|
|
1834
1846
|
} catch {
|
|
1835
1847
|
return ["NG-COMBO"].includes(this.tagName) ? "" : e;
|
|
1836
1848
|
}
|
|
@@ -1839,29 +1851,29 @@ const ds = class ds extends ze {
|
|
|
1839
1851
|
}, "getExprValue"));
|
|
1840
1852
|
}
|
|
1841
1853
|
connectedCallback() {
|
|
1842
|
-
super.connectedCallback(),
|
|
1854
|
+
super.connectedCallback(), y(this, L, this.getRootNode().host), y(this, v, this.closest("th,td")), y(this, Ut, t(this, v).closest("tr"));
|
|
1843
1855
|
}
|
|
1844
1856
|
get value() {
|
|
1845
|
-
var e = !t(this, L) || !t(this, L).dataManager || !t(this,
|
|
1857
|
+
var e = !t(this, L) || !t(this, L).dataManager || !t(this, v) || !t(this, v).dataset || !t(this, v).dataset.row || !t(this, v).dataset.bind ? "" : t(this, v).closest("tr").data[t(this, v).dataset.bind];
|
|
1846
1858
|
return e ?? "";
|
|
1847
1859
|
}
|
|
1848
1860
|
set value(e) {
|
|
1849
|
-
var
|
|
1850
|
-
const
|
|
1851
|
-
|
|
1861
|
+
var n = parseInt(t(this, v).dataset.row);
|
|
1862
|
+
const o = this.getAttribute("update-row-state") != "false";
|
|
1863
|
+
n < 0 ? t(this, L).data.setValueNF(parseInt(t(this, v).dataset.index), t(this, v).dataset.bind, e, o) : t(this, L).data.setValue(n, t(this, v).dataset.bind, e, o);
|
|
1852
1864
|
}
|
|
1853
1865
|
get row() {
|
|
1854
|
-
return parseInt(t(this,
|
|
1866
|
+
return parseInt(t(this, v).dataset.row);
|
|
1855
1867
|
}
|
|
1856
1868
|
get data() {
|
|
1857
|
-
return t(this,
|
|
1869
|
+
return t(this, v).closest("tr").data;
|
|
1858
1870
|
}
|
|
1859
1871
|
refresh() {
|
|
1860
|
-
const e = t(this,
|
|
1861
|
-
return parseInt(t(this,
|
|
1872
|
+
const e = t(this, v).dataset.bind;
|
|
1873
|
+
return parseInt(t(this, v).dataset.row), t(this, Ut).data[e];
|
|
1862
1874
|
}
|
|
1863
1875
|
};
|
|
1864
|
-
L = new WeakMap(), Ut = new WeakMap(),
|
|
1876
|
+
L = new WeakMap(), Ut = new WeakMap(), v = new WeakMap(), Ue = new WeakMap(), Xe = new WeakMap(), Ke = new WeakMap(), Ge = new WeakMap(), Ze = new WeakMap(), h(ds, "CellElement");
|
|
1865
1877
|
let Be = ds;
|
|
1866
1878
|
const fs = class fs extends Be {
|
|
1867
1879
|
constructor() {
|
|
@@ -1876,15 +1888,15 @@ const fs = class fs extends Be {
|
|
|
1876
1888
|
};
|
|
1877
1889
|
h(fs, "EditableCellElement");
|
|
1878
1890
|
let Pe = fs;
|
|
1879
|
-
var Xt, bt,
|
|
1891
|
+
var Xt, bt, At, Rt, Re, J, Je;
|
|
1880
1892
|
const us = class us extends Pe {
|
|
1881
1893
|
constructor() {
|
|
1882
1894
|
super();
|
|
1883
1895
|
d(this, Xt);
|
|
1884
1896
|
d(this, bt);
|
|
1885
|
-
d(this, Rt);
|
|
1886
1897
|
d(this, At);
|
|
1887
|
-
d(this,
|
|
1898
|
+
d(this, Rt);
|
|
1899
|
+
d(this, Re);
|
|
1888
1900
|
d(this, J);
|
|
1889
1901
|
q(this, "refresh", /* @__PURE__ */ h(() => {
|
|
1890
1902
|
const e = super.refresh();
|
|
@@ -1923,32 +1935,32 @@ const us = class us extends Pe {
|
|
|
1923
1935
|
d(this, Je, /* @__PURE__ */ h((e) => {
|
|
1924
1936
|
if (!["Escape", "Enter", "Tab", "Home", "End", "ArrowLeft", "ArrowRight", "PageUp", "PageDown", "Backspace", "Delete"].includes(e.code)) {
|
|
1925
1937
|
if (t(this, bt) == "number") {
|
|
1926
|
-
let
|
|
1927
|
-
if (t(this, J) && Number(t(this, J)) > 0 &&
|
|
1928
|
-
var
|
|
1929
|
-
if (
|
|
1930
|
-
var
|
|
1931
|
-
|
|
1938
|
+
let i = [];
|
|
1939
|
+
if (t(this, J) && Number(t(this, J)) > 0 && i.push("."), t(this, Rt) && Number(t(this, Rt)) >= 0 && i.push("-"), !(e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105) && !i.includes(e.key) && e.preventDefault(), t(this, J) && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105) && e.target.selectionStart == e.target.selectionEnd) {
|
|
1940
|
+
var n = e.target.value, o = n.indexOf(".");
|
|
1941
|
+
if (o >= 0) {
|
|
1942
|
+
var n = n.substr(o + 1, n.length);
|
|
1943
|
+
n.length >= Number(t(this, J)) && e.preventDefault();
|
|
1932
1944
|
}
|
|
1933
1945
|
}
|
|
1934
1946
|
}
|
|
1935
|
-
t(this,
|
|
1947
|
+
t(this, At) && ninegrid.getByteLength(e.target.value) >= Number(t(this, At)) && e.target.selectionStart == e.target.selectionEnd && e.preventDefault();
|
|
1936
1948
|
}
|
|
1937
1949
|
}, "#onKeyDown"));
|
|
1938
|
-
if (this.applyBaseStyle(),
|
|
1950
|
+
if (this.applyBaseStyle(), y(this, bt, this.getAttribute("type") || "text"), y(this, At, this.getAttribute("maxbyte")), y(this, Rt, this.getAttribute("min")), y(this, Re, this.getAttribute("max")), y(this, J, this.getAttribute("scale")), !["text", "number"].includes(t(this, bt))) throw `invalid type : ${t(this, bt)}`;
|
|
1939
1951
|
}
|
|
1940
1952
|
connectedCallback() {
|
|
1941
|
-
for (var e = [],
|
|
1942
|
-
["type", "maxlength", "maxbyte", "min", "max", "step", "scale", "text-align"].includes(this.attributes[
|
|
1953
|
+
for (var e = [], n = 0; n < this.attributes.length; n++)
|
|
1954
|
+
["type", "maxlength", "maxbyte", "min", "max", "step", "scale", "text-align"].includes(this.attributes[n].name) && e.push(`${this.attributes[n].name}="${this.attributes[n].value}"`);
|
|
1943
1955
|
this.innerHTML = `
|
|
1944
1956
|
<input type="text"
|
|
1945
1957
|
${e.join(" ")}
|
|
1946
1958
|
ondragstart="return false;"
|
|
1947
1959
|
>
|
|
1948
|
-
`, super.connectedCallback(),
|
|
1960
|
+
`, super.connectedCallback(), y(this, Xt, this.querySelector("input"));
|
|
1949
1961
|
}
|
|
1950
1962
|
};
|
|
1951
|
-
Xt = new WeakMap(), bt = new WeakMap(),
|
|
1963
|
+
Xt = new WeakMap(), bt = new WeakMap(), At = new WeakMap(), Rt = new WeakMap(), Re = new WeakMap(), J = new WeakMap(), Je = new WeakMap(), h(us, "CellInputText");
|
|
1952
1964
|
let Fe = us;
|
|
1953
1965
|
customElements.get("cell-input-text");
|
|
1954
1966
|
customElements.get("cell-input") || customElements.define("cell-input", Fe);
|