@owp/core 2.3.1 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/index11.js +2 -2
- package/dist/_virtual/index12.js +2 -2
- package/dist/_virtual/index13.js +2 -2
- package/dist/_virtual/index14.js +2 -2
- package/dist/_virtual/index16.js +5 -2
- package/dist/_virtual/index16.js.map +1 -1
- package/dist/_virtual/index17.js +5 -2
- package/dist/_virtual/index17.js.map +1 -1
- package/dist/_virtual/index18.js +4 -4
- package/dist/_virtual/index19.js +4 -4
- package/dist/_virtual/index20.js +2 -5
- package/dist/_virtual/index20.js.map +1 -1
- package/dist/_virtual/index5.js +2 -5
- package/dist/_virtual/index5.js.map +1 -1
- package/dist/_virtual/index6.js +2 -2
- package/dist/_virtual/index7.js +2 -2
- package/dist/components/OwpCommonCode/OwpCommonCodeRadioGroup.js +38 -38
- package/dist/components/OwpCommonCode/OwpCommonCodeRadioGroup.js.map +1 -1
- package/dist/components/OwpFieldHelperText/OwpFieldHelperText.js +34 -0
- package/dist/components/OwpFieldHelperText/OwpFieldHelperText.js.map +1 -0
- package/dist/components/OwpLayout/OwpLayout.js +39 -39
- package/dist/components/OwpLayout/OwpLayout.js.map +1 -1
- package/dist/components/OwpRequiredHelperText/OwpRequiredHelperText.js +38 -0
- package/dist/components/OwpRequiredHelperText/OwpRequiredHelperText.js.map +1 -0
- package/dist/components/OwpTable/OwpFieldTable.js +99 -0
- package/dist/components/OwpTable/OwpFieldTable.js.map +1 -0
- package/dist/components/OwpTextField/OwpTextMaskField.js +138 -87
- package/dist/components/OwpTextField/OwpTextMaskField.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +169 -148
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.js +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.js +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.js.map +1 -1
- package/dist/components/OwpTreeGrid/{hooks → internal/hooks}/useOwpTreeGridOverlayFrame.js +1 -1
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridOverlayFrame.js.map +1 -0
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js +84 -0
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js.map +1 -0
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +114 -103
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/utils/perf.js.map +1 -0
- package/dist/hooks/useCurrentUserSeq.js +20 -6
- package/dist/hooks/useCurrentUserSeq.js.map +1 -1
- package/dist/hooks.js +50 -49
- package/dist/index.js +74 -70
- package/dist/index.js.map +1 -1
- package/dist/layout/Layout.js +24 -24
- package/dist/layout/Layout.js.map +1 -1
- package/dist/layout/components/toggles/NavigationSearchToggle.js +3 -3
- package/dist/layout/themeLayouts.js.map +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
- package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
- package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
- 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
- package/dist/owp-app.css +1 -1
- package/dist/types/components/OwpFieldHelperText/OwpFieldHelperText.d.ts +14 -0
- package/dist/types/components/OwpFieldHelperText/index.d.ts +2 -0
- package/dist/types/components/OwpRequiredHelperText/OwpRequiredHelperText.d.ts +18 -0
- package/dist/types/components/OwpRequiredHelperText/index.d.ts +2 -0
- package/dist/types/components/OwpTable/{OwpVerticalTable.d.ts → OwpFieldTable.d.ts} +9 -8
- package/dist/types/components/OwpTable/index.d.ts +1 -1
- package/dist/types/components/OwpTextField/OwpTextMaskField.d.ts +5 -3
- package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +7 -1
- package/dist/types/components/OwpTreeGrid/index.d.ts +1 -1
- package/dist/types/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.d.ts +1 -1
- package/dist/types/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.d.ts +1 -1
- package/dist/types/components/OwpTreeGrid/internal/treeGridColumnEditRules.d.ts +60 -0
- package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +7 -2
- package/dist/types/hooks/useCurrentUserSeq.d.ts +11 -2
- package/dist/types/index.d.ts +3 -1
- package/dist/types/layout/Layout.d.ts +2 -0
- package/dist/types/layout/themeLayouts.d.ts +2 -0
- package/package.json +3 -3
- package/dist/components/OwpTable/OwpVerticalTable.js +0 -96
- package/dist/components/OwpTable/OwpVerticalTable.js.map +0 -1
- package/dist/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.js.map +0 -1
- package/dist/components/OwpTreeGrid/utils/perf.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-contenteditable-mask-element.js +0 -39
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-contenteditable-mask-element.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-input-mask-element.js +0 -36
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-input-mask-element.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-mask-element.js +0 -52
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-mask-element.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input-history.js +0 -35
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input-history.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input.js +0 -227
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/mask-element.js +0 -48
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/mask-element.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/action-details.js +0 -56
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/action-details.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/change-details.js +0 -41
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/change-details.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/continuous-tail-details.js +0 -47
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/continuous-tail-details.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/holder.js +0 -10
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/holder.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/utils.js +0 -76
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/utils.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/index.js +0 -51
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/index.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/base.js +0 -257
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/base.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/date.js +0 -121
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/date.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/dynamic.js +0 -227
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/dynamic.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/enum.js +0 -74
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/enum.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/factory.js +0 -52
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/factory.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/function.js +0 -28
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/function.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/number.js +0 -217
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/number.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/chunk-tail-details.js +0 -108
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/chunk-tail-details.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/cursor.js +0 -105
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/cursor.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/fixed-definition.js +0 -107
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/fixed-definition.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/input-definition.js +0 -138
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/input-definition.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern.js +0 -327
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pipe.js +0 -28
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pipe.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/range.js +0 -83
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/range.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/regexp.js +0 -26
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/regexp.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/repeat.js +0 -109
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/repeat.js.map +0 -1
- package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/input.js +0 -28
- package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/input.js.map +0 -1
- package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/mixin.js +0 -136
- package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/mixin.js.map +0 -1
- /package/dist/components/OwpTreeGrid/{utils → internal/utils}/perf.js +0 -0
- /package/dist/types/components/OwpTreeGrid/{hooks → internal/hooks}/useOwpTreeGridOverlayFrame.d.ts +0 -0
- /package/dist/types/components/OwpTreeGrid/{utils → internal/utils}/perf.d.ts +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
var E = Object.defineProperty;
|
|
2
|
+
var o = (t, i) => E(t, "name", { value: i, configurable: !0 });
|
|
3
|
+
import { normalizeTimeToHourMinute as M, formatTimeInputToHourMinute as f } from "../../../utils/normalizeTimeToHourMinute.js";
|
|
4
|
+
const C = "^$|^[\\d:]*$", R = /* @__PURE__ */ o(function(t, i) {
|
|
5
|
+
var r, d;
|
|
6
|
+
const e = f(t, i);
|
|
7
|
+
!this.Tag || e === t || (this.Tag.value = e, (d = (r = this.Tag).setSelectionRange) == null || d.call(r, e.length, e.length));
|
|
8
|
+
}, "handleHourMinuteEditChange"), h = {
|
|
9
|
+
OnChange: R,
|
|
10
|
+
OnKeyDown: /* @__PURE__ */ o(() => {
|
|
11
|
+
}, "OnKeyDown"),
|
|
12
|
+
OnStartEdit: /* @__PURE__ */ o(() => {
|
|
13
|
+
}, "OnStartEdit")
|
|
14
|
+
}, g = /* @__PURE__ */ o((t) => M(`${t ?? ""}`), "normalizeHourMinuteColumnValue"), v = /* @__PURE__ */ o((t, i) => t === "hourMinute" ? {
|
|
15
|
+
edit: h,
|
|
16
|
+
editMask: C,
|
|
17
|
+
resultMask: "",
|
|
18
|
+
resultText: "",
|
|
19
|
+
normalize: g,
|
|
20
|
+
invalidText: i.hourMinuteInvalidText
|
|
21
|
+
} : {}, "getTreeGridColumnEditPresetDefinition"), m = /* @__PURE__ */ o(() => ({
|
|
22
|
+
appliedColumns: {},
|
|
23
|
+
originalAttributes: {}
|
|
24
|
+
}), "createTreeGridColumnEditRulesState"), A = /* @__PURE__ */ o((t) => {
|
|
25
|
+
t.appliedColumns = {}, t.originalAttributes = {};
|
|
26
|
+
}, "resetTreeGridColumnEditRulesState"), O = /* @__PURE__ */ o((t, i) => {
|
|
27
|
+
if (!(t != null && t.length))
|
|
28
|
+
return;
|
|
29
|
+
const e = {};
|
|
30
|
+
return t.forEach((r) => {
|
|
31
|
+
const d = v(r.preset, i);
|
|
32
|
+
r.columns.forEach((l) => {
|
|
33
|
+
l && (e[l] = d);
|
|
34
|
+
});
|
|
35
|
+
}), Object.keys(e).length > 0 ? e : void 0;
|
|
36
|
+
}, "resolveTreeGridColumnEditRuleLookup"), p = /* @__PURE__ */ o((t, i, e) => {
|
|
37
|
+
if (!t)
|
|
38
|
+
return;
|
|
39
|
+
const r = i ? Object.keys(i) : [], l = Object.keys(e.appliedColumns).filter((n) => !(i != null && i[n]));
|
|
40
|
+
l.length === 0 && r.length === 0 || (t.StartUpdate(), l.forEach((n) => {
|
|
41
|
+
var a;
|
|
42
|
+
const s = (a = t.Cols) == null ? void 0 : a[n], u = e.originalAttributes[n];
|
|
43
|
+
if (!s || !u) {
|
|
44
|
+
delete e.appliedColumns[n];
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
s.Edit = u.Edit, s.EditMask = u.EditMask, s.ResultMask = u.ResultMask, s.ResultText = u.ResultText, delete e.appliedColumns[n];
|
|
48
|
+
}), r.forEach((n) => {
|
|
49
|
+
var c, T;
|
|
50
|
+
const s = (c = t.Cols) == null ? void 0 : c[n], u = i == null ? void 0 : i[n];
|
|
51
|
+
if (!s || !u)
|
|
52
|
+
return;
|
|
53
|
+
(T = e.originalAttributes)[n] ?? (T[n] = {
|
|
54
|
+
Edit: s.Edit,
|
|
55
|
+
EditMask: s.EditMask,
|
|
56
|
+
ResultMask: s.ResultMask,
|
|
57
|
+
ResultText: s.ResultText
|
|
58
|
+
});
|
|
59
|
+
const a = e.originalAttributes[n];
|
|
60
|
+
s.Edit = u.edit ?? a.Edit, s.EditMask = u.editMask ?? a.EditMask, s.ResultMask = u.resultMask ?? a.ResultMask, s.ResultText = u.resultText ?? a.ResultText, e.appliedColumns[n] = !0;
|
|
61
|
+
}), t.EndUpdate());
|
|
62
|
+
}, "syncTreeGridColumnEditRules"), k = /* @__PURE__ */ o((t, i, e) => {
|
|
63
|
+
const r = t == null ? void 0 : t[i], d = r == null ? void 0 : r.normalize;
|
|
64
|
+
if (typeof d != "function")
|
|
65
|
+
return;
|
|
66
|
+
const l = d(e), n = `${e ?? ""}`;
|
|
67
|
+
if (l == null)
|
|
68
|
+
return n ? {
|
|
69
|
+
value: "",
|
|
70
|
+
invalidText: r == null ? void 0 : r.invalidText
|
|
71
|
+
} : void 0;
|
|
72
|
+
if (l !== n)
|
|
73
|
+
return {
|
|
74
|
+
value: l
|
|
75
|
+
};
|
|
76
|
+
}, "resolveTreeGridColumnEditValue");
|
|
77
|
+
export {
|
|
78
|
+
m as createTreeGridColumnEditRulesState,
|
|
79
|
+
A as resetTreeGridColumnEditRulesState,
|
|
80
|
+
O as resolveTreeGridColumnEditRuleLookup,
|
|
81
|
+
k as resolveTreeGridColumnEditValue,
|
|
82
|
+
p as syncTreeGridColumnEditRules
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=treeGridColumnEditRules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeGridColumnEditRules.js","sources":["../../../../src/components/OwpTreeGrid/internal/treeGridColumnEditRules.ts"],"sourcesContent":["import {\n formatTimeInputToHourMinute,\n normalizeTimeToHourMinute,\n} from '@/utils/normalizeTimeToHourMinute';\nimport type {\n OwpTreeGridColumnEditPreset,\n OwpTreeGridColumnEditRule,\n} from '../OwpTreeGrid';\n\nconst HOUR_MINUTE_EDIT_MASK = '^$|^[\\\\d:]*$';\n\ntype TreeGridColumnEditValue = TCol['Edit'] | TEdit;\ntype TreeGridColumnEditAttributeSnapshot = {\n Edit?: TreeGridColumnEditValue;\n EditMask?: TCol['EditMask'];\n ResultMask?: TCol['ResultMask'];\n ResultText?: TCol['ResultText'];\n};\ntype TreeGridColumnEditMutableColumn = Omit<TCol, 'Edit'> & TreeGridColumnEditAttributeSnapshot;\n\ntype TreeGridColumnEditPresetMessages = {\n hourMinuteInvalidText: string;\n};\n\ntype TreeGridColumnEditPresetDefinition = {\n edit?: TreeGridColumnEditValue;\n editMask?: string;\n resultMask?: string;\n resultText?: string;\n normalize?: (value: unknown) => string | null | undefined;\n invalidText?: string;\n};\n\ntype TreeGridColumnEditRuleLookup = Record<string, TreeGridColumnEditPresetDefinition>;\n\ntype TreeGridColumnEditRulesState = {\n appliedColumns: Record<string, true>;\n originalAttributes: Record<string, TreeGridColumnEditAttributeSnapshot>;\n};\n\ntype HourMinuteEdit = {\n Tag?: HTMLInputElement | HTMLTextAreaElement | null;\n};\n\n/**\n * HH:mm 편집 중 입력 보정\n * @param value 현재 입력값\n * @param oldValue 이전 입력값\n */\nconst handleHourMinuteEditChange = function (this: HourMinuteEdit, value: string, oldValue: string) {\n const formattedValue = formatTimeInputToHourMinute(value, oldValue);\n\n if (!this.Tag || formattedValue === value) {\n return;\n }\n\n this.Tag.value = formattedValue;\n this.Tag.setSelectionRange?.(formattedValue.length, formattedValue.length);\n};\n\nconst HOUR_MINUTE_EDIT: TEdit = {\n OnChange: handleHourMinuteEditChange,\n OnKeyDown: () => {},\n OnStartEdit: () => {},\n};\n\nconst normalizeHourMinuteColumnValue = (value: unknown) => {\n return normalizeTimeToHourMinute(`${value ?? ''}`);\n};\n\nconst getTreeGridColumnEditPresetDefinition = (\n preset: OwpTreeGridColumnEditPreset,\n messages: TreeGridColumnEditPresetMessages,\n): TreeGridColumnEditPresetDefinition => {\n if (preset === 'hourMinute') {\n return {\n edit: HOUR_MINUTE_EDIT,\n editMask: HOUR_MINUTE_EDIT_MASK,\n resultMask: '',\n resultText: '',\n normalize: normalizeHourMinuteColumnValue,\n invalidText: messages.hourMinuteInvalidText,\n };\n }\n\n return {};\n};\n\n/**\n * 컬럼 편집 규칙 상태 생성\n */\nexport const createTreeGridColumnEditRulesState = (): TreeGridColumnEditRulesState => {\n return {\n appliedColumns: {},\n originalAttributes: {},\n };\n};\n\n/**\n * 컬럼 편집 규칙 상태 초기화\n * @param state 컬럼 편집 규칙 상태\n */\nexport const resetTreeGridColumnEditRulesState = (state: TreeGridColumnEditRulesState) => {\n state.appliedColumns = {};\n state.originalAttributes = {};\n};\n\n/**\n * 컬럼 편집 규칙 lookup 생성\n * @param rules 컬럼 편집 규칙 목록\n * @param messages preset 메시지 집합\n */\nexport const resolveTreeGridColumnEditRuleLookup = (\n rules: readonly OwpTreeGridColumnEditRule[] | undefined,\n messages: TreeGridColumnEditPresetMessages,\n) => {\n if (!rules?.length) {\n return undefined;\n }\n\n const lookup: TreeGridColumnEditRuleLookup = {};\n\n rules.forEach((rule) => {\n const presetDefinition = getTreeGridColumnEditPresetDefinition(rule.preset, messages);\n\n rule.columns.forEach((column) => {\n if (column) {\n lookup[column] = presetDefinition;\n }\n });\n });\n\n return Object.keys(lookup).length > 0 ? lookup : undefined;\n};\n\n/**\n * 컬럼 편집 규칙 동기화\n * @param grid TreeGrid 인스턴스\n * @param lookup 컬럼 편집 규칙 lookup\n * @param state 컬럼 편집 규칙 상태\n */\nexport const syncTreeGridColumnEditRules = (\n grid: TGrid | null,\n lookup: TreeGridColumnEditRuleLookup | undefined,\n state: TreeGridColumnEditRulesState,\n) => {\n if (!grid) {\n return;\n }\n\n const nextColumns = lookup ? Object.keys(lookup) : [];\n const previousColumns = Object.keys(state.appliedColumns);\n const columnsToRestore = previousColumns.filter((column) => !lookup?.[column]);\n\n if (columnsToRestore.length === 0 && nextColumns.length === 0) {\n return;\n }\n\n grid.StartUpdate();\n\n columnsToRestore.forEach((columnName) => {\n const column = grid.Cols?.[columnName] as TreeGridColumnEditMutableColumn | undefined;\n const originalAttributes = state.originalAttributes[columnName];\n\n if (!column || !originalAttributes) {\n delete state.appliedColumns[columnName];\n return;\n }\n\n column.Edit = originalAttributes.Edit;\n column.EditMask = originalAttributes.EditMask;\n column.ResultMask = originalAttributes.ResultMask;\n column.ResultText = originalAttributes.ResultText;\n\n delete state.appliedColumns[columnName];\n });\n\n nextColumns.forEach((columnName) => {\n const column = grid.Cols?.[columnName] as TreeGridColumnEditMutableColumn | undefined;\n const presetDefinition = lookup?.[columnName];\n\n if (!column || !presetDefinition) {\n return;\n }\n\n state.originalAttributes[columnName] ??= {\n Edit: column.Edit,\n EditMask: column.EditMask,\n ResultMask: column.ResultMask,\n ResultText: column.ResultText,\n };\n\n const originalAttributes = state.originalAttributes[columnName];\n\n column.Edit = presetDefinition.edit ?? originalAttributes.Edit;\n column.EditMask = presetDefinition.editMask ?? originalAttributes.EditMask;\n column.ResultMask = presetDefinition.resultMask ?? originalAttributes.ResultMask;\n column.ResultText = presetDefinition.resultText ?? originalAttributes.ResultText;\n\n state.appliedColumns[columnName] = true;\n });\n\n grid.EndUpdate();\n};\n\n/**\n * 컬럼 편집 규칙 최종값 정규화\n * @param lookup 컬럼 편집 규칙 lookup\n * @param columnName 컬럼명\n * @param value 원본 값\n */\nexport const resolveTreeGridColumnEditValue = (\n lookup: TreeGridColumnEditRuleLookup | undefined,\n columnName: string,\n value: unknown,\n) => {\n const presetDefinition = lookup?.[columnName];\n const normalize = presetDefinition?.normalize;\n\n if (typeof normalize !== 'function') {\n return undefined;\n }\n\n const normalizedValue = normalize(value);\n const currentValue = `${value ?? ''}`;\n\n if (normalizedValue == null) {\n return currentValue\n ? {\n value: '',\n invalidText: presetDefinition?.invalidText,\n }\n : undefined;\n }\n\n if (normalizedValue === currentValue) {\n return undefined;\n }\n\n return {\n value: normalizedValue,\n };\n};\n\nexport type { TreeGridColumnEditRuleLookup, TreeGridColumnEditRulesState };\n"],"names":["HOUR_MINUTE_EDIT_MASK","handleHourMinuteEditChange","__name","value","oldValue","formattedValue","formatTimeInputToHourMinute","_b","_a","HOUR_MINUTE_EDIT","normalizeHourMinuteColumnValue","normalizeTimeToHourMinute","getTreeGridColumnEditPresetDefinition","preset","messages","createTreeGridColumnEditRulesState","resetTreeGridColumnEditRulesState","state","resolveTreeGridColumnEditRuleLookup","rules","lookup","rule","presetDefinition","column","syncTreeGridColumnEditRules","grid","nextColumns","columnsToRestore","columnName","originalAttributes","resolveTreeGridColumnEditValue","normalize","normalizedValue","currentValue"],"mappings":"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"}
|
|
@@ -1,182 +1,193 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
import { TREEGRID_INPUT_CELL_COLOR as
|
|
4
|
-
import { highlightTreeGridCellById as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
var A = Object.defineProperty;
|
|
2
|
+
var i = (e, t) => A(e, "name", { value: t, configurable: !0 });
|
|
3
|
+
import { TREEGRID_INPUT_CELL_COLOR as v } from "../../../constants/treeGrid.js";
|
|
4
|
+
import { highlightTreeGridCellById as U } from "../../../utils/treeGridUtil.js";
|
|
5
|
+
import { enqueueSnackbar as V } from "notistack";
|
|
6
|
+
import { applyTreeGridLayoutToGrid as $ } from "./treeGridLayout.js";
|
|
7
|
+
import { resolveTreeGridColumnEditValue as F, resetTreeGridColumnEditRulesState as P, syncTreeGridColumnEditRules as K } from "./treeGridColumnEditRules.js";
|
|
8
|
+
import { measureTreeGridPerf as M } from "./utils/perf.js";
|
|
9
|
+
import { debounce as p } 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 q } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js";
|
|
12
|
+
const z = Number.parseInt(
|
|
13
|
+
v.replace("#", ""),
|
|
12
14
|
16
|
|
13
|
-
),
|
|
15
|
+
), Ce = 300, B = {
|
|
14
16
|
en: "/assets/vendors/Grid/TextEN.xml",
|
|
15
17
|
kr: "/assets/vendors/Grid/TextKR.xml"
|
|
16
|
-
},
|
|
18
|
+
}, L = /* @__PURE__ */ i((e) => `${e}?noCache=${Date.now()}`, "appendNoCacheQuery"), Q = /* @__PURE__ */ i((e) => e === "kr" ? B.kr : B.en, "getTreeGridTextResourceUrl"), X = /* @__PURE__ */ i((e) => e != null && e.includes("assets") ? L(e) : (
|
|
17
19
|
// @ts-expect-error - API base URL env is provided by host app
|
|
18
20
|
`undefined/${e}?noCache=${Date.now()}`
|
|
19
|
-
), "resolveTreeGridDataUrl"),
|
|
21
|
+
), "resolveTreeGridDataUrl"), J = /* @__PURE__ */ i((e, t, G) => e ? { Url: X(t) } : { Data: { Body: [q(G) ? [] : G] } }, "buildTreeGridDataSource"), de = /* @__PURE__ */ i(({
|
|
20
22
|
id: e,
|
|
21
23
|
layoutUrl: t,
|
|
22
|
-
dataUrl:
|
|
23
|
-
bodyData:
|
|
24
|
+
dataUrl: G,
|
|
25
|
+
bodyData: C,
|
|
24
26
|
useDataUrl: s,
|
|
25
|
-
width:
|
|
26
|
-
height:
|
|
27
|
-
languageId:
|
|
27
|
+
width: w,
|
|
28
|
+
height: l,
|
|
29
|
+
languageId: O
|
|
28
30
|
}) => ({
|
|
29
31
|
id: e,
|
|
30
|
-
Layout: { Url:
|
|
31
|
-
Data:
|
|
32
|
+
Layout: { Url: L(t ?? "") },
|
|
33
|
+
Data: J(s, G, C),
|
|
32
34
|
Text: {
|
|
33
|
-
Url:
|
|
35
|
+
Url: Q(O)
|
|
34
36
|
},
|
|
35
|
-
width:
|
|
36
|
-
height:
|
|
37
|
+
width: w,
|
|
38
|
+
height: l,
|
|
37
39
|
Debug: "Error"
|
|
38
|
-
}), "buildTreeGridInitializationOptions"),
|
|
40
|
+
}), "buildTreeGridInitializationOptions"), I = /* @__PURE__ */ i((e) => j(e, "Data.Data.Data.Body.0"), "getTreeGridBodyData"), W = /* @__PURE__ */ i((e) => Array.isArray(e) ? e.length : 0, "getTreeGridBodyDataCount"), Y = /* @__PURE__ */ i((e) => {
|
|
39
41
|
const t = e == null ? void 0 : e.Visible;
|
|
40
42
|
return !!e && t !== 0 && t !== !1 && t !== "0";
|
|
41
|
-
}, "isVisibleTreeGridRow"),
|
|
43
|
+
}, "isVisibleTreeGridRow"), Z = /* @__PURE__ */ i((e) => {
|
|
42
44
|
const t = e == null ? void 0 : e.Added;
|
|
43
45
|
return !!e && t !== 0 && t !== !1 && t !== "0" && t !== void 0;
|
|
44
|
-
}, "isAddedTreeGridRow"),
|
|
45
|
-
const
|
|
46
|
-
return
|
|
47
|
-
}, "hasExplicitTreeGridCellColor"),
|
|
48
|
-
if (!(!t || !
|
|
49
|
-
return
|
|
50
|
-
}, "getEditableTreeGridCellDefaultColor"),
|
|
46
|
+
}, "isAddedTreeGridRow"), S = /* @__PURE__ */ i((e) => !e || e.Fixed === "Foot" || !Y(e) ? !1 : e.Kind === "Data" || Z(e), "isDisplayTreeGridRow"), g = /* @__PURE__ */ i((e, t, G) => !t || !G || !S(t) ? !1 : e.CanEdit(t, G) === 1, "isEditableTreeGridCell"), H = /* @__PURE__ */ i((e, t, G) => {
|
|
47
|
+
const C = e.GetAttribute(t, G, "Color");
|
|
48
|
+
return C != null && C !== "";
|
|
49
|
+
}, "hasExplicitTreeGridCellColor"), ee = /* @__PURE__ */ i((e, t, G) => {
|
|
50
|
+
if (!(!t || !g(e, t, G) || H(e, t, G)))
|
|
51
|
+
return z;
|
|
52
|
+
}, "getEditableTreeGridCellDefaultColor"), se = /* @__PURE__ */ i((e) => {
|
|
51
53
|
if (!e)
|
|
52
54
|
return !1;
|
|
53
55
|
if (typeof e.GetFirst == "function" && typeof e.GetNext == "function") {
|
|
54
56
|
let t = e.GetFirst();
|
|
55
57
|
for (; t; ) {
|
|
56
|
-
if (
|
|
58
|
+
if (S(t))
|
|
57
59
|
return !0;
|
|
58
60
|
t = e.GetNext(t);
|
|
59
61
|
}
|
|
60
62
|
return !1;
|
|
61
63
|
}
|
|
62
|
-
return Object.values(e.Rows ?? {}).some((t) =>
|
|
63
|
-
}, "hasTreeGridDisplayDataRows"),
|
|
64
|
+
return Object.values(e.Rows ?? {}).some((t) => S(t));
|
|
65
|
+
}, "hasTreeGridDisplayDataRows"), me = /* @__PURE__ */ i((e, t, G) => {
|
|
64
66
|
var s;
|
|
65
|
-
const
|
|
67
|
+
const C = (s = e.Data) == null ? void 0 : s.Data;
|
|
66
68
|
e.Data.Data = {
|
|
67
|
-
...
|
|
69
|
+
...C,
|
|
68
70
|
Data: { Body: [t || []] },
|
|
69
71
|
Url: ""
|
|
70
|
-
}, e.ReloadBody(
|
|
71
|
-
}, "replaceTreeGridBodyData"),
|
|
72
|
+
}, e.ReloadBody(G);
|
|
73
|
+
}, "replaceTreeGridBodyData"), Se = /* @__PURE__ */ i(({
|
|
72
74
|
id: e,
|
|
73
75
|
latestEventHandlersRef: t,
|
|
74
|
-
highlightEditableCellsRef:
|
|
75
|
-
highlightChangedCellsRef:
|
|
76
|
+
highlightEditableCellsRef: G,
|
|
77
|
+
highlightChangedCellsRef: C,
|
|
76
78
|
treeGridInstanceRef: s,
|
|
77
|
-
treeGridInitStartedAtRef:
|
|
78
|
-
latestLayoutOverridesRef:
|
|
79
|
-
appliedLayoutOverridesRef:
|
|
80
|
-
appliedBodyDataPropRef:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
treeGridInitStartedAtRef: w,
|
|
80
|
+
latestLayoutOverridesRef: l,
|
|
81
|
+
appliedLayoutOverridesRef: O,
|
|
82
|
+
appliedBodyDataPropRef: a,
|
|
83
|
+
latestColumnEditRulesRef: h,
|
|
84
|
+
latestColumnEditRuleLookupRef: y,
|
|
85
|
+
appliedColumnEditRulesRef: N,
|
|
86
|
+
columnEditRulesStateRef: _,
|
|
87
|
+
hasAppliedInitialLayoutRef: E,
|
|
88
|
+
syncHasDisplayDataRows: m,
|
|
89
|
+
setIsTreeGridReady: k
|
|
84
90
|
}) => {
|
|
85
91
|
const c = t.current;
|
|
86
|
-
window.TGSetEvent("OnRowAdd", e, (
|
|
87
|
-
var
|
|
88
|
-
|
|
89
|
-
}), window.TGSetEvent("OnRowAdded", e, (
|
|
90
|
-
|
|
92
|
+
window.TGSetEvent("OnRowAdd", e, (r, o) => {
|
|
93
|
+
var n, u;
|
|
94
|
+
o.CanEdit = 1, o.CanDelete = 1, (u = (n = t.current) == null ? void 0 : n.onRowAdd) == null || u.call(n, r, o);
|
|
95
|
+
}), window.TGSetEvent("OnRowAdded", e, (r) => {
|
|
96
|
+
m(r);
|
|
91
97
|
}), typeof (c == null ? void 0 : c.onRowClick) == "function" && window.TGSetEvent(
|
|
92
98
|
"OnClick",
|
|
93
99
|
e,
|
|
94
|
-
|
|
95
|
-
var d,
|
|
96
|
-
(
|
|
100
|
+
p((r, o, n, u, T, f) => {
|
|
101
|
+
var d, D;
|
|
102
|
+
(D = (d = t.current) == null ? void 0 : d.onRowClick) == null || D.call(
|
|
97
103
|
d,
|
|
104
|
+
r,
|
|
98
105
|
o,
|
|
99
106
|
n,
|
|
100
|
-
r,
|
|
101
107
|
u,
|
|
102
108
|
T,
|
|
103
|
-
|
|
109
|
+
f
|
|
104
110
|
);
|
|
105
111
|
}, 300)
|
|
106
112
|
), typeof (c == null ? void 0 : c.onClickButton) == "function" && window.TGSetEvent(
|
|
107
113
|
"OnClickButton",
|
|
108
114
|
e,
|
|
109
|
-
|
|
110
|
-
var T,
|
|
111
|
-
(
|
|
115
|
+
p((r, o, n, u) => {
|
|
116
|
+
var T, f;
|
|
117
|
+
(f = (T = t.current) == null ? void 0 : T.onClickButton) == null || f.call(
|
|
112
118
|
T,
|
|
119
|
+
r,
|
|
113
120
|
o,
|
|
114
121
|
n,
|
|
115
|
-
r,
|
|
116
122
|
u
|
|
117
123
|
);
|
|
118
124
|
}, 300)
|
|
119
|
-
), typeof (c == null ? void 0 : c.onRowDelete) == "function" ? window.TGSetEvent("OnRowDelete", e, (o, n
|
|
125
|
+
), typeof (c == null ? void 0 : c.onRowDelete) == "function" ? window.TGSetEvent("OnRowDelete", e, (r, o, n) => {
|
|
120
126
|
var u, T;
|
|
121
|
-
|
|
127
|
+
m(r), (T = (u = t.current) == null ? void 0 : u.onRowDelete) == null || T.call(
|
|
122
128
|
u,
|
|
129
|
+
r,
|
|
123
130
|
o,
|
|
124
|
-
n
|
|
125
|
-
r
|
|
131
|
+
n
|
|
126
132
|
);
|
|
127
|
-
}) : window.TGSetEvent("OnRowDelete", e, (
|
|
128
|
-
|
|
129
|
-
}), typeof (c == null ? void 0 : c.onRowUndelete) == "function" ? window.TGSetEvent("OnRowUndelete", e, (
|
|
130
|
-
var
|
|
131
|
-
|
|
132
|
-
}) : window.TGSetEvent("OnRowUndelete", e, (
|
|
133
|
-
|
|
134
|
-
}), window.TGSetEvent("OnGetDefaultColor", e, (o, n
|
|
135
|
-
if (!(!
|
|
136
|
-
return
|
|
137
|
-
}), window.TGSetEvent("OnAfterValueChanged", e, (o, n,
|
|
138
|
-
var
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
133
|
+
}) : window.TGSetEvent("OnRowDelete", e, (r) => {
|
|
134
|
+
m(r);
|
|
135
|
+
}), typeof (c == null ? void 0 : c.onRowUndelete) == "function" ? window.TGSetEvent("OnRowUndelete", e, (r, o) => {
|
|
136
|
+
var n, u;
|
|
137
|
+
m(r), (u = (n = t.current) == null ? void 0 : n.onRowUndelete) == null || u.call(n, r, o);
|
|
138
|
+
}) : window.TGSetEvent("OnRowUndelete", e, (r) => {
|
|
139
|
+
m(r);
|
|
140
|
+
}), window.TGSetEvent("OnGetDefaultColor", e, (r, o, n) => {
|
|
141
|
+
if (!(!G.current || !S(o)))
|
|
142
|
+
return ee(r, o, n);
|
|
143
|
+
}), window.TGSetEvent("OnAfterValueChanged", e, (r, o, n, u) => {
|
|
144
|
+
var x, b;
|
|
145
|
+
const T = y.current, f = T ? F(T, n, u) : void 0, d = f == null ? void 0 : f.value, D = d ?? u;
|
|
146
|
+
f != null && f.invalidText && V(f.invalidText, { variant: "warning" }), d !== void 0 && r.SetValue(o, n, d, 1), C.current && S(o) && U(e, { row: o, col: n });
|
|
147
|
+
const R = ((x = t.current) == null ? void 0 : x.onAfterValueChanged) ?? ((b = t.current) == null ? void 0 : b.onRowChange);
|
|
148
|
+
R == null || R(r, o, n, D);
|
|
142
149
|
}), typeof (c == null ? void 0 : c.onSelect) == "function" && window.TGSetEvent(
|
|
143
150
|
"OnSelect",
|
|
144
151
|
e,
|
|
145
|
-
|
|
146
|
-
var
|
|
147
|
-
const
|
|
148
|
-
(u = (
|
|
152
|
+
p((r) => {
|
|
153
|
+
var n, u;
|
|
154
|
+
const o = r.GetSelRows() ?? [];
|
|
155
|
+
(u = (n = t.current) == null ? void 0 : n.onSelect) == null || u.call(n, o);
|
|
149
156
|
}, 100)
|
|
150
|
-
), typeof (c == null ? void 0 : c.onSave) == "function" && window.TGSetEvent("OnSave", e, (o, n
|
|
157
|
+
), typeof (c == null ? void 0 : c.onSave) == "function" && window.TGSetEvent("OnSave", e, (r, o, n) => {
|
|
151
158
|
var u, T;
|
|
152
159
|
(T = (u = t.current) == null ? void 0 : u.onSave) == null || T.call(
|
|
153
160
|
u,
|
|
161
|
+
r,
|
|
154
162
|
o,
|
|
155
|
-
n
|
|
156
|
-
r
|
|
163
|
+
n
|
|
157
164
|
);
|
|
158
165
|
}), window.TGSetEvent(
|
|
159
166
|
"OnReady",
|
|
160
167
|
e,
|
|
161
|
-
|
|
162
|
-
var
|
|
163
|
-
if (!
|
|
164
|
-
const u =
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
+
p((r) => {
|
|
169
|
+
var o, n;
|
|
170
|
+
if (!E.current) {
|
|
171
|
+
const u = l.current;
|
|
172
|
+
E.current = !0, $(r, u), P(_.current), K(
|
|
173
|
+
r,
|
|
174
|
+
y.current,
|
|
175
|
+
_.current
|
|
176
|
+
), s.current = r, O.current = u, a.current = I(r), N.current = h.current, m(r), k(!0), M(e, "TreeGrid init ready", w.current, {
|
|
177
|
+
bodyRowCount: W(
|
|
178
|
+
I(r)
|
|
168
179
|
)
|
|
169
|
-
}),
|
|
180
|
+
}), w.current = null, (n = (o = t.current) == null ? void 0 : o.onReady) == null || n.call(o, r);
|
|
170
181
|
}
|
|
171
182
|
}, 100)
|
|
172
183
|
);
|
|
173
184
|
}, "bindTreeGridEvents");
|
|
174
185
|
export {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
186
|
+
Ce as TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS,
|
|
187
|
+
Se as bindTreeGridEvents,
|
|
188
|
+
de as buildTreeGridInitializationOptions,
|
|
189
|
+
W as getTreeGridBodyDataCount,
|
|
190
|
+
se as hasTreeGridDisplayDataRows,
|
|
191
|
+
me as replaceTreeGridBodyData
|
|
181
192
|
};
|
|
182
193
|
//# sourceMappingURL=treeGridRuntime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeGridRuntime.js","sources":["../../../../src/components/OwpTreeGrid/internal/treeGridRuntime.ts"],"sourcesContent":["import { TREEGRID_INPUT_CELL_COLOR } from '@/constants/treeGrid';\nimport { highlightTreeGridCellById } from '@/utils/treeGridUtil';\nimport { debounce, get, isEmpty } from 'es-toolkit/compat';\nimport {\n type Dispatch,\n type RefObject,\n type SetStateAction,\n} from 'react';\nimport type {\n OwpTreeGridBodyData,\n OwpTreeGridLayoutConfig,\n OwpTreeGridProps,\n OwpTreeGridRowModel,\n OwpTreeGridSelectedRows,\n} from '../OwpTreeGrid';\nimport { applyTreeGridLayoutToGrid } from './treeGridLayout';\nimport {\n measureTreeGridPerf,\n} from '../utils/perf';\n\nconst TREE_GRID_INPUT_CELL_COLOR_VALUE = Number.parseInt(\n TREEGRID_INPUT_CELL_COLOR.replace('#', ''),\n 16,\n);\n\nexport const TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS = 300;\n\ntype TreeGridInitializationInput<T> = {\n id: string;\n layoutUrl?: 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 treeGridInstanceRef: RefObject<TGrid>;\n treeGridInitStartedAtRef: RefObject<number | null>;\n latestLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedLayoutOverridesRef: RefObject<OwpTreeGridLayoutConfig | undefined>;\n appliedBodyDataPropRef: RefObject<OwpTreeGridBodyData<T>>;\n hasAppliedInitialLayoutRef: RefObject<boolean>;\n syncHasDisplayDataRows: (grid: TGrid | null) => void;\n setIsTreeGridReady: Dispatch<SetStateAction<boolean>>;\n};\n\nconst TREE_GRID_TEXT_RESOURCE_URLS = {\n en: '/assets/vendors/Grid/TextEN.xml',\n kr: '/assets/vendors/Grid/TextKR.xml',\n} as const;\n\nconst appendNoCacheQuery = (url: string) => {\n return `${url}?noCache=${Date.now()}`;\n};\n\nconst getTreeGridTextResourceUrl = (languageId: string) => {\n return languageId === 'kr' ? TREE_GRID_TEXT_RESOURCE_URLS.kr : TREE_GRID_TEXT_RESOURCE_URLS.en;\n};\n\nconst resolveTreeGridDataUrl = (dataUrl?: string) => {\n return dataUrl?.includes('assets')\n ? appendNoCacheQuery(dataUrl)\n : // @ts-expect-error - API base URL env is provided by host app\n `${import.meta.env.VITE_API_BASE_URL}/${dataUrl}?noCache=${Date.now()}`;\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 dataUrl,\n bodyData,\n useDataUrl,\n width,\n height,\n languageId,\n}: TreeGridInitializationInput<T>) => {\n return {\n id,\n Layout: { 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) => {\n if (\n !row ||\n !isEditableTreeGridCell(grid, row, col) ||\n hasExplicitTreeGridCellColor(grid, row, col)\n ) {\n return undefined;\n }\n\n return TREE_GRID_INPUT_CELL_COLOR_VALUE;\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 treeGridInstanceRef,\n treeGridInitStartedAtRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\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(grid, row, col);\n });\n window.TGSetEvent('OnAfterValueChanged', id, (grid, row, col, value) => {\n if (highlightChangedCellsRef.current && isDisplayTreeGridRow(row)) {\n highlightTreeGridCellById(id, { row, col });\n }\n\n const valueChangedHandler =\n latestEventHandlersRef.current?.onAfterValueChanged ??\n latestEventHandlersRef.current?.onRowChange;\n\n valueChangedHandler?.(grid, row as OwpTreeGridRowModel<T>, col, value);\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 treeGridInstanceRef.current = grid;\n appliedLayoutOverridesRef.current = latestLayoutOverrides;\n appliedBodyDataPropRef.current = getTreeGridBodyData(grid) as OwpTreeGridBodyData<T>;\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_INPUT_CELL_COLOR_VALUE","TREEGRID_INPUT_CELL_COLOR","TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","TREE_GRID_TEXT_RESOURCE_URLS","appendNoCacheQuery","__name","url","getTreeGridTextResourceUrl","languageId","resolveTreeGridDataUrl","dataUrl","buildTreeGridDataSource","useDataUrl","bodyData","isEmpty","buildTreeGridInitializationOptions","id","layoutUrl","width","height","getTreeGridBodyData","grid","get","getTreeGridBodyDataCount","isVisibleTreeGridRow","row","visible","isAddedTreeGridRow","added","isDisplayTreeGridRow","isEditableTreeGridCell","col","hasExplicitTreeGridCellColor","color","getEditableTreeGridCellDefaultColor","hasTreeGridDisplayDataRows","replaceTreeGridBodyData","onReloadFinish","currentDataConfig","_a","bindTreeGridEvents","latestEventHandlersRef","highlightEditableCellsRef","highlightChangedCellsRef","treeGridInstanceRef","treeGridInitStartedAtRef","latestLayoutOverridesRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","hasAppliedInitialLayoutRef","syncHasDisplayDataRows","setIsTreeGridReady","initialEventHandlers","_b","debounce","x","y","event","deleteType","value","highlightTreeGridCellById","valueChangedHandler","selectedRows","autoupdate","latestLayoutOverrides","applyTreeGridLayoutToGrid","measureTreeGridPerf"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"treeGridRuntime.js","sources":["../../../../src/components/OwpTreeGrid/internal/treeGridRuntime.ts"],"sourcesContent":["import { TREEGRID_INPUT_CELL_COLOR } 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 measureTreeGridPerf,\n} from './utils/perf';\n\nconst TREE_GRID_INPUT_CELL_COLOR_VALUE = Number.parseInt(\n TREEGRID_INPUT_CELL_COLOR.replace('#', ''),\n 16,\n);\n\nexport const TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS = 300;\n\ntype TreeGridInitializationInput<T> = {\n id: string;\n layoutUrl?: 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 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 TREE_GRID_TEXT_RESOURCE_URLS = {\n en: '/assets/vendors/Grid/TextEN.xml',\n kr: '/assets/vendors/Grid/TextKR.xml',\n} as const;\n\nconst appendNoCacheQuery = (url: string) => {\n return `${url}?noCache=${Date.now()}`;\n};\n\nconst getTreeGridTextResourceUrl = (languageId: string) => {\n return languageId === 'kr' ? TREE_GRID_TEXT_RESOURCE_URLS.kr : TREE_GRID_TEXT_RESOURCE_URLS.en;\n};\n\nconst resolveTreeGridDataUrl = (dataUrl?: string) => {\n return dataUrl?.includes('assets')\n ? appendNoCacheQuery(dataUrl)\n : // @ts-expect-error - API base URL env is provided by host app\n `${import.meta.env.VITE_API_BASE_URL}/${dataUrl}?noCache=${Date.now()}`;\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 dataUrl,\n bodyData,\n useDataUrl,\n width,\n height,\n languageId,\n}: TreeGridInitializationInput<T>) => {\n return {\n id,\n Layout: { 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) => {\n if (\n !row ||\n !isEditableTreeGridCell(grid, row, col) ||\n hasExplicitTreeGridCellColor(grid, row, col)\n ) {\n return undefined;\n }\n\n return TREE_GRID_INPUT_CELL_COLOR_VALUE;\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 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(grid, row, col);\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, { row, col });\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_INPUT_CELL_COLOR_VALUE","TREEGRID_INPUT_CELL_COLOR","TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","TREE_GRID_TEXT_RESOURCE_URLS","appendNoCacheQuery","__name","url","getTreeGridTextResourceUrl","languageId","resolveTreeGridDataUrl","dataUrl","buildTreeGridDataSource","useDataUrl","bodyData","isEmpty","buildTreeGridInitializationOptions","id","layoutUrl","width","height","getTreeGridBodyData","grid","get","getTreeGridBodyDataCount","isVisibleTreeGridRow","row","visible","isAddedTreeGridRow","added","isDisplayTreeGridRow","isEditableTreeGridCell","col","hasExplicitTreeGridCellColor","color","getEditableTreeGridCellDefaultColor","hasTreeGridDisplayDataRows","replaceTreeGridBodyData","onReloadFinish","currentDataConfig","_a","bindTreeGridEvents","latestEventHandlersRef","highlightEditableCellsRef","highlightChangedCellsRef","treeGridInstanceRef","treeGridInitStartedAtRef","latestLayoutOverridesRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","latestColumnEditRulesRef","latestColumnEditRuleLookupRef","appliedColumnEditRulesRef","columnEditRulesStateRef","hasAppliedInitialLayoutRef","syncHasDisplayDataRows","setIsTreeGridReady","initialEventHandlers","_b","debounce","x","y","event","deleteType","value","columnEditRuleLookup","resolvedEditValue","resolveTreeGridColumnEditValue","nextValue","resolvedValue","enqueueSnackbar","highlightTreeGridCellById","valueChangedHandler","selectedRows","autoupdate","latestLayoutOverrides","applyTreeGridLayoutToGrid","resetTreeGridColumnEditRulesState","syncTreeGridColumnEditRules","measureTreeGridPerf"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perf.js","sources":["../../../../../src/components/OwpTreeGrid/internal/utils/perf.ts"],"sourcesContent":["/** Temporary TreeGrid perf instrumentation. Remove after profiling is no longer needed. */\ntype TreeGridPerfWindow = Window & {\n __OWP_TREE_GRID_PERF__?: boolean;\n};\n\nexport const TREE_GRID_PERF_FLAG = '__OWP_TREE_GRID_PERF__';\n\n/**\n * TreeGrid 성능 계측 활성 여부\n */\nexport const isTreeGridPerfEnabled = () => {\n return typeof window !== 'undefined' && Boolean((window as TreeGridPerfWindow)[TREE_GRID_PERF_FLAG]);\n};\n\n/**\n * TreeGrid 성능 계측 타임스탬프 반환\n */\nexport const getTreeGridPerfTimestamp = () => {\n return typeof performance !== 'undefined' ? performance.now() : Date.now();\n};\n\n/**\n * TreeGrid 성능 계측 카운트 로그\n * @param gridId TreeGrid 인스턴스 ID\n * @param label 계측 라벨\n */\nexport const countTreeGridPerf = (gridId: string, label: string) => {\n if (!isTreeGridPerfEnabled()) {\n return;\n }\n\n console.count(`[OwpTreeGrid:${gridId}] ${label}`);\n};\n\n/**\n * TreeGrid 성능 계측 디버그 로그\n * @param gridId TreeGrid 인스턴스 ID\n * @param label 계측 라벨\n * @param payload 부가 정보\n */\nexport const logTreeGridPerf = (\n gridId: string,\n label: string,\n payload?: Record<string, unknown>,\n) => {\n if (!isTreeGridPerfEnabled()) {\n return;\n }\n\n if (payload) {\n console.info(`[OwpTreeGrid:${gridId}] ${label}`, payload);\n return;\n }\n\n console.info(`[OwpTreeGrid:${gridId}] ${label}`);\n};\n\n/**\n * TreeGrid 성능 계측 측정 로그\n * @param gridId TreeGrid 인스턴스 ID\n * @param label 계측 라벨\n * @param startedAt 시작 시각\n * @param payload 부가 정보\n */\nexport const measureTreeGridPerf = (\n gridId: string,\n label: string,\n startedAt: number | null,\n payload?: Record<string, unknown>,\n) => {\n if (!isTreeGridPerfEnabled() || startedAt === null) {\n return;\n }\n\n const durationMs = Number((getTreeGridPerfTimestamp() - startedAt).toFixed(1));\n\n if (payload) {\n console.info(`[OwpTreeGrid:${gridId}] ${label}`, { durationMs, ...payload });\n return;\n }\n\n console.info(`[OwpTreeGrid:${gridId}] ${label}`, { durationMs });\n};\n"],"names":["TREE_GRID_PERF_FLAG","isTreeGridPerfEnabled","__name","getTreeGridPerfTimestamp","countTreeGridPerf","gridId","label","logTreeGridPerf","payload","measureTreeGridPerf","startedAt","durationMs"],"mappings":";;AAKO,MAAMA,IAAsB,0BAKtBC,IAAwB,gBAAAC,EAAA,MAC5B,OAAO,SAAW,OAAe,EAAS,OAA8BF,CAAmB,GAD/D,0BAOxBG,IAA2B,gBAAAD,EAAA,MAC/B,OAAO,cAAgB,MAAc,YAAY,IAAA,IAAQ,KAAK,IAAA,GAD/B,6BAS3BE,IAAoB,gBAAAF,EAAA,CAACG,GAAgBC,MAAkB;AAClE,EAAKL,OAIL,QAAQ,MAAM,gBAAgBI,CAAM,KAAKC,CAAK,EAAE;AAClD,GANiC,sBAcpBC,IAAkB,gBAAAL,EAAA,CAC7BG,GACAC,GACAE,MACG;AACH,MAAKP,KAIL;AAAA,QAAIO,GAAS;AACX,cAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,IAAIE,CAAO;AACxD;AAAA,IACF;AAEA,YAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,EAAE;AAAA;AACjD,GAf+B,oBAwBlBG,IAAsB,gBAAAP,EAAA,CACjCG,GACAC,GACAI,GACAF,MACG;AACH,MAAI,CAACP,EAAA,KAA2BS,MAAc;AAC5C;AAGF,QAAMC,IAAa,QAAQR,EAAA,IAA6BO,GAAW,QAAQ,CAAC,CAAC;AAE7E,MAAIF,GAAS;AACX,YAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,IAAI,EAAE,YAAAK,GAAY,GAAGH,EAAA,CAAS;AAC3E;AAAA,EACF;AAEA,UAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,IAAI,EAAE,YAAAK,GAAY;AACjE,GAlBmC;"}
|
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
var s = Object.defineProperty;
|
|
2
|
-
var e = (t,
|
|
2
|
+
var e = (t, r) => s(t, "name", { value: r, configurable: !0 });
|
|
3
3
|
import { STORAGE_KEYS as u } from "../constants/storageKeys.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
4
|
+
import { useOwpTranslation as S } from "./useOwpTranslation.js";
|
|
5
|
+
import { useAtomValue as m, useSetAtom as a } from "jotai";
|
|
6
|
+
import { atomWithStorage as c } from "jotai/utils";
|
|
7
|
+
import { enqueueSnackbar as i } from "notistack";
|
|
8
|
+
const A = "Message.로그인 사용자 정보가 없습니다.", n = c(u.currentUserSeq, ""), p = /* @__PURE__ */ e(() => m(n), "useGetCurrentUserSeq"), _ = /* @__PURE__ */ e(() => a(n), "useSetCurrentUserSeq"), g = /* @__PURE__ */ e(({
|
|
9
|
+
snackbarMessageKey: t = A
|
|
10
|
+
} = {}) => {
|
|
11
|
+
const r = p(), { t: o } = S();
|
|
12
|
+
return () => {
|
|
13
|
+
if (r == null || r === "") {
|
|
14
|
+
i(o(t), { variant: "warning" });
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
return r;
|
|
18
|
+
};
|
|
19
|
+
}, "useEnsureCurrentUserSeq");
|
|
7
20
|
export {
|
|
8
|
-
|
|
9
|
-
|
|
21
|
+
g as useEnsureCurrentUserSeq,
|
|
22
|
+
p as useGetCurrentUserSeq,
|
|
23
|
+
_ as useSetCurrentUserSeq
|
|
10
24
|
};
|
|
11
25
|
//# sourceMappingURL=useCurrentUserSeq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCurrentUserSeq.js","sources":["../../src/hooks/useCurrentUserSeq.ts"],"sourcesContent":["import { STORAGE_KEYS } from '@/constants/storageKeys';\nimport { useAtomValue, useSetAtom } from 'jotai';\nimport { atomWithStorage } from 'jotai/utils';\n\
|
|
1
|
+
{"version":3,"file":"useCurrentUserSeq.js","sources":["../../src/hooks/useCurrentUserSeq.ts"],"sourcesContent":["import { STORAGE_KEYS } from '@/constants/storageKeys';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { useAtomValue, useSetAtom } from 'jotai';\nimport { atomWithStorage } from 'jotai/utils';\nimport { enqueueSnackbar } from 'notistack';\n\nexport type CurrentUserSeq = string | number;\n\nexport interface UseEnsureCurrentUserSeqOptions {\n snackbarMessageKey?: string;\n}\n\nconst DEFAULT_SNACKBAR_MESSAGE_KEY = 'Message.로그인 사용자 정보가 없습니다.';\n\nconst currentUserSeqAtom = atomWithStorage<CurrentUserSeq | ''>(STORAGE_KEYS.currentUserSeq, '');\n\n/**\n * 현재 사용자 USERSEQ 조회 훅\n */\nexport const useGetCurrentUserSeq = () => {\n return useAtomValue(currentUserSeqAtom);\n};\n\n/**\n * 현재 사용자 USERSEQ 설정 훅\n */\nexport const useSetCurrentUserSeq = () => {\n return useSetAtom(currentUserSeqAtom);\n};\n\n/**\n * 현재 사용자 USERSEQ 필수 검증 훅\n * @param snackbarMessageKey 사용자 정보 부재 안내 메시지 키\n */\nexport const useEnsureCurrentUserSeq = ({\n snackbarMessageKey = DEFAULT_SNACKBAR_MESSAGE_KEY,\n}: UseEnsureCurrentUserSeqOptions = {}) => {\n const currentUserSeq = useGetCurrentUserSeq();\n const { t } = useOwpTranslation();\n\n return () => {\n if (currentUserSeq == null || currentUserSeq === '') {\n enqueueSnackbar(t(snackbarMessageKey), { variant: 'warning' });\n return undefined;\n }\n\n return currentUserSeq;\n };\n};\n"],"names":["DEFAULT_SNACKBAR_MESSAGE_KEY","currentUserSeqAtom","atomWithStorage","STORAGE_KEYS","useGetCurrentUserSeq","__name","useAtomValue","useSetCurrentUserSeq","useSetAtom","useEnsureCurrentUserSeq","snackbarMessageKey","currentUserSeq","t","useOwpTranslation","enqueueSnackbar"],"mappings":";;;;;;;AAYA,MAAMA,IAA+B,6BAE/BC,IAAqBC,EAAqCC,EAAa,gBAAgB,EAAE,GAKlFC,IAAuB,gBAAAC,EAAA,MAC3BC,EAAaL,CAAkB,GADJ,yBAOvBM,IAAuB,gBAAAF,EAAA,MAC3BG,EAAWP,CAAkB,GADF,yBAQvBQ,IAA0B,gBAAAJ,EAAA,CAAC;AAAA,EACtC,oBAAAK,IAAqBV;AACvB,IAAoC,OAAO;AACzC,QAAMW,IAAiBP,EAAA,GACjB,EAAE,GAAAQ,EAAA,IAAMC,EAAA;AAEd,SAAO,MAAM;AACX,QAAIF,KAAkB,QAAQA,MAAmB,IAAI;AACnD,MAAAG,EAAgBF,EAAEF,CAAkB,GAAG,EAAE,SAAS,WAAW;AAC7D;AAAA,IACF;AAEA,WAAOC;AAAA,EACT;AACF,GAduC;"}
|