@owp/core 2.5.22 → 2.5.24
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/index15.js +2 -2
- package/dist/_virtual/index16.js +4 -4
- package/dist/_virtual/index17.js +4 -4
- package/dist/_virtual/index18.js +4 -4
- package/dist/_virtual/index19.js +4 -4
- package/dist/_virtual/index5.js +2 -2
- package/dist/components/OwpCommonCode/OwpCommonCodeQuerySelector.js +15 -13
- package/dist/components/OwpCommonCode/OwpCommonCodeQuerySelector.js.map +1 -1
- package/dist/components/OwpCommonCode/OwpCommonCodeSelector.js +21 -19
- package/dist/components/OwpCommonCode/OwpCommonCodeSelector.js.map +1 -1
- package/dist/components/OwpExportExcelButton/OwpExportExcelButton.js +1 -1
- package/dist/components/OwpExportExcelButton/OwpExportExcelButton.js.map +1 -1
- package/dist/components/OwpLanguageSwitcherSelect/OwpLanguageSwitcherSelect.js +1 -1
- package/dist/components/OwpLanguageSwitcherSelect/OwpLanguageSwitcherSelect.js.map +1 -1
- package/dist/components/OwpLoading/OwpLoading.js +1 -1
- package/dist/components/OwpLoading/OwpLoading.js.map +1 -1
- package/dist/components/OwpMrtTable/OwpMrtTable.js +21 -21
- package/dist/components/OwpMrtTable/OwpMrtTable.js.map +1 -1
- package/dist/components/OwpOptionSelector/OwpOptionSelector.js +14 -12
- package/dist/components/OwpOptionSelector/OwpOptionSelector.js.map +1 -1
- package/dist/components/OwpPageTitle/OwpPageTitle.js +1 -1
- package/dist/components/OwpPageTitle/OwpPageTitle.js.map +1 -1
- package/dist/components/OwpPicker/OwpDatePicker.js +81 -82
- package/dist/components/OwpPicker/OwpDatePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpTimePicker.js +82 -83
- package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpWeekDatePicker.js +24 -25
- package/dist/components/OwpPicker/OwpWeekDatePicker.js.map +1 -1
- package/dist/components/OwpSearchFilter/OwpSearchFilter.js +1 -1
- package/dist/components/OwpSearchFilter/OwpSearchFilter.js.map +1 -1
- package/dist/components/OwpSection/OwpSection.js +1 -1
- package/dist/components/OwpSection/OwpSection.js.map +1 -1
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +155 -157
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
- package/dist/components/OwpSelectorBase/OwpSelectorSelect.js +95 -81
- package/dist/components/OwpSelectorBase/OwpSelectorSelect.js.map +1 -1
- package/dist/components/OwpSuspense/OwpSuspense.js +43 -43
- package/dist/components/OwpSuspense/OwpSuspense.js.map +1 -1
- package/dist/components/OwpTable/OwpDataTable.js +13 -12
- package/dist/components/OwpTable/OwpDataTable.js.map +1 -1
- package/dist/components/OwpTable/OwpFieldTable.js +64 -78
- package/dist/components/OwpTable/OwpFieldTable.js.map +1 -1
- package/dist/components/OwpTable/OwpTable.js +56 -55
- package/dist/components/OwpTable/OwpTable.js.map +1 -1
- package/dist/components/OwpTable/internal/OwpTableBase.js +20 -19
- package/dist/components/OwpTable/internal/OwpTableBase.js.map +1 -1
- package/dist/components/OwpTable/internal/defaultTableStyle.js +6 -7
- package/dist/components/OwpTable/internal/defaultTableStyle.js.map +1 -1
- package/dist/components/OwpTable/utils/tableSx.js +16 -6
- package/dist/components/OwpTable/utils/tableSx.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +105 -104
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js +55 -56
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +10 -10
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +253 -252
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
- package/dist/constants/table.js +5 -0
- package/dist/constants/table.js.map +1 -0
- package/dist/constants.js +25 -23
- package/dist/constants.js.map +1 -1
- package/dist/contexts/OwpUiProvider.js +5 -5
- package/dist/contexts/OwpUiProvider.js.map +1 -1
- package/dist/hooks/{useAccessTokenGuard.js → internal/useAccessTokenGuard.js} +2 -2
- package/dist/hooks/internal/useAccessTokenGuard.js.map +1 -0
- package/dist/hooks/{useCurrentLanguage.js → internal/useCurrentLanguage.js} +2 -2
- package/dist/hooks/internal/useCurrentLanguage.js.map +1 -0
- package/dist/hooks/internal/useHeaderWrapState.js.map +1 -0
- package/dist/hooks/internal/useNavbar.js +24 -0
- package/dist/hooks/internal/useNavbar.js.map +1 -0
- package/dist/hooks/{useNavigationActiveRouteRemount.js → internal/useNavigationActiveRouteRemount.js} +1 -1
- package/dist/hooks/internal/useNavigationActiveRouteRemount.js.map +1 -0
- package/dist/hooks/{useShortcuts.js → internal/useShortcuts.js} +3 -3
- package/dist/hooks/internal/useShortcuts.js.map +1 -0
- package/dist/hooks/internal/useThemeMediaQuery.js.map +1 -0
- package/dist/hooks/internal/useTimeout.js.map +1 -0
- package/dist/hooks/useInitApp.js.map +1 -1
- package/dist/hooks.js +53 -81
- package/dist/hooks.js.map +1 -1
- package/dist/layout/Layout.js +1 -1
- package/dist/layout/Layout.js.map +1 -1
- package/dist/layout/components/layouts/NavbarToggleFabLayout.js +2 -2
- package/dist/layout/components/layouts/NavbarToggleFabLayout.js.map +1 -1
- package/dist/layout/components/layouts/NavbarWrapperLayout.js +2 -2
- package/dist/layout/components/layouts/NavbarWrapperLayout.js.map +1 -1
- package/dist/layout/components/navbar/NavbarToggleButton.js +2 -2
- package/dist/layout/components/navbar/NavbarToggleButton.js.map +1 -1
- package/dist/layout/components/navbar/style/NavbarStyle.js +1 -1
- package/dist/layout/components/navbar/style/NavbarStyle.js.map +1 -1
- package/dist/layout/components/navbar/style/NavbarStyleContent.js +1 -1
- package/dist/layout/components/navbar/style/NavbarStyleContent.js.map +1 -1
- package/dist/layout/components/navigation/Navigation.js +2 -2
- package/dist/layout/components/navigation/Navigation.js.map +1 -1
- package/dist/layout/components/navigation/vertical/types/NavVerticalCollapse.js +1 -1
- package/dist/layout/components/navigation/vertical/types/NavVerticalCollapse.js.map +1 -1
- package/dist/layout/components/navigation/vertical/types/NavVerticalGroup.js +1 -1
- package/dist/layout/components/navigation/vertical/types/NavVerticalGroup.js.map +1 -1
- package/dist/layout/components/navigation/vertical/types/NavVerticalItem.js +1 -1
- package/dist/layout/components/navigation/vertical/types/NavVerticalItem.js.map +1 -1
- package/dist/layout/components/toggles/LanguageSwitcherToggle.js +1 -1
- package/dist/layout/components/toggles/LanguageSwitcherToggle.js.map +1 -1
- package/dist/layout/components/toggles/NavigationSearchToggle.js +3 -3
- package/dist/layout/components/toggles/NavigationShortcutsToggle.js +1 -1
- package/dist/layout/components/toggles/NavigationShortcutsToggle.js.map +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
- package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
- package/dist/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/OwpCommonCode/OwpCommonCodeQuerySelector.d.ts +5 -3
- package/dist/types/components/OwpCommonCode/OwpCommonCodeSelector.d.ts +5 -3
- package/dist/types/components/OwpOptionSelector/OwpOptionSelector.d.ts +4 -1
- package/dist/types/components/OwpSelectorBase/types/index.d.ts +1 -1
- package/dist/types/components/OwpSelectorBase/types/types.d.ts +3 -0
- package/dist/types/components/OwpTable/internal/defaultTableStyle.d.ts +0 -1
- package/dist/types/components/OwpTable/utils/tableSx.d.ts +15 -0
- package/dist/types/constants/index.d.ts +1 -0
- package/dist/types/constants/table.d.ts +1 -0
- package/dist/types/hooks/index.d.ts +0 -10
- package/dist/types/hooks/{useNavbar.d.ts → internal/useNavbar.d.ts} +1 -1
- package/dist/types/utils/treeGridUtil.d.ts +0 -14
- package/dist/utils/{exceljsBrowser.js → internal/exceljsBrowser.js} +1 -1
- package/dist/utils/internal/exceljsBrowser.js.map +1 -0
- package/dist/utils/internal/jszipBrowser.js.map +1 -0
- package/dist/utils/internal/treeGridBodyRowsEvent.js.map +1 -0
- package/dist/utils/treeGridExportExcelUtil.js +1 -1
- package/dist/utils/treeGridExportExcelUtil.js.map +1 -1
- package/dist/utils/treeGridUtil.js +1 -6
- package/dist/utils/treeGridUtil.js.map +1 -1
- package/dist/utils/zipUtil.js +1 -1
- package/dist/utils/zipUtil.js.map +1 -1
- package/dist/utils.js +70 -75
- package/package.json +1 -1
- package/dist/hooks/useAccessTokenGuard.js.map +0 -1
- package/dist/hooks/useCurrentLanguage.js.map +0 -1
- package/dist/hooks/useDebounce.js +0 -24
- package/dist/hooks/useDebounce.js.map +0 -1
- package/dist/hooks/useDeepCompareEffect.js +0 -38
- package/dist/hooks/useDeepCompareEffect.js.map +0 -1
- package/dist/hooks/useHeaderWrapState.js.map +0 -1
- package/dist/hooks/useNavbar.js +0 -24
- package/dist/hooks/useNavbar.js.map +0 -1
- package/dist/hooks/useNavigationActiveRouteRemount.js.map +0 -1
- package/dist/hooks/usePrevious.js +0 -14
- package/dist/hooks/usePrevious.js.map +0 -1
- package/dist/hooks/useShortcuts.js.map +0 -1
- package/dist/hooks/useThemeMediaQuery.js.map +0 -1
- package/dist/hooks/useTimeout.js.map +0 -1
- package/dist/types/hooks/useDebounce.d.ts +0 -7
- package/dist/types/hooks/useDeepCompareEffect.d.ts +0 -22
- package/dist/types/hooks/usePrevious.d.ts +0 -5
- package/dist/types/utils/dayjsBrowser.d.ts +0 -1
- package/dist/utils/exceljsBrowser.js.map +0 -1
- package/dist/utils/jszipBrowser.js.map +0 -1
- package/dist/utils/treeGridBodyRowsEvent.js.map +0 -1
- /package/dist/hooks/{useHeaderWrapState.js → internal/useHeaderWrapState.js} +0 -0
- /package/dist/hooks/{useThemeMediaQuery.js → internal/useThemeMediaQuery.js} +0 -0
- /package/dist/hooks/{useTimeout.js → internal/useTimeout.js} +0 -0
- /package/dist/types/hooks/{useAccessTokenGuard.d.ts → internal/useAccessTokenGuard.d.ts} +0 -0
- /package/dist/types/hooks/{useCurrentLanguage.d.ts → internal/useCurrentLanguage.d.ts} +0 -0
- /package/dist/types/hooks/{useHeaderWrapState.d.ts → internal/useHeaderWrapState.d.ts} +0 -0
- /package/dist/types/hooks/{useNavigationActiveRouteRemount.d.ts → internal/useNavigationActiveRouteRemount.d.ts} +0 -0
- /package/dist/types/hooks/{useShortcuts.d.ts → internal/useShortcuts.d.ts} +0 -0
- /package/dist/types/hooks/{useThemeMediaQuery.d.ts → internal/useThemeMediaQuery.d.ts} +0 -0
- /package/dist/types/hooks/{useTimeout.d.ts → internal/useTimeout.d.ts} +0 -0
- /package/dist/types/utils/{exceljsBrowser.d.ts → internal/exceljsBrowser.d.ts} +0 -0
- /package/dist/types/utils/{jszipBrowser.d.ts → internal/jszipBrowser.d.ts} +0 -0
- /package/dist/types/utils/{treeGridBodyRowsEvent.d.ts → internal/treeGridBodyRowsEvent.d.ts} +0 -0
- /package/dist/utils/{jszipBrowser.js → internal/jszipBrowser.js} +0 -0
- /package/dist/utils/{treeGridBodyRowsEvent.js → internal/treeGridBodyRowsEvent.js} +0 -0
|
@@ -2,34 +2,35 @@ var cr = Object.defineProperty;
|
|
|
2
2
|
var i = (e, r) => cr(e, "name", { value: r, configurable: !0 });
|
|
3
3
|
import { jsxs as ur, jsx as H } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
|
|
4
4
|
import { resolveOwpGridTheme as fr } from "../../constants/gridTheme.js";
|
|
5
|
+
import { DEFAULT_TABLE_RADIUS as mr } from "../../constants/table.js";
|
|
5
6
|
import { resolveTreeGridColorNumber as M, TREEGRID_INPUT_CELL_COLOR as He, TREEGRID_CELL_HIGHLIGHT_COLOR as Me } from "../../constants/treeGrid.js";
|
|
6
|
-
import { useGetCurrentSettings as
|
|
7
|
-
import { useOwpTranslation as
|
|
8
|
-
import { useGetCurrentLanguage as
|
|
9
|
-
import { useConfirm as
|
|
10
|
-
import { TREE_GRID_BODY_ROWS_CHANGED_EVENT as xe } from "../../utils/treeGridBodyRowsEvent.js";
|
|
11
|
-
import { getTreeGridCellComparableValue as
|
|
7
|
+
import { useGetCurrentSettings as pr } from "../../hooks/useOwpSettings.js";
|
|
8
|
+
import { useOwpTranslation as Rr } from "../../hooks/useOwpTranslation.js";
|
|
9
|
+
import { useGetCurrentLanguage as Tr } from "../../hooks/internal/useCurrentLanguage.js";
|
|
10
|
+
import { useConfirm as gr } from "../../hooks/useConfirm.js";
|
|
11
|
+
import { TREE_GRID_BODY_ROWS_CHANGED_EVENT as xe } from "../../utils/internal/treeGridBodyRowsEvent.js";
|
|
12
|
+
import { getTreeGridCellComparableValue as We, clearTreeGridCellHighlightById as Cr, isTreeGridRowAddedById as w, removeTreeGridAddedRowHighlightColumn as Gr, highlightTreeGridCellById as yr, appendTreeGridAddedRowHighlightColumn as Er, getTreeGridAddedRowBaselineValue as hr } from "../../utils/treeGridUtil.js";
|
|
12
13
|
import { getTreeGridPerfTimestamp as ee, countTreeGridPerf as Ne, logTreeGridPerf as we, measureTreeGridPerf as Fe } from "./internal/utils/perf.js";
|
|
13
|
-
import { useRef as n, useState as re, useMemo as
|
|
14
|
-
import
|
|
14
|
+
import { useRef as n, useState as re, useMemo as Br, useEffect as x, useLayoutEffect as vr } from "react";
|
|
15
|
+
import Dr from "@mui/material/GlobalStyles";
|
|
15
16
|
import { useOwpTreeGridDatePickerEditor as br } from "./internal/hooks/useOwpTreeGridDatePickerEditor.js";
|
|
16
|
-
import { useOwpTreeGridOverlayFrame as
|
|
17
|
-
import { hasTreeGridExplicitEnterMode as je, bindTreeGridEvents as
|
|
17
|
+
import { useOwpTreeGridOverlayFrame as Ir } from "./internal/hooks/useOwpTreeGridOverlayFrame.js";
|
|
18
|
+
import { hasTreeGridExplicitEnterMode as je, bindTreeGridEvents as _r, getTreeGridBodyDataCount as te, buildTreeGridInitializationOptions as kr, hasTreeGridDisplayDataRows as Ue, replaceTreeGridBodyData as Lr, TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS as Ar } from "./internal/treeGridRuntime.js";
|
|
18
19
|
import { applyTreeGridLayoutToGrid as Or } from "./internal/treeGridLayout.js";
|
|
19
|
-
import { OwpTreeGridLoadingOverlay as
|
|
20
|
-
import { OwpTreeGridNoDataOverlay as
|
|
21
|
-
import { createTreeGridThemeContainerStyle as Vr, TREE_GRID_THEME_WRAPPER_CLASS as
|
|
20
|
+
import { OwpTreeGridLoadingOverlay as Pr } from "./internal/OwpTreeGridLoadingOverlay.js";
|
|
21
|
+
import { OwpTreeGridNoDataOverlay as Sr } from "./internal/OwpTreeGridNoDataOverlay.js";
|
|
22
|
+
import { createTreeGridThemeContainerStyle as Vr, TREE_GRID_THEME_WRAPPER_CLASS as Hr, TREE_GRID_THEME_TABLE_RADIUS_CLASS as Mr, treeGridThemeStyles as xr } from "./internal/treeGridTheme.js";
|
|
22
23
|
import { isEmpty as N } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js";
|
|
23
|
-
import { delay as
|
|
24
|
-
import { isEqual as
|
|
25
|
-
import { omit as
|
|
26
|
-
const
|
|
24
|
+
import { delay as Nr } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/function/delay.js";
|
|
25
|
+
import { isEqual as wr } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/predicate/isEqual.js";
|
|
26
|
+
import { omit as Fr } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/omit.js";
|
|
27
|
+
const jr = /* @__PURE__ */ i((e) => {
|
|
27
28
|
const r = e == null ? void 0 : e.Visible;
|
|
28
29
|
return !!e && r !== 0 && r !== !1 && r !== "0";
|
|
29
|
-
}, "isVisibleTreeGridRow"),
|
|
30
|
+
}, "isVisibleTreeGridRow"), Ur = /* @__PURE__ */ i((e) => {
|
|
30
31
|
const r = e == null ? void 0 : e.Added;
|
|
31
32
|
return !!e && r !== 0 && r !== !1 && r !== "0" && r !== void 0;
|
|
32
|
-
}, "isAddedTreeGridRow"),
|
|
33
|
+
}, "isAddedTreeGridRow"), qe = /* @__PURE__ */ i((e) => !e || e.Fixed === "Foot" || !jr(e) ? !1 : e.Kind === "Data" || Ur(e), "isDisplayTreeGridRow"), Wr = /* @__PURE__ */ i((e) => {
|
|
33
34
|
if (typeof e.GetFirst == "function" && typeof e.GetNext == "function") {
|
|
34
35
|
const r = [];
|
|
35
36
|
let t = e.GetFirst();
|
|
@@ -43,24 +44,24 @@ const Fr = /* @__PURE__ */ i((e) => {
|
|
|
43
44
|
return;
|
|
44
45
|
const t = Object.keys(e.Cols ?? {}).filter(Boolean);
|
|
45
46
|
Wr(e).forEach((o) => {
|
|
46
|
-
|
|
47
|
+
qe(o) && r.set(
|
|
47
48
|
o,
|
|
48
|
-
new Map(t.map((l) => [l,
|
|
49
|
+
new Map(t.map((l) => [l, We(e, o, l)]))
|
|
49
50
|
);
|
|
50
51
|
});
|
|
51
|
-
}, "captureTreeGridChangeBaselines"), Kr = /* @__PURE__ */ i((e) => e != null && e !== "" && e !== 0 && e !== !1 && e !== "0", "isTreeGridChangedFlag"),
|
|
52
|
+
}, "captureTreeGridChangeBaselines"), Kr = /* @__PURE__ */ i((e) => e != null && e !== "" && e !== 0 && e !== !1 && e !== "0", "isTreeGridChangedFlag"), $r = /* @__PURE__ */ i((e, r, t) => {
|
|
52
53
|
const o = r;
|
|
53
54
|
return Object.keys(e.Cols ?? {}).some((l) => l !== t && Kr(o[`${l}Changed`]));
|
|
54
|
-
}, "hasOtherTreeGridChangedCells"),
|
|
55
|
+
}, "hasOtherTreeGridChangedCells"), zr = /* @__PURE__ */ i((e, r, t) => {
|
|
55
56
|
const o = r;
|
|
56
|
-
o[`${t}Changed`] = 0, !w(r) &&
|
|
57
|
-
}, "clearTreeGridCellChangedState"),
|
|
57
|
+
o[`${t}Changed`] = 0, !w(r) && !$r(e, r, t) && (o.Changed = 0);
|
|
58
|
+
}, "clearTreeGridCellChangedState"), Yr = /* @__PURE__ */ i((e, r, t) => {
|
|
58
59
|
const o = e.get(r);
|
|
59
60
|
if (o != null && o.has(t))
|
|
60
61
|
return o.get(t);
|
|
61
62
|
if (w(r))
|
|
62
63
|
return hr(r, t) ?? "";
|
|
63
|
-
}, "resolveTreeGridCellBaselineValue"),
|
|
64
|
+
}, "resolveTreeGridCellBaselineValue"), Jr = /* @__PURE__ */ i(({
|
|
64
65
|
gridId: e,
|
|
65
66
|
grid: r,
|
|
66
67
|
row: t,
|
|
@@ -68,19 +69,19 @@ const Fr = /* @__PURE__ */ i((e) => {
|
|
|
68
69
|
backgroundColor: l,
|
|
69
70
|
baselineMap: F
|
|
70
71
|
}) => {
|
|
71
|
-
if (!
|
|
72
|
+
if (!qe(t))
|
|
72
73
|
return;
|
|
73
|
-
const C =
|
|
74
|
-
if (C !== void 0 &&
|
|
75
|
-
|
|
74
|
+
const C = Yr(F, t, o), b = We(r, t, o);
|
|
75
|
+
if (C !== void 0 && b === C) {
|
|
76
|
+
Cr(e, { row: t, col: o }), zr(r, t, o), w(t) && Gr(t, o);
|
|
76
77
|
return;
|
|
77
78
|
}
|
|
78
|
-
|
|
79
|
+
yr(e, {
|
|
79
80
|
row: t,
|
|
80
81
|
col: o,
|
|
81
82
|
backgroundColor: l
|
|
82
|
-
}), w(t) &&
|
|
83
|
-
}, "syncTreeGridChangedCellHighlightById"),
|
|
83
|
+
}), w(t) && Er(t, o);
|
|
84
|
+
}, "syncTreeGridChangedCellHighlightById"), Bt = /* @__PURE__ */ i(({
|
|
84
85
|
id: e = "treeGridWrapper",
|
|
85
86
|
containerStyle: r,
|
|
86
87
|
containerClassName: t,
|
|
@@ -88,13 +89,13 @@ const Fr = /* @__PURE__ */ i((e) => {
|
|
|
88
89
|
className: l,
|
|
89
90
|
style: F,
|
|
90
91
|
height: C = "100%",
|
|
91
|
-
width:
|
|
92
|
+
width: b = "100%",
|
|
92
93
|
canUseTableRadius: ne = !1,
|
|
93
|
-
tableBorderRadius:
|
|
94
|
+
tableBorderRadius: Ke = mr,
|
|
94
95
|
layoutUrl: $e,
|
|
95
96
|
layoutData: j,
|
|
96
97
|
dataUrl: ze,
|
|
97
|
-
layoutOverrides:
|
|
98
|
+
layoutOverrides: U,
|
|
98
99
|
data: c,
|
|
99
100
|
useDataUrl: oe,
|
|
100
101
|
onSelect: ie,
|
|
@@ -115,35 +116,35 @@ const Fr = /* @__PURE__ */ i((e) => {
|
|
|
115
116
|
loading: Qe,
|
|
116
117
|
showLoading: u = !0
|
|
117
118
|
}) => {
|
|
118
|
-
var
|
|
119
|
-
const { t: I } =
|
|
119
|
+
var Oe, Pe;
|
|
120
|
+
const { t: I } = Rr(), { confirmDelete: Xe } = gr(), W = pr(), q = (Pe = (Oe = W == null ? void 0 : W.theme) == null ? void 0 : Oe.main) == null ? void 0 : Pe.grid, d = n(null), Ce = n(null), Ge = n(null), K = n(null), $ = n(U), ye = n(c), Ee = n(je(j)), he = Je ? async () => await Xe({
|
|
120
121
|
title: I("Message.삭제된 항목을 완전히 삭제하시겠습니까?"),
|
|
121
122
|
description: I("Message.취소하면 삭제 상태가 해제됩니다."),
|
|
122
123
|
okText: I("Button.완전 삭제")
|
|
123
|
-
}) ? "remove" : "undelete" : void 0,
|
|
124
|
+
}) ? "remove" : "undelete" : void 0, _ = n({
|
|
124
125
|
onSelect: ie,
|
|
125
126
|
onRowClick: se,
|
|
126
127
|
onRowAdd: ae,
|
|
127
128
|
onRowDelete: de,
|
|
128
|
-
onBeforeRowUndelete:
|
|
129
|
+
onBeforeRowUndelete: he,
|
|
129
130
|
onRowUndelete: le,
|
|
130
131
|
onRowChange: ce,
|
|
131
132
|
onClickButton: ue,
|
|
132
133
|
onSave: fe,
|
|
133
134
|
onReady: me,
|
|
134
135
|
onAfterValueChanged: pe
|
|
135
|
-
}), G = n(void 0), z = n(!1),
|
|
136
|
-
() => fr(
|
|
137
|
-
[
|
|
138
|
-
),
|
|
136
|
+
}), G = n(void 0), z = n(!1), k = n(void 0), L = n(void 0), Ze = n(!1), y = n(0), g = n(null), E = n(void 0), h = n(void 0), Be = n(Re), Y = n(Te), ve = n(ge), [A, er] = re(!1), [rr, B] = re(!1), [tr, De] = re(!1), O = Tr(), f = Br(
|
|
137
|
+
() => fr(q),
|
|
138
|
+
[q]
|
|
139
|
+
), be = n(
|
|
139
140
|
M(f.editable.backgroundColor) ?? M(He)
|
|
140
141
|
), J = n(
|
|
141
142
|
f.changed.backgroundColor ?? Me
|
|
142
|
-
), P = n(/* @__PURE__ */ new WeakMap()), Ie = n(f.state.selectedCellBackgroundColor),
|
|
143
|
-
|
|
143
|
+
), P = n(/* @__PURE__ */ new WeakMap()), Ie = n(f.state.selectedCellBackgroundColor), _e = n(f.state.hoverCellBackgroundColor), ke = n(O.id), nr = u && c !== void 0 && A && L.current !== c, Q = u && Qe === !0 || u && (rr || nr), X = !Q && c !== void 0 && N(c) && !tr, Le = /* @__PURE__ */ i((s) => {
|
|
144
|
+
De(Ue(s));
|
|
144
145
|
}, "syncHasDisplayDataRows"), or = /* @__PURE__ */ i((s, a, p, T) => {
|
|
145
146
|
var m, v;
|
|
146
|
-
Y.current && a.Fixed !== "Foot" &&
|
|
147
|
+
Y.current && a.Fixed !== "Foot" && Jr({
|
|
147
148
|
gridId: e,
|
|
148
149
|
grid: s,
|
|
149
150
|
row: a,
|
|
@@ -151,10 +152,10 @@ const Fr = /* @__PURE__ */ i((e) => {
|
|
|
151
152
|
backgroundColor: J.current,
|
|
152
153
|
baselineMap: P.current
|
|
153
154
|
});
|
|
154
|
-
const R = ((m =
|
|
155
|
+
const R = ((m = _.current) == null ? void 0 : m.onAfterValueChanged) ?? ((v = _.current) == null ? void 0 : v.onRowChange);
|
|
155
156
|
R == null || R(s, a, p, T);
|
|
156
157
|
}, "handleDatePickerEditorValueChange");
|
|
157
|
-
$.current =
|
|
158
|
+
$.current = U, ye.current = c, Ee.current = je(j), Be.current = Re, Y.current = Te, ve.current = ge, be.current = M(f.editable.backgroundColor) ?? M(He), J.current = f.changed.backgroundColor ?? Me, Ie.current = f.state.selectedCellBackgroundColor, _e.current = f.state.hoverCellBackgroundColor;
|
|
158
159
|
const {
|
|
159
160
|
datePickerEditorElement: ir,
|
|
160
161
|
handleDatePickerEditorButtonClick: sr,
|
|
@@ -164,15 +165,15 @@ const Fr = /* @__PURE__ */ i((e) => {
|
|
|
164
165
|
} = br({
|
|
165
166
|
config: Ye,
|
|
166
167
|
treeGridInstanceRef: d,
|
|
167
|
-
isTreeGridReady:
|
|
168
|
+
isTreeGridReady: A,
|
|
168
169
|
onValueChange: or
|
|
169
170
|
});
|
|
170
|
-
|
|
171
|
+
_.current = {
|
|
171
172
|
onSelect: ie,
|
|
172
173
|
onRowClick: se,
|
|
173
174
|
onRowAdd: ae,
|
|
174
175
|
onRowDelete: de,
|
|
175
|
-
onBeforeRowUndelete:
|
|
176
|
+
onBeforeRowUndelete: he,
|
|
176
177
|
onRowUndelete: le,
|
|
177
178
|
onRowChange: ce,
|
|
178
179
|
onClickButton: ue,
|
|
@@ -184,45 +185,45 @@ const Fr = /* @__PURE__ */ i((e) => {
|
|
|
184
185
|
onInternalKeyDown: dr,
|
|
185
186
|
onInternalStartEdit: lr
|
|
186
187
|
};
|
|
187
|
-
const
|
|
188
|
+
const Ae = Ir({
|
|
188
189
|
visible: Q || X,
|
|
189
190
|
containerRef: Ce,
|
|
190
191
|
treeGridInstanceRef: d,
|
|
191
192
|
debugId: e
|
|
192
|
-
}),
|
|
193
|
-
h.current !== void 0 && (window.clearTimeout(h.current), h.current = void 0);
|
|
194
|
-
}, "clearBindingLoadingHideTimeout"), Z = /* @__PURE__ */ i(() => {
|
|
193
|
+
}), S = /* @__PURE__ */ i(() => {
|
|
195
194
|
E.current !== void 0 && (window.clearTimeout(E.current), E.current = void 0);
|
|
195
|
+
}, "clearBindingLoadingHideTimeout"), Z = /* @__PURE__ */ i(() => {
|
|
196
|
+
h.current !== void 0 && (window.clearTimeout(h.current), h.current = void 0);
|
|
196
197
|
}, "clearBodyReloadStartTimeout");
|
|
197
198
|
x(() => {
|
|
198
199
|
const s = /* @__PURE__ */ i((a) => {
|
|
199
200
|
var T;
|
|
200
|
-
((T = a.detail) == null ? void 0 : T.gridId) === e &&
|
|
201
|
+
((T = a.detail) == null ? void 0 : T.gridId) === e && De(Ue(d.current));
|
|
201
202
|
}, "handleBodyRowsChanged");
|
|
202
203
|
return window.addEventListener(xe, s), () => {
|
|
203
204
|
window.removeEventListener(xe, s);
|
|
204
205
|
};
|
|
205
206
|
}, [e]), x(() => {
|
|
206
|
-
u || (Z(),
|
|
207
|
+
u || (Z(), S(), g.current = null, B(!1));
|
|
207
208
|
}, [u]), x(() => {
|
|
208
209
|
var s;
|
|
209
|
-
if (
|
|
210
|
-
return
|
|
210
|
+
if (O.id !== ke.current && !N(d.current) && ((s = d.current) == null || s.Dispose(), d.current = null, ke.current = O.id), !!N(d.current))
|
|
211
|
+
return _r({
|
|
211
212
|
id: e,
|
|
212
|
-
latestEventHandlersRef:
|
|
213
|
-
layoutHasExplicitEnterModeRef:
|
|
213
|
+
latestEventHandlersRef: _,
|
|
214
|
+
layoutHasExplicitEnterModeRef: Ee,
|
|
214
215
|
highlightEditableCellsRef: Be,
|
|
215
216
|
highlightChangedCellsRef: Y,
|
|
216
217
|
syncDeletedRowCanEditRef: ve,
|
|
217
|
-
editableCellBackgroundColorValueRef:
|
|
218
|
+
editableCellBackgroundColorValueRef: be,
|
|
218
219
|
changedCellBackgroundColorRef: J,
|
|
219
220
|
selectedCellBackgroundColorRef: Ie,
|
|
220
|
-
hoverCellBackgroundColorRef:
|
|
221
|
+
hoverCellBackgroundColorRef: _e,
|
|
221
222
|
changedCellBaselineRef: P,
|
|
222
223
|
treeGridInstanceRef: d,
|
|
223
224
|
treeGridInitStartedAtRef: Ge,
|
|
224
225
|
latestLayoutOverridesRef: $,
|
|
225
|
-
appliedLayoutOverridesRef:
|
|
226
|
+
appliedLayoutOverridesRef: k,
|
|
226
227
|
appliedBodyDataPropRef: L,
|
|
227
228
|
hasAppliedInitialLayoutRef: Ze,
|
|
228
229
|
syncHasDisplayDataRows: Le,
|
|
@@ -238,103 +239,103 @@ const Fr = /* @__PURE__ */ i((e) => {
|
|
|
238
239
|
dataUrl: ze,
|
|
239
240
|
bodyData: c,
|
|
240
241
|
useDataUrl: oe,
|
|
241
|
-
width:
|
|
242
|
+
width: b,
|
|
242
243
|
height: C,
|
|
243
|
-
languageId:
|
|
244
|
+
languageId: O.id
|
|
244
245
|
}),
|
|
245
246
|
e,
|
|
246
247
|
e
|
|
247
248
|
), () => {
|
|
248
|
-
|
|
249
|
+
Nr(() => {
|
|
249
250
|
var a;
|
|
250
251
|
(a = d.current) == null || a.Dispose();
|
|
251
252
|
}, 200);
|
|
252
253
|
};
|
|
253
|
-
}, []),
|
|
254
|
+
}, []), vr(() => {
|
|
254
255
|
const s = d.current, a = $.current, p = ye.current;
|
|
255
|
-
if (N(s) || !
|
|
256
|
+
if (N(s) || !A)
|
|
256
257
|
return;
|
|
257
|
-
const T =
|
|
258
|
+
const T = k.current !== a && !wr(k.current, a), R = L.current !== p && (!z.current || G.current !== p);
|
|
258
259
|
if (!(!T && !R)) {
|
|
259
260
|
if (T) {
|
|
260
261
|
const m = ee();
|
|
261
|
-
Or(s, a, R),
|
|
262
|
+
Or(s, a, R), k.current = a, Fe(e, "apply layout", m, {
|
|
262
263
|
disableBodyReload: !!R
|
|
263
264
|
});
|
|
264
265
|
}
|
|
265
266
|
if (R) {
|
|
266
267
|
const m = y.current + 1, v = /* @__PURE__ */ i(() => {
|
|
267
|
-
const
|
|
268
|
-
|
|
269
|
-
bodyRowCount: te(
|
|
270
|
-
}),
|
|
268
|
+
const D = G.current;
|
|
269
|
+
h.current = void 0, K.current = ee(), Ne(e, "reload"), we(e, "ReloadBody start", {
|
|
270
|
+
bodyRowCount: te(D)
|
|
271
|
+
}), Lr(s, D, () => {
|
|
271
272
|
if (y.current !== m)
|
|
272
273
|
return;
|
|
273
|
-
L.current =
|
|
274
|
-
bodyRowCount: te(
|
|
275
|
-
}),
|
|
276
|
-
const
|
|
277
|
-
if (!u ||
|
|
274
|
+
L.current = D, P.current = /* @__PURE__ */ new WeakMap(), qr(s, P.current), Le(s), Fe(e, "ReloadBody end", K.current, {
|
|
275
|
+
bodyRowCount: te(D)
|
|
276
|
+
}), K.current = null, G.current === D && (G.current = void 0, z.current = !1);
|
|
277
|
+
const Se = g.current;
|
|
278
|
+
if (!u || Se === null) {
|
|
278
279
|
g.current = null, B(!1);
|
|
279
280
|
return;
|
|
280
281
|
}
|
|
281
|
-
const
|
|
282
|
+
const Ve = Math.max(
|
|
282
283
|
0,
|
|
283
|
-
|
|
284
|
+
Ar - (Date.now() - Se)
|
|
284
285
|
);
|
|
285
|
-
if (
|
|
286
|
+
if (S(), Ve === 0) {
|
|
286
287
|
g.current = null, B(!1);
|
|
287
288
|
return;
|
|
288
289
|
}
|
|
289
|
-
|
|
290
|
-
y.current === m && (
|
|
291
|
-
},
|
|
290
|
+
E.current = window.setTimeout(() => {
|
|
291
|
+
y.current === m && (E.current = void 0, g.current = null, B(!1));
|
|
292
|
+
}, Ve);
|
|
292
293
|
});
|
|
293
294
|
}, "runBodyReload");
|
|
294
|
-
y.current = m, G.current = p, z.current = !0, u && p !== void 0 ? (Z(),
|
|
295
|
+
y.current = m, G.current = p, z.current = !0, u && p !== void 0 ? (Z(), S(), g.current = Date.now(), B(!0), h.current = window.setTimeout(() => {
|
|
295
296
|
y.current === m && v();
|
|
296
297
|
}, 0)) : v();
|
|
297
298
|
}
|
|
298
299
|
}
|
|
299
|
-
}, [
|
|
300
|
-
Z(),
|
|
300
|
+
}, [A, U, c, u, e]), x(() => () => {
|
|
301
|
+
Z(), S();
|
|
301
302
|
}, []);
|
|
302
|
-
const
|
|
303
|
-
width:
|
|
303
|
+
const V = Vr({
|
|
304
|
+
width: b,
|
|
304
305
|
height: C,
|
|
305
306
|
treeGridTheme: f,
|
|
306
|
-
gridThemeConfig:
|
|
307
|
+
gridThemeConfig: q,
|
|
307
308
|
containerStyle: r,
|
|
308
|
-
tableBorderRadius: ne ?
|
|
309
|
+
tableBorderRadius: ne ? Ke : void 0
|
|
309
310
|
});
|
|
310
|
-
return o !== void 0 && (
|
|
311
|
+
return o !== void 0 && (V["--owp-tree-grid-toolbar-row-background-color"] = String(o)), (u || X) && (V.position = r != null && r.position && r.position !== "static" ? r.position : "relative", V.isolation = "isolate"), /* @__PURE__ */ ur(
|
|
311
312
|
"div",
|
|
312
313
|
{
|
|
313
314
|
ref: Ce,
|
|
314
315
|
className: [
|
|
315
|
-
|
|
316
|
-
ne &&
|
|
316
|
+
Hr,
|
|
317
|
+
ne && Mr,
|
|
317
318
|
t
|
|
318
319
|
].filter(Boolean).join(" "),
|
|
319
|
-
style:
|
|
320
|
+
style: V,
|
|
320
321
|
children: [
|
|
321
|
-
/* @__PURE__ */ H(
|
|
322
|
-
/* @__PURE__ */ H("div", { id: e, className: l, style:
|
|
322
|
+
/* @__PURE__ */ H(Dr, { styles: xr }),
|
|
323
|
+
/* @__PURE__ */ H("div", { id: e, className: l, style: Fr(F, ["height", "width"]) }),
|
|
323
324
|
/* @__PURE__ */ H(
|
|
324
|
-
|
|
325
|
+
Sr,
|
|
325
326
|
{
|
|
326
327
|
visible: X,
|
|
327
328
|
message: I("Message.조회된 결과가 없습니다."),
|
|
328
|
-
overlayFrame:
|
|
329
|
+
overlayFrame: Ae
|
|
329
330
|
}
|
|
330
331
|
),
|
|
331
|
-
/* @__PURE__ */ H(
|
|
332
|
+
/* @__PURE__ */ H(Pr, { visible: Q, overlayFrame: Ae }),
|
|
332
333
|
ir
|
|
333
334
|
]
|
|
334
335
|
}
|
|
335
336
|
);
|
|
336
337
|
}, "OwpTreeGrid");
|
|
337
338
|
export {
|
|
338
|
-
|
|
339
|
+
Bt as OwpTreeGrid
|
|
339
340
|
};
|
|
340
341
|
//# sourceMappingURL=OwpTreeGrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwpTreeGrid.js","sources":["../../../src/components/OwpTreeGrid/OwpTreeGrid.tsx"],"sourcesContent":["import { resolveOwpGridTheme } from '@/constants/gridTheme';\nimport {\n resolveTreeGridColorNumber,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\n TREEGRID_INPUT_CELL_COLOR,\n} from '@/constants/treeGrid';\nimport { useGetCurrentSettings } from '@/hooks/useOwpSettings';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { useGetCurrentLanguage } from '@/hooks/useCurrentLanguage';\nimport { useConfirm } from '@/hooks/useConfirm';\nimport {\n TREE_GRID_BODY_ROWS_CHANGED_EVENT,\n type TreeGridBodyRowsChangedEventDetail,\n} from '@/utils/treeGridBodyRowsEvent';\nimport {\n appendTreeGridAddedRowHighlightColumn,\n clearTreeGridCellHighlightById,\n getTreeGridAddedRowBaselineValue,\n getTreeGridCellComparableValue,\n highlightTreeGridCellById,\n isTreeGridRowAddedById,\n removeTreeGridAddedRowHighlightColumn,\n} from '@/utils/treeGridUtil';\nimport { delay, isEmpty, isEqual, omit } from 'es-toolkit/compat';\n// Temporary TreeGrid perf instrumentation import. Remove with ./internal/utils/perf after profiling is finished.\nimport {\n countTreeGridPerf,\n getTreeGridPerfTimestamp,\n logTreeGridPerf,\n measureTreeGridPerf,\n} from './internal/utils/perf';\nimport {\n type CSSProperties,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport { useOwpTreeGridDatePickerEditor } from './internal/hooks/useOwpTreeGridDatePickerEditor';\nimport { useOwpTreeGridOverlayFrame } from './internal/hooks/useOwpTreeGridOverlayFrame';\nimport {\n bindTreeGridEvents,\n buildTreeGridInitializationOptions,\n getTreeGridBodyDataCount,\n hasTreeGridExplicitEnterMode,\n hasTreeGridDisplayDataRows,\n replaceTreeGridBodyData,\n TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS,\n type TreeGridEventHandlers,\n} from './internal/treeGridRuntime';\nimport { applyTreeGridLayoutToGrid } from './internal/treeGridLayout';\nimport { OwpTreeGridLoadingOverlay } from './internal/OwpTreeGridLoadingOverlay';\nimport { OwpTreeGridNoDataOverlay } from './internal/OwpTreeGridNoDataOverlay';\nimport {\n createTreeGridThemeContainerStyle,\n TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n TREE_GRID_THEME_WRAPPER_CLASS,\n treeGridThemeStyles,\n type TreeGridThemeContainerStyle,\n} from './internal/treeGridTheme';\n\ntype TreeGridLayoutScalarValue = string | number;\ntype TreeGridNestedLayoutFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridLayoutFields = Record<string, TreeGridLayoutScalarValue | TreeGridNestedLayoutFields>;\ntype TreeGridSectionFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridCellBaselineMap = WeakMap<TRow, Map<string, string>>;\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\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\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\nconst getTreeGridRows = (grid: TGrid) => {\n if (typeof grid.GetFirst === 'function' && typeof grid.GetNext === 'function') {\n const rows: TRow[] = [];\n let row = grid.GetFirst();\n\n while (row) {\n rows.push(row);\n row = grid.GetNext(row);\n }\n\n return rows;\n }\n\n return Object.values(grid.Rows ?? {});\n};\n\nconst captureTreeGridChangeBaselines = (\n grid: TGrid | null | undefined,\n baselineMap: TreeGridCellBaselineMap,\n) => {\n if (!grid) {\n return;\n }\n\n const cols = Object.keys(grid.Cols ?? {}).filter(Boolean);\n\n getTreeGridRows(grid).forEach((row) => {\n if (!isDisplayTreeGridRow(row)) {\n return;\n }\n\n baselineMap.set(\n row,\n new Map(cols.map((col) => [col, getTreeGridCellComparableValue(grid, row, col)])),\n );\n });\n};\n\nconst isTreeGridChangedFlag = (value: unknown) =>\n value !== undefined &&\n value !== null &&\n value !== '' &&\n value !== 0 &&\n value !== false &&\n value !== '0';\n\nconst hasOtherTreeGridChangedCells = (grid: TGrid, row: TRow, col: string) => {\n const rowRecord = row as unknown as Record<string, unknown>;\n\n return Object.keys(grid.Cols ?? {}).some((column) => {\n return column !== col && isTreeGridChangedFlag(rowRecord[`${column}Changed`]);\n });\n};\n\nconst clearTreeGridCellChangedState = (grid: TGrid, row: TRow, col: string) => {\n const rowRecord = row as unknown as Record<string, unknown>;\n\n rowRecord[`${col}Changed`] = 0;\n\n if (!isTreeGridRowAddedById(row) && !hasOtherTreeGridChangedCells(grid, row, col)) {\n rowRecord.Changed = 0;\n }\n};\n\nconst resolveTreeGridCellBaselineValue = (\n baselineMap: TreeGridCellBaselineMap,\n row: TRow,\n col: string,\n) => {\n const baselineValues = baselineMap.get(row);\n\n if (baselineValues?.has(col)) {\n return baselineValues.get(col);\n }\n\n if (isTreeGridRowAddedById(row)) {\n return getTreeGridAddedRowBaselineValue(row, col) ?? '';\n }\n\n return undefined;\n};\n\nconst syncTreeGridChangedCellHighlightById = ({\n gridId,\n grid,\n row,\n col,\n backgroundColor,\n baselineMap,\n}: {\n gridId: string;\n grid: TGrid;\n row: TRow;\n col: string;\n backgroundColor: string;\n baselineMap: TreeGridCellBaselineMap;\n}) => {\n if (!isDisplayTreeGridRow(row)) {\n return;\n }\n\n const baselineValue = resolveTreeGridCellBaselineValue(baselineMap, row, col);\n const currentValue = getTreeGridCellComparableValue(grid, row, col);\n\n if (baselineValue !== undefined && currentValue === baselineValue) {\n clearTreeGridCellHighlightById(gridId, { row, col });\n clearTreeGridCellChangedState(grid, row, col);\n\n if (isTreeGridRowAddedById(row)) {\n removeTreeGridAddedRowHighlightColumn(row, col);\n }\n\n return;\n }\n\n highlightTreeGridCellById(gridId, {\n row,\n col,\n backgroundColor,\n });\n\n if (isTreeGridRowAddedById(row)) {\n appendTreeGridAddedRowHighlightColumn(row, col);\n }\n};\n\nexport interface OwpTreeGridLayout {\n Header?: TreeGridLayoutFields;\n Toolbar?: TreeGridSectionFields;\n Foot?: TreeGridSectionFields;\n}\n\nexport type OwpTreeGridLayoutConfig = OwpTreeGridLayout;\nexport type THeader = OwpTreeGridLayoutConfig;\nexport type OwpTreeGridBodyData<T> = Record<string, never> | [] | undefined | T[];\nexport type OwpTreeGridData<T> = OwpTreeGridBodyData<T>;\nexport type TData<T> = OwpTreeGridBodyData<T>;\nexport type OwpTreeGridRowModel<T> = TRow & T;\nexport type OwpTreeGridSelectedRows<T> = OwpTreeGridRowModel<T>[];\n\nexport interface OwpTreeGridDatePickerEditorColumnOption {\n baseYear?: string;\n baseYearMonth?: string;\n}\n\nexport interface OwpTreeGridDatePickerEditorConfig {\n enabled?: boolean;\n columns?: readonly string[];\n allowInput?: boolean;\n columnOptions?: Record<string, OwpTreeGridDatePickerEditorColumnOption>;\n showTimeInput?: boolean;\n showTimeSelect?: boolean;\n timeIntervals?: number;\n}\n\ntype OwpTreeGridSelectHandler<T> = (selectedRows: OwpTreeGridSelectedRows<T>) => void;\ntype OwpTreeGridRowAddHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridRowDeleteHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n deleteType: number,\n) => void;\ntype OwpTreeGridRowUndeleteHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridButtonClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n event: Event,\n) => void;\ntype OwpTreeGridRowClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n x: number,\n y: number,\n event: Event,\n) => void;\ntype OwpTreeGridSaveHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n autoupdate: boolean | number,\n) => void;\ntype OwpTreeGridCellValue = unknown;\ntype OwpTreeGridAfterValueChangedHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: OwpTreeGridCellValue,\n) => void;\n\nexport interface OwpTreeGridProps<T> {\n id: string;\n className?: string;\n containerStyle?: CSSProperties;\n containerClassName?: string;\n toolbarRowBackgroundColor?: CSSProperties['backgroundColor'];\n layoutUrl?: string;\n layoutData?: string;\n dataUrl?: string;\n layoutOverrides?: OwpTreeGridLayoutConfig;\n data?: OwpTreeGridBodyData<T>;\n style?: CSSProperties;\n height?: string | number;\n width?: string | number;\n canUseTableRadius?: boolean;\n tableBorderRadius?: string | number;\n useDataUrl?: boolean;\n onSelect?: OwpTreeGridSelectHandler<T>;\n onRowAdd?: OwpTreeGridRowAddHandler<T>;\n onRowDelete?: OwpTreeGridRowDeleteHandler<T>;\n onRowUndelete?: OwpTreeGridRowUndeleteHandler<T>;\n onRowChange?: OwpTreeGridAfterValueChangedHandler<T>;\n onClickButton?: OwpTreeGridButtonClickHandler<T>;\n onReady?: (grid: TGrid) => void;\n onRowClick?: OwpTreeGridRowClickHandler<T>;\n onSave?: OwpTreeGridSaveHandler<T>;\n onAfterValueChanged?: OwpTreeGridAfterValueChangedHandler<T>;\n datePickerEditor?: OwpTreeGridDatePickerEditorConfig;\n highlightEditableCells?: boolean;\n highlightChangedCells?: boolean;\n syncDeletedRowCanEdit?: boolean;\n confirmDeletedRowRemoval?: boolean;\n loading?: boolean;\n showLoading?: boolean;\n}\n\n/**\n * OwpTreeGrid 컴포넌트\n * @param id 식별자\n * @param containerStyle containerStyle 값\n * @param containerClassName containerClassName 값\n * @param toolbarRowBackgroundColor 하단 Toolbar row 배경색\n * @param className CSS 클래스명\n * @param style 스타일 객체\n * @param height height 값\n * @param canUseTableRadius TreeGrid 내부 테이블 radius 사용 여부\n * @param tableBorderRadius TreeGrid 내부 테이블 radius 값\n */\nconst OwpTreeGrid = <T,>({\n id = 'treeGridWrapper',\n containerStyle,\n containerClassName,\n toolbarRowBackgroundColor,\n className,\n style,\n height = '100%',\n width = '100%',\n canUseTableRadius = false,\n tableBorderRadius = '0.5rem',\n layoutUrl,\n layoutData,\n dataUrl,\n layoutOverrides,\n data,\n useDataUrl,\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n datePickerEditor,\n highlightEditableCells = true,\n highlightChangedCells = true,\n syncDeletedRowCanEdit = true,\n confirmDeletedRowRemoval = true,\n loading,\n showLoading = true,\n}: OwpTreeGridProps<T>) => {\n const { t } = useOwpTranslation();\n const { confirmDelete } = useConfirm();\n const currentSettings = useGetCurrentSettings();\n const currentGridThemeConfig = currentSettings?.theme?.main?.grid;\n const treeGridInstanceRef = useRef<TGrid>(null);\n const treeGridContainerRef = useRef<HTMLDivElement | null>(null);\n const treeGridInitStartedAtRef = useRef<number | null>(null);\n const bodyReloadStartedAtRef = useRef<number | null>(null);\n const latestLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(layoutOverrides);\n const latestBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(data);\n const layoutHasExplicitEnterModeRef = useRef(hasTreeGridExplicitEnterMode(layoutData));\n const handleBeforeRowUndelete = confirmDeletedRowRemoval\n ? async () => {\n const confirmed = await confirmDelete({\n title: t('Message.삭제된 항목을 완전히 삭제하시겠습니까?'),\n description: t('Message.취소하면 삭제 상태가 해제됩니다.'),\n okText: t('Button.완전 삭제'),\n });\n\n return confirmed ? 'remove' : 'undelete';\n }\n : undefined;\n const latestEventHandlersRef = useRef<TreeGridEventHandlers<T>>({\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n });\n const stagedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasStagedBodyDataPropRef = useRef(false);\n const appliedLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(undefined);\n const appliedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasAppliedInitialLayoutRef = useRef(false);\n const bodyReloadSequenceRef = useRef(0);\n const bindingLoadingStartedAtRef = useRef<number | null>(null);\n const bindingLoadingHideTimeoutRef = useRef<number | undefined>(undefined);\n const bodyReloadStartTimeoutRef = useRef<number | undefined>(undefined);\n const highlightEditableCellsRef = useRef(highlightEditableCells);\n const highlightChangedCellsRef = useRef(highlightChangedCells);\n const syncDeletedRowCanEditRef = useRef(syncDeletedRowCanEdit);\n const [isTreeGridReady, setIsTreeGridReady] = useState(false);\n const [isBindingLoadingVisible, setIsBindingLoadingVisible] = useState(false);\n const [hasDisplayDataRows, setHasDisplayDataRows] = useState(false);\n const currentLanguage = useGetCurrentLanguage();\n const treeGridTheme = useMemo(\n () => resolveOwpGridTheme(currentGridThemeConfig),\n [currentGridThemeConfig],\n );\n const editableCellBackgroundColorValueRef = useRef(\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR),\n );\n const changedCellBackgroundColorRef = useRef(\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR,\n );\n const changedCellBaselineRef = useRef<TreeGridCellBaselineMap>(new WeakMap());\n const selectedCellBackgroundColorRef = useRef(treeGridTheme.state.selectedCellBackgroundColor);\n const hoverCellBackgroundColorRef = useRef(treeGridTheme.state.hoverCellBackgroundColor);\n const currentLanguageIdRef = useRef(currentLanguage.id);\n const isPendingBodyReload =\n showLoading &&\n data !== undefined &&\n isTreeGridReady &&\n appliedBodyDataPropRef.current !== data;\n const isInternalLoadingVisible = showLoading && (isBindingLoadingVisible || isPendingBodyReload);\n const isLoadingOverlayVisible = (showLoading && loading === true) || isInternalLoadingVisible;\n const isNoDataVisible =\n !isLoadingOverlayVisible && data !== undefined && isEmpty(data) && !hasDisplayDataRows;\n\n const syncHasDisplayDataRows = (grid: TGrid | null) => {\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(grid));\n };\n const handleDatePickerEditorValueChange = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: unknown,\n ) => {\n if (highlightChangedCellsRef.current && row.Fixed !== 'Foot') {\n syncTreeGridChangedCellHighlightById({\n gridId: id,\n grid,\n row,\n col,\n backgroundColor: changedCellBackgroundColorRef.current,\n baselineMap: changedCellBaselineRef.current,\n });\n }\n\n const valueChangedHandler =\n latestEventHandlersRef.current?.onAfterValueChanged ??\n latestEventHandlersRef.current?.onRowChange;\n\n valueChangedHandler?.(grid, row, col, value);\n };\n\n latestLayoutOverridesRef.current = layoutOverrides;\n latestBodyDataPropRef.current = data;\n layoutHasExplicitEnterModeRef.current = hasTreeGridExplicitEnterMode(layoutData);\n highlightEditableCellsRef.current = highlightEditableCells;\n highlightChangedCellsRef.current = highlightChangedCells;\n syncDeletedRowCanEditRef.current = syncDeletedRowCanEdit;\n editableCellBackgroundColorValueRef.current =\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR);\n changedCellBackgroundColorRef.current =\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR;\n selectedCellBackgroundColorRef.current = treeGridTheme.state.selectedCellBackgroundColor;\n hoverCellBackgroundColorRef.current = treeGridTheme.state.hoverCellBackgroundColor;\n const {\n datePickerEditorElement,\n handleDatePickerEditorButtonClick,\n handleDatePickerEditorCellClick,\n handleDatePickerEditorKeyDown,\n handleDatePickerEditorStartEdit,\n } =\n useOwpTreeGridDatePickerEditor({\n config: datePickerEditor,\n treeGridInstanceRef,\n isTreeGridReady,\n onValueChange: handleDatePickerEditorValueChange,\n });\n latestEventHandlersRef.current = {\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n onInternalButtonClick: handleDatePickerEditorButtonClick,\n onInternalCellClick: handleDatePickerEditorCellClick,\n onInternalKeyDown: handleDatePickerEditorKeyDown,\n onInternalStartEdit: handleDatePickerEditorStartEdit,\n };\n\n const overlayFrame = useOwpTreeGridOverlayFrame({\n visible: isLoadingOverlayVisible || isNoDataVisible,\n containerRef: treeGridContainerRef,\n treeGridInstanceRef,\n debugId: id,\n });\n\n const clearBindingLoadingHideTimeout = () => {\n if (bindingLoadingHideTimeoutRef.current !== undefined) {\n window.clearTimeout(bindingLoadingHideTimeoutRef.current);\n bindingLoadingHideTimeoutRef.current = undefined;\n }\n };\n\n const clearBodyReloadStartTimeout = () => {\n if (bodyReloadStartTimeoutRef.current !== undefined) {\n window.clearTimeout(bodyReloadStartTimeoutRef.current);\n bodyReloadStartTimeoutRef.current = undefined;\n }\n };\n\n useEffect(() => {\n const handleBodyRowsChanged = (event: Event) => {\n const customEvent = event as CustomEvent<TreeGridBodyRowsChangedEventDetail>;\n\n if (customEvent.detail?.gridId !== id) {\n return;\n }\n\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(treeGridInstanceRef.current));\n };\n\n window.addEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n\n return () => {\n window.removeEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n };\n }, [id]);\n\n useEffect(() => {\n if (!showLoading) {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n }\n }, [showLoading]);\n\n useEffect(() => {\n if (\n currentLanguage.id !== currentLanguageIdRef.current &&\n !isEmpty(treeGridInstanceRef.current)\n ) {\n treeGridInstanceRef.current?.Dispose();\n treeGridInstanceRef.current = null;\n currentLanguageIdRef.current = currentLanguage.id;\n }\n\n if (!isEmpty(treeGridInstanceRef.current)) {\n return;\n }\n\n bindTreeGridEvents({\n id,\n latestEventHandlersRef,\n layoutHasExplicitEnterModeRef,\n highlightEditableCellsRef,\n highlightChangedCellsRef,\n syncDeletedRowCanEditRef,\n editableCellBackgroundColorValueRef,\n changedCellBackgroundColorRef,\n selectedCellBackgroundColorRef,\n hoverCellBackgroundColorRef,\n changedCellBaselineRef,\n treeGridInstanceRef,\n treeGridInitStartedAtRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n hasAppliedInitialLayoutRef,\n syncHasDisplayDataRows,\n setIsTreeGridReady,\n });\n\n treeGridInitStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'init');\n logTreeGridPerf(id, 'TreeGrid init start', {\n useDataUrl: Boolean(useDataUrl),\n bodyRowCount: getTreeGridBodyDataCount(data),\n });\n\n window.TreeGrid(\n buildTreeGridInitializationOptions({\n id,\n layoutUrl,\n layoutData,\n dataUrl,\n bodyData: data,\n useDataUrl,\n width,\n height,\n languageId: currentLanguage.id,\n }),\n id,\n id,\n );\n\n return () => {\n delay(() => {\n treeGridInstanceRef.current?.Dispose();\n }, 200);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useLayoutEffect(() => {\n const treeGrid = treeGridInstanceRef.current;\n const nextLayoutOverrides = latestLayoutOverridesRef.current;\n const nextBodyData = latestBodyDataPropRef.current;\n\n if (isEmpty(treeGrid) || !isTreeGridReady) {\n return;\n }\n\n const shouldApplyLayoutOverrides =\n appliedLayoutOverridesRef.current !== nextLayoutOverrides &&\n !isEqual(appliedLayoutOverridesRef.current, nextLayoutOverrides);\n const shouldApplyBodyData =\n appliedBodyDataPropRef.current !== nextBodyData &&\n (!hasStagedBodyDataPropRef.current || stagedBodyDataPropRef.current !== nextBodyData);\n\n if (!shouldApplyLayoutOverrides && !shouldApplyBodyData) {\n return;\n }\n\n if (shouldApplyLayoutOverrides) {\n const layoutApplyStartedAt = getTreeGridPerfTimestamp();\n\n applyTreeGridLayoutToGrid(treeGrid, nextLayoutOverrides, shouldApplyBodyData);\n appliedLayoutOverridesRef.current = nextLayoutOverrides;\n measureTreeGridPerf(id, 'apply layout', layoutApplyStartedAt, {\n disableBodyReload: Boolean(shouldApplyBodyData),\n });\n }\n\n if (shouldApplyBodyData) {\n const reloadSequence = bodyReloadSequenceRef.current + 1;\n const runBodyReload = () => {\n const bodyDataToApply = stagedBodyDataPropRef.current;\n\n bodyReloadStartTimeoutRef.current = undefined;\n bodyReloadStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'reload');\n logTreeGridPerf(id, 'ReloadBody start', {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n\n replaceTreeGridBodyData(treeGrid, bodyDataToApply, () => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n appliedBodyDataPropRef.current = bodyDataToApply;\n changedCellBaselineRef.current = new WeakMap();\n captureTreeGridChangeBaselines(treeGrid, changedCellBaselineRef.current);\n syncHasDisplayDataRows(treeGrid);\n measureTreeGridPerf(id, 'ReloadBody end', bodyReloadStartedAtRef.current, {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n bodyReloadStartedAtRef.current = null;\n\n if (stagedBodyDataPropRef.current === bodyDataToApply) {\n stagedBodyDataPropRef.current = undefined;\n hasStagedBodyDataPropRef.current = false;\n }\n\n const startedAt = bindingLoadingStartedAtRef.current;\n\n if (!showLoading || startedAt === null) {\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n return;\n }\n\n const remainingVisibleTime = Math.max(\n 0,\n TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS - (Date.now() - startedAt),\n );\n\n clearBindingLoadingHideTimeout();\n\n if (remainingVisibleTime === 0) {\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n return;\n }\n\n bindingLoadingHideTimeoutRef.current = window.setTimeout(() => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n bindingLoadingHideTimeoutRef.current = undefined;\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n }, remainingVisibleTime);\n });\n };\n\n bodyReloadSequenceRef.current = reloadSequence;\n stagedBodyDataPropRef.current = nextBodyData;\n hasStagedBodyDataPropRef.current = true;\n\n if (showLoading && nextBodyData !== undefined) {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n bindingLoadingStartedAtRef.current = Date.now();\n setIsBindingLoadingVisible(true);\n bodyReloadStartTimeoutRef.current = window.setTimeout(() => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n runBodyReload();\n }, 0);\n } else {\n runBodyReload();\n }\n }\n\n }, [isTreeGridReady, layoutOverrides, data, showLoading, id]);\n\n useEffect(() => {\n return () => {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n };\n }, []);\n\n const resolvedContainerStyle: TreeGridThemeContainerStyle = createTreeGridThemeContainerStyle({\n width,\n height,\n treeGridTheme,\n gridThemeConfig: currentGridThemeConfig,\n containerStyle,\n tableBorderRadius: canUseTableRadius ? tableBorderRadius : undefined,\n });\n\n if (toolbarRowBackgroundColor !== undefined) {\n resolvedContainerStyle['--owp-tree-grid-toolbar-row-background-color'] =\n String(toolbarRowBackgroundColor);\n }\n\n if (showLoading || isNoDataVisible) {\n resolvedContainerStyle.position =\n containerStyle?.position && containerStyle.position !== 'static'\n ? containerStyle.position\n : 'relative';\n resolvedContainerStyle.isolation = 'isolate';\n }\n\n return (\n <div\n ref={treeGridContainerRef}\n className={[\n TREE_GRID_THEME_WRAPPER_CLASS,\n canUseTableRadius && TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n containerClassName,\n ]\n .filter(Boolean)\n .join(' ')}\n style={resolvedContainerStyle}\n >\n <GlobalStyles styles={treeGridThemeStyles} />\n <div id={id} className={className} style={omit(style, ['height', 'width'])} />\n <OwpTreeGridNoDataOverlay\n visible={isNoDataVisible}\n message={t('Message.조회된 결과가 없습니다.')}\n overlayFrame={overlayFrame}\n />\n <OwpTreeGridLoadingOverlay visible={isLoadingOverlayVisible} overlayFrame={overlayFrame} />\n {datePickerEditorElement}\n </div>\n );\n};\n\nexport { OwpTreeGrid };\n"],"names":["isVisibleTreeGridRow","__name","row","visible","isAddedTreeGridRow","added","isDisplayTreeGridRow","getTreeGridRows","grid","rows","captureTreeGridChangeBaselines","baselineMap","cols","col","getTreeGridCellComparableValue","isTreeGridChangedFlag","value","hasOtherTreeGridChangedCells","rowRecord","column","clearTreeGridCellChangedState","isTreeGridRowAddedById","resolveTreeGridCellBaselineValue","baselineValues","getTreeGridAddedRowBaselineValue","syncTreeGridChangedCellHighlightById","gridId","backgroundColor","baselineValue","currentValue","clearTreeGridCellHighlightById","removeTreeGridAddedRowHighlightColumn","highlightTreeGridCellById","appendTreeGridAddedRowHighlightColumn","OwpTreeGrid","id","containerStyle","containerClassName","toolbarRowBackgroundColor","className","style","height","width","canUseTableRadius","tableBorderRadius","layoutUrl","layoutData","dataUrl","layoutOverrides","data","useDataUrl","onSelect","onRowClick","onRowAdd","onRowDelete","onRowUndelete","onRowChange","onClickButton","onSave","onReady","onAfterValueChanged","datePickerEditor","highlightEditableCells","highlightChangedCells","syncDeletedRowCanEdit","confirmDeletedRowRemoval","loading","showLoading","t","useOwpTranslation","confirmDelete","useConfirm","currentSettings","useGetCurrentSettings","currentGridThemeConfig","_b","_a","treeGridInstanceRef","useRef","treeGridContainerRef","treeGridInitStartedAtRef","bodyReloadStartedAtRef","latestLayoutOverridesRef","latestBodyDataPropRef","layoutHasExplicitEnterModeRef","hasTreeGridExplicitEnterMode","handleBeforeRowUndelete","latestEventHandlersRef","stagedBodyDataPropRef","hasStagedBodyDataPropRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","hasAppliedInitialLayoutRef","bodyReloadSequenceRef","bindingLoadingStartedAtRef","bindingLoadingHideTimeoutRef","bodyReloadStartTimeoutRef","highlightEditableCellsRef","highlightChangedCellsRef","syncDeletedRowCanEditRef","isTreeGridReady","setIsTreeGridReady","useState","isBindingLoadingVisible","setIsBindingLoadingVisible","hasDisplayDataRows","setHasDisplayDataRows","currentLanguage","useGetCurrentLanguage","treeGridTheme","useMemo","resolveOwpGridTheme","editableCellBackgroundColorValueRef","resolveTreeGridColorNumber","TREEGRID_INPUT_CELL_COLOR","changedCellBackgroundColorRef","TREEGRID_CELL_HIGHLIGHT_COLOR","changedCellBaselineRef","selectedCellBackgroundColorRef","hoverCellBackgroundColorRef","currentLanguageIdRef","isPendingBodyReload","isLoadingOverlayVisible","isNoDataVisible","isEmpty","syncHasDisplayDataRows","hasTreeGridDisplayDataRows","handleDatePickerEditorValueChange","valueChangedHandler","datePickerEditorElement","handleDatePickerEditorButtonClick","handleDatePickerEditorCellClick","handleDatePickerEditorKeyDown","handleDatePickerEditorStartEdit","useOwpTreeGridDatePickerEditor","overlayFrame","useOwpTreeGridOverlayFrame","clearBindingLoadingHideTimeout","clearBodyReloadStartTimeout","useEffect","handleBodyRowsChanged","event","TREE_GRID_BODY_ROWS_CHANGED_EVENT","bindTreeGridEvents","getTreeGridPerfTimestamp","countTreeGridPerf","logTreeGridPerf","getTreeGridBodyDataCount","buildTreeGridInitializationOptions","delay","useLayoutEffect","treeGrid","nextLayoutOverrides","nextBodyData","shouldApplyLayoutOverrides","isEqual","shouldApplyBodyData","layoutApplyStartedAt","applyTreeGridLayoutToGrid","measureTreeGridPerf","reloadSequence","runBodyReload","bodyDataToApply","replaceTreeGridBodyData","startedAt","remainingVisibleTime","TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","resolvedContainerStyle","createTreeGridThemeContainerStyle","jsxs","TREE_GRID_THEME_WRAPPER_CLASS","TREE_GRID_THEME_TABLE_RADIUS_CLASS","jsx","GlobalStyles","treeGridThemeStyles","omit","OwpTreeGridNoDataOverlay","OwpTreeGridLoadingOverlay"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OwpTreeGrid.js","sources":["../../../src/components/OwpTreeGrid/OwpTreeGrid.tsx"],"sourcesContent":["import { resolveOwpGridTheme } from '@/constants/gridTheme';\nimport { DEFAULT_TABLE_RADIUS } from '@/constants/table';\nimport {\n resolveTreeGridColorNumber,\n TREEGRID_CELL_HIGHLIGHT_COLOR,\n TREEGRID_INPUT_CELL_COLOR,\n} from '@/constants/treeGrid';\nimport { useGetCurrentSettings } from '@/hooks/useOwpSettings';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { useGetCurrentLanguage } from '@/hooks/internal/useCurrentLanguage';\nimport { useConfirm } from '@/hooks/useConfirm';\nimport {\n TREE_GRID_BODY_ROWS_CHANGED_EVENT,\n type TreeGridBodyRowsChangedEventDetail,\n} from '@/utils/internal/treeGridBodyRowsEvent';\nimport {\n appendTreeGridAddedRowHighlightColumn,\n clearTreeGridCellHighlightById,\n getTreeGridAddedRowBaselineValue,\n getTreeGridCellComparableValue,\n highlightTreeGridCellById,\n isTreeGridRowAddedById,\n removeTreeGridAddedRowHighlightColumn,\n} from '@/utils/treeGridUtil';\nimport { delay, isEmpty, isEqual, omit } from 'es-toolkit/compat';\n// Temporary TreeGrid perf instrumentation import. Remove with ./internal/utils/perf after profiling is finished.\nimport {\n countTreeGridPerf,\n getTreeGridPerfTimestamp,\n logTreeGridPerf,\n measureTreeGridPerf,\n} from './internal/utils/perf';\nimport {\n type CSSProperties,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport { useOwpTreeGridDatePickerEditor } from './internal/hooks/useOwpTreeGridDatePickerEditor';\nimport { useOwpTreeGridOverlayFrame } from './internal/hooks/useOwpTreeGridOverlayFrame';\nimport {\n bindTreeGridEvents,\n buildTreeGridInitializationOptions,\n getTreeGridBodyDataCount,\n hasTreeGridExplicitEnterMode,\n hasTreeGridDisplayDataRows,\n replaceTreeGridBodyData,\n TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS,\n type TreeGridEventHandlers,\n} from './internal/treeGridRuntime';\nimport { applyTreeGridLayoutToGrid } from './internal/treeGridLayout';\nimport { OwpTreeGridLoadingOverlay } from './internal/OwpTreeGridLoadingOverlay';\nimport { OwpTreeGridNoDataOverlay } from './internal/OwpTreeGridNoDataOverlay';\nimport {\n createTreeGridThemeContainerStyle,\n TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n TREE_GRID_THEME_WRAPPER_CLASS,\n treeGridThemeStyles,\n type TreeGridThemeContainerStyle,\n} from './internal/treeGridTheme';\n\ntype TreeGridLayoutScalarValue = string | number;\ntype TreeGridNestedLayoutFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridLayoutFields = Record<string, TreeGridLayoutScalarValue | TreeGridNestedLayoutFields>;\ntype TreeGridSectionFields = Record<string, TreeGridLayoutScalarValue>;\ntype TreeGridCellBaselineMap = WeakMap<TRow, Map<string, string>>;\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\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\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\nconst getTreeGridRows = (grid: TGrid) => {\n if (typeof grid.GetFirst === 'function' && typeof grid.GetNext === 'function') {\n const rows: TRow[] = [];\n let row = grid.GetFirst();\n\n while (row) {\n rows.push(row);\n row = grid.GetNext(row);\n }\n\n return rows;\n }\n\n return Object.values(grid.Rows ?? {});\n};\n\nconst captureTreeGridChangeBaselines = (\n grid: TGrid | null | undefined,\n baselineMap: TreeGridCellBaselineMap,\n) => {\n if (!grid) {\n return;\n }\n\n const cols = Object.keys(grid.Cols ?? {}).filter(Boolean);\n\n getTreeGridRows(grid).forEach((row) => {\n if (!isDisplayTreeGridRow(row)) {\n return;\n }\n\n baselineMap.set(\n row,\n new Map(cols.map((col) => [col, getTreeGridCellComparableValue(grid, row, col)])),\n );\n });\n};\n\nconst isTreeGridChangedFlag = (value: unknown) =>\n value !== undefined &&\n value !== null &&\n value !== '' &&\n value !== 0 &&\n value !== false &&\n value !== '0';\n\nconst hasOtherTreeGridChangedCells = (grid: TGrid, row: TRow, col: string) => {\n const rowRecord = row as unknown as Record<string, unknown>;\n\n return Object.keys(grid.Cols ?? {}).some((column) => {\n return column !== col && isTreeGridChangedFlag(rowRecord[`${column}Changed`]);\n });\n};\n\nconst clearTreeGridCellChangedState = (grid: TGrid, row: TRow, col: string) => {\n const rowRecord = row as unknown as Record<string, unknown>;\n\n rowRecord[`${col}Changed`] = 0;\n\n if (!isTreeGridRowAddedById(row) && !hasOtherTreeGridChangedCells(grid, row, col)) {\n rowRecord.Changed = 0;\n }\n};\n\nconst resolveTreeGridCellBaselineValue = (\n baselineMap: TreeGridCellBaselineMap,\n row: TRow,\n col: string,\n) => {\n const baselineValues = baselineMap.get(row);\n\n if (baselineValues?.has(col)) {\n return baselineValues.get(col);\n }\n\n if (isTreeGridRowAddedById(row)) {\n return getTreeGridAddedRowBaselineValue(row, col) ?? '';\n }\n\n return undefined;\n};\n\nconst syncTreeGridChangedCellHighlightById = ({\n gridId,\n grid,\n row,\n col,\n backgroundColor,\n baselineMap,\n}: {\n gridId: string;\n grid: TGrid;\n row: TRow;\n col: string;\n backgroundColor: string;\n baselineMap: TreeGridCellBaselineMap;\n}) => {\n if (!isDisplayTreeGridRow(row)) {\n return;\n }\n\n const baselineValue = resolveTreeGridCellBaselineValue(baselineMap, row, col);\n const currentValue = getTreeGridCellComparableValue(grid, row, col);\n\n if (baselineValue !== undefined && currentValue === baselineValue) {\n clearTreeGridCellHighlightById(gridId, { row, col });\n clearTreeGridCellChangedState(grid, row, col);\n\n if (isTreeGridRowAddedById(row)) {\n removeTreeGridAddedRowHighlightColumn(row, col);\n }\n\n return;\n }\n\n highlightTreeGridCellById(gridId, {\n row,\n col,\n backgroundColor,\n });\n\n if (isTreeGridRowAddedById(row)) {\n appendTreeGridAddedRowHighlightColumn(row, col);\n }\n};\n\nexport interface OwpTreeGridLayout {\n Header?: TreeGridLayoutFields;\n Toolbar?: TreeGridSectionFields;\n Foot?: TreeGridSectionFields;\n}\n\nexport type OwpTreeGridLayoutConfig = OwpTreeGridLayout;\nexport type THeader = OwpTreeGridLayoutConfig;\nexport type OwpTreeGridBodyData<T> = Record<string, never> | [] | undefined | T[];\nexport type OwpTreeGridData<T> = OwpTreeGridBodyData<T>;\nexport type TData<T> = OwpTreeGridBodyData<T>;\nexport type OwpTreeGridRowModel<T> = TRow & T;\nexport type OwpTreeGridSelectedRows<T> = OwpTreeGridRowModel<T>[];\n\nexport interface OwpTreeGridDatePickerEditorColumnOption {\n baseYear?: string;\n baseYearMonth?: string;\n}\n\nexport interface OwpTreeGridDatePickerEditorConfig {\n enabled?: boolean;\n columns?: readonly string[];\n allowInput?: boolean;\n columnOptions?: Record<string, OwpTreeGridDatePickerEditorColumnOption>;\n showTimeInput?: boolean;\n showTimeSelect?: boolean;\n timeIntervals?: number;\n}\n\ntype OwpTreeGridSelectHandler<T> = (selectedRows: OwpTreeGridSelectedRows<T>) => void;\ntype OwpTreeGridRowAddHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridRowDeleteHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n deleteType: number,\n) => void;\ntype OwpTreeGridRowUndeleteHandler<T> = (grid: TGrid, row: OwpTreeGridRowModel<T>) => void;\ntype OwpTreeGridButtonClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n event: Event,\n) => void;\ntype OwpTreeGridRowClickHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n x: number,\n y: number,\n event: Event,\n) => void;\ntype OwpTreeGridSaveHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n autoupdate: boolean | number,\n) => void;\ntype OwpTreeGridCellValue = unknown;\ntype OwpTreeGridAfterValueChangedHandler<T> = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: OwpTreeGridCellValue,\n) => void;\n\nexport interface OwpTreeGridProps<T> {\n id: string;\n className?: string;\n containerStyle?: CSSProperties;\n containerClassName?: string;\n toolbarRowBackgroundColor?: CSSProperties['backgroundColor'];\n layoutUrl?: string;\n layoutData?: string;\n dataUrl?: string;\n layoutOverrides?: OwpTreeGridLayoutConfig;\n data?: OwpTreeGridBodyData<T>;\n style?: CSSProperties;\n height?: string | number;\n width?: string | number;\n canUseTableRadius?: boolean;\n tableBorderRadius?: string | number;\n useDataUrl?: boolean;\n onSelect?: OwpTreeGridSelectHandler<T>;\n onRowAdd?: OwpTreeGridRowAddHandler<T>;\n onRowDelete?: OwpTreeGridRowDeleteHandler<T>;\n onRowUndelete?: OwpTreeGridRowUndeleteHandler<T>;\n onRowChange?: OwpTreeGridAfterValueChangedHandler<T>;\n onClickButton?: OwpTreeGridButtonClickHandler<T>;\n onReady?: (grid: TGrid) => void;\n onRowClick?: OwpTreeGridRowClickHandler<T>;\n onSave?: OwpTreeGridSaveHandler<T>;\n onAfterValueChanged?: OwpTreeGridAfterValueChangedHandler<T>;\n datePickerEditor?: OwpTreeGridDatePickerEditorConfig;\n highlightEditableCells?: boolean;\n highlightChangedCells?: boolean;\n syncDeletedRowCanEdit?: boolean;\n confirmDeletedRowRemoval?: boolean;\n loading?: boolean;\n showLoading?: boolean;\n}\n\n/**\n * OwpTreeGrid 컴포넌트\n * @param id 식별자\n * @param containerStyle containerStyle 값\n * @param containerClassName containerClassName 값\n * @param toolbarRowBackgroundColor 하단 Toolbar row 배경색\n * @param className CSS 클래스명\n * @param style 스타일 객체\n * @param height height 값\n * @param canUseTableRadius TreeGrid 내부 테이블 radius 사용 여부\n * @param tableBorderRadius TreeGrid 내부 테이블 radius 값\n */\nconst OwpTreeGrid = <T,>({\n id = 'treeGridWrapper',\n containerStyle,\n containerClassName,\n toolbarRowBackgroundColor,\n className,\n style,\n height = '100%',\n width = '100%',\n canUseTableRadius = false,\n tableBorderRadius = DEFAULT_TABLE_RADIUS,\n layoutUrl,\n layoutData,\n dataUrl,\n layoutOverrides,\n data,\n useDataUrl,\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n datePickerEditor,\n highlightEditableCells = true,\n highlightChangedCells = true,\n syncDeletedRowCanEdit = true,\n confirmDeletedRowRemoval = true,\n loading,\n showLoading = true,\n}: OwpTreeGridProps<T>) => {\n const { t } = useOwpTranslation();\n const { confirmDelete } = useConfirm();\n const currentSettings = useGetCurrentSettings();\n const currentGridThemeConfig = currentSettings?.theme?.main?.grid;\n const treeGridInstanceRef = useRef<TGrid>(null);\n const treeGridContainerRef = useRef<HTMLDivElement | null>(null);\n const treeGridInitStartedAtRef = useRef<number | null>(null);\n const bodyReloadStartedAtRef = useRef<number | null>(null);\n const latestLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(layoutOverrides);\n const latestBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(data);\n const layoutHasExplicitEnterModeRef = useRef(hasTreeGridExplicitEnterMode(layoutData));\n const handleBeforeRowUndelete = confirmDeletedRowRemoval\n ? async () => {\n const confirmed = await confirmDelete({\n title: t('Message.삭제된 항목을 완전히 삭제하시겠습니까?'),\n description: t('Message.취소하면 삭제 상태가 해제됩니다.'),\n okText: t('Button.완전 삭제'),\n });\n\n return confirmed ? 'remove' : 'undelete';\n }\n : undefined;\n const latestEventHandlersRef = useRef<TreeGridEventHandlers<T>>({\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n });\n const stagedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasStagedBodyDataPropRef = useRef(false);\n const appliedLayoutOverridesRef = useRef<OwpTreeGridLayoutConfig | undefined>(undefined);\n const appliedBodyDataPropRef = useRef<OwpTreeGridBodyData<T>>(undefined);\n const hasAppliedInitialLayoutRef = useRef(false);\n const bodyReloadSequenceRef = useRef(0);\n const bindingLoadingStartedAtRef = useRef<number | null>(null);\n const bindingLoadingHideTimeoutRef = useRef<number | undefined>(undefined);\n const bodyReloadStartTimeoutRef = useRef<number | undefined>(undefined);\n const highlightEditableCellsRef = useRef(highlightEditableCells);\n const highlightChangedCellsRef = useRef(highlightChangedCells);\n const syncDeletedRowCanEditRef = useRef(syncDeletedRowCanEdit);\n const [isTreeGridReady, setIsTreeGridReady] = useState(false);\n const [isBindingLoadingVisible, setIsBindingLoadingVisible] = useState(false);\n const [hasDisplayDataRows, setHasDisplayDataRows] = useState(false);\n const currentLanguage = useGetCurrentLanguage();\n const treeGridTheme = useMemo(\n () => resolveOwpGridTheme(currentGridThemeConfig),\n [currentGridThemeConfig],\n );\n const editableCellBackgroundColorValueRef = useRef(\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR),\n );\n const changedCellBackgroundColorRef = useRef(\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR,\n );\n const changedCellBaselineRef = useRef<TreeGridCellBaselineMap>(new WeakMap());\n const selectedCellBackgroundColorRef = useRef(treeGridTheme.state.selectedCellBackgroundColor);\n const hoverCellBackgroundColorRef = useRef(treeGridTheme.state.hoverCellBackgroundColor);\n const currentLanguageIdRef = useRef(currentLanguage.id);\n const isPendingBodyReload =\n showLoading &&\n data !== undefined &&\n isTreeGridReady &&\n appliedBodyDataPropRef.current !== data;\n const isInternalLoadingVisible = showLoading && (isBindingLoadingVisible || isPendingBodyReload);\n const isLoadingOverlayVisible = (showLoading && loading === true) || isInternalLoadingVisible;\n const isNoDataVisible =\n !isLoadingOverlayVisible && data !== undefined && isEmpty(data) && !hasDisplayDataRows;\n\n const syncHasDisplayDataRows = (grid: TGrid | null) => {\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(grid));\n };\n const handleDatePickerEditorValueChange = (\n grid: TGrid,\n row: OwpTreeGridRowModel<T>,\n col: string,\n value: unknown,\n ) => {\n if (highlightChangedCellsRef.current && row.Fixed !== 'Foot') {\n syncTreeGridChangedCellHighlightById({\n gridId: id,\n grid,\n row,\n col,\n backgroundColor: changedCellBackgroundColorRef.current,\n baselineMap: changedCellBaselineRef.current,\n });\n }\n\n const valueChangedHandler =\n latestEventHandlersRef.current?.onAfterValueChanged ??\n latestEventHandlersRef.current?.onRowChange;\n\n valueChangedHandler?.(grid, row, col, value);\n };\n\n latestLayoutOverridesRef.current = layoutOverrides;\n latestBodyDataPropRef.current = data;\n layoutHasExplicitEnterModeRef.current = hasTreeGridExplicitEnterMode(layoutData);\n highlightEditableCellsRef.current = highlightEditableCells;\n highlightChangedCellsRef.current = highlightChangedCells;\n syncDeletedRowCanEditRef.current = syncDeletedRowCanEdit;\n editableCellBackgroundColorValueRef.current =\n resolveTreeGridColorNumber(treeGridTheme.editable.backgroundColor) ??\n resolveTreeGridColorNumber(TREEGRID_INPUT_CELL_COLOR);\n changedCellBackgroundColorRef.current =\n treeGridTheme.changed.backgroundColor ?? TREEGRID_CELL_HIGHLIGHT_COLOR;\n selectedCellBackgroundColorRef.current = treeGridTheme.state.selectedCellBackgroundColor;\n hoverCellBackgroundColorRef.current = treeGridTheme.state.hoverCellBackgroundColor;\n const {\n datePickerEditorElement,\n handleDatePickerEditorButtonClick,\n handleDatePickerEditorCellClick,\n handleDatePickerEditorKeyDown,\n handleDatePickerEditorStartEdit,\n } =\n useOwpTreeGridDatePickerEditor({\n config: datePickerEditor,\n treeGridInstanceRef,\n isTreeGridReady,\n onValueChange: handleDatePickerEditorValueChange,\n });\n latestEventHandlersRef.current = {\n onSelect,\n onRowClick,\n onRowAdd,\n onRowDelete,\n onBeforeRowUndelete: handleBeforeRowUndelete,\n onRowUndelete,\n onRowChange,\n onClickButton,\n onSave,\n onReady,\n onAfterValueChanged,\n onInternalButtonClick: handleDatePickerEditorButtonClick,\n onInternalCellClick: handleDatePickerEditorCellClick,\n onInternalKeyDown: handleDatePickerEditorKeyDown,\n onInternalStartEdit: handleDatePickerEditorStartEdit,\n };\n\n const overlayFrame = useOwpTreeGridOverlayFrame({\n visible: isLoadingOverlayVisible || isNoDataVisible,\n containerRef: treeGridContainerRef,\n treeGridInstanceRef,\n debugId: id,\n });\n\n const clearBindingLoadingHideTimeout = () => {\n if (bindingLoadingHideTimeoutRef.current !== undefined) {\n window.clearTimeout(bindingLoadingHideTimeoutRef.current);\n bindingLoadingHideTimeoutRef.current = undefined;\n }\n };\n\n const clearBodyReloadStartTimeout = () => {\n if (bodyReloadStartTimeoutRef.current !== undefined) {\n window.clearTimeout(bodyReloadStartTimeoutRef.current);\n bodyReloadStartTimeoutRef.current = undefined;\n }\n };\n\n useEffect(() => {\n const handleBodyRowsChanged = (event: Event) => {\n const customEvent = event as CustomEvent<TreeGridBodyRowsChangedEventDetail>;\n\n if (customEvent.detail?.gridId !== id) {\n return;\n }\n\n setHasDisplayDataRows(hasTreeGridDisplayDataRows(treeGridInstanceRef.current));\n };\n\n window.addEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n\n return () => {\n window.removeEventListener(TREE_GRID_BODY_ROWS_CHANGED_EVENT, handleBodyRowsChanged);\n };\n }, [id]);\n\n useEffect(() => {\n if (!showLoading) {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n }\n }, [showLoading]);\n\n useEffect(() => {\n if (\n currentLanguage.id !== currentLanguageIdRef.current &&\n !isEmpty(treeGridInstanceRef.current)\n ) {\n treeGridInstanceRef.current?.Dispose();\n treeGridInstanceRef.current = null;\n currentLanguageIdRef.current = currentLanguage.id;\n }\n\n if (!isEmpty(treeGridInstanceRef.current)) {\n return;\n }\n\n bindTreeGridEvents({\n id,\n latestEventHandlersRef,\n layoutHasExplicitEnterModeRef,\n highlightEditableCellsRef,\n highlightChangedCellsRef,\n syncDeletedRowCanEditRef,\n editableCellBackgroundColorValueRef,\n changedCellBackgroundColorRef,\n selectedCellBackgroundColorRef,\n hoverCellBackgroundColorRef,\n changedCellBaselineRef,\n treeGridInstanceRef,\n treeGridInitStartedAtRef,\n latestLayoutOverridesRef,\n appliedLayoutOverridesRef,\n appliedBodyDataPropRef,\n hasAppliedInitialLayoutRef,\n syncHasDisplayDataRows,\n setIsTreeGridReady,\n });\n\n treeGridInitStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'init');\n logTreeGridPerf(id, 'TreeGrid init start', {\n useDataUrl: Boolean(useDataUrl),\n bodyRowCount: getTreeGridBodyDataCount(data),\n });\n\n window.TreeGrid(\n buildTreeGridInitializationOptions({\n id,\n layoutUrl,\n layoutData,\n dataUrl,\n bodyData: data,\n useDataUrl,\n width,\n height,\n languageId: currentLanguage.id,\n }),\n id,\n id,\n );\n\n return () => {\n delay(() => {\n treeGridInstanceRef.current?.Dispose();\n }, 200);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useLayoutEffect(() => {\n const treeGrid = treeGridInstanceRef.current;\n const nextLayoutOverrides = latestLayoutOverridesRef.current;\n const nextBodyData = latestBodyDataPropRef.current;\n\n if (isEmpty(treeGrid) || !isTreeGridReady) {\n return;\n }\n\n const shouldApplyLayoutOverrides =\n appliedLayoutOverridesRef.current !== nextLayoutOverrides &&\n !isEqual(appliedLayoutOverridesRef.current, nextLayoutOverrides);\n const shouldApplyBodyData =\n appliedBodyDataPropRef.current !== nextBodyData &&\n (!hasStagedBodyDataPropRef.current || stagedBodyDataPropRef.current !== nextBodyData);\n\n if (!shouldApplyLayoutOverrides && !shouldApplyBodyData) {\n return;\n }\n\n if (shouldApplyLayoutOverrides) {\n const layoutApplyStartedAt = getTreeGridPerfTimestamp();\n\n applyTreeGridLayoutToGrid(treeGrid, nextLayoutOverrides, shouldApplyBodyData);\n appliedLayoutOverridesRef.current = nextLayoutOverrides;\n measureTreeGridPerf(id, 'apply layout', layoutApplyStartedAt, {\n disableBodyReload: Boolean(shouldApplyBodyData),\n });\n }\n\n if (shouldApplyBodyData) {\n const reloadSequence = bodyReloadSequenceRef.current + 1;\n const runBodyReload = () => {\n const bodyDataToApply = stagedBodyDataPropRef.current;\n\n bodyReloadStartTimeoutRef.current = undefined;\n bodyReloadStartedAtRef.current = getTreeGridPerfTimestamp();\n countTreeGridPerf(id, 'reload');\n logTreeGridPerf(id, 'ReloadBody start', {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n\n replaceTreeGridBodyData(treeGrid, bodyDataToApply, () => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n appliedBodyDataPropRef.current = bodyDataToApply;\n changedCellBaselineRef.current = new WeakMap();\n captureTreeGridChangeBaselines(treeGrid, changedCellBaselineRef.current);\n syncHasDisplayDataRows(treeGrid);\n measureTreeGridPerf(id, 'ReloadBody end', bodyReloadStartedAtRef.current, {\n bodyRowCount: getTreeGridBodyDataCount(bodyDataToApply),\n });\n bodyReloadStartedAtRef.current = null;\n\n if (stagedBodyDataPropRef.current === bodyDataToApply) {\n stagedBodyDataPropRef.current = undefined;\n hasStagedBodyDataPropRef.current = false;\n }\n\n const startedAt = bindingLoadingStartedAtRef.current;\n\n if (!showLoading || startedAt === null) {\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n return;\n }\n\n const remainingVisibleTime = Math.max(\n 0,\n TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS - (Date.now() - startedAt),\n );\n\n clearBindingLoadingHideTimeout();\n\n if (remainingVisibleTime === 0) {\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n return;\n }\n\n bindingLoadingHideTimeoutRef.current = window.setTimeout(() => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n bindingLoadingHideTimeoutRef.current = undefined;\n bindingLoadingStartedAtRef.current = null;\n setIsBindingLoadingVisible(false);\n }, remainingVisibleTime);\n });\n };\n\n bodyReloadSequenceRef.current = reloadSequence;\n stagedBodyDataPropRef.current = nextBodyData;\n hasStagedBodyDataPropRef.current = true;\n\n if (showLoading && nextBodyData !== undefined) {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n bindingLoadingStartedAtRef.current = Date.now();\n setIsBindingLoadingVisible(true);\n bodyReloadStartTimeoutRef.current = window.setTimeout(() => {\n if (bodyReloadSequenceRef.current !== reloadSequence) {\n return;\n }\n\n runBodyReload();\n }, 0);\n } else {\n runBodyReload();\n }\n }\n\n }, [isTreeGridReady, layoutOverrides, data, showLoading, id]);\n\n useEffect(() => {\n return () => {\n clearBodyReloadStartTimeout();\n clearBindingLoadingHideTimeout();\n };\n }, []);\n\n const resolvedContainerStyle: TreeGridThemeContainerStyle = createTreeGridThemeContainerStyle({\n width,\n height,\n treeGridTheme,\n gridThemeConfig: currentGridThemeConfig,\n containerStyle,\n tableBorderRadius: canUseTableRadius ? tableBorderRadius : undefined,\n });\n\n if (toolbarRowBackgroundColor !== undefined) {\n resolvedContainerStyle['--owp-tree-grid-toolbar-row-background-color'] =\n String(toolbarRowBackgroundColor);\n }\n\n if (showLoading || isNoDataVisible) {\n resolvedContainerStyle.position =\n containerStyle?.position && containerStyle.position !== 'static'\n ? containerStyle.position\n : 'relative';\n resolvedContainerStyle.isolation = 'isolate';\n }\n\n return (\n <div\n ref={treeGridContainerRef}\n className={[\n TREE_GRID_THEME_WRAPPER_CLASS,\n canUseTableRadius && TREE_GRID_THEME_TABLE_RADIUS_CLASS,\n containerClassName,\n ]\n .filter(Boolean)\n .join(' ')}\n style={resolvedContainerStyle}\n >\n <GlobalStyles styles={treeGridThemeStyles} />\n <div id={id} className={className} style={omit(style, ['height', 'width'])} />\n <OwpTreeGridNoDataOverlay\n visible={isNoDataVisible}\n message={t('Message.조회된 결과가 없습니다.')}\n overlayFrame={overlayFrame}\n />\n <OwpTreeGridLoadingOverlay visible={isLoadingOverlayVisible} overlayFrame={overlayFrame} />\n {datePickerEditorElement}\n </div>\n );\n};\n\nexport { OwpTreeGrid };\n"],"names":["isVisibleTreeGridRow","__name","row","visible","isAddedTreeGridRow","added","isDisplayTreeGridRow","getTreeGridRows","grid","rows","captureTreeGridChangeBaselines","baselineMap","cols","col","getTreeGridCellComparableValue","isTreeGridChangedFlag","value","hasOtherTreeGridChangedCells","rowRecord","column","clearTreeGridCellChangedState","isTreeGridRowAddedById","resolveTreeGridCellBaselineValue","baselineValues","getTreeGridAddedRowBaselineValue","syncTreeGridChangedCellHighlightById","gridId","backgroundColor","baselineValue","currentValue","clearTreeGridCellHighlightById","removeTreeGridAddedRowHighlightColumn","highlightTreeGridCellById","appendTreeGridAddedRowHighlightColumn","OwpTreeGrid","id","containerStyle","containerClassName","toolbarRowBackgroundColor","className","style","height","width","canUseTableRadius","tableBorderRadius","DEFAULT_TABLE_RADIUS","layoutUrl","layoutData","dataUrl","layoutOverrides","data","useDataUrl","onSelect","onRowClick","onRowAdd","onRowDelete","onRowUndelete","onRowChange","onClickButton","onSave","onReady","onAfterValueChanged","datePickerEditor","highlightEditableCells","highlightChangedCells","syncDeletedRowCanEdit","confirmDeletedRowRemoval","loading","showLoading","t","useOwpTranslation","confirmDelete","useConfirm","currentSettings","useGetCurrentSettings","currentGridThemeConfig","_b","_a","treeGridInstanceRef","useRef","treeGridContainerRef","treeGridInitStartedAtRef","bodyReloadStartedAtRef","latestLayoutOverridesRef","latestBodyDataPropRef","layoutHasExplicitEnterModeRef","hasTreeGridExplicitEnterMode","handleBeforeRowUndelete","latestEventHandlersRef","stagedBodyDataPropRef","hasStagedBodyDataPropRef","appliedLayoutOverridesRef","appliedBodyDataPropRef","hasAppliedInitialLayoutRef","bodyReloadSequenceRef","bindingLoadingStartedAtRef","bindingLoadingHideTimeoutRef","bodyReloadStartTimeoutRef","highlightEditableCellsRef","highlightChangedCellsRef","syncDeletedRowCanEditRef","isTreeGridReady","setIsTreeGridReady","useState","isBindingLoadingVisible","setIsBindingLoadingVisible","hasDisplayDataRows","setHasDisplayDataRows","currentLanguage","useGetCurrentLanguage","treeGridTheme","useMemo","resolveOwpGridTheme","editableCellBackgroundColorValueRef","resolveTreeGridColorNumber","TREEGRID_INPUT_CELL_COLOR","changedCellBackgroundColorRef","TREEGRID_CELL_HIGHLIGHT_COLOR","changedCellBaselineRef","selectedCellBackgroundColorRef","hoverCellBackgroundColorRef","currentLanguageIdRef","isPendingBodyReload","isLoadingOverlayVisible","isNoDataVisible","isEmpty","syncHasDisplayDataRows","hasTreeGridDisplayDataRows","handleDatePickerEditorValueChange","valueChangedHandler","datePickerEditorElement","handleDatePickerEditorButtonClick","handleDatePickerEditorCellClick","handleDatePickerEditorKeyDown","handleDatePickerEditorStartEdit","useOwpTreeGridDatePickerEditor","overlayFrame","useOwpTreeGridOverlayFrame","clearBindingLoadingHideTimeout","clearBodyReloadStartTimeout","useEffect","handleBodyRowsChanged","event","TREE_GRID_BODY_ROWS_CHANGED_EVENT","bindTreeGridEvents","getTreeGridPerfTimestamp","countTreeGridPerf","logTreeGridPerf","getTreeGridBodyDataCount","buildTreeGridInitializationOptions","delay","useLayoutEffect","treeGrid","nextLayoutOverrides","nextBodyData","shouldApplyLayoutOverrides","isEqual","shouldApplyBodyData","layoutApplyStartedAt","applyTreeGridLayoutToGrid","measureTreeGridPerf","reloadSequence","runBodyReload","bodyDataToApply","replaceTreeGridBodyData","startedAt","remainingVisibleTime","TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS","resolvedContainerStyle","createTreeGridThemeContainerStyle","jsxs","TREE_GRID_THEME_WRAPPER_CLASS","TREE_GRID_THEME_TABLE_RADIUS_CLASS","jsx","GlobalStyles","treeGridThemeStyles","omit","OwpTreeGridNoDataOverlay","OwpTreeGridLoadingOverlay"],"mappings":"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"}
|