@owp/core 2.5.9 → 2.5.11

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 (91) 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/index20.js +2 -2
  11. package/dist/_virtual/index21.js +2 -2
  12. package/dist/_virtual/index22.js +2 -2
  13. package/dist/_virtual/index5.js +2 -2
  14. package/dist/components/OwpTable/OwpFieldTable.js +108 -92
  15. package/dist/components/OwpTable/OwpFieldTable.js.map +1 -1
  16. package/dist/components/OwpTable/OwpTable.js +161 -141
  17. package/dist/components/OwpTable/OwpTable.js.map +1 -1
  18. package/dist/components/OwpTable/internal/FieldTableValue.js +43 -0
  19. package/dist/components/OwpTable/internal/FieldTableValue.js.map +1 -0
  20. package/dist/components/OwpTable/internal/defaultTableStyle.js +13 -10
  21. package/dist/components/OwpTable/internal/defaultTableStyle.js.map +1 -1
  22. package/dist/components/OwpTreeGrid/OwpTreeGrid.js +170 -169
  23. package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
  24. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +195 -147
  25. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
  26. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +79 -76
  27. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
  28. package/dist/configs/defaultConfig.js +110 -70
  29. package/dist/configs/defaultConfig.js.map +1 -1
  30. package/dist/constants/tableTheme.js +7 -6
  31. package/dist/constants/tableTheme.js.map +1 -1
  32. package/dist/features/themePreview/components/ThemePreviewCanvas.js +275 -273
  33. package/dist/features/themePreview/components/ThemePreviewCanvas.js.map +1 -1
  34. package/dist/features/themePreview/components/ThemePreviewCanvasSections.js +552 -316
  35. package/dist/features/themePreview/components/ThemePreviewCanvasSections.js.map +1 -1
  36. package/dist/features/themePreview/components/ThemePreviewColorField.js +227 -202
  37. package/dist/features/themePreview/components/ThemePreviewColorField.js.map +1 -1
  38. package/dist/features/themePreview/components/ThemePreviewControls.js +270 -220
  39. package/dist/features/themePreview/components/ThemePreviewControls.js.map +1 -1
  40. package/dist/features/themePreview/components/themePreviewCanvas.shared.js +38 -38
  41. package/dist/features/themePreview/components/themePreviewCanvas.shared.js.map +1 -1
  42. package/dist/features/themePreview/configs/settings.js +33 -20
  43. package/dist/features/themePreview/configs/settings.js.map +1 -1
  44. package/dist/features/themePreview/dialogs/ThemePreviewDialog.js +227 -220
  45. package/dist/features/themePreview/dialogs/ThemePreviewDialog.js.map +1 -1
  46. package/dist/features/themePreview/hooks/useThemePreview.js +250 -226
  47. package/dist/features/themePreview/hooks/useThemePreview.js.map +1 -1
  48. package/dist/features/themePreview/utils/themePreviewDefinitions.js +63 -30
  49. package/dist/features/themePreview/utils/themePreviewDefinitions.js.map +1 -1
  50. package/dist/features/themePreview/utils/themePreviewSettings.js +188 -151
  51. package/dist/features/themePreview/utils/themePreviewSettings.js.map +1 -1
  52. package/dist/features/themePreview.js +18 -17
  53. package/dist/layout/components/navbar/NavbarToggleButton.js +46 -42
  54. package/dist/layout/components/navbar/NavbarToggleButton.js.map +1 -1
  55. package/dist/layout/components/toggles/NavigationSearchToggle.js +3 -3
  56. package/dist/node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/match/index.js +1 -1
  57. package/dist/node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/parse/index.js +1 -1
  58. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
  59. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
  60. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
  61. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
  62. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
  63. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
  64. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
  65. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
  66. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
  67. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
  68. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
  69. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
  70. package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
  71. package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
  72. 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
  73. package/dist/owp-app.css +1 -1
  74. package/dist/types/components/OwpTable/OwpFieldTable.d.ts +7 -3
  75. package/dist/types/components/OwpTable/OwpTable.d.ts +3 -1
  76. package/dist/types/components/OwpTable/internal/FieldTableValue.d.ts +17 -0
  77. package/dist/types/components/OwpTable/internal/defaultTableStyle.d.ts +3 -0
  78. package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +3 -1
  79. package/dist/types/components/OwpTreeGrid/internal/treeGridTheme.d.ts +1 -1
  80. package/dist/types/configs/defaultConfig.d.ts +42 -3
  81. package/dist/types/constants/tableTheme.d.ts +1 -0
  82. package/dist/types/features/themePreview/components/ThemePreviewCanvasSections.d.ts +8 -0
  83. package/dist/types/features/themePreview/components/themePreviewCanvas.shared.d.ts +3 -3
  84. package/dist/types/features/themePreview/configs/settings.d.ts +12 -0
  85. package/dist/types/features/themePreview/utils/index.d.ts +1 -1
  86. package/dist/types/features/themePreview/utils/themePreviewSettings.d.ts +11 -1
  87. package/dist/types/index.d.ts +1 -0
  88. package/dist/types/types/OwpMuiThemeTypes.d.ts +9 -0
  89. package/dist/types/types/OwpTableThemeTypes.d.ts +1 -0
  90. package/dist/types/types/index.d.ts +1 -0
  91. package/package.json +1 -1
@@ -1,86 +1,125 @@
1
- var W = Object.defineProperty;
2
- var s = (e, t) => W(e, "name", { value: t, configurable: !0 });
3
- import { getTreeGridTextResourceUrl as P } from "../../../constants/treeGrid.js";
4
- import { highlightTreeGridCellById as M } from "../../../utils/treeGridUtil.js";
5
- import { enqueueSnackbar as j } from "notistack";
6
- import { applyTreeGridLayoutToGrid as q } from "./treeGridLayout.js";
7
- import { resolveTreeGridColumnEditValue as Y, resetTreeGridColumnEditRulesState as z, syncTreeGridColumnEditRules as K } from "./treeGridColumnEditRules.js";
8
- import { measureTreeGridPerf as Q } from "./utils/perf.js";
9
- import { debounce as O } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/function/debounce.js";
10
- import { get as J } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/get.js";
11
- import { isEmpty as X } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js";
12
- const Be = 300, Z = [255, 255, 166], g = [240, 240, 240], H = [248, 248, 248], ee = [255, 255, 255], te = [255, 255, 254], ne = [242, 242, 242], U = /* @__PURE__ */ s((e) => (e == null ? void 0 : e.startsWith("data:")) || (e == null ? void 0 : e.startsWith("blob:")), "isTreeGridInlineUrl"), v = /* @__PURE__ */ new Map(), re = /* @__PURE__ */ s((e) => {
1
+ var K = Object.defineProperty;
2
+ var f = (e, t) => K(e, "name", { value: t, configurable: !0 });
3
+ import { getTreeGridTextResourceUrl as Q } from "../../../constants/treeGrid.js";
4
+ import { highlightTreeGridCellById as J } from "../../../utils/treeGridUtil.js";
5
+ import { enqueueSnackbar as X } from "notistack";
6
+ import { applyTreeGridLayoutToGrid as Z } from "./treeGridLayout.js";
7
+ import { resolveTreeGridColumnEditValue as g, resetTreeGridColumnEditRulesState as H, syncTreeGridColumnEditRules as ee } from "./treeGridColumnEditRules.js";
8
+ import { countTreeGridPerf as F, logTreeGridPerf as te, measureTreeGridPerf as k } from "./utils/perf.js";
9
+ import { debounce as b } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/function/debounce.js";
10
+ import { get as ne } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/get.js";
11
+ import { isEmpty as re } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js";
12
+ const Le = 300, oe = [255, 255, 166], ue = [240, 240, 240], ce = [248, 248, 248], ie = [255, 255, 255], se = [255, 255, 254], fe = [242, 242, 242], U = "Button", P = /* @__PURE__ */ f((e) => (e == null ? void 0 : e.startsWith("data:")) || (e == null ? void 0 : e.startsWith("blob:")), "isTreeGridInlineUrl"), v = /* @__PURE__ */ new Map(), ae = /* @__PURE__ */ f((e) => {
13
13
  if (!e || !e.startsWith("data:"))
14
14
  return e;
15
15
  const t = v.get(e);
16
16
  if (t)
17
17
  return t;
18
18
  try {
19
- const [n, c = ""] = e.split(",", 2), G = /^data:([^;]*)(;base64)?$/i.exec(n), a = (G == null ? void 0 : G[1]) || "application/octet-stream", R = G != null && G[2] ? atob(c) : decodeURIComponent(c), l = new Uint8Array(R.length);
20
- for (let _ = 0; _ < R.length; _ += 1)
21
- l[_] = R.charCodeAt(_);
22
- const S = URL.createObjectURL(new Blob([l], { type: a }));
23
- return v.set(e, S), S;
19
+ const [n, o = ""] = e.split(",", 2), s = /^data:([^;]*)(;base64)?$/i.exec(n), a = (s == null ? void 0 : s[1]) || "application/octet-stream", p = s != null && s[2] ? atob(o) : decodeURIComponent(o), l = new Uint8Array(p.length);
20
+ for (let C = 0; C < p.length; C += 1)
21
+ l[C] = p.charCodeAt(C);
22
+ const T = URL.createObjectURL(new Blob([l], { type: a }));
23
+ return v.set(e, T), T;
24
24
  } catch {
25
25
  return e;
26
26
  }
27
- }, "resolveTreeGridInlineUrl"), I = /* @__PURE__ */ s((e) => {
28
- if (!e || U(e))
29
- return re(e);
30
- const t = e.indexOf("#"), [n, c] = t >= 0 ? [e.slice(0, t), e.slice(t)] : [e, ""], G = n.includes("?") ? "&" : "?";
31
- return `${n}${G}noCache=${Date.now()}${c}`;
32
- }, "appendNoCacheQuery"), oe = /* @__PURE__ */ s((e) => e ? U(e) || e.includes("assets") ? I(e) : I(`undefined/${e}`) : "", "resolveTreeGridDataUrl"), ce = /* @__PURE__ */ s((e, t, n) => e ? { Url: oe(t) } : { Data: { Body: [X(n) ? [] : n] } }, "buildTreeGridDataSource"), he = /* @__PURE__ */ s(({
27
+ }, "resolveTreeGridInlineUrl"), h = /* @__PURE__ */ f((e) => {
28
+ if (!e || P(e))
29
+ return ae(e);
30
+ const t = e.indexOf("#"), [n, o] = t >= 0 ? [e.slice(0, t), e.slice(t)] : [e, ""], s = n.includes("?") ? "&" : "?";
31
+ return `${n}${s}noCache=${Date.now()}${o}`;
32
+ }, "appendNoCacheQuery"), de = /* @__PURE__ */ f((e) => e ? P(e) || e.includes("assets") ? h(e) : h(`undefined/${e}`) : "", "resolveTreeGridDataUrl"), Ge = /* @__PURE__ */ f((e, t, n) => e ? { Url: de(t) } : { Data: { Body: [re(n) ? [] : n] } }, "buildTreeGridDataSource"), xe = /* @__PURE__ */ f(({
33
33
  id: e,
34
34
  layoutUrl: t,
35
35
  layoutData: n,
36
- dataUrl: c,
37
- bodyData: G,
36
+ dataUrl: o,
37
+ bodyData: s,
38
38
  useDataUrl: a,
39
- width: R,
39
+ width: p,
40
40
  height: l,
41
- languageId: S
41
+ languageId: T
42
42
  }) => ({
43
43
  id: e,
44
- Layout: n ? { Data: n } : { Url: I(t ?? "") },
45
- Data: ce(a, c, G),
44
+ Layout: n ? { Data: n } : { Url: h(t ?? "") },
45
+ Data: Ge(a, o, s),
46
46
  Text: {
47
- Url: P(S)
47
+ Url: Q(T)
48
48
  },
49
- width: R,
49
+ width: p,
50
50
  height: l,
51
51
  Debug: "Error"
52
- }), "buildTreeGridInitializationOptions"), A = /* @__PURE__ */ s((e) => J(e, "Data.Data.Data.Body.0"), "getTreeGridBodyData"), ue = /* @__PURE__ */ s((e) => Array.isArray(e) ? e.length : 0, "getTreeGridBodyDataCount"), ie = /* @__PURE__ */ s((e) => {
52
+ }), "buildTreeGridInitializationOptions"), L = /* @__PURE__ */ f((e) => ne(e, "Data.Data.Data.Body.0"), "getTreeGridBodyData"), x = /* @__PURE__ */ f((e) => {
53
+ if (typeof e == "number")
54
+ return Number.isFinite(e) && e > 0 ? e : void 0;
55
+ if (typeof e != "string")
56
+ return;
57
+ const t = e.trim();
58
+ if (!t)
59
+ return;
60
+ const n = Number(t);
61
+ return Number.isFinite(n) && n > 0 ? n : void 0;
62
+ }, "parseTreeGridPositiveNumber"), N = /* @__PURE__ */ f((e, t, n, o) => {
63
+ if (!t || !n)
64
+ return;
65
+ const s = e.GetAttribute(t, n, o), a = x(s);
66
+ return a !== void 0 ? a : x(
67
+ t[`${n}${o}`]
68
+ );
69
+ }, "getTreeGridHeaderCellSpanAttribute"), $ = /* @__PURE__ */ f((e, t, n) => !t || !n || t.Fixed !== "Head" || (N(e, t, n, "Span") ?? 1) <= 1 ? !1 : (N(e, t, n, "RowSpan") ?? 1) === 1, "isTreeGridGroupHeaderCell"), V = /* @__PURE__ */ f((e, t, n = !1) => {
70
+ const o = typeof performance < "u" ? performance.now() : Date.now(), s = typeof e.GetFixedRows == "function" ? e.GetFixedRows().filter((T) => T.Fixed === "Head") : [], a = typeof e.GetCols == "function" ? e.GetCols() : [];
71
+ if (!s.length || !a.length)
72
+ return;
73
+ const p = /* @__PURE__ */ new Set();
74
+ let l = 0;
75
+ typeof e.StartUpdate == "function" && e.StartUpdate();
76
+ try {
77
+ s.forEach((T) => {
78
+ a.forEach((C) => {
79
+ $(e, T, C) && e.GetAttribute(T, C, U) !== "" && (e.SetAttribute(T, C, U, "", 0, 0), p.add(T), l += 1);
80
+ });
81
+ });
82
+ } finally {
83
+ typeof e.EndUpdate == "function" && e.EndUpdate();
84
+ }
85
+ p.size && (n && p.forEach((T) => {
86
+ typeof e.RefreshRow == "function" && e.RefreshRow(T);
87
+ }), F(t, "group header button attribute apply"), k(t, "group header button attribute apply", o, {
88
+ updatedCellCount: l,
89
+ updatedRowCount: p.size
90
+ }));
91
+ }, "applyTreeGridGroupHeaderSortButtonAttributes"), Te = /* @__PURE__ */ f((e) => Array.isArray(e) ? e.length : 0, "getTreeGridBodyDataCount"), pe = /* @__PURE__ */ f((e) => {
53
92
  const t = e == null ? void 0 : e.Visible;
54
93
  return !!e && t !== 0 && t !== !1 && t !== "0";
55
- }, "isVisibleTreeGridRow"), se = /* @__PURE__ */ s((e) => {
94
+ }, "isVisibleTreeGridRow"), Re = /* @__PURE__ */ f((e) => {
56
95
  const t = e == null ? void 0 : e.Added;
57
96
  return !!e && t !== 0 && t !== !1 && t !== "0" && t !== void 0;
58
- }, "isAddedTreeGridRow"), E = /* @__PURE__ */ s((e) => !e || e.Fixed === "Foot" || !ie(e) ? !1 : e.Kind === "Data" || se(e), "isDisplayTreeGridRow"), Ge = /* @__PURE__ */ s((e, t, n) => !t || !n || !E(t) ? !1 : e.CanEdit(t, n) === 1, "isEditableTreeGridCell"), fe = /* @__PURE__ */ s((e, t, n) => {
59
- const c = e.GetAttribute(t, n, "Color");
60
- return c != null && c !== "";
61
- }, "hasExplicitTreeGridCellColor"), de = /* @__PURE__ */ s((e, t, n, c) => {
62
- if (!(!t || c === void 0 || !Ge(e, t, n) || fe(e, t, n)))
63
- return c;
64
- }, "getEditableTreeGridCellDefaultColor"), m = /* @__PURE__ */ s((e, t, n, c) => e === c[0] && t === c[1] && n === c[2], "matchesTreeGridRgbColor"), Te = /* @__PURE__ */ s((e, t, n) => {
97
+ }, "isAddedTreeGridRow"), E = /* @__PURE__ */ f((e) => !e || e.Fixed === "Foot" || !pe(e) ? !1 : e.Kind === "Data" || Re(e), "isDisplayTreeGridRow"), le = /* @__PURE__ */ f((e, t, n) => !t || !n || !E(t) ? !1 : e.CanEdit(t, n) === 1, "isEditableTreeGridCell"), Ce = /* @__PURE__ */ f((e, t, n) => {
98
+ const o = e.GetAttribute(t, n, "Color");
99
+ return o != null && o !== "";
100
+ }, "hasExplicitTreeGridCellColor"), Se = /* @__PURE__ */ f((e, t, n, o) => {
101
+ if (!(!t || o === void 0 || !le(e, t, n) || Ce(e, t, n)))
102
+ return o;
103
+ }, "getEditableTreeGridCellDefaultColor"), y = /* @__PURE__ */ f((e, t, n, o) => e === o[0] && t === o[1] && n === o[2], "matchesTreeGridRgbColor"), Ee = /* @__PURE__ */ f((e, t, n) => {
65
104
  if (!t || !n || !E(t))
66
105
  return !1;
67
- const c = e.IsSelected(t, n);
68
- return c !== 0 && c !== !1 && c !== void 0 && c !== null;
69
- }, "isTreeGridSelectedCellState"), ae = /* @__PURE__ */ s((e, t, n) => !t || !n || !E(t) || e.ARow !== t || e.ACol !== n ? !1 : e.CanEdit(t, n) === 0, "isTreeGridReadonlyHoveredCellState"), Ce = /* @__PURE__ */ s((e, t, n) => !t || !n || !E(t) || e.ARow !== t || e.ACol !== n ? !1 : e.CanEdit(t, n) === 2, "isTreeGridPreviewHoveredCellState"), Re = /* @__PURE__ */ s(({
106
+ const o = e.IsSelected(t, n);
107
+ return o !== 0 && o !== !1 && o !== void 0 && o !== null;
108
+ }, "isTreeGridSelectedCellState"), _e = /* @__PURE__ */ f((e, t, n) => !t || !n || !E(t) || e.ARow !== t || e.ACol !== n ? !1 : e.CanEdit(t, n) === 0, "isTreeGridReadonlyHoveredCellState"), ye = /* @__PURE__ */ f((e, t, n) => !t || !n || !E(t) || e.ARow !== t || e.ACol !== n ? !1 : e.CanEdit(t, n) === 2, "isTreeGridPreviewHoveredCellState"), me = /* @__PURE__ */ f(({
70
109
  grid: e,
71
110
  row: t,
72
111
  col: n,
73
- r: c,
74
- g: G,
112
+ r: o,
113
+ g: s,
75
114
  b: a,
76
- selectedCellBackgroundColor: R,
115
+ selectedCellBackgroundColor: p,
77
116
  hoverCellBackgroundColor: l
78
117
  }) => {
79
- if (Te(e, t, n) && m(c, G, a, Z))
80
- return R;
81
- if (ae(e, t, n) && (m(c, G, a, g) || m(c, G, a, H)) || Ce(e, t, n) && (m(c, G, a, ee) || m(c, G, a, te) || m(c, G, a, ne)))
118
+ if (Ee(e, t, n) && y(o, s, a, oe))
119
+ return p;
120
+ if (_e(e, t, n) && (y(o, s, a, ue) || y(o, s, a, ce)) || ye(e, t, n) && (y(o, s, a, ie) || y(o, s, a, se) || y(o, s, a, fe)))
82
121
  return l;
83
- }, "resolveTreeGridStateBackgroundColor"), we = /* @__PURE__ */ s((e) => {
122
+ }, "resolveTreeGridStateBackgroundColor"), Ne = /* @__PURE__ */ f((e) => {
84
123
  if (!e)
85
124
  return !1;
86
125
  if (typeof e.GetFirst == "function" && typeof e.GetNext == "function") {
@@ -93,157 +132,166 @@ const Be = 300, Z = [255, 255, 166], g = [240, 240, 240], H = [248, 248, 248], e
93
132
  return !1;
94
133
  }
95
134
  return Object.values(e.Rows ?? {}).some((t) => E(t));
96
- }, "hasTreeGridDisplayDataRows"), Le = /* @__PURE__ */ s((e, t, n) => {
97
- var G;
98
- const c = (G = e.Data) == null ? void 0 : G.Data;
135
+ }, "hasTreeGridDisplayDataRows"), Ve = /* @__PURE__ */ f((e, t, n) => {
136
+ var s;
137
+ const o = (s = e.Data) == null ? void 0 : s.Data;
99
138
  e.Data.Data = {
100
- ...c,
139
+ ...o,
101
140
  Data: { Body: [t || []] },
102
141
  Url: ""
103
142
  }, e.ReloadBody(n);
104
- }, "replaceTreeGridBodyData"), be = /* @__PURE__ */ s(({
143
+ }, "replaceTreeGridBodyData"), Fe = /* @__PURE__ */ f(({
105
144
  id: e,
106
145
  latestEventHandlersRef: t,
107
146
  highlightEditableCellsRef: n,
108
- highlightChangedCellsRef: c,
109
- editableCellBackgroundColorValueRef: G,
147
+ highlightChangedCellsRef: o,
148
+ editableCellBackgroundColorValueRef: s,
110
149
  changedCellBackgroundColorRef: a,
111
- selectedCellBackgroundColorRef: R,
150
+ selectedCellBackgroundColorRef: p,
112
151
  hoverCellBackgroundColorRef: l,
113
- treeGridInstanceRef: S,
114
- treeGridInitStartedAtRef: _,
115
- latestLayoutOverridesRef: x,
116
- appliedLayoutOverridesRef: N,
117
- appliedBodyDataPropRef: V,
118
- latestColumnEditRulesRef: k,
119
- latestColumnEditRuleLookupRef: B,
120
- appliedColumnEditRulesRef: F,
121
- columnEditRulesStateRef: h,
122
- hasAppliedInitialLayoutRef: w,
123
- syncHasDisplayDataRows: D,
124
- setIsTreeGridReady: $
152
+ treeGridInstanceRef: T,
153
+ treeGridInitStartedAtRef: C,
154
+ latestLayoutOverridesRef: W,
155
+ appliedLayoutOverridesRef: M,
156
+ appliedBodyDataPropRef: z,
157
+ latestColumnEditRulesRef: j,
158
+ latestColumnEditRuleLookupRef: w,
159
+ appliedColumnEditRulesRef: q,
160
+ columnEditRulesStateRef: O,
161
+ hasAppliedInitialLayoutRef: A,
162
+ syncHasDisplayDataRows: _,
163
+ setIsTreeGridReady: Y
125
164
  }) => {
126
- const f = t.current;
127
- window.TGSetEvent("OnRowAdd", e, (r, u) => {
128
- var o, i;
129
- u.CanEdit = 1, u.CanDelete = 1, (i = (o = t.current) == null ? void 0 : o.onRowAdd) == null || i.call(o, r, u);
165
+ const d = t.current;
166
+ window.TGSetEvent("OnRowAdd", e, (r, c) => {
167
+ var u, i;
168
+ c.CanEdit = 1, c.CanDelete = 1, (i = (u = t.current) == null ? void 0 : u.onRowAdd) == null || i.call(u, r, c);
130
169
  }), window.TGSetEvent("OnRowAdded", e, (r) => {
131
- D(r);
132
- }), typeof (f == null ? void 0 : f.onRowClick) == "function" && window.TGSetEvent(
170
+ _(r);
171
+ }), typeof (d == null ? void 0 : d.onRowClick) == "function" && window.TGSetEvent(
133
172
  "OnClick",
134
173
  e,
135
- O((r, u, o, i, d, T) => {
136
- var C, p;
137
- (p = (C = t.current) == null ? void 0 : C.onRowClick) == null || p.call(
138
- C,
174
+ b((r, c, u, i, G, R) => {
175
+ var S, m;
176
+ (m = (S = t.current) == null ? void 0 : S.onRowClick) == null || m.call(
177
+ S,
139
178
  r,
179
+ c,
140
180
  u,
141
- o,
142
181
  i,
143
- d,
144
- T
182
+ G,
183
+ R
145
184
  );
146
185
  }, 300)
147
- ), typeof (f == null ? void 0 : f.onClickButton) == "function" && window.TGSetEvent(
186
+ ), typeof (d == null ? void 0 : d.onClickButton) == "function" && window.TGSetEvent(
148
187
  "OnClickButton",
149
188
  e,
150
- O((r, u, o, i) => {
151
- var d, T;
152
- (T = (d = t.current) == null ? void 0 : d.onClickButton) == null || T.call(
153
- d,
189
+ b((r, c, u, i) => {
190
+ var G, R;
191
+ (R = (G = t.current) == null ? void 0 : G.onClickButton) == null || R.call(
192
+ G,
154
193
  r,
194
+ c,
155
195
  u,
156
- o,
157
196
  i
158
197
  );
159
198
  }, 300)
160
- ), typeof (f == null ? void 0 : f.onRowDelete) == "function" ? window.TGSetEvent("OnRowDelete", e, (r, u, o) => {
161
- var i, d;
162
- D(r), (d = (i = t.current) == null ? void 0 : i.onRowDelete) == null || d.call(
199
+ ), typeof (d == null ? void 0 : d.onRowDelete) == "function" ? window.TGSetEvent("OnRowDelete", e, (r, c, u) => {
200
+ var i, G;
201
+ _(r), (G = (i = t.current) == null ? void 0 : i.onRowDelete) == null || G.call(
163
202
  i,
164
203
  r,
165
- u,
166
- o
204
+ c,
205
+ u
167
206
  );
168
207
  }) : window.TGSetEvent("OnRowDelete", e, (r) => {
169
- D(r);
170
- }), typeof (f == null ? void 0 : f.onRowUndelete) == "function" ? window.TGSetEvent("OnRowUndelete", e, (r, u) => {
171
- var o, i;
172
- D(r), (i = (o = t.current) == null ? void 0 : o.onRowUndelete) == null || i.call(o, r, u);
208
+ _(r);
209
+ }), typeof (d == null ? void 0 : d.onRowUndelete) == "function" ? window.TGSetEvent("OnRowUndelete", e, (r, c) => {
210
+ var u, i;
211
+ _(r), (i = (u = t.current) == null ? void 0 : u.onRowUndelete) == null || i.call(u, r, c);
173
212
  }) : window.TGSetEvent("OnRowUndelete", e, (r) => {
174
- D(r);
175
- }), window.TGSetEvent("OnGetDefaultColor", e, (r, u, o) => {
176
- if (!(!n.current || !E(u)))
177
- return de(
213
+ _(r);
214
+ }), window.TGSetEvent("OnGetDefaultColor", e, (r, c, u) => {
215
+ if (!(!n.current || !E(c)))
216
+ return Se(
178
217
  r,
218
+ c,
179
219
  u,
180
- o,
181
- G.current
220
+ s.current
182
221
  );
183
- }), window.TGSetEvent("OnGetColor", e, (r, u, o, i, d, T, C) => {
184
- if (!C)
185
- return Re({
222
+ }), window.TGSetEvent("OnGetColor", e, (r, c, u, i, G, R, S) => {
223
+ if (!S)
224
+ return me({
186
225
  grid: r,
187
- row: u,
188
- col: o,
226
+ row: c,
227
+ col: u,
189
228
  r: i,
190
- g: d,
191
- b: T,
192
- selectedCellBackgroundColor: R.current,
229
+ g: G,
230
+ b: R,
231
+ selectedCellBackgroundColor: p.current,
193
232
  hoverCellBackgroundColor: l.current
194
233
  });
195
- }), window.TGSetEvent("OnAfterValueChanged", e, (r, u, o, i) => {
196
- var L, b;
197
- const d = B.current, T = d ? Y(d, o, i) : void 0, C = T == null ? void 0 : T.value, p = C ?? i;
198
- T != null && T.invalidText && j(T.invalidText, { variant: "warning" }), C !== void 0 && r.SetValue(u, o, C, 1), c.current && E(u) && M(e, {
199
- row: u,
200
- col: o,
234
+ }), window.TGSetEvent("OnAfterValueChanged", e, (r, c, u, i) => {
235
+ var B, I;
236
+ const G = w.current, R = G ? g(G, u, i) : void 0, S = R == null ? void 0 : R.value, m = S ?? i;
237
+ R != null && R.invalidText && X(R.invalidText, { variant: "warning" }), S !== void 0 && r.SetValue(c, u, S, 1), o.current && E(c) && J(e, {
238
+ row: c,
239
+ col: u,
201
240
  backgroundColor: a.current
202
241
  });
203
- const y = ((L = t.current) == null ? void 0 : L.onAfterValueChanged) ?? ((b = t.current) == null ? void 0 : b.onRowChange);
204
- y == null || y(r, u, o, p);
205
- }), typeof (f == null ? void 0 : f.onSelect) == "function" && window.TGSetEvent(
242
+ const D = ((B = t.current) == null ? void 0 : B.onAfterValueChanged) ?? ((I = t.current) == null ? void 0 : I.onRowChange);
243
+ D == null || D(r, c, u, m);
244
+ }), typeof (d == null ? void 0 : d.onSelect) == "function" && window.TGSetEvent(
206
245
  "OnSelect",
207
246
  e,
208
- O((r) => {
209
- var o, i;
210
- const u = r.GetSelRows() ?? [];
211
- (i = (o = t.current) == null ? void 0 : o.onSelect) == null || i.call(o, u);
247
+ b((r) => {
248
+ var u, i;
249
+ const c = r.GetSelRows() ?? [];
250
+ (i = (u = t.current) == null ? void 0 : u.onSelect) == null || i.call(u, c);
212
251
  }, 100)
213
- ), typeof (f == null ? void 0 : f.onSave) == "function" && window.TGSetEvent("OnSave", e, (r, u, o) => {
214
- var i, d;
215
- (d = (i = t.current) == null ? void 0 : i.onSave) == null || d.call(
252
+ ), typeof (d == null ? void 0 : d.onSave) == "function" && window.TGSetEvent("OnSave", e, (r, c, u) => {
253
+ var i, G;
254
+ (G = (i = t.current) == null ? void 0 : i.onSave) == null || G.call(
216
255
  i,
217
256
  r,
218
- u,
219
- o
257
+ c,
258
+ u
220
259
  );
260
+ }), window.TGSetEvent("OnSort", e, (r, c) => {
261
+ var u;
262
+ if (!(!c || !$(r, r.ARow, c)))
263
+ return F(e, "group header sort blocked"), te(e, "group header sort blocked", {
264
+ rowId: (u = r.ARow) == null ? void 0 : u.id,
265
+ col: c
266
+ }), -1;
267
+ }), window.TGSetEvent("OnRenderStart", e, (r) => {
268
+ V(r, e, !1);
221
269
  }), window.TGSetEvent(
222
270
  "OnReady",
223
271
  e,
224
- O((r) => {
225
- var u, o;
226
- if (!w.current) {
227
- const i = x.current;
228
- w.current = !0, q(r, i), z(h.current), K(
272
+ b((r) => {
273
+ var c, u;
274
+ if (!A.current) {
275
+ const i = W.current;
276
+ A.current = !0, Z(r, i), H(O.current), ee(
229
277
  r,
230
- B.current,
231
- h.current
232
- ), S.current = r, N.current = i, V.current = A(r), F.current = k.current, D(r), $(!0), Q(e, "TreeGrid init ready", _.current, {
233
- bodyRowCount: ue(
234
- A(r)
278
+ w.current,
279
+ O.current
280
+ ), T.current = r, M.current = i, z.current = L(r), q.current = j.current, _(r), Y(!0), V(r, e, !0), k(e, "TreeGrid init ready", C.current, {
281
+ bodyRowCount: Te(
282
+ L(r)
235
283
  )
236
- }), _.current = null, (o = (u = t.current) == null ? void 0 : u.onReady) == null || o.call(u, r);
284
+ }), C.current = null, (u = (c = t.current) == null ? void 0 : c.onReady) == null || u.call(c, r);
237
285
  }
238
286
  }, 100)
239
287
  );
240
288
  }, "bindTreeGridEvents");
241
289
  export {
242
- Be as TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS,
243
- be as bindTreeGridEvents,
244
- he as buildTreeGridInitializationOptions,
245
- ue as getTreeGridBodyDataCount,
246
- we as hasTreeGridDisplayDataRows,
247
- Le as replaceTreeGridBodyData
290
+ Le as TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS,
291
+ Fe as bindTreeGridEvents,
292
+ xe as buildTreeGridInitializationOptions,
293
+ Te as getTreeGridBodyDataCount,
294
+ Ne as hasTreeGridDisplayDataRows,
295
+ Ve as replaceTreeGridBodyData
248
296
  };
249
297
  //# sourceMappingURL=treeGridRuntime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"treeGridRuntime.js","sources":["../../../../src/components/OwpTreeGrid/internal/treeGridRuntime.ts"],"sourcesContent":["import { getTreeGridTextResourceUrl } from '@/constants/treeGrid';\nimport { highlightTreeGridCellById } from '@/utils/treeGridUtil';\nimport { debounce, get, isEmpty } from 'es-toolkit/compat';\nimport { enqueueSnackbar } from 'notistack';\nimport {\n type Dispatch,\n type RefObject,\n type SetStateAction,\n} from 'react';\nimport type {\n OwpTreeGridBodyData,\n OwpTreeGridColumnEditRule,\n OwpTreeGridLayoutConfig,\n OwpTreeGridProps,\n OwpTreeGridRowModel,\n OwpTreeGridSelectedRows,\n} from '../OwpTreeGrid';\nimport { applyTreeGridLayoutToGrid } from './treeGridLayout';\nimport {\n resetTreeGridColumnEditRulesState,\n resolveTreeGridColumnEditValue,\n syncTreeGridColumnEditRules,\n type TreeGridColumnEditRuleLookup,\n type TreeGridColumnEditRulesState,\n} from './treeGridColumnEditRules';\nimport { measureTreeGridPerf } from './utils/perf';\n\nexport const TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS = 300;\n\nconst TREE_GRID_SELECTED_CELL_RGB = [255, 255, 166] as const;\nconst TREE_GRID_READONLY_HOVER_CELL_RGB = [240, 240, 240] as const;\nconst TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB = [248, 248, 248] as const;\nconst TREE_GRID_PREVIEW_CELL_RGB = [255, 255, 255] as const;\nconst TREE_GRID_PREVIEW_CELL_SOFT_RGB = [255, 255, 254] as const;\nconst TREE_GRID_PREVIEW_CELL_DIM_RGB = [242, 242, 242] as const;\n\ntype TreeGridInitializationInput<T> = {\n id: string;\n layoutUrl?: string;\n layoutData?: string;\n dataUrl?: string;\n bodyData: OwpTreeGridBodyData<T>;\n useDataUrl?: boolean;\n width?: string | number;\n height?: string | number;\n languageId: string;\n};\n\nexport type TreeGridEventHandlers<T> = Pick<\n OwpTreeGridProps<T>,\n | 'onSelect'\n | 'onRowClick'\n | 'onRowAdd'\n | 'onRowDelete'\n | 'onRowUndelete'\n | 'onRowChange'\n | 'onClickButton'\n | 'onSave'\n | 'onReady'\n | 'onAfterValueChanged'\n>;\n\nexport type TreeGridEventBindingOptions<T> = Pick<OwpTreeGridProps<T>, 'id'> & {\n latestEventHandlersRef: RefObject<TreeGridEventHandlers<T>>;\n highlightEditableCellsRef: RefObject<boolean>;\n highlightChangedCellsRef: RefObject<boolean>;\n editableCellBackgroundColorValueRef: RefObject<number | undefined>;\n changedCellBackgroundColorRef: RefObject<string>;\n selectedCellBackgroundColorRef: RefObject<string>;\n hoverCellBackgroundColorRef: RefObject<string>;\n treeGridInstanceRef: RefObject<TGrid>;\n treeGridInitStartedAtRef: RefObject<number | null>;\n latestLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedBodyDataPropRef: RefObject<OwpTreeGridBodyData<T>>;\n latestColumnEditRulesRef: RefObject<readonly OwpTreeGridColumnEditRule[] | undefined>;\n latestColumnEditRuleLookupRef: RefObject<TreeGridColumnEditRuleLookup | undefined>;\n appliedColumnEditRulesRef: RefObject<readonly OwpTreeGridColumnEditRule[] | undefined>;\n columnEditRulesStateRef: RefObject<TreeGridColumnEditRulesState>;\n hasAppliedInitialLayoutRef: RefObject<boolean>;\n syncHasDisplayDataRows: (grid: TGrid | null) => void;\n setIsTreeGridReady: Dispatch<SetStateAction<boolean>>;\n};\n\nconst isTreeGridInlineUrl = (url?: string) => {\n return url?.startsWith('data:') || url?.startsWith('blob:');\n};\n\nconst treeGridInlineBlobUrlCache = new Map<string, string>();\n\nconst resolveTreeGridInlineUrl = (url?: string) => {\n if (!url || !url.startsWith('data:')) {\n return url;\n }\n\n const cachedUrl = treeGridInlineBlobUrlCache.get(url);\n\n if (cachedUrl) {\n return cachedUrl;\n }\n\n try {\n const [meta, encodedData = ''] = url.split(',', 2);\n const match = /^data:([^;]*)(;base64)?$/i.exec(meta);\n const mimeType = match?.[1] || 'application/octet-stream';\n const decodedData = match?.[2] ? atob(encodedData) : decodeURIComponent(encodedData);\n const bytes = new Uint8Array(decodedData.length);\n\n for (let index = 0; index < decodedData.length; index += 1) {\n bytes[index] = decodedData.charCodeAt(index);\n }\n\n const blobUrl = URL.createObjectURL(new Blob([bytes], { type: mimeType }));\n\n treeGridInlineBlobUrlCache.set(url, blobUrl);\n\n return blobUrl;\n } catch {\n return url;\n }\n};\n\nconst appendNoCacheQuery = (url: string) => {\n if (!url || isTreeGridInlineUrl(url)) {\n return resolveTreeGridInlineUrl(url);\n }\n\n const hashIndex = url.indexOf('#');\n const [baseUrl, hashFragment] =\n hashIndex >= 0 ? [url.slice(0, hashIndex), url.slice(hashIndex)] : [url, ''];\n const querySeparator = baseUrl.includes('?') ? '&' : '?';\n\n return `${baseUrl}${querySeparator}noCache=${Date.now()}${hashFragment}`;\n};\n\nconst resolveTreeGridDataUrl = (dataUrl?: string) => {\n if (!dataUrl) {\n return '';\n }\n\n if (isTreeGridInlineUrl(dataUrl) || dataUrl.includes('assets')) {\n return appendNoCacheQuery(dataUrl);\n }\n\n // @ts-expect-error - API base URL env is provided by host app\n return appendNoCacheQuery(`${import.meta.env.VITE_API_BASE_URL}/${dataUrl}`);\n};\n\nconst buildTreeGridDataSource = <T,>(\n useDataUrl: boolean | undefined,\n dataUrl: string | undefined,\n bodyData: OwpTreeGridBodyData<T>,\n) => {\n if (useDataUrl) {\n return { Url: resolveTreeGridDataUrl(dataUrl) };\n }\n\n return { Data: { Body: [isEmpty(bodyData) ? [] : bodyData] } };\n};\n\n/**\n * TreeGrid 초기화 옵션 생성\n * @param input 초기화 입력값\n */\nexport const buildTreeGridInitializationOptions = <T,>({\n id,\n layoutUrl,\n layoutData,\n dataUrl,\n bodyData,\n useDataUrl,\n width,\n height,\n languageId,\n}: TreeGridInitializationInput<T>) => {\n return {\n id,\n Layout: layoutData ? { Data: layoutData } : { Url: appendNoCacheQuery(layoutUrl ?? '') },\n Data: buildTreeGridDataSource(useDataUrl, dataUrl, bodyData),\n Text: {\n Url: getTreeGridTextResourceUrl(languageId),\n },\n width,\n height,\n Debug: 'Error',\n };\n};\n\nconst getTreeGridBodyData = (grid: TGrid | null) => {\n return get(grid, 'Data.Data.Data.Body.0');\n};\n\n/**\n * TreeGrid Body 데이터 건수\n * @param bodyData TreeGrid Body 데이터\n */\nexport const getTreeGridBodyDataCount = <T,>(bodyData: OwpTreeGridBodyData<T>) => {\n return Array.isArray(bodyData) ? bodyData.length : 0;\n};\n\nconst isVisibleTreeGridRow = (row: TRow | null | undefined) => {\n const visible = (row as { Visible?: unknown } | null)?.Visible;\n\n return !!row && visible !== 0 && visible !== false && visible !== '0';\n};\n\n/**\n * TreeGrid 추가 행 여부\n * @param row TreeGrid 행\n */\nconst isAddedTreeGridRow = (row: TRow | null | undefined) => {\n const added = (row as { Added?: unknown } | null)?.Added;\n\n return !!row && added !== 0 && added !== false && added !== '0' && added !== undefined;\n};\n\n/**\n * TreeGrid 본문 표시 행 여부\n * @param row TreeGrid 행\n */\nconst isDisplayTreeGridRow = (row: TRow | null | undefined) => {\n if (!row || row.Fixed === 'Foot' || !isVisibleTreeGridRow(row)) {\n return false;\n }\n\n return row.Kind === 'Data' || isAddedTreeGridRow(row);\n};\n\n/**\n * TreeGrid 셀 편집 가능 여부\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst isEditableTreeGridCell = (grid: TGrid, row: TRow | null | undefined, col: string) => {\n if (!row || !col || !isDisplayTreeGridRow(row)) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 1;\n};\n\n/**\n * TreeGrid 셀 명시 색상 여부\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst hasExplicitTreeGridCellColor = (grid: TGrid, row: TRow, col: string) => {\n const color = grid.GetAttribute(row, col, 'Color');\n\n return color !== undefined && color !== null && color !== '';\n};\n\n/**\n * TreeGrid 입력 셀 기본 배경색 계산\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst getEditableTreeGridCellDefaultColor = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n editableCellBackgroundColorValue: number | undefined,\n) => {\n if (\n !row ||\n editableCellBackgroundColorValue === undefined ||\n !isEditableTreeGridCell(grid, row, col) ||\n hasExplicitTreeGridCellColor(grid, row, col)\n ) {\n return undefined;\n }\n\n return editableCellBackgroundColorValue;\n};\n\nconst matchesTreeGridRgbColor = (\n r: number,\n g: number,\n b: number,\n expected: readonly [number, number, number],\n) => {\n return r === expected[0] && g === expected[1] && b === expected[2];\n};\n\nconst isTreeGridSelectedCellState = (grid: TGrid, row: TRow | null | undefined, col: string) => {\n if (!row || !col || !isDisplayTreeGridRow(row)) {\n return false;\n }\n\n const selected = grid.IsSelected(row, col);\n\n return selected !== 0 && selected !== false && selected !== undefined && selected !== null;\n};\n\nconst isTreeGridReadonlyHoveredCellState = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col || !isDisplayTreeGridRow(row) || grid.ARow !== row || grid.ACol !== col) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 0;\n};\n\nconst isTreeGridPreviewHoveredCellState = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col || !isDisplayTreeGridRow(row) || grid.ARow !== row || grid.ACol !== col) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 2;\n};\n\nconst resolveTreeGridStateBackgroundColor = ({\n grid,\n row,\n col,\n r,\n g,\n b,\n selectedCellBackgroundColor,\n hoverCellBackgroundColor,\n}: {\n grid: TGrid;\n row: TRow | null | undefined;\n col: string;\n r: number;\n g: number;\n b: number;\n selectedCellBackgroundColor: string;\n hoverCellBackgroundColor: string;\n}) => {\n if (\n isTreeGridSelectedCellState(grid, row, col) &&\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_SELECTED_CELL_RGB)\n ) {\n return selectedCellBackgroundColor;\n }\n\n if (\n isTreeGridReadonlyHoveredCellState(grid, row, col) &&\n (matchesTreeGridRgbColor(r, g, b, TREE_GRID_READONLY_HOVER_CELL_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB))\n ) {\n return hoverCellBackgroundColor;\n }\n\n if (\n isTreeGridPreviewHoveredCellState(grid, row, col) &&\n (matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_SOFT_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_DIM_RGB))\n ) {\n return hoverCellBackgroundColor;\n }\n\n return undefined;\n};\n\n/**\n * TreeGrid 표시 데이터 행 존재 여부\n * @param grid TreeGrid 인스턴스\n */\nexport const hasTreeGridDisplayDataRows = (grid: TGrid | null) => {\n if (!grid) {\n return false;\n }\n\n if (typeof grid.GetFirst === 'function' && typeof grid.GetNext === 'function') {\n let row = grid.GetFirst();\n\n while (row) {\n if (isDisplayTreeGridRow(row)) {\n return true;\n }\n\n row = grid.GetNext(row);\n }\n\n return false;\n }\n\n return Object.values(grid.Rows ?? {}).some((row) => {\n return isDisplayTreeGridRow(row);\n });\n};\n\n/**\n * TreeGrid Body 데이터 교체 후 재로드\n * @param grid TreeGrid 인스턴스\n * @param bodyData 새 Body 데이터\n * @param onReloadFinish 재로드 완료 콜백\n */\nexport const replaceTreeGridBodyData = <T,>(\n grid: TGrid,\n bodyData: OwpTreeGridBodyData<T>,\n onReloadFinish?: (code: number) => void,\n) => {\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n const currentDataConfig = grid.Data?.Data;\n\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n grid.Data.Data = {\n ...currentDataConfig,\n Data: { Body: [bodyData || []] },\n Url: '',\n };\n\n grid.ReloadBody(onReloadFinish);\n};\n\n/**\n * TreeGrid 이벤트 바인딩\n * @param options 이벤트 바인딩 옵션\n */\nexport const bindTreeGridEvents = <T,>({\n id,\n latestEventHandlersRef,\n highlightEditableCellsRef,\n highlightChangedCellsRef,\n editableCellBackgroundColorValueRef,\n changedCellBackgroundColorRef,\n selectedCellBackgroundColorRef,\n hoverCellBackgroundColorRef,\n treeGridInstanceRef,\n treeGridInitStartedAtRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n latestColumnEditRulesRef,\n latestColumnEditRuleLookupRef,\n appliedColumnEditRulesRef,\n columnEditRulesStateRef,\n hasAppliedInitialLayoutRef,\n syncHasDisplayDataRows,\n setIsTreeGridReady,\n}: TreeGridEventBindingOptions<T>) => {\n const initialEventHandlers = latestEventHandlersRef.current;\n\n window.TGSetEvent('OnRowAdd', id, (grid, row) => {\n row.CanEdit = 1;\n row.CanDelete = 1;\n\n latestEventHandlersRef.current?.onRowAdd?.(grid, row as OwpTreeGridRowModel<T>);\n });\n window.TGSetEvent('OnRowAdded', id, (grid) => {\n syncHasDisplayDataRows(grid);\n });\n\n if (typeof initialEventHandlers?.onRowClick === 'function') {\n window.TGSetEvent(\n 'OnClick',\n id,\n debounce((grid, row, col, x, y, event) => {\n latestEventHandlersRef.current?.onRowClick?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n col,\n x,\n y,\n event,\n );\n }, 300),\n );\n }\n\n if (typeof initialEventHandlers?.onClickButton === 'function') {\n window.TGSetEvent(\n 'OnClickButton',\n id,\n debounce((grid, row, col, event) => {\n latestEventHandlersRef.current?.onClickButton?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n col,\n event,\n );\n }, 300),\n );\n }\n\n if (typeof initialEventHandlers?.onRowDelete === 'function') {\n window.TGSetEvent('OnRowDelete', id, (grid, row, deleteType) => {\n syncHasDisplayDataRows(grid);\n latestEventHandlersRef.current?.onRowDelete?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n deleteType,\n );\n });\n } else {\n window.TGSetEvent('OnRowDelete', id, (grid) => {\n syncHasDisplayDataRows(grid);\n });\n }\n if (typeof initialEventHandlers?.onRowUndelete === 'function') {\n window.TGSetEvent('OnRowUndelete', id, (grid, row) => {\n syncHasDisplayDataRows(grid);\n latestEventHandlersRef.current?.onRowUndelete?.(grid, row as OwpTreeGridRowModel<T>);\n });\n } else {\n window.TGSetEvent('OnRowUndelete', id, (grid) => {\n syncHasDisplayDataRows(grid);\n });\n }\n window.TGSetEvent('OnGetDefaultColor', id, (grid, row, col) => {\n if (!highlightEditableCellsRef.current || !isDisplayTreeGridRow(row)) {\n return undefined;\n }\n\n return getEditableTreeGridCellDefaultColor(\n grid,\n row,\n col,\n editableCellBackgroundColorValueRef.current,\n );\n });\n window.TGSetEvent('OnGetColor', id, (grid, row, col, r, g, b, type) => {\n if (type) {\n return undefined;\n }\n\n return resolveTreeGridStateBackgroundColor({\n grid,\n row,\n col,\n r,\n g,\n b,\n selectedCellBackgroundColor: selectedCellBackgroundColorRef.current,\n hoverCellBackgroundColor: hoverCellBackgroundColorRef.current,\n });\n });\n window.TGSetEvent('OnAfterValueChanged', id, (grid, row, col, value) => {\n const columnEditRuleLookup = latestColumnEditRuleLookupRef.current;\n const resolvedEditValue = columnEditRuleLookup\n ? resolveTreeGridColumnEditValue(columnEditRuleLookup, col, value)\n : undefined;\n const nextValue = resolvedEditValue?.value;\n const resolvedValue = nextValue ?? value;\n\n if (resolvedEditValue?.invalidText) {\n enqueueSnackbar(resolvedEditValue.invalidText, { variant: 'warning' });\n }\n\n if (nextValue !== undefined) {\n grid.SetValue(row, col, nextValue, 1);\n }\n\n if (highlightChangedCellsRef.current && isDisplayTreeGridRow(row)) {\n highlightTreeGridCellById(id, {\n row,\n col,\n backgroundColor: changedCellBackgroundColorRef.current,\n });\n }\n\n const valueChangedHandler =\n latestEventHandlersRef.current?.onAfterValueChanged ??\n latestEventHandlersRef.current?.onRowChange;\n\n valueChangedHandler?.(grid, row as OwpTreeGridRowModel<T>, col, resolvedValue);\n });\n if (typeof initialEventHandlers?.onSelect === 'function') {\n window.TGSetEvent(\n 'OnSelect',\n id,\n debounce((grid) => {\n const selectedRows = (grid.GetSelRows() ?? []) as OwpTreeGridSelectedRows<T>;\n latestEventHandlersRef.current?.onSelect?.(selectedRows);\n }, 100),\n );\n }\n if (typeof initialEventHandlers?.onSave === 'function') {\n window.TGSetEvent('OnSave', id, (grid, row, autoupdate) => {\n latestEventHandlersRef.current?.onSave?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n autoupdate,\n );\n });\n }\n\n window.TGSetEvent(\n 'OnReady',\n id,\n debounce((grid) => {\n if (!hasAppliedInitialLayoutRef.current) {\n const latestLayoutOverrides = latestLayoutOverridesRef.current;\n\n hasAppliedInitialLayoutRef.current = true;\n applyTreeGridLayoutToGrid(grid, latestLayoutOverrides);\n resetTreeGridColumnEditRulesState(columnEditRulesStateRef.current);\n syncTreeGridColumnEditRules(\n grid,\n latestColumnEditRuleLookupRef.current,\n columnEditRulesStateRef.current,\n );\n treeGridInstanceRef.current = grid;\n appliedLayoutOverridesRef.current = latestLayoutOverrides;\n appliedBodyDataPropRef.current = getTreeGridBodyData(grid) as OwpTreeGridBodyData<T>;\n appliedColumnEditRulesRef.current = latestColumnEditRulesRef.current;\n syncHasDisplayDataRows(grid);\n setIsTreeGridReady(true);\n measureTreeGridPerf(id, 'TreeGrid init ready', treeGridInitStartedAtRef.current, {\n bodyRowCount: getTreeGridBodyDataCount(\n getTreeGridBodyData(grid) as OwpTreeGridBodyData<T>,\n ),\n });\n treeGridInitStartedAtRef.current = null;\n latestEventHandlersRef.current?.onReady?.(grid);\n }\n }, 100),\n );\n};\n"],"names":["TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","TREE_GRID_SELECTED_CELL_RGB","TREE_GRID_READONLY_HOVER_CELL_RGB","TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB","TREE_GRID_PREVIEW_CELL_RGB","TREE_GRID_PREVIEW_CELL_SOFT_RGB","TREE_GRID_PREVIEW_CELL_DIM_RGB","isTreeGridInlineUrl","__name","url","treeGridInlineBlobUrlCache","resolveTreeGridInlineUrl","cachedUrl","meta","encodedData","match","mimeType","decodedData","bytes","index","blobUrl","appendNoCacheQuery","hashIndex","baseUrl","hashFragment","querySeparator","resolveTreeGridDataUrl","dataUrl","buildTreeGridDataSource","useDataUrl","bodyData","isEmpty","buildTreeGridInitializationOptions","id","layoutUrl","layoutData","width","height","languageId","getTreeGridTextResourceUrl","getTreeGridBodyData","grid","get","getTreeGridBodyDataCount","isVisibleTreeGridRow","row","visible","isAddedTreeGridRow","added","isDisplayTreeGridRow","isEditableTreeGridCell","col","hasExplicitTreeGridCellColor","color","getEditableTreeGridCellDefaultColor","editableCellBackgroundColorValue","matchesTreeGridRgbColor","r","g","b","expected","isTreeGridSelectedCellState","selected","isTreeGridReadonlyHoveredCellState","isTreeGridPreviewHoveredCellState","resolveTreeGridStateBackgroundColor","selectedCellBackgroundColor","hoverCellBackgroundColor","hasTreeGridDisplayDataRows","replaceTreeGridBodyData","onReloadFinish","currentDataConfig","_a","bindTreeGridEvents","latestEventHandlersRef","highlightEditableCellsRef","highlightChangedCellsRef","editableCellBackgroundColorValueRef","changedCellBackgroundColorRef","selectedCellBackgroundColorRef","hoverCellBackgroundColorRef","treeGridInstanceRef","treeGridInitStartedAtRef","latestLayoutOverridesRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","latestColumnEditRulesRef","latestColumnEditRuleLookupRef","appliedColumnEditRulesRef","columnEditRulesStateRef","hasAppliedInitialLayoutRef","syncHasDisplayDataRows","setIsTreeGridReady","initialEventHandlers","_b","debounce","x","y","event","deleteType","type","value","columnEditRuleLookup","resolvedEditValue","resolveTreeGridColumnEditValue","nextValue","resolvedValue","enqueueSnackbar","highlightTreeGridCellById","valueChangedHandler","selectedRows","autoupdate","latestLayoutOverrides","applyTreeGridLayoutToGrid","resetTreeGridColumnEditRulesState","syncTreeGridColumnEditRules","measureTreeGridPerf"],"mappings":"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"}
1
+ {"version":3,"file":"treeGridRuntime.js","sources":["../../../../src/components/OwpTreeGrid/internal/treeGridRuntime.ts"],"sourcesContent":["import { getTreeGridTextResourceUrl } from '@/constants/treeGrid';\nimport { highlightTreeGridCellById } from '@/utils/treeGridUtil';\nimport { debounce, get, isEmpty } from 'es-toolkit/compat';\nimport { enqueueSnackbar } from 'notistack';\nimport {\n type Dispatch,\n type RefObject,\n type SetStateAction,\n} from 'react';\nimport type {\n OwpTreeGridBodyData,\n OwpTreeGridColumnEditRule,\n OwpTreeGridLayoutConfig,\n OwpTreeGridProps,\n OwpTreeGridRowModel,\n OwpTreeGridSelectedRows,\n} from '../OwpTreeGrid';\nimport { applyTreeGridLayoutToGrid } from './treeGridLayout';\nimport {\n resetTreeGridColumnEditRulesState,\n resolveTreeGridColumnEditValue,\n syncTreeGridColumnEditRules,\n type TreeGridColumnEditRuleLookup,\n type TreeGridColumnEditRulesState,\n} from './treeGridColumnEditRules';\nimport {\n countTreeGridPerf,\n logTreeGridPerf,\n measureTreeGridPerf,\n} from './utils/perf';\n\nexport const TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS = 300;\n\nconst TREE_GRID_SELECTED_CELL_RGB = [255, 255, 166] as const;\nconst TREE_GRID_READONLY_HOVER_CELL_RGB = [240, 240, 240] as const;\nconst TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB = [248, 248, 248] as const;\nconst TREE_GRID_PREVIEW_CELL_RGB = [255, 255, 255] as const;\nconst TREE_GRID_PREVIEW_CELL_SOFT_RGB = [255, 255, 254] as const;\nconst TREE_GRID_PREVIEW_CELL_DIM_RGB = [242, 242, 242] as const;\nconst TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE = 'Button';\n\ntype TreeGridInitializationInput<T> = {\n id: string;\n layoutUrl?: string;\n layoutData?: string;\n dataUrl?: string;\n bodyData: OwpTreeGridBodyData<T>;\n useDataUrl?: boolean;\n width?: string | number;\n height?: string | number;\n languageId: string;\n};\n\nexport type TreeGridEventHandlers<T> = Pick<\n OwpTreeGridProps<T>,\n | 'onSelect'\n | 'onRowClick'\n | 'onRowAdd'\n | 'onRowDelete'\n | 'onRowUndelete'\n | 'onRowChange'\n | 'onClickButton'\n | 'onSave'\n | 'onReady'\n | 'onAfterValueChanged'\n>;\n\nexport type TreeGridEventBindingOptions<T> = Pick<OwpTreeGridProps<T>, 'id'> & {\n latestEventHandlersRef: RefObject<TreeGridEventHandlers<T>>;\n highlightEditableCellsRef: RefObject<boolean>;\n highlightChangedCellsRef: RefObject<boolean>;\n editableCellBackgroundColorValueRef: RefObject<number | undefined>;\n changedCellBackgroundColorRef: RefObject<string>;\n selectedCellBackgroundColorRef: RefObject<string>;\n hoverCellBackgroundColorRef: RefObject<string>;\n treeGridInstanceRef: RefObject<TGrid>;\n treeGridInitStartedAtRef: RefObject<number | null>;\n latestLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedBodyDataPropRef: RefObject<OwpTreeGridBodyData<T>>;\n latestColumnEditRulesRef: RefObject<readonly OwpTreeGridColumnEditRule[] | undefined>;\n latestColumnEditRuleLookupRef: RefObject<TreeGridColumnEditRuleLookup | undefined>;\n appliedColumnEditRulesRef: RefObject<readonly OwpTreeGridColumnEditRule[] | undefined>;\n columnEditRulesStateRef: RefObject<TreeGridColumnEditRulesState>;\n hasAppliedInitialLayoutRef: RefObject<boolean>;\n syncHasDisplayDataRows: (grid: TGrid | null) => void;\n setIsTreeGridReady: Dispatch<SetStateAction<boolean>>;\n};\n\nconst isTreeGridInlineUrl = (url?: string) => {\n return url?.startsWith('data:') || url?.startsWith('blob:');\n};\n\nconst treeGridInlineBlobUrlCache = new Map<string, string>();\n\nconst resolveTreeGridInlineUrl = (url?: string) => {\n if (!url || !url.startsWith('data:')) {\n return url;\n }\n\n const cachedUrl = treeGridInlineBlobUrlCache.get(url);\n\n if (cachedUrl) {\n return cachedUrl;\n }\n\n try {\n const [meta, encodedData = ''] = url.split(',', 2);\n const match = /^data:([^;]*)(;base64)?$/i.exec(meta);\n const mimeType = match?.[1] || 'application/octet-stream';\n const decodedData = match?.[2] ? atob(encodedData) : decodeURIComponent(encodedData);\n const bytes = new Uint8Array(decodedData.length);\n\n for (let index = 0; index < decodedData.length; index += 1) {\n bytes[index] = decodedData.charCodeAt(index);\n }\n\n const blobUrl = URL.createObjectURL(new Blob([bytes], { type: mimeType }));\n\n treeGridInlineBlobUrlCache.set(url, blobUrl);\n\n return blobUrl;\n } catch {\n return url;\n }\n};\n\nconst appendNoCacheQuery = (url: string) => {\n if (!url || isTreeGridInlineUrl(url)) {\n return resolveTreeGridInlineUrl(url);\n }\n\n const hashIndex = url.indexOf('#');\n const [baseUrl, hashFragment] =\n hashIndex >= 0 ? [url.slice(0, hashIndex), url.slice(hashIndex)] : [url, ''];\n const querySeparator = baseUrl.includes('?') ? '&' : '?';\n\n return `${baseUrl}${querySeparator}noCache=${Date.now()}${hashFragment}`;\n};\n\nconst resolveTreeGridDataUrl = (dataUrl?: string) => {\n if (!dataUrl) {\n return '';\n }\n\n if (isTreeGridInlineUrl(dataUrl) || dataUrl.includes('assets')) {\n return appendNoCacheQuery(dataUrl);\n }\n\n // @ts-expect-error - API base URL env is provided by host app\n return appendNoCacheQuery(`${import.meta.env.VITE_API_BASE_URL}/${dataUrl}`);\n};\n\nconst buildTreeGridDataSource = <T,>(\n useDataUrl: boolean | undefined,\n dataUrl: string | undefined,\n bodyData: OwpTreeGridBodyData<T>,\n) => {\n if (useDataUrl) {\n return { Url: resolveTreeGridDataUrl(dataUrl) };\n }\n\n return { Data: { Body: [isEmpty(bodyData) ? [] : bodyData] } };\n};\n\n/**\n * TreeGrid 초기화 옵션 생성\n * @param input 초기화 입력값\n */\nexport const buildTreeGridInitializationOptions = <T,>({\n id,\n layoutUrl,\n layoutData,\n dataUrl,\n bodyData,\n useDataUrl,\n width,\n height,\n languageId,\n}: TreeGridInitializationInput<T>) => {\n return {\n id,\n Layout: layoutData ? { Data: layoutData } : { Url: appendNoCacheQuery(layoutUrl ?? '') },\n Data: buildTreeGridDataSource(useDataUrl, dataUrl, bodyData),\n Text: {\n Url: getTreeGridTextResourceUrl(languageId),\n },\n width,\n height,\n Debug: 'Error',\n };\n};\n\nconst getTreeGridBodyData = (grid: TGrid | null) => {\n return get(grid, 'Data.Data.Data.Body.0');\n};\n\ntype TreeGridCellSpanAttribute = 'Span' | 'RowSpan';\n\n/**\n * TreeGrid span 속성 숫자 변환\n * @param value span 속성 원본값\n */\nconst parseTreeGridPositiveNumber = (value: unknown) => {\n if (typeof value === 'number') {\n return Number.isFinite(value) && value > 0 ? value : undefined;\n }\n\n if (typeof value !== 'string') {\n return undefined;\n }\n\n const trimmedValue = value.trim();\n\n if (!trimmedValue) {\n return undefined;\n }\n\n const numericValue = Number(trimmedValue);\n\n return Number.isFinite(numericValue) && numericValue > 0 ? numericValue : undefined;\n};\n\n/**\n * TreeGrid 헤더 셀 span 속성 조회\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n * @param attributeName span 속성 이름\n */\nconst getTreeGridHeaderCellSpanAttribute = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n attributeName: TreeGridCellSpanAttribute,\n) => {\n if (!row || !col) {\n return undefined;\n }\n\n const attributeValue = grid.GetAttribute(row, col, attributeName);\n const resolvedAttributeValue = parseTreeGridPositiveNumber(attributeValue);\n\n if (resolvedAttributeValue !== undefined) {\n return resolvedAttributeValue;\n }\n\n return parseTreeGridPositiveNumber(\n (row as unknown as Record<string, unknown>)[`${col}${attributeName}`],\n );\n};\n\n/**\n * TreeGrid 그룹 전용 헤더 셀 여부\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst isTreeGridGroupHeaderCell = (grid: TGrid, row: TRow | null | undefined, col: string) => {\n if (!row || !col || row.Fixed !== 'Head') {\n return false;\n }\n\n const colSpan = getTreeGridHeaderCellSpanAttribute(grid, row, col, 'Span') ?? 1;\n\n if (colSpan <= 1) {\n return false;\n }\n\n const rowSpan = getTreeGridHeaderCellSpanAttribute(grid, row, col, 'RowSpan') ?? 1;\n\n return rowSpan === 1;\n};\n\n/**\n * TreeGrid 그룹 헤더 sort 버튼 비활성 셀 속성 적용\n * @param grid TreeGrid 인스턴스\n * @param gridId TreeGrid 인스턴스 ID\n * @param refreshRows 반영 후 헤더 행 refresh 여부\n */\nconst applyTreeGridGroupHeaderSortButtonAttributes = (\n grid: TGrid,\n gridId: string,\n refreshRows = false,\n) => {\n const applyStartedAt =\n typeof performance !== 'undefined' ? performance.now() : Date.now();\n const headerRows =\n typeof grid.GetFixedRows === 'function'\n ? grid.GetFixedRows().filter((row) => row.Fixed === 'Head')\n : [];\n const cols = typeof grid.GetCols === 'function' ? grid.GetCols() : [];\n\n if (!headerRows.length || !cols.length) {\n return;\n }\n\n const updatedRows = new Set<TRow>();\n let updatedCellCount = 0;\n\n if (typeof grid.StartUpdate === 'function') {\n grid.StartUpdate();\n }\n\n try {\n headerRows.forEach((row) => {\n cols.forEach((col) => {\n if (!isTreeGridGroupHeaderCell(grid, row, col)) {\n return;\n }\n\n if (grid.GetAttribute(row, col, TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE) === '') {\n return;\n }\n\n grid.SetAttribute(row, col, TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE, '', 0, 0);\n updatedRows.add(row);\n updatedCellCount += 1;\n });\n });\n } finally {\n if (typeof grid.EndUpdate === 'function') {\n grid.EndUpdate();\n }\n }\n\n if (!updatedRows.size) {\n return;\n }\n\n if (refreshRows) {\n updatedRows.forEach((row) => {\n if (typeof grid.RefreshRow === 'function') {\n grid.RefreshRow(row);\n }\n });\n }\n\n countTreeGridPerf(gridId, 'group header button attribute apply');\n measureTreeGridPerf(gridId, 'group header button attribute apply', applyStartedAt, {\n updatedCellCount,\n updatedRowCount: updatedRows.size,\n });\n};\n\n/**\n * TreeGrid Body 데이터 건수\n * @param bodyData TreeGrid Body 데이터\n */\nexport const getTreeGridBodyDataCount = <T,>(bodyData: OwpTreeGridBodyData<T>) => {\n return Array.isArray(bodyData) ? bodyData.length : 0;\n};\n\nconst isVisibleTreeGridRow = (row: TRow | null | undefined) => {\n const visible = (row as { Visible?: unknown } | null)?.Visible;\n\n return !!row && visible !== 0 && visible !== false && visible !== '0';\n};\n\n/**\n * TreeGrid 추가 행 여부\n * @param row TreeGrid 행\n */\nconst isAddedTreeGridRow = (row: TRow | null | undefined) => {\n const added = (row as { Added?: unknown } | null)?.Added;\n\n return !!row && added !== 0 && added !== false && added !== '0' && added !== undefined;\n};\n\n/**\n * TreeGrid 본문 표시 행 여부\n * @param row TreeGrid 행\n */\nconst isDisplayTreeGridRow = (row: TRow | null | undefined) => {\n if (!row || row.Fixed === 'Foot' || !isVisibleTreeGridRow(row)) {\n return false;\n }\n\n return row.Kind === 'Data' || isAddedTreeGridRow(row);\n};\n\n/**\n * TreeGrid 셀 편집 가능 여부\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst isEditableTreeGridCell = (grid: TGrid, row: TRow | null | undefined, col: string) => {\n if (!row || !col || !isDisplayTreeGridRow(row)) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 1;\n};\n\n/**\n * TreeGrid 셀 명시 색상 여부\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst hasExplicitTreeGridCellColor = (grid: TGrid, row: TRow, col: string) => {\n const color = grid.GetAttribute(row, col, 'Color');\n\n return color !== undefined && color !== null && color !== '';\n};\n\n/**\n * TreeGrid 입력 셀 기본 배경색 계산\n * @param grid TreeGrid 인스턴스\n * @param row TreeGrid 행\n * @param col TreeGrid 컬럼 키\n */\nconst getEditableTreeGridCellDefaultColor = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n editableCellBackgroundColorValue: number | undefined,\n) => {\n if (\n !row ||\n editableCellBackgroundColorValue === undefined ||\n !isEditableTreeGridCell(grid, row, col) ||\n hasExplicitTreeGridCellColor(grid, row, col)\n ) {\n return undefined;\n }\n\n return editableCellBackgroundColorValue;\n};\n\nconst matchesTreeGridRgbColor = (\n r: number,\n g: number,\n b: number,\n expected: readonly [number, number, number],\n) => {\n return r === expected[0] && g === expected[1] && b === expected[2];\n};\n\nconst isTreeGridSelectedCellState = (grid: TGrid, row: TRow | null | undefined, col: string) => {\n if (!row || !col || !isDisplayTreeGridRow(row)) {\n return false;\n }\n\n const selected = grid.IsSelected(row, col);\n\n return selected !== 0 && selected !== false && selected !== undefined && selected !== null;\n};\n\nconst isTreeGridReadonlyHoveredCellState = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col || !isDisplayTreeGridRow(row) || grid.ARow !== row || grid.ACol !== col) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 0;\n};\n\nconst isTreeGridPreviewHoveredCellState = (\n grid: TGrid,\n row: TRow | null | undefined,\n col: string,\n) => {\n if (!row || !col || !isDisplayTreeGridRow(row) || grid.ARow !== row || grid.ACol !== col) {\n return false;\n }\n\n return grid.CanEdit(row, col) === 2;\n};\n\nconst resolveTreeGridStateBackgroundColor = ({\n grid,\n row,\n col,\n r,\n g,\n b,\n selectedCellBackgroundColor,\n hoverCellBackgroundColor,\n}: {\n grid: TGrid;\n row: TRow | null | undefined;\n col: string;\n r: number;\n g: number;\n b: number;\n selectedCellBackgroundColor: string;\n hoverCellBackgroundColor: string;\n}) => {\n if (\n isTreeGridSelectedCellState(grid, row, col) &&\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_SELECTED_CELL_RGB)\n ) {\n return selectedCellBackgroundColor;\n }\n\n if (\n isTreeGridReadonlyHoveredCellState(grid, row, col) &&\n (matchesTreeGridRgbColor(r, g, b, TREE_GRID_READONLY_HOVER_CELL_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB))\n ) {\n return hoverCellBackgroundColor;\n }\n\n if (\n isTreeGridPreviewHoveredCellState(grid, row, col) &&\n (matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_SOFT_RGB) ||\n matchesTreeGridRgbColor(r, g, b, TREE_GRID_PREVIEW_CELL_DIM_RGB))\n ) {\n return hoverCellBackgroundColor;\n }\n\n return undefined;\n};\n\n/**\n * TreeGrid 표시 데이터 행 존재 여부\n * @param grid TreeGrid 인스턴스\n */\nexport const hasTreeGridDisplayDataRows = (grid: TGrid | null) => {\n if (!grid) {\n return false;\n }\n\n if (typeof grid.GetFirst === 'function' && typeof grid.GetNext === 'function') {\n let row = grid.GetFirst();\n\n while (row) {\n if (isDisplayTreeGridRow(row)) {\n return true;\n }\n\n row = grid.GetNext(row);\n }\n\n return false;\n }\n\n return Object.values(grid.Rows ?? {}).some((row) => {\n return isDisplayTreeGridRow(row);\n });\n};\n\n/**\n * TreeGrid Body 데이터 교체 후 재로드\n * @param grid TreeGrid 인스턴스\n * @param bodyData 새 Body 데이터\n * @param onReloadFinish 재로드 완료 콜백\n */\nexport const replaceTreeGridBodyData = <T,>(\n grid: TGrid,\n bodyData: OwpTreeGridBodyData<T>,\n onReloadFinish?: (code: number) => void,\n) => {\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n const currentDataConfig = grid.Data?.Data;\n\n // @ts-expect-error - TreeGrid Data.Data shape is not reflected in bundled types\n grid.Data.Data = {\n ...currentDataConfig,\n Data: { Body: [bodyData || []] },\n Url: '',\n };\n\n grid.ReloadBody(onReloadFinish);\n};\n\n/**\n * TreeGrid 이벤트 바인딩\n * @param options 이벤트 바인딩 옵션\n */\nexport const bindTreeGridEvents = <T,>({\n id,\n latestEventHandlersRef,\n highlightEditableCellsRef,\n highlightChangedCellsRef,\n editableCellBackgroundColorValueRef,\n changedCellBackgroundColorRef,\n selectedCellBackgroundColorRef,\n hoverCellBackgroundColorRef,\n treeGridInstanceRef,\n treeGridInitStartedAtRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n latestColumnEditRulesRef,\n latestColumnEditRuleLookupRef,\n appliedColumnEditRulesRef,\n columnEditRulesStateRef,\n hasAppliedInitialLayoutRef,\n syncHasDisplayDataRows,\n setIsTreeGridReady,\n}: TreeGridEventBindingOptions<T>) => {\n const initialEventHandlers = latestEventHandlersRef.current;\n\n window.TGSetEvent('OnRowAdd', id, (grid, row) => {\n row.CanEdit = 1;\n row.CanDelete = 1;\n\n latestEventHandlersRef.current?.onRowAdd?.(grid, row as OwpTreeGridRowModel<T>);\n });\n window.TGSetEvent('OnRowAdded', id, (grid) => {\n syncHasDisplayDataRows(grid);\n });\n\n if (typeof initialEventHandlers?.onRowClick === 'function') {\n window.TGSetEvent(\n 'OnClick',\n id,\n debounce((grid, row, col, x, y, event) => {\n latestEventHandlersRef.current?.onRowClick?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n col,\n x,\n y,\n event,\n );\n }, 300),\n );\n }\n\n if (typeof initialEventHandlers?.onClickButton === 'function') {\n window.TGSetEvent(\n 'OnClickButton',\n id,\n debounce((grid, row, col, event) => {\n latestEventHandlersRef.current?.onClickButton?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n col,\n event,\n );\n }, 300),\n );\n }\n\n if (typeof initialEventHandlers?.onRowDelete === 'function') {\n window.TGSetEvent('OnRowDelete', id, (grid, row, deleteType) => {\n syncHasDisplayDataRows(grid);\n latestEventHandlersRef.current?.onRowDelete?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n deleteType,\n );\n });\n } else {\n window.TGSetEvent('OnRowDelete', id, (grid) => {\n syncHasDisplayDataRows(grid);\n });\n }\n if (typeof initialEventHandlers?.onRowUndelete === 'function') {\n window.TGSetEvent('OnRowUndelete', id, (grid, row) => {\n syncHasDisplayDataRows(grid);\n latestEventHandlersRef.current?.onRowUndelete?.(grid, row as OwpTreeGridRowModel<T>);\n });\n } else {\n window.TGSetEvent('OnRowUndelete', id, (grid) => {\n syncHasDisplayDataRows(grid);\n });\n }\n window.TGSetEvent('OnGetDefaultColor', id, (grid, row, col) => {\n if (!highlightEditableCellsRef.current || !isDisplayTreeGridRow(row)) {\n return undefined;\n }\n\n return getEditableTreeGridCellDefaultColor(\n grid,\n row,\n col,\n editableCellBackgroundColorValueRef.current,\n );\n });\n window.TGSetEvent('OnGetColor', id, (grid, row, col, r, g, b, type) => {\n if (type) {\n return undefined;\n }\n\n return resolveTreeGridStateBackgroundColor({\n grid,\n row,\n col,\n r,\n g,\n b,\n selectedCellBackgroundColor: selectedCellBackgroundColorRef.current,\n hoverCellBackgroundColor: hoverCellBackgroundColorRef.current,\n });\n });\n window.TGSetEvent('OnAfterValueChanged', id, (grid, row, col, value) => {\n const columnEditRuleLookup = latestColumnEditRuleLookupRef.current;\n const resolvedEditValue = columnEditRuleLookup\n ? resolveTreeGridColumnEditValue(columnEditRuleLookup, col, value)\n : undefined;\n const nextValue = resolvedEditValue?.value;\n const resolvedValue = nextValue ?? value;\n\n if (resolvedEditValue?.invalidText) {\n enqueueSnackbar(resolvedEditValue.invalidText, { variant: 'warning' });\n }\n\n if (nextValue !== undefined) {\n grid.SetValue(row, col, nextValue, 1);\n }\n\n if (highlightChangedCellsRef.current && isDisplayTreeGridRow(row)) {\n highlightTreeGridCellById(id, {\n row,\n col,\n backgroundColor: changedCellBackgroundColorRef.current,\n });\n }\n\n const valueChangedHandler =\n latestEventHandlersRef.current?.onAfterValueChanged ??\n latestEventHandlersRef.current?.onRowChange;\n\n valueChangedHandler?.(grid, row as OwpTreeGridRowModel<T>, col, resolvedValue);\n });\n if (typeof initialEventHandlers?.onSelect === 'function') {\n window.TGSetEvent(\n 'OnSelect',\n id,\n debounce((grid) => {\n const selectedRows = (grid.GetSelRows() ?? []) as OwpTreeGridSelectedRows<T>;\n latestEventHandlersRef.current?.onSelect?.(selectedRows);\n }, 100),\n );\n }\n if (typeof initialEventHandlers?.onSave === 'function') {\n window.TGSetEvent('OnSave', id, (grid, row, autoupdate) => {\n latestEventHandlersRef.current?.onSave?.(\n grid,\n row as OwpTreeGridRowModel<T>,\n autoupdate,\n );\n });\n }\n window.TGSetEvent('OnSort', id, (grid, col) => {\n if (!col || !isTreeGridGroupHeaderCell(grid, grid.ARow, col)) {\n return undefined;\n }\n\n countTreeGridPerf(id, 'group header sort blocked');\n logTreeGridPerf(id, 'group header sort blocked', {\n rowId: grid.ARow?.id,\n col,\n });\n\n return -1;\n });\n window.TGSetEvent('OnRenderStart', id, (grid) => {\n applyTreeGridGroupHeaderSortButtonAttributes(grid, id, false);\n });\n\n window.TGSetEvent(\n 'OnReady',\n id,\n debounce((grid) => {\n if (!hasAppliedInitialLayoutRef.current) {\n const latestLayoutOverrides = latestLayoutOverridesRef.current;\n\n hasAppliedInitialLayoutRef.current = true;\n applyTreeGridLayoutToGrid(grid, latestLayoutOverrides);\n resetTreeGridColumnEditRulesState(columnEditRulesStateRef.current);\n syncTreeGridColumnEditRules(\n grid,\n latestColumnEditRuleLookupRef.current,\n columnEditRulesStateRef.current,\n );\n treeGridInstanceRef.current = grid;\n appliedLayoutOverridesRef.current = latestLayoutOverrides;\n appliedBodyDataPropRef.current = getTreeGridBodyData(grid) as OwpTreeGridBodyData<T>;\n appliedColumnEditRulesRef.current = latestColumnEditRulesRef.current;\n syncHasDisplayDataRows(grid);\n setIsTreeGridReady(true);\n applyTreeGridGroupHeaderSortButtonAttributes(grid, id, true);\n measureTreeGridPerf(id, 'TreeGrid init ready', treeGridInitStartedAtRef.current, {\n bodyRowCount: getTreeGridBodyDataCount(\n getTreeGridBodyData(grid) as OwpTreeGridBodyData<T>,\n ),\n });\n treeGridInitStartedAtRef.current = null;\n latestEventHandlersRef.current?.onReady?.(grid);\n }\n }, 100),\n );\n};\n"],"names":["TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","TREE_GRID_SELECTED_CELL_RGB","TREE_GRID_READONLY_HOVER_CELL_RGB","TREE_GRID_READONLY_NO_FOCUS_HOVER_CELL_RGB","TREE_GRID_PREVIEW_CELL_RGB","TREE_GRID_PREVIEW_CELL_SOFT_RGB","TREE_GRID_PREVIEW_CELL_DIM_RGB","TREE_GRID_GROUP_HEADER_BUTTON_ATTRIBUTE","isTreeGridInlineUrl","__name","url","treeGridInlineBlobUrlCache","resolveTreeGridInlineUrl","cachedUrl","meta","encodedData","match","mimeType","decodedData","bytes","index","blobUrl","appendNoCacheQuery","hashIndex","baseUrl","hashFragment","querySeparator","resolveTreeGridDataUrl","dataUrl","buildTreeGridDataSource","useDataUrl","bodyData","isEmpty","buildTreeGridInitializationOptions","id","layoutUrl","layoutData","width","height","languageId","getTreeGridTextResourceUrl","getTreeGridBodyData","grid","get","parseTreeGridPositiveNumber","value","trimmedValue","numericValue","getTreeGridHeaderCellSpanAttribute","row","col","attributeName","attributeValue","resolvedAttributeValue","isTreeGridGroupHeaderCell","applyTreeGridGroupHeaderSortButtonAttributes","gridId","refreshRows","applyStartedAt","headerRows","cols","updatedRows","updatedCellCount","countTreeGridPerf","measureTreeGridPerf","getTreeGridBodyDataCount","isVisibleTreeGridRow","visible","isAddedTreeGridRow","added","isDisplayTreeGridRow","isEditableTreeGridCell","hasExplicitTreeGridCellColor","color","getEditableTreeGridCellDefaultColor","editableCellBackgroundColorValue","matchesTreeGridRgbColor","r","g","b","expected","isTreeGridSelectedCellState","selected","isTreeGridReadonlyHoveredCellState","isTreeGridPreviewHoveredCellState","resolveTreeGridStateBackgroundColor","selectedCellBackgroundColor","hoverCellBackgroundColor","hasTreeGridDisplayDataRows","replaceTreeGridBodyData","onReloadFinish","currentDataConfig","_a","bindTreeGridEvents","latestEventHandlersRef","highlightEditableCellsRef","highlightChangedCellsRef","editableCellBackgroundColorValueRef","changedCellBackgroundColorRef","selectedCellBackgroundColorRef","hoverCellBackgroundColorRef","treeGridInstanceRef","treeGridInitStartedAtRef","latestLayoutOverridesRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","latestColumnEditRulesRef","latestColumnEditRuleLookupRef","appliedColumnEditRulesRef","columnEditRulesStateRef","hasAppliedInitialLayoutRef","syncHasDisplayDataRows","setIsTreeGridReady","initialEventHandlers","_b","debounce","x","y","event","deleteType","type","columnEditRuleLookup","resolvedEditValue","resolveTreeGridColumnEditValue","nextValue","resolvedValue","enqueueSnackbar","highlightTreeGridCellById","valueChangedHandler","selectedRows","autoupdate","logTreeGridPerf","latestLayoutOverrides","applyTreeGridLayoutToGrid","resetTreeGridColumnEditRulesState","syncTreeGridColumnEditRules"],"mappings":"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"}