@bwg-ui/core 1.1.25 → 1.1.27

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 (122) hide show
  1. package/dist/chunks/common-components-CniOkOzu.js +15776 -0
  2. package/dist/chunks/common-components-DrcQahsO.cjs +183 -0
  3. package/dist/chunks/{core-Dl0PdDdT.js → core-CEDyqniq.js} +1 -2
  4. package/dist/chunks/core-lmAmbqvY.cjs +1 -0
  5. package/dist/chunks/{enc-base64-D7t4BoUA.js → enc-base64-CF2tIkYl.js} +4 -5
  6. package/dist/chunks/enc-base64-Dxq399hI.cjs +1 -0
  7. package/dist/chunks/{sha256-C2-s1oZe.js → sha256-DYurgXCU.js} +12 -13
  8. package/dist/chunks/sha256-H5WWQnKT.cjs +1 -0
  9. package/dist/components/common/BwgPagination.d.ts +1 -1
  10. package/dist/components/common/BwgPagination.d.ts.map +1 -1
  11. package/dist/components/common/index.cjs +1 -2
  12. package/dist/components/common/index.d.ts +3 -1
  13. package/dist/components/common/index.d.ts.map +1 -1
  14. package/dist/components/common/index.js +16 -17
  15. package/dist/components/core/BwgFormItem.d.ts +2 -2
  16. package/dist/components/core/BwgFormItem.d.ts.map +1 -1
  17. package/dist/components/core/BwgInput.d.ts.map +1 -1
  18. package/dist/components/core/index.cjs +1 -2
  19. package/dist/components/core/index.js +1218 -23
  20. package/dist/components/guide/index.cjs +1 -2
  21. package/dist/components/guide/index.js +3 -4
  22. package/dist/components/layout/index.cjs +35 -2
  23. package/dist/components/layout/index.js +350 -10
  24. package/dist/components/popup/MenuReport.d.ts.map +1 -1
  25. package/dist/index.cjs +1 -2
  26. package/dist/index.js +211 -222
  27. package/dist/provider/index.cjs +1 -2
  28. package/dist/provider/index.js +384 -25
  29. package/dist/stores/index.cjs +2 -2
  30. package/dist/stores/index.js +1394 -24
  31. package/dist/utils/index.cjs +1 -2
  32. package/dist/utils/index.js +1369 -200
  33. package/package.json +2 -3
  34. package/dist/chunks/AuthContext-CXng9fj0.cjs +0 -2
  35. package/dist/chunks/AuthContext-CXng9fj0.cjs.map +0 -1
  36. package/dist/chunks/AuthContext-DrEpBrpB.js +0 -57
  37. package/dist/chunks/AuthContext-DrEpBrpB.js.map +0 -1
  38. package/dist/chunks/BwgSpace-CnLM4qcg.js +0 -27
  39. package/dist/chunks/BwgSpace-CnLM4qcg.js.map +0 -1
  40. package/dist/chunks/BwgSpace-b0hmM1Ht.cjs +0 -2
  41. package/dist/chunks/BwgSpace-b0hmM1Ht.cjs.map +0 -1
  42. package/dist/chunks/BwgSwitch-DOlc57wi.cjs +0 -2
  43. package/dist/chunks/BwgSwitch-DOlc57wi.cjs.map +0 -1
  44. package/dist/chunks/BwgSwitch-D_scwi9_.js +0 -269
  45. package/dist/chunks/BwgSwitch-D_scwi9_.js.map +0 -1
  46. package/dist/chunks/BwgUploader-CkXwkcUL.cjs +0 -3
  47. package/dist/chunks/BwgUploader-CkXwkcUL.cjs.map +0 -1
  48. package/dist/chunks/BwgUploader-DBFF9BPF.js +0 -3250
  49. package/dist/chunks/BwgUploader-DBFF9BPF.js.map +0 -1
  50. package/dist/chunks/LoadingOverlay-DAZJF5wg.js +0 -19
  51. package/dist/chunks/LoadingOverlay-DAZJF5wg.js.map +0 -1
  52. package/dist/chunks/LoadingOverlay-DcmKvoZA.cjs +0 -2
  53. package/dist/chunks/LoadingOverlay-DcmKvoZA.cjs.map +0 -1
  54. package/dist/chunks/SSOHandler-BY6LXMLc.cjs +0 -237
  55. package/dist/chunks/SSOHandler-BY6LXMLc.cjs.map +0 -1
  56. package/dist/chunks/SSOHandler-CxvxEBaH.js +0 -28654
  57. package/dist/chunks/SSOHandler-CxvxEBaH.js.map +0 -1
  58. package/dist/chunks/ScreenProtectContext-3my4PHFa.js +0 -154
  59. package/dist/chunks/ScreenProtectContext-3my4PHFa.js.map +0 -1
  60. package/dist/chunks/ScreenProtectContext-CVuXrJm6.cjs +0 -2
  61. package/dist/chunks/ScreenProtectContext-CVuXrJm6.cjs.map +0 -1
  62. package/dist/chunks/SearchBoxContext-DwFDOyYG.cjs +0 -2
  63. package/dist/chunks/SearchBoxContext-DwFDOyYG.cjs.map +0 -1
  64. package/dist/chunks/SearchBoxContext-gWM7FHIw.js +0 -86
  65. package/dist/chunks/SearchBoxContext-gWM7FHIw.js.map +0 -1
  66. package/dist/chunks/ViewContainer-Bhq22_B3.cjs +0 -36
  67. package/dist/chunks/ViewContainer-Bhq22_B3.cjs.map +0 -1
  68. package/dist/chunks/ViewContainer-D9SKBnrn.js +0 -338
  69. package/dist/chunks/ViewContainer-D9SKBnrn.js.map +0 -1
  70. package/dist/chunks/apiUtils-BZ6s0_NI.cjs +0 -3
  71. package/dist/chunks/apiUtils-BZ6s0_NI.cjs.map +0 -1
  72. package/dist/chunks/apiUtils-DSwE62oG.js +0 -1450
  73. package/dist/chunks/apiUtils-DSwE62oG.js.map +0 -1
  74. package/dist/chunks/codeStore-il4-kZPe.cjs +0 -2
  75. package/dist/chunks/codeStore-il4-kZPe.cjs.map +0 -1
  76. package/dist/chunks/codeStore-vPj4Y0TK.js +0 -450
  77. package/dist/chunks/codeStore-vPj4Y0TK.js.map +0 -1
  78. package/dist/chunks/core-BHejg5iS.cjs +0 -2
  79. package/dist/chunks/core-BHejg5iS.cjs.map +0 -1
  80. package/dist/chunks/core-Dl0PdDdT.js.map +0 -1
  81. package/dist/chunks/enc-base64-BkBtNBQV.cjs +0 -2
  82. package/dist/chunks/enc-base64-BkBtNBQV.cjs.map +0 -1
  83. package/dist/chunks/enc-base64-D7t4BoUA.js.map +0 -1
  84. package/dist/chunks/favoriteStore-Bh1FuZm9.js +0 -439
  85. package/dist/chunks/favoriteStore-Bh1FuZm9.js.map +0 -1
  86. package/dist/chunks/favoriteStore-CcKg_nEH.cjs +0 -2
  87. package/dist/chunks/favoriteStore-CcKg_nEH.cjs.map +0 -1
  88. package/dist/chunks/jsx-runtime-CeSfJrVB.cjs +0 -31
  89. package/dist/chunks/jsx-runtime-CeSfJrVB.cjs.map +0 -1
  90. package/dist/chunks/jsx-runtime-Dpn_P65e.js +0 -634
  91. package/dist/chunks/jsx-runtime-Dpn_P65e.js.map +0 -1
  92. package/dist/chunks/popupStore-BRRmB4zH.js +0 -92
  93. package/dist/chunks/popupStore-BRRmB4zH.js.map +0 -1
  94. package/dist/chunks/popupStore-DUApUBF2.cjs +0 -2
  95. package/dist/chunks/popupStore-DUApUBF2.cjs.map +0 -1
  96. package/dist/chunks/realFormat-Cha7OTd9.cjs +0 -2
  97. package/dist/chunks/realFormat-Cha7OTd9.cjs.map +0 -1
  98. package/dist/chunks/realFormat-DRGLFabQ.js +0 -305
  99. package/dist/chunks/realFormat-DRGLFabQ.js.map +0 -1
  100. package/dist/chunks/sha256-C2-s1oZe.js.map +0 -1
  101. package/dist/chunks/sha256-DiIRoCQ8.cjs +0 -2
  102. package/dist/chunks/sha256-DiIRoCQ8.cjs.map +0 -1
  103. package/dist/chunks/usePopup-D2JEuDrO.cjs +0 -2
  104. package/dist/chunks/usePopup-D2JEuDrO.cjs.map +0 -1
  105. package/dist/chunks/usePopup-DarKTbRC.js +0 -109
  106. package/dist/chunks/usePopup-DarKTbRC.js.map +0 -1
  107. package/dist/components/common/index.cjs.map +0 -1
  108. package/dist/components/common/index.js.map +0 -1
  109. package/dist/components/core/index.cjs.map +0 -1
  110. package/dist/components/core/index.js.map +0 -1
  111. package/dist/components/guide/index.cjs.map +0 -1
  112. package/dist/components/guide/index.js.map +0 -1
  113. package/dist/components/layout/index.cjs.map +0 -1
  114. package/dist/components/layout/index.js.map +0 -1
  115. package/dist/index.cjs.map +0 -1
  116. package/dist/index.js.map +0 -1
  117. package/dist/provider/index.cjs.map +0 -1
  118. package/dist/provider/index.js.map +0 -1
  119. package/dist/stores/index.cjs.map +0 -1
  120. package/dist/stores/index.js.map +0 -1
  121. package/dist/utils/index.cjs.map +0 -1
  122. package/dist/utils/index.js.map +0 -1
@@ -1,27 +1,386 @@
1
- import { C as s, c as r, a, d as u, b as d, u as C, e as i, g as t, f as c } from "../chunks/usePopup-DarKTbRC.js";
2
- import { A as v, u as S } from "../chunks/AuthContext-DrEpBrpB.js";
3
- import { S as P, u as x } from "../chunks/ScreenProtectContext-3my4PHFa.js";
4
- import { S as n, a as L, d as h, e as l, u as A, b as g, c as B } from "../chunks/SearchBoxContext-gWM7FHIw.js";
1
+ import { useEffect as b, createContext as y, useContext as P, useRef as N, useState as w, useMemo as A, useCallback as $ } from "react";
2
+ import { useCodeStore as H, usePopupStore as W } from "../stores/index.js";
3
+ import { jsx as d, jsxs as T } from "react/jsx-runtime";
4
+ import { Input as z } from "antd";
5
+ import { setServiceCodeOverrides as J } from "../utils/index.js";
6
+ const I = {
7
+ // 권한 관련
8
+ AUTH_BTNS: "SCMSIGN00202",
9
+ // 버튼 권한 조회
10
+ AUTH_MENU: "SCMSIGN00201",
11
+ // 메뉴 권한 조회
12
+ SRCH_CODE: "SCMSIGN00301",
13
+ // 코드 조회
14
+ // 팝업 관련
15
+ SRCH_POPU: "SCMPOPU00101",
16
+ // 팝업 조회
17
+ // 즐겨찾기 관련
18
+ AUTH_BMRK: "SCMBMRK00101"
19
+ // 즐겨찾기 관리
20
+ }, D = y(null), ee = ({
21
+ children: e,
22
+ serviceCodes: t = {}
23
+ }) => {
24
+ b(() => {
25
+ J(t);
26
+ }, [t]);
27
+ const n = {
28
+ serviceCodes: t,
29
+ getServiceCode: (r) => {
30
+ if (t[r] && t[r].trim() !== "")
31
+ return console.log(`🔧 Provider 설정 사용: ${r} = ${t[r]}`), t[r];
32
+ const s = I[r];
33
+ return console.log(`🔧 기본값 사용: ${r} = ${s}`), s;
34
+ }
35
+ };
36
+ return /* @__PURE__ */ d(D.Provider, { value: n, children: e });
37
+ }, O = () => {
38
+ const e = P(D);
39
+ if (!e)
40
+ throw new Error("useServiceCode must be used within a ServiceCodeProvider");
41
+ return e;
42
+ }, te = (e) => {
43
+ const { getServiceCode: t } = O();
44
+ return t(e);
45
+ }, oe = () => {
46
+ const { getServiceCode: e } = O(), t = {};
47
+ for (const o of Object.keys(I))
48
+ t[o] = e(o);
49
+ return t;
50
+ }, re = () => {
51
+ const { getServiceCode: e } = O();
52
+ console.log("🔧 bwg-core 서비스코드 설정:"), console.log("📋 Provider 설정 > 기본값 순서로 확인");
53
+ for (const t of Object.keys(I)) {
54
+ const o = e(t);
55
+ console.log(` ${t}: ${o}`);
56
+ }
57
+ }, M = y(null), ne = ({ children: e }) => {
58
+ const t = N(null), l = {
59
+ searchBoxRef: t,
60
+ getFormData: () => t.current?.getFormData() || {},
61
+ setFormData: (u) => {
62
+ t.current?.setFormData(u);
63
+ },
64
+ resetForm: () => {
65
+ t.current?.resetForm();
66
+ },
67
+ validateForm: async () => await t.current?.validateForm() || {
68
+ success: !1,
69
+ error: null
70
+ }
71
+ };
72
+ return /* @__PURE__ */ d(M.Provider, { value: l, children: e });
73
+ }, se = () => {
74
+ const e = P(M);
75
+ if (!e)
76
+ throw new Error("useSearchBox must be used within a SearchBoxProvider");
77
+ return e;
78
+ }, R = y(null), ce = () => {
79
+ const e = P(R);
80
+ if (!e) throw new Error("useAuth must be used within AuthProvider");
81
+ return e;
82
+ }, ie = ({ children: e }) => {
83
+ const [t, o] = w(!1), [n, r] = w(!1), s = async (c) => {
84
+ const i = (await c.text()).trim().toLowerCase();
85
+ try {
86
+ const a = JSON.parse(i);
87
+ if (typeof a == "object" && a && (a.ok === !0 || a.success === !0))
88
+ return !0;
89
+ } catch {
90
+ }
91
+ return !!["true", "ok", "1", "y"].includes(i);
92
+ }, l = async (c) => {
93
+ r(!0);
94
+ try {
95
+ const i = await fetch("/serviceEndpoint/sso_check.jsp", {
96
+ method: "POST",
97
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
98
+ body: "token=" + encodeURIComponent(c)
99
+ }), a = i.ok && await s(i);
100
+ return o(a), a;
101
+ } catch {
102
+ return !1;
103
+ } finally {
104
+ r(!1);
105
+ }
106
+ }, u = async (c) => {
107
+ r(!0);
108
+ try {
109
+ const i = await fetch("/serviceEndpoint/sso_reauth.jsp", {
110
+ method: "POST",
111
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
112
+ body: "pin=" + encodeURIComponent(c)
113
+ });
114
+ return i.ok && await s(i) ? (o(!0), !0) : !1;
115
+ } catch {
116
+ return !1;
117
+ } finally {
118
+ r(!1);
119
+ }
120
+ }, f = () => {
121
+ o(!1);
122
+ }, m = A(
123
+ () => ({ authed: t, busy: n, verifyWithToken: l, reauthWithPin: u, logout: f }),
124
+ [t, n]
125
+ );
126
+ return /* @__PURE__ */ d(R.Provider, { value: m, children: e });
127
+ }, U = y(null), ue = () => {
128
+ const e = P(U);
129
+ if (!e)
130
+ throw new Error("useLock must be used within ScreenProtectProvider");
131
+ return e;
132
+ }, ae = ({
133
+ children: e,
134
+ idleMs: t = 1e4,
135
+ onUnlock: o,
136
+ persistLocked: n = !0,
137
+ storageKey: r = "inactivityLocked",
138
+ eventTarget: s,
139
+ overlayScope: l = "global",
140
+ overlayId: u = "lock-overlay-root",
141
+ overlayPosition: f = "fixed"
142
+ }) => {
143
+ const m = n && typeof window < "u" && window.localStorage.getItem(r) === "1", [c, i] = w(m), [a, L] = w(t), x = Number.isFinite(a) && a > 0, C = N(null), _ = () => {
144
+ try {
145
+ n && window.localStorage.setItem(r, "1");
146
+ } catch {
147
+ }
148
+ i(!0);
149
+ }, F = async (h) => {
150
+ if (!(o && !await o(h))) {
151
+ try {
152
+ n && window.localStorage.removeItem(r);
153
+ } catch {
154
+ }
155
+ i(!1), x && E();
156
+ }
157
+ }, G = () => {
158
+ try {
159
+ n && window.localStorage.setItem(r, "1");
160
+ } catch {
161
+ }
162
+ i(!0);
163
+ }, E = () => {
164
+ x && (C.current && window.clearTimeout(C.current), C.current = window.setTimeout(() => {
165
+ G();
166
+ }, a));
167
+ };
168
+ b(() => {
169
+ if (!x) return;
170
+ const h = () => {
171
+ c || E();
172
+ }, v = { passive: !0 }, g = [
173
+ "pointermove",
174
+ "pointerdown",
175
+ "keydown",
176
+ "wheel",
177
+ "touchstart"
178
+ ], S = s ?? window;
179
+ return g.forEach((p) => S.addEventListener(p, h, v)), E(), () => {
180
+ C.current && window.clearTimeout(C.current), g.forEach((p) => S.removeEventListener(p, h));
181
+ };
182
+ }, [a, c, s, x]), b(() => {
183
+ if (!c) return;
184
+ const h = (p) => {
185
+ const B = document.getElementById(u);
186
+ B && B.contains(p.target) || (p.stopPropagation(), p.preventDefault());
187
+ }, v = { capture: !0 }, g = [
188
+ "pointerdown",
189
+ "pointerup",
190
+ "pointermove",
191
+ "click",
192
+ "wheel",
193
+ "keydown",
194
+ "keyup",
195
+ "touchstart",
196
+ "touchmove"
197
+ ], S = l === "scoped" ? s ?? window : window;
198
+ return g.forEach((p) => S.addEventListener(p, h, v)), () => g.forEach((p) => S.removeEventListener(p, h, v));
199
+ }, [c, l, u, s]);
200
+ const V = A(
201
+ () => ({ locked: c, lock: _, unlock: F, setIdleMs: L }),
202
+ [c]
203
+ );
204
+ return /* @__PURE__ */ T(U.Provider, { value: V, children: [
205
+ /* @__PURE__ */ d(
206
+ "div",
207
+ {
208
+ style: { width: "100%", height: "100%" },
209
+ ...c ? { inert: "" } : {},
210
+ ...c ? { "aria-hidden": !0 } : {},
211
+ children: e
212
+ }
213
+ ),
214
+ c && /* @__PURE__ */ d(
215
+ q,
216
+ {
217
+ onUnlock: F,
218
+ overlayId: u,
219
+ overlayPosition: f
220
+ }
221
+ )
222
+ ] });
223
+ }, q = ({
224
+ onUnlock: e,
225
+ overlayId: t = "lock-overlay-root",
226
+ overlayPosition: o = "fixed"
227
+ }) => {
228
+ const [n] = w(4), [r, s] = w("");
229
+ return /* @__PURE__ */ d(
230
+ "div",
231
+ {
232
+ id: t,
233
+ "aria-modal": "true",
234
+ role: "dialog",
235
+ "aria-label": "Locked screen",
236
+ style: {
237
+ position: o,
238
+ inset: 0,
239
+ background: "rgba(12, 14, 18, 0.85)",
240
+ backdropFilter: "blur(4px)",
241
+ display: "grid",
242
+ placeItems: "center",
243
+ zIndex: 9999
244
+ },
245
+ children: /* @__PURE__ */ T("div", { className: "lockscreen-form", style: { width: 420, maxWidth: "92vw" }, children: [
246
+ /* @__PURE__ */ d("div", { className: "lock-icon-wrap", children: /* @__PURE__ */ d("span", { className: "lock-icon-box" }) }),
247
+ /* @__PURE__ */ d("h2", { children: "잠금됨" }),
248
+ /* @__PURE__ */ d("p", { children: "PIN 번호를 입력하세요" }),
249
+ /* @__PURE__ */ d(
250
+ "div",
251
+ {
252
+ className: "lock-ipt-wrap",
253
+ style: { display: "flex", justifyContent: "center" },
254
+ children: /* @__PURE__ */ d(
255
+ z.OTP,
256
+ {
257
+ mask: "*",
258
+ autoFocus: !0,
259
+ length: n,
260
+ value: r,
261
+ onChange: (l) => {
262
+ const u = (l ?? "").replace(/\D/g, "").slice(0, n);
263
+ s(u), u.length === n && e(u);
264
+ }
265
+ }
266
+ )
267
+ }
268
+ )
269
+ ] })
270
+ }
271
+ );
272
+ }, j = y(
273
+ void 0
274
+ ), de = ({
275
+ children: e
276
+ }) => {
277
+ const {
278
+ codeData: t,
279
+ isLoading: o,
280
+ error: n,
281
+ lastUpdated: r,
282
+ getCodeList: s,
283
+ getCodeListByOption: l,
284
+ getCodeName: u,
285
+ getCodeColor: f,
286
+ getCodeByOption: m,
287
+ getAvailableGroupCodes: c,
288
+ getGridLookup: i,
289
+ fetchCommonCodes: a
290
+ } = H(), L = {
291
+ codeData: t,
292
+ isLoading: o,
293
+ error: n,
294
+ lastUpdated: r,
295
+ getCodeList: s,
296
+ getCodeListByOption: l,
297
+ getCodeName: u,
298
+ getCodeColor: f,
299
+ getCodeByOption: m,
300
+ getAvailableGroupCodes: c,
301
+ getGridLookup: i,
302
+ refreshCodes: a
303
+ };
304
+ return /* @__PURE__ */ d(j.Provider, { value: L, children: e });
305
+ }, k = () => {
306
+ const e = P(j);
307
+ if (e === void 0)
308
+ throw new Error("useCommonCode must be used within a CommonCodeProvider");
309
+ return e;
310
+ }, le = () => {
311
+ const { getCodeList: e, isLoading: t, error: o } = k();
312
+ return {
313
+ getCodeList: e,
314
+ isLoading: t,
315
+ error: o
316
+ };
317
+ }, pe = () => {
318
+ const { getCodeName: e, isLoading: t, error: o } = k();
319
+ return {
320
+ getCodeName: e,
321
+ isLoading: t,
322
+ error: o
323
+ };
324
+ }, me = () => {
325
+ const { getCodeColor: e, isLoading: t, error: o } = k();
326
+ return {
327
+ getCodeColor: e,
328
+ isLoading: t,
329
+ error: o
330
+ };
331
+ }, fe = () => {
332
+ const { getCodeListByOption: e, isLoading: t, error: o } = k();
333
+ return {
334
+ getCodeListByOption: e,
335
+ isLoading: t,
336
+ error: o
337
+ };
338
+ }, he = () => {
339
+ const { getGridLookup: e, isLoading: t, error: o } = k();
340
+ return {
341
+ getGridLookup: e,
342
+ isLoading: t,
343
+ error: o
344
+ };
345
+ }, we = () => !1, Ce = () => {
346
+ const { popups: e, activePopupId: t, setActivePopup: o, closePopup: n, openPopup: r } = W(), s = $(
347
+ async (l, u, f) => {
348
+ try {
349
+ await r(l, u, f);
350
+ } catch (m) {
351
+ throw console.error("팝업 열기 실패:", m), m;
352
+ }
353
+ },
354
+ [r]
355
+ );
356
+ return {
357
+ popups: e,
358
+ activePopupId: t,
359
+ setActivePopup: o,
360
+ closePopup: n,
361
+ showPopup: s,
362
+ isPopup: e.length > 0
363
+ };
364
+ };
5
365
  export {
6
- v as AuthProvider,
7
- s as CommonCodeProvider,
8
- P as ScreenProtectProvider,
9
- n as SearchBoxProvider,
10
- L as ServiceCodeProvider,
11
- h as useAllServiceCodes,
12
- S as useAuth,
13
- r as useCodeColor,
14
- a as useCodeList,
15
- u as useCodeListByOption,
16
- d as useCodeName,
17
- C as useCommonCode,
18
- i as useGridLookup,
19
- x as useLock,
20
- l as useLogServiceCodeConfig,
21
- t as usePopup,
22
- c as usePopupContext,
23
- A as useSearchBox,
24
- g as useServiceCode,
25
- B as useServiceCodeValue
366
+ ie as AuthProvider,
367
+ de as CommonCodeProvider,
368
+ ae as ScreenProtectProvider,
369
+ ne as SearchBoxProvider,
370
+ ee as ServiceCodeProvider,
371
+ oe as useAllServiceCodes,
372
+ ce as useAuth,
373
+ me as useCodeColor,
374
+ le as useCodeList,
375
+ fe as useCodeListByOption,
376
+ pe as useCodeName,
377
+ k as useCommonCode,
378
+ he as useGridLookup,
379
+ ue as useLock,
380
+ re as useLogServiceCodeConfig,
381
+ Ce as usePopup,
382
+ we as usePopupContext,
383
+ se as useSearchBox,
384
+ O as useServiceCode,
385
+ te as useServiceCodeValue
26
386
  };
27
- //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../chunks/codeStore-il4-kZPe.cjs"),t=require("../chunks/favoriteStore-CcKg_nEH.cjs"),e=require("../chunks/apiUtils-BZ6s0_NI.cjs"),u=require("../chunks/popupStore-DUApUBF2.cjs"),s=()=>o.useCodeStore.getState(),r=()=>u.usePopupStore.getState(),S=()=>e.useUserStore.getState(),n=()=>t.useFavoriteStore.getState(),i=()=>e.useMenuModelStore.getState(),a=()=>e.useMenuViewStore.getState();exports.useCodeStore=o.useCodeStore;exports.useColorStore=o.useColorStore;exports.useOptionStore=o.useOptionStore;exports.useFavoriteStore=t.useFavoriteStore;exports.useLoadingStore=e.useLoadingStore;exports.useMenuModelStore=e.useMenuModelStore;exports.useMenuViewStore=e.useMenuViewStore;exports.usePopupLoadingStore=e.usePopupLoadingStore;exports.useUserStore=e.useUserStore;exports.usePopupStore=u.usePopupStore;exports.useCode=s;exports.useFavorite=n;exports.useMenuModel=i;exports.useMenuView=a;exports.usePopupState=r;exports.useUser=S;
2
- //# sourceMappingURL=index.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("zustand"),C=require("../utils/index.cjs"),_=require("antd");function J(r,s){let e;try{e=r()}catch{return}return{getItem:o=>{var t;const a=l=>l===null?null:JSON.parse(l,void 0),c=(t=e.getItem(o))!=null?t:null;return c instanceof Promise?c.then(a):a(c)},setItem:(o,t)=>e.setItem(o,JSON.stringify(t,void 0)),removeItem:o=>e.removeItem(o)}}const P=r=>s=>{try{const e=r(s);return e instanceof Promise?e:{then(n){return P(n)(e)},catch(n){return this}}}catch(e){return{then(n){return this},catch(n){return P(n)(e)}}}},X=(r,s)=>(e,n,o)=>{let t={storage:J(()=>localStorage),partialize:m=>m,version:0,merge:(m,k)=>({...k,...m}),...s},a=!1;const c=new Set,l=new Set;let u=t.storage;if(!u)return r((...m)=>{console.warn(`[zustand persist middleware] Unable to update item '${t.name}', the given storage is currently unavailable.`),e(...m)},n,o);const i=()=>{const m=t.partialize({...n()});return u.setItem(t.name,{state:m,version:t.version})},g=o.setState;o.setState=(m,k)=>(g(m,k),i());const p=r((...m)=>(e(...m),i()),n,o);o.getInitialState=()=>p;let h;const I=()=>{var m,k;if(!u)return;a=!1,c.forEach(y=>{var v;return y((v=n())!=null?v:p)});const M=((k=t.onRehydrateStorage)==null?void 0:k.call(t,(m=n())!=null?m:p))||void 0;return P(u.getItem.bind(u))(t.name).then(y=>{if(y)if(typeof y.version=="number"&&y.version!==t.version){if(t.migrate){const v=t.migrate(y.state,y.version);return v instanceof Promise?v.then(O=>[!0,O]):[!0,v]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,y.state];return[!1,void 0]}).then(y=>{var v;const[O,z]=y;if(h=t.merge(z,(v=n())!=null?v:p),e(h,!0),O)return i()}).then(()=>{M?.(h,void 0),h=n(),a=!0,l.forEach(y=>y(h))}).catch(y=>{M?.(void 0,y)})};return o.persist={setOptions:m=>{t={...t,...m},m.storage&&(u=m.storage)},clearStorage:()=>{u?.removeItem(t.name)},getOptions:()=>t,rehydrate:()=>I(),hasHydrated:()=>a,onHydrate:m=>(c.add(m),()=>{c.delete(m)}),onFinishHydration:m=>(l.add(m),()=>{l.delete(m)})},t.skipHydration||I(),h||p},S=X,j=b.create()(S((r,s)=>({user:null,isLoggedIn:!1,login:e=>{r({user:e,isLoggedIn:!0}),console.log("사용자 로그인:",e)},logout:()=>{r({user:null,isLoggedIn:!1}),console.log("사용자 로그아웃")},updateUser:e=>{const n=s().user;n&&r({user:{...n,...e}})}}),{name:"user-storage",partialize:r=>({user:r.user,isLoggedIn:r.isLoggedIn})})),L={CACHE_SIZE_LIMIT:1e3},d={codeCache:new Map,nameCache:new Map,optionCache:new Map,colorCache:new Map,loadedGroups:new Set,cacheHits:new Map,clearCache(){this.codeCache.clear(),this.nameCache.clear(),this.optionCache.clear(),this.colorCache.clear(),this.loadedGroups.clear(),this.cacheHits.clear()},cleanupCache(){const r=Array.from(this.cacheHits.entries());r.sort((e,n)=>e[1]-n[1]),r.slice(0,Math.floor(r.length*.3)).forEach(([e])=>{this.codeCache.delete(e),this.nameCache.delete(e),this.optionCache.delete(e),this.colorCache.delete(e),this.cacheHits.delete(e)})},isGroupLoaded(r){return this.loadedGroups.has(r)},markGroupLoaded(r){this.loadedGroups.add(r)}},Z=r=>{console.log("대규모 데이터 변환 시작:",r);const s={};if(r&&r.code&&Array.isArray(r.code)){const e=r.code,n=r.opt||[],o=new Map;n.forEach(t=>{t.cmmnCd&&t.enblYn==="Y"&&(o.has(t.cmmnCd)||o.set(t.cmmnCd,[]),o.get(t.cmmnCd).push(t))}),e.forEach(t=>{if(t&&t.cmmnCdGrp&&t.cmmnCd&&t.enblYn==="Y"){const a=t.cmmnCdGrp;s[a]||(s[a]={});const l=(o.get(t.cmmnCd)||[]).reduce((u,i)=>(i.optnCd&&i.optnNm&&(u[i.optnCd]=i.optnNm),u),{});s[a][t.cmmnCd]={codeValue:t.cmmnCd,codeNm:t.cmmnCdNm,groupCode:t.cmmnCdGrp,commonCode:t.cmmnCd,labelColor:t.cmmnCdClr,systemCodeYn:t.syscdYn,sortOrder:parseInt(t.sortOrd)||1,enabled:t.enblYn==="Y",options:Object.keys(l).length>0?l:null,originalData:t}}})}return console.log("대규모 데이터 변환 완료:",s),s},f=b.create()(S((r,s)=>({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set,fetchData:async()=>{r({isLoading:!0,error:null});try{console.log("대규모 공통코드 데이터 가져오기 시작: SCMSIGN00301");const e=await C.callService(C.getServiceCode("SRCH_CODE"),{crprCd:"100"});console.log("대규모 공통코드 응답:",e),console.log("대규모 공통코드목록:",e.code),console.log("대규모 공통코드옵션션목록:",e.opt);const n=Z(e);d.clearCache();const o=new Set(Object.keys(n));o.forEach(t=>{d.markGroupLoaded(t)}),r({codeData:n,isLoading:!1,error:null,lastUpdated:new Date,loadedGroups:o}),console.log("대규모 공통코드 데이터 가져오기 완료")}catch(e){console.error("대규모 공통코드 데이터 가져오기 실패:",e),r({isLoading:!1,error:e instanceof Error?e.message:"대규모 공통코드 데이터 가져오기 실패"})}},loadSpecificGroup:async e=>{const{codeData:n,loadedGroups:o}=s();if(!n||o.has(e))return;const t=new Set(o).add(e);r({loadedGroups:t}),d.markGroupLoaded(e)},setData:e=>{d.clearCache();const n=new Set(Object.keys(e));n.forEach(o=>{d.markGroupLoaded(o)}),r({codeData:e,lastUpdated:new Date,loadedGroups:n})},clearData:()=>{d.clearCache(),r({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set})},getLoadedGroups:()=>Array.from(s().loadedGroups)}),{name:"large-data-storage",partialize:r=>({codeData:r.codeData,lastUpdated:r.lastUpdated,loadedGroups:Array.from(r.loadedGroups)})})),K=b.create()(S((r,s)=>({get codeData(){return f.getState().codeData},get isLoading(){return f.getState().isLoading},get error(){return f.getState().error},get lastUpdated(){return f.getState().lastUpdated},fetchCommonCodes:async()=>{await f.getState().fetchData()},getCodeList:(e,n)=>{const{enabledOnly:o=!0,systemCodeOnly:t=!1,sortByOrder:a=!1,excludeParentCode:c=!1}=n||{},l=`simpleCodeList_${e}_${o}_${t}_${a}_${c}`;if(d.optionCache.has(l)){const I=d.cacheHits.get(l)||0;return d.cacheHits.set(l,I+1),d.optionCache.get(l)}const u=f.getState().codeData;if(!u)return[];if(!d.isGroupLoaded(e)&&!u[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const i=[],g=u[e];g&&Object.values(g).forEach(I=>{if(!(o&&!I.enabled)&&!(t&&I.systemCodeYn!=="Y"))if(c){const m=e.length,k=I.codeValue.substring(m);k.length>0&&i.push({...I,codeValue:k})}else i.push(I)});let p;a?p=i.sort((I,m)=>I.sortOrder!==m.sortOrder?I.sortOrder-m.sortOrder:I.codeValue.localeCompare(m.codeValue)):p=i.sort((I,m)=>I.codeValue.localeCompare(m.codeValue));const h=p.map(I=>({label:I.codeNm,value:I.codeValue,tagColor:I.labelColor}));return d.optionCache.size>=L.CACHE_SIZE_LIMIT&&d.cleanupCache(),d.optionCache.set(l,h),d.cacheHits.set(l,1),h},getCodeName:e=>{if(d.nameCache.has(e)){const o=d.cacheHits.get(`name_${e}`)||0;return d.cacheHits.set(`name_${e}`,o+1),d.nameCache.get(e)}const n=f.getState().codeData;if(!n)return null;for(const o of Object.values(n))for(const t of Object.values(o))if(t.codeValue===e)return d.nameCache.set(e,t.codeNm),d.cacheHits.set(`name_${e}`,1),t.codeNm;return null},getCodeColor:e=>{if(d.colorCache.has(e)){const o=d.cacheHits.get(`color_${e}`)||0;return d.cacheHits.set(`color_${e}`,o+1),d.colorCache.get(e)}const n=f.getState().codeData;if(!n)return null;for(const o of Object.values(n))for(const t of Object.values(o))if(t.codeValue===e)return d.colorCache.set(e,t.labelColor||""),d.cacheHits.set(`color_${e}`,1),t.labelColor;return null},getGridLookup:e=>{const n=`gridLookup_${e}`;if(d.optionCache.has(n)){const u=d.cacheHits.get(n)||0;return d.cacheHits.set(n,u+1),d.optionCache.get(n)}const o=f.getState().codeData;if(!o)return{labels:[],values:[],lookupDisplay:!0};const t=o[e];if(!t)return{labels:[],values:[],lookupDisplay:!0};const a=[],c=[];Object.values(t).filter(u=>u.enabled).sort((u,i)=>u.sortOrder-i.sortOrder).forEach(u=>{a.push(u.codeNm),c.push(u.codeValue)});const l={labels:a,values:c,lookupDisplay:!0};return d.optionCache.set(n,l),d.cacheHits.set(n,1),l},getCodeByOption:(e,n,o)=>{const t=`codeByOption_${e}_${n}_${o}`;if(d.codeCache.has(t)){const i=d.cacheHits.get(t)||0;return d.cacheHits.set(t,i+1),d.codeCache.get(t)}const a=f.getState().codeData;if(!a)return[];const c=[],l=a[e];l&&Object.values(l).forEach(i=>{i.enabled&&i.options&&i.options[n]===o&&c.push({...i,codeNm:i.options[n]||i.codeNm})});const u=c.sort((i,g)=>i.codeValue.localeCompare(g.codeValue));return d.codeCache.size>=L.CACHE_SIZE_LIMIT&&d.cleanupCache(),d.codeCache.set(t,u),d.cacheHits.set(t,1),u},getCodeListByOption:(e,n,o)=>{const{enabledOnly:t=!0,systemCodeOnly:a=!1,sortByOrder:c=!1}=o||{},l=`codeListByOption_${e}_${n}_${t}_${a}_${c}`;if(d.codeCache.has(l)){const h=d.cacheHits.get(l)||0;return d.cacheHits.set(l,h+1),d.codeCache.get(l)}const u=f.getState().codeData;if(!u)return[];if(!d.isGroupLoaded(e)&&!u[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const i=[],g=u[e];g&&Object.values(g).forEach(h=>{t&&!h.enabled||a&&h.systemCodeYn!=="Y"||h.options&&h.options[n]&&i.push({label:h.options[n],value:h.commonCode,tagColor:h.labelColor})});let p;return c?p=i.sort((h,I)=>h.value.localeCompare(I.value)):p=i.sort((h,I)=>h.value.localeCompare(I.value)),d.codeCache.size>=L.CACHE_SIZE_LIMIT&&d.cleanupCache(),d.codeCache.set(l,p),d.cacheHits.set(l,1),p},getAvailableGroupCodes:()=>{const e="available_group_codes";if(d.nameCache.has(e)){const t=d.cacheHits.get(e)||0;return d.cacheHits.set(e,t+1),JSON.parse(d.nameCache.get(e))}const n=f.getState().codeData;if(!n)return[];const o=Object.keys(n).sort();return d.nameCache.set(e,JSON.stringify(o)),d.cacheHits.set(e,1),o},clearCodes:()=>{f.getState().clearData()}}),{name:"code-storage",partialize:r=>({})})),W=b.create()(S((r,s)=>({get codeData(){return f.getState().codeData},get isLoading(){return f.getState().isLoading},get error(){return f.getState().error},get lastUpdated(){return f.getState().lastUpdated},fetchCommonCodes:async()=>{await f.getState().fetchData()},getOptionValue:(e,n)=>{const o=`option_${e}_${n}`;if(d.optionCache.has(o)){const c=d.cacheHits.get(o)||0;return d.cacheHits.set(o,c+1),d.optionCache.get(o)}const t=f.getState().codeData;if(!t)return null;const a=t[e];if(a&&a[n]){const c=a[n].options;return d.optionCache.set(o,c),d.cacheHits.set(o,1),c}return null},getOptionByKey:(e,n,o)=>{const t=`option_${e}_${n}_${o}`;if(d.optionCache.has(t)){const l=d.cacheHits.get(t)||0;return d.cacheHits.set(t,l+1),d.optionCache.get(t)}const a=s().getOptionValue(e,n),c=a?a[o]:null;return d.optionCache.set(t,c),d.cacheHits.set(t,1),c},clearCodes:()=>{f.getState().clearData()}}),{name:"option-storage",partialize:r=>({})})),Q=b.create()(S((r,s)=>({get codeData(){return f.getState().codeData},get isLoading(){return f.getState().isLoading},get error(){return f.getState().error},get lastUpdated(){return f.getState().lastUpdated},fetchCommonCodes:async()=>{await f.getState().fetchData()},getColorCode:e=>{if(d.colorCache.has(e)){const o=d.cacheHits.get(`color_${e}`)||0;return d.cacheHits.set(`color_${e}`,o+1),d.colorCache.get(e)}const n=f.getState().codeData;if(!n)return null;for(const o of Object.values(n))for(const t of Object.values(o))if(t.codeValue===e)return d.colorCache.set(e,t.labelColor||""),d.cacheHits.set(`color_${e}`,1),t.labelColor;return null},getColorMapping:()=>{const e="color_mapping";if(d.optionCache.has(e)){const t=d.cacheHits.get(e)||0;return d.cacheHits.set(e,t+1),d.optionCache.get(e)}const n=f.getState().codeData;if(!n)return[];const o=[];return Object.values(n).forEach(t=>{Object.values(t).forEach(a=>{a.labelColor&&o.push({code:a.codeValue,color:a.labelColor})})}),d.optionCache.set(e,o),d.cacheHits.set(e,1),o},clearCodes:()=>{f.getState().clearData()}}),{name:"color-storage",partialize:r=>({})})),V=(r,s)=>({nodes:{},rootIds:[],loadedFor:void 0,loading:!1,error:void 0,treeNodes:[],isMenuBookmarked:e=>Object.values(s().nodes).some(n=>n.type==="M"&&n.menuId===e),getPrntBkmkIdByMenuId:e=>{const n=w(s().nodes,e);return n?s().nodes[n]?.prntBkmkId??"-":"-"},getNodeByMenuId:e=>{const n=w(s().nodes,e);if(!n)return null;const o=s().nodes[n];return o?.type==="M"?o:null},getFolderTree:e=>{const{nodes:n,rootIds:o}=s(),t=c=>e?c.toLowerCase().includes(e.toLowerCase()):!0,a=c=>{const l=n[c];if(!l||l.type!=="F")return null;const u=l,i=(u.children||[]).map(p=>n[p]).filter(p=>!!p&&p.type==="F").map(p=>a(p.bkmkId)).filter(Boolean);return t(u.bkmkNm)||i.length>0?{key:u.bkmkId,title:`📁 ${u.bkmkNm}`,children:i.length?i:void 0}:null};return o.map(c=>a(c)).filter(Boolean)},loadFavorites:async(e,n=!1)=>{console.log("loadFavorites ::::: ",e,n);const o=s();if(!(!n&&o.loadedFor===e&&Object.keys(o.nodes).length)){r({loading:!0,error:void 0});try{const t=await C.callService("SCMBKMK00101",{userId:e}),a=Array.isArray(t?.sub)?t.sub:[],c=ee(a),l=N(c.nodes,c.rootIds);r({...c,treeNodes:l,loadedFor:e,loading:!1})}catch(t){throw r({loading:!1,error:t?.message||"즐겨찾기 로드 실패"}),t}}},loadFavoritesIfNeeded:async e=>{const n=s();(n.loadedFor!==e||Object.keys(n.nodes).length===0)&&await s().loadFavorites(e)},addNode:async e=>{const n=F(s()),o=te();r(t=>{const a=e.sortOrdr??E(t,e.prntBkmkId),c={...t,nodes:{...t.nodes,[o]:e.type==="F"?{bkmkId:o,type:"F",prntBkmkId:e.prntBkmkId||"-",sortOrdr:a,bkmkNm:e.bkmkNm??"새 폴더",children:[],sysCd:e.sysCd,userId:e.userId}:{bkmkId:o,type:"M",prntBkmkId:e.prntBkmkId,sortOrdr:a,menuId:e.menuId??"",menuNm:e.menuNm,sysCd:e.sysCd,userId:e.userId}},rootIds:t.rootIds.slice(),treeNodes:t.treeNodes};return oe(c,o,e.prntBkmkId),c.treeNodes=N(c.nodes,c.rootIds),c});try{let t=o;const a=E(s(),e.prntBkmkId),c=await C.callService("SCMBKMK00102",{iudFlag:"I",type:e.type,sysCd:e.sysCd,userId:e.userId,bkmkId:o,bkmkNm:e.bkmkNm,prntBkmkId:e.prntBkmkId,menuId:e.menuId,sortOrdr:a,chngId:C.getUserId()});return t=String(c?.bkmkId??c?.itemId??o),r(l=>{const u=re(l,o,t);return{...u,treeNodes:N(u.nodes,u.rootIds)}}),t}catch(t){throw r(n),t}},moveNode:async({bkmkId:e,newPrntBkmkId:n,sortOrdr:o,userId:t})=>{const a=s(),c=structuredClone(a.nodes),l=[...a.rootIds],u=c[e];if(!u)return;if(n!=="-"){const h=c[n];if(!h||h.type!=="F")throw new Error("부모는 폴더만 가능합니다.")}const i=u.prntBkmkId??"-",g=i==="-"?l:c[i].children||=[];{const h=g.indexOf(e);h>=0&&g.splice(h,1)}const p=n==="-"?l:c[n].children||=[];p.splice(Math.max(0,Math.min(o,p.length)),0,e),u.prntBkmkId=n,r({nodes:c,rootIds:l}),A(c,l,n),A(c,l,i);try{await C.callService("SCMBKMK00104",{bkmkId:e,prntBkmkId:n,sortOrdr:o,chngId:t})}catch(h){throw r(a),h}},removeNode:async e=>{const n=F(s());r(o=>{if(!o.nodes[e])return o;const t={...o,nodes:{...o.nodes},rootIds:o.rootIds.slice(),treeNodes:o.treeNodes};return Y(t,e),t.treeNodes=N(t.nodes,t.rootIds),t});try{await C.callService("SCMBKMK00103",{bkmkId:e})}catch(o){throw r(n),o}},editNode:async({bkmkId:e,userId:n,bkmkNm:o,prntBkmkId:t,sortOrdr:a})=>{const c=F(s());r(l=>{const u={...l,nodes:{...l.nodes}},i=u.nodes[e];return i?.type==="F"&&typeof o=="string"&&(u.nodes[e]={...i,bkmkNm:o}),u});try{await C.callService("SCMBKMK00102",{iudFlag:"U",userId:n,bkmkId:e,bkmkNm:o,prntBkmkId:t,sortOrdr:a,chngId:C.getUserId()})}catch(l){throw r(c),l}},addFolder:async(e,n,o,t)=>await s().addNode({type:"F",bkmkNm:e,prntBkmkId:n,sysCd:o,userId:t}),addMenuToFolder:async(e,n)=>w(s().nodes,n.menuId)?"이미 북마크에 저장된 메뉴입니다.":await s().addNode({type:"M",prntBkmkId:e,sysCd:"KH",userId:C.getUserId(),menuId:n.menuId,menuNm:n.menuNm}),toggleMenuFavorite:async(e,n)=>{const o=s(),t=Object.values(o.nodes).find(c=>c.type==="M"&&c.menuId===n.menuId);if(t){await s().removeNode(t.bkmkId);return}let a=U(o);a||(await s().loadFavorites(e,!0),a=U(s())),a&&await s().addNode({type:"M",prntBkmkId:a,sysCd:"KH",userId:C.getUserId(),menuId:n.menuId,menuNm:n.menuNm})},removeMenuByMenuId:async e=>{const n=s(),o=w(n.nodes,e);o&&await s().removeNode(o)},removeMenu:async e=>{await s().removeNode(e)},removeFolder:async e=>{await s().removeNode(e)},editFolder:async(e,n,o,t,a)=>{await s().editNode({bkmkId:e,userId:n,bkmkNm:o,prntBkmkId:t,sortOrdr:a})},convertToAntTreeData:(e,n,o,t=!1)=>{const a=l=>o?l.toLowerCase().includes(o.toLowerCase()):!0,c=l=>{const u=e[l];if(!u||t&&u.type!=="F")return null;if(u.type==="F"){const i=u,g=(i.children||[]).map(h=>c(h)).filter(Boolean);return a(i.bkmkNm)||g.length>0?{key:i.bkmkId,type:"F",title:`📁 ${i.bkmkNm}`,bkmkNm:i.bkmkNm,prntBkmkId:i.prntBkmkId,sortOrdr:i.sortOrdr,fullPath:i.fullPath,children:g.length?g:void 0}:null}else{const i=u,g=i.menuNm?`${i.menuNm} (${i.menuId})`:i.menuId;return a(g)?{key:i.bkmkId,type:"M",title:`📄 ${g}`,prntBkmkId:i.prntBkmkId,sortOrdr:i.sortOrdr,fullPath:i.fullPath,isLeaf:!0}:null}};return n.map(c).filter(Boolean)}}),R=b.create(V);function ee(r){const s={},e=[],n=o=>{o.forEach(t=>{const a={type:t.type,bkmkId:t.bkmkId??t.BKMK_ID??t.id,prntBkmkId:t.prntBkmkId??t.PRNT_BKMK_ID??"-",sortOrdr:Number(t.sortOrdr??t.SORT_ORDR??0),sysCd:t.sysCd??t.SYS_CD,userId:t.userId??t.USER_ID,fullPath:t.fullPath??t.FULL_PATH};if(t.type==="F"){s[a.bkmkId]={...a,bkmkNm:t.bkmkNm??t.BKMK_NM??t.name??a.bkmkId,children:[]};const c=Array.isArray(t.children)?t.children:[];n(c)}else s[a.bkmkId]={...a,menuId:t.menuId??t.MENU_ID??"",menuNm:t.menuNm??t.MENU_NM}})};return n(r),Object.values(s).forEach(o=>{if(o.prntBkmkId&&o.prntBkmkId!=="-"){const t=s[o.prntBkmkId];t?.type==="F"&&t.children.push(o.bkmkId)}else o.type==="F"&&e.push(o.bkmkId)}),e.sort((o,t)=>(s[o].sortOrdr??0)-(s[t].sortOrdr??0)),Object.values(s).forEach(o=>{o.type==="F"&&o.children.sort((a,c)=>(s[a].sortOrdr??0)-(s[c].sortOrdr??0))}),{nodes:s,rootIds:e}}function F(r){return{...r,nodes:JSON.parse(JSON.stringify(r.nodes)),rootIds:r.rootIds.slice()}}function te(){return`tmp_${Math.random().toString(36).slice(2,10)}`}function E(r,s){if(!s||s==="-")return r.rootIds.length;const e=r.nodes[s];return e?e.children.length:0}function oe(r,s,e){const n=r.nodes[s];if(n)if(e&&e!=="-"){const o=r.nodes[e];if(!o||o.type!=="F")return;n.prntBkmkId=e,o.children=[...o.children,s]}else n.prntBkmkId="-",r.rootIds=[...r.rootIds,s]}function ne(r,s){const e=r.nodes[s];if(!e)return;const n=e.prntBkmkId;if(n&&n!=="-"){const o=r.nodes[n];o?.type==="F"&&(o.children=o.children.filter(t=>t!==s))}else r.rootIds=r.rootIds.filter(o=>o!==s)}function Y(r,s){const e=r.nodes[s];if(!e)return;e.type==="F"&&e.children.slice().forEach(a=>Y(r,a)),ne(r,s);const{[s]:n,...o}=r.nodes;r.nodes=o}function re(r,s,e){if(s===e)return r;const n=r.nodes[s];if(!n)return r;const o=JSON.parse(JSON.stringify(n));o.bkmkId=e;const t={...r.nodes,[e]:o};delete t[s];let a=r.rootIds;if(o.prntBkmkId&&o.prntBkmkId!=="-"){const c=t[o.prntBkmkId];c?.type==="F"&&(t[o.prntBkmkId]={...c,children:c.children.map(l=>l===s?e:l)})}else a=r.rootIds.map(c=>c===s?e:c);return{...r,nodes:t,rootIds:a}}function U(r){return r.rootIds.find(s=>r.nodes[s]?.type==="F")??null}function N(r,s){const e={};Object.values(r).forEach(l=>{const u=l.bkmkId,i=l.prntBkmkId;!u||!i||i==="-"||i===u||(e[i]??=[]).push(u)});const n=new Set,o=l=>{if(n.has(l))return null;const u=r[l];if(!u)return null;n.add(l);try{if(u.type==="F"){const g=u,p=e[l]??[];return{type:"F",bkmkId:l,bkmkNm:g.bkmkNm,prntBkmkId:g.prntBkmkId,children:p.map(o).filter(Boolean)}}const i=u;return{type:"M",bkmkId:l,bkmkNm:i.menuNm,menuId:i.menuId,menuNm:i.menuNm,prntBkmkId:i.prntBkmkId}}finally{n.delete(l)}},t=Object.values(r).filter(l=>l.prntBkmkId==="-"&&l.type==="M").map(l=>l.bkmkId),a=Object.values(r).filter(l=>l.prntBkmkId==="-"&&l.type==="F").map(l=>l.bkmkId);return Array.from(new Set([...s,...t,...a])).map(o).filter(Boolean)}function w(r,s){for(const e of Object.values(r))if(e.type==="M"&&e.menuId===s)return e.bkmkId;return null}function A(r,s,e){(!e||e==="-"?s:r[e].children||[]).forEach((o,t)=>{const a=r[o];a&&(a.sortOrdr=t)})}const H={DEFAULT_PRNT_GBCD:1},se=r=>r&&typeof r=="object"&&typeof r.menuId=="string"&&typeof r.menuNm=="string",$=r=>Array.isArray(r)&&r.every(se);let D=[],G=[];const ae=r=>{if(r&&typeof r=="object"){const s=r;if(s.menus&&$(s.menus))return s.menus;if($(r))return r}return console.warn("⚠️ 메뉴 응답이 비어있거나 예상과 다릅니다."),[]},ce=(r,s)=>!!s&&r.crprCd===s.crprCd&&r.userId===s.userId&&(r.prntGbcd??H.DEFAULT_PRNT_GBCD)===(s.prntGbcd??H.DEFAULT_PRNT_GBCD),le=r=>{if(D.length===r.length&&D.every((t,a)=>t.menuId===r[a]?.menuId&&t.menuPrntId===r[a]?.menuPrntId))return G;if(!r.length)return[];const s=new Map,e=[];r.forEach(t=>t?.menuId&&s.set(t.menuId,{...t,children:[]})),r.forEach(t=>{const a=s.get(t.menuId);a&&(t.menuPrntId&&t.menuPrntId!==""&&t.menuPrntId!=="-"?s.get(t.menuPrntId)?.children?.push(a):e.push(a))});const n=t=>t.sort((a,c)=>(a?.menuNo??0)-(c?.menuNo??0)).map(a=>({...a,children:a.children&&a.children.length?n(a.children):void 0})),o=n(e);return D=[...r],G=o,o},T=b.create((r,s)=>({menuList:[],flatMenuList:[],isLoading:!1,error:null,_lastFetchParams:null,fetchMenu:async({crprCd:e,userId:n,prntGbcd:o})=>{const t={crprCd:e,userId:n,prntGbcd:o??H.DEFAULT_PRNT_GBCD};if(ce(t,s()._lastFetchParams)){console.log("✅ 중복 fetch 차단",t);return}r({isLoading:!0,error:null,_lastFetchParams:t});try{const a=await C.callService(C.getServiceCode("AUTH_MENU"),t),c=ae(a),l=le(c);r({flatMenuList:c,menuList:l,isLoading:!1,error:null})}catch(a){r({isLoading:!1,error:a?.message??"메뉴 로드 실패"})}},clearMenu:()=>{r({menuList:[],flatMenuList:[],error:null,_lastFetchParams:null})},findMenuById:e=>{const{flatMenuList:n}=s();return n.find(o=>o.menuId===e)??null}})),B={MAX_TABS:15},x=b.create((r,s)=>({activeMenuId:null,activeMenuItem:null,activeDetailItem:null,tabs:[],sidebarCollapsed:!1,maxTabs:B.MAX_TABS,tabProtectFlag:{},tabParams:{},componentLabelMap:{},openTabFromMenu:(e,n)=>{const{tabs:o}=s(),t=o.find(c=>c.key===e.menuId),a=o.find(c=>c.key===e.menuId);if(t)a!=null?(r({activeMenuId:e.menuId,activeMenuItem:e}),s().setTabParams(e.menuId,n||{}),e?.prsnInfoYn==="Y"&&s().setProtectFlagForKey(e.menuId)):_.message.warning("유효하지 않은 메뉴정보입니다.");else{if(o.length>B.MAX_TABS){console.warn("❌ 최대 탭 개수를 초과했습니다."),_.message.warning(`최대 ${B.MAX_TABS}개의 탭만 열 수 있습니다.
2
+ 기존 탭을 닫고 다시 시도해주세요.`);return}const c={key:e.menuId,label:e.menuNm,gubun:"M",menuItem:e,closable:!0};r({tabs:[...o,c],activeMenuId:e.menuId,activeMenuItem:e}),s().setTabParams(e.menuId,n||{}),e?.prsnInfoYn==="Y"&&s().setProtectFlagForKey(e.menuId)}},openTabByMenuId:(e,n)=>{const o=T.getState().findMenuById(e);o?s().openTabFromMenu(o,n):_.message.warning("메뉴 ID를 찾을 수 없습니다.")},openDetailView:(e,n,o)=>{const{tabs:t}=s();if(t.find(c=>c.key===e.viewId))s().focusTab(e.viewId);else{const c={key:e.viewId,label:e.viewLabel,gubun:"C",componentItem:{scrnPath:n,prsnInfoYn:o,prntInfo:e.prntInfo},closable:!0};r({tabs:[...t,c],activeMenuId:e.viewId,activeDetailItem:e}),s().setTabParams(e.viewId,e.viewParams||{})}},closeTab:e=>{const{tabs:n,activeMenuId:o}=s();n.find(c=>c.key===e);const t=n.filter(c=>c.key!==e);let a=o;if(o===e){const c=n.findIndex(l=>l.key===e);a=t.length?t[Math.min(c,t.length-1)]?.key??null:null}r({tabs:t}),a&&s().focusTab(a)},focusTab:e=>{const{tabs:n}=s(),o=n.find(t=>t.key===e);if(o){const t=o.gubun==="C"?{viewId:o.key,viewLabel:o.label,prntInfo:o.componentItem?.prntInfo}:null;o.menuItem?.prsnInfoYn==="Y"?(r({activeMenuId:e,activeMenuItem:o.menuItem,activeDetailItem:t}),console.log("✅ 탭 포커스 (개인정보) - activeMenuItem:",o.menuItem),s().setProtectFlagForKey(e)):(r({activeMenuId:e,activeMenuItem:o.menuItem,activeDetailItem:t}),s().clearProtectFlagForKey(e))}else r({activeMenuId:e,activeMenuItem:null,activeDetailItem:null}),console.warn("❌ 탭을 찾을 수 없음:",e)},closeAllTabs:()=>r({tabs:[],activeMenuId:null,activeMenuItem:null,activeDetailItem:null}),toggleSidebar:()=>r(e=>({sidebarCollapsed:!e.sidebarCollapsed})),reorderTabs:e=>r(n=>{const o=new Map(n.tabs.map(t=>[t.key,t]));return{tabs:e.map(t=>o.get(t)).filter(Boolean)}}),setProtectFlagForKey:e=>r(n=>({tabProtectFlag:{...n.tabProtectFlag,[e]:!0}})),clearProtectFlagForKey:e=>r(n=>{const o={...n.tabProtectFlag};return delete o[e],{tabProtectFlag:o}}),setTabParams:(e,n)=>r(o=>{const t=o.tabParams[e]||{},a={...n||{}};return Object.keys(t).length===Object.keys(a).length&&Object.keys(a).every(l=>t[l]===a[l])?o:{tabParams:{...o.tabParams,[e]:a}}}),setComponentLabelMap:(e,n)=>r({componentLabelMap:e})})),q=b.create((r,s)=>({popups:[],activePopupId:null,isLoading:!1,error:null,openPopup:async(e,n,o)=>{r({isLoading:!0,error:null});try{let t=null;const a=await C.callService(C.getServiceCode("SRCH_POPU"),{crprCd:C.getUserInfo()?.crprCd,popuCd:e});t=a?.mstr;const c=a?.dtls||[];if(!t||!t.popuUrl){const p=`팝업 정보를 찾을 수 없습니다: ${e}`;throw console.error(p),new Error(p)}const u=(p=>`/src/pages/views/popup/${p}`)(t.popuUrl),i={popupId:`popup_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,popupCode:e,popupTitle:o?.title||t.popuNm||"팝업",popupUrl:u,popupParams:n,width:t.popuWdth||800,height:t.popuHght||600,resizable:!0,draggable:!0,buttonList:c,config:o},g=s().popups.find(p=>p.popupCode===e);if(g){r({activePopupId:g.popupId,popups:s().popups.map(p=>p.popupId===g.popupId?{...p,config:o}:p),isLoading:!1});return}r(p=>({popups:[...p.popups,i],activePopupId:i.popupId,isLoading:!1}))}catch(t){r({error:t instanceof Error?t.message:"팝업 열기 실패",isLoading:!1})}},closePopup:e=>{const{popups:n,activePopupId:o}=s(),t=n.filter(c=>c.popupId!==e);let a=o;o===e&&(a=t.length>0?t[t.length-1].popupId:null),r({popups:t,activePopupId:a})},closeAllPopups:()=>{r({popups:[],activePopupId:null})},setActivePopup:e=>{r({activePopupId:e})},updatePopupConfig:(e,n)=>{r(o=>({popups:o.popups.map(t=>t.popupId===e?{...t,config:{...t.config,...n}}:t)}))}})),de=b.create(r=>({requestCount:0,loading:!1,showLoading:()=>r(s=>{const e=s.requestCount+1;return{requestCount:e,loading:e>0}}),hideLoading:()=>r(s=>{const e=Math.max(0,s.requestCount-1);return{requestCount:e,loading:e>0}})})),ie=b.create(r=>({requestCount:0,loading:!1,showLoading:()=>r(s=>{const e=s.requestCount+1;return{requestCount:e,loading:e>0}}),hideLoading:()=>r(s=>{const e=Math.max(0,s.requestCount-1);return{requestCount:e,loading:e>0}})})),ue=()=>K.getState(),pe=()=>q.getState(),he=()=>j.getState(),me=()=>R.getState(),fe=()=>T.getState(),ge=()=>x.getState();exports.useCode=ue;exports.useCodeStore=K;exports.useColorStore=Q;exports.useFavorite=me;exports.useFavoriteStore=R;exports.useLoadingStore=de;exports.useMenuModel=fe;exports.useMenuModelStore=T;exports.useMenuView=ge;exports.useMenuViewStore=x;exports.useOptionStore=W;exports.usePopupLoadingStore=ie;exports.usePopupState=pe;exports.usePopupStore=q;exports.useUser=he;exports.useUserStore=j;