@owp/core 2.3.0 → 2.4.0
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/_virtual/index10.js +2 -2
- package/dist/_virtual/index12.js +2 -2
- package/dist/_virtual/index13.js +2 -2
- package/dist/_virtual/index14.js +2 -2
- package/dist/_virtual/index15.js +2 -2
- package/dist/_virtual/index5.js +2 -2
- package/dist/components/OwpDialog/OwpDialog.js +30 -32
- package/dist/components/OwpDialog/OwpDialog.js.map +1 -1
- package/dist/components/OwpLayout/OwpLayout.js +39 -39
- package/dist/components/OwpLayout/OwpLayout.js.map +1 -1
- package/dist/components/OwpMrtTable/OwpMrtTable.js +393 -255
- package/dist/components/OwpMrtTable/OwpMrtTable.js.map +1 -1
- package/dist/components/OwpTable/OwpDataTable.js +45 -45
- package/dist/components/OwpTable/OwpDataTable.js.map +1 -1
- package/dist/components/OwpTable/OwpTable.js +6 -6
- package/dist/components/OwpTable/OwpTable.js.map +1 -1
- package/dist/components/OwpTable/OwpVerticalTable.js +55 -53
- package/dist/components/OwpTable/OwpVerticalTable.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +169 -148
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.js +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.js +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.js.map +1 -1
- package/dist/components/OwpTreeGrid/{hooks → internal/hooks}/useOwpTreeGridOverlayFrame.js +1 -1
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridOverlayFrame.js.map +1 -0
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js +84 -0
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js.map +1 -0
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +114 -103
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/utils/perf.js.map +1 -0
- package/dist/constants/storageKeys.js +1 -0
- package/dist/constants/storageKeys.js.map +1 -1
- package/dist/hooks/useCurrentUserSeq.js +11 -0
- package/dist/hooks/useCurrentUserSeq.js.map +1 -0
- package/dist/hooks.js +67 -64
- package/dist/hooks.js.map +1 -1
- package/dist/index.js +58 -59
- package/dist/layout/Layout.js +24 -24
- package/dist/layout/Layout.js.map +1 -1
- package/dist/layout/themeLayouts.js.map +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
- package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
- package/dist/owp-app.css +1 -1
- package/dist/types/components/OwpDialog/OwpDialog.d.ts +1 -9
- package/dist/types/components/OwpMrtTable/OwpMrtTable.d.ts +9 -0
- package/dist/types/components/OwpTable/OwpVerticalTable.d.ts +3 -1
- package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +7 -1
- package/dist/types/components/OwpTreeGrid/index.d.ts +1 -1
- package/dist/types/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.d.ts +1 -1
- package/dist/types/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.d.ts +1 -1
- package/dist/types/components/OwpTreeGrid/internal/treeGridColumnEditRules.d.ts +60 -0
- package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +7 -2
- package/dist/types/constants/storageKeys.d.ts +1 -0
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useCurrentUserSeq.d.ts +8 -0
- package/dist/types/layout/Layout.d.ts +2 -0
- package/dist/types/layout/themeLayouts.d.ts +2 -0
- package/dist/types/utils/treeGridExportExcelUtil.d.ts +0 -4
- package/dist/types/utils/treeGridUtil.d.ts +0 -59
- package/dist/utils/treeGridExportExcelUtil.js +57 -58
- package/dist/utils/treeGridExportExcelUtil.js.map +1 -1
- package/dist/utils/treeGridUtil.js +69 -83
- package/dist/utils/treeGridUtil.js.map +1 -1
- package/dist/utils.js +71 -86
- package/package.json +2 -2
- package/dist/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.js.map +0 -1
- package/dist/components/OwpTreeGrid/utils/perf.js.map +0 -1
- /package/dist/components/OwpTreeGrid/{utils → internal/utils}/perf.js +0 -0
- /package/dist/types/components/OwpTreeGrid/{hooks → internal/hooks}/useOwpTreeGridOverlayFrame.d.ts +0 -0
- /package/dist/types/components/OwpTreeGrid/{utils → internal/utils}/perf.d.ts +0 -0
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
var E = Object.defineProperty;
|
|
2
|
-
var
|
|
3
|
-
import { TREEGRID_CELL_HIGHLIGHT_CLASS as
|
|
4
|
-
import { TREEGRID_INPUT_CELL_COLOR as
|
|
5
|
-
import { parseTreeGridXmlToJson as
|
|
6
|
-
import { emitTreeGridBodyRowsChanged as
|
|
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
|
|
2
|
+
var c = (t, e) => E(t, "name", { value: e, configurable: !0 });
|
|
3
|
+
import { TREEGRID_CELL_HIGHLIGHT_CLASS as f, TREEGRID_CELL_HIGHLIGHT_COLOR as C } from "../constants/treeGrid.js";
|
|
4
|
+
import { TREEGRID_INPUT_CELL_COLOR as le, TREEGRID_WARNING_CELL_COLOR as de } from "../constants/treeGrid.js";
|
|
5
|
+
import { parseTreeGridXmlToJson as w } from "../components/OwpTreeGrid/internal/treeGridLayout.js";
|
|
6
|
+
import { emitTreeGridBodyRowsChanged as m } from "./treeGridBodyRowsEvent.js";
|
|
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 I } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/string/lowerCase.js";
|
|
9
|
+
import { isPlainObject as h } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/predicate/isPlainObject.js";
|
|
10
|
+
import { get as b } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/get.js";
|
|
11
|
+
import { omit as D } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/omit.js";
|
|
12
|
+
import { isEmpty as G } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js";
|
|
13
|
+
import { without as S } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/without.js";
|
|
14
|
+
const B = ["Added", "Changed"], A = ["OWP", "IPX"], _ = /* @__PURE__ */ c(async () => {
|
|
15
15
|
const { exportTreeGridExcel: t } = await import("./treeGridExportExcelUtil.js");
|
|
16
16
|
return t;
|
|
17
|
-
}, "loadExportTreeGridExcel"),
|
|
18
|
-
const r = (e == null ? void 0 : e.insertPosition) ?? "top", n = e == null ? void 0 : e.parent,
|
|
19
|
-
let l = n ?? (
|
|
17
|
+
}, "loadExportTreeGridExcel"), L = /* @__PURE__ */ c((t) => Object.values((t == null ? void 0 : t.Rows) ?? {}).filter((e) => e.Kind === "Data"), "getDataRows"), x = /* @__PURE__ */ c((t, e) => {
|
|
18
|
+
const r = (e == null ? void 0 : e.insertPosition) ?? "top", n = e == null ? void 0 : e.parent, s = e == null ? void 0 : e.anchorRow;
|
|
19
|
+
let l = n ?? (s ? s.parentNode : null) ?? t.GetFirst(), d = null;
|
|
20
20
|
switch (r) {
|
|
21
21
|
case "top":
|
|
22
22
|
d = t.GetFirst();
|
|
@@ -25,23 +25,23 @@ const g = ["Added", "Changed"], A = ["OWP", "IPX"], _ = /* @__PURE__ */ s(async
|
|
|
25
25
|
l = t.GetNext(t.GetLast(), t.RowCount > 0 ? t.RowCount + 1 : 0), d = l;
|
|
26
26
|
break;
|
|
27
27
|
case "above":
|
|
28
|
-
d =
|
|
28
|
+
d = s ?? t.GetFirst();
|
|
29
29
|
break;
|
|
30
30
|
case "below":
|
|
31
|
-
d = (
|
|
31
|
+
d = (s == null ? void 0 : s.nextSibling) ?? t.GetFirst();
|
|
32
32
|
break;
|
|
33
33
|
}
|
|
34
34
|
return { resolvedParent: l, next: d };
|
|
35
|
-
}, "resolveRowInsertionTarget"),
|
|
36
|
-
|
|
35
|
+
}, "resolveRowInsertionTarget"), g = /* @__PURE__ */ c((t, e) => {
|
|
36
|
+
h(e) && Object.entries(e).forEach(([r, n]) => {
|
|
37
37
|
t[r] = n;
|
|
38
38
|
});
|
|
39
|
-
}, "assignInitialRowValues"),
|
|
40
|
-
|
|
41
|
-
), "normalizeAddedRow"), j = /* @__PURE__ */
|
|
39
|
+
}, "assignInitialRowValues"), V = /* @__PURE__ */ c((t) => A.some((e) => t.startsWith(e)), "isTreeGridDataKey"), P = /* @__PURE__ */ c((t) => Object.fromEntries(
|
|
40
|
+
S(Object.keys(t), "id").filter((e) => V(e) && !G(t[e])).map((e) => [e, t[e]])
|
|
41
|
+
), "normalizeAddedRow"), j = /* @__PURE__ */ c((t, e) => t.filter((r) => b(r, e) === "1" && r.Deleted !== "1").map((r) => e === "Changed" ? D(r, ["id", "Changed"]) : P(r)).filter((r) => !G(r)), "getChangedRowsByStatus"), a = /* @__PURE__ */ c((t) => Grids[t], "getTreeGridById"), Y = /* @__PURE__ */ c((t) => {
|
|
42
42
|
const e = a(t);
|
|
43
|
-
return
|
|
44
|
-
}, "getTreeGridDataRowsById"),
|
|
43
|
+
return L(e);
|
|
44
|
+
}, "getTreeGridDataRowsById"), q = /* @__PURE__ */ c((t, e) => {
|
|
45
45
|
const r = a(t);
|
|
46
46
|
if (!r)
|
|
47
47
|
return;
|
|
@@ -51,33 +51,33 @@ const g = ["Added", "Changed"], A = ["OWP", "IPX"], _ = /* @__PURE__ */ s(async
|
|
|
51
51
|
Data: { Body: [e || []] },
|
|
52
52
|
Url: ""
|
|
53
53
|
}, r.ReloadBody(), window.setTimeout(() => {
|
|
54
|
-
|
|
54
|
+
m(t);
|
|
55
55
|
}, 0);
|
|
56
|
-
}, "reloadTreeGridBodyById"),
|
|
56
|
+
}, "reloadTreeGridBodyById"), M = /* @__PURE__ */ c((t, e) => {
|
|
57
57
|
const r = a(t);
|
|
58
58
|
if (!r)
|
|
59
59
|
return;
|
|
60
|
-
const n = e == null ? void 0 : e.canSelect,
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
const n = e == null ? void 0 : e.canSelect, s = e == null ? void 0 : e.initialValues, { resolvedParent: l, next: d } = x(r, e), o = r.AddRow(l, d, 1);
|
|
61
|
+
g(o, s), o.CanEdit = 1, o.CanDelete = 1, o.CanSelect = n ? 1 : 0, r.Focus(o), r.RefreshRow(o), window.setTimeout(() => {
|
|
62
|
+
m(t);
|
|
63
63
|
}, 0);
|
|
64
|
-
}, "addTreeGridRowById"),
|
|
65
|
-
const e = a(t), r =
|
|
66
|
-
return
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
}, "addTreeGridRowById"), Q = /* @__PURE__ */ c((t) => {
|
|
65
|
+
const e = a(t), r = w(e == null ? void 0 : e.GetXmlData("changes,allcols,nogrid,noio"));
|
|
66
|
+
return y(r) ? Object.fromEntries(
|
|
67
|
+
B.map((n) => [
|
|
68
|
+
I(n),
|
|
69
69
|
j(r, n)
|
|
70
70
|
])
|
|
71
71
|
) : { added: [], changed: [] };
|
|
72
|
-
}, "getTreeGridRowChangesById"),
|
|
72
|
+
}, "getTreeGridRowChangesById"), Z = /* @__PURE__ */ c((t, e) => {
|
|
73
73
|
const r = a(t);
|
|
74
74
|
r && _().then(
|
|
75
75
|
(n) => n(r, { exportName: e ?? "" })
|
|
76
76
|
);
|
|
77
|
-
}, "exportTreeGridToExcelById"),
|
|
77
|
+
}, "exportTreeGridToExcelById"), p = /* @__PURE__ */ c((t) => {
|
|
78
78
|
const e = a(t);
|
|
79
79
|
return (e == null ? void 0 : e.GetSelRows()) ?? [];
|
|
80
|
-
}, "getTreeGridSelectedRowsById"),
|
|
80
|
+
}, "getTreeGridSelectedRowsById"), ee = /* @__PURE__ */ c((t, e) => {
|
|
81
81
|
const r = a(t);
|
|
82
82
|
if (!r || !(e != null && e.targetKey))
|
|
83
83
|
return;
|
|
@@ -87,22 +87,22 @@ const g = ["Added", "Changed"], A = ["OWP", "IPX"], _ = /* @__PURE__ */ s(async
|
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
89
|
r.HideCol(n);
|
|
90
|
-
}, "setTreeGridColumnVisibilityById"),
|
|
91
|
-
const r = a(t), n = e == null ? void 0 : e.row,
|
|
92
|
-
!r || !n || !
|
|
93
|
-
}, "highlightTreeGridCellById"),
|
|
90
|
+
}, "setTreeGridColumnVisibilityById"), te = /* @__PURE__ */ c((t, e) => {
|
|
91
|
+
const r = a(t), n = e == null ? void 0 : e.row, s = e == null ? void 0 : e.col;
|
|
92
|
+
!r || !n || !s || (r.SetValue(n, `${s}Class`, f), r.SetValue(n, `${s}Color`, C), r.RefreshCell(n, s));
|
|
93
|
+
}, "highlightTreeGridCellById"), R = /* @__PURE__ */ c((t) => {
|
|
94
94
|
const e = a(t);
|
|
95
95
|
e && e.ActionDeselectAll(1, 0);
|
|
96
|
-
}, "resetTreeGridSelectionById"),
|
|
97
|
-
t.forEach(
|
|
98
|
-
}, "resetTreeGridSelectionsByIds"),
|
|
96
|
+
}, "resetTreeGridSelectionById"), re = /* @__PURE__ */ c((t) => {
|
|
97
|
+
t.forEach(R);
|
|
98
|
+
}, "resetTreeGridSelectionsByIds"), H = /* @__PURE__ */ c((t) => {
|
|
99
99
|
const e = a(t);
|
|
100
|
-
e && (e.ActionUndoAll(1, 0),
|
|
101
|
-
|
|
100
|
+
e && (e.ActionUndoAll(1, 0), R(t), window.setTimeout(() => {
|
|
101
|
+
m(t);
|
|
102
102
|
}, 0));
|
|
103
|
-
}, "resetTreeGridChangesById"),
|
|
104
|
-
t.forEach(
|
|
105
|
-
}, "resetTreeGridChangesByIds"),
|
|
103
|
+
}, "resetTreeGridChangesById"), ne = /* @__PURE__ */ c((t) => {
|
|
104
|
+
t.forEach(H);
|
|
105
|
+
}, "resetTreeGridChangesByIds"), ce = /* @__PURE__ */ c((t, e, r, n, s) => {
|
|
106
106
|
if (!(r != null && r.length))
|
|
107
107
|
return;
|
|
108
108
|
const l = a(t);
|
|
@@ -110,42 +110,28 @@ const g = ["Added", "Changed"], A = ["OWP", "IPX"], _ = /* @__PURE__ */ s(async
|
|
|
110
110
|
return;
|
|
111
111
|
const d = r.map((u) => {
|
|
112
112
|
const T = u;
|
|
113
|
-
return `${
|
|
113
|
+
return `${s.map((i) => T[i]).find((i) => i != null && i !== "") ?? ""}`;
|
|
114
114
|
}).join("|"), o = r.map((u) => `${u[n] ?? ""}`).join("|");
|
|
115
115
|
l.SetAttribute(null, e, "Type", "Enum", 0, 0), l.SetAttribute(null, e, "Enum", `|${d}`, 0, 0), l.SetAttribute(null, e, "EnumKeys", `|${o}`, 1, 0);
|
|
116
|
-
}, "setTreeGridColumnEnumOptionsById")
|
|
116
|
+
}, "setTreeGridColumnEnumOptionsById");
|
|
117
117
|
export {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
Ge as changeVisibleCellByGridId,
|
|
125
|
-
ie as exportExcelById,
|
|
126
|
-
N as exportTreeGridToExcelById,
|
|
127
|
-
oe as getChangedDataRowsById,
|
|
128
|
-
ae as getDataRowsById,
|
|
129
|
-
ce as getGridById,
|
|
130
|
-
ue as getSelectedRowsById,
|
|
118
|
+
f as TREEGRID_CELL_HIGHLIGHT_CLASS,
|
|
119
|
+
C as TREEGRID_CELL_HIGHLIGHT_COLOR,
|
|
120
|
+
le as TREEGRID_INPUT_CELL_COLOR,
|
|
121
|
+
de as TREEGRID_WARNING_CELL_COLOR,
|
|
122
|
+
M as addTreeGridRowById,
|
|
123
|
+
Z as exportTreeGridToExcelById,
|
|
131
124
|
a as getTreeGridById,
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
W as resetTreeGridChangesByIds,
|
|
144
|
-
m as resetTreeGridSelectionById,
|
|
145
|
-
k as resetTreeGridSelectionsByIds,
|
|
146
|
-
Ce as setGridEnum,
|
|
147
|
-
me as setHighlightTargetCellByGridId,
|
|
148
|
-
z as setTreeGridColumnEnumOptionsById,
|
|
149
|
-
U as setTreeGridColumnVisibilityById
|
|
125
|
+
Y as getTreeGridDataRowsById,
|
|
126
|
+
Q as getTreeGridRowChangesById,
|
|
127
|
+
p as getTreeGridSelectedRowsById,
|
|
128
|
+
te as highlightTreeGridCellById,
|
|
129
|
+
q as reloadTreeGridBodyById,
|
|
130
|
+
H as resetTreeGridChangesById,
|
|
131
|
+
ne as resetTreeGridChangesByIds,
|
|
132
|
+
R as resetTreeGridSelectionById,
|
|
133
|
+
re as resetTreeGridSelectionsByIds,
|
|
134
|
+
ce as setTreeGridColumnEnumOptionsById,
|
|
135
|
+
ee as setTreeGridColumnVisibilityById
|
|
150
136
|
};
|
|
151
137
|
//# 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};\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'];\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 row 생성된 TreeGrid 행\n * @param initialValues 신규 행 초기값\n */\nconst assignInitialRowValues = <T>(row: TRow, initialValues?: T) => {\n if (!isPlainObject(initialValues)) {\n return;\n }\n\n Object.entries(initialValues as Record<string, unknown>).forEach(([rowKey, rowValue]) => {\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 assignInitialRowValues(newRow, initialValues);\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 grid.SetValue(row, `${col}Class`, TREEGRID_CELL_HIGHLIGHT_CLASS);\n grid.SetValue(row, `${col}Color`, TREEGRID_CELL_HIGHLIGHT_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\n/**\n * @deprecated `getTreeGridById` 사용\n */\nexport const getGridById = getTreeGridById;\n\n/**\n * @deprecated `getTreeGridDataRowsById` 사용\n */\nexport const getDataRowsById = getTreeGridDataRowsById;\n\n/**\n * @deprecated `reloadTreeGridBodyById` 사용\n */\nexport const reloadBodyById = reloadTreeGridBodyById;\n\n/**\n * @deprecated `addTreeGridRowById` 사용\n */\nexport const addRowById = addTreeGridRowById;\n\n/**\n * @deprecated `getTreeGridRowChangesById` 사용\n */\nexport const getChangedDataRowsById = getTreeGridRowChangesById;\n\n/**\n * @deprecated `exportTreeGridToExcelById` 사용\n */\nexport const exportExcelById = exportTreeGridToExcelById;\n\n/**\n * @deprecated `getTreeGridSelectedRowsById` 사용\n */\nexport const getSelectedRowsById = getTreeGridSelectedRowsById;\n\n/**\n * @deprecated `setTreeGridColumnVisibilityById` 사용\n */\nexport const changeVisibleCellByGridId = setTreeGridColumnVisibilityById;\n\n/**\n * @deprecated `highlightTreeGridCellById` 사용\n */\nexport const setHighlightTargetCellByGridId = highlightTreeGridCellById;\n\n/**\n * @deprecated `resetTreeGridSelectionById` 사용\n */\nexport const resetGridSelection = resetTreeGridSelectionById;\n\n/**\n * @deprecated `resetTreeGridSelectionsByIds` 사용\n */\nexport const resetGridsSelection = resetTreeGridSelectionsByIds;\n\n/**\n * @deprecated `resetTreeGridChangesById` 사용\n */\nexport const resetGridChanges = resetTreeGridChangesById;\n\n/**\n * @deprecated `resetTreeGridChangesByIds` 사용\n */\nexport const resetGridsChanges = resetTreeGridChangesByIds;\n\n/**\n * @deprecated `setTreeGridColumnEnumOptionsById` 사용\n */\nexport const setGridEnum = setTreeGridColumnEnumOptionsById;\n"],"names":["TREEGRID_CHANGE_STATUSES","TREEGRID_DATA_KEY_PREFIXES","loadExportTreeGridExcel","__name","exportTreeGridExcel","getDataRows","grid","item","resolveRowInsertionTarget","options","insertPosition","parent","anchorRow","resolvedParent","next","assignInitialRowValues","row","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","isArray","lowerCase","exportTreeGridToExcelById","title","getTreeGridSelectedRowsById","setTreeGridColumnVisibilityById","targetKey","highlightTreeGridCellById","targetOption","col","TREEGRID_CELL_HIGHLIGHT_CLASS","TREEGRID_CELL_HIGHLIGHT_COLOR","resetTreeGridSelectionById","resetTreeGridSelectionsByIds","gridIds","resetTreeGridChangesById","resetTreeGridChangesByIds","setTreeGridColumnEnumOptionsById","columnName","valueKey","labelKeys","enumValues","option","labelKey","value","enumKeys","getGridById","getDataRowsById","reloadBodyById","addRowById","getChangedDataRowsById","exportExcelById","getSelectedRowsById","changeVisibleCellByGridId","setHighlightTargetCellByGridId","resetGridSelection","resetGridsSelection","resetGridChanges","resetGridsChanges","setGridEnum"],"mappings":"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"}
|
|
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};\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'];\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 row 생성된 TreeGrid 행\n * @param initialValues 신규 행 초기값\n */\nconst assignInitialRowValues = <T>(row: TRow, initialValues?: T) => {\n if (!isPlainObject(initialValues)) {\n return;\n }\n\n Object.entries(initialValues as Record<string, unknown>).forEach(([rowKey, rowValue]) => {\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 assignInitialRowValues(newRow, initialValues);\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 grid.SetValue(row, `${col}Class`, TREEGRID_CELL_HIGHLIGHT_CLASS);\n grid.SetValue(row, `${col}Color`, TREEGRID_CELL_HIGHLIGHT_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","loadExportTreeGridExcel","__name","exportTreeGridExcel","getDataRows","grid","item","resolveRowInsertionTarget","options","insertPosition","parent","anchorRow","resolvedParent","next","assignInitialRowValues","row","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","isArray","lowerCase","exportTreeGridToExcelById","title","getTreeGridSelectedRowsById","setTreeGridColumnVisibilityById","targetKey","highlightTreeGridCellById","targetOption","col","TREEGRID_CELL_HIGHLIGHT_CLASS","TREEGRID_CELL_HIGHLIGHT_COLOR","resetTreeGridSelectionById","resetTreeGridSelectionsByIds","gridIds","resetTreeGridChangesById","resetTreeGridChangesByIds","setTreeGridColumnEnumOptionsById","columnName","valueKey","labelKeys","enumValues","option","labelKey","value","enumKeys"],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -1,103 +1,88 @@
|
|
|
1
|
-
import { generateBarcodeUrl as
|
|
2
|
-
import { buildTreeGridEnumAttributesByCommonCodeList as d, transformCommonCodeBasedOnGroupId as
|
|
3
|
-
import { createDateRangeSearchParams as
|
|
4
|
-
import { createJsonBody as
|
|
5
|
-
import { createJsonString as
|
|
6
|
-
import { exportExcelByBuffer as
|
|
7
|
-
import { fetchFile as
|
|
8
|
-
import { formatDateToYmd as
|
|
9
|
-
import { formatNumber as
|
|
10
|
-
import { getDisplayValue as
|
|
11
|
-
import { getEstimatedTextCellWidth as
|
|
12
|
-
import { getFormDefaultValues as
|
|
13
|
-
import { getStartPagePath as
|
|
14
|
-
import { getTrimmedValue as
|
|
15
|
-
import { isEnterKeyEvent as
|
|
16
|
-
import { getApiLanguageCode as
|
|
1
|
+
import { generateBarcodeUrl as o } from "./utils/barcodeUtil.js";
|
|
2
|
+
import { buildTreeGridEnumAttributesByCommonCodeList as d, transformCommonCodeBasedOnGroupId as m, transformGridEnumByCommonCodeList as i } from "./utils/commonCodeUtils.js";
|
|
3
|
+
import { createDateRangeSearchParams as T } from "./utils/createDateRangeSearchParams.js";
|
|
4
|
+
import { createJsonBody as l } from "./utils/createJsonBody.js";
|
|
5
|
+
import { createJsonString as n } from "./utils/createJsonString.js";
|
|
6
|
+
import { exportExcelByBuffer as E, getIndexByLetters as f, getLettersByIndex as I, setCellValue as L, setMergeCells as g } from "./utils/excelUtil.js";
|
|
7
|
+
import { fetchFile as C } from "./utils/fetchFile.js";
|
|
8
|
+
import { formatDateToYmd as y, getTodayYmd as B } from "./utils/formatDateToYmd.js";
|
|
9
|
+
import { formatNumber as R } from "./utils/formatNumber.js";
|
|
10
|
+
import { getDisplayValue as A } from "./utils/getDisplayValue.js";
|
|
11
|
+
import { getEstimatedTextCellWidth as c } from "./utils/getEstimatedTextCellWidth.js";
|
|
12
|
+
import { getFormDefaultValues as U } from "./utils/getFormDefaultValues.js";
|
|
13
|
+
import { getStartPagePath as N } from "./utils/getStartPagePath.js";
|
|
14
|
+
import { getTrimmedValue as V } from "./utils/getTrimmedValue.js";
|
|
15
|
+
import { isEnterKeyEvent as w } from "./utils/isEnterKeyEvent.js";
|
|
16
|
+
import { getApiLanguageCode as b, getI18nextLanguageCode as M } from "./utils/language.js";
|
|
17
17
|
import { formatTimeInputToHourMinute as W, normalizeTimeToHourMinute as v } from "./utils/normalizeTimeToHourMinute.js";
|
|
18
18
|
import { preloadOnIdle as Y } from "./utils/preloadOnIdle.js";
|
|
19
19
|
import { generateQrCodeUrl as Q } from "./utils/qrCodeUtil.js";
|
|
20
20
|
import { rebuildValue as j } from "./utils/rebuildValue.js";
|
|
21
21
|
import { sanitizePasswordValue as q, sanitizeUserIdValue as X } from "./utils/sanitizeAuthInputValue.js";
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import { saveAsZipFile as
|
|
25
|
-
import { OwpUtils as
|
|
26
|
-
import { DEFAULT_CELL_ALIGNMENT as
|
|
27
|
-
import { TREEGRID_CELL_HIGHLIGHT_CLASS as
|
|
22
|
+
import { exportTreeGridExcel as ee } from "./utils/treeGridExportExcelUtil.js";
|
|
23
|
+
import { addTreeGridRowById as oe, exportTreeGridToExcelById as te, getTreeGridById as de, getTreeGridDataRowsById as me, getTreeGridRowChangesById as ie, getTreeGridSelectedRowsById as ae, highlightTreeGridCellById as Te, reloadTreeGridBodyById as se, resetTreeGridChangesById as le, resetTreeGridChangesByIds as pe, resetTreeGridSelectionById as ne, resetTreeGridSelectionsByIds as xe, setTreeGridColumnEnumOptionsById as Ee, setTreeGridColumnVisibilityById as fe } from "./utils/treeGridUtil.js";
|
|
24
|
+
import { saveAsZipFile as Le } from "./utils/zipUtil.js";
|
|
25
|
+
import { OwpUtils as Ge } from "./utils/common/OwpUtils.js";
|
|
26
|
+
import { DEFAULT_CELL_ALIGNMENT as ue, DEFAULT_HEADER_FILL as ye, DEFAULT_HEADER_FONT as Be, DEFAULT_THIN_BORDER as _e, DEFAULT_VALUE_FONT as Re, DEFAULT_WRAP_CELL_ALIGNMENT as De } from "./constants/excel.js";
|
|
27
|
+
import { TREEGRID_CELL_HIGHLIGHT_CLASS as Oe, TREEGRID_CELL_HIGHLIGHT_COLOR as ce, TREEGRID_INPUT_CELL_COLOR as Fe, TREEGRID_WARNING_CELL_COLOR as Ue } from "./constants/treeGrid.js";
|
|
28
28
|
export {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
oe as
|
|
41
|
-
de as addTreeGridRowById,
|
|
29
|
+
ue as DEFAULT_CELL_ALIGNMENT,
|
|
30
|
+
ye as DEFAULT_HEADER_FILL,
|
|
31
|
+
Be as DEFAULT_HEADER_FONT,
|
|
32
|
+
_e as DEFAULT_THIN_BORDER,
|
|
33
|
+
Re as DEFAULT_VALUE_FONT,
|
|
34
|
+
De as DEFAULT_WRAP_CELL_ALIGNMENT,
|
|
35
|
+
Ge as OwpUtils,
|
|
36
|
+
Oe as TREEGRID_CELL_HIGHLIGHT_CLASS,
|
|
37
|
+
ce as TREEGRID_CELL_HIGHLIGHT_COLOR,
|
|
38
|
+
Fe as TREEGRID_INPUT_CELL_COLOR,
|
|
39
|
+
Ue as TREEGRID_WARNING_CELL_COLOR,
|
|
40
|
+
oe as addTreeGridRowById,
|
|
42
41
|
d as buildTreeGridEnumAttributesByCommonCodeList,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
n as
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
B as fetchFile,
|
|
53
|
-
C as formatDateToYmd,
|
|
54
|
-
_ as formatNumber,
|
|
42
|
+
T as createDateRangeSearchParams,
|
|
43
|
+
l as createJsonBody,
|
|
44
|
+
n as createJsonString,
|
|
45
|
+
E as exportExcelByBuffer,
|
|
46
|
+
ee as exportTreeGridExcel,
|
|
47
|
+
te as exportTreeGridToExcelById,
|
|
48
|
+
C as fetchFile,
|
|
49
|
+
y as formatDateToYmd,
|
|
50
|
+
R as formatNumber,
|
|
55
51
|
W as formatTimeInputToHourMinute,
|
|
56
|
-
|
|
52
|
+
o as generateBarcodeUrl,
|
|
57
53
|
Q as generateQrCodeUrl,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
h as getEstimatedTextCellWidth,
|
|
63
|
-
F as getFormDefaultValues,
|
|
64
|
-
ne as getGridById,
|
|
54
|
+
b as getApiLanguageCode,
|
|
55
|
+
A as getDisplayValue,
|
|
56
|
+
c as getEstimatedTextCellWidth,
|
|
57
|
+
U as getFormDefaultValues,
|
|
65
58
|
M as getI18nextLanguageCode,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
V as isEnterKeyEvent,
|
|
59
|
+
f as getIndexByLetters,
|
|
60
|
+
I as getLettersByIndex,
|
|
61
|
+
N as getStartPagePath,
|
|
62
|
+
B as getTodayYmd,
|
|
63
|
+
de as getTreeGridById,
|
|
64
|
+
me as getTreeGridDataRowsById,
|
|
65
|
+
ie as getTreeGridRowChangesById,
|
|
66
|
+
ae as getTreeGridSelectedRowsById,
|
|
67
|
+
V as getTrimmedValue,
|
|
68
|
+
Te as highlightTreeGridCellById,
|
|
69
|
+
w as isEnterKeyEvent,
|
|
78
70
|
v as normalizeTimeToHourMinute,
|
|
79
71
|
Y as preloadOnIdle,
|
|
80
72
|
j as rebuildValue,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
Ce as resetGridsSelection,
|
|
87
|
-
ue as resetTreeGridChangesById,
|
|
88
|
-
Re as resetTreeGridChangesByIds,
|
|
89
|
-
_e as resetTreeGridSelectionById,
|
|
90
|
-
De as resetTreeGridSelectionsByIds,
|
|
73
|
+
se as reloadTreeGridBodyById,
|
|
74
|
+
le as resetTreeGridChangesById,
|
|
75
|
+
pe as resetTreeGridChangesByIds,
|
|
76
|
+
ne as resetTreeGridSelectionById,
|
|
77
|
+
xe as resetTreeGridSelectionsByIds,
|
|
91
78
|
q as sanitizePasswordValue,
|
|
92
79
|
X as sanitizeUserIdValue,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
i as transformCommonCodeBasedOnGroupId,
|
|
101
|
-
a as transformGridEnumByCommonCodeList
|
|
80
|
+
Le as saveAsZipFile,
|
|
81
|
+
L as setCellValue,
|
|
82
|
+
g as setMergeCells,
|
|
83
|
+
Ee as setTreeGridColumnEnumOptionsById,
|
|
84
|
+
fe as setTreeGridColumnVisibilityById,
|
|
85
|
+
m as transformCommonCodeBasedOnGroupId,
|
|
86
|
+
i as transformGridEnumByCommonCodeList
|
|
102
87
|
};
|
|
103
88
|
//# sourceMappingURL=utils.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owp/core",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.4.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"vite": "^6.3.6",
|
|
87
87
|
"vite-plugin-svgr": "^4.5.0",
|
|
88
88
|
"vite-tsconfig-paths": "^5.1.4",
|
|
89
|
-
"@owp/tailwind-config": "1.
|
|
89
|
+
"@owp/tailwind-config": "1.1.0"
|
|
90
90
|
},
|
|
91
91
|
"files": [
|
|
92
92
|
"colors/",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useOwpTreeGridOverlayFrame.js","sources":["../../../../src/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.ts"],"sourcesContent":["import { isEqual } from 'es-toolkit/compat';\nimport { type RefObject, useLayoutEffect, useState } from 'react';\n// Temporary TreeGrid perf instrumentation import. Remove with ../utils/perf after profiling is finished.\nimport {\n countTreeGridPerf,\n getTreeGridPerfTimestamp,\n isTreeGridPerfEnabled,\n measureTreeGridPerf,\n} from '../utils/perf';\n\nexport type OwpTreeGridOverlayFrame = {\n left: number;\n top: number;\n width: number;\n height: number;\n};\n\ntype UseOwpTreeGridOverlayFrameInput = {\n visible: boolean;\n containerRef: RefObject<HTMLDivElement | null>;\n treeGridInstanceRef: RefObject<TGrid>;\n debugId?: string;\n};\n\nexport const TREE_GRID_NO_DATA_OVERLAY_Z_INDEX = 2147483646;\nexport const TREE_GRID_LOADING_OVERLAY_Z_INDEX = 2147483647;\n\nconst getTreeGridMainTableElement = (containerElement: HTMLDivElement, grid: TGrid | null) => {\n const mainTagElement = grid?.MainTag as HTMLElement | null | undefined;\n const scopedRootElement = mainTagElement ?? containerElement;\n const mainTableElements = Array.from(\n scopedRootElement.querySelectorAll<HTMLTableElement>('table.TSMainTable'),\n );\n\n const tableElements =\n mainTableElements.length > 0\n ? mainTableElements\n : Array.from(scopedRootElement.querySelectorAll<HTMLTableElement>('table'));\n\n return tableElements.reduce<HTMLTableElement | null>((largestTableElement, tableElement) => {\n const tableRect = tableElement.getBoundingClientRect();\n const largestTableRect = largestTableElement?.getBoundingClientRect();\n\n if (tableRect.width <= 0 || tableRect.height <= 0) {\n return largestTableElement;\n }\n\n if (!largestTableRect) {\n return tableElement;\n }\n\n return tableRect.width * tableRect.height > largestTableRect.width * largestTableRect.height\n ? tableElement\n : largestTableElement;\n }, null);\n};\n\nconst getTreeGridOverlayFrame = (\n containerElement: HTMLDivElement,\n grid: TGrid | null,\n): OwpTreeGridOverlayFrame => {\n const containerRect = containerElement.getBoundingClientRect();\n const fallbackWidth = containerElement.clientWidth || containerRect.width;\n const fallbackHeight = containerElement.clientHeight || containerRect.height;\n const mainTableElement = getTreeGridMainTableElement(containerElement, grid);\n\n if (!mainTableElement) {\n return {\n left: 0,\n top: 0,\n width: fallbackWidth,\n height: fallbackHeight,\n };\n }\n\n const tableRect = mainTableElement.getBoundingClientRect();\n\n if (tableRect.width <= 0 || tableRect.height <= 0) {\n return {\n left: 0,\n top: 0,\n width: fallbackWidth,\n height: fallbackHeight,\n };\n }\n\n return {\n left: tableRect.left - containerRect.left,\n top: tableRect.top - containerRect.top,\n width: tableRect.width,\n height: tableRect.height,\n };\n};\n\n/**\n * TreeGrid overlay frame hook\n * @param visible overlay visibility\n * @param containerRef TreeGrid container ref\n * @param treeGridInstanceRef TreeGrid instance ref\n */\nconst useOwpTreeGridOverlayFrame = ({\n visible,\n containerRef,\n treeGridInstanceRef,\n debugId,\n}: UseOwpTreeGridOverlayFrameInput) => {\n const [overlayFrame, setOverlayFrame] = useState<OwpTreeGridOverlayFrame>({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n\n useLayoutEffect(() => {\n if (!visible) {\n return;\n }\n\n const containerElement = containerRef.current;\n\n if (!containerElement) {\n return;\n }\n\n let animationFrameId: number | undefined;\n let resizeObserver: ResizeObserver | undefined;\n let observedMainTableElement: HTMLTableElement | null = null;\n const scrollListenerOptions = { capture: true } as const;\n\n const syncObservedMainTableElement = (nextMainTableElement: HTMLTableElement | null) => {\n if (!resizeObserver || observedMainTableElement === nextMainTableElement) {\n observedMainTableElement = nextMainTableElement;\n return;\n }\n\n if (observedMainTableElement) {\n resizeObserver.unobserve(observedMainTableElement);\n }\n\n observedMainTableElement = nextMainTableElement;\n\n if (observedMainTableElement) {\n resizeObserver.observe(observedMainTableElement);\n }\n };\n\n const updateOverlayFrame = () => {\n const startedAt =\n debugId && isTreeGridPerfEnabled() ? getTreeGridPerfTimestamp() : null;\n const treeGrid = treeGridInstanceRef.current;\n const mainTableElement = getTreeGridMainTableElement(containerElement, treeGrid);\n const nextOverlayFrame = getTreeGridOverlayFrame(containerElement, treeGrid);\n\n if (debugId) {\n countTreeGridPerf(debugId, 'overlay update');\n }\n\n syncObservedMainTableElement(mainTableElement);\n\n setOverlayFrame((currentOverlayFrame) =>\n isEqual(currentOverlayFrame, nextOverlayFrame) ? currentOverlayFrame : nextOverlayFrame,\n );\n\n if (debugId) {\n measureTreeGridPerf(debugId, 'overlay update end', startedAt);\n }\n };\n\n const scheduleOverlayFrameUpdate = () => {\n if (debugId) {\n countTreeGridPerf(debugId, 'overlay schedule');\n }\n\n if (animationFrameId !== undefined) {\n window.cancelAnimationFrame(animationFrameId);\n }\n\n animationFrameId = window.requestAnimationFrame(() => {\n animationFrameId = undefined;\n updateOverlayFrame();\n });\n };\n\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(scheduleOverlayFrameUpdate);\n resizeObserver.observe(containerElement);\n }\n\n const mutationObserver = new MutationObserver(scheduleOverlayFrameUpdate);\n mutationObserver.observe(containerElement, { childList: true, subtree: true });\n window.addEventListener('resize', scheduleOverlayFrameUpdate);\n containerElement.addEventListener('scroll', scheduleOverlayFrameUpdate, scrollListenerOptions);\n updateOverlayFrame();\n\n return () => {\n if (animationFrameId !== undefined) {\n window.cancelAnimationFrame(animationFrameId);\n }\n\n window.removeEventListener('resize', scheduleOverlayFrameUpdate);\n containerElement.removeEventListener(\n 'scroll',\n scheduleOverlayFrameUpdate,\n scrollListenerOptions,\n );\n mutationObserver.disconnect();\n\n if (resizeObserver && observedMainTableElement) {\n resizeObserver.unobserve(observedMainTableElement);\n }\n\n resizeObserver?.disconnect();\n };\n }, [containerRef, treeGridInstanceRef, visible, debugId]);\n\n return overlayFrame;\n};\n\nexport { useOwpTreeGridOverlayFrame };\n"],"names":["TREE_GRID_NO_DATA_OVERLAY_Z_INDEX","TREE_GRID_LOADING_OVERLAY_Z_INDEX","getTreeGridMainTableElement","__name","containerElement","grid","scopedRootElement","mainTableElements","largestTableElement","tableElement","tableRect","largestTableRect","getTreeGridOverlayFrame","containerRect","fallbackWidth","fallbackHeight","mainTableElement","useOwpTreeGridOverlayFrame","visible","containerRef","treeGridInstanceRef","debugId","overlayFrame","setOverlayFrame","useState","useLayoutEffect","animationFrameId","resizeObserver","observedMainTableElement","scrollListenerOptions","syncObservedMainTableElement","nextMainTableElement","updateOverlayFrame","startedAt","isTreeGridPerfEnabled","getTreeGridPerfTimestamp","treeGrid","nextOverlayFrame","countTreeGridPerf","currentOverlayFrame","isEqual","measureTreeGridPerf","scheduleOverlayFrameUpdate","mutationObserver"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"perf.js","sources":["../../../../src/components/OwpTreeGrid/utils/perf.ts"],"sourcesContent":["/** Temporary TreeGrid perf instrumentation. Remove after profiling is no longer needed. */\ntype TreeGridPerfWindow = Window & {\n __OWP_TREE_GRID_PERF__?: boolean;\n};\n\nexport const TREE_GRID_PERF_FLAG = '__OWP_TREE_GRID_PERF__';\n\n/**\n * TreeGrid 성능 계측 활성 여부\n */\nexport const isTreeGridPerfEnabled = () => {\n return typeof window !== 'undefined' && Boolean((window as TreeGridPerfWindow)[TREE_GRID_PERF_FLAG]);\n};\n\n/**\n * TreeGrid 성능 계측 타임스탬프 반환\n */\nexport const getTreeGridPerfTimestamp = () => {\n return typeof performance !== 'undefined' ? performance.now() : Date.now();\n};\n\n/**\n * TreeGrid 성능 계측 카운트 로그\n * @param gridId TreeGrid 인스턴스 ID\n * @param label 계측 라벨\n */\nexport const countTreeGridPerf = (gridId: string, label: string) => {\n if (!isTreeGridPerfEnabled()) {\n return;\n }\n\n console.count(`[OwpTreeGrid:${gridId}] ${label}`);\n};\n\n/**\n * TreeGrid 성능 계측 디버그 로그\n * @param gridId TreeGrid 인스턴스 ID\n * @param label 계측 라벨\n * @param payload 부가 정보\n */\nexport const logTreeGridPerf = (\n gridId: string,\n label: string,\n payload?: Record<string, unknown>,\n) => {\n if (!isTreeGridPerfEnabled()) {\n return;\n }\n\n if (payload) {\n console.info(`[OwpTreeGrid:${gridId}] ${label}`, payload);\n return;\n }\n\n console.info(`[OwpTreeGrid:${gridId}] ${label}`);\n};\n\n/**\n * TreeGrid 성능 계측 측정 로그\n * @param gridId TreeGrid 인스턴스 ID\n * @param label 계측 라벨\n * @param startedAt 시작 시각\n * @param payload 부가 정보\n */\nexport const measureTreeGridPerf = (\n gridId: string,\n label: string,\n startedAt: number | null,\n payload?: Record<string, unknown>,\n) => {\n if (!isTreeGridPerfEnabled() || startedAt === null) {\n return;\n }\n\n const durationMs = Number((getTreeGridPerfTimestamp() - startedAt).toFixed(1));\n\n if (payload) {\n console.info(`[OwpTreeGrid:${gridId}] ${label}`, { durationMs, ...payload });\n return;\n }\n\n console.info(`[OwpTreeGrid:${gridId}] ${label}`, { durationMs });\n};\n"],"names":["TREE_GRID_PERF_FLAG","isTreeGridPerfEnabled","__name","getTreeGridPerfTimestamp","countTreeGridPerf","gridId","label","logTreeGridPerf","payload","measureTreeGridPerf","startedAt","durationMs"],"mappings":";;AAKO,MAAMA,IAAsB,0BAKtBC,IAAwB,gBAAAC,EAAA,MAC5B,OAAO,SAAW,OAAe,EAAS,OAA8BF,CAAmB,GAD/D,0BAOxBG,IAA2B,gBAAAD,EAAA,MAC/B,OAAO,cAAgB,MAAc,YAAY,IAAA,IAAQ,KAAK,IAAA,GAD/B,6BAS3BE,IAAoB,gBAAAF,EAAA,CAACG,GAAgBC,MAAkB;AAClE,EAAKL,OAIL,QAAQ,MAAM,gBAAgBI,CAAM,KAAKC,CAAK,EAAE;AAClD,GANiC,sBAcpBC,IAAkB,gBAAAL,EAAA,CAC7BG,GACAC,GACAE,MACG;AACH,MAAKP,KAIL;AAAA,QAAIO,GAAS;AACX,cAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,IAAIE,CAAO;AACxD;AAAA,IACF;AAEA,YAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,EAAE;AAAA;AACjD,GAf+B,oBAwBlBG,IAAsB,gBAAAP,EAAA,CACjCG,GACAC,GACAI,GACAF,MACG;AACH,MAAI,CAACP,EAAA,KAA2BS,MAAc;AAC5C;AAGF,QAAMC,IAAa,QAAQR,EAAA,IAA6BO,GAAW,QAAQ,CAAC,CAAC;AAE7E,MAAIF,GAAS;AACX,YAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,IAAI,EAAE,YAAAK,GAAY,GAAGH,EAAA,CAAS;AAC3E;AAAA,EACF;AAEA,UAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,IAAI,EAAE,YAAAK,GAAY;AACjE,GAlBmC;"}
|
|
File without changes
|
/package/dist/types/components/OwpTreeGrid/{hooks → internal/hooks}/useOwpTreeGridOverlayFrame.d.ts
RENAMED
|
File without changes
|
|
File without changes
|