@bwg-ui/core 1.3.1 → 1.3.3

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 (68) hide show
  1. package/dist/chunks/{CMSearchIntfGwP01-BWm9OqAH.js → CMSearchIntfGwP01-Co6lrDf9.js} +9 -9
  2. package/dist/chunks/CMSearchIntfGwP01-Do_ZDjmX.cjs +1 -0
  3. package/dist/chunks/{MenuReport-yYhMOHyq.js → MenuReport-BTtoDFz-.js} +146 -141
  4. package/dist/chunks/MenuReport-Bn5NyNel.cjs +1 -0
  5. package/dist/chunks/{common-components-coAoWxE9.js → common-components-0IMhPxxg.js} +11604 -10999
  6. package/dist/chunks/common-components-Csd3OioX.cjs +1109 -0
  7. package/dist/chunks/core-components-CX6NGtTh.cjs +1 -0
  8. package/dist/chunks/core-components-Ckwf4Rd7.js +1969 -0
  9. package/dist/chunks/layout-components-BMLp8YAy.cjs +38 -0
  10. package/dist/chunks/{layout-components-C1DG2B74.js → layout-components-DphZY34c.js} +954 -737
  11. package/dist/components/common/BwgDetail.d.ts.map +1 -1
  12. package/dist/components/common/BwgGrid.d.ts.map +1 -1
  13. package/dist/components/common/index.cjs +1 -1
  14. package/dist/components/common/index.js +1 -1
  15. package/dist/components/core/BwgEmpSearch.d.ts +28 -0
  16. package/dist/components/core/BwgEmpSearch.d.ts.map +1 -0
  17. package/dist/components/core/index.cjs +1 -1
  18. package/dist/components/core/index.js +22 -1846
  19. package/dist/components/guide/index.cjs +1 -1
  20. package/dist/components/guide/index.js +13 -13
  21. package/dist/components/layout/AppWrapper.d.ts +2 -1
  22. package/dist/components/layout/AppWrapper.d.ts.map +1 -1
  23. package/dist/components/layout/BwgCoreLogin.d.ts +1 -2
  24. package/dist/components/layout/BwgCoreLogin.d.ts.map +1 -1
  25. package/dist/components/layout/BwgPortal01.d.ts.map +1 -1
  26. package/dist/components/layout/BwgSessionNotice.d.ts +15 -0
  27. package/dist/components/layout/BwgSessionNotice.d.ts.map +1 -0
  28. package/dist/components/layout/BwgSsoLogin.d.ts +19 -0
  29. package/dist/components/layout/BwgSsoLogin.d.ts.map +1 -0
  30. package/dist/components/layout/custom/ConfigurableHeader.d.ts.map +1 -1
  31. package/dist/components/layout/custom/ConfigurableMenuTab.d.ts.map +1 -1
  32. package/dist/components/layout/custom/ConfigurableSidebar.d.ts.map +1 -1
  33. package/dist/components/layout/default/LoadingContainer.d.ts.map +1 -1
  34. package/dist/components/layout/index.cjs +1 -1
  35. package/dist/components/layout/index.d.ts +2 -0
  36. package/dist/components/layout/index.d.ts.map +1 -1
  37. package/dist/components/layout/index.js +16 -14
  38. package/dist/components/pages/board/CMAdminBoardM01.d.ts.map +1 -1
  39. package/dist/components/pages/board/CMMyBoardM01.d.ts.map +1 -1
  40. package/dist/components/popup/MenuReport.d.ts.map +1 -1
  41. package/dist/components/popup/SearchOrganizationP01.d.ts +1 -1
  42. package/dist/components/popup/SearchOrganizationP01.d.ts.map +1 -1
  43. package/dist/components/popup/index.cjs +1 -1
  44. package/dist/components/popup/index.js +1 -1
  45. package/dist/index.cjs +1 -1
  46. package/dist/index.js +160 -157
  47. package/dist/stores/index.cjs +2 -2
  48. package/dist/stores/index.d.ts +8 -3
  49. package/dist/stores/index.d.ts.map +1 -1
  50. package/dist/stores/index.js +416 -367
  51. package/dist/stores/loginStore.d.ts +55 -10
  52. package/dist/stores/loginStore.d.ts.map +1 -1
  53. package/dist/stores/menuViewStore.d.ts +6 -2
  54. package/dist/stores/menuViewStore.d.ts.map +1 -1
  55. package/dist/stores/userStore.d.ts +1 -2
  56. package/dist/stores/userStore.d.ts.map +1 -1
  57. package/dist/styles/assets/images/header/icon/ico-bell.svg +3 -3
  58. package/dist/styles/assets/images/header/icon/ico-logout.svg +10 -10
  59. package/dist/styles/assets/images/header/icon/ico-setting.svg +4 -4
  60. package/dist/styles/assets/images/header/icon/ico-sidebar-arrow.svg +3 -3
  61. package/dist/utils/index.cjs +1 -1
  62. package/dist/utils/index.d.ts.map +1 -1
  63. package/dist/utils/index.js +455 -454
  64. package/package.json +1 -1
  65. package/dist/chunks/CMSearchIntfGwP01-CihGc5Q1.cjs +0 -1
  66. package/dist/chunks/MenuReport-khjaUz1Q.cjs +0 -1
  67. package/dist/chunks/common-components-DletnDTf.cjs +0 -1109
  68. package/dist/chunks/layout-components-C6KeWPIu.cjs +0 -35
@@ -1,38 +1,38 @@
1
- import { jsxs as C, jsx as e, Fragment as K } from "react/jsx-runtime";
2
- import { o as Me, C as Le, S as pe, n as Be, m as Oe } from "./provider-VCa8UGvF.js";
3
- import { Routes as xe, Route as te, Navigate as Ee, useNavigate as ge, useLocation as Re } from "react-router-dom";
4
- import { G as De, B as ze, Q as Ae } from "./common-components-coAoWxE9.js";
5
- import { Spin as re, Layout as Z, Button as B, Divider as ae, Flex as ne, Slider as le, Switch as We, Modal as $e, Popover as Fe, Avatar as _e, Dropdown as Ge, Tabs as He, Tooltip as X, AutoComplete as je, Input as ue, Segmented as Ve, ConfigProvider as Ue, Menu as me, Result as ke, Space as Ke, Typography as Ze, Empty as ce, Breadcrumb as Ye, Form as V, Checkbox as qe } from "antd";
6
- import { lazy as W, useEffect as D, useRef as J, useCallback as R, useMemo as _, useState as A, createElement as Ie, memo as fe, cloneElement as Qe, Component as Xe, Suspense as se } from "react";
7
- import { useLogout as Je, useUserStore as Ne, useMenuViewStore as O, useMenuModelStore as ie, useFavoriteStore as et, usePopupStore as be, useLogin as tt, useSystemStore as nt } from "../stores/index.js";
8
- import * as oe from "@ant-design/icons";
9
- import { UndoOutlined as ee, UserOutlined as rt, CloseOutlined as U, PushpinOutlined as ot, ReloadOutlined as ye, StepBackwardOutlined as st, LeftOutlined as it, RightOutlined as at, StepForwardOutlined as lt, MenuUnfoldOutlined as ct, MenuFoldOutlined as dt, ExclamationCircleOutlined as ut, WarningOutlined as mt, StarOutlined as ht, FolderOpenOutlined as pt, ExclamationCircleTwoTone as gt } from "@ant-design/icons";
10
- import { getTodateString as Ce, getUserId as ve } from "../utils/index.js";
11
- import { useSensors as ft, useSensor as bt, PointerSensor as yt, DndContext as Ct, closestCenter as vt } from "@dnd-kit/core";
12
- import { restrictToHorizontalAxis as wt } from "@dnd-kit/modifiers";
13
- import { arrayMove as xt, SortableContext as kt, horizontalListSortingStrategy as It, useSortable as Nt } from "@dnd-kit/sortable";
14
- const Pt = W(
15
- () => import("./MenuReport-yYhMOHyq.js")
16
- ), St = W(
17
- () => import("./common-components-coAoWxE9.js").then((n) => n.$)
18
- ), Tt = W(
19
- () => import("./common-components-coAoWxE9.js").then((n) => n.a0)
20
- ), Mt = W(
21
- () => import("./common-components-coAoWxE9.js").then((n) => n.a1)
22
- ), Lt = W(
23
- () => import("./common-components-coAoWxE9.js").then((n) => n.a2)
24
- ), Bt = W(
25
- () => import("./common-components-coAoWxE9.js").then((n) => n.a4)
26
- ), Ot = W(
27
- () => import("./CMSearchIntfGwP01-BWm9OqAH.js")
28
- ), Et = W(
29
- () => import("./common-components-coAoWxE9.js").then((n) => n.a5)
30
- ), Rt = W(
31
- () => import("./common-components-coAoWxE9.js").then((n) => n.a3)
32
- ), Dt = {
1
+ import { jsxs as l, jsx as e, Fragment as A } from "react/jsx-runtime";
2
+ import { o as $e, C as We, S as Ce, n as Fe, m as Ge } from "./provider-VCa8UGvF.js";
3
+ import { Routes as Le, Route as Y, Navigate as _e, useNavigate as ve, useLocation as je } from "react-router-dom";
4
+ import { G as He, B as Ve, Q as Ke } from "./common-components-0IMhPxxg.js";
5
+ import { Spin as Q, Layout as X, Button as B, Divider as he, Flex as ie, Slider as me, Switch as Ue, Modal as Ze, Popover as Ye, Avatar as qe, Dropdown as Qe, Tabs as Xe, Tooltip as te, AutoComplete as Je, Input as fe, Segmented as et, ConfigProvider as tt, Menu as be, Result as Me, Space as q, Typography as xe, Empty as pe, Breadcrumb as nt, Form as Z, Checkbox as rt, Card as Be } from "antd";
6
+ import { lazy as W, useEffect as E, useRef as J, useCallback as z, useMemo as _, useState as $, createElement as Oe, memo as we, cloneElement as ot, Component as it, Suspense as le } from "react";
7
+ import { useUserStore as Ee, useLogout as st, useMenuViewStore as O, useMenuModelStore as ce, useFavoriteStore as at, usePopupStore as ke, useLogin as lt, useSystemStore as se, useSsoLogin as ct } from "../stores/index.js";
8
+ import * as ae from "@ant-design/icons";
9
+ import { UndoOutlined as oe, UserOutlined as dt, CloseOutlined as ne, PushpinOutlined as ut, ReloadOutlined as de, RestOutlined as ht, PushpinTwoTone as mt, StepBackwardOutlined as pt, LeftOutlined as gt, RightOutlined as ft, StepForwardOutlined as bt, MenuUnfoldOutlined as yt, MenuFoldOutlined as Ct, ExclamationCircleOutlined as vt, WarningOutlined as xt, StarOutlined as wt, FolderOpenOutlined as kt, ExclamationCircleTwoTone as Ie, CheckCircleTwoTone as De, LoginOutlined as It } from "@ant-design/icons";
10
+ import { getTodateString as Ne, colorFormat as Nt, getUserId as Se } from "../utils/index.js";
11
+ import { useSensors as St, useSensor as Pt, PointerSensor as Tt, DndContext as Lt, closestCenter as Mt } from "@dnd-kit/core";
12
+ import { restrictToHorizontalAxis as Bt } from "@dnd-kit/modifiers";
13
+ import { arrayMove as Ot, SortableContext as Et, horizontalListSortingStrategy as Dt, useSortable as Rt } from "@dnd-kit/sortable";
14
+ const zt = W(
15
+ () => import("./MenuReport-BTtoDFz-.js")
16
+ ), At = W(
17
+ () => import("./common-components-0IMhPxxg.js").then((n) => n.$)
18
+ ), $t = W(
19
+ () => import("./common-components-0IMhPxxg.js").then((n) => n.a0)
20
+ ), Wt = W(
21
+ () => import("./common-components-0IMhPxxg.js").then((n) => n.a1)
22
+ ), Ft = W(
23
+ () => import("./common-components-0IMhPxxg.js").then((n) => n.a2)
24
+ ), Gt = W(
25
+ () => import("./common-components-0IMhPxxg.js").then((n) => n.a4)
26
+ ), _t = W(
27
+ () => import("./CMSearchIntfGwP01-Co6lrDf9.js")
28
+ ), jt = W(
29
+ () => import("./common-components-0IMhPxxg.js").then((n) => n.a5)
30
+ ), Ht = W(
31
+ () => import("./common-components-0IMhPxxg.js").then((n) => n.a3)
32
+ ), Vt = {
33
33
  // 게시판/문의
34
34
  CORE_REPORT: {
35
- component: Pt,
35
+ component: zt,
36
36
  defaultConfig: {
37
37
  title: "게시판/문의",
38
38
  width: 1200,
@@ -41,7 +41,7 @@ const Pt = W(
41
41
  },
42
42
  // 조직/부서 검색류
43
43
  CORE_DEPARTMENT_01: {
44
- component: St,
44
+ component: At,
45
45
  defaultConfig: {
46
46
  title: "부서 검색",
47
47
  width: 620,
@@ -49,7 +49,7 @@ const Pt = W(
49
49
  }
50
50
  },
51
51
  CORE_DEPARTMENT_02: {
52
- component: Tt,
52
+ component: $t,
53
53
  defaultConfig: {
54
54
  title: "부서 검색",
55
55
  width: 620,
@@ -57,7 +57,7 @@ const Pt = W(
57
57
  }
58
58
  },
59
59
  CORE_ORGANIZATION_01: {
60
- component: Mt,
60
+ component: Wt,
61
61
  defaultConfig: {
62
62
  title: "조직 검색",
63
63
  width: 620,
@@ -65,7 +65,7 @@ const Pt = W(
65
65
  }
66
66
  },
67
67
  CORE_ORGANIZATION_02: {
68
- component: Lt,
68
+ component: Ft,
69
69
  defaultConfig: {
70
70
  title: "조직 검색",
71
71
  width: 1e3,
@@ -73,7 +73,7 @@ const Pt = W(
73
73
  }
74
74
  },
75
75
  CORE_PRGR_02: {
76
- component: Bt,
76
+ component: Gt,
77
77
  defaultConfig: {
78
78
  title: "프로그램 검색",
79
79
  width: 700,
@@ -81,7 +81,7 @@ const Pt = W(
81
81
  }
82
82
  },
83
83
  CORE_GW_DRAFTS: {
84
- component: Ot,
84
+ component: _t,
85
85
  defaultConfig: {
86
86
  title: "기안 목록",
87
87
  width: 1e3,
@@ -89,7 +89,7 @@ const Pt = W(
89
89
  }
90
90
  },
91
91
  CORE_ADDRESS_01: {
92
- component: Et,
92
+ component: jt,
93
93
  defaultConfig: {
94
94
  title: "주소 검색",
95
95
  width: 750,
@@ -97,18 +97,18 @@ const Pt = W(
97
97
  }
98
98
  },
99
99
  CORE_HOLIDAY_01: {
100
- component: Rt,
100
+ component: Ht,
101
101
  defaultConfig: {
102
102
  title: "휴일 검색",
103
103
  width: 750,
104
104
  height: 800
105
105
  }
106
106
  }
107
- }, we = "bwg-dot-line-wave-v4";
108
- function zt() {
109
- if (typeof document > "u" || document.getElementById(we)) return;
107
+ }, Pe = "bwg-dot-line-wave-v4";
108
+ function Kt() {
109
+ if (typeof document > "u" || document.getElementById(Pe)) return;
110
110
  const n = document.createElement("style");
111
- n.id = we, n.textContent = `
111
+ n.id = Pe, n.textContent = `
112
112
  .bwg-dotline {
113
113
  display: inline-flex;
114
114
  align-items: center;
@@ -144,62 +144,59 @@ function zt() {
144
144
  }
145
145
  `, document.head.appendChild(n);
146
146
  }
147
- const At = ({
147
+ const Ut = ({
148
148
  colors: n = ["#DAD3FF", "#B3A6FF", "#9380FF", "#816BFA"],
149
149
  count: t,
150
150
  size: r = 12,
151
151
  gap: o = 10,
152
- amp: i = 16,
152
+ amp: s = 16,
153
153
  speedMs: a = 900,
154
- direction: b = "ltr",
155
- phase: l = 0.7
154
+ direction: g = "ltr",
155
+ phase: c = 0.7
156
156
  }) => {
157
- D(() => {
158
- zt();
157
+ E(() => {
158
+ Kt();
159
159
  }, []);
160
- const c = t ?? n.length, v = Array.from({ length: c }), m = {
160
+ const u = t ?? n.length, y = Array.from({ length: u }), h = {
161
161
  "--bwg-size": `${r}px`,
162
162
  "--bwg-gap": `${o}px`,
163
- "--bwg-amp": `${i}px`,
163
+ "--bwg-amp": `${s}px`,
164
164
  "--bwg-speed": `${a}ms`
165
- }, d = a / c * l;
165
+ }, k = a / u * c;
166
166
  return /* @__PURE__ */ e(
167
167
  "span",
168
168
  {
169
169
  className: "bwg-dotline",
170
170
  role: "img",
171
171
  "aria-label": "loading",
172
- style: m,
173
- children: v.map((h, p) => /* @__PURE__ */ e(
172
+ style: h,
173
+ children: y.map((d, p) => /* @__PURE__ */ e(
174
174
  "span",
175
175
  {
176
176
  className: "dot",
177
177
  style: {
178
178
  backgroundColor: n[p % n.length],
179
- animationDelay: b === "ltr" ? `${p * d}ms` : `${(c - 1 - p) * d}ms`
179
+ animationDelay: g === "ltr" ? `${p * k}ms` : `${(u - 1 - p) * k}ms`
180
180
  }
181
181
  },
182
182
  p
183
183
  ))
184
184
  }
185
185
  );
186
- }, vn = ({
186
+ }, On = ({
187
187
  spin: n = null,
188
188
  text: t = "인증중...",
189
189
  dimStyle: r = "dark"
190
190
  }) => {
191
191
  if (!(n ?? !0)) return null;
192
192
  const a = r === "dark";
193
- return /* @__PURE__ */ C(
193
+ return /* @__PURE__ */ l(
194
194
  "div",
195
195
  {
196
196
  className: "loading-overlay",
197
197
  style: {
198
- position: "fixed",
199
- height: "100vh",
200
- left: 0,
201
- right: 0,
202
- top: 0,
198
+ position: "absolute",
199
+ inset: 0,
203
200
  display: "flex",
204
201
  flexDirection: "column",
205
202
  justifyContent: "center",
@@ -216,10 +213,10 @@ const At = ({
216
213
  role: "status",
217
214
  children: [
218
215
  /* @__PURE__ */ e(
219
- re,
216
+ Q,
220
217
  {
221
218
  indicator: /* @__PURE__ */ e(
222
- At,
219
+ Ut,
223
220
  {
224
221
  colors: ["#DAD3FF", "#B3A6FF", "#9380FF", "#816BFA"],
225
222
  size: 12,
@@ -236,18 +233,20 @@ const At = ({
236
233
  ]
237
234
  }
238
235
  );
239
- }, wn = ({
236
+ }, En = ({
240
237
  routes: n,
241
238
  useCommonProvider: t = !0,
242
239
  useServiceProvider: r = !0
243
240
  }) => {
244
- let i = /* @__PURE__ */ C(xe, { children: [
245
- /* @__PURE__ */ e(te, { path: "/", element: /* @__PURE__ */ e(Ee, { to: "/login" }) }),
246
- /* @__PURE__ */ e(te, { path: "/login", element: n.login }),
247
- /* @__PURE__ */ e(te, { path: "/main/*", element: n.main })
241
+ let s = /* @__PURE__ */ l(Le, { children: [
242
+ /* @__PURE__ */ e(Y, { path: "/", element: /* @__PURE__ */ e(_e, { to: "/login" }) }),
243
+ /* @__PURE__ */ e(Y, { path: "/ssoLogin", element: n.ssoLogin }),
244
+ /* @__PURE__ */ e(Y, { path: "/login", element: n.login }),
245
+ /* @__PURE__ */ e(Y, { path: "/main/*", element: n.main }),
246
+ /* @__PURE__ */ e(Y, { path: "/sessionNotice", element: n.sessionNotice })
248
247
  ] });
249
- return r && (i = /* @__PURE__ */ e(Me, { children: i })), t && (i = /* @__PURE__ */ e(Le, { children: i })), /* @__PURE__ */ e(De, { children: i });
250
- }, { Content: Wt } = Z, Pe = ({
248
+ return r && (s = /* @__PURE__ */ e($e, { children: s })), t && (s = /* @__PURE__ */ e(We, { children: s })), /* @__PURE__ */ e(He, { children: s });
249
+ }, { Content: Zt } = X, Re = ({
251
250
  config: n = {},
252
251
  children: t
253
252
  }) => {
@@ -263,11 +262,11 @@ const At = ({
263
262
  ...n
264
263
  };
265
264
  return /* @__PURE__ */ e(
266
- Wt,
265
+ Zt,
267
266
  {
268
267
  className: r.wrapper.className,
269
268
  style: r.wrapper.style,
270
- children: /* @__PURE__ */ e(ze, { children: /* @__PURE__ */ e(
269
+ children: /* @__PURE__ */ e(Ve, { children: /* @__PURE__ */ e(
271
270
  "div",
272
271
  {
273
272
  className: r.body.className,
@@ -277,7 +276,7 @@ const At = ({
277
276
  ) })
278
277
  }
279
278
  );
280
- }, $t = "data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M11.9998%2019.9993V20.9993C11.9998%2021.3932%2012.0774%2021.7833%2012.2282%2022.1473C12.3789%2022.5112%2012.5999%2022.8419%2012.8785%2023.1205C13.157%2023.399%2013.4877%2023.62%2013.8517%2023.7708C14.2156%2023.9215%2014.6057%2023.9991%2014.9997%2023.9991C15.3936%2023.9991%2015.7837%2023.9215%2016.1477%2023.7708C16.5116%2023.62%2016.8423%2023.399%2017.1209%2023.1205C17.3994%2022.8419%2017.6204%2022.5112%2017.7712%2022.1473C17.9219%2021.7833%2017.9995%2021.3932%2017.9995%2020.9993V19.9993M20.9994%2011.9997C20.9994%2014.9996%2022.9993%2019.9993%2022.9993%2019.9993H7.00006C7.00006%2019.9993%208.99996%2015.9995%208.99996%2011.9997C8.99996%208.73187%2011.7318%206%2014.9997%206C18.2675%206%2020.9994%208.73187%2020.9994%2011.9997Z'%20stroke='%23485299'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e", Ft = "data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_93_4488)'%3e%3cpath%20d='M18%207H21C22.1046%207%2023%207.89543%2023%209V21C23%2022.1046%2022.1046%2023%2021%2023H18M11%2011L7%2015M7%2015L11%2019M7%2015L19%2015'%20stroke='%23485299'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_93_4488'%3e%3crect%20width='30'%20height='30'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e", _t = "data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M14%206H16C16.5523%206%2017%206.44772%2017%207V7.56879C17%207.99659%2017.2871%208.36825%2017.6822%208.53228C18.0775%208.69638%2018.5377%208.63384%2018.8403%208.33123L19.2426%207.92891C19.6331%207.53838%2020.2663%207.53838%2020.6568%207.92891L22.071%209.34312C22.4616%209.73365%2022.4615%2010.3668%2022.071%2010.7573L21.6688%2011.1596C21.3661%2011.4622%2021.3036%2011.9225%2021.4677%2012.3177C21.6317%2012.7129%2022.0034%2013%2022.4313%2013L23%2013C23.5523%2013%2024%2013.4477%2024%2014V16C24%2016.5523%2023.5523%2017%2023%2017H22.4312C22.0034%2017%2021.6318%2017.2871%2021.4677%2017.6822C21.3036%2018.0775%2021.3661%2018.5377%2021.6688%2018.8403L22.071%2019.2426C22.4616%2019.6331%2022.4616%2020.2663%2022.071%2020.6568L20.6568%2022.071C20.2663%2022.4616%2019.6331%2022.4616%2019.2426%2022.071L18.8403%2021.6688C18.5377%2021.3661%2018.0775%2021.3036%2017.6822%2021.4677C17.2871%2021.6318%2017%2022.0034%2017%2022.4312V23C17%2023.5523%2016.5523%2024%2016%2024H14C13.4477%2024%2013%2023.5523%2013%2023V22.4313C13%2022.0034%2012.7129%2021.6317%2012.3177%2021.4677C11.9225%2021.3036%2011.4622%2021.3661%2011.1596%2021.6688L10.7573%2022.071C10.3668%2022.4616%209.73363%2022.4616%209.34311%2022.071L7.92889%2020.6568C7.53837%2020.2663%207.53837%2019.6331%207.92889%2019.2426L8.33123%2018.8403C8.63384%2018.5377%208.69638%2018.0775%208.53228%2017.6822C8.36825%2017.2871%207.99659%2017%207.56879%2017H7C6.44772%2017%206%2016.5523%206%2016V14C6%2013.4477%206.44772%2013%207%2013L7.56877%2013C7.99658%2013%208.36825%2012.7129%208.53229%2012.3178C8.6964%2011.9225%208.63386%2011.4623%208.33123%2011.1597L7.92891%2010.7573C7.53838%2010.3668%207.53838%209.73365%207.92891%209.34313L9.34312%207.92891C9.73365%207.53839%2010.3668%207.53839%2010.7573%207.92891L11.1597%208.33123C11.4623%208.63386%2011.9225%208.6964%2012.3178%208.53229C12.7129%208.36825%2013%207.99658%2013%207.56876V7C13%206.44772%2013.4477%206%2014%206Z'%20stroke='%23485299'%20stroke-width='1.5'/%3e%3cpath%20d='M17%2015C17%2016.1046%2016.1046%2017%2015%2017C13.8954%2017%2013%2016.1046%2013%2015C13%2013.8954%2013.8954%2013%2015%2013C16.1046%2013%2017%2013.8954%2017%2015Z'%20stroke='%23485299'%20stroke-width='1.5'/%3e%3c/svg%3e", { Header: Gt } = Z, { confirm: Ht } = $e, $ = {
279
+ }, Yt = "data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M11.9998%2019.9993V20.9993C11.9998%2021.3932%2012.0774%2021.7833%2012.2282%2022.1473C12.3789%2022.5112%2012.5999%2022.8419%2012.8785%2023.1205C13.157%2023.399%2013.4877%2023.62%2013.8517%2023.7708C14.2156%2023.9215%2014.6057%2023.9991%2014.9997%2023.9991C15.3936%2023.9991%2015.7837%2023.9215%2016.1477%2023.7708C16.5116%2023.62%2016.8423%2023.399%2017.1209%2023.1205C17.3994%2022.8419%2017.6204%2022.5112%2017.7712%2022.1473C17.9219%2021.7833%2017.9995%2021.3932%2017.9995%2020.9993V19.9993M20.9994%2011.9997C20.9994%2014.9996%2022.9993%2019.9993%2022.9993%2019.9993H7.00006C7.00006%2019.9993%208.99996%2015.9995%208.99996%2011.9997C8.99996%208.73187%2011.7318%206%2014.9997%206C18.2675%206%2020.9994%208.73187%2020.9994%2011.9997Z'%20stroke='%23485299'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e", qt = "data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_93_4488)'%3e%3cpath%20d='M18%207H21C22.1046%207%2023%207.89543%2023%209V21C23%2022.1046%2022.1046%2023%2021%2023H18M11%2011L7%2015M7%2015L11%2019M7%2015L19%2015'%20stroke='%23485299'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_93_4488'%3e%3crect%20width='30'%20height='30'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e", Qt = "data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M14%206H16C16.5523%206%2017%206.44772%2017%207V7.56879C17%207.99659%2017.2871%208.36825%2017.6822%208.53228C18.0775%208.69638%2018.5377%208.63384%2018.8403%208.33123L19.2426%207.92891C19.6331%207.53838%2020.2663%207.53838%2020.6568%207.92891L22.071%209.34312C22.4616%209.73365%2022.4615%2010.3668%2022.071%2010.7573L21.6688%2011.1596C21.3661%2011.4622%2021.3036%2011.9225%2021.4677%2012.3177C21.6317%2012.7129%2022.0034%2013%2022.4313%2013L23%2013C23.5523%2013%2024%2013.4477%2024%2014V16C24%2016.5523%2023.5523%2017%2023%2017H22.4312C22.0034%2017%2021.6318%2017.2871%2021.4677%2017.6822C21.3036%2018.0775%2021.3661%2018.5377%2021.6688%2018.8403L22.071%2019.2426C22.4616%2019.6331%2022.4616%2020.2663%2022.071%2020.6568L20.6568%2022.071C20.2663%2022.4616%2019.6331%2022.4616%2019.2426%2022.071L18.8403%2021.6688C18.5377%2021.3661%2018.0775%2021.3036%2017.6822%2021.4677C17.2871%2021.6318%2017%2022.0034%2017%2022.4312V23C17%2023.5523%2016.5523%2024%2016%2024H14C13.4477%2024%2013%2023.5523%2013%2023V22.4313C13%2022.0034%2012.7129%2021.6317%2012.3177%2021.4677C11.9225%2021.3036%2011.4622%2021.3661%2011.1596%2021.6688L10.7573%2022.071C10.3668%2022.4616%209.73363%2022.4616%209.34311%2022.071L7.92889%2020.6568C7.53837%2020.2663%207.53837%2019.6331%207.92889%2019.2426L8.33123%2018.8403C8.63384%2018.5377%208.69638%2018.0775%208.53228%2017.6822C8.36825%2017.2871%207.99659%2017%207.56879%2017H7C6.44772%2017%206%2016.5523%206%2016V14C6%2013.4477%206.44772%2013%207%2013L7.56877%2013C7.99658%2013%208.36825%2012.7129%208.53229%2012.3178C8.6964%2011.9225%208.63386%2011.4623%208.33123%2011.1597L7.92891%2010.7573C7.53838%2010.3668%207.53838%209.73365%207.92891%209.34313L9.34312%207.92891C9.73365%207.53839%2010.3668%207.53839%2010.7573%207.92891L11.1597%208.33123C11.4623%208.63386%2011.9225%208.6964%2012.3178%208.53229C12.7129%208.36825%2013%207.99658%2013%207.56876V7C13%206.44772%2013.4477%206%2014%206Z'%20stroke='%23485299'%20stroke-width='1.5'/%3e%3cpath%20d='M17%2015C17%2016.1046%2016.1046%2017%2015%2017C13.8954%2017%2013%2016.1046%2013%2015C13%2013.8954%2013.8954%2013%2015%2013C16.1046%2013%2017%2013.8954%2017%2015Z'%20stroke='%23485299'%20stroke-width='1.5'/%3e%3c/svg%3e", { Header: Xt } = X, { confirm: Jt } = Ze, F = {
281
280
  light: {
282
281
  headerBg: "#ffffff",
283
282
  headerText: "#000000",
@@ -330,11 +329,11 @@ const At = ({
330
329
  buttonDefaultBorder: "#dddddd",
331
330
  buttonPermissionBorder: "#bdb1ff"
332
331
  }
333
- }, de = {
332
+ }, ge = {
334
333
  0: "작게",
335
334
  1: "보통",
336
335
  2: "크게"
337
- }, Se = ({ config: n = {}, children: t }) => {
336
+ }, ze = ({ config: n = {}, children: t }) => {
338
337
  const r = {
339
338
  gap: 14,
340
339
  minWidth: 200,
@@ -367,65 +366,65 @@ const At = ({
367
366
  ...n.logo
368
367
  },
369
368
  right: r
370
- }, i = ge(), a = J(null), b = Je(), {
371
- componentSize: l,
372
- setComponentSize: c,
373
- gridSize: v,
374
- setGridSize: m,
375
- spacingSize: d,
376
- setSpacingSize: h,
369
+ }, s = ve(), a = J(null), g = st(() => s("/login", { replace: !0 })), {
370
+ componentSize: c,
371
+ setComponentSize: u,
372
+ gridSize: y,
373
+ setGridSize: h,
374
+ spacingSize: k,
375
+ setSpacingSize: d,
377
376
  enableProtectWrapper: p,
378
- setEnableProtectWrapper: N,
379
- theme: y,
380
- setTheme: g,
381
- clearAllGridLayouts: k
382
- } = Ne(), T = 1, z = 2, E = 2, w = (u, S) => {
377
+ setEnableProtectWrapper: I,
378
+ theme: b,
379
+ setTheme: m,
380
+ clearAllGridLayouts: v
381
+ } = Ee(), T = 1, D = 2, R = 2, w = (f, P) => {
383
382
  try {
384
- if (!/^[a-zA-Z0-9-]+$/.test(u) || !/^[#a-zA-Z0-9()\s,.-]+$/.test(S)) return;
385
- document.documentElement.style.setProperty(u, S);
386
- } catch (I) {
387
- console.error("CSS variable setting failed:", I);
383
+ if (!/^[a-zA-Z0-9-]+$/.test(f) || !/^[#a-zA-Z0-9()\s,.-]+$/.test(P)) return;
384
+ document.documentElement.style.setProperty(f, P);
385
+ } catch (N) {
386
+ console.error("CSS variable setting failed:", N);
388
387
  }
389
- }, F = (u) => {
390
- if (!$[u]) return;
391
- g(u);
392
- const S = { ...$[u] };
393
- w("--header-bg", S.headerBg), w("--header-text", S.headerText), w("--sidebar-bg", S.sidebarBg), w("--sidebar-text", S.sidebarText), w("--button-primary", S.buttonPrimary), w("--button-primary-hover", S.buttonPrimaryHover), w("--button-primary-active", S.buttonPrimaryActive), w("--button-default", S.buttonDefault), w("--button-default-hover", S.buttonDefaultHover), w("--button-default-border", S.buttonDefaultBorder), w(
388
+ }, G = (f) => {
389
+ if (!F[f]) return;
390
+ m(f);
391
+ const P = { ...F[f] };
392
+ w("--header-bg", P.headerBg), w("--header-text", P.headerText), w("--sidebar-bg", P.sidebarBg), w("--sidebar-text", P.sidebarText), w("--button-primary", P.buttonPrimary), w("--button-primary-hover", P.buttonPrimaryHover), w("--button-primary-active", P.buttonPrimaryActive), w("--button-default", P.buttonDefault), w("--button-default-hover", P.buttonDefaultHover), w("--button-default-border", P.buttonDefaultBorder), w(
394
393
  "--button-permission-border",
395
- S.buttonPermissionBorder
396
- ), a.current && a.current.setAttribute("data-theme", u), document.documentElement.setAttribute("data-theme", u);
394
+ P.buttonPermissionBorder
395
+ ), a.current && a.current.setAttribute("data-theme", f), document.documentElement.setAttribute("data-theme", f);
397
396
  };
398
- D(() => {
399
- if (y && $[y]) {
400
- const u = { ...$[y] };
401
- w("--header-bg", u.headerBg), w("--header-text", u.headerText), w("--sidebar-bg", u.sidebarBg), w("--sidebar-text", u.sidebarText), w("--button-primary", u.buttonPrimary), w("--button-primary-hover", u.buttonPrimaryHover), w(
397
+ E(() => {
398
+ if (b && F[b]) {
399
+ const f = { ...F[b] };
400
+ w("--header-bg", f.headerBg), w("--header-text", f.headerText), w("--sidebar-bg", f.sidebarBg), w("--sidebar-text", f.sidebarText), w("--button-primary", f.buttonPrimary), w("--button-primary-hover", f.buttonPrimaryHover), w(
402
401
  "--button-primary-active",
403
- u.buttonPrimaryActive
404
- ), w("--button-default", u.buttonDefault), w("--button-default-hover", u.buttonDefaultHover), w(
402
+ f.buttonPrimaryActive
403
+ ), w("--button-default", f.buttonDefault), w("--button-default-hover", f.buttonDefaultHover), w(
405
404
  "--button-default-border",
406
- u.buttonDefaultBorder
405
+ f.buttonDefaultBorder
407
406
  ), w(
408
407
  "--button-permission-border",
409
- u.buttonPermissionBorder
410
- ), a.current && a.current.setAttribute("data-theme", y), document.documentElement.setAttribute("data-theme", y);
408
+ f.buttonPermissionBorder
409
+ ), a.current && a.current.setAttribute("data-theme", b), document.documentElement.setAttribute("data-theme", b);
411
410
  } else
412
- F("modern");
413
- }, [y]);
414
- const H = () => {
415
- b(), i("/login");
411
+ G("modern");
412
+ }, [b]);
413
+ const K = () => {
414
+ g();
416
415
  };
417
- Ce ? Ce("HH:mm:ss") : (/* @__PURE__ */ new Date()).toLocaleTimeString("ko-KR");
418
- const j = $[y]?.headerBg || "#f3f4ff", Y = /* @__PURE__ */ C(
416
+ Ne ? Ne("HH:mm:ss") : (/* @__PURE__ */ new Date()).toLocaleTimeString("ko-KR");
417
+ const U = F[b]?.headerBg || "#f3f4ff", ee = /* @__PURE__ */ l(
419
418
  "div",
420
419
  {
421
420
  style: {
422
421
  padding: "16px",
423
- backgroundColor: j,
422
+ backgroundColor: U,
424
423
  borderRadius: "8px",
425
424
  minWidth: "320px"
426
425
  },
427
426
  children: [
428
- /* @__PURE__ */ C("div", { style: { marginBottom: "16px" }, children: [
427
+ /* @__PURE__ */ l("div", { style: { marginBottom: "16px" }, children: [
429
428
  /* @__PURE__ */ e(
430
429
  "div",
431
430
  {
@@ -433,7 +432,7 @@ const At = ({
433
432
  children: "테마 선택"
434
433
  }
435
434
  ),
436
- /* @__PURE__ */ C(
435
+ /* @__PURE__ */ l(
437
436
  "div",
438
437
  {
439
438
  style: {
@@ -446,43 +445,43 @@ const At = ({
446
445
  /* @__PURE__ */ e(
447
446
  B,
448
447
  {
449
- type: y === "modern" ? "primary" : "default",
448
+ type: b === "modern" ? "primary" : "default",
450
449
  size: "small",
451
- onClick: () => F("modern"),
450
+ onClick: () => G("modern"),
452
451
  style: {
453
452
  width: "100%",
454
- backgroundColor: y === "modern" ? $.modern.headerBg : void 0,
455
- color: y === "modern" ? $.modern.headerText : void 0,
456
- borderColor: y === "modern" ? $.modern.headerBg : void 0
453
+ backgroundColor: b === "modern" ? F.modern.headerBg : void 0,
454
+ color: b === "modern" ? F.modern.headerText : void 0,
455
+ borderColor: b === "modern" ? F.modern.headerBg : void 0
457
456
  },
458
457
  children: "모던"
459
458
  },
460
459
  "modern"
461
460
  ),
462
- Object.entries($).filter(([u]) => u !== "modern").map(([u, S]) => /* @__PURE__ */ e(
461
+ Object.entries(F).filter(([f]) => f !== "modern").map(([f, P]) => /* @__PURE__ */ e(
463
462
  B,
464
463
  {
465
- type: y === u ? "primary" : "default",
464
+ type: b === f ? "primary" : "default",
466
465
  size: "small",
467
- onClick: () => F(u),
466
+ onClick: () => G(f),
468
467
  style: {
469
468
  width: "100%",
470
- backgroundColor: y === u ? S.headerBg : void 0,
471
- color: y === u ? S.headerText : void 0,
472
- borderColor: y === u ? S.headerBg : void 0
469
+ backgroundColor: b === f ? P.headerBg : void 0,
470
+ color: b === f ? P.headerText : void 0,
471
+ borderColor: b === f ? P.headerBg : void 0
473
472
  },
474
- children: u
473
+ children: f
475
474
  },
476
- u
475
+ f
477
476
  ))
478
477
  ]
479
478
  }
480
479
  )
481
480
  ] }),
482
- /* @__PURE__ */ e(ae, { style: { margin: "16px 0" } }),
483
- /* @__PURE__ */ C("div", { style: { marginBottom: "16px" }, children: [
484
- /* @__PURE__ */ C(
485
- ne,
481
+ /* @__PURE__ */ e(he, { style: { margin: "16px 0" } }),
482
+ /* @__PURE__ */ l("div", { style: { marginBottom: "16px" }, children: [
483
+ /* @__PURE__ */ l(
484
+ ie,
486
485
  {
487
486
  justify: "space-between",
488
487
  align: "center",
@@ -494,9 +493,9 @@ const At = ({
494
493
  {
495
494
  type: "text",
496
495
  size: "small",
497
- icon: /* @__PURE__ */ e(ee, {}),
498
- onClick: () => c(T),
499
- disabled: l === T,
496
+ icon: /* @__PURE__ */ e(oe, {}),
497
+ onClick: () => u(T),
498
+ disabled: c === T,
500
499
  style: { padding: "0 4px" }
501
500
  }
502
501
  )
@@ -504,20 +503,20 @@ const At = ({
504
503
  }
505
504
  ),
506
505
  /* @__PURE__ */ e(
507
- le,
506
+ me,
508
507
  {
509
- marks: de,
510
- value: l,
508
+ marks: ge,
509
+ value: c,
511
510
  min: 0,
512
511
  max: 2,
513
512
  step: 1,
514
- onChange: (u) => c(u)
513
+ onChange: (f) => u(f)
515
514
  }
516
515
  )
517
516
  ] }),
518
- /* @__PURE__ */ C("div", { style: { marginBottom: "16px" }, children: [
519
- /* @__PURE__ */ C(
520
- ne,
517
+ /* @__PURE__ */ l("div", { style: { marginBottom: "16px" }, children: [
518
+ /* @__PURE__ */ l(
519
+ ie,
521
520
  {
522
521
  justify: "space-between",
523
522
  align: "center",
@@ -529,9 +528,9 @@ const At = ({
529
528
  {
530
529
  type: "text",
531
530
  size: "small",
532
- icon: /* @__PURE__ */ e(ee, {}),
533
- onClick: () => m(z),
534
- disabled: v === z,
531
+ icon: /* @__PURE__ */ e(oe, {}),
532
+ onClick: () => h(D),
533
+ disabled: y === D,
535
534
  style: { padding: "0 4px" }
536
535
  }
537
536
  )
@@ -539,20 +538,20 @@ const At = ({
539
538
  }
540
539
  ),
541
540
  /* @__PURE__ */ e(
542
- le,
541
+ me,
543
542
  {
544
- marks: de,
545
- value: v,
543
+ marks: ge,
544
+ value: y,
546
545
  min: 0,
547
546
  max: 2,
548
547
  step: 1,
549
- onChange: (u) => m(u)
548
+ onChange: (f) => h(f)
550
549
  }
551
550
  )
552
551
  ] }),
553
- /* @__PURE__ */ C("div", { style: { marginBottom: "16px" }, children: [
554
- /* @__PURE__ */ C(
555
- ne,
552
+ /* @__PURE__ */ l("div", { style: { marginBottom: "16px" }, children: [
553
+ /* @__PURE__ */ l(
554
+ ie,
556
555
  {
557
556
  justify: "space-between",
558
557
  align: "center",
@@ -564,9 +563,9 @@ const At = ({
564
563
  {
565
564
  type: "text",
566
565
  size: "small",
567
- icon: /* @__PURE__ */ e(ee, {}),
568
- onClick: () => h(E),
569
- disabled: d === E,
566
+ icon: /* @__PURE__ */ e(oe, {}),
567
+ onClick: () => d(R),
568
+ disabled: k === R,
570
569
  style: { padding: "0 4px" }
571
570
  }
572
571
  )
@@ -574,19 +573,19 @@ const At = ({
574
573
  }
575
574
  ),
576
575
  /* @__PURE__ */ e(
577
- le,
576
+ me,
578
577
  {
579
- marks: de,
580
- value: d,
578
+ marks: ge,
579
+ value: k,
581
580
  min: 0,
582
581
  max: 2,
583
582
  step: 1,
584
- onChange: (u) => h(u)
583
+ onChange: (f) => d(f)
585
584
  }
586
585
  )
587
586
  ] }),
588
- /* @__PURE__ */ e(ae, { style: { margin: "16px 0" } }),
589
- /* @__PURE__ */ C(
587
+ /* @__PURE__ */ e(he, { style: { margin: "16px 0" } }),
588
+ /* @__PURE__ */ l(
590
589
  "div",
591
590
  {
592
591
  style: {
@@ -598,29 +597,29 @@ const At = ({
598
597
  children: [
599
598
  /* @__PURE__ */ e("span", { style: { fontSize: "14px", fontWeight: 500 }, children: "화면 보호 활성화" }),
600
599
  /* @__PURE__ */ e(
601
- We,
600
+ Ue,
602
601
  {
603
602
  checked: p,
604
- onChange: N
603
+ onChange: I
605
604
  }
606
605
  )
607
606
  ]
608
607
  }
609
608
  ),
610
- /* @__PURE__ */ e(ae, { style: { margin: "16px 0" } }),
609
+ /* @__PURE__ */ e(he, { style: { margin: "16px 0" } }),
611
610
  /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(
612
611
  B,
613
612
  {
614
613
  type: "default",
615
614
  danger: !0,
616
615
  size: "small",
617
- icon: /* @__PURE__ */ e(ee, {}),
616
+ icon: /* @__PURE__ */ e(oe, {}),
618
617
  onClick: () => {
619
- Ht({
618
+ Jt({
620
619
  title: "전체 그리드 레이아웃 초기화",
621
620
  content: "임의 변경한 그리드 레이아웃 변경사항을 초기화하시겠습니까? 기존 열려있는 화면들은 다시 열어야 적용됩니다.",
622
621
  onOk() {
623
- k();
622
+ v();
624
623
  }
625
624
  });
626
625
  },
@@ -632,8 +631,8 @@ const At = ({
632
631
  ]
633
632
  }
634
633
  );
635
- return /* @__PURE__ */ C(
636
- Gt,
634
+ return /* @__PURE__ */ l(
635
+ Xt,
637
636
  {
638
637
  className: o.wrapper.className,
639
638
  style: { ...o.wrapper.style },
@@ -659,7 +658,7 @@ const At = ({
659
658
  children: t
660
659
  }
661
660
  ),
662
- /* @__PURE__ */ C(
661
+ /* @__PURE__ */ l(
663
662
  "div",
664
663
  {
665
664
  className: "header-right",
@@ -668,29 +667,29 @@ const At = ({
668
667
  minWidth: o.right?.minWidth
669
668
  },
670
669
  children: [
671
- o.right?.items?.map((u, S) => /* @__PURE__ */ e("div", { children: u }, S)),
670
+ o.right?.items?.map((f, P) => /* @__PURE__ */ e("div", { children: f }, P)),
672
671
  o.right?.alarm?.visible && /* @__PURE__ */ e(
673
672
  B,
674
673
  {
675
674
  type: "text",
676
- icon: /* @__PURE__ */ e("img", { src: $t, alt: "알림" }),
675
+ icon: /* @__PURE__ */ e("img", { src: Yt, alt: "알림" }),
677
676
  className: "alarm-btn",
678
677
  onClick: o.right?.alarm?.onClick
679
678
  }
680
679
  ),
681
680
  o.right?.theme?.visible && /* @__PURE__ */ e(
682
- Fe,
681
+ Ye,
683
682
  {
684
- content: Y,
683
+ content: ee,
685
684
  title: "개인 설정",
686
685
  trigger: "click",
687
686
  placement: "bottomRight",
688
- onOpenChange: (u) => o.right?.theme?.onOpenChange?.(u),
687
+ onOpenChange: (f) => o.right?.theme?.onOpenChange?.(f),
689
688
  children: /* @__PURE__ */ e(
690
689
  B,
691
690
  {
692
691
  type: "text",
693
- icon: /* @__PURE__ */ e("img", { src: _t, alt: "개인설정" }),
692
+ icon: /* @__PURE__ */ e("img", { src: Qt, alt: "개인설정" }),
694
693
  className: "theme-btn",
695
694
  onClick: o.right?.theme?.onClick
696
695
  }
@@ -701,15 +700,15 @@ const At = ({
701
700
  B,
702
701
  {
703
702
  type: "text",
704
- icon: /* @__PURE__ */ e("img", { src: Ft, alt: "로그아웃" }),
705
- onClick: o.right?.logout?.onClick || H,
703
+ icon: /* @__PURE__ */ e("img", { src: qt, alt: "로그아웃" }),
704
+ onClick: o.right?.logout?.onClick || K,
706
705
  className: "logout-btn"
707
706
  }
708
707
  ),
709
708
  o.right?.avatar?.visible && /* @__PURE__ */ e(
710
- _e,
709
+ qe,
711
710
  {
712
- icon: /* @__PURE__ */ e(rt, {}),
711
+ icon: /* @__PURE__ */ e(dt, {}),
713
712
  className: "avatar",
714
713
  style: {
715
714
  width: o.right?.avatar?.width,
@@ -724,7 +723,7 @@ const At = ({
724
723
  ]
725
724
  }
726
725
  );
727
- }, he = /* @__PURE__ */ Object.freeze({
726
+ }, ye = /* @__PURE__ */ Object.freeze({
728
727
  Translate: {
729
728
  toString(n) {
730
729
  if (!n)
@@ -750,7 +749,7 @@ const At = ({
750
749
  Transform: {
751
750
  toString(n) {
752
751
  if (n)
753
- return [he.Translate.toString(n), he.Scale.toString(n)].join(" ");
752
+ return [ye.Translate.toString(n), ye.Scale.toString(n)].join(" ");
754
753
  }
755
754
  },
756
755
  Transition: {
@@ -763,61 +762,62 @@ const At = ({
763
762
  return t + " " + r + "ms " + o;
764
763
  }
765
764
  }
766
- }), jt = fe(
765
+ }), en = we(
767
766
  ({ className: n, ...t }) => {
768
767
  const r = J(null), {
769
768
  attributes: o,
770
- listeners: i,
769
+ listeners: s,
771
770
  transform: a,
772
- transition: b,
773
- isDragging: l,
774
- setNodeRef: c
775
- } = Nt({ id: t["data-node-key"] }), [v, m] = A();
776
- D(() => {
777
- const h = r.current;
778
- if (h)
779
- if (l) {
780
- const p = Math.round(h.getBoundingClientRect().width);
781
- m(p);
771
+ transition: g,
772
+ isDragging: c,
773
+ setNodeRef: u
774
+ } = Rt({ id: t["data-node-key"] }), [y, h] = $();
775
+ E(() => {
776
+ const v = r.current;
777
+ if (v)
778
+ if (c) {
779
+ const T = Math.round(v.getBoundingClientRect().width);
780
+ h(T);
782
781
  } else
783
- m(void 0);
784
- }, [l]);
785
- const d = {
782
+ h(void 0);
783
+ }, [c]);
784
+ const k = {
786
785
  ...t.style,
787
- transform: a ? he.Transform.toString(a) : void 0,
788
- transition: b ?? "transform 0.16s ease",
786
+ transform: a ? ye.Transform.toString(a) : void 0,
787
+ transition: g ?? "transform 0.16s ease",
789
788
  cursor: "grab",
790
789
  userSelect: "none",
791
790
  willChange: "transform",
792
791
  // ✅ 드래그 중 픽셀 폭 고정 (flex 재계산 억제)
793
- width: v ?? void 0,
794
- minWidth: v ?? void 0,
795
- maxWidth: v ?? void 0,
796
- flex: v !== void 0 ? "0 0 auto" : void 0
797
- };
798
- return Qe(t.children, {
799
- ref: (h) => {
800
- r.current !== h && (r.current = h), c(h);
792
+ width: y ?? void 0,
793
+ minWidth: y ?? void 0,
794
+ maxWidth: y ?? void 0,
795
+ flex: y !== void 0 ? "0 0 auto" : void 0
796
+ }, d = t.children, p = d.props?.className || "", m = t["data-gubun"] === "C" ? p ? `${p} tab-special` : "tab-special" : p;
797
+ return ot(d, {
798
+ ref: (v) => {
799
+ r.current !== v && (r.current = v), u(v);
801
800
  },
802
- style: d,
801
+ className: m,
802
+ style: k,
803
803
  ...o,
804
- ...i
804
+ ...s
805
805
  });
806
806
  }
807
- ), Vt = fe(function({
807
+ ), tn = we(function({
808
808
  config: t,
809
809
  isFirst: r,
810
810
  isLast: o,
811
- canCloseAll: i,
811
+ canCloseAll: s,
812
812
  onFirst: a,
813
- onPrev: b,
814
- onNext: l,
815
- onLast: c,
816
- onCloseAll: v
813
+ onPrev: g,
814
+ onNext: c,
815
+ onLast: u,
816
+ onCloseAll: y
817
817
  }) {
818
- return /* @__PURE__ */ C("div", { className: t.wrapper?.className, style: t.wrapper?.style, children: [
818
+ return /* @__PURE__ */ l("div", { className: t.wrapper?.className, style: t.wrapper?.style, children: [
819
819
  /* @__PURE__ */ e(
820
- X,
820
+ te,
821
821
  {
822
822
  title: "첫 번째 탭",
823
823
  className: t.tooltip?.className,
@@ -828,7 +828,7 @@ const At = ({
828
828
  className: t.buttons?.className,
829
829
  style: t.buttons?.style,
830
830
  size: "small",
831
- icon: /* @__PURE__ */ e(st, {}),
831
+ icon: /* @__PURE__ */ e(pt, {}),
832
832
  onClick: a,
833
833
  disabled: r
834
834
  }
@@ -836,7 +836,7 @@ const At = ({
836
836
  }
837
837
  ),
838
838
  /* @__PURE__ */ e(
839
- X,
839
+ te,
840
840
  {
841
841
  title: "이전 탭",
842
842
  className: t.tooltip?.className,
@@ -847,15 +847,15 @@ const At = ({
847
847
  className: t.buttons?.className,
848
848
  style: t.buttons?.style,
849
849
  size: "small",
850
- icon: /* @__PURE__ */ e(it, {}),
851
- onClick: b,
850
+ icon: /* @__PURE__ */ e(gt, {}),
851
+ onClick: g,
852
852
  disabled: r
853
853
  }
854
854
  )
855
855
  }
856
856
  ),
857
857
  /* @__PURE__ */ e(
858
- X,
858
+ te,
859
859
  {
860
860
  title: "다음 탭",
861
861
  className: t.tooltip?.className,
@@ -866,15 +866,15 @@ const At = ({
866
866
  className: t.buttons?.className,
867
867
  style: t.buttons?.style,
868
868
  size: "small",
869
- icon: /* @__PURE__ */ e(at, {}),
870
- onClick: l,
869
+ icon: /* @__PURE__ */ e(ft, {}),
870
+ onClick: c,
871
871
  disabled: o
872
872
  }
873
873
  )
874
874
  }
875
875
  ),
876
876
  /* @__PURE__ */ e(
877
- X,
877
+ te,
878
878
  {
879
879
  title: "마지막 탭",
880
880
  className: t.tooltip?.className,
@@ -885,15 +885,15 @@ const At = ({
885
885
  className: t.buttons?.className,
886
886
  style: t.buttons?.style,
887
887
  size: "small",
888
- icon: /* @__PURE__ */ e(lt, {}),
889
- onClick: c,
888
+ icon: /* @__PURE__ */ e(bt, {}),
889
+ onClick: u,
890
890
  disabled: o
891
891
  }
892
892
  )
893
893
  }
894
894
  ),
895
895
  /* @__PURE__ */ e(
896
- X,
896
+ te,
897
897
  {
898
898
  title: "모든 탭 닫기",
899
899
  className: t.tooltip?.className,
@@ -904,15 +904,15 @@ const At = ({
904
904
  className: t.buttons?.className,
905
905
  style: t.buttons?.style,
906
906
  size: "small",
907
- icon: /* @__PURE__ */ e(U, {}),
908
- onClick: v,
909
- disabled: !i
907
+ icon: /* @__PURE__ */ e(ne, {}),
908
+ onClick: y,
909
+ disabled: !s
910
910
  }
911
911
  )
912
912
  }
913
913
  )
914
914
  ] });
915
- }), Ut = ({
915
+ }), nn = ({
916
916
  config: n = {}
917
917
  }) => {
918
918
  const t = {
@@ -940,59 +940,59 @@ const At = ({
940
940
  ...n?.nav
941
941
  },
942
942
  ...n
943
- }, r = O((s) => s.tabs), o = O((s) => s.activeMenuId), i = O((s) => s.pinnedTabs), a = O((s) => s.focusTab), b = O((s) => s.closeTab), l = O((s) => s.reorderTabs), c = O((s) => s.togglePinTab), v = O((s) => s.refreshTab), m = O((s) => s.closeOtherTabs), d = O((s) => s.closeRightTabs);
944
- O((s) => s.closeAllTabs);
945
- const h = ft(
946
- bt(yt, { activationConstraint: { distance: 6 } })
947
- ), p = (s) => {
948
- a(s);
949
- }, N = (s, x) => {
950
- x === "remove" && typeof s == "string" && b(s);
951
- }, y = () => {
943
+ }, r = O((i) => i.tabs), o = O((i) => i.activeMenuId), s = O((i) => i.pinnedTabs), a = O((i) => i.focusTab), g = O((i) => i.closeTab), c = O((i) => i.reorderTabs), u = O((i) => i.togglePinTab), y = O((i) => i.refreshTab), h = O((i) => i.closeOtherTabs), k = O((i) => i.closeRightTabs);
944
+ O((i) => i.closeAllTabs);
945
+ const d = St(
946
+ Pt(Tt, { activationConstraint: { distance: 6 } })
947
+ ), p = (i) => {
948
+ a(i);
949
+ }, I = (i, x) => {
950
+ x === "remove" && typeof i == "string" && g(i);
951
+ }, b = () => {
952
952
  r.length > 0 && a(r[0].key);
953
- }, g = () => {
953
+ }, m = () => {
954
954
  if (!o || r.length <= 1) return;
955
- const s = r.findIndex((x) => x.key === o);
956
- s > 0 && a(r[s - 1].key);
957
- }, k = () => {
955
+ const i = r.findIndex((x) => x.key === o);
956
+ i > 0 && a(r[i - 1].key);
957
+ }, v = () => {
958
958
  if (!o || r.length <= 1) return;
959
- const s = r.findIndex((x) => x.key === o);
960
- s < r.length - 1 && a(r[s + 1].key);
959
+ const i = r.findIndex((x) => x.key === o);
960
+ i < r.length - 1 && a(r[i + 1].key);
961
961
  }, T = () => {
962
962
  r.length > 0 && a(r[r.length - 1].key);
963
- }, z = () => {
964
- r.forEach((s) => {
965
- i.has(s.key) || b(s.key);
963
+ }, D = () => {
964
+ r.forEach((i) => {
965
+ s.has(i.key) || g(i.key);
966
966
  });
967
- }, E = R((s) => (x) => {
967
+ }, R = z((i) => (x) => {
968
968
  x.preventDefault(), x.stopPropagation();
969
- }, []), w = R(
970
- (s) => {
971
- const x = i.has(s), M = r.findIndex((q) => q.key === s), L = M >= 0 && M < r.length - 1, G = r.length > 1;
969
+ }, []), w = z(
970
+ (i) => {
971
+ const x = s.has(i), L = r.findIndex((re) => re.key === i), M = L >= 0 && L < r.length - 1, j = r.length > 1;
972
972
  return [
973
973
  {
974
974
  key: "close",
975
975
  label: "닫기",
976
- icon: /* @__PURE__ */ e(U, {}),
976
+ icon: /* @__PURE__ */ e(ne, {}),
977
977
  onClick: () => {
978
- x || b(s);
978
+ x || g(i);
979
979
  },
980
980
  disabled: x
981
981
  },
982
982
  {
983
983
  key: "pin",
984
984
  label: x ? "고정 해제" : "고정",
985
- icon: /* @__PURE__ */ e(ot, {}),
985
+ icon: /* @__PURE__ */ e(ut, {}),
986
986
  onClick: () => {
987
- c(s);
987
+ u(i);
988
988
  }
989
989
  },
990
990
  {
991
991
  key: "refresh",
992
992
  label: "새로고침",
993
- icon: /* @__PURE__ */ e(ye, {}),
993
+ icon: /* @__PURE__ */ e(de, {}),
994
994
  onClick: () => {
995
- v(s);
995
+ y(i);
996
996
  }
997
997
  },
998
998
  {
@@ -1001,27 +1001,27 @@ const At = ({
1001
1001
  {
1002
1002
  key: "closeOthers",
1003
1003
  label: "다른 탭 닫기",
1004
- icon: /* @__PURE__ */ e(U, {}),
1004
+ icon: /* @__PURE__ */ e(ne, {}),
1005
1005
  onClick: () => {
1006
- m(s);
1006
+ h(i);
1007
1007
  },
1008
- disabled: !G
1008
+ disabled: !j
1009
1009
  },
1010
1010
  {
1011
1011
  key: "closeRight",
1012
1012
  label: "우측 탭 닫기",
1013
- icon: /* @__PURE__ */ e(U, {}),
1013
+ icon: /* @__PURE__ */ e(ne, {}),
1014
1014
  onClick: () => {
1015
- d(s);
1015
+ k(i);
1016
1016
  },
1017
- disabled: !L
1017
+ disabled: !M
1018
1018
  },
1019
1019
  {
1020
1020
  key: "closeAll",
1021
1021
  label: "전체 닫기",
1022
- icon: /* @__PURE__ */ e(U, {}),
1022
+ icon: /* @__PURE__ */ e(ht, {}),
1023
1023
  onClick: () => {
1024
- z();
1024
+ D();
1025
1025
  },
1026
1026
  disabled: r.length === 0
1027
1027
  }
@@ -1029,71 +1029,84 @@ const At = ({
1029
1029
  },
1030
1030
  [
1031
1031
  r,
1032
- i,
1033
- b,
1034
- c,
1035
- v,
1036
- m,
1037
- d
1032
+ s,
1033
+ g,
1034
+ u,
1035
+ y,
1036
+ h,
1037
+ k
1038
1038
  ]
1039
- ), F = o ? r.findIndex((s) => s.key === o) : -1, H = F === 0, j = F === r.length - 1, Y = _(
1040
- () => r.map((s) => ({
1041
- key: s.key,
1042
- label: s.label,
1043
- closable: !i.has(s.key),
1044
- // 고정된 탭은 닫을 없음
1045
- children: null
1046
- // 컨텐츠는 Main 쪽에서 렌더 → 여기선 헤더만 필요
1047
- })),
1048
- [r, i]
1049
- ), [u, S] = A(null), I = R(({ active: s }) => {
1050
- S(null);
1051
- }, []), P = R(
1052
- ({ active: s, over: x }) => {
1053
- if (!x || s.id === x.id) return;
1054
- const M = r.findIndex((Q) => Q.key === s.id), L = r.findIndex((Q) => Q.key === x.id);
1055
- if (M < 0 || L < 0 || M === L) return;
1056
- const G = r.map((Q) => Q.key), q = xt(G, M, L);
1057
- l?.(q);
1039
+ ), G = o ? r.findIndex((i) => i.key === o) : -1, K = G === 0, U = G === r.length - 1, ee = _(
1040
+ () => r.map((i) => {
1041
+ const x = s.has(i.key);
1042
+ return {
1043
+ key: i.key,
1044
+ label: /* @__PURE__ */ l("span", { style: { display: "flex", alignItems: "center", gap: 4 }, children: [
1045
+ x && /* @__PURE__ */ e(
1046
+ mt,
1047
+ {
1048
+ twoToneColor: Nt.default.yellow05,
1049
+ style: { fontSize: "12px" }
1050
+ }
1051
+ ),
1052
+ i.label
1053
+ ] }),
1054
+ closable: !x,
1055
+ // 고정된 탭은 닫을 없음
1056
+ children: null
1057
+ // 컨텐츠는 Main 쪽에서 렌더 → 여기선 헤더만 필요
1058
+ };
1059
+ }),
1060
+ [r, s]
1061
+ ), [f, P] = $(null), N = z(({ active: i }) => {
1062
+ P(null);
1063
+ }, []), S = z(
1064
+ ({ active: i, over: x }) => {
1065
+ if (!x || i.id === x.id) return;
1066
+ const L = r.findIndex((H) => H.key === i.id), M = r.findIndex((H) => H.key === x.id);
1067
+ if (L < 0 || M < 0 || L === M) return;
1068
+ const j = r.map((H) => H.key), re = Ot(j, L, M);
1069
+ c?.(re);
1058
1070
  },
1059
- [r, l]
1060
- ), f = R(
1061
- (s, x) => /* @__PURE__ */ e(
1062
- Ct,
1071
+ [r, c]
1072
+ ), C = z(
1073
+ (i, x) => /* @__PURE__ */ e(
1074
+ Lt,
1063
1075
  {
1064
- sensors: h,
1065
- onDragStart: I,
1066
- onDragEnd: P,
1067
- collisionDetection: vt,
1068
- modifiers: [wt],
1076
+ sensors: d,
1077
+ onDragStart: N,
1078
+ onDragEnd: S,
1079
+ collisionDetection: Mt,
1080
+ modifiers: [Bt],
1069
1081
  children: /* @__PURE__ */ e(
1070
- kt,
1082
+ Et,
1071
1083
  {
1072
- items: r.map((M) => M.key),
1073
- strategy: It,
1074
- children: /* @__PURE__ */ e(x, { ...s, children: (M) => {
1075
- const L = M.key, G = u === L;
1084
+ items: r.map((L) => L.key),
1085
+ strategy: Dt,
1086
+ children: /* @__PURE__ */ e(x, { ...i, children: (L) => {
1087
+ const M = L.key, j = f === M, H = r.find((ue) => ue.key === M)?.gubun;
1076
1088
  return /* @__PURE__ */ e(
1077
- Ge,
1089
+ Qe,
1078
1090
  {
1079
- menu: { items: w(L) },
1091
+ menu: { items: w(M) },
1080
1092
  trigger: ["contextMenu"],
1081
- open: G,
1082
- onOpenChange: (q) => {
1083
- S(q ? L : null);
1093
+ open: j,
1094
+ onOpenChange: (ue) => {
1095
+ P(ue ? M : null);
1084
1096
  },
1085
1097
  children: /* @__PURE__ */ e(
1086
1098
  "span",
1087
1099
  {
1088
- onContextMenu: E(L),
1100
+ onContextMenu: R(M),
1089
1101
  style: { display: "inline-block", width: "100%" },
1090
- children: /* @__PURE__ */ Ie(
1091
- jt,
1102
+ children: /* @__PURE__ */ Oe(
1103
+ en,
1092
1104
  {
1093
- ...M.props,
1094
- key: M.key
1105
+ ...L.props,
1106
+ key: L.key,
1107
+ "data-gubun": H
1095
1108
  },
1096
- M
1109
+ L
1097
1110
  )
1098
1111
  }
1099
1112
  )
@@ -1105,13 +1118,13 @@ const At = ({
1105
1118
  }
1106
1119
  ),
1107
1120
  [
1108
- h,
1109
- I,
1110
- P,
1121
+ d,
1122
+ N,
1123
+ S,
1111
1124
  r,
1112
- u,
1125
+ f,
1113
1126
  w,
1114
- E
1127
+ R
1115
1128
  ]
1116
1129
  );
1117
1130
  return /* @__PURE__ */ e(
@@ -1123,36 +1136,36 @@ const At = ({
1123
1136
  display: r.length === 0 ? "none" : "block"
1124
1137
  },
1125
1138
  children: /* @__PURE__ */ e(
1126
- He,
1139
+ Xe,
1127
1140
  {
1128
1141
  type: "editable-card",
1129
1142
  activeKey: o || void 0,
1130
1143
  onChange: p,
1131
- onEdit: N,
1144
+ onEdit: I,
1132
1145
  className: t.tabs.className,
1133
1146
  style: t.tabs.style,
1134
1147
  hideAdd: !0,
1135
- items: Y,
1148
+ items: ee,
1136
1149
  tabBarExtraContent: /* @__PURE__ */ e(
1137
- Vt,
1150
+ tn,
1138
1151
  {
1139
1152
  config: t?.nav,
1140
- isFirst: !!H,
1141
- isLast: !!j,
1153
+ isFirst: !!K,
1154
+ isLast: !!U,
1142
1155
  canCloseAll: r.length > 0,
1143
- onFirst: y,
1144
- onPrev: g,
1145
- onNext: k,
1156
+ onFirst: b,
1157
+ onPrev: m,
1158
+ onNext: v,
1146
1159
  onLast: T,
1147
- onCloseAll: z
1160
+ onCloseAll: D
1148
1161
  }
1149
1162
  ),
1150
- renderTabBar: f
1163
+ renderTabBar: C
1151
1164
  }
1152
1165
  )
1153
1166
  }
1154
1167
  );
1155
- }, { Sider: Kt } = Z, Zt = ({
1168
+ }, { Sider: rn } = X, on = ({
1156
1169
  config: n = {}
1157
1170
  }) => {
1158
1171
  const t = {
@@ -1194,15 +1207,15 @@ const At = ({
1194
1207
  ...n?.style
1195
1208
  },
1196
1209
  ...n
1197
- }, [r, o] = A(""), [i, a] = A(
1210
+ }, [r, o] = $(""), [s, a] = $(
1198
1211
  "category"
1199
- ), [b, l] = A([]), { activeMenuId: c, sidebarCollapsed: v, openTabFromMenu: m, toggleSidebar: d } = O(), { menuList: h, isLoading: p, error: N, findMenuById: y, flatMenuList: g } = ie(), { nodes: k, treeNodes: T, loadFavoritesIfNeeded: z } = et(), E = _(() => {
1200
- const I = [], P = (f, s = 0) => {
1201
- if (f.menuGbCd === t.menuGubunCode.program && f.scrnPath) {
1202
- const x = " ".repeat(s), M = f.menuNo || "";
1203
- I.push({
1204
- value: f.menuId,
1205
- label: /* @__PURE__ */ C(
1212
+ ), [g, c] = $([]), { activeMenuId: u, sidebarCollapsed: y, openTabFromMenu: h, toggleSidebar: k } = O(), { menuList: d, isLoading: p, error: I, findMenuById: b, flatMenuList: m } = ce(), { nodes: v, treeNodes: T, loadFavoritesIfNeeded: D } = at(), R = _(() => {
1213
+ const N = [], S = (C, i = 0) => {
1214
+ if (C.menuGbCd === t.menuGubunCode.program && C.scrnPath) {
1215
+ const x = " ".repeat(i), L = C.menuNo || "";
1216
+ N.push({
1217
+ value: C.menuId,
1218
+ label: /* @__PURE__ */ l(
1206
1219
  "div",
1207
1220
  {
1208
1221
  style: {
@@ -1211,9 +1224,9 @@ const At = ({
1211
1224
  alignItems: "center"
1212
1225
  },
1213
1226
  children: [
1214
- /* @__PURE__ */ C("span", { children: [
1227
+ /* @__PURE__ */ l("span", { children: [
1215
1228
  x,
1216
- f.menuNm
1229
+ C.menuNm
1217
1230
  ] }),
1218
1231
  /* @__PURE__ */ e(
1219
1232
  "span",
@@ -1226,65 +1239,65 @@ const At = ({
1226
1239
  borderRadius: "3px",
1227
1240
  marginLeft: "8px"
1228
1241
  },
1229
- children: M
1242
+ children: L
1230
1243
  }
1231
1244
  )
1232
1245
  ]
1233
1246
  }
1234
1247
  ),
1235
- menuItem: f
1248
+ menuItem: C
1236
1249
  });
1237
1250
  }
1238
- f.children && f.children.length > 0 && f.children.forEach((x) => P(x, s + 1));
1251
+ C.children && C.children.length > 0 && C.children.forEach((x) => S(x, i + 1));
1239
1252
  };
1240
- return h.forEach((f) => P(f)), I;
1241
- }, [h]), w = _(() => r.trim() ? E.filter((I) => {
1242
- const P = I.menuItem.menuNm.toLowerCase(), f = String(I.menuItem.menuNo || "미지정").toLowerCase(), s = r.toLowerCase();
1243
- return P.includes(s) || f.includes(s);
1244
- }) : [], [E, r]), F = (I) => {
1245
- if (!I || typeof I != "string") {
1246
- console.warn("Invalid menu selection value:", I);
1253
+ return d.forEach((C) => S(C)), N;
1254
+ }, [d]), w = _(() => r.trim() ? R.filter((N) => {
1255
+ const S = N.menuItem.menuNm.toLowerCase(), C = String(N.menuItem.menuNo || "미지정").toLowerCase(), i = r.toLowerCase();
1256
+ return S.includes(i) || C.includes(i);
1257
+ }) : [], [R, r]), G = (N) => {
1258
+ if (!N || typeof N != "string") {
1259
+ console.warn("Invalid menu selection value:", N);
1247
1260
  return;
1248
1261
  }
1249
- if (!/^[a-zA-Z0-9_-]+$/.test(I)) {
1250
- console.warn("Invalid menu ID format:", I);
1262
+ if (!/^[a-zA-Z0-9_-]+$/.test(N)) {
1263
+ console.warn("Invalid menu ID format:", N);
1251
1264
  return;
1252
1265
  }
1253
- const P = E.find(
1254
- (f) => f.value === I
1266
+ const S = R.find(
1267
+ (C) => C.value === N
1255
1268
  );
1256
- if (P) {
1257
- const { menuItem: f } = P;
1258
- if (!f || !f.menuId || !f.menuNm) {
1259
- console.warn("Invalid menu item:", f);
1269
+ if (S) {
1270
+ const { menuItem: C } = S;
1271
+ if (!C || !C.menuId || !C.menuNm) {
1272
+ console.warn("Invalid menu item:", C);
1260
1273
  return;
1261
1274
  }
1262
- f.menuGbCd === t.menuGubunCode.program && f.scrnPath ? (console.log(
1275
+ C.menuGbCd === t.menuGubunCode.program && C.scrnPath ? (console.log(
1263
1276
  "✅ 검색으로 프로그램 메뉴 선택 - 탭 추가 및 setCurrentProgram 호출"
1264
1277
  ), console.log(
1265
1278
  "메뉴명:",
1266
- f.menuNm,
1279
+ C.menuNm,
1267
1280
  "경로:",
1268
- f.scrnPath,
1281
+ C.scrnPath,
1269
1282
  "scrnId:",
1270
- f.scrnId
1271
- ), m(f)) : (f.menuGbCd === t.menuGubunCode.mainMenu || f.menuGbCd === t.menuGubunCode.subMenu) && (console.log("❌ 검색으로 메인/서브 메뉴 선택 - 이벤트 무시"), console.log("메뉴명:", f.menuNm, "menuGbCd:", f.menuGbCd)), o("");
1283
+ C.scrnId
1284
+ ), h(C)) : (C.menuGbCd === t.menuGubunCode.mainMenu || C.menuGbCd === t.menuGubunCode.subMenu) && (console.log("❌ 검색으로 메인/서브 메뉴 선택 - 이벤트 무시"), console.log("메뉴명:", C.menuNm, "menuGbCd:", C.menuGbCd)), o("");
1272
1285
  }
1273
- }, H = R(
1274
- (I) => {
1275
- const P = y(I);
1276
- P?.menuGbCd === t.menuGubunCode.program && (console.log(
1286
+ }, K = z(
1287
+ (N) => {
1288
+ const S = b(N);
1289
+ S?.menuGbCd === t.menuGubunCode.program && (console.log(
1277
1290
  "메뉴명:",
1278
- P.menuNm,
1291
+ S.menuNm,
1279
1292
  "경로:",
1280
- P.scrnPath,
1293
+ S.scrnPath,
1281
1294
  "scrnId:",
1282
- P.scrnId
1283
- ), m(P));
1295
+ S.scrnId
1296
+ ), h(S));
1284
1297
  },
1285
- [y, m]
1286
- ), j = R((I) => I.map((P) => ({
1287
- key: P.menuId,
1298
+ [b, h, t.menuGubunCode.program]
1299
+ ), U = z((N) => N.map((S) => ({
1300
+ key: S.menuId,
1288
1301
  label: /* @__PURE__ */ e(
1289
1302
  "div",
1290
1303
  {
@@ -1293,21 +1306,24 @@ const At = ({
1293
1306
  justifyContent: "space-between",
1294
1307
  alignItems: "center"
1295
1308
  },
1296
- children: /* @__PURE__ */ e("span", { children: P.menuNm })
1309
+ onDoubleClick: (i) => {
1310
+ i.preventDefault(), i.stopPropagation();
1311
+ },
1312
+ children: /* @__PURE__ */ e("span", { children: S.menuNm })
1297
1313
  }
1298
1314
  ),
1299
- icon: Y(P.iconCd, P.menuGbCd),
1300
- children: P.children && P.children.length > 0 ? j(P.children) : void 0
1301
- })), []), Y = (I, P) => {
1302
- if (I) {
1303
- const f = oe[I];
1304
- if (f)
1305
- return /* @__PURE__ */ e(f, {});
1315
+ icon: ee(S.iconCd, S.menuGbCd),
1316
+ children: S.children && S.children.length > 0 ? U(S.children) : void 0
1317
+ })), []), ee = (N, S) => {
1318
+ if (N) {
1319
+ const C = ae[N];
1320
+ if (C)
1321
+ return /* @__PURE__ */ e(C, {});
1306
1322
  }
1307
- if (P)
1308
- switch (P) {
1323
+ if (S)
1324
+ switch (S) {
1309
1325
  case t.menuGubunCode.mainMenu:
1310
- return /* @__PURE__ */ e(oe.HomeOutlined, {});
1326
+ return /* @__PURE__ */ e(ae.HomeOutlined, {});
1311
1327
  case t.menuGubunCode.subMenu:
1312
1328
  return null;
1313
1329
  case t.menuGubunCode.program:
@@ -1316,66 +1332,66 @@ const At = ({
1316
1332
  return null;
1317
1333
  }
1318
1334
  return null;
1319
- }, u = R(
1320
- (I) => {
1321
- if (h.length === 0) return [];
1322
- const P = (s) => {
1323
- if (s)
1324
- return typeof s == "string" ? k[s] : s;
1325
- }, f = (s) => {
1326
- if (s.type === "M") {
1327
- const x = s, M = y(x.menuId) || void 0, L = !!M, G = L ? `${M?.menuNm ?? x.menuNm ?? x.menuId}` : `${x.menuNm ?? x.menuId} (삭제됨)`;
1335
+ }, f = z(
1336
+ (N) => {
1337
+ if (d.length === 0) return [];
1338
+ const S = (i) => {
1339
+ if (i)
1340
+ return typeof i == "string" ? v[i] : i;
1341
+ }, C = (i) => {
1342
+ if (i.type === "M") {
1343
+ const x = i, L = b(x.menuId) || void 0, M = !!L, j = M ? `${L?.menuNm ?? x.menuNm ?? x.menuId}` : `${x.menuNm ?? x.menuId} (삭제됨)`;
1328
1344
  return {
1329
1345
  key: x.menuId,
1330
- label: G,
1331
- icon: L ? void 0 : /* @__PURE__ */ e(mt, { style: { color: "#faad14" } })
1346
+ label: j,
1347
+ icon: M ? void 0 : /* @__PURE__ */ e(xt, { style: { color: "#faad14" } })
1332
1348
  };
1333
1349
  } else {
1334
- const x = s, M = (x.children ?? []).map(P).filter(Boolean).map(f);
1350
+ const x = i, L = (x.children ?? []).map(S).filter(Boolean).map(C);
1335
1351
  return {
1336
1352
  key: x.bkmkId,
1337
1353
  label: x.bkmkNm ?? x.bkmkId,
1338
- icon: x.prntBkmkId === "-" ? /* @__PURE__ */ e(ht, {}) : /* @__PURE__ */ e(pt, {}),
1339
- children: M
1354
+ icon: x.prntBkmkId === "-" ? /* @__PURE__ */ e(wt, {}) : /* @__PURE__ */ e(kt, {}),
1355
+ children: L
1340
1356
  // 빈 배열이면 자동으로 말아줌
1341
1357
  };
1342
1358
  }
1343
1359
  };
1344
- return I.map(f);
1360
+ return N.map(C);
1345
1361
  },
1346
- [y, k, h]
1347
- ), S = _(
1348
- () => u(T),
1349
- [u, T, k]
1362
+ [b, v, d]
1363
+ ), P = _(
1364
+ () => f(T),
1365
+ [f, T, v]
1350
1366
  );
1351
- return D(() => {
1352
- ve() && z(ve());
1353
- }, [z]), D(() => {
1354
- i === "category" && o("");
1355
- }, [i]), D(() => {
1356
- if (!c || i !== "category") return;
1357
- const P = ((f) => {
1358
- const s = [], x = new Map(g.map((L) => [L.menuId, L]));
1359
- let M = f;
1360
- for (; M; ) {
1361
- const L = x.get(M);
1362
- if (!L) break;
1363
- if (L.menuPrntId && L.menuPrntId !== "-" && L.menuPrntId !== "")
1364
- s.push(L.menuPrntId), M = L.menuPrntId;
1367
+ return E(() => {
1368
+ Se() && D(Se());
1369
+ }, [D]), E(() => {
1370
+ s === "category" && o("");
1371
+ }, [s]), E(() => {
1372
+ if (!u || s !== "category") return;
1373
+ const S = ((C) => {
1374
+ const i = [], x = new Map(m.map((M) => [M.menuId, M]));
1375
+ let L = C;
1376
+ for (; L; ) {
1377
+ const M = x.get(L);
1378
+ if (!M) break;
1379
+ if (M.menuPrntId && M.menuPrntId !== "-" && M.menuPrntId !== "")
1380
+ i.push(M.menuPrntId), L = M.menuPrntId;
1365
1381
  else
1366
1382
  break;
1367
1383
  }
1368
- return s;
1369
- })(c);
1370
- P.length > 0 && l((f) => {
1371
- const s = /* @__PURE__ */ new Set([...f, ...P]);
1372
- return Array.from(s);
1384
+ return i;
1385
+ })(u);
1386
+ S.length > 0 && c((C) => {
1387
+ const i = /* @__PURE__ */ new Set([...C, ...S]);
1388
+ return Array.from(i);
1373
1389
  });
1374
- }, [c, i, g]), /* @__PURE__ */ C(
1375
- Kt,
1390
+ }, [u, s, m]), /* @__PURE__ */ l(
1391
+ rn,
1376
1392
  {
1377
1393
  className: t.className.wrapper,
1378
- collapsed: t.collapsed || v,
1394
+ collapsed: t.collapsed || y,
1379
1395
  trigger: null,
1380
1396
  width: t.width || 230,
1381
1397
  children: [
@@ -1403,7 +1419,7 @@ const At = ({
1403
1419
  B,
1404
1420
  {
1405
1421
  type: "text",
1406
- icon: t.collapsed || v ? /* @__PURE__ */ e(ct, {}) : /* @__PURE__ */ e(dt, {}),
1422
+ icon: t.collapsed || y ? /* @__PURE__ */ e(yt, {}) : /* @__PURE__ */ e(Ct, {}),
1407
1423
  style: {
1408
1424
  fontSize: "12px",
1409
1425
  color: "#787878",
@@ -1415,28 +1431,28 @@ const At = ({
1415
1431
  justifyContent: "center",
1416
1432
  borderRadius: "0 10px 10px 0"
1417
1433
  },
1418
- onClick: d
1434
+ onClick: k
1419
1435
  }
1420
1436
  )
1421
1437
  }
1422
1438
  ),
1423
- !(t.collapsed || v) && /* @__PURE__ */ e(
1439
+ !(t.collapsed || y) && /* @__PURE__ */ e(
1424
1440
  "div",
1425
1441
  {
1426
1442
  style: {
1427
1443
  padding: 10
1428
1444
  },
1429
1445
  children: /* @__PURE__ */ e(
1430
- je,
1446
+ Je,
1431
1447
  {
1432
1448
  value: r,
1433
1449
  options: w,
1434
- onSelect: F,
1450
+ onSelect: G,
1435
1451
  onSearch: o,
1436
1452
  style: { width: "100%" },
1437
1453
  allowClear: !0,
1438
1454
  children: /* @__PURE__ */ e(
1439
- ue,
1455
+ fe,
1440
1456
  {
1441
1457
  className: t.className.search,
1442
1458
  placeholder: t.style.search.placeholder,
@@ -1470,7 +1486,7 @@ const At = ({
1470
1486
  )
1471
1487
  }
1472
1488
  ),
1473
- !(t.collapsed || v) && /* @__PURE__ */ e(
1489
+ !(t.collapsed || y) && /* @__PURE__ */ e(
1474
1490
  "div",
1475
1491
  {
1476
1492
  style: {
@@ -1479,18 +1495,18 @@ const At = ({
1479
1495
  marginBottom: "10px"
1480
1496
  },
1481
1497
  children: /* @__PURE__ */ e(
1482
- Ve,
1498
+ et,
1483
1499
  {
1484
1500
  className: t.className.segmented.wrapper,
1485
1501
  options: [
1486
1502
  {
1487
- label: /* @__PURE__ */ C(K, { children: [
1503
+ label: /* @__PURE__ */ l(A, { children: [
1488
1504
  /* @__PURE__ */ e(
1489
1505
  "span",
1490
1506
  {
1491
1507
  className: t.className.segmented.item,
1492
1508
  style: { display: "flex", alignItems: "center" },
1493
- children: /* @__PURE__ */ C(
1509
+ children: /* @__PURE__ */ l(
1494
1510
  "svg",
1495
1511
  {
1496
1512
  xmlns: "http://www.w3.org/2000/svg",
@@ -1539,7 +1555,7 @@ const At = ({
1539
1555
  value: "category"
1540
1556
  },
1541
1557
  {
1542
- label: /* @__PURE__ */ C(K, { children: [
1558
+ label: /* @__PURE__ */ l(A, { children: [
1543
1559
  /* @__PURE__ */ e(
1544
1560
  "span",
1545
1561
  {
@@ -1571,9 +1587,9 @@ const At = ({
1571
1587
  value: "favorite"
1572
1588
  }
1573
1589
  ],
1574
- value: i,
1575
- onChange: (I) => {
1576
- a(I);
1590
+ value: s,
1591
+ onChange: (N) => {
1592
+ a(N);
1577
1593
  },
1578
1594
  style: {
1579
1595
  width: "100%"
@@ -1583,8 +1599,8 @@ const At = ({
1583
1599
  )
1584
1600
  }
1585
1601
  ),
1586
- /* @__PURE__ */ C("div", { className: t.className.sider.content, children: [
1587
- p && /* @__PURE__ */ C(
1602
+ /* @__PURE__ */ l("div", { className: t.className.sider.content, children: [
1603
+ p && /* @__PURE__ */ l(
1588
1604
  "div",
1589
1605
  {
1590
1606
  className: t.className.sider.loading,
@@ -1596,7 +1612,7 @@ const At = ({
1596
1612
  },
1597
1613
  children: [
1598
1614
  /* @__PURE__ */ e(
1599
- Ue,
1615
+ tt,
1600
1616
  {
1601
1617
  theme: {
1602
1618
  components: {
@@ -1605,7 +1621,7 @@ const At = ({
1605
1621
  }
1606
1622
  }
1607
1623
  },
1608
- children: /* @__PURE__ */ e(re, { size: "default" })
1624
+ children: /* @__PURE__ */ e(Q, { size: "default" })
1609
1625
  }
1610
1626
  ),
1611
1627
  /* @__PURE__ */ e(
@@ -1619,16 +1635,16 @@ const At = ({
1619
1635
  ]
1620
1636
  }
1621
1637
  ),
1622
- N && /* @__PURE__ */ C("div", { className: t.className.sider.error, children: [
1638
+ I && /* @__PURE__ */ l("div", { className: t.className.sider.error, children: [
1623
1639
  /* @__PURE__ */ e(
1624
- ut,
1640
+ vt,
1625
1641
  {
1626
1642
  className: t.className.sider.errorIcon
1627
1643
  }
1628
1644
  ),
1629
1645
  /* @__PURE__ */ e("div", { className: t.className.sider.errorText, children: "메뉴 로드 실패" })
1630
1646
  ] }),
1631
- !p && !N && i === "category" && h.length === 0 && /* @__PURE__ */ e(
1647
+ !p && !I && s === "category" && d.length === 0 && /* @__PURE__ */ e(
1632
1648
  "div",
1633
1649
  {
1634
1650
  style: {
@@ -1640,7 +1656,7 @@ const At = ({
1640
1656
  children: "메뉴가 없습니다"
1641
1657
  }
1642
1658
  ),
1643
- !p && !N && i === "favorite" && S.length === 0 && /* @__PURE__ */ e(
1659
+ !p && !I && s === "favorite" && P.length === 0 && /* @__PURE__ */ e(
1644
1660
  "div",
1645
1661
  {
1646
1662
  style: {
@@ -1652,28 +1668,28 @@ const At = ({
1652
1668
  children: "즐겨찾기된 메뉴가 없습니다"
1653
1669
  }
1654
1670
  ),
1655
- !p && !N && i === "category" && h.length > 0 && /* @__PURE__ */ e("div", { className: t.className.sider.menuContainer, children: /* @__PURE__ */ e(
1656
- me,
1671
+ !p && !I && s === "category" && d.length > 0 && /* @__PURE__ */ e("div", { className: t.className.sider.menuContainer, children: /* @__PURE__ */ e(
1672
+ be,
1657
1673
  {
1658
1674
  theme: "light",
1659
1675
  mode: "inline",
1660
- items: j(h),
1676
+ items: U(d),
1661
1677
  className: t.className.sider.menu,
1662
- selectedKeys: [c || ""],
1663
- openKeys: b,
1664
- onOpenChange: l,
1665
- onClick: (I) => H(I.key)
1678
+ selectedKeys: [u || ""],
1679
+ openKeys: g,
1680
+ onOpenChange: c,
1681
+ onClick: (N) => K(N.key)
1666
1682
  }
1667
1683
  ) }),
1668
- !p && !N && i === "favorite" && S.length > 0 && /* @__PURE__ */ e("div", { className: t.className.sider.menuContainer, children: /* @__PURE__ */ e(
1669
- me,
1684
+ !p && !I && s === "favorite" && P.length > 0 && /* @__PURE__ */ e("div", { className: t.className.sider.menuContainer, children: /* @__PURE__ */ e(
1685
+ be,
1670
1686
  {
1671
1687
  theme: "light",
1672
1688
  mode: "inline",
1673
- items: S,
1689
+ items: P,
1674
1690
  className: t.className.sider.menu,
1675
- selectedKeys: [c || ""],
1676
- onClick: (I) => H(I.key)
1691
+ selectedKeys: [u || ""],
1692
+ onClick: (N) => K(N.key)
1677
1693
  }
1678
1694
  ) })
1679
1695
  ] })
@@ -1681,7 +1697,7 @@ const At = ({
1681
1697
  }
1682
1698
  );
1683
1699
  };
1684
- class Yt extends Xe {
1700
+ class sn extends it {
1685
1701
  constructor(t) {
1686
1702
  super(t), this.resetError = () => {
1687
1703
  this.setState({ hasError: !1, error: void 0, errorInfo: void 0 });
@@ -1697,7 +1713,7 @@ class Yt extends Xe {
1697
1713
  });
1698
1714
  }
1699
1715
  render() {
1700
- return this.state.hasError ? this.props.fallback ? this.props.fallback : /* @__PURE__ */ C(
1716
+ return this.state.hasError ? this.props.fallback ? this.props.fallback : /* @__PURE__ */ l(
1701
1717
  "div",
1702
1718
  {
1703
1719
  style: {
@@ -1711,7 +1727,7 @@ class Yt extends Xe {
1711
1727
  },
1712
1728
  children: [
1713
1729
  /* @__PURE__ */ e(
1714
- ke,
1730
+ Me,
1715
1731
  {
1716
1732
  status: "error",
1717
1733
  title: "컴포넌트 로딩 중 오류가 발생했습니다",
@@ -1721,7 +1737,7 @@ class Yt extends Xe {
1721
1737
  B,
1722
1738
  {
1723
1739
  type: "primary",
1724
- icon: /* @__PURE__ */ e(ye, {}),
1740
+ icon: /* @__PURE__ */ e(de, {}),
1725
1741
  onClick: this.resetError,
1726
1742
  style: { marginRight: 8 },
1727
1743
  children: "다시 시도"
@@ -1731,7 +1747,7 @@ class Yt extends Xe {
1731
1747
  ]
1732
1748
  }
1733
1749
  ),
1734
- this.state.error && /* @__PURE__ */ C(
1750
+ this.state.error && /* @__PURE__ */ l(
1735
1751
  "details",
1736
1752
  {
1737
1753
  style: {
@@ -1766,13 +1782,13 @@ class Yt extends Xe {
1766
1782
  ) : this.props.children;
1767
1783
  }
1768
1784
  }
1769
- const qt = ({
1785
+ const an = ({
1770
1786
  isActive: n,
1771
1787
  instance: t,
1772
1788
  params: r
1773
1789
  }) => {
1774
- const { activeMenuId: o, closeTab: i } = O(), a = () => {
1775
- o && i(o);
1790
+ const { activeMenuId: o, closeTab: s } = O(), a = () => {
1791
+ o && s(o);
1776
1792
  };
1777
1793
  return t ? /* @__PURE__ */ e(
1778
1794
  "div",
@@ -1788,7 +1804,7 @@ const qt = ({
1788
1804
  transition: "opacity 0.2s ease-in-out",
1789
1805
  pointerEvents: n ? "auto" : "none"
1790
1806
  },
1791
- children: /* @__PURE__ */ e(Yt, { children: /* @__PURE__ */ e(se, { fallback: null, children: t && Ie(t, { params: r }) }) })
1807
+ children: /* @__PURE__ */ e(sn, { children: /* @__PURE__ */ e(le, { fallback: null, children: t && Oe(t, { params: r }) }) })
1792
1808
  }
1793
1809
  ) : /* @__PURE__ */ e(
1794
1810
  "div",
@@ -1819,20 +1835,20 @@ const qt = ({
1819
1835
  padding: 24
1820
1836
  },
1821
1837
  children: /* @__PURE__ */ e(
1822
- ke,
1838
+ Me,
1823
1839
  {
1824
- icon: /* @__PURE__ */ e(gt, { twoToneColor: "#69b1ff" }),
1840
+ icon: /* @__PURE__ */ e(Ie, { twoToneColor: "#69b1ff" }),
1825
1841
  status: "warning",
1826
1842
  title: "등록된 메뉴 정보가 없거나 유효한 메뉴가 아닙니다.",
1827
- subTitle: /* @__PURE__ */ e(Ze.Text, { type: "secondary", children: "자세한 내용은 관리자에게 문의바랍니다." }),
1828
- extra: /* @__PURE__ */ e(Ke, { children: /* @__PURE__ */ e(B, { icon: /* @__PURE__ */ e(U, {}), onClick: a, children: "탭 닫기" }) })
1843
+ subTitle: /* @__PURE__ */ e(xe.Text, { type: "secondary", children: "자세한 내용은 관리자에게 문의바랍니다." }),
1844
+ extra: /* @__PURE__ */ e(q, { children: /* @__PURE__ */ e(B, { icon: /* @__PURE__ */ e(ne, {}), onClick: a, children: "탭 닫기" }) })
1829
1845
  }
1830
1846
  )
1831
1847
  }
1832
1848
  )
1833
1849
  }
1834
1850
  );
1835
- }, Qt = fe(qt), Xt = ({
1851
+ }, ln = we(an), cn = ({
1836
1852
  menuGubunCode: n = {
1837
1853
  mainMenu: "MAIN",
1838
1854
  subMenu: "SUB",
@@ -1842,87 +1858,87 @@ const qt = ({
1842
1858
  style: r,
1843
1859
  routeMap: o
1844
1860
  }) => {
1845
- const { menuList: i, findMenuById: a, flatMenuList: b } = ie(), { activeMenuId: l } = O(), c = ge(), [v, m] = A([]), d = R(
1846
- (y, g) => {
1847
- if (y) {
1848
- const k = oe[y];
1849
- if (k)
1850
- return /* @__PURE__ */ e(k, {});
1861
+ const { menuList: s, findMenuById: a, flatMenuList: g } = ce(), { activeMenuId: c } = O(), u = ve(), [y, h] = $([]), k = z(
1862
+ (b, m) => {
1863
+ if (b) {
1864
+ const v = ae[b];
1865
+ if (v)
1866
+ return /* @__PURE__ */ e(v, {});
1851
1867
  }
1852
- if (g)
1853
- switch (g) {
1868
+ if (m)
1869
+ switch (m) {
1854
1870
  case n.mainMenu:
1855
- return /* @__PURE__ */ e(oe.HomeOutlined, {});
1871
+ return /* @__PURE__ */ e(ae.HomeOutlined, {});
1856
1872
  default:
1857
1873
  return null;
1858
1874
  }
1859
1875
  return null;
1860
1876
  },
1861
1877
  [n]
1862
- ), h = R(
1863
- (y) => y.map((g) => {
1864
- const k = g.children && g.children.length === 1 && g.children[0].menuGbCd === n.program;
1878
+ ), d = z(
1879
+ (b) => b.map((m) => {
1880
+ const v = m.children && m.children.length === 1 && m.children[0].menuGbCd === n.program;
1865
1881
  return {
1866
- key: g.menuId,
1867
- label: g.menuNm,
1868
- icon: d(g.iconCd, g.menuGbCd),
1882
+ key: m.menuId,
1883
+ label: m.menuNm,
1884
+ icon: k(m.iconCd, m.menuGbCd),
1869
1885
  // children이 1개이고 program이면 드롭다운 없음, 2개 이상이면 드롭다운 표시
1870
- children: g.children && g.children.length > 0 && !k ? h(g.children) : void 0
1886
+ children: m.children && m.children.length > 0 && !v ? d(m.children) : void 0
1871
1887
  };
1872
1888
  }),
1873
- [d, n]
1874
- ), p = _(() => h(i), [i, h]), N = R(
1875
- (y) => {
1876
- const g = a(y.key);
1877
- if (g) {
1878
- if (g.children && g.children.length === 1 && g.children[0].menuGbCd === n.program) {
1879
- const k = g.children[0];
1880
- let T = o?.[k.menuId] || k.scrnPath || "/";
1881
- T === "/" ? T = "/main" : T.startsWith("/main") || (T = T.startsWith("/") ? `/main${T}` : `/main/${T}`), c(T);
1889
+ [k, n]
1890
+ ), p = _(() => d(s), [s, d]), I = z(
1891
+ (b) => {
1892
+ const m = a(b.key);
1893
+ if (m) {
1894
+ if (m.children && m.children.length === 1 && m.children[0].menuGbCd === n.program) {
1895
+ const v = m.children[0];
1896
+ let T = o?.[v.menuId] || v.scrnPath || "/";
1897
+ T === "/" ? T = "/main" : T.startsWith("/main") || (T = T.startsWith("/") ? `/main${T}` : `/main/${T}`), u(T);
1882
1898
  return;
1883
1899
  }
1884
- if (g.menuGbCd === n.program && g.scrnPath) {
1885
- let k = o?.[g.menuId] || g.scrnPath || "/";
1886
- k === "/" ? k = "/main" : k.startsWith("/main") || (k = k.startsWith("/") ? `/main${k}` : `/main/${k}`), c(k);
1900
+ if (m.menuGbCd === n.program && m.scrnPath) {
1901
+ let v = o?.[m.menuId] || m.scrnPath || "/";
1902
+ v === "/" ? v = "/main" : v.startsWith("/main") || (v = v.startsWith("/") ? `/main${v}` : `/main/${v}`), u(v);
1887
1903
  return;
1888
1904
  }
1889
1905
  }
1890
1906
  },
1891
- [a, n, c, o]
1907
+ [a, n, u, o]
1892
1908
  );
1893
- return D(() => {
1894
- if (!l || t !== "vertical") return;
1895
- const g = ((k) => {
1896
- const T = [], z = new Map(b.map((w) => [w.menuId, w]));
1897
- let E = k;
1898
- for (; E; ) {
1899
- const w = z.get(E);
1909
+ return E(() => {
1910
+ if (!c || t !== "vertical") return;
1911
+ const m = ((v) => {
1912
+ const T = [], D = new Map(g.map((w) => [w.menuId, w]));
1913
+ let R = v;
1914
+ for (; R; ) {
1915
+ const w = D.get(R);
1900
1916
  if (!w) break;
1901
1917
  if (w.menuPrntId && w.menuPrntId !== "-" && w.menuPrntId !== "")
1902
- T.push(w.menuPrntId), E = w.menuPrntId;
1918
+ T.push(w.menuPrntId), R = w.menuPrntId;
1903
1919
  else
1904
1920
  break;
1905
1921
  }
1906
1922
  return T;
1907
- })(l);
1908
- g.length > 0 && m((k) => {
1909
- const T = /* @__PURE__ */ new Set([...k, ...g]);
1923
+ })(c);
1924
+ m.length > 0 && h((v) => {
1925
+ const T = /* @__PURE__ */ new Set([...v, ...m]);
1910
1926
  return Array.from(T);
1911
1927
  });
1912
- }, [l, t, b]), /* @__PURE__ */ e(
1913
- me,
1928
+ }, [c, t, g]), /* @__PURE__ */ e(
1929
+ be,
1914
1930
  {
1915
1931
  mode: t,
1916
1932
  theme: "light",
1917
1933
  items: p,
1918
- selectedKeys: [l || ""],
1919
- openKeys: t === "vertical" ? v : void 0,
1920
- onOpenChange: t === "vertical" ? m : void 0,
1921
- onClick: N,
1934
+ selectedKeys: [c || ""],
1935
+ openKeys: t === "vertical" ? y : void 0,
1936
+ onOpenChange: t === "vertical" ? h : void 0,
1937
+ onClick: I,
1922
1938
  style: r
1923
1939
  }
1924
1940
  );
1925
- }, Jt = () => /* @__PURE__ */ C(K, { children: [
1941
+ }, dn = () => /* @__PURE__ */ l(A, { children: [
1926
1942
  /* @__PURE__ */ e(
1927
1943
  "link",
1928
1944
  {
@@ -1932,62 +1948,62 @@ const qt = ({
1932
1948
  }
1933
1949
  ),
1934
1950
  /* @__PURE__ */ e("div", { className: "LandingContainer-wrap", children: /* @__PURE__ */ e("div", { className: "inner", children: /* @__PURE__ */ e("div", { className: "content" }) }) })
1935
- ] }), en = (n, t) => {
1951
+ ] }), un = (n, t) => {
1936
1952
  console.log("createPopupViewLoader 호출 - popupUrl:", n);
1937
- const o = ((i) => {
1938
- if (i.startsWith("/src/pages/views/popup/")) {
1939
- const l = i + ".tsx";
1940
- return console.log(`팝업 URL 변환: ${i} -> ${l}`), l;
1953
+ const o = ((s) => {
1954
+ if (s.startsWith("/src/pages/views/popup/")) {
1955
+ const c = s + ".tsx";
1956
+ return console.log(`팝업 URL 변환: ${s} -> ${c}`), c;
1941
1957
  }
1942
- const b = `/src/pages/views/popup/${i.startsWith("/") ? i.substring(1) : i}.tsx`;
1943
- return console.log(`팝업 URL 변환: ${i} -> ${b}`), b;
1958
+ const g = `/src/pages/views/popup/${s.startsWith("/") ? s.substring(1) : s}.tsx`;
1959
+ return console.log(`팝업 URL 변환: ${s} -> ${g}`), g;
1944
1960
  })(n);
1945
1961
  return !o || !t?.glob || !t.glob[o] ? (console.warn(`팝업 뷰를 찾을 수 없습니다: ${n} (${o})`), console.warn("사용 가능한 팝업 뷰들:", Object.keys(t?.glob || {})), null) : t.glob[o];
1946
- }, tn = ({ popup: n, modules: t }) => {
1947
- const [r, o] = A(null), [i, a] = A(!1), [b, l] = A(null), c = () => {
1948
- console.log("PopupArea - handleClose:", n.popupId), be.getState().closePopup(n.popupId);
1962
+ }, hn = ({ popup: n, modules: t }) => {
1963
+ const [r, o] = $(null), [s, a] = $(!1), [g, c] = $(null), u = () => {
1964
+ console.log("PopupArea - handleClose:", n.popupId), ke.getState().closePopup(n.popupId);
1949
1965
  };
1950
- return D(() => {
1966
+ return E(() => {
1951
1967
  (async () => {
1952
- console.log("팝업 뷰 로드 시작:", n.popupUrl), a(!0), l(null);
1968
+ console.log("팝업 뷰 로드 시작:", n.popupUrl), a(!0), c(null);
1953
1969
  try {
1954
- const m = en(n.popupUrl, t);
1955
- if (!m) {
1970
+ const h = un(n.popupUrl, t);
1971
+ if (!h) {
1956
1972
  const p = `팝업 뷰를 찾을 수 없습니다: ${n.popupUrl}`;
1957
- console.error(p), l(p), a(!1);
1973
+ console.error(p), c(p), a(!1);
1958
1974
  return;
1959
1975
  }
1960
1976
  console.log("팝업 뷰 모듈 로드 중...");
1961
- const d = await m();
1962
- console.log("팝업 뷰 모듈 로드 완료:", d);
1963
- const h = d.default;
1964
- if (console.log("팝업 뷰 컴포넌트:", h), !h)
1977
+ const k = await h();
1978
+ console.log("팝업 뷰 모듈 로드 완료:", k);
1979
+ const d = k.default;
1980
+ if (console.log("팝업 뷰 컴포넌트:", d), !d)
1965
1981
  throw new Error("팝업 뷰 컴포넌트를 찾을 수 없습니다");
1966
- o(() => h), console.log("팝업 뷰 설정 완료");
1967
- } catch (m) {
1968
- console.error("팝업 뷰 로드 실패:", m), l(m instanceof Error ? m.message : "팝업 뷰 로드 실패");
1982
+ o(() => d), console.log("팝업 뷰 설정 완료");
1983
+ } catch (h) {
1984
+ console.error("팝업 뷰 로드 실패:", h), c(h instanceof Error ? h.message : "팝업 뷰 로드 실패");
1969
1985
  } finally {
1970
1986
  a(!1);
1971
1987
  }
1972
1988
  })();
1973
- }, [n.popupUrl]), i ? /* @__PURE__ */ C("div", { className: "popup-loading", children: [
1974
- /* @__PURE__ */ e(re, { size: "large" }),
1989
+ }, [n.popupUrl]), s ? /* @__PURE__ */ l("div", { className: "popup-loading", children: [
1990
+ /* @__PURE__ */ e(Q, { size: "large" }),
1975
1991
  /* @__PURE__ */ e("p", { children: "팝업을 로드하는 중..." })
1976
- ] }) : b ? /* @__PURE__ */ C("div", { className: "popup-error", children: [
1977
- /* @__PURE__ */ e(ce, { description: b, image: ce.PRESENTED_IMAGE_SIMPLE }),
1992
+ ] }) : g ? /* @__PURE__ */ l("div", { className: "popup-error", children: [
1993
+ /* @__PURE__ */ e(pe, { description: g, image: pe.PRESENTED_IMAGE_SIMPLE }),
1978
1994
  /* @__PURE__ */ e(
1979
1995
  B,
1980
1996
  {
1981
- icon: /* @__PURE__ */ e(ye, {}),
1997
+ icon: /* @__PURE__ */ e(de, {}),
1982
1998
  onClick: () => window.location.reload(),
1983
1999
  children: "다시 시도"
1984
2000
  }
1985
2001
  )
1986
2002
  ] }) : r ? /* @__PURE__ */ e(
1987
- se,
2003
+ le,
1988
2004
  {
1989
- fallback: /* @__PURE__ */ C("div", { className: "popup-loading", children: [
1990
- /* @__PURE__ */ e(re, { size: "large" }),
2005
+ fallback: /* @__PURE__ */ l("div", { className: "popup-loading", children: [
2006
+ /* @__PURE__ */ e(Q, { size: "large" }),
1991
2007
  /* @__PURE__ */ e("p", { children: "컴포넌트를 로드하는 중..." })
1992
2008
  ] }),
1993
2009
  children: /* @__PURE__ */ e(
@@ -1995,62 +2011,62 @@ const qt = ({
1995
2011
  {
1996
2012
  popup: {
1997
2013
  ...n,
1998
- close: c
2014
+ close: u
1999
2015
  // popup 객체에 close 이벤트 추가
2000
2016
  },
2001
- onClose: c
2017
+ onClose: u
2002
2018
  }
2003
2019
  )
2004
2020
  }
2005
- ) : /* @__PURE__ */ e("div", { className: "popup-empty", children: /* @__PURE__ */ e(ce, { description: "팝업 내용을 불러올 수 없습니다." }) });
2006
- }, nn = ({ modules: n }) => {
2007
- const { popups: t } = be();
2008
- return t.length === 0 ? null : /* @__PURE__ */ e(K, { children: t.map((r) => {
2021
+ ) : /* @__PURE__ */ e("div", { className: "popup-empty", children: /* @__PURE__ */ e(pe, { description: "팝업 내용을 불러올 수 없습니다." }) });
2022
+ }, mn = ({ modules: n }) => {
2023
+ const { popups: t } = ke();
2024
+ return t.length === 0 ? null : /* @__PURE__ */ e(A, { children: t.map((r) => {
2009
2025
  if (r.isLocal || r.popupCode.startsWith("CORE_"))
2010
2026
  return null;
2011
- const o = r.config || {}, i = o.width || r.width || 800, a = o.height || r.height || 600, b = o.title || r.popupTitle, l = r.buttonList?.map((c, v) => ({
2012
- key: c.btnId || `btn_${v}`,
2013
- text: c.btnNm,
2014
- type: c.btnId === "CLOSE" ? "default" : "primary",
2015
- disabled: c.enblYn !== "Y",
2027
+ const o = r.config || {}, s = o.width || r.width || 800, a = o.height || r.height || 600, g = o.title || r.popupTitle, c = r.buttonList?.map((u, y) => ({
2028
+ key: u.btnId || `btn_${y}`,
2029
+ text: u.btnNm,
2030
+ type: u.btnId === "CLOSE" ? "default" : "primary",
2031
+ disabled: u.enblYn !== "Y",
2016
2032
  danger: !1
2017
2033
  })) || [];
2018
2034
  return console.log("팝업 렌더링:", {
2019
2035
  popupId: r.popupId,
2020
2036
  popupCode: r.popupCode,
2021
- title: b,
2022
- width: i,
2037
+ title: g,
2038
+ width: s,
2023
2039
  height: a,
2024
- buttons: l
2025
- }), /* @__PURE__ */ e(pe, { children: /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(tn, { popup: r, modules: n }) }, r.popupId) }, `sbp-${r.popupId}`);
2040
+ buttons: c
2041
+ }), /* @__PURE__ */ e(Ce, { children: /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(hn, { popup: r, modules: n }) }, r.popupId) }, `sbp-${r.popupId}`);
2026
2042
  }) });
2027
- }, Te = () => {
2028
- const { popups: n, closePopup: t } = be();
2029
- return /* @__PURE__ */ e(K, { children: n.map((r) => {
2043
+ }, Ae = () => {
2044
+ const { popups: n, closePopup: t } = ke();
2045
+ return /* @__PURE__ */ e(A, { children: n.map((r) => {
2030
2046
  if (!(r.isLocal || r.popupCode.startsWith("CORE_"))) return null;
2031
- const o = Dt[r.popupCode];
2047
+ const o = Vt[r.popupCode];
2032
2048
  if (!o) return null;
2033
- const i = o.component;
2034
- return /* @__PURE__ */ e(pe, { children: /* @__PURE__ */ e(se, { fallback: null, children: /* @__PURE__ */ e(i, { popup: r, onClose: () => t(r.popupId) }) }, r.popupId) }, `sbp-${r.popupId}`);
2049
+ const s = o.component;
2050
+ return /* @__PURE__ */ e(Ce, { children: /* @__PURE__ */ e(le, { fallback: null, children: /* @__PURE__ */ e(s, { popup: r, onClose: () => t(r.popupId) }) }, r.popupId) }, `sbp-${r.popupId}`);
2035
2051
  }) });
2036
- }, rn = (n) => ({
2052
+ }, pn = (n) => ({
2037
2053
  position: "absolute",
2038
2054
  inset: 0,
2039
2055
  visibility: n ? "visible" : "hidden",
2040
2056
  opacity: n ? 1 : 0,
2041
2057
  transition: "opacity 0.2s ease-in-out",
2042
2058
  pointerEvents: n ? "auto" : "none"
2043
- }), on = ({ once: n = !0 }) => {
2044
- const { lock: t } = Oe(), r = J(!1);
2045
- return D(() => {
2059
+ }), gn = ({ once: n = !0 }) => {
2060
+ const { lock: t } = Ge(), r = J(!1);
2061
+ return E(() => {
2046
2062
  n && r.current || (r.current = !0, t());
2047
2063
  }, [n, t]), null;
2048
- }, sn = ({ isActive: n, flagged: t, tabKey: r, onUnlock: o, children: i }) => {
2049
- const a = J(null), [b, l] = A(!1), c = R((m) => {
2050
- a.current = m, l(!!m);
2051
- }, []), v = rn(n);
2052
- return /* @__PURE__ */ e("div", { ref: c, style: v, children: b ? /* @__PURE__ */ C(
2053
- Be,
2064
+ }, fn = ({ isActive: n, flagged: t, tabKey: r, onUnlock: o, children: s }) => {
2065
+ const a = J(null), [g, c] = $(!1), u = z((h) => {
2066
+ a.current = h, c(!!h);
2067
+ }, []), y = pn(n);
2068
+ return /* @__PURE__ */ e("div", { ref: u, style: y, children: g ? /* @__PURE__ */ l(
2069
+ Fe,
2054
2070
  {
2055
2071
  idleMs: Number.POSITIVE_INFINITY,
2056
2072
  persistLocked: !1,
@@ -2060,12 +2076,12 @@ const qt = ({
2060
2076
  overlayId: `tab-overlay-${r}`,
2061
2077
  onUnlock: async () => (o(), !0),
2062
2078
  children: [
2063
- n && t ? /* @__PURE__ */ e(on, { once: !0 }) : null,
2064
- i
2079
+ n && t ? /* @__PURE__ */ e(gn, { once: !0 }) : null,
2080
+ s
2065
2081
  ]
2066
2082
  }
2067
- ) : i });
2068
- }, xn = ({
2083
+ ) : s });
2084
+ }, Dn = ({
2069
2085
  config: n = {},
2070
2086
  modules: t = {
2071
2087
  view: {
@@ -2080,39 +2096,41 @@ const qt = ({
2080
2096
  /* @__PURE__ */ new Map()
2081
2097
  ), {
2082
2098
  tabs: o,
2083
- tabParams: i,
2099
+ tabParams: s,
2084
2100
  activeMenuId: a,
2085
- tabProtectFlag: b,
2086
- refreshTabKey: l,
2087
- clearProtectFlagForKey: c
2088
- } = O(), { enableProtectWrapper: v } = Ne(), m = R(
2101
+ tabProtectFlag: g,
2102
+ refreshTabKey: c,
2103
+ clearProtectFlagForKey: u
2104
+ } = O(), { enableProtectWrapper: y } = Ee(), h = z(
2089
2105
  (d) => {
2090
- const h = r.current.get(d.key);
2091
- if (h) return h;
2092
- const p = d.gubun === "M" ? `${t.view.path}${d.menuItem?.scrnPath}.tsx` : `${t.view.path}${d.componentItem?.scrnPath}.tsx`;
2093
- let N = t.view?.glob?.[p];
2094
- if (!N && typeof import.meta < "u" && typeof import.meta.glob == "function" && (N = (/* @__PURE__ */ Object.assign({}))[p]), N) {
2095
- const y = W(
2096
- N
2106
+ const p = r.current.get(d.key);
2107
+ if (p) return p;
2108
+ const I = d.gubun === "M" ? `${t.view.path}${d.menuItem?.scrnPath}.tsx` : `${t.view.path}${d.componentItem?.scrnPath}.tsx`;
2109
+ let b = t.view?.glob?.[I];
2110
+ if (!b && typeof import.meta < "u" && typeof import.meta.glob == "function" && (b = (/* @__PURE__ */ Object.assign({}))[I]), b) {
2111
+ const m = W(
2112
+ b
2097
2113
  );
2098
- return r.current.set(d.key, y), y;
2114
+ return r.current.set(d.key, m), m;
2099
2115
  }
2100
2116
  return null;
2101
2117
  },
2102
2118
  [t.view?.glob]
2103
- );
2104
- return D(() => {
2105
- Object.keys(l).forEach((d) => {
2106
- r.current.delete(d);
2107
- });
2108
- }, [l]), /* @__PURE__ */ C(Z, { className: "main-layout", children: [
2109
- /* @__PURE__ */ e(Se, { config: n?.header }),
2110
- /* @__PURE__ */ C(Z, { children: [
2111
- /* @__PURE__ */ e(Zt, { config: n?.sidebar }),
2112
- /* @__PURE__ */ C("div", { className: "content-container", children: [
2113
- /* @__PURE__ */ e(Ut, { config: n?.menuTab }),
2114
- /* @__PURE__ */ C(Pe, { config: n?.content, children: [
2115
- /* @__PURE__ */ e("div", { className: "view-container", children: /* @__PURE__ */ C(
2119
+ ), k = J({});
2120
+ return E(() => {
2121
+ const d = k.current, p = c;
2122
+ Object.keys(p).forEach((I) => {
2123
+ const b = d[I], m = p[I];
2124
+ b !== m && r.current.delete(I);
2125
+ }), k.current = { ...p };
2126
+ }, [c]), /* @__PURE__ */ l(X, { className: "main-layout", children: [
2127
+ /* @__PURE__ */ e(ze, { config: n?.header }),
2128
+ /* @__PURE__ */ l(X, { children: [
2129
+ /* @__PURE__ */ e(on, { config: n?.sidebar }),
2130
+ /* @__PURE__ */ l("div", { className: "content-container", children: [
2131
+ /* @__PURE__ */ e(nn, { config: n?.menuTab }),
2132
+ /* @__PURE__ */ l(Re, { config: n?.content, children: [
2133
+ /* @__PURE__ */ e("div", { className: "view-container", children: /* @__PURE__ */ l(
2116
2134
  "div",
2117
2135
  {
2118
2136
  style: {
@@ -2122,39 +2140,39 @@ const qt = ({
2122
2140
  },
2123
2141
  children: [
2124
2142
  o.map((d) => {
2125
- const h = m(d), p = a === d.key, N = !!b?.[d.key], y = i[d.key] || {}, g = l[d.key], k = g ? `${d.key}-${g}` : d.key, T = /* @__PURE__ */ e(
2126
- Qt,
2143
+ const p = h(d), I = a === d.key, b = !!g?.[d.key], m = s[d.key] || {}, v = c[d.key], T = v !== void 0 ? `${d.key}-${v}` : d.key, D = /* @__PURE__ */ e(
2144
+ ln,
2127
2145
  {
2128
- isActive: p,
2129
- instance: h || void 0,
2130
- params: y
2146
+ isActive: I,
2147
+ instance: p || void 0,
2148
+ params: m
2131
2149
  },
2132
- k
2150
+ T
2133
2151
  );
2134
- return /* @__PURE__ */ e(pe, { children: v ? /* @__PURE__ */ e(
2135
- sn,
2152
+ return /* @__PURE__ */ e(Ce, { children: y ? /* @__PURE__ */ e(
2153
+ fn,
2136
2154
  {
2137
- isActive: p,
2138
- flagged: N,
2155
+ isActive: I,
2156
+ flagged: b,
2139
2157
  tabKey: d.key,
2140
- onUnlock: () => c(d.key),
2141
- children: T
2158
+ onUnlock: () => u(d.key),
2159
+ children: D
2142
2160
  },
2143
2161
  d.key
2144
- ) : T }, `sbp-${d.key}`);
2162
+ ) : D }, `sbp-${d.key}`);
2145
2163
  }),
2146
- (!a || o.length === 0) && /* @__PURE__ */ e(Jt, {})
2164
+ (!a || o.length === 0) && /* @__PURE__ */ e(dn, {})
2147
2165
  ]
2148
2166
  }
2149
2167
  ) }),
2150
- /* @__PURE__ */ e(Te, {}),
2151
- /* @__PURE__ */ e(nn, { modules: t?.popup })
2168
+ /* @__PURE__ */ e(Ae, {}),
2169
+ /* @__PURE__ */ e(mn, { modules: t?.popup })
2152
2170
  ] })
2153
2171
  ] })
2154
2172
  ] }),
2155
- (n?.quickService?.visible ?? !0) && /* @__PURE__ */ e(Ae, {})
2173
+ (n?.quickService?.visible ?? !0) && /* @__PURE__ */ e(Ke, {})
2156
2174
  ] });
2157
- }, an = ({
2175
+ }, bn = ({
2158
2176
  children: n,
2159
2177
  menuGubunCode: t = {
2160
2178
  mainMenu: "CMPRGRM",
@@ -2164,55 +2182,55 @@ const qt = ({
2164
2182
  routeMap: r,
2165
2183
  routes: o
2166
2184
  }) => {
2167
- const i = Re(), a = ge(), { flatMenuList: b, findMenuById: l } = ie(), c = _(() => {
2168
- const m = i.pathname, d = m.replace(/^\/main/, "") || "/";
2185
+ const s = je(), a = ve(), { flatMenuList: g, findMenuById: c } = ce(), u = _(() => {
2186
+ const h = s.pathname, k = h.replace(/^\/main/, "") || "/";
2169
2187
  if (r) {
2170
- const h = Object.keys(r).find(
2171
- (N) => r[N] === m
2188
+ const d = Object.keys(r).find(
2189
+ (I) => r[I] === h
2172
2190
  );
2173
- if (h)
2174
- return l(h);
2175
- const p = Object.keys(r).find((N) => (r[N].replace(/^\/main/, "") || "/") === d);
2191
+ if (d)
2192
+ return c(d);
2193
+ const p = Object.keys(r).find((I) => (r[I].replace(/^\/main/, "") || "/") === k);
2176
2194
  if (p)
2177
- return l(p);
2195
+ return c(p);
2178
2196
  }
2179
- return b.find(
2180
- (h) => h.menuGbCd === t.program && h.scrnPath && (h.scrnPath === d || h.scrnPath === m || m.endsWith(h.scrnPath) || d === h.scrnPath)
2197
+ return g.find(
2198
+ (d) => d.menuGbCd === t.program && d.scrnPath && (d.scrnPath === k || d.scrnPath === h || h.endsWith(d.scrnPath) || k === d.scrnPath)
2181
2199
  );
2182
2200
  }, [
2183
- i.pathname,
2184
- b,
2201
+ s.pathname,
2202
+ g,
2185
2203
  t.program,
2186
2204
  r,
2187
- l
2188
- ]), v = _(() => {
2189
- if (!c)
2205
+ c
2206
+ ]), y = _(() => {
2207
+ if (!u)
2190
2208
  return [];
2191
- const m = [], d = (p) => {
2209
+ const h = [], k = (p) => {
2192
2210
  if (!p || !p.menuPrntId || p.menuPrntId === "-")
2193
2211
  return [];
2194
- const N = l(p.menuPrntId);
2195
- return N ? [...d(N), N] : [];
2212
+ const I = c(p.menuPrntId);
2213
+ return I ? [...k(I), I] : [];
2196
2214
  };
2197
- return d(c).forEach((p) => {
2215
+ return k(u).forEach((p) => {
2198
2216
  if (p.menuGbCd === t.mainMenu || p.menuGbCd === t.subMenu) {
2199
- let N;
2200
- if (r && p.menuId && (N = r[p.menuId]), !N && o && p.scrnPath) {
2201
- const y = p.scrnPath.startsWith("/") ? p.scrnPath : `/${p.scrnPath}`, g = Object.keys(o).find(
2202
- (k) => k === y || k === `/main${y}`
2217
+ let I;
2218
+ if (r && p.menuId && (I = r[p.menuId]), !I && o && p.scrnPath) {
2219
+ const b = p.scrnPath.startsWith("/") ? p.scrnPath : `/${p.scrnPath}`, m = Object.keys(o).find(
2220
+ (v) => v === b || v === `/main${b}`
2203
2221
  );
2204
- g && (N = g.startsWith("/main") ? g : `/main${g.startsWith("/") ? g : `/${g}`}`);
2222
+ m && (I = m.startsWith("/main") ? m : `/main${m.startsWith("/") ? m : `/${m}`}`);
2205
2223
  }
2206
- m.push({
2224
+ h.push({
2207
2225
  title: p.menuNm,
2208
- onClick: N ? () => a(N) : void 0
2226
+ onClick: I ? () => a(I) : void 0
2209
2227
  });
2210
2228
  }
2211
- }), m.push({
2212
- title: c.menuNm
2213
- }), m;
2214
- }, [c, t, a, l]);
2215
- return /* @__PURE__ */ C(
2229
+ }), h.push({
2230
+ title: u.menuNm
2231
+ }), h;
2232
+ }, [u, t, a, c]);
2233
+ return /* @__PURE__ */ l(
2216
2234
  "div",
2217
2235
  {
2218
2236
  style: {
@@ -2221,10 +2239,10 @@ const qt = ({
2221
2239
  },
2222
2240
  children: [
2223
2241
  /* @__PURE__ */ e(
2224
- Ye,
2242
+ nt,
2225
2243
  {
2226
2244
  separator: ">",
2227
- items: v,
2245
+ items: y,
2228
2246
  style: { marginBottom: "16px" }
2229
2247
  }
2230
2248
  ),
@@ -2232,30 +2250,30 @@ const qt = ({
2232
2250
  ]
2233
2251
  }
2234
2252
  );
2235
- }, kn = ({ config: n = {} }) => {
2236
- const t = n?.header?.menu, r = t?.visible !== !1, o = t?.routes, i = _(() => {
2253
+ }, Rn = ({ config: n = {} }) => {
2254
+ const t = n?.header?.menu, r = t?.visible !== !1, o = t?.routes, s = _(() => {
2237
2255
  if (!o) return;
2238
- const a = {}, { flatMenuList: b } = ie.getState();
2239
- return b.forEach((l) => {
2240
- if (l.menuGbCd === t?.menuGubunCode?.program && l.scrnPath) {
2241
- const c = l.scrnPath.startsWith("/") ? l.scrnPath : `/${l.scrnPath}`, v = Object.keys(o).find((m) => {
2242
- const d = m === "/" ? "/" : m.startsWith("/") ? m : `/${m}`;
2243
- return d === c || d === `/main${c}` || c === d.replace(/^\/main/, "");
2256
+ const a = {}, { flatMenuList: g } = ce.getState();
2257
+ return g.forEach((c) => {
2258
+ if (c.menuGbCd === t?.menuGubunCode?.program && c.scrnPath) {
2259
+ const u = c.scrnPath.startsWith("/") ? c.scrnPath : `/${c.scrnPath}`, y = Object.keys(o).find((h) => {
2260
+ const k = h === "/" ? "/" : h.startsWith("/") ? h : `/${h}`;
2261
+ return k === u || k === `/main${u}` || u === k.replace(/^\/main/, "");
2244
2262
  });
2245
- if (v) {
2246
- const m = v === "/" ? "/main" : v.startsWith("/main") ? v : `/main${v.startsWith("/") ? v : `/${v}`}`;
2247
- a[l.menuId] = m;
2263
+ if (y) {
2264
+ const h = y === "/" ? "/main" : y.startsWith("/main") ? y : `/main${y.startsWith("/") ? y : `/${y}`}`;
2265
+ a[c.menuId] = h;
2248
2266
  }
2249
2267
  }
2250
2268
  }), a;
2251
2269
  }, [o, t?.menuGubunCode?.program]);
2252
- return /* @__PURE__ */ C(Z, { className: "main-layout", children: [
2253
- /* @__PURE__ */ e(Se, { config: n?.header, children: r && /* @__PURE__ */ e(
2254
- Xt,
2270
+ return /* @__PURE__ */ l(X, { className: "main-layout", children: [
2271
+ /* @__PURE__ */ e(ze, { config: n?.header, children: r && /* @__PURE__ */ e(
2272
+ cn,
2255
2273
  {
2256
2274
  menuGubunCode: t?.menuGubunCode,
2257
2275
  mode: t?.style?.mode || "horizontal",
2258
- routeMap: i,
2276
+ routeMap: s,
2259
2277
  style: {
2260
2278
  border: "none",
2261
2279
  backgroundColor: "transparent",
@@ -2265,7 +2283,7 @@ const qt = ({
2265
2283
  }
2266
2284
  }
2267
2285
  ) }),
2268
- /* @__PURE__ */ e("div", { className: "content-container", children: /* @__PURE__ */ C(Pe, { config: n?.content, children: [
2286
+ /* @__PURE__ */ e("div", { className: "content-container", children: /* @__PURE__ */ l(Re, { config: n?.content, children: [
2269
2287
  /* @__PURE__ */ e("div", { className: "view-container", children: /* @__PURE__ */ e(
2270
2288
  "div",
2271
2289
  {
@@ -2274,19 +2292,19 @@ const qt = ({
2274
2292
  width: "100%",
2275
2293
  height: "100%"
2276
2294
  },
2277
- children: /* @__PURE__ */ e(se, { fallback: /* @__PURE__ */ e("div", { children: "Loading..." }), children: /* @__PURE__ */ e(xe, { children: Object.entries(o || {}).map(([a, b]) => {
2278
- const l = a === "/" ? "" : a.replace(/^\/main/, "").replace(/^\//, "") || "";
2295
+ children: /* @__PURE__ */ e(le, { fallback: /* @__PURE__ */ e("div", { children: "Loading..." }), children: /* @__PURE__ */ e(Le, { children: Object.entries(o || {}).map(([a, g]) => {
2296
+ const c = a === "/" ? "" : a.replace(/^\/main/, "").replace(/^\//, "") || "";
2279
2297
  return /* @__PURE__ */ e(
2280
- te,
2298
+ Y,
2281
2299
  {
2282
- path: l,
2300
+ path: c,
2283
2301
  element: /* @__PURE__ */ e(
2284
- an,
2302
+ bn,
2285
2303
  {
2286
2304
  menuGubunCode: t?.menuGubunCode,
2287
- routeMap: i,
2305
+ routeMap: s,
2288
2306
  routes: o,
2289
- children: /* @__PURE__ */ e(b, {})
2307
+ children: /* @__PURE__ */ e(g, {})
2290
2308
  }
2291
2309
  )
2292
2310
  },
@@ -2295,44 +2313,43 @@ const qt = ({
2295
2313
  }) }) })
2296
2314
  }
2297
2315
  ) }),
2298
- /* @__PURE__ */ e(Te, {})
2316
+ /* @__PURE__ */ e(Ae, {})
2299
2317
  ] }) })
2300
2318
  ] });
2301
2319
  };
2302
- function In({
2320
+ function zn({
2303
2321
  config: n,
2304
- ui: t,
2305
- navigate: r
2322
+ ui: t
2306
2323
  }) {
2307
- const { loading: o, capsOn: i, prefills: a, onKeyDown: b, doLogin: l } = tt(n), c = (v) => l(v, r);
2308
- return D(() => {
2309
- nt.getState().fetchSystemMap();
2310
- }, []), /* @__PURE__ */ e(K, { children: t({ onSubmit: c, loading: o, capsOn: i, onKeyDown: b, prefills: a }) });
2324
+ const { loading: r, capsOn: o, prefills: s, onKeyDown: a, doLogin: g } = lt(n), c = (u) => g(u);
2325
+ return E(() => {
2326
+ se.getState().systemMap.length === 0 && se.getState().fetchSystemMap();
2327
+ }, []), /* @__PURE__ */ e(A, { children: t({ onSubmit: c, loading: r, capsOn: o, onKeyDown: a, prefills: s }) });
2311
2328
  }
2312
- function Nn({
2329
+ function An({
2313
2330
  onSubmit: n,
2314
2331
  loading: t,
2315
2332
  capsOn: r,
2316
2333
  onKeyDown: o,
2317
- prefills: i,
2334
+ prefills: s,
2318
2335
  labels: a = {
2319
2336
  id: "ID 혹은 사번",
2320
2337
  pw: "비밀번호",
2321
2338
  remember: "Remember me",
2322
2339
  login: "로그인"
2323
2340
  },
2324
- header: b,
2325
- footer: l
2341
+ header: g,
2342
+ footer: c
2326
2343
  }) {
2327
- const [c] = V.useForm();
2328
- return D(() => {
2329
- i && (i.id || i.pswr) && c.setFieldsValue({ id: i.id, pswr: i.pswr });
2330
- }, [i, c]), /* @__PURE__ */ e("div", { className: "login-main", children: /* @__PURE__ */ C("div", { className: "login_wrap", children: [
2331
- b || /* @__PURE__ */ e("div", { className: "logo_box" }),
2344
+ const [u] = Z.useForm();
2345
+ return E(() => {
2346
+ s && (s.id || s.pswr) && u.setFieldsValue({ id: s.id, pswr: s.pswr });
2347
+ }, [s, u]), /* @__PURE__ */ e("div", { className: "login-main", children: /* @__PURE__ */ l("div", { className: "login_wrap", children: [
2348
+ g || /* @__PURE__ */ e("div", { className: "logo_box" }),
2332
2349
  /* @__PURE__ */ e("div", { className: "login_title" }),
2333
- /* @__PURE__ */ e(V, { form: c, onFinish: n, className: "login-form", children: /* @__PURE__ */ C(ne, { vertical: !0, children: [
2350
+ /* @__PURE__ */ e(Z, { form: u, onFinish: n, className: "login-form", children: /* @__PURE__ */ l(ie, { vertical: !0, children: [
2334
2351
  /* @__PURE__ */ e(
2335
- V.Item,
2352
+ Z.Item,
2336
2353
  {
2337
2354
  name: "id",
2338
2355
  rules: [
@@ -2342,16 +2359,16 @@ function Nn({
2342
2359
  message: "아이디는 공백이 들어갈 수 없습니다."
2343
2360
  }
2344
2361
  ],
2345
- children: /* @__PURE__ */ e(ue, { allowClear: !0, placeholder: a.id, onKeyDown: o })
2362
+ children: /* @__PURE__ */ e(fe, { allowClear: !0, placeholder: a.id, onKeyDown: o })
2346
2363
  }
2347
2364
  ),
2348
2365
  /* @__PURE__ */ e(
2349
- V.Item,
2366
+ Z.Item,
2350
2367
  {
2351
2368
  name: "pswr",
2352
2369
  rules: [{ required: !0, message: "비밀번호를 입력하세요." }],
2353
2370
  children: /* @__PURE__ */ e(
2354
- ue.Password,
2371
+ fe.Password,
2355
2372
  {
2356
2373
  allowClear: !0,
2357
2374
  placeholder: a.pw,
@@ -2360,29 +2377,229 @@ function Nn({
2360
2377
  )
2361
2378
  }
2362
2379
  ),
2363
- /* @__PURE__ */ e(V.Item, { name: "remember", valuePropName: "checked", children: /* @__PURE__ */ e(qe, { children: a.remember }) }),
2380
+ /* @__PURE__ */ e(Z.Item, { name: "remember", valuePropName: "checked", children: /* @__PURE__ */ e(rt, { children: a.remember }) }),
2364
2381
  /* @__PURE__ */ e("div", { className: r ? "caps-lock caps-lock-on" : "caps-lock", children: r ? "Caps Lock On" : "Caps Lock Off" }),
2365
- /* @__PURE__ */ e(V.Item, { children: /* @__PURE__ */ e(B, { type: "primary", htmlType: "submit", loading: t, block: !0, children: a.login }) })
2382
+ /* @__PURE__ */ e(Z.Item, { children: /* @__PURE__ */ e(B, { type: "primary", htmlType: "submit", loading: t, block: !0, children: a.login }) })
2366
2383
  ] }) }),
2367
- l
2384
+ c
2368
2385
  ] }) });
2369
2386
  }
2387
+ const { Text: V, Title: yn } = xe;
2388
+ function $n({
2389
+ loginConfig: n,
2390
+ loginParams: t,
2391
+ mainLogo: r,
2392
+ systemLogo: o,
2393
+ onGoLogin: s,
2394
+ onGoMain: a
2395
+ }) {
2396
+ const { loginStatus: g, doSsoLogin: c } = ct(n);
2397
+ E(() => {
2398
+ u();
2399
+ }, [t.userId]);
2400
+ const u = () => c(t), y = ({
2401
+ children: k
2402
+ }) => /* @__PURE__ */ l(
2403
+ yn,
2404
+ {
2405
+ level: 4,
2406
+ style: {
2407
+ marginBottom: 8,
2408
+ display: "flex",
2409
+ alignItems: "center",
2410
+ justifyContent: "center"
2411
+ },
2412
+ children: [
2413
+ o && o,
2414
+ " ",
2415
+ k
2416
+ ]
2417
+ }
2418
+ ), h = () => g === "LOADING" ? /* @__PURE__ */ l(A, { children: [
2419
+ /* @__PURE__ */ e(Q, { size: "large", style: { margin: "10px 0" } }),
2420
+ /* @__PURE__ */ l("div", { children: [
2421
+ /* @__PURE__ */ e(y, { children: "로그인 중입니다." }),
2422
+ /* @__PURE__ */ l(V, { children: [
2423
+ "인증 정보를 확인하는 중입니다.",
2424
+ /* @__PURE__ */ e("br", {}),
2425
+ "브라우저 창을 닫지 말아 주세요."
2426
+ ] })
2427
+ ] }),
2428
+ /* @__PURE__ */ e(V, { type: "secondary", style: { fontSize: 12 }, children: "인증이 완료되면 자동으로 다음 화면으로 이동합니다." }),
2429
+ /* @__PURE__ */ e(B, { style: { marginTop: 8 }, onClick: s, children: "로그인 화면" })
2430
+ ] }) : g === "SUCCESS" ? /* @__PURE__ */ l(A, { children: [
2431
+ /* @__PURE__ */ e("div", { style: { fontSize: 48 }, children: /* @__PURE__ */ e(De, { twoToneColor: "#52c41a" }) }),
2432
+ /* @__PURE__ */ l("div", { children: [
2433
+ /* @__PURE__ */ e(y, { children: "로그인에 성공했습니다." }),
2434
+ /* @__PURE__ */ e(V, { children: "잠시만 기다려 주세요." })
2435
+ ] }),
2436
+ /* @__PURE__ */ e(V, { type: "secondary", style: { fontSize: 12 }, children: "잠시 후 자동으로 다음 화면으로 이동합니다." }),
2437
+ /* @__PURE__ */ e(q, { style: { marginTop: 8, justifyContent: "center" }, children: /* @__PURE__ */ e(B, { type: "primary", onClick: a, children: "바로 이동하기" }) })
2438
+ ] }) : g === "FAIL" ? /* @__PURE__ */ l(A, { children: [
2439
+ /* @__PURE__ */ e("div", { style: { fontSize: 48 }, children: /* @__PURE__ */ e(Ie, { twoToneColor: "#ff4d4f" }) }),
2440
+ /* @__PURE__ */ l("div", { children: [
2441
+ /* @__PURE__ */ e(y, { children: "로그인에 실패했습니다." }),
2442
+ /* @__PURE__ */ l(V, { children: [
2443
+ "인증 과정에서 오류가 발생했습니다.",
2444
+ /* @__PURE__ */ e("br", {}),
2445
+ "다시 시도해 주세요."
2446
+ ] })
2447
+ ] }),
2448
+ /* @__PURE__ */ e(V, { type: "secondary", style: { fontSize: 12 }, children: "문제가 지속되면 관리자에게 문의해 주세요." }),
2449
+ /* @__PURE__ */ l(q, { style: { marginTop: 8, justifyContent: "center" }, children: [
2450
+ /* @__PURE__ */ e(
2451
+ B,
2452
+ {
2453
+ type: "primary",
2454
+ onClick: u,
2455
+ icon: /* @__PURE__ */ e(de, {}),
2456
+ children: "다시 시도"
2457
+ }
2458
+ ),
2459
+ /* @__PURE__ */ e(B, { onClick: s, icon: /* @__PURE__ */ e(It, {}), children: "로그인 화면" })
2460
+ ] })
2461
+ ] }) : /* @__PURE__ */ l(A, { children: [
2462
+ /* @__PURE__ */ e(Q, { size: "large", style: { margin: "10px 0" } }),
2463
+ /* @__PURE__ */ e(V, { children: "로그인 상태를 확인하는 중입니다." })
2464
+ ] });
2465
+ return E(() => {
2466
+ se.getState().systemMap.length === 0 && se.getState().fetchSystemMap();
2467
+ }, []), /* @__PURE__ */ e(
2468
+ "div",
2469
+ {
2470
+ style: {
2471
+ minHeight: "100vh",
2472
+ display: "flex",
2473
+ alignItems: "center",
2474
+ justifyContent: "center",
2475
+ background: "#f5f5f5"
2476
+ },
2477
+ children: /* @__PURE__ */ e(
2478
+ Be,
2479
+ {
2480
+ style: {
2481
+ width: 420,
2482
+ padding: "32px 32px 28px",
2483
+ textAlign: "center",
2484
+ borderRadius: 16,
2485
+ boxShadow: "0 8px 24px rgba(0,0,0,0.06)"
2486
+ },
2487
+ children: /* @__PURE__ */ l(q, { direction: "vertical", size: 16, style: { width: "100%" }, children: [
2488
+ /* @__PURE__ */ e("div", { children: r && r }),
2489
+ h()
2490
+ ] })
2491
+ }
2492
+ )
2493
+ }
2494
+ );
2495
+ }
2496
+ const { Text: Te, Title: Cn } = xe;
2497
+ function Wn({
2498
+ mode: n,
2499
+ mainLogo: t,
2500
+ systemLogo: r,
2501
+ newUserId: o,
2502
+ onContinue: s,
2503
+ onGoLogin: a
2504
+ }) {
2505
+ const g = ({
2506
+ children: h
2507
+ }) => /* @__PURE__ */ l(
2508
+ Cn,
2509
+ {
2510
+ level: 4,
2511
+ style: {
2512
+ marginBottom: 8,
2513
+ display: "flex",
2514
+ alignItems: "center",
2515
+ justifyContent: "center",
2516
+ gap: 6
2517
+ },
2518
+ children: [
2519
+ r && r,
2520
+ " ",
2521
+ h
2522
+ ]
2523
+ }
2524
+ ), { title: c, desc: u, subDesc: y } = n === "SESSION_CHANGED" ? {
2525
+ title: "세션이 변경되었습니다.",
2526
+ desc: `이 브라우저에서 다른 계정으로 다시 로그인되었습니다.
2527
+ 현재 창에서는 이전 계정을 더 이상 사용할 수 없습니다.`,
2528
+ subDesc: o ? `새로 로그인된 계정: ${o}` : "새로 로그인된 계정으로 계속 진행하거나, 로그인 화면으로 이동해 주세요."
2529
+ } : {
2530
+ title: "세션이 만료되었습니다.",
2531
+ desc: `일정 시간 동안 사용하지 않아 로그인이 해제되었습니다.
2532
+ 보안을 위해 다시 로그인해 주세요.`,
2533
+ subDesc: "계속 이용하시려면 로그인 화면으로 이동해 주세요."
2534
+ };
2535
+ return /* @__PURE__ */ e(
2536
+ "div",
2537
+ {
2538
+ style: {
2539
+ minHeight: "100vh",
2540
+ display: "flex",
2541
+ alignItems: "center",
2542
+ justifyContent: "center",
2543
+ background: "#f5f5f5"
2544
+ },
2545
+ children: /* @__PURE__ */ e(
2546
+ Be,
2547
+ {
2548
+ style: {
2549
+ width: 450,
2550
+ padding: "32px 32px 28px",
2551
+ textAlign: "center",
2552
+ borderRadius: 16,
2553
+ boxShadow: "0 8px 24px rgba(0,0,0,0.06)"
2554
+ },
2555
+ children: /* @__PURE__ */ l(q, { direction: "vertical", size: 16, style: { width: "100%" }, children: [
2556
+ /* @__PURE__ */ e("div", { children: t && t }),
2557
+ /* @__PURE__ */ e("div", { style: { fontSize: 48 }, children: /* @__PURE__ */ e(Ie, { twoToneColor: "#faad14" }) }),
2558
+ /* @__PURE__ */ l("div", { children: [
2559
+ /* @__PURE__ */ e(g, { children: c }),
2560
+ /* @__PURE__ */ e(Te, { children: u.split(`
2561
+ `).map((h, k) => /* @__PURE__ */ l("span", { children: [
2562
+ h,
2563
+ /* @__PURE__ */ e("br", {})
2564
+ ] }, k)) })
2565
+ ] }),
2566
+ /* @__PURE__ */ e(Te, { type: "secondary", style: { fontSize: 12 }, children: y }),
2567
+ /* @__PURE__ */ e(q, { style: { marginTop: 8, justifyContent: "center" }, children: s && o && /* @__PURE__ */ l(
2568
+ B,
2569
+ {
2570
+ type: "primary",
2571
+ icon: /* @__PURE__ */ e(De, {}),
2572
+ onClick: s,
2573
+ children: [
2574
+ o,
2575
+ " 계정으로 계속 사용"
2576
+ ]
2577
+ }
2578
+ ) })
2579
+ ] })
2580
+ }
2581
+ )
2582
+ }
2583
+ );
2584
+ }
2370
2585
  export {
2371
- wn as A,
2372
- xn as B,
2373
- Qt as C,
2374
- Nn as D,
2375
- Xt as H,
2376
- vn as L,
2377
- nn as P,
2378
- kn as a,
2379
- In as b,
2380
- Jt as c,
2381
- Pe as d,
2382
- Se as e,
2383
- Ut as f,
2384
- Zt as g,
2385
- an as h,
2386
- sn as i,
2387
- Dt as l
2586
+ En as A,
2587
+ Dn as B,
2588
+ ln as C,
2589
+ An as D,
2590
+ cn as H,
2591
+ On as L,
2592
+ mn as P,
2593
+ Rn as a,
2594
+ zn as b,
2595
+ $n as c,
2596
+ Wn as d,
2597
+ dn as e,
2598
+ Re as f,
2599
+ ze as g,
2600
+ nn as h,
2601
+ on as i,
2602
+ bn as j,
2603
+ fn as k,
2604
+ Vt as l
2388
2605
  };