@owp/core 2.5.18 โ 2.5.20
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/components/OwpPageContent/OwpPageContent.js +14 -12
- package/dist/components/OwpPageContent/OwpPageContent.js.map +1 -1
- package/dist/components/OwpPageTitle/OwpPageTitle.js +37 -35
- package/dist/components/OwpPageTitle/OwpPageTitle.js.map +1 -1
- package/dist/components/OwpPicker/OwpDatePicker.js +339 -102
- package/dist/components/OwpPicker/OwpDatePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpDateRangePicker.js +89 -85
- package/dist/components/OwpPicker/OwpDateRangePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpTimePicker.js +494 -236
- package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
- package/dist/components/OwpPicker/constants/index.js +6 -5
- package/dist/components/OwpPicker/constants/index.js.map +1 -1
- package/dist/components/OwpPicker/internal/DatePickerInput.js +71 -47
- package/dist/components/OwpPicker/internal/DatePickerInput.js.map +1 -1
- package/dist/components/OwpSection/OwpSection.js +84 -62
- package/dist/components/OwpSection/OwpSection.js.map +1 -1
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +42 -40
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js +307 -270
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +267 -276
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +262 -182
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
- package/dist/constants/gridTheme.js +7 -6
- package/dist/constants/gridTheme.js.map +1 -1
- package/dist/constants/treeGrid.js +32 -31
- package/dist/constants/treeGrid.js.map +1 -1
- package/dist/constants.js +28 -27
- package/dist/features/themePreview/configs/grid.js +3 -1
- package/dist/features/themePreview/configs/grid.js.map +1 -1
- package/dist/features/themePreview/utils/themePreviewDefinitions.js +10 -0
- package/dist/features/themePreview/utils/themePreviewDefinitions.js.map +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
- package/dist/owp-app.css +1 -1
- package/dist/types/components/OwpPageContent/OwpPageContent.d.ts +3 -1
- package/dist/types/components/OwpPageTitle/OwpPageTitle.d.ts +3 -1
- package/dist/types/components/OwpPicker/constants/index.d.ts +1 -0
- package/dist/types/components/OwpPicker/internal/DatePickerInput.d.ts +7 -0
- package/dist/types/components/OwpSection/OwpSection.d.ts +3 -1
- package/dist/types/components/OwpTreeGrid/internal/treeGridTheme.d.ts +1 -1
- package/dist/types/constants/gridTheme.d.ts +2 -0
- package/dist/types/constants/treeGrid.d.ts +2 -1
- package/dist/types/features/themePreview/configs/grid.d.ts +2 -0
- package/dist/types/features/themePreview/configs/settings.d.ts +2 -0
- package/dist/types/types/OwpGridThemeTypes.d.ts +1 -0
- package/dist/types/utils/treeGridUtil.d.ts +15 -3
- package/dist/utils/treeGridUtil.js +193 -147
- package/dist/utils/treeGridUtil.js.map +1 -1
- package/dist/utils.js +69 -67
- package/package.json +1 -1
|
@@ -1,217 +1,263 @@
|
|
|
1
|
-
var
|
|
2
|
-
var l = (
|
|
3
|
-
import {
|
|
4
|
-
import { TREEGRID_INPUT_CELL_COLOR as
|
|
5
|
-
import { parseTreeGridXmlToJson as
|
|
1
|
+
var w = Object.defineProperty;
|
|
2
|
+
var l = (e, t) => w(e, "name", { value: t, configurable: !0 });
|
|
3
|
+
import { TREEGRID_CELL_CHANGED_CLASS as H, TREEGRID_CELL_HIGHLIGHT_COLOR as L } from "../constants/treeGrid.js";
|
|
4
|
+
import { TREEGRID_INPUT_CELL_COLOR as ve, TREEGRID_WARNING_CELL_COLOR as Ne } from "../constants/treeGrid.js";
|
|
5
|
+
import { parseTreeGridXmlToJson as $ } from "../components/OwpTreeGrid/internal/treeGridLayout.js";
|
|
6
6
|
import { emitTreeGridBodyRowsChanged as C } from "./treeGridBodyRowsEvent.js";
|
|
7
|
-
import { isArray as
|
|
8
|
-
import { lowerCase as
|
|
9
|
-
import { isPlainObject as
|
|
10
|
-
import { get as
|
|
11
|
-
import { omit as
|
|
12
|
-
import { isEmpty as
|
|
13
|
-
import { without as
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
}, "markTreeGridRowAddedById"),
|
|
17
|
-
const
|
|
18
|
-
return !!
|
|
19
|
-
}, "isTreeGridRowAddedById"),
|
|
20
|
-
if (!
|
|
7
|
+
import { isArray as y } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isArray.js";
|
|
8
|
+
import { lowerCase as x } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/string/lowerCase.js";
|
|
9
|
+
import { isPlainObject as j } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/predicate/isPlainObject.js";
|
|
10
|
+
import { get as F } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/get.js";
|
|
11
|
+
import { omit as K } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/omit.js";
|
|
12
|
+
import { isEmpty as D } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js";
|
|
13
|
+
import { without as v } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/without.js";
|
|
14
|
+
const N = ["Added", "Changed"], P = ["OWP", "IPX"], k = /^H{1,2}(?::m{1,2})?(?::s{1,2})?$/, _ = "__owpAddedByAddTreeGridRowById", m = "__owpAddedRowHighlightColumns", h = "__owpAddedRowInitialValueKeys", A = "__owpAddedRowBaselineValues", u = "__owpCellStyleBaselineValues", I = /* @__PURE__ */ l((e) => y(e) ? e.filter((t) => typeof t == "string" && t !== "") : [], "normalizeTreeGridStringValues"), E = I, z = /* @__PURE__ */ l((e) => {
|
|
15
|
+
e && (e[_] = 1);
|
|
16
|
+
}, "markTreeGridRowAddedById"), Ee = /* @__PURE__ */ l((e) => {
|
|
17
|
+
const t = e == null ? void 0 : e[_];
|
|
18
|
+
return !!e && t !== 0 && t !== !1 && t !== void 0;
|
|
19
|
+
}, "isTreeGridRowAddedById"), ye = /* @__PURE__ */ l((e, t) => {
|
|
20
|
+
if (!e || !t)
|
|
21
21
|
return;
|
|
22
|
-
const r =
|
|
22
|
+
const r = e, n = E(
|
|
23
23
|
r[m]
|
|
24
24
|
);
|
|
25
|
-
n.includes(
|
|
26
|
-
}, "appendTreeGridAddedRowHighlightColumn"),
|
|
27
|
-
if (!
|
|
25
|
+
n.includes(t) || (r[m] = [...n, t]);
|
|
26
|
+
}, "appendTreeGridAddedRowHighlightColumn"), De = /* @__PURE__ */ l((e, t) => {
|
|
27
|
+
if (!e || !t)
|
|
28
28
|
return;
|
|
29
|
-
const r =
|
|
29
|
+
const r = e, s = E(
|
|
30
30
|
r[m]
|
|
31
|
-
).filter((c) => c !==
|
|
31
|
+
).filter((c) => c !== t);
|
|
32
32
|
if (s.length) {
|
|
33
33
|
r[m] = s;
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
36
|
delete r[m];
|
|
37
|
-
}, "removeTreeGridAddedRowHighlightColumn"),
|
|
38
|
-
|
|
39
|
-
), "getTreeGridAddedRowHighlightColumns"),
|
|
40
|
-
var c,
|
|
41
|
-
const n = ((c =
|
|
37
|
+
}, "removeTreeGridAddedRowHighlightColumn"), _e = /* @__PURE__ */ l((e) => E(
|
|
38
|
+
e == null ? void 0 : e[m]
|
|
39
|
+
), "getTreeGridAddedRowHighlightColumns"), W = /* @__PURE__ */ l((e, t, r) => {
|
|
40
|
+
var c, o, a, i, R;
|
|
41
|
+
const n = ((c = e.GetType) == null ? void 0 : c.call(e, t, r)) || ((a = (o = e.Cols) == null ? void 0 : o[r]) == null ? void 0 : a.Type) || "", s = ((i = e.GetValue) == null ? void 0 : i.call(e, t, r)) ?? t[r];
|
|
42
42
|
if (n === "Enum" || n === "Select")
|
|
43
43
|
return s == null ? "" : `${s}`;
|
|
44
44
|
try {
|
|
45
|
-
const
|
|
46
|
-
if (
|
|
47
|
-
return `${
|
|
45
|
+
const G = (R = e.GetString) == null ? void 0 : R.call(e, t, r);
|
|
46
|
+
if (G != null)
|
|
47
|
+
return `${G}`;
|
|
48
48
|
} catch {
|
|
49
49
|
}
|
|
50
50
|
return s == null ? "" : `${s}`;
|
|
51
|
-
}, "getTreeGridCellComparableValue"),
|
|
51
|
+
}, "getTreeGridCellComparableValue"), O = /* @__PURE__ */ l((e, t) => {
|
|
52
52
|
const r = Object.fromEntries(
|
|
53
|
-
Object.keys(
|
|
53
|
+
Object.keys(e.Cols ?? {}).map((n) => [
|
|
54
54
|
n,
|
|
55
|
-
|
|
55
|
+
W(e, t, n)
|
|
56
56
|
])
|
|
57
57
|
);
|
|
58
|
-
|
|
59
|
-
}, "markTreeGridAddedRowBaselineValues"),
|
|
58
|
+
t[A] = r;
|
|
59
|
+
}, "markTreeGridAddedRowBaselineValues"), he = /* @__PURE__ */ l((e, t) => {
|
|
60
60
|
var r;
|
|
61
|
-
return (r =
|
|
62
|
-
}, "getTreeGridAddedRowBaselineValue"),
|
|
61
|
+
return (r = e == null ? void 0 : e[A]) == null ? void 0 : r[t];
|
|
62
|
+
}, "getTreeGridAddedRowBaselineValue"), U = /* @__PURE__ */ l((e, t, r) => {
|
|
63
63
|
var s;
|
|
64
|
-
const n =
|
|
65
|
-
n[
|
|
66
|
-
className:
|
|
67
|
-
color:
|
|
64
|
+
const n = t;
|
|
65
|
+
n[u] ?? (n[u] = {}), !((s = n[u]) != null && s[r]) && (n[u][r] = {
|
|
66
|
+
className: e.GetAttribute(t, r, "Class"),
|
|
67
|
+
color: e.GetAttribute(t, r, "Color")
|
|
68
68
|
});
|
|
69
|
-
}, "preserveTreeGridCellStyleBaseline"),
|
|
69
|
+
}, "preserveTreeGridCellStyleBaseline"), X = /* @__PURE__ */ l((e, t) => {
|
|
70
70
|
var r;
|
|
71
|
-
return (r =
|
|
72
|
-
}, "getTreeGridCellStyleBaseline"),
|
|
73
|
-
const { exportTreeGridExcel:
|
|
74
|
-
return
|
|
75
|
-
}, "loadExportTreeGridExcel"),
|
|
76
|
-
|
|
77
|
-
|
|
71
|
+
return (r = e[u]) == null ? void 0 : r[t];
|
|
72
|
+
}, "getTreeGridCellStyleBaseline"), Y = /* @__PURE__ */ l(async () => {
|
|
73
|
+
const { exportTreeGridExcel: e } = await import("./treeGridExportExcelUtil.js");
|
|
74
|
+
return e;
|
|
75
|
+
}, "loadExportTreeGridExcel"), M = /* @__PURE__ */ l((e) => Object.values((e == null ? void 0 : e.Rows) ?? {}).filter((t) => t.Kind === "Data"), "getDataRows"), f = /* @__PURE__ */ l((e) => typeof e == "string" && k.test(e.trim()), "isTreeGridTimeDateFormat"), b = /* @__PURE__ */ l((e, t, r) => {
|
|
76
|
+
var c;
|
|
77
|
+
const n = t, s = (c = e.Cols) == null ? void 0 : c[r];
|
|
78
|
+
return (s == null ? void 0 : s.Type) === "Date" && (f(n[`${r}EditFormat`]) || f(n[`${r}Format`]) || f(s.EditFormat) || f(s.Format));
|
|
79
|
+
}, "isTreeGridTimeDateColumn"), S = /* @__PURE__ */ l((e, t, r) => {
|
|
80
|
+
var s;
|
|
81
|
+
const n = t[r];
|
|
82
|
+
try {
|
|
83
|
+
const c = (s = e.GetString) == null ? void 0 : s.call(e, t, r);
|
|
84
|
+
if (c != null && `${c}` != "")
|
|
85
|
+
return `${c}`;
|
|
86
|
+
} catch {
|
|
87
|
+
}
|
|
88
|
+
return n == null ? "" : `${n}`;
|
|
89
|
+
}, "getTreeGridTimeDateDisplayValue"), J = /* @__PURE__ */ l((e, t) => {
|
|
90
|
+
const r = { ...t };
|
|
91
|
+
return Object.keys(e.Cols ?? {}).forEach((n) => {
|
|
92
|
+
b(e, t, n) && (r[n] = S(e, t, n));
|
|
93
|
+
}), r;
|
|
94
|
+
}, "normalizeTreeGridExternalRow"), B = /* @__PURE__ */ l((e, t) => t.map((r) => J(e, r)), "normalizeTreeGridExternalRows"), q = /* @__PURE__ */ l((e, t) => {
|
|
95
|
+
const r = (t == null ? void 0 : t.insertPosition) ?? "top", n = t == null ? void 0 : t.parent, s = t == null ? void 0 : t.anchorRow;
|
|
96
|
+
let c = n ?? (s ? s.parentNode : null) ?? e.GetFirst(), o = null;
|
|
78
97
|
switch (r) {
|
|
79
98
|
case "top":
|
|
80
|
-
|
|
99
|
+
o = e.GetFirst();
|
|
81
100
|
break;
|
|
82
101
|
case "last":
|
|
83
|
-
c =
|
|
102
|
+
c = e.GetNext(e.GetLast(), e.RowCount > 0 ? e.RowCount + 1 : 0), o = c;
|
|
84
103
|
break;
|
|
85
104
|
case "above":
|
|
86
|
-
|
|
105
|
+
o = s ?? e.GetFirst();
|
|
87
106
|
break;
|
|
88
107
|
case "below":
|
|
89
|
-
|
|
108
|
+
o = (s == null ? void 0 : s.nextSibling) ?? e.GetFirst();
|
|
90
109
|
break;
|
|
91
110
|
}
|
|
92
|
-
return { resolvedParent: c, next:
|
|
93
|
-
}, "resolveRowInsertionTarget"),
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
111
|
+
return { resolvedParent: c, next: o };
|
|
112
|
+
}, "resolveRowInsertionTarget"), Q = /* @__PURE__ */ l((e, t, r) => {
|
|
113
|
+
if (!j(r))
|
|
114
|
+
return;
|
|
115
|
+
const n = Object.keys(r).filter(Boolean);
|
|
116
|
+
t[h] = n, Object.entries(r).forEach(([s, c]) => {
|
|
117
|
+
var o, a;
|
|
118
|
+
if (((a = (o = e.Cols) == null ? void 0 : o[s]) == null ? void 0 : a.Type) === "Date" && typeof c == "string") {
|
|
119
|
+
e.SetString(t, s, c, 0);
|
|
98
120
|
return;
|
|
99
121
|
}
|
|
100
|
-
|
|
122
|
+
t[s] = c;
|
|
101
123
|
});
|
|
102
|
-
}, "assignInitialRowValues"),
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
124
|
+
}, "assignInitialRowValues"), Z = /* @__PURE__ */ l((e) => P.some((t) => e.startsWith(t)), "isTreeGridDataKey"), g = /* @__PURE__ */ l((e) => e === 0 || e === !1 || e === "0", "isHiddenTreeGridValue"), p = /* @__PURE__ */ l((e, t) => {
|
|
125
|
+
var r, n;
|
|
126
|
+
return !g((n = (r = e == null ? void 0 : e.Cols) == null ? void 0 : r[t]) == null ? void 0 : n.Visible);
|
|
127
|
+
}, "isVisibleTreeGridColumn"), ee = /* @__PURE__ */ l((e, t) => I(
|
|
128
|
+
e == null ? void 0 : e[h]
|
|
129
|
+
).includes(t), "isTreeGridAddedRowInitialValueKey"), te = /* @__PURE__ */ l((e, t) => {
|
|
130
|
+
var r;
|
|
131
|
+
return typeof t.id == "string" ? (r = e == null ? void 0 : e.Rows) == null ? void 0 : r[t.id] : null;
|
|
132
|
+
}, "getLiveTreeGridChangedRow"), re = /* @__PURE__ */ l((e, t, r) => !Z(r) || D(t[r]) ? !1 : p(e, r) ? !0 : ee(te(e, t), r), "shouldIncludeAddedRowDataKey"), ne = /* @__PURE__ */ l((e, t) => Object.fromEntries(
|
|
133
|
+
v(Object.keys(t), "id").filter((r) => re(e, t, r)).map((r) => [r, t[r]])
|
|
134
|
+
), "normalizeAddedRow"), se = /* @__PURE__ */ l((e, t, r) => t.filter((n) => F(n, r) === "1" && n.Deleted !== "1").map(
|
|
135
|
+
(n) => r === "Changed" ? K(n, ["id", "Changed"]) : ne(e, n)
|
|
136
|
+
).filter((n) => !D(n)), "getChangedRowsByStatus"), le = /* @__PURE__ */ l((e, t) => e ? t.map((r) => {
|
|
137
|
+
const n = typeof r.id == "string" ? e.Rows[r.id] : null;
|
|
138
|
+
if (!n)
|
|
139
|
+
return r;
|
|
140
|
+
const s = { ...r };
|
|
141
|
+
return Object.keys(r).forEach((c) => {
|
|
142
|
+
b(e, n, c) && (s[c] = S(e, n, c));
|
|
143
|
+
}), s;
|
|
144
|
+
}) : t, "normalizeTreeGridChangedRows"), d = /* @__PURE__ */ l((e) => Grids[e], "getTreeGridById"), Ae = /* @__PURE__ */ l((e) => {
|
|
145
|
+
const t = d(e);
|
|
146
|
+
return t ? B(t, M(t)) : [];
|
|
147
|
+
}, "getTreeGridDataRowsById"), Ie = /* @__PURE__ */ l((e, t) => {
|
|
148
|
+
const r = d(e);
|
|
109
149
|
if (!r)
|
|
110
150
|
return;
|
|
111
151
|
const n = r.Data.Data;
|
|
112
152
|
r.Data.Data = {
|
|
113
153
|
...n,
|
|
114
|
-
Data: { Body: [
|
|
154
|
+
Data: { Body: [t || []] },
|
|
115
155
|
Url: ""
|
|
116
156
|
}, r.ReloadBody(), window.setTimeout(() => {
|
|
117
|
-
C(
|
|
157
|
+
C(e);
|
|
118
158
|
}, 0);
|
|
119
|
-
}, "reloadTreeGridBodyById"),
|
|
120
|
-
const r =
|
|
159
|
+
}, "reloadTreeGridBodyById"), be = /* @__PURE__ */ l((e, t) => {
|
|
160
|
+
const r = d(e);
|
|
121
161
|
if (!r)
|
|
122
162
|
return;
|
|
123
|
-
const n =
|
|
124
|
-
|
|
125
|
-
C(
|
|
163
|
+
const n = t == null ? void 0 : t.canSelect, s = t == null ? void 0 : t.initialValues, { resolvedParent: c, next: o } = q(r, t), a = r.AddRow(c, o, 1);
|
|
164
|
+
z(a), Q(r, a, s), O(r, a), a.CanEdit = 1, a.CanDelete = 1, a.CanSelect = n ? 1 : 0, r.Focus(a), r.RefreshRow(a), window.setTimeout(() => {
|
|
165
|
+
C(e);
|
|
126
166
|
}, 0);
|
|
127
|
-
}, "addTreeGridRowById"),
|
|
128
|
-
const
|
|
129
|
-
return
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
167
|
+
}, "addTreeGridRowById"), Se = /* @__PURE__ */ l((e) => {
|
|
168
|
+
const t = d(e), r = $(t == null ? void 0 : t.GetXmlData("changes,allcols,nogrid,noio"));
|
|
169
|
+
return y(r) ? Object.fromEntries(
|
|
170
|
+
N.map((n) => [
|
|
171
|
+
x(n),
|
|
172
|
+
se(
|
|
173
|
+
t,
|
|
174
|
+
le(t, r),
|
|
175
|
+
n
|
|
176
|
+
)
|
|
133
177
|
])
|
|
134
178
|
) : { added: [], changed: [] };
|
|
135
|
-
}, "getTreeGridRowChangesById"),
|
|
136
|
-
const r =
|
|
137
|
-
r &&
|
|
138
|
-
(n) => n(r, { exportName:
|
|
179
|
+
}, "getTreeGridRowChangesById"), Be = /* @__PURE__ */ l((e, t) => {
|
|
180
|
+
const r = d(e);
|
|
181
|
+
r && Y().then(
|
|
182
|
+
(n) => n(r, { exportName: t ?? "" })
|
|
139
183
|
);
|
|
140
|
-
}, "exportTreeGridToExcelById"),
|
|
141
|
-
const e =
|
|
142
|
-
return
|
|
143
|
-
}, "getTreeGridSelectedRowsById"),
|
|
144
|
-
const r =
|
|
145
|
-
if (!r || !(
|
|
184
|
+
}, "exportTreeGridToExcelById"), Ve = /* @__PURE__ */ l((e) => {
|
|
185
|
+
const t = d(e), r = t == null ? void 0 : t.GetSelRows();
|
|
186
|
+
return t && r ? B(t, r) : [];
|
|
187
|
+
}, "getTreeGridSelectedRowsById"), we = /* @__PURE__ */ l((e, t) => {
|
|
188
|
+
const r = d(e);
|
|
189
|
+
if (!r || !(t != null && t.targetKey))
|
|
146
190
|
return;
|
|
147
|
-
const n =
|
|
148
|
-
if (
|
|
191
|
+
const n = t == null ? void 0 : t.targetKey;
|
|
192
|
+
if (t == null ? void 0 : t.canVisible) {
|
|
149
193
|
r.ShowCol(n);
|
|
150
194
|
return;
|
|
151
195
|
}
|
|
152
196
|
r.HideCol(n);
|
|
153
|
-
}, "setTreeGridColumnVisibilityById"),
|
|
154
|
-
const r =
|
|
155
|
-
!r || !n || !s || (
|
|
156
|
-
}, "highlightTreeGridCellById"),
|
|
157
|
-
const r =
|
|
197
|
+
}, "setTreeGridColumnVisibilityById"), He = /* @__PURE__ */ l((e, t) => {
|
|
198
|
+
const r = d(e), n = t == null ? void 0 : t.row, s = t == null ? void 0 : t.col;
|
|
199
|
+
!r || !n || !s || (U(r, n, s), r.SetValue(n, `${s}Class`, H), r.SetValue(n, `${s}Color`, t.backgroundColor ?? L), r.RefreshCell(n, s));
|
|
200
|
+
}, "highlightTreeGridCellById"), Le = /* @__PURE__ */ l((e, t) => {
|
|
201
|
+
const r = d(e), n = t == null ? void 0 : t.row, s = t == null ? void 0 : t.col;
|
|
158
202
|
if (!r || !n || !s)
|
|
159
203
|
return;
|
|
160
|
-
const c =
|
|
204
|
+
const c = X(n, s);
|
|
161
205
|
r.SetValue(n, `${s}Class`, (c == null ? void 0 : c.className) ?? ""), r.SetValue(n, `${s}Color`, (c == null ? void 0 : c.color) ?? ""), r.RefreshCell(n, s);
|
|
162
|
-
}, "clearTreeGridCellHighlightById"),
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
}, "resetTreeGridSelectionById"),
|
|
166
|
-
|
|
167
|
-
}, "resetTreeGridSelectionsByIds"),
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
C(
|
|
206
|
+
}, "clearTreeGridCellHighlightById"), V = /* @__PURE__ */ l((e) => {
|
|
207
|
+
const t = d(e);
|
|
208
|
+
t && t.ActionDeselectAll(1, 0);
|
|
209
|
+
}, "resetTreeGridSelectionById"), $e = /* @__PURE__ */ l((e) => {
|
|
210
|
+
e.forEach(V);
|
|
211
|
+
}, "resetTreeGridSelectionsByIds"), ce = /* @__PURE__ */ l((e) => {
|
|
212
|
+
const t = d(e);
|
|
213
|
+
t && (t.ActionUndoAll(1, 0), V(e), window.setTimeout(() => {
|
|
214
|
+
C(e);
|
|
171
215
|
}, 0));
|
|
172
|
-
}, "resetTreeGridChangesById"),
|
|
173
|
-
|
|
174
|
-
}, "resetTreeGridChangesByIds"),
|
|
216
|
+
}, "resetTreeGridChangesById"), xe = /* @__PURE__ */ l((e) => {
|
|
217
|
+
e.forEach(ce);
|
|
218
|
+
}, "resetTreeGridChangesByIds"), je = /* @__PURE__ */ l((e, t, r, n, s) => {
|
|
175
219
|
if (!(r != null && r.length))
|
|
176
220
|
return;
|
|
177
|
-
const c =
|
|
221
|
+
const c = d(e);
|
|
178
222
|
if (!c)
|
|
179
223
|
return;
|
|
180
|
-
const
|
|
181
|
-
const R =
|
|
182
|
-
return `${s.map((
|
|
183
|
-
}).join("|"), a = r.map((
|
|
184
|
-
c.SetAttribute(null,
|
|
224
|
+
const o = r.map((i) => {
|
|
225
|
+
const R = i;
|
|
226
|
+
return `${s.map((T) => R[T]).find((T) => T != null && T !== "") ?? ""}`;
|
|
227
|
+
}).join("|"), a = r.map((i) => `${i[n] ?? ""}`).join("|");
|
|
228
|
+
c.SetAttribute(null, t, "Type", "Enum", 0, 0), c.SetAttribute(null, t, "Enum", `|${o}`, 0, 0), c.SetAttribute(null, t, "EnumKeys", `|${a}`, 1, 0);
|
|
185
229
|
}, "setTreeGridColumnEnumOptionsById");
|
|
186
230
|
export {
|
|
187
|
-
|
|
188
|
-
|
|
231
|
+
A as TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY,
|
|
232
|
+
_ as TREEGRID_ADDED_ROW_BY_ID_FLAG,
|
|
189
233
|
m as TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY,
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
234
|
+
H as TREEGRID_CELL_CHANGED_CLASS,
|
|
235
|
+
L as TREEGRID_CELL_HIGHLIGHT_COLOR,
|
|
236
|
+
ve as TREEGRID_INPUT_CELL_COLOR,
|
|
237
|
+
Ne as TREEGRID_WARNING_CELL_COLOR,
|
|
238
|
+
be as addTreeGridRowById,
|
|
239
|
+
ye as appendTreeGridAddedRowHighlightColumn,
|
|
240
|
+
Le as clearTreeGridCellHighlightById,
|
|
241
|
+
Be as exportTreeGridToExcelById,
|
|
242
|
+
he as getTreeGridAddedRowBaselineValue,
|
|
243
|
+
_e as getTreeGridAddedRowHighlightColumns,
|
|
244
|
+
d as getTreeGridById,
|
|
245
|
+
W as getTreeGridCellComparableValue,
|
|
246
|
+
Ae as getTreeGridDataRowsById,
|
|
247
|
+
Se as getTreeGridRowChangesById,
|
|
248
|
+
Ve as getTreeGridSelectedRowsById,
|
|
249
|
+
He as highlightTreeGridCellById,
|
|
250
|
+
Ee as isTreeGridRowAddedById,
|
|
251
|
+
z as markTreeGridRowAddedById,
|
|
252
|
+
J as normalizeTreeGridExternalRow,
|
|
253
|
+
B as normalizeTreeGridExternalRows,
|
|
254
|
+
Ie as reloadTreeGridBodyById,
|
|
255
|
+
De as removeTreeGridAddedRowHighlightColumn,
|
|
256
|
+
ce as resetTreeGridChangesById,
|
|
257
|
+
xe as resetTreeGridChangesByIds,
|
|
258
|
+
V as resetTreeGridSelectionById,
|
|
259
|
+
$e as resetTreeGridSelectionsByIds,
|
|
260
|
+
je as setTreeGridColumnEnumOptionsById,
|
|
261
|
+
we as setTreeGridColumnVisibilityById
|
|
216
262
|
};
|
|
217
263
|
//# sourceMappingURL=treeGridUtil.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeGridUtil.js","sources":["../../src/utils/treeGridUtil.ts"],"sourcesContent":["import {\n TREEGRID_CELL_HIGHLIGHT_CLASS,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\n TREEGRID_INPUT_CELL_COLOR,\n TREEGRID_WARNING_CELL_COLOR,\n} from '@/constants/treeGrid';\nimport { parseTreeGridXmlToJson } from '@/components/OwpTreeGrid/internal/treeGridLayout';\nimport { emitTreeGridBodyRowsChanged } from '@/utils/treeGridBodyRowsEvent';\nimport { isPlainObject } from 'es-toolkit';\nimport { get, isArray, isEmpty, lowerCase, omit, without } from 'es-toolkit/compat';\n\nexport {\n TREEGRID_CELL_HIGHLIGHT_CLASS,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\n TREEGRID_INPUT_CELL_COLOR,\n TREEGRID_WARNING_CELL_COLOR,\n};\n\ntype TreeGridInsertPosition = 'above' | 'below' | 'top' | 'last';\n\ntype TreeGridAddRowOptions<T> = {\n canSelect?: boolean;\n insertPosition?: TreeGridInsertPosition;\n parent?: TRow & T;\n anchorRow?: TRow & T;\n initialValues?: T;\n};\n\ntype TreeGridColumnVisibilityOptions = {\n targetKey: string;\n canVisible: boolean;\n};\n\ntype TreeGridHighlightTargetOption = {\n row: TRow;\n col: string;\n backgroundColor?: string;\n};\ntype TreeGridAddedRowMetadata = TRow & {\n [TREEGRID_ADDED_ROW_BY_ID_FLAG]?: boolean | number;\n [TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY]?: string[];\n [TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY]?: Record<string, string>;\n [TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY]?: Record<\n string,\n { className: unknown; color: unknown }\n >;\n};\n\ntype TreeGridChangeStatus = 'Added' | 'Changed';\ntype TreeGridChangedRow = Record<string, unknown>;\n\nconst TREEGRID_CHANGE_STATUSES: TreeGridChangeStatus[] = ['Added', 'Changed'];\nconst TREEGRID_DATA_KEY_PREFIXES = ['OWP', 'IPX'];\nexport const TREEGRID_ADDED_ROW_BY_ID_FLAG = '__owpAddedByAddTreeGridRowById';\nexport const TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY = '__owpAddedRowHighlightColumns';\nexport const TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY = '__owpAddedRowBaselineValues';\nconst TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY = '__owpCellStyleBaselineValues';\n\nconst normalizeTreeGridAddedRowHighlightColumns = (value: unknown) => {\n if (!isArray(value)) {\n return [];\n }\n\n return value.filter((item): item is string => typeof item === 'string' && item !== '');\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ๋งํน\n * @param row ๋์ ํ\n */\nexport const markTreeGridRowAddedById = (row: TRow | null | undefined) => {\n if (!row) {\n return;\n }\n\n (row as TreeGridAddedRowMetadata)[TREEGRID_ADDED_ROW_BY_ID_FLAG] = 1;\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ์ฌ๋ถ\n * @param row ๋์ ํ\n */\nexport const isTreeGridRowAddedById = (row: TRow | null | undefined) => {\n const addedById = (row as TreeGridAddedRowMetadata | null)?.[TREEGRID_ADDED_ROW_BY_ID_FLAG];\n\n return !!row && addedById !== 0 && addedById !== false && addedById !== undefined;\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ํ์ด๋ผ์ดํธ ์ปฌ๋ผ ๋์ \n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nexport const appendTreeGridAddedRowHighlightColumn = (\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col) {\n return;\n }\n\n const targetRow = row as TreeGridAddedRowMetadata;\n const currentColumns = normalizeTreeGridAddedRowHighlightColumns(\n targetRow[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY],\n );\n\n if (currentColumns.includes(col)) {\n return;\n }\n\n targetRow[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY] = [...currentColumns, col];\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ํ์ด๋ผ์ดํธ ์ปฌ๋ผ ์ ๊ฑฐ\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nexport const removeTreeGridAddedRowHighlightColumn = (\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col) {\n return;\n }\n\n const targetRow = row as TreeGridAddedRowMetadata;\n const currentColumns = normalizeTreeGridAddedRowHighlightColumns(\n targetRow[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY],\n );\n const nextColumns = currentColumns.filter((column) => column !== col);\n\n if (nextColumns.length) {\n targetRow[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY] = nextColumns;\n return;\n }\n\n delete targetRow[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY];\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ํ์ด๋ผ์ดํธ ์ปฌ๋ผ ์กฐํ\n * @param row ๋์ ํ\n */\nexport const getTreeGridAddedRowHighlightColumns = (row: TRow | null | undefined) => {\n return normalizeTreeGridAddedRowHighlightColumns(\n (row as TreeGridAddedRowMetadata | null)?.[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY],\n );\n};\n\n/**\n * TreeGrid ์
๋น๊ต ๊ฐ ์กฐํ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nexport const getTreeGridCellComparableValue = (\n grid: TGrid,\n row: TRow,\n col: string,\n) => {\n const cellType = grid.GetType?.(row, col) || grid.Cols?.[col]?.Type || '';\n const rawValue =\n grid.GetValue?.(row, col) ?? (row as unknown as Record<string, unknown>)[col];\n\n if (cellType === 'Enum' || cellType === 'Select') {\n return rawValue === undefined || rawValue === null ? '' : `${rawValue}`;\n }\n\n try {\n const displayValue = grid.GetString?.(row, col);\n\n if (displayValue !== undefined && displayValue !== null) {\n return `${displayValue}`;\n }\n } catch {\n // GetString ๋ฏธ์ง์ ์
fallback\n }\n\n return rawValue === undefined || rawValue === null ? '' : `${rawValue}`;\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ๊ธฐ์ค๊ฐ ์ ์ฅ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row ๋์ ํ\n */\nconst markTreeGridAddedRowBaselineValues = (grid: TGrid, row: TRow) => {\n const baselineValues = Object.fromEntries(\n Object.keys(grid.Cols ?? {}).map((col) => [\n col,\n getTreeGridCellComparableValue(grid, row, col),\n ]),\n );\n\n (row as TreeGridAddedRowMetadata)[TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY] = baselineValues;\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ๊ธฐ์ค๊ฐ ์กฐํ\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nexport const getTreeGridAddedRowBaselineValue = (\n row: TRow | null | undefined,\n col: string,\n) => {\n return (row as TreeGridAddedRowMetadata | null)?.[\n TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY\n ]?.[col];\n};\n\n/**\n * TreeGrid ์
ํ์ด๋ผ์ดํธ ์ ์คํ์ผ ์ ์ฅ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nconst preserveTreeGridCellStyleBaseline = (grid: TGrid, row: TRow, col: string) => {\n const targetRow = row as TreeGridAddedRowMetadata;\n\n targetRow[TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY] ??= {};\n\n if (targetRow[TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY]?.[col]) {\n return;\n }\n\n targetRow[TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY][col] = {\n className: grid.GetAttribute(row, col, 'Class'),\n color: grid.GetAttribute(row, col, 'Color'),\n };\n};\n\n/**\n * TreeGrid ์
ํ์ด๋ผ์ดํธ ์ ์คํ์ผ ์กฐํ\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nconst getTreeGridCellStyleBaseline = (row: TRow, col: string) => {\n return (row as TreeGridAddedRowMetadata)[TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY]?.[col];\n};\n\n/**\n * TreeGrid ์์
๋ด๋ณด๋ด๊ธฐ ์ ํธ ๋ก๋\n */\nconst loadExportTreeGridExcel = async () => {\n const { exportTreeGridExcel } = await import('./treeGridExportExcelUtil');\n\n return exportTreeGridExcel;\n};\n\n/**\n * TreeGrid ๋ฐ์ดํฐ ํ ๋ชฉ๋ก ์ถ์ถ\n * @param grid TreeGrid ์ธ์คํด์ค\n */\nconst getDataRows = (grid: TGrid | undefined) => {\n return Object.values(grid?.Rows ?? {}).filter((item) => item.Kind === 'Data');\n};\n\n/**\n * ์ ๊ท ํ ์ถ๊ฐ ๋์ ๊ณ์ฐ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param options ํ ์ถ๊ฐ ์ต์
\n */\nconst resolveRowInsertionTarget = <T>(grid: TGrid, options?: TreeGridAddRowOptions<T>) => {\n const insertPosition = options?.insertPosition ?? 'top';\n const parent = options?.parent;\n const anchorRow = options?.anchorRow;\n\n let resolvedParent = parent ?? (anchorRow ? anchorRow.parentNode : null) ?? grid.GetFirst();\n let next = null;\n\n switch (insertPosition) {\n case 'top':\n next = grid.GetFirst();\n break;\n\n case 'last':\n resolvedParent = grid.GetNext(grid.GetLast(), grid.RowCount > 0 ? grid.RowCount + 1 : 0);\n next = resolvedParent;\n break;\n\n case 'above':\n next = anchorRow ?? grid.GetFirst();\n break;\n\n case 'below':\n next = anchorRow?.nextSibling ?? grid.GetFirst();\n break;\n }\n\n return { resolvedParent, next };\n};\n\n/**\n * ์ ๊ท ํ ์ด๊ธฐ๊ฐ ๋ฐ์\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row ์์ฑ๋ TreeGrid ํ\n * @param initialValues ์ ๊ท ํ ์ด๊ธฐ๊ฐ\n */\nconst assignInitialRowValues = <T>(grid: TGrid, row: TRow, initialValues?: T) => {\n if (!isPlainObject(initialValues)) {\n return;\n }\n\n Object.entries(initialValues as Record<string, unknown>).forEach(([rowKey, rowValue]) => {\n if (grid.Cols?.[rowKey]?.Type === 'Date' && typeof rowValue === 'string') {\n grid.SetString(row, rowKey, rowValue, 0);\n return;\n }\n\n (row as unknown as Record<string, unknown>)[rowKey] = rowValue;\n });\n};\n\n/**\n * ๋ณ๊ฒฝ ๋ฐ์ดํฐ ์ปฌ๋ผ ํค ์ฌ๋ถ ํ์ธ\n * @param key ์ปฌ๋ผ ํค\n */\nconst isTreeGridDataKey = (key: string) => {\n return TREEGRID_DATA_KEY_PREFIXES.some((prefix) => key.startsWith(prefix));\n};\n\n/**\n * ์ถ๊ฐ ํ ๋ฐ์ดํฐ ์ ๊ทํ\n * @param row TreeGrid ๋ณ๊ฒฝ ํ ๋ฐ์ดํฐ\n */\nconst normalizeAddedRow = <T>(row: TreeGridChangedRow) => {\n return Object.fromEntries(\n without(Object.keys(row), 'id')\n .filter((key) => isTreeGridDataKey(key) && !isEmpty(row[key]))\n .map((key) => [key, row[key]]),\n ) as T;\n};\n\n/**\n * ๋ณ๊ฒฝ ์ํ๋ณ ํ ๋ฐ์ดํฐ ๋ฐํ\n * @param rows TreeGrid ๋ณ๊ฒฝ ํ ๋ชฉ๋ก\n * @param status ์กฐํํ ๋ณ๊ฒฝ ์ํ\n */\nconst getChangedRowsByStatus = <T>(rows: TreeGridChangedRow[], status: TreeGridChangeStatus) => {\n return rows\n .filter((row) => get(row, status) === '1' && row.Deleted !== '1')\n .map((row) => (status === 'Changed' ? omit(row, ['id', 'Changed']) : normalizeAddedRow<T>(row)))\n .filter((row) => !isEmpty(row));\n};\n\n/**\n * TreeGrid ์ธ์คํด์ค ID ์กฐํ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const getTreeGridById = (gridId: string) => {\n return Grids[gridId];\n};\n\n/**\n * TreeGrid ๋ฐ์ดํฐ ํ ๋ชฉ๋ก ์กฐํ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const getTreeGridDataRowsById = <T>(gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n return getDataRows(grid) as T;\n};\n\n/**\n * TreeGrid Body ๋ฐ์ดํฐ ๊ต์ฒด ํ ์ฌ๋ก๋\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param rows ์๋ก ๋ฐ์ํ ํ ๋ฐ์ดํฐ\n */\nexport const reloadTreeGridBodyById = (gridId: string, rows: unknown) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n // @ts-expect-error - Data property not defined in type\n const currentData = grid.Data.Data;\n\n // @ts-expect-error - Data property not defined in type\n grid.Data.Data = {\n ...currentData,\n Data: { Body: [rows || []] },\n Url: '',\n };\n grid.ReloadBody();\n window.setTimeout(() => {\n emitTreeGridBodyRowsChanged(gridId);\n }, 0);\n};\n\n/**\n * ํ์ ํน์ ์์น์ ์ถ๊ฐ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param options.canSelect ํ ์ ํ ๊ฐ๋ฅ ์ฌ๋ถ\n * @param options.parent ๋ถ๋ชจ ํ\n * @param options.anchorRow above/below์ฉ ๊ธฐ์ค ํ\n * @param options.insertPosition ํ ์ฝ์
์์น\n * @param options.initialValues ์ ๊ท ํ ์ด๊ธฐ๊ฐ\n */\nexport const addTreeGridRowById = <T>(\n gridId: string,\n options?: TreeGridAddRowOptions<T>,\n) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n const canSelect = options?.canSelect;\n const initialValues = options?.initialValues;\n const { resolvedParent, next } = resolveRowInsertionTarget(grid, options);\n\n const newRow = grid.AddRow(resolvedParent, next, 1);\n\n markTreeGridRowAddedById(newRow);\n assignInitialRowValues(grid, newRow, initialValues);\n markTreeGridAddedRowBaselineValues(grid, newRow);\n\n newRow.CanEdit = 1;\n newRow.CanDelete = 1;\n newRow.CanSelect = canSelect ? 1 : 0;\n\n grid.Focus(newRow);\n grid.RefreshRow(newRow);\n window.setTimeout(() => {\n emitTreeGridBodyRowsChanged(gridId);\n }, 0);\n};\n\n/**\n * TreeGrid ์ถ๊ฐ/์์ ๋ฐ์ดํฐ ํ ์กฐํ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const getTreeGridRowChangesById = <T>(gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n const changesData = parseTreeGridXmlToJson(grid?.GetXmlData('changes,allcols,nogrid,noio'));\n\n if (!isArray(changesData)) {\n return { added: [], changed: [] };\n }\n\n return Object.fromEntries(\n TREEGRID_CHANGE_STATUSES.map((status) => [\n lowerCase(status),\n getChangedRowsByStatus<T>(changesData as TreeGridChangedRow[], status),\n ]),\n ) as { added: T[]; changed: T[] };\n};\n\n/**\n * TreeGrid ๋ฐ์ดํฐ ์์
๋ด๋ณด๋ด๊ธฐ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param title ๋ค์ด๋ก๋ ํ์ผ๋ช
\n */\nexport const exportTreeGridToExcelById = (gridId: string, title?: string) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n void loadExportTreeGridExcel().then((exportTreeGridExcel) =>\n exportTreeGridExcel(grid, { exportName: title ?? '' }),\n );\n};\n\n/**\n * TreeGrid ํ์ฌ ์ ํ ํ ๋ชฉ๋ก ์กฐํ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const getTreeGridSelectedRowsById = <T>(gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n const selectedRows = grid?.GetSelRows();\n\n return (selectedRows as T) ?? [];\n};\n\n/**\n * TreeGrid ์ปฌ๋ผ ํ์ ์ฌ๋ถ ๋ณ๊ฒฝ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param options.targetKey ํ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ปฌ๋ผ ํค\n * @param options.canVisible ์ปฌ๋ผ ํ์ ์ฌ๋ถ\n */\nexport const setTreeGridColumnVisibilityById = (\n gridId: string,\n options: TreeGridColumnVisibilityOptions,\n) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid || !options?.targetKey) {\n return;\n }\n\n const targetKey = options?.targetKey;\n const canVisible = options?.canVisible;\n\n if (canVisible) {\n grid.ShowCol(targetKey);\n return;\n }\n grid.HideCol(targetKey);\n};\n\n/**\n * ํน์ ์
๊ฐ์กฐ ์คํ์ผ ์ ์ฉ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param targetOption.row ๊ฐ์กฐํ ๋์ ํ\n * @param targetOption.col ๊ฐ์กฐํ ๋์ ์ปฌ๋ผ\n */\nexport const highlightTreeGridCellById = (\n gridId: string,\n targetOption: TreeGridHighlightTargetOption,\n) => {\n const grid = getTreeGridById(gridId);\n\n const row = targetOption?.row;\n const col = targetOption?.col;\n\n if (!grid || !row || !col) {\n return;\n }\n\n preserveTreeGridCellStyleBaseline(grid, row, col);\n grid.SetValue(row, `${col}Class`, TREEGRID_CELL_HIGHLIGHT_CLASS);\n grid.SetValue(row, `${col}Color`, targetOption.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR);\n grid.RefreshCell(row, col);\n};\n\n/**\n * ํน์ ์
๊ฐ์กฐ ์คํ์ผ ์ ๊ฑฐ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param targetOption.row ๊ฐ์กฐ ํด์ ๋์ ํ\n * @param targetOption.col ๊ฐ์กฐ ํด์ ๋์ ์ปฌ๋ผ\n */\nexport const clearTreeGridCellHighlightById = (\n gridId: string,\n targetOption: Pick<TreeGridHighlightTargetOption, 'row' | 'col'>,\n) => {\n const grid = getTreeGridById(gridId);\n\n const row = targetOption?.row;\n const col = targetOption?.col;\n\n if (!grid || !row || !col) {\n return;\n }\n\n const styleBaseline = getTreeGridCellStyleBaseline(row, col);\n\n grid.SetValue(row, `${col}Class`, styleBaseline?.className ?? '');\n grid.SetValue(row, `${col}Color`, styleBaseline?.color ?? '');\n grid.RefreshCell(row, col);\n};\n\n/**\n * TreeGrid ํ์ฌ ์ ํ ์ํ ์ ์ฒด ํด์ \n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const resetTreeGridSelectionById = (gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n grid.ActionDeselectAll(1, 0);\n};\n\n/**\n * ์ฌ๋ฌ TreeGrid ์ ํ ์ํ ์ ์ฒด ํด์ \n * @param gridIds TreeGrid ์ธ์คํด์ค ID ๋ชฉ๋ก\n */\nexport const resetTreeGridSelectionsByIds = (gridIds: string[]) => {\n gridIds.forEach(resetTreeGridSelectionById);\n};\n\n/**\n * TreeGrid ๋ณ๊ฒฝ ์ฌํญ ๋ฐ ์ ํ ์ํ ์ด๊ธฐํ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const resetTreeGridChangesById = (gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n grid.ActionUndoAll(1, 0);\n resetTreeGridSelectionById(gridId);\n window.setTimeout(() => {\n emitTreeGridBodyRowsChanged(gridId);\n }, 0);\n};\n\n/**\n * ์ฌ๋ฌ TreeGrid ๋ณ๊ฒฝ ์ฌํญ ๋ฐ ์ ํ ์ํ ์ด๊ธฐํ\n * @param gridIds TreeGrid ์ธ์คํด์ค ID ๋ชฉ๋ก\n */\nexport const resetTreeGridChangesByIds = (gridIds: string[]) => {\n gridIds.forEach(resetTreeGridChangesById);\n};\n\n/**\n * TreeGrid Enum ์ปฌ๋ผ ์ต์
๋ฐ์\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param columnName Enum์ ์ ์ฉํ ์ปฌ๋ผ๋ช
\n * @param options Enum ์ต์
๋ชฉ๋ก\n * @param valueKey Enum ๊ฐ์ผ๋ก ์ฌ์ฉํ ํ๋๋ช
\n * @param labelKeys Enum ๋ผ๋ฒจ๋ก ์ฌ์ฉํ ํ๋ ์ฐ์ ์์ ๋ชฉ๋ก\n */\nexport const setTreeGridColumnEnumOptionsById = <T extends object>(\n gridId: string,\n columnName: string,\n options: T[] | undefined,\n valueKey: keyof T & string,\n labelKeys: Array<keyof T & string>,\n) => {\n if (!options?.length) {\n return;\n }\n\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n const enumValues = options\n .map((item) => {\n const option = item as Record<string, unknown>;\n const labelValue = labelKeys\n .map((labelKey) => option[labelKey])\n .find((value) => value !== undefined && value !== null && value !== '');\n\n return `${labelValue ?? ''}`;\n })\n .join('|');\n const enumKeys = options\n .map((item) => `${(item as Record<string, unknown>)[valueKey] ?? ''}`)\n .join('|');\n\n grid.SetAttribute(null, columnName, 'Type', 'Enum', 0, 0);\n grid.SetAttribute(null, columnName, 'Enum', `|${enumValues}`, 0, 0);\n grid.SetAttribute(null, columnName, 'EnumKeys', `|${enumKeys}`, 1, 0);\n};\n"],"names":["TREEGRID_CHANGE_STATUSES","TREEGRID_DATA_KEY_PREFIXES","TREEGRID_ADDED_ROW_BY_ID_FLAG","TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY","TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY","TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY","normalizeTreeGridAddedRowHighlightColumns","__name","value","isArray","item","markTreeGridRowAddedById","row","isTreeGridRowAddedById","addedById","appendTreeGridAddedRowHighlightColumn","col","targetRow","currentColumns","removeTreeGridAddedRowHighlightColumn","nextColumns","column","getTreeGridAddedRowHighlightColumns","getTreeGridCellComparableValue","grid","cellType","_a","_c","_b","rawValue","_d","displayValue","_e","markTreeGridAddedRowBaselineValues","baselineValues","getTreeGridAddedRowBaselineValue","preserveTreeGridCellStyleBaseline","getTreeGridCellStyleBaseline","loadExportTreeGridExcel","exportTreeGridExcel","getDataRows","resolveRowInsertionTarget","options","insertPosition","parent","anchorRow","resolvedParent","next","assignInitialRowValues","initialValues","isPlainObject","rowKey","rowValue","isTreeGridDataKey","key","prefix","normalizeAddedRow","without","isEmpty","getChangedRowsByStatus","rows","status","get","omit","getTreeGridById","gridId","getTreeGridDataRowsById","reloadTreeGridBodyById","currentData","emitTreeGridBodyRowsChanged","addTreeGridRowById","canSelect","newRow","getTreeGridRowChangesById","changesData","parseTreeGridXmlToJson","lowerCase","exportTreeGridToExcelById","title","getTreeGridSelectedRowsById","setTreeGridColumnVisibilityById","targetKey","highlightTreeGridCellById","targetOption","TREEGRID_CELL_HIGHLIGHT_CLASS","TREEGRID_CELL_HIGHLIGHT_COLOR","clearTreeGridCellHighlightById","styleBaseline","resetTreeGridSelectionById","resetTreeGridSelectionsByIds","gridIds","resetTreeGridChangesById","resetTreeGridChangesByIds","setTreeGridColumnEnumOptionsById","columnName","valueKey","labelKeys","enumValues","option","labelKey","enumKeys"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"treeGridUtil.js","sources":["../../src/utils/treeGridUtil.ts"],"sourcesContent":["import {\n TREEGRID_CELL_CHANGED_CLASS,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\n TREEGRID_INPUT_CELL_COLOR,\n TREEGRID_WARNING_CELL_COLOR,\n} from '@/constants/treeGrid';\nimport { parseTreeGridXmlToJson } from '@/components/OwpTreeGrid/internal/treeGridLayout';\nimport { emitTreeGridBodyRowsChanged } from '@/utils/treeGridBodyRowsEvent';\nimport { isPlainObject } from 'es-toolkit';\nimport { get, isArray, isEmpty, lowerCase, omit, without } from 'es-toolkit/compat';\n\nexport {\n TREEGRID_CELL_CHANGED_CLASS,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\n TREEGRID_INPUT_CELL_COLOR,\n TREEGRID_WARNING_CELL_COLOR,\n};\n\ntype TreeGridInsertPosition = 'above' | 'below' | 'top' | 'last';\n\ntype TreeGridAddRowOptions<T> = {\n canSelect?: boolean;\n insertPosition?: TreeGridInsertPosition;\n parent?: TRow & T;\n anchorRow?: TRow & T;\n initialValues?: T;\n};\n\ntype TreeGridColumnVisibilityOptions = {\n targetKey: string;\n canVisible: boolean;\n};\n\ntype TreeGridHighlightTargetOption = {\n row: TRow;\n col: string;\n backgroundColor?: string;\n};\ntype TreeGridAddedRowMetadata = TRow & {\n [TREEGRID_ADDED_ROW_BY_ID_FLAG]?: boolean | number;\n [TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY]?: string[];\n [TREEGRID_ADDED_ROW_INITIAL_VALUE_KEYS_KEY]?: string[];\n [TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY]?: Record<string, string>;\n [TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY]?: Record<\n string,\n { className: unknown; color: unknown }\n >;\n};\n\ntype TreeGridChangeStatus = 'Added' | 'Changed';\ntype TreeGridChangedRow = Record<string, unknown>;\n\nconst TREEGRID_CHANGE_STATUSES: TreeGridChangeStatus[] = ['Added', 'Changed'];\nconst TREEGRID_DATA_KEY_PREFIXES = ['OWP', 'IPX'];\nconst TREEGRID_TIME_DATE_FORMAT_PATTERN = /^H{1,2}(?::m{1,2})?(?::s{1,2})?$/;\nexport const TREEGRID_ADDED_ROW_BY_ID_FLAG = '__owpAddedByAddTreeGridRowById';\nexport const TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY = '__owpAddedRowHighlightColumns';\nconst TREEGRID_ADDED_ROW_INITIAL_VALUE_KEYS_KEY = '__owpAddedRowInitialValueKeys';\nexport const TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY = '__owpAddedRowBaselineValues';\nconst TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY = '__owpCellStyleBaselineValues';\n\nconst normalizeTreeGridStringValues = (value: unknown) => {\n if (!isArray(value)) {\n return [];\n }\n\n return value.filter((item): item is string => typeof item === 'string' && item !== '');\n};\n\nconst normalizeTreeGridAddedRowHighlightColumns = normalizeTreeGridStringValues;\n\n/**\n * addTreeGridRowById ์์ฑ ํ ๋งํน\n * @param row ๋์ ํ\n */\nexport const markTreeGridRowAddedById = (row: TRow | null | undefined) => {\n if (!row) {\n return;\n }\n\n (row as TreeGridAddedRowMetadata)[TREEGRID_ADDED_ROW_BY_ID_FLAG] = 1;\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ์ฌ๋ถ\n * @param row ๋์ ํ\n */\nexport const isTreeGridRowAddedById = (row: TRow | null | undefined) => {\n const addedById = (row as TreeGridAddedRowMetadata | null)?.[TREEGRID_ADDED_ROW_BY_ID_FLAG];\n\n return !!row && addedById !== 0 && addedById !== false && addedById !== undefined;\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ํ์ด๋ผ์ดํธ ์ปฌ๋ผ ๋์ \n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nexport const appendTreeGridAddedRowHighlightColumn = (\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col) {\n return;\n }\n\n const targetRow = row as TreeGridAddedRowMetadata;\n const currentColumns = normalizeTreeGridAddedRowHighlightColumns(\n targetRow[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY],\n );\n\n if (currentColumns.includes(col)) {\n return;\n }\n\n targetRow[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY] = [...currentColumns, col];\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ํ์ด๋ผ์ดํธ ์ปฌ๋ผ ์ ๊ฑฐ\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nexport const removeTreeGridAddedRowHighlightColumn = (\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col) {\n return;\n }\n\n const targetRow = row as TreeGridAddedRowMetadata;\n const currentColumns = normalizeTreeGridAddedRowHighlightColumns(\n targetRow[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY],\n );\n const nextColumns = currentColumns.filter((column) => column !== col);\n\n if (nextColumns.length) {\n targetRow[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY] = nextColumns;\n return;\n }\n\n delete targetRow[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY];\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ํ์ด๋ผ์ดํธ ์ปฌ๋ผ ์กฐํ\n * @param row ๋์ ํ\n */\nexport const getTreeGridAddedRowHighlightColumns = (row: TRow | null | undefined) => {\n return normalizeTreeGridAddedRowHighlightColumns(\n (row as TreeGridAddedRowMetadata | null)?.[TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY],\n );\n};\n\n/**\n * TreeGrid ์
๋น๊ต ๊ฐ ์กฐํ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nexport const getTreeGridCellComparableValue = (\n grid: TGrid,\n row: TRow,\n col: string,\n) => {\n const cellType = grid.GetType?.(row, col) || grid.Cols?.[col]?.Type || '';\n const rawValue =\n grid.GetValue?.(row, col) ?? (row as unknown as Record<string, unknown>)[col];\n\n if (cellType === 'Enum' || cellType === 'Select') {\n return rawValue === undefined || rawValue === null ? '' : `${rawValue}`;\n }\n\n try {\n const displayValue = grid.GetString?.(row, col);\n\n if (displayValue !== undefined && displayValue !== null) {\n return `${displayValue}`;\n }\n } catch {\n // GetString ๋ฏธ์ง์ ์
fallback\n }\n\n return rawValue === undefined || rawValue === null ? '' : `${rawValue}`;\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ๊ธฐ์ค๊ฐ ์ ์ฅ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row ๋์ ํ\n */\nconst markTreeGridAddedRowBaselineValues = (grid: TGrid, row: TRow) => {\n const baselineValues = Object.fromEntries(\n Object.keys(grid.Cols ?? {}).map((col) => [\n col,\n getTreeGridCellComparableValue(grid, row, col),\n ]),\n );\n\n (row as TreeGridAddedRowMetadata)[TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY] = baselineValues;\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ๊ธฐ์ค๊ฐ ์กฐํ\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nexport const getTreeGridAddedRowBaselineValue = (\n row: TRow | null | undefined,\n col: string,\n) => {\n return (row as TreeGridAddedRowMetadata | null)?.[\n TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY\n ]?.[col];\n};\n\n/**\n * TreeGrid ์
ํ์ด๋ผ์ดํธ ์ ์คํ์ผ ์ ์ฅ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nconst preserveTreeGridCellStyleBaseline = (grid: TGrid, row: TRow, col: string) => {\n const targetRow = row as TreeGridAddedRowMetadata;\n\n targetRow[TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY] ??= {};\n\n if (targetRow[TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY]?.[col]) {\n return;\n }\n\n targetRow[TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY][col] = {\n className: grid.GetAttribute(row, col, 'Class'),\n color: grid.GetAttribute(row, col, 'Color'),\n };\n};\n\n/**\n * TreeGrid ์
ํ์ด๋ผ์ดํธ ์ ์คํ์ผ ์กฐํ\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nconst getTreeGridCellStyleBaseline = (row: TRow, col: string) => {\n return (row as TreeGridAddedRowMetadata)[TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY]?.[col];\n};\n\n/**\n * TreeGrid ์์
๋ด๋ณด๋ด๊ธฐ ์ ํธ ๋ก๋\n */\nconst loadExportTreeGridExcel = async () => {\n const { exportTreeGridExcel } = await import('./treeGridExportExcelUtil');\n\n return exportTreeGridExcel;\n};\n\n/**\n * TreeGrid ๋ฐ์ดํฐ ํ ๋ชฉ๋ก ์ถ์ถ\n * @param grid TreeGrid ์ธ์คํด์ค\n */\nconst getDataRows = (grid: TGrid | undefined) => {\n return Object.values(grid?.Rows ?? {}).filter((item) => item.Kind === 'Data');\n};\n\n/**\n * TreeGrid ์๊ฐ ์ ์ฉ Date ํฌ๋งท ์ฌ๋ถ\n * @param format TreeGrid ๋ ์ง ํฌ๋งท\n */\nconst isTreeGridTimeDateFormat = (format: unknown) =>\n typeof format === 'string' && TREEGRID_TIME_DATE_FORMAT_PATTERN.test(format.trim());\n\n/**\n * TreeGrid ์๊ฐ ์ ์ฉ Date ์ปฌ๋ผ ์ฌ๋ถ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nconst isTreeGridTimeDateColumn = (grid: TGrid, row: TRow, col: string) => {\n const rowRecord = row as unknown as Record<string, unknown>;\n const column = grid.Cols?.[col];\n\n return (\n column?.Type === 'Date' &&\n (isTreeGridTimeDateFormat(rowRecord[`${col}EditFormat`]) ||\n isTreeGridTimeDateFormat(rowRecord[`${col}Format`]) ||\n isTreeGridTimeDateFormat(column.EditFormat) ||\n isTreeGridTimeDateFormat(column.Format))\n );\n};\n\n/**\n * TreeGrid ์๊ฐ ์ ์ฉ Date ํ์ ๊ฐ ์กฐํ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row ๋์ ํ\n * @param col ๋์ ์ปฌ๋ผ\n */\nconst getTreeGridTimeDateDisplayValue = (grid: TGrid, row: TRow, col: string) => {\n const rawValue = (row as unknown as Record<string, unknown>)[col];\n\n try {\n const displayValue = grid.GetString?.(row, col);\n\n if (displayValue !== undefined && displayValue !== null && `${displayValue}` !== '') {\n return `${displayValue}`;\n }\n } catch {\n // GetString ๋ฏธ์ง์ ์
fallback\n }\n\n return rawValue === undefined || rawValue === null ? '' : `${rawValue}`;\n};\n\n/**\n * TreeGrid ์ธ๋ถ ๋ฐํ ํ Date ์๊ฐ ๊ฐ ์ ๊ทํ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row ๋์ ํ\n */\nexport const normalizeTreeGridExternalRow = <T>(grid: TGrid, row: TRow & T) => {\n const normalizedRow = { ...row } as TRow & T;\n\n Object.keys(grid.Cols ?? {}).forEach((col) => {\n if (!isTreeGridTimeDateColumn(grid, row, col)) {\n return;\n }\n\n (normalizedRow as Record<string, unknown>)[col] = getTreeGridTimeDateDisplayValue(grid, row, col);\n });\n\n return normalizedRow;\n};\n\n/**\n * TreeGrid ์ธ๋ถ ๋ฐํ ํ ๋ชฉ๋ก Date ์๊ฐ ๊ฐ ์ ๊ทํ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param rows ๋์ ํ ๋ชฉ๋ก\n */\nexport const normalizeTreeGridExternalRows = <T>(grid: TGrid, rows: Array<TRow & T>) =>\n rows.map((row) => normalizeTreeGridExternalRow(grid, row));\n\n/**\n * ์ ๊ท ํ ์ถ๊ฐ ๋์ ๊ณ์ฐ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param options ํ ์ถ๊ฐ ์ต์
\n */\nconst resolveRowInsertionTarget = <T>(grid: TGrid, options?: TreeGridAddRowOptions<T>) => {\n const insertPosition = options?.insertPosition ?? 'top';\n const parent = options?.parent;\n const anchorRow = options?.anchorRow;\n\n let resolvedParent = parent ?? (anchorRow ? anchorRow.parentNode : null) ?? grid.GetFirst();\n let next = null;\n\n switch (insertPosition) {\n case 'top':\n next = grid.GetFirst();\n break;\n\n case 'last':\n resolvedParent = grid.GetNext(grid.GetLast(), grid.RowCount > 0 ? grid.RowCount + 1 : 0);\n next = resolvedParent;\n break;\n\n case 'above':\n next = anchorRow ?? grid.GetFirst();\n break;\n\n case 'below':\n next = anchorRow?.nextSibling ?? grid.GetFirst();\n break;\n }\n\n return { resolvedParent, next };\n};\n\n/**\n * ์ ๊ท ํ ์ด๊ธฐ๊ฐ ๋ฐ์\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row ์์ฑ๋ TreeGrid ํ\n * @param initialValues ์ ๊ท ํ ์ด๊ธฐ๊ฐ\n */\nconst assignInitialRowValues = <T>(grid: TGrid, row: TRow, initialValues?: T) => {\n if (!isPlainObject(initialValues)) {\n return;\n }\n\n const initialValueKeys = Object.keys(initialValues as Record<string, unknown>).filter(Boolean);\n\n (row as TreeGridAddedRowMetadata)[TREEGRID_ADDED_ROW_INITIAL_VALUE_KEYS_KEY] = initialValueKeys;\n\n Object.entries(initialValues as Record<string, unknown>).forEach(([rowKey, rowValue]) => {\n if (grid.Cols?.[rowKey]?.Type === 'Date' && typeof rowValue === 'string') {\n grid.SetString(row, rowKey, rowValue, 0);\n return;\n }\n\n (row as unknown as Record<string, unknown>)[rowKey] = rowValue;\n });\n};\n\n/**\n * ๋ณ๊ฒฝ ๋ฐ์ดํฐ ์ปฌ๋ผ ํค ์ฌ๋ถ ํ์ธ\n * @param key ์ปฌ๋ผ ํค\n */\nconst isTreeGridDataKey = (key: string) => {\n return TREEGRID_DATA_KEY_PREFIXES.some((prefix) => key.startsWith(prefix));\n};\n\n/**\n * TreeGrid ์จ๊น ๊ฐ ์ฌ๋ถ\n * @param value Visible ์์ฑ๊ฐ\n */\nconst isHiddenTreeGridValue = (value: unknown) => {\n return value === 0 || value === false || value === '0';\n};\n\n/**\n * TreeGrid ํ์ ์ปฌ๋ผ ์ฌ๋ถ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param key ์ปฌ๋ผ ํค\n */\nconst isVisibleTreeGridColumn = (grid: TGrid | undefined, key: string) => {\n return !isHiddenTreeGridValue(grid?.Cols?.[key]?.Visible);\n};\n\n/**\n * addTreeGridRowById ์์ฑ ํ ์ด๊ธฐ๊ฐ ํค ์ฌ๋ถ\n * @param row ๋์ ํ\n * @param key ์ปฌ๋ผ ํค\n */\nconst isTreeGridAddedRowInitialValueKey = (row: TRow | null | undefined, key: string) => {\n return normalizeTreeGridStringValues(\n (row as TreeGridAddedRowMetadata | null)?.[TREEGRID_ADDED_ROW_INITIAL_VALUE_KEYS_KEY],\n ).includes(key);\n};\n\n/**\n * TreeGrid ๋ณ๊ฒฝ ํ ์๋ณธ ์กฐํ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row TreeGrid ๋ณ๊ฒฝ ํ ๋ฐ์ดํฐ\n */\nconst getLiveTreeGridChangedRow = (grid: TGrid | undefined, row: TreeGridChangedRow) => {\n return typeof row.id === 'string'\n ? (grid?.Rows as unknown as Record<string, TRow> | undefined)?.[row.id]\n : null;\n};\n\n/**\n * ์ถ๊ฐ ํ ๋ฐ์ดํฐ ํค ํฌํจ ์ฌ๋ถ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row TreeGrid ๋ณ๊ฒฝ ํ ๋ฐ์ดํฐ\n * @param key ์ปฌ๋ผ ํค\n */\nconst shouldIncludeAddedRowDataKey = (\n grid: TGrid | undefined,\n row: TreeGridChangedRow,\n key: string,\n) => {\n if (!isTreeGridDataKey(key) || isEmpty(row[key])) {\n return false;\n }\n\n if (isVisibleTreeGridColumn(grid, key)) {\n return true;\n }\n\n return isTreeGridAddedRowInitialValueKey(getLiveTreeGridChangedRow(grid, row), key);\n};\n\n/**\n * ์ถ๊ฐ ํ ๋ฐ์ดํฐ ์ ๊ทํ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param row TreeGrid ๋ณ๊ฒฝ ํ ๋ฐ์ดํฐ\n */\nconst normalizeAddedRow = <T>(grid: TGrid | undefined, row: TreeGridChangedRow) => {\n return Object.fromEntries(\n without(Object.keys(row), 'id')\n .filter((key) => shouldIncludeAddedRowDataKey(grid, row, key))\n .map((key) => [key, row[key]]),\n ) as T;\n};\n\n/**\n * ๋ณ๊ฒฝ ์ํ๋ณ ํ ๋ฐ์ดํฐ ๋ฐํ\n * @param rows TreeGrid ๋ณ๊ฒฝ ํ ๋ชฉ๋ก\n * @param status ์กฐํํ ๋ณ๊ฒฝ ์ํ\n */\nconst getChangedRowsByStatus = <T>(\n grid: TGrid | undefined,\n rows: TreeGridChangedRow[],\n status: TreeGridChangeStatus,\n) => {\n return rows\n .filter((row) => get(row, status) === '1' && row.Deleted !== '1')\n .map((row) =>\n status === 'Changed' ? omit(row, ['id', 'Changed']) : normalizeAddedRow<T>(grid, row),\n )\n .filter((row) => !isEmpty(row));\n};\n\n/**\n * TreeGrid ๋ณ๊ฒฝ ํ Date ์๊ฐ ๊ฐ ์ ๊ทํ\n * @param grid TreeGrid ์ธ์คํด์ค\n * @param rows ๋ณ๊ฒฝ ํ ๋ชฉ๋ก\n */\nconst normalizeTreeGridChangedRows = (grid: TGrid | undefined, rows: TreeGridChangedRow[]) => {\n if (!grid) {\n return rows;\n }\n\n return rows.map((row) => {\n const liveRow =\n typeof row.id === 'string'\n ? (grid.Rows as unknown as Record<string, TRow>)[row.id]\n : null;\n\n if (!liveRow) {\n return row;\n }\n\n const normalizedRow = { ...row };\n\n Object.keys(row).forEach((col) => {\n if (!isTreeGridTimeDateColumn(grid, liveRow, col)) {\n return;\n }\n\n normalizedRow[col] = getTreeGridTimeDateDisplayValue(grid, liveRow, col);\n });\n\n return normalizedRow;\n });\n};\n\n/**\n * TreeGrid ์ธ์คํด์ค ID ์กฐํ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const getTreeGridById = (gridId: string) => {\n return Grids[gridId];\n};\n\n/**\n * TreeGrid ๋ฐ์ดํฐ ํ ๋ชฉ๋ก ์กฐํ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const getTreeGridDataRowsById = <T>(gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n return grid ? (normalizeTreeGridExternalRows<T>(grid, getDataRows(grid) as Array<TRow & T>) as T) : [];\n};\n\n/**\n * TreeGrid Body ๋ฐ์ดํฐ ๊ต์ฒด ํ ์ฌ๋ก๋\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param rows ์๋ก ๋ฐ์ํ ํ ๋ฐ์ดํฐ\n */\nexport const reloadTreeGridBodyById = (gridId: string, rows: unknown) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n // @ts-expect-error - Data property not defined in type\n const currentData = grid.Data.Data;\n\n // @ts-expect-error - Data property not defined in type\n grid.Data.Data = {\n ...currentData,\n Data: { Body: [rows || []] },\n Url: '',\n };\n grid.ReloadBody();\n window.setTimeout(() => {\n emitTreeGridBodyRowsChanged(gridId);\n }, 0);\n};\n\n/**\n * ํ์ ํน์ ์์น์ ์ถ๊ฐ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param options.canSelect ํ ์ ํ ๊ฐ๋ฅ ์ฌ๋ถ\n * @param options.parent ๋ถ๋ชจ ํ\n * @param options.anchorRow above/below์ฉ ๊ธฐ์ค ํ\n * @param options.insertPosition ํ ์ฝ์
์์น\n * @param options.initialValues ์ ๊ท ํ ์ด๊ธฐ๊ฐ\n */\nexport const addTreeGridRowById = <T>(\n gridId: string,\n options?: TreeGridAddRowOptions<T>,\n) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n const canSelect = options?.canSelect;\n const initialValues = options?.initialValues;\n const { resolvedParent, next } = resolveRowInsertionTarget(grid, options);\n\n const newRow = grid.AddRow(resolvedParent, next, 1);\n\n markTreeGridRowAddedById(newRow);\n assignInitialRowValues(grid, newRow, initialValues);\n markTreeGridAddedRowBaselineValues(grid, newRow);\n\n newRow.CanEdit = 1;\n newRow.CanDelete = 1;\n newRow.CanSelect = canSelect ? 1 : 0;\n\n grid.Focus(newRow);\n grid.RefreshRow(newRow);\n window.setTimeout(() => {\n emitTreeGridBodyRowsChanged(gridId);\n }, 0);\n};\n\n/**\n * TreeGrid ์ถ๊ฐ/์์ ๋ฐ์ดํฐ ํ ์กฐํ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const getTreeGridRowChangesById = <T>(gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n const changesData = parseTreeGridXmlToJson(grid?.GetXmlData('changes,allcols,nogrid,noio'));\n\n if (!isArray(changesData)) {\n return { added: [], changed: [] };\n }\n\n return Object.fromEntries(\n TREEGRID_CHANGE_STATUSES.map((status) => [\n lowerCase(status),\n getChangedRowsByStatus<T>(\n grid,\n normalizeTreeGridChangedRows(grid, changesData as TreeGridChangedRow[]),\n status,\n ),\n ]),\n ) as { added: T[]; changed: T[] };\n};\n\n/**\n * TreeGrid ๋ฐ์ดํฐ ์์
๋ด๋ณด๋ด๊ธฐ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param title ๋ค์ด๋ก๋ ํ์ผ๋ช
\n */\nexport const exportTreeGridToExcelById = (gridId: string, title?: string) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n void loadExportTreeGridExcel().then((exportTreeGridExcel) =>\n exportTreeGridExcel(grid, { exportName: title ?? '' }),\n );\n};\n\n/**\n * TreeGrid ํ์ฌ ์ ํ ํ ๋ชฉ๋ก ์กฐํ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const getTreeGridSelectedRowsById = <T>(gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n const selectedRows = grid?.GetSelRows();\n\n return grid && selectedRows\n ? (normalizeTreeGridExternalRows<T>(grid, selectedRows as Array<TRow & T>) as T)\n : [];\n};\n\n/**\n * TreeGrid ์ปฌ๋ผ ํ์ ์ฌ๋ถ ๋ณ๊ฒฝ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param options.targetKey ํ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ปฌ๋ผ ํค\n * @param options.canVisible ์ปฌ๋ผ ํ์ ์ฌ๋ถ\n */\nexport const setTreeGridColumnVisibilityById = (\n gridId: string,\n options: TreeGridColumnVisibilityOptions,\n) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid || !options?.targetKey) {\n return;\n }\n\n const targetKey = options?.targetKey;\n const canVisible = options?.canVisible;\n\n if (canVisible) {\n grid.ShowCol(targetKey);\n return;\n }\n grid.HideCol(targetKey);\n};\n\n/**\n * ํน์ ์
๊ฐ์กฐ ์คํ์ผ ์ ์ฉ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param targetOption.row ๊ฐ์กฐํ ๋์ ํ\n * @param targetOption.col ๊ฐ์กฐํ ๋์ ์ปฌ๋ผ\n */\nexport const highlightTreeGridCellById = (\n gridId: string,\n targetOption: TreeGridHighlightTargetOption,\n) => {\n const grid = getTreeGridById(gridId);\n\n const row = targetOption?.row;\n const col = targetOption?.col;\n\n if (!grid || !row || !col) {\n return;\n }\n\n preserveTreeGridCellStyleBaseline(grid, row, col);\n grid.SetValue(row, `${col}Class`, TREEGRID_CELL_CHANGED_CLASS);\n grid.SetValue(row, `${col}Color`, targetOption.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR);\n grid.RefreshCell(row, col);\n};\n\n/**\n * ํน์ ์
๊ฐ์กฐ ์คํ์ผ ์ ๊ฑฐ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param targetOption.row ๊ฐ์กฐ ํด์ ๋์ ํ\n * @param targetOption.col ๊ฐ์กฐ ํด์ ๋์ ์ปฌ๋ผ\n */\nexport const clearTreeGridCellHighlightById = (\n gridId: string,\n targetOption: Pick<TreeGridHighlightTargetOption, 'row' | 'col'>,\n) => {\n const grid = getTreeGridById(gridId);\n\n const row = targetOption?.row;\n const col = targetOption?.col;\n\n if (!grid || !row || !col) {\n return;\n }\n\n const styleBaseline = getTreeGridCellStyleBaseline(row, col);\n\n grid.SetValue(row, `${col}Class`, styleBaseline?.className ?? '');\n grid.SetValue(row, `${col}Color`, styleBaseline?.color ?? '');\n grid.RefreshCell(row, col);\n};\n\n/**\n * TreeGrid ํ์ฌ ์ ํ ์ํ ์ ์ฒด ํด์ \n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const resetTreeGridSelectionById = (gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n grid.ActionDeselectAll(1, 0);\n};\n\n/**\n * ์ฌ๋ฌ TreeGrid ์ ํ ์ํ ์ ์ฒด ํด์ \n * @param gridIds TreeGrid ์ธ์คํด์ค ID ๋ชฉ๋ก\n */\nexport const resetTreeGridSelectionsByIds = (gridIds: string[]) => {\n gridIds.forEach(resetTreeGridSelectionById);\n};\n\n/**\n * TreeGrid ๋ณ๊ฒฝ ์ฌํญ ๋ฐ ์ ํ ์ํ ์ด๊ธฐํ\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n */\nexport const resetTreeGridChangesById = (gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n grid.ActionUndoAll(1, 0);\n resetTreeGridSelectionById(gridId);\n window.setTimeout(() => {\n emitTreeGridBodyRowsChanged(gridId);\n }, 0);\n};\n\n/**\n * ์ฌ๋ฌ TreeGrid ๋ณ๊ฒฝ ์ฌํญ ๋ฐ ์ ํ ์ํ ์ด๊ธฐํ\n * @param gridIds TreeGrid ์ธ์คํด์ค ID ๋ชฉ๋ก\n */\nexport const resetTreeGridChangesByIds = (gridIds: string[]) => {\n gridIds.forEach(resetTreeGridChangesById);\n};\n\n/**\n * TreeGrid Enum ์ปฌ๋ผ ์ต์
๋ฐ์\n * @param gridId TreeGrid ์ธ์คํด์ค ID\n * @param columnName Enum์ ์ ์ฉํ ์ปฌ๋ผ๋ช
\n * @param options Enum ์ต์
๋ชฉ๋ก\n * @param valueKey Enum ๊ฐ์ผ๋ก ์ฌ์ฉํ ํ๋๋ช
\n * @param labelKeys Enum ๋ผ๋ฒจ๋ก ์ฌ์ฉํ ํ๋ ์ฐ์ ์์ ๋ชฉ๋ก\n */\nexport const setTreeGridColumnEnumOptionsById = <T extends object>(\n gridId: string,\n columnName: string,\n options: T[] | undefined,\n valueKey: keyof T & string,\n labelKeys: Array<keyof T & string>,\n) => {\n if (!options?.length) {\n return;\n }\n\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return;\n }\n\n const enumValues = options\n .map((item) => {\n const option = item as Record<string, unknown>;\n const labelValue = labelKeys\n .map((labelKey) => option[labelKey])\n .find((value) => value !== undefined && value !== null && value !== '');\n\n return `${labelValue ?? ''}`;\n })\n .join('|');\n const enumKeys = options\n .map((item) => `${(item as Record<string, unknown>)[valueKey] ?? ''}`)\n .join('|');\n\n grid.SetAttribute(null, columnName, 'Type', 'Enum', 0, 0);\n grid.SetAttribute(null, columnName, 'Enum', `|${enumValues}`, 0, 0);\n grid.SetAttribute(null, columnName, 'EnumKeys', `|${enumKeys}`, 1, 0);\n};\n"],"names":["TREEGRID_CHANGE_STATUSES","TREEGRID_DATA_KEY_PREFIXES","TREEGRID_TIME_DATE_FORMAT_PATTERN","TREEGRID_ADDED_ROW_BY_ID_FLAG","TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY","TREEGRID_ADDED_ROW_INITIAL_VALUE_KEYS_KEY","TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY","TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY","normalizeTreeGridStringValues","__name","value","isArray","item","normalizeTreeGridAddedRowHighlightColumns","markTreeGridRowAddedById","row","isTreeGridRowAddedById","addedById","appendTreeGridAddedRowHighlightColumn","col","targetRow","currentColumns","removeTreeGridAddedRowHighlightColumn","nextColumns","column","getTreeGridAddedRowHighlightColumns","getTreeGridCellComparableValue","grid","cellType","_a","_c","_b","rawValue","_d","displayValue","_e","markTreeGridAddedRowBaselineValues","baselineValues","getTreeGridAddedRowBaselineValue","preserveTreeGridCellStyleBaseline","getTreeGridCellStyleBaseline","loadExportTreeGridExcel","exportTreeGridExcel","getDataRows","isTreeGridTimeDateFormat","format","isTreeGridTimeDateColumn","rowRecord","getTreeGridTimeDateDisplayValue","normalizeTreeGridExternalRow","normalizedRow","normalizeTreeGridExternalRows","rows","resolveRowInsertionTarget","options","insertPosition","parent","anchorRow","resolvedParent","next","assignInitialRowValues","initialValues","isPlainObject","initialValueKeys","rowKey","rowValue","isTreeGridDataKey","key","prefix","isHiddenTreeGridValue","isVisibleTreeGridColumn","isTreeGridAddedRowInitialValueKey","getLiveTreeGridChangedRow","shouldIncludeAddedRowDataKey","isEmpty","normalizeAddedRow","without","getChangedRowsByStatus","status","get","omit","normalizeTreeGridChangedRows","liveRow","getTreeGridById","gridId","getTreeGridDataRowsById","reloadTreeGridBodyById","currentData","emitTreeGridBodyRowsChanged","addTreeGridRowById","canSelect","newRow","getTreeGridRowChangesById","changesData","parseTreeGridXmlToJson","lowerCase","exportTreeGridToExcelById","title","getTreeGridSelectedRowsById","selectedRows","setTreeGridColumnVisibilityById","targetKey","highlightTreeGridCellById","targetOption","TREEGRID_CELL_CHANGED_CLASS","TREEGRID_CELL_HIGHLIGHT_COLOR","clearTreeGridCellHighlightById","styleBaseline","resetTreeGridSelectionById","resetTreeGridSelectionsByIds","gridIds","resetTreeGridChangesById","resetTreeGridChangesByIds","setTreeGridColumnEnumOptionsById","columnName","valueKey","labelKeys","enumValues","option","labelKey","enumKeys"],"mappings":"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"}
|