@bwg-ui/core 1.2.16 → 1.2.18
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.
- package/dist/chunks/{MenuReport-DNeDpJV2.js → MenuReport-ByLduwwZ.js} +2 -1
- package/dist/chunks/{MenuReport-Cw7zMZIq.cjs → MenuReport-D5nIx5g9.cjs} +1 -1
- package/dist/chunks/{common-components-Be3FPdnz.cjs → common-components-BXjzima0.cjs} +75 -75
- package/dist/chunks/{common-components-DGVIgTZZ.js → common-components-CyxuMobg.js} +6307 -6136
- package/dist/chunks/layout-components-CfFi4fiJ.cjs +35 -0
- package/dist/chunks/{layout-components-BBpCgkuQ.js → layout-components-CyKRhOdT.js} +206 -180
- package/dist/components/common/BookmarkMngModal.d.ts.map +1 -1
- package/dist/components/common/BookmarkPopver.d.ts.map +1 -1
- package/dist/components/common/BwgConfigProvider.d.ts.map +1 -1
- package/dist/components/common/BwgEditor.d.ts.map +1 -1
- package/dist/components/common/BwgPagination.d.ts.map +1 -1
- package/dist/components/common/index.cjs +1 -1
- package/dist/components/common/index.js +1 -1
- package/dist/components/guide/BwgPracticeGuideS00.d.ts.map +1 -1
- package/dist/components/guide/BwgPracticeGuideS01.d.ts.map +1 -1
- package/dist/components/guide/index.cjs +1 -1
- package/dist/components/guide/index.js +56 -55
- package/dist/components/layout/custom/ConfigurableSidebar.d.ts.map +1 -1
- package/dist/components/layout/default/LoadingContainer.d.ts +1 -0
- package/dist/components/layout/default/LoadingContainer.d.ts.map +1 -1
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/components/popup/MenuReport.d.ts.map +1 -1
- package/dist/components/popup/index.cjs +1 -1
- package/dist/components/popup/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +154 -153
- package/dist/public/realgrid/css/realgrid-style-custom.css +30 -4
- package/dist/stores/index.cjs +1 -1
- package/dist/stores/index.js +1 -1
- package/dist/styles/assets/images/contents/icon/ico-add-bookmark.svg +26 -0
- package/dist/styles/assets/images/contents/icon/ico-edit-folder.svg +18 -0
- package/dist/styles/assets/images/contents/icon/ico-new-folder.svg +20 -0
- package/dist/styles/assets/images/contents/icon/ico-save-bookmark.svg +25 -0
- package/dist/styles/components.css +207 -132
- package/dist/styles/layout-test.css +8 -300
- package/dist/styles/layout.css +77 -113
- package/dist/styles/variables.css +111 -78
- package/dist/utils/gwUtils.d.ts +38 -0
- package/dist/utils/gwUtils.d.ts.map +1 -1
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.js +727 -700
- package/package.json +1 -1
- package/dist/chunks/layout-components-C5u5K3OY.cjs +0 -35
package/dist/index.js
CHANGED
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
import { ApiError as r, COMMON_DATE_FORMAT as s, THEME_COOKIE_NAME as a, addDays as t, addMonths as i, apiGet as n, apiUtils as g, arrAverage as l, arrCount as d, arrMax as u, arrMin as C, arrReverse as p, arrSum as c, arrUnique as S, bwgUtils as w, callService as B, callServiceBySysCd as M, clamp as m, clearSessionStorage as v, closeAllMessages as f, closeMessage as h, closeNotification as
|
|
2
|
-
import { useCapsLock as
|
|
3
|
-
import { f as
|
|
4
|
-
import { BwgButton as zr, BwgCheck as
|
|
5
|
-
import { A as
|
|
6
|
-
import { AuthProvider as
|
|
1
|
+
import { ApiError as r, COMMON_DATE_FORMAT as s, THEME_COOKIE_NAME as a, addDays as t, addMonths as i, apiGet as n, apiUtils as g, arrAverage as l, arrCount as d, arrMax as u, arrMin as C, arrReverse as p, arrSum as c, arrUnique as S, bwgUtils as w, callService as B, callServiceBySysCd as M, clamp as m, clearSessionStorage as v, closeAllMessages as f, closeMessage as h, closeNotification as D, commonUtils as P, configureEnvUtils as y, copyToClipboard as A, datetimeFormat as U, debounce as L, deleteCookie as b, destroyNotifications as E, diffDays as k, downloadByFileKey as I, downloadFile as R, duplicates as O, encryptSha256 as x, envUtils as N, fileUtils as T, generateRandomColor as F, generateRandomString as V, generateUID as G, getAge as H, getAllServiceCodes as J, getApiDeps as W, getClientIp as K, getCookie as _, getCrprCd as q, getCurrentDate as z, getCurrentDateString as j, getDepartmentInfo as Q, getDeviceType as Y, getDisplayName as X, getDprtCd as Z, getDprtNm as $, getEmplNo as ee, getEnvCode as oe, getHrInfo as re, getJbdtCd as se, getJbgdCd as ae, getJbkdCd as te, getJbpsCd as ie, getLastDateByDiv as ne, getPermissionService as ge, getRoleList as le, getServiceCode as de, getSessionStorage as ue, getStartDateByDiv as Ce, getUserDvsn as pe, getUserId as ce, getUserInfo as Se, getUserNm as we, getWkplCd as Be, hasAllRoles as Me, hasAnyRole as me, hasRole as ve, hasUserInfo as fe, initApiDeps as he, isArray as De, isBoolean as Pe, isDesktop as ye, isDev as Ae, isEmpty as Ue, isEmptyArray as Le, isFunction as be, isLocal as Ee, isLoggedIn as ke, isMobile as Ie, isNull as Re, isNullOrUndefined as Oe, isNumber as xe, isObject as Ne, isProd as Te, isSafeEmpty as Fe, isString as Ve, isTablet as Ge, isUndefined as He, isValidDate as Je, isValidDateTime as We, isValidEmail as Ke, isValidUrl as _e, isValidYear as qe, isValidYearMonth as ze, logServiceCodeConfig as je, messageUtils as Qe, notiBwgError as Ye, notiError as Xe, notiInfo as Ze, notiSuccess as $e, notiWarning as eo, notificationService as oo, notificationUtils as ro, openGwDraftByAprvKey as so, padLeft as ao, padRight as to, random as io, realFormat as no, removeSessionStorage as go, round as lo, serviceUtils as uo, setClientIp as Co, setCookie as po, setServiceCodeOverrides as co, setSessionStorage as So, showApiError as wo, showDuplicateError as Bo, showError as Mo, showInfo as mo, showLoading as vo, showRequiredError as fo, showSaveError as ho, showSaveSuccess as Do, showSuccess as Po, showWarning as yo, submitGwApproval as Ao, throttle as Uo, toCamelCase as Lo, uploadFilesViaSftp as bo, userUtils as Eo, verifyClientIp as ko } from "./utils/index.js";
|
|
2
|
+
import { useCapsLock as Ro, useCode as Oo, useCodeStore as xo, useColorStore as No, useFavorite as To, useFavoriteStore as Fo, useLoadingStore as Vo, useLogin as Go, useLogout as Ho, useMenuModel as Jo, useMenuModelStore as Wo, useMenuView as Ko, useMenuViewStore as _o, useOptionStore as qo, usePopupLoadingStore as zo, usePopupState as jo, usePopupStore as Qo, useSystemCode as Yo, useSystemStore as Xo, useUser as Zo, useUserStore as $o } from "./stores/index.js";
|
|
3
|
+
import { f as or, q as rr, r as sr, j as ar, H as tr, B as ir, s as nr, I as gr, t as lr, p as dr, h as ur, u as Cr, o as pr, n as cr, J as Sr, i as wr, b as Br, v as Mr, l as mr, e as vr, k as fr, E as hr, K as Dr, U as Pr, L as yr, M as Ar, N as Ur, O as Lr, P as br, F as Er, R as kr, T as Ir, V as Rr, d as Or, C as xr, G as Nr, Q as Tr, w as Fr, S as Vr, x as Gr, y as Hr, D as Jr, z as Wr, A as Kr, m as _r } from "./chunks/common-components-CyxuMobg.js";
|
|
4
|
+
import { BwgButton as zr, BwgCheck as jr, BwgCheckList as Qr, BwgDatePicker as Yr, BwgDownload as Xr, BwgForm as Zr, BwgFormItem as $r, BwgInput as es, BwgLargeUploader as os, BwgMaskedInput as rs, BwgMaskedPicker as ss, BwgMultiSelect as as, BwgNumber as ts, BwgRadio as is, BwgRangePicker as ns, BwgSearch as gs, BwgSelect as ls, BwgSwitch as ds, BwgTextArea as us, BwgUploader as Cs } from "./components/core/index.js";
|
|
5
|
+
import { A as cs, b as Ss, B as ws, a as Bs, d as Ms, e as ms, f as vs, g as fs, C as hs, D as Ds, c as Ps, L as ys, P as As, h as Us } from "./chunks/layout-components-CyKRhOdT.js";
|
|
6
|
+
import { AuthProvider as bs, CommonCodeProvider as Es, ScreenProtectProvider as ks, SearchBoxProvider as Is, ServiceCodeProvider as Rs, useAllServiceCodes as Os, useAuth as xs, useCodeColor as Ns, useCodeList as Ts, useCodeListByOption as Fs, useCodeName as Vs, useCommonCode as Gs, useGridLookup as Hs, useLock as Js, useLogServiceCodeConfig as Ws, usePopup as Ks, useSearchBox as _s, useServiceCode as qs, useServiceCodeValue as zs } from "./provider/index.js";
|
|
7
7
|
export {
|
|
8
8
|
r as ApiError,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
cs as AppWrapper,
|
|
10
|
+
bs as AuthProvider,
|
|
11
|
+
or as ButtonAccessController,
|
|
12
12
|
zr as BwgButton,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
13
|
+
rr as BwgButtonGroup,
|
|
14
|
+
jr as BwgCheck,
|
|
15
|
+
Qr as BwgCheckList,
|
|
16
|
+
sr as BwgCmptArea,
|
|
17
|
+
ar as BwgCol,
|
|
18
|
+
tr as BwgComponentGuideM01,
|
|
19
|
+
ir as BwgConfigProvider,
|
|
20
|
+
Ss as BwgCoreLogin,
|
|
21
|
+
Yr as BwgDatePicker,
|
|
22
|
+
nr as BwgDetail,
|
|
23
|
+
gr as BwgDeveloperGuideM01,
|
|
24
|
+
Xr as BwgDownload,
|
|
25
|
+
lr as BwgDrawer,
|
|
26
|
+
dr as BwgEditor,
|
|
27
|
+
Zr as BwgForm,
|
|
28
|
+
$r as BwgFormItem,
|
|
29
|
+
ur as BwgGrid,
|
|
30
|
+
Cr as BwgInfoArea,
|
|
31
|
+
es as BwgInput,
|
|
32
|
+
os as BwgLargeUploader,
|
|
33
|
+
rs as BwgMaskedInput,
|
|
34
|
+
ss as BwgMaskedPicker,
|
|
35
|
+
as as BwgMultiSelect,
|
|
36
|
+
ts as BwgNumber,
|
|
37
|
+
pr as BwgPagination,
|
|
38
|
+
cr as BwgPopup,
|
|
39
|
+
ws as BwgPortal01,
|
|
40
|
+
Bs as BwgPortal02,
|
|
41
|
+
is as BwgRadio,
|
|
42
|
+
ns as BwgRangePicker,
|
|
43
|
+
Sr as BwgReactGuideM01,
|
|
44
|
+
wr as BwgRow,
|
|
45
|
+
gs as BwgSearch,
|
|
46
|
+
ls as BwgSelect,
|
|
47
|
+
Br as BwgSpace,
|
|
48
|
+
ds as BwgSwitch,
|
|
49
|
+
Mr as BwgTable,
|
|
50
|
+
mr as BwgTabs,
|
|
51
|
+
us as BwgTextArea,
|
|
52
|
+
vr as BwgTitleBox,
|
|
53
|
+
Cs as BwgUploader,
|
|
54
|
+
fr as BwgView,
|
|
55
|
+
hr as CMAuthMstrM01,
|
|
56
|
+
Dr as CMFileMstrM01,
|
|
57
57
|
Pr as CMHldyCfg,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
58
|
+
yr as CMMenuMstrM01,
|
|
59
|
+
Ar as CMMenuPrgrSelectModal,
|
|
60
|
+
Ur as CMMenuPrntSelectModal,
|
|
61
|
+
Lr as CMPopupMstrM01,
|
|
62
|
+
br as CMPrgrMstrM01,
|
|
63
|
+
Er as CMRoleMstrM01,
|
|
64
|
+
kr as CMSystCfgM01,
|
|
65
|
+
Ir as CMSystCodeM01,
|
|
66
|
+
Rr as CMUserMstrM01,
|
|
67
67
|
s as COMMON_DATE_FORMAT,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
68
|
+
Es as CommonCodeProvider,
|
|
69
|
+
Ms as ConfigurableContent,
|
|
70
|
+
ms as ConfigurableHeader,
|
|
71
|
+
vs as ConfigurableMenuTab,
|
|
72
|
+
fs as ConfigurableSidebar,
|
|
73
|
+
Or as ContentBox,
|
|
74
|
+
hs as ContentContainer,
|
|
75
|
+
xr as ContentLayOut,
|
|
76
|
+
Ds as DefaultLoginView,
|
|
77
|
+
Nr as GlobalConfigProvider,
|
|
78
78
|
Ps as LandingContainer,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
79
|
+
ys as LoadingContainer,
|
|
80
|
+
As as PopupContainer,
|
|
81
|
+
Us as ProtectWrapper,
|
|
82
|
+
Tr as QuickServiceToggle,
|
|
83
|
+
Fr as SSOHandler,
|
|
84
|
+
ks as ScreenProtectProvider,
|
|
85
|
+
Vr as SearchBox,
|
|
86
|
+
Is as SearchBoxProvider,
|
|
87
|
+
Gr as SearchDepartmentP01,
|
|
88
|
+
Hr as SearchDepartmentP02,
|
|
89
|
+
Jr as SearchHolidayP01,
|
|
90
|
+
Wr as SearchOrganizationP01,
|
|
91
|
+
Kr as SearchOrganizationP02,
|
|
92
|
+
Rs as ServiceCodeProvider,
|
|
93
93
|
a as THEME_COOKIE_NAME,
|
|
94
94
|
t as addDays,
|
|
95
95
|
i as addMonths,
|
|
@@ -109,8 +109,8 @@ export {
|
|
|
109
109
|
v as clearSessionStorage,
|
|
110
110
|
f as closeAllMessages,
|
|
111
111
|
h as closeMessage,
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
D as closeNotification,
|
|
113
|
+
P as commonUtils,
|
|
114
114
|
y as configureEnvUtils,
|
|
115
115
|
A as copyToClipboard,
|
|
116
116
|
_r as createBwgGridRenderer,
|
|
@@ -131,10 +131,10 @@ export {
|
|
|
131
131
|
H as getAge,
|
|
132
132
|
J as getAllServiceCodes,
|
|
133
133
|
W as getApiDeps,
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
134
|
+
K as getClientIp,
|
|
135
|
+
_ as getCookie,
|
|
136
|
+
q as getCrprCd,
|
|
137
|
+
z as getCurrentDate,
|
|
138
138
|
j as getCurrentDateString,
|
|
139
139
|
Q as getDepartmentInfo,
|
|
140
140
|
Y as getDeviceType,
|
|
@@ -164,8 +164,8 @@ export {
|
|
|
164
164
|
ve as hasRole,
|
|
165
165
|
fe as hasUserInfo,
|
|
166
166
|
he as initApiDeps,
|
|
167
|
-
|
|
168
|
-
|
|
167
|
+
De as isArray,
|
|
168
|
+
Pe as isBoolean,
|
|
169
169
|
ye as isDesktop,
|
|
170
170
|
Ae as isDev,
|
|
171
171
|
Ue as isEmpty,
|
|
@@ -185,10 +185,10 @@ export {
|
|
|
185
185
|
He as isUndefined,
|
|
186
186
|
Je as isValidDate,
|
|
187
187
|
We as isValidDateTime,
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
188
|
+
Ke as isValidEmail,
|
|
189
|
+
_e as isValidUrl,
|
|
190
|
+
qe as isValidYear,
|
|
191
|
+
ze as isValidYearMonth,
|
|
192
192
|
je as logServiceCodeConfig,
|
|
193
193
|
Qe as messageUtils,
|
|
194
194
|
Ye as notiBwgError,
|
|
@@ -198,66 +198,67 @@ export {
|
|
|
198
198
|
eo as notiWarning,
|
|
199
199
|
oo as notificationService,
|
|
200
200
|
ro as notificationUtils,
|
|
201
|
-
so as
|
|
202
|
-
ao as
|
|
203
|
-
to as
|
|
204
|
-
io as
|
|
205
|
-
no as
|
|
206
|
-
go as
|
|
207
|
-
lo as
|
|
208
|
-
uo as
|
|
209
|
-
Co as
|
|
210
|
-
po as
|
|
211
|
-
co as
|
|
212
|
-
So as
|
|
213
|
-
wo as
|
|
214
|
-
Bo as
|
|
215
|
-
Mo as
|
|
216
|
-
mo as
|
|
217
|
-
vo as
|
|
218
|
-
fo as
|
|
219
|
-
ho as
|
|
201
|
+
so as openGwDraftByAprvKey,
|
|
202
|
+
ao as padLeft,
|
|
203
|
+
to as padRight,
|
|
204
|
+
io as random,
|
|
205
|
+
no as realFormat,
|
|
206
|
+
go as removeSessionStorage,
|
|
207
|
+
lo as round,
|
|
208
|
+
uo as serviceUtils,
|
|
209
|
+
Co as setClientIp,
|
|
210
|
+
po as setCookie,
|
|
211
|
+
co as setServiceCodeOverrides,
|
|
212
|
+
So as setSessionStorage,
|
|
213
|
+
wo as showApiError,
|
|
214
|
+
Bo as showDuplicateError,
|
|
215
|
+
Mo as showError,
|
|
216
|
+
mo as showInfo,
|
|
217
|
+
vo as showLoading,
|
|
218
|
+
fo as showRequiredError,
|
|
219
|
+
ho as showSaveError,
|
|
220
|
+
Do as showSaveSuccess,
|
|
220
221
|
Po as showSuccess,
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
222
|
+
yo as showWarning,
|
|
223
|
+
Ao as submitGwApproval,
|
|
224
|
+
Uo as throttle,
|
|
225
|
+
Lo as toCamelCase,
|
|
226
|
+
bo as uploadFilesViaSftp,
|
|
227
|
+
Os as useAllServiceCodes,
|
|
228
|
+
xs as useAuth,
|
|
229
|
+
Ro as useCapsLock,
|
|
230
|
+
Oo as useCode,
|
|
231
|
+
Ns as useCodeColor,
|
|
232
|
+
Ts as useCodeList,
|
|
233
|
+
Fs as useCodeListByOption,
|
|
234
|
+
Vs as useCodeName,
|
|
235
|
+
xo as useCodeStore,
|
|
236
|
+
No as useColorStore,
|
|
237
|
+
Gs as useCommonCode,
|
|
238
|
+
To as useFavorite,
|
|
239
|
+
Fo as useFavoriteStore,
|
|
240
|
+
Hs as useGridLookup,
|
|
241
|
+
Vo as useLoadingStore,
|
|
242
|
+
Js as useLock,
|
|
243
|
+
Ws as useLogServiceCodeConfig,
|
|
244
|
+
Go as useLogin,
|
|
245
|
+
Ho as useLogout,
|
|
246
|
+
Jo as useMenuModel,
|
|
247
|
+
Wo as useMenuModelStore,
|
|
248
|
+
Ko as useMenuView,
|
|
248
249
|
_o as useMenuViewStore,
|
|
249
250
|
qo as useOptionStore,
|
|
250
|
-
|
|
251
|
+
Ks as usePopup,
|
|
251
252
|
zo as usePopupLoadingStore,
|
|
252
|
-
|
|
253
|
-
|
|
253
|
+
jo as usePopupState,
|
|
254
|
+
Qo as usePopupStore,
|
|
254
255
|
_s as useSearchBox,
|
|
255
256
|
qs as useServiceCode,
|
|
256
257
|
zs as useServiceCodeValue,
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
258
|
+
Yo as useSystemCode,
|
|
259
|
+
Xo as useSystemStore,
|
|
260
|
+
Zo as useUser,
|
|
261
|
+
$o as useUserStore,
|
|
262
|
+
Eo as userUtils,
|
|
263
|
+
ko as verifyClientIp
|
|
263
264
|
};
|
|
@@ -28,7 +28,8 @@ THEME : Realgrid style 재정의
|
|
|
28
28
|
|
|
29
29
|
.rg-header .rg-table tr td {
|
|
30
30
|
border-top: 1px solid #ddd;
|
|
31
|
-
border-right: none;
|
|
31
|
+
/* border-right: none; */
|
|
32
|
+
border-right: 1px solid #ddd;
|
|
32
33
|
border-bottom: none;
|
|
33
34
|
background-color: #f4f5fa;
|
|
34
35
|
line-height: normal;
|
|
@@ -37,6 +38,9 @@ THEME : Realgrid style 재정의
|
|
|
37
38
|
font-size: 14px;
|
|
38
39
|
font-weight: 600;
|
|
39
40
|
}
|
|
41
|
+
.rg-header .rg-table tr td.rg-header-group-cell {
|
|
42
|
+
border-bottom: 1px solid #ddd;
|
|
43
|
+
}
|
|
40
44
|
.rg-header .rg-table tr td:hover {
|
|
41
45
|
background-color: #e8e9f0;
|
|
42
46
|
}
|
|
@@ -470,19 +474,19 @@ THEME : Realgrid style 재정의
|
|
|
470
474
|
|
|
471
475
|
.rg-head .rg-table tr td.rg-head-cell.rg-rowindicator-head {
|
|
472
476
|
border-top: 1px solid #ddd;
|
|
473
|
-
border-right:
|
|
477
|
+
border-right: 1px solid #ddd;
|
|
474
478
|
border-bottom: none;
|
|
475
479
|
}
|
|
476
480
|
|
|
477
481
|
.rg-head .rg-table tr td.rg-head-cell.rg-checkbar-head {
|
|
478
482
|
border-top: 1px solid #ddd;
|
|
479
|
-
border-right:
|
|
483
|
+
border-right: 1px solid #ddd;
|
|
480
484
|
border-bottom: none;
|
|
481
485
|
}
|
|
482
486
|
|
|
483
487
|
.rg-head .rg-table tr td.rg-head-cell.rg-statebar-head {
|
|
484
488
|
border-top: 1px solid #ddd;
|
|
485
|
-
border-right:
|
|
489
|
+
border-right: 1px solid #ddd;
|
|
486
490
|
border-bottom: none;
|
|
487
491
|
}
|
|
488
492
|
|
|
@@ -646,3 +650,25 @@ THEME : Realgrid style 재정의
|
|
|
646
650
|
background-color: transparent;
|
|
647
651
|
border: 0;
|
|
648
652
|
}
|
|
653
|
+
|
|
654
|
+
.rg-button-renderer-button {
|
|
655
|
+
white-space: nowrap;
|
|
656
|
+
text-overflow: ellipsis;
|
|
657
|
+
overflow: hidden;
|
|
658
|
+
text-align: center;
|
|
659
|
+
vertical-align: middle;
|
|
660
|
+
width: 80%;
|
|
661
|
+
padding: 3px 0;
|
|
662
|
+
color: #7F878F;
|
|
663
|
+
border: 1px solid #e3e3e3;
|
|
664
|
+
border-radius: 5px;
|
|
665
|
+
background: #ffffff;
|
|
666
|
+
font-size: 12px;
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
.rg-button-renderer-button:hover {
|
|
670
|
+
color: #333;
|
|
671
|
+
border: 1px solid #999;
|
|
672
|
+
background: #ffffff;
|
|
673
|
+
}
|
|
674
|
+
|
package/dist/stores/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("zustand"),g=require("../utils/index.cjs"),F=require("antd"),Z=require("../chunks/layout-components-C5u5K3OY.cjs"),L=require("react"),V=require("react-router-dom");function Q(n,r){let e;try{e=n()}catch{return}return{getItem:o=>{var t;const a=c=>c===null?null:JSON.parse(c,void 0),d=(t=e.getItem(o))!=null?t:null;return d instanceof Promise?d.then(a):a(d)},setItem:(o,t)=>e.setItem(o,JSON.stringify(t,void 0)),removeItem:o=>e.removeItem(o)}}const T=n=>r=>{try{const e=n(r);return e instanceof Promise?e:{then(s){return T(s)(e)},catch(s){return this}}}catch(e){return{then(s){return this},catch(s){return T(s)(e)}}}},ee=(n,r)=>(e,s,o)=>{let t={storage:Q(()=>localStorage),partialize:C=>C,version:0,merge:(C,S)=>({...S,...C}),...r},a=!1;const d=new Set,c=new Set;let i=t.storage;if(!i)return n((...C)=>{console.warn(`[zustand persist middleware] Unable to update item '${t.name}', the given storage is currently unavailable.`),e(...C)},s,o);const p=()=>{const C=t.partialize({...s()});return i.setItem(t.name,{state:C,version:t.version})},I=o.setState;o.setState=(C,S)=>(I(C,S),p());const m=n((...C)=>(e(...C),p()),s,o);o.getInitialState=()=>m;let u;const h=()=>{var C,S;if(!i)return;a=!1,d.forEach(y=>{var N;return y((N=s())!=null?N:m)});const k=((S=t.onRehydrateStorage)==null?void 0:S.call(t,(C=s())!=null?C:m))||void 0;return T(i.getItem.bind(i))(t.name).then(y=>{if(y)if(typeof y.version=="number"&&y.version!==t.version){if(t.migrate){const N=t.migrate(y.state,y.version);return N instanceof Promise?N.then(K=>[!0,K]):[!0,N]}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 N;const[K,W]=y;if(u=t.merge(W,(N=s())!=null?N:m),e(u,!0),K)return p()}).then(()=>{k?.(u,void 0),u=s(),a=!0,c.forEach(y=>y(u))}).catch(y=>{k?.(void 0,y)})};return o.persist={setOptions:C=>{t={...t,...C},C.storage&&(i=C.storage)},clearStorage:()=>{i?.removeItem(t.name)},getOptions:()=>t,rehydrate:()=>h(),hasHydrated:()=>a,onHydrate:C=>(d.add(C),()=>{d.delete(C)}),onFinishHydration:C=>(c.add(C),()=>{c.delete(C)})},t.skipHydration||h(),u||m},M=ee,w=b.create()(M((n,r)=>({user:null,hrInfo:null,isLoggedIn:()=>!!r().user,setLoginUser:(e,s)=>{n({user:e,hrInfo:s??null}),console.log("사용자 로그인:",e,s)},clearLoginUser:()=>{n({user:null,hrInfo:null}),console.log("사용자 로그아웃")},updateUser:(e,s)=>{const o=r().user,t=r().hrInfo;o&&n({user:{...o,...e}}),t&&n({hrInfo:{...t,...s}})}}),{name:"user-storage",partialize:n=>({user:n.user,hrInfo:n.hrInfo,isLoggedIn:n.isLoggedIn})})),A={CACHE_SIZE_LIMIT:1e3},l={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 n=Array.from(this.cacheHits.entries());n.sort((e,s)=>e[1]-s[1]),n.slice(0,Math.floor(n.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(n){return this.loadedGroups.has(n)},markGroupLoaded(n){this.loadedGroups.add(n)}},te=n=>{console.log("대규모 데이터 변환 시작:",n);const r={};if(n&&n.code&&Array.isArray(n.code)){const e=n.code,s=n.opt||[],o=new Map;s.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;r[a]||(r[a]={});const c=(o.get(t.cmmnCd)||[]).reduce((i,p)=>(p.optnCd&&p.optnNm&&(i[p.optnCd]=p.optnNm),i),{});r[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(c).length>0?c:null,originalData:t}}})}return console.log("대규모 데이터 변환 완료:",r),r},f=b.create()(M((n,r)=>({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set,fetchData:async()=>{n({isLoading:!0,error:null});try{console.log("대규모 공통코드 데이터 가져오기 시작: SCMSIGN00301");const e=await g.callService(g.getServiceCode("SRCH_CODE"),{crprCd:"100"});console.log("대규모 공통코드 응답:",e),console.log("대규모 공통코드목록:",e.code),console.log("대규모 공통코드옵션션목록:",e.opt);const s=te(e);l.clearCache();const o=new Set(Object.keys(s));o.forEach(t=>{l.markGroupLoaded(t)}),n({codeData:s,isLoading:!1,error:null,lastUpdated:new Date,loadedGroups:o}),console.log("대규모 공통코드 데이터 가져오기 완료")}catch(e){console.error("대규모 공통코드 데이터 가져오기 실패:",e),n({isLoading:!1,error:e instanceof Error?e.message:"대규모 공통코드 데이터 가져오기 실패"})}},loadSpecificGroup:async e=>{const{codeData:s,loadedGroups:o}=r();if(!s||o.has(e))return;const t=new Set(o).add(e);n({loadedGroups:t}),l.markGroupLoaded(e)},setData:e=>{l.clearCache();const s=new Set(Object.keys(e));s.forEach(o=>{l.markGroupLoaded(o)}),n({codeData:e,lastUpdated:new Date,loadedGroups:s})},clearData:()=>{l.clearCache(),n({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set})},getLoadedGroups:()=>Array.from(r().loadedGroups)}),{name:"large-data-storage",partialize:n=>({codeData:n.codeData,lastUpdated:n.lastUpdated,loadedGroups:Array.from(n.loadedGroups)})})),D=b.create()(M((n,r)=>({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,s)=>{const{enabledOnly:o=!0,systemCodeOnly:t=!1,sortByOrder:a=!1,excludeParentCode:d=!1}=s||{},c=`simpleCodeList_${e}_${o}_${t}_${a}_${d}`;if(l.optionCache.has(c)){const h=l.cacheHits.get(c)||0;return l.cacheHits.set(c,h+1),l.optionCache.get(c)}const i=f.getState().codeData;if(!i)return[];if(!l.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const p=[],I=i[e];I&&Object.values(I).forEach(h=>{if(!(o&&!h.enabled)&&!(t&&h.systemCodeYn!=="Y"))if(d){const C=e.length,S=h.codeValue.substring(C);S.length>0&&p.push({...h,codeValue:S})}else p.push(h)});let m;a?m=p.sort((h,C)=>h.sortOrder!==C.sortOrder?h.sortOrder-C.sortOrder:h.codeValue.localeCompare(C.codeValue)):m=p.sort((h,C)=>h.codeValue.localeCompare(C.codeValue));const u=m.map(h=>({label:h.codeNm,value:h.codeValue,tagColor:h.labelColor}));return l.optionCache.size>=A.CACHE_SIZE_LIMIT&&l.cleanupCache(),l.optionCache.set(c,u),l.cacheHits.set(c,1),u},getCodeName:e=>{if(l.nameCache.has(e)){const o=l.cacheHits.get(`name_${e}`)||0;return l.cacheHits.set(`name_${e}`,o+1),l.nameCache.get(e)}const s=f.getState().codeData;if(!s)return null;for(const o of Object.values(s))for(const t of Object.values(o))if(t.codeValue===e)return l.nameCache.set(e,t.codeNm),l.cacheHits.set(`name_${e}`,1),t.codeNm;return null},getCodeColor:e=>{if(l.colorCache.has(e)){const o=l.cacheHits.get(`color_${e}`)||0;return l.cacheHits.set(`color_${e}`,o+1),l.colorCache.get(e)}const s=f.getState().codeData;if(!s)return null;for(const o of Object.values(s))for(const t of Object.values(o))if(t.codeValue===e)return l.colorCache.set(e,t.labelColor||""),l.cacheHits.set(`color_${e}`,1),t.labelColor;return null},getGridLookup:e=>{const s=`gridLookup_${e}`;if(l.optionCache.has(s)){const i=l.cacheHits.get(s)||0;return l.cacheHits.set(s,i+1),l.optionCache.get(s)}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=[],d=[];Object.values(t).filter(i=>i.enabled).sort((i,p)=>i.sortOrder-p.sortOrder).forEach(i=>{a.push(i.codeNm),d.push(i.codeValue)});const c={labels:a,values:d,lookupDisplay:!0};return l.optionCache.set(s,c),l.cacheHits.set(s,1),c},getCodeByOption:(e,s,o)=>{const t=`codeByOption_${e}_${s}_${o}`;if(l.codeCache.has(t)){const p=l.cacheHits.get(t)||0;return l.cacheHits.set(t,p+1),l.codeCache.get(t)}const a=f.getState().codeData;if(!a)return[];const d=[],c=a[e];c&&Object.values(c).forEach(p=>{p.enabled&&p.options&&p.options[s]===o&&d.push({...p,codeNm:p.options[s]||p.codeNm})});const i=d.sort((p,I)=>p.codeValue.localeCompare(I.codeValue));return l.codeCache.size>=A.CACHE_SIZE_LIMIT&&l.cleanupCache(),l.codeCache.set(t,i),l.cacheHits.set(t,1),i},getCodeListByOption:(e,s,o)=>{const{enabledOnly:t=!0,systemCodeOnly:a=!1,sortByOrder:d=!1}=o||{},c=`codeListByOption_${e}_${s}_${t}_${a}_${d}`;if(l.codeCache.has(c)){const u=l.cacheHits.get(c)||0;return l.cacheHits.set(c,u+1),l.codeCache.get(c)}const i=f.getState().codeData;if(!i)return[];if(!l.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const p=[],I=i[e];I&&Object.values(I).forEach(u=>{t&&!u.enabled||a&&u.systemCodeYn!=="Y"||u.options&&u.options[s]&&p.push({label:u.options[s],value:u.commonCode,tagColor:u.labelColor})});let m;return d?m=p.sort((u,h)=>u.value.localeCompare(h.value)):m=p.sort((u,h)=>u.value.localeCompare(h.value)),l.codeCache.size>=A.CACHE_SIZE_LIMIT&&l.cleanupCache(),l.codeCache.set(c,m),l.cacheHits.set(c,1),m},getAvailableGroupCodes:()=>{const e="available_group_codes";if(l.nameCache.has(e)){const t=l.cacheHits.get(e)||0;return l.cacheHits.set(e,t+1),JSON.parse(l.nameCache.get(e))}const s=f.getState().codeData;if(!s)return[];const o=Object.keys(s).sort();return l.nameCache.set(e,JSON.stringify(o)),l.cacheHits.set(e,1),o},clearCodes:()=>{f.getState().clearData()}}),{name:"code-storage",partialize:n=>({})})),oe=b.create()(M((n,r)=>({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,s)=>{const o=`option_${e}_${s}`;if(l.optionCache.has(o)){const d=l.cacheHits.get(o)||0;return l.cacheHits.set(o,d+1),l.optionCache.get(o)}const t=f.getState().codeData;if(!t)return null;const a=t[e];if(a&&a[s]){const d=a[s].options;return l.optionCache.set(o,d),l.cacheHits.set(o,1),d}return null},getOptionByKey:(e,s,o)=>{const t=`option_${e}_${s}_${o}`;if(l.optionCache.has(t)){const c=l.cacheHits.get(t)||0;return l.cacheHits.set(t,c+1),l.optionCache.get(t)}const a=r().getOptionValue(e,s),d=a?a[o]:null;return l.optionCache.set(t,d),l.cacheHits.set(t,1),d},clearCodes:()=>{f.getState().clearData()}}),{name:"option-storage",partialize:n=>({})})),se=b.create()(M((n,r)=>({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(l.colorCache.has(e)){const o=l.cacheHits.get(`color_${e}`)||0;return l.cacheHits.set(`color_${e}`,o+1),l.colorCache.get(e)}const s=f.getState().codeData;if(!s)return null;for(const o of Object.values(s))for(const t of Object.values(o))if(t.codeValue===e)return l.colorCache.set(e,t.labelColor||""),l.cacheHits.set(`color_${e}`,1),t.labelColor;return null},getColorMapping:()=>{const e="color_mapping";if(l.optionCache.has(e)){const t=l.cacheHits.get(e)||0;return l.cacheHits.set(e,t+1),l.optionCache.get(e)}const s=f.getState().codeData;if(!s)return[];const o=[];return Object.values(s).forEach(t=>{Object.values(t).forEach(a=>{a.labelColor&&o.push({code:a.codeValue,color:a.labelColor})})}),l.optionCache.set(e,o),l.cacheHits.set(e,1),o},clearCodes:()=>{f.getState().clearData()}}),{name:"color-storage",partialize:n=>({})})),ne=(n,r)=>({nodes:{},rootIds:[],loadedFor:void 0,loading:!1,error:void 0,treeNodes:[],isMenuBookmarked:e=>Object.values(r().nodes).some(s=>s.type==="M"&&s.menuId===e),getPrntBkmkIdByMenuId:e=>{const s=P(r().nodes,e);return s?r().nodes[s]?.prntBkmkId??"-":"-"},getNodeByMenuId:e=>{const s=P(r().nodes,e);if(!s)return null;const o=r().nodes[s];return o?.type==="M"?o:null},getFolderTree:e=>{const{nodes:s,rootIds:o}=r(),t=d=>e?d.toLowerCase().includes(e.toLowerCase()):!0,a=d=>{const c=s[d];if(!c||c.type!=="F")return null;const i=c,p=(i.children||[]).map(m=>s[m]).filter(m=>!!m&&m.type==="F").map(m=>a(m.bkmkId)).filter(Boolean);return t(i.bkmkNm)||p.length>0?{key:i.bkmkId,title:`📁 ${i.bkmkNm}`,children:p.length?p:void 0}:null};return o.map(d=>a(d)).filter(Boolean)},loadFavorites:async(e,s=!1)=>{console.log("loadFavorites ::::: ",e,s);const o=r();if(!(!s&&o.loadedFor===e&&Object.keys(o.nodes).length)){n({loading:!0,error:void 0});try{const t=await g.callService("SCMBKMK00101",{userId:e}),a=Array.isArray(t?.sub)?t.sub:[],d=re(a),c=v(d.nodes,d.rootIds);n({...d,treeNodes:c,loadedFor:e,loading:!1})}catch(t){throw n({loading:!1,error:t?.message||"즐겨찾기 로드 실패"}),t}}},loadFavoritesIfNeeded:async e=>{const s=r();(s.loadedFor!==e||Object.keys(s.nodes).length===0)&&await r().loadFavorites(e)},clearFavorites:()=>{n({nodes:{},rootIds:[],treeNodes:[],loadedFor:void 0,loading:!1,error:void 0}),console.log("📚 북마크 스토어 초기화 완료")},addNode:async e=>{const s=B(r()),o=ae();n(t=>{const a=e.sortOrdr??$(t,e.prntBkmkId),d={...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 de(d,o,e.prntBkmkId),d.treeNodes=v(d.nodes,d.rootIds),d});try{let t=o;const a=$(r(),e.prntBkmkId),d=await g.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:g.getUserId()});return t=String(d?.bkmkId??d?.itemId??o),n(c=>{const i=pe(c,o,t);return{...i,treeNodes:v(i.nodes,i.rootIds)}}),t}catch(t){throw n(s),t}},moveNode:async({bkmkId:e,newPrntBkmkId:s,sortOrdr:o,userId:t})=>{const a=r(),d=structuredClone(a.nodes),c=[...a.rootIds],i=d[e];if(!i)return;if(s!=="-"){const u=d[s];if(!u||u.type!=="F")throw new Error("부모는 폴더만 가능합니다.")}const p=i.prntBkmkId??"-",I=p==="-"?c:d[p].children||=[];{const u=I.indexOf(e);u>=0&&I.splice(u,1)}const m=s==="-"?c:d[s].children||=[];m.splice(Math.max(0,Math.min(o,m.length)),0,e),i.prntBkmkId=s,n({nodes:d,rootIds:c}),j(d,c,s),j(d,c,p);try{await g.callService("SCMBKMK00104",{bkmkId:e,prntBkmkId:s,sortOrdr:o,chngId:t})}catch(u){throw n(a),u}},removeNode:async e=>{const s=B(r());n(o=>{if(!o.nodes[e])return o;const t={...o,nodes:{...o.nodes},rootIds:o.rootIds.slice(),treeNodes:o.treeNodes};return q(t,e),t.treeNodes=v(t.nodes,t.rootIds),t});try{await g.callService("SCMBKMK00103",{bkmkId:e})}catch(o){throw n(s),o}},editNode:async({bkmkId:e,userId:s,bkmkNm:o,prntBkmkId:t,sortOrdr:a})=>{const d=B(r());n(c=>{const i={...c,nodes:{...c.nodes}},p=i.nodes[e];return p?.type==="F"&&typeof o=="string"&&(i.nodes[e]={...p,bkmkNm:o}),i});try{await g.callService("SCMBKMK00102",{iudFlag:"U",userId:s,bkmkId:e,bkmkNm:o,prntBkmkId:t,sortOrdr:a,chngId:g.getUserId()})}catch(c){throw n(d),c}},addFolder:async(e,s,o,t)=>await r().addNode({type:"F",bkmkNm:e,prntBkmkId:s,sysCd:o,userId:t}),addMenuToFolder:async(e,s)=>P(r().nodes,s.menuId)?"이미 북마크에 저장된 메뉴입니다.":await r().addNode({type:"M",prntBkmkId:e,sysCd:"KH",userId:g.getUserId(),menuId:s.menuId,menuNm:s.menuNm}),toggleMenuFavorite:async(e,s)=>{if(!e)return;const o=r(),t=Object.values(o.nodes).find(d=>d.type==="M"&&d.menuId===s.menuId);if(t){await r().removeNode(t.bkmkId);return}let a=x(o);a||(await r().loadFavorites(e,!0),a=x(r())),a&&await r().addNode({type:"M",prntBkmkId:a,sysCd:"KH",userId:g.getUserId(),menuId:s.menuId,menuNm:s.menuNm})},removeMenuByMenuId:async e=>{const s=r(),o=P(s.nodes,e);o&&await r().removeNode(o)},removeMenu:async e=>{await r().removeNode(e)},removeFolder:async e=>{await r().removeNode(e)},editFolder:async(e,s,o,t,a)=>{await r().editNode({bkmkId:e,userId:s,bkmkNm:o,prntBkmkId:t,sortOrdr:a})},convertToAntTreeData:(e,s,o,t=!1)=>{const a=c=>o?c.toLowerCase().includes(o.toLowerCase()):!0,d=c=>{const i=e[c];if(!i||t&&i.type!=="F")return null;if(i.type==="F"){const p=i,I=(p.children||[]).map(u=>d(u)).filter(Boolean);return a(p.bkmkNm)||I.length>0?{key:p.bkmkId,type:"F",title:`📁 ${p.bkmkNm}`,bkmkNm:p.bkmkNm,prntBkmkId:p.prntBkmkId,sortOrdr:p.sortOrdr,fullPath:p.fullPath,children:I.length?I:void 0}:null}else{const p=i,I=p.menuNm?`${p.menuNm} (${p.menuId})`:p.menuId;return a(I)?{key:p.bkmkId,type:"M",title:`📄 ${I}`,prntBkmkId:p.prntBkmkId,sortOrdr:p.sortOrdr,fullPath:p.fullPath,isLeaf:!0}:null}};return s.map(d).filter(Boolean)}}),R=b.create(ne);function re(n){const r={},e=[],s=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"){r[a.bkmkId]={...a,bkmkNm:t.bkmkNm??t.BKMK_NM??t.name??a.bkmkId,children:[]};const d=Array.isArray(t.children)?t.children:[];s(d)}else r[a.bkmkId]={...a,menuId:t.menuId??t.MENU_ID??"",menuNm:t.menuNm??t.MENU_NM}})};return s(n),Object.values(r).forEach(o=>{if(o.prntBkmkId&&o.prntBkmkId!=="-"){const t=r[o.prntBkmkId];t?.type==="F"&&t.children.push(o.bkmkId)}else o.type==="F"&&e.push(o.bkmkId)}),e.sort((o,t)=>(r[o].sortOrdr??0)-(r[t].sortOrdr??0)),Object.values(r).forEach(o=>{o.type==="F"&&o.children.sort((a,d)=>(r[a].sortOrdr??0)-(r[d].sortOrdr??0))}),{nodes:r,rootIds:e}}function B(n){return{...n,nodes:JSON.parse(JSON.stringify(n.nodes)),rootIds:n.rootIds.slice()}}function ae(){return`tmp_${Math.random().toString(36).slice(2,10)}`}function $(n,r){if(!r||r==="-")return n.rootIds.length;const e=n.nodes[r];return e?e.children.length:0}function de(n,r,e){const s=n.nodes[r];if(s)if(e&&e!=="-"){const o=n.nodes[e];if(!o||o.type!=="F")return;s.prntBkmkId=e,o.children=[...o.children,r]}else s.prntBkmkId="-",n.rootIds=[...n.rootIds,r]}function ce(n,r){const e=n.nodes[r];if(!e)return;const s=e.prntBkmkId;if(s&&s!=="-"){const o=n.nodes[s];o?.type==="F"&&(o.children=o.children.filter(t=>t!==r))}else n.rootIds=n.rootIds.filter(o=>o!==r)}function q(n,r){const e=n.nodes[r];if(!e)return;e.type==="F"&&e.children.slice().forEach(a=>q(n,a)),ce(n,r);const{[r]:s,...o}=n.nodes;n.nodes=o}function pe(n,r,e){if(r===e)return n;const s=n.nodes[r];if(!s)return n;const o=JSON.parse(JSON.stringify(s));o.bkmkId=e;const t={...n.nodes,[e]:o};delete t[r];let a=n.rootIds;if(o.prntBkmkId&&o.prntBkmkId!=="-"){const d=t[o.prntBkmkId];d?.type==="F"&&(t[o.prntBkmkId]={...d,children:d.children.map(c=>c===r?e:c)})}else a=n.rootIds.map(d=>d===r?e:d);return{...n,nodes:t,rootIds:a}}function x(n){return n.rootIds.find(r=>n.nodes[r]?.type==="F")??null}function v(n,r){const e={};Object.values(n).forEach(c=>{const i=c.bkmkId,p=c.prntBkmkId;!i||!p||p==="-"||p===i||(e[p]??=[]).push(i)});const s=new Set,o=c=>{if(s.has(c))return null;const i=n[c];if(!i)return null;s.add(c);try{if(i.type==="F"){const I=i,m=e[c]??[];return{type:"F",bkmkId:c,bkmkNm:I.bkmkNm,prntBkmkId:I.prntBkmkId,children:m.map(o).filter(Boolean)}}const p=i;return{type:"M",bkmkId:c,bkmkNm:p.menuNm,menuId:p.menuId,menuNm:p.menuNm,prntBkmkId:p.prntBkmkId}}finally{s.delete(c)}},t=Object.values(n).filter(c=>c.prntBkmkId==="-"&&c.type==="M").map(c=>c.bkmkId),a=Object.values(n).filter(c=>c.prntBkmkId==="-"&&c.type==="F").map(c=>c.bkmkId);return Array.from(new Set([...r,...t,...a])).map(o).filter(Boolean)}function P(n,r){for(const e of Object.values(n))if(e.type==="M"&&e.menuId===r)return e.bkmkId;return null}function j(n,r,e){(!e||e==="-"?r:n[e].children||[]).forEach((o,t)=>{const a=n[o];a&&(a.sortOrdr=t)})}const H={DEFAULT_PRNT_GBCD:1},le=n=>n&&typeof n=="object"&&typeof n.menuId=="string"&&typeof n.menuNm=="string",z=n=>Array.isArray(n)&&n.every(le);let E=[],Y=[];const ie=n=>{if(n&&typeof n=="object"){const r=n;if(r.menus&&z(r.menus))return r.menus;if(z(n))return n}return console.warn("⚠️ 메뉴 응답이 비어있거나 예상과 다릅니다."),[]},ue=(n,r)=>!!r&&n.crprCd===r.crprCd&&n.userId===r.userId&&(n.prntGbcd??H.DEFAULT_PRNT_GBCD)===(r.prntGbcd??H.DEFAULT_PRNT_GBCD),me=n=>{if(E.length===n.length&&E.every((t,a)=>t.menuId===n[a]?.menuId&&t.menuPrntId===n[a]?.menuPrntId))return Y;if(!n.length)return[];const r=new Map,e=[];n.forEach(t=>t?.menuId&&r.set(t.menuId,{...t,children:[]})),n.forEach(t=>{const a=r.get(t.menuId);a&&(t.menuPrntId&&t.menuPrntId!==""&&t.menuPrntId!=="-"?r.get(t.menuPrntId)?.children?.push(a):e.push(a))});const s=t=>t.sort((a,d)=>(a?.menuNo??0)-(d?.menuNo??0)).map(a=>({...a,children:a.children&&a.children.length?s(a.children):void 0})),o=s(e);return E=[...n],Y=o,o},_=b.create((n,r)=>({menuList:[],flatMenuList:[],isLoading:!1,error:null,_lastFetchParams:null,fetchMenu:async({crprCd:e,userId:s,prntGbcd:o})=>{const t={crprCd:e,userId:s,prntGbcd:o??H.DEFAULT_PRNT_GBCD};if(ue(t,r()._lastFetchParams)){console.log("✅ 중복 fetch 차단",t);return}n({isLoading:!0,error:null,_lastFetchParams:t});try{const a=await g.callService(g.getServiceCode("AUTH_MENU"),t),d=ie(a),c=me(d);n({flatMenuList:d,menuList:c,isLoading:!1,error:null})}catch(a){n({isLoading:!1,error:a?.message??"메뉴 로드 실패"})}},clearMenu:()=>{n({menuList:[],flatMenuList:[],error:null,_lastFetchParams:null})},findMenuById:e=>{const{flatMenuList:s}=r();return s.find(o=>o.menuId===e)??null}})),O={MAX_TABS:15},G=b.create((n,r)=>({activeMenuId:null,activeMenuItem:null,activeDetailItem:null,tabs:[],sidebarCollapsed:!1,maxTabs:O.MAX_TABS,tabProtectFlag:{},tabParams:{},componentLabelMap:{},clearMenuViewStore:()=>{n({activeMenuId:null,activeMenuItem:null,activeDetailItem:null,tabs:[],sidebarCollapsed:!1,maxTabs:O.MAX_TABS,tabProtectFlag:{},tabParams:{},componentLabelMap:{}})},openTabFromMenu:(e,s)=>{const{tabs:o}=r(),t=o.find(d=>d.key===e.menuId),a=o.find(d=>d.key===e.menuId);if(t)a!=null?(n({activeMenuId:e.menuId,activeMenuItem:e}),r().setTabParams(e.menuId,s||{}),e?.prsnInfoYn==="Y"&&r().setProtectFlagForKey(e.menuId)):F.message.warning("유효하지 않은 메뉴정보입니다.");else{if(o.length>O.MAX_TABS){console.warn("❌ 최대 탭 개수를 초과했습니다."),F.message.warning(`최대 ${O.MAX_TABS}개의 탭만 열 수 있습니다.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("zustand"),g=require("../utils/index.cjs"),F=require("antd"),Z=require("../chunks/layout-components-CfFi4fiJ.cjs"),L=require("react"),V=require("react-router-dom");function Q(n,r){let e;try{e=n()}catch{return}return{getItem:o=>{var t;const a=c=>c===null?null:JSON.parse(c,void 0),d=(t=e.getItem(o))!=null?t:null;return d instanceof Promise?d.then(a):a(d)},setItem:(o,t)=>e.setItem(o,JSON.stringify(t,void 0)),removeItem:o=>e.removeItem(o)}}const T=n=>r=>{try{const e=n(r);return e instanceof Promise?e:{then(s){return T(s)(e)},catch(s){return this}}}catch(e){return{then(s){return this},catch(s){return T(s)(e)}}}},ee=(n,r)=>(e,s,o)=>{let t={storage:Q(()=>localStorage),partialize:C=>C,version:0,merge:(C,S)=>({...S,...C}),...r},a=!1;const d=new Set,c=new Set;let i=t.storage;if(!i)return n((...C)=>{console.warn(`[zustand persist middleware] Unable to update item '${t.name}', the given storage is currently unavailable.`),e(...C)},s,o);const p=()=>{const C=t.partialize({...s()});return i.setItem(t.name,{state:C,version:t.version})},I=o.setState;o.setState=(C,S)=>(I(C,S),p());const m=n((...C)=>(e(...C),p()),s,o);o.getInitialState=()=>m;let u;const h=()=>{var C,S;if(!i)return;a=!1,d.forEach(y=>{var N;return y((N=s())!=null?N:m)});const k=((S=t.onRehydrateStorage)==null?void 0:S.call(t,(C=s())!=null?C:m))||void 0;return T(i.getItem.bind(i))(t.name).then(y=>{if(y)if(typeof y.version=="number"&&y.version!==t.version){if(t.migrate){const N=t.migrate(y.state,y.version);return N instanceof Promise?N.then(K=>[!0,K]):[!0,N]}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 N;const[K,W]=y;if(u=t.merge(W,(N=s())!=null?N:m),e(u,!0),K)return p()}).then(()=>{k?.(u,void 0),u=s(),a=!0,c.forEach(y=>y(u))}).catch(y=>{k?.(void 0,y)})};return o.persist={setOptions:C=>{t={...t,...C},C.storage&&(i=C.storage)},clearStorage:()=>{i?.removeItem(t.name)},getOptions:()=>t,rehydrate:()=>h(),hasHydrated:()=>a,onHydrate:C=>(d.add(C),()=>{d.delete(C)}),onFinishHydration:C=>(c.add(C),()=>{c.delete(C)})},t.skipHydration||h(),u||m},M=ee,w=b.create()(M((n,r)=>({user:null,hrInfo:null,isLoggedIn:()=>!!r().user,setLoginUser:(e,s)=>{n({user:e,hrInfo:s??null}),console.log("사용자 로그인:",e,s)},clearLoginUser:()=>{n({user:null,hrInfo:null}),console.log("사용자 로그아웃")},updateUser:(e,s)=>{const o=r().user,t=r().hrInfo;o&&n({user:{...o,...e}}),t&&n({hrInfo:{...t,...s}})}}),{name:"user-storage",partialize:n=>({user:n.user,hrInfo:n.hrInfo,isLoggedIn:n.isLoggedIn})})),A={CACHE_SIZE_LIMIT:1e3},l={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 n=Array.from(this.cacheHits.entries());n.sort((e,s)=>e[1]-s[1]),n.slice(0,Math.floor(n.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(n){return this.loadedGroups.has(n)},markGroupLoaded(n){this.loadedGroups.add(n)}},te=n=>{console.log("대규모 데이터 변환 시작:",n);const r={};if(n&&n.code&&Array.isArray(n.code)){const e=n.code,s=n.opt||[],o=new Map;s.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;r[a]||(r[a]={});const c=(o.get(t.cmmnCd)||[]).reduce((i,p)=>(p.optnCd&&p.optnNm&&(i[p.optnCd]=p.optnNm),i),{});r[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(c).length>0?c:null,originalData:t}}})}return console.log("대규모 데이터 변환 완료:",r),r},f=b.create()(M((n,r)=>({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set,fetchData:async()=>{n({isLoading:!0,error:null});try{console.log("대규모 공통코드 데이터 가져오기 시작: SCMSIGN00301");const e=await g.callService(g.getServiceCode("SRCH_CODE"),{crprCd:"100"});console.log("대규모 공통코드 응답:",e),console.log("대규모 공통코드목록:",e.code),console.log("대규모 공통코드옵션션목록:",e.opt);const s=te(e);l.clearCache();const o=new Set(Object.keys(s));o.forEach(t=>{l.markGroupLoaded(t)}),n({codeData:s,isLoading:!1,error:null,lastUpdated:new Date,loadedGroups:o}),console.log("대규모 공통코드 데이터 가져오기 완료")}catch(e){console.error("대규모 공통코드 데이터 가져오기 실패:",e),n({isLoading:!1,error:e instanceof Error?e.message:"대규모 공통코드 데이터 가져오기 실패"})}},loadSpecificGroup:async e=>{const{codeData:s,loadedGroups:o}=r();if(!s||o.has(e))return;const t=new Set(o).add(e);n({loadedGroups:t}),l.markGroupLoaded(e)},setData:e=>{l.clearCache();const s=new Set(Object.keys(e));s.forEach(o=>{l.markGroupLoaded(o)}),n({codeData:e,lastUpdated:new Date,loadedGroups:s})},clearData:()=>{l.clearCache(),n({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set})},getLoadedGroups:()=>Array.from(r().loadedGroups)}),{name:"large-data-storage",partialize:n=>({codeData:n.codeData,lastUpdated:n.lastUpdated,loadedGroups:Array.from(n.loadedGroups)})})),D=b.create()(M((n,r)=>({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,s)=>{const{enabledOnly:o=!0,systemCodeOnly:t=!1,sortByOrder:a=!1,excludeParentCode:d=!1}=s||{},c=`simpleCodeList_${e}_${o}_${t}_${a}_${d}`;if(l.optionCache.has(c)){const h=l.cacheHits.get(c)||0;return l.cacheHits.set(c,h+1),l.optionCache.get(c)}const i=f.getState().codeData;if(!i)return[];if(!l.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const p=[],I=i[e];I&&Object.values(I).forEach(h=>{if(!(o&&!h.enabled)&&!(t&&h.systemCodeYn!=="Y"))if(d){const C=e.length,S=h.codeValue.substring(C);S.length>0&&p.push({...h,codeValue:S})}else p.push(h)});let m;a?m=p.sort((h,C)=>h.sortOrder!==C.sortOrder?h.sortOrder-C.sortOrder:h.codeValue.localeCompare(C.codeValue)):m=p.sort((h,C)=>h.codeValue.localeCompare(C.codeValue));const u=m.map(h=>({label:h.codeNm,value:h.codeValue,tagColor:h.labelColor}));return l.optionCache.size>=A.CACHE_SIZE_LIMIT&&l.cleanupCache(),l.optionCache.set(c,u),l.cacheHits.set(c,1),u},getCodeName:e=>{if(l.nameCache.has(e)){const o=l.cacheHits.get(`name_${e}`)||0;return l.cacheHits.set(`name_${e}`,o+1),l.nameCache.get(e)}const s=f.getState().codeData;if(!s)return null;for(const o of Object.values(s))for(const t of Object.values(o))if(t.codeValue===e)return l.nameCache.set(e,t.codeNm),l.cacheHits.set(`name_${e}`,1),t.codeNm;return null},getCodeColor:e=>{if(l.colorCache.has(e)){const o=l.cacheHits.get(`color_${e}`)||0;return l.cacheHits.set(`color_${e}`,o+1),l.colorCache.get(e)}const s=f.getState().codeData;if(!s)return null;for(const o of Object.values(s))for(const t of Object.values(o))if(t.codeValue===e)return l.colorCache.set(e,t.labelColor||""),l.cacheHits.set(`color_${e}`,1),t.labelColor;return null},getGridLookup:e=>{const s=`gridLookup_${e}`;if(l.optionCache.has(s)){const i=l.cacheHits.get(s)||0;return l.cacheHits.set(s,i+1),l.optionCache.get(s)}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=[],d=[];Object.values(t).filter(i=>i.enabled).sort((i,p)=>i.sortOrder-p.sortOrder).forEach(i=>{a.push(i.codeNm),d.push(i.codeValue)});const c={labels:a,values:d,lookupDisplay:!0};return l.optionCache.set(s,c),l.cacheHits.set(s,1),c},getCodeByOption:(e,s,o)=>{const t=`codeByOption_${e}_${s}_${o}`;if(l.codeCache.has(t)){const p=l.cacheHits.get(t)||0;return l.cacheHits.set(t,p+1),l.codeCache.get(t)}const a=f.getState().codeData;if(!a)return[];const d=[],c=a[e];c&&Object.values(c).forEach(p=>{p.enabled&&p.options&&p.options[s]===o&&d.push({...p,codeNm:p.options[s]||p.codeNm})});const i=d.sort((p,I)=>p.codeValue.localeCompare(I.codeValue));return l.codeCache.size>=A.CACHE_SIZE_LIMIT&&l.cleanupCache(),l.codeCache.set(t,i),l.cacheHits.set(t,1),i},getCodeListByOption:(e,s,o)=>{const{enabledOnly:t=!0,systemCodeOnly:a=!1,sortByOrder:d=!1}=o||{},c=`codeListByOption_${e}_${s}_${t}_${a}_${d}`;if(l.codeCache.has(c)){const u=l.cacheHits.get(c)||0;return l.cacheHits.set(c,u+1),l.codeCache.get(c)}const i=f.getState().codeData;if(!i)return[];if(!l.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const p=[],I=i[e];I&&Object.values(I).forEach(u=>{t&&!u.enabled||a&&u.systemCodeYn!=="Y"||u.options&&u.options[s]&&p.push({label:u.options[s],value:u.commonCode,tagColor:u.labelColor})});let m;return d?m=p.sort((u,h)=>u.value.localeCompare(h.value)):m=p.sort((u,h)=>u.value.localeCompare(h.value)),l.codeCache.size>=A.CACHE_SIZE_LIMIT&&l.cleanupCache(),l.codeCache.set(c,m),l.cacheHits.set(c,1),m},getAvailableGroupCodes:()=>{const e="available_group_codes";if(l.nameCache.has(e)){const t=l.cacheHits.get(e)||0;return l.cacheHits.set(e,t+1),JSON.parse(l.nameCache.get(e))}const s=f.getState().codeData;if(!s)return[];const o=Object.keys(s).sort();return l.nameCache.set(e,JSON.stringify(o)),l.cacheHits.set(e,1),o},clearCodes:()=>{f.getState().clearData()}}),{name:"code-storage",partialize:n=>({})})),oe=b.create()(M((n,r)=>({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,s)=>{const o=`option_${e}_${s}`;if(l.optionCache.has(o)){const d=l.cacheHits.get(o)||0;return l.cacheHits.set(o,d+1),l.optionCache.get(o)}const t=f.getState().codeData;if(!t)return null;const a=t[e];if(a&&a[s]){const d=a[s].options;return l.optionCache.set(o,d),l.cacheHits.set(o,1),d}return null},getOptionByKey:(e,s,o)=>{const t=`option_${e}_${s}_${o}`;if(l.optionCache.has(t)){const c=l.cacheHits.get(t)||0;return l.cacheHits.set(t,c+1),l.optionCache.get(t)}const a=r().getOptionValue(e,s),d=a?a[o]:null;return l.optionCache.set(t,d),l.cacheHits.set(t,1),d},clearCodes:()=>{f.getState().clearData()}}),{name:"option-storage",partialize:n=>({})})),se=b.create()(M((n,r)=>({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(l.colorCache.has(e)){const o=l.cacheHits.get(`color_${e}`)||0;return l.cacheHits.set(`color_${e}`,o+1),l.colorCache.get(e)}const s=f.getState().codeData;if(!s)return null;for(const o of Object.values(s))for(const t of Object.values(o))if(t.codeValue===e)return l.colorCache.set(e,t.labelColor||""),l.cacheHits.set(`color_${e}`,1),t.labelColor;return null},getColorMapping:()=>{const e="color_mapping";if(l.optionCache.has(e)){const t=l.cacheHits.get(e)||0;return l.cacheHits.set(e,t+1),l.optionCache.get(e)}const s=f.getState().codeData;if(!s)return[];const o=[];return Object.values(s).forEach(t=>{Object.values(t).forEach(a=>{a.labelColor&&o.push({code:a.codeValue,color:a.labelColor})})}),l.optionCache.set(e,o),l.cacheHits.set(e,1),o},clearCodes:()=>{f.getState().clearData()}}),{name:"color-storage",partialize:n=>({})})),ne=(n,r)=>({nodes:{},rootIds:[],loadedFor:void 0,loading:!1,error:void 0,treeNodes:[],isMenuBookmarked:e=>Object.values(r().nodes).some(s=>s.type==="M"&&s.menuId===e),getPrntBkmkIdByMenuId:e=>{const s=P(r().nodes,e);return s?r().nodes[s]?.prntBkmkId??"-":"-"},getNodeByMenuId:e=>{const s=P(r().nodes,e);if(!s)return null;const o=r().nodes[s];return o?.type==="M"?o:null},getFolderTree:e=>{const{nodes:s,rootIds:o}=r(),t=d=>e?d.toLowerCase().includes(e.toLowerCase()):!0,a=d=>{const c=s[d];if(!c||c.type!=="F")return null;const i=c,p=(i.children||[]).map(m=>s[m]).filter(m=>!!m&&m.type==="F").map(m=>a(m.bkmkId)).filter(Boolean);return t(i.bkmkNm)||p.length>0?{key:i.bkmkId,title:`📁 ${i.bkmkNm}`,children:p.length?p:void 0}:null};return o.map(d=>a(d)).filter(Boolean)},loadFavorites:async(e,s=!1)=>{console.log("loadFavorites ::::: ",e,s);const o=r();if(!(!s&&o.loadedFor===e&&Object.keys(o.nodes).length)){n({loading:!0,error:void 0});try{const t=await g.callService("SCMBKMK00101",{userId:e}),a=Array.isArray(t?.sub)?t.sub:[],d=re(a),c=v(d.nodes,d.rootIds);n({...d,treeNodes:c,loadedFor:e,loading:!1})}catch(t){throw n({loading:!1,error:t?.message||"즐겨찾기 로드 실패"}),t}}},loadFavoritesIfNeeded:async e=>{const s=r();(s.loadedFor!==e||Object.keys(s.nodes).length===0)&&await r().loadFavorites(e)},clearFavorites:()=>{n({nodes:{},rootIds:[],treeNodes:[],loadedFor:void 0,loading:!1,error:void 0}),console.log("📚 북마크 스토어 초기화 완료")},addNode:async e=>{const s=B(r()),o=ae();n(t=>{const a=e.sortOrdr??$(t,e.prntBkmkId),d={...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 de(d,o,e.prntBkmkId),d.treeNodes=v(d.nodes,d.rootIds),d});try{let t=o;const a=$(r(),e.prntBkmkId),d=await g.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:g.getUserId()});return t=String(d?.bkmkId??d?.itemId??o),n(c=>{const i=pe(c,o,t);return{...i,treeNodes:v(i.nodes,i.rootIds)}}),t}catch(t){throw n(s),t}},moveNode:async({bkmkId:e,newPrntBkmkId:s,sortOrdr:o,userId:t})=>{const a=r(),d=structuredClone(a.nodes),c=[...a.rootIds],i=d[e];if(!i)return;if(s!=="-"){const u=d[s];if(!u||u.type!=="F")throw new Error("부모는 폴더만 가능합니다.")}const p=i.prntBkmkId??"-",I=p==="-"?c:d[p].children||=[];{const u=I.indexOf(e);u>=0&&I.splice(u,1)}const m=s==="-"?c:d[s].children||=[];m.splice(Math.max(0,Math.min(o,m.length)),0,e),i.prntBkmkId=s,n({nodes:d,rootIds:c}),j(d,c,s),j(d,c,p);try{await g.callService("SCMBKMK00104",{bkmkId:e,prntBkmkId:s,sortOrdr:o,chngId:t})}catch(u){throw n(a),u}},removeNode:async e=>{const s=B(r());n(o=>{if(!o.nodes[e])return o;const t={...o,nodes:{...o.nodes},rootIds:o.rootIds.slice(),treeNodes:o.treeNodes};return q(t,e),t.treeNodes=v(t.nodes,t.rootIds),t});try{await g.callService("SCMBKMK00103",{bkmkId:e})}catch(o){throw n(s),o}},editNode:async({bkmkId:e,userId:s,bkmkNm:o,prntBkmkId:t,sortOrdr:a})=>{const d=B(r());n(c=>{const i={...c,nodes:{...c.nodes}},p=i.nodes[e];return p?.type==="F"&&typeof o=="string"&&(i.nodes[e]={...p,bkmkNm:o}),i});try{await g.callService("SCMBKMK00102",{iudFlag:"U",userId:s,bkmkId:e,bkmkNm:o,prntBkmkId:t,sortOrdr:a,chngId:g.getUserId()})}catch(c){throw n(d),c}},addFolder:async(e,s,o,t)=>await r().addNode({type:"F",bkmkNm:e,prntBkmkId:s,sysCd:o,userId:t}),addMenuToFolder:async(e,s)=>P(r().nodes,s.menuId)?"이미 북마크에 저장된 메뉴입니다.":await r().addNode({type:"M",prntBkmkId:e,sysCd:"KH",userId:g.getUserId(),menuId:s.menuId,menuNm:s.menuNm}),toggleMenuFavorite:async(e,s)=>{if(!e)return;const o=r(),t=Object.values(o.nodes).find(d=>d.type==="M"&&d.menuId===s.menuId);if(t){await r().removeNode(t.bkmkId);return}let a=x(o);a||(await r().loadFavorites(e,!0),a=x(r())),a&&await r().addNode({type:"M",prntBkmkId:a,sysCd:"KH",userId:g.getUserId(),menuId:s.menuId,menuNm:s.menuNm})},removeMenuByMenuId:async e=>{const s=r(),o=P(s.nodes,e);o&&await r().removeNode(o)},removeMenu:async e=>{await r().removeNode(e)},removeFolder:async e=>{await r().removeNode(e)},editFolder:async(e,s,o,t,a)=>{await r().editNode({bkmkId:e,userId:s,bkmkNm:o,prntBkmkId:t,sortOrdr:a})},convertToAntTreeData:(e,s,o,t=!1)=>{const a=c=>o?c.toLowerCase().includes(o.toLowerCase()):!0,d=c=>{const i=e[c];if(!i||t&&i.type!=="F")return null;if(i.type==="F"){const p=i,I=(p.children||[]).map(u=>d(u)).filter(Boolean);return a(p.bkmkNm)||I.length>0?{key:p.bkmkId,type:"F",title:`📁 ${p.bkmkNm}`,bkmkNm:p.bkmkNm,prntBkmkId:p.prntBkmkId,sortOrdr:p.sortOrdr,fullPath:p.fullPath,children:I.length?I:void 0}:null}else{const p=i,I=p.menuNm?`${p.menuNm} (${p.menuId})`:p.menuId;return a(I)?{key:p.bkmkId,type:"M",title:`📄 ${I}`,prntBkmkId:p.prntBkmkId,sortOrdr:p.sortOrdr,fullPath:p.fullPath,isLeaf:!0}:null}};return s.map(d).filter(Boolean)}}),R=b.create(ne);function re(n){const r={},e=[],s=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"){r[a.bkmkId]={...a,bkmkNm:t.bkmkNm??t.BKMK_NM??t.name??a.bkmkId,children:[]};const d=Array.isArray(t.children)?t.children:[];s(d)}else r[a.bkmkId]={...a,menuId:t.menuId??t.MENU_ID??"",menuNm:t.menuNm??t.MENU_NM}})};return s(n),Object.values(r).forEach(o=>{if(o.prntBkmkId&&o.prntBkmkId!=="-"){const t=r[o.prntBkmkId];t?.type==="F"&&t.children.push(o.bkmkId)}else o.type==="F"&&e.push(o.bkmkId)}),e.sort((o,t)=>(r[o].sortOrdr??0)-(r[t].sortOrdr??0)),Object.values(r).forEach(o=>{o.type==="F"&&o.children.sort((a,d)=>(r[a].sortOrdr??0)-(r[d].sortOrdr??0))}),{nodes:r,rootIds:e}}function B(n){return{...n,nodes:JSON.parse(JSON.stringify(n.nodes)),rootIds:n.rootIds.slice()}}function ae(){return`tmp_${Math.random().toString(36).slice(2,10)}`}function $(n,r){if(!r||r==="-")return n.rootIds.length;const e=n.nodes[r];return e?e.children.length:0}function de(n,r,e){const s=n.nodes[r];if(s)if(e&&e!=="-"){const o=n.nodes[e];if(!o||o.type!=="F")return;s.prntBkmkId=e,o.children=[...o.children,r]}else s.prntBkmkId="-",n.rootIds=[...n.rootIds,r]}function ce(n,r){const e=n.nodes[r];if(!e)return;const s=e.prntBkmkId;if(s&&s!=="-"){const o=n.nodes[s];o?.type==="F"&&(o.children=o.children.filter(t=>t!==r))}else n.rootIds=n.rootIds.filter(o=>o!==r)}function q(n,r){const e=n.nodes[r];if(!e)return;e.type==="F"&&e.children.slice().forEach(a=>q(n,a)),ce(n,r);const{[r]:s,...o}=n.nodes;n.nodes=o}function pe(n,r,e){if(r===e)return n;const s=n.nodes[r];if(!s)return n;const o=JSON.parse(JSON.stringify(s));o.bkmkId=e;const t={...n.nodes,[e]:o};delete t[r];let a=n.rootIds;if(o.prntBkmkId&&o.prntBkmkId!=="-"){const d=t[o.prntBkmkId];d?.type==="F"&&(t[o.prntBkmkId]={...d,children:d.children.map(c=>c===r?e:c)})}else a=n.rootIds.map(d=>d===r?e:d);return{...n,nodes:t,rootIds:a}}function x(n){return n.rootIds.find(r=>n.nodes[r]?.type==="F")??null}function v(n,r){const e={};Object.values(n).forEach(c=>{const i=c.bkmkId,p=c.prntBkmkId;!i||!p||p==="-"||p===i||(e[p]??=[]).push(i)});const s=new Set,o=c=>{if(s.has(c))return null;const i=n[c];if(!i)return null;s.add(c);try{if(i.type==="F"){const I=i,m=e[c]??[];return{type:"F",bkmkId:c,bkmkNm:I.bkmkNm,prntBkmkId:I.prntBkmkId,children:m.map(o).filter(Boolean)}}const p=i;return{type:"M",bkmkId:c,bkmkNm:p.menuNm,menuId:p.menuId,menuNm:p.menuNm,prntBkmkId:p.prntBkmkId}}finally{s.delete(c)}},t=Object.values(n).filter(c=>c.prntBkmkId==="-"&&c.type==="M").map(c=>c.bkmkId),a=Object.values(n).filter(c=>c.prntBkmkId==="-"&&c.type==="F").map(c=>c.bkmkId);return Array.from(new Set([...r,...t,...a])).map(o).filter(Boolean)}function P(n,r){for(const e of Object.values(n))if(e.type==="M"&&e.menuId===r)return e.bkmkId;return null}function j(n,r,e){(!e||e==="-"?r:n[e].children||[]).forEach((o,t)=>{const a=n[o];a&&(a.sortOrdr=t)})}const H={DEFAULT_PRNT_GBCD:1},le=n=>n&&typeof n=="object"&&typeof n.menuId=="string"&&typeof n.menuNm=="string",z=n=>Array.isArray(n)&&n.every(le);let E=[],Y=[];const ie=n=>{if(n&&typeof n=="object"){const r=n;if(r.menus&&z(r.menus))return r.menus;if(z(n))return n}return console.warn("⚠️ 메뉴 응답이 비어있거나 예상과 다릅니다."),[]},ue=(n,r)=>!!r&&n.crprCd===r.crprCd&&n.userId===r.userId&&(n.prntGbcd??H.DEFAULT_PRNT_GBCD)===(r.prntGbcd??H.DEFAULT_PRNT_GBCD),me=n=>{if(E.length===n.length&&E.every((t,a)=>t.menuId===n[a]?.menuId&&t.menuPrntId===n[a]?.menuPrntId))return Y;if(!n.length)return[];const r=new Map,e=[];n.forEach(t=>t?.menuId&&r.set(t.menuId,{...t,children:[]})),n.forEach(t=>{const a=r.get(t.menuId);a&&(t.menuPrntId&&t.menuPrntId!==""&&t.menuPrntId!=="-"?r.get(t.menuPrntId)?.children?.push(a):e.push(a))});const s=t=>t.sort((a,d)=>(a?.menuNo??0)-(d?.menuNo??0)).map(a=>({...a,children:a.children&&a.children.length?s(a.children):void 0})),o=s(e);return E=[...n],Y=o,o},_=b.create((n,r)=>({menuList:[],flatMenuList:[],isLoading:!1,error:null,_lastFetchParams:null,fetchMenu:async({crprCd:e,userId:s,prntGbcd:o})=>{const t={crprCd:e,userId:s,prntGbcd:o??H.DEFAULT_PRNT_GBCD};if(ue(t,r()._lastFetchParams)){console.log("✅ 중복 fetch 차단",t);return}n({isLoading:!0,error:null,_lastFetchParams:t});try{const a=await g.callService(g.getServiceCode("AUTH_MENU"),t),d=ie(a),c=me(d);n({flatMenuList:d,menuList:c,isLoading:!1,error:null})}catch(a){n({isLoading:!1,error:a?.message??"메뉴 로드 실패"})}},clearMenu:()=>{n({menuList:[],flatMenuList:[],error:null,_lastFetchParams:null})},findMenuById:e=>{const{flatMenuList:s}=r();return s.find(o=>o.menuId===e)??null}})),O={MAX_TABS:15},G=b.create((n,r)=>({activeMenuId:null,activeMenuItem:null,activeDetailItem:null,tabs:[],sidebarCollapsed:!1,maxTabs:O.MAX_TABS,tabProtectFlag:{},tabParams:{},componentLabelMap:{},clearMenuViewStore:()=>{n({activeMenuId:null,activeMenuItem:null,activeDetailItem:null,tabs:[],sidebarCollapsed:!1,maxTabs:O.MAX_TABS,tabProtectFlag:{},tabParams:{},componentLabelMap:{}})},openTabFromMenu:(e,s)=>{const{tabs:o}=r(),t=o.find(d=>d.key===e.menuId),a=o.find(d=>d.key===e.menuId);if(t)a!=null?(n({activeMenuId:e.menuId,activeMenuItem:e}),r().setTabParams(e.menuId,s||{}),e?.prsnInfoYn==="Y"&&r().setProtectFlagForKey(e.menuId)):F.message.warning("유효하지 않은 메뉴정보입니다.");else{if(o.length>O.MAX_TABS){console.warn("❌ 최대 탭 개수를 초과했습니다."),F.message.warning(`최대 ${O.MAX_TABS}개의 탭만 열 수 있습니다.
|
|
2
2
|
기존 탭을 닫고 다시 시도해주세요.`);return}const d={key:e.menuId,label:e.menuNm,gubun:"M",menuItem:e,closable:!0};n({tabs:[...o,d],activeMenuId:e.menuId,activeMenuItem:e}),r().setTabParams(e.menuId,s||{}),e?.prsnInfoYn==="Y"&&r().setProtectFlagForKey(e.menuId)}},openTabByMenuId:(e,s)=>{const o=_.getState().findMenuById(e);o?r().openTabFromMenu(o,s):F.message.warning("메뉴 ID를 찾을 수 없습니다.")},openDetailView:(e,s,o)=>{const{tabs:t}=r();if(t.find(d=>d.key===e.viewId))r().focusTab(e.viewId);else{const d={key:e.viewId,label:e.viewLabel,gubun:"C",componentItem:{scrnPath:s,prsnInfoYn:o,prntInfo:e.prntInfo},closable:!0};n({tabs:[...t,d],activeMenuId:e.viewId,activeDetailItem:e}),r().setTabParams(e.viewId,e.viewParams||{})}},closeTab:e=>{const{tabs:s,activeMenuId:o}=r();s.find(d=>d.key===e);const t=s.filter(d=>d.key!==e);let a=o;if(o===e){const d=s.findIndex(c=>c.key===e);a=t.length?t[Math.min(d,t.length-1)]?.key??null:null}n({tabs:t}),a&&r().focusTab(a)},focusTab:e=>{const{tabs:s}=r(),o=s.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"?(n({activeMenuId:e,activeMenuItem:o.menuItem,activeDetailItem:t}),console.log("✅ 탭 포커스 (개인정보) - activeMenuItem:",o.menuItem),r().setProtectFlagForKey(e)):(n({activeMenuId:e,activeMenuItem:o.menuItem,activeDetailItem:t}),r().clearProtectFlagForKey(e))}else n({activeMenuId:e,activeMenuItem:null,activeDetailItem:null}),console.warn("❌ 탭을 찾을 수 없음:",e)},closeAllTabs:()=>n({tabs:[],activeMenuId:null,activeMenuItem:null,activeDetailItem:null}),toggleSidebar:()=>n(e=>({sidebarCollapsed:!e.sidebarCollapsed})),reorderTabs:e=>n(s=>{const o=new Map(s.tabs.map(t=>[t.key,t]));return{tabs:e.map(t=>o.get(t)).filter(Boolean)}}),setProtectFlagForKey:e=>n(s=>({tabProtectFlag:{...s.tabProtectFlag,[e]:!0}})),clearProtectFlagForKey:e=>n(s=>{const o={...s.tabProtectFlag};return delete o[e],{tabProtectFlag:o}}),setTabParams:(e,s)=>n(o=>{const t=o.tabParams[e]||{},a={...s||{}};return Object.keys(t).length===Object.keys(a).length&&Object.keys(a).every(c=>t[c]===a[c])?o:{tabParams:{...o.tabParams,[e]:a}}}),setComponentLabelMap:(e,s)=>n({componentLabelMap:e})})),X=b.create((n,r)=>({popups:[],activePopupId:null,isLoading:!1,error:null,zIndexSeed:1e3,openPopup:async(e,s,o)=>{n({isLoading:!0,error:null});try{let t=null;const a=await g.callService(g.getServiceCode("SRCH_POPU"),{crprCd:g.getUserInfo()?.crprCd,popuCd:e});t=a?.mstr;const d=a?.dtls||[];if(!t||!t.popuUrl){const u=`팝업 정보를 찾을 수 없습니다: ${e}`;throw console.error(u),new Error(u)}const i=(u=>`/src/pages/views/popup/${u}`)(t.popuUrl),p=r().zIndexSeed+1,I={popupId:`popup_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,popupCode:e,popupTitle:o?.title||t.popuNm||"팝업",popupUrl:i,popupParams:s,width:t.popuWdth||800,height:t.popuHght||600,resizable:!0,draggable:!0,buttonList:d,config:o,zIndex:p},m=r().popups.find(u=>u.popupCode===e);if(m){n({activePopupId:m.popupId,popups:r().popups.map(u=>u.popupId===m.popupId?{...u,config:o}:u),isLoading:!1});return}n(u=>({popups:[...u.popups,I],activePopupId:I.popupId,isLoading:!1,zIndexSeed:p}))}catch(t){n({error:t instanceof Error?t.message:"팝업 열기 실패",isLoading:!1})}},openCorePopup:(e,s)=>{const o=`popup_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,t=r().zIndexSeed+1,d=Z.localPopupRegistry[e]?.defaultConfig||{},c={...d,...s,buttons:s?.buttons!==void 0?s.buttons:d.buttons,callback:s?.callback!==void 0?s.callback:d.callback},i=s?.defaultParams||{},p=r().popups.find(m=>m.popupCode===e&&m.isLocal);if(p){const m=r().zIndexSeed+1;n({activePopupId:p.popupId,zIndexSeed:m}),n(u=>({popups:u.popups.map(h=>h.popupId===p.popupId?{...h,config:c,zIndex:m,close:()=>{r().closePopup(p.popupId)}}:h)}));return}const I={popupId:o,popupCode:e,popupTitle:c.title||e,popupUrl:"",popupParams:i,width:c.width||1e3,height:c.height||700,resizable:c.resizable!==void 0?c.resizable:!0,draggable:c.draggable!==void 0?c.draggable:!0,buttonList:[],config:c,isLocal:!0,zIndex:t,close:()=>{r().closePopup(o)}};n(m=>({popups:[...m.popups,I],activePopupId:o,zIndexSeed:t}))},closePopup:e=>{const{popups:s,activePopupId:o}=r(),t=s.filter(d=>d.popupId!==e);let a=o;o===e&&(a=t.length>0?t[t.length-1].popupId:null),n({popups:t,activePopupId:a})},closeAllPopups:()=>{n({popups:[],activePopupId:null})},setActivePopup:e=>{const s=r().zIndexSeed+1;n(o=>({activePopupId:e,zIndexSeed:s,popups:o.popups.map(t=>t.popupId===e?{...t,zIndex:s}:t)}))},updatePopupConfig:(e,s)=>{n(o=>({popups:o.popups.map(t=>t.popupId===e?{...t,config:{...t.config,...s}}:t)}))}})),U=b.create()(M((n,r)=>({systemMap:[],fetchSystemMap:async()=>{n({systemMap:[{sysCd:"KE",appItCd:"ERPS",appCd:"SAP",systemNm:"K-ERP",appNm:"SAP"},{sysCd:"KE",appItCd:"KERP",appCd:"FI",systemNm:"K-ERP",appNm:"재무회계"},{sysCd:"KE",appItCd:"KERP",appCd:"FM",systemNm:"K-ERP",appNm:"예산관리"},{sysCd:"KE",appItCd:"KERP",appCd:"MM",systemNm:"K-ERP",appNm:"구매계약"},{sysCd:"KE",appItCd:"KERP",appCd:"SD",systemNm:"K-ERP",appNm:"영업관리"},{sysCd:"CH",appItCd:"KERP",appCd:"PMN",systemNm:"K-ERP",appNm:"파트너관리"},{sysCd:"FB",appItCd:"FBK",appCd:"FBK",systemNm:"펌뱅킹",appNm:"펌뱅킹"},{sysCd:"IA",appItCd:"IAC",appCd:"IAC",systemNm:"내부회계",appNm:"내부회계"},{sysCd:"ET",appItCd:"ETAX",appCd:"ETAX",systemNm:"전자세금계산서",appNm:"전자세금계산서"},{sysCd:"HR",appItCd:"KHR",appCd:"HR",systemNm:"K-HR",appNm:"HR 솔루션"},{sysCd:"YT",appItCd:"KHYT",appCd:"YT",systemNm:"K-HR 연말정산",appNm:"연말정산"},{sysCd:"CM",appItCd:"KCM",appCd:"CM",systemNm:"K-HR 프레임워크 공통",appNm:"프레임워크 공통"},{sysCd:"PA",appItCd:"KHPE",appCd:"PE",systemNm:"K-HR 평정",appNm:"평정"},{sysCd:"OT",appItCd:"POF",appCd:"POF",systemNm:"시간외(PC-OFF)",appNm:"시간외(PC-OFF)"},{sysCd:"DC",appItCd:"CDT",appCd:"CDT",systemNm:"전자계약",appNm:"전자계약"},{sysCd:"KS",appItCd:"EAUD",appCd:"EAUD",systemNm:"K-업무지원",appNm:"e-감사"},{sysCd:"KS",appItCd:"INR",appCd:"INR",systemNm:"K-업무지원",appNm:"청렴신고"},{sysCd:"KS",appItCd:"ITSM",appCd:"ITAM",systemNm:"K-업무지원",appNm:"ITAM"},{sysCd:"KS",appItCd:"CMM",appCd:"CMM",systemNm:"K-업무지원",appNm:"차량/회의실"},{sysCd:"KS",appItCd:"OAM",appCd:"OAM",systemNm:"K-업무지원",appNm:"OA전산물품관리"},{sysCd:"KS",appItCd:"KSGA",appCd:"GAM",systemNm:"K-업무지원",appNm:"총무관리"},{sysCd:"KS",appItCd:"KSGA",appCd:"ACM",systemNm:"K-업무지원",appNm:"출입관리"},{sysCd:"KS",appItCd:"KSGA",appCd:"IVM",systemNm:"K-업무지원",appNm:"비품관리"},{sysCd:"KS",appItCd:"KSGA",appCd:"SGS",systemNm:"K-업무지원",appNm:"인장서비스"},{sysCd:"KS",appItCd:"HIS",appCd:"HIS",systemNm:"K-업무지원",appNm:"사료관리"},{sysCd:"KS",appItCd:"WFAX",appCd:"WFAX",systemNm:"K-업무지원",appNm:"웹펙스서비스"},{sysCd:"KS",appItCd:"SMS",appCd:"SMS",systemNm:"K-업무지원",appNm:"메시지서비스"},{sysCd:"KS",appItCd:"BID",appCd:"BID",systemNm:"K-업무지원",appNm:"경영공시"},{sysCd:"KS",appItCd:"PAM",appCd:"PAM",systemNm:"K-업무지원",appNm:"언론미디어"},{sysCd:"KS",appItCd:"DAC",appCd:"DAC",systemNm:"K-업무지원",appNm:"심의자문위원회"},{sysCd:"KS",appItCd:"IPR",appCd:"IPR",systemNm:"K-업무지원",appNm:"지식재산권신청"},{sysCd:"KS",appItCd:"ISB",appCd:"ISB",systemNm:"K-업무지원",appNm:"정보공유게시판"},{sysCd:"DE",appItCd:"BCOM",appCd:"BCOM",systemNm:"온통",appNm:"온통"},{sysCd:"TS",appItCd:"ITSM",appCd:"ITSM",systemNm:"ITSM",appNm:"ITSM"},{sysCd:"EP",appItCd:"EPOP",appCd:"EPOP",systemNm:"국민신문고",appNm:"국민신문고"},{sysCd:"VC",appItCd:"VOC",appCd:"VOC",systemNm:"VOC",appNm:"VOC"},{sysCd:"CC",appItCd:"CAL",appCd:"CAL",systemNm:"콜센터",appNm:"콜센터"},{sysCd:"LA",appItCd:"LEG",appCd:"LEG",systemNm:"법규포털",appNm:"법규포털"},{sysCd:"IM",appItCd:"IDXM",appCd:"IDXM",systemNm:"지수방법론",appNm:"지수방법론"},{sysCd:"PM",appItCd:"ORM",appCd:"ORM",systemNm:"운영리스크관리",appNm:"운영리스크관리"},{sysCd:"RF",appItCd:"RFID",appCd:"RFID",systemNm:"RFID(비품관리)",appNm:"RFID(비품관리)"},{sysCd:"SL",appItCd:"SGM",appCd:"SGM",systemNm:"인장관리",appNm:"인장관리"},{sysCd:"DM",appItCd:"LBS",appCd:"LBS",systemNm:"도서관리",appNm:"도서관리"},{sysCd:"HE",appItCd:"RMS",appCd:"RMS",systemNm:"원격지원",appNm:"원격지원"},{sysCd:"WF",appItCd:"WFX",appCd:"WFX",systemNm:"WebFax",appNm:"WebFax"},{sysCd:"SM",appItCd:"SMT",appCd:"SMT",systemNm:"SMS",appNm:"SMS"},{sysCd:"SO",appItCd:"SSO",appCd:"SSO",systemNm:"SSO",appNm:"SSO"},{sysCd:"SF",appItCd:"SFO",appCd:"SFO",systemNm:"생체인증(One Pass)",appNm:"생체인증 FIDO"},{sysCd:"SP",appItCd:"SPO",appCd:"SPO",systemNm:"생체인증(장정맥)",appNm:"생체인증 장정맥"},{sysCd:"AG",appItCd:"APG",appCd:"APG",systemNm:"API GW",appNm:"API Gateway"},{sysCd:"AM",appItCd:"APM",appCd:"APM",systemNm:"APM",appNm:"APM"},{sysCd:"JS",appItCd:"BXS",appCd:"BXS",systemNm:"배치스케줄러",appNm:"배치스케줄러"},{sysCd:"DT",appItCd:"PDT",appCd:"PDT",systemNm:"개인정보변환",appNm:"개인정보변환"}]})},setSystemMap:e=>{n({systemMap:e})},clearSystemMap:()=>{n({systemMap:[]})},getBySysCd:e=>r().systemMap.filter(s=>s.sysCd===e),getByAppItCd:e=>r().systemMap.filter(s=>s.appItCd===e),findByAppCd:e=>r().systemMap.find(s=>s.appCd===e),filterSystemMap:e=>{const{sysCd:s,appItCd:o,appCd:t}=e;return r().systemMap.filter(a=>(s?a.sysCd===s:!0)&&(o?a.appItCd===o:!0)&&(t?a.appCd===t:!0))}}),{name:"system-info-store"})),Ce=b.create(n=>({requestCount:0,loading:!1,showLoading:()=>n(r=>{const e=r.requestCount+1;return{requestCount:e,loading:e>0}}),hideLoading:()=>n(r=>{const e=Math.max(0,r.requestCount-1);return{requestCount:e,loading:e>0}})})),he=b.create(n=>({requestCount:0,loading:!1,showLoading:()=>n(r=>{const e=r.requestCount+1;return{requestCount:e,loading:e>0}}),hideLoading:()=>n(r=>{const e=Math.max(0,r.requestCount-1);return{requestCount:e,loading:e>0}})}));function J(){const[n,r]=L.useState(!1),e=L.useCallback(s=>{const o=s?.getModifierState?.("CapsLock");typeof o=="boolean"&&r(o)},[]);return{capsOn:n,onKeyDown:e}}function Ie(n){const{loginApi:r,fetchCommonCodes:e,onAfterLogin:s,onError:o,rememberCookie:t={enabled:!0,days:30}}=n,[a,d]=L.useState(!1),{capsOn:c,onKeyDown:i}=J(),p="SCMSIGN00101",I=`${__SYS_CD__}_login_id`,m={id:t?.enabled?g.getCookie(I):void 0,pswr:void 0},u=L.useCallback(async(h,C)=>{d(!0);try{const S={crprCd:"100",id:h.id,pswr:await g.encryptSha256(h.pswr)},y=await(r??(N=>g.callService(p,N)))(S);if(y?.userInfo?.userId){if(w.getState().setLoginUser(y.userInfo,y?.hrInfo),t?.enabled){const N=t.days??30;h.remember?g.setCookie(I,h.id??"",N):g.setCookie(I,"",0)}return e?await e():await D.getState().fetchCommonCodes(),s?s(y,C):(F.message.success(`${y.userInfo.userNm}님 환영합니다.`),C("/main")),{user:y.userInfo,response:y}}else throw o?.({user:y.userInfo,response:y,navigate:C}),new Error("사용자 정보가 유효하지 않습니다.")}catch(S){throw o?.(S),S}finally{d(!1)}},[p,r,e,s,o,t?.enabled,t?.days]);return{loading:a,capsOn:c,onKeyDown:i,prefills:m,doLogin:u}}function fe(){const n=V.useNavigate();return()=>{w.getState().clearLoginUser(),U.getState().clearSystemMap(),D.getState().clearCodes(),_.getState().clearMenu(),G.getState().clearMenuViewStore(),R.getState().clearFavorites(),n("/login")}}const ye=()=>D.getState(),ge=()=>X.getState(),Se=()=>w.getState(),Ne=()=>R.getState(),be=()=>_.getState(),Me=()=>G.getState(),ke=()=>U.getState();exports.useCapsLock=J;exports.useCode=ye;exports.useCodeStore=D;exports.useColorStore=se;exports.useFavorite=Ne;exports.useFavoriteStore=R;exports.useLoadingStore=Ce;exports.useLogin=Ie;exports.useLogout=fe;exports.useMenuModel=be;exports.useMenuModelStore=_;exports.useMenuView=Me;exports.useMenuViewStore=G;exports.useOptionStore=oe;exports.usePopupLoadingStore=he;exports.usePopupState=ge;exports.usePopupStore=X;exports.useSystemCode=ke;exports.useSystemStore=U;exports.useUser=Se;exports.useUserStore=w;
|
package/dist/stores/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { create as N } from "zustand";
|
|
2
2
|
import { callService as b, getServiceCode as E, getUserId as v, getUserInfo as Q, getCookie as ee, encryptSha256 as te, setCookie as G } from "../utils/index.js";
|
|
3
3
|
import { message as L } from "antd";
|
|
4
|
-
import { l as oe } from "../chunks/layout-components-
|
|
4
|
+
import { l as oe } from "../chunks/layout-components-CyKRhOdT.js";
|
|
5
5
|
import { useState as Y, useCallback as X } from "react";
|
|
6
6
|
import { useNavigate as se } from "react-router-dom";
|
|
7
7
|
function ne(n, r) {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_1283_3082)">
|
|
3
|
+
<mask id="mask0_1283_3082" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="24" height="24">
|
|
4
|
+
<path d="M24 0H0V24H24V0Z" fill="white"/>
|
|
5
|
+
</mask>
|
|
6
|
+
<g mask="url(#mask0_1283_3082)">
|
|
7
|
+
<path d="M19.3845 3.23077C19.3845 2.64924 18.9506 2.17847 18.4245 2.17847H5.57523C5.03985 2.17847 4.61523 2.64924 4.61523 3.23077V21.8308L19.3845 13.7815V3.23077Z" fill="url(#paint0_linear_1283_3082)"/>
|
|
8
|
+
<path d="M11.4921 18.0739C11.806 17.9077 12.1844 17.9077 12.4983 18.0739L19.3752 21.8216V13.7723L11.4829 18.0739H11.4921Z" fill="url(#paint1_linear_1283_3082)"/>
|
|
9
|
+
<path d="M12 6.60925V12.8677" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
10
|
+
<path d="M15.1291 9.72925H8.87061" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
11
|
+
</g>
|
|
12
|
+
</g>
|
|
13
|
+
<defs>
|
|
14
|
+
<linearGradient id="paint0_linear_1283_3082" x1="8.50139" y1="3.24001" x2="13.246" y2="15.6831" gradientUnits="userSpaceOnUse">
|
|
15
|
+
<stop stop-color="#9797B3"/>
|
|
16
|
+
<stop offset="1" stop-color="#B9B9D7"/>
|
|
17
|
+
</linearGradient>
|
|
18
|
+
<linearGradient id="paint1_linear_1283_3082" x1="15.1844" y1="15.0462" x2="17.3352" y2="22.68" gradientUnits="userSpaceOnUse">
|
|
19
|
+
<stop stop-color="#797994"/>
|
|
20
|
+
<stop offset="1" stop-color="#AAAACC"/>
|
|
21
|
+
</linearGradient>
|
|
22
|
+
<clipPath id="clip0_1283_3082">
|
|
23
|
+
<rect width="24" height="24" fill="white"/>
|
|
24
|
+
</clipPath>
|
|
25
|
+
</defs>
|
|
26
|
+
</svg>
|