@bwg-ui/core 1.2.21 → 1.2.22

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 (63) hide show
  1. package/dist/chunks/{MenuReport-D-gxEaXb.js → MenuReport-Bsz0OEet.js} +26 -26
  2. package/dist/chunks/MenuReport-PYufvmGR.cjs +1 -0
  3. package/dist/chunks/common-components-CdNJR00U.cjs +1109 -0
  4. package/dist/chunks/common-components-aD7WLZ5f.js +50899 -0
  5. package/dist/chunks/layout-components-CIO09Lhe.cjs +35 -0
  6. package/dist/chunks/{layout-components-IvmBzdev.js → layout-components-OnRWLesF.js} +269 -234
  7. package/dist/components/common/ButtonAccessController.d.ts.map +1 -1
  8. package/dist/components/common/BwgTitleBox.d.ts.map +1 -1
  9. package/dist/components/common/BwgView.d.ts.map +1 -1
  10. package/dist/components/common/index.cjs +1 -1
  11. package/dist/components/common/index.js +1 -1
  12. package/dist/components/guide/index.cjs +1 -1
  13. package/dist/components/guide/index.js +1 -1
  14. package/dist/components/layout/custom/ConfigurableSidebar.d.ts.map +1 -1
  15. package/dist/components/layout/default/LocalPopupContainer.d.ts.map +1 -1
  16. package/dist/components/layout/default/PopupContainer.d.ts.map +1 -1
  17. package/dist/components/layout/index.cjs +1 -1
  18. package/dist/components/layout/index.js +1 -1
  19. package/dist/components/pages/board/CMAdminBoardM01.d.ts +6 -0
  20. package/dist/components/pages/board/CMAdminBoardM01.d.ts.map +1 -0
  21. package/dist/components/pages/board/CMBoardS01.d.ts +8 -0
  22. package/dist/components/pages/board/CMBoardS01.d.ts.map +1 -0
  23. package/dist/components/pages/board/CMMyBoardM01.d.ts +6 -0
  24. package/dist/components/pages/board/CMMyBoardM01.d.ts.map +1 -0
  25. package/dist/components/pages/index.d.ts +6 -1
  26. package/dist/components/pages/index.d.ts.map +1 -1
  27. package/dist/components/pages/syst/SystemCodeManage.d.ts +7 -0
  28. package/dist/components/pages/syst/SystemCodeManage.d.ts.map +1 -0
  29. package/dist/components/popup/CMPrgrMstrP02.d.ts +3 -0
  30. package/dist/components/popup/CMPrgrMstrP02.d.ts.map +1 -0
  31. package/dist/components/popup/MenuReport.d.ts +1 -1
  32. package/dist/components/popup/MenuReport.d.ts.map +1 -1
  33. package/dist/components/popup/config/localPopupRegistry.d.ts.map +1 -1
  34. package/dist/components/popup/index.cjs +1 -1
  35. package/dist/components/popup/index.d.ts +1 -0
  36. package/dist/components/popup/index.d.ts.map +1 -1
  37. package/dist/components/popup/index.js +7 -6
  38. package/dist/index.cjs +1 -1
  39. package/dist/index.js +220 -214
  40. package/dist/provider/contexts/ServiceCodeContext.d.ts.map +1 -1
  41. package/dist/provider/index.cjs +1 -1
  42. package/dist/provider/index.js +115 -134
  43. package/dist/stores/codeStore.d.ts.map +1 -1
  44. package/dist/stores/index.cjs +2 -2
  45. package/dist/stores/index.js +342 -247
  46. package/dist/stores/userStore.d.ts +4 -0
  47. package/dist/stores/userStore.d.ts.map +1 -1
  48. package/dist/styles/assets/images/header/icon/ico-bell.svg +3 -3
  49. package/dist/styles/assets/images/header/icon/ico-logout.svg +10 -10
  50. package/dist/styles/assets/images/header/icon/ico-setting.svg +4 -4
  51. package/dist/styles/assets/images/header/icon/ico-sidebar-arrow.svg +3 -3
  52. package/dist/utils/apiUtils.d.ts.map +1 -1
  53. package/dist/utils/index.cjs +1 -1
  54. package/dist/utils/index.d.ts +8 -0
  55. package/dist/utils/index.d.ts.map +1 -1
  56. package/dist/utils/index.js +38 -36
  57. package/dist/utils/serviceConfig.d.ts +1 -1
  58. package/dist/utils/serviceConfig.d.ts.map +1 -1
  59. package/package.json +2 -1
  60. package/dist/chunks/MenuReport-DbGZz84g.cjs +0 -1
  61. package/dist/chunks/common-components-BLgaNCNY.js +0 -30500
  62. package/dist/chunks/common-components-CeY5flj3.cjs +0 -1028
  63. package/dist/chunks/layout-components-C_HvgcCg.cjs +0 -35
@@ -1,10 +1,10 @@
1
- import { create as N } from "zustand";
2
- import { callService as b, getServiceCode as E, getUserId as v, getUserInfo as Q, getCookie as ee, encryptSha256 as te, setCookie as G } from "../utils/index.js";
1
+ import { create as b } from "zustand";
2
+ import { callService as N, getServiceCode as w, getUserId as v, getUserInfo as ee, getCookie as te, encryptSha256 as oe, setCookie as $ } from "../utils/index.js";
3
3
  import { message as L } from "antd";
4
- import { l as oe } from "../chunks/layout-components-IvmBzdev.js";
5
- import { useState as Y, useCallback as X } from "react";
6
- import { useNavigate as se } from "react-router-dom";
7
- function ne(n, r) {
4
+ import { l as se } from "../chunks/layout-components-OnRWLesF.js";
5
+ import { useState as X, useCallback as q } from "react";
6
+ import { useNavigate as ne } from "react-router-dom";
7
+ function re(n, r) {
8
8
  let e;
9
9
  try {
10
10
  e = n();
@@ -21,12 +21,12 @@ function ne(n, r) {
21
21
  removeItem: (o) => e.removeItem(o)
22
22
  };
23
23
  }
24
- const A = (n) => (r) => {
24
+ const E = (n) => (r) => {
25
25
  try {
26
26
  const e = n(r);
27
27
  return e instanceof Promise ? e : {
28
28
  then(s) {
29
- return A(s)(e);
29
+ return E(s)(e);
30
30
  },
31
31
  catch(s) {
32
32
  return this;
@@ -38,13 +38,13 @@ const A = (n) => (r) => {
38
38
  return this;
39
39
  },
40
40
  catch(s) {
41
- return A(s)(e);
41
+ return E(s)(e);
42
42
  }
43
43
  };
44
44
  }
45
- }, re = (n, r) => (e, s, o) => {
45
+ }, ae = (n, r) => (e, s, o) => {
46
46
  let t = {
47
- storage: ne(() => localStorage),
47
+ storage: re(() => localStorage),
48
48
  partialize: (C) => C,
49
49
  version: 0,
50
50
  merge: (C, g) => ({
@@ -65,22 +65,22 @@ const A = (n) => (r) => {
65
65
  s,
66
66
  o
67
67
  );
68
- const p = () => {
68
+ const l = () => {
69
69
  const C = t.partialize({ ...s() });
70
70
  return i.setItem(t.name, {
71
71
  state: C,
72
72
  version: t.version
73
73
  });
74
- }, h = o.setState;
75
- o.setState = (C, g) => (h(C, g), p());
74
+ }, f = o.setState;
75
+ o.setState = (C, g) => (f(C, g), l());
76
76
  const m = n(
77
- (...C) => (e(...C), p()),
77
+ (...C) => (e(...C), l()),
78
78
  s,
79
79
  o
80
80
  );
81
81
  o.getInitialState = () => m;
82
82
  let u;
83
- const f = () => {
83
+ const h = () => {
84
84
  var C, g;
85
85
  if (!i) return;
86
86
  a = !1, d.forEach((y) => {
@@ -88,7 +88,7 @@ const A = (n) => (r) => {
88
88
  return y((S = s()) != null ? S : m);
89
89
  });
90
90
  const k = ((g = t.onRehydrateStorage) == null ? void 0 : g.call(t, (C = s()) != null ? C : m)) || void 0;
91
- return A(i.getItem.bind(i))(t.name).then((y) => {
91
+ return E(i.getItem.bind(i))(t.name).then((y) => {
92
92
  if (y)
93
93
  if (typeof y.version == "number" && y.version !== t.version) {
94
94
  if (t.migrate) {
@@ -96,7 +96,7 @@ const A = (n) => (r) => {
96
96
  y.state,
97
97
  y.version
98
98
  );
99
- return S instanceof Promise ? S.then((w) => [!0, w]) : [!0, S];
99
+ return S instanceof Promise ? S.then((_) => [!0, _]) : [!0, S];
100
100
  }
101
101
  console.error(
102
102
  "State loaded from storage couldn't be migrated since no migrate function was provided"
@@ -106,12 +106,12 @@ const A = (n) => (r) => {
106
106
  return [!1, void 0];
107
107
  }).then((y) => {
108
108
  var S;
109
- const [w, V] = y;
109
+ const [_, Q] = y;
110
110
  if (u = t.merge(
111
- V,
111
+ Q,
112
112
  (S = s()) != null ? S : m
113
- ), e(u, !0), w)
114
- return p();
113
+ ), e(u, !0), _)
114
+ return l();
115
115
  }).then(() => {
116
116
  k?.(u, void 0), u = s(), a = !0, c.forEach((y) => y(u));
117
117
  }).catch((y) => {
@@ -129,7 +129,7 @@ const A = (n) => (r) => {
129
129
  i?.removeItem(t.name);
130
130
  },
131
131
  getOptions: () => t,
132
- rehydrate: () => f(),
132
+ rehydrate: () => h(),
133
133
  hasHydrated: () => a,
134
134
  onHydrate: (C) => (d.add(C), () => {
135
135
  d.delete(C);
@@ -137,12 +137,13 @@ const A = (n) => (r) => {
137
137
  onFinishHydration: (C) => (c.add(C), () => {
138
138
  c.delete(C);
139
139
  })
140
- }, t.skipHydration || f(), u || m;
141
- }, M = re, T = N()(
140
+ }, t.skipHydration || h(), u || m;
141
+ }, M = ae, H = b()(
142
142
  M(
143
143
  (n, r) => ({
144
144
  user: null,
145
145
  hrInfo: null,
146
+ buttonAuths: {},
146
147
  isLoggedIn: () => !!r().user,
147
148
  // 로그인
148
149
  setLoginUser: (e, s) => {
@@ -150,7 +151,7 @@ const A = (n) => (r) => {
150
151
  },
151
152
  // 로그아웃
152
153
  clearLoginUser: () => {
153
- n({ user: null, hrInfo: null }), console.log("사용자 로그아웃");
154
+ n({ user: null, hrInfo: null, buttonAuths: {} }), console.log("사용자 로그아웃");
154
155
  },
155
156
  // 사용자 정보 업데이트
156
157
  updateUser: (e, s) => {
@@ -160,6 +161,25 @@ const A = (n) => (r) => {
160
161
  }), t && n({
161
162
  hrInfo: { ...t, ...s }
162
163
  });
164
+ },
165
+ // 권한 확인 결과 가져오기
166
+ getButtonAuth: (e, s) => {
167
+ const o = `${e}_${s}`;
168
+ return r().buttonAuths[o] || null;
169
+ },
170
+ // 권한 확인 결과 저장
171
+ setButtonAuth: (e, s, o) => {
172
+ const t = `${e}_${s}`;
173
+ n((a) => ({
174
+ buttonAuths: {
175
+ ...a.buttonAuths,
176
+ [t]: o
177
+ }
178
+ }));
179
+ },
180
+ // 권한 확인 결과 초기화
181
+ clearButtonAuths: () => {
182
+ n({ buttonAuths: {} });
163
183
  }
164
184
  }),
165
185
  {
@@ -169,13 +189,14 @@ const A = (n) => (r) => {
169
189
  user: n.user,
170
190
  hrInfo: n.hrInfo,
171
191
  isLoggedIn: n.isLoggedIn
192
+ // buttonAuthCache는 세션 동안만 유지 (localStorage에 저장 안 함)
172
193
  })
173
194
  // 저장할 상태만 선택
174
195
  }
175
196
  )
176
- ), D = {
197
+ ), A = {
177
198
  CACHE_SIZE_LIMIT: 1e3
178
- }, l = {
199
+ }, p = {
179
200
  codeCache: /* @__PURE__ */ new Map(),
180
201
  nameCache: /* @__PURE__ */ new Map(),
181
202
  optionCache: /* @__PURE__ */ new Map(),
@@ -197,7 +218,7 @@ const A = (n) => (r) => {
197
218
  markGroupLoaded(n) {
198
219
  this.loadedGroups.add(n);
199
220
  }
200
- }, ae = (n) => {
221
+ }, P = (n) => {
201
222
  console.log("대규모 데이터 변환 시작:", n);
202
223
  const r = {};
203
224
  if (n && n.code && Array.isArray(n.code)) {
@@ -208,7 +229,7 @@ const A = (n) => (r) => {
208
229
  if (t && t.cmmnCdGrp && t.cmmnCd && t.enblYn === "Y") {
209
230
  const a = t.cmmnCdGrp;
210
231
  r[a] || (r[a] = {});
211
- const c = (o.get(t.cmmnCd) || []).reduce((i, p) => (p.optnCd && p.optnNm && (i[p.optnCd] = p.optnNm), i), {});
232
+ const c = (o.get(t.cmmnCd) || []).reduce((i, l) => (l.optnCd && l.optnNm && (i[l.optnCd] = l.optnNm), i), {});
212
233
  r[a][t.cmmnCd] = {
213
234
  codeValue: t.cmmnCd,
214
235
  codeNm: t.cmmnCdNm,
@@ -225,7 +246,7 @@ const A = (n) => (r) => {
225
246
  });
226
247
  }
227
248
  return console.log("대규모 데이터 변환 완료:", r), r;
228
- }, I = N()(
249
+ }, I = b()(
229
250
  M(
230
251
  (n, r) => ({
231
252
  codeData: null,
@@ -233,30 +254,104 @@ const A = (n) => (r) => {
233
254
  error: null,
234
255
  lastUpdated: null,
235
256
  loadedGroups: /* @__PURE__ */ new Set(),
236
- fetchData: async () => {
257
+ // 시스템 공통코드 조회 (SCMSIGN00301)
258
+ fetchSystemCodes: async () => {
237
259
  n({ isLoading: !0, error: null });
238
260
  try {
239
- console.log("대규모 공통코드 데이터 가져오기 시작: SCMSIGN00301");
240
- const e = await b(E("SRCH_CODE"), {
261
+ console.log("시스템 공통코드 데이터 가져오기 시작: SCMSIGN00301");
262
+ const e = await N(w("SRCH_CODE"), {
241
263
  crprCd: "100"
242
264
  });
243
- console.log("대규모 공통코드 응답:", e), console.log("대규모 공통코드목록:", e.code), console.log("대규모 공통코드옵션션목록:", e.opt);
244
- const s = ae(e);
245
- l.clearCache();
246
- const o = new Set(Object.keys(s));
247
- o.forEach((t) => {
248
- l.markGroupLoaded(t);
265
+ console.log("시스템 공통코드 응답:", e), console.log("시스템 공통코드목록:", e.code), console.log("시스템 공통코드옵션목록:", e.opt);
266
+ const s = P(e), t = {
267
+ ...r().codeData || {},
268
+ ...s
269
+ // 시스템 공통코드가 우선 (같은 그룹코드가 있으면 덮어씀)
270
+ };
271
+ p.clearCache();
272
+ const a = new Set(Object.keys(t));
273
+ a.forEach((d) => {
274
+ p.markGroupLoaded(d);
275
+ }), n({
276
+ codeData: t,
277
+ isLoading: !1,
278
+ error: null,
279
+ lastUpdated: /* @__PURE__ */ new Date(),
280
+ loadedGroups: a
281
+ }), console.log("시스템 공통코드 데이터 가져오기 완료");
282
+ } catch (e) {
283
+ console.error("시스템 공통코드 데이터 가져오기 실패:", e), n({
284
+ isLoading: !1,
285
+ error: e instanceof Error ? e.message : "시스템 공통코드 데이터 가져오기 실패"
286
+ });
287
+ }
288
+ },
289
+ // 업무 공통코드 조회 (SCMSIGN00302)
290
+ fetchBusinessCodes: async () => {
291
+ n({ isLoading: !0, error: null });
292
+ try {
293
+ console.log("업무 공통코드 데이터 가져오기 시작: SCMSIGN00302");
294
+ const e = await N("SCMSIGN00302", {
295
+ sysCd: __SYS_CD__
296
+ });
297
+ console.log("업무 공통코드 응답:", e), console.log("업무 공통코드목록:", e.code), console.log("업무 공통코드옵션목록:", e.opt);
298
+ const s = P(e), t = {
299
+ ...r().codeData || {},
300
+ ...s
301
+ // 업무 공통코드 추가 (같은 그룹코드가 있으면 덮어씀)
302
+ };
303
+ p.clearCache();
304
+ const a = new Set(Object.keys(t));
305
+ a.forEach((d) => {
306
+ p.markGroupLoaded(d);
307
+ }), n({
308
+ codeData: t,
309
+ isLoading: !1,
310
+ error: null,
311
+ lastUpdated: /* @__PURE__ */ new Date(),
312
+ loadedGroups: a
313
+ }), console.log("업무 공통코드 데이터 가져오기 완료");
314
+ } catch (e) {
315
+ console.error("업무 공통코드 데이터 가져오기 실패:", e), n({
316
+ isLoading: !1,
317
+ error: e instanceof Error ? e.message : "업무 공통코드 데이터 가져오기 실패"
318
+ });
319
+ }
320
+ },
321
+ // 전체 공통코드 조회 (시스템 + 업무)
322
+ fetchData: async () => {
323
+ n({ isLoading: !0, error: null });
324
+ try {
325
+ console.log("전체 공통코드 데이터 가져오기 시작 (시스템 + 업무)");
326
+ const [e, s] = await Promise.all([
327
+ N(w("SRCH_CODE"), {
328
+ crprCd: "100"
329
+ }),
330
+ N("SCMSIGN00302", {
331
+ sysCd: __SYS_CD__
332
+ })
333
+ ]);
334
+ console.log("시스템 공통코드 응답:", e), console.log("업무 공통코드 응답:", s);
335
+ const o = P(e), t = P(s), a = {
336
+ ...o,
337
+ ...t
338
+ // 업무 공통코드가 같은 그룹코드를 덮어쓸 수 있음
339
+ };
340
+ p.clearCache();
341
+ const d = new Set(Object.keys(a));
342
+ d.forEach((c) => {
343
+ p.markGroupLoaded(c);
249
344
  }), n({
250
- codeData: s,
345
+ codeData: a,
251
346
  isLoading: !1,
252
347
  error: null,
253
348
  lastUpdated: /* @__PURE__ */ new Date(),
254
- loadedGroups: o
255
- }), console.log("대규모 공통코드 데이터 가져오기 완료");
349
+ loadedGroups: d
350
+ }), console.log("전체 공통코드 데이터 가져오기 완료");
256
351
  } catch (e) {
257
- console.error("대규모 공통코드 데이터 가져오기 실패:", e), n({
352
+ console.error("전체 공통코드 데이터 가져오기 실패:", e), n({
258
353
  isLoading: !1,
259
- error: e instanceof Error ? e.message : "대규모 공통코드 데이터 가져오기 실패"
354
+ error: e instanceof Error ? e.message : "전체 공통코드 데이터 가져오기 실패"
260
355
  });
261
356
  }
262
357
  },
@@ -264,13 +359,13 @@ const A = (n) => (r) => {
264
359
  const { codeData: s, loadedGroups: o } = r();
265
360
  if (!s || o.has(e)) return;
266
361
  const t = new Set(o).add(e);
267
- n({ loadedGroups: t }), l.markGroupLoaded(e);
362
+ n({ loadedGroups: t }), p.markGroupLoaded(e);
268
363
  },
269
364
  setData: (e) => {
270
- l.clearCache();
365
+ p.clearCache();
271
366
  const s = new Set(Object.keys(e));
272
367
  s.forEach((o) => {
273
- l.markGroupLoaded(o);
368
+ p.markGroupLoaded(o);
274
369
  }), n({
275
370
  codeData: e,
276
371
  lastUpdated: /* @__PURE__ */ new Date(),
@@ -278,7 +373,7 @@ const A = (n) => (r) => {
278
373
  });
279
374
  },
280
375
  clearData: () => {
281
- l.clearCache(), n({
376
+ p.clearCache(), n({
282
377
  codeData: null,
283
378
  isLoading: !1,
284
379
  error: null,
@@ -297,7 +392,7 @@ const A = (n) => (r) => {
297
392
  })
298
393
  }
299
394
  )
300
- ), H = N()(
395
+ ), G = b()(
301
396
  M(
302
397
  (n, r) => ({
303
398
  // 공통 데이터 스토어에서 상태 가져오기
@@ -325,108 +420,108 @@ const A = (n) => (r) => {
325
420
  sortByOrder: a = !1,
326
421
  excludeParentCode: d = !1
327
422
  } = s || {}, c = `simpleCodeList_${e}_${o}_${t}_${a}_${d}`;
328
- if (l.optionCache.has(c)) {
329
- const f = l.cacheHits.get(c) || 0;
330
- return l.cacheHits.set(c, f + 1), l.optionCache.get(c);
423
+ if (p.optionCache.has(c)) {
424
+ const h = p.cacheHits.get(c) || 0;
425
+ return p.cacheHits.set(c, h + 1), p.optionCache.get(c);
331
426
  }
332
427
  const i = I.getState().codeData;
333
428
  if (!i) return [];
334
- if (!l.isGroupLoaded(e) && !i[e])
429
+ if (!p.isGroupLoaded(e) && !i[e])
335
430
  return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`), [];
336
- const p = [], h = i[e];
337
- h && Object.values(h).forEach((f) => {
338
- if (!(o && !f.enabled) && !(t && f.systemCodeYn !== "Y"))
431
+ const l = [], f = i[e];
432
+ f && Object.values(f).forEach((h) => {
433
+ if (!(o && !h.enabled) && !(t && h.systemCodeYn !== "Y"))
339
434
  if (d) {
340
- const C = e.length, g = f.codeValue.substring(C);
341
- g.length > 0 && p.push({
342
- ...f,
435
+ const C = e.length, g = h.codeValue.substring(C);
436
+ g.length > 0 && l.push({
437
+ ...h,
343
438
  codeValue: g
344
439
  // 자식코드만 사용
345
440
  });
346
441
  } else
347
- p.push(f);
442
+ l.push(h);
348
443
  });
349
444
  let m;
350
- a ? m = p.sort((f, C) => f.sortOrder !== C.sortOrder ? f.sortOrder - C.sortOrder : f.codeValue.localeCompare(C.codeValue)) : m = p.sort(
351
- (f, C) => f.codeValue.localeCompare(C.codeValue)
445
+ a ? m = l.sort((h, C) => h.sortOrder !== C.sortOrder ? h.sortOrder - C.sortOrder : h.codeValue.localeCompare(C.codeValue)) : m = l.sort(
446
+ (h, C) => h.codeValue.localeCompare(C.codeValue)
352
447
  );
353
- const u = m.map((f) => ({
354
- label: f.codeNm,
355
- value: f.codeValue,
356
- tagColor: f.labelColor
448
+ const u = m.map((h) => ({
449
+ label: h.codeNm,
450
+ value: h.codeValue,
451
+ tagColor: h.labelColor
357
452
  }));
358
- return l.optionCache.size >= D.CACHE_SIZE_LIMIT && l.cleanupCache(), l.optionCache.set(c, u), l.cacheHits.set(c, 1), u;
453
+ return p.optionCache.size >= A.CACHE_SIZE_LIMIT && p.cleanupCache(), p.optionCache.set(c, u), p.cacheHits.set(c, 1), u;
359
454
  },
360
455
  // 2. 코드를 던졌을 때 코드명을 리턴 (대규모 최적화)
361
456
  getCodeName: (e) => {
362
- if (l.nameCache.has(e)) {
363
- const o = l.cacheHits.get(`name_${e}`) || 0;
364
- return l.cacheHits.set(`name_${e}`, o + 1), l.nameCache.get(e);
457
+ if (p.nameCache.has(e)) {
458
+ const o = p.cacheHits.get(`name_${e}`) || 0;
459
+ return p.cacheHits.set(`name_${e}`, o + 1), p.nameCache.get(e);
365
460
  }
366
461
  const s = I.getState().codeData;
367
462
  if (!s) return null;
368
463
  for (const o of Object.values(s))
369
464
  for (const t of Object.values(o))
370
465
  if (t.codeValue === e)
371
- return l.nameCache.set(e, t.codeNm), l.cacheHits.set(`name_${e}`, 1), t.codeNm;
466
+ return p.nameCache.set(e, t.codeNm), p.cacheHits.set(`name_${e}`, 1), t.codeNm;
372
467
  return null;
373
468
  },
374
469
  // 3. 코드를 던졌을 때 라벨 컬러를 리턴 (대규모 최적화)
375
470
  getCodeColor: (e) => {
376
- if (l.colorCache.has(e)) {
377
- const o = l.cacheHits.get(`color_${e}`) || 0;
378
- return l.cacheHits.set(`color_${e}`, o + 1), l.colorCache.get(e);
471
+ if (p.colorCache.has(e)) {
472
+ const o = p.cacheHits.get(`color_${e}`) || 0;
473
+ return p.cacheHits.set(`color_${e}`, o + 1), p.colorCache.get(e);
379
474
  }
380
475
  const s = I.getState().codeData;
381
476
  if (!s) return null;
382
477
  for (const o of Object.values(s))
383
478
  for (const t of Object.values(o))
384
479
  if (t.codeValue === e)
385
- return l.colorCache.set(
480
+ return p.colorCache.set(
386
481
  e,
387
482
  t.labelColor || ""
388
- ), l.cacheHits.set(`color_${e}`, 1), t.labelColor;
483
+ ), p.cacheHits.set(`color_${e}`, 1), t.labelColor;
389
484
  return null;
390
485
  },
391
486
  // 4. 그리드 lookup용 데이터 반환 (labels, values 배열, lookupDisplay 포함)
392
487
  getGridLookup: (e) => {
393
488
  const s = `gridLookup_${e}`;
394
- if (l.optionCache.has(s)) {
395
- const i = l.cacheHits.get(s) || 0;
396
- return l.cacheHits.set(s, i + 1), l.optionCache.get(s);
489
+ if (p.optionCache.has(s)) {
490
+ const i = p.cacheHits.get(s) || 0;
491
+ return p.cacheHits.set(s, i + 1), p.optionCache.get(s);
397
492
  }
398
493
  const o = I.getState().codeData;
399
494
  if (!o) return { labels: [], values: [], lookupDisplay: !0 };
400
495
  const t = o[e];
401
496
  if (!t) return { labels: [], values: [], lookupDisplay: !0 };
402
497
  const a = [], d = [];
403
- Object.values(t).filter((i) => i.enabled).sort((i, p) => i.sortOrder - p.sortOrder).forEach((i) => {
498
+ Object.values(t).filter((i) => i.enabled).sort((i, l) => i.sortOrder - l.sortOrder).forEach((i) => {
404
499
  a.push(i.codeNm), d.push(i.codeValue);
405
500
  });
406
501
  const c = { labels: a, values: d, lookupDisplay: !0 };
407
- return l.optionCache.set(s, c), l.cacheHits.set(s, 1), c;
502
+ return p.optionCache.set(s, c), p.cacheHits.set(s, 1), c;
408
503
  },
409
504
  // 3. 옵션값으로 코드를 조회하는 새로운 메서드
410
505
  getCodeByOption: (e, s, o) => {
411
506
  const t = `codeByOption_${e}_${s}_${o}`;
412
- if (l.codeCache.has(t)) {
413
- const p = l.cacheHits.get(t) || 0;
414
- return l.cacheHits.set(t, p + 1), l.codeCache.get(t);
507
+ if (p.codeCache.has(t)) {
508
+ const l = p.cacheHits.get(t) || 0;
509
+ return p.cacheHits.set(t, l + 1), p.codeCache.get(t);
415
510
  }
416
511
  const a = I.getState().codeData;
417
512
  if (!a) return [];
418
513
  const d = [], c = a[e];
419
- c && Object.values(c).forEach((p) => {
420
- p.enabled && p.options && p.options[s] === o && d.push({
421
- ...p,
422
- codeNm: p.options[s] || p.codeNm
514
+ c && Object.values(c).forEach((l) => {
515
+ l.enabled && l.options && l.options[s] === o && d.push({
516
+ ...l,
517
+ codeNm: l.options[s] || l.codeNm
423
518
  // 옵션값을 코드명으로 사용
424
519
  });
425
520
  });
426
521
  const i = d.sort(
427
- (p, h) => p.codeValue.localeCompare(h.codeValue)
522
+ (l, f) => l.codeValue.localeCompare(f.codeValue)
428
523
  );
429
- return l.codeCache.size >= D.CACHE_SIZE_LIMIT && l.cleanupCache(), l.codeCache.set(t, i), l.cacheHits.set(t, 1), i;
524
+ return p.codeCache.size >= A.CACHE_SIZE_LIMIT && p.cleanupCache(), p.codeCache.set(t, i), p.cacheHits.set(t, 1), i;
430
525
  },
431
526
  // 6. 옵션코드별로 코드 목록 조회 (SimpleCodeItem 형태로 반환)
432
527
  getCodeListByOption: (e, s, o) => {
@@ -435,19 +530,19 @@ const A = (n) => (r) => {
435
530
  systemCodeOnly: a = !1,
436
531
  sortByOrder: d = !1
437
532
  } = o || {}, c = `codeListByOption_${e}_${s}_${t}_${a}_${d}`;
438
- if (l.codeCache.has(c)) {
439
- const u = l.cacheHits.get(c) || 0;
440
- return l.cacheHits.set(c, u + 1), l.codeCache.get(
533
+ if (p.codeCache.has(c)) {
534
+ const u = p.cacheHits.get(c) || 0;
535
+ return p.cacheHits.set(c, u + 1), p.codeCache.get(
441
536
  c
442
537
  );
443
538
  }
444
539
  const i = I.getState().codeData;
445
540
  if (!i) return [];
446
- if (!l.isGroupLoaded(e) && !i[e])
541
+ if (!p.isGroupLoaded(e) && !i[e])
447
542
  return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`), [];
448
- const p = [], h = i[e];
449
- h && Object.values(h).forEach((u) => {
450
- t && !u.enabled || a && u.systemCodeYn !== "Y" || u.options && u.options[s] && p.push({
543
+ const l = [], f = i[e];
544
+ f && Object.values(f).forEach((u) => {
545
+ t && !u.enabled || a && u.systemCodeYn !== "Y" || u.options && u.options[s] && l.push({
451
546
  label: u.options[s],
452
547
  // optnNm 값
453
548
  value: u.commonCode,
@@ -457,24 +552,24 @@ const A = (n) => (r) => {
457
552
  });
458
553
  });
459
554
  let m;
460
- return d ? m = p.sort((u, f) => u.value.localeCompare(f.value)) : m = p.sort(
461
- (u, f) => u.value.localeCompare(f.value)
462
- ), l.codeCache.size >= D.CACHE_SIZE_LIMIT && l.cleanupCache(), l.codeCache.set(c, m), l.cacheHits.set(c, 1), m;
555
+ return d ? m = l.sort((u, h) => u.value.localeCompare(h.value)) : m = l.sort(
556
+ (u, h) => u.value.localeCompare(h.value)
557
+ ), p.codeCache.size >= A.CACHE_SIZE_LIMIT && p.cleanupCache(), p.codeCache.set(c, m), p.cacheHits.set(c, 1), m;
463
558
  },
464
559
  // 7. 그룹코드 목록 조회
465
560
  getAvailableGroupCodes: () => {
466
561
  const e = "available_group_codes";
467
- if (l.nameCache.has(e)) {
468
- const t = l.cacheHits.get(e) || 0;
469
- return l.cacheHits.set(e, t + 1), JSON.parse(l.nameCache.get(e));
562
+ if (p.nameCache.has(e)) {
563
+ const t = p.cacheHits.get(e) || 0;
564
+ return p.cacheHits.set(e, t + 1), JSON.parse(p.nameCache.get(e));
470
565
  }
471
566
  const s = I.getState().codeData;
472
567
  if (!s) return [];
473
568
  const o = Object.keys(s).sort();
474
- return l.nameCache.set(
569
+ return p.nameCache.set(
475
570
  e,
476
571
  JSON.stringify(o)
477
- ), l.cacheHits.set(e, 1), o;
572
+ ), p.cacheHits.set(e, 1), o;
478
573
  },
479
574
  // 공통코드 초기화
480
575
  clearCodes: () => {
@@ -488,7 +583,7 @@ const A = (n) => (r) => {
488
583
  })
489
584
  }
490
585
  )
491
- ), ve = N()(
586
+ ), ve = b()(
492
587
  M(
493
588
  (n, r) => ({
494
589
  // 공통 데이터 스토어에서 상태 가져오기
@@ -511,28 +606,28 @@ const A = (n) => (r) => {
511
606
  // 그룹코드와 옵션코드를 던졌을 때 상세코드의 옵션값을 리턴 (대규모 최적화)
512
607
  getOptionValue: (e, s) => {
513
608
  const o = `option_${e}_${s}`;
514
- if (l.optionCache.has(o)) {
515
- const d = l.cacheHits.get(o) || 0;
516
- return l.cacheHits.set(o, d + 1), l.optionCache.get(o);
609
+ if (p.optionCache.has(o)) {
610
+ const d = p.cacheHits.get(o) || 0;
611
+ return p.cacheHits.set(o, d + 1), p.optionCache.get(o);
517
612
  }
518
613
  const t = I.getState().codeData;
519
614
  if (!t) return null;
520
615
  const a = t[e];
521
616
  if (a && a[s]) {
522
617
  const d = a[s].options;
523
- return l.optionCache.set(o, d), l.cacheHits.set(o, 1), d;
618
+ return p.optionCache.set(o, d), p.cacheHits.set(o, 1), d;
524
619
  }
525
620
  return null;
526
621
  },
527
622
  // 특정 옵션 키의 값 가져오기 (대규모 최적화)
528
623
  getOptionByKey: (e, s, o) => {
529
624
  const t = `option_${e}_${s}_${o}`;
530
- if (l.optionCache.has(t)) {
531
- const c = l.cacheHits.get(t) || 0;
532
- return l.cacheHits.set(t, c + 1), l.optionCache.get(t);
625
+ if (p.optionCache.has(t)) {
626
+ const c = p.cacheHits.get(t) || 0;
627
+ return p.cacheHits.set(t, c + 1), p.optionCache.get(t);
533
628
  }
534
629
  const a = r().getOptionValue(e, s), d = a ? a[o] : null;
535
- return l.optionCache.set(t, d), l.cacheHits.set(t, 1), d;
630
+ return p.optionCache.set(t, d), p.cacheHits.set(t, 1), d;
536
631
  },
537
632
  // 공통코드 초기화
538
633
  clearCodes: () => {
@@ -546,7 +641,7 @@ const A = (n) => (r) => {
546
641
  })
547
642
  }
548
643
  )
549
- ), Pe = N()(
644
+ ), Pe = b()(
550
645
  M(
551
646
  (n, r) => ({
552
647
  // 공통 데이터 스토어에서 상태 가져오기
@@ -568,27 +663,27 @@ const A = (n) => (r) => {
568
663
  },
569
664
  // 코드를 던졌을 때 컬러코드를 리턴 (대규모 최적화)
570
665
  getColorCode: (e) => {
571
- if (l.colorCache.has(e)) {
572
- const o = l.cacheHits.get(`color_${e}`) || 0;
573
- return l.cacheHits.set(`color_${e}`, o + 1), l.colorCache.get(e);
666
+ if (p.colorCache.has(e)) {
667
+ const o = p.cacheHits.get(`color_${e}`) || 0;
668
+ return p.cacheHits.set(`color_${e}`, o + 1), p.colorCache.get(e);
574
669
  }
575
670
  const s = I.getState().codeData;
576
671
  if (!s) return null;
577
672
  for (const o of Object.values(s))
578
673
  for (const t of Object.values(o))
579
674
  if (t.codeValue === e)
580
- return l.colorCache.set(
675
+ return p.colorCache.set(
581
676
  e,
582
677
  t.labelColor || ""
583
- ), l.cacheHits.set(`color_${e}`, 1), t.labelColor;
678
+ ), p.cacheHits.set(`color_${e}`, 1), t.labelColor;
584
679
  return null;
585
680
  },
586
681
  // 코드/컬러 매핑 배열 가져오기 (대규모 최적화)
587
682
  getColorMapping: () => {
588
683
  const e = "color_mapping";
589
- if (l.optionCache.has(e)) {
590
- const t = l.cacheHits.get(e) || 0;
591
- return l.cacheHits.set(e, t + 1), l.optionCache.get(e);
684
+ if (p.optionCache.has(e)) {
685
+ const t = p.cacheHits.get(e) || 0;
686
+ return p.cacheHits.set(e, t + 1), p.optionCache.get(e);
592
687
  }
593
688
  const s = I.getState().codeData;
594
689
  if (!s) return [];
@@ -600,7 +695,7 @@ const A = (n) => (r) => {
600
695
  color: a.labelColor
601
696
  });
602
697
  });
603
- }), l.optionCache.set(e, o), l.cacheHits.set(e, 1), o;
698
+ }), p.optionCache.set(e, o), p.cacheHits.set(e, 1), o;
604
699
  },
605
700
  // 공통코드 초기화
606
701
  clearCodes: () => {
@@ -639,11 +734,11 @@ const A = (n) => (r) => {
639
734
  const { nodes: s, rootIds: o } = r(), t = (d) => e ? d.toLowerCase().includes(e.toLowerCase()) : !0, a = (d) => {
640
735
  const c = s[d];
641
736
  if (!c || c.type !== "F") return null;
642
- const i = c, p = (i.children || []).map((m) => s[m]).filter((m) => !!m && m.type === "F").map((m) => a(m.bkmkId)).filter(Boolean);
643
- return t(i.bkmkNm) || p.length > 0 ? {
737
+ const i = c, l = (i.children || []).map((m) => s[m]).filter((m) => !!m && m.type === "F").map((m) => a(m.bkmkId)).filter(Boolean);
738
+ return t(i.bkmkNm) || l.length > 0 ? {
644
739
  key: i.bkmkId,
645
740
  title: `📁 ${i.bkmkNm}`,
646
- children: p.length ? p : void 0
741
+ children: l.length ? l : void 0
647
742
  } : null;
648
743
  };
649
744
  return o.map((d) => a(d)).filter(Boolean);
@@ -655,7 +750,7 @@ const A = (n) => (r) => {
655
750
  if (!(!s && o.loadedFor === e && Object.keys(o.nodes).length)) {
656
751
  n({ loading: !0, error: void 0 });
657
752
  try {
658
- const t = await b("SCMBKMK00101", { userId: e }), a = Array.isArray(t?.sub) ? t.sub : [], d = ce(a), c = P(
753
+ const t = await N("SCMBKMK00101", { userId: e }), a = Array.isArray(t?.sub) ? t.sub : [], d = ce(a), c = D(
659
754
  d.nodes,
660
755
  d.rootIds
661
756
  );
@@ -686,9 +781,9 @@ const A = (n) => (r) => {
686
781
  },
687
782
  // ====== 공통: 생성 ======
688
783
  addNode: async (e) => {
689
- const s = _(r()), o = pe();
784
+ const s = B(r()), o = pe();
690
785
  n((t) => {
691
- const a = e.sortOrdr ?? $(t, e.prntBkmkId), d = {
786
+ const a = e.sortOrdr ?? U(t, e.prntBkmkId), d = {
692
787
  ...t,
693
788
  nodes: {
694
789
  ...t.nodes,
@@ -715,11 +810,11 @@ const A = (n) => (r) => {
715
810
  rootIds: t.rootIds.slice(),
716
811
  treeNodes: t.treeNodes
717
812
  };
718
- return le(d, o, e.prntBkmkId), d.treeNodes = P(d.nodes, d.rootIds), d;
813
+ return le(d, o, e.prntBkmkId), d.treeNodes = D(d.nodes, d.rootIds), d;
719
814
  });
720
815
  try {
721
816
  let t = o;
722
- const a = $(r(), e.prntBkmkId), d = await b("SCMBKMK00102", {
817
+ const a = U(r(), e.prntBkmkId), d = await N("SCMBKMK00102", {
723
818
  iudFlag: "I",
724
819
  type: e.type,
725
820
  sysCd: e.sysCd,
@@ -736,7 +831,7 @@ const A = (n) => (r) => {
736
831
  const i = ue(c, o, t);
737
832
  return {
738
833
  ...i,
739
- treeNodes: P(i.nodes, i.rootIds)
834
+ treeNodes: D(i.nodes, i.rootIds)
740
835
  };
741
836
  }), t;
742
837
  } catch (t) {
@@ -752,19 +847,19 @@ const A = (n) => (r) => {
752
847
  if (!u || u.type !== "F")
753
848
  throw new Error("부모는 폴더만 가능합니다.");
754
849
  }
755
- const p = i.prntBkmkId ?? "-", h = p === "-" ? c : d[p].children ||= [];
850
+ const l = i.prntBkmkId ?? "-", f = l === "-" ? c : d[l].children ||= [];
756
851
  {
757
- const u = h.indexOf(e);
758
- u >= 0 && h.splice(u, 1);
852
+ const u = f.indexOf(e);
853
+ u >= 0 && f.splice(u, 1);
759
854
  }
760
855
  const m = s === "-" ? c : d[s].children ||= [];
761
856
  m.splice(
762
857
  Math.max(0, Math.min(o, m.length)),
763
858
  0,
764
859
  e
765
- ), i.prntBkmkId = s, n({ nodes: d, rootIds: c }), x(d, c, s), x(d, c, p);
860
+ ), i.prntBkmkId = s, n({ nodes: d, rootIds: c }), j(d, c, s), j(d, c, l);
766
861
  try {
767
- await b("SCMBKMK00104", {
862
+ await N("SCMBKMK00104", {
768
863
  // 백엔드 명칭 호환
769
864
  bkmkId: e,
770
865
  prntBkmkId: s,
@@ -777,7 +872,7 @@ const A = (n) => (r) => {
777
872
  },
778
873
  // ====== 공통: 삭제 ======
779
874
  removeNode: async (e) => {
780
- const s = _(r());
875
+ const s = B(r());
781
876
  n((o) => {
782
877
  if (!o.nodes[e]) return o;
783
878
  const t = {
@@ -786,26 +881,26 @@ const A = (n) => (r) => {
786
881
  rootIds: o.rootIds.slice(),
787
882
  treeNodes: o.treeNodes
788
883
  };
789
- return J(t, e), t.treeNodes = P(t.nodes, t.rootIds), t;
884
+ return W(t, e), t.treeNodes = D(t.nodes, t.rootIds), t;
790
885
  });
791
886
  try {
792
- await b("SCMBKMK00103", { bkmkId: e });
887
+ await N("SCMBKMK00103", { bkmkId: e });
793
888
  } catch (o) {
794
889
  throw n(s), o;
795
890
  }
796
891
  },
797
892
  // ====== 공통: 수정 ======
798
893
  editNode: async ({ bkmkId: e, userId: s, bkmkNm: o, prntBkmkId: t, sortOrdr: a }) => {
799
- const d = _(r());
894
+ const d = B(r());
800
895
  n((c) => {
801
- const i = { ...c, nodes: { ...c.nodes } }, p = i.nodes[e];
802
- return p?.type === "F" && typeof o == "string" && (i.nodes[e] = {
803
- ...p,
896
+ const i = { ...c, nodes: { ...c.nodes } }, l = i.nodes[e];
897
+ return l?.type === "F" && typeof o == "string" && (i.nodes[e] = {
898
+ ...l,
804
899
  bkmkNm: o
805
900
  }), i;
806
901
  });
807
902
  try {
808
- await b("SCMBKMK00102", {
903
+ await N("SCMBKMK00102", {
809
904
  iudFlag: "U",
810
905
  userId: s,
811
906
  bkmkId: e,
@@ -843,8 +938,8 @@ const A = (n) => (r) => {
843
938
  await r().removeNode(t.bkmkId);
844
939
  return;
845
940
  }
846
- let a = U(o);
847
- a || (await r().loadFavorites(e, !0), a = U(r())), a && await r().addNode({
941
+ let a = x(o);
942
+ a || (await r().loadFavorites(e, !0), a = x(r())), a && await r().addNode({
848
943
  type: "M",
849
944
  prntBkmkId: a,
850
945
  sysCd: "KH",
@@ -878,33 +973,33 @@ const A = (n) => (r) => {
878
973
  const i = e[c];
879
974
  if (!i || t && i.type !== "F") return null;
880
975
  if (i.type === "F") {
881
- const p = i, h = (p.children || []).map((u) => d(u)).filter(Boolean);
882
- return a(p.bkmkNm) || h.length > 0 ? {
883
- key: p.bkmkId,
976
+ const l = i, f = (l.children || []).map((u) => d(u)).filter(Boolean);
977
+ return a(l.bkmkNm) || f.length > 0 ? {
978
+ key: l.bkmkId,
884
979
  type: "F",
885
- title: `📁 ${p.bkmkNm}`,
886
- bkmkNm: p.bkmkNm,
887
- prntBkmkId: p.prntBkmkId,
888
- sortOrdr: p.sortOrdr,
889
- fullPath: p.fullPath,
890
- children: h.length ? h : void 0
980
+ title: `📁 ${l.bkmkNm}`,
981
+ bkmkNm: l.bkmkNm,
982
+ prntBkmkId: l.prntBkmkId,
983
+ sortOrdr: l.sortOrdr,
984
+ fullPath: l.fullPath,
985
+ children: f.length ? f : void 0
891
986
  } : null;
892
987
  } else {
893
- const p = i, h = p.menuNm ? `${p.menuNm} (${p.menuId})` : p.menuId;
894
- return a(h) ? {
895
- key: p.bkmkId,
988
+ const l = i, f = l.menuNm ? `${l.menuNm} (${l.menuId})` : l.menuId;
989
+ return a(f) ? {
990
+ key: l.bkmkId,
896
991
  type: "M",
897
- title: `📄 ${h}`,
898
- prntBkmkId: p.prntBkmkId,
899
- sortOrdr: p.sortOrdr,
900
- fullPath: p.fullPath,
992
+ title: `📄 ${f}`,
993
+ prntBkmkId: l.prntBkmkId,
994
+ sortOrdr: l.sortOrdr,
995
+ fullPath: l.fullPath,
901
996
  isLeaf: !0
902
997
  } : null;
903
998
  }
904
999
  };
905
1000
  return s.map(d).filter(Boolean);
906
1001
  }
907
- }), q = N(de);
1002
+ }), J = b(de);
908
1003
  function ce(n) {
909
1004
  const r = {}, e = [], s = (o) => {
910
1005
  o.forEach((t) => {
@@ -944,7 +1039,7 @@ function ce(n) {
944
1039
  );
945
1040
  }), { nodes: r, rootIds: e };
946
1041
  }
947
- function _(n) {
1042
+ function B(n) {
948
1043
  return {
949
1044
  ...n,
950
1045
  nodes: JSON.parse(JSON.stringify(n.nodes)),
@@ -954,7 +1049,7 @@ function _(n) {
954
1049
  function pe() {
955
1050
  return `tmp_${Math.random().toString(36).slice(2, 10)}`;
956
1051
  }
957
- function $(n, r) {
1052
+ function U(n, r) {
958
1053
  if (!r || r === "-") return n.rootIds.length;
959
1054
  const e = n.nodes[r];
960
1055
  return e ? e.children.length : 0;
@@ -979,10 +1074,10 @@ function ie(n, r) {
979
1074
  } else
980
1075
  n.rootIds = n.rootIds.filter((o) => o !== r);
981
1076
  }
982
- function J(n, r) {
1077
+ function W(n, r) {
983
1078
  const e = n.nodes[r];
984
1079
  if (!e) return;
985
- e.type === "F" && e.children.slice().forEach((a) => J(n, a)), ie(n, r);
1080
+ e.type === "F" && e.children.slice().forEach((a) => W(n, a)), ie(n, r);
986
1081
  const { [r]: s, ...o } = n.nodes;
987
1082
  n.nodes = o;
988
1083
  }
@@ -1005,14 +1100,14 @@ function ue(n, r, e) {
1005
1100
  a = n.rootIds.map((d) => d === r ? e : d);
1006
1101
  return { ...n, nodes: t, rootIds: a };
1007
1102
  }
1008
- function U(n) {
1103
+ function x(n) {
1009
1104
  return n.rootIds.find((r) => n.nodes[r]?.type === "F") ?? null;
1010
1105
  }
1011
- function P(n, r) {
1106
+ function D(n, r) {
1012
1107
  const e = {};
1013
1108
  Object.values(n).forEach((c) => {
1014
- const i = c.bkmkId, p = c.prntBkmkId;
1015
- !i || !p || p === "-" || p === i || (e[p] ??= []).push(i);
1109
+ const i = c.bkmkId, l = c.prntBkmkId;
1110
+ !i || !l || l === "-" || l === i || (e[l] ??= []).push(i);
1016
1111
  });
1017
1112
  const s = /* @__PURE__ */ new Set(), o = (c) => {
1018
1113
  if (s.has(c)) return null;
@@ -1021,23 +1116,23 @@ function P(n, r) {
1021
1116
  s.add(c);
1022
1117
  try {
1023
1118
  if (i.type === "F") {
1024
- const h = i, m = e[c] ?? [];
1119
+ const f = i, m = e[c] ?? [];
1025
1120
  return {
1026
1121
  type: "F",
1027
1122
  bkmkId: c,
1028
- bkmkNm: h.bkmkNm,
1029
- prntBkmkId: h.prntBkmkId,
1123
+ bkmkNm: f.bkmkNm,
1124
+ prntBkmkId: f.prntBkmkId,
1030
1125
  children: m.map(o).filter(Boolean)
1031
1126
  };
1032
1127
  }
1033
- const p = i;
1128
+ const l = i;
1034
1129
  return {
1035
1130
  type: "M",
1036
1131
  bkmkId: c,
1037
- bkmkNm: p.menuNm,
1038
- menuId: p.menuId,
1039
- menuNm: p.menuNm,
1040
- prntBkmkId: p.prntBkmkId
1132
+ bkmkNm: l.menuNm,
1133
+ menuId: l.menuId,
1134
+ menuNm: l.menuNm,
1135
+ prntBkmkId: l.prntBkmkId
1041
1136
  };
1042
1137
  } finally {
1043
1138
  s.delete(c);
@@ -1052,28 +1147,28 @@ function O(n, r) {
1052
1147
  if (e.type === "M" && e.menuId === r) return e.bkmkId;
1053
1148
  return null;
1054
1149
  }
1055
- function x(n, r, e) {
1150
+ function j(n, r, e) {
1056
1151
  (!e || e === "-" ? r : n[e].children || []).forEach((o, t) => {
1057
1152
  const a = n[o];
1058
1153
  a && (a.sortOrdr = t);
1059
1154
  });
1060
1155
  }
1061
- const B = {
1156
+ const T = {
1062
1157
  DEFAULT_PRNT_GBCD: 1
1063
- }, me = (n) => n && typeof n == "object" && typeof n.menuId == "string" && typeof n.menuNm == "string", j = (n) => Array.isArray(n) && n.every(me);
1064
- let K = [], z = [];
1158
+ }, me = (n) => n && typeof n == "object" && typeof n.menuId == "string" && typeof n.menuNm == "string", z = (n) => Array.isArray(n) && n.every(me);
1159
+ let K = [], Y = [];
1065
1160
  const Ce = (n) => {
1066
1161
  if (n && typeof n == "object") {
1067
1162
  const r = n;
1068
- if (r.menus && j(r.menus)) return r.menus;
1069
- if (j(n)) return n;
1163
+ if (r.menus && z(r.menus)) return r.menus;
1164
+ if (z(n)) return n;
1070
1165
  }
1071
1166
  return console.warn("⚠️ 메뉴 응답이 비어있거나 예상과 다릅니다."), [];
1072
- }, fe = (n, r) => !!r && n.crprCd === r.crprCd && n.userId === r.userId && (n.prntGbcd ?? B.DEFAULT_PRNT_GBCD) === (r.prntGbcd ?? B.DEFAULT_PRNT_GBCD), he = (n) => {
1167
+ }, he = (n, r) => !!r && n.crprCd === r.crprCd && n.userId === r.userId && (n.prntGbcd ?? T.DEFAULT_PRNT_GBCD) === (r.prntGbcd ?? T.DEFAULT_PRNT_GBCD), fe = (n) => {
1073
1168
  if (K.length === n.length && K.every(
1074
1169
  (t, a) => t.menuId === n[a]?.menuId && t.menuPrntId === n[a]?.menuPrntId
1075
1170
  ))
1076
- return z;
1171
+ return Y;
1077
1172
  if (!n.length) return [];
1078
1173
  const r = /* @__PURE__ */ new Map(), e = [];
1079
1174
  n.forEach((t) => t?.menuId && r.set(t.menuId, { ...t, children: [] })), n.forEach((t) => {
@@ -1084,8 +1179,8 @@ const Ce = (n) => {
1084
1179
  ...a,
1085
1180
  children: a.children && a.children.length ? s(a.children) : void 0
1086
1181
  })), o = s(e);
1087
- return K = [...n], z = o, o;
1088
- }, R = N((n, r) => ({
1182
+ return K = [...n], Y = o, o;
1183
+ }, R = b((n, r) => ({
1089
1184
  // 📊 초기 상태값
1090
1185
  menuList: [],
1091
1186
  flatMenuList: [],
@@ -1098,15 +1193,15 @@ const Ce = (n) => {
1098
1193
  const t = {
1099
1194
  crprCd: e,
1100
1195
  userId: s,
1101
- prntGbcd: o ?? B.DEFAULT_PRNT_GBCD
1196
+ prntGbcd: o ?? T.DEFAULT_PRNT_GBCD
1102
1197
  };
1103
- if (fe(t, r()._lastFetchParams)) {
1198
+ if (he(t, r()._lastFetchParams)) {
1104
1199
  console.log("✅ 중복 fetch 차단", t);
1105
1200
  return;
1106
1201
  }
1107
1202
  n({ isLoading: !0, error: null, _lastFetchParams: t });
1108
1203
  try {
1109
- const a = await b(E("AUTH_MENU"), t), d = Ce(a), c = he(d);
1204
+ const a = await N(w("AUTH_MENU"), t), d = Ce(a), c = fe(d);
1110
1205
  n({
1111
1206
  flatMenuList: d,
1112
1207
  // 평면 리스트 저장
@@ -1137,7 +1232,7 @@ const Ce = (n) => {
1137
1232
  }
1138
1233
  })), F = {
1139
1234
  MAX_TABS: 15
1140
- }, W = N((n, r) => ({
1235
+ }, Z = b((n, r) => ({
1141
1236
  // 📊 초기 상태값
1142
1237
  activeMenuId: null,
1143
1238
  activeMenuItem: null,
@@ -1301,7 +1396,7 @@ const Ce = (n) => {
1301
1396
  }),
1302
1397
  // 컴포넌트 라벨 맵 설정
1303
1398
  setComponentLabelMap: (e, s) => n({ componentLabelMap: e })
1304
- })), Ie = N((n, r) => ({
1399
+ })), Ie = b((n, r) => ({
1305
1400
  popups: [],
1306
1401
  activePopupId: null,
1307
1402
  isLoading: !1,
@@ -1312,8 +1407,8 @@ const Ce = (n) => {
1312
1407
  n({ isLoading: !0, error: null });
1313
1408
  try {
1314
1409
  let t = null;
1315
- const a = await b(E("SRCH_POPU"), {
1316
- crprCd: Q()?.crprCd,
1410
+ const a = await N(w("SRCH_POPU"), {
1411
+ crprCd: ee()?.crprCd,
1317
1412
  popuCd: e
1318
1413
  });
1319
1414
  t = a?.mstr;
@@ -1322,7 +1417,7 @@ const Ce = (n) => {
1322
1417
  const u = `팝업 정보를 찾을 수 없습니다: ${e}`;
1323
1418
  throw console.error(u), new Error(u);
1324
1419
  }
1325
- const i = ((u) => `/src/pages/views/popup/${u}`)(t.popuUrl), p = r().zIndexSeed + 1, h = {
1420
+ const i = ((u) => `/src/pages/views/popup/${u}`)(t.popuUrl), l = r().zIndexSeed + 1, f = {
1326
1421
  popupId: `popup_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
1327
1422
  popupCode: e,
1328
1423
  //config.title을 통해 팝업 제목 변경 가능
@@ -1336,7 +1431,7 @@ const Ce = (n) => {
1336
1431
  buttonList: d,
1337
1432
  // 버튼 목록 추가
1338
1433
  config: o,
1339
- zIndex: p
1434
+ zIndex: l
1340
1435
  }, m = r().popups.find((u) => u.popupCode === e);
1341
1436
  if (m) {
1342
1437
  n({
@@ -1349,10 +1444,10 @@ const Ce = (n) => {
1349
1444
  return;
1350
1445
  }
1351
1446
  n((u) => ({
1352
- popups: [...u.popups, h],
1353
- activePopupId: h.popupId,
1447
+ popups: [...u.popups, f],
1448
+ activePopupId: f.popupId,
1354
1449
  isLoading: !1,
1355
- zIndexSeed: p
1450
+ zIndexSeed: l
1356
1451
  }));
1357
1452
  } catch (t) {
1358
1453
  n({
@@ -1363,32 +1458,32 @@ const Ce = (n) => {
1363
1458
  },
1364
1459
  // 로컬 팝업 열기 (DB 조회 없이 레지스트리 매핑으로 렌더)
1365
1460
  openCorePopup: (e, s) => {
1366
- const o = `popup_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`, t = r().zIndexSeed + 1, d = oe[e]?.defaultConfig || {}, c = {
1461
+ const o = `popup_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`, t = r().zIndexSeed + 1, d = se[e]?.defaultConfig || {}, c = {
1367
1462
  ...d,
1368
1463
  ...s,
1369
1464
  // buttons와 callback은 완전히 덮어쓰기 (병합하지 않음)
1370
1465
  buttons: s?.buttons !== void 0 ? s.buttons : d.buttons,
1371
1466
  callback: s?.callback !== void 0 ? s.callback : d.callback
1372
- }, i = s?.defaultParams || {}, p = r().popups.find(
1467
+ }, i = s?.defaultParams || {}, l = r().popups.find(
1373
1468
  (m) => m.popupCode === e && m.isLocal
1374
1469
  );
1375
- if (p) {
1470
+ if (l) {
1376
1471
  const m = r().zIndexSeed + 1;
1377
- n({ activePopupId: p.popupId, zIndexSeed: m }), n((u) => ({
1472
+ n({ activePopupId: l.popupId, zIndexSeed: m }), n((u) => ({
1378
1473
  popups: u.popups.map(
1379
- (f) => f.popupId === p.popupId ? {
1380
- ...f,
1474
+ (h) => h.popupId === l.popupId ? {
1475
+ ...h,
1381
1476
  config: c,
1382
1477
  zIndex: m,
1383
1478
  close: () => {
1384
- r().closePopup(p.popupId);
1479
+ r().closePopup(l.popupId);
1385
1480
  }
1386
- } : f
1481
+ } : h
1387
1482
  )
1388
1483
  }));
1389
1484
  return;
1390
1485
  }
1391
- const h = {
1486
+ const f = {
1392
1487
  popupId: o,
1393
1488
  popupCode: e,
1394
1489
  popupTitle: c.title || e,
@@ -1408,7 +1503,7 @@ const Ce = (n) => {
1408
1503
  }
1409
1504
  };
1410
1505
  n((m) => ({
1411
- popups: [...m.popups, h],
1506
+ popups: [...m.popups, f],
1412
1507
  activePopupId: o,
1413
1508
  zIndexSeed: t
1414
1509
  }));
@@ -1448,7 +1543,7 @@ const Ce = (n) => {
1448
1543
  )
1449
1544
  }));
1450
1545
  }
1451
- })), Z = N()(
1546
+ })), V = b()(
1452
1547
  M(
1453
1548
  (n, r) => ({
1454
1549
  systemMap: [],
@@ -1850,7 +1945,7 @@ const Ce = (n) => {
1850
1945
  // localStorage key
1851
1946
  }
1852
1947
  )
1853
- ), Oe = N((n) => ({
1948
+ ), De = b((n) => ({
1854
1949
  requestCount: 0,
1855
1950
  loading: !1,
1856
1951
  showLoading: () => n((r) => {
@@ -1861,7 +1956,7 @@ const Ce = (n) => {
1861
1956
  const e = Math.max(0, r.requestCount - 1);
1862
1957
  return { requestCount: e, loading: e > 0 };
1863
1958
  })
1864
- })), Fe = N((n) => ({
1959
+ })), Oe = b((n) => ({
1865
1960
  requestCount: 0,
1866
1961
  loading: !1,
1867
1962
  showLoading: () => n((r) => {
@@ -1874,37 +1969,37 @@ const Ce = (n) => {
1874
1969
  })
1875
1970
  }));
1876
1971
  function ye() {
1877
- const [n, r] = Y(!1), e = X((s) => {
1972
+ const [n, r] = X(!1), e = q((s) => {
1878
1973
  const o = s?.getModifierState?.("CapsLock");
1879
1974
  typeof o == "boolean" && r(o);
1880
1975
  }, []);
1881
1976
  return { capsOn: n, onKeyDown: e };
1882
1977
  }
1883
- function Le(n) {
1978
+ function Fe(n) {
1884
1979
  const {
1885
1980
  loginApi: r,
1886
1981
  fetchCommonCodes: e,
1887
1982
  onAfterLogin: s,
1888
1983
  onError: o,
1889
1984
  rememberCookie: t = { enabled: !0, days: 30 }
1890
- } = n, [a, d] = Y(!1), { capsOn: c, onKeyDown: i } = ye(), p = "SCMSIGN00101", h = `${__SYS_CD__}_login_id`, m = {
1891
- id: t?.enabled ? ee(h) : void 0,
1985
+ } = n, [a, d] = X(!1), { capsOn: c, onKeyDown: i } = ye(), l = "SCMSIGN00101", f = `${__SYS_CD__}_login_id`, m = {
1986
+ id: t?.enabled ? te(f) : void 0,
1892
1987
  pswr: void 0
1893
- }, u = X(
1894
- async (f, C) => {
1988
+ }, u = q(
1989
+ async (h, C) => {
1895
1990
  d(!0);
1896
1991
  try {
1897
1992
  const g = {
1898
1993
  crprCd: "100",
1899
- id: f.id,
1900
- pswr: await te(f.pswr)
1901
- }, y = await (r ?? ((S) => b(p, S)))(g);
1994
+ id: h.id,
1995
+ pswr: await oe(h.pswr)
1996
+ }, y = await (r ?? ((S) => N(l, S)))(g);
1902
1997
  if (y?.userInfo?.userId) {
1903
- if (T.getState().setLoginUser(y.userInfo, y?.hrInfo), t?.enabled) {
1998
+ if (H.getState().setLoginUser(y.userInfo, y?.hrInfo), t?.enabled) {
1904
1999
  const S = t.days ?? 30;
1905
- f.remember ? G(h, f.id ?? "", S) : G(h, "", 0);
2000
+ h.remember ? $(f, h.id ?? "", S) : $(f, "", 0);
1906
2001
  }
1907
- return e ? await e() : await H.getState().fetchCommonCodes(), s ? s(y, C) : (L.success(`${y.userInfo.userNm}님 환영합니다.`), C("/main")), { user: y.userInfo, response: y };
2002
+ return e ? await e() : await G.getState().fetchCommonCodes(), s ? s(y, C) : (L.success(`${y.userInfo.userNm}님 환영합니다.`), C("/main")), { user: y.userInfo, response: y };
1908
2003
  } else
1909
2004
  throw o?.({ user: y.userInfo, response: y, navigate: C }), new Error("사용자 정보가 유효하지 않습니다.");
1910
2005
  } catch (g) {
@@ -1914,7 +2009,7 @@ function Le(n) {
1914
2009
  }
1915
2010
  },
1916
2011
  [
1917
- p,
2012
+ l,
1918
2013
  r,
1919
2014
  e,
1920
2015
  s,
@@ -1931,33 +2026,33 @@ function Le(n) {
1931
2026
  doLogin: u
1932
2027
  };
1933
2028
  }
1934
- function we() {
1935
- const n = se();
2029
+ function Le() {
2030
+ const n = ne();
1936
2031
  return () => {
1937
- T.getState().clearLoginUser(), Z.getState().clearSystemMap(), H.getState().clearCodes(), R.getState().clearMenu(), W.getState().clearMenuViewStore(), q.getState().clearFavorites(), n("/login");
2032
+ H.getState().clearLoginUser(), V.getState().clearSystemMap(), G.getState().clearCodes(), R.getState().clearMenu(), Z.getState().clearMenuViewStore(), J.getState().clearFavorites(), n("/login");
1938
2033
  };
1939
2034
  }
1940
- const De = () => H.getState(), _e = () => Ie.getState(), Ke = () => T.getState(), Ae = () => q.getState(), Be = () => R.getState(), Ee = () => W.getState(), Te = () => Z.getState();
2035
+ const we = () => G.getState(), _e = () => Ie.getState(), Ae = () => H.getState(), Be = () => J.getState(), Ke = () => R.getState(), Ee = () => Z.getState(), Te = () => V.getState();
1941
2036
  export {
1942
2037
  ye as useCapsLock,
1943
- De as useCode,
1944
- H as useCodeStore,
2038
+ we as useCode,
2039
+ G as useCodeStore,
1945
2040
  Pe as useColorStore,
1946
- Ae as useFavorite,
1947
- q as useFavoriteStore,
1948
- Oe as useLoadingStore,
1949
- Le as useLogin,
1950
- we as useLogout,
1951
- Be as useMenuModel,
2041
+ Be as useFavorite,
2042
+ J as useFavoriteStore,
2043
+ De as useLoadingStore,
2044
+ Fe as useLogin,
2045
+ Le as useLogout,
2046
+ Ke as useMenuModel,
1952
2047
  R as useMenuModelStore,
1953
2048
  Ee as useMenuView,
1954
- W as useMenuViewStore,
2049
+ Z as useMenuViewStore,
1955
2050
  ve as useOptionStore,
1956
- Fe as usePopupLoadingStore,
2051
+ Oe as usePopupLoadingStore,
1957
2052
  _e as usePopupState,
1958
2053
  Ie as usePopupStore,
1959
2054
  Te as useSystemCode,
1960
- Z as useSystemStore,
1961
- Ke as useUser,
1962
- T as useUserStore
2055
+ V as useSystemStore,
2056
+ Ae as useUser,
2057
+ H as useUserStore
1963
2058
  };