@owp/core 2.2.6 → 2.3.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.
Files changed (135) hide show
  1. package/dist/_virtual/index5.js +5 -2
  2. package/dist/_virtual/index5.js.map +1 -1
  3. package/dist/_virtual/index6.js +2 -5
  4. package/dist/_virtual/index6.js.map +1 -1
  5. package/dist/_virtual/index7.js +2 -2
  6. package/dist/components/OwpDialog/OwpDialog.js +30 -32
  7. package/dist/components/OwpDialog/OwpDialog.js.map +1 -1
  8. package/dist/components/OwpLayout/OwpLayout.js +29 -30
  9. package/dist/components/OwpLayout/OwpLayout.js.map +1 -1
  10. package/dist/components/OwpMrtTable/OwpMrtTable.js +393 -255
  11. package/dist/components/OwpMrtTable/OwpMrtTable.js.map +1 -1
  12. package/dist/components/OwpScrollbars/OwpScrollbars.js +16 -17
  13. package/dist/components/OwpScrollbars/OwpScrollbars.js.map +1 -1
  14. package/dist/components/OwpStyleProvider/OwpStyleProvider.js +28 -29
  15. package/dist/components/OwpStyleProvider/OwpStyleProvider.js.map +1 -1
  16. package/dist/components/OwpTable/OwpDataTable.js +45 -45
  17. package/dist/components/OwpTable/OwpDataTable.js.map +1 -1
  18. package/dist/components/OwpTable/OwpTable.js +6 -6
  19. package/dist/components/OwpTable/OwpTable.js.map +1 -1
  20. package/dist/components/OwpTable/OwpVerticalTable.js +55 -53
  21. package/dist/components/OwpTable/OwpVerticalTable.js.map +1 -1
  22. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +80 -74
  23. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
  24. package/dist/constants/storageKeys.js +1 -0
  25. package/dist/constants/storageKeys.js.map +1 -1
  26. package/dist/contexts/OwpCoreProvider.js +22 -36
  27. package/dist/contexts/OwpCoreProvider.js.map +1 -1
  28. package/dist/contexts/OwpStoreProvider.js +9 -9
  29. package/dist/contexts/OwpStoreProvider.js.map +1 -1
  30. package/dist/hooks/useCurrentUserSeq.js +11 -0
  31. package/dist/hooks/useCurrentUserSeq.js.map +1 -0
  32. package/dist/hooks/useNavbar.js +24 -0
  33. package/dist/hooks/useNavbar.js.map +1 -0
  34. package/dist/hooks/useOwpSettings.js +21 -0
  35. package/dist/hooks/useOwpSettings.js.map +1 -0
  36. package/dist/hooks.js +78 -62
  37. package/dist/hooks.js.map +1 -1
  38. package/dist/index.js +58 -59
  39. package/dist/layout/Layout.js +28 -29
  40. package/dist/layout/Layout.js.map +1 -1
  41. package/dist/layout/components/layouts/FooterLayout.js +15 -16
  42. package/dist/layout/components/layouts/FooterLayout.js.map +1 -1
  43. package/dist/layout/components/layouts/NavbarToggleFabLayout.js +21 -18
  44. package/dist/layout/components/layouts/NavbarToggleFabLayout.js.map +1 -1
  45. package/dist/layout/components/layouts/NavbarWrapperLayout.js +20 -21
  46. package/dist/layout/components/layouts/NavbarWrapperLayout.js.map +1 -1
  47. package/dist/layout/components/navbar/NavbarPinToggleButton.js +10 -11
  48. package/dist/layout/components/navbar/NavbarPinToggleButton.js.map +1 -1
  49. package/dist/layout/components/navbar/NavbarToggleButton.js +31 -32
  50. package/dist/layout/components/navbar/NavbarToggleButton.js.map +1 -1
  51. package/dist/layout/components/navbar/style/NavbarStyle.js +36 -37
  52. package/dist/layout/components/navbar/style/NavbarStyle.js.map +1 -1
  53. package/dist/layout/components/navbar/style/NavbarStyleContent.js +29 -30
  54. package/dist/layout/components/navbar/style/NavbarStyleContent.js.map +1 -1
  55. package/dist/layout/components/navigation/Navigation.js +18 -22
  56. package/dist/layout/components/navigation/Navigation.js.map +1 -1
  57. package/dist/layout/components/toggles/NavigationSearchToggle.js +55 -60
  58. package/dist/layout/components/toggles/NavigationSearchToggle.js.map +1 -1
  59. package/dist/layout/components/toggles/NavigationShortcutsToggle.js +44 -49
  60. package/dist/layout/components/toggles/NavigationShortcutsToggle.js.map +1 -1
  61. package/dist/layout/components/toolbar/ToolbarLayout.js +26 -27
  62. package/dist/layout/components/toolbar/ToolbarLayout.js.map +1 -1
  63. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  64. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
  65. package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
  66. package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/mixin.js +1 -1
  67. package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
  68. 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
  69. package/dist/owp-app.css +1 -1
  70. package/dist/store/atoms/navbarAtoms.js +84 -0
  71. package/dist/store/atoms/navbarAtoms.js.map +1 -0
  72. package/dist/store/atoms/owpSettingsAtoms.js +140 -0
  73. package/dist/store/atoms/owpSettingsAtoms.js.map +1 -0
  74. package/dist/store/atoms/owpStore.js +29 -0
  75. package/dist/store/atoms/owpStore.js.map +1 -0
  76. package/dist/store.js +44 -39
  77. package/dist/store.js.map +1 -1
  78. package/dist/types/components/OwpDialog/OwpDialog.d.ts +1 -9
  79. package/dist/types/components/OwpMrtTable/OwpMrtTable.d.ts +9 -0
  80. package/dist/types/components/OwpPicker/internal/DatePickerInput.d.ts +1 -1
  81. package/dist/types/components/OwpTable/OwpTable.d.ts +1 -1
  82. package/dist/types/components/OwpTable/OwpVerticalTable.d.ts +3 -1
  83. package/dist/types/components/OwpTabs/OwpTab.d.ts +1 -1
  84. package/dist/types/components/OwpTabs/OwpTabs.d.ts +1 -1
  85. package/dist/types/constants/storageKeys.d.ts +1 -0
  86. package/dist/types/contexts/OwpCoreProvider.d.ts +2 -2
  87. package/dist/types/contexts/OwpStoreProvider.d.ts +4 -4
  88. package/dist/types/hooks/index.d.ts +3 -1
  89. package/dist/types/hooks/useCurrentUserSeq.d.ts +8 -0
  90. package/dist/types/hooks/useNavbar.d.ts +19 -0
  91. package/dist/types/hooks/useOwpSettings.d.ts +79 -0
  92. package/dist/types/layout/components/navigation/Navigation.d.ts +6 -2
  93. package/dist/types/layout/components/toggles/NavigationSearchToggle.d.ts +5 -2
  94. package/dist/types/layout/components/toggles/NavigationShortcutsToggle.d.ts +5 -2
  95. package/dist/types/store/atoms/index.d.ts +3 -0
  96. package/dist/types/store/atoms/internal/types.d.ts +29 -0
  97. package/dist/types/store/atoms/navbarAtoms.d.ts +48 -0
  98. package/dist/types/store/atoms/owpSettingsAtoms.d.ts +89 -0
  99. package/dist/types/store/atoms/owpStore.d.ts +13 -0
  100. package/dist/types/store/index.d.ts +1 -3
  101. package/dist/types/utils/treeGridExportExcelUtil.d.ts +0 -4
  102. package/dist/types/utils/treeGridUtil.d.ts +0 -59
  103. package/dist/utils/treeGridExportExcelUtil.js +57 -58
  104. package/dist/utils/treeGridExportExcelUtil.js.map +1 -1
  105. package/dist/utils/treeGridUtil.js +69 -83
  106. package/dist/utils/treeGridUtil.js.map +1 -1
  107. package/dist/utils.js +71 -86
  108. package/package.json +2 -6
  109. package/dist/hooks/useAppStore.js +0 -8
  110. package/dist/hooks/useAppStore.js.map +0 -1
  111. package/dist/store/generateReducersFromSlices.js +0 -18
  112. package/dist/store/generateReducersFromSlices.js.map +0 -1
  113. package/dist/store/lazyLoadedSlices.js +0 -16
  114. package/dist/store/lazyLoadedSlices.js.map +0 -1
  115. package/dist/store/middleware.js +0 -9
  116. package/dist/store/middleware.js.map +0 -1
  117. package/dist/store/navbarSlice.js +0 -71
  118. package/dist/store/navbarSlice.js.map +0 -1
  119. package/dist/store/navigationSlice.js +0 -46
  120. package/dist/store/navigationSlice.js.map +0 -1
  121. package/dist/store/owpSettingsSlice.js +0 -195
  122. package/dist/store/owpSettingsSlice.js.map +0 -1
  123. package/dist/store/store.js +0 -17
  124. package/dist/store/store.js.map +0 -1
  125. package/dist/store/withSlices.js +0 -27
  126. package/dist/store/withSlices.js.map +0 -1
  127. package/dist/types/hooks/useAppStore.d.ts +0 -7
  128. package/dist/types/store/generateReducersFromSlices.d.ts +0 -6
  129. package/dist/types/store/lazyLoadedSlices.d.ts +0 -9
  130. package/dist/types/store/middleware.d.ts +0 -17
  131. package/dist/types/store/navbarSlice.d.ts +0 -22
  132. package/dist/types/store/navigationSlice.d.ts +0 -93
  133. package/dist/types/store/owpSettingsSlice.d.ts +0 -112
  134. package/dist/types/store/store.d.ts +0 -13
  135. package/dist/types/store/withSlices.d.ts +0 -11
@@ -1,14 +1,14 @@
1
- var g = Object.defineProperty;
2
- var n = (r, i) => g(r, "name", { value: i, configurable: !0 });
3
- import { jsxs as a, jsx as s } 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
- import { TableCell as f, TableBody as D, Checkbox as x } from "@mui/material";
5
- import { clsx as S } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
6
- import T from "dayjs";
7
- import { Fragment as N } from "react";
8
- import { StyledTableRow as c, StyledTable as H } from "./OwpTable.js";
9
- import { isNaN as M } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isNaN.js";
10
- import { toNumber as k } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/util/toNumber.js";
11
- const y = 28, F = {
1
+ var D = Object.defineProperty;
2
+ var o = (r, e) => D(r, "name", { value: e, configurable: !0 });
3
+ import { jsxs as f, jsx as s } 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
+ import { TableCell as u, TableBody as x, Checkbox as S } from "@mui/material";
5
+ import { clsx as T } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
6
+ import N from "dayjs";
7
+ import { Fragment as H } from "react";
8
+ import { StyledTableRow as M, StyledTable as c } from "./OwpTable.js";
9
+ import { isNaN as k } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isNaN.js";
10
+ import { toNumber as F } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/util/toNumber.js";
11
+ const y = 28, V = {
12
12
  "&&": {
13
13
  fontFamily: "inherit",
14
14
  fontSize: "1.7rem",
@@ -17,78 +17,80 @@ const y = 28, F = {
17
17
  minHeight: "unset",
18
18
  padding: "7px 10px"
19
19
  }
20
- }, V = {
20
+ }, E = {
21
21
  borderRadius: 0,
22
22
  overflow: "visible"
23
- }, u = {
23
+ }, h = {
24
24
  borderTop: "1px solid #CDD8E4"
25
- }, E = /* @__PURE__ */ n((r, i) => r == null ? void 0 : r[i], "getVerticalTableValue"), j = /* @__PURE__ */ n((r, i) => typeof i == "function" ? i(r) : M(k(r)) ? r === "Y" : !!Number(r), "getCheckboxChecked"), z = /* @__PURE__ */ n((r) => r.withTime ? "YYYY-MM-DD HH:mm" : r.withTimeAndSec ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD", "getDateFormat"), B = /* @__PURE__ */ n((r, i, o) => {
26
- const t = E(i, r.key);
25
+ }, j = /* @__PURE__ */ o((r, e) => r == null ? void 0 : r[e], "getVerticalTableValue"), z = /* @__PURE__ */ o((r, e) => typeof e == "function" ? e(r) : k(F(r)) ? r === "Y" : !!Number(r), "getCheckboxChecked"), B = /* @__PURE__ */ o((r) => r.withTime ? "YYYY-MM-DD HH:mm" : r.withTimeAndSec ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD", "getDateFormat"), L = /* @__PURE__ */ o((r, e, m) => {
26
+ const i = j(e, r.key);
27
27
  return typeof r.render == "function" ? r.render() : r.useCheckbox ? /* @__PURE__ */ s(
28
- x,
28
+ S,
29
29
  {
30
- checked: j(t, r.validate),
31
- sx: { "& .MuiSvgIcon-root": { fontSize: (o == null ? void 0 : o.fontSize) ?? y } }
30
+ checked: z(i, r.validate),
31
+ sx: { "& .MuiSvgIcon-root": { fontSize: (m == null ? void 0 : m.fontSize) ?? y } }
32
32
  }
33
- ) : r.useDate ? t && T(t).format(z(r)) : r.disableLocaleString ? t : t == null ? void 0 : t.toLocaleString();
33
+ ) : r.useDate ? i && N(i).format(B(r)) : r.disableLocaleString ? i : i == null ? void 0 : i.toLocaleString();
34
34
  }, "renderVerticalTableCellValue");
35
- function P({
35
+ function W({
36
36
  layout: r,
37
- titleWidth: i,
38
- titleSx: o,
39
- cellSx: t,
40
- data: h,
41
- colGroupSlot: d,
42
- className: b,
43
- tableLayout: w = "fixed",
44
- canUseTreeGridStyle: m = !1
37
+ titleWidth: e,
38
+ titleSx: m,
39
+ treeGridTitleCellSx: i,
40
+ cellSx: a,
41
+ data: d,
42
+ colGroupSlot: b,
43
+ className: w,
44
+ tableLayout: Y = "fixed",
45
+ canUseTreeGridStyle: n = !1
45
46
  }) {
46
- return /* @__PURE__ */ a(
47
- H,
47
+ return /* @__PURE__ */ f(
48
+ c,
48
49
  {
49
- canUseTreeGridStyle: m,
50
- className: S("w-full", b),
51
- containerProps: { sx: m ? V : void 0 },
52
- tableLayout: w,
50
+ canUseTreeGridStyle: n,
51
+ className: T("w-full", w),
52
+ containerProps: { sx: n ? E : void 0 },
53
+ tableLayout: Y,
53
54
  children: [
54
- d,
55
- /* @__PURE__ */ s(D, { children: r.map((Y, p) => /* @__PURE__ */ s(c, { children: Y.map((e, C) => /* @__PURE__ */ a(N, { children: [
55
+ b,
56
+ /* @__PURE__ */ s(x, { children: r.map((C, p) => /* @__PURE__ */ s(M, { children: C.map((t, g) => /* @__PURE__ */ f(H, { children: [
56
57
  /* @__PURE__ */ s(
57
- f,
58
+ u,
58
59
  {
59
60
  component: "th",
60
61
  className: "whitespace-pre-wrap",
61
- width: i ?? 200,
62
+ width: e ?? 200,
62
63
  sx: {
63
- ...m ? F : {},
64
- ...m && p === 0 ? u : {},
65
- ...o ?? {}
64
+ ...n ? V : {},
65
+ ...n ? i ?? {} : {},
66
+ ...n && p === 0 ? h : {},
67
+ ...m ?? {}
66
68
  },
67
- rowSpan: e == null ? void 0 : e.rowSpan,
68
- children: e.title
69
+ rowSpan: t == null ? void 0 : t.rowSpan,
70
+ children: t.title
69
71
  }
70
72
  ),
71
73
  /* @__PURE__ */ s(
72
- f,
74
+ u,
73
75
  {
74
76
  className: "whitespace-pre-wrap",
75
77
  sx: {
76
- ...m && p === 0 ? u : {},
77
- ...t ?? {}
78
+ ...n && p === 0 ? h : {},
79
+ ...a ?? {}
78
80
  },
79
- style: (e == null ? void 0 : e.style) ?? {},
80
- colSpan: e == null ? void 0 : e.colSpan,
81
- rowSpan: e == null ? void 0 : e.rowSpan,
82
- children: B(e, h, t)
81
+ style: (t == null ? void 0 : t.style) ?? {},
82
+ colSpan: t == null ? void 0 : t.colSpan,
83
+ rowSpan: t == null ? void 0 : t.rowSpan,
84
+ children: L(t, d, a)
83
85
  }
84
86
  )
85
- ] }, `owp-vertical-cell-${p}-${C}`)) }, `owp-vertical-col-${p}`)) })
87
+ ] }, `owp-vertical-cell-${p}-${g}`)) }, `owp-vertical-col-${p}`)) })
86
88
  ]
87
89
  }
88
90
  );
89
91
  }
90
- n(P, "OwpVerticalTable");
92
+ o(W, "OwpVerticalTable");
91
93
  export {
92
- P as OwpVerticalTable
94
+ W as OwpVerticalTable
93
95
  };
94
96
  //# sourceMappingURL=OwpVerticalTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OwpVerticalTable.js","sources":["../../../src/components/OwpTable/OwpVerticalTable.tsx"],"sourcesContent":["import { Checkbox, TableBody, TableCell, type TableCellProps } from '@mui/material';\nimport clsx from 'clsx';\nimport dayjs from 'dayjs';\nimport { isNaN, toNumber } from 'es-toolkit/compat';\nimport { Fragment, type CSSProperties, type ReactNode } from 'react';\nimport { StyledTable, StyledTableRow } from './OwpTable';\n\ntype OwpVerticalTableCell = {\n title: string;\n key: string;\n disableLocaleString?: boolean;\n useDate?: boolean;\n withTime?: boolean;\n withTimeAndSec?: boolean;\n useCheckbox?: boolean;\n colSpan?: number;\n rowSpan?: number;\n style?: CSSProperties;\n render?: () => ReactNode;\n validate?: (v?: number | string) => boolean;\n};\n\ntype OwpVerticalTableValue = string | number | '';\ntype OwpVerticalTableDataRecord = Record<string, OwpVerticalTableValue | undefined>;\n\ninterface OwpVerticalTableProps {\n layout: OwpVerticalTableCell[][];\n data?: OwpVerticalTableDataRecord;\n titleSx?: TableCellProps['sx'];\n cellSx?: TableCellProps['sx'] & CSSProperties;\n titleWidth?: number | string;\n colGroupSlot?: ReactNode;\n className?: string;\n tableLayout?: 'auto' | 'fixed';\n canUseTreeGridStyle?: boolean;\n}\n\nconst DEFAULT_CHECKBOX_FONT_SIZE = 28;\n\nconst treeGridTitleCellSx = {\n '&&': {\n fontFamily: 'inherit',\n fontSize: '1.7rem',\n fontWeight: 600,\n lineHeight: 'normal',\n minHeight: 'unset',\n padding: '7px 10px',\n },\n} as const;\n\nconst treeGridContainerSx = {\n borderRadius: 0,\n overflow: 'visible',\n} as const;\n\nconst treeGridFirstRowCellSx = {\n borderTop: '1px solid #CDD8E4',\n} as const;\n\nconst getVerticalTableValue = (data: OwpVerticalTableProps['data'], key: string) => {\n return data?.[key];\n};\n\nconst getCheckboxChecked = (\n value: OwpVerticalTableValue | undefined,\n validate?: OwpVerticalTableCell['validate'],\n) => {\n if (typeof validate === 'function') {\n return validate(value);\n }\n\n if (isNaN(toNumber(value))) {\n return value === 'Y';\n }\n\n return Boolean(Number(value));\n};\n\nconst getDateFormat = (cell: OwpVerticalTableCell) => {\n if (cell.withTime) {\n return 'YYYY-MM-DD HH:mm';\n }\n\n if (cell.withTimeAndSec) {\n return 'YYYY-MM-DD HH:mm:ss';\n }\n\n return 'YYYY-MM-DD';\n};\n\nconst renderVerticalTableCellValue = (\n cell: OwpVerticalTableCell,\n data: OwpVerticalTableProps['data'],\n cellSx?: OwpVerticalTableProps['cellSx'],\n): ReactNode => {\n const value = getVerticalTableValue(data, cell.key);\n\n if (typeof cell.render === 'function') {\n return cell.render();\n }\n\n if (cell.useCheckbox) {\n return (\n <Checkbox\n checked={getCheckboxChecked(value, cell.validate)}\n sx={{ '& .MuiSvgIcon-root': { fontSize: cellSx?.fontSize ?? DEFAULT_CHECKBOX_FONT_SIZE } }}\n />\n );\n }\n\n if (cell.useDate) {\n return value ? dayjs(value).format(getDateFormat(cell)) : value;\n }\n\n if (cell.disableLocaleString) {\n return value;\n }\n\n return value?.toLocaleString();\n};\n\n/**\n * OwpVerticalTable 컴포넌트\n * @param layout layout 값\n * @param titleWidth titleWidth 값\n * @param titleSx titleSx 값\n * @param cellSx cellSx 값\n * @param data 데이터\n * @param colGroupSlot colGroupSlot 값\n * @param className className 값\n * @param tableLayout tableLayout 값\n * @param canUseTreeGridStyle TreeGrid 스타일 사용 여부\n */\nexport function OwpVerticalTable({\n layout,\n titleWidth,\n titleSx,\n cellSx,\n data,\n colGroupSlot,\n className,\n tableLayout = 'fixed',\n canUseTreeGridStyle = false,\n}: OwpVerticalTableProps) {\n return (\n <StyledTable\n canUseTreeGridStyle={canUseTreeGridStyle}\n className={clsx('w-full', className)}\n containerProps={{ sx: canUseTreeGridStyle ? treeGridContainerSx : undefined }}\n tableLayout={tableLayout}\n >\n {colGroupSlot}\n <TableBody>\n {layout.map((cols, rowIndex) => (\n <StyledTableRow key={`owp-vertical-col-${rowIndex}`}>\n {cols.map((col, colIndex) => (\n <Fragment key={`owp-vertical-cell-${rowIndex}-${colIndex}`}>\n <TableCell\n component=\"th\"\n className=\"whitespace-pre-wrap\"\n width={titleWidth ?? 200}\n sx={{\n ...(canUseTreeGridStyle ? treeGridTitleCellSx : {}),\n ...(canUseTreeGridStyle && rowIndex === 0 ? treeGridFirstRowCellSx : {}),\n ...(titleSx ?? {}),\n }}\n rowSpan={col?.rowSpan}\n >\n {col.title}\n </TableCell>\n <TableCell\n className=\"whitespace-pre-wrap\"\n sx={{\n ...(canUseTreeGridStyle && rowIndex === 0 ? treeGridFirstRowCellSx : {}),\n ...(cellSx ?? {}),\n }}\n style={col?.style ?? {}}\n colSpan={col?.colSpan}\n rowSpan={col?.rowSpan}\n >\n {renderVerticalTableCellValue(col, data, cellSx)}\n </TableCell>\n </Fragment>\n ))}\n </StyledTableRow>\n ))}\n </TableBody>\n </StyledTable>\n );\n}\n"],"names":["DEFAULT_CHECKBOX_FONT_SIZE","treeGridTitleCellSx","treeGridContainerSx","treeGridFirstRowCellSx","getVerticalTableValue","__name","data","key","getCheckboxChecked","value","validate","isNaN","toNumber","getDateFormat","cell","renderVerticalTableCellValue","cellSx","jsx","Checkbox","dayjs","OwpVerticalTable","layout","titleWidth","titleSx","colGroupSlot","className","tableLayout","canUseTreeGridStyle","jsxs","StyledTable","clsx","TableBody","cols","rowIndex","StyledTableRow","col","colIndex","Fragment","TableCell"],"mappings":"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"}
1
+ {"version":3,"file":"OwpVerticalTable.js","sources":["../../../src/components/OwpTable/OwpVerticalTable.tsx"],"sourcesContent":["import { Checkbox, TableBody, TableCell, type TableCellProps } from '@mui/material';\nimport clsx from 'clsx';\nimport dayjs from 'dayjs';\nimport { isNaN, toNumber } from 'es-toolkit/compat';\nimport { Fragment, type CSSProperties, type ReactNode } from 'react';\nimport { StyledTable, StyledTableRow } from './OwpTable';\n\ntype OwpVerticalTableCell = {\n title: string;\n key: string;\n disableLocaleString?: boolean;\n useDate?: boolean;\n withTime?: boolean;\n withTimeAndSec?: boolean;\n useCheckbox?: boolean;\n colSpan?: number;\n rowSpan?: number;\n style?: CSSProperties;\n render?: () => ReactNode;\n validate?: (v?: number | string) => boolean;\n};\n\ntype OwpVerticalTableValue = string | number | '';\ntype OwpVerticalTableDataRecord = Record<string, OwpVerticalTableValue | undefined>;\n\ninterface OwpVerticalTableProps {\n layout: OwpVerticalTableCell[][];\n data?: OwpVerticalTableDataRecord;\n titleSx?: TableCellProps['sx'];\n treeGridTitleCellSx?: TableCellProps['sx'] & CSSProperties;\n cellSx?: TableCellProps['sx'] & CSSProperties;\n titleWidth?: number | string;\n colGroupSlot?: ReactNode;\n className?: string;\n tableLayout?: 'auto' | 'fixed';\n canUseTreeGridStyle?: boolean;\n}\n\nconst DEFAULT_CHECKBOX_FONT_SIZE = 28;\n\nconst defaultTreeGridTitleCellSx = {\n '&&': {\n fontFamily: 'inherit',\n fontSize: '1.7rem',\n fontWeight: 600,\n lineHeight: 'normal',\n minHeight: 'unset',\n padding: '7px 10px',\n },\n} as const;\n\nconst treeGridContainerSx = {\n borderRadius: 0,\n overflow: 'visible',\n} as const;\n\nconst treeGridFirstRowCellSx = {\n borderTop: '1px solid #CDD8E4',\n} as const;\n\nconst getVerticalTableValue = (data: OwpVerticalTableProps['data'], key: string) => {\n return data?.[key];\n};\n\nconst getCheckboxChecked = (\n value: OwpVerticalTableValue | undefined,\n validate?: OwpVerticalTableCell['validate'],\n) => {\n if (typeof validate === 'function') {\n return validate(value);\n }\n\n if (isNaN(toNumber(value))) {\n return value === 'Y';\n }\n\n return Boolean(Number(value));\n};\n\nconst getDateFormat = (cell: OwpVerticalTableCell) => {\n if (cell.withTime) {\n return 'YYYY-MM-DD HH:mm';\n }\n\n if (cell.withTimeAndSec) {\n return 'YYYY-MM-DD HH:mm:ss';\n }\n\n return 'YYYY-MM-DD';\n};\n\nconst renderVerticalTableCellValue = (\n cell: OwpVerticalTableCell,\n data: OwpVerticalTableProps['data'],\n cellSx?: OwpVerticalTableProps['cellSx'],\n): ReactNode => {\n const value = getVerticalTableValue(data, cell.key);\n\n if (typeof cell.render === 'function') {\n return cell.render();\n }\n\n if (cell.useCheckbox) {\n return (\n <Checkbox\n checked={getCheckboxChecked(value, cell.validate)}\n sx={{ '& .MuiSvgIcon-root': { fontSize: cellSx?.fontSize ?? DEFAULT_CHECKBOX_FONT_SIZE } }}\n />\n );\n }\n\n if (cell.useDate) {\n return value ? dayjs(value).format(getDateFormat(cell)) : value;\n }\n\n if (cell.disableLocaleString) {\n return value;\n }\n\n return value?.toLocaleString();\n};\n\n/**\n * OwpVerticalTable 컴포넌트\n * @param layout layout 값\n * @param titleWidth titleWidth 값\n * @param titleSx titleSx 값\n * @param treeGridTitleCellSx TreeGrid title cell sx 값\n * @param cellSx cellSx 값\n * @param data 데이터\n * @param colGroupSlot colGroupSlot 값\n * @param className className 값\n * @param tableLayout tableLayout 값\n * @param canUseTreeGridStyle TreeGrid 스타일 사용 여부\n */\nexport function OwpVerticalTable({\n layout,\n titleWidth,\n titleSx,\n treeGridTitleCellSx,\n cellSx,\n data,\n colGroupSlot,\n className,\n tableLayout = 'fixed',\n canUseTreeGridStyle = false,\n}: OwpVerticalTableProps) {\n return (\n <StyledTable\n canUseTreeGridStyle={canUseTreeGridStyle}\n className={clsx('w-full', className)}\n containerProps={{ sx: canUseTreeGridStyle ? treeGridContainerSx : undefined }}\n tableLayout={tableLayout}\n >\n {colGroupSlot}\n <TableBody>\n {layout.map((cols, rowIndex) => (\n <StyledTableRow key={`owp-vertical-col-${rowIndex}`}>\n {cols.map((col, colIndex) => (\n <Fragment key={`owp-vertical-cell-${rowIndex}-${colIndex}`}>\n <TableCell\n component=\"th\"\n className=\"whitespace-pre-wrap\"\n width={titleWidth ?? 200}\n sx={{\n ...(canUseTreeGridStyle ? defaultTreeGridTitleCellSx : {}),\n ...(canUseTreeGridStyle ? (treeGridTitleCellSx ?? {}) : {}),\n ...(canUseTreeGridStyle && rowIndex === 0 ? treeGridFirstRowCellSx : {}),\n ...(titleSx ?? {}),\n }}\n rowSpan={col?.rowSpan}\n >\n {col.title}\n </TableCell>\n <TableCell\n className=\"whitespace-pre-wrap\"\n sx={{\n ...(canUseTreeGridStyle && rowIndex === 0 ? treeGridFirstRowCellSx : {}),\n ...(cellSx ?? {}),\n }}\n style={col?.style ?? {}}\n colSpan={col?.colSpan}\n rowSpan={col?.rowSpan}\n >\n {renderVerticalTableCellValue(col, data, cellSx)}\n </TableCell>\n </Fragment>\n ))}\n </StyledTableRow>\n ))}\n </TableBody>\n </StyledTable>\n );\n}\n"],"names":["DEFAULT_CHECKBOX_FONT_SIZE","defaultTreeGridTitleCellSx","treeGridContainerSx","treeGridFirstRowCellSx","getVerticalTableValue","__name","data","key","getCheckboxChecked","value","validate","isNaN","toNumber","getDateFormat","cell","renderVerticalTableCellValue","cellSx","jsx","Checkbox","dayjs","OwpVerticalTable","layout","titleWidth","titleSx","treeGridTitleCellSx","colGroupSlot","className","tableLayout","canUseTreeGridStyle","jsxs","StyledTable","clsx","TableBody","cols","rowIndex","StyledTableRow","col","colIndex","Fragment","TableCell"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { TREEGRID_INPUT_CELL_COLOR as L } from "../../../constants/treeGrid.js";
4
4
  import { highlightTreeGridCellById as h } from "../../../utils/treeGridUtil.js";
5
5
  import { applyTreeGridLayoutToGrid as x } from "./treeGridLayout.js";
6
6
  import { measureTreeGridPerf as N } from "../utils/perf.js";
7
- import { debounce as D } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/function/debounce.js";
7
+ import { debounce as R } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/function/debounce.js";
8
8
  import { get as A } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/get.js";
9
9
  import { isEmpty as k } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js";
10
10
  const U = Number.parseInt(
@@ -13,154 +13,160 @@ const U = Number.parseInt(
13
13
  ), g = 300, _ = {
14
14
  en: "/assets/vendors/Grid/TextEN.xml",
15
15
  kr: "/assets/vendors/Grid/TextKR.xml"
16
- }, E = /* @__PURE__ */ G((e) => `${e}?noCache=${Date.now()}`, "appendNoCacheQuery"), V = /* @__PURE__ */ G((e) => e === "kr" ? _.kr : _.en, "getTreeGridTextResourceUrl"), $ = /* @__PURE__ */ G((e) => e != null && e.includes("assets") ? E(e) : (
16
+ }, E = /* @__PURE__ */ G((e) => `${e}?noCache=${Date.now()}`, "appendNoCacheQuery"), V = /* @__PURE__ */ G((e) => e === "kr" ? _.kr : _.en, "getTreeGridTextResourceUrl"), v = /* @__PURE__ */ G((e) => e != null && e.includes("assets") ? E(e) : (
17
17
  // @ts-expect-error - API base URL env is provided by host app
18
18
  `undefined/${e}?noCache=${Date.now()}`
19
- ), "resolveTreeGridDataUrl"), a = /* @__PURE__ */ G((e, t, T) => e ? { Url: $(t) } : { Data: { Body: [k(T) ? [] : T] } }, "buildTreeGridDataSource"), H = /* @__PURE__ */ G(({
19
+ ), "resolveTreeGridDataUrl"), $ = /* @__PURE__ */ G((e, t, i) => e ? { Url: v(t) } : { Data: { Body: [k(i) ? [] : i] } }, "buildTreeGridDataSource"), H = /* @__PURE__ */ G(({
20
20
  id: e,
21
21
  layoutUrl: t,
22
- dataUrl: T,
22
+ dataUrl: i,
23
23
  bodyData: f,
24
- useDataUrl: w,
25
- width: l,
26
- height: S,
27
- languageId: R
24
+ useDataUrl: s,
25
+ width: S,
26
+ height: O,
27
+ languageId: p
28
28
  }) => ({
29
29
  id: e,
30
30
  Layout: { Url: E(t ?? "") },
31
- Data: a(w, T, f),
31
+ Data: $(s, i, f),
32
32
  Text: {
33
- Url: V(R)
33
+ Url: V(p)
34
34
  },
35
- width: l,
36
- height: S,
35
+ width: S,
36
+ height: O,
37
37
  Debug: "Error"
38
- }), "buildTreeGridInitializationOptions"), y = /* @__PURE__ */ G((e) => A(e, "Data.Data.Data.Body.0"), "getTreeGridBodyData"), F = /* @__PURE__ */ G((e) => Array.isArray(e) ? e.length : 0, "getTreeGridBodyDataCount"), v = /* @__PURE__ */ G((e) => {
38
+ }), "buildTreeGridInitializationOptions"), y = /* @__PURE__ */ G((e) => A(e, "Data.Data.Data.Body.0"), "getTreeGridBodyData"), a = /* @__PURE__ */ G((e) => Array.isArray(e) ? e.length : 0, "getTreeGridBodyDataCount"), F = /* @__PURE__ */ G((e) => {
39
39
  const t = e == null ? void 0 : e.Visible;
40
40
  return !!e && t !== 0 && t !== !1 && t !== "0";
41
41
  }, "isVisibleTreeGridRow"), P = /* @__PURE__ */ G((e) => {
42
42
  const t = e == null ? void 0 : e.Added;
43
43
  return !!e && t !== 0 && t !== !1 && t !== "0" && t !== void 0;
44
- }, "isAddedTreeGridRow"), O = /* @__PURE__ */ G((e) => !e || e.Fixed === "Foot" || !v(e) ? !1 : e.Kind === "Data" || P(e), "isDisplayTreeGridRow"), K = /* @__PURE__ */ G((e, t, T) => !t || !T || !O(t) ? !1 : e.CanEdit(t, T) === 1, "isEditableTreeGridCell"), M = /* @__PURE__ */ G((e, t, T) => {
45
- const f = e.GetAttribute(t, T, "Color");
44
+ }, "isAddedTreeGridRow"), D = /* @__PURE__ */ G((e) => !e || e.Fixed === "Foot" || !F(e) ? !1 : e.Kind === "Data" || P(e), "isDisplayTreeGridRow"), K = /* @__PURE__ */ G((e, t, i) => !t || !i || !D(t) ? !1 : e.CanEdit(t, i) === 1, "isEditableTreeGridCell"), M = /* @__PURE__ */ G((e, t, i) => {
45
+ const f = e.GetAttribute(t, i, "Color");
46
46
  return f != null && f !== "";
47
- }, "hasExplicitTreeGridCellColor"), j = /* @__PURE__ */ G((e, t, T) => !t || !K(e, t, T) || M(e, t, T) ? null : U, "getEditableTreeGridCellDefaultColor"), ee = /* @__PURE__ */ G((e) => {
47
+ }, "hasExplicitTreeGridCellColor"), j = /* @__PURE__ */ G((e, t, i) => {
48
+ if (!(!t || !K(e, t, i) || M(e, t, i)))
49
+ return U;
50
+ }, "getEditableTreeGridCellDefaultColor"), ee = /* @__PURE__ */ G((e) => {
48
51
  if (!e)
49
52
  return !1;
50
53
  if (typeof e.GetFirst == "function" && typeof e.GetNext == "function") {
51
54
  let t = e.GetFirst();
52
55
  for (; t; ) {
53
- if (O(t))
56
+ if (D(t))
54
57
  return !0;
55
58
  t = e.GetNext(t);
56
59
  }
57
60
  return !1;
58
61
  }
59
- return Object.values(e.Rows ?? {}).some((t) => O(t));
60
- }, "hasTreeGridDisplayDataRows"), te = /* @__PURE__ */ G((e, t, T) => {
61
- var w;
62
- const f = (w = e.Data) == null ? void 0 : w.Data;
62
+ return Object.values(e.Rows ?? {}).some((t) => D(t));
63
+ }, "hasTreeGridDisplayDataRows"), te = /* @__PURE__ */ G((e, t, i) => {
64
+ var s;
65
+ const f = (s = e.Data) == null ? void 0 : s.Data;
63
66
  e.Data.Data = {
64
67
  ...f,
65
68
  Data: { Body: [t || []] },
66
69
  Url: ""
67
- }, e.ReloadBody(T);
70
+ }, e.ReloadBody(i);
68
71
  }, "replaceTreeGridBodyData"), oe = /* @__PURE__ */ G(({
69
72
  id: e,
70
73
  latestEventHandlersRef: t,
71
- highlightEditableCellsRef: T,
74
+ highlightEditableCellsRef: i,
72
75
  highlightChangedCellsRef: f,
73
- treeGridInstanceRef: w,
74
- treeGridInitStartedAtRef: l,
75
- latestLayoutOverridesRef: S,
76
- appliedLayoutOverridesRef: R,
76
+ treeGridInstanceRef: s,
77
+ treeGridInitStartedAtRef: S,
78
+ latestLayoutOverridesRef: O,
79
+ appliedLayoutOverridesRef: p,
77
80
  appliedBodyDataPropRef: B,
78
- hasAppliedInitialLayoutRef: p,
79
- syncHasDisplayDataRows: s,
81
+ hasAppliedInitialLayoutRef: l,
82
+ syncHasDisplayDataRows: w,
80
83
  setIsTreeGridReady: I
81
84
  }) => {
82
85
  const c = t.current;
83
- window.TGSetEvent("OnRowAdd", e, (o, u) => {
84
- var r, n;
85
- u.CanEdit = 1, u.CanDelete = 1, (n = (r = t.current) == null ? void 0 : r.onRowAdd) == null || n.call(r, o, u);
86
+ window.TGSetEvent("OnRowAdd", e, (o, n) => {
87
+ var r, u;
88
+ n.CanEdit = 1, n.CanDelete = 1, (u = (r = t.current) == null ? void 0 : r.onRowAdd) == null || u.call(r, o, n);
86
89
  }), window.TGSetEvent("OnRowAdded", e, (o) => {
87
- s(o);
90
+ w(o);
88
91
  }), typeof (c == null ? void 0 : c.onRowClick) == "function" && window.TGSetEvent(
89
92
  "OnClick",
90
93
  e,
91
- D((o, u, r, n, i, C) => {
94
+ R((o, n, r, u, T, C) => {
92
95
  var d, m;
93
96
  (m = (d = t.current) == null ? void 0 : d.onRowClick) == null || m.call(
94
97
  d,
95
98
  o,
96
- u,
97
- r,
98
99
  n,
99
- i,
100
+ r,
101
+ u,
102
+ T,
100
103
  C
101
104
  );
102
105
  }, 300)
103
106
  ), typeof (c == null ? void 0 : c.onClickButton) == "function" && window.TGSetEvent(
104
107
  "OnClickButton",
105
108
  e,
106
- D((o, u, r, n) => {
107
- var i, C;
108
- (C = (i = t.current) == null ? void 0 : i.onClickButton) == null || C.call(
109
- i,
109
+ R((o, n, r, u) => {
110
+ var T, C;
111
+ (C = (T = t.current) == null ? void 0 : T.onClickButton) == null || C.call(
112
+ T,
110
113
  o,
111
- u,
114
+ n,
112
115
  r,
113
- n
116
+ u
114
117
  );
115
118
  }, 300)
116
- ), typeof (c == null ? void 0 : c.onRowDelete) == "function" ? window.TGSetEvent("OnRowDelete", e, (o, u, r) => {
117
- var n, i;
118
- s(o), (i = (n = t.current) == null ? void 0 : n.onRowDelete) == null || i.call(
119
- n,
120
- o,
119
+ ), typeof (c == null ? void 0 : c.onRowDelete) == "function" ? window.TGSetEvent("OnRowDelete", e, (o, n, r) => {
120
+ var u, T;
121
+ w(o), (T = (u = t.current) == null ? void 0 : u.onRowDelete) == null || T.call(
121
122
  u,
123
+ o,
124
+ n,
122
125
  r
123
126
  );
124
127
  }) : window.TGSetEvent("OnRowDelete", e, (o) => {
125
- s(o);
126
- }), typeof (c == null ? void 0 : c.onRowUndelete) == "function" ? window.TGSetEvent("OnRowUndelete", e, (o, u) => {
127
- var r, n;
128
- s(o), (n = (r = t.current) == null ? void 0 : r.onRowUndelete) == null || n.call(r, o, u);
128
+ w(o);
129
+ }), typeof (c == null ? void 0 : c.onRowUndelete) == "function" ? window.TGSetEvent("OnRowUndelete", e, (o, n) => {
130
+ var r, u;
131
+ w(o), (u = (r = t.current) == null ? void 0 : r.onRowUndelete) == null || u.call(r, o, n);
129
132
  }) : window.TGSetEvent("OnRowUndelete", e, (o) => {
130
- s(o);
131
- }), window.TGSetEvent("OnGetDefaultColor", e, (o, u, r) => T.current ? j(o, u, r) : null), window.TGSetEvent("OnAfterValueChanged", e, (o, u, r, n) => {
133
+ w(o);
134
+ }), window.TGSetEvent("OnGetDefaultColor", e, (o, n, r) => {
135
+ if (!(!i.current || !D(n)))
136
+ return j(o, n, r);
137
+ }), window.TGSetEvent("OnAfterValueChanged", e, (o, n, r, u) => {
132
138
  var C, d;
133
- f.current && h(e, { row: u, col: r });
134
- const i = ((C = t.current) == null ? void 0 : C.onAfterValueChanged) ?? ((d = t.current) == null ? void 0 : d.onRowChange);
135
- i == null || i(o, u, r, n);
139
+ f.current && D(n) && h(e, { row: n, col: r });
140
+ const T = ((C = t.current) == null ? void 0 : C.onAfterValueChanged) ?? ((d = t.current) == null ? void 0 : d.onRowChange);
141
+ T == null || T(o, n, r, u);
136
142
  }), typeof (c == null ? void 0 : c.onSelect) == "function" && window.TGSetEvent(
137
143
  "OnSelect",
138
144
  e,
139
- D((o) => {
140
- var r, n;
141
- const u = o.GetSelRows() ?? [];
142
- (n = (r = t.current) == null ? void 0 : r.onSelect) == null || n.call(r, u);
145
+ R((o) => {
146
+ var r, u;
147
+ const n = o.GetSelRows() ?? [];
148
+ (u = (r = t.current) == null ? void 0 : r.onSelect) == null || u.call(r, n);
143
149
  }, 100)
144
- ), typeof (c == null ? void 0 : c.onSave) == "function" && window.TGSetEvent("OnSave", e, (o, u, r) => {
145
- var n, i;
146
- (i = (n = t.current) == null ? void 0 : n.onSave) == null || i.call(
147
- n,
148
- o,
150
+ ), typeof (c == null ? void 0 : c.onSave) == "function" && window.TGSetEvent("OnSave", e, (o, n, r) => {
151
+ var u, T;
152
+ (T = (u = t.current) == null ? void 0 : u.onSave) == null || T.call(
149
153
  u,
154
+ o,
155
+ n,
150
156
  r
151
157
  );
152
158
  }), window.TGSetEvent(
153
159
  "OnReady",
154
160
  e,
155
- D((o) => {
156
- var u, r;
157
- if (!p.current) {
158
- const n = S.current;
159
- p.current = !0, x(o, n), w.current = o, R.current = n, B.current = y(o), s(o), I(!0), N(e, "TreeGrid init ready", l.current, {
160
- bodyRowCount: F(
161
+ R((o) => {
162
+ var n, r;
163
+ if (!l.current) {
164
+ const u = O.current;
165
+ l.current = !0, x(o, u), s.current = o, p.current = u, B.current = y(o), w(o), I(!0), N(e, "TreeGrid init ready", S.current, {
166
+ bodyRowCount: a(
161
167
  y(o)
162
168
  )
163
- }), l.current = null, (r = (u = t.current) == null ? void 0 : u.onReady) == null || r.call(u, o);
169
+ }), S.current = null, (r = (n = t.current) == null ? void 0 : n.onReady) == null || r.call(n, o);
164
170
  }
165
171
  }, 100)
166
172
  );
@@ -169,7 +175,7 @@ export {
169
175
  g as TREE_GRID_BINDING_LOADING_MIN_VISIBLE_MS,
170
176
  oe as bindTreeGridEvents,
171
177
  H as buildTreeGridInitializationOptions,
172
- F as getTreeGridBodyDataCount,
178
+ a as getTreeGridBodyDataCount,
173
179
  ee as hasTreeGridDisplayDataRows,
174
180
  te as replaceTreeGridBodyData
175
181
  };
@@ -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 null;\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) {\n return null;\n }\n\n return getEditableTreeGridCellDefaultColor(grid, row, col);\n });\n window.TGSetEvent('OnAfterValueChanged', id, (grid, row, col, value) => {\n if (highlightChangedCellsRef.current) {\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 {\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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"}
@@ -6,6 +6,7 @@ const r = {
6
6
  currentLanguage: "CurrentLanguage",
7
7
  currentUser: "currentUser",
8
8
  currentUserId: "CurrentUserId",
9
+ currentUserSeq: "CurrentUserSeq",
9
10
  currentShortcuts: "CurrentShortcuts",
10
11
  owpEnv: "owpEnv"
11
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"storageKeys.js","sources":["../../src/constants/storageKeys.ts"],"sourcesContent":["/**\n * 스토리지 키 목록\n */\nexport const STORAGE_KEYS = {\n commonCodeList: 'commonCodeList',\n navigationList: 'navigationList',\n lockLoadingProps: 'lockLoadingProps',\n currentLogoSrc: 'CurrentLogoSrc',\n currentLanguage: 'CurrentLanguage',\n currentUser: 'currentUser',\n currentUserId: 'CurrentUserId',\n currentShortcuts: 'CurrentShortcuts',\n owpEnv: 'owpEnv',\n} as const;\n"],"names":["STORAGE_KEYS"],"mappings":"AAGO,MAAMA,IAAe;AAAA,EAC1B,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,QAAQ;AACV;"}
1
+ {"version":3,"file":"storageKeys.js","sources":["../../src/constants/storageKeys.ts"],"sourcesContent":["/**\n * 스토리지 키 목록\n */\nexport const STORAGE_KEYS = {\n commonCodeList: 'commonCodeList',\n navigationList: 'navigationList',\n lockLoadingProps: 'lockLoadingProps',\n currentLogoSrc: 'CurrentLogoSrc',\n currentLanguage: 'CurrentLanguage',\n currentUser: 'currentUser',\n currentUserId: 'CurrentUserId',\n currentUserSeq: 'CurrentUserSeq',\n currentShortcuts: 'CurrentShortcuts',\n owpEnv: 'owpEnv',\n} as const;\n"],"names":["STORAGE_KEYS"],"mappings":"AAGO,MAAMA,IAAe;AAAA,EAC1B,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,QAAQ;AACV;"}