@owp/core 2.5.38 → 2.5.39

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.
Files changed (34) hide show
  1. package/dist/_virtual/index10.js +2 -2
  2. package/dist/_virtual/index12.js +2 -2
  3. package/dist/_virtual/index13.js +2 -2
  4. package/dist/_virtual/index14.js +2 -2
  5. package/dist/_virtual/index15.js +2 -2
  6. package/dist/_virtual/index16.js +4 -4
  7. package/dist/_virtual/index17.js +4 -4
  8. package/dist/_virtual/index18.js +4 -4
  9. package/dist/_virtual/index19.js +4 -4
  10. package/dist/_virtual/index3.js +2 -2
  11. package/dist/_virtual/index4.js +2 -2
  12. package/dist/_virtual/index5.js +2 -2
  13. package/dist/layout/components/toggles/NavigationSearchToggle.js +3 -3
  14. package/dist/node_modules/.pnpm/inko@1.1.1/node_modules/inko/index.js +1 -1
  15. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  16. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
  17. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
  18. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
  19. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
  20. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
  21. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
  22. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
  23. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
  24. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
  25. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/index.js +1 -1
  26. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
  27. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
  28. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  29. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  30. package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
  31. package/dist/node_modules/.pnpm/react-overlays@5.2.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-overlays/esm/Portal.js +1 -1
  32. package/dist/utils/treeGridUtil.js +91 -85
  33. package/dist/utils/treeGridUtil.js.map +1 -1
  34. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- var r = {};
1
+ var a = {};
2
2
  export {
3
- r as __exports
3
+ a as __exports
4
4
  };
5
5
  //# sourceMappingURL=index10.js.map
@@ -1,5 +1,5 @@
1
- var a = {};
1
+ var r = {};
2
2
  export {
3
- a as __exports
3
+ r as __exports
4
4
  };
5
5
  //# sourceMappingURL=index12.js.map
@@ -1,5 +1,5 @@
1
- var r = {};
1
+ var e = {};
2
2
  export {
3
- r as __exports
3
+ e as __exports
4
4
  };
5
5
  //# sourceMappingURL=index13.js.map
@@ -1,5 +1,5 @@
1
- var e = {};
1
+ var r = {};
2
2
  export {
3
- e as __exports
3
+ r as __exports
4
4
  };
5
5
  //# sourceMappingURL=index14.js.map
@@ -1,5 +1,5 @@
1
- var r = {};
1
+ var e = { exports: {} };
2
2
  export {
3
- r as __exports
3
+ e as __module
4
4
  };
5
5
  //# sourceMappingURL=index15.js.map
@@ -1,8 +1,8 @@
1
1
  import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as o } from "../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js";
3
- var p = /* @__PURE__ */ o();
4
- const s = /* @__PURE__ */ r(p);
2
+ import { __require as t } from "../node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/match/index.js";
3
+ var o = t();
4
+ const m = /* @__PURE__ */ r(o);
5
5
  export {
6
- s as default
6
+ m as default
7
7
  };
8
8
  //# sourceMappingURL=index16.js.map
@@ -1,8 +1,8 @@
1
1
  import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as t } from "../node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/match/index.js";
3
- var o = t();
4
- const m = /* @__PURE__ */ r(o);
2
+ import { __require as e } from "../node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/parse/index.js";
3
+ var o = e();
4
+ const s = /* @__PURE__ */ r(o);
5
5
  export {
6
- m as default
6
+ s as default
7
7
  };
8
8
  //# sourceMappingURL=index17.js.map
@@ -1,8 +1,8 @@
1
1
  import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as e } from "../node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/parse/index.js";
3
- var o = e();
4
- const s = /* @__PURE__ */ r(o);
2
+ import { __require as t } from "../node_modules/.pnpm/react-autosuggest@10.1.0_react@19.2.4/node_modules/react-autosuggest/dist/index.js";
3
+ var o = t();
4
+ const i = /* @__PURE__ */ r(o);
5
5
  export {
6
- s as default
6
+ i as default
7
7
  };
8
8
  //# sourceMappingURL=index18.js.map
@@ -1,8 +1,8 @@
1
1
  import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as t } from "../node_modules/.pnpm/react-autosuggest@10.1.0_react@19.2.4/node_modules/react-autosuggest/dist/index.js";
3
- var o = t();
4
- const i = /* @__PURE__ */ r(o);
2
+ import { __require as o } from "../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js";
3
+ var p = /* @__PURE__ */ o();
4
+ const s = /* @__PURE__ */ r(p);
5
5
  export {
6
- i as default
6
+ s as default
7
7
  };
8
8
  //# sourceMappingURL=index19.js.map
@@ -1,5 +1,5 @@
1
- var o = { exports: {} };
1
+ var r = {};
2
2
  export {
3
- o as __module
3
+ r as __exports
4
4
  };
5
5
  //# sourceMappingURL=index3.js.map
@@ -1,5 +1,5 @@
1
- var r = {};
1
+ var o = { exports: {} };
2
2
  export {
3
- r as __exports
3
+ o as __module
4
4
  };
5
5
  //# sourceMappingURL=index4.js.map
@@ -1,5 +1,5 @@
1
- var e = { exports: {} };
1
+ var r = {};
2
2
  export {
3
- e as __module
3
+ r as __exports
4
4
  };
5
5
  //# sourceMappingURL=index5.js.map
@@ -18,11 +18,11 @@ import { styled as te } from "@mui/material/styles";
18
18
  import z from "@mui/material/TextField";
19
19
  import ne from "@mui/material/Tooltip";
20
20
  import E from "@mui/material/Typography";
21
- import D from "../../../_virtual/index17.js";
22
- import re from "../../../_virtual/index18.js";
21
+ import D from "../../../_virtual/index16.js";
22
+ import re from "../../../_virtual/index17.js";
23
23
  import { clsx as B } from "../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
24
24
  import { useMemo as oe, useReducer as ie, useRef as T, useEffect as se } from "react";
25
- import W from "../../../_virtual/index19.js";
25
+ import W from "../../../_virtual/index18.js";
26
26
  import { useNavigate as ae } from "react-router-dom";
27
27
  import { toolbarToggleSx as le } from "./toggleStyles.js";
28
28
  import { OwpSvgIcon as w } from "../../../components/OwpSvgIcon/OwpSvgIcon.js";
@@ -1,6 +1,6 @@
1
1
  var Q = Object.defineProperty;
2
2
  var w = (k, D) => Q(k, "name", { value: D, configurable: !0 });
3
- import { __module as I } from "../../../../../_virtual/index3.js";
3
+ import { __module as I } from "../../../../../_virtual/index4.js";
4
4
  var F;
5
5
  function W() {
6
6
  return F ? I.exports : (F = 1, (function(k, D) {
@@ -1,6 +1,6 @@
1
1
  var f = Object.defineProperty;
2
2
  var t = (e, _) => f(e, "name", { value: _, configurable: !0 });
3
- import { __exports as r } from "../../../../../../../../_virtual/constants.js";
3
+ import { __exports as r } from "../../../../../../../../_virtual/constants2.js";
4
4
  var i;
5
5
  function E() {
6
6
  if (i) return r;
@@ -1,6 +1,6 @@
1
1
  var q = Object.defineProperty;
2
2
  var O = (C, _) => q(C, "name", { value: _, configurable: !0 });
3
- import { __exports as r } from "../../../../../../../../_virtual/index7.js";
3
+ import { __exports as r } from "../../../../../../../../_virtual/index6.js";
4
4
  import { __require as d } from "./CODE128_AUTO.js";
5
5
  import { __require as n } from "./CODE128A.js";
6
6
  import { __require as m } from "./CODE128B.js";
@@ -1,6 +1,6 @@
1
1
  var w = Object.defineProperty;
2
2
  var n = (f, a) => w(f, "name", { value: a, configurable: !0 });
3
- import { __exports as i } from "../../../../../../../../_virtual/index6.js";
3
+ import { __exports as i } from "../../../../../../../../_virtual/index5.js";
4
4
  import { __require as k } from "../Barcode.js";
5
5
  var _;
6
6
  function P() {
@@ -1,6 +1,6 @@
1
1
  var D = Object.defineProperty;
2
2
  var C = (u, t) => D(u, "name", { value: t, configurable: !0 });
3
- import { __exports as e } from "../../../../../../../../_virtual/index13.js";
3
+ import { __exports as e } from "../../../../../../../../_virtual/index12.js";
4
4
  import { __require as O } from "./CODE93.js";
5
5
  import { __require as E } from "./CODE93FullASCII.js";
6
6
  var l;
@@ -1,6 +1,6 @@
1
1
  var n = Object.defineProperty;
2
2
  var G = (r, t) => n(r, "name", { value: t, configurable: !0 });
3
- import { __exports as L } from "../../../../../../../../_virtual/constants2.js";
3
+ import { __exports as L } from "../../../../../../../../_virtual/constants.js";
4
4
  var e;
5
5
  function o() {
6
6
  return e ? L : (e = 1, Object.defineProperty(L, "__esModule", {
@@ -1,6 +1,6 @@
1
1
  var C = Object.defineProperty;
2
2
  var i = (u, a) => C(u, "name", { value: a, configurable: !0 });
3
- import { __exports as r } from "../../../../../../../../_virtual/index8.js";
3
+ import { __exports as r } from "../../../../../../../../_virtual/index7.js";
4
4
  import { __require as U } from "./EAN13.js";
5
5
  import { __require as s } from "./EAN8.js";
6
6
  import { __require as l } from "./EAN5.js";
@@ -1,6 +1,6 @@
1
1
  var b = Object.defineProperty;
2
2
  var r = (a, f) => b(a, "name", { value: f, configurable: !0 });
3
- import { __exports as u } from "../../../../../../../../_virtual/index14.js";
3
+ import { __exports as u } from "../../../../../../../../_virtual/index13.js";
4
4
  import { __require as p } from "../Barcode.js";
5
5
  var c;
6
6
  function w() {
@@ -1,6 +1,6 @@
1
1
  var T = Object.defineProperty;
2
2
  var i = (u, t) => T(u, "name", { value: t, configurable: !0 });
3
- import { __exports as e } from "../../../../../../../../_virtual/index9.js";
3
+ import { __exports as e } from "../../../../../../../../_virtual/index8.js";
4
4
  import { __require as f } from "./ITF.js";
5
5
  import { __require as n } from "./ITF14.js";
6
6
  var a;
@@ -1,6 +1,6 @@
1
1
  var v = Object.defineProperty;
2
2
  var I = (M, _) => v(M, "name", { value: _, configurable: !0 });
3
- import { __exports as r } from "../../../../../../../../_virtual/index10.js";
3
+ import { __exports as r } from "../../../../../../../../_virtual/index9.js";
4
4
  import { __require as n } from "./MSI.js";
5
5
  import { __require as s } from "./MSI10.js";
6
6
  import { __require as l } from "./MSI11.js";
@@ -1,6 +1,6 @@
1
1
  var p = Object.defineProperty;
2
2
  var a = (f, c) => p(f, "name", { value: c, configurable: !0 });
3
- import { __exports as i } from "../../../../../../../../_virtual/index12.js";
3
+ import { __exports as i } from "../../../../../../../../_virtual/index11.js";
4
4
  import { __require as g } from "../Barcode.js";
5
5
  var h;
6
6
  function w() {
@@ -1,6 +1,6 @@
1
1
  var O = Object.defineProperty;
2
2
  var C = (i, r) => O(i, "name", { value: r, configurable: !0 });
3
- import { __exports as o } from "../../../../../../../_virtual/index4.js";
3
+ import { __exports as o } from "../../../../../../../_virtual/index3.js";
4
4
  import { __require as c } from "./CODE39/index.js";
5
5
  import { __require as D } from "./CODE128/index.js";
6
6
  import { __require as d } from "./EAN_UPC/index.js";
@@ -1,6 +1,6 @@
1
1
  var v = Object.defineProperty;
2
2
  var i = (u, f) => v(u, "name", { value: f, configurable: !0 });
3
- import { __exports as a } from "../../../../../../../../_virtual/index11.js";
3
+ import { __exports as a } from "../../../../../../../../_virtual/index10.js";
4
4
  import { __require as y } from "../Barcode.js";
5
5
  var c;
6
6
  function q() {
@@ -1,6 +1,6 @@
1
1
  var v = Object.defineProperty;
2
2
  var _ = (a, t) => v(a, "name", { value: t, configurable: !0 });
3
- import { __exports as r } from "../../../../../../../_virtual/index15.js";
3
+ import { __exports as r } from "../../../../../../../_virtual/index14.js";
4
4
  import { __require as f } from "./canvas.js";
5
5
  import { __require as q } from "./svg.js";
6
6
  import { __require as c } from "./object.js";
@@ -1,6 +1,6 @@
1
1
  var S = Object.defineProperty;
2
2
  var e = (r, i) => S(r, "name", { value: i, configurable: !0 });
3
- import { __exports as n } from "../../../../../../../_virtual/utils.js";
3
+ import { __exports as n } from "../../../../../../../_virtual/utils2.js";
4
4
  var u;
5
5
  function c() {
6
6
  if (u) return n;
@@ -1,6 +1,6 @@
1
1
  var M = Object.defineProperty;
2
2
  var a = (l, h) => M(l, "name", { value: h, configurable: !0 });
3
- import { __exports as s } from "../../../../../../../_virtual/utils2.js";
3
+ import { __exports as s } from "../../../../../../../_virtual/utils.js";
4
4
  var w;
5
5
  function _() {
6
6
  return w ? s : (w = 1, (function(l) {
@@ -1,6 +1,6 @@
1
1
  var i = Object.defineProperty;
2
2
  var r = (t, s) => i(t, "name", { value: s, configurable: !0 });
3
- import { __module as e } from "../../../../../_virtual/index5.js";
3
+ import { __module as e } from "../../../../../_virtual/index15.js";
4
4
  import { __require as u } from "./cjs/react-is.production.min.js";
5
5
  import { __require as p } from "./cjs/react-is.development.js";
6
6
  var o;
@@ -1,6 +1,6 @@
1
1
  var c = Object.defineProperty;
2
2
  var a = (r, e) => c(r, "name", { value: e, configurable: !0 });
3
- import n from "../../../../../../_virtual/index16.js";
3
+ import n from "../../../../../../_virtual/index19.js";
4
4
  import m from "react-dom";
5
5
  import t from "react";
6
6
  import u from "./useWaitForDOMRef.js";
@@ -1,57 +1,57 @@
1
- var q = Object.defineProperty;
2
- var l = (e, t) => q(e, "name", { value: t, configurable: !0 });
3
- import { TREEGRID_CELL_CHANGED_CLASS as z, TREEGRID_CELL_HIGHLIGHT_COLOR as O } from "../constants/treeGrid.js";
1
+ var z = Object.defineProperty;
2
+ var l = (e, t) => z(e, "name", { value: t, configurable: !0 });
3
+ import { TREEGRID_CELL_CHANGED_CLASS as O, TREEGRID_CELL_HIGHLIGHT_COLOR as N } from "../constants/treeGrid.js";
4
4
  import { TREEGRID_INPUT_CELL_COLOR as Tt, TREEGRID_WARNING_CELL_COLOR as Gt } from "../constants/treeGrid.js";
5
- import { parseTreeGridXmlToJson as N } from "../components/OwpTreeGrid/internal/treeGridLayout.js";
6
- import { resolveTreeGridSelectedRows as U } from "../components/OwpTreeGrid/internal/treeGridSelection.js";
5
+ import { parseTreeGridXmlToJson as U } from "../components/OwpTreeGrid/internal/treeGridLayout.js";
6
+ import { resolveTreeGridSelectedRows as P } from "../components/OwpTreeGrid/internal/treeGridSelection.js";
7
7
  import { emitTreeGridBodyRowsChanged as _ } from "./internal/treeGridBodyRowsEvent.js";
8
8
  import { isArray as D } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isArray.js";
9
- import { lowerCase as P } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/string/lowerCase.js";
9
+ import { lowerCase as W } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/string/lowerCase.js";
10
10
  import { isPlainObject as y } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/predicate/isPlainObject.js";
11
- import { get as W } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/get.js";
12
- import { isEmpty as Y } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js";
13
- import { without as M } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/without.js";
14
- const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::s{1,2})?$/, B = "__owpAddedByAddTreeGridRowById", E = "__owpAddedRowHighlightColumns", L = "__owpAddedRowInitialValueKeys", v = "__owpAddedRowBaselineValues", G = "__owpCellStyleBaselineValues", h = "Selected", J = /* @__PURE__ */ l(({
11
+ import { get as Y } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/get.js";
12
+ import { isEmpty as M } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js";
13
+ import { without as X } from "../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/without.js";
14
+ const Q = ["Added", "Changed"], J = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::s{1,2})?$/, B = "__owpAddedByAddTreeGridRowById", E = "__owpAddedRowHighlightColumns", L = "__owpAddedRowInitialValueKeys", v = "__owpAddedRowBaselineValues", G = "__owpCellStyleBaselineValues", h = "Selected", Z = /* @__PURE__ */ l(({
15
15
  label: e
16
- }) => `${e} 필수 입력`, "DEFAULT_TREE_GRID_REQUIRED_CELL_MESSAGE_FACTORY"), Z = [
16
+ }) => `${e} 필수 입력`, "DEFAULT_TREE_GRID_REQUIRED_CELL_MESSAGE_FACTORY"), p = [
17
17
  "added"
18
- ], S = /* @__PURE__ */ l((e) => D(e) ? e.filter((t) => typeof t == "string" && t !== "") : [], "normalizeTreeGridStringValues"), A = S, p = /* @__PURE__ */ l((e) => {
18
+ ], S = /* @__PURE__ */ l((e) => D(e) ? e.filter((t) => typeof t == "string" && t !== "") : [], "normalizeTreeGridStringValues"), A = S, ee = /* @__PURE__ */ l((e) => {
19
19
  e && (e[B] = 1);
20
- }, "markTreeGridRowAddedById"), ee = /* @__PURE__ */ l((e) => {
20
+ }, "markTreeGridRowAddedById"), te = /* @__PURE__ */ l((e) => {
21
21
  const t = e == null ? void 0 : e[B];
22
22
  return !!e && t !== 0 && t !== !1 && t !== void 0;
23
23
  }, "isTreeGridRowAddedById"), m = /* @__PURE__ */ l((e) => {
24
24
  const t = e == null ? void 0 : e.Added;
25
- return t === 1 || t === "1" || t === !0 || ee(e);
26
- }, "isTreeGridAddedRow"), te = /* @__PURE__ */ l((e) => {
25
+ return t === 1 || t === "1" || t === !0 || te(e);
26
+ }, "isTreeGridAddedRow"), re = /* @__PURE__ */ l((e) => {
27
27
  const t = e == null ? void 0 : e.Changed;
28
28
  return !m(e) && (t === 1 || t === "1" || t === !0);
29
- }, "isTreeGridChangedRow"), k = /* @__PURE__ */ l((e) => {
29
+ }, "isTreeGridChangedRow"), F = /* @__PURE__ */ l((e) => {
30
30
  const t = e == null ? void 0 : e.Deleted;
31
31
  return t === 1 || t === "1" || t === !0;
32
- }, "isTreeGridDeletedRow"), re = /* @__PURE__ */ l((e) => {
33
- const t = D(e) ? e : e ? [e] : Z;
32
+ }, "isTreeGridDeletedRow"), ne = /* @__PURE__ */ l((e) => {
33
+ const t = D(e) ? e : e ? [e] : p;
34
34
  return t.includes("all") ? /* @__PURE__ */ new Set(["all"]) : new Set(
35
35
  t.filter(
36
36
  (r) => r === "added" || r === "changed"
37
37
  )
38
38
  );
39
- }, "normalizeTreeGridRequiredCellTargetRows"), ne = /* @__PURE__ */ l((e, t) => k(e) ? !1 : t.has("all") ? e.Kind === "Data" || m(e) : t.has("added") && m(e) || t.has("changed") && te(e), "shouldValidateTreeGridRequiredCellRow"), se = /* @__PURE__ */ l((e) => !!e && !k(e) && (e.Kind === "Data" || m(e)), "shouldValidateExplicitTreeGridRequiredCellRow"), le = /* @__PURE__ */ l((e, t) => {
39
+ }, "normalizeTreeGridRequiredCellTargetRows"), se = /* @__PURE__ */ l((e, t) => F(e) ? !1 : t.has("all") ? e.Kind === "Data" || m(e) : t.has("added") && m(e) || t.has("changed") && re(e), "shouldValidateTreeGridRequiredCellRow"), le = /* @__PURE__ */ l((e) => !!e && !F(e) && (e.Kind === "Data" || m(e)), "shouldValidateExplicitTreeGridRequiredCellRow"), ie = /* @__PURE__ */ l((e, t) => {
40
40
  var r;
41
41
  if (t)
42
42
  return typeof t.id != "string" ? t : ((r = e.Rows) == null ? void 0 : r[t.id]) ?? t;
43
- }, "resolveLiveTreeGridRequiredCellRow"), ie = /* @__PURE__ */ l((e, t) => {
43
+ }, "resolveLiveTreeGridRequiredCellRow"), ae = /* @__PURE__ */ l((e, t) => {
44
44
  const r = /* @__PURE__ */ new Set(), n = [];
45
45
  return t.forEach((s) => {
46
- const i = le(e, s);
47
- !se(i) || r.has(i) || (r.add(i), n.push(i));
46
+ const i = ie(e, s);
47
+ !le(i) || r.has(i) || (r.add(i), n.push(i));
48
48
  }), n;
49
- }, "normalizeExplicitTreeGridRequiredCellRows"), ae = /* @__PURE__ */ l((e, t) => {
49
+ }, "normalizeExplicitTreeGridRequiredCellRows"), ce = /* @__PURE__ */ l((e, t) => {
50
50
  if (t.rows !== void 0)
51
- return ie(e, t.rows);
52
- const r = re(t.targetRows);
51
+ return ae(e, t.rows);
52
+ const r = ne(t.targetRows);
53
53
  return Object.values(e.Rows ?? {}).filter(
54
- (n) => ne(n, r)
54
+ (n) => se(n, r)
55
55
  );
56
56
  }, "getTreeGridRequiredCellRows"), Qe = /* @__PURE__ */ l((e, t) => {
57
57
  if (!e || !t)
@@ -60,7 +60,7 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
60
60
  r[E]
61
61
  );
62
62
  n.includes(t) || (r[E] = [...n, t]);
63
- }, "appendTreeGridAddedRowHighlightColumn"), ge = /* @__PURE__ */ l((e, t) => {
63
+ }, "appendTreeGridAddedRowHighlightColumn"), Je = /* @__PURE__ */ l((e, t) => {
64
64
  if (!e || !t)
65
65
  return;
66
66
  const r = e, s = A(
@@ -71,9 +71,9 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
71
71
  return;
72
72
  }
73
73
  delete r[E];
74
- }, "removeTreeGridAddedRowHighlightColumn"), Je = /* @__PURE__ */ l((e) => A(
74
+ }, "removeTreeGridAddedRowHighlightColumn"), ge = /* @__PURE__ */ l((e) => A(
75
75
  e == null ? void 0 : e[E]
76
- ), "getTreeGridAddedRowHighlightColumns"), F = /* @__PURE__ */ l((e, t, r) => {
76
+ ), "getTreeGridAddedRowHighlightColumns"), $ = /* @__PURE__ */ l((e, t, r) => {
77
77
  var i, a, c, d, f;
78
78
  const n = ((i = e.GetType) == null ? void 0 : i.call(e, t, r)) || ((c = (a = e.Cols) == null ? void 0 : a[r]) == null ? void 0 : c.Type) || "", s = ((d = e.GetValue) == null ? void 0 : d.call(e, t, r)) ?? t[r];
79
79
  if (n === "Enum" || n === "Select")
@@ -85,31 +85,31 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
85
85
  } catch {
86
86
  }
87
87
  return s == null ? "" : `${s}`;
88
- }, "getTreeGridCellComparableValue"), ce = /* @__PURE__ */ l((e, t) => {
88
+ }, "getTreeGridCellComparableValue"), de = /* @__PURE__ */ l((e, t) => {
89
89
  const r = Object.fromEntries(
90
90
  Object.keys(e.Cols ?? {}).map((n) => [
91
91
  n,
92
- F(e, t, n)
92
+ $(e, t, n)
93
93
  ])
94
94
  );
95
95
  t[v] = r;
96
96
  }, "markTreeGridAddedRowBaselineValues"), Ze = /* @__PURE__ */ l((e, t) => {
97
97
  var r;
98
98
  return (r = e == null ? void 0 : e[v]) == null ? void 0 : r[t];
99
- }, "getTreeGridAddedRowBaselineValue"), de = /* @__PURE__ */ l((e, t, r) => {
99
+ }, "getTreeGridAddedRowBaselineValue"), oe = /* @__PURE__ */ l((e, t, r) => {
100
100
  var s;
101
101
  const n = t;
102
102
  n[G] ?? (n[G] = {}), !((s = n[G]) != null && s[r]) && (n[G][r] = {
103
103
  className: e.GetAttribute(t, r, "Class"),
104
104
  color: e.GetAttribute(t, r, "Color")
105
105
  });
106
- }, "preserveTreeGridCellStyleBaseline"), oe = /* @__PURE__ */ l((e, t) => {
106
+ }, "preserveTreeGridCellStyleBaseline"), ue = /* @__PURE__ */ l((e, t) => {
107
107
  var r;
108
108
  return (r = e[G]) == null ? void 0 : r[t];
109
- }, "getTreeGridCellStyleBaseline"), ue = /* @__PURE__ */ l(async () => {
109
+ }, "getTreeGridCellStyleBaseline"), fe = /* @__PURE__ */ l(async () => {
110
110
  const { exportTreeGridExcel: e } = await import("./treeGridExportExcelUtil.js");
111
111
  return e;
112
- }, "loadExportTreeGridExcel"), fe = /* @__PURE__ */ l((e) => Object.values((e == null ? void 0 : e.Rows) ?? {}).filter((t) => t.Kind === "Data"), "getDataRows"), Re = /* @__PURE__ */ l((e) => e != null && e.length ? e.map((t) => {
112
+ }, "loadExportTreeGridExcel"), Re = /* @__PURE__ */ l((e) => Object.values((e == null ? void 0 : e.Rows) ?? {}).filter((t) => t.Kind === "Data"), "getDataRows"), Te = /* @__PURE__ */ l((e) => e != null && e.length ? e.map((t) => {
113
113
  if (typeof t == "string") {
114
114
  const n = t.trim();
115
115
  return n ? { key: n } : null;
@@ -122,17 +122,17 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
122
122
  label: typeof t.label == "string" ? t.label.trim() : void 0,
123
123
  message: typeof t.message == "string" ? t.message : void 0
124
124
  } : null;
125
- }).filter((t) => !!t) : [], "normalizeTreeGridRequiredCellColumns"), $ = /* @__PURE__ */ l((e, t, r) => {
125
+ }).filter((t) => !!t) : [], "normalizeTreeGridRequiredCellColumns"), k = /* @__PURE__ */ l((e, t, r) => {
126
126
  var s;
127
127
  const n = (s = e.CanEdit) == null ? void 0 : s.call(e, t, r);
128
128
  return n === 1 || n === "1" || n === !0;
129
- }, "isTreeGridEditableCell"), Te = /* @__PURE__ */ l((e, t, r) => {
130
- const n = Re(r.columns);
129
+ }, "isTreeGridEditableCell"), Ge = /* @__PURE__ */ l((e, t, r) => {
130
+ const n = Te(r.columns);
131
131
  return n.length ? n.filter((s) => {
132
132
  var i;
133
133
  return !!((i = e.Cols) != null && i[s.key]);
134
- }) : r.editableOnly ? Object.keys(e.Cols ?? {}).filter((s) => ve(e, s) && $(e, t, s)).map((s) => ({ key: s })) : [];
135
- }, "getTreeGridRequiredCellColumns"), Ge = /* @__PURE__ */ l((e, t) => {
134
+ }) : r.editableOnly ? Object.keys(e.Cols ?? {}).filter((s) => K(e, s) && k(e, t, s)).map((s) => ({ key: s })) : [];
135
+ }, "getTreeGridRequiredCellColumns"), Ee = /* @__PURE__ */ l((e, t) => {
136
136
  var n, s, i;
137
137
  if (t.label)
138
138
  return t.label;
@@ -144,8 +144,8 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
144
144
  }
145
145
  const r = (i = (s = e.Cols) == null ? void 0 : s[t.key]) == null ? void 0 : i.Caption;
146
146
  return r ? `${r}`.trim() : t.key;
147
- }, "getTreeGridRequiredCellLabel"), Ee = /* @__PURE__ */ l((e, t, r) => t.message ? t.message : (r ?? J)(e), "getTreeGridRequiredCellMessage"), Ce = /* @__PURE__ */ l((e) => e.trim() === "", "isBlankTreeGridRequiredCellValue"), me = /* @__PURE__ */ l((e, t, r) => {
148
- !t || r.focusFirstError === !1 || (e.Focus(t.row, t.col), r.startEditFirstError === !0 && $(e, t.row, t.col) && e.StartEdit(t.row, t.col));
147
+ }, "getTreeGridRequiredCellLabel"), Ce = /* @__PURE__ */ l((e, t, r) => t.message ? t.message : (r ?? Z)(e), "getTreeGridRequiredCellMessage"), me = /* @__PURE__ */ l((e) => e.trim() === "", "isBlankTreeGridRequiredCellValue"), ye = /* @__PURE__ */ l((e, t, r) => {
148
+ !t || r.focusFirstError === !1 || (e.Focus(t.row, t.col), r.startEditFirstError === !0 && k(e, t.row, t.col) && e.StartEdit(t.row, t.col));
149
149
  }, "focusFirstTreeGridRequiredCellError"), C = /* @__PURE__ */ l((e) => typeof e == "string" && g.test(e.trim()), "isTreeGridTimeDateFormat"), x = /* @__PURE__ */ l((e, t, r) => {
150
150
  var i;
151
151
  const n = t, s = (i = e.Cols) == null ? void 0 : i[r];
@@ -160,14 +160,14 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
160
160
  } catch {
161
161
  }
162
162
  return n == null ? "" : `${n}`;
163
- }, "getTreeGridTimeDateDisplayValue"), ye = /* @__PURE__ */ l((e, t) => {
163
+ }, "getTreeGridTimeDateDisplayValue"), he = /* @__PURE__ */ l((e, t) => {
164
164
  const r = { ...t };
165
165
  return Object.keys(e.Cols ?? {}).forEach((n) => {
166
166
  x(e, t, n) && (r[n] = j(e, t, n));
167
167
  }), r;
168
- }, "normalizeTreeGridExternalRow"), w = /* @__PURE__ */ l((e, t) => t.map((r) => ye(e, r)), "normalizeTreeGridExternalRows"), H = /* @__PURE__ */ l((e) => e === 1 || e === !0 || e === "1" || e === "true", "isTreeGridExplicitEnabledConfigValue"), he = /* @__PURE__ */ l((e) => H(e.SelectingSingle), "isTreeGridSingleSelectionLayout"), _e = /* @__PURE__ */ l((e) => y(e) ? H(
168
+ }, "normalizeTreeGridExternalRow"), w = /* @__PURE__ */ l((e, t) => t.map((r) => he(e, r)), "normalizeTreeGridExternalRows"), H = /* @__PURE__ */ l((e) => e === 1 || e === !0 || e === "1" || e === "true", "isTreeGridExplicitEnabledConfigValue"), _e = /* @__PURE__ */ l((e) => H(e.SelectingSingle), "isTreeGridSingleSelectionLayout"), De = /* @__PURE__ */ l((e) => y(e) ? H(
169
169
  e[h]
170
- ) : !1, "isTreeGridSelectedInitialValue"), De = /* @__PURE__ */ l((e) => {
170
+ ) : !1, "isTreeGridSelectedInitialValue"), Se = /* @__PURE__ */ l((e) => {
171
171
  if (!y(e))
172
172
  return e;
173
173
  const t = e;
@@ -176,7 +176,7 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
176
176
  ([r]) => r !== h
177
177
  )
178
178
  ) : e;
179
- }, "omitTreeGridSelectedInitialValue"), Se = /* @__PURE__ */ l((e, t) => {
179
+ }, "omitTreeGridSelectedInitialValue"), Ae = /* @__PURE__ */ l((e, t) => {
180
180
  const r = (t == null ? void 0 : t.insertPosition) ?? "top", n = t == null ? void 0 : t.parent, s = t == null ? void 0 : t.anchorRow;
181
181
  let i = n ?? (s ? s.parentNode : null) ?? e.GetFirst(), a = null;
182
182
  switch (r) {
@@ -194,7 +194,7 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
194
194
  break;
195
195
  }
196
196
  return { resolvedParent: i, next: a };
197
- }, "resolveRowInsertionTarget"), Ae = /* @__PURE__ */ l((e, t, r) => {
197
+ }, "resolveRowInsertionTarget"), be = /* @__PURE__ */ l((e, t, r) => {
198
198
  if (!y(r))
199
199
  return;
200
200
  const n = Object.keys(r).filter(Boolean);
@@ -206,7 +206,7 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
206
206
  }
207
207
  t[s] = i;
208
208
  });
209
- }, "assignInitialRowValues"), be = /* @__PURE__ */ l((e, t, r) => {
209
+ }, "assignInitialRowValues"), Ie = /* @__PURE__ */ l((e, t, r) => {
210
210
  const n = S(r);
211
211
  if (!n.length)
212
212
  return;
@@ -215,24 +215,30 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
215
215
  var a;
216
216
  (a = e.Cols) != null && a[i] && (s[`${i}CanEdit`] = 1);
217
217
  });
218
- }, "assignEditableAddedRowColumns"), Ie = /* @__PURE__ */ l((e) => Q.some((t) => e.startsWith(t)), "isTreeGridDataKey"), Ve = /* @__PURE__ */ l((e, t) => {
218
+ }, "assignEditableAddedRowColumns"), Ve = /* @__PURE__ */ l((e) => J.some((t) => e.startsWith(t)), "isTreeGridDataKey"), Be = /* @__PURE__ */ l((e, t) => {
219
219
  var r;
220
220
  return !!((r = e == null ? void 0 : e.Cols) != null && r[t]);
221
- }, "isTreeGridColumnDataKey"), Be = /* @__PURE__ */ l((e) => e != null && e !== "", "hasTreeGridUploadValue"), Le = /* @__PURE__ */ l((e) => e === 0 || e === !1 || e === "0", "isHiddenTreeGridValue"), ve = /* @__PURE__ */ l((e, t) => {
221
+ }, "isTreeGridColumnDataKey"), Le = /* @__PURE__ */ l((e) => e != null && e !== "", "hasTreeGridUploadValue"), ve = /* @__PURE__ */ l((e) => e === 0 || e === !1 || e === "0", "isHiddenTreeGridValue"), K = /* @__PURE__ */ l((e, t) => {
222
222
  var r, n;
223
- return !Le((n = (r = e == null ? void 0 : e.Cols) == null ? void 0 : r[t]) == null ? void 0 : n.Visible);
224
- }, "isVisibleTreeGridColumn"), ke = /* @__PURE__ */ l((e, t) => S(
223
+ return !ve((n = (r = e == null ? void 0 : e.Cols) == null ? void 0 : r[t]) == null ? void 0 : n.Visible);
224
+ }, "isVisibleTreeGridColumn"), Fe = /* @__PURE__ */ l((e, t) => S(
225
225
  e == null ? void 0 : e[L]
226
- ).includes(t), "isTreeGridAddedRowInitialValueKey"), Fe = /* @__PURE__ */ l((e, t) => {
226
+ ).includes(t), "isTreeGridAddedRowInitialValueKey"), $e = /* @__PURE__ */ l((e, t) => {
227
227
  var r;
228
228
  return typeof t.id == "string" ? (r = e == null ? void 0 : e.Rows) == null ? void 0 : r[t.id] : null;
229
- }, "getLiveTreeGridChangedRow"), $e = /* @__PURE__ */ l((e, t, r, n = !1) => Be(t[r]) ? Ve(e, r) || Ie(r) ? !0 : n && ke(Fe(e, t), r) : !1, "shouldIncludeTreeGridChangeDataKey"), V = /* @__PURE__ */ l((e, t, r, n = !1) => Object.fromEntries(
230
- M(Object.keys(t), ...r).filter(
231
- (s) => $e(e, t, s, n)
232
- ).map((s) => [s, t[s]])
233
- ), "normalizeTreeGridChangeRow"), xe = /* @__PURE__ */ l((e, t, r) => t.filter((n) => W(n, r) === "1" && n.Deleted !== "1").map(
234
- (n) => r === "Changed" ? V(e, n, ["id", "Changed"]) : V(e, n, ["id"], !0)
235
- ).filter((n) => !Y(n)), "getChangedRowsByStatus"), je = /* @__PURE__ */ l((e, t) => e ? t.map((r) => {
229
+ }, "getLiveTreeGridChangedRow"), ke = /* @__PURE__ */ l((e, t, r, n = !1, s = !1) => Le(t[r]) ? Be(e, r) ? !s || K(e, r) : Ve(r) ? !0 : n && Fe($e(e, t), r) : !1, "shouldIncludeTreeGridChangeDataKey"), V = /* @__PURE__ */ l((e, t, r, n = !1, s = !1) => Object.fromEntries(
230
+ X(Object.keys(t), ...r).filter(
231
+ (i) => ke(
232
+ e,
233
+ t,
234
+ i,
235
+ n,
236
+ s
237
+ )
238
+ ).map((i) => [i, t[i]])
239
+ ), "normalizeTreeGridChangeRow"), xe = /* @__PURE__ */ l((e, t, r) => t.filter((n) => Y(n, r) === "1" && n.Deleted !== "1").map(
240
+ (n) => r === "Changed" ? V(e, n, ["id", "Changed"]) : V(e, n, ["id"], !0, !0)
241
+ ).filter((n) => !M(n)), "getChangedRowsByStatus"), je = /* @__PURE__ */ l((e, t) => e ? t.map((r) => {
236
242
  const n = typeof r.id == "string" ? e.Rows[r.id] : null;
237
243
  if (!n)
238
244
  return r;
@@ -248,7 +254,7 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
248
254
  }
249
255
  }, "commitTreeGridActiveEdit"), u = /* @__PURE__ */ l((e) => Grids[e], "getTreeGridById"), pe = /* @__PURE__ */ l((e) => {
250
256
  const t = u(e);
251
- return t ? w(t, fe(t)) : [];
257
+ return t ? w(t, Re(t)) : [];
252
258
  }, "getTreeGridDataRowsById"), et = /* @__PURE__ */ l((e, t) => {
253
259
  const r = u(e);
254
260
  if (!r)
@@ -265,20 +271,20 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
265
271
  const r = u(e);
266
272
  if (!r)
267
273
  return;
268
- const n = t == null ? void 0 : t.canSelect, s = t == null ? void 0 : t.initialValues, i = t == null ? void 0 : t.editableColumns, a = he(r), c = !!n && a, d = c && _e(s), f = d ? De(s) : s;
274
+ const n = t == null ? void 0 : t.canSelect, s = t == null ? void 0 : t.initialValues, i = t == null ? void 0 : t.editableColumns, a = _e(r), c = !!n && a, d = c && De(s), f = d ? Se(s) : s;
269
275
  c && b(e);
270
- const { resolvedParent: R, next: T } = Se(r, t), o = r.AddRow(R, T, 1);
271
- p(o), Ae(r, o, f), ce(r, o), o.CanEdit = 1, o.CanDelete = 1, o.CanSelect = n ? 1 : 0, be(r, o, i), d && r.SelectRow(o, 1), r.Focus(o), r.RefreshRow(o), r.Calculate(1, 1), window.setTimeout(() => {
276
+ const { resolvedParent: R, next: T } = Ae(r, t), o = r.AddRow(R, T, 1);
277
+ ee(o), be(r, o, f), de(r, o), o.CanEdit = 1, o.CanDelete = 1, o.CanSelect = n ? 1 : 0, Ie(r, o, i), d && r.SelectRow(o, 1), r.Focus(o), r.RefreshRow(o), r.Calculate(1, 1), window.setTimeout(() => {
272
278
  _(e);
273
279
  }, 0);
274
280
  }, "addTreeGridRowById"), rt = /* @__PURE__ */ l((e, t) => {
275
281
  const r = u(e);
276
282
  if (!r)
277
283
  return { valid: !1, errors: [] };
278
- const n = ae(r, t), s = [], i = t.refresh === !1 ? 0 : 1;
284
+ const n = ce(r, t), s = [], i = t.refresh === !1 ? 0 : 1;
279
285
  n.forEach((c) => {
280
- Te(r, c, t).forEach((d) => {
281
- const f = d.key, R = F(r, c, f), T = Ge(r, d), o = {
286
+ Ge(r, c, t).forEach((d) => {
287
+ const f = d.key, R = $(r, c, f), T = Ee(r, d), o = {
282
288
  grid: r,
283
289
  row: c,
284
290
  col: f,
@@ -286,20 +292,20 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
286
292
  label: T,
287
293
  value: R
288
294
  };
289
- if (!Ce(R)) {
295
+ if (!me(R)) {
290
296
  r.SetAttribute(c, f, "Error", "", i);
291
297
  return;
292
298
  }
293
- const I = Ee(
299
+ const I = Ce(
294
300
  o,
295
301
  d,
296
302
  t.messageFactory
297
- ), K = { ...o, message: I };
298
- r.SetAttribute(c, f, "Error", I, i), s.push(K);
303
+ ), q = { ...o, message: I };
304
+ r.SetAttribute(c, f, "Error", I, i), s.push(q);
299
305
  });
300
306
  });
301
307
  const a = s[0];
302
- return me(r, a, t), {
308
+ return ye(r, a, t), {
303
309
  valid: !a,
304
310
  errors: s,
305
311
  firstError: a
@@ -307,10 +313,10 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
307
313
  }, "validateTreeGridRequiredCellsById"), nt = /* @__PURE__ */ l((e) => {
308
314
  const t = u(e);
309
315
  we(t);
310
- const r = N(t == null ? void 0 : t.GetXmlData("changes,allcols,nogrid,noio"));
316
+ const r = U(t == null ? void 0 : t.GetXmlData("changes,allcols,nogrid,noio"));
311
317
  return D(r) ? Object.fromEntries(
312
- X.map((n) => [
313
- P(n),
318
+ Q.map((n) => [
319
+ W(n),
314
320
  xe(
315
321
  t,
316
322
  je(t, r),
@@ -320,14 +326,14 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
320
326
  ) : { added: [], changed: [] };
321
327
  }, "getTreeGridRowChangesById"), st = /* @__PURE__ */ l((e, t) => {
322
328
  const r = u(e);
323
- r && ue().then(
329
+ r && fe().then(
324
330
  (n) => n(r, { exportName: t ?? "" })
325
331
  );
326
332
  }, "exportTreeGridToExcelById"), lt = /* @__PURE__ */ l((e, t) => {
327
333
  const r = u(e), n = r == null ? void 0 : r.GetSelRows();
328
334
  if (!r || !n)
329
335
  return [];
330
- const s = U(
336
+ const s = P(
331
337
  r,
332
338
  n,
333
339
  t
@@ -345,12 +351,12 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
345
351
  r.HideCol(n);
346
352
  }, "setTreeGridColumnVisibilityById"), at = /* @__PURE__ */ l((e, t) => {
347
353
  const r = u(e), n = t == null ? void 0 : t.row, s = t == null ? void 0 : t.col;
348
- !r || !n || !s || (de(r, n, s), r.SetValue(n, `${s}Class`, z), r.SetValue(n, `${s}Color`, t.backgroundColor ?? O), t.refresh !== !1 && r.RefreshCell(n, s));
354
+ !r || !n || !s || (oe(r, n, s), r.SetValue(n, `${s}Class`, O), r.SetValue(n, `${s}Color`, t.backgroundColor ?? N), t.refresh !== !1 && r.RefreshCell(n, s));
349
355
  }, "highlightTreeGridCellById"), ct = /* @__PURE__ */ l((e, t) => {
350
356
  const r = u(e), n = t == null ? void 0 : t.row, s = t == null ? void 0 : t.col;
351
357
  if (!r || !n || !s)
352
358
  return;
353
- const i = oe(n, s);
359
+ const i = ue(n, s);
354
360
  r.SetValue(n, `${s}Class`, (i == null ? void 0 : i.className) ?? ""), r.SetValue(n, `${s}Color`, (i == null ? void 0 : i.color) ?? ""), r.RefreshCell(n, s);
355
361
  }, "clearTreeGridCellHighlightById"), b = /* @__PURE__ */ l((e) => {
356
362
  const t = u(e);
@@ -377,8 +383,8 @@ const X = ["Added", "Changed"], Q = ["OWP", "IPX"], g = /^H{1,2}(?::m{1,2})?(?::
377
383
  i.SetAttribute(null, t, "Type", "Enum", 0, 0), i.SetAttribute(null, t, "Enum", `|${a}`, 0, 0), i.SetAttribute(null, t, "EnumKeys", `|${c}`, 1, 0);
378
384
  }, "setTreeGridColumnEnumOptionsById");
379
385
  export {
380
- z as TREEGRID_CELL_CHANGED_CLASS,
381
- O as TREEGRID_CELL_HIGHLIGHT_COLOR,
386
+ O as TREEGRID_CELL_CHANGED_CLASS,
387
+ N as TREEGRID_CELL_HIGHLIGHT_COLOR,
382
388
  Tt as TREEGRID_INPUT_CELL_COLOR,
383
389
  Gt as TREEGRID_WARNING_CELL_COLOR,
384
390
  tt as addTreeGridRowById,
@@ -386,17 +392,17 @@ export {
386
392
  ct as clearTreeGridCellHighlightById,
387
393
  st as exportTreeGridToExcelById,
388
394
  Ze as getTreeGridAddedRowBaselineValue,
389
- Je as getTreeGridAddedRowHighlightColumns,
395
+ ge as getTreeGridAddedRowHighlightColumns,
390
396
  u as getTreeGridById,
391
- F as getTreeGridCellComparableValue,
397
+ $ as getTreeGridCellComparableValue,
392
398
  pe as getTreeGridDataRowsById,
393
399
  nt as getTreeGridRowChangesById,
394
400
  lt as getTreeGridSelectedRowsById,
395
401
  at as highlightTreeGridCellById,
396
- ee as isTreeGridRowAddedById,
402
+ te as isTreeGridRowAddedById,
397
403
  w as normalizeTreeGridExternalRows,
398
404
  et as reloadTreeGridBodyById,
399
- ge as removeTreeGridAddedRowHighlightColumn,
405
+ Je as removeTreeGridAddedRowHighlightColumn,
400
406
  He as resetTreeGridChangesById,
401
407
  ot as resetTreeGridChangesByIds,
402
408
  b as resetTreeGridSelectionById,
@@ -1 +1 @@
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 {\n resolveTreeGridSelectedRows,\n type OwpTreeGridSelectedRowsResolveOptions,\n type OwpTreeGridSelectionScope,\n} from '@/components/OwpTreeGrid/internal/treeGridSelection';\nimport { emitTreeGridBodyRowsChanged } from '@/utils/internal/treeGridBodyRowsEvent';\nimport { isPlainObject } from 'es-toolkit';\nimport { get, isArray, isEmpty, lowerCase, 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 editableColumns?: readonly string[];\n};\n\ntype TreeGridColumnVisibilityOptions = {\n targetKey: string;\n canVisible: boolean;\n};\n\ntype TreeGridHighlightTargetOption = {\n row: TRow;\n col: string;\n backgroundColor?: string;\n refresh?: boolean;\n};\n\nexport type TreeGridSelectionScope = OwpTreeGridSelectionScope;\nexport type TreeGridSelectedRowsOptions = OwpTreeGridSelectedRowsResolveOptions;\n\nexport type TreeGridRequiredCellColumn =\n | string\n | {\n key: string;\n label?: string;\n message?: string;\n };\n\nexport type TreeGridRequiredCellMessageContext = {\n grid: TGrid;\n row: TRow;\n col: string;\n key: string;\n label: string;\n value: string;\n};\n\nexport type TreeGridRequiredCellValidationError = TreeGridRequiredCellMessageContext & {\n message: string;\n};\n\nexport type TreeGridRequiredCellTargetRow = 'added' | 'changed' | 'all';\n\ntype TreeGridRequiredCellsValidationBaseOptions = {\n targetRows?: TreeGridRequiredCellTargetRow | readonly TreeGridRequiredCellTargetRow[];\n rows?: readonly TRow[];\n messageFactory?: (context: TreeGridRequiredCellMessageContext) => string;\n focusFirstError?: boolean;\n startEditFirstError?: boolean;\n refresh?: boolean;\n};\n\nexport type TreeGridRequiredCellsValidationOptions =\n TreeGridRequiredCellsValidationBaseOptions &\n (\n | {\n editableOnly: true;\n columns?: readonly TreeGridRequiredCellColumn[];\n }\n | {\n columns: readonly TreeGridRequiredCellColumn[];\n editableOnly?: boolean;\n }\n );\n\nexport type TreeGridRequiredCellsValidationResult = {\n valid: boolean;\n errors: TreeGridRequiredCellValidationError[];\n firstError?: TreeGridRequiredCellValidationError;\n};\n\ntype NormalizedTreeGridRequiredCellColumn = {\n key: string;\n label?: string;\n message?: string;\n};\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})?$/;\nconst TREEGRID_ADDED_ROW_BY_ID_FLAG = '__owpAddedByAddTreeGridRowById';\nconst TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY = '__owpAddedRowHighlightColumns';\nconst TREEGRID_ADDED_ROW_INITIAL_VALUE_KEYS_KEY = '__owpAddedRowInitialValueKeys';\nconst TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY = '__owpAddedRowBaselineValues';\nconst TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY = '__owpCellStyleBaselineValues';\nconst TREEGRID_ROW_SELECTED_KEY = 'Selected';\n\nconst DEFAULT_TREE_GRID_REQUIRED_CELL_MESSAGE_FACTORY = ({\n label,\n}: TreeGridRequiredCellMessageContext) => `${label} 필수 입력`;\nconst DEFAULT_TREE_GRID_REQUIRED_CELL_TARGET_ROWS: readonly TreeGridRequiredCellTargetRow[] = [\n 'added',\n];\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 */\nconst 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 * TreeGrid 신규 행 여부\n * @param row 대상 행\n */\nconst isTreeGridAddedRow = (row: TRow | null | undefined) => {\n const added = (row as { Added?: unknown } | null)?.Added;\n\n return added === 1 || added === '1' || added === true || isTreeGridRowAddedById(row);\n};\n\n/**\n * TreeGrid 수정 행 여부\n * @param row 대상 행\n */\nconst isTreeGridChangedRow = (row: TRow | null | undefined) => {\n const changed = (row as { Changed?: unknown } | null)?.Changed;\n\n return !isTreeGridAddedRow(row) && (changed === 1 || changed === '1' || changed === true);\n};\n\n/**\n * TreeGrid 삭제 행 여부\n * @param row 대상 행\n */\nconst isTreeGridDeletedRow = (row: TRow | null | undefined) => {\n const deleted = (row as { Deleted?: unknown } | null)?.Deleted;\n\n return deleted === 1 || deleted === '1' || deleted === true;\n};\n\n/**\n * TreeGrid 필수 검사 대상 행 종류 정규화\n * @param targetRows 검사 대상 행 종류\n */\nconst normalizeTreeGridRequiredCellTargetRows = (\n targetRows?: TreeGridRequiredCellsValidationOptions['targetRows'],\n) => {\n const normalizedTargetRows = isArray(targetRows)\n ? targetRows\n : targetRows\n ? [targetRows]\n : DEFAULT_TREE_GRID_REQUIRED_CELL_TARGET_ROWS;\n\n if (normalizedTargetRows.includes('all')) {\n return new Set<TreeGridRequiredCellTargetRow>(['all']);\n }\n\n return new Set<TreeGridRequiredCellTargetRow>(\n normalizedTargetRows.filter(\n (targetRow) => targetRow === 'added' || targetRow === 'changed',\n ),\n );\n};\n\n/**\n * TreeGrid 필수 검사 대상 행 여부\n * @param row 대상 행\n * @param targetRows 검사 대상 행 종류\n */\nconst shouldValidateTreeGridRequiredCellRow = (\n row: TRow,\n targetRows: Set<TreeGridRequiredCellTargetRow>,\n) => {\n if (isTreeGridDeletedRow(row)) {\n return false;\n }\n\n if (targetRows.has('all')) {\n return row.Kind === 'Data' || isTreeGridAddedRow(row);\n }\n\n return (\n (targetRows.has('added') && isTreeGridAddedRow(row)) ||\n (targetRows.has('changed') && isTreeGridChangedRow(row))\n );\n};\n\n/**\n * TreeGrid 명시 필수 검사 대상 행 여부\n * @param row 대상 행\n */\nconst shouldValidateExplicitTreeGridRequiredCellRow = (row: TRow | null | undefined) => {\n return !!row && !isTreeGridDeletedRow(row) && (row.Kind === 'Data' || isTreeGridAddedRow(row));\n};\n\n/**\n * TreeGrid live 행 조회\n * @param grid TreeGrid 인스턴스\n * @param row 대상 행\n */\nconst resolveLiveTreeGridRequiredCellRow = (grid: TGrid, row: TRow | null | undefined) => {\n if (!row) {\n return undefined;\n }\n\n if (typeof row.id !== 'string') {\n return row;\n }\n\n return (grid.Rows as unknown as Record<string, TRow | undefined>)?.[row.id] ?? row;\n};\n\n/**\n * TreeGrid 필수 검사 명시 행 목록 정규화\n * @param grid TreeGrid 인스턴스\n * @param rows 명시 검사 행 목록\n */\nconst normalizeExplicitTreeGridRequiredCellRows = (\n grid: TGrid,\n rows: readonly TRow[],\n) => {\n const seenRows = new Set<TRow>();\n const normalizedRows: TRow[] = [];\n\n rows.forEach((row) => {\n const liveRow = resolveLiveTreeGridRequiredCellRow(grid, row);\n\n if (\n !shouldValidateExplicitTreeGridRequiredCellRow(liveRow) ||\n seenRows.has(liveRow)\n ) {\n return;\n }\n\n seenRows.add(liveRow);\n normalizedRows.push(liveRow);\n });\n\n return normalizedRows;\n};\n\n/**\n * TreeGrid 필수 검사 대상 행 목록 조회\n * @param grid TreeGrid 인스턴스\n * @param options 필수 검사 옵션\n */\nconst getTreeGridRequiredCellRows = (\n grid: TGrid,\n options: TreeGridRequiredCellsValidationOptions,\n) => {\n if (options.rows !== undefined) {\n return normalizeExplicitTreeGridRequiredCellRows(grid, options.rows);\n }\n\n const targetRows = normalizeTreeGridRequiredCellTargetRows(options.targetRows);\n\n return Object.values(grid.Rows ?? {}).filter((row) =>\n shouldValidateTreeGridRequiredCellRow(row, targetRows),\n );\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 필수 컬럼 설정 정규화\n * @param columns 필수 컬럼 설정 목록\n */\nconst normalizeTreeGridRequiredCellColumns = (\n columns?: readonly TreeGridRequiredCellColumn[],\n) => {\n if (!columns?.length) {\n return [];\n }\n\n return columns\n .map((column): NormalizedTreeGridRequiredCellColumn | null => {\n if (typeof column === 'string') {\n const key = column.trim();\n\n return key ? { key } : null;\n }\n\n if (!isPlainObject(column) || typeof column.key !== 'string') {\n return null;\n }\n\n const key = column.key.trim();\n\n if (!key) {\n return null;\n }\n\n return {\n key,\n label: typeof column.label === 'string' ? column.label.trim() : undefined,\n message: typeof column.message === 'string' ? column.message : undefined,\n };\n })\n .filter((column): column is NormalizedTreeGridRequiredCellColumn => !!column);\n};\n\n/**\n * TreeGrid 셀 편집 가능 여부\n * @param grid TreeGrid 인스턴스\n * @param row 대상 행\n * @param col 대상 컬럼\n */\nconst isTreeGridEditableCell = (grid: TGrid, row: TRow, col: string) => {\n const canEdit = grid.CanEdit?.(row, col) as unknown;\n\n return canEdit === 1 || canEdit === '1' || canEdit === true;\n};\n\n/**\n * TreeGrid 필수 검사 컬럼 목록 조회\n * @param grid TreeGrid 인스턴스\n * @param row 대상 행\n * @param options 필수 검사 옵션\n */\nconst getTreeGridRequiredCellColumns = (\n grid: TGrid,\n row: TRow,\n options: TreeGridRequiredCellsValidationOptions,\n) => {\n const requiredColumns = normalizeTreeGridRequiredCellColumns(options.columns);\n\n if (requiredColumns.length) {\n return requiredColumns.filter((column) => !!grid.Cols?.[column.key]);\n }\n\n if (!options.editableOnly) {\n return [];\n }\n\n return Object.keys(grid.Cols ?? {})\n .filter((col) => isVisibleTreeGridColumn(grid, col) && isTreeGridEditableCell(grid, row, col))\n .map((key) => ({ key }));\n};\n\n/**\n * TreeGrid 필수 오류 라벨 조회\n * @param grid TreeGrid 인스턴스\n * @param column 필수 컬럼 설정\n */\nconst getTreeGridRequiredCellLabel = (\n grid: TGrid,\n column: NormalizedTreeGridRequiredCellColumn,\n) => {\n if (column.label) {\n return column.label;\n }\n\n try {\n const caption = grid.GetCaption?.(column.key);\n\n if (caption) {\n return `${caption}`.trim();\n }\n } catch {\n // GetCaption 미지원 컬럼 fallback\n }\n\n const columnCaption = (grid.Cols?.[column.key] as { Caption?: unknown } | undefined)?.Caption;\n\n if (columnCaption) {\n return `${columnCaption}`.trim();\n }\n\n return column.key;\n};\n\n/**\n * TreeGrid 필수 오류 메시지 조회\n * @param context 메시지 생성 컨텍스트\n * @param column 필수 컬럼 설정\n * @param messageFactory 메시지 생성 함수\n */\nconst getTreeGridRequiredCellMessage = (\n context: TreeGridRequiredCellMessageContext,\n column: NormalizedTreeGridRequiredCellColumn,\n messageFactory?: (context: TreeGridRequiredCellMessageContext) => string,\n) => {\n if (column.message) {\n return column.message;\n }\n\n return (messageFactory ?? DEFAULT_TREE_GRID_REQUIRED_CELL_MESSAGE_FACTORY)(context);\n};\n\n/**\n * TreeGrid 필수값 공백 여부\n * @param value 비교 값\n */\nconst isBlankTreeGridRequiredCellValue = (value: string) => value.trim() === '';\n\n/**\n * TreeGrid 필수 오류 포커스 반영\n * @param grid TreeGrid 인스턴스\n * @param error 최초 오류\n * @param options 필수 검사 옵션\n */\nconst focusFirstTreeGridRequiredCellError = (\n grid: TGrid,\n error: TreeGridRequiredCellValidationError | undefined,\n options: TreeGridRequiredCellsValidationOptions,\n) => {\n if (!error || options.focusFirstError === false) {\n return;\n }\n\n grid.Focus(error.row, error.col);\n\n if (options.startEditFirstError === true && isTreeGridEditableCell(grid, error.row, error.col)) {\n grid.StartEdit(error.row, error.col);\n }\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 */\nconst 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/** TreeGrid 명시 활성 설정값 여부 */\nconst isTreeGridExplicitEnabledConfigValue = (value: unknown) =>\n value === 1 || value === true || value === '1' || value === 'true';\n\n/**\n * TreeGrid 단일 선택 레이아웃 여부\n * @param grid TreeGrid 인스턴스\n */\nconst isTreeGridSingleSelectionLayout = (grid: TGrid) =>\n isTreeGridExplicitEnabledConfigValue(grid.SelectingSingle);\n\n/**\n * 신규 행 선택 초기값 활성 여부\n * @param initialValues 신규 행 초기값\n */\nconst isTreeGridSelectedInitialValue = <T>(initialValues?: T) => {\n if (!isPlainObject(initialValues)) {\n return false;\n }\n\n return isTreeGridExplicitEnabledConfigValue(\n (initialValues as Record<string, unknown>)[TREEGRID_ROW_SELECTED_KEY],\n );\n};\n\n/**\n * 신규 행 초기값에서 선택 상태 제외\n * @param initialValues 신규 행 초기값\n */\nconst omitTreeGridSelectedInitialValue = <T>(initialValues?: T) => {\n if (!isPlainObject(initialValues)) {\n return initialValues;\n }\n\n const initialValueRecord = initialValues as Record<string, unknown>;\n\n if (!(TREEGRID_ROW_SELECTED_KEY in initialValueRecord)) {\n return initialValues;\n }\n\n return Object.fromEntries(\n Object.entries(initialValueRecord).filter(\n ([key]) => key !== TREEGRID_ROW_SELECTED_KEY,\n ),\n ) as T;\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 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 grid TreeGrid 인스턴스\n * @param row 생성된 TreeGrid 행\n * @param editableColumns 편집 가능 처리할 컬럼 키 목록\n */\nconst assignEditableAddedRowColumns = (\n grid: TGrid,\n row: TRow,\n editableColumns?: readonly string[],\n) => {\n const targetColumns = normalizeTreeGridStringValues(editableColumns);\n\n if (!targetColumns.length) {\n return;\n }\n\n const rowRecord = row as unknown as Record<string, unknown>;\n\n targetColumns.forEach((col) => {\n if (!grid.Cols?.[col]) {\n return;\n }\n\n rowRecord[`${col}CanEdit`] = 1;\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 grid TreeGrid 인스턴스\n * @param key 컬럼 키\n */\nconst isTreeGridColumnDataKey = (grid: TGrid | undefined, key: string) => {\n return !!grid?.Cols?.[key];\n};\n\n/**\n * TreeGrid 업로드 값 포함 대상 여부\n * @param value 업로드 값\n */\nconst hasTreeGridUploadValue = (value: unknown) => {\n return value !== undefined && value !== null && value !== '';\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 * @param includeAddedInitialValues 추가 행 초기값 키 포함 여부\n */\nconst shouldIncludeTreeGridChangeDataKey = (\n grid: TGrid | undefined,\n row: TreeGridChangedRow,\n key: string,\n includeAddedInitialValues = false,\n) => {\n if (!hasTreeGridUploadValue(row[key])) {\n return false;\n }\n\n if (isTreeGridColumnDataKey(grid, key)) {\n return true;\n }\n\n if (isTreeGridDataKey(key)) {\n return true;\n }\n\n return (\n includeAddedInitialValues &&\n isTreeGridAddedRowInitialValueKey(getLiveTreeGridChangedRow(grid, row), key)\n );\n};\n\n/**\n * TreeGrid 변경 행 데이터 정규화\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 변경 행 데이터\n * @param excludedKeys 제외할 상태 키 목록\n * @param includeAddedInitialValues 추가 행 초기값 키 포함 여부\n */\nconst normalizeTreeGridChangeRow = <T>(\n grid: TGrid | undefined,\n row: TreeGridChangedRow,\n excludedKeys: string[],\n includeAddedInitialValues = false,\n) => {\n return Object.fromEntries(\n without(Object.keys(row), ...excludedKeys)\n .filter((key) =>\n shouldIncludeTreeGridChangeDataKey(grid, row, key, includeAddedInitialValues),\n )\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'\n ? normalizeTreeGridChangeRow<T>(grid, row, ['id', 'Changed'])\n : normalizeTreeGridChangeRow<T>(grid, row, ['id'], true),\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 활성 편집 셀 값 확정\n * @param grid TreeGrid 인스턴스\n */\nconst commitTreeGridActiveEdit = (grid: TGrid | undefined) => {\n try {\n grid?.EndEdit?.(1);\n } catch {\n // 편집 미진입 또는 확정 불가 상태 fallback\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 * @param options.editableColumns 신규 행 셀 단위 편집 가능 컬럼\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 editableColumns = options?.editableColumns;\n const isSingleSelectionLayout = isTreeGridSingleSelectionLayout(grid);\n const shouldResetSelection = !!canSelect && isSingleSelectionLayout;\n const shouldSelectAddedRow =\n shouldResetSelection && isTreeGridSelectedInitialValue(initialValues);\n const resolvedInitialValues = shouldSelectAddedRow\n ? omitTreeGridSelectedInitialValue(initialValues)\n : initialValues;\n\n if (shouldResetSelection) {\n resetTreeGridSelectionById(gridId);\n }\n\n const { resolvedParent, next } = resolveRowInsertionTarget(grid, options);\n\n const newRow = grid.AddRow(resolvedParent, next, 1);\n\n markTreeGridRowAddedById(newRow);\n assignInitialRowValues(grid, newRow, resolvedInitialValues);\n markTreeGridAddedRowBaselineValues(grid, newRow);\n\n newRow.CanEdit = 1;\n newRow.CanDelete = 1;\n newRow.CanSelect = canSelect ? 1 : 0;\n assignEditableAddedRowColumns(grid, newRow, editableColumns);\n\n if (shouldSelectAddedRow) {\n grid.SelectRow(newRow, 1);\n }\n\n grid.Focus(newRow);\n grid.RefreshRow(newRow);\n grid.Calculate(1, 1);\n window.setTimeout(() => {\n emitTreeGridBodyRowsChanged(gridId);\n }, 0);\n};\n\n/**\n * TreeGrid 필수 셀 Error 검증\n * @param gridId TreeGrid 인스턴스 ID\n * @param options 필수 검사 옵션\n */\nexport const validateTreeGridRequiredCellsById = (\n gridId: string,\n options: TreeGridRequiredCellsValidationOptions,\n): TreeGridRequiredCellsValidationResult => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return { valid: false, errors: [] };\n }\n\n const rows = getTreeGridRequiredCellRows(grid, options);\n const errors: TreeGridRequiredCellValidationError[] = [];\n const refresh = options.refresh === false ? 0 : 1;\n\n rows.forEach((row) => {\n getTreeGridRequiredCellColumns(grid, row, options).forEach((column) => {\n const col = column.key;\n const value = getTreeGridCellComparableValue(grid, row, col);\n const label = getTreeGridRequiredCellLabel(grid, column);\n const context = {\n grid,\n row,\n col,\n key: col,\n label,\n value,\n };\n\n if (!isBlankTreeGridRequiredCellValue(value)) {\n grid.SetAttribute(row, col, 'Error', '', refresh);\n return;\n }\n\n const message = getTreeGridRequiredCellMessage(\n context,\n column,\n options.messageFactory,\n );\n const error = { ...context, message };\n\n grid.SetAttribute(row, col, 'Error', message, refresh);\n errors.push(error);\n });\n });\n\n const firstError = errors[0];\n\n focusFirstTreeGridRequiredCellError(grid, firstError, options);\n\n return {\n valid: !firstError,\n errors,\n firstError,\n };\n};\n\n/**\n * TreeGrid 추가/수정 데이터 행 조회\n * @param gridId TreeGrid 인스턴스 ID\n */\nexport const getTreeGridRowChangesById = <T>(gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n commitTreeGridActiveEdit(grid);\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 * @param options 선택 행 반환 옵션\n */\nexport const getTreeGridSelectedRowsById = <T>(\n gridId: string,\n options?: TreeGridSelectedRowsOptions,\n) => {\n const grid = getTreeGridById(gridId);\n\n const selectedRows = grid?.GetSelRows();\n\n if (!grid || !selectedRows) {\n return [];\n }\n\n const resolvedSelectedRows = resolveTreeGridSelectedRows<T>(\n grid,\n selectedRows as Array<TRow & T>,\n options,\n );\n\n return normalizeTreeGridExternalRows<T>(grid, resolvedSelectedRows) 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 * @param targetOption.refresh 강조 적용 후 셀 refresh 여부\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\n if (targetOption.refresh !== false) {\n grid.RefreshCell(row, col);\n }\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 grid.Calculate(1, 1);\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","TREEGRID_ROW_SELECTED_KEY","DEFAULT_TREE_GRID_REQUIRED_CELL_MESSAGE_FACTORY","__name","label","DEFAULT_TREE_GRID_REQUIRED_CELL_TARGET_ROWS","normalizeTreeGridStringValues","value","isArray","item","normalizeTreeGridAddedRowHighlightColumns","markTreeGridRowAddedById","row","isTreeGridRowAddedById","addedById","isTreeGridAddedRow","added","isTreeGridChangedRow","changed","isTreeGridDeletedRow","deleted","normalizeTreeGridRequiredCellTargetRows","targetRows","normalizedTargetRows","targetRow","shouldValidateTreeGridRequiredCellRow","shouldValidateExplicitTreeGridRequiredCellRow","resolveLiveTreeGridRequiredCellRow","grid","_a","normalizeExplicitTreeGridRequiredCellRows","rows","seenRows","normalizedRows","liveRow","getTreeGridRequiredCellRows","options","appendTreeGridAddedRowHighlightColumn","col","currentColumns","removeTreeGridAddedRowHighlightColumn","nextColumns","column","getTreeGridAddedRowHighlightColumns","getTreeGridCellComparableValue","cellType","_c","_b","rawValue","_d","displayValue","_e","markTreeGridAddedRowBaselineValues","baselineValues","getTreeGridAddedRowBaselineValue","preserveTreeGridCellStyleBaseline","getTreeGridCellStyleBaseline","loadExportTreeGridExcel","exportTreeGridExcel","getDataRows","normalizeTreeGridRequiredCellColumns","columns","key","isPlainObject","isTreeGridEditableCell","canEdit","getTreeGridRequiredCellColumns","requiredColumns","isVisibleTreeGridColumn","getTreeGridRequiredCellLabel","caption","columnCaption","getTreeGridRequiredCellMessage","context","messageFactory","isBlankTreeGridRequiredCellValue","focusFirstTreeGridRequiredCellError","error","isTreeGridTimeDateFormat","format","isTreeGridTimeDateColumn","rowRecord","getTreeGridTimeDateDisplayValue","normalizeTreeGridExternalRow","normalizedRow","normalizeTreeGridExternalRows","isTreeGridExplicitEnabledConfigValue","isTreeGridSingleSelectionLayout","isTreeGridSelectedInitialValue","initialValues","omitTreeGridSelectedInitialValue","initialValueRecord","resolveRowInsertionTarget","insertPosition","parent","anchorRow","resolvedParent","next","assignInitialRowValues","initialValueKeys","rowKey","rowValue","assignEditableAddedRowColumns","editableColumns","targetColumns","isTreeGridDataKey","prefix","isTreeGridColumnDataKey","hasTreeGridUploadValue","isHiddenTreeGridValue","isTreeGridAddedRowInitialValueKey","getLiveTreeGridChangedRow","shouldIncludeTreeGridChangeDataKey","includeAddedInitialValues","normalizeTreeGridChangeRow","excludedKeys","without","getChangedRowsByStatus","status","get","isEmpty","normalizeTreeGridChangedRows","commitTreeGridActiveEdit","getTreeGridById","gridId","getTreeGridDataRowsById","reloadTreeGridBodyById","currentData","emitTreeGridBodyRowsChanged","addTreeGridRowById","canSelect","isSingleSelectionLayout","shouldResetSelection","shouldSelectAddedRow","resolvedInitialValues","resetTreeGridSelectionById","newRow","validateTreeGridRequiredCellsById","errors","refresh","message","firstError","getTreeGridRowChangesById","changesData","parseTreeGridXmlToJson","lowerCase","exportTreeGridToExcelById","title","getTreeGridSelectedRowsById","selectedRows","resolvedSelectedRows","resolveTreeGridSelectedRows","setTreeGridColumnVisibilityById","targetKey","highlightTreeGridCellById","targetOption","TREEGRID_CELL_CHANGED_CLASS","TREEGRID_CELL_HIGHLIGHT_COLOR","clearTreeGridCellHighlightById","styleBaseline","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 {\n resolveTreeGridSelectedRows,\n type OwpTreeGridSelectedRowsResolveOptions,\n type OwpTreeGridSelectionScope,\n} from '@/components/OwpTreeGrid/internal/treeGridSelection';\nimport { emitTreeGridBodyRowsChanged } from '@/utils/internal/treeGridBodyRowsEvent';\nimport { isPlainObject } from 'es-toolkit';\nimport { get, isArray, isEmpty, lowerCase, 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 editableColumns?: readonly string[];\n};\n\ntype TreeGridColumnVisibilityOptions = {\n targetKey: string;\n canVisible: boolean;\n};\n\ntype TreeGridHighlightTargetOption = {\n row: TRow;\n col: string;\n backgroundColor?: string;\n refresh?: boolean;\n};\n\nexport type TreeGridSelectionScope = OwpTreeGridSelectionScope;\nexport type TreeGridSelectedRowsOptions = OwpTreeGridSelectedRowsResolveOptions;\n\nexport type TreeGridRequiredCellColumn =\n | string\n | {\n key: string;\n label?: string;\n message?: string;\n };\n\nexport type TreeGridRequiredCellMessageContext = {\n grid: TGrid;\n row: TRow;\n col: string;\n key: string;\n label: string;\n value: string;\n};\n\nexport type TreeGridRequiredCellValidationError = TreeGridRequiredCellMessageContext & {\n message: string;\n};\n\nexport type TreeGridRequiredCellTargetRow = 'added' | 'changed' | 'all';\n\ntype TreeGridRequiredCellsValidationBaseOptions = {\n targetRows?: TreeGridRequiredCellTargetRow | readonly TreeGridRequiredCellTargetRow[];\n rows?: readonly TRow[];\n messageFactory?: (context: TreeGridRequiredCellMessageContext) => string;\n focusFirstError?: boolean;\n startEditFirstError?: boolean;\n refresh?: boolean;\n};\n\nexport type TreeGridRequiredCellsValidationOptions =\n TreeGridRequiredCellsValidationBaseOptions &\n (\n | {\n editableOnly: true;\n columns?: readonly TreeGridRequiredCellColumn[];\n }\n | {\n columns: readonly TreeGridRequiredCellColumn[];\n editableOnly?: boolean;\n }\n );\n\nexport type TreeGridRequiredCellsValidationResult = {\n valid: boolean;\n errors: TreeGridRequiredCellValidationError[];\n firstError?: TreeGridRequiredCellValidationError;\n};\n\ntype NormalizedTreeGridRequiredCellColumn = {\n key: string;\n label?: string;\n message?: string;\n};\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})?$/;\nconst TREEGRID_ADDED_ROW_BY_ID_FLAG = '__owpAddedByAddTreeGridRowById';\nconst TREEGRID_ADDED_ROW_HIGHLIGHT_COLUMNS_KEY = '__owpAddedRowHighlightColumns';\nconst TREEGRID_ADDED_ROW_INITIAL_VALUE_KEYS_KEY = '__owpAddedRowInitialValueKeys';\nconst TREEGRID_ADDED_ROW_BASELINE_VALUES_KEY = '__owpAddedRowBaselineValues';\nconst TREEGRID_CELL_STYLE_BASELINE_VALUES_KEY = '__owpCellStyleBaselineValues';\nconst TREEGRID_ROW_SELECTED_KEY = 'Selected';\n\nconst DEFAULT_TREE_GRID_REQUIRED_CELL_MESSAGE_FACTORY = ({\n label,\n}: TreeGridRequiredCellMessageContext) => `${label} 필수 입력`;\nconst DEFAULT_TREE_GRID_REQUIRED_CELL_TARGET_ROWS: readonly TreeGridRequiredCellTargetRow[] = [\n 'added',\n];\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 */\nconst 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 * TreeGrid 신규 행 여부\n * @param row 대상 행\n */\nconst isTreeGridAddedRow = (row: TRow | null | undefined) => {\n const added = (row as { Added?: unknown } | null)?.Added;\n\n return added === 1 || added === '1' || added === true || isTreeGridRowAddedById(row);\n};\n\n/**\n * TreeGrid 수정 행 여부\n * @param row 대상 행\n */\nconst isTreeGridChangedRow = (row: TRow | null | undefined) => {\n const changed = (row as { Changed?: unknown } | null)?.Changed;\n\n return !isTreeGridAddedRow(row) && (changed === 1 || changed === '1' || changed === true);\n};\n\n/**\n * TreeGrid 삭제 행 여부\n * @param row 대상 행\n */\nconst isTreeGridDeletedRow = (row: TRow | null | undefined) => {\n const deleted = (row as { Deleted?: unknown } | null)?.Deleted;\n\n return deleted === 1 || deleted === '1' || deleted === true;\n};\n\n/**\n * TreeGrid 필수 검사 대상 행 종류 정규화\n * @param targetRows 검사 대상 행 종류\n */\nconst normalizeTreeGridRequiredCellTargetRows = (\n targetRows?: TreeGridRequiredCellsValidationOptions['targetRows'],\n) => {\n const normalizedTargetRows = isArray(targetRows)\n ? targetRows\n : targetRows\n ? [targetRows]\n : DEFAULT_TREE_GRID_REQUIRED_CELL_TARGET_ROWS;\n\n if (normalizedTargetRows.includes('all')) {\n return new Set<TreeGridRequiredCellTargetRow>(['all']);\n }\n\n return new Set<TreeGridRequiredCellTargetRow>(\n normalizedTargetRows.filter(\n (targetRow) => targetRow === 'added' || targetRow === 'changed',\n ),\n );\n};\n\n/**\n * TreeGrid 필수 검사 대상 행 여부\n * @param row 대상 행\n * @param targetRows 검사 대상 행 종류\n */\nconst shouldValidateTreeGridRequiredCellRow = (\n row: TRow,\n targetRows: Set<TreeGridRequiredCellTargetRow>,\n) => {\n if (isTreeGridDeletedRow(row)) {\n return false;\n }\n\n if (targetRows.has('all')) {\n return row.Kind === 'Data' || isTreeGridAddedRow(row);\n }\n\n return (\n (targetRows.has('added') && isTreeGridAddedRow(row)) ||\n (targetRows.has('changed') && isTreeGridChangedRow(row))\n );\n};\n\n/**\n * TreeGrid 명시 필수 검사 대상 행 여부\n * @param row 대상 행\n */\nconst shouldValidateExplicitTreeGridRequiredCellRow = (row: TRow | null | undefined) => {\n return !!row && !isTreeGridDeletedRow(row) && (row.Kind === 'Data' || isTreeGridAddedRow(row));\n};\n\n/**\n * TreeGrid live 행 조회\n * @param grid TreeGrid 인스턴스\n * @param row 대상 행\n */\nconst resolveLiveTreeGridRequiredCellRow = (grid: TGrid, row: TRow | null | undefined) => {\n if (!row) {\n return undefined;\n }\n\n if (typeof row.id !== 'string') {\n return row;\n }\n\n return (grid.Rows as unknown as Record<string, TRow | undefined>)?.[row.id] ?? row;\n};\n\n/**\n * TreeGrid 필수 검사 명시 행 목록 정규화\n * @param grid TreeGrid 인스턴스\n * @param rows 명시 검사 행 목록\n */\nconst normalizeExplicitTreeGridRequiredCellRows = (\n grid: TGrid,\n rows: readonly TRow[],\n) => {\n const seenRows = new Set<TRow>();\n const normalizedRows: TRow[] = [];\n\n rows.forEach((row) => {\n const liveRow = resolveLiveTreeGridRequiredCellRow(grid, row);\n\n if (\n !shouldValidateExplicitTreeGridRequiredCellRow(liveRow) ||\n seenRows.has(liveRow)\n ) {\n return;\n }\n\n seenRows.add(liveRow);\n normalizedRows.push(liveRow);\n });\n\n return normalizedRows;\n};\n\n/**\n * TreeGrid 필수 검사 대상 행 목록 조회\n * @param grid TreeGrid 인스턴스\n * @param options 필수 검사 옵션\n */\nconst getTreeGridRequiredCellRows = (\n grid: TGrid,\n options: TreeGridRequiredCellsValidationOptions,\n) => {\n if (options.rows !== undefined) {\n return normalizeExplicitTreeGridRequiredCellRows(grid, options.rows);\n }\n\n const targetRows = normalizeTreeGridRequiredCellTargetRows(options.targetRows);\n\n return Object.values(grid.Rows ?? {}).filter((row) =>\n shouldValidateTreeGridRequiredCellRow(row, targetRows),\n );\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 필수 컬럼 설정 정규화\n * @param columns 필수 컬럼 설정 목록\n */\nconst normalizeTreeGridRequiredCellColumns = (\n columns?: readonly TreeGridRequiredCellColumn[],\n) => {\n if (!columns?.length) {\n return [];\n }\n\n return columns\n .map((column): NormalizedTreeGridRequiredCellColumn | null => {\n if (typeof column === 'string') {\n const key = column.trim();\n\n return key ? { key } : null;\n }\n\n if (!isPlainObject(column) || typeof column.key !== 'string') {\n return null;\n }\n\n const key = column.key.trim();\n\n if (!key) {\n return null;\n }\n\n return {\n key,\n label: typeof column.label === 'string' ? column.label.trim() : undefined,\n message: typeof column.message === 'string' ? column.message : undefined,\n };\n })\n .filter((column): column is NormalizedTreeGridRequiredCellColumn => !!column);\n};\n\n/**\n * TreeGrid 셀 편집 가능 여부\n * @param grid TreeGrid 인스턴스\n * @param row 대상 행\n * @param col 대상 컬럼\n */\nconst isTreeGridEditableCell = (grid: TGrid, row: TRow, col: string) => {\n const canEdit = grid.CanEdit?.(row, col) as unknown;\n\n return canEdit === 1 || canEdit === '1' || canEdit === true;\n};\n\n/**\n * TreeGrid 필수 검사 컬럼 목록 조회\n * @param grid TreeGrid 인스턴스\n * @param row 대상 행\n * @param options 필수 검사 옵션\n */\nconst getTreeGridRequiredCellColumns = (\n grid: TGrid,\n row: TRow,\n options: TreeGridRequiredCellsValidationOptions,\n) => {\n const requiredColumns = normalizeTreeGridRequiredCellColumns(options.columns);\n\n if (requiredColumns.length) {\n return requiredColumns.filter((column) => !!grid.Cols?.[column.key]);\n }\n\n if (!options.editableOnly) {\n return [];\n }\n\n return Object.keys(grid.Cols ?? {})\n .filter((col) => isVisibleTreeGridColumn(grid, col) && isTreeGridEditableCell(grid, row, col))\n .map((key) => ({ key }));\n};\n\n/**\n * TreeGrid 필수 오류 라벨 조회\n * @param grid TreeGrid 인스턴스\n * @param column 필수 컬럼 설정\n */\nconst getTreeGridRequiredCellLabel = (\n grid: TGrid,\n column: NormalizedTreeGridRequiredCellColumn,\n) => {\n if (column.label) {\n return column.label;\n }\n\n try {\n const caption = grid.GetCaption?.(column.key);\n\n if (caption) {\n return `${caption}`.trim();\n }\n } catch {\n // GetCaption 미지원 컬럼 fallback\n }\n\n const columnCaption = (grid.Cols?.[column.key] as { Caption?: unknown } | undefined)?.Caption;\n\n if (columnCaption) {\n return `${columnCaption}`.trim();\n }\n\n return column.key;\n};\n\n/**\n * TreeGrid 필수 오류 메시지 조회\n * @param context 메시지 생성 컨텍스트\n * @param column 필수 컬럼 설정\n * @param messageFactory 메시지 생성 함수\n */\nconst getTreeGridRequiredCellMessage = (\n context: TreeGridRequiredCellMessageContext,\n column: NormalizedTreeGridRequiredCellColumn,\n messageFactory?: (context: TreeGridRequiredCellMessageContext) => string,\n) => {\n if (column.message) {\n return column.message;\n }\n\n return (messageFactory ?? DEFAULT_TREE_GRID_REQUIRED_CELL_MESSAGE_FACTORY)(context);\n};\n\n/**\n * TreeGrid 필수값 공백 여부\n * @param value 비교 값\n */\nconst isBlankTreeGridRequiredCellValue = (value: string) => value.trim() === '';\n\n/**\n * TreeGrid 필수 오류 포커스 반영\n * @param grid TreeGrid 인스턴스\n * @param error 최초 오류\n * @param options 필수 검사 옵션\n */\nconst focusFirstTreeGridRequiredCellError = (\n grid: TGrid,\n error: TreeGridRequiredCellValidationError | undefined,\n options: TreeGridRequiredCellsValidationOptions,\n) => {\n if (!error || options.focusFirstError === false) {\n return;\n }\n\n grid.Focus(error.row, error.col);\n\n if (options.startEditFirstError === true && isTreeGridEditableCell(grid, error.row, error.col)) {\n grid.StartEdit(error.row, error.col);\n }\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 */\nconst 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/** TreeGrid 명시 활성 설정값 여부 */\nconst isTreeGridExplicitEnabledConfigValue = (value: unknown) =>\n value === 1 || value === true || value === '1' || value === 'true';\n\n/**\n * TreeGrid 단일 선택 레이아웃 여부\n * @param grid TreeGrid 인스턴스\n */\nconst isTreeGridSingleSelectionLayout = (grid: TGrid) =>\n isTreeGridExplicitEnabledConfigValue(grid.SelectingSingle);\n\n/**\n * 신규 행 선택 초기값 활성 여부\n * @param initialValues 신규 행 초기값\n */\nconst isTreeGridSelectedInitialValue = <T>(initialValues?: T) => {\n if (!isPlainObject(initialValues)) {\n return false;\n }\n\n return isTreeGridExplicitEnabledConfigValue(\n (initialValues as Record<string, unknown>)[TREEGRID_ROW_SELECTED_KEY],\n );\n};\n\n/**\n * 신규 행 초기값에서 선택 상태 제외\n * @param initialValues 신규 행 초기값\n */\nconst omitTreeGridSelectedInitialValue = <T>(initialValues?: T) => {\n if (!isPlainObject(initialValues)) {\n return initialValues;\n }\n\n const initialValueRecord = initialValues as Record<string, unknown>;\n\n if (!(TREEGRID_ROW_SELECTED_KEY in initialValueRecord)) {\n return initialValues;\n }\n\n return Object.fromEntries(\n Object.entries(initialValueRecord).filter(\n ([key]) => key !== TREEGRID_ROW_SELECTED_KEY,\n ),\n ) as T;\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 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 grid TreeGrid 인스턴스\n * @param row 생성된 TreeGrid 행\n * @param editableColumns 편집 가능 처리할 컬럼 키 목록\n */\nconst assignEditableAddedRowColumns = (\n grid: TGrid,\n row: TRow,\n editableColumns?: readonly string[],\n) => {\n const targetColumns = normalizeTreeGridStringValues(editableColumns);\n\n if (!targetColumns.length) {\n return;\n }\n\n const rowRecord = row as unknown as Record<string, unknown>;\n\n targetColumns.forEach((col) => {\n if (!grid.Cols?.[col]) {\n return;\n }\n\n rowRecord[`${col}CanEdit`] = 1;\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 grid TreeGrid 인스턴스\n * @param key 컬럼 키\n */\nconst isTreeGridColumnDataKey = (grid: TGrid | undefined, key: string) => {\n return !!grid?.Cols?.[key];\n};\n\n/**\n * TreeGrid 업로드 값 포함 대상 여부\n * @param value 업로드 값\n */\nconst hasTreeGridUploadValue = (value: unknown) => {\n return value !== undefined && value !== null && value !== '';\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 * @param includeAddedInitialValues 추가 행 초기값 키 포함 여부\n * @param excludeHiddenColumns 숨김 컬럼 제외 여부\n */\nconst shouldIncludeTreeGridChangeDataKey = (\n grid: TGrid | undefined,\n row: TreeGridChangedRow,\n key: string,\n includeAddedInitialValues = false,\n excludeHiddenColumns = false,\n) => {\n if (!hasTreeGridUploadValue(row[key])) {\n return false;\n }\n\n if (isTreeGridColumnDataKey(grid, key)) {\n return !excludeHiddenColumns || isVisibleTreeGridColumn(grid, key);\n }\n\n if (isTreeGridDataKey(key)) {\n return true;\n }\n\n return (\n includeAddedInitialValues &&\n isTreeGridAddedRowInitialValueKey(getLiveTreeGridChangedRow(grid, row), key)\n );\n};\n\n/**\n * TreeGrid 변경 행 데이터 정규화\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 변경 행 데이터\n * @param excludedKeys 제외할 상태 키 목록\n * @param includeAddedInitialValues 추가 행 초기값 키 포함 여부\n * @param excludeHiddenColumns 숨김 컬럼 제외 여부\n */\nconst normalizeTreeGridChangeRow = <T>(\n grid: TGrid | undefined,\n row: TreeGridChangedRow,\n excludedKeys: string[],\n includeAddedInitialValues = false,\n excludeHiddenColumns = false,\n) => {\n return Object.fromEntries(\n without(Object.keys(row), ...excludedKeys)\n .filter((key) =>\n shouldIncludeTreeGridChangeDataKey(\n grid,\n row,\n key,\n includeAddedInitialValues,\n excludeHiddenColumns,\n ),\n )\n .map((key) => [key, row[key]]),\n ) as T;\n};\n\n/**\n * 변경 상태별 행 데이터 반환\n * @param grid TreeGrid 인스턴스\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'\n ? normalizeTreeGridChangeRow<T>(grid, row, ['id', 'Changed'])\n : normalizeTreeGridChangeRow<T>(grid, row, ['id'], true, true),\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 활성 편집 셀 값 확정\n * @param grid TreeGrid 인스턴스\n */\nconst commitTreeGridActiveEdit = (grid: TGrid | undefined) => {\n try {\n grid?.EndEdit?.(1);\n } catch {\n // 편집 미진입 또는 확정 불가 상태 fallback\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 * @param options.editableColumns 신규 행 셀 단위 편집 가능 컬럼\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 editableColumns = options?.editableColumns;\n const isSingleSelectionLayout = isTreeGridSingleSelectionLayout(grid);\n const shouldResetSelection = !!canSelect && isSingleSelectionLayout;\n const shouldSelectAddedRow =\n shouldResetSelection && isTreeGridSelectedInitialValue(initialValues);\n const resolvedInitialValues = shouldSelectAddedRow\n ? omitTreeGridSelectedInitialValue(initialValues)\n : initialValues;\n\n if (shouldResetSelection) {\n resetTreeGridSelectionById(gridId);\n }\n\n const { resolvedParent, next } = resolveRowInsertionTarget(grid, options);\n\n const newRow = grid.AddRow(resolvedParent, next, 1);\n\n markTreeGridRowAddedById(newRow);\n assignInitialRowValues(grid, newRow, resolvedInitialValues);\n markTreeGridAddedRowBaselineValues(grid, newRow);\n\n newRow.CanEdit = 1;\n newRow.CanDelete = 1;\n newRow.CanSelect = canSelect ? 1 : 0;\n assignEditableAddedRowColumns(grid, newRow, editableColumns);\n\n if (shouldSelectAddedRow) {\n grid.SelectRow(newRow, 1);\n }\n\n grid.Focus(newRow);\n grid.RefreshRow(newRow);\n grid.Calculate(1, 1);\n window.setTimeout(() => {\n emitTreeGridBodyRowsChanged(gridId);\n }, 0);\n};\n\n/**\n * TreeGrid 필수 셀 Error 검증\n * @param gridId TreeGrid 인스턴스 ID\n * @param options 필수 검사 옵션\n */\nexport const validateTreeGridRequiredCellsById = (\n gridId: string,\n options: TreeGridRequiredCellsValidationOptions,\n): TreeGridRequiredCellsValidationResult => {\n const grid = getTreeGridById(gridId);\n\n if (!grid) {\n return { valid: false, errors: [] };\n }\n\n const rows = getTreeGridRequiredCellRows(grid, options);\n const errors: TreeGridRequiredCellValidationError[] = [];\n const refresh = options.refresh === false ? 0 : 1;\n\n rows.forEach((row) => {\n getTreeGridRequiredCellColumns(grid, row, options).forEach((column) => {\n const col = column.key;\n const value = getTreeGridCellComparableValue(grid, row, col);\n const label = getTreeGridRequiredCellLabel(grid, column);\n const context = {\n grid,\n row,\n col,\n key: col,\n label,\n value,\n };\n\n if (!isBlankTreeGridRequiredCellValue(value)) {\n grid.SetAttribute(row, col, 'Error', '', refresh);\n return;\n }\n\n const message = getTreeGridRequiredCellMessage(\n context,\n column,\n options.messageFactory,\n );\n const error = { ...context, message };\n\n grid.SetAttribute(row, col, 'Error', message, refresh);\n errors.push(error);\n });\n });\n\n const firstError = errors[0];\n\n focusFirstTreeGridRequiredCellError(grid, firstError, options);\n\n return {\n valid: !firstError,\n errors,\n firstError,\n };\n};\n\n/**\n * TreeGrid 추가/수정 데이터 행 조회\n * @param gridId TreeGrid 인스턴스 ID\n */\nexport const getTreeGridRowChangesById = <T>(gridId: string) => {\n const grid = getTreeGridById(gridId);\n\n commitTreeGridActiveEdit(grid);\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 * @param options 선택 행 반환 옵션\n */\nexport const getTreeGridSelectedRowsById = <T>(\n gridId: string,\n options?: TreeGridSelectedRowsOptions,\n) => {\n const grid = getTreeGridById(gridId);\n\n const selectedRows = grid?.GetSelRows();\n\n if (!grid || !selectedRows) {\n return [];\n }\n\n const resolvedSelectedRows = resolveTreeGridSelectedRows<T>(\n grid,\n selectedRows as Array<TRow & T>,\n options,\n );\n\n return normalizeTreeGridExternalRows<T>(grid, resolvedSelectedRows) 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 * @param targetOption.refresh 강조 적용 후 셀 refresh 여부\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\n if (targetOption.refresh !== false) {\n grid.RefreshCell(row, col);\n }\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 grid.Calculate(1, 1);\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","TREEGRID_ROW_SELECTED_KEY","DEFAULT_TREE_GRID_REQUIRED_CELL_MESSAGE_FACTORY","__name","label","DEFAULT_TREE_GRID_REQUIRED_CELL_TARGET_ROWS","normalizeTreeGridStringValues","value","isArray","item","normalizeTreeGridAddedRowHighlightColumns","markTreeGridRowAddedById","row","isTreeGridRowAddedById","addedById","isTreeGridAddedRow","added","isTreeGridChangedRow","changed","isTreeGridDeletedRow","deleted","normalizeTreeGridRequiredCellTargetRows","targetRows","normalizedTargetRows","targetRow","shouldValidateTreeGridRequiredCellRow","shouldValidateExplicitTreeGridRequiredCellRow","resolveLiveTreeGridRequiredCellRow","grid","_a","normalizeExplicitTreeGridRequiredCellRows","rows","seenRows","normalizedRows","liveRow","getTreeGridRequiredCellRows","options","appendTreeGridAddedRowHighlightColumn","col","currentColumns","removeTreeGridAddedRowHighlightColumn","nextColumns","column","getTreeGridAddedRowHighlightColumns","getTreeGridCellComparableValue","cellType","_c","_b","rawValue","_d","displayValue","_e","markTreeGridAddedRowBaselineValues","baselineValues","getTreeGridAddedRowBaselineValue","preserveTreeGridCellStyleBaseline","getTreeGridCellStyleBaseline","loadExportTreeGridExcel","exportTreeGridExcel","getDataRows","normalizeTreeGridRequiredCellColumns","columns","key","isPlainObject","isTreeGridEditableCell","canEdit","getTreeGridRequiredCellColumns","requiredColumns","isVisibleTreeGridColumn","getTreeGridRequiredCellLabel","caption","columnCaption","getTreeGridRequiredCellMessage","context","messageFactory","isBlankTreeGridRequiredCellValue","focusFirstTreeGridRequiredCellError","error","isTreeGridTimeDateFormat","format","isTreeGridTimeDateColumn","rowRecord","getTreeGridTimeDateDisplayValue","normalizeTreeGridExternalRow","normalizedRow","normalizeTreeGridExternalRows","isTreeGridExplicitEnabledConfigValue","isTreeGridSingleSelectionLayout","isTreeGridSelectedInitialValue","initialValues","omitTreeGridSelectedInitialValue","initialValueRecord","resolveRowInsertionTarget","insertPosition","parent","anchorRow","resolvedParent","next","assignInitialRowValues","initialValueKeys","rowKey","rowValue","assignEditableAddedRowColumns","editableColumns","targetColumns","isTreeGridDataKey","prefix","isTreeGridColumnDataKey","hasTreeGridUploadValue","isHiddenTreeGridValue","isTreeGridAddedRowInitialValueKey","getLiveTreeGridChangedRow","shouldIncludeTreeGridChangeDataKey","includeAddedInitialValues","excludeHiddenColumns","normalizeTreeGridChangeRow","excludedKeys","without","getChangedRowsByStatus","status","get","isEmpty","normalizeTreeGridChangedRows","commitTreeGridActiveEdit","getTreeGridById","gridId","getTreeGridDataRowsById","reloadTreeGridBodyById","currentData","emitTreeGridBodyRowsChanged","addTreeGridRowById","canSelect","isSingleSelectionLayout","shouldResetSelection","shouldSelectAddedRow","resolvedInitialValues","resetTreeGridSelectionById","newRow","validateTreeGridRequiredCellsById","errors","refresh","message","firstError","getTreeGridRowChangesById","changesData","parseTreeGridXmlToJson","lowerCase","exportTreeGridToExcelById","title","getTreeGridSelectedRowsById","selectedRows","resolvedSelectedRows","resolveTreeGridSelectedRows","setTreeGridColumnVisibilityById","targetKey","highlightTreeGridCellById","targetOption","TREEGRID_CELL_CHANGED_CLASS","TREEGRID_CELL_HIGHLIGHT_COLOR","clearTreeGridCellHighlightById","styleBaseline","resetTreeGridSelectionsByIds","gridIds","resetTreeGridChangesById","resetTreeGridChangesByIds","setTreeGridColumnEnumOptionsById","columnName","valueKey","labelKeys","enumValues","option","labelKey","enumKeys"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@owp/core",
3
3
  "private": false,
4
- "version": "2.5.38",
4
+ "version": "2.5.39",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",