@bwg-ui/core 1.1.18 → 1.1.20

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 (118) hide show
  1. package/dist/chunks/BwgCheck-BDt8r0gn.js +200 -0
  2. package/dist/chunks/BwgCheck-BDt8r0gn.js.map +1 -0
  3. package/dist/chunks/BwgCheck-Dtzr-6rg.cjs +2 -0
  4. package/dist/chunks/BwgCheck-Dtzr-6rg.cjs.map +1 -0
  5. package/dist/chunks/{BwgLargeUploader-D6plJv5D.js → BwgDownload-CF_Zo2oU.js} +809 -908
  6. package/dist/chunks/BwgDownload-CF_Zo2oU.js.map +1 -0
  7. package/dist/chunks/BwgDownload-DvCaLWCL.cjs +3 -0
  8. package/dist/chunks/BwgDownload-DvCaLWCL.cjs.map +1 -0
  9. package/dist/chunks/SSOHandler-C7echUZs.cjs +236 -0
  10. package/dist/chunks/SSOHandler-C7echUZs.cjs.map +1 -0
  11. package/dist/chunks/{SSOHandler-yNjxYbHn.js → SSOHandler-Cr04mtMm.js} +10739 -8719
  12. package/dist/chunks/SSOHandler-Cr04mtMm.js.map +1 -0
  13. package/dist/chunks/{SearchBoxContext-CO1AyqH4.js → SearchBoxContext-C2ECWG9l.js} +7 -7
  14. package/dist/chunks/{SearchBoxContext-CO1AyqH4.js.map → SearchBoxContext-C2ECWG9l.js.map} +1 -1
  15. package/dist/chunks/{SearchBoxContext-Cinu3U4b.cjs → SearchBoxContext-aMXi2JmO.cjs} +2 -2
  16. package/dist/chunks/{SearchBoxContext-Cinu3U4b.cjs.map → SearchBoxContext-aMXi2JmO.cjs.map} +1 -1
  17. package/dist/chunks/{ViewContainer-BH7t9T4d.cjs → ViewContainer-DI7hvDi-.cjs} +2 -2
  18. package/dist/chunks/{ViewContainer-BH7t9T4d.cjs.map → ViewContainer-DI7hvDi-.cjs.map} +1 -1
  19. package/dist/chunks/{ViewContainer-CMbN_tYW.js → ViewContainer-DxhY26m3.js} +2 -2
  20. package/dist/chunks/{ViewContainer-CMbN_tYW.js.map → ViewContainer-DxhY26m3.js.map} +1 -1
  21. package/dist/chunks/apiUtils-BRaXRbjE.js +1428 -0
  22. package/dist/chunks/apiUtils-BRaXRbjE.js.map +1 -0
  23. package/dist/chunks/apiUtils-DL43X2ta.cjs +3 -0
  24. package/dist/chunks/apiUtils-DL43X2ta.cjs.map +1 -0
  25. package/dist/chunks/{codeStore-DTtOQhfW.cjs → codeStore-WWRT65Zk.cjs} +2 -2
  26. package/dist/chunks/{codeStore-DTtOQhfW.cjs.map → codeStore-WWRT65Zk.cjs.map} +1 -1
  27. package/dist/chunks/{codeStore-C0f5xZ_m.js → codeStore-kuUEfWSS.js} +2 -2
  28. package/dist/chunks/{codeStore-C0f5xZ_m.js.map → codeStore-kuUEfWSS.js.map} +1 -1
  29. package/dist/chunks/core-D7JhyoYH.cjs +2 -0
  30. package/dist/chunks/core-D7JhyoYH.cjs.map +1 -0
  31. package/dist/chunks/core-DLGhqegD.js +514 -0
  32. package/dist/chunks/core-DLGhqegD.js.map +1 -0
  33. package/dist/chunks/enc-base64-96WlVdPN.js +102 -0
  34. package/dist/chunks/enc-base64-96WlVdPN.js.map +1 -0
  35. package/dist/chunks/enc-base64-b9mIy966.cjs +2 -0
  36. package/dist/chunks/enc-base64-b9mIy966.cjs.map +1 -0
  37. package/dist/chunks/favoriteStore-D40XfOmq.js +439 -0
  38. package/dist/chunks/favoriteStore-D40XfOmq.js.map +1 -0
  39. package/dist/chunks/favoriteStore-DdGoghEn.cjs +2 -0
  40. package/dist/chunks/favoriteStore-DdGoghEn.cjs.map +1 -0
  41. package/dist/chunks/{popupStore-DGMxbQ--.cjs → popupStore-DKpp0bmC.cjs} +2 -2
  42. package/dist/chunks/{popupStore-DGMxbQ--.cjs.map → popupStore-DKpp0bmC.cjs.map} +1 -1
  43. package/dist/chunks/{popupStore-D1rxKTyJ.js → popupStore-axohgTV-.js} +2 -2
  44. package/dist/chunks/{popupStore-D1rxKTyJ.js.map → popupStore-axohgTV-.js.map} +1 -1
  45. package/dist/chunks/sha256-BMg1y0Py.js +79 -0
  46. package/dist/chunks/sha256-BMg1y0Py.js.map +1 -0
  47. package/dist/chunks/sha256-BxdSMFca.cjs +2 -0
  48. package/dist/chunks/sha256-BxdSMFca.cjs.map +1 -0
  49. package/dist/chunks/{usePopup-CdpFYf3m.cjs → usePopup-DYnRe9Th.cjs} +2 -2
  50. package/dist/chunks/{usePopup-CdpFYf3m.cjs.map → usePopup-DYnRe9Th.cjs.map} +1 -1
  51. package/dist/chunks/{usePopup-C1h8V04_.js → usePopup-Dftb7Bbl.js} +3 -3
  52. package/dist/chunks/{usePopup-C1h8V04_.js.map → usePopup-Dftb7Bbl.js.map} +1 -1
  53. package/dist/components/common/BookmarkMngModal.d.ts +16 -0
  54. package/dist/components/common/BookmarkMngModal.d.ts.map +1 -0
  55. package/dist/components/common/BookmarkPopver.d.ts +7 -0
  56. package/dist/components/common/BookmarkPopver.d.ts.map +1 -0
  57. package/dist/components/common/BwgDraggable.d.ts +25 -0
  58. package/dist/components/common/BwgDraggable.d.ts.map +1 -0
  59. package/dist/components/common/BwgEditor.d.ts +4 -0
  60. package/dist/components/common/BwgEditor.d.ts.map +1 -1
  61. package/dist/components/common/BwgGrid.d.ts +15 -3
  62. package/dist/components/common/BwgGrid.d.ts.map +1 -1
  63. package/dist/components/common/BwgPagination.d.ts +13 -0
  64. package/dist/components/common/BwgPagination.d.ts.map +1 -0
  65. package/dist/components/common/BwgView.d.ts.map +1 -1
  66. package/dist/components/common/SearchBox.d.ts.map +1 -1
  67. package/dist/components/common/index.cjs +1 -1
  68. package/dist/components/common/index.js +1 -1
  69. package/dist/components/core/BwgDownload.d.ts +33 -0
  70. package/dist/components/core/BwgDownload.d.ts.map +1 -0
  71. package/dist/components/core/index.cjs +1 -1
  72. package/dist/components/core/index.d.ts +2 -0
  73. package/dist/components/core/index.d.ts.map +1 -1
  74. package/dist/components/core/index.js +21 -19
  75. package/dist/components/core/index.js.map +1 -1
  76. package/dist/components/layout/index.cjs +1 -1
  77. package/dist/components/layout/index.js +1 -1
  78. package/dist/components/popup/MenuReport.d.ts +8 -0
  79. package/dist/components/popup/MenuReport.d.ts.map +1 -0
  80. package/dist/index.cjs +1 -1
  81. package/dist/index.js +184 -181
  82. package/dist/index.js.map +1 -1
  83. package/dist/provider/index.cjs +1 -1
  84. package/dist/provider/index.js +2 -2
  85. package/dist/stores/favoriteStore.d.ts +81 -17
  86. package/dist/stores/favoriteStore.d.ts.map +1 -1
  87. package/dist/stores/index.cjs +1 -1
  88. package/dist/stores/index.d.ts +1 -1
  89. package/dist/stores/index.d.ts.map +1 -1
  90. package/dist/stores/index.js +6 -6
  91. package/dist/styles/assets/images/header/icon/ico-bell.svg +3 -3
  92. package/dist/styles/assets/images/header/icon/ico-logout.svg +10 -10
  93. package/dist/styles/assets/images/header/icon/ico-setting.svg +4 -4
  94. package/dist/styles/assets/images/header/icon/ico-sidebar-arrow.svg +3 -3
  95. package/dist/utils/apiUtils.d.ts +8 -0
  96. package/dist/utils/apiUtils.d.ts.map +1 -1
  97. package/dist/utils/commonUtils.d.ts.map +1 -1
  98. package/dist/utils/index.cjs +1 -1
  99. package/dist/utils/index.cjs.map +1 -1
  100. package/dist/utils/index.d.ts +1 -0
  101. package/dist/utils/index.d.ts.map +1 -1
  102. package/dist/utils/index.js +89 -88
  103. package/dist/utils/index.js.map +1 -1
  104. package/package.json +2 -1
  105. package/dist/chunks/BwgLargeUploader-D6plJv5D.js.map +0 -1
  106. package/dist/chunks/BwgLargeUploader-LMj6KXhK.cjs +0 -3
  107. package/dist/chunks/BwgLargeUploader-LMj6KXhK.cjs.map +0 -1
  108. package/dist/chunks/SSOHandler-DXnV_f_M.cjs +0 -236
  109. package/dist/chunks/SSOHandler-DXnV_f_M.cjs.map +0 -1
  110. package/dist/chunks/SSOHandler-yNjxYbHn.js.map +0 -1
  111. package/dist/chunks/apiUtils-BJRcT3Tm.js +0 -1315
  112. package/dist/chunks/apiUtils-BJRcT3Tm.js.map +0 -1
  113. package/dist/chunks/apiUtils-DEnQeWNI.cjs +0 -3
  114. package/dist/chunks/apiUtils-DEnQeWNI.cjs.map +0 -1
  115. package/dist/chunks/favoriteStore-Drhx0843.js +0 -111
  116. package/dist/chunks/favoriteStore-Drhx0843.js.map +0 -1
  117. package/dist/chunks/favoriteStore-Dyp89Kew.cjs +0 -2
  118. package/dist/chunks/favoriteStore-Dyp89Kew.cjs.map +0 -1
@@ -0,0 +1,1428 @@
1
+ import re from "axios";
2
+ import E from "dayjs";
3
+ import { message as X, notification as $ } from "antd";
4
+ import { create as B } from "zustand";
5
+ var _r = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
6
+ function ne(e) {
7
+ return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
8
+ }
9
+ function Ir(e) {
10
+ if (Object.prototype.hasOwnProperty.call(e, "__esModule")) return e;
11
+ var r = e.default;
12
+ if (typeof r == "function") {
13
+ var t = function n() {
14
+ var s = !1;
15
+ try {
16
+ s = this instanceof n;
17
+ } catch {
18
+ }
19
+ return s ? Reflect.construct(r, arguments, this.constructor) : r.apply(this, arguments);
20
+ };
21
+ t.prototype = r.prototype;
22
+ } else t = {};
23
+ return Object.defineProperty(t, "__esModule", { value: !0 }), Object.keys(e).forEach(function(n) {
24
+ var s = Object.getOwnPropertyDescriptor(e, n);
25
+ Object.defineProperty(t, n, s.get ? s : {
26
+ enumerable: !0,
27
+ get: function() {
28
+ return e[n];
29
+ }
30
+ });
31
+ }), t;
32
+ }
33
+ const me = {
34
+ // 권한 관련
35
+ AUTH_BTNS: "SCMSIGN00202",
36
+ // 버튼 권한 조회
37
+ AUTH_MENU: "SCMSIGN00201",
38
+ // 메뉴 권한 조회
39
+ SRCH_CODE: "SCMSIGN00301",
40
+ // 코드 조회
41
+ // 팝업 관련
42
+ SRCH_POPU: "SCMPOPU00101",
43
+ // 팝업 조회
44
+ // 즐겨찾기 관련
45
+ AUTH_BMRK: "SCMBMRK00101"
46
+ // 즐겨찾기 관리
47
+ };
48
+ let k = {};
49
+ function Ee(e) {
50
+ k = e, console.log("🔧 Provider 서비스코드 오버라이드 설정:", e);
51
+ }
52
+ function se(e) {
53
+ return k[e] && k[e].trim() !== "" ? k[e] : me[e];
54
+ }
55
+ function he() {
56
+ const e = {};
57
+ for (const r of Object.keys(me))
58
+ e[r] = se(r);
59
+ return e;
60
+ }
61
+ function Le() {
62
+ console.log("🔧 bwg-core 서비스코드 설정:"), console.log("📋 Provider 설정 > 기본값 순서로 확인");
63
+ const e = he();
64
+ for (const [r, t] of Object.entries(e)) {
65
+ const n = k[r] ? "Provider 설정" : "기본값";
66
+ console.log(` ${r}: ${t} (${n})`);
67
+ }
68
+ }
69
+ const Cr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
70
+ __proto__: null,
71
+ getAllServiceCodes: he,
72
+ getServiceCode: se,
73
+ logServiceCodeConfig: Le,
74
+ setServiceCodeOverrides: Ee
75
+ }, Symbol.toStringTag, { value: "Module" }));
76
+ import.meta.env.DEV;
77
+ function Ue(e, r) {
78
+ let t;
79
+ try {
80
+ t = e();
81
+ } catch {
82
+ return;
83
+ }
84
+ return {
85
+ getItem: (s) => {
86
+ var a;
87
+ const i = (d) => d === null ? null : JSON.parse(d, void 0), m = (a = t.getItem(s)) != null ? a : null;
88
+ return m instanceof Promise ? m.then(i) : i(m);
89
+ },
90
+ setItem: (s, a) => t.setItem(s, JSON.stringify(a, void 0)),
91
+ removeItem: (s) => t.removeItem(s)
92
+ };
93
+ }
94
+ const Q = (e) => (r) => {
95
+ try {
96
+ const t = e(r);
97
+ return t instanceof Promise ? t : {
98
+ then(n) {
99
+ return Q(n)(t);
100
+ },
101
+ catch(n) {
102
+ return this;
103
+ }
104
+ };
105
+ } catch (t) {
106
+ return {
107
+ then(n) {
108
+ return this;
109
+ },
110
+ catch(n) {
111
+ return Q(n)(t);
112
+ }
113
+ };
114
+ }
115
+ }, Ae = (e, r) => (t, n, s) => {
116
+ let a = {
117
+ storage: Ue(() => localStorage),
118
+ partialize: (o) => o,
119
+ version: 0,
120
+ merge: (o, f) => ({
121
+ ...f,
122
+ ...o
123
+ }),
124
+ ...r
125
+ }, i = !1;
126
+ const m = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Set();
127
+ let v = a.storage;
128
+ if (!v)
129
+ return e(
130
+ (...o) => {
131
+ console.warn(
132
+ `[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`
133
+ ), t(...o);
134
+ },
135
+ n,
136
+ s
137
+ );
138
+ const g = () => {
139
+ const o = a.partialize({ ...n() });
140
+ return v.setItem(a.name, {
141
+ state: o,
142
+ version: a.version
143
+ });
144
+ }, p = s.setState;
145
+ s.setState = (o, f) => (p(o, f), g());
146
+ const c = e(
147
+ (...o) => (t(...o), g()),
148
+ n,
149
+ s
150
+ );
151
+ s.getInitialState = () => c;
152
+ let u;
153
+ const l = () => {
154
+ var o, f;
155
+ if (!v) return;
156
+ i = !1, m.forEach((h) => {
157
+ var y;
158
+ return h((y = n()) != null ? y : c);
159
+ });
160
+ const M = ((f = a.onRehydrateStorage) == null ? void 0 : f.call(a, (o = n()) != null ? o : c)) || void 0;
161
+ return Q(v.getItem.bind(v))(a.name).then((h) => {
162
+ if (h)
163
+ if (typeof h.version == "number" && h.version !== a.version) {
164
+ if (a.migrate) {
165
+ const y = a.migrate(
166
+ h.state,
167
+ h.version
168
+ );
169
+ return y instanceof Promise ? y.then((w) => [!0, w]) : [!0, y];
170
+ }
171
+ console.error(
172
+ "State loaded from storage couldn't be migrated since no migrate function was provided"
173
+ );
174
+ } else
175
+ return [!1, h.state];
176
+ return [!1, void 0];
177
+ }).then((h) => {
178
+ var y;
179
+ const [w, S] = h;
180
+ if (u = a.merge(
181
+ S,
182
+ (y = n()) != null ? y : c
183
+ ), t(u, !0), w)
184
+ return g();
185
+ }).then(() => {
186
+ M?.(u, void 0), u = n(), i = !0, d.forEach((h) => h(u));
187
+ }).catch((h) => {
188
+ M?.(void 0, h);
189
+ });
190
+ };
191
+ return s.persist = {
192
+ setOptions: (o) => {
193
+ a = {
194
+ ...a,
195
+ ...o
196
+ }, o.storage && (v = o.storage);
197
+ },
198
+ clearStorage: () => {
199
+ v?.removeItem(a.name);
200
+ },
201
+ getOptions: () => a,
202
+ rehydrate: () => l(),
203
+ hasHydrated: () => i,
204
+ onHydrate: (o) => (m.add(o), () => {
205
+ m.delete(o);
206
+ }),
207
+ onFinishHydration: (o) => (d.add(o), () => {
208
+ d.delete(o);
209
+ })
210
+ }, a.skipHydration || l(), u || c;
211
+ }, ke = Ae, D = B()(
212
+ ke(
213
+ (e, r) => ({
214
+ user: null,
215
+ isLoggedIn: !1,
216
+ // 로그인
217
+ login: (t) => {
218
+ e({ user: t, isLoggedIn: !0 }), console.log("사용자 로그인:", t);
219
+ },
220
+ // 로그아웃
221
+ logout: () => {
222
+ e({ user: null, isLoggedIn: !1 }), console.log("사용자 로그아웃");
223
+ },
224
+ // 사용자 정보 업데이트
225
+ updateUser: (t) => {
226
+ const n = r().user;
227
+ n && e({ user: { ...n, ...t } });
228
+ }
229
+ }),
230
+ {
231
+ name: "user-storage",
232
+ // 로컬 스토리지 키
233
+ partialize: (e) => ({
234
+ user: e.user,
235
+ isLoggedIn: e.isLoggedIn
236
+ })
237
+ // 저장할 상태만 선택
238
+ }
239
+ )
240
+ ), Ye = () => D.getState().user?.crprCd || null, ge = () => D.getState().user?.userId || null, pe = () => D.getState().user?.userNm || null, Fe = () => D.getState().user?.userDvsn || null, je = () => D.getState().user?.emplNo || null, ye = () => D.getState().user?.dprtCd || null, ve = () => D.getState().user?.dprtNm || null, q = () => D.getState().user?.roleList || null, Re = (e) => {
241
+ const r = q();
242
+ return r ? r.includes(e) : !1;
243
+ }, He = (e) => {
244
+ const r = q();
245
+ return r ? e.some((t) => r.includes(t)) : !1;
246
+ }, ze = (e) => {
247
+ const r = q();
248
+ return r ? e.every((t) => r.includes(t)) : !1;
249
+ }, Be = () => D.getState().isLoggedIn, W = () => D.getState().user, qe = () => W() !== null, We = () => {
250
+ const e = pe(), r = ge();
251
+ return e || r || null;
252
+ }, Ge = () => {
253
+ const e = ve(), r = ye();
254
+ return e || (r ? String(r) : null);
255
+ }, br = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
256
+ __proto__: null,
257
+ getCrprCd: Ye,
258
+ getDepartmentInfo: Ge,
259
+ getDisplayName: We,
260
+ getDprtCd: ye,
261
+ getDprtNm: ve,
262
+ getEmplNo: je,
263
+ getRoleList: q,
264
+ getUserDvsn: Fe,
265
+ getUserId: ge,
266
+ getUserInfo: W,
267
+ getUserNm: pe,
268
+ hasAllRoles: ze,
269
+ hasAnyRole: He,
270
+ hasRole: Re,
271
+ hasUserInfo: qe,
272
+ isLoggedIn: Be
273
+ }, Symbol.toStringTag, { value: "Module" })), ee = {
274
+ DEFAULT_PRNT_GBCD: 1
275
+ }, Ke = (e) => e && typeof e == "object" && typeof e.menuId == "string" && typeof e.menuNm == "string" && typeof e.crprCd == "string", ie = (e) => Array.isArray(e) && e.every(Ke);
276
+ let Z = [], ce = [];
277
+ const Je = (e) => {
278
+ if (e && typeof e == "object") {
279
+ const r = e;
280
+ if (r.menus && ie(r.menus)) return r.menus;
281
+ if (ie(e)) return e;
282
+ }
283
+ return console.warn("⚠️ 메뉴 응답이 비어있거나 예상과 다릅니다."), [];
284
+ }, Xe = (e, r) => !!r && e.crprCd === r.crprCd && e.userId === r.userId && (e.prntGbcd ?? ee.DEFAULT_PRNT_GBCD) === (r.prntGbcd ?? ee.DEFAULT_PRNT_GBCD), Ze = (e) => {
285
+ if (Z.length === e.length && Z.every(
286
+ (a, i) => a.menuId === e[i]?.menuId && a.menuPrntId === e[i]?.menuPrntId
287
+ ))
288
+ return ce;
289
+ if (!e.length) return [];
290
+ const r = /* @__PURE__ */ new Map(), t = [];
291
+ e.forEach((a) => a?.menuId && r.set(a.menuId, { ...a, children: [] })), e.forEach((a) => {
292
+ const i = r.get(a.menuId);
293
+ i && (a.menuPrntId && a.menuPrntId !== "" && a.menuPrntId !== "-" ? r.get(a.menuPrntId)?.children?.push(i) : t.push(i));
294
+ });
295
+ const n = (a) => a.sort((i, m) => (i?.menuNo ?? 0) - (m?.menuNo ?? 0)).map((i) => ({
296
+ ...i,
297
+ children: i.children && i.children.length ? n(i.children) : void 0
298
+ })), s = n(t);
299
+ return Z = [...e], ce = s, s;
300
+ }, Ve = B((e, r) => ({
301
+ // 📊 초기 상태값
302
+ menuList: [],
303
+ flatMenuList: [],
304
+ isLoading: !1,
305
+ error: null,
306
+ _lastFetchParams: null,
307
+ // 🔧 메뉴 모델 조회
308
+ // 서버에서 사용자별 메뉴 권한 데이터를 가져와서 트리/플랫 구조로 저장
309
+ fetchMenu: async ({ crprCd: t, userId: n, prntGbcd: s }) => {
310
+ const a = {
311
+ crprCd: t,
312
+ userId: n,
313
+ prntGbcd: s ?? ee.DEFAULT_PRNT_GBCD
314
+ };
315
+ if (Xe(a, r()._lastFetchParams)) {
316
+ console.log("✅ 중복 fetch 차단", a);
317
+ return;
318
+ }
319
+ e({ isLoading: !0, error: null, _lastFetchParams: a });
320
+ try {
321
+ const i = await L(se("AUTH_MENU"), a), m = Je(i), d = Ze(m);
322
+ e({
323
+ flatMenuList: m,
324
+ // 평면 리스트 저장
325
+ menuList: d,
326
+ // 트리 구조 저장
327
+ isLoading: !1,
328
+ error: null
329
+ });
330
+ } catch (i) {
331
+ e({ isLoading: !1, error: i?.message ?? "메뉴 로드 실패" });
332
+ }
333
+ },
334
+ // 🔧 메뉴 모델 초기화
335
+ // 로그아웃 시나 사용자 변경 시 메뉴 모델 클리어
336
+ clearMenu: () => {
337
+ e({
338
+ menuList: [],
339
+ flatMenuList: [],
340
+ error: null,
341
+ _lastFetchParams: null
342
+ });
343
+ },
344
+ // 🔧 메뉴 ID로 메뉴 아이템 찾기
345
+ // URL 파라미터나 프로그래밍 방식으로 특정 메뉴를 찾을 때 사용
346
+ findMenuById: (t) => {
347
+ const { flatMenuList: n } = r();
348
+ return n.find((s) => s.menuId === t) ?? null;
349
+ }
350
+ })), V = {
351
+ MAX_TABS: 15
352
+ }, Me = B((e, r) => ({
353
+ // 📊 초기 상태값
354
+ activeMenuId: null,
355
+ activeMenuItem: null,
356
+ activeDetailItem: null,
357
+ tabs: [],
358
+ sidebarCollapsed: !1,
359
+ maxTabs: V.MAX_TABS,
360
+ tabProtectFlag: {},
361
+ tabParams: {},
362
+ componentLabelMap: {},
363
+ // 🔧 탭 추가 (메뉴 아이템 객체로)
364
+ // 사이드바에서 메뉴 클릭 시 호출되는 메인 함수
365
+ openTabFromMenu: (t, n) => {
366
+ const { tabs: s, activeMenuId: a } = r(), i = s.find((d) => d.key === t.menuId), m = s.find((d) => d.key === t.menuId);
367
+ if (i)
368
+ m != null ? (e({ activeMenuId: t.menuId, activeMenuItem: t }), r().setTabParams(t.menuId, n || {}), t?.prsnInfoYn === "Y" && r().setProtectFlagForKey(t.menuId)) : X.warning("유효하지 않은 메뉴정보입니다.");
369
+ else {
370
+ if (s.length > V.MAX_TABS) {
371
+ console.warn("❌ 최대 탭 개수를 초과했습니다."), X.warning(
372
+ `최대 ${V.MAX_TABS}개의 탭만 열 수 있습니다.
373
+ 기존 탭을 닫고 다시 시도해주세요.`
374
+ );
375
+ return;
376
+ }
377
+ const d = {
378
+ key: t.menuId,
379
+ label: t.menuNm,
380
+ gubun: "M",
381
+ menuItem: t,
382
+ closable: !0
383
+ };
384
+ e({
385
+ tabs: [...s, d],
386
+ // 탭 목록에 추가
387
+ activeMenuId: t.menuId,
388
+ // 새 탭을 활성화
389
+ activeMenuItem: t
390
+ // 현재 프로그램으로 설정
391
+ }), r().setTabParams(t.menuId, n || {}), t?.prsnInfoYn === "Y" && r().setProtectFlagForKey(t.menuId);
392
+ }
393
+ },
394
+ // 🔧 탭 추가 (메뉴 ID로)
395
+ // URL 파라미터로 메뉴 열기 시 사용 (예: ?menuId=CM000301)
396
+ openTabByMenuId: (t, n) => {
397
+ const s = Ve.getState().findMenuById(t);
398
+ s ? r().openTabFromMenu(s, n) : X.warning("메뉴 ID를 찾을 수 없습니다.");
399
+ },
400
+ openDetailView: (t, n, s) => {
401
+ const { tabs: a, activeMenuId: i } = r();
402
+ if (a.find((d) => d.key === t.viewId))
403
+ r().focusTab(t.viewId);
404
+ else {
405
+ const d = {
406
+ key: t.viewId,
407
+ label: t.viewLabel,
408
+ gubun: "C",
409
+ componentItem: {
410
+ scrnPath: n,
411
+ prsnInfoYn: s,
412
+ prntInfo: t.prntInfo
413
+ },
414
+ closable: !0
415
+ };
416
+ e({
417
+ tabs: [...a, d],
418
+ // 탭 목록에 추가
419
+ activeMenuId: t.viewId,
420
+ // 새 탭을 활성화
421
+ activeDetailItem: t
422
+ }), r().setTabParams(t.viewId, t.viewParams || {});
423
+ }
424
+ },
425
+ // 🔧 탭 제거
426
+ // X 버튼 클릭 시 탭을 닫고 관련 상태도 정리
427
+ closeTab: (t) => {
428
+ const { tabs: n, activeMenuId: s } = r();
429
+ n.find((m) => m.key === t);
430
+ const a = n.filter((m) => m.key !== t);
431
+ let i = s;
432
+ if (s === t) {
433
+ const m = n.findIndex((d) => d.key === t);
434
+ i = a.length ? a[Math.min(m, a.length - 1)]?.key ?? null : null;
435
+ }
436
+ e({
437
+ tabs: a
438
+ }), i && r().focusTab(i);
439
+ },
440
+ // 🔧 활성 탭 변경
441
+ // 탭 헤더 클릭 시 해당 탭으로 전환
442
+ focusTab: (t) => {
443
+ const { tabs: n } = r(), s = n.find((a) => a.key === t);
444
+ if (s) {
445
+ const a = s.gubun === "C" ? {
446
+ viewId: s.key,
447
+ viewLabel: s.label,
448
+ prntInfo: s.componentItem?.prntInfo
449
+ } : null;
450
+ s.menuItem?.prsnInfoYn === "Y" ? (e({
451
+ activeMenuId: t,
452
+ activeMenuItem: s.menuItem,
453
+ activeDetailItem: a
454
+ }), console.log(
455
+ "✅ 탭 포커스 (개인정보) - activeMenuItem:",
456
+ s.menuItem
457
+ ), r().setProtectFlagForKey(t)) : (e({
458
+ activeMenuId: t,
459
+ activeMenuItem: s.menuItem,
460
+ activeDetailItem: a
461
+ }), r().clearProtectFlagForKey(t));
462
+ } else
463
+ e({ activeMenuId: t, activeMenuItem: null, activeDetailItem: null }), console.warn("❌ 탭을 찾을 수 없음:", t);
464
+ },
465
+ // 🔧 모든 탭 제거
466
+ // 로그아웃이나 전체 초기화 시 사용
467
+ closeAllTabs: () => e({ tabs: [], activeMenuId: null, activeMenuItem: null, activeDetailItem: null }),
468
+ // 🔧 사이드바 토글
469
+ // 햄버거 메뉴 클릭 시 사이드바 접기/펼치기
470
+ toggleSidebar: () => e((t) => ({ sidebarCollapsed: !t.sidebarCollapsed })),
471
+ // useMenuViewStore.ts
472
+ reorderTabs: (t) => e((n) => {
473
+ const s = new Map(n.tabs.map((a) => [a.key, a]));
474
+ return { tabs: t.map((a) => s.get(a)).filter(Boolean) };
475
+ }),
476
+ // 개인정보 포함여부에 따른 탭 잠금 Flag 설정
477
+ setProtectFlagForKey: (t) => e((n) => ({
478
+ tabProtectFlag: { ...n.tabProtectFlag, [t]: !0 }
479
+ })),
480
+ // 개인정보 포함여부에 따른 탭 잠금 해제
481
+ clearProtectFlagForKey: (t) => e((n) => {
482
+ const s = { ...n.tabProtectFlag };
483
+ return delete s[t], { tabProtectFlag: s };
484
+ }),
485
+ // 탭 파라미터 설정
486
+ setTabParams: (t, n) => e((s) => {
487
+ const a = s.tabParams[t] || {}, i = { ...n || {} };
488
+ return Object.keys(a).length === Object.keys(i).length && Object.keys(i).every((d) => a[d] === i[d]) ? s : {
489
+ tabParams: { ...s.tabParams, [t]: i }
490
+ };
491
+ }),
492
+ // 컴포넌트 라벨 맵 설정
493
+ setComponentLabelMap: (t, n) => e({ componentLabelMap: t })
494
+ })), te = B((e) => ({
495
+ requestCount: 0,
496
+ loading: !1,
497
+ showLoading: () => e((r) => {
498
+ const t = r.requestCount + 1;
499
+ return { requestCount: t, loading: t > 0 };
500
+ }),
501
+ hideLoading: () => e((r) => {
502
+ const t = Math.max(0, r.requestCount - 1);
503
+ return { requestCount: t, loading: t > 0 };
504
+ })
505
+ }));
506
+ var F = { exports: {} }, Qe = F.exports, ue;
507
+ function et() {
508
+ return ue || (ue = 1, (function(e, r) {
509
+ (function(t, n) {
510
+ e.exports = n(E);
511
+ })(Qe, (function(t) {
512
+ function n(i) {
513
+ return i && typeof i == "object" && "default" in i ? i : { default: i };
514
+ }
515
+ var s = n(t), a = { name: "ko", weekdays: "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"), weekdaysShort: "일_월_화_수_목_금_토".split("_"), weekdaysMin: "일_월_화_수_목_금_토".split("_"), months: "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), monthsShort: "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), ordinal: function(i) {
516
+ return i + "일";
517
+ }, formats: { LT: "A h:mm", LTS: "A h:mm:ss", L: "YYYY.MM.DD.", LL: "YYYY년 MMMM D일", LLL: "YYYY년 MMMM D일 A h:mm", LLLL: "YYYY년 MMMM D일 dddd A h:mm", l: "YYYY.MM.DD.", ll: "YYYY년 MMMM D일", lll: "YYYY년 MMMM D일 A h:mm", llll: "YYYY년 MMMM D일 dddd A h:mm" }, meridiem: function(i) {
518
+ return i < 12 ? "오전" : "오후";
519
+ }, relativeTime: { future: "%s 후", past: "%s 전", s: "몇 초", m: "1분", mm: "%d분", h: "한 시간", hh: "%d시간", d: "하루", dd: "%d일", M: "한 달", MM: "%d달", y: "일 년", yy: "%d년" } };
520
+ return s.default.locale(a, null, !0), a;
521
+ }));
522
+ })(F)), F.exports;
523
+ }
524
+ et();
525
+ var j = { exports: {} }, tt = j.exports, le;
526
+ function rt() {
527
+ return le || (le = 1, (function(e, r) {
528
+ (function(t, n) {
529
+ e.exports = n();
530
+ })(tt, (function() {
531
+ return function(t, n, s) {
532
+ t = t || {};
533
+ var a = n.prototype, i = { future: "in %s", past: "%s ago", s: "a few seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" };
534
+ function m(v, g, p, c) {
535
+ return a.fromToBase(v, g, p, c);
536
+ }
537
+ s.en.relativeTime = i, a.fromToBase = function(v, g, p, c, u) {
538
+ for (var l, o, f, M = p.$locale().relativeTime || i, h = t.thresholds || [{ l: "s", r: 44, d: "second" }, { l: "m", r: 89 }, { l: "mm", r: 44, d: "minute" }, { l: "h", r: 89 }, { l: "hh", r: 21, d: "hour" }, { l: "d", r: 35 }, { l: "dd", r: 25, d: "day" }, { l: "M", r: 45 }, { l: "MM", r: 10, d: "month" }, { l: "y", r: 17 }, { l: "yy", d: "year" }], y = h.length, w = 0; w < y; w += 1) {
539
+ var S = h[w];
540
+ S.d && (l = c ? s(v).diff(p, S.d, !0) : p.diff(v, S.d, !0));
541
+ var _ = (t.rounding || Math.round)(Math.abs(l));
542
+ if (f = l > 0, _ <= S.r || !S.r) {
543
+ _ <= 1 && w > 0 && (S = h[w - 1]);
544
+ var I = M[S.l];
545
+ u && (_ = u("" + _)), o = typeof I == "string" ? I.replace("%d", _) : I(_, g, S.l, f);
546
+ break;
547
+ }
548
+ }
549
+ if (g) return o;
550
+ var C = f ? M.future : M.past;
551
+ return typeof C == "function" ? C(o) : C.replace("%s", o);
552
+ }, a.to = function(v, g) {
553
+ return m(v, g, this, !0);
554
+ }, a.from = function(v, g) {
555
+ return m(v, g, this);
556
+ };
557
+ var d = function(v) {
558
+ return v.$u ? s.utc() : s();
559
+ };
560
+ a.toNow = function(v) {
561
+ return this.to(d(this), v);
562
+ }, a.fromNow = function(v) {
563
+ return this.from(d(this), v);
564
+ };
565
+ };
566
+ }));
567
+ })(j)), j.exports;
568
+ }
569
+ var nt = rt();
570
+ const st = /* @__PURE__ */ ne(nt);
571
+ var R = { exports: {} }, ot = R.exports, de;
572
+ function at() {
573
+ return de || (de = 1, (function(e, r) {
574
+ (function(t, n) {
575
+ e.exports = n();
576
+ })(ot, (function() {
577
+ var t = { year: 0, month: 1, day: 2, hour: 3, minute: 4, second: 5 }, n = {};
578
+ return function(s, a, i) {
579
+ var m, d = function(c, u, l) {
580
+ l === void 0 && (l = {});
581
+ var o = new Date(c), f = (function(M, h) {
582
+ h === void 0 && (h = {});
583
+ var y = h.timeZoneName || "short", w = M + "|" + y, S = n[w];
584
+ return S || (S = new Intl.DateTimeFormat("en-US", { hour12: !1, timeZone: M, year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit", timeZoneName: y }), n[w] = S), S;
585
+ })(u, l);
586
+ return f.formatToParts(o);
587
+ }, v = function(c, u) {
588
+ for (var l = d(c, u), o = [], f = 0; f < l.length; f += 1) {
589
+ var M = l[f], h = M.type, y = M.value, w = t[h];
590
+ w >= 0 && (o[w] = parseInt(y, 10));
591
+ }
592
+ var S = o[3], _ = S === 24 ? 0 : S, I = o[0] + "-" + o[1] + "-" + o[2] + " " + _ + ":" + o[4] + ":" + o[5] + ":000", C = +c;
593
+ return (i.utc(I).valueOf() - (C -= C % 1e3)) / 6e4;
594
+ }, g = a.prototype;
595
+ g.tz = function(c, u) {
596
+ c === void 0 && (c = m);
597
+ var l, o = this.utcOffset(), f = this.toDate(), M = f.toLocaleString("en-US", { timeZone: c }), h = Math.round((f - new Date(M)) / 1e3 / 60), y = 15 * -Math.round(f.getTimezoneOffset() / 15) - h;
598
+ if (!Number(y)) l = this.utcOffset(0, u);
599
+ else if (l = i(M, { locale: this.$L }).$set("millisecond", this.$ms).utcOffset(y, !0), u) {
600
+ var w = l.utcOffset();
601
+ l = l.add(o - w, "minute");
602
+ }
603
+ return l.$x.$timezone = c, l;
604
+ }, g.offsetName = function(c) {
605
+ var u = this.$x.$timezone || i.tz.guess(), l = d(this.valueOf(), u, { timeZoneName: c }).find((function(o) {
606
+ return o.type.toLowerCase() === "timezonename";
607
+ }));
608
+ return l && l.value;
609
+ };
610
+ var p = g.startOf;
611
+ g.startOf = function(c, u) {
612
+ if (!this.$x || !this.$x.$timezone) return p.call(this, c, u);
613
+ var l = i(this.format("YYYY-MM-DD HH:mm:ss:SSS"), { locale: this.$L });
614
+ return p.call(l, c, u).tz(this.$x.$timezone, !0);
615
+ }, i.tz = function(c, u, l) {
616
+ var o = l && u, f = l || u || m, M = v(+i(), f);
617
+ if (typeof c != "string") return i(c).tz(f);
618
+ var h = (function(_, I, C) {
619
+ var O = _ - 60 * I * 1e3, U = v(O, C);
620
+ if (I === U) return [O, I];
621
+ var J = v(O -= 60 * (U - I) * 1e3, C);
622
+ return U === J ? [O, U] : [_ - 60 * Math.min(U, J) * 1e3, Math.max(U, J)];
623
+ })(i.utc(c, o).valueOf(), M, f), y = h[0], w = h[1], S = i(y).utcOffset(w);
624
+ return S.$x.$timezone = f, S;
625
+ }, i.tz.guess = function() {
626
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
627
+ }, i.tz.setDefault = function(c) {
628
+ m = c;
629
+ };
630
+ };
631
+ }));
632
+ })(R)), R.exports;
633
+ }
634
+ var it = at();
635
+ const ct = /* @__PURE__ */ ne(it);
636
+ var H = { exports: {} }, ut = H.exports, fe;
637
+ function lt() {
638
+ return fe || (fe = 1, (function(e, r) {
639
+ (function(t, n) {
640
+ e.exports = n();
641
+ })(ut, (function() {
642
+ var t = "minute", n = /[+-]\d\d(?::?\d\d)?/g, s = /([+-]|\d\d)/g;
643
+ return function(a, i, m) {
644
+ var d = i.prototype;
645
+ m.utc = function(o) {
646
+ var f = { date: o, utc: !0, args: arguments };
647
+ return new i(f);
648
+ }, d.utc = function(o) {
649
+ var f = m(this.toDate(), { locale: this.$L, utc: !0 });
650
+ return o ? f.add(this.utcOffset(), t) : f;
651
+ }, d.local = function() {
652
+ return m(this.toDate(), { locale: this.$L, utc: !1 });
653
+ };
654
+ var v = d.parse;
655
+ d.parse = function(o) {
656
+ o.utc && (this.$u = !0), this.$utils().u(o.$offset) || (this.$offset = o.$offset), v.call(this, o);
657
+ };
658
+ var g = d.init;
659
+ d.init = function() {
660
+ if (this.$u) {
661
+ var o = this.$d;
662
+ this.$y = o.getUTCFullYear(), this.$M = o.getUTCMonth(), this.$D = o.getUTCDate(), this.$W = o.getUTCDay(), this.$H = o.getUTCHours(), this.$m = o.getUTCMinutes(), this.$s = o.getUTCSeconds(), this.$ms = o.getUTCMilliseconds();
663
+ } else g.call(this);
664
+ };
665
+ var p = d.utcOffset;
666
+ d.utcOffset = function(o, f) {
667
+ var M = this.$utils().u;
668
+ if (M(o)) return this.$u ? 0 : M(this.$offset) ? p.call(this) : this.$offset;
669
+ if (typeof o == "string" && (o = (function(S) {
670
+ S === void 0 && (S = "");
671
+ var _ = S.match(n);
672
+ if (!_) return null;
673
+ var I = ("" + _[0]).match(s) || ["-", 0, 0], C = I[0], O = 60 * +I[1] + +I[2];
674
+ return O === 0 ? 0 : C === "+" ? O : -O;
675
+ })(o), o === null)) return this;
676
+ var h = Math.abs(o) <= 16 ? 60 * o : o, y = this;
677
+ if (f) return y.$offset = h, y.$u = o === 0, y;
678
+ if (o !== 0) {
679
+ var w = this.$u ? this.toDate().getTimezoneOffset() : -1 * this.utcOffset();
680
+ (y = this.local().add(h + w, t)).$offset = h, y.$x.$localOffset = w;
681
+ } else y = this.utc();
682
+ return y;
683
+ };
684
+ var c = d.format;
685
+ d.format = function(o) {
686
+ var f = o || (this.$u ? "YYYY-MM-DDTHH:mm:ss[Z]" : "");
687
+ return c.call(this, f);
688
+ }, d.valueOf = function() {
689
+ var o = this.$utils().u(this.$offset) ? 0 : this.$offset + (this.$x.$localOffset || this.$d.getTimezoneOffset());
690
+ return this.$d.valueOf() - 6e4 * o;
691
+ }, d.isUTC = function() {
692
+ return !!this.$u;
693
+ }, d.toISOString = function() {
694
+ return this.toDate().toISOString();
695
+ }, d.toString = function() {
696
+ return this.toDate().toUTCString();
697
+ };
698
+ var u = d.toDate;
699
+ d.toDate = function(o) {
700
+ return o === "s" && this.$offset ? m(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate() : u.call(this);
701
+ };
702
+ var l = d.diff;
703
+ d.diff = function(o, f, M) {
704
+ if (o && this.$u === o.$u) return l.call(this, o, f, M);
705
+ var h = this.local(), y = m(o).local();
706
+ return l.call(h, y, f, M);
707
+ };
708
+ };
709
+ }));
710
+ })(H)), H.exports;
711
+ }
712
+ var dt = lt();
713
+ const ft = /* @__PURE__ */ ne(dt), mt = "ui_theme", ht = (e) => typeof e == "string", gt = (e) => typeof e == "number" && !isNaN(e), pt = (e) => typeof e == "boolean", yt = (e) => typeof e == "function", vt = (e) => e !== null && typeof e == "object", Mt = (e) => Array.isArray(e), St = (e) => e === null, wt = (e) => e === void 0, Tt = (e) => e == null, _t = (e, r) => {
714
+ let t = 0;
715
+ return (...n) => {
716
+ const s = Date.now();
717
+ s - t >= r && (t = s, e(...n));
718
+ };
719
+ }, It = (e, r) => {
720
+ let t;
721
+ return (...n) => {
722
+ clearTimeout(t), t = setTimeout(() => e(...n), r);
723
+ };
724
+ }, Ct = async (e) => {
725
+ try {
726
+ return await navigator.clipboard.writeText(e), !0;
727
+ } catch (r) {
728
+ return console.error("Error copying to clipboard:", r), !1;
729
+ }
730
+ }, G = () => {
731
+ const e = window.innerWidth;
732
+ return e < 768 ? "mobile" : e < 1024 ? "tablet" : "desktop";
733
+ }, bt = () => G() === "mobile", xt = () => G() === "tablet", Dt = () => G() === "desktop", Ot = () => "#" + Math.floor(Math.random() * 16777215).toString(16), K = (e) => !e || e.length === 0, Nt = (e) => [...new Set(e)], $t = (e) => {
734
+ if (!K(e))
735
+ return Math.max(...e);
736
+ }, Pt = (e) => {
737
+ if (!K(e))
738
+ return Math.min(...e);
739
+ }, Et = (e) => {
740
+ if (!K(e))
741
+ return e.reduce((r, t) => r + t, 0) / e.length;
742
+ }, Lt = (e) => e.reduce((r, t) => r + t, 0), Ut = (e, r) => e.filter(r).length, At = (e) => [...e].reverse(), kt = (e) => {
743
+ const r = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set();
744
+ return e.forEach((n) => {
745
+ r.has(n) ? t.add(n) : r.add(n);
746
+ }), Array.from(t);
747
+ }, Yt = (e, r) => Math.random() * (r - e) + e, Ft = (e, r, t) => Math.min(Math.max(e, r), t), jt = (e, r = 0) => Math.round(e * Math.pow(10, r)) / Math.pow(10, r), Rt = (e, r) => {
748
+ try {
749
+ sessionStorage.setItem(e, JSON.stringify(r));
750
+ } catch (t) {
751
+ console.error("Error saving to sessionStorage:", t);
752
+ }
753
+ }, Ht = (e, r) => {
754
+ try {
755
+ const t = sessionStorage.getItem(e);
756
+ return t ? JSON.parse(t) : r || null;
757
+ } catch (t) {
758
+ return console.error("Error reading from sessionStorage:", t), r || null;
759
+ }
760
+ }, zt = (e) => {
761
+ try {
762
+ sessionStorage.removeItem(e);
763
+ } catch (r) {
764
+ console.error("Error removing from sessionStorage:", r);
765
+ }
766
+ }, Bt = () => {
767
+ try {
768
+ sessionStorage.clear();
769
+ } catch (e) {
770
+ console.error("Error clearing sessionStorage:", e);
771
+ }
772
+ }, qt = (e, r, t = 30) => {
773
+ const n = /* @__PURE__ */ new Date();
774
+ n.setTime(n.getTime() + t * 24 * 60 * 60 * 1e3), document.cookie = `${e}=${r};expires=${n.toUTCString()};path=/`;
775
+ }, Wt = (e) => {
776
+ const r = e + "=", t = document.cookie.split(";");
777
+ for (let n = 0; n < t.length; n++) {
778
+ let s = t[n];
779
+ for (; s.charAt(0) === " "; ) s = s.substring(1, s.length);
780
+ if (s.indexOf(r) === 0) return s.substring(r.length, s.length);
781
+ }
782
+ return null;
783
+ }, Gt = (e) => {
784
+ document.cookie = `${e}=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/`;
785
+ }, Se = (e) => typeof e != "string" ? !e : e.trim().length === 0, Kt = (e, r) => Se(e) ? r : e || "", Jt = (e) => e.replace(/-([a-z])/g, (r) => r[1].toUpperCase()), Xt = (e) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e), Zt = (e) => {
786
+ try {
787
+ return new URL(e), !0;
788
+ } catch {
789
+ return !1;
790
+ }
791
+ }, Vt = (e, r, t = " ") => e.padStart(r, t), Qt = (e, r, t = " ") => e.padEnd(r, t), we = (e, r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") => {
792
+ let t = "";
793
+ for (let n = 0; n < e; n++)
794
+ t += r.charAt(Math.floor(Math.random() * r.length));
795
+ return t;
796
+ }, er = () => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {
797
+ const r = Math.random() * 16 | 0;
798
+ return (e === "x" ? r : r & 3 | 8).toString(16);
799
+ }), Te = (e = 32) => {
800
+ const t = er().replace(/-/g, "");
801
+ return e >= 32 ? t + we(e - 32, "0123456789abcdef") : t.substring(0, e);
802
+ };
803
+ async function tr(e) {
804
+ const [{ default: r }, { default: t }] = await Promise.all([
805
+ import("./sha256-BMg1y0Py.js").then((n) => n.s),
806
+ import("./enc-base64-96WlVdPN.js").then((n) => n.e)
807
+ ]);
808
+ return r(e).toString(t);
809
+ }
810
+ E.extend(st);
811
+ E.extend(ft);
812
+ E.extend(ct);
813
+ E.locale("ko");
814
+ const rr = () => E(), nr = (e = "YYYY-MM-DD") => E().format(e), xr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
815
+ __proto__: null,
816
+ THEME_COOKIE_NAME: mt,
817
+ arrAverage: Et,
818
+ arrCount: Ut,
819
+ arrMax: $t,
820
+ arrMin: Pt,
821
+ arrReverse: At,
822
+ arrSum: Lt,
823
+ arrUnique: Nt,
824
+ clamp: Ft,
825
+ clearSessionStorage: Bt,
826
+ copyToClipboard: Ct,
827
+ debounce: It,
828
+ deleteCookie: Gt,
829
+ duplicates: kt,
830
+ encryptSha256: tr,
831
+ generateRandomColor: Ot,
832
+ generateRandomString: we,
833
+ generateUID: Te,
834
+ getCookie: Wt,
835
+ getCurrentDate: rr,
836
+ getCurrentDateString: nr,
837
+ getDeviceType: G,
838
+ getSessionStorage: Ht,
839
+ isArray: Mt,
840
+ isBoolean: pt,
841
+ isDesktop: Dt,
842
+ isEmpty: Se,
843
+ isEmptyArray: K,
844
+ isFunction: yt,
845
+ isMobile: bt,
846
+ isNull: St,
847
+ isNullOrUndefined: Tt,
848
+ isNumber: gt,
849
+ isObject: vt,
850
+ isSafeEmpty: Kt,
851
+ isString: ht,
852
+ isTablet: xt,
853
+ isUndefined: wt,
854
+ isValidEmail: Xt,
855
+ isValidUrl: Zt,
856
+ padLeft: Vt,
857
+ padRight: Qt,
858
+ random: Yt,
859
+ removeSessionStorage: zt,
860
+ round: jt,
861
+ setCookie: qt,
862
+ setSessionStorage: Rt,
863
+ throttle: _t,
864
+ toCamelCase: Jt
865
+ }, Symbol.toStringTag, { value: "Module" })), P = (() => {
866
+ try {
867
+ if (import.meta.env.DEV)
868
+ return !0;
869
+ } catch {
870
+ }
871
+ return !1;
872
+ })();
873
+ let _e = [], Ie = [];
874
+ function sr(e) {
875
+ e.devHosts && (_e = e.devHosts), e.prodHosts && (Ie = e.prodHosts);
876
+ }
877
+ function Ce() {
878
+ if (typeof window < "u" && window.location)
879
+ return window.location.hostname;
880
+ }
881
+ const be = (() => {
882
+ const e = Ce();
883
+ return !!(e && _e.includes(e));
884
+ })(), xe = (() => {
885
+ const e = Ce();
886
+ return !!(e && Ie.includes(e));
887
+ })();
888
+ function or() {
889
+ return P ? "X" : be ? "D" : xe ? "P" : "X";
890
+ }
891
+ const Dr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
892
+ __proto__: null,
893
+ configureEnvUtils: sr,
894
+ getEnvCode: or,
895
+ isDev: be,
896
+ isLocal: P,
897
+ isProd: xe
898
+ }, Symbol.toStringTag, { value: "Module" })), b = {
899
+ duration: 4.5,
900
+ // 4.5초
901
+ placement: "topRight"
902
+ };
903
+ class A {
904
+ constructor() {
905
+ }
906
+ static getInstance() {
907
+ return A.instance || (A.instance = new A()), A.instance;
908
+ }
909
+ /**
910
+ * BwgError 전용 에러 알림
911
+ * @param props - 에러 메시지 설정
912
+ */
913
+ showBwgError(r) {
914
+ const {
915
+ message: t,
916
+ description: n,
917
+ duration: s = b.duration,
918
+ placement: a = b.placement
919
+ } = r;
920
+ $.error({
921
+ message: `${t}`,
922
+ description: n || "오류가 발생했습니다. 다시 시도해주세요.",
923
+ duration: s,
924
+ placement: a,
925
+ style: {
926
+ borderLeft: "4px solid #ff4d4f",
927
+ backgroundColor: "#fff2f0"
928
+ }
929
+ });
930
+ }
931
+ /**
932
+ * 성공 알림
933
+ */
934
+ showSuccess(r, t, n) {
935
+ $.success({
936
+ message: `${r}`,
937
+ description: t,
938
+ duration: n || b.duration,
939
+ placement: b.placement
940
+ });
941
+ }
942
+ /**
943
+ * 정보 알림
944
+ */
945
+ showInfo(r, t, n) {
946
+ $.info({
947
+ message: `${r}`,
948
+ description: t,
949
+ duration: n || b.duration,
950
+ placement: b.placement
951
+ });
952
+ }
953
+ /**
954
+ * 경고 알림
955
+ */
956
+ showWarning(r, t, n) {
957
+ $.warning({
958
+ message: `${r}`,
959
+ description: t,
960
+ duration: n || b.duration,
961
+ placement: b.placement
962
+ });
963
+ }
964
+ /**
965
+ * 일반 에러 알림
966
+ */
967
+ showError(r, t, n) {
968
+ $.error({
969
+ message: `${r}`,
970
+ description: t,
971
+ duration: n || b.duration,
972
+ placement: b.placement
973
+ });
974
+ }
975
+ /**
976
+ * 모든 알림 닫기
977
+ */
978
+ destroy() {
979
+ $.destroy();
980
+ }
981
+ /**
982
+ * 특정 키의 알림 닫기
983
+ */
984
+ close(r) {
985
+ $.destroy();
986
+ }
987
+ }
988
+ const N = A.getInstance(), De = (e) => {
989
+ N.showBwgError(e);
990
+ }, ar = (e, r, t) => {
991
+ N.showSuccess(e, r, t);
992
+ }, Oe = (e, r, t) => {
993
+ N.showInfo(e, r, t);
994
+ }, Ne = (e, r, t) => {
995
+ N.showWarning(e, r, t);
996
+ }, ir = (e, r, t) => {
997
+ N.showError(e, r, t);
998
+ }, cr = () => {
999
+ N.destroy();
1000
+ }, ur = (e) => {
1001
+ N.close(e);
1002
+ }, Or = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1003
+ __proto__: null,
1004
+ closeNotification: ur,
1005
+ destroyNotifications: cr,
1006
+ notiBwgError: De,
1007
+ notiError: ir,
1008
+ notiInfo: Oe,
1009
+ notiSuccess: ar,
1010
+ notiWarning: Ne,
1011
+ notificationService: N
1012
+ }, Symbol.toStringTag, { value: "Module" }));
1013
+ let x = null;
1014
+ const oe = async (e) => {
1015
+ if (x === null)
1016
+ if (e === void 0)
1017
+ try {
1018
+ let t = (await re.get("/api/ip")).data.trim();
1019
+ t = t.replace(/\s+/g, ""), x = t;
1020
+ } catch (r) {
1021
+ console.warn("IP 가져오기 실패:", r), x = "unknown";
1022
+ }
1023
+ else
1024
+ x = e;
1025
+ }, lr = () => x, dr = async () => (console.log("IP 검증 비활성화됨 (성능 최적화)"), x || "unknown");
1026
+ class T extends Error {
1027
+ constructor(r, t, n, s, a) {
1028
+ super(r), this.name = "ApiError", this.detailMsg = t, this.response = n, this.msgCd = s, this.errorType = a, Error.captureStackTrace && Error.captureStackTrace(this, T);
1029
+ }
1030
+ }
1031
+ const z = {
1032
+ method: "POST",
1033
+ timeout: 3e4,
1034
+ // 30초
1035
+ withCredentials: !0,
1036
+ // 쿠키 포함
1037
+ showLoading: !0,
1038
+ showError: !0,
1039
+ retryCount: 0,
1040
+ retryDelay: 1e3
1041
+ }, Y = re.create({
1042
+ timeout: z.timeout,
1043
+ withCredentials: z.withCredentials,
1044
+ headers: {
1045
+ "Content-Type": "application/json; charset=utf-8",
1046
+ Accept: "application/json; charset=utf-8"
1047
+ }
1048
+ });
1049
+ Y.interceptors.request.use(
1050
+ (e) => {
1051
+ e.showLoading && te.getState().showLoading();
1052
+ let r = "UNKNOWN", t = "UNKNOWN";
1053
+ (/* @__PURE__ */ new Date()).getTime();
1054
+ try {
1055
+ e.data && e.data.header ? (r = e.data.header.trxCd || "UNKNOWN", t = e.data.header.guid || "UNKNOWN") : e.params && e.params.header && (r = e.params.header.trxCd || "UNKNOWN", t = e.params.header.guid || "UNKNOWN");
1056
+ } catch (s) {
1057
+ console.warn("trxCd/guid 추출 실패:", s);
1058
+ }
1059
+ e.trxCd = r, e.guid = t, e.requestStartTime = Date.now(), console.log(`🚀 API 요청 시작 [거래코드: ${r} / GUID: ${t}]`);
1060
+ const n = localStorage.getItem("accessToken");
1061
+ return n && (e.headers.Authorization = `Bearer ${n}`), e.headers["Content-Type"] = "application/json; charset=UTF-8", e.headers.Accept = "application/json; charset=UTF-8", e;
1062
+ },
1063
+ (e) => (console.error("❌ 요청 인터셉터 에러:", e), Promise.reject(e))
1064
+ );
1065
+ Y.interceptors.response.use(
1066
+ (e) => {
1067
+ e.config.showLoading && te.getState().hideLoading();
1068
+ let r = "UNKNOWN", t = "UNKNOWN";
1069
+ const n = (/* @__PURE__ */ new Date()).getTime();
1070
+ try {
1071
+ e.config.trxCd && (r = e.config.trxCd), e.config.guid ? t = e.config.guid : e.data && e.data.header && e.data.header.trxCd ? (r = e.data.header.trxCd, t = e.data.header.guid || "UNKNOWN") : e.config.data && e.config.data.header ? (r = e.config.data.header.trxCd || "UNKNOWN", t = e.config.data.header.guid || "UNKNOWN") : e.config.params && e.config.params.header && (r = e.config.params.header.trxCd || "UNKNOWN", t = e.config.params.header.guid || "UNKNOWN");
1072
+ } catch (a) {
1073
+ console.warn("trxCd/guid 추출 실패:", a);
1074
+ }
1075
+ let s = 0;
1076
+ return e.config.requestStartTime && (s = n - e.config.requestStartTime), console.log(
1077
+ `✅ API 응답 성공 [거래코드: ${r} / GUID : ${t}] - (소요시간: ${s}ms)`
1078
+ ), e;
1079
+ },
1080
+ async (e) => {
1081
+ if (e.config && e.config.showLoading && te.getState().hideLoading(), console.error("❌ API 응답 에러:", e), P && console.error("🚨 Error Details:", {
1082
+ message: e.message,
1083
+ status: e.response?.status,
1084
+ statusText: e.response?.statusText,
1085
+ data: e.response?.data,
1086
+ config: {
1087
+ url: e.config?.url,
1088
+ method: e.config?.method,
1089
+ baseURL: e.config?.baseURL
1090
+ }
1091
+ }), e.response?.status === 401) {
1092
+ const r = localStorage.getItem("refreshToken");
1093
+ if (r)
1094
+ try {
1095
+ const t = await re.post("/auth/refresh", {
1096
+ refreshToken: r
1097
+ });
1098
+ if (t.data.accessToken) {
1099
+ localStorage.setItem(
1100
+ "accessToken",
1101
+ t.data.accessToken
1102
+ );
1103
+ const n = e.config;
1104
+ if (n)
1105
+ return n.headers.Authorization = `Bearer ${t.data.accessToken}`, Y(n);
1106
+ }
1107
+ } catch {
1108
+ localStorage.removeItem("accessToken"), localStorage.removeItem("refreshToken"), window.location.href = "/login";
1109
+ }
1110
+ }
1111
+ return Promise.reject(e);
1112
+ }
1113
+ );
1114
+ const ae = () => Te(), L = async (e, r, t) => {
1115
+ try {
1116
+ const n = {
1117
+ ...z,
1118
+ ...t
1119
+ }, { activeMenuId: s } = Me.getState();
1120
+ if (x === null) {
1121
+ const p = Date.now();
1122
+ await oe();
1123
+ const c = Date.now();
1124
+ console.log(`[INFO] IP 조회 소요시간: ${c - p}ms`);
1125
+ }
1126
+ const a = {
1127
+ method: n.method,
1128
+ url: "/api/service",
1129
+ timeout: n.timeout,
1130
+ withCredentials: n.withCredentials,
1131
+ showLoading: n.showLoading
1132
+ };
1133
+ n.headers && (a.headers = n.headers);
1134
+ const i = x || "unknown", m = __APP_CD__, d = __SYS_CD__, v = {
1135
+ header: {
1136
+ trxCd: e,
1137
+ guid: ae(),
1138
+ userInfo: W(),
1139
+ clientIp: i,
1140
+ // 클라이언트 IP 추가 (서버에서 재확인 권장)
1141
+ domainId: "DEFAULT",
1142
+ appCd: m,
1143
+ sysCd: d,
1144
+ screenId: s
1145
+ },
1146
+ // data: bxmEncrypt(JSON.stringify(data)),
1147
+ data: r
1148
+ };
1149
+ P && console.log("__BWG_LOCAL__ 테스트 입니다. ", P), n.method === "GET" ? a.params = v || n.params : (a.data = v || n.data, n.params && (a.params = n.params));
1150
+ let g;
1151
+ for (let p = 0; p <= (n.retryCount || 0); p++)
1152
+ try {
1153
+ const c = await Y(a);
1154
+ if (c.data.header?.resCd == 0) {
1155
+ for (const u in c.data)
1156
+ if (u !== "header")
1157
+ return c.data[u];
1158
+ return {};
1159
+ } else {
1160
+ const u = c.data.header, l = u?.msgs?.basicMsg || "요청 처리 중 오류가 발생했습니다.", o = u?.msgs?.detailMsgs || l, f = u?.msgCd, M = u?.msgs?.type;
1161
+ throw new T(l, o, c, f, M);
1162
+ }
1163
+ } catch (c) {
1164
+ if (c.isAxiosError && c.response) {
1165
+ const u = c, l = u.response, o = l.data, f = o?.header?.msgs?.basicMsg || u.message || // 실패 시 Axios 에러 메시지 사용
1166
+ "서버에서 오류가 발생했습니다.", M = o?.header?.msgs?.detailMsgs || // 상세 메시지로 응답 본문 제공 (문자열이 아니면 JSON으로 변환)
1167
+ (typeof l.data == "string" ? l.data : JSON.stringify(l.data)) || f, h = o?.header?.msgCd, y = o?.header?.msgs?.type;
1168
+ g = new T(
1169
+ f,
1170
+ M,
1171
+ l,
1172
+ h,
1173
+ y
1174
+ );
1175
+ } else
1176
+ g = c;
1177
+ if (c.isAxiosError && $e(c) && p < (n.retryCount || 0)) {
1178
+ await Pe(n.retryDelay || 1e3);
1179
+ continue;
1180
+ }
1181
+ break;
1182
+ }
1183
+ if (g) {
1184
+ if (n.showError) {
1185
+ const p = g instanceof T ? g.message : "요청 처리 중 오류가 발생했습니다.", c = g instanceof T ? g.msgCd : "요청 처리 중 오류가 발생했습니다.", u = g instanceof T ? g.detailMsg : g.message, l = g instanceof T ? g.errorType : "";
1186
+ c?.startsWith("BXM") ? De({
1187
+ message: p,
1188
+ description: u,
1189
+ duration: 5
1190
+ }) : l == "I" ? Oe(p, u, 5) : Ne(p, u, 5);
1191
+ }
1192
+ throw g;
1193
+ }
1194
+ throw new Error("알 수 없는 API 오류가 발생했습니다.");
1195
+ } catch (n) {
1196
+ throw console.error("callService 최종 에러:", n), n;
1197
+ }
1198
+ }, fr = async (e, r, t, n) => {
1199
+ try {
1200
+ const s = {
1201
+ ...z,
1202
+ ...n
1203
+ }, { activeMenuId: a } = Me.getState();
1204
+ if (x === null) {
1205
+ const c = Date.now();
1206
+ await oe();
1207
+ const u = Date.now();
1208
+ console.log(`[INFO] IP 조회 소요시간: ${u - c}ms`);
1209
+ }
1210
+ const i = {
1211
+ method: s.method,
1212
+ url: "/api/" + e + "/service",
1213
+ timeout: s.timeout,
1214
+ withCredentials: s.withCredentials,
1215
+ showLoading: s.showLoading
1216
+ };
1217
+ s.headers && (i.headers = s.headers);
1218
+ const m = x || "unknown", d = __APP_CD__, v = __SYS_CD__, g = {
1219
+ header: {
1220
+ trxCd: r,
1221
+ guid: ae(),
1222
+ userInfo: W(),
1223
+ clientIp: m,
1224
+ // 클라이언트 IP 추가 (서버에서 재확인 권장)
1225
+ domainId: "DEFAULT",
1226
+ appCd: d,
1227
+ sysCd: v,
1228
+ screenId: a
1229
+ },
1230
+ // data: bxmEncrypt(JSON.stringify(data)),
1231
+ data: t
1232
+ };
1233
+ P && console.log("__BWG_LOCAL__ 테스트 입니다. ", P), s.method === "GET" ? i.params = g || s.params : (i.data = g || s.data, s.params && (i.params = s.params));
1234
+ let p;
1235
+ for (let c = 0; c <= (s.retryCount || 0); c++)
1236
+ try {
1237
+ const u = await Y(i);
1238
+ if (u.data.header?.resCd == 0) {
1239
+ for (const l in u.data)
1240
+ if (l !== "header")
1241
+ return u.data[l];
1242
+ return {};
1243
+ } else {
1244
+ const l = u.data.header, o = l?.msgs?.basicMsg || "요청 처리 중 오류가 발생했습니다.", f = l?.msgs?.detailMsgs || o, M = l?.msgCd, h = l?.msgs?.type;
1245
+ throw new T(o, f, u, M, h);
1246
+ }
1247
+ } catch (u) {
1248
+ if (u.isAxiosError && u.response) {
1249
+ const l = u, o = l.response, f = o.data, M = f?.header?.msgs?.basicMsg || l.message || // 실패 시 Axios 에러 메시지 사용
1250
+ "서버에서 오류가 발생했습니다.", h = f?.header?.msgs?.detailMsgs || // 상세 메시지로 응답 본문 제공 (문자열이 아니면 JSON으로 변환)
1251
+ (typeof o.data == "string" ? o.data : JSON.stringify(o.data)) || M, y = f?.header?.msgCd, w = f?.header?.msgs?.type;
1252
+ p = new T(
1253
+ M,
1254
+ h,
1255
+ o,
1256
+ y,
1257
+ w
1258
+ );
1259
+ } else
1260
+ p = u;
1261
+ if (u.isAxiosError && $e(u) && c < (s.retryCount || 0)) {
1262
+ await Pe(s.retryDelay || 1e3);
1263
+ continue;
1264
+ }
1265
+ break;
1266
+ }
1267
+ if (p) {
1268
+ if (s.showError) {
1269
+ const c = p instanceof T ? p.message : "요청 처리 중 오류가 발생했습니다.", u = p instanceof T ? p.msgCd : "요청 처리 중 오류가 발생했습니다.", l = p instanceof T ? p.detailMsg : p.message, o = p instanceof T ? p.errorType : "";
1270
+ u?.startsWith("BXM") ? showBwgError({
1271
+ message: c,
1272
+ description: l,
1273
+ duration: 5
1274
+ }) : o == "I" ? showInfo(c, l, 5) : showWarning(c, l, 5);
1275
+ }
1276
+ throw p;
1277
+ }
1278
+ throw new Error("알 수 없는 API 오류가 발생했습니다.");
1279
+ } catch (s) {
1280
+ throw console.error("callService 최종 에러:", s), s;
1281
+ }
1282
+ }, $e = (e) => !e.response || e.response.status >= 500 && e.response.status < 600, Pe = (e) => new Promise((r) => setTimeout(r, e)), mr = (e, r, t) => L(e, r, { ...t, method: "GET" }), hr = (e, r, t) => L(e, r, { ...t, method: "POST" }), gr = (e, r, t) => L(e, r, { ...t, method: "PUT" }), pr = (e, r, t) => L(e, r, { ...t, method: "DELETE" }), yr = (e, r, t) => L(e, r, { ...t, method: "PATCH" }), vr = async (e, r, t) => {
1283
+ try {
1284
+ const n = await fetch("/api/permissions", {
1285
+ method: "POST",
1286
+ headers: {
1287
+ "Content-Type": "application/json"
1288
+ },
1289
+ body: JSON.stringify({
1290
+ userId: e,
1291
+ menuId: r,
1292
+ popupId: t
1293
+ })
1294
+ });
1295
+ if (!n.ok)
1296
+ throw new Error(`권한 확인 실패: ${n.status}`);
1297
+ return await n.json();
1298
+ } catch (n) {
1299
+ throw console.error("권한 확인 서비스 오류:", n), n;
1300
+ }
1301
+ }, Nr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1302
+ __proto__: null,
1303
+ ApiError: T,
1304
+ apiDelete: pr,
1305
+ apiGet: mr,
1306
+ apiPatch: yr,
1307
+ apiPost: hr,
1308
+ apiPut: gr,
1309
+ callService: L,
1310
+ callService_SYSCD: fr,
1311
+ getClientIp: lr,
1312
+ getGuid: ae,
1313
+ getPermissionService: vr,
1314
+ setClientIp: oe,
1315
+ verifyClientIp: dr
1316
+ }, Symbol.toStringTag, { value: "Module" }));
1317
+ export {
1318
+ Xt as $,
1319
+ T as A,
1320
+ xt as B,
1321
+ Dt as C,
1322
+ Ot as D,
1323
+ K as E,
1324
+ Nt as F,
1325
+ $t as G,
1326
+ Pt as H,
1327
+ Et as I,
1328
+ Lt as J,
1329
+ Ut as K,
1330
+ At as L,
1331
+ kt as M,
1332
+ Yt as N,
1333
+ Ft as O,
1334
+ jt as P,
1335
+ Rt as Q,
1336
+ Ht as R,
1337
+ zt as S,
1338
+ mt as T,
1339
+ Bt as U,
1340
+ qt as V,
1341
+ Wt as W,
1342
+ Gt as X,
1343
+ Se as Y,
1344
+ Kt as Z,
1345
+ Jt as _,
1346
+ ae as a,
1347
+ Zt as a0,
1348
+ Vt as a1,
1349
+ Qt as a2,
1350
+ we as a3,
1351
+ Te as a4,
1352
+ tr as a5,
1353
+ rr as a6,
1354
+ nr as a7,
1355
+ P as a8,
1356
+ sr as a9,
1357
+ Be as aA,
1358
+ W as aB,
1359
+ qe as aC,
1360
+ We as aD,
1361
+ Ge as aE,
1362
+ te as aF,
1363
+ Ve as aG,
1364
+ Me as aH,
1365
+ D as aI,
1366
+ ke as aJ,
1367
+ Nr as aK,
1368
+ xr as aL,
1369
+ Dr as aM,
1370
+ Or as aN,
1371
+ Cr as aO,
1372
+ br as aP,
1373
+ ne as aQ,
1374
+ Ir as aR,
1375
+ _r as aS,
1376
+ be as aa,
1377
+ xe as ab,
1378
+ or as ac,
1379
+ N as ad,
1380
+ De as ae,
1381
+ ar as af,
1382
+ Oe as ag,
1383
+ Ne as ah,
1384
+ ir as ai,
1385
+ cr as aj,
1386
+ ur as ak,
1387
+ Ee as al,
1388
+ se as am,
1389
+ he as an,
1390
+ Le as ao,
1391
+ Ye as ap,
1392
+ ge as aq,
1393
+ pe as ar,
1394
+ Fe as as,
1395
+ je as at,
1396
+ ye as au,
1397
+ ve as av,
1398
+ q as aw,
1399
+ Re as ax,
1400
+ He as ay,
1401
+ ze as az,
1402
+ fr as b,
1403
+ L as c,
1404
+ mr as d,
1405
+ hr as e,
1406
+ gr as f,
1407
+ lr as g,
1408
+ pr as h,
1409
+ yr as i,
1410
+ vr as j,
1411
+ ht as k,
1412
+ gt as l,
1413
+ pt as m,
1414
+ yt as n,
1415
+ vt as o,
1416
+ Mt as p,
1417
+ St as q,
1418
+ wt as r,
1419
+ oe as s,
1420
+ Tt as t,
1421
+ _t as u,
1422
+ dr as v,
1423
+ It as w,
1424
+ Ct as x,
1425
+ G as y,
1426
+ bt as z
1427
+ };
1428
+ //# sourceMappingURL=apiUtils-BRaXRbjE.js.map