@bwg-ui/core 1.2.22 → 1.2.24
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-PYufvmGR.cjs → MenuReport-BXd6Cync.cjs} +1 -1
- package/dist/chunks/{MenuReport-Bsz0OEet.js → MenuReport-BaUlj-2W.js} +1 -1
- package/dist/chunks/{common-components-aD7WLZ5f.js → common-components-DVV6_tAQ.js} +11450 -10995
- package/dist/chunks/common-components-IDvLizgf.cjs +1109 -0
- package/dist/chunks/{layout-components-OnRWLesF.js → layout-components-CsjlGe-8.js} +2 -2
- package/dist/chunks/{layout-components-CIO09Lhe.cjs → layout-components-DWoz_2hX.cjs} +2 -2
- package/dist/components/common/index.cjs +1 -1
- package/dist/components/common/index.js +1 -1
- package/dist/components/guide/index.cjs +1 -1
- package/dist/components/guide/index.js +1 -1
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/components/pages/board/CMAdminBoardM01.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 +2 -2
- package/dist/stores/index.cjs +1 -1
- package/dist/stores/index.js +1 -1
- package/dist/styles/assets/images/header/icon/ico-bell.svg +3 -3
- package/dist/styles/assets/images/header/icon/ico-logout.svg +10 -10
- package/dist/styles/assets/images/header/icon/ico-setting.svg +4 -4
- package/dist/styles/assets/images/header/icon/ico-sidebar-arrow.svg +3 -3
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.js +8 -7
- package/package.json +1 -1
- package/dist/chunks/common-components-CdNJR00U.cjs +0 -1109
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as g, jsx as e, Fragment as F } from "react/jsx-runtime";
|
|
2
2
|
import { ServiceCodeProvider as pe, CommonCodeProvider as he, SearchBoxProvider as Q, ScreenProtectProvider as ge, useLock as fe } from "../provider/index.js";
|
|
3
3
|
import { Routes as be, Route as K, Navigate as ye, useNavigate as Ce } from "react-router-dom";
|
|
4
|
-
import { G as ve, B as we, Q as xe } from "./common-components-
|
|
4
|
+
import { G as ve, B as we, Q as xe } from "./common-components-DVV6_tAQ.js";
|
|
5
5
|
import { Spin as j, Layout as _, ColorPicker as ke, Button as x, Popover as Ne, Avatar as Ie, Tabs as Le, Tooltip as z, AutoComplete as Te, Input as Y, Segmented as Se, ConfigProvider as Pe, Menu as ne, Result as le, Space as Me, Typography as Ee, Empty as Z, Form as R, Flex as Be, Checkbox as De } from "antd";
|
|
6
6
|
import { lazy as D, useEffect as L, useState as S, useRef as $, useMemo as W, useCallback as B, createElement as ce, memo as X, cloneElement as Oe, Component as Re, Suspense as J } from "react";
|
|
7
7
|
import { useLogout as Fe, useMenuViewStore as T, useMenuModelStore as Ae, useFavoriteStore as ze, usePopupStore as ee, useLogin as _e, useSystemStore as $e } from "../stores/index.js";
|
|
@@ -11,7 +11,7 @@ import { getCookie as Je, getTodateString as oe, setCookie as et, THEME_COOKIE_N
|
|
|
11
11
|
import { useSensors as tt, useSensor as nt, PointerSensor as rt, DndContext as ot, closestCenter as st } from "@dnd-kit/core";
|
|
12
12
|
import { restrictToHorizontalAxis as at } from "@dnd-kit/modifiers";
|
|
13
13
|
import { arrayMove as it, SortableContext as lt, horizontalListSortingStrategy as ct, useSortable as dt } from "@dnd-kit/sortable";
|
|
14
|
-
const ut = D(() => import("./MenuReport-
|
|
14
|
+
const ut = D(() => import("./MenuReport-BaUlj-2W.js")), mt = D(() => import("./common-components-DVV6_tAQ.js").then((r) => r.$)), pt = D(() => import("./common-components-DVV6_tAQ.js").then((r) => r.a0)), ht = D(() => import("./common-components-DVV6_tAQ.js").then((r) => r.a1)), gt = D(() => import("./common-components-DVV6_tAQ.js").then((r) => r.a2)), ft = D(() => import("./common-components-DVV6_tAQ.js").then((r) => r.a3)), bt = {
|
|
15
15
|
// 게시판/문의
|
|
16
16
|
CORE_REPORT: {
|
|
17
17
|
component: ut,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),B=require("../provider/index.cjs"),R=require("react-router-dom"),G=require("./common-components-
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),B=require("../provider/index.cjs"),R=require("react-router-dom"),G=require("./common-components-IDvLizgf.cjs"),o=require("antd"),l=require("react"),k=require("../stores/index.cjs"),j=require("@ant-design/icons"),P=require("../utils/index.cjs"),D=require("@dnd-kit/core"),se=require("@dnd-kit/modifiers"),_=require("@dnd-kit/sortable");var $=typeof document<"u"?document.currentScript:null;function oe(r){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const n in r)if(n!=="default"){const a=Object.getOwnPropertyDescriptor(r,n);Object.defineProperty(t,n,a.get?a:{enumerable:!0,get:()=>r[n]})}}return t.default=r,Object.freeze(t)}const q=oe(j),ae=l.lazy(()=>Promise.resolve().then(()=>require("./MenuReport-BXd6Cync.cjs"))),ie=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-IDvLizgf.cjs")).then(r=>r.SearchDepartmentP01$1)),le=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-IDvLizgf.cjs")).then(r=>r.SearchDepartmentP02$1)),ce=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-IDvLizgf.cjs")).then(r=>r.SearchOrganizationP01$1)),de=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-IDvLizgf.cjs")).then(r=>r.SearchOrganizationP02$1)),ue=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-IDvLizgf.cjs")).then(r=>r.CMPrgrMstrP02$1)),K={CORE_REPORT:{component:ae,defaultConfig:{title:"게시판/문의",width:1200,height:800}},CORE_DEPARTMENT_01:{component:ie,defaultConfig:{title:"부서 검색",width:620,height:700}},CORE_DEPARTMENT_02:{component:le,defaultConfig:{title:"부서 검색",width:620,height:700}},CORE_ORGANIZATION_01:{component:ce,defaultConfig:{title:"조직 검색",width:620,height:700}},CORE_ORGANIZATION_02:{component:de,defaultConfig:{title:"조직 검색",width:1e3,height:700}},CORE_PRGR_02:{component:ue,defaultConfig:{title:"프로그램 검색",width:700,height:800}}},U="bwg-dot-line-wave-v4";function me(){if(typeof document>"u"||document.getElementById(U))return;const r=document.createElement("style");r.id=U,r.textContent=`
|
|
2
2
|
.bwg-dotline {
|
|
3
3
|
display: inline-flex;
|
|
4
4
|
align-items: center;
|
|
@@ -32,4 +32,4 @@
|
|
|
32
32
|
@media (prefers-reduced-motion: reduce) {
|
|
33
33
|
.bwg-dotline .dot { animation: none; }
|
|
34
34
|
}
|
|
35
|
-
`,document.head.appendChild(r)}const pe=({colors:r=["#DAD3FF","#B3A6FF","#9380FF","#816BFA"],count:t,size:n=12,gap:a=10,amp:s=16,speedMs:m=900,direction:g="ltr",phase:h=.7})=>{l.useEffect(()=>{me()},[]);const c=t??r.length,u=Array.from({length:c}),f={"--bwg-size":`${n}px`,"--bwg-gap":`${a}px`,"--bwg-amp":`${s}px`,"--bwg-speed":`${m}ms`},v=m/c*h;return e.jsx("span",{className:"bwg-dotline",role:"img","aria-label":"loading",style:f,children:u.map((y,i)=>e.jsx("span",{className:"dot",style:{backgroundColor:r[i%r.length],animationDelay:g==="ltr"?`${i*v}ms`:`${(c-1-i)*v}ms`}},i))})},he=({spin:r=null,text:t="인증중...",dimStyle:n="dark"})=>{if(!(r??!0))return null;const m=n==="dark";return e.jsxs("div",{className:"loading-overlay",style:{position:"fixed",height:"100vh",left:0,right:0,top:0,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:8,padding:"8px 12px",background:m?"rgba(0, 0, 0, 0.6)":"rgba(255, 255, 255, 0.85)",color:m?"#fff":"#333",backdropFilter:"blur(4px)",zIndex:1e4},"aria-live":"polite","aria-busy":"true",role:"status",children:[e.jsx(o.Spin,{indicator:e.jsx(pe,{colors:["#DAD3FF","#B3A6FF","#9380FF","#816BFA"],size:12,gap:10,amp:16,speedMs:900,phase:.75,direction:"ltr"})}),e.jsx("span",{className:"bwg-spin-txt",style:{marginTop:"15px"},children:t})]})},ge=({routes:r,useCommonProvider:t=!0,useServiceProvider:n=!0})=>{let s=e.jsxs(R.Routes,{children:[e.jsx(R.Route,{path:"/",element:e.jsx(R.Navigate,{to:"/login"})}),e.jsx(R.Route,{path:"/login",element:r.login}),e.jsx(R.Route,{path:"/main",element:r.main})]});return n&&(s=e.jsx(B.ServiceCodeProvider,{children:s})),t&&(s=e.jsx(B.CommonCodeProvider,{children:s})),e.jsx(G.GlobalConfigProvider,{children:s})},{Content:fe}=o.Layout,Z=({config:r={},children:t})=>{const n={wrapper:{className:"content-wrapper",...r.wrapper},body:{className:"content-body",...r.body},...r};return e.jsx(fe,{className:n.wrapper.className,style:n.wrapper.style,children:e.jsx(G.BwgConfigProvider,{children:e.jsx("div",{className:n.body.className,style:n.body.style,children:t})})})},xe="data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M11.9998%2019.9993V20.9993C11.9998%2021.3932%2012.0774%2021.7833%2012.2282%2022.1473C12.3789%2022.5112%2012.5999%2022.8419%2012.8785%2023.1205C13.157%2023.399%2013.4877%2023.62%2013.8517%2023.7708C14.2156%2023.9215%2014.6057%2023.9991%2014.9997%2023.9991C15.3936%2023.9991%2015.7837%2023.9215%2016.1477%2023.7708C16.5116%2023.62%2016.8423%2023.399%2017.1209%2023.1205C17.3994%2022.8419%2017.6204%2022.5112%2017.7712%2022.1473C17.9219%2021.7833%2017.9995%2021.3932%2017.9995%2020.9993V19.9993M20.9994%2011.9997C20.9994%2014.9996%2022.9993%2019.9993%2022.9993%2019.9993H7.00006C7.00006%2019.9993%208.99996%2015.9995%208.99996%2011.9997C8.99996%208.73187%2011.7318%206%2014.9997%206C18.2675%206%2020.9994%208.73187%2020.9994%2011.9997Z'%20stroke='%23485299'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e",be="data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_93_4488)'%3e%3cpath%20d='M18%207H21C22.1046%207%2023%207.89543%2023%209V21C23%2022.1046%2022.1046%2023%2021%2023H18M11%2011L7%2015M7%2015L11%2019M7%2015L19%2015'%20stroke='%23485299'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_93_4488'%3e%3crect%20width='30'%20height='30'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e",ye="data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M14%206H16C16.5523%206%2017%206.44772%2017%207V7.56879C17%207.99659%2017.2871%208.36825%2017.6822%208.53228C18.0775%208.69638%2018.5377%208.63384%2018.8403%208.33123L19.2426%207.92891C19.6331%207.53838%2020.2663%207.53838%2020.6568%207.92891L22.071%209.34312C22.4616%209.73365%2022.4615%2010.3668%2022.071%2010.7573L21.6688%2011.1596C21.3661%2011.4622%2021.3036%2011.9225%2021.4677%2012.3177C21.6317%2012.7129%2022.0034%2013%2022.4313%2013L23%2013C23.5523%2013%2024%2013.4477%2024%2014V16C24%2016.5523%2023.5523%2017%2023%2017H22.4312C22.0034%2017%2021.6318%2017.2871%2021.4677%2017.6822C21.3036%2018.0775%2021.3661%2018.5377%2021.6688%2018.8403L22.071%2019.2426C22.4616%2019.6331%2022.4616%2020.2663%2022.071%2020.6568L20.6568%2022.071C20.2663%2022.4616%2019.6331%2022.4616%2019.2426%2022.071L18.8403%2021.6688C18.5377%2021.3661%2018.0775%2021.3036%2017.6822%2021.4677C17.2871%2021.6318%2017%2022.0034%2017%2022.4312V23C17%2023.5523%2016.5523%2024%2016%2024H14C13.4477%2024%2013%2023.5523%2013%2023V22.4313C13%2022.0034%2012.7129%2021.6317%2012.3177%2021.4677C11.9225%2021.3036%2011.4622%2021.3661%2011.1596%2021.6688L10.7573%2022.071C10.3668%2022.4616%209.73363%2022.4616%209.34311%2022.071L7.92889%2020.6568C7.53837%2020.2663%207.53837%2019.6331%207.92889%2019.2426L8.33123%2018.8403C8.63384%2018.5377%208.69638%2018.0775%208.53228%2017.6822C8.36825%2017.2871%207.99659%2017%207.56879%2017H7C6.44772%2017%206%2016.5523%206%2016V14C6%2013.4477%206.44772%2013%207%2013L7.56877%2013C7.99658%2013%208.36825%2012.7129%208.53229%2012.3178C8.6964%2011.9225%208.63386%2011.4623%208.33123%2011.1597L7.92891%2010.7573C7.53838%2010.3668%207.53838%209.73365%207.92891%209.34313L9.34312%207.92891C9.73365%207.53839%2010.3668%207.53839%2010.7573%207.92891L11.1597%208.33123C11.4623%208.63386%2011.9225%208.6964%2012.3178%208.53229C12.7129%208.36825%2013%207.99658%2013%207.56876V7C13%206.44772%2013.4477%206%2014%206Z'%20stroke='%23485299'%20stroke-width='1.5'/%3e%3cpath%20d='M17%2015C17%2016.1046%2016.1046%2017%2015%2017C13.8954%2017%2013%2016.1046%2013%2015C13%2013.8954%2013.8954%2013%2015%2013C16.1046%2013%2017%2013.8954%2017%2015Z'%20stroke='%23485299'%20stroke-width='1.5'/%3e%3c/svg%3e",{Header:Ce}=o.Layout,M={light:{headerBg:"#ffffff",headerText:"#000000",sidebarBg:"#ffffff",sidebarText:"#000000",buttonPrimary:"#1890ff",buttonPrimaryHover:"#40a9ff",buttonPrimaryActive:"#096dd9",buttonDefault:"#ffffff",buttonDefaultHover:"#f5f5f5",buttonDefaultBorder:"#d9d9d9",buttonPermissionBorder:"#bdb1ff"},dark:{headerBg:"#4a4a4a",headerText:"#ffffff",sidebarBg:"#4a4a4a",sidebarText:"#ffffff",buttonPrimary:"#177ddc",buttonPrimaryHover:"#1890ff",buttonPrimaryActive:"#0958b5",buttonDefault:"#434343",buttonDefaultHover:"#303030",buttonDefaultBorder:"#434343",buttonPermissionBorder:"#bdb1ff"},blue:{headerBg:"#4a90e2",headerText:"#ffffff",sidebarBg:"#4a90e2",sidebarText:"#ffffff",buttonPrimary:"#1890ff",buttonPrimaryHover:"#40a9ff",buttonPrimaryActive:"#096dd9",buttonDefault:"#ffffff",buttonDefaultHover:"#f0f8ff",buttonDefaultBorder:"#4a90e2",buttonPermissionBorder:"#bdb1ff"},modern:{headerBg:"#f3f4ff",headerText:"#333333",sidebarBg:"#ffffff",sidebarText:"#555555",buttonPrimary:"#6449FC",buttonPrimaryHover:"#6449FC",buttonPrimaryActive:"#6449FC",buttonDefault:"#ffffff",buttonDefaultHover:"#f5f5f5",buttonDefaultBorder:"#dddddd",buttonPermissionBorder:"#bdb1ff"}},Y=({config:r={}})=>{const t={gap:14,minWidth:200,items:r.right?.items,alarm:{visible:!0,...r.right?.alarm||{}},theme:{visible:!0,...r.right?.theme||{}},logout:{visible:!0,...r.right?.logout||{}},avatar:{visible:!0,width:30,height:30,...r.right?.avatar||{}}},n={wrapper:{className:"header-wrapper",...r.wrapper},logo:{gap:10,...r.logo},right:t},a=R.useNavigate(),[s,m]=l.useState("modern"),g=l.useRef(null),h=k.useLogout(),c=(i,C)=>{try{if(!/^[a-zA-Z0-9-]+$/.test(i)||!/^[#a-zA-Z0-9()\s,.-]+$/.test(C))return;document.documentElement.style.setProperty(i,C)}catch(T){console.error("CSS variable setting failed:",T)}},u=i=>{if(!M[i])return;m(i);const C={...M[i]};c("--header-bg",C.headerBg),c("--header-text",C.headerText),c("--sidebar-bg",C.sidebarBg),c("--sidebar-text",C.sidebarText),c("--button-primary",C.buttonPrimary),c("--button-primary-hover",C.buttonPrimaryHover),c("--button-primary-active",C.buttonPrimaryActive),c("--button-default",C.buttonDefault),c("--button-default-hover",C.buttonDefaultHover),c("--button-default-border",C.buttonDefaultBorder),c("--button-permission-border",C.buttonPermissionBorder),g.current&&g.current.setAttribute("data-theme",i),document.documentElement.setAttribute("data-theme",i),P.setCookie(P.THEME_COOKIE_NAME,i,30)};l.useEffect(()=>{const i=P.getCookie(P.THEME_COOKIE_NAME);i&&M[i]?u(i):u("modern")},[]);const f=()=>({...M[s]}).headerBg,v=()=>{h(),a("/login")};P.getTodateString?P.getTodateString("HH:mm:ss"):new Date().toLocaleTimeString("ko-KR");const y=e.jsxs("div",{style:{padding:"8px 0"},children:[e.jsxs("div",{style:{marginBottom:"12px"},children:[e.jsx(o.ColorPicker,{value:f(),disabled:!0,size:"small"}),e.jsx("span",{style:{marginLeft:"8px",fontSize:"12px"},children:"현재 테마 색상"})]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:[e.jsx(o.Button,{type:s==="modern"?"primary":"default",size:"small",onClick:()=>u("modern"),style:{textAlign:"left",backgroundColor:s==="modern"?M.modern.headerBg:void 0,color:s==="modern"?M.modern.headerText:void 0},children:"모던"},"modern"),Object.entries(M).filter(([i])=>i!=="modern").map(([i,C])=>e.jsx(o.Button,{type:s===i?"primary":"default",size:"small",onClick:()=>u(i),style:{textAlign:"left",backgroundColor:s===i?C.headerBg:void 0,color:s===i?C.headerText:void 0},children:i},i))]})]});return e.jsxs(Ce,{className:n.wrapper.className,style:{...n.wrapper.style},children:[n.logo&&e.jsx("div",{className:"header-left",children:e.jsx("div",{className:"logo-container",style:{gap:n.logo?.gap},children:n.logo?.items})}),e.jsxs("div",{className:"header-right",style:{gap:n.right?.gap,minWidth:n.right?.minWidth},children:[n.right?.items?.map((i,C)=>e.jsx("div",{children:i},C)),n.right?.alarm?.visible&&e.jsx(o.Button,{type:"text",icon:e.jsx("img",{src:xe,alt:"알림"}),className:"alarm-btn",onClick:n.right?.alarm?.onClick}),n.right?.theme?.visible&&e.jsx(o.Popover,{content:y,title:"테마 설정",trigger:"click",placement:"bottomRight",onOpenChange:i=>n.right?.theme?.onOpenChange?.(i),children:e.jsx(o.Button,{type:"text",icon:e.jsx("img",{src:ye,alt:"개인설정"}),className:"theme-btn",onClick:n.right?.theme?.onClick})}),n.right?.logout?.visible&&e.jsx(o.Button,{type:"text",icon:e.jsx("img",{src:be,alt:"로그아웃"}),onClick:n.right?.logout?.onClick||v,className:"logout-btn"}),n.right?.avatar?.visible&&e.jsx(o.Avatar,{icon:e.jsx(j.UserOutlined,{}),className:"avatar",style:{width:n.right?.avatar?.width,height:n.right?.avatar?.height},onClick:n.right?.avatar?.onClick})]})]})},H=Object.freeze({Translate:{toString(r){if(!r)return;const{x:t,y:n}=r;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(r){if(!r)return;const{scaleX:t,scaleY:n}=r;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(r){if(r)return[H.Translate.toString(r),H.Scale.toString(r)].join(" ")}},Transition:{toString(r){let{property:t,duration:n,easing:a}=r;return t+" "+n+"ms "+a}}}),ve=l.memo(({className:r,...t})=>{const n=l.useRef(null),{attributes:a,listeners:s,transform:m,transition:g,isDragging:h,setNodeRef:c}=_.useSortable({id:t["data-node-key"]}),[u,f]=l.useState();l.useEffect(()=>{const y=n.current;if(y)if(h){const i=Math.round(y.getBoundingClientRect().width);f(i)}else f(void 0)},[h]);const v={...t.style,transform:m?H.Transform.toString(m):void 0,transition:g??"transform 0.16s ease",cursor:"grab",userSelect:"none",willChange:"transform",width:u??void 0,minWidth:u??void 0,maxWidth:u??void 0,flex:u!==void 0?"0 0 auto":void 0};return l.cloneElement(t.children,{ref:y=>{n.current!==y&&(n.current=y),c(y)},style:v,...a,...s})}),je=l.memo(function({config:t,isFirst:n,isLast:a,canCloseAll:s,onFirst:m,onPrev:g,onNext:h,onLast:c,onCloseAll:u}){return e.jsxs("div",{className:t.wrapper?.className,style:t.wrapper?.style,children:[e.jsx(o.Tooltip,{title:"첫 번째 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(o.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(j.StepBackwardOutlined,{}),onClick:m,disabled:n})}),e.jsx(o.Tooltip,{title:"이전 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(o.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(j.LeftOutlined,{}),onClick:g,disabled:n})}),e.jsx(o.Tooltip,{title:"다음 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(o.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(j.RightOutlined,{}),onClick:h,disabled:a})}),e.jsx(o.Tooltip,{title:"마지막 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(o.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(j.StepForwardOutlined,{}),onClick:c,disabled:a})}),e.jsx(o.Tooltip,{title:"모든 탭 닫기",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(o.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(j.CloseOutlined,{}),onClick:u,disabled:!s})})]})}),X=({config:r={}})=>{const t={wrapper:{className:"menu-tab-wrapper",...r?.wrapper},tabs:{className:"menu-tabs",...r?.tabs},nav:{wrapper:{className:"menu-nav-wrapper",...r?.nav?.wrapper},buttons:{className:"menu-nav-buttons",...r?.nav?.buttons},tooltip:{className:"menu-nav-tooltip",...r?.nav?.tooltip},...r?.nav},...r},n=k.useMenuViewStore(p=>p.tabs),a=k.useMenuViewStore(p=>p.activeMenuId),s=k.useMenuViewStore(p=>p.focusTab),m=k.useMenuViewStore(p=>p.closeTab),g=k.useMenuViewStore(p=>p.reorderTabs),h=D.useSensors(D.useSensor(D.PointerSensor,{activationConstraint:{distance:6}})),c=p=>{s(p)},u=(p,S)=>{S==="remove"&&typeof p=="string"&&m(p)},f=()=>{n.length>0&&s(n[0].key)},v=()=>{if(!a||n.length<=1)return;const p=n.findIndex(S=>S.key===a);p>0&&s(n[p-1].key)},y=()=>{if(!a||n.length<=1)return;const p=n.findIndex(S=>S.key===a);p<n.length-1&&s(n[p+1].key)},i=()=>{n.length>0&&s(n[n.length-1].key)},C=()=>{n.forEach(p=>{m(p.key)})},T=a?n.findIndex(p=>p.key===a):-1,F=T===0,O=T===n.length-1,V=l.useMemo(()=>n.map(p=>({key:p.key,label:p.label,closable:!0,children:null})),[n]),z=l.useCallback(({active:p,over:S})=>{if(!S||p.id===S.id)return;const I=n.findIndex(d=>d.key===p.id),L=n.findIndex(d=>d.key===S.id);if(I<0||L<0||I===L)return;const x=n.map(d=>d.key),b=_.arrayMove(x,I,L);g?.(b)},[n,g]),A=l.useCallback((p,S)=>e.jsx(D.DndContext,{sensors:h,onDragEnd:z,collisionDetection:D.closestCenter,modifiers:[se.restrictToHorizontalAxis],children:e.jsx(_.SortableContext,{items:n.map(I=>I.key),strategy:_.horizontalListSortingStrategy,children:e.jsx(S,{...p,children:I=>l.createElement(ve,{...I.props,key:I.key},I)})})}),[h,z,n]);return e.jsx("div",{className:t.wrapper.className,style:{...t.wrapper.style,display:n.length===0?"none":"block"},children:e.jsx(o.Tabs,{type:"editable-card",activeKey:a||void 0,onChange:c,onEdit:u,className:t.tabs.className,style:t.tabs.style,hideAdd:!0,items:V,tabBarExtraContent:e.jsx(je,{config:t?.nav,isFirst:!!F,isLast:!!O,canCloseAll:n.length>0,onFirst:f,onPrev:v,onNext:y,onLast:i,onCloseAll:C}),renderTabBar:A})})},{Sider:we}=o.Layout,Q=({config:r={}})=>{const t={collapsed:!1,width:230,menuGubunCode:{mainMenu:"MAIN",subMenu:"SUB",program:"PRGM",...r?.menuGubunCode},className:{wrapper:"side-wrapper",search:"sider-search-ipt",segmented:{wrapper:"sider-segmented",item:"sider-segment-item",...r?.className?.segmented},sider:{content:"sider-content",loading:"sider-loading",loadingText:"sider-loading-text",error:"sider-error",errorIcon:"sider-error-icon",errorText:"sider-error-text",menu:"sider-menu",menuContainer:"sider-menu-container",...r?.className?.sider},...r?.className},style:{search:{placeholder:"메뉴명, 메뉴번호 검색...",height:30,...r?.style?.search},...r?.style},...r},[n,a]=l.useState(""),[s,m]=l.useState("category"),{activeMenuId:g,sidebarCollapsed:h,openTabFromMenu:c,toggleSidebar:u}=k.useMenuViewStore(),{menuList:f,isLoading:v,error:y,findMenuById:i}=k.useMenuModelStore(),{nodes:C,treeNodes:T,loadFavoritesIfNeeded:F}=k.useFavoriteStore(),O=l.useMemo(()=>{const x=[],b=(d,N=0)=>{if(d.menuGbCd===t.menuGubunCode.program&&d.scrnPath){const w=" ".repeat(N),E=d.menuNo||"";x.push({value:d.menuId,label:e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[e.jsxs("span",{children:[w,d.menuNm]}),e.jsx("span",{style:{fontSize:"11px",color:"#999",backgroundColor:"#f0f0f0",padding:"2px 6px",borderRadius:"3px",marginLeft:"8px"},children:E})]}),menuItem:d})}d.children&&d.children.length>0&&d.children.forEach(w=>b(w,N+1))};return f.forEach(d=>b(d)),x},[f]),V=l.useMemo(()=>n.trim()?O.filter(x=>{const b=x.menuItem.menuNm.toLowerCase(),d=String(x.menuItem.menuNo||"미지정").toLowerCase(),N=n.toLowerCase();return b.includes(N)||d.includes(N)}):[],[O,n]),z=x=>{if(!x||typeof x!="string"){console.warn("Invalid menu selection value:",x);return}if(!/^[a-zA-Z0-9_-]+$/.test(x)){console.warn("Invalid menu ID format:",x);return}const b=O.find(d=>d.value===x);if(b){const{menuItem:d}=b;if(!d||!d.menuId||!d.menuNm){console.warn("Invalid menu item:",d);return}d.menuGbCd===t.menuGubunCode.program&&d.scrnPath?(console.log("✅ 검색으로 프로그램 메뉴 선택 - 탭 추가 및 setCurrentProgram 호출"),console.log("메뉴명:",d.menuNm,"경로:",d.scrnPath,"scrnId:",d.scrnId),c(d)):(d.menuGbCd===t.menuGubunCode.mainMenu||d.menuGbCd===t.menuGubunCode.subMenu)&&(console.log("❌ 검색으로 메인/서브 메뉴 선택 - 이벤트 무시"),console.log("메뉴명:",d.menuNm,"menuGbCd:",d.menuGbCd)),a("")}},A=l.useCallback(x=>{const b=i(x);b?.menuGbCd===t.menuGubunCode.program&&(console.log("메뉴명:",b.menuNm,"경로:",b.scrnPath,"scrnId:",b.scrnId),c(b))},[i,c]),p=l.useCallback(x=>x.map(b=>({key:b.menuId,label:e.jsx("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:e.jsx("span",{children:b.menuNm})}),icon:S(b.iconCd,b.menuGbCd),children:b.children&&b.children.length>0?p(b.children):void 0})),[]),S=(x,b)=>{if(x){const d=q[x];if(d)return e.jsx(d,{})}if(b)switch(b){case t.menuGubunCode.mainMenu:return e.jsx(q.HomeOutlined,{});case t.menuGubunCode.subMenu:return null;case t.menuGubunCode.program:return null;default:return null}return null},I=l.useCallback(x=>{if(f.length===0)return[];const b=N=>{if(N)return typeof N=="string"?C[N]:N},d=N=>{if(N.type==="M"){const w=N,E=i(w.menuId)||void 0,W=!!E,re=W?`${E?.menuNm??w.menuNm??w.menuId}`:`${w.menuNm??w.menuId} (삭제됨)`;return{key:w.menuId,label:re,icon:W?void 0:e.jsx(j.WarningOutlined,{style:{color:"#faad14"}})}}else{const w=N,E=(w.children??[]).map(b).filter(Boolean).map(d);return{key:w.bkmkId,label:w.bkmkNm??w.bkmkId,icon:w.prntBkmkId==="-"?e.jsx(j.StarOutlined,{}):e.jsx(j.FolderOpenOutlined,{}),children:E}}};return x.map(d)},[i,C,f]),L=l.useMemo(()=>I(T),[I,T,C]);return l.useEffect(()=>{P.getUserId()&&F(P.getUserId())},[F]),l.useEffect(()=>{s==="category"&&a("")},[s]),e.jsxs(we,{className:t.className.wrapper,collapsed:t.collapsed||h,trigger:null,width:t.width||230,children:[e.jsx("div",{style:{position:"absolute",top:"9px",right:"-25px",zIndex:"1000",width:"25px",height:"41px",backgroundColor:"#ffffff",border:"1px solid #dddddd",borderRadius:"0 10px 10px 0",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",boxShadow:"2px 2px 2px rgba(0, 0, 0, 0.05)",transition:"all 0.3s ease"},children:e.jsx(o.Button,{type:"text",icon:t.collapsed||h?e.jsx(j.MenuUnfoldOutlined,{}):e.jsx(j.MenuFoldOutlined,{}),style:{fontSize:"12px",color:"#787878",padding:0,width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"0 10px 10px 0"},onClick:u})}),!(t.collapsed||h)&&e.jsx("div",{style:{padding:10},children:e.jsx(o.AutoComplete,{value:n,options:V,onSelect:z,onSearch:a,style:{width:"100%"},allowClear:!0,children:e.jsx(o.Input,{className:t.className.search,placeholder:t.style.search.placeholder,prefix:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:e.jsx("path",{d:"M16.4972 16.6667L13.0355 13.1694M14.8475 8.75C14.8475 5.29822 12.0777 2.5 8.66105 2.5C5.24437 2.5 2.47461 5.29822 2.47461 8.75C2.47461 12.2018 5.24437 15 8.66105 15C12.0777 15 14.8475 12.2018 14.8475 8.75Z",stroke:"#5F5F5F",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),size:"middle",style:{height:t.style.search.height||30}})})}),!(t.collapsed||h)&&e.jsx("div",{style:{width:"100%",padding:"0px 10px",marginBottom:"10px"},children:e.jsx(o.Segmented,{className:t.className.segmented.wrapper,options:[{label:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:t.className.segmented.item,style:{display:"flex",alignItems:"center"},children:e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:[e.jsx("path",{d:"M2.46979 6.90625H13.0298C13.7298 6.90625 14.2965 7.47292 14.2965 8.17292V13.5396H1.20312V8.17292C1.20312 7.47292 1.76979 6.90625 2.46979 6.90625Z",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M2.76318 4.70626C2.76318 4.00626 3.18318 3.75293 3.69652 3.75293H11.8032C12.3165 3.75293 12.7365 4.00626 12.7365 4.70626",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M4.71631 1.45996H10.783",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})}),"카테고리"]}),value:"category"},{label:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:t.className.segmented.item,style:{display:"flex",alignItems:"center"},children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:e.jsx("path",{d:"M7.11329 1.33356C7.32084 0.888813 7.66676 0.888813 7.88296 1.33356L9.258 4.25619C9.46556 4.70094 10.0277 5.12753 10.4947 5.20014L13.5647 5.67212C14.0317 5.74473 14.1441 6.08964 13.7982 6.43455L11.5757 8.70367C11.2384 9.04858 11.0222 9.73839 11.1 10.2285L11.6276 13.4325C11.7054 13.9227 11.4287 14.1405 11.0049 13.9045L8.26348 12.3887C7.83972 12.1527 7.15653 12.1527 6.73277 12.3887L3.99134 13.9045C3.56759 14.1405 3.29085 13.9227 3.36868 13.4325L3.89621 10.2285C3.97405 9.73839 3.76649 9.04858 3.42057 8.70367L1.19802 6.43455C0.86075 6.08964 0.964526 5.74473 1.43152 5.67212L4.50158 5.20014C4.96857 5.12753 5.5307 4.70094 5.73825 4.25619L7.11329 1.33356Z",stroke:"currentColor",strokeWidth:"1.5",strokeMiterlimit:"4"})})}),"즐겨찾기"]}),value:"favorite"}],value:s,onChange:x=>{m(x)},style:{width:"100%"},block:!0})}),e.jsxs("div",{className:t.className.sider.content,children:[v&&e.jsxs("div",{className:t.className.sider.loading,style:{padding:10,margin:"0 auto",textAlign:"center",color:"var(--text-primary)"},children:[e.jsx(o.ConfigProvider,{theme:{components:{Spin:{colorPrimary:"var(--primary-color)"}}},children:e.jsx(o.Spin,{size:"default"})}),e.jsx("div",{className:t.className.sider.loadingText,style:{marginTop:10},children:"메뉴 로딩 중..."})]}),y&&e.jsxs("div",{className:t.className.sider.error,children:[e.jsx(j.ExclamationCircleOutlined,{className:t.className.sider.errorIcon}),e.jsx("div",{className:t.className.sider.errorText,children:"메뉴 로드 실패"})]}),!v&&!y&&s==="category"&&f.length===0&&e.jsx("div",{style:{padding:"16px",textAlign:"center",color:"#666",fontSize:"12px"},children:"메뉴가 없습니다"}),!v&&!y&&s==="favorite"&&L.length===0&&e.jsx("div",{style:{padding:"16px",textAlign:"center",color:"#666",fontSize:"12px"},children:"즐겨찾기된 메뉴가 없습니다"}),!v&&!y&&s==="category"&&f.length>0&&e.jsx("div",{className:t.className.sider.menuContainer,children:e.jsx(o.Menu,{theme:"light",mode:"inline",items:p(f),className:t.className.sider.menu,selectedKeys:[g||""],onClick:x=>A(x.key)})}),!v&&!y&&s==="favorite"&&L.length>0&&e.jsx("div",{className:t.className.sider.menuContainer,children:e.jsx(o.Menu,{theme:"light",mode:"inline",items:L,className:t.className.sider.menu,selectedKeys:[g||""],onClick:x=>A(x.key)})})]})]})};class ke extends l.Component{constructor(t){super(t),this.resetError=()=>{this.setState({hasError:!1,error:void 0,errorInfo:void 0})},this.state={hasError:!1}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,n){console.error("ErrorBound caught an error:",t,n),this.setState({error:t,errorInfo:n})}render(){return this.state.hasError?this.props.fallback?this.props.fallback:e.jsxs("div",{style:{padding:"40px 20px",textAlign:"center",backgroundColor:"#fafafa",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"},children:[e.jsx(o.Result,{status:"error",title:"컴포넌트 로딩 중 오류가 발생했습니다",subTitle:this.state.error?`오류 내용: ${this.state.error.message}`:"알 수 없는 오류가 발생했습니다",extra:[e.jsx(o.Button,{type:"primary",icon:e.jsx(j.ReloadOutlined,{}),onClick:this.resetError,style:{marginRight:8},children:"다시 시도"},"retry")]}),this.state.error&&e.jsxs("details",{style:{marginTop:"20px",textAlign:"left",maxWidth:"600px",backgroundColor:"#fff",padding:"16px",borderRadius:"6px",border:"1px solid #d9d9d9"},children:[e.jsx("summary",{style:{cursor:"pointer",fontWeight:"bold"},children:"오류 상세 정보"}),e.jsx("pre",{style:{marginTop:"8px",fontSize:"12px",color:"#666",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:this.state.error.stack})]})]}):this.props.children}}const Ne=({isActive:r,instance:t,params:n})=>{const{activeMenuId:a,closeTab:s}=k.useMenuViewStore(),m=()=>{a&&s(a)};return t?e.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",visibility:r?"visible":"hidden",opacity:r?1:0,transition:"opacity 0.2s ease-in-out",pointerEvents:r?"auto":"none"},children:e.jsx(ke,{children:e.jsx(l.Suspense,{fallback:null,children:t&&l.createElement(t,{params:n})})})}):e.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",visibility:r?"visible":"hidden",opacity:r?1:0,transition:"opacity 0.2s ease-in-out",pointerEvents:r?"auto":"none"},children:e.jsx("div",{style:{width:500,maxWidth:"90%",background:"#fff",borderRadius:16,boxShadow:"0 8px 30px rgba(0,0,0,0.05)",padding:24},children:e.jsx(o.Result,{icon:e.jsx(j.ExclamationCircleTwoTone,{twoToneColor:"#69b1ff"}),status:"warning",title:"등록된 메뉴 정보가 없거나 유효한 메뉴가 아닙니다.",subTitle:e.jsx(o.Typography.Text,{type:"secondary",children:"자세한 내용은 관리자에게 문의바랍니다."}),extra:e.jsx(o.Space,{children:e.jsx(o.Button,{icon:e.jsx(j.CloseOutlined,{}),onClick:m,children:"탭 닫기"})})})})})},J=l.memo(Ne),ee=()=>e.jsxs(e.Fragment,{children:[e.jsx("link",{rel:"preload",as:"image",href:"/src/styles/assets/images/backgrounds/LandingContainer_bg.png"}),e.jsx("div",{className:"LandingContainer-wrap",children:e.jsx("div",{className:"inner",children:e.jsx("div",{className:"content"})})})]}),Se=(r,t)=>{console.log("createPopupViewLoader 호출 - popupUrl:",r);const a=(s=>{if(s.startsWith("/src/pages/views/popup/")){const h=s+".tsx";return console.log(`팝업 URL 변환: ${s} -> ${h}`),h}const g=`/src/pages/views/popup/${s.startsWith("/")?s.substring(1):s}.tsx`;return console.log(`팝업 URL 변환: ${s} -> ${g}`),g})(r);return!a||!t?.glob||!t.glob[a]?(console.warn(`팝업 뷰를 찾을 수 없습니다: ${r} (${a})`),console.warn("사용 가능한 팝업 뷰들:",Object.keys(t?.glob||{})),null):t.glob[a]},Ie=({popup:r,modules:t})=>{const[n,a]=l.useState(null),[s,m]=l.useState(!1),[g,h]=l.useState(null),c=()=>{console.log("PopupArea - handleClose:",r.popupId),k.usePopupStore.getState().closePopup(r.popupId)};return l.useEffect(()=>{(async()=>{console.log("팝업 뷰 로드 시작:",r.popupUrl),m(!0),h(null);try{const f=Se(r.popupUrl,t);if(!f){const i=`팝업 뷰를 찾을 수 없습니다: ${r.popupUrl}`;console.error(i),h(i),m(!1);return}console.log("팝업 뷰 모듈 로드 중...");const v=await f();console.log("팝업 뷰 모듈 로드 완료:",v);const y=v.default;if(console.log("팝업 뷰 컴포넌트:",y),!y)throw new Error("팝업 뷰 컴포넌트를 찾을 수 없습니다");a(()=>y),console.log("팝업 뷰 설정 완료")}catch(f){console.error("팝업 뷰 로드 실패:",f),h(f instanceof Error?f.message:"팝업 뷰 로드 실패")}finally{m(!1)}})()},[r.popupUrl]),s?e.jsxs("div",{className:"popup-loading",children:[e.jsx(o.Spin,{size:"large"}),e.jsx("p",{children:"팝업을 로드하는 중..."})]}):g?e.jsxs("div",{className:"popup-error",children:[e.jsx(o.Empty,{description:g,image:o.Empty.PRESENTED_IMAGE_SIMPLE}),e.jsx(o.Button,{icon:e.jsx(j.ReloadOutlined,{}),onClick:()=>window.location.reload(),children:"다시 시도"})]}):n?e.jsx(l.Suspense,{fallback:e.jsxs("div",{className:"popup-loading",children:[e.jsx(o.Spin,{size:"large"}),e.jsx("p",{children:"컴포넌트를 로드하는 중..."})]}),children:e.jsx(n,{popup:{...r,close:c},onClose:c})}):e.jsx("div",{className:"popup-empty",children:e.jsx(o.Empty,{description:"팝업 내용을 불러올 수 없습니다."})})},te=({modules:r})=>{const{popups:t}=k.usePopupStore();return t.length===0?null:e.jsx(e.Fragment,{children:t.map(n=>{if(n.isLocal||n.popupCode.startsWith("CORE_"))return null;const a=n.config||{},s=a.width||n.width||800,m=a.height||n.height||600,g=a.title||n.popupTitle,h=n.buttonList?.map((c,u)=>({key:c.btnId||`btn_${u}`,text:c.btnNm,type:c.btnId==="CLOSE"?"default":"primary",disabled:c.enblYn!=="Y",danger:!1}))||[];return console.log("팝업 렌더링:",{popupId:n.popupId,popupCode:n.popupCode,title:g,width:s,height:m,buttons:h}),e.jsx(B.SearchBoxProvider,{children:e.jsx("div",{children:e.jsx(Ie,{popup:n,modules:r})},n.popupId)},`sbp-${n.popupId}`)})})},Pe=()=>{const{popups:r,closePopup:t}=k.usePopupStore();return e.jsx(e.Fragment,{children:r.map(n=>{if(!(n.isLocal||n.popupCode.startsWith("CORE_")))return null;const a=K[n.popupCode];if(!a)return null;const s=a.component;return e.jsx(B.SearchBoxProvider,{children:e.jsx(l.Suspense,{fallback:null,children:e.jsx(s,{popup:n,onClose:()=>t(n.popupId)})},n.popupId)},`sbp-${n.popupId}`)})})},Te=r=>({position:"absolute",inset:0,visibility:r?"visible":"hidden",opacity:r?1:0,transition:"opacity 0.2s ease-in-out",pointerEvents:r?"auto":"none"}),Le=({once:r=!0})=>{const{lock:t}=B.useLock(),n=l.useRef(!1);return l.useEffect(()=>{r&&n.current||(n.current=!0,t())},[r,t]),null},ne=({isActive:r,flagged:t,tabKey:n,onUnlock:a,children:s})=>{const m=l.useRef(null),[g,h]=l.useState(!1),c=l.useCallback(f=>{m.current=f,h(!!f)},[]),u=Te(r);return e.jsx("div",{ref:c,style:u,children:g?e.jsxs(B.ScreenProtectProvider,{idleMs:Number.POSITIVE_INFINITY,persistLocked:!1,overlayScope:"scoped",overlayPosition:"absolute",eventTarget:m.current,overlayId:`tab-overlay-${n}`,onUnlock:async()=>(a(),!0),children:[r&&t?e.jsx(Le,{once:!0}):null,s]}):s})},Me=({config:r={},modules:t={view:{path:"/src/pages/views/content"},popup:{path:"/src/pages/views/popups"}}})=>{const n=l.useRef(new Map),{tabs:a,tabParams:s,activeMenuId:m,tabProtectFlag:g,clearProtectFlagForKey:h}=k.useMenuViewStore(),c=l.useCallback(u=>{const f=n.current.get(u.key);if(f)return f;const v=u.gubun==="M"?`${t.view.path}${u.menuItem?.scrnPath}.tsx`:`${t.view.path}${u.componentItem?.scrnPath}.tsx`;let y=t.view?.glob?.[v];if(!y&&typeof{url:typeof document>"u"?require("url").pathToFileURL(__filename).href:$&&$.tagName.toUpperCase()==="SCRIPT"&&$.src||new URL("chunks/layout-components-CIO09Lhe.cjs",document.baseURI).href}<"u",y){const i=l.lazy(y);return n.current.set(u.key,i),i}return null},[t.view?.glob]);return e.jsxs(o.Layout,{className:"main-layout",children:[e.jsx(Y,{config:r?.header}),e.jsxs(o.Layout,{children:[e.jsx(Q,{config:r?.sidebar}),e.jsxs("div",{className:"content-container",children:[e.jsx(X,{config:r?.menuTab}),e.jsxs(Z,{config:r?.content,children:[e.jsx("div",{className:"view-container",children:e.jsxs("div",{style:{position:"relative",width:"100%",height:"100%"},children:[a.map(u=>{const f=c(u),v=m===u.key,y=!!g?.[u.key],i=s[u.key]||{};return e.jsx(B.SearchBoxProvider,{children:e.jsx(ne,{isActive:v,flagged:y,tabKey:u.key,onUnlock:()=>h(u.key),children:e.jsx(J,{isActive:v,instance:f||void 0,params:i},u.key)},u.key)},`sbp-${u.key}`)}),(!m||a.length===0)&&e.jsx(ee,{})]})}),e.jsx(Pe,{}),e.jsx(te,{modules:t?.popup})]})]})]}),e.jsx(G.QuickServiceToggle,{})]})},Be=({config:r,children:t})=>e.jsx("div",{children:"BwgPortal02"});function Ee({config:r,ui:t,navigate:n}){const{loading:a,capsOn:s,prefills:m,onKeyDown:g,doLogin:h}=k.useLogin(r),c=u=>h(u,n);return l.useEffect(()=>{k.useSystemStore.getState().fetchSystemMap()},[]),e.jsx(e.Fragment,{children:t({onSubmit:c,loading:a,capsOn:s,onKeyDown:g,prefills:m})})}function Re({onSubmit:r,loading:t,capsOn:n,onKeyDown:a,prefills:s,labels:m={id:"ID 혹은 사번",pw:"비밀번호",remember:"Remember me",login:"로그인"},header:g,footer:h}){const[c]=o.Form.useForm();return l.useEffect(()=>{s&&(s.id||s.pswr)&&c.setFieldsValue({id:s.id,pswr:s.pswr})},[s,c]),e.jsx("div",{className:"login-main",children:e.jsxs("div",{className:"login_wrap",children:[g||e.jsx("div",{className:"logo_box"}),e.jsx("div",{className:"login_title"}),e.jsx(o.Form,{form:c,onFinish:r,className:"login-form",children:e.jsxs(o.Flex,{vertical:!0,children:[e.jsx(o.Form.Item,{name:"id",rules:[{required:!0,message:"아이디를 입력해주세요."},{whitespace:!0,message:"아이디는 공백이 들어갈 수 없습니다."}],children:e.jsx(o.Input,{allowClear:!0,placeholder:m.id,onKeyDown:a})}),e.jsx(o.Form.Item,{name:"pswr",rules:[{required:!0,message:"비밀번호를 입력하세요."}],children:e.jsx(o.Input.Password,{allowClear:!0,placeholder:m.pw,onKeyDown:a})}),e.jsx(o.Form.Item,{name:"remember",valuePropName:"checked",children:e.jsx(o.Checkbox,{children:m.remember})}),e.jsx("div",{className:n?"caps-lock caps-lock-on":"caps-lock",children:n?"Caps Lock On":"Caps Lock Off"}),e.jsx(o.Form.Item,{children:e.jsx(o.Button,{type:"primary",htmlType:"submit",loading:t,block:!0,children:m.login})})]})}),h]})})}exports.AppWrapper=ge;exports.BwgCoreLogin=Ee;exports.BwgPortal01=Me;exports.BwgPortal02=Be;exports.ConfigurableContent=Z;exports.ConfigurableHeader=Y;exports.ConfigurableMenuTab=X;exports.ConfigurableSidebar=Q;exports.ContentContainer=J;exports.DefaultLoginView=Re;exports.LandingContainer=ee;exports.LoadingContainer=he;exports.PopupContainer=te;exports.ProtectWrapper=ne;exports.localPopupRegistry=K;
|
|
35
|
+
`,document.head.appendChild(r)}const pe=({colors:r=["#DAD3FF","#B3A6FF","#9380FF","#816BFA"],count:t,size:n=12,gap:a=10,amp:s=16,speedMs:m=900,direction:g="ltr",phase:h=.7})=>{l.useEffect(()=>{me()},[]);const c=t??r.length,u=Array.from({length:c}),f={"--bwg-size":`${n}px`,"--bwg-gap":`${a}px`,"--bwg-amp":`${s}px`,"--bwg-speed":`${m}ms`},v=m/c*h;return e.jsx("span",{className:"bwg-dotline",role:"img","aria-label":"loading",style:f,children:u.map((y,i)=>e.jsx("span",{className:"dot",style:{backgroundColor:r[i%r.length],animationDelay:g==="ltr"?`${i*v}ms`:`${(c-1-i)*v}ms`}},i))})},he=({spin:r=null,text:t="인증중...",dimStyle:n="dark"})=>{if(!(r??!0))return null;const m=n==="dark";return e.jsxs("div",{className:"loading-overlay",style:{position:"fixed",height:"100vh",left:0,right:0,top:0,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:8,padding:"8px 12px",background:m?"rgba(0, 0, 0, 0.6)":"rgba(255, 255, 255, 0.85)",color:m?"#fff":"#333",backdropFilter:"blur(4px)",zIndex:1e4},"aria-live":"polite","aria-busy":"true",role:"status",children:[e.jsx(o.Spin,{indicator:e.jsx(pe,{colors:["#DAD3FF","#B3A6FF","#9380FF","#816BFA"],size:12,gap:10,amp:16,speedMs:900,phase:.75,direction:"ltr"})}),e.jsx("span",{className:"bwg-spin-txt",style:{marginTop:"15px"},children:t})]})},ge=({routes:r,useCommonProvider:t=!0,useServiceProvider:n=!0})=>{let s=e.jsxs(R.Routes,{children:[e.jsx(R.Route,{path:"/",element:e.jsx(R.Navigate,{to:"/login"})}),e.jsx(R.Route,{path:"/login",element:r.login}),e.jsx(R.Route,{path:"/main",element:r.main})]});return n&&(s=e.jsx(B.ServiceCodeProvider,{children:s})),t&&(s=e.jsx(B.CommonCodeProvider,{children:s})),e.jsx(G.GlobalConfigProvider,{children:s})},{Content:fe}=o.Layout,Z=({config:r={},children:t})=>{const n={wrapper:{className:"content-wrapper",...r.wrapper},body:{className:"content-body",...r.body},...r};return e.jsx(fe,{className:n.wrapper.className,style:n.wrapper.style,children:e.jsx(G.BwgConfigProvider,{children:e.jsx("div",{className:n.body.className,style:n.body.style,children:t})})})},xe="data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M11.9998%2019.9993V20.9993C11.9998%2021.3932%2012.0774%2021.7833%2012.2282%2022.1473C12.3789%2022.5112%2012.5999%2022.8419%2012.8785%2023.1205C13.157%2023.399%2013.4877%2023.62%2013.8517%2023.7708C14.2156%2023.9215%2014.6057%2023.9991%2014.9997%2023.9991C15.3936%2023.9991%2015.7837%2023.9215%2016.1477%2023.7708C16.5116%2023.62%2016.8423%2023.399%2017.1209%2023.1205C17.3994%2022.8419%2017.6204%2022.5112%2017.7712%2022.1473C17.9219%2021.7833%2017.9995%2021.3932%2017.9995%2020.9993V19.9993M20.9994%2011.9997C20.9994%2014.9996%2022.9993%2019.9993%2022.9993%2019.9993H7.00006C7.00006%2019.9993%208.99996%2015.9995%208.99996%2011.9997C8.99996%208.73187%2011.7318%206%2014.9997%206C18.2675%206%2020.9994%208.73187%2020.9994%2011.9997Z'%20stroke='%23485299'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e",be="data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_93_4488)'%3e%3cpath%20d='M18%207H21C22.1046%207%2023%207.89543%2023%209V21C23%2022.1046%2022.1046%2023%2021%2023H18M11%2011L7%2015M7%2015L11%2019M7%2015L19%2015'%20stroke='%23485299'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_93_4488'%3e%3crect%20width='30'%20height='30'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e",ye="data:image/svg+xml,%3csvg%20width='30'%20height='30'%20viewBox='0%200%2030%2030'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M14%206H16C16.5523%206%2017%206.44772%2017%207V7.56879C17%207.99659%2017.2871%208.36825%2017.6822%208.53228C18.0775%208.69638%2018.5377%208.63384%2018.8403%208.33123L19.2426%207.92891C19.6331%207.53838%2020.2663%207.53838%2020.6568%207.92891L22.071%209.34312C22.4616%209.73365%2022.4615%2010.3668%2022.071%2010.7573L21.6688%2011.1596C21.3661%2011.4622%2021.3036%2011.9225%2021.4677%2012.3177C21.6317%2012.7129%2022.0034%2013%2022.4313%2013L23%2013C23.5523%2013%2024%2013.4477%2024%2014V16C24%2016.5523%2023.5523%2017%2023%2017H22.4312C22.0034%2017%2021.6318%2017.2871%2021.4677%2017.6822C21.3036%2018.0775%2021.3661%2018.5377%2021.6688%2018.8403L22.071%2019.2426C22.4616%2019.6331%2022.4616%2020.2663%2022.071%2020.6568L20.6568%2022.071C20.2663%2022.4616%2019.6331%2022.4616%2019.2426%2022.071L18.8403%2021.6688C18.5377%2021.3661%2018.0775%2021.3036%2017.6822%2021.4677C17.2871%2021.6318%2017%2022.0034%2017%2022.4312V23C17%2023.5523%2016.5523%2024%2016%2024H14C13.4477%2024%2013%2023.5523%2013%2023V22.4313C13%2022.0034%2012.7129%2021.6317%2012.3177%2021.4677C11.9225%2021.3036%2011.4622%2021.3661%2011.1596%2021.6688L10.7573%2022.071C10.3668%2022.4616%209.73363%2022.4616%209.34311%2022.071L7.92889%2020.6568C7.53837%2020.2663%207.53837%2019.6331%207.92889%2019.2426L8.33123%2018.8403C8.63384%2018.5377%208.69638%2018.0775%208.53228%2017.6822C8.36825%2017.2871%207.99659%2017%207.56879%2017H7C6.44772%2017%206%2016.5523%206%2016V14C6%2013.4477%206.44772%2013%207%2013L7.56877%2013C7.99658%2013%208.36825%2012.7129%208.53229%2012.3178C8.6964%2011.9225%208.63386%2011.4623%208.33123%2011.1597L7.92891%2010.7573C7.53838%2010.3668%207.53838%209.73365%207.92891%209.34313L9.34312%207.92891C9.73365%207.53839%2010.3668%207.53839%2010.7573%207.92891L11.1597%208.33123C11.4623%208.63386%2011.9225%208.6964%2012.3178%208.53229C12.7129%208.36825%2013%207.99658%2013%207.56876V7C13%206.44772%2013.4477%206%2014%206Z'%20stroke='%23485299'%20stroke-width='1.5'/%3e%3cpath%20d='M17%2015C17%2016.1046%2016.1046%2017%2015%2017C13.8954%2017%2013%2016.1046%2013%2015C13%2013.8954%2013.8954%2013%2015%2013C16.1046%2013%2017%2013.8954%2017%2015Z'%20stroke='%23485299'%20stroke-width='1.5'/%3e%3c/svg%3e",{Header:Ce}=o.Layout,M={light:{headerBg:"#ffffff",headerText:"#000000",sidebarBg:"#ffffff",sidebarText:"#000000",buttonPrimary:"#1890ff",buttonPrimaryHover:"#40a9ff",buttonPrimaryActive:"#096dd9",buttonDefault:"#ffffff",buttonDefaultHover:"#f5f5f5",buttonDefaultBorder:"#d9d9d9",buttonPermissionBorder:"#bdb1ff"},dark:{headerBg:"#4a4a4a",headerText:"#ffffff",sidebarBg:"#4a4a4a",sidebarText:"#ffffff",buttonPrimary:"#177ddc",buttonPrimaryHover:"#1890ff",buttonPrimaryActive:"#0958b5",buttonDefault:"#434343",buttonDefaultHover:"#303030",buttonDefaultBorder:"#434343",buttonPermissionBorder:"#bdb1ff"},blue:{headerBg:"#4a90e2",headerText:"#ffffff",sidebarBg:"#4a90e2",sidebarText:"#ffffff",buttonPrimary:"#1890ff",buttonPrimaryHover:"#40a9ff",buttonPrimaryActive:"#096dd9",buttonDefault:"#ffffff",buttonDefaultHover:"#f0f8ff",buttonDefaultBorder:"#4a90e2",buttonPermissionBorder:"#bdb1ff"},modern:{headerBg:"#f3f4ff",headerText:"#333333",sidebarBg:"#ffffff",sidebarText:"#555555",buttonPrimary:"#6449FC",buttonPrimaryHover:"#6449FC",buttonPrimaryActive:"#6449FC",buttonDefault:"#ffffff",buttonDefaultHover:"#f5f5f5",buttonDefaultBorder:"#dddddd",buttonPermissionBorder:"#bdb1ff"}},Y=({config:r={}})=>{const t={gap:14,minWidth:200,items:r.right?.items,alarm:{visible:!0,...r.right?.alarm||{}},theme:{visible:!0,...r.right?.theme||{}},logout:{visible:!0,...r.right?.logout||{}},avatar:{visible:!0,width:30,height:30,...r.right?.avatar||{}}},n={wrapper:{className:"header-wrapper",...r.wrapper},logo:{gap:10,...r.logo},right:t},a=R.useNavigate(),[s,m]=l.useState("modern"),g=l.useRef(null),h=k.useLogout(),c=(i,C)=>{try{if(!/^[a-zA-Z0-9-]+$/.test(i)||!/^[#a-zA-Z0-9()\s,.-]+$/.test(C))return;document.documentElement.style.setProperty(i,C)}catch(T){console.error("CSS variable setting failed:",T)}},u=i=>{if(!M[i])return;m(i);const C={...M[i]};c("--header-bg",C.headerBg),c("--header-text",C.headerText),c("--sidebar-bg",C.sidebarBg),c("--sidebar-text",C.sidebarText),c("--button-primary",C.buttonPrimary),c("--button-primary-hover",C.buttonPrimaryHover),c("--button-primary-active",C.buttonPrimaryActive),c("--button-default",C.buttonDefault),c("--button-default-hover",C.buttonDefaultHover),c("--button-default-border",C.buttonDefaultBorder),c("--button-permission-border",C.buttonPermissionBorder),g.current&&g.current.setAttribute("data-theme",i),document.documentElement.setAttribute("data-theme",i),P.setCookie(P.THEME_COOKIE_NAME,i,30)};l.useEffect(()=>{const i=P.getCookie(P.THEME_COOKIE_NAME);i&&M[i]?u(i):u("modern")},[]);const f=()=>({...M[s]}).headerBg,v=()=>{h(),a("/login")};P.getTodateString?P.getTodateString("HH:mm:ss"):new Date().toLocaleTimeString("ko-KR");const y=e.jsxs("div",{style:{padding:"8px 0"},children:[e.jsxs("div",{style:{marginBottom:"12px"},children:[e.jsx(o.ColorPicker,{value:f(),disabled:!0,size:"small"}),e.jsx("span",{style:{marginLeft:"8px",fontSize:"12px"},children:"현재 테마 색상"})]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:[e.jsx(o.Button,{type:s==="modern"?"primary":"default",size:"small",onClick:()=>u("modern"),style:{textAlign:"left",backgroundColor:s==="modern"?M.modern.headerBg:void 0,color:s==="modern"?M.modern.headerText:void 0},children:"모던"},"modern"),Object.entries(M).filter(([i])=>i!=="modern").map(([i,C])=>e.jsx(o.Button,{type:s===i?"primary":"default",size:"small",onClick:()=>u(i),style:{textAlign:"left",backgroundColor:s===i?C.headerBg:void 0,color:s===i?C.headerText:void 0},children:i},i))]})]});return e.jsxs(Ce,{className:n.wrapper.className,style:{...n.wrapper.style},children:[n.logo&&e.jsx("div",{className:"header-left",children:e.jsx("div",{className:"logo-container",style:{gap:n.logo?.gap},children:n.logo?.items})}),e.jsxs("div",{className:"header-right",style:{gap:n.right?.gap,minWidth:n.right?.minWidth},children:[n.right?.items?.map((i,C)=>e.jsx("div",{children:i},C)),n.right?.alarm?.visible&&e.jsx(o.Button,{type:"text",icon:e.jsx("img",{src:xe,alt:"알림"}),className:"alarm-btn",onClick:n.right?.alarm?.onClick}),n.right?.theme?.visible&&e.jsx(o.Popover,{content:y,title:"테마 설정",trigger:"click",placement:"bottomRight",onOpenChange:i=>n.right?.theme?.onOpenChange?.(i),children:e.jsx(o.Button,{type:"text",icon:e.jsx("img",{src:ye,alt:"개인설정"}),className:"theme-btn",onClick:n.right?.theme?.onClick})}),n.right?.logout?.visible&&e.jsx(o.Button,{type:"text",icon:e.jsx("img",{src:be,alt:"로그아웃"}),onClick:n.right?.logout?.onClick||v,className:"logout-btn"}),n.right?.avatar?.visible&&e.jsx(o.Avatar,{icon:e.jsx(j.UserOutlined,{}),className:"avatar",style:{width:n.right?.avatar?.width,height:n.right?.avatar?.height},onClick:n.right?.avatar?.onClick})]})]})},H=Object.freeze({Translate:{toString(r){if(!r)return;const{x:t,y:n}=r;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(r){if(!r)return;const{scaleX:t,scaleY:n}=r;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(r){if(r)return[H.Translate.toString(r),H.Scale.toString(r)].join(" ")}},Transition:{toString(r){let{property:t,duration:n,easing:a}=r;return t+" "+n+"ms "+a}}}),ve=l.memo(({className:r,...t})=>{const n=l.useRef(null),{attributes:a,listeners:s,transform:m,transition:g,isDragging:h,setNodeRef:c}=_.useSortable({id:t["data-node-key"]}),[u,f]=l.useState();l.useEffect(()=>{const y=n.current;if(y)if(h){const i=Math.round(y.getBoundingClientRect().width);f(i)}else f(void 0)},[h]);const v={...t.style,transform:m?H.Transform.toString(m):void 0,transition:g??"transform 0.16s ease",cursor:"grab",userSelect:"none",willChange:"transform",width:u??void 0,minWidth:u??void 0,maxWidth:u??void 0,flex:u!==void 0?"0 0 auto":void 0};return l.cloneElement(t.children,{ref:y=>{n.current!==y&&(n.current=y),c(y)},style:v,...a,...s})}),je=l.memo(function({config:t,isFirst:n,isLast:a,canCloseAll:s,onFirst:m,onPrev:g,onNext:h,onLast:c,onCloseAll:u}){return e.jsxs("div",{className:t.wrapper?.className,style:t.wrapper?.style,children:[e.jsx(o.Tooltip,{title:"첫 번째 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(o.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(j.StepBackwardOutlined,{}),onClick:m,disabled:n})}),e.jsx(o.Tooltip,{title:"이전 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(o.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(j.LeftOutlined,{}),onClick:g,disabled:n})}),e.jsx(o.Tooltip,{title:"다음 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(o.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(j.RightOutlined,{}),onClick:h,disabled:a})}),e.jsx(o.Tooltip,{title:"마지막 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(o.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(j.StepForwardOutlined,{}),onClick:c,disabled:a})}),e.jsx(o.Tooltip,{title:"모든 탭 닫기",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(o.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(j.CloseOutlined,{}),onClick:u,disabled:!s})})]})}),X=({config:r={}})=>{const t={wrapper:{className:"menu-tab-wrapper",...r?.wrapper},tabs:{className:"menu-tabs",...r?.tabs},nav:{wrapper:{className:"menu-nav-wrapper",...r?.nav?.wrapper},buttons:{className:"menu-nav-buttons",...r?.nav?.buttons},tooltip:{className:"menu-nav-tooltip",...r?.nav?.tooltip},...r?.nav},...r},n=k.useMenuViewStore(p=>p.tabs),a=k.useMenuViewStore(p=>p.activeMenuId),s=k.useMenuViewStore(p=>p.focusTab),m=k.useMenuViewStore(p=>p.closeTab),g=k.useMenuViewStore(p=>p.reorderTabs),h=D.useSensors(D.useSensor(D.PointerSensor,{activationConstraint:{distance:6}})),c=p=>{s(p)},u=(p,S)=>{S==="remove"&&typeof p=="string"&&m(p)},f=()=>{n.length>0&&s(n[0].key)},v=()=>{if(!a||n.length<=1)return;const p=n.findIndex(S=>S.key===a);p>0&&s(n[p-1].key)},y=()=>{if(!a||n.length<=1)return;const p=n.findIndex(S=>S.key===a);p<n.length-1&&s(n[p+1].key)},i=()=>{n.length>0&&s(n[n.length-1].key)},C=()=>{n.forEach(p=>{m(p.key)})},T=a?n.findIndex(p=>p.key===a):-1,F=T===0,O=T===n.length-1,V=l.useMemo(()=>n.map(p=>({key:p.key,label:p.label,closable:!0,children:null})),[n]),z=l.useCallback(({active:p,over:S})=>{if(!S||p.id===S.id)return;const I=n.findIndex(d=>d.key===p.id),L=n.findIndex(d=>d.key===S.id);if(I<0||L<0||I===L)return;const x=n.map(d=>d.key),b=_.arrayMove(x,I,L);g?.(b)},[n,g]),A=l.useCallback((p,S)=>e.jsx(D.DndContext,{sensors:h,onDragEnd:z,collisionDetection:D.closestCenter,modifiers:[se.restrictToHorizontalAxis],children:e.jsx(_.SortableContext,{items:n.map(I=>I.key),strategy:_.horizontalListSortingStrategy,children:e.jsx(S,{...p,children:I=>l.createElement(ve,{...I.props,key:I.key},I)})})}),[h,z,n]);return e.jsx("div",{className:t.wrapper.className,style:{...t.wrapper.style,display:n.length===0?"none":"block"},children:e.jsx(o.Tabs,{type:"editable-card",activeKey:a||void 0,onChange:c,onEdit:u,className:t.tabs.className,style:t.tabs.style,hideAdd:!0,items:V,tabBarExtraContent:e.jsx(je,{config:t?.nav,isFirst:!!F,isLast:!!O,canCloseAll:n.length>0,onFirst:f,onPrev:v,onNext:y,onLast:i,onCloseAll:C}),renderTabBar:A})})},{Sider:we}=o.Layout,Q=({config:r={}})=>{const t={collapsed:!1,width:230,menuGubunCode:{mainMenu:"MAIN",subMenu:"SUB",program:"PRGM",...r?.menuGubunCode},className:{wrapper:"side-wrapper",search:"sider-search-ipt",segmented:{wrapper:"sider-segmented",item:"sider-segment-item",...r?.className?.segmented},sider:{content:"sider-content",loading:"sider-loading",loadingText:"sider-loading-text",error:"sider-error",errorIcon:"sider-error-icon",errorText:"sider-error-text",menu:"sider-menu",menuContainer:"sider-menu-container",...r?.className?.sider},...r?.className},style:{search:{placeholder:"메뉴명, 메뉴번호 검색...",height:30,...r?.style?.search},...r?.style},...r},[n,a]=l.useState(""),[s,m]=l.useState("category"),{activeMenuId:g,sidebarCollapsed:h,openTabFromMenu:c,toggleSidebar:u}=k.useMenuViewStore(),{menuList:f,isLoading:v,error:y,findMenuById:i}=k.useMenuModelStore(),{nodes:C,treeNodes:T,loadFavoritesIfNeeded:F}=k.useFavoriteStore(),O=l.useMemo(()=>{const x=[],b=(d,N=0)=>{if(d.menuGbCd===t.menuGubunCode.program&&d.scrnPath){const w=" ".repeat(N),E=d.menuNo||"";x.push({value:d.menuId,label:e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[e.jsxs("span",{children:[w,d.menuNm]}),e.jsx("span",{style:{fontSize:"11px",color:"#999",backgroundColor:"#f0f0f0",padding:"2px 6px",borderRadius:"3px",marginLeft:"8px"},children:E})]}),menuItem:d})}d.children&&d.children.length>0&&d.children.forEach(w=>b(w,N+1))};return f.forEach(d=>b(d)),x},[f]),V=l.useMemo(()=>n.trim()?O.filter(x=>{const b=x.menuItem.menuNm.toLowerCase(),d=String(x.menuItem.menuNo||"미지정").toLowerCase(),N=n.toLowerCase();return b.includes(N)||d.includes(N)}):[],[O,n]),z=x=>{if(!x||typeof x!="string"){console.warn("Invalid menu selection value:",x);return}if(!/^[a-zA-Z0-9_-]+$/.test(x)){console.warn("Invalid menu ID format:",x);return}const b=O.find(d=>d.value===x);if(b){const{menuItem:d}=b;if(!d||!d.menuId||!d.menuNm){console.warn("Invalid menu item:",d);return}d.menuGbCd===t.menuGubunCode.program&&d.scrnPath?(console.log("✅ 검색으로 프로그램 메뉴 선택 - 탭 추가 및 setCurrentProgram 호출"),console.log("메뉴명:",d.menuNm,"경로:",d.scrnPath,"scrnId:",d.scrnId),c(d)):(d.menuGbCd===t.menuGubunCode.mainMenu||d.menuGbCd===t.menuGubunCode.subMenu)&&(console.log("❌ 검색으로 메인/서브 메뉴 선택 - 이벤트 무시"),console.log("메뉴명:",d.menuNm,"menuGbCd:",d.menuGbCd)),a("")}},A=l.useCallback(x=>{const b=i(x);b?.menuGbCd===t.menuGubunCode.program&&(console.log("메뉴명:",b.menuNm,"경로:",b.scrnPath,"scrnId:",b.scrnId),c(b))},[i,c]),p=l.useCallback(x=>x.map(b=>({key:b.menuId,label:e.jsx("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:e.jsx("span",{children:b.menuNm})}),icon:S(b.iconCd,b.menuGbCd),children:b.children&&b.children.length>0?p(b.children):void 0})),[]),S=(x,b)=>{if(x){const d=q[x];if(d)return e.jsx(d,{})}if(b)switch(b){case t.menuGubunCode.mainMenu:return e.jsx(q.HomeOutlined,{});case t.menuGubunCode.subMenu:return null;case t.menuGubunCode.program:return null;default:return null}return null},I=l.useCallback(x=>{if(f.length===0)return[];const b=N=>{if(N)return typeof N=="string"?C[N]:N},d=N=>{if(N.type==="M"){const w=N,E=i(w.menuId)||void 0,W=!!E,re=W?`${E?.menuNm??w.menuNm??w.menuId}`:`${w.menuNm??w.menuId} (삭제됨)`;return{key:w.menuId,label:re,icon:W?void 0:e.jsx(j.WarningOutlined,{style:{color:"#faad14"}})}}else{const w=N,E=(w.children??[]).map(b).filter(Boolean).map(d);return{key:w.bkmkId,label:w.bkmkNm??w.bkmkId,icon:w.prntBkmkId==="-"?e.jsx(j.StarOutlined,{}):e.jsx(j.FolderOpenOutlined,{}),children:E}}};return x.map(d)},[i,C,f]),L=l.useMemo(()=>I(T),[I,T,C]);return l.useEffect(()=>{P.getUserId()&&F(P.getUserId())},[F]),l.useEffect(()=>{s==="category"&&a("")},[s]),e.jsxs(we,{className:t.className.wrapper,collapsed:t.collapsed||h,trigger:null,width:t.width||230,children:[e.jsx("div",{style:{position:"absolute",top:"9px",right:"-25px",zIndex:"1000",width:"25px",height:"41px",backgroundColor:"#ffffff",border:"1px solid #dddddd",borderRadius:"0 10px 10px 0",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",boxShadow:"2px 2px 2px rgba(0, 0, 0, 0.05)",transition:"all 0.3s ease"},children:e.jsx(o.Button,{type:"text",icon:t.collapsed||h?e.jsx(j.MenuUnfoldOutlined,{}):e.jsx(j.MenuFoldOutlined,{}),style:{fontSize:"12px",color:"#787878",padding:0,width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"0 10px 10px 0"},onClick:u})}),!(t.collapsed||h)&&e.jsx("div",{style:{padding:10},children:e.jsx(o.AutoComplete,{value:n,options:V,onSelect:z,onSearch:a,style:{width:"100%"},allowClear:!0,children:e.jsx(o.Input,{className:t.className.search,placeholder:t.style.search.placeholder,prefix:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:e.jsx("path",{d:"M16.4972 16.6667L13.0355 13.1694M14.8475 8.75C14.8475 5.29822 12.0777 2.5 8.66105 2.5C5.24437 2.5 2.47461 5.29822 2.47461 8.75C2.47461 12.2018 5.24437 15 8.66105 15C12.0777 15 14.8475 12.2018 14.8475 8.75Z",stroke:"#5F5F5F",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),size:"middle",style:{height:t.style.search.height||30}})})}),!(t.collapsed||h)&&e.jsx("div",{style:{width:"100%",padding:"0px 10px",marginBottom:"10px"},children:e.jsx(o.Segmented,{className:t.className.segmented.wrapper,options:[{label:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:t.className.segmented.item,style:{display:"flex",alignItems:"center"},children:e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:[e.jsx("path",{d:"M2.46979 6.90625H13.0298C13.7298 6.90625 14.2965 7.47292 14.2965 8.17292V13.5396H1.20312V8.17292C1.20312 7.47292 1.76979 6.90625 2.46979 6.90625Z",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M2.76318 4.70626C2.76318 4.00626 3.18318 3.75293 3.69652 3.75293H11.8032C12.3165 3.75293 12.7365 4.00626 12.7365 4.70626",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M4.71631 1.45996H10.783",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})}),"카테고리"]}),value:"category"},{label:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:t.className.segmented.item,style:{display:"flex",alignItems:"center"},children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:e.jsx("path",{d:"M7.11329 1.33356C7.32084 0.888813 7.66676 0.888813 7.88296 1.33356L9.258 4.25619C9.46556 4.70094 10.0277 5.12753 10.4947 5.20014L13.5647 5.67212C14.0317 5.74473 14.1441 6.08964 13.7982 6.43455L11.5757 8.70367C11.2384 9.04858 11.0222 9.73839 11.1 10.2285L11.6276 13.4325C11.7054 13.9227 11.4287 14.1405 11.0049 13.9045L8.26348 12.3887C7.83972 12.1527 7.15653 12.1527 6.73277 12.3887L3.99134 13.9045C3.56759 14.1405 3.29085 13.9227 3.36868 13.4325L3.89621 10.2285C3.97405 9.73839 3.76649 9.04858 3.42057 8.70367L1.19802 6.43455C0.86075 6.08964 0.964526 5.74473 1.43152 5.67212L4.50158 5.20014C4.96857 5.12753 5.5307 4.70094 5.73825 4.25619L7.11329 1.33356Z",stroke:"currentColor",strokeWidth:"1.5",strokeMiterlimit:"4"})})}),"즐겨찾기"]}),value:"favorite"}],value:s,onChange:x=>{m(x)},style:{width:"100%"},block:!0})}),e.jsxs("div",{className:t.className.sider.content,children:[v&&e.jsxs("div",{className:t.className.sider.loading,style:{padding:10,margin:"0 auto",textAlign:"center",color:"var(--text-primary)"},children:[e.jsx(o.ConfigProvider,{theme:{components:{Spin:{colorPrimary:"var(--primary-color)"}}},children:e.jsx(o.Spin,{size:"default"})}),e.jsx("div",{className:t.className.sider.loadingText,style:{marginTop:10},children:"메뉴 로딩 중..."})]}),y&&e.jsxs("div",{className:t.className.sider.error,children:[e.jsx(j.ExclamationCircleOutlined,{className:t.className.sider.errorIcon}),e.jsx("div",{className:t.className.sider.errorText,children:"메뉴 로드 실패"})]}),!v&&!y&&s==="category"&&f.length===0&&e.jsx("div",{style:{padding:"16px",textAlign:"center",color:"#666",fontSize:"12px"},children:"메뉴가 없습니다"}),!v&&!y&&s==="favorite"&&L.length===0&&e.jsx("div",{style:{padding:"16px",textAlign:"center",color:"#666",fontSize:"12px"},children:"즐겨찾기된 메뉴가 없습니다"}),!v&&!y&&s==="category"&&f.length>0&&e.jsx("div",{className:t.className.sider.menuContainer,children:e.jsx(o.Menu,{theme:"light",mode:"inline",items:p(f),className:t.className.sider.menu,selectedKeys:[g||""],onClick:x=>A(x.key)})}),!v&&!y&&s==="favorite"&&L.length>0&&e.jsx("div",{className:t.className.sider.menuContainer,children:e.jsx(o.Menu,{theme:"light",mode:"inline",items:L,className:t.className.sider.menu,selectedKeys:[g||""],onClick:x=>A(x.key)})})]})]})};class ke extends l.Component{constructor(t){super(t),this.resetError=()=>{this.setState({hasError:!1,error:void 0,errorInfo:void 0})},this.state={hasError:!1}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,n){console.error("ErrorBound caught an error:",t,n),this.setState({error:t,errorInfo:n})}render(){return this.state.hasError?this.props.fallback?this.props.fallback:e.jsxs("div",{style:{padding:"40px 20px",textAlign:"center",backgroundColor:"#fafafa",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"},children:[e.jsx(o.Result,{status:"error",title:"컴포넌트 로딩 중 오류가 발생했습니다",subTitle:this.state.error?`오류 내용: ${this.state.error.message}`:"알 수 없는 오류가 발생했습니다",extra:[e.jsx(o.Button,{type:"primary",icon:e.jsx(j.ReloadOutlined,{}),onClick:this.resetError,style:{marginRight:8},children:"다시 시도"},"retry")]}),this.state.error&&e.jsxs("details",{style:{marginTop:"20px",textAlign:"left",maxWidth:"600px",backgroundColor:"#fff",padding:"16px",borderRadius:"6px",border:"1px solid #d9d9d9"},children:[e.jsx("summary",{style:{cursor:"pointer",fontWeight:"bold"},children:"오류 상세 정보"}),e.jsx("pre",{style:{marginTop:"8px",fontSize:"12px",color:"#666",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:this.state.error.stack})]})]}):this.props.children}}const Ne=({isActive:r,instance:t,params:n})=>{const{activeMenuId:a,closeTab:s}=k.useMenuViewStore(),m=()=>{a&&s(a)};return t?e.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",visibility:r?"visible":"hidden",opacity:r?1:0,transition:"opacity 0.2s ease-in-out",pointerEvents:r?"auto":"none"},children:e.jsx(ke,{children:e.jsx(l.Suspense,{fallback:null,children:t&&l.createElement(t,{params:n})})})}):e.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",visibility:r?"visible":"hidden",opacity:r?1:0,transition:"opacity 0.2s ease-in-out",pointerEvents:r?"auto":"none"},children:e.jsx("div",{style:{width:500,maxWidth:"90%",background:"#fff",borderRadius:16,boxShadow:"0 8px 30px rgba(0,0,0,0.05)",padding:24},children:e.jsx(o.Result,{icon:e.jsx(j.ExclamationCircleTwoTone,{twoToneColor:"#69b1ff"}),status:"warning",title:"등록된 메뉴 정보가 없거나 유효한 메뉴가 아닙니다.",subTitle:e.jsx(o.Typography.Text,{type:"secondary",children:"자세한 내용은 관리자에게 문의바랍니다."}),extra:e.jsx(o.Space,{children:e.jsx(o.Button,{icon:e.jsx(j.CloseOutlined,{}),onClick:m,children:"탭 닫기"})})})})})},J=l.memo(Ne),ee=()=>e.jsxs(e.Fragment,{children:[e.jsx("link",{rel:"preload",as:"image",href:"/src/styles/assets/images/backgrounds/LandingContainer_bg.png"}),e.jsx("div",{className:"LandingContainer-wrap",children:e.jsx("div",{className:"inner",children:e.jsx("div",{className:"content"})})})]}),Se=(r,t)=>{console.log("createPopupViewLoader 호출 - popupUrl:",r);const a=(s=>{if(s.startsWith("/src/pages/views/popup/")){const h=s+".tsx";return console.log(`팝업 URL 변환: ${s} -> ${h}`),h}const g=`/src/pages/views/popup/${s.startsWith("/")?s.substring(1):s}.tsx`;return console.log(`팝업 URL 변환: ${s} -> ${g}`),g})(r);return!a||!t?.glob||!t.glob[a]?(console.warn(`팝업 뷰를 찾을 수 없습니다: ${r} (${a})`),console.warn("사용 가능한 팝업 뷰들:",Object.keys(t?.glob||{})),null):t.glob[a]},Ie=({popup:r,modules:t})=>{const[n,a]=l.useState(null),[s,m]=l.useState(!1),[g,h]=l.useState(null),c=()=>{console.log("PopupArea - handleClose:",r.popupId),k.usePopupStore.getState().closePopup(r.popupId)};return l.useEffect(()=>{(async()=>{console.log("팝업 뷰 로드 시작:",r.popupUrl),m(!0),h(null);try{const f=Se(r.popupUrl,t);if(!f){const i=`팝업 뷰를 찾을 수 없습니다: ${r.popupUrl}`;console.error(i),h(i),m(!1);return}console.log("팝업 뷰 모듈 로드 중...");const v=await f();console.log("팝업 뷰 모듈 로드 완료:",v);const y=v.default;if(console.log("팝업 뷰 컴포넌트:",y),!y)throw new Error("팝업 뷰 컴포넌트를 찾을 수 없습니다");a(()=>y),console.log("팝업 뷰 설정 완료")}catch(f){console.error("팝업 뷰 로드 실패:",f),h(f instanceof Error?f.message:"팝업 뷰 로드 실패")}finally{m(!1)}})()},[r.popupUrl]),s?e.jsxs("div",{className:"popup-loading",children:[e.jsx(o.Spin,{size:"large"}),e.jsx("p",{children:"팝업을 로드하는 중..."})]}):g?e.jsxs("div",{className:"popup-error",children:[e.jsx(o.Empty,{description:g,image:o.Empty.PRESENTED_IMAGE_SIMPLE}),e.jsx(o.Button,{icon:e.jsx(j.ReloadOutlined,{}),onClick:()=>window.location.reload(),children:"다시 시도"})]}):n?e.jsx(l.Suspense,{fallback:e.jsxs("div",{className:"popup-loading",children:[e.jsx(o.Spin,{size:"large"}),e.jsx("p",{children:"컴포넌트를 로드하는 중..."})]}),children:e.jsx(n,{popup:{...r,close:c},onClose:c})}):e.jsx("div",{className:"popup-empty",children:e.jsx(o.Empty,{description:"팝업 내용을 불러올 수 없습니다."})})},te=({modules:r})=>{const{popups:t}=k.usePopupStore();return t.length===0?null:e.jsx(e.Fragment,{children:t.map(n=>{if(n.isLocal||n.popupCode.startsWith("CORE_"))return null;const a=n.config||{},s=a.width||n.width||800,m=a.height||n.height||600,g=a.title||n.popupTitle,h=n.buttonList?.map((c,u)=>({key:c.btnId||`btn_${u}`,text:c.btnNm,type:c.btnId==="CLOSE"?"default":"primary",disabled:c.enblYn!=="Y",danger:!1}))||[];return console.log("팝업 렌더링:",{popupId:n.popupId,popupCode:n.popupCode,title:g,width:s,height:m,buttons:h}),e.jsx(B.SearchBoxProvider,{children:e.jsx("div",{children:e.jsx(Ie,{popup:n,modules:r})},n.popupId)},`sbp-${n.popupId}`)})})},Pe=()=>{const{popups:r,closePopup:t}=k.usePopupStore();return e.jsx(e.Fragment,{children:r.map(n=>{if(!(n.isLocal||n.popupCode.startsWith("CORE_")))return null;const a=K[n.popupCode];if(!a)return null;const s=a.component;return e.jsx(B.SearchBoxProvider,{children:e.jsx(l.Suspense,{fallback:null,children:e.jsx(s,{popup:n,onClose:()=>t(n.popupId)})},n.popupId)},`sbp-${n.popupId}`)})})},Te=r=>({position:"absolute",inset:0,visibility:r?"visible":"hidden",opacity:r?1:0,transition:"opacity 0.2s ease-in-out",pointerEvents:r?"auto":"none"}),Le=({once:r=!0})=>{const{lock:t}=B.useLock(),n=l.useRef(!1);return l.useEffect(()=>{r&&n.current||(n.current=!0,t())},[r,t]),null},ne=({isActive:r,flagged:t,tabKey:n,onUnlock:a,children:s})=>{const m=l.useRef(null),[g,h]=l.useState(!1),c=l.useCallback(f=>{m.current=f,h(!!f)},[]),u=Te(r);return e.jsx("div",{ref:c,style:u,children:g?e.jsxs(B.ScreenProtectProvider,{idleMs:Number.POSITIVE_INFINITY,persistLocked:!1,overlayScope:"scoped",overlayPosition:"absolute",eventTarget:m.current,overlayId:`tab-overlay-${n}`,onUnlock:async()=>(a(),!0),children:[r&&t?e.jsx(Le,{once:!0}):null,s]}):s})},Me=({config:r={},modules:t={view:{path:"/src/pages/views/content"},popup:{path:"/src/pages/views/popups"}}})=>{const n=l.useRef(new Map),{tabs:a,tabParams:s,activeMenuId:m,tabProtectFlag:g,clearProtectFlagForKey:h}=k.useMenuViewStore(),c=l.useCallback(u=>{const f=n.current.get(u.key);if(f)return f;const v=u.gubun==="M"?`${t.view.path}${u.menuItem?.scrnPath}.tsx`:`${t.view.path}${u.componentItem?.scrnPath}.tsx`;let y=t.view?.glob?.[v];if(!y&&typeof{url:typeof document>"u"?require("url").pathToFileURL(__filename).href:$&&$.tagName.toUpperCase()==="SCRIPT"&&$.src||new URL("chunks/layout-components-DWoz_2hX.cjs",document.baseURI).href}<"u",y){const i=l.lazy(y);return n.current.set(u.key,i),i}return null},[t.view?.glob]);return e.jsxs(o.Layout,{className:"main-layout",children:[e.jsx(Y,{config:r?.header}),e.jsxs(o.Layout,{children:[e.jsx(Q,{config:r?.sidebar}),e.jsxs("div",{className:"content-container",children:[e.jsx(X,{config:r?.menuTab}),e.jsxs(Z,{config:r?.content,children:[e.jsx("div",{className:"view-container",children:e.jsxs("div",{style:{position:"relative",width:"100%",height:"100%"},children:[a.map(u=>{const f=c(u),v=m===u.key,y=!!g?.[u.key],i=s[u.key]||{};return e.jsx(B.SearchBoxProvider,{children:e.jsx(ne,{isActive:v,flagged:y,tabKey:u.key,onUnlock:()=>h(u.key),children:e.jsx(J,{isActive:v,instance:f||void 0,params:i},u.key)},u.key)},`sbp-${u.key}`)}),(!m||a.length===0)&&e.jsx(ee,{})]})}),e.jsx(Pe,{}),e.jsx(te,{modules:t?.popup})]})]})]}),e.jsx(G.QuickServiceToggle,{})]})},Be=({config:r,children:t})=>e.jsx("div",{children:"BwgPortal02"});function Ee({config:r,ui:t,navigate:n}){const{loading:a,capsOn:s,prefills:m,onKeyDown:g,doLogin:h}=k.useLogin(r),c=u=>h(u,n);return l.useEffect(()=>{k.useSystemStore.getState().fetchSystemMap()},[]),e.jsx(e.Fragment,{children:t({onSubmit:c,loading:a,capsOn:s,onKeyDown:g,prefills:m})})}function Re({onSubmit:r,loading:t,capsOn:n,onKeyDown:a,prefills:s,labels:m={id:"ID 혹은 사번",pw:"비밀번호",remember:"Remember me",login:"로그인"},header:g,footer:h}){const[c]=o.Form.useForm();return l.useEffect(()=>{s&&(s.id||s.pswr)&&c.setFieldsValue({id:s.id,pswr:s.pswr})},[s,c]),e.jsx("div",{className:"login-main",children:e.jsxs("div",{className:"login_wrap",children:[g||e.jsx("div",{className:"logo_box"}),e.jsx("div",{className:"login_title"}),e.jsx(o.Form,{form:c,onFinish:r,className:"login-form",children:e.jsxs(o.Flex,{vertical:!0,children:[e.jsx(o.Form.Item,{name:"id",rules:[{required:!0,message:"아이디를 입력해주세요."},{whitespace:!0,message:"아이디는 공백이 들어갈 수 없습니다."}],children:e.jsx(o.Input,{allowClear:!0,placeholder:m.id,onKeyDown:a})}),e.jsx(o.Form.Item,{name:"pswr",rules:[{required:!0,message:"비밀번호를 입력하세요."}],children:e.jsx(o.Input.Password,{allowClear:!0,placeholder:m.pw,onKeyDown:a})}),e.jsx(o.Form.Item,{name:"remember",valuePropName:"checked",children:e.jsx(o.Checkbox,{children:m.remember})}),e.jsx("div",{className:n?"caps-lock caps-lock-on":"caps-lock",children:n?"Caps Lock On":"Caps Lock Off"}),e.jsx(o.Form.Item,{children:e.jsx(o.Button,{type:"primary",htmlType:"submit",loading:t,block:!0,children:m.login})})]})}),h]})})}exports.AppWrapper=ge;exports.BwgCoreLogin=Ee;exports.BwgPortal01=Me;exports.BwgPortal02=Be;exports.ConfigurableContent=Z;exports.ConfigurableHeader=Y;exports.ConfigurableMenuTab=X;exports.ConfigurableSidebar=Q;exports.ContentContainer=J;exports.DefaultLoginView=Re;exports.LandingContainer=ee;exports.LoadingContainer=he;exports.PopupContainer=te;exports.ProtectWrapper=ne;exports.localPopupRegistry=K;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/common-components-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/common-components-IDvLizgf.cjs"),o=require("../../utils/index.cjs");exports.ButtonAccessController=e.ButtonAccessController;exports.BwgButtonGroup=e.BwgButtonGroup;exports.BwgCmptArea=e.BwgCmptArea;exports.BwgCol=e.BwgCol;exports.BwgConfigProvider=e.BwgConfigProvider;exports.BwgDetail=e.BwgDetail;exports.BwgDrawer=e.BwgDrawer;exports.BwgEditor=e.BwgEditor;exports.BwgGrid=e.BwgGrid;exports.BwgInfoArea=e.BwgInfoArea;exports.BwgPagination=e.BwgPagination;exports.BwgPopup=e.BwgPopup;exports.BwgRow=e.BwgRow;exports.BwgSpace=e.BwgSpace;exports.BwgTable=e.BwgTable;exports.BwgTabs=e.BwgTabs;exports.BwgTitleBox=e.BwgTitleBox;exports.BwgView=e.BwgView;exports.ContentBox=e.ContentBox;exports.ContentLayOut=e.ContentLayOut;exports.GlobalConfigProvider=e.GlobalConfigProvider;exports.QuickServiceToggle=e.QuickServiceToggle;exports.SSOHandler=e.SSOHandler;exports.SearchBox=e.SearchBox;exports.createBwgGridRenderer=e.createBwgGridRenderer;exports.realFormat=o.realFormat;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as e, q as o, r, j as B, B as g, s as w, t, p as i, h as n, u as l, o as d, n as p, i as C, b as c, v as u, l as f, e as S, k as m, d as x, C as G, G as b, Q as v, w as P, S as T, m as A } from "../../chunks/common-components-
|
|
1
|
+
import { f as e, q as o, r, j as B, B as g, s as w, t, p as i, h as n, u as l, o as d, n as p, i as C, b as c, v as u, l as f, e as S, k as m, d as x, C as G, G as b, Q as v, w as P, S as T, m as A } from "../../chunks/common-components-DVV6_tAQ.js";
|
|
2
2
|
import { realFormat as k } from "../../utils/index.js";
|
|
3
3
|
export {
|
|
4
4
|
e as ButtonAccessController,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("../../chunks/common-components-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("../../chunks/common-components-IDvLizgf.cjs"),a=require("react"),w=require("antd"),o=require("../../utils/index.cjs"),l=require("../core/index.cjs"),B=require("../../provider/index.cjs"),y=()=>e.jsx(t.BwgSpace,{children:"BwgComponentGuide"}),b=()=>e.jsx(t.BwgSpace,{children:"BwgDeveloperGuide"}),f=()=>{const s=a.useRef(null),r=a.useRef(null),[u,m]=a.useState(""),n=a.useMemo(()=>[{reqNo:"REQ-2025-001",eventType:"결혼",employeeId:"E001",employeeName:"김지원",relation:"본인",eventDate:"2025-10-05",amount:"200000",docTitle:"본인 결혼 경조사",note:"",requestDate:"2025-10-01",status:"접수",fileGrpKey:"293",aprvKey:"4d04f9f9a0ca4de8b475bc0b86263e7"},{reqNo:"REQ-2025-002",eventType:"출산",employeeId:"E002",employeeName:"박지영",relation:"배우자",eventDate:"2025-09-28",amount:"150000",docTitle:"배우자 출산 경조사",note:"증빙 파일 첨부",requestDate:"2025-09-29",status:"완료",fileGrpKey:"294"},{reqNo:"REQ-2025-003",eventType:"조의",employeeId:"E003",employeeName:"이도현",relation:"부모",eventDate:"2025-10-10",amount:"100000",docTitle:"부모상 조의",note:"",requestDate:"2025-10-11",status:"진행",fileGrpKey:"295"}],[]),d=a.useMemo(()=>[{fieldName:"reqNo",width:120,header:{text:"신청번호"},styleName:"center"},{fieldName:"aprvKey",width:120,header:{text:"그룹웨어 신청번호"},styleName:"center"},{fieldName:"eventType",width:110,header:{text:"경조구분"},styleName:"center"},{fieldName:"employeeName",width:120,header:{text:"대상자"},styleName:"left"},{fieldName:"relation",width:100,header:{text:"관계"},styleName:"center"},{fieldName:"amount",width:120,header:{text:"금액"},styleName:"right"},{fieldName:"docTitle",width:120,header:{text:"제목"},styleName:"left"},{fieldName:"requestDate",width:130,header:{text:"신청일자"},styleName:"center"},{fieldName:"status",width:100,header:{text:"상태"},styleName:"center"},{fieldName:"fileGrpKey",width:100,header:{text:"파일그룹키"},styleName:"center"},{fieldName:"testData",width:100,header:{text:"테스트 값"},lookupDisplay:!0,labels:["메인메뉴","서브메뉴","프로그램"],values:["CMPRGRM","CMPRGRS","CMPRGRP"]}],[]),c=a.useCallback((i,p)=>{const x=i.getDataSource().getJsonRow(p.dataRow);m(x.fileGrpKey)},[]),h=a.useMemo(()=>({onCurrentChanged:c}),[c]),g={search:()=>{s.current?.addAllData?.(n)},new:()=>{r.current?.resetFields?.(),r.current?.setFieldsValue?.({status:"임시"})}};return e.jsxs(t.ContentLayOut,{type:"horizontal",children:[e.jsxs(t.ContentBox,{border:!0,children:[e.jsx(t.BwgTitleBox,{title:"경조사비 신청",children:e.jsx(t.ButtonAccessController,{buttons:[{id:"search",label:"조회",onClick:()=>{g.search()}},{id:"new",label:"신규",onClick:()=>{g.new()}}]})}),e.jsx(t.BwgGrid,{ref:s,bindRef:r,gridColumns:d,gridEvents:h,gridInitCallback:()=>{s.current?.addAllData?.(n)},gridOptions:{edit:{editable:!0}}})]}),e.jsxs(t.ContentBox,{border:!0,style:{width:"40%"},children:[e.jsx(t.BwgTitleBox,{title:"상세 정보",children:e.jsx(l.BwgButton,{size:"small",onClick:()=>{const i=r.current?.getFieldsValue()?.fileGrpKey;console.log(i),o.submitGwApproval().then(p=>{console.log(p)})},children:"기안"})}),e.jsxs(l.BwgForm,{ref:r,children:[e.jsx(w.Divider,{orientation:"left",plain:!0,children:"기본 정보"}),e.jsxs(t.BwgRow,{style:{marginBottom:8},children:[e.jsx(t.BwgCol,{span:12,children:e.jsx(l.BwgInput,{itemProps:{name:"reqNo",label:"신청번호"},inputProps:{disabled:!0}})}),e.jsx(t.BwgCol,{span:12,children:e.jsx(l.BwgSelect,{itemProps:{name:"status",label:"상태"},selectProps:{options:[{label:"임시",value:"임시"},{label:"접수",value:"접수"},{label:"진행",value:"진행"},{label:"완료",value:"완료"},{label:"반려",value:"반려"}]}})})]}),e.jsxs(t.BwgRow,{style:{marginBottom:8},children:[e.jsx(t.BwgCol,{span:12,children:e.jsx(l.BwgSelect,{itemProps:{name:"eventType",label:"경조구분"},selectProps:{options:[{label:"결혼",value:"결혼"},{label:"출산",value:"출산"},{label:"조의",value:"조의"},{label:"기타",value:"기타"}]}})}),e.jsx(t.BwgCol,{span:12,children:e.jsx(l.BwgSelect,{itemProps:{name:"relation",label:"관계"},selectProps:{options:[{label:"본인",value:"본인"},{label:"배우자",value:"배우자"},{label:"부모",value:"부모"},{label:"자녀",value:"자녀"},{label:"형제자매",value:"형제자매"},{label:"기타",value:"기타"}]}})})]}),e.jsxs(t.BwgRow,{style:{marginBottom:8},children:[e.jsx(t.BwgCol,{span:12,children:e.jsx(l.BwgInput,{itemProps:{name:"employeeId",label:"사번"}})}),e.jsx(t.BwgCol,{span:12,children:e.jsx(l.BwgInput,{itemProps:{name:"employeeName",label:"대상자"}})})]}),e.jsxs(t.BwgRow,{style:{marginBottom:8},children:[e.jsx(t.BwgCol,{span:12,children:e.jsx(l.BwgDatePicker,{type:"date",itemProps:{name:"eventDate",label:"경조일자"}})}),e.jsx(t.BwgCol,{span:12,children:e.jsx(l.BwgInput,{itemProps:{name:"amount",label:"금액"},inputProps:{placeholder:"숫자만",style:{textAlign:"right"}}})})]}),e.jsx(t.BwgRow,{style:{marginBottom:8},children:e.jsx(t.BwgCol,{span:24,children:e.jsx(l.BwgInput,{itemProps:{name:"docTitle",label:"제목"}})})}),e.jsx(w.Divider,{style:{margin:"8px 0"}}),e.jsx(l.BwgInput,{itemProps:{name:"aprvKey",label:"그룹웨어 신청번호"}}),e.jsx(l.BwgInput,{itemProps:{name:"fileGrpKey",label:"파일그룹키"},inputProps:{disabled:!0}}),e.jsx(l.BwgUploader,{itemProps:{name:"files",label:"첨부파일"},fileGrpKey:u,onUploadComplete:i=>{console.log(i)}})]})]})]})},C=()=>{a.useEffect(()=>{s.current&&s.current.addAllData(m)},[]),B.usePopup(),a.useRef(null),a.useRef(null),a.useRef(null),a.useRef(null);const s=a.useRef(null),r=a.useRef(null),u=[{fieldName:"sysCd",width:100,header:{text:"시스템 코드"}},{fieldName:"aprvKey",width:100,header:{text:"연계Key"}},{fieldName:"dcmtGb",width:100,header:{text:"GW/내부결제 구분"}},{fieldName:"formId",width:100,header:{text:"FormId"}},{fieldName:"docTitle",width:100,header:{text:"문서 제목"}},{fieldName:"aprvStts",width:100,header:{text:"결재 상태"}},{fieldName:"draftDt",width:100,header:{text:"기안 날짜"}}],m=[{a0:"a0",a1:"a1",a2:"a2",a3:"a3",ab1:"ab1"}];return e.jsx(t.ContentLayOut,{children:e.jsxs(t.ContentBox,{className:"ml10",children:[e.jsx(t.BwgTitleBox,{title:"전자결재 목록",children:e.jsx(l.BwgButton,{onClick:()=>{o.callService("SCMINTF00101",{crprCd:o.getCrprCd(),sysCd:__SYS_CD__}).then(n=>{r.current?.addAllData(n.sub)})},children:"조회"})}),e.jsx(t.BwgGrid,{gridColumns:u,gridEvents:{onCellDblClicked(n,d){console.log(d);const c=n.getDataSource().getJsonRow(d.dataRow);o.openGwDraftByAprvKey(c.aprvKey)}},ref:r,gridInitCallback:()=>{o.callService("SCMINTF00101",{crprCd:o.getCrprCd(),sysCd:__SYS_CD__}).then(n=>{r.current?.addAllData(n.sub)})}})]})})},j=()=>e.jsx(t.BwgView,{buttons:{grant:[{id:"search",label:"조회",onClick:()=>{console.log("search")}},{id:"new",label:"신규",onClick:()=>{console.log("new")}}],custom:[{id:"manual",label:"매뉴얼",onClick:()=>{console.log("manual")}}]},children:e.jsx(t.BwgTabs,{items:[{key:"M01S00",label:"경조사비 신청",children:e.jsx(f,{})},{key:"M01S01",label:"기안연계 목록",children:e.jsx(C,{})}]})});exports.BwgComponentGuide=y;exports.BwgDeveloperGuide=b;exports.BwgPracticeGuide=j;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as e, jsxs as a } from "react/jsx-runtime";
|
|
2
|
-
import { b as B, C as D, d as f, e as g, f as K, h as P, i as s, j as l, k, l as S } from "../../chunks/common-components-
|
|
2
|
+
import { b as B, C as D, d as f, e as g, f as K, h as P, i as s, j as l, k, l as S } from "../../chunks/common-components-DVV6_tAQ.js";
|
|
3
3
|
import { useRef as n, useState as T, useMemo as b, useCallback as M, useEffect as I } from "react";
|
|
4
4
|
import { Divider as C } from "antd";
|
|
5
5
|
import { submitGwApproval as E, callService as N, getCrprCd as v, openGwDraftByAprvKey as _ } from "../../utils/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/layout-components-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/layout-components-DWoz_2hX.cjs");exports.AppWrapper=e.AppWrapper;exports.BwgCoreLogin=e.BwgCoreLogin;exports.BwgPortal01=e.BwgPortal01;exports.BwgPortal02=e.BwgPortal02;exports.ConfigurableContent=e.ConfigurableContent;exports.ConfigurableHeader=e.ConfigurableHeader;exports.ConfigurableMenuTab=e.ConfigurableMenuTab;exports.ConfigurableSidebar=e.ConfigurableSidebar;exports.ContentContainer=e.ContentContainer;exports.DefaultLoginView=e.DefaultLoginView;exports.LandingContainer=e.LandingContainer;exports.LoadingContainer=e.LoadingContainer;exports.PopupContainer=e.PopupContainer;exports.ProtectWrapper=e.ProtectWrapper;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as n, b as o, B as r, a as i, d as s, e as t, f as g, g as C, C as p, D as b, c as f, L as l, P as u, h as d } from "../../chunks/layout-components-
|
|
1
|
+
import { A as n, b as o, B as r, a as i, d as s, e as t, f as g, g as C, C as p, D as b, c as f, L as l, P as u, h as d } from "../../chunks/layout-components-CsjlGe-8.js";
|
|
2
2
|
export {
|
|
3
3
|
n as AppWrapper,
|
|
4
4
|
o as BwgCoreLogin,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CMAdminBoardM01.d.ts","sourceRoot":"","sources":["../../../../src/components/pages/board/CMAdminBoardM01.tsx"],"names":[],"mappings":"AAqGA,QAAA,MAAM,eAAe,GAAI,mBAGtB;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,
|
|
1
|
+
{"version":3,"file":"CMAdminBoardM01.d.ts","sourceRoot":"","sources":["../../../../src/components/pages/board/CMAdminBoardM01.tsx"],"names":[],"mappings":"AAqGA,QAAA,MAAM,eAAe,GAAI,mBAGtB;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,4CAgzBA,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../chunks/common-components-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../chunks/common-components-IDvLizgf.cjs");exports.CMPrgrMstrP02=r.CMPrgrMstrP02;exports.SearchDepartmentP01=r.SearchDepartmentP01;exports.SearchDepartmentP02=r.SearchDepartmentP02;exports.SearchHolidayP01=r.CMHldyMstrP01;exports.SearchOrganizationP01=r.SearchOrganizationP01;exports.SearchOrganizationP02=r.SearchOrganizationP02;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { E as e, x as t, y as s, D as P, z as n, A as c } from "../../chunks/common-components-
|
|
1
|
+
import { E as e, x as t, y as s, D as P, z as n, A as c } from "../../chunks/common-components-DVV6_tAQ.js";
|
|
2
2
|
export {
|
|
3
3
|
e as CMPrgrMstrP02,
|
|
4
4
|
t as SearchDepartmentP01,
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./utils/index.cjs"),r=require("./stores/index.cjs"),o=require("./chunks/common-components-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./utils/index.cjs"),r=require("./stores/index.cjs"),o=require("./chunks/common-components-IDvLizgf.cjs"),t=require("./components/core/index.cjs"),s=require("./chunks/layout-components-DWoz_2hX.cjs"),i=require("./provider/index.cjs");exports.ApiError=e.ApiError;exports.DEFAULT_FMT=e.DEFAULT_FMT;exports.DEFAULT_SERVICE_CODES=e.DEFAULT_SERVICE_CODES;exports.THEME_COOKIE_NAME=e.THEME_COOKIE_NAME;exports.add=e.add;exports.apiGet=e.apiGet;exports.apiUtils=e.apiUtils;exports.arrAverage=e.arrAverage;exports.arrCount=e.arrCount;exports.arrMax=e.arrMax;exports.arrMin=e.arrMin;exports.arrReverse=e.arrReverse;exports.arrSum=e.arrSum;exports.arrUnique=e.arrUnique;exports.bwgUtils=e.bwgUtils;exports.callService=e.callService;exports.callServiceBySysCd=e.callServiceBySysCd;exports.clamp=e.clamp;exports.clearSessionStorage=e.clearSessionStorage;exports.closeAllMessages=e.closeAllMessages;exports.closeMessage=e.closeMessage;exports.closeNotification=e.closeNotification;exports.commonUtils=e.commonUtils;exports.configureEnvUtils=e.configureEnvUtils;exports.copyToClipboard=e.copyToClipboard;exports.debounce=e.debounce;exports.deleteCookie=e.deleteCookie;exports.destroyNotifications=e.destroyNotifications;exports.diff=e.diff;exports.downloadByFileKey=e.downloadByFileKey;exports.downloadFile=e.downloadFile;exports.duplicates=e.duplicates;exports.encryptSha256=e.encryptSha256;exports.endOf=e.endOf;exports.envUtils=e.envUtils;exports.fileUtils=e.fileUtils;exports.format=e.format;exports.generateRandomColor=e.generateRandomColor;exports.generateRandomString=e.generateRandomString;exports.generateUID=e.generateUID;exports.getAllServiceCodes=e.getAllServiceCodes;exports.getApiDeps=e.getApiDeps;exports.getClientIp=e.getClientIp;exports.getCookie=e.getCookie;exports.getCrprCd=e.getCrprCd;exports.getDepartmentInfo=e.getDepartmentInfo;exports.getDeviceType=e.getDeviceType;exports.getDisplayName=e.getDisplayName;exports.getDprtCd=e.getDprtCd;exports.getDprtNm=e.getDprtNm;exports.getEmplNo=e.getEmplNo;exports.getEnvCode=e.getEnvCode;exports.getHrInfo=e.getHrInfo;exports.getJbdtCd=e.getJbdtCd;exports.getJbgdCd=e.getJbgdCd;exports.getJbkdCd=e.getJbkdCd;exports.getJbpsCd=e.getJbpsCd;exports.getPermissionService=e.getPermissionService;exports.getRoleList=e.getRoleList;exports.getServiceCode=e.getServiceCode;exports.getSessionStorage=e.getSessionStorage;exports.getTodateString=e.getTodateString;exports.getUserDvsn=e.getUserDvsn;exports.getUserId=e.getUserId;exports.getUserInfo=e.getUserInfo;exports.getUserNm=e.getUserNm;exports.getWkplCd=e.getWkplCd;exports.hasAllRoles=e.hasAllRoles;exports.hasAnyRole=e.hasAnyRole;exports.hasRole=e.hasRole;exports.hasUserInfo=e.hasUserInfo;exports.initApiDeps=e.initApiDeps;exports.isArray=e.isArray;exports.isBoolean=e.isBoolean;exports.isDesktop=e.isDesktop;exports.isDev=e.isDev;exports.isEmpty=e.isEmpty;exports.isEmptyArray=e.isEmptyArray;exports.isFunction=e.isFunction;exports.isLocal=e.isLocal;exports.isLoggedIn=e.isLoggedIn;exports.isMobile=e.isMobile;exports.isNull=e.isNull;exports.isNullOrUndefined=e.isNullOrUndefined;exports.isNumber=e.isNumber;exports.isObject=e.isObject;exports.isProd=e.isProd;exports.isSafeEmpty=e.isSafeEmpty;exports.isString=e.isString;exports.isTablet=e.isTablet;exports.isUndefined=e.isUndefined;exports.isValid=e.isValid;exports.isValidDate=e.isValidDate;exports.isValidEmail=e.isValidEmail;exports.isValidUrl=e.isValidUrl;exports.isValidYear=e.isValidYear;exports.isValidYearMonth=e.isValidYearMonth;exports.logServiceCodeConfig=e.logServiceCodeConfig;exports.messageUtils=e.messageUtils;exports.notiBwgError=e.notiBwgError;exports.notiError=e.notiError;exports.notiInfo=e.notiInfo;exports.notiSuccess=e.notiSuccess;exports.notiWarning=e.notiWarning;exports.notificationService=e.notificationService;exports.notificationUtils=e.notificationUtils;exports.now=e.now;exports.openGwDraftByAprvKey=e.openGwDraftByAprvKey;exports.padLeft=e.padLeft;exports.padRight=e.padRight;exports.random=e.random;exports.realFormat=e.realFormat;exports.removeSessionStorage=e.removeSessionStorage;exports.round=e.round;exports.serviceUtils=e.serviceUtils;exports.setClientIp=e.setClientIp;exports.setCookie=e.setCookie;exports.setServiceCodeOverrides=e.setServiceCodeOverrides;exports.setSessionStorage=e.setSessionStorage;exports.showApiError=e.showApiError;exports.showDuplicateError=e.showDuplicateError;exports.showError=e.showError;exports.showInfo=e.showInfo;exports.showLoading=e.showLoading;exports.showRequiredError=e.showRequiredError;exports.showSaveError=e.showSaveError;exports.showSaveSuccess=e.showSaveSuccess;exports.showSuccess=e.showSuccess;exports.showWarning=e.showWarning;exports.startOf=e.startOf;exports.submitGwApproval=e.submitGwApproval;exports.throttle=e.throttle;exports.toCamelCase=e.toCamelCase;exports.uploadFilesViaSftp=e.uploadFilesViaSftp;exports.userUtils=e.userUtils;exports.verifyClientIp=e.verifyClientIp;exports.useCapsLock=r.useCapsLock;exports.useCode=r.useCode;exports.useCodeStore=r.useCodeStore;exports.useColorStore=r.useColorStore;exports.useFavorite=r.useFavorite;exports.useFavoriteStore=r.useFavoriteStore;exports.useLoadingStore=r.useLoadingStore;exports.useLogin=r.useLogin;exports.useLogout=r.useLogout;exports.useMenuModel=r.useMenuModel;exports.useMenuModelStore=r.useMenuModelStore;exports.useMenuView=r.useMenuView;exports.useMenuViewStore=r.useMenuViewStore;exports.useOptionStore=r.useOptionStore;exports.usePopupLoadingStore=r.usePopupLoadingStore;exports.usePopupState=r.usePopupState;exports.usePopupStore=r.usePopupStore;exports.useSystemCode=r.useSystemCode;exports.useSystemStore=r.useSystemStore;exports.useUser=r.useUser;exports.useUserStore=r.useUserStore;exports.ButtonAccessController=o.ButtonAccessController;exports.BwgButtonGroup=o.BwgButtonGroup;exports.BwgCmptArea=o.BwgCmptArea;exports.BwgCol=o.BwgCol;exports.BwgComponentGuideM01=o.BwgComponentGuideM01;exports.BwgConfigProvider=o.BwgConfigProvider;exports.BwgDetail=o.BwgDetail;exports.BwgDeveloperGuideM01=o.BwgDeveloperGuideM01;exports.BwgDrawer=o.BwgDrawer;exports.BwgEditor=o.BwgEditor;exports.BwgGrid=o.BwgGrid;exports.BwgInfoArea=o.BwgInfoArea;exports.BwgPagination=o.BwgPagination;exports.BwgPopup=o.BwgPopup;exports.BwgReactGuideM01=o.BwgReactGuideM01;exports.BwgRow=o.BwgRow;exports.BwgSpace=o.BwgSpace;exports.BwgTable=o.BwgTable;exports.BwgTabs=o.BwgTabs;exports.BwgTitleBox=o.BwgTitleBox;exports.BwgView=o.BwgView;exports.CMAdminBoardM01=o.CMAdminBoardM01;exports.CMAuthMstrM01=o.CMAuthMstrM01;exports.CMBoardS01=o.CMBoardCommentS01;exports.CMFileMstrM01=o.CMFileMstrM01;exports.CMHldyCfg=o.CMHldyCfg;exports.CMMenuMstrM01=o.CMMenuMstrM01;exports.CMMenuPrgrSelectModal=o.CMMenuPrgrSelectModal;exports.CMMenuPrntSelectModal=o.CMMenuPrntSelectModal;exports.CMMyBoardM01=o.CMMyBoardM01;exports.CMPopupMstrM01=o.CMPopuMstrM01;exports.CMPrgrMstrM01=o.CMPrgrMstrM01;exports.CMPrgrMstrP02=o.CMPrgrMstrP02;exports.CMRoleMstrM01=o.CMRoleMstrM01;exports.CMSystCfgM01=o.CMSystCfgM01;exports.CMSystCodeM01=o.CMSystCodeM01;exports.CMUserMstrM01=o.CMUserMstrM01;exports.ContentBox=o.ContentBox;exports.ContentLayOut=o.ContentLayOut;exports.GlobalConfigProvider=o.GlobalConfigProvider;exports.QuickServiceToggle=o.QuickServiceToggle;exports.SSOHandler=o.SSOHandler;exports.SearchBox=o.SearchBox;exports.SearchDepartmentP01=o.SearchDepartmentP01;exports.SearchDepartmentP02=o.SearchDepartmentP02;exports.SearchHolidayP01=o.CMHldyMstrP01;exports.SearchOrganizationP01=o.SearchOrganizationP01;exports.SearchOrganizationP02=o.SearchOrganizationP02;exports.SystemCodeManage=o.SystemCodeManage;exports.createBwgGridRenderer=o.createBwgGridRenderer;exports.BwgButton=t.BwgButton;exports.BwgCheck=t.BwgCheck;exports.BwgCheckList=t.BwgCheckList;exports.BwgDatePicker=t.BwgDatePicker;exports.BwgDownload=t.BwgDownload;exports.BwgForm=t.BwgForm;exports.BwgFormItem=t.BwgFormItem;exports.BwgInput=t.BwgInput;exports.BwgLargeUploader=t.BwgLargeUploader;exports.BwgMaskedInput=t.BwgMaskedInput;exports.BwgMaskedPicker=t.BwgMaskedPicker;exports.BwgMultiSelect=t.BwgMultiSelect;exports.BwgNumber=t.BwgNumber;exports.BwgRadio=t.BwgRadio;exports.BwgRangePicker=t.BwgRangePicker;exports.BwgSearch=t.BwgSearch;exports.BwgSelect=t.BwgSelect;exports.BwgSwitch=t.BwgSwitch;exports.BwgTextArea=t.BwgTextArea;exports.BwgUploader=t.BwgUploader;exports.AppWrapper=s.AppWrapper;exports.BwgCoreLogin=s.BwgCoreLogin;exports.BwgPortal01=s.BwgPortal01;exports.BwgPortal02=s.BwgPortal02;exports.ConfigurableContent=s.ConfigurableContent;exports.ConfigurableHeader=s.ConfigurableHeader;exports.ConfigurableMenuTab=s.ConfigurableMenuTab;exports.ConfigurableSidebar=s.ConfigurableSidebar;exports.ContentContainer=s.ContentContainer;exports.DefaultLoginView=s.DefaultLoginView;exports.LandingContainer=s.LandingContainer;exports.LoadingContainer=s.LoadingContainer;exports.PopupContainer=s.PopupContainer;exports.ProtectWrapper=s.ProtectWrapper;exports.AuthProvider=i.AuthProvider;exports.CommonCodeProvider=i.CommonCodeProvider;exports.ScreenProtectProvider=i.ScreenProtectProvider;exports.SearchBoxProvider=i.SearchBoxProvider;exports.ServiceCodeProvider=i.ServiceCodeProvider;exports.useAllServiceCodes=i.useAllServiceCodes;exports.useAuth=i.useAuth;exports.useCodeColor=i.useCodeColor;exports.useCodeList=i.useCodeList;exports.useCodeListByOption=i.useCodeListByOption;exports.useCodeName=i.useCodeName;exports.useCommonCode=i.useCommonCode;exports.useGridLookup=i.useGridLookup;exports.useLock=i.useLock;exports.useLogServiceCodeConfig=i.useLogServiceCodeConfig;exports.usePopup=i.usePopup;exports.useSearchBox=i.useSearchBox;exports.useServiceCode=i.useServiceCode;exports.useServiceCodeValue=i.useServiceCodeValue;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ApiError as r, DEFAULT_FMT as s, DEFAULT_SERVICE_CODES as a, THEME_COOKIE_NAME as t, add as i, apiGet as n, apiUtils as g, arrAverage as d, arrCount as l, arrMax as u, arrMin as C, arrReverse as p, arrSum as S, arrUnique as c, bwgUtils as w, callService as M, callServiceBySysCd as B, clamp as m, clearSessionStorage as f, closeAllMessages as v, closeMessage as P, closeNotification as h, commonUtils as y, configureEnvUtils as A, copyToClipboard as U, debounce as D, deleteCookie as E, destroyNotifications as L, diff as b, downloadByFileKey as I, downloadFile as k, duplicates as R, encryptSha256 as O, endOf as T, envUtils as x, fileUtils as F, format as V, generateRandomColor as N, generateRandomString as G, generateUID as H, getAllServiceCodes as W, getApiDeps as _, getClientIp as J, getCookie as K, getCrprCd as q, getDepartmentInfo as z, getDeviceType as Y, getDisplayName as j, getDprtCd as Q, getDprtNm as X, getEmplNo as Z, getEnvCode as $, getHrInfo as ee, getJbdtCd as oe, getJbgdCd as re, getJbkdCd as se, getJbpsCd as ae, getPermissionService as te, getRoleList as ie, getServiceCode as ne, getSessionStorage as ge, getTodateString as de, getUserDvsn as le, getUserId as ue, getUserInfo as Ce, getUserNm as pe, getWkplCd as Se, hasAllRoles as ce, hasAnyRole as we, hasRole as Me, hasUserInfo as Be, initApiDeps as me, isArray as fe, isBoolean as ve, isDesktop as Pe, isDev as he, isEmpty as ye, isEmptyArray as Ae, isFunction as Ue, isLocal as De, isLoggedIn as Ee, isMobile as Le, isNull as be, isNullOrUndefined as Ie, isNumber as ke, isObject as Re, isProd as Oe, isSafeEmpty as Te, isString as xe, isTablet as Fe, isUndefined as Ve, isValid as Ne, isValidDate as Ge, isValidEmail as He, isValidUrl as We, isValidYear as _e, isValidYearMonth as Je, logServiceCodeConfig as Ke, messageUtils as qe, notiBwgError as ze, notiError as Ye, notiInfo as je, notiSuccess as Qe, notiWarning as Xe, notificationService as Ze, notificationUtils as $e, now as eo, openGwDraftByAprvKey as oo, padLeft as ro, padRight as so, random as ao, realFormat as to, removeSessionStorage as io, round as no, serviceUtils as go, setClientIp as lo, setCookie as uo, setServiceCodeOverrides as Co, setSessionStorage as po, showApiError as So, showDuplicateError as co, showError as wo, showInfo as Mo, showLoading as Bo, showRequiredError as mo, showSaveError as fo, showSaveSuccess as vo, showSuccess as Po, showWarning as ho, startOf as yo, submitGwApproval as Ao, throttle as Uo, toCamelCase as Do, uploadFilesViaSftp as Eo, userUtils as Lo, verifyClientIp as bo } from "./utils/index.js";
|
|
2
2
|
import { useCapsLock as ko, useCode as Ro, useCodeStore as Oo, useColorStore as To, useFavorite as xo, useFavoriteStore as Fo, useLoadingStore as Vo, useLogin as No, useLogout as Go, useMenuModel as Ho, useMenuModelStore as Wo, useMenuView as _o, useMenuViewStore as Jo, useOptionStore as Ko, usePopupLoadingStore as qo, usePopupState as zo, usePopupStore as Yo, useSystemCode as jo, useSystemStore as Qo, useUser as Xo, useUserStore as Zo } from "./stores/index.js";
|
|
3
|
-
import { f as er, q as or, r as rr, j as sr, I as ar, B as tr, s as ir, J as nr, t as gr, p as dr, h as lr, u as ur, o as Cr, n as pr, K as Sr, i as cr, b as wr, v as Mr, l as Br, e as mr, k as fr, Y as vr, F as Pr, Z as hr, L as yr, T as Ar, M as Ur, N as Dr, O as Er, _ as Lr, P as br, R as Ir, E as kr, H as Rr, U as Or, V as Tr, X as xr, d as Fr, C as Vr, G as Nr, Q as Gr, w as Hr, S as Wr, x as _r, y as Jr, D as Kr, z as qr, A as zr, W as Yr, m as jr } from "./chunks/common-components-
|
|
3
|
+
import { f as er, q as or, r as rr, j as sr, I as ar, B as tr, s as ir, J as nr, t as gr, p as dr, h as lr, u as ur, o as Cr, n as pr, K as Sr, i as cr, b as wr, v as Mr, l as Br, e as mr, k as fr, Y as vr, F as Pr, Z as hr, L as yr, T as Ar, M as Ur, N as Dr, O as Er, _ as Lr, P as br, R as Ir, E as kr, H as Rr, U as Or, V as Tr, X as xr, d as Fr, C as Vr, G as Nr, Q as Gr, w as Hr, S as Wr, x as _r, y as Jr, D as Kr, z as qr, A as zr, W as Yr, m as jr } from "./chunks/common-components-DVV6_tAQ.js";
|
|
4
4
|
import { BwgButton as Xr, BwgCheck as Zr, BwgCheckList as $r, BwgDatePicker as es, BwgDownload as os, BwgForm as rs, BwgFormItem as ss, BwgInput as as, BwgLargeUploader as ts, BwgMaskedInput as is, BwgMaskedPicker as ns, BwgMultiSelect as gs, BwgNumber as ds, BwgRadio as ls, BwgRangePicker as us, BwgSearch as Cs, BwgSelect as ps, BwgSwitch as Ss, BwgTextArea as cs, BwgUploader as ws } from "./components/core/index.js";
|
|
5
|
-
import { A as Bs, b as ms, B as fs, a as vs, d as Ps, e as hs, f as ys, g as As, C as Us, D as Ds, c as Es, L as Ls, P as bs, h as Is } from "./chunks/layout-components-
|
|
5
|
+
import { A as Bs, b as ms, B as fs, a as vs, d as Ps, e as hs, f as ys, g as As, C as Us, D as Ds, c as Es, L as Ls, P as bs, h as Is } from "./chunks/layout-components-CsjlGe-8.js";
|
|
6
6
|
import { AuthProvider as Rs, CommonCodeProvider as Os, ScreenProtectProvider as Ts, SearchBoxProvider as xs, ServiceCodeProvider as Fs, useAllServiceCodes as Vs, useAuth as Ns, useCodeColor as Gs, useCodeList as Hs, useCodeListByOption as Ws, useCodeName as _s, useCommonCode as Js, useGridLookup as Ks, useLock as qs, useLogServiceCodeConfig as zs, usePopup as Ys, useSearchBox as js, useServiceCode as Qs, useServiceCodeValue as Xs } from "./provider/index.js";
|
|
7
7
|
export {
|
|
8
8
|
r as ApiError,
|
package/dist/stores/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("zustand"),y=require("../utils/index.cjs"),L=require("antd"),V=require("../chunks/layout-components-CIO09Lhe.cjs"),F=require("react"),Q=require("react-router-dom");function ee(n,r){let e;try{e=n()}catch{return}return{getItem:o=>{var t;const a=d=>d===null?null:JSON.parse(d,void 0),c=(t=e.getItem(o))!=null?t:null;return c instanceof Promise?c.then(a):a(c)},setItem:(o,t)=>e.setItem(o,JSON.stringify(t,void 0)),removeItem:o=>e.removeItem(o)}}const H=n=>r=>{try{const e=n(r);return e instanceof Promise?e:{then(s){return H(s)(e)},catch(s){return this}}}catch(e){return{then(s){return this},catch(s){return H(s)(e)}}}},te=(n,r)=>(e,s,o)=>{let t={storage:ee(()=>localStorage),partialize:C=>C,version:0,merge:(C,S)=>({...S,...C}),...r},a=!1;const c=new Set,d=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 l=()=>{const C=t.partialize({...s()});return i.setItem(t.name,{state:C,version:t.version})},f=o.setState;o.setState=(C,S)=>(f(C,S),l());const m=n((...C)=>(e(...C),l()),s,o);o.getInitialState=()=>m;let u;const h=()=>{var C,S;if(!i)return;a=!1,c.forEach(g=>{var N;return g((N=s())!=null?N:m)});const k=((S=t.onRehydrateStorage)==null?void 0:S.call(t,(C=s())!=null?C:m))||void 0;return H(i.getItem.bind(i))(t.name).then(g=>{if(g)if(typeof g.version=="number"&&g.version!==t.version){if(t.migrate){const N=t.migrate(g.state,g.version);return N instanceof Promise?N.then(B=>[!0,B]):[!0,N]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,g.state];return[!1,void 0]}).then(g=>{var N;const[B,Z]=g;if(u=t.merge(Z,(N=s())!=null?N:m),e(u,!0),B)return l()}).then(()=>{k?.(u,void 0),u=s(),a=!0,d.forEach(g=>g(u))}).catch(g=>{k?.(void 0,g)})};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=>(c.add(C),()=>{c.delete(C)}),onFinishHydration:C=>(d.add(C),()=>{d.delete(C)})},t.skipHydration||h(),u||m},M=te,w=b.create()(M((n,r)=>({user:null,hrInfo:null,buttonAuths:{},isLoggedIn:()=>!!r().user,setLoginUser:(e,s)=>{n({user:e,hrInfo:s??null}),console.log("사용자 로그인:",e,s)},clearLoginUser:()=>{n({user:null,hrInfo:null,buttonAuths:{}}),console.log("사용자 로그아웃")},updateUser:(e,s)=>{const o=r().user,t=r().hrInfo;o&&n({user:{...o,...e}}),t&&n({hrInfo:{...t,...s}})},getButtonAuth:(e,s)=>{const o=`${e}_${s}`;return r().buttonAuths[o]||null},setButtonAuth:(e,s,o)=>{const t=`${e}_${s}`;n(a=>({buttonAuths:{...a.buttonAuths,[t]:o}}))},clearButtonAuths:()=>{n({buttonAuths:{}})}}),{name:"user-storage",partialize:n=>({user:n.user,hrInfo:n.hrInfo,isLoggedIn:n.isLoggedIn})})),K={CACHE_SIZE_LIMIT:1e3},p={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)}},v=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 d=(o.get(t.cmmnCd)||[]).reduce((i,l)=>(l.optnCd&&l.optnNm&&(i[l.optnCd]=l.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(d).length>0?d:null,originalData:t}}})}return console.log("대규모 데이터 변환 완료:",r),r},I=b.create()(M((n,r)=>({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set,fetchSystemCodes:async()=>{n({isLoading:!0,error:null});try{console.log("시스템 공통코드 데이터 가져오기 시작: SCMSIGN00301");const e=await y.callService(y.getServiceCode("SRCH_CODE"),{crprCd:"100"});console.log("시스템 공통코드 응답:",e),console.log("시스템 공통코드목록:",e.code),console.log("시스템 공통코드옵션목록:",e.opt);const s=v(e),t={...r().codeData||{},...s};p.clearCache();const a=new Set(Object.keys(t));a.forEach(c=>{p.markGroupLoaded(c)}),n({codeData:t,isLoading:!1,error:null,lastUpdated:new Date,loadedGroups:a}),console.log("시스템 공통코드 데이터 가져오기 완료")}catch(e){console.error("시스템 공통코드 데이터 가져오기 실패:",e),n({isLoading:!1,error:e instanceof Error?e.message:"시스템 공통코드 데이터 가져오기 실패"})}},fetchBusinessCodes:async()=>{n({isLoading:!0,error:null});try{console.log("업무 공통코드 데이터 가져오기 시작: SCMSIGN00302");const e=await y.callService("SCMSIGN00302",{sysCd:__SYS_CD__});console.log("업무 공통코드 응답:",e),console.log("업무 공통코드목록:",e.code),console.log("업무 공통코드옵션목록:",e.opt);const s=v(e),t={...r().codeData||{},...s};p.clearCache();const a=new Set(Object.keys(t));a.forEach(c=>{p.markGroupLoaded(c)}),n({codeData:t,isLoading:!1,error:null,lastUpdated:new Date,loadedGroups:a}),console.log("업무 공통코드 데이터 가져오기 완료")}catch(e){console.error("업무 공통코드 데이터 가져오기 실패:",e),n({isLoading:!1,error:e instanceof Error?e.message:"업무 공통코드 데이터 가져오기 실패"})}},fetchData:async()=>{n({isLoading:!0,error:null});try{console.log("전체 공통코드 데이터 가져오기 시작 (시스템 + 업무)");const[e,s]=await Promise.all([y.callService(y.getServiceCode("SRCH_CODE"),{crprCd:"100"}),y.callService("SCMSIGN00302",{sysCd:__SYS_CD__})]);console.log("시스템 공통코드 응답:",e),console.log("업무 공통코드 응답:",s);const o=v(e),t=v(s),a={...o,...t};p.clearCache();const c=new Set(Object.keys(a));c.forEach(d=>{p.markGroupLoaded(d)}),n({codeData:a,isLoading:!1,error:null,lastUpdated:new Date,loadedGroups:c}),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}),p.markGroupLoaded(e)},setData:e=>{p.clearCache();const s=new Set(Object.keys(e));s.forEach(o=>{p.markGroupLoaded(o)}),n({codeData:e,lastUpdated:new Date,loadedGroups:s})},clearData:()=>{p.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)})})),_=b.create()(M((n,r)=>({get codeData(){return I.getState().codeData},get isLoading(){return I.getState().isLoading},get error(){return I.getState().error},get lastUpdated(){return I.getState().lastUpdated},fetchCommonCodes:async()=>{await I.getState().fetchData()},getCodeList:(e,s)=>{const{enabledOnly:o=!0,systemCodeOnly:t=!1,sortByOrder:a=!1,excludeParentCode:c=!1}=s||{},d=`simpleCodeList_${e}_${o}_${t}_${a}_${c}`;if(p.optionCache.has(d)){const h=p.cacheHits.get(d)||0;return p.cacheHits.set(d,h+1),p.optionCache.get(d)}const i=I.getState().codeData;if(!i)return[];if(!p.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const l=[],f=i[e];f&&Object.values(f).forEach(h=>{if(!(o&&!h.enabled)&&!(t&&h.systemCodeYn!=="Y"))if(c){const C=e.length,S=h.codeValue.substring(C);S.length>0&&l.push({...h,codeValue:S})}else l.push(h)});let m;a?m=l.sort((h,C)=>h.sortOrder!==C.sortOrder?h.sortOrder-C.sortOrder:h.codeValue.localeCompare(C.codeValue)):m=l.sort((h,C)=>h.codeValue.localeCompare(C.codeValue));const u=m.map(h=>({label:h.codeNm,value:h.codeValue,tagColor:h.labelColor}));return p.optionCache.size>=K.CACHE_SIZE_LIMIT&&p.cleanupCache(),p.optionCache.set(d,u),p.cacheHits.set(d,1),u},getCodeName:e=>{if(p.nameCache.has(e)){const o=p.cacheHits.get(`name_${e}`)||0;return p.cacheHits.set(`name_${e}`,o+1),p.nameCache.get(e)}const s=I.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 p.nameCache.set(e,t.codeNm),p.cacheHits.set(`name_${e}`,1),t.codeNm;return null},getCodeColor:e=>{if(p.colorCache.has(e)){const o=p.cacheHits.get(`color_${e}`)||0;return p.cacheHits.set(`color_${e}`,o+1),p.colorCache.get(e)}const s=I.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 p.colorCache.set(e,t.labelColor||""),p.cacheHits.set(`color_${e}`,1),t.labelColor;return null},getGridLookup:e=>{const s=`gridLookup_${e}`;if(p.optionCache.has(s)){const i=p.cacheHits.get(s)||0;return p.cacheHits.set(s,i+1),p.optionCache.get(s)}const o=I.getState().codeData;if(!o)return{labels:[],values:[],lookupDisplay:!0};const t=o[e];if(!t)return{labels:[],values:[],lookupDisplay:!0};const a=[],c=[];Object.values(t).filter(i=>i.enabled).sort((i,l)=>i.sortOrder-l.sortOrder).forEach(i=>{a.push(i.codeNm),c.push(i.codeValue)});const d={labels:a,values:c,lookupDisplay:!0};return p.optionCache.set(s,d),p.cacheHits.set(s,1),d},getCodeByOption:(e,s,o)=>{const t=`codeByOption_${e}_${s}_${o}`;if(p.codeCache.has(t)){const l=p.cacheHits.get(t)||0;return p.cacheHits.set(t,l+1),p.codeCache.get(t)}const a=I.getState().codeData;if(!a)return[];const c=[],d=a[e];d&&Object.values(d).forEach(l=>{l.enabled&&l.options&&l.options[s]===o&&c.push({...l,codeNm:l.options[s]||l.codeNm})});const i=c.sort((l,f)=>l.codeValue.localeCompare(f.codeValue));return p.codeCache.size>=K.CACHE_SIZE_LIMIT&&p.cleanupCache(),p.codeCache.set(t,i),p.cacheHits.set(t,1),i},getCodeListByOption:(e,s,o)=>{const{enabledOnly:t=!0,systemCodeOnly:a=!1,sortByOrder:c=!1}=o||{},d=`codeListByOption_${e}_${s}_${t}_${a}_${c}`;if(p.codeCache.has(d)){const u=p.cacheHits.get(d)||0;return p.cacheHits.set(d,u+1),p.codeCache.get(d)}const i=I.getState().codeData;if(!i)return[];if(!p.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const l=[],f=i[e];f&&Object.values(f).forEach(u=>{t&&!u.enabled||a&&u.systemCodeYn!=="Y"||u.options&&u.options[s]&&l.push({label:u.options[s],value:u.commonCode,tagColor:u.labelColor})});let m;return c?m=l.sort((u,h)=>u.value.localeCompare(h.value)):m=l.sort((u,h)=>u.value.localeCompare(h.value)),p.codeCache.size>=K.CACHE_SIZE_LIMIT&&p.cleanupCache(),p.codeCache.set(d,m),p.cacheHits.set(d,1),m},getAvailableGroupCodes:()=>{const e="available_group_codes";if(p.nameCache.has(e)){const t=p.cacheHits.get(e)||0;return p.cacheHits.set(e,t+1),JSON.parse(p.nameCache.get(e))}const s=I.getState().codeData;if(!s)return[];const o=Object.keys(s).sort();return p.nameCache.set(e,JSON.stringify(o)),p.cacheHits.set(e,1),o},clearCodes:()=>{I.getState().clearData()}}),{name:"code-storage",partialize:n=>({})})),oe=b.create()(M((n,r)=>({get codeData(){return I.getState().codeData},get isLoading(){return I.getState().isLoading},get error(){return I.getState().error},get lastUpdated(){return I.getState().lastUpdated},fetchCommonCodes:async()=>{await I.getState().fetchData()},getOptionValue:(e,s)=>{const o=`option_${e}_${s}`;if(p.optionCache.has(o)){const c=p.cacheHits.get(o)||0;return p.cacheHits.set(o,c+1),p.optionCache.get(o)}const t=I.getState().codeData;if(!t)return null;const a=t[e];if(a&&a[s]){const c=a[s].options;return p.optionCache.set(o,c),p.cacheHits.set(o,1),c}return null},getOptionByKey:(e,s,o)=>{const t=`option_${e}_${s}_${o}`;if(p.optionCache.has(t)){const d=p.cacheHits.get(t)||0;return p.cacheHits.set(t,d+1),p.optionCache.get(t)}const a=r().getOptionValue(e,s),c=a?a[o]:null;return p.optionCache.set(t,c),p.cacheHits.set(t,1),c},clearCodes:()=>{I.getState().clearData()}}),{name:"option-storage",partialize:n=>({})})),se=b.create()(M((n,r)=>({get codeData(){return I.getState().codeData},get isLoading(){return I.getState().isLoading},get error(){return I.getState().error},get lastUpdated(){return I.getState().lastUpdated},fetchCommonCodes:async()=>{await I.getState().fetchData()},getColorCode:e=>{if(p.colorCache.has(e)){const o=p.cacheHits.get(`color_${e}`)||0;return p.cacheHits.set(`color_${e}`,o+1),p.colorCache.get(e)}const s=I.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 p.colorCache.set(e,t.labelColor||""),p.cacheHits.set(`color_${e}`,1),t.labelColor;return null},getColorMapping:()=>{const e="color_mapping";if(p.optionCache.has(e)){const t=p.cacheHits.get(e)||0;return p.cacheHits.set(e,t+1),p.optionCache.get(e)}const s=I.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})})}),p.optionCache.set(e,o),p.cacheHits.set(e,1),o},clearCodes:()=>{I.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=D(r().nodes,e);return s?r().nodes[s]?.prntBkmkId??"-":"-"},getNodeByMenuId:e=>{const s=D(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=c=>e?c.toLowerCase().includes(e.toLowerCase()):!0,a=c=>{const d=s[c];if(!d||d.type!=="F")return null;const i=d,l=(i.children||[]).map(m=>s[m]).filter(m=>!!m&&m.type==="F").map(m=>a(m.bkmkId)).filter(Boolean);return t(i.bkmkNm)||l.length>0?{key:i.bkmkId,title:`📁 ${i.bkmkNm}`,children:l.length?l:void 0}:null};return o.map(c=>a(c)).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 y.callService("SCMBKMK00101",{userId:e}),a=Array.isArray(t?.sub)?t.sub:[],c=re(a),d=P(c.nodes,c.rootIds);n({...c,treeNodes:d,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=E(r()),o=ae();n(t=>{const a=e.sortOrdr??x(t,e.prntBkmkId),c={...t,nodes:{...t.nodes,[o]:e.type==="F"?{bkmkId:o,type:"F",prntBkmkId:e.prntBkmkId||"-",sortOrdr:a,bkmkNm:e.bkmkNm??"새 폴더",children:[],sysCd:e.sysCd,userId:e.userId}:{bkmkId:o,type:"M",prntBkmkId:e.prntBkmkId,sortOrdr:a,menuId:e.menuId??"",menuNm:e.menuNm,sysCd:e.sysCd,userId:e.userId}},rootIds:t.rootIds.slice(),treeNodes:t.treeNodes};return ce(c,o,e.prntBkmkId),c.treeNodes=P(c.nodes,c.rootIds),c});try{let t=o;const a=x(r(),e.prntBkmkId),c=await y.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:y.getUserId()});return t=String(c?.bkmkId??c?.itemId??o),n(d=>{const i=pe(d,o,t);return{...i,treeNodes:P(i.nodes,i.rootIds)}}),t}catch(t){throw n(s),t}},moveNode:async({bkmkId:e,newPrntBkmkId:s,sortOrdr:o,userId:t})=>{const a=r(),c=structuredClone(a.nodes),d=[...a.rootIds],i=c[e];if(!i)return;if(s!=="-"){const u=c[s];if(!u||u.type!=="F")throw new Error("부모는 폴더만 가능합니다.")}const l=i.prntBkmkId??"-",f=l==="-"?d:c[l].children||=[];{const u=f.indexOf(e);u>=0&&f.splice(u,1)}const m=s==="-"?d:c[s].children||=[];m.splice(Math.max(0,Math.min(o,m.length)),0,e),i.prntBkmkId=s,n({nodes:c,rootIds:d}),z(c,d,s),z(c,d,l);try{await y.callService("SCMBKMK00104",{bkmkId:e,prntBkmkId:s,sortOrdr:o,chngId:t})}catch(u){throw n(a),u}},removeNode:async e=>{const s=E(r());n(o=>{if(!o.nodes[e])return o;const t={...o,nodes:{...o.nodes},rootIds:o.rootIds.slice(),treeNodes:o.treeNodes};return X(t,e),t.treeNodes=P(t.nodes,t.rootIds),t});try{await y.callService("SCMBKMK00103",{bkmkId:e})}catch(o){throw n(s),o}},editNode:async({bkmkId:e,userId:s,bkmkNm:o,prntBkmkId:t,sortOrdr:a})=>{const c=E(r());n(d=>{const i={...d,nodes:{...d.nodes}},l=i.nodes[e];return l?.type==="F"&&typeof o=="string"&&(i.nodes[e]={...l,bkmkNm:o}),i});try{await y.callService("SCMBKMK00102",{iudFlag:"U",userId:s,bkmkId:e,bkmkNm:o,prntBkmkId:t,sortOrdr:a,chngId:y.getUserId()})}catch(d){throw n(c),d}},addFolder:async(e,s,o,t)=>await r().addNode({type:"F",bkmkNm:e,prntBkmkId:s,sysCd:o,userId:t}),addMenuToFolder:async(e,s)=>D(r().nodes,s.menuId)?"이미 북마크에 저장된 메뉴입니다.":await r().addNode({type:"M",prntBkmkId:e,sysCd:"KH",userId:y.getUserId(),menuId:s.menuId,menuNm:s.menuNm}),toggleMenuFavorite:async(e,s)=>{if(!e)return;const o=r(),t=Object.values(o.nodes).find(c=>c.type==="M"&&c.menuId===s.menuId);if(t){await r().removeNode(t.bkmkId);return}let a=j(o);a||(await r().loadFavorites(e,!0),a=j(r())),a&&await r().addNode({type:"M",prntBkmkId:a,sysCd:"KH",userId:y.getUserId(),menuId:s.menuId,menuNm:s.menuNm})},removeMenuByMenuId:async e=>{const s=r(),o=D(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=d=>o?d.toLowerCase().includes(o.toLowerCase()):!0,c=d=>{const i=e[d];if(!i||t&&i.type!=="F")return null;if(i.type==="F"){const l=i,f=(l.children||[]).map(u=>c(u)).filter(Boolean);return a(l.bkmkNm)||f.length>0?{key:l.bkmkId,type:"F",title:`📁 ${l.bkmkNm}`,bkmkNm:l.bkmkNm,prntBkmkId:l.prntBkmkId,sortOrdr:l.sortOrdr,fullPath:l.fullPath,children:f.length?f:void 0}:null}else{const l=i,f=l.menuNm?`${l.menuNm} (${l.menuId})`:l.menuId;return a(f)?{key:l.bkmkId,type:"M",title:`📄 ${f}`,prntBkmkId:l.prntBkmkId,sortOrdr:l.sortOrdr,fullPath:l.fullPath,isLeaf:!0}:null}};return s.map(c).filter(Boolean)}}),G=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 c=Array.isArray(t.children)?t.children:[];s(c)}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,c)=>(r[a].sortOrdr??0)-(r[c].sortOrdr??0))}),{nodes:r,rootIds:e}}function E(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 x(n,r){if(!r||r==="-")return n.rootIds.length;const e=n.nodes[r];return e?e.children.length:0}function ce(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 de(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 X(n,r){const e=n.nodes[r];if(!e)return;e.type==="F"&&e.children.slice().forEach(a=>X(n,a)),de(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 c=t[o.prntBkmkId];c?.type==="F"&&(t[o.prntBkmkId]={...c,children:c.children.map(d=>d===r?e:d)})}else a=n.rootIds.map(c=>c===r?e:c);return{...n,nodes:t,rootIds:a}}function j(n){return n.rootIds.find(r=>n.nodes[r]?.type==="F")??null}function P(n,r){const e={};Object.values(n).forEach(d=>{const i=d.bkmkId,l=d.prntBkmkId;!i||!l||l==="-"||l===i||(e[l]??=[]).push(i)});const s=new Set,o=d=>{if(s.has(d))return null;const i=n[d];if(!i)return null;s.add(d);try{if(i.type==="F"){const f=i,m=e[d]??[];return{type:"F",bkmkId:d,bkmkNm:f.bkmkNm,prntBkmkId:f.prntBkmkId,children:m.map(o).filter(Boolean)}}const l=i;return{type:"M",bkmkId:d,bkmkNm:l.menuNm,menuId:l.menuId,menuNm:l.menuNm,prntBkmkId:l.prntBkmkId}}finally{s.delete(d)}},t=Object.values(n).filter(d=>d.prntBkmkId==="-"&&d.type==="M").map(d=>d.bkmkId),a=Object.values(n).filter(d=>d.prntBkmkId==="-"&&d.type==="F").map(d=>d.bkmkId);return Array.from(new Set([...r,...t,...a])).map(o).filter(Boolean)}function D(n,r){for(const e of Object.values(n))if(e.type==="M"&&e.menuId===r)return e.bkmkId;return null}function z(n,r,e){(!e||e==="-"?r:n[e].children||[]).forEach((o,t)=>{const a=n[o];a&&(a.sortOrdr=t)})}const R={DEFAULT_PRNT_GBCD:1},le=n=>n&&typeof n=="object"&&typeof n.menuId=="string"&&typeof n.menuNm=="string",Y=n=>Array.isArray(n)&&n.every(le);let T=[],q=[];const ie=n=>{if(n&&typeof n=="object"){const r=n;if(r.menus&&Y(r.menus))return r.menus;if(Y(n))return n}return console.warn("⚠️ 메뉴 응답이 비어있거나 예상과 다릅니다."),[]},ue=(n,r)=>!!r&&n.crprCd===r.crprCd&&n.userId===r.userId&&(n.prntGbcd??R.DEFAULT_PRNT_GBCD)===(r.prntGbcd??R.DEFAULT_PRNT_GBCD),me=n=>{if(T.length===n.length&&T.every((t,a)=>t.menuId===n[a]?.menuId&&t.menuPrntId===n[a]?.menuPrntId))return q;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,c)=>(a?.menuNo??0)-(c?.menuNo??0)).map(a=>({...a,children:a.children&&a.children.length?s(a.children):void 0})),o=s(e);return T=[...n],q=o,o},A=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??R.DEFAULT_PRNT_GBCD};if(ue(t,r()._lastFetchParams)){console.log("✅ 중복 fetch 차단",t);return}n({isLoading:!0,error:null,_lastFetchParams:t});try{const a=await y.callService(y.getServiceCode("AUTH_MENU"),t),c=ie(a),d=me(c);n({flatMenuList:c,menuList:d,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},U=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(c=>c.key===e.menuId),a=o.find(c=>c.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)):L.message.warning("유효하지 않은 메뉴정보입니다.");else{if(o.length>O.MAX_TABS){console.warn("❌ 최대 탭 개수를 초과했습니다."),L.message.warning(`최대 ${O.MAX_TABS}개의 탭만 열 수 있습니다.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("zustand"),y=require("../utils/index.cjs"),L=require("antd"),V=require("../chunks/layout-components-DWoz_2hX.cjs"),F=require("react"),Q=require("react-router-dom");function ee(n,r){let e;try{e=n()}catch{return}return{getItem:o=>{var t;const a=d=>d===null?null:JSON.parse(d,void 0),c=(t=e.getItem(o))!=null?t:null;return c instanceof Promise?c.then(a):a(c)},setItem:(o,t)=>e.setItem(o,JSON.stringify(t,void 0)),removeItem:o=>e.removeItem(o)}}const H=n=>r=>{try{const e=n(r);return e instanceof Promise?e:{then(s){return H(s)(e)},catch(s){return this}}}catch(e){return{then(s){return this},catch(s){return H(s)(e)}}}},te=(n,r)=>(e,s,o)=>{let t={storage:ee(()=>localStorage),partialize:C=>C,version:0,merge:(C,S)=>({...S,...C}),...r},a=!1;const c=new Set,d=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 l=()=>{const C=t.partialize({...s()});return i.setItem(t.name,{state:C,version:t.version})},f=o.setState;o.setState=(C,S)=>(f(C,S),l());const m=n((...C)=>(e(...C),l()),s,o);o.getInitialState=()=>m;let u;const h=()=>{var C,S;if(!i)return;a=!1,c.forEach(g=>{var N;return g((N=s())!=null?N:m)});const k=((S=t.onRehydrateStorage)==null?void 0:S.call(t,(C=s())!=null?C:m))||void 0;return H(i.getItem.bind(i))(t.name).then(g=>{if(g)if(typeof g.version=="number"&&g.version!==t.version){if(t.migrate){const N=t.migrate(g.state,g.version);return N instanceof Promise?N.then(B=>[!0,B]):[!0,N]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,g.state];return[!1,void 0]}).then(g=>{var N;const[B,Z]=g;if(u=t.merge(Z,(N=s())!=null?N:m),e(u,!0),B)return l()}).then(()=>{k?.(u,void 0),u=s(),a=!0,d.forEach(g=>g(u))}).catch(g=>{k?.(void 0,g)})};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=>(c.add(C),()=>{c.delete(C)}),onFinishHydration:C=>(d.add(C),()=>{d.delete(C)})},t.skipHydration||h(),u||m},M=te,w=b.create()(M((n,r)=>({user:null,hrInfo:null,buttonAuths:{},isLoggedIn:()=>!!r().user,setLoginUser:(e,s)=>{n({user:e,hrInfo:s??null}),console.log("사용자 로그인:",e,s)},clearLoginUser:()=>{n({user:null,hrInfo:null,buttonAuths:{}}),console.log("사용자 로그아웃")},updateUser:(e,s)=>{const o=r().user,t=r().hrInfo;o&&n({user:{...o,...e}}),t&&n({hrInfo:{...t,...s}})},getButtonAuth:(e,s)=>{const o=`${e}_${s}`;return r().buttonAuths[o]||null},setButtonAuth:(e,s,o)=>{const t=`${e}_${s}`;n(a=>({buttonAuths:{...a.buttonAuths,[t]:o}}))},clearButtonAuths:()=>{n({buttonAuths:{}})}}),{name:"user-storage",partialize:n=>({user:n.user,hrInfo:n.hrInfo,isLoggedIn:n.isLoggedIn})})),K={CACHE_SIZE_LIMIT:1e3},p={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)}},v=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 d=(o.get(t.cmmnCd)||[]).reduce((i,l)=>(l.optnCd&&l.optnNm&&(i[l.optnCd]=l.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(d).length>0?d:null,originalData:t}}})}return console.log("대규모 데이터 변환 완료:",r),r},I=b.create()(M((n,r)=>({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set,fetchSystemCodes:async()=>{n({isLoading:!0,error:null});try{console.log("시스템 공통코드 데이터 가져오기 시작: SCMSIGN00301");const e=await y.callService(y.getServiceCode("SRCH_CODE"),{crprCd:"100"});console.log("시스템 공통코드 응답:",e),console.log("시스템 공통코드목록:",e.code),console.log("시스템 공통코드옵션목록:",e.opt);const s=v(e),t={...r().codeData||{},...s};p.clearCache();const a=new Set(Object.keys(t));a.forEach(c=>{p.markGroupLoaded(c)}),n({codeData:t,isLoading:!1,error:null,lastUpdated:new Date,loadedGroups:a}),console.log("시스템 공통코드 데이터 가져오기 완료")}catch(e){console.error("시스템 공통코드 데이터 가져오기 실패:",e),n({isLoading:!1,error:e instanceof Error?e.message:"시스템 공통코드 데이터 가져오기 실패"})}},fetchBusinessCodes:async()=>{n({isLoading:!0,error:null});try{console.log("업무 공통코드 데이터 가져오기 시작: SCMSIGN00302");const e=await y.callService("SCMSIGN00302",{sysCd:__SYS_CD__});console.log("업무 공통코드 응답:",e),console.log("업무 공통코드목록:",e.code),console.log("업무 공통코드옵션목록:",e.opt);const s=v(e),t={...r().codeData||{},...s};p.clearCache();const a=new Set(Object.keys(t));a.forEach(c=>{p.markGroupLoaded(c)}),n({codeData:t,isLoading:!1,error:null,lastUpdated:new Date,loadedGroups:a}),console.log("업무 공통코드 데이터 가져오기 완료")}catch(e){console.error("업무 공통코드 데이터 가져오기 실패:",e),n({isLoading:!1,error:e instanceof Error?e.message:"업무 공통코드 데이터 가져오기 실패"})}},fetchData:async()=>{n({isLoading:!0,error:null});try{console.log("전체 공통코드 데이터 가져오기 시작 (시스템 + 업무)");const[e,s]=await Promise.all([y.callService(y.getServiceCode("SRCH_CODE"),{crprCd:"100"}),y.callService("SCMSIGN00302",{sysCd:__SYS_CD__})]);console.log("시스템 공통코드 응답:",e),console.log("업무 공통코드 응답:",s);const o=v(e),t=v(s),a={...o,...t};p.clearCache();const c=new Set(Object.keys(a));c.forEach(d=>{p.markGroupLoaded(d)}),n({codeData:a,isLoading:!1,error:null,lastUpdated:new Date,loadedGroups:c}),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}),p.markGroupLoaded(e)},setData:e=>{p.clearCache();const s=new Set(Object.keys(e));s.forEach(o=>{p.markGroupLoaded(o)}),n({codeData:e,lastUpdated:new Date,loadedGroups:s})},clearData:()=>{p.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)})})),_=b.create()(M((n,r)=>({get codeData(){return I.getState().codeData},get isLoading(){return I.getState().isLoading},get error(){return I.getState().error},get lastUpdated(){return I.getState().lastUpdated},fetchCommonCodes:async()=>{await I.getState().fetchData()},getCodeList:(e,s)=>{const{enabledOnly:o=!0,systemCodeOnly:t=!1,sortByOrder:a=!1,excludeParentCode:c=!1}=s||{},d=`simpleCodeList_${e}_${o}_${t}_${a}_${c}`;if(p.optionCache.has(d)){const h=p.cacheHits.get(d)||0;return p.cacheHits.set(d,h+1),p.optionCache.get(d)}const i=I.getState().codeData;if(!i)return[];if(!p.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const l=[],f=i[e];f&&Object.values(f).forEach(h=>{if(!(o&&!h.enabled)&&!(t&&h.systemCodeYn!=="Y"))if(c){const C=e.length,S=h.codeValue.substring(C);S.length>0&&l.push({...h,codeValue:S})}else l.push(h)});let m;a?m=l.sort((h,C)=>h.sortOrder!==C.sortOrder?h.sortOrder-C.sortOrder:h.codeValue.localeCompare(C.codeValue)):m=l.sort((h,C)=>h.codeValue.localeCompare(C.codeValue));const u=m.map(h=>({label:h.codeNm,value:h.codeValue,tagColor:h.labelColor}));return p.optionCache.size>=K.CACHE_SIZE_LIMIT&&p.cleanupCache(),p.optionCache.set(d,u),p.cacheHits.set(d,1),u},getCodeName:e=>{if(p.nameCache.has(e)){const o=p.cacheHits.get(`name_${e}`)||0;return p.cacheHits.set(`name_${e}`,o+1),p.nameCache.get(e)}const s=I.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 p.nameCache.set(e,t.codeNm),p.cacheHits.set(`name_${e}`,1),t.codeNm;return null},getCodeColor:e=>{if(p.colorCache.has(e)){const o=p.cacheHits.get(`color_${e}`)||0;return p.cacheHits.set(`color_${e}`,o+1),p.colorCache.get(e)}const s=I.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 p.colorCache.set(e,t.labelColor||""),p.cacheHits.set(`color_${e}`,1),t.labelColor;return null},getGridLookup:e=>{const s=`gridLookup_${e}`;if(p.optionCache.has(s)){const i=p.cacheHits.get(s)||0;return p.cacheHits.set(s,i+1),p.optionCache.get(s)}const o=I.getState().codeData;if(!o)return{labels:[],values:[],lookupDisplay:!0};const t=o[e];if(!t)return{labels:[],values:[],lookupDisplay:!0};const a=[],c=[];Object.values(t).filter(i=>i.enabled).sort((i,l)=>i.sortOrder-l.sortOrder).forEach(i=>{a.push(i.codeNm),c.push(i.codeValue)});const d={labels:a,values:c,lookupDisplay:!0};return p.optionCache.set(s,d),p.cacheHits.set(s,1),d},getCodeByOption:(e,s,o)=>{const t=`codeByOption_${e}_${s}_${o}`;if(p.codeCache.has(t)){const l=p.cacheHits.get(t)||0;return p.cacheHits.set(t,l+1),p.codeCache.get(t)}const a=I.getState().codeData;if(!a)return[];const c=[],d=a[e];d&&Object.values(d).forEach(l=>{l.enabled&&l.options&&l.options[s]===o&&c.push({...l,codeNm:l.options[s]||l.codeNm})});const i=c.sort((l,f)=>l.codeValue.localeCompare(f.codeValue));return p.codeCache.size>=K.CACHE_SIZE_LIMIT&&p.cleanupCache(),p.codeCache.set(t,i),p.cacheHits.set(t,1),i},getCodeListByOption:(e,s,o)=>{const{enabledOnly:t=!0,systemCodeOnly:a=!1,sortByOrder:c=!1}=o||{},d=`codeListByOption_${e}_${s}_${t}_${a}_${c}`;if(p.codeCache.has(d)){const u=p.cacheHits.get(d)||0;return p.cacheHits.set(d,u+1),p.codeCache.get(d)}const i=I.getState().codeData;if(!i)return[];if(!p.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const l=[],f=i[e];f&&Object.values(f).forEach(u=>{t&&!u.enabled||a&&u.systemCodeYn!=="Y"||u.options&&u.options[s]&&l.push({label:u.options[s],value:u.commonCode,tagColor:u.labelColor})});let m;return c?m=l.sort((u,h)=>u.value.localeCompare(h.value)):m=l.sort((u,h)=>u.value.localeCompare(h.value)),p.codeCache.size>=K.CACHE_SIZE_LIMIT&&p.cleanupCache(),p.codeCache.set(d,m),p.cacheHits.set(d,1),m},getAvailableGroupCodes:()=>{const e="available_group_codes";if(p.nameCache.has(e)){const t=p.cacheHits.get(e)||0;return p.cacheHits.set(e,t+1),JSON.parse(p.nameCache.get(e))}const s=I.getState().codeData;if(!s)return[];const o=Object.keys(s).sort();return p.nameCache.set(e,JSON.stringify(o)),p.cacheHits.set(e,1),o},clearCodes:()=>{I.getState().clearData()}}),{name:"code-storage",partialize:n=>({})})),oe=b.create()(M((n,r)=>({get codeData(){return I.getState().codeData},get isLoading(){return I.getState().isLoading},get error(){return I.getState().error},get lastUpdated(){return I.getState().lastUpdated},fetchCommonCodes:async()=>{await I.getState().fetchData()},getOptionValue:(e,s)=>{const o=`option_${e}_${s}`;if(p.optionCache.has(o)){const c=p.cacheHits.get(o)||0;return p.cacheHits.set(o,c+1),p.optionCache.get(o)}const t=I.getState().codeData;if(!t)return null;const a=t[e];if(a&&a[s]){const c=a[s].options;return p.optionCache.set(o,c),p.cacheHits.set(o,1),c}return null},getOptionByKey:(e,s,o)=>{const t=`option_${e}_${s}_${o}`;if(p.optionCache.has(t)){const d=p.cacheHits.get(t)||0;return p.cacheHits.set(t,d+1),p.optionCache.get(t)}const a=r().getOptionValue(e,s),c=a?a[o]:null;return p.optionCache.set(t,c),p.cacheHits.set(t,1),c},clearCodes:()=>{I.getState().clearData()}}),{name:"option-storage",partialize:n=>({})})),se=b.create()(M((n,r)=>({get codeData(){return I.getState().codeData},get isLoading(){return I.getState().isLoading},get error(){return I.getState().error},get lastUpdated(){return I.getState().lastUpdated},fetchCommonCodes:async()=>{await I.getState().fetchData()},getColorCode:e=>{if(p.colorCache.has(e)){const o=p.cacheHits.get(`color_${e}`)||0;return p.cacheHits.set(`color_${e}`,o+1),p.colorCache.get(e)}const s=I.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 p.colorCache.set(e,t.labelColor||""),p.cacheHits.set(`color_${e}`,1),t.labelColor;return null},getColorMapping:()=>{const e="color_mapping";if(p.optionCache.has(e)){const t=p.cacheHits.get(e)||0;return p.cacheHits.set(e,t+1),p.optionCache.get(e)}const s=I.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})})}),p.optionCache.set(e,o),p.cacheHits.set(e,1),o},clearCodes:()=>{I.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=D(r().nodes,e);return s?r().nodes[s]?.prntBkmkId??"-":"-"},getNodeByMenuId:e=>{const s=D(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=c=>e?c.toLowerCase().includes(e.toLowerCase()):!0,a=c=>{const d=s[c];if(!d||d.type!=="F")return null;const i=d,l=(i.children||[]).map(m=>s[m]).filter(m=>!!m&&m.type==="F").map(m=>a(m.bkmkId)).filter(Boolean);return t(i.bkmkNm)||l.length>0?{key:i.bkmkId,title:`📁 ${i.bkmkNm}`,children:l.length?l:void 0}:null};return o.map(c=>a(c)).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 y.callService("SCMBKMK00101",{userId:e}),a=Array.isArray(t?.sub)?t.sub:[],c=re(a),d=P(c.nodes,c.rootIds);n({...c,treeNodes:d,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=E(r()),o=ae();n(t=>{const a=e.sortOrdr??x(t,e.prntBkmkId),c={...t,nodes:{...t.nodes,[o]:e.type==="F"?{bkmkId:o,type:"F",prntBkmkId:e.prntBkmkId||"-",sortOrdr:a,bkmkNm:e.bkmkNm??"새 폴더",children:[],sysCd:e.sysCd,userId:e.userId}:{bkmkId:o,type:"M",prntBkmkId:e.prntBkmkId,sortOrdr:a,menuId:e.menuId??"",menuNm:e.menuNm,sysCd:e.sysCd,userId:e.userId}},rootIds:t.rootIds.slice(),treeNodes:t.treeNodes};return ce(c,o,e.prntBkmkId),c.treeNodes=P(c.nodes,c.rootIds),c});try{let t=o;const a=x(r(),e.prntBkmkId),c=await y.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:y.getUserId()});return t=String(c?.bkmkId??c?.itemId??o),n(d=>{const i=pe(d,o,t);return{...i,treeNodes:P(i.nodes,i.rootIds)}}),t}catch(t){throw n(s),t}},moveNode:async({bkmkId:e,newPrntBkmkId:s,sortOrdr:o,userId:t})=>{const a=r(),c=structuredClone(a.nodes),d=[...a.rootIds],i=c[e];if(!i)return;if(s!=="-"){const u=c[s];if(!u||u.type!=="F")throw new Error("부모는 폴더만 가능합니다.")}const l=i.prntBkmkId??"-",f=l==="-"?d:c[l].children||=[];{const u=f.indexOf(e);u>=0&&f.splice(u,1)}const m=s==="-"?d:c[s].children||=[];m.splice(Math.max(0,Math.min(o,m.length)),0,e),i.prntBkmkId=s,n({nodes:c,rootIds:d}),z(c,d,s),z(c,d,l);try{await y.callService("SCMBKMK00104",{bkmkId:e,prntBkmkId:s,sortOrdr:o,chngId:t})}catch(u){throw n(a),u}},removeNode:async e=>{const s=E(r());n(o=>{if(!o.nodes[e])return o;const t={...o,nodes:{...o.nodes},rootIds:o.rootIds.slice(),treeNodes:o.treeNodes};return X(t,e),t.treeNodes=P(t.nodes,t.rootIds),t});try{await y.callService("SCMBKMK00103",{bkmkId:e})}catch(o){throw n(s),o}},editNode:async({bkmkId:e,userId:s,bkmkNm:o,prntBkmkId:t,sortOrdr:a})=>{const c=E(r());n(d=>{const i={...d,nodes:{...d.nodes}},l=i.nodes[e];return l?.type==="F"&&typeof o=="string"&&(i.nodes[e]={...l,bkmkNm:o}),i});try{await y.callService("SCMBKMK00102",{iudFlag:"U",userId:s,bkmkId:e,bkmkNm:o,prntBkmkId:t,sortOrdr:a,chngId:y.getUserId()})}catch(d){throw n(c),d}},addFolder:async(e,s,o,t)=>await r().addNode({type:"F",bkmkNm:e,prntBkmkId:s,sysCd:o,userId:t}),addMenuToFolder:async(e,s)=>D(r().nodes,s.menuId)?"이미 북마크에 저장된 메뉴입니다.":await r().addNode({type:"M",prntBkmkId:e,sysCd:"KH",userId:y.getUserId(),menuId:s.menuId,menuNm:s.menuNm}),toggleMenuFavorite:async(e,s)=>{if(!e)return;const o=r(),t=Object.values(o.nodes).find(c=>c.type==="M"&&c.menuId===s.menuId);if(t){await r().removeNode(t.bkmkId);return}let a=j(o);a||(await r().loadFavorites(e,!0),a=j(r())),a&&await r().addNode({type:"M",prntBkmkId:a,sysCd:"KH",userId:y.getUserId(),menuId:s.menuId,menuNm:s.menuNm})},removeMenuByMenuId:async e=>{const s=r(),o=D(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=d=>o?d.toLowerCase().includes(o.toLowerCase()):!0,c=d=>{const i=e[d];if(!i||t&&i.type!=="F")return null;if(i.type==="F"){const l=i,f=(l.children||[]).map(u=>c(u)).filter(Boolean);return a(l.bkmkNm)||f.length>0?{key:l.bkmkId,type:"F",title:`📁 ${l.bkmkNm}`,bkmkNm:l.bkmkNm,prntBkmkId:l.prntBkmkId,sortOrdr:l.sortOrdr,fullPath:l.fullPath,children:f.length?f:void 0}:null}else{const l=i,f=l.menuNm?`${l.menuNm} (${l.menuId})`:l.menuId;return a(f)?{key:l.bkmkId,type:"M",title:`📄 ${f}`,prntBkmkId:l.prntBkmkId,sortOrdr:l.sortOrdr,fullPath:l.fullPath,isLeaf:!0}:null}};return s.map(c).filter(Boolean)}}),G=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 c=Array.isArray(t.children)?t.children:[];s(c)}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,c)=>(r[a].sortOrdr??0)-(r[c].sortOrdr??0))}),{nodes:r,rootIds:e}}function E(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 x(n,r){if(!r||r==="-")return n.rootIds.length;const e=n.nodes[r];return e?e.children.length:0}function ce(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 de(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 X(n,r){const e=n.nodes[r];if(!e)return;e.type==="F"&&e.children.slice().forEach(a=>X(n,a)),de(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 c=t[o.prntBkmkId];c?.type==="F"&&(t[o.prntBkmkId]={...c,children:c.children.map(d=>d===r?e:d)})}else a=n.rootIds.map(c=>c===r?e:c);return{...n,nodes:t,rootIds:a}}function j(n){return n.rootIds.find(r=>n.nodes[r]?.type==="F")??null}function P(n,r){const e={};Object.values(n).forEach(d=>{const i=d.bkmkId,l=d.prntBkmkId;!i||!l||l==="-"||l===i||(e[l]??=[]).push(i)});const s=new Set,o=d=>{if(s.has(d))return null;const i=n[d];if(!i)return null;s.add(d);try{if(i.type==="F"){const f=i,m=e[d]??[];return{type:"F",bkmkId:d,bkmkNm:f.bkmkNm,prntBkmkId:f.prntBkmkId,children:m.map(o).filter(Boolean)}}const l=i;return{type:"M",bkmkId:d,bkmkNm:l.menuNm,menuId:l.menuId,menuNm:l.menuNm,prntBkmkId:l.prntBkmkId}}finally{s.delete(d)}},t=Object.values(n).filter(d=>d.prntBkmkId==="-"&&d.type==="M").map(d=>d.bkmkId),a=Object.values(n).filter(d=>d.prntBkmkId==="-"&&d.type==="F").map(d=>d.bkmkId);return Array.from(new Set([...r,...t,...a])).map(o).filter(Boolean)}function D(n,r){for(const e of Object.values(n))if(e.type==="M"&&e.menuId===r)return e.bkmkId;return null}function z(n,r,e){(!e||e==="-"?r:n[e].children||[]).forEach((o,t)=>{const a=n[o];a&&(a.sortOrdr=t)})}const R={DEFAULT_PRNT_GBCD:1},le=n=>n&&typeof n=="object"&&typeof n.menuId=="string"&&typeof n.menuNm=="string",Y=n=>Array.isArray(n)&&n.every(le);let T=[],q=[];const ie=n=>{if(n&&typeof n=="object"){const r=n;if(r.menus&&Y(r.menus))return r.menus;if(Y(n))return n}return console.warn("⚠️ 메뉴 응답이 비어있거나 예상과 다릅니다."),[]},ue=(n,r)=>!!r&&n.crprCd===r.crprCd&&n.userId===r.userId&&(n.prntGbcd??R.DEFAULT_PRNT_GBCD)===(r.prntGbcd??R.DEFAULT_PRNT_GBCD),me=n=>{if(T.length===n.length&&T.every((t,a)=>t.menuId===n[a]?.menuId&&t.menuPrntId===n[a]?.menuPrntId))return q;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,c)=>(a?.menuNo??0)-(c?.menuNo??0)).map(a=>({...a,children:a.children&&a.children.length?s(a.children):void 0})),o=s(e);return T=[...n],q=o,o},A=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??R.DEFAULT_PRNT_GBCD};if(ue(t,r()._lastFetchParams)){console.log("✅ 중복 fetch 차단",t);return}n({isLoading:!0,error:null,_lastFetchParams:t});try{const a=await y.callService(y.getServiceCode("AUTH_MENU"),t),c=ie(a),d=me(c);n({flatMenuList:c,menuList:d,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},U=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(c=>c.key===e.menuId),a=o.find(c=>c.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)):L.message.warning("유효하지 않은 메뉴정보입니다.");else{if(o.length>O.MAX_TABS){console.warn("❌ 최대 탭 개수를 초과했습니다."),L.message.warning(`최대 ${O.MAX_TABS}개의 탭만 열 수 있습니다.
|
|
2
2
|
기존 탭을 닫고 다시 시도해주세요.`);return}const c={key:e.menuId,label:e.menuNm,gubun:"M",menuItem:e,closable:!0};n({tabs:[...o,c],activeMenuId:e.menuId,activeMenuItem:e}),r().setTabParams(e.menuId,s||{}),e?.prsnInfoYn==="Y"&&r().setProtectFlagForKey(e.menuId)}},openTabByMenuId:(e,s)=>{const o=A.getState().findMenuById(e);o?r().openTabFromMenu(o,s):L.message.warning("메뉴 ID를 찾을 수 없습니다.")},openDetailView:(e,s,o)=>{const{tabs:t}=r();if(t.find(c=>c.key===e.viewId))r().focusTab(e.viewId);else{const c={key:e.viewId,label:e.viewLabel,gubun:"C",componentItem:{scrnPath:s,prsnInfoYn:o,prntInfo:e.prntInfo},closable:!0};n({tabs:[...t,c],activeMenuId:e.viewId,activeDetailItem:e}),r().setTabParams(e.viewId,e.viewParams||{})}},closeTab:e=>{const{tabs:s,activeMenuId:o}=r();s.find(c=>c.key===e);const t=s.filter(c=>c.key!==e);let a=o;if(o===e){const c=s.findIndex(d=>d.key===e);a=t.length?t[Math.min(c,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(d=>t[d]===a[d])?o:{tabParams:{...o.tabParams,[e]:a}}}),setComponentLabelMap:(e,s)=>n({componentLabelMap:e})})),J=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 y.callService(y.getServiceCode("SRCH_POPU"),{crprCd:y.getUserInfo()?.crprCd,popuCd:e});t=a?.mstr;const c=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),l=r().zIndexSeed+1,f={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:c,config:o,zIndex:l},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,f],activePopupId:f.popupId,isLoading:!1,zIndexSeed:l}))}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,c=V.localPopupRegistry[e]?.defaultConfig||{},d={...c,...s,buttons:s?.buttons!==void 0?s.buttons:c.buttons,callback:s?.callback!==void 0?s.callback:c.callback},i=s?.defaultParams||{},l=r().popups.find(m=>m.popupCode===e&&m.isLocal);if(l){const m=r().zIndexSeed+1;n({activePopupId:l.popupId,zIndexSeed:m}),n(u=>({popups:u.popups.map(h=>h.popupId===l.popupId?{...h,config:d,zIndex:m,close:()=>{r().closePopup(l.popupId)}}:h)}));return}const f={popupId:o,popupCode:e,popupTitle:d.title||e,popupUrl:"",popupParams:i,width:d.width||1e3,height:d.height||700,resizable:d.resizable!==void 0?d.resizable:!0,draggable:d.draggable!==void 0?d.draggable:!0,buttonList:[],config:d,isLocal:!0,zIndex:t,close:()=>{r().closePopup(o)}};n(m=>({popups:[...m.popups,f],activePopupId:o,zIndexSeed:t}))},closePopup:e=>{const{popups:s,activePopupId:o}=r(),t=s.filter(c=>c.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)}))}})),$=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 W(){const[n,r]=F.useState(!1),e=F.useCallback(s=>{const o=s?.getModifierState?.("CapsLock");typeof o=="boolean"&&r(o)},[]);return{capsOn:n,onKeyDown:e}}function fe(n){const{loginApi:r,fetchCommonCodes:e,onAfterLogin:s,onError:o,rememberCookie:t={enabled:!0,days:30}}=n,[a,c]=F.useState(!1),{capsOn:d,onKeyDown:i}=W(),l="SCMSIGN00101",f=`${__SYS_CD__}_login_id`,m={id:t?.enabled?y.getCookie(f):void 0,pswr:void 0},u=F.useCallback(async(h,C)=>{c(!0);try{const S={crprCd:"100",id:h.id,pswr:await y.encryptSha256(h.pswr)},g=await(r??(N=>y.callService(l,N)))(S);if(g?.userInfo?.userId){if(w.getState().setLoginUser(g.userInfo,g?.hrInfo),t?.enabled){const N=t.days??30;h.remember?y.setCookie(f,h.id??"",N):y.setCookie(f,"",0)}return e?await e():await _.getState().fetchCommonCodes(),s?s(g,C):(L.message.success(`${g.userInfo.userNm}님 환영합니다.`),C("/main")),{user:g.userInfo,response:g}}else throw o?.({user:g.userInfo,response:g,navigate:C}),new Error("사용자 정보가 유효하지 않습니다.")}catch(S){throw o?.(S),S}finally{c(!1)}},[l,r,e,s,o,t?.enabled,t?.days]);return{loading:a,capsOn:d,onKeyDown:i,prefills:m,doLogin:u}}function Ie(){const n=Q.useNavigate();return()=>{w.getState().clearLoginUser(),$.getState().clearSystemMap(),_.getState().clearCodes(),A.getState().clearMenu(),U.getState().clearMenuViewStore(),G.getState().clearFavorites(),n("/login")}}const ye=()=>_.getState(),ge=()=>J.getState(),Se=()=>w.getState(),Ne=()=>G.getState(),be=()=>A.getState(),Me=()=>U.getState(),ke=()=>$.getState();exports.useCapsLock=W;exports.useCode=ye;exports.useCodeStore=_;exports.useColorStore=se;exports.useFavorite=Ne;exports.useFavoriteStore=G;exports.useLoadingStore=Ce;exports.useLogin=fe;exports.useLogout=Ie;exports.useMenuModel=be;exports.useMenuModelStore=A;exports.useMenuView=Me;exports.useMenuViewStore=U;exports.useOptionStore=oe;exports.usePopupLoadingStore=he;exports.usePopupState=ge;exports.usePopupStore=J;exports.useSystemCode=ke;exports.useSystemStore=$;exports.useUser=Se;exports.useUserStore=w;
|
package/dist/stores/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { create as b } from "zustand";
|
|
2
2
|
import { callService as N, getServiceCode as w, getUserId as v, getUserInfo as ee, getCookie as te, encryptSha256 as oe, setCookie as $ } from "../utils/index.js";
|
|
3
3
|
import { message as L } from "antd";
|
|
4
|
-
import { l as se } from "../chunks/layout-components-
|
|
4
|
+
import { l as se } from "../chunks/layout-components-CsjlGe-8.js";
|
|
5
5
|
import { useState as X, useCallback as q } from "react";
|
|
6
6
|
import { useNavigate as ne } from "react-router-dom";
|
|
7
7
|
function re(n, r) {
|