@bwg-ui/core 1.2.6 → 1.2.8

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 (77) hide show
  1. package/README.md +28 -0
  2. package/dist/chunks/MenuReport-CiL4ggPy.js +1244 -0
  3. package/dist/chunks/MenuReport-DIkKwvta.cjs +1 -0
  4. package/dist/chunks/common-components-B4mah7DM.cjs +183 -0
  5. package/dist/chunks/{common-components-CnAjT_Gi.js → common-components-G-FELsbw.js} +7510 -7094
  6. package/dist/chunks/{core-MOICJvq5.cjs → core-CXP75zcn.cjs} +1 -1
  7. package/dist/chunks/{core-C5T-8H8j.js → core-pjW5SaWA.js} +13 -13
  8. package/dist/chunks/{enc-base64-8MLFBYmR.cjs → enc-base64-Bg9x86kU.cjs} +1 -1
  9. package/dist/chunks/{enc-base64-Ciw6cw8D.js → enc-base64-DtP_G7ev.js} +2 -2
  10. package/dist/chunks/layout-components-De-k79AV.cjs +35 -0
  11. package/dist/chunks/layout-components-mRRx1BIz.js +1616 -0
  12. package/dist/chunks/{sha256-CsieizMm.js → sha256-BTxiV_cX.js} +2 -2
  13. package/dist/chunks/{sha256-CpH38gS4.cjs → sha256-CFa0dyCj.cjs} +1 -1
  14. package/dist/components/common/ButtonAccessController.d.ts +5 -0
  15. package/dist/components/common/ButtonAccessController.d.ts.map +1 -0
  16. package/dist/components/common/BwgEditor.d.ts +3 -3
  17. package/dist/components/common/BwgEditor.d.ts.map +1 -1
  18. package/dist/components/common/BwgPopup.d.ts +15 -0
  19. package/dist/components/common/BwgPopup.d.ts.map +1 -1
  20. package/dist/components/common/BwgView.d.ts +2 -23
  21. package/dist/components/common/BwgView.d.ts.map +1 -1
  22. package/dist/components/common/SearchBox.d.ts +1 -57
  23. package/dist/components/common/SearchBox.d.ts.map +1 -1
  24. package/dist/components/common/index.cjs +1 -1
  25. package/dist/components/common/index.d.ts +5 -3
  26. package/dist/components/common/index.d.ts.map +1 -1
  27. package/dist/components/common/index.js +24 -23
  28. package/dist/components/common/type.d.ts +132 -0
  29. package/dist/components/common/type.d.ts.map +1 -0
  30. package/dist/components/guide/index.cjs +1 -1
  31. package/dist/components/guide/index.js +1 -1
  32. package/dist/components/layout/BwgPortal01.d.ts.map +1 -1
  33. package/dist/components/layout/default/LocalPopupContainer.d.ts +3 -0
  34. package/dist/components/layout/default/LocalPopupContainer.d.ts.map +1 -0
  35. package/dist/components/layout/default/PopupContainer.d.ts.map +1 -1
  36. package/dist/components/layout/index.cjs +1 -35
  37. package/dist/components/layout/index.js +13 -1558
  38. package/dist/components/popup/MenuReport.d.ts +2 -5
  39. package/dist/components/popup/MenuReport.d.ts.map +1 -1
  40. package/dist/components/popup/SearchDepartmentP01.d.ts +4 -5
  41. package/dist/components/popup/SearchDepartmentP01.d.ts.map +1 -1
  42. package/dist/components/popup/SearchDepartmentP02.d.ts +3 -5
  43. package/dist/components/popup/SearchDepartmentP02.d.ts.map +1 -1
  44. package/dist/components/popup/SearchEmployeeP01.d.ts +3 -1
  45. package/dist/components/popup/SearchEmployeeP01.d.ts.map +1 -1
  46. package/dist/components/popup/SearchEmployeeP02.d.ts +3 -1
  47. package/dist/components/popup/SearchEmployeeP02.d.ts.map +1 -1
  48. package/dist/components/popup/SearchOrganizationP01.d.ts +2 -4
  49. package/dist/components/popup/SearchOrganizationP01.d.ts.map +1 -1
  50. package/dist/components/popup/SearchOrganizationP02.d.ts +3 -4
  51. package/dist/components/popup/SearchOrganizationP02.d.ts.map +1 -1
  52. package/dist/components/popup/config/localPopupRegistry.d.ts +8 -0
  53. package/dist/components/popup/config/localPopupRegistry.d.ts.map +1 -0
  54. package/dist/components/popup/index.cjs +1 -1
  55. package/dist/components/popup/index.d.ts +2 -4
  56. package/dist/components/popup/index.d.ts.map +1 -1
  57. package/dist/components/popup/index.js +5 -1739
  58. package/dist/index.cjs +1 -1
  59. package/dist/index.d.ts +1 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +154 -147
  62. package/dist/provider/hooks/usePopup.d.ts +1 -0
  63. package/dist/provider/hooks/usePopup.d.ts.map +1 -1
  64. package/dist/provider/index.cjs +1 -1
  65. package/dist/provider/index.js +205 -188
  66. package/dist/stores/index.cjs +2 -2
  67. package/dist/stores/index.js +253 -200
  68. package/dist/stores/popupStore.d.ts +9 -1
  69. package/dist/stores/popupStore.d.ts.map +1 -1
  70. package/dist/utils/gwUtils.d.ts +23 -0
  71. package/dist/utils/gwUtils.d.ts.map +1 -0
  72. package/dist/utils/index.cjs +1 -1
  73. package/dist/utils/index.d.ts +9 -8
  74. package/dist/utils/index.d.ts.map +1 -1
  75. package/dist/utils/index.js +588 -486
  76. package/package.json +4 -4
  77. package/dist/chunks/common-components-Bhr_MU0K.cjs +0 -183
@@ -0,0 +1,1616 @@
1
+ import { jsxs as f, jsx as e, Fragment as F } from "react/jsx-runtime";
2
+ import { ServiceCodeProvider as de, CommonCodeProvider as ue, ScreenProtectProvider as pe, useLock as me, SearchBoxProvider as he } from "../provider/index.js";
3
+ import { Routes as ge, Route as U, Navigate as fe, useNavigate as be } from "react-router-dom";
4
+ import { G as ye, B as Ce, Q as ve } from "./common-components-G-FELsbw.js";
5
+ import { Spin as W, Layout as z, ColorPicker as we, Button as x, Popover as xe, Avatar as ke, Tabs as Ne, Tooltip as A, AutoComplete as Ie, Input as Se, Segmented as Te, Menu as J, Result as se, Space as Le, Typography as Pe, Empty as K } from "antd";
6
+ import { lazy as D, useEffect as E, useState as S, useRef as $, useMemo as _, useCallback as M, createElement as ae, memo as Y, cloneElement as Me, Component as Ee, Suspense as Q } from "react";
7
+ import { useUserStore as Be, useMenuViewStore as I, useMenuModelStore as De, useFavoriteStore as Oe, usePopupStore as X } from "../stores/index.js";
8
+ import * as ee from "@ant-design/icons";
9
+ import { UserOutlined as Re, StepBackwardOutlined as Ae, LeftOutlined as Fe, RightOutlined as ze, StepForwardOutlined as $e, CloseOutlined as ie, MenuUnfoldOutlined as He, MenuFoldOutlined as Ve, ExclamationCircleOutlined as Ge, WarningOutlined as _e, StarOutlined as We, FolderOpenOutlined as je, ReloadOutlined as le, ExclamationCircleTwoTone as Ue } from "@ant-design/icons";
10
+ import { getCookie as Ke, getCurrentDateString as te, setCookie as Ze, THEME_COOKIE_NAME as ne, getUserId as re } from "../utils/index.js";
11
+ import { useSensors as Ye, useSensor as Qe, PointerSensor as Xe, DndContext as qe, closestCenter as Je } from "@dnd-kit/core";
12
+ import { restrictToHorizontalAxis as et } from "@dnd-kit/modifiers";
13
+ import { arrayMove as tt, SortableContext as nt, horizontalListSortingStrategy as rt, useSortable as ot } from "@dnd-kit/sortable";
14
+ const st = D(() => import("./MenuReport-CiL4ggPy.js")), at = D(() => import("./common-components-G-FELsbw.js").then((n) => n.D)), it = D(() => import("./common-components-G-FELsbw.js").then((n) => n.E)), lt = D(() => import("./common-components-G-FELsbw.js").then((n) => n.F)), ct = D(() => import("./common-components-G-FELsbw.js").then((n) => n.H)), dt = {
15
+ // 게시판/문의
16
+ CORE_REPORT: {
17
+ component: st,
18
+ defaultConfig: {
19
+ title: "게시판/문의",
20
+ width: 1200,
21
+ height: 800
22
+ }
23
+ },
24
+ // 조직/부서 검색류
25
+ CORE_DEPARTMENT_01: {
26
+ component: at,
27
+ defaultConfig: {
28
+ title: "부서 검색",
29
+ width: 620,
30
+ height: 700
31
+ }
32
+ },
33
+ CORE_DEPARTMENT_02: {
34
+ component: it,
35
+ defaultConfig: {
36
+ title: "부서 검색",
37
+ width: 620,
38
+ height: 700
39
+ }
40
+ },
41
+ CORE_ORGANIZATION_01: {
42
+ component: lt,
43
+ defaultConfig: {
44
+ title: "조직 검색",
45
+ width: 620,
46
+ height: 700
47
+ }
48
+ },
49
+ CORE_ORGANIZATION_02: {
50
+ component: ct,
51
+ defaultConfig: {
52
+ title: "조직 검색",
53
+ width: 1e3,
54
+ height: 700
55
+ }
56
+ }
57
+ }, oe = "bwg-dot-line-wave-v4";
58
+ function ut() {
59
+ if (typeof document > "u" || document.getElementById(oe)) return;
60
+ const n = document.createElement("style");
61
+ n.id = oe, n.textContent = `
62
+ .bwg-dotline {
63
+ display: inline-flex;
64
+ align-items: center;
65
+ gap: var(--bwg-gap, 12px);
66
+ height: calc(var(--bwg-size, 12px) + 2 * var(--bwg-amp, 12px));
67
+ line-height: 0;
68
+ }
69
+ .bwg-dotline .dot {
70
+ width: var(--bwg-size, 12px);
71
+ height: var(--bwg-size, 12px);
72
+ border-radius: 50%;
73
+ background: currentColor;
74
+ will-change: transform, opacity;
75
+ filter: drop-shadow(0 1px 2px rgba(0,0,0,.12));
76
+ animation: bwg-dotline-sine var(--bwg-speed, 780ms) linear infinite;
77
+ }
78
+
79
+ /* sin(θ) 근사: 0, 45, 90, 135, 180, 225, 270, 315, 360deg */
80
+ @keyframes bwg-dotline-sine {
81
+ 0% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
82
+ 12.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }
83
+ 25% { transform: translate3d(0, calc(-1 * var(--bwg-amp, 12px)), 0) scale(1.06); opacity: 1; }
84
+ 37.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }
85
+ 50% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
86
+ 62.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }
87
+ 75% { transform: translate3d(0, calc( 1 * var(--bwg-amp, 12px)), 0) scale(.96); opacity: .76; }
88
+ 87.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }
89
+ 100% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
90
+ }
91
+
92
+ @media (prefers-reduced-motion: reduce) {
93
+ .bwg-dotline .dot { animation: none; }
94
+ }
95
+ `, document.head.appendChild(n);
96
+ }
97
+ const pt = ({
98
+ colors: n = ["#DAD3FF", "#B3A6FF", "#9380FF", "#816BFA"],
99
+ count: t,
100
+ size: r = 12,
101
+ gap: s = 10,
102
+ amp: a = 16,
103
+ speedMs: m = 900,
104
+ direction: y = "ltr",
105
+ phase: c = 0.7
106
+ }) => {
107
+ E(() => {
108
+ ut();
109
+ }, []);
110
+ const h = t ?? n.length, u = Array.from({ length: h }), p = {
111
+ "--bwg-size": `${r}px`,
112
+ "--bwg-gap": `${s}px`,
113
+ "--bwg-amp": `${a}px`,
114
+ "--bwg-speed": `${m}ms`
115
+ }, C = m / h * c;
116
+ return /* @__PURE__ */ e(
117
+ "span",
118
+ {
119
+ className: "bwg-dotline",
120
+ role: "img",
121
+ "aria-label": "loading",
122
+ style: p,
123
+ children: u.map((o, i) => /* @__PURE__ */ e(
124
+ "span",
125
+ {
126
+ className: "dot",
127
+ style: {
128
+ backgroundColor: n[i % n.length],
129
+ animationDelay: y === "ltr" ? `${i * C}ms` : `${(h - 1 - i) * C}ms`
130
+ }
131
+ },
132
+ i
133
+ ))
134
+ }
135
+ );
136
+ }, Zt = ({
137
+ spin: n = null,
138
+ text: t = "인증중..."
139
+ }) => n ?? !0 ? /* @__PURE__ */ f(
140
+ "div",
141
+ {
142
+ style: {
143
+ position: "fixed",
144
+ height: "100vh",
145
+ left: 0,
146
+ right: 0,
147
+ top: 0,
148
+ display: "flex",
149
+ flexDirection: "column",
150
+ justifyContent: "center",
151
+ alignItems: "center",
152
+ gap: 8,
153
+ padding: "8px 12px",
154
+ background: "rgba(0,0,0,0.6)",
155
+ color: "#fff",
156
+ zIndex: 1e4
157
+ },
158
+ "aria-live": "polite",
159
+ "aria-busy": "true",
160
+ role: "status",
161
+ children: [
162
+ /* @__PURE__ */ e(
163
+ W,
164
+ {
165
+ indicator: /* @__PURE__ */ e(
166
+ pt,
167
+ {
168
+ colors: ["#DAD3FF", "#B3A6FF", "#9380FF", "#816BFA"],
169
+ size: 12,
170
+ gap: 10,
171
+ amp: 16,
172
+ speedMs: 900,
173
+ phase: 0.75,
174
+ direction: "ltr"
175
+ }
176
+ )
177
+ }
178
+ ),
179
+ /* @__PURE__ */ e("span", { className: "bwg-spin-txt", style: { marginTop: "15px" }, children: t })
180
+ ]
181
+ }
182
+ ) : null, Yt = ({ routes: n, useCommonProvider: t = !0, useServiceProvider: r = !0 }) => {
183
+ let a = /* @__PURE__ */ f(ge, { children: [
184
+ /* @__PURE__ */ e(U, { path: "/", element: /* @__PURE__ */ e(fe, { to: "/login" }) }),
185
+ /* @__PURE__ */ e(U, { path: "/login", element: n.login }),
186
+ /* @__PURE__ */ e(U, { path: "/main", element: n.main })
187
+ ] });
188
+ return r && (a = /* @__PURE__ */ e(de, { children: a })), t && (a = /* @__PURE__ */ e(ue, { children: a })), /* @__PURE__ */ e(ye, { children: a });
189
+ }, { Content: mt } = z, ht = ({
190
+ config: n = {},
191
+ children: t
192
+ }) => {
193
+ const r = {
194
+ wrapper: {
195
+ className: "content-wrapper",
196
+ ...n.wrapper
197
+ },
198
+ body: {
199
+ className: "content-body",
200
+ ...n.body
201
+ },
202
+ ...n
203
+ };
204
+ return /* @__PURE__ */ e(
205
+ mt,
206
+ {
207
+ className: r.wrapper.className,
208
+ style: r.wrapper.style,
209
+ children: /* @__PURE__ */ e(Ce, { children: /* @__PURE__ */ e(
210
+ "div",
211
+ {
212
+ className: r.body.className,
213
+ style: r.body.style,
214
+ children: t
215
+ }
216
+ ) })
217
+ }
218
+ );
219
+ }, gt = "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", bt = "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: yt } = z, P = {
220
+ light: {
221
+ headerBg: "#ffffff",
222
+ headerText: "#000000",
223
+ sidebarBg: "#ffffff",
224
+ sidebarText: "#000000",
225
+ buttonPrimary: "#1890ff",
226
+ buttonPrimaryHover: "#40a9ff",
227
+ buttonPrimaryActive: "#096dd9",
228
+ buttonDefault: "#ffffff",
229
+ buttonDefaultHover: "#f5f5f5",
230
+ buttonDefaultBorder: "#d9d9d9",
231
+ buttonPermissionBorder: "#bdb1ff"
232
+ },
233
+ dark: {
234
+ headerBg: "#4a4a4a",
235
+ headerText: "#ffffff",
236
+ sidebarBg: "#4a4a4a",
237
+ sidebarText: "#ffffff",
238
+ buttonPrimary: "#177ddc",
239
+ buttonPrimaryHover: "#1890ff",
240
+ buttonPrimaryActive: "#0958b5",
241
+ buttonDefault: "#434343",
242
+ buttonDefaultHover: "#303030",
243
+ buttonDefaultBorder: "#434343",
244
+ buttonPermissionBorder: "#bdb1ff"
245
+ },
246
+ blue: {
247
+ headerBg: "#4a90e2",
248
+ headerText: "#ffffff",
249
+ sidebarBg: "#4a90e2",
250
+ sidebarText: "#ffffff",
251
+ buttonPrimary: "#1890ff",
252
+ buttonPrimaryHover: "#40a9ff",
253
+ buttonPrimaryActive: "#096dd9",
254
+ buttonDefault: "#ffffff",
255
+ buttonDefaultHover: "#f0f8ff",
256
+ buttonDefaultBorder: "#4a90e2",
257
+ buttonPermissionBorder: "#bdb1ff"
258
+ },
259
+ modern: {
260
+ headerBg: "#f3f4ff",
261
+ headerText: "#333333",
262
+ sidebarBg: "#ffffff",
263
+ sidebarText: "#555555",
264
+ buttonPrimary: "#6449FC",
265
+ buttonPrimaryHover: "#6449FC",
266
+ buttonPrimaryActive: "#6449FC",
267
+ buttonDefault: "#ffffff",
268
+ buttonDefaultHover: "#f5f5f5",
269
+ buttonDefaultBorder: "#dddddd",
270
+ buttonPermissionBorder: "#bdb1ff"
271
+ }
272
+ }, Ct = ({ config: n = {} }) => {
273
+ const t = {
274
+ wrapper: {
275
+ className: "header-wrapper",
276
+ ...n.wrapper
277
+ },
278
+ logo: {
279
+ gap: 10,
280
+ ...n.logo
281
+ },
282
+ right: {
283
+ gap: 14,
284
+ minWidth: 200,
285
+ avatar: {
286
+ width: 30,
287
+ height: 30,
288
+ ...n.right?.avatar
289
+ },
290
+ ...n.right
291
+ },
292
+ ...n
293
+ }, r = be(), [s, a] = S("modern"), m = $(null), { logout: y } = Be(), c = (o, i) => {
294
+ try {
295
+ if (!/^[a-zA-Z0-9-]+$/.test(o)) {
296
+ console.warn(`Invalid CSS variable name: ${o}`);
297
+ return;
298
+ }
299
+ if (!/^[#a-zA-Z0-9()\s,.-]+$/.test(i)) {
300
+ console.warn(`Invalid CSS variable value: ${i}`);
301
+ return;
302
+ }
303
+ document.documentElement.style.setProperty(o, i);
304
+ } catch (T) {
305
+ console.error("CSS variable setting failed:", T);
306
+ }
307
+ }, h = (o) => {
308
+ if (!P[o]) {
309
+ console.warn(`Invalid theme: ${o}`);
310
+ return;
311
+ }
312
+ a(o);
313
+ const i = { ...P[o] };
314
+ c("--header-bg", i.headerBg), c("--header-text", i.headerText), c("--sidebar-bg", i.sidebarBg), c("--sidebar-text", i.sidebarText), c("--button-primary", i.buttonPrimary), c("--button-primary-hover", i.buttonPrimaryHover), c("--button-primary-active", i.buttonPrimaryActive), c("--button-default", i.buttonDefault), c("--button-default-hover", i.buttonDefaultHover), c("--button-default-border", i.buttonDefaultBorder), c(
315
+ "--button-permission-border",
316
+ i.buttonPermissionBorder
317
+ ), m.current && m.current.setAttribute("data-theme", o), document.documentElement.setAttribute("data-theme", o), Ze(ne, o, 30);
318
+ };
319
+ E(() => {
320
+ const o = Ke(ne);
321
+ o && P[o] ? h(o) : h("modern");
322
+ }, []);
323
+ const u = () => ({ ...P[s] }).headerBg, p = () => {
324
+ y(), r("/login");
325
+ };
326
+ te ? te("HH:mm:ss") : (/* @__PURE__ */ new Date()).toLocaleTimeString("ko-KR");
327
+ const C = /* @__PURE__ */ f("div", { style: { padding: "8px 0" }, children: [
328
+ /* @__PURE__ */ f("div", { style: { marginBottom: "12px" }, children: [
329
+ /* @__PURE__ */ e(we, { value: u(), disabled: !0, size: "small" }),
330
+ /* @__PURE__ */ e("span", { style: { marginLeft: "8px", fontSize: "12px" }, children: "현재 테마 색상" })
331
+ ] }),
332
+ /* @__PURE__ */ f("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: [
333
+ /* @__PURE__ */ e(
334
+ x,
335
+ {
336
+ type: s === "modern" ? "primary" : "default",
337
+ size: "small",
338
+ onClick: () => h("modern"),
339
+ style: {
340
+ textAlign: "left",
341
+ backgroundColor: s === "modern" ? P.modern.headerBg : void 0,
342
+ color: s === "modern" ? P.modern.headerText : void 0
343
+ },
344
+ children: "모던"
345
+ },
346
+ "modern"
347
+ ),
348
+ Object.entries(P).filter(([o]) => o !== "modern").map(([o, i]) => /* @__PURE__ */ e(
349
+ x,
350
+ {
351
+ type: s === o ? "primary" : "default",
352
+ size: "small",
353
+ onClick: () => h(o),
354
+ style: {
355
+ textAlign: "left",
356
+ backgroundColor: s === o ? i.headerBg : void 0,
357
+ color: s === o ? i.headerText : void 0
358
+ },
359
+ children: o === "light" ? "라이트" : o === "dark" ? "다크" : o === "blue" ? "블루" : o
360
+ },
361
+ o
362
+ ))
363
+ ] })
364
+ ] });
365
+ return /* @__PURE__ */ f(
366
+ yt,
367
+ {
368
+ className: t.wrapper.className,
369
+ style: { ...t.wrapper.style },
370
+ children: [
371
+ t.logo && /* @__PURE__ */ e("div", { className: "header-left", children: /* @__PURE__ */ e(
372
+ "div",
373
+ {
374
+ className: "logo-container",
375
+ style: { gap: t.logo?.gap },
376
+ children: t.logo?.items
377
+ }
378
+ ) }),
379
+ /* @__PURE__ */ f(
380
+ "div",
381
+ {
382
+ className: "header-right",
383
+ style: {
384
+ gap: t.right?.gap,
385
+ minWidth: t.right?.minWidth
386
+ },
387
+ children: [
388
+ t.right?.items?.map((o, i) => /* @__PURE__ */ e("div", { children: o }, i)),
389
+ /* @__PURE__ */ e(
390
+ x,
391
+ {
392
+ type: "text",
393
+ icon: /* @__PURE__ */ e("img", { src: gt, alt: "알림" }),
394
+ className: "alarm-btn"
395
+ }
396
+ ),
397
+ /* @__PURE__ */ e(
398
+ xe,
399
+ {
400
+ content: C,
401
+ title: "테마 설정",
402
+ trigger: "click",
403
+ placement: "bottomRight",
404
+ children: /* @__PURE__ */ e(
405
+ x,
406
+ {
407
+ type: "text",
408
+ icon: /* @__PURE__ */ e("img", { src: bt, alt: "개인설정" }),
409
+ className: "theme-btn"
410
+ }
411
+ )
412
+ }
413
+ ),
414
+ /* @__PURE__ */ e(
415
+ x,
416
+ {
417
+ type: "text",
418
+ icon: /* @__PURE__ */ e("img", { src: ft, alt: "로그아웃" }),
419
+ onClick: p,
420
+ className: "logout-btn"
421
+ }
422
+ ),
423
+ /* @__PURE__ */ e(
424
+ ke,
425
+ {
426
+ icon: /* @__PURE__ */ e(Re, {}),
427
+ className: "avatar",
428
+ style: {
429
+ width: t.right?.avatar?.width,
430
+ height: t.right?.avatar?.height
431
+ }
432
+ }
433
+ )
434
+ ]
435
+ }
436
+ )
437
+ ]
438
+ }
439
+ );
440
+ }, Z = /* @__PURE__ */ Object.freeze({
441
+ Translate: {
442
+ toString(n) {
443
+ if (!n)
444
+ return;
445
+ const {
446
+ x: t,
447
+ y: r
448
+ } = n;
449
+ return "translate3d(" + (t ? Math.round(t) : 0) + "px, " + (r ? Math.round(r) : 0) + "px, 0)";
450
+ }
451
+ },
452
+ Scale: {
453
+ toString(n) {
454
+ if (!n)
455
+ return;
456
+ const {
457
+ scaleX: t,
458
+ scaleY: r
459
+ } = n;
460
+ return "scaleX(" + t + ") scaleY(" + r + ")";
461
+ }
462
+ },
463
+ Transform: {
464
+ toString(n) {
465
+ if (n)
466
+ return [Z.Translate.toString(n), Z.Scale.toString(n)].join(" ");
467
+ }
468
+ },
469
+ Transition: {
470
+ toString(n) {
471
+ let {
472
+ property: t,
473
+ duration: r,
474
+ easing: s
475
+ } = n;
476
+ return t + " " + r + "ms " + s;
477
+ }
478
+ }
479
+ }), vt = Y(
480
+ ({ className: n, ...t }) => {
481
+ const r = $(null), {
482
+ attributes: s,
483
+ listeners: a,
484
+ transform: m,
485
+ transition: y,
486
+ isDragging: c,
487
+ setNodeRef: h
488
+ } = ot({ id: t["data-node-key"] }), [u, p] = S();
489
+ E(() => {
490
+ const o = r.current;
491
+ if (o)
492
+ if (c) {
493
+ const i = Math.round(o.getBoundingClientRect().width);
494
+ p(i);
495
+ } else
496
+ p(void 0);
497
+ }, [c]);
498
+ const C = {
499
+ ...t.style,
500
+ transform: m ? Z.Transform.toString(m) : void 0,
501
+ transition: y ?? "transform 0.16s ease",
502
+ cursor: "grab",
503
+ userSelect: "none",
504
+ willChange: "transform",
505
+ // ✅ 드래그 중 픽셀 폭 고정 (flex 재계산 억제)
506
+ width: u ?? void 0,
507
+ minWidth: u ?? void 0,
508
+ maxWidth: u ?? void 0,
509
+ flex: u !== void 0 ? "0 0 auto" : void 0
510
+ };
511
+ return Me(t.children, {
512
+ ref: (o) => {
513
+ r.current !== o && (r.current = o), h(o);
514
+ },
515
+ style: C,
516
+ ...s,
517
+ ...a
518
+ });
519
+ }
520
+ ), wt = Y(function({
521
+ config: t,
522
+ isFirst: r,
523
+ isLast: s,
524
+ canCloseAll: a,
525
+ onFirst: m,
526
+ onPrev: y,
527
+ onNext: c,
528
+ onLast: h,
529
+ onCloseAll: u
530
+ }) {
531
+ return /* @__PURE__ */ f("div", { className: t.wrapper?.className, style: t.wrapper?.style, children: [
532
+ /* @__PURE__ */ e(
533
+ A,
534
+ {
535
+ title: "첫 번째 탭",
536
+ className: t.tooltip?.className,
537
+ style: t.tooltip?.style,
538
+ children: /* @__PURE__ */ e(
539
+ x,
540
+ {
541
+ className: t.buttons?.className,
542
+ style: t.buttons?.style,
543
+ size: "small",
544
+ icon: /* @__PURE__ */ e(Ae, {}),
545
+ onClick: m,
546
+ disabled: r
547
+ }
548
+ )
549
+ }
550
+ ),
551
+ /* @__PURE__ */ e(
552
+ A,
553
+ {
554
+ title: "이전 탭",
555
+ className: t.tooltip?.className,
556
+ style: t.tooltip?.style,
557
+ children: /* @__PURE__ */ e(
558
+ x,
559
+ {
560
+ className: t.buttons?.className,
561
+ style: t.buttons?.style,
562
+ size: "small",
563
+ icon: /* @__PURE__ */ e(Fe, {}),
564
+ onClick: y,
565
+ disabled: r
566
+ }
567
+ )
568
+ }
569
+ ),
570
+ /* @__PURE__ */ e(
571
+ A,
572
+ {
573
+ title: "다음 탭",
574
+ className: t.tooltip?.className,
575
+ style: t.tooltip?.style,
576
+ children: /* @__PURE__ */ e(
577
+ x,
578
+ {
579
+ className: t.buttons?.className,
580
+ style: t.buttons?.style,
581
+ size: "small",
582
+ icon: /* @__PURE__ */ e(ze, {}),
583
+ onClick: c,
584
+ disabled: s
585
+ }
586
+ )
587
+ }
588
+ ),
589
+ /* @__PURE__ */ e(
590
+ A,
591
+ {
592
+ title: "마지막 탭",
593
+ className: t.tooltip?.className,
594
+ style: t.tooltip?.style,
595
+ children: /* @__PURE__ */ e(
596
+ x,
597
+ {
598
+ className: t.buttons?.className,
599
+ style: t.buttons?.style,
600
+ size: "small",
601
+ icon: /* @__PURE__ */ e($e, {}),
602
+ onClick: h,
603
+ disabled: s
604
+ }
605
+ )
606
+ }
607
+ ),
608
+ /* @__PURE__ */ e(
609
+ A,
610
+ {
611
+ title: "모든 탭 닫기",
612
+ className: t.tooltip?.className,
613
+ style: t.tooltip?.style,
614
+ children: /* @__PURE__ */ e(
615
+ x,
616
+ {
617
+ className: t.buttons?.className,
618
+ style: t.buttons?.style,
619
+ size: "small",
620
+ icon: /* @__PURE__ */ e(ie, {}),
621
+ onClick: u,
622
+ disabled: !a
623
+ }
624
+ )
625
+ }
626
+ )
627
+ ] });
628
+ }), xt = ({
629
+ config: n = {}
630
+ }) => {
631
+ const t = {
632
+ wrapper: {
633
+ className: "menu-tab-wrapper",
634
+ ...n?.wrapper
635
+ },
636
+ tabs: {
637
+ className: "menu-tabs",
638
+ ...n?.tabs
639
+ },
640
+ nav: {
641
+ wrapper: {
642
+ className: "menu-nav-wrapper",
643
+ ...n?.nav?.wrapper
644
+ },
645
+ buttons: {
646
+ className: "menu-nav-buttons",
647
+ ...n?.nav?.buttons
648
+ },
649
+ tooltip: {
650
+ className: "menu-nav-tooltip",
651
+ ...n?.nav?.tooltip
652
+ },
653
+ ...n?.nav
654
+ },
655
+ ...n
656
+ }, r = I((d) => d.tabs), s = I((d) => d.activeMenuId), a = I((d) => d.focusTab), m = I((d) => d.closeTab), y = I((d) => d.reorderTabs), c = Ye(
657
+ Qe(Xe, { activationConstraint: { distance: 6 } })
658
+ ), h = (d) => {
659
+ a(d);
660
+ }, u = (d, k) => {
661
+ k === "remove" && typeof d == "string" && m(d);
662
+ }, p = () => {
663
+ r.length > 0 && a(r[0].key);
664
+ }, C = () => {
665
+ if (!s || r.length <= 1) return;
666
+ const d = r.findIndex((k) => k.key === s);
667
+ d > 0 && a(r[d - 1].key);
668
+ }, o = () => {
669
+ if (!s || r.length <= 1) return;
670
+ const d = r.findIndex((k) => k.key === s);
671
+ d < r.length - 1 && a(r[d + 1].key);
672
+ }, i = () => {
673
+ r.length > 0 && a(r[r.length - 1].key);
674
+ }, T = () => {
675
+ r.forEach((d) => {
676
+ m(d.key);
677
+ });
678
+ }, O = s ? r.findIndex((d) => d.key === s) : -1, H = O === 0, R = O === r.length - 1, j = _(
679
+ () => r.map((d) => ({
680
+ key: d.key,
681
+ label: d.label,
682
+ closable: !0,
683
+ children: null
684
+ // 컨텐츠는 Main 쪽에서 렌더 → 여기선 헤더만 필요
685
+ })),
686
+ [r]
687
+ ), V = M(
688
+ ({ active: d, over: k }) => {
689
+ if (!k || d.id === k.id) return;
690
+ const N = r.findIndex((l) => l.key === d.id), L = r.findIndex((l) => l.key === k.id);
691
+ if (N < 0 || L < 0 || N === L) return;
692
+ const g = r.map((l) => l.key), b = tt(g, N, L);
693
+ y?.(b);
694
+ },
695
+ [r, y]
696
+ ), G = M(
697
+ (d, k) => /* @__PURE__ */ e(
698
+ qe,
699
+ {
700
+ sensors: c,
701
+ onDragEnd: V,
702
+ collisionDetection: Je,
703
+ modifiers: [et],
704
+ children: /* @__PURE__ */ e(
705
+ nt,
706
+ {
707
+ items: r.map((N) => N.key),
708
+ strategy: rt,
709
+ children: /* @__PURE__ */ e(k, { ...d, children: (N) => /* @__PURE__ */ ae(
710
+ vt,
711
+ {
712
+ ...N.props,
713
+ key: N.key
714
+ },
715
+ N
716
+ ) })
717
+ }
718
+ )
719
+ }
720
+ ),
721
+ [c, V, r]
722
+ );
723
+ return /* @__PURE__ */ e(
724
+ "div",
725
+ {
726
+ className: t.wrapper.className,
727
+ style: {
728
+ ...t.wrapper.style,
729
+ display: r.length === 0 ? "none" : "block"
730
+ },
731
+ children: /* @__PURE__ */ e(
732
+ Ne,
733
+ {
734
+ type: "editable-card",
735
+ activeKey: s || void 0,
736
+ onChange: h,
737
+ onEdit: u,
738
+ className: t.tabs.className,
739
+ style: t.tabs.style,
740
+ hideAdd: !0,
741
+ items: j,
742
+ tabBarExtraContent: /* @__PURE__ */ e(
743
+ wt,
744
+ {
745
+ config: t?.nav,
746
+ isFirst: !!H,
747
+ isLast: !!R,
748
+ canCloseAll: r.length > 0,
749
+ onFirst: p,
750
+ onPrev: C,
751
+ onNext: o,
752
+ onLast: i,
753
+ onCloseAll: T
754
+ }
755
+ ),
756
+ renderTabBar: G
757
+ }
758
+ )
759
+ }
760
+ );
761
+ }, { Sider: kt } = z, Nt = ({
762
+ config: n = {}
763
+ }) => {
764
+ const t = {
765
+ collapsed: !1,
766
+ width: 230,
767
+ menuGubunCode: {
768
+ mainMenu: "MAIN",
769
+ subMenu: "SUB",
770
+ program: "PRGM",
771
+ ...n?.menuGubunCode
772
+ },
773
+ className: {
774
+ wrapper: "side-wrapper",
775
+ search: "sider-search-ipt",
776
+ segmented: {
777
+ wrapper: "sider-segmented",
778
+ item: "sider-segment-item",
779
+ ...n?.className?.segmented
780
+ },
781
+ sider: {
782
+ content: "sider-content",
783
+ loading: "sider-loading",
784
+ loadingText: "sider-loading-text",
785
+ error: "sider-error",
786
+ errorIcon: "sider-error-icon",
787
+ errorText: "sider-error-text",
788
+ menu: "sider-menu",
789
+ menuContainer: "sider-menu-container",
790
+ ...n?.className?.sider
791
+ },
792
+ ...n?.className
793
+ },
794
+ style: {
795
+ search: {
796
+ placeholder: "메뉴명, 메뉴번호 검색...",
797
+ height: 30,
798
+ ...n?.style?.search
799
+ },
800
+ ...n?.style
801
+ },
802
+ ...n
803
+ };
804
+ console.log("@@ 사이드바 config : ", n);
805
+ const [r, s] = S(""), [a, m] = S(
806
+ "category"
807
+ ), { activeMenuId: y, sidebarCollapsed: c, openTabFromMenu: h, toggleSidebar: u } = I(), { menuList: p, isLoading: C, error: o, findMenuById: i } = De(), { nodes: T, treeNodes: O, loadFavoritesIfNeeded: H } = Oe(), R = _(() => {
808
+ const g = [], b = (l, w = 0) => {
809
+ if (l.menuGbCd === t.menuGubunCode.program && l.scrnPath) {
810
+ const v = " ".repeat(w), B = l.menuNo || "";
811
+ g.push({
812
+ value: l.menuId,
813
+ label: /* @__PURE__ */ f(
814
+ "div",
815
+ {
816
+ style: {
817
+ display: "flex",
818
+ justifyContent: "space-between",
819
+ alignItems: "center"
820
+ },
821
+ children: [
822
+ /* @__PURE__ */ f("span", { children: [
823
+ v,
824
+ l.menuNm
825
+ ] }),
826
+ /* @__PURE__ */ e(
827
+ "span",
828
+ {
829
+ style: {
830
+ fontSize: "11px",
831
+ color: "#999",
832
+ backgroundColor: "#f0f0f0",
833
+ padding: "2px 6px",
834
+ borderRadius: "3px",
835
+ marginLeft: "8px"
836
+ },
837
+ children: B
838
+ }
839
+ )
840
+ ]
841
+ }
842
+ ),
843
+ menuItem: l
844
+ });
845
+ }
846
+ l.children && l.children.length > 0 && l.children.forEach((v) => b(v, w + 1));
847
+ };
848
+ return p.forEach((l) => b(l)), g;
849
+ }, [p]), j = _(() => r.trim() ? R.filter((g) => {
850
+ const b = g.menuItem.menuNm.toLowerCase(), l = String(g.menuItem.menuNo || "미지정").toLowerCase(), w = r.toLowerCase();
851
+ return b.includes(w) || l.includes(w);
852
+ }) : [], [R, r]), V = (g) => {
853
+ if (!g || typeof g != "string") {
854
+ console.warn("Invalid menu selection value:", g);
855
+ return;
856
+ }
857
+ if (!/^[a-zA-Z0-9_-]+$/.test(g)) {
858
+ console.warn("Invalid menu ID format:", g);
859
+ return;
860
+ }
861
+ const b = R.find(
862
+ (l) => l.value === g
863
+ );
864
+ if (b) {
865
+ const { menuItem: l } = b;
866
+ if (!l || !l.menuId || !l.menuNm) {
867
+ console.warn("Invalid menu item:", l);
868
+ return;
869
+ }
870
+ l.menuGbCd === t.menuGubunCode.program && l.scrnPath ? (console.log(
871
+ "✅ 검색으로 프로그램 메뉴 선택 - 탭 추가 및 setCurrentProgram 호출"
872
+ ), console.log(
873
+ "메뉴명:",
874
+ l.menuNm,
875
+ "경로:",
876
+ l.scrnPath,
877
+ "scrnId:",
878
+ l.scrnId
879
+ ), h(l)) : (l.menuGbCd === t.menuGubunCode.mainMenu || l.menuGbCd === t.menuGubunCode.subMenu) && (console.log("❌ 검색으로 메인/서브 메뉴 선택 - 이벤트 무시"), console.log("메뉴명:", l.menuNm, "menuGbCd:", l.menuGbCd)), s("");
880
+ }
881
+ }, G = M(
882
+ (g) => {
883
+ const b = i(g);
884
+ b?.menuGbCd === t.menuGubunCode.program && (console.log(
885
+ "메뉴명:",
886
+ b.menuNm,
887
+ "경로:",
888
+ b.scrnPath,
889
+ "scrnId:",
890
+ b.scrnId
891
+ ), h(b));
892
+ },
893
+ [i, h]
894
+ ), d = M((g) => g.map((b) => ({
895
+ key: b.menuId,
896
+ label: /* @__PURE__ */ e(
897
+ "div",
898
+ {
899
+ style: {
900
+ display: "flex",
901
+ justifyContent: "space-between",
902
+ alignItems: "center"
903
+ },
904
+ children: /* @__PURE__ */ e("span", { children: b.menuNm })
905
+ }
906
+ ),
907
+ icon: k(b.iconCd, b.menuGbCd),
908
+ children: b.children && b.children.length > 0 ? d(b.children) : void 0
909
+ })), []), k = (g, b) => {
910
+ if (g) {
911
+ const l = ee[g];
912
+ if (l)
913
+ return /* @__PURE__ */ e(l, {});
914
+ }
915
+ if (b)
916
+ switch (b) {
917
+ case t.menuGubunCode.mainMenu:
918
+ return /* @__PURE__ */ e(ee.HomeOutlined, {});
919
+ case t.menuGubunCode.subMenu:
920
+ return null;
921
+ case t.menuGubunCode.program:
922
+ return null;
923
+ default:
924
+ return null;
925
+ }
926
+ return null;
927
+ }, N = M(
928
+ (g) => {
929
+ if (p.length === 0) return [];
930
+ const b = (w) => {
931
+ if (w)
932
+ return typeof w == "string" ? T[w] : w;
933
+ }, l = (w) => {
934
+ if (w.type === "M") {
935
+ const v = w, B = i(v.menuId) || void 0, q = !!B, ce = q ? `${B?.menuNm ?? v.menuNm ?? v.menuId}` : `${v.menuNm ?? v.menuId} (삭제됨)`;
936
+ return {
937
+ key: v.menuId,
938
+ label: ce,
939
+ icon: q ? void 0 : /* @__PURE__ */ e(_e, { style: { color: "#faad14" } })
940
+ };
941
+ } else {
942
+ const v = w, B = (v.children ?? []).map(b).filter(Boolean).map(l);
943
+ return {
944
+ key: v.bkmkId,
945
+ label: v.bkmkNm ?? v.bkmkId,
946
+ icon: v.prntBkmkId === "-" ? /* @__PURE__ */ e(We, {}) : /* @__PURE__ */ e(je, {}),
947
+ children: B
948
+ // 빈 배열이면 자동으로 말아줌
949
+ };
950
+ }
951
+ };
952
+ return g.map(l);
953
+ },
954
+ [i, T, p]
955
+ ), L = _(
956
+ () => N(O),
957
+ [N, O, T]
958
+ );
959
+ return E(() => {
960
+ re() && H(re());
961
+ }, [H]), E(() => {
962
+ a === "category" && s("");
963
+ }, [a]), /* @__PURE__ */ f(
964
+ kt,
965
+ {
966
+ className: t.className.wrapper,
967
+ collapsed: t.collapsed || c,
968
+ trigger: null,
969
+ width: t.width || 230,
970
+ children: [
971
+ /* @__PURE__ */ e(
972
+ "div",
973
+ {
974
+ style: {
975
+ position: "absolute",
976
+ top: "9px",
977
+ right: "-25px",
978
+ zIndex: "1000",
979
+ width: "25px",
980
+ height: "41px",
981
+ backgroundColor: "#ffffff",
982
+ border: "1px solid #dddddd",
983
+ borderRadius: "0 10px 10px 0",
984
+ display: "flex",
985
+ alignItems: "center",
986
+ justifyContent: "center",
987
+ cursor: "pointer",
988
+ boxShadow: "2px 2px 2px rgba(0, 0, 0, 0.05)",
989
+ transition: "all 0.3s ease"
990
+ },
991
+ children: /* @__PURE__ */ e(
992
+ x,
993
+ {
994
+ type: "text",
995
+ icon: t.collapsed || c ? /* @__PURE__ */ e(He, {}) : /* @__PURE__ */ e(Ve, {}),
996
+ style: {
997
+ fontSize: "12px",
998
+ color: "#787878",
999
+ padding: 0,
1000
+ width: "100%",
1001
+ height: "100%",
1002
+ display: "flex",
1003
+ alignItems: "center",
1004
+ justifyContent: "center"
1005
+ },
1006
+ onClick: u
1007
+ }
1008
+ )
1009
+ }
1010
+ ),
1011
+ !(t.collapsed || c) && /* @__PURE__ */ e(
1012
+ "div",
1013
+ {
1014
+ style: {
1015
+ padding: 10
1016
+ },
1017
+ children: /* @__PURE__ */ e(
1018
+ Ie,
1019
+ {
1020
+ value: r,
1021
+ options: j,
1022
+ onSelect: V,
1023
+ onSearch: s,
1024
+ style: { width: "100%" },
1025
+ allowClear: !0,
1026
+ children: /* @__PURE__ */ e(
1027
+ Se,
1028
+ {
1029
+ className: t.className.search,
1030
+ placeholder: t.style.search.placeholder,
1031
+ prefix: /* @__PURE__ */ e(
1032
+ "svg",
1033
+ {
1034
+ xmlns: "http://www.w3.org/2000/svg",
1035
+ width: "20",
1036
+ height: "20",
1037
+ viewBox: "0 0 20 20",
1038
+ fill: "none",
1039
+ children: /* @__PURE__ */ e(
1040
+ "path",
1041
+ {
1042
+ d: "M16.4972 16.6667L13.0355 13.1694M14.8475 8.75C14.8475 5.29822 12.0777 2.5 8.66105 2.5C5.24437 2.5 2.47461 5.29822 2.47461 8.75C2.47461 12.2018 5.24437 15 8.66105 15C12.0777 15 14.8475 12.2018 14.8475 8.75Z",
1043
+ stroke: "#5F5F5F",
1044
+ strokeWidth: "1.5",
1045
+ strokeLinecap: "round",
1046
+ strokeLinejoin: "round"
1047
+ }
1048
+ )
1049
+ }
1050
+ ),
1051
+ size: "middle",
1052
+ style: {
1053
+ height: t.style.search.height || 30
1054
+ }
1055
+ }
1056
+ )
1057
+ }
1058
+ )
1059
+ }
1060
+ ),
1061
+ !(t.collapsed || c) && /* @__PURE__ */ e(
1062
+ "div",
1063
+ {
1064
+ style: {
1065
+ width: "100%",
1066
+ padding: "0px 10px",
1067
+ marginBottom: "10px"
1068
+ },
1069
+ children: /* @__PURE__ */ e(
1070
+ Te,
1071
+ {
1072
+ className: t.className.segmented.wrapper,
1073
+ options: [
1074
+ {
1075
+ label: /* @__PURE__ */ f(F, { children: [
1076
+ /* @__PURE__ */ e("span", { className: t.className.segmented.item, children: /* @__PURE__ */ f(
1077
+ "svg",
1078
+ {
1079
+ xmlns: "http://www.w3.org/2000/svg",
1080
+ width: "16",
1081
+ height: "16",
1082
+ viewBox: "0 0 16 16",
1083
+ fill: "none",
1084
+ children: [
1085
+ /* @__PURE__ */ e(
1086
+ "path",
1087
+ {
1088
+ d: "M2.46979 6.90625H13.0298C13.7298 6.90625 14.2965 7.47292 14.2965 8.17292V13.5396H1.20312V8.17292C1.20312 7.47292 1.76979 6.90625 2.46979 6.90625Z",
1089
+ stroke: "currentColor",
1090
+ strokeWidth: "1.5",
1091
+ strokeLinecap: "round",
1092
+ strokeLinejoin: "round"
1093
+ }
1094
+ ),
1095
+ /* @__PURE__ */ e(
1096
+ "path",
1097
+ {
1098
+ d: "M2.76318 4.70626C2.76318 4.00626 3.18318 3.75293 3.69652 3.75293H11.8032C12.3165 3.75293 12.7365 4.00626 12.7365 4.70626",
1099
+ stroke: "currentColor",
1100
+ strokeWidth: "1.5",
1101
+ strokeLinecap: "round",
1102
+ strokeLinejoin: "round"
1103
+ }
1104
+ ),
1105
+ /* @__PURE__ */ e(
1106
+ "path",
1107
+ {
1108
+ d: "M4.71631 1.45996H10.783",
1109
+ stroke: "currentColor",
1110
+ strokeWidth: "1.5",
1111
+ strokeLinecap: "round",
1112
+ strokeLinejoin: "round"
1113
+ }
1114
+ )
1115
+ ]
1116
+ }
1117
+ ) }),
1118
+ "카테고리"
1119
+ ] }),
1120
+ value: "category"
1121
+ },
1122
+ {
1123
+ label: /* @__PURE__ */ f(F, { children: [
1124
+ /* @__PURE__ */ e("span", { className: t.className.segmented.item, children: /* @__PURE__ */ e(
1125
+ "svg",
1126
+ {
1127
+ xmlns: "http://www.w3.org/2000/svg",
1128
+ width: "15",
1129
+ height: "15",
1130
+ viewBox: "0 0 15 15",
1131
+ fill: "none",
1132
+ children: /* @__PURE__ */ e(
1133
+ "path",
1134
+ {
1135
+ d: "M7.11329 1.33356C7.32084 0.888813 7.66676 0.888813 7.88296 1.33356L9.258 4.25619C9.46556 4.70094 10.0277 5.12753 10.4947 5.20014L13.5647 5.67212C14.0317 5.74473 14.1441 6.08964 13.7982 6.43455L11.5757 8.70367C11.2384 9.04858 11.0222 9.73839 11.1 10.2285L11.6276 13.4325C11.7054 13.9227 11.4287 14.1405 11.0049 13.9045L8.26348 12.3887C7.83972 12.1527 7.15653 12.1527 6.73277 12.3887L3.99134 13.9045C3.56759 14.1405 3.29085 13.9227 3.36868 13.4325L3.89621 10.2285C3.97405 9.73839 3.76649 9.04858 3.42057 8.70367L1.19802 6.43455C0.86075 6.08964 0.964526 5.74473 1.43152 5.67212L4.50158 5.20014C4.96857 5.12753 5.5307 4.70094 5.73825 4.25619L7.11329 1.33356Z",
1136
+ stroke: "currentColor",
1137
+ strokeWidth: "1.5",
1138
+ strokeMiterlimit: "4"
1139
+ }
1140
+ )
1141
+ }
1142
+ ) }),
1143
+ "즐겨찾기"
1144
+ ] }),
1145
+ value: "favorite"
1146
+ }
1147
+ ],
1148
+ value: a,
1149
+ onChange: (g) => {
1150
+ m(g);
1151
+ },
1152
+ style: {
1153
+ width: "100%"
1154
+ },
1155
+ block: !0
1156
+ }
1157
+ )
1158
+ }
1159
+ ),
1160
+ /* @__PURE__ */ f("div", { className: t.className.sider.content, children: [
1161
+ C && /* @__PURE__ */ f("div", { className: t.className.sider.loading, children: [
1162
+ /* @__PURE__ */ e(W, { size: "default" }),
1163
+ /* @__PURE__ */ e("div", { className: t.className.sider.loadingText, children: "메뉴 로딩 중..." })
1164
+ ] }),
1165
+ o && /* @__PURE__ */ f("div", { className: t.className.sider.error, children: [
1166
+ /* @__PURE__ */ e(
1167
+ Ge,
1168
+ {
1169
+ className: t.className.sider.errorIcon
1170
+ }
1171
+ ),
1172
+ /* @__PURE__ */ e("div", { className: t.className.sider.errorText, children: "메뉴 로드 실패" })
1173
+ ] }),
1174
+ !C && !o && a === "category" && p.length === 0 && /* @__PURE__ */ e(
1175
+ "div",
1176
+ {
1177
+ style: {
1178
+ padding: "16px",
1179
+ textAlign: "center",
1180
+ color: "#666",
1181
+ fontSize: "12px"
1182
+ },
1183
+ children: "메뉴가 없습니다"
1184
+ }
1185
+ ),
1186
+ !C && !o && a === "favorite" && L.length === 0 && /* @__PURE__ */ e(
1187
+ "div",
1188
+ {
1189
+ style: {
1190
+ padding: "16px",
1191
+ textAlign: "center",
1192
+ color: "#666",
1193
+ fontSize: "12px"
1194
+ },
1195
+ children: "즐겨찾기된 메뉴가 없습니다"
1196
+ }
1197
+ ),
1198
+ !C && !o && a === "category" && p.length > 0 && /* @__PURE__ */ e("div", { className: t.className.sider.menuContainer, children: /* @__PURE__ */ e(
1199
+ J,
1200
+ {
1201
+ theme: "light",
1202
+ mode: "inline",
1203
+ items: d(p),
1204
+ className: t.className.sider.menu,
1205
+ selectedKeys: [y || ""],
1206
+ onClick: (g) => G(g.key)
1207
+ }
1208
+ ) }),
1209
+ !C && !o && a === "favorite" && L.length > 0 && /* @__PURE__ */ e("div", { className: t.className.sider.menuContainer, children: /* @__PURE__ */ e(
1210
+ J,
1211
+ {
1212
+ theme: "light",
1213
+ mode: "inline",
1214
+ items: L,
1215
+ className: t.className.sider.menu,
1216
+ selectedKeys: [y || ""],
1217
+ onClick: (g) => G(g.key)
1218
+ }
1219
+ ) })
1220
+ ] })
1221
+ ]
1222
+ }
1223
+ );
1224
+ };
1225
+ class It extends Ee {
1226
+ constructor(t) {
1227
+ super(t), this.resetError = () => {
1228
+ this.setState({ hasError: !1, error: void 0, errorInfo: void 0 });
1229
+ }, this.state = { hasError: !1 };
1230
+ }
1231
+ static getDerivedStateFromError(t) {
1232
+ return { hasError: !0, error: t };
1233
+ }
1234
+ componentDidCatch(t, r) {
1235
+ console.error("ErrorBound caught an error:", t, r), this.setState({
1236
+ error: t,
1237
+ errorInfo: r
1238
+ });
1239
+ }
1240
+ render() {
1241
+ return this.state.hasError ? this.props.fallback ? this.props.fallback : /* @__PURE__ */ f(
1242
+ "div",
1243
+ {
1244
+ style: {
1245
+ padding: "40px 20px",
1246
+ textAlign: "center",
1247
+ backgroundColor: "#fafafa",
1248
+ display: "flex",
1249
+ flexDirection: "column",
1250
+ justifyContent: "center",
1251
+ alignItems: "center"
1252
+ },
1253
+ children: [
1254
+ /* @__PURE__ */ e(
1255
+ se,
1256
+ {
1257
+ status: "error",
1258
+ title: "컴포넌트 로딩 중 오류가 발생했습니다",
1259
+ subTitle: this.state.error ? `오류 내용: ${this.state.error.message}` : "알 수 없는 오류가 발생했습니다",
1260
+ extra: [
1261
+ /* @__PURE__ */ e(
1262
+ x,
1263
+ {
1264
+ type: "primary",
1265
+ icon: /* @__PURE__ */ e(le, {}),
1266
+ onClick: this.resetError,
1267
+ style: { marginRight: 8 },
1268
+ children: "다시 시도"
1269
+ },
1270
+ "retry"
1271
+ )
1272
+ ]
1273
+ }
1274
+ ),
1275
+ this.state.error && /* @__PURE__ */ f(
1276
+ "details",
1277
+ {
1278
+ style: {
1279
+ marginTop: "20px",
1280
+ textAlign: "left",
1281
+ maxWidth: "600px",
1282
+ backgroundColor: "#fff",
1283
+ padding: "16px",
1284
+ borderRadius: "6px",
1285
+ border: "1px solid #d9d9d9"
1286
+ },
1287
+ children: [
1288
+ /* @__PURE__ */ e("summary", { style: { cursor: "pointer", fontWeight: "bold" }, children: "오류 상세 정보" }),
1289
+ /* @__PURE__ */ e(
1290
+ "pre",
1291
+ {
1292
+ style: {
1293
+ marginTop: "8px",
1294
+ fontSize: "12px",
1295
+ color: "#666",
1296
+ whiteSpace: "pre-wrap",
1297
+ wordBreak: "break-word"
1298
+ },
1299
+ children: this.state.error.stack
1300
+ }
1301
+ )
1302
+ ]
1303
+ }
1304
+ )
1305
+ ]
1306
+ }
1307
+ ) : this.props.children;
1308
+ }
1309
+ }
1310
+ const St = ({
1311
+ isActive: n,
1312
+ instance: t,
1313
+ params: r
1314
+ }) => {
1315
+ const { activeMenuId: s, closeTab: a } = I(), m = () => {
1316
+ s && a(s);
1317
+ };
1318
+ return t ? /* @__PURE__ */ e(
1319
+ "div",
1320
+ {
1321
+ style: {
1322
+ position: "absolute",
1323
+ top: 0,
1324
+ left: 0,
1325
+ width: "100%",
1326
+ height: "100%",
1327
+ visibility: n ? "visible" : "hidden",
1328
+ opacity: n ? 1 : 0,
1329
+ transition: "opacity 0.2s ease-in-out",
1330
+ pointerEvents: n ? "auto" : "none"
1331
+ },
1332
+ children: /* @__PURE__ */ e(It, { children: /* @__PURE__ */ e(Q, { fallback: null, children: t && ae(t, { params: r }) }) })
1333
+ }
1334
+ ) : /* @__PURE__ */ e(
1335
+ "div",
1336
+ {
1337
+ style: {
1338
+ position: "absolute",
1339
+ top: 0,
1340
+ left: 0,
1341
+ width: "100%",
1342
+ height: "100%",
1343
+ display: "flex",
1344
+ justifyContent: "center",
1345
+ alignItems: "center",
1346
+ visibility: n ? "visible" : "hidden",
1347
+ opacity: n ? 1 : 0,
1348
+ transition: "opacity 0.2s ease-in-out",
1349
+ pointerEvents: n ? "auto" : "none"
1350
+ },
1351
+ children: /* @__PURE__ */ e(
1352
+ "div",
1353
+ {
1354
+ style: {
1355
+ width: 500,
1356
+ maxWidth: "90%",
1357
+ background: "#fff",
1358
+ borderRadius: 16,
1359
+ boxShadow: "0 8px 30px rgba(0,0,0,0.05)",
1360
+ padding: 24
1361
+ },
1362
+ children: /* @__PURE__ */ e(
1363
+ se,
1364
+ {
1365
+ icon: /* @__PURE__ */ e(Ue, { twoToneColor: "#69b1ff" }),
1366
+ status: "warning",
1367
+ title: "등록된 메뉴 정보가 없거나 유효한 메뉴가 아닙니다.",
1368
+ subTitle: /* @__PURE__ */ e(Pe.Text, { type: "secondary", children: "자세한 내용은 관리자에게 문의바랍니다." }),
1369
+ extra: /* @__PURE__ */ e(Le, { children: /* @__PURE__ */ e(x, { icon: /* @__PURE__ */ e(ie, {}), onClick: m, children: "탭 닫기" }) })
1370
+ }
1371
+ )
1372
+ }
1373
+ )
1374
+ }
1375
+ );
1376
+ }, Tt = Y(St), Lt = () => /* @__PURE__ */ f(F, { children: [
1377
+ /* @__PURE__ */ e(
1378
+ "link",
1379
+ {
1380
+ rel: "preload",
1381
+ as: "image",
1382
+ href: "/src/styles/assets/images/backgrounds/LandingContainer_bg.png"
1383
+ }
1384
+ ),
1385
+ /* @__PURE__ */ e("div", { className: "LandingContainer-wrap", children: /* @__PURE__ */ e("div", { className: "inner", children: /* @__PURE__ */ e("div", { className: "content" }) }) })
1386
+ ] }), Pt = (n, t) => {
1387
+ console.log("createPopupViewLoader 호출 - popupUrl:", n);
1388
+ const s = ((a) => {
1389
+ if (a.startsWith("/src/pages/views/popup/")) {
1390
+ const c = a + ".tsx";
1391
+ return console.log(`팝업 URL 변환: ${a} -> ${c}`), c;
1392
+ }
1393
+ const y = `/src/pages/views/popup/${a.startsWith("/") ? a.substring(1) : a}.tsx`;
1394
+ return console.log(`팝업 URL 변환: ${a} -> ${y}`), y;
1395
+ })(n);
1396
+ return !s || !t?.glob[s] ? (console.warn(`팝업 뷰를 찾을 수 없습니다: ${n} (${s})`), console.warn("사용 가능한 팝업 뷰들:", Object.keys(t?.glob || {})), null) : t?.glob[s];
1397
+ }, Mt = ({ popup: n, modules: t }) => {
1398
+ const [r, s] = S(null), [a, m] = S(!1), [y, c] = S(null), h = () => {
1399
+ console.log("PopupArea - handleClose:", n.popupId), X.getState().closePopup(n.popupId);
1400
+ };
1401
+ return E(() => {
1402
+ (async () => {
1403
+ console.log("팝업 뷰 로드 시작:", n.popupUrl), m(!0), c(null);
1404
+ try {
1405
+ const p = Pt(n.popupUrl, t);
1406
+ if (!p) {
1407
+ const i = `팝업 뷰를 찾을 수 없습니다: ${n.popupUrl}`;
1408
+ console.error(i), c(i), m(!1);
1409
+ return;
1410
+ }
1411
+ console.log("팝업 뷰 모듈 로드 중...");
1412
+ const C = await p();
1413
+ console.log("팝업 뷰 모듈 로드 완료:", C);
1414
+ const o = C.default;
1415
+ if (console.log("팝업 뷰 컴포넌트:", o), !o)
1416
+ throw new Error("팝업 뷰 컴포넌트를 찾을 수 없습니다");
1417
+ s(() => o), console.log("팝업 뷰 설정 완료");
1418
+ } catch (p) {
1419
+ console.error("팝업 뷰 로드 실패:", p), c(p instanceof Error ? p.message : "팝업 뷰 로드 실패");
1420
+ } finally {
1421
+ m(!1);
1422
+ }
1423
+ })();
1424
+ }, [n.popupUrl]), a ? /* @__PURE__ */ f("div", { className: "popup-loading", children: [
1425
+ /* @__PURE__ */ e(W, { size: "large" }),
1426
+ /* @__PURE__ */ e("p", { children: "팝업을 로드하는 중..." })
1427
+ ] }) : y ? /* @__PURE__ */ f("div", { className: "popup-error", children: [
1428
+ /* @__PURE__ */ e(K, { description: y, image: K.PRESENTED_IMAGE_SIMPLE }),
1429
+ /* @__PURE__ */ e(
1430
+ x,
1431
+ {
1432
+ icon: /* @__PURE__ */ e(le, {}),
1433
+ onClick: () => window.location.reload(),
1434
+ children: "다시 시도"
1435
+ }
1436
+ )
1437
+ ] }) : r ? /* @__PURE__ */ e(
1438
+ Q,
1439
+ {
1440
+ fallback: /* @__PURE__ */ f("div", { className: "popup-loading", children: [
1441
+ /* @__PURE__ */ e(W, { size: "large" }),
1442
+ /* @__PURE__ */ e("p", { children: "컴포넌트를 로드하는 중..." })
1443
+ ] }),
1444
+ children: /* @__PURE__ */ e(
1445
+ r,
1446
+ {
1447
+ popup: {
1448
+ ...n,
1449
+ close: h
1450
+ // popup 객체에 close 이벤트 추가
1451
+ },
1452
+ onClose: h
1453
+ }
1454
+ )
1455
+ }
1456
+ ) : /* @__PURE__ */ e("div", { className: "popup-empty", children: /* @__PURE__ */ e(K, { description: "팝업 내용을 불러올 수 없습니다." }) });
1457
+ }, Et = ({ modules: n }) => {
1458
+ const { popups: t } = X();
1459
+ return t.length === 0 ? null : /* @__PURE__ */ e(F, { children: t.map((r) => {
1460
+ const s = r.config || {}, a = s.width || r.width || 800, m = s.height || r.height || 600, y = s.title || r.popupTitle, c = r.buttonList?.map((h, u) => ({
1461
+ key: h.btnId || `btn_${u}`,
1462
+ text: h.btnNm,
1463
+ type: h.btnId === "CLOSE" ? "default" : "primary",
1464
+ disabled: h.enblYn !== "Y",
1465
+ danger: !1
1466
+ })) || [];
1467
+ return console.log("팝업 렌더링:", {
1468
+ popupId: r.popupId,
1469
+ popupCode: r.popupCode,
1470
+ title: y,
1471
+ width: a,
1472
+ height: m,
1473
+ buttons: c
1474
+ }), /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(Mt, { popup: r, modules: n }) }, r.popupId);
1475
+ }) });
1476
+ }, Bt = () => {
1477
+ const { popups: n, closePopup: t } = X();
1478
+ return /* @__PURE__ */ e(F, { children: n.map((r) => {
1479
+ if (!(r.isLocal || r.popupCode.startsWith("CORE_"))) return null;
1480
+ const s = dt[r.popupCode];
1481
+ if (!s) return null;
1482
+ const a = s.component;
1483
+ return /* @__PURE__ */ e(Q, { fallback: null, children: /* @__PURE__ */ e(a, { popup: r, onClose: () => t(r.popupId) }) }, r.popupId);
1484
+ }) });
1485
+ }, Dt = (n) => ({
1486
+ position: "absolute",
1487
+ inset: 0,
1488
+ visibility: n ? "visible" : "hidden",
1489
+ opacity: n ? 1 : 0,
1490
+ transition: "opacity 0.2s ease-in-out",
1491
+ pointerEvents: n ? "auto" : "none"
1492
+ }), Ot = ({ once: n = !0 }) => {
1493
+ const { lock: t } = me(), r = $(!1);
1494
+ return E(() => {
1495
+ n && r.current || (r.current = !0, t());
1496
+ }, [n, t]), null;
1497
+ }, Rt = ({ isActive: n, flagged: t, tabKey: r, onUnlock: s, children: a }) => {
1498
+ const m = $(null), [y, c] = S(!1), h = M((p) => {
1499
+ m.current = p, c(!!p);
1500
+ }, []), u = Dt(n);
1501
+ return /* @__PURE__ */ e("div", { ref: h, style: u, children: y ? /* @__PURE__ */ f(
1502
+ pe,
1503
+ {
1504
+ idleMs: Number.POSITIVE_INFINITY,
1505
+ persistLocked: !1,
1506
+ overlayScope: "scoped",
1507
+ overlayPosition: "absolute",
1508
+ eventTarget: m.current,
1509
+ overlayId: `tab-overlay-${r}`,
1510
+ onUnlock: async () => (s(), !0),
1511
+ children: [
1512
+ n && t ? /* @__PURE__ */ e(Ot, { once: !0 }) : null,
1513
+ a
1514
+ ]
1515
+ }
1516
+ ) : a });
1517
+ }, Qt = ({
1518
+ config: n = {},
1519
+ modules: t = {
1520
+ view: {
1521
+ path: "/src/pages/views/content"
1522
+ },
1523
+ popup: {
1524
+ path: "/src/pages/views/popups"
1525
+ }
1526
+ }
1527
+ }) => {
1528
+ const r = $(
1529
+ /* @__PURE__ */ new Map()
1530
+ ), {
1531
+ tabs: s,
1532
+ tabParams: a,
1533
+ activeMenuId: m,
1534
+ tabProtectFlag: y,
1535
+ clearProtectFlagForKey: c
1536
+ } = I(), h = M(
1537
+ (u) => {
1538
+ const p = r.current.get(u.key);
1539
+ if (p) return p;
1540
+ const C = u.gubun === "M" ? `${t.view.path}${u.menuItem?.scrnPath}.tsx` : `${t.view.path}${u.componentItem?.scrnPath}.tsx`;
1541
+ let o = t.view?.glob?.[C];
1542
+ if (!o && typeof import.meta < "u" && typeof import.meta.glob == "function" && (o = (/* @__PURE__ */ Object.assign({}))[C]), o) {
1543
+ const i = D(
1544
+ o
1545
+ );
1546
+ return r.current.set(u.key, i), i;
1547
+ }
1548
+ return null;
1549
+ },
1550
+ [t.view?.glob]
1551
+ );
1552
+ return /* @__PURE__ */ f(z, { className: "main-layout", children: [
1553
+ /* @__PURE__ */ e(Ct, { config: n?.header }),
1554
+ /* @__PURE__ */ f(z, { children: [
1555
+ /* @__PURE__ */ e(Nt, { config: n?.sidebar }),
1556
+ /* @__PURE__ */ f("div", { className: "content-container", children: [
1557
+ /* @__PURE__ */ e(xt, { config: n?.menuTab }),
1558
+ /* @__PURE__ */ e(ht, { config: n?.content, children: /* @__PURE__ */ f(he, { children: [
1559
+ /* @__PURE__ */ e("div", { className: "view-container", children: /* @__PURE__ */ f(
1560
+ "div",
1561
+ {
1562
+ style: {
1563
+ position: "relative",
1564
+ width: "100%",
1565
+ height: "100%"
1566
+ },
1567
+ children: [
1568
+ s.map((u) => {
1569
+ const p = h(u), C = m === u.key, o = !!y?.[u.key], i = a[u.key] || {};
1570
+ return /* @__PURE__ */ e(
1571
+ Rt,
1572
+ {
1573
+ isActive: C,
1574
+ flagged: o,
1575
+ tabKey: u.key,
1576
+ onUnlock: () => c(u.key),
1577
+ children: /* @__PURE__ */ e(
1578
+ Tt,
1579
+ {
1580
+ isActive: C,
1581
+ instance: p || void 0,
1582
+ params: i
1583
+ },
1584
+ u.key
1585
+ )
1586
+ },
1587
+ u.key
1588
+ );
1589
+ }),
1590
+ (!m || s.length === 0) && /* @__PURE__ */ e(Lt, {})
1591
+ ]
1592
+ }
1593
+ ) }),
1594
+ /* @__PURE__ */ e(Bt, {}),
1595
+ /* @__PURE__ */ e(Et, { modules: t?.popup })
1596
+ ] }) })
1597
+ ] })
1598
+ ] }),
1599
+ /* @__PURE__ */ e(ve, {})
1600
+ ] });
1601
+ }, Xt = ({ config: n, children: t }) => /* @__PURE__ */ e("div", { children: "BwgPortal02" });
1602
+ export {
1603
+ Yt as A,
1604
+ Qt as B,
1605
+ Tt as C,
1606
+ Zt as L,
1607
+ Et as P,
1608
+ Xt as a,
1609
+ Lt as b,
1610
+ ht as c,
1611
+ Ct as d,
1612
+ xt as e,
1613
+ Nt as f,
1614
+ Rt as g,
1615
+ dt as l
1616
+ };