@bwg-ui/core 1.2.35 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/chunks/{CMSearchIntfGwP01-Duabg_5A.js → CMSearchIntfGwP01-BWm9OqAH.js} +28 -28
  2. package/dist/chunks/{CMSearchIntfGwP01-CMSQULsU.cjs → CMSearchIntfGwP01-CihGc5Q1.cjs} +1 -1
  3. package/dist/chunks/MenuReport-khjaUz1Q.cjs +1 -0
  4. package/dist/chunks/{MenuReport-B4EU1A6l.js → MenuReport-yYhMOHyq.js} +10 -10
  5. package/dist/chunks/common-components-DletnDTf.cjs +1109 -0
  6. package/dist/chunks/{common-components-DIpOkbb5.js → common-components-coAoWxE9.js} +12963 -12155
  7. package/dist/chunks/{layout-components-D2Fla5uu.js → layout-components-C1DG2B74.js} +982 -705
  8. package/dist/chunks/layout-components-C6KeWPIu.cjs +35 -0
  9. package/dist/chunks/provider-DrboIg2C.cjs +1 -0
  10. package/dist/chunks/provider-VCa8UGvF.js +446 -0
  11. package/dist/components/common/BwgDetail.d.ts.map +1 -1
  12. package/dist/components/common/BwgGrid.d.ts +17 -16
  13. package/dist/components/common/BwgGrid.d.ts.map +1 -1
  14. package/dist/components/common/BwgPagination.d.ts.map +1 -1
  15. package/dist/components/common/BwgView.d.ts +3 -3
  16. package/dist/components/common/BwgView.d.ts.map +1 -1
  17. package/dist/components/common/index.cjs +1 -1
  18. package/dist/components/common/index.d.ts +4 -3
  19. package/dist/components/common/index.d.ts.map +1 -1
  20. package/dist/components/common/index.js +5 -5
  21. package/dist/components/common/type.d.ts +7 -0
  22. package/dist/components/common/type.d.ts.map +1 -1
  23. package/dist/components/core/BwgMaskedDate.d.ts +13 -0
  24. package/dist/components/core/BwgMaskedDate.d.ts.map +1 -0
  25. package/dist/components/core/{BwgMaskedPicker.d.ts → BwgMaskedRange.d.ts} +6 -4
  26. package/dist/components/core/BwgMaskedRange.d.ts.map +1 -0
  27. package/dist/components/core/index.cjs +1 -1
  28. package/dist/components/core/index.d.ts +4 -2
  29. package/dist/components/core/index.d.ts.map +1 -1
  30. package/dist/components/core/index.js +1219 -781
  31. package/dist/components/guide/index.cjs +1 -1
  32. package/dist/components/guide/index.js +2 -2
  33. package/dist/components/layout/BwgPortal01.d.ts.map +1 -1
  34. package/dist/components/layout/custom/ConfigurableHeader.d.ts.map +1 -1
  35. package/dist/components/layout/custom/ConfigurableMenuTab.d.ts.map +1 -1
  36. package/dist/components/layout/extension/ContentWrapper.d.ts.map +1 -1
  37. package/dist/components/layout/index.cjs +1 -1
  38. package/dist/components/layout/index.js +1 -1
  39. package/dist/components/pages/syst/CMHldyCfg.d.ts.map +1 -1
  40. package/dist/components/popup/MenuReport.d.ts.map +1 -1
  41. package/dist/components/popup/SearchAddressP01.d.ts +30 -0
  42. package/dist/components/popup/SearchAddressP01.d.ts.map +1 -0
  43. package/dist/components/popup/SearchHolidayP01.d.ts +2 -2
  44. package/dist/components/popup/SearchHolidayP01.d.ts.map +1 -1
  45. package/dist/components/popup/config/localPopupRegistry.d.ts.map +1 -1
  46. package/dist/components/popup/index.cjs +1 -1
  47. package/dist/components/popup/index.d.ts +2 -0
  48. package/dist/components/popup/index.d.ts.map +1 -1
  49. package/dist/components/popup/index.js +6 -5
  50. package/dist/index.cjs +1 -1
  51. package/dist/index.js +270 -259
  52. package/dist/provider/contexts/BwgViewContext.d.ts +19 -0
  53. package/dist/provider/contexts/BwgViewContext.d.ts.map +1 -0
  54. package/dist/provider/contexts/index.d.ts +1 -0
  55. package/dist/provider/contexts/index.d.ts.map +1 -1
  56. package/dist/provider/hooks/index.d.ts +1 -0
  57. package/dist/provider/hooks/index.d.ts.map +1 -1
  58. package/dist/provider/hooks/useSizeConfig.d.ts +19 -0
  59. package/dist/provider/hooks/useSizeConfig.d.ts.map +1 -0
  60. package/dist/provider/index.cjs +1 -1
  61. package/dist/provider/index.js +22 -381
  62. package/dist/stores/index.cjs +2 -2
  63. package/dist/stores/index.d.ts +6 -0
  64. package/dist/stores/index.d.ts.map +1 -1
  65. package/dist/stores/index.js +279 -192
  66. package/dist/stores/menuViewStore.d.ts +6 -0
  67. package/dist/stores/menuViewStore.d.ts.map +1 -1
  68. package/dist/stores/userStore.d.ts +23 -0
  69. package/dist/stores/userStore.d.ts.map +1 -1
  70. package/dist/styles/assets/images/contents/icon/ico-tab-hashtag-grey.svg +11 -0
  71. package/dist/styles/assets/images/contents/icon/ico-tab-hashtag.svg +11 -0
  72. package/dist/styles/components.css +161 -60
  73. package/dist/styles/layout.css +1289 -1234
  74. package/dist/utils/{FileUtils.d.ts → fileUtils.d.ts} +1 -1
  75. package/dist/utils/fileUtils.d.ts.map +1 -0
  76. package/dist/utils/gridUtils.d.ts +45 -0
  77. package/dist/utils/gridUtils.d.ts.map +1 -0
  78. package/dist/utils/index.cjs +1 -1
  79. package/dist/utils/index.d.ts +12 -2
  80. package/dist/utils/index.d.ts.map +1 -1
  81. package/dist/utils/index.js +736 -664
  82. package/package.json +1 -1
  83. package/dist/chunks/MenuReport-5e2dMr_C.cjs +0 -1
  84. package/dist/chunks/common-components-D3-r7D-8.cjs +0 -1109
  85. package/dist/chunks/layout-components-pfHVy2at.cjs +0 -35
  86. package/dist/components/core/BwgMaskedPicker.d.ts.map +0 -1
  87. package/dist/utils/FileUtils.d.ts.map +0 -1
@@ -0,0 +1,35 @@
1
+ "use strict";const e=require("react/jsx-runtime"),$=require("./provider-DrboIg2C.cjs"),R=require("react-router-dom"),J=require("./common-components-DletnDTf.cjs"),i=require("antd"),l=require("react"),M=require("../stores/index.cjs"),T=require("@ant-design/icons"),K=require("../utils/index.cjs"),U=require("@dnd-kit/core"),he=require("@dnd-kit/modifiers"),q=require("@dnd-kit/sortable");var Y=typeof document<"u"?document.currentScript:null;function pe(n){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const s in n)if(s!=="default"){const r=Object.getOwnPropertyDescriptor(n,s);Object.defineProperty(t,s,r.get?r:{enumerable:!0,get:()=>n[s]})}}return t.default=n,Object.freeze(t)}const Z=pe(T),ge=l.lazy(()=>Promise.resolve().then(()=>require("./MenuReport-khjaUz1Q.cjs"))),fe=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-DletnDTf.cjs")).then(n=>n.SearchDepartmentP01$1)),xe=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-DletnDTf.cjs")).then(n=>n.SearchDepartmentP02$1)),be=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-DletnDTf.cjs")).then(n=>n.SearchOrganizationP01$1)),ye=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-DletnDTf.cjs")).then(n=>n.SearchOrganizationP02$1)),Ce=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-DletnDTf.cjs")).then(n=>n.CMPrgrMstrP02$1)),je=l.lazy(()=>Promise.resolve().then(()=>require("./CMSearchIntfGwP01-CihGc5Q1.cjs"))),ve=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-DletnDTf.cjs")).then(n=>n.SearchAddressP01$1)),we=l.lazy(()=>Promise.resolve().then(()=>require("./common-components-DletnDTf.cjs")).then(n=>n.SearchHolidayP01$1)),se={CORE_REPORT:{component:ge,defaultConfig:{title:"게시판/문의",width:1200,height:800}},CORE_DEPARTMENT_01:{component:fe,defaultConfig:{title:"부서 검색",width:620,height:700}},CORE_DEPARTMENT_02:{component:xe,defaultConfig:{title:"부서 검색",width:620,height:700}},CORE_ORGANIZATION_01:{component:be,defaultConfig:{title:"조직 검색",width:620,height:700}},CORE_ORGANIZATION_02:{component:ye,defaultConfig:{title:"조직 검색",width:1e3,height:700}},CORE_PRGR_02:{component:Ce,defaultConfig:{title:"프로그램 검색",width:700,height:800}},CORE_GW_DRAFTS:{component:je,defaultConfig:{title:"기안 목록",width:1e3,height:700}},CORE_ADDRESS_01:{component:ve,defaultConfig:{title:"주소 검색",width:750,height:800}},CORE_HOLIDAY_01:{component:we,defaultConfig:{title:"휴일 검색",width:750,height:800}}},ne="bwg-dot-line-wave-v4";function ke(){if(typeof document>"u"||document.getElementById(ne))return;const n=document.createElement("style");n.id=ne,n.textContent=`
2
+ .bwg-dotline {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ gap: var(--bwg-gap, 12px);
6
+ height: calc(var(--bwg-size, 12px) + 2 * var(--bwg-amp, 12px));
7
+ line-height: 0;
8
+ }
9
+ .bwg-dotline .dot {
10
+ width: var(--bwg-size, 12px);
11
+ height: var(--bwg-size, 12px);
12
+ border-radius: 50%;
13
+ background: currentColor;
14
+ will-change: transform, opacity;
15
+ filter: drop-shadow(0 1px 2px rgba(0,0,0,.12));
16
+ animation: bwg-dotline-sine var(--bwg-speed, 780ms) linear infinite;
17
+ }
18
+
19
+ /* sin(θ) 근사: 0, 45, 90, 135, 180, 225, 270, 315, 360deg */
20
+ @keyframes bwg-dotline-sine {
21
+ 0% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
22
+ 12.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }
23
+ 25% { transform: translate3d(0, calc(-1 * var(--bwg-amp, 12px)), 0) scale(1.06); opacity: 1; }
24
+ 37.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }
25
+ 50% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
26
+ 62.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }
27
+ 75% { transform: translate3d(0, calc( 1 * var(--bwg-amp, 12px)), 0) scale(.96); opacity: .76; }
28
+ 87.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }
29
+ 100% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
30
+ }
31
+
32
+ @media (prefers-reduced-motion: reduce) {
33
+ .bwg-dotline .dot { animation: none; }
34
+ }
35
+ `,document.head.appendChild(n)}const Pe=({colors:n=["#DAD3FF","#B3A6FF","#9380FF","#816BFA"],count:t,size:s=12,gap:r=10,amp:a=16,speedMs:c=900,direction:y="ltr",phase:d=.7})=>{l.useEffect(()=>{ke()},[]);const u=t??n.length,j=Array.from({length:u}),p={"--bwg-size":`${s}px`,"--bwg-gap":`${r}px`,"--bwg-amp":`${a}px`,"--bwg-speed":`${c}ms`},m=c/u*d;return e.jsx("span",{className:"bwg-dotline",role:"img","aria-label":"loading",style:p,children:j.map((g,f)=>e.jsx("span",{className:"dot",style:{backgroundColor:n[f%n.length],animationDelay:y==="ltr"?`${f*m}ms`:`${(u-1-f)*m}ms`}},f))})},Se=({spin:n=null,text:t="인증중...",dimStyle:s="dark"})=>{if(!(n??!0))return null;const c=s==="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:c?"rgba(0, 0, 0, 0.6)":"rgba(255, 255, 255, 0.85)",color:c?"#fff":"#333",backdropFilter:"blur(4px)",zIndex:1e4},"aria-live":"polite","aria-busy":"true",role:"status",children:[e.jsx(i.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})]})},Ie=({routes:n,useCommonProvider:t=!0,useServiceProvider:s=!0})=>{let a=e.jsxs(R.Routes,{children:[e.jsx(R.Route,{path:"/",element:e.jsx(R.Navigate,{to:"/login"})}),e.jsx(R.Route,{path:"/login",element:n.login}),e.jsx(R.Route,{path:"/main/*",element:n.main})]});return s&&(a=e.jsx($.ServiceCodeProvider,{children:a})),t&&(a=e.jsx($.CommonCodeProvider,{children:a})),e.jsx(J.GlobalConfigProvider,{children:a})},{Content:Ne}=i.Layout,ee=({config:n={},children:t})=>{const s={wrapper:{className:"content-wrapper",...n.wrapper},body:{className:"content-body",...n.body},...n};return e.jsx(Ne,{className:s.wrapper.className,style:s.wrapper.style,children:e.jsx(J.BwgConfigProvider,{children:e.jsx("div",{className:s.body.className,style:s.body.style,children:t})})})},Me="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",Te="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",Le="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:Be}=i.Layout,{confirm:Oe}=i.Modal,z={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"}},X={0:"작게",1:"보통",2:"크게"},te=({config:n={},children:t})=>{const s={gap:14,minWidth:200,items:n.right?.items,alarm:{visible:!0,...n.right?.alarm||{}},theme:{visible:!0,...n.right?.theme||{}},logout:{visible:!0,...n.right?.logout||{}},avatar:{visible:!0,width:30,height:30,...n.right?.avatar||{}}},r={wrapper:{className:"header-wrapper",...n.wrapper},logo:{gap:10,...n.logo},right:s},a=R.useNavigate(),c=l.useRef(null),y=M.useLogout(),{componentSize:d,setComponentSize:u,gridSize:j,setGridSize:p,spacingSize:m,setSpacingSize:g,enableProtectWrapper:f,setEnableProtectWrapper:I,theme:C,setTheme:x,clearAllGridLayouts:k}=M.useUserStore(),L=1,D=2,E=2,v=(h,N)=>{try{if(!/^[a-zA-Z0-9-]+$/.test(h)||!/^[#a-zA-Z0-9()\s,.-]+$/.test(N))return;document.documentElement.style.setProperty(h,N)}catch(P){console.error("CSS variable setting failed:",P)}},F=h=>{if(!z[h])return;x(h);const N={...z[h]};v("--header-bg",N.headerBg),v("--header-text",N.headerText),v("--sidebar-bg",N.sidebarBg),v("--sidebar-text",N.sidebarText),v("--button-primary",N.buttonPrimary),v("--button-primary-hover",N.buttonPrimaryHover),v("--button-primary-active",N.buttonPrimaryActive),v("--button-default",N.buttonDefault),v("--button-default-hover",N.buttonDefaultHover),v("--button-default-border",N.buttonDefaultBorder),v("--button-permission-border",N.buttonPermissionBorder),c.current&&c.current.setAttribute("data-theme",h),document.documentElement.setAttribute("data-theme",h)};l.useEffect(()=>{if(C&&z[C]){const h={...z[C]};v("--header-bg",h.headerBg),v("--header-text",h.headerText),v("--sidebar-bg",h.sidebarBg),v("--sidebar-text",h.sidebarText),v("--button-primary",h.buttonPrimary),v("--button-primary-hover",h.buttonPrimaryHover),v("--button-primary-active",h.buttonPrimaryActive),v("--button-default",h.buttonDefault),v("--button-default-hover",h.buttonDefaultHover),v("--button-default-border",h.buttonDefaultBorder),v("--button-permission-border",h.buttonPermissionBorder),c.current&&c.current.setAttribute("data-theme",C),document.documentElement.setAttribute("data-theme",C)}else F("modern")},[C]);const W=()=>{y(),a("/login")};K.getTodateString?K.getTodateString("HH:mm:ss"):new Date().toLocaleTimeString("ko-KR");const _=z[C]?.headerBg||"#f3f4ff",V=e.jsxs("div",{style:{padding:"16px",backgroundColor:_,borderRadius:"8px",minWidth:"320px"},children:[e.jsxs("div",{style:{marginBottom:"16px"},children:[e.jsx("div",{style:{marginBottom:"12px",fontSize:"14px",fontWeight:500},children:"테마 선택"}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"8px",marginBottom:"8px"},children:[e.jsx(i.Button,{type:C==="modern"?"primary":"default",size:"small",onClick:()=>F("modern"),style:{width:"100%",backgroundColor:C==="modern"?z.modern.headerBg:void 0,color:C==="modern"?z.modern.headerText:void 0,borderColor:C==="modern"?z.modern.headerBg:void 0},children:"모던"},"modern"),Object.entries(z).filter(([h])=>h!=="modern").map(([h,N])=>e.jsx(i.Button,{type:C===h?"primary":"default",size:"small",onClick:()=>F(h),style:{width:"100%",backgroundColor:C===h?N.headerBg:void 0,color:C===h?N.headerText:void 0,borderColor:C===h?N.headerBg:void 0},children:h},h))]})]}),e.jsx(i.Divider,{style:{margin:"16px 0"}}),e.jsxs("div",{style:{marginBottom:"16px"},children:[e.jsxs(i.Flex,{justify:"space-between",align:"center",style:{marginBottom:"8px"},children:[e.jsx("span",{style:{fontSize:"14px",fontWeight:500},children:"컴포넌트 크기"}),e.jsx(i.Button,{type:"text",size:"small",icon:e.jsx(T.UndoOutlined,{}),onClick:()=>u(L),disabled:d===L,style:{padding:"0 4px"}})]}),e.jsx(i.Slider,{marks:X,value:d,min:0,max:2,step:1,onChange:h=>u(h)})]}),e.jsxs("div",{style:{marginBottom:"16px"},children:[e.jsxs(i.Flex,{justify:"space-between",align:"center",style:{marginBottom:"8px"},children:[e.jsx("span",{style:{fontSize:"14px",fontWeight:500},children:"그리드 크기"}),e.jsx(i.Button,{type:"text",size:"small",icon:e.jsx(T.UndoOutlined,{}),onClick:()=>p(D),disabled:j===D,style:{padding:"0 4px"}})]}),e.jsx(i.Slider,{marks:X,value:j,min:0,max:2,step:1,onChange:h=>p(h)})]}),e.jsxs("div",{style:{marginBottom:"16px"},children:[e.jsxs(i.Flex,{justify:"space-between",align:"center",style:{marginBottom:"8px"},children:[e.jsx("span",{style:{fontSize:"14px",fontWeight:500},children:"여백 조정"}),e.jsx(i.Button,{type:"text",size:"small",icon:e.jsx(T.UndoOutlined,{}),onClick:()=>g(E),disabled:m===E,style:{padding:"0 4px"}})]}),e.jsx(i.Slider,{marks:X,value:m,min:0,max:2,step:1,onChange:h=>g(h)})]}),e.jsx(i.Divider,{style:{margin:"16px 0"}}),e.jsxs("div",{style:{marginBottom:"16px",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[e.jsx("span",{style:{fontSize:"14px",fontWeight:500},children:"화면 보호 활성화"}),e.jsx(i.Switch,{checked:f,onChange:I})]}),e.jsx(i.Divider,{style:{margin:"16px 0"}}),e.jsx("div",{children:e.jsx(i.Button,{type:"default",danger:!0,size:"small",icon:e.jsx(T.UndoOutlined,{}),onClick:()=>{Oe({title:"전체 그리드 레이아웃 초기화",content:"임의 변경한 그리드 레이아웃 변경사항을 초기화하시겠습니까? 기존 열려있는 화면들은 다시 열어야 적용됩니다.",onOk(){k()}})},block:!0,style:{fontSize:"12px"},children:"전체 그리드 레이아웃 초기화"})})]});return e.jsxs(Be,{className:r.wrapper.className,style:{...r.wrapper.style},children:[r.logo&&e.jsx("div",{className:"header-left",children:e.jsx("div",{className:"logo-container",style:{gap:r.logo?.gap},children:r.logo?.items})}),t&&e.jsx("div",{className:"header-center",style:{flex:1,display:"flex",justifyContent:"center",alignItems:"center"},children:t}),e.jsxs("div",{className:"header-right",style:{gap:r.right?.gap,minWidth:r.right?.minWidth},children:[r.right?.items?.map((h,N)=>e.jsx("div",{children:h},N)),r.right?.alarm?.visible&&e.jsx(i.Button,{type:"text",icon:e.jsx("img",{src:Me,alt:"알림"}),className:"alarm-btn",onClick:r.right?.alarm?.onClick}),r.right?.theme?.visible&&e.jsx(i.Popover,{content:V,title:"개인 설정",trigger:"click",placement:"bottomRight",onOpenChange:h=>r.right?.theme?.onOpenChange?.(h),children:e.jsx(i.Button,{type:"text",icon:e.jsx("img",{src:Le,alt:"개인설정"}),className:"theme-btn",onClick:r.right?.theme?.onClick})}),r.right?.logout?.visible&&e.jsx(i.Button,{type:"text",icon:e.jsx("img",{src:Te,alt:"로그아웃"}),onClick:r.right?.logout?.onClick||W,className:"logout-btn"}),r.right?.avatar?.visible&&e.jsx(i.Avatar,{icon:e.jsx(T.UserOutlined,{}),className:"avatar",style:{width:r.right?.avatar?.width,height:r.right?.avatar?.height},onClick:r.right?.avatar?.onClick})]})]})},Q=Object.freeze({Translate:{toString(n){if(!n)return;const{x:t,y:s}=n;return"translate3d("+(t?Math.round(t):0)+"px, "+(s?Math.round(s):0)+"px, 0)"}},Scale:{toString(n){if(!n)return;const{scaleX:t,scaleY:s}=n;return"scaleX("+t+") scaleY("+s+")"}},Transform:{toString(n){if(n)return[Q.Translate.toString(n),Q.Scale.toString(n)].join(" ")}},Transition:{toString(n){let{property:t,duration:s,easing:r}=n;return t+" "+s+"ms "+r}}}),Ee=l.memo(({className:n,...t})=>{const s=l.useRef(null),{attributes:r,listeners:a,transform:c,transition:y,isDragging:d,setNodeRef:u}=q.useSortable({id:t["data-node-key"]}),[j,p]=l.useState();l.useEffect(()=>{const g=s.current;if(g)if(d){const f=Math.round(g.getBoundingClientRect().width);p(f)}else p(void 0)},[d]);const m={...t.style,transform:c?Q.Transform.toString(c):void 0,transition:y??"transform 0.16s ease",cursor:"grab",userSelect:"none",willChange:"transform",width:j??void 0,minWidth:j??void 0,maxWidth:j??void 0,flex:j!==void 0?"0 0 auto":void 0};return l.cloneElement(t.children,{ref:g=>{s.current!==g&&(s.current=g),u(g)},style:m,...r,...a})}),Re=l.memo(function({config:t,isFirst:s,isLast:r,canCloseAll:a,onFirst:c,onPrev:y,onNext:d,onLast:u,onCloseAll:j}){return e.jsxs("div",{className:t.wrapper?.className,style:t.wrapper?.style,children:[e.jsx(i.Tooltip,{title:"첫 번째 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(i.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(T.StepBackwardOutlined,{}),onClick:c,disabled:s})}),e.jsx(i.Tooltip,{title:"이전 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(i.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(T.LeftOutlined,{}),onClick:y,disabled:s})}),e.jsx(i.Tooltip,{title:"다음 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(i.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(T.RightOutlined,{}),onClick:d,disabled:r})}),e.jsx(i.Tooltip,{title:"마지막 탭",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(i.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(T.StepForwardOutlined,{}),onClick:u,disabled:r})}),e.jsx(i.Tooltip,{title:"모든 탭 닫기",className:t.tooltip?.className,style:t.tooltip?.style,children:e.jsx(i.Button,{className:t.buttons?.className,style:t.buttons?.style,size:"small",icon:e.jsx(T.CloseOutlined,{}),onClick:j,disabled:!a})})]})}),re=({config:n={}})=>{const t={wrapper:{className:"menu-tab-wrapper",...n?.wrapper},tabs:{className:"menu-tabs",...n?.tabs},nav:{wrapper:{className:"menu-nav-wrapper",...n?.nav?.wrapper},buttons:{className:"menu-nav-buttons",...n?.nav?.buttons},tooltip:{className:"menu-nav-tooltip",...n?.nav?.tooltip},...n?.nav},...n},s=M.useMenuViewStore(o=>o.tabs),r=M.useMenuViewStore(o=>o.activeMenuId),a=M.useMenuViewStore(o=>o.pinnedTabs),c=M.useMenuViewStore(o=>o.focusTab),y=M.useMenuViewStore(o=>o.closeTab),d=M.useMenuViewStore(o=>o.reorderTabs),u=M.useMenuViewStore(o=>o.togglePinTab),j=M.useMenuViewStore(o=>o.refreshTab),p=M.useMenuViewStore(o=>o.closeOtherTabs),m=M.useMenuViewStore(o=>o.closeRightTabs);M.useMenuViewStore(o=>o.closeAllTabs);const g=U.useSensors(U.useSensor(U.PointerSensor,{activationConstraint:{distance:6}})),f=o=>{c(o)},I=(o,w)=>{w==="remove"&&typeof o=="string"&&y(o)},C=()=>{s.length>0&&c(s[0].key)},x=()=>{if(!r||s.length<=1)return;const o=s.findIndex(w=>w.key===r);o>0&&c(s[o-1].key)},k=()=>{if(!r||s.length<=1)return;const o=s.findIndex(w=>w.key===r);o<s.length-1&&c(s[o+1].key)},L=()=>{s.length>0&&c(s[s.length-1].key)},D=()=>{s.forEach(o=>{a.has(o.key)||y(o.key)})},E=l.useCallback(o=>w=>{w.preventDefault(),w.stopPropagation()},[]),v=l.useCallback(o=>{const w=a.has(o),B=s.findIndex(G=>G.key===o),O=B>=0&&B<s.length-1,A=s.length>1;return[{key:"close",label:"닫기",icon:e.jsx(T.CloseOutlined,{}),onClick:()=>{w||y(o)},disabled:w},{key:"pin",label:w?"고정 해제":"고정",icon:e.jsx(T.PushpinOutlined,{}),onClick:()=>{u(o)}},{key:"refresh",label:"새로고침",icon:e.jsx(T.ReloadOutlined,{}),onClick:()=>{j(o)}},{type:"divider"},{key:"closeOthers",label:"다른 탭 닫기",icon:e.jsx(T.CloseOutlined,{}),onClick:()=>{p(o)},disabled:!A},{key:"closeRight",label:"우측 탭 닫기",icon:e.jsx(T.CloseOutlined,{}),onClick:()=>{m(o)},disabled:!O},{key:"closeAll",label:"전체 닫기",icon:e.jsx(T.CloseOutlined,{}),onClick:()=>{D()},disabled:s.length===0}]},[s,a,y,u,j,p,m]),F=r?s.findIndex(o=>o.key===r):-1,W=F===0,_=F===s.length-1,V=l.useMemo(()=>s.map(o=>({key:o.key,label:o.label,closable:!a.has(o.key),children:null})),[s,a]),[h,N]=l.useState(null),P=l.useCallback(({active:o})=>{N(null)},[]),S=l.useCallback(({active:o,over:w})=>{if(!w||o.id===w.id)return;const B=s.findIndex(H=>H.key===o.id),O=s.findIndex(H=>H.key===w.id);if(B<0||O<0||B===O)return;const A=s.map(H=>H.key),G=q.arrayMove(A,B,O);d?.(G)},[s,d]),b=l.useCallback((o,w)=>e.jsx(U.DndContext,{sensors:g,onDragStart:P,onDragEnd:S,collisionDetection:U.closestCenter,modifiers:[he.restrictToHorizontalAxis],children:e.jsx(q.SortableContext,{items:s.map(B=>B.key),strategy:q.horizontalListSortingStrategy,children:e.jsx(w,{...o,children:B=>{const O=B.key,A=h===O;return e.jsx(i.Dropdown,{menu:{items:v(O)},trigger:["contextMenu"],open:A,onOpenChange:G=>{N(G?O:null)},children:e.jsx("span",{onContextMenu:E(O),style:{display:"inline-block",width:"100%"},children:l.createElement(Ee,{...B.props,key:B.key},B)})})}})})}),[g,P,S,s,h,v,E]);return e.jsx("div",{className:t.wrapper.className,style:{...t.wrapper.style,display:s.length===0?"none":"block"},children:e.jsx(i.Tabs,{type:"editable-card",activeKey:r||void 0,onChange:f,onEdit:I,className:t.tabs.className,style:t.tabs.style,hideAdd:!0,items:V,tabBarExtraContent:e.jsx(Re,{config:t?.nav,isFirst:!!W,isLast:!!_,canCloseAll:s.length>0,onFirst:C,onPrev:x,onNext:k,onLast:L,onCloseAll:D}),renderTabBar:b})})},{Sider:De}=i.Layout,oe=({config:n={}})=>{const t={collapsed:!1,width:230,menuGubunCode:{mainMenu:"MAIN",subMenu:"SUB",program:"PRGM",...n?.menuGubunCode},className:{wrapper:"side-wrapper",search:"sider-search-ipt",segmented:{wrapper:"sider-segmented",item:"sider-segment-item",...n?.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",...n?.className?.sider},...n?.className},style:{search:{placeholder:"메뉴명, 메뉴번호 검색...",height:30,...n?.style?.search},...n?.style},...n},[s,r]=l.useState(""),[a,c]=l.useState("category"),[y,d]=l.useState([]),{activeMenuId:u,sidebarCollapsed:j,openTabFromMenu:p,toggleSidebar:m}=M.useMenuViewStore(),{menuList:g,isLoading:f,error:I,findMenuById:C,flatMenuList:x}=M.useMenuModelStore(),{nodes:k,treeNodes:L,loadFavoritesIfNeeded:D}=M.useFavoriteStore(),E=l.useMemo(()=>{const P=[],S=(b,o=0)=>{if(b.menuGbCd===t.menuGubunCode.program&&b.scrnPath){const w=" ".repeat(o),B=b.menuNo||"";P.push({value:b.menuId,label:e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[e.jsxs("span",{children:[w,b.menuNm]}),e.jsx("span",{style:{fontSize:"11px",color:"#999",backgroundColor:"#f0f0f0",padding:"2px 6px",borderRadius:"3px",marginLeft:"8px"},children:B})]}),menuItem:b})}b.children&&b.children.length>0&&b.children.forEach(w=>S(w,o+1))};return g.forEach(b=>S(b)),P},[g]),v=l.useMemo(()=>s.trim()?E.filter(P=>{const S=P.menuItem.menuNm.toLowerCase(),b=String(P.menuItem.menuNo||"미지정").toLowerCase(),o=s.toLowerCase();return S.includes(o)||b.includes(o)}):[],[E,s]),F=P=>{if(!P||typeof P!="string"){console.warn("Invalid menu selection value:",P);return}if(!/^[a-zA-Z0-9_-]+$/.test(P)){console.warn("Invalid menu ID format:",P);return}const S=E.find(b=>b.value===P);if(S){const{menuItem:b}=S;if(!b||!b.menuId||!b.menuNm){console.warn("Invalid menu item:",b);return}b.menuGbCd===t.menuGubunCode.program&&b.scrnPath?(console.log("✅ 검색으로 프로그램 메뉴 선택 - 탭 추가 및 setCurrentProgram 호출"),console.log("메뉴명:",b.menuNm,"경로:",b.scrnPath,"scrnId:",b.scrnId),p(b)):(b.menuGbCd===t.menuGubunCode.mainMenu||b.menuGbCd===t.menuGubunCode.subMenu)&&(console.log("❌ 검색으로 메인/서브 메뉴 선택 - 이벤트 무시"),console.log("메뉴명:",b.menuNm,"menuGbCd:",b.menuGbCd)),r("")}},W=l.useCallback(P=>{const S=C(P);S?.menuGbCd===t.menuGubunCode.program&&(console.log("메뉴명:",S.menuNm,"경로:",S.scrnPath,"scrnId:",S.scrnId),p(S))},[C,p]),_=l.useCallback(P=>P.map(S=>({key:S.menuId,label:e.jsx("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:e.jsx("span",{children:S.menuNm})}),icon:V(S.iconCd,S.menuGbCd),children:S.children&&S.children.length>0?_(S.children):void 0})),[]),V=(P,S)=>{if(P){const b=Z[P];if(b)return e.jsx(b,{})}if(S)switch(S){case t.menuGubunCode.mainMenu:return e.jsx(Z.HomeOutlined,{});case t.menuGubunCode.subMenu:return null;case t.menuGubunCode.program:return null;default:return null}return null},h=l.useCallback(P=>{if(g.length===0)return[];const S=o=>{if(o)return typeof o=="string"?k[o]:o},b=o=>{if(o.type==="M"){const w=o,B=C(w.menuId)||void 0,O=!!B,A=O?`${B?.menuNm??w.menuNm??w.menuId}`:`${w.menuNm??w.menuId} (삭제됨)`;return{key:w.menuId,label:A,icon:O?void 0:e.jsx(T.WarningOutlined,{style:{color:"#faad14"}})}}else{const w=o,B=(w.children??[]).map(S).filter(Boolean).map(b);return{key:w.bkmkId,label:w.bkmkNm??w.bkmkId,icon:w.prntBkmkId==="-"?e.jsx(T.StarOutlined,{}):e.jsx(T.FolderOpenOutlined,{}),children:B}}};return P.map(b)},[C,k,g]),N=l.useMemo(()=>h(L),[h,L,k]);return l.useEffect(()=>{K.getUserId()&&D(K.getUserId())},[D]),l.useEffect(()=>{a==="category"&&r("")},[a]),l.useEffect(()=>{if(!u||a!=="category")return;const S=(b=>{const o=[],w=new Map(x.map(O=>[O.menuId,O]));let B=b;for(;B;){const O=w.get(B);if(!O)break;if(O.menuPrntId&&O.menuPrntId!=="-"&&O.menuPrntId!=="")o.push(O.menuPrntId),B=O.menuPrntId;else break}return o})(u);S.length>0&&d(b=>{const o=new Set([...b,...S]);return Array.from(o)})},[u,a,x]),e.jsxs(De,{className:t.className.wrapper,collapsed:t.collapsed||j,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(i.Button,{type:"text",icon:t.collapsed||j?e.jsx(T.MenuUnfoldOutlined,{}):e.jsx(T.MenuFoldOutlined,{}),style:{fontSize:"12px",color:"#787878",padding:0,width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"0 10px 10px 0"},onClick:m})}),!(t.collapsed||j)&&e.jsx("div",{style:{padding:10},children:e.jsx(i.AutoComplete,{value:s,options:v,onSelect:F,onSearch:r,style:{width:"100%"},allowClear:!0,children:e.jsx(i.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||j)&&e.jsx("div",{style:{width:"100%",padding:"0px 10px",marginBottom:"10px"},children:e.jsx(i.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:a,onChange:P=>{c(P)},style:{width:"100%"},block:!0})}),e.jsxs("div",{className:t.className.sider.content,children:[f&&e.jsxs("div",{className:t.className.sider.loading,style:{padding:10,margin:"0 auto",textAlign:"center",color:"var(--text-primary)"},children:[e.jsx(i.ConfigProvider,{theme:{components:{Spin:{colorPrimary:"var(--primary-color)"}}},children:e.jsx(i.Spin,{size:"default"})}),e.jsx("div",{className:t.className.sider.loadingText,style:{marginTop:10},children:"메뉴 로딩 중..."})]}),I&&e.jsxs("div",{className:t.className.sider.error,children:[e.jsx(T.ExclamationCircleOutlined,{className:t.className.sider.errorIcon}),e.jsx("div",{className:t.className.sider.errorText,children:"메뉴 로드 실패"})]}),!f&&!I&&a==="category"&&g.length===0&&e.jsx("div",{style:{padding:"16px",textAlign:"center",color:"#666",fontSize:"12px"},children:"메뉴가 없습니다"}),!f&&!I&&a==="favorite"&&N.length===0&&e.jsx("div",{style:{padding:"16px",textAlign:"center",color:"#666",fontSize:"12px"},children:"즐겨찾기된 메뉴가 없습니다"}),!f&&!I&&a==="category"&&g.length>0&&e.jsx("div",{className:t.className.sider.menuContainer,children:e.jsx(i.Menu,{theme:"light",mode:"inline",items:_(g),className:t.className.sider.menu,selectedKeys:[u||""],openKeys:y,onOpenChange:d,onClick:P=>W(P.key)})}),!f&&!I&&a==="favorite"&&N.length>0&&e.jsx("div",{className:t.className.sider.menuContainer,children:e.jsx(i.Menu,{theme:"light",mode:"inline",items:N,className:t.className.sider.menu,selectedKeys:[u||""],onClick:P=>W(P.key)})})]})]})};class ze 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,s){console.error("ErrorBound caught an error:",t,s),this.setState({error:t,errorInfo:s})}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(i.Result,{status:"error",title:"컴포넌트 로딩 중 오류가 발생했습니다",subTitle:this.state.error?`오류 내용: ${this.state.error.message}`:"알 수 없는 오류가 발생했습니다",extra:[e.jsx(i.Button,{type:"primary",icon:e.jsx(T.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 Fe=({isActive:n,instance:t,params:s})=>{const{activeMenuId:r,closeTab:a}=M.useMenuViewStore(),c=()=>{r&&a(r)};return t?e.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",visibility:n?"visible":"hidden",opacity:n?1:0,transition:"opacity 0.2s ease-in-out",pointerEvents:n?"auto":"none"},children:e.jsx(ze,{children:e.jsx(l.Suspense,{fallback:null,children:t&&l.createElement(t,{params:s})})})}):e.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",visibility:n?"visible":"hidden",opacity:n?1:0,transition:"opacity 0.2s ease-in-out",pointerEvents:n?"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(i.Result,{icon:e.jsx(T.ExclamationCircleTwoTone,{twoToneColor:"#69b1ff"}),status:"warning",title:"등록된 메뉴 정보가 없거나 유효한 메뉴가 아닙니다.",subTitle:e.jsx(i.Typography.Text,{type:"secondary",children:"자세한 내용은 관리자에게 문의바랍니다."}),extra:e.jsx(i.Space,{children:e.jsx(i.Button,{icon:e.jsx(T.CloseOutlined,{}),onClick:c,children:"탭 닫기"})})})})})},ie=l.memo(Fe),ae=({menuGubunCode:n={mainMenu:"MAIN",subMenu:"SUB",program:"PRGM"},mode:t="horizontal",style:s,routeMap:r})=>{const{menuList:a,findMenuById:c,flatMenuList:y}=M.useMenuModelStore(),{activeMenuId:d}=M.useMenuViewStore(),u=R.useNavigate(),[j,p]=l.useState([]),m=l.useCallback((C,x)=>{if(C){const k=Z[C];if(k)return e.jsx(k,{})}if(x)switch(x){case n.mainMenu:return e.jsx(Z.HomeOutlined,{});default:return null}return null},[n]),g=l.useCallback(C=>C.map(x=>{const k=x.children&&x.children.length===1&&x.children[0].menuGbCd===n.program;return{key:x.menuId,label:x.menuNm,icon:m(x.iconCd,x.menuGbCd),children:x.children&&x.children.length>0&&!k?g(x.children):void 0}}),[m,n]),f=l.useMemo(()=>g(a),[a,g]),I=l.useCallback(C=>{const x=c(C.key);if(x){if(x.children&&x.children.length===1&&x.children[0].menuGbCd===n.program){const k=x.children[0];let L=r?.[k.menuId]||k.scrnPath||"/";L==="/"?L="/main":L.startsWith("/main")||(L=L.startsWith("/")?`/main${L}`:`/main/${L}`),u(L);return}if(x.menuGbCd===n.program&&x.scrnPath){let k=r?.[x.menuId]||x.scrnPath||"/";k==="/"?k="/main":k.startsWith("/main")||(k=k.startsWith("/")?`/main${k}`:`/main/${k}`),u(k);return}}},[c,n,u,r]);return l.useEffect(()=>{if(!d||t!=="vertical")return;const x=(k=>{const L=[],D=new Map(y.map(v=>[v.menuId,v]));let E=k;for(;E;){const v=D.get(E);if(!v)break;if(v.menuPrntId&&v.menuPrntId!=="-"&&v.menuPrntId!=="")L.push(v.menuPrntId),E=v.menuPrntId;else break}return L})(d);x.length>0&&p(k=>{const L=new Set([...k,...x]);return Array.from(L)})},[d,t,y]),e.jsx(i.Menu,{mode:t,theme:"light",items:f,selectedKeys:[d||""],openKeys:t==="vertical"?j:void 0,onOpenChange:t==="vertical"?p:void 0,onClick:I,style:s})},le=()=>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"})})})]}),Ae=(n,t)=>{console.log("createPopupViewLoader 호출 - popupUrl:",n);const r=(a=>{if(a.startsWith("/src/pages/views/popup/")){const d=a+".tsx";return console.log(`팝업 URL 변환: ${a} -> ${d}`),d}const y=`/src/pages/views/popup/${a.startsWith("/")?a.substring(1):a}.tsx`;return console.log(`팝업 URL 변환: ${a} -> ${y}`),y})(n);return!r||!t?.glob||!t.glob[r]?(console.warn(`팝업 뷰를 찾을 수 없습니다: ${n} (${r})`),console.warn("사용 가능한 팝업 뷰들:",Object.keys(t?.glob||{})),null):t.glob[r]},$e=({popup:n,modules:t})=>{const[s,r]=l.useState(null),[a,c]=l.useState(!1),[y,d]=l.useState(null),u=()=>{console.log("PopupArea - handleClose:",n.popupId),M.usePopupStore.getState().closePopup(n.popupId)};return l.useEffect(()=>{(async()=>{console.log("팝업 뷰 로드 시작:",n.popupUrl),c(!0),d(null);try{const p=Ae(n.popupUrl,t);if(!p){const f=`팝업 뷰를 찾을 수 없습니다: ${n.popupUrl}`;console.error(f),d(f),c(!1);return}console.log("팝업 뷰 모듈 로드 중...");const m=await p();console.log("팝업 뷰 모듈 로드 완료:",m);const g=m.default;if(console.log("팝업 뷰 컴포넌트:",g),!g)throw new Error("팝업 뷰 컴포넌트를 찾을 수 없습니다");r(()=>g),console.log("팝업 뷰 설정 완료")}catch(p){console.error("팝업 뷰 로드 실패:",p),d(p instanceof Error?p.message:"팝업 뷰 로드 실패")}finally{c(!1)}})()},[n.popupUrl]),a?e.jsxs("div",{className:"popup-loading",children:[e.jsx(i.Spin,{size:"large"}),e.jsx("p",{children:"팝업을 로드하는 중..."})]}):y?e.jsxs("div",{className:"popup-error",children:[e.jsx(i.Empty,{description:y,image:i.Empty.PRESENTED_IMAGE_SIMPLE}),e.jsx(i.Button,{icon:e.jsx(T.ReloadOutlined,{}),onClick:()=>window.location.reload(),children:"다시 시도"})]}):s?e.jsx(l.Suspense,{fallback:e.jsxs("div",{className:"popup-loading",children:[e.jsx(i.Spin,{size:"large"}),e.jsx("p",{children:"컴포넌트를 로드하는 중..."})]}),children:e.jsx(s,{popup:{...n,close:u},onClose:u})}):e.jsx("div",{className:"popup-empty",children:e.jsx(i.Empty,{description:"팝업 내용을 불러올 수 없습니다."})})},ce=({modules:n})=>{const{popups:t}=M.usePopupStore();return t.length===0?null:e.jsx(e.Fragment,{children:t.map(s=>{if(s.isLocal||s.popupCode.startsWith("CORE_"))return null;const r=s.config||{},a=r.width||s.width||800,c=r.height||s.height||600,y=r.title||s.popupTitle,d=s.buttonList?.map((u,j)=>({key:u.btnId||`btn_${j}`,text:u.btnNm,type:u.btnId==="CLOSE"?"default":"primary",disabled:u.enblYn!=="Y",danger:!1}))||[];return console.log("팝업 렌더링:",{popupId:s.popupId,popupCode:s.popupCode,title:y,width:a,height:c,buttons:d}),e.jsx($.SearchBoxProvider,{children:e.jsx("div",{children:e.jsx($e,{popup:s,modules:n})},s.popupId)},`sbp-${s.popupId}`)})})},de=()=>{const{popups:n,closePopup:t}=M.usePopupStore();return e.jsx(e.Fragment,{children:n.map(s=>{if(!(s.isLocal||s.popupCode.startsWith("CORE_")))return null;const r=se[s.popupCode];if(!r)return null;const a=r.component;return e.jsx($.SearchBoxProvider,{children:e.jsx(l.Suspense,{fallback:null,children:e.jsx(a,{popup:s,onClose:()=>t(s.popupId)})},s.popupId)},`sbp-${s.popupId}`)})})},We=n=>({position:"absolute",inset:0,visibility:n?"visible":"hidden",opacity:n?1:0,transition:"opacity 0.2s ease-in-out",pointerEvents:n?"auto":"none"}),_e=({once:n=!0})=>{const{lock:t}=$.useLock(),s=l.useRef(!1);return l.useEffect(()=>{n&&s.current||(s.current=!0,t())},[n,t]),null},ue=({isActive:n,flagged:t,tabKey:s,onUnlock:r,children:a})=>{const c=l.useRef(null),[y,d]=l.useState(!1),u=l.useCallback(p=>{c.current=p,d(!!p)},[]),j=We(n);return e.jsx("div",{ref:u,style:j,children:y?e.jsxs($.ScreenProtectProvider,{idleMs:Number.POSITIVE_INFINITY,persistLocked:!1,overlayScope:"scoped",overlayPosition:"absolute",eventTarget:c.current,overlayId:`tab-overlay-${s}`,onUnlock:async()=>(r(),!0),children:[n&&t?e.jsx(_e,{once:!0}):null,a]}):a})},Ve=({config:n={},modules:t={view:{path:"/src/pages/views/content"},popup:{path:"/src/pages/views/popups"}}})=>{const s=l.useRef(new Map),{tabs:r,tabParams:a,activeMenuId:c,tabProtectFlag:y,refreshTabKey:d,clearProtectFlagForKey:u}=M.useMenuViewStore(),{enableProtectWrapper:j}=M.useUserStore(),p=l.useCallback(m=>{const g=s.current.get(m.key);if(g)return g;const f=m.gubun==="M"?`${t.view.path}${m.menuItem?.scrnPath}.tsx`:`${t.view.path}${m.componentItem?.scrnPath}.tsx`;let I=t.view?.glob?.[f];if(!I&&typeof{url:typeof document>"u"?require("url").pathToFileURL(__filename).href:Y&&Y.tagName.toUpperCase()==="SCRIPT"&&Y.src||new URL("chunks/layout-components-C6KeWPIu.cjs",document.baseURI).href}<"u",I){const C=l.lazy(I);return s.current.set(m.key,C),C}return null},[t.view?.glob]);return l.useEffect(()=>{Object.keys(d).forEach(m=>{s.current.delete(m)})},[d]),e.jsxs(i.Layout,{className:"main-layout",children:[e.jsx(te,{config:n?.header}),e.jsxs(i.Layout,{children:[e.jsx(oe,{config:n?.sidebar}),e.jsxs("div",{className:"content-container",children:[e.jsx(re,{config:n?.menuTab}),e.jsxs(ee,{config:n?.content,children:[e.jsx("div",{className:"view-container",children:e.jsxs("div",{style:{position:"relative",width:"100%",height:"100%"},children:[r.map(m=>{const g=p(m),f=c===m.key,I=!!y?.[m.key],C=a[m.key]||{},x=d[m.key],k=x?`${m.key}-${x}`:m.key,L=e.jsx(ie,{isActive:f,instance:g||void 0,params:C},k);return e.jsx($.SearchBoxProvider,{children:j?e.jsx(ue,{isActive:f,flagged:I,tabKey:m.key,onUnlock:()=>u(m.key),children:L},m.key):L},`sbp-${m.key}`)}),(!c||r.length===0)&&e.jsx(le,{})]})}),e.jsx(de,{}),e.jsx(ce,{modules:t?.popup})]})]})]}),(n?.quickService?.visible??!0)&&e.jsx(J.QuickServiceToggle,{})]})},me=({children:n,menuGubunCode:t={mainMenu:"CMPRGRM",subMenu:"CMPRGRS",program:"CMPRGRP"},routeMap:s,routes:r})=>{const a=R.useLocation(),c=R.useNavigate(),{flatMenuList:y,findMenuById:d}=M.useMenuModelStore(),u=l.useMemo(()=>{const p=a.pathname,m=p.replace(/^\/main/,"")||"/";if(s){const g=Object.keys(s).find(I=>s[I]===p);if(g)return d(g);const f=Object.keys(s).find(I=>(s[I].replace(/^\/main/,"")||"/")===m);if(f)return d(f)}return y.find(g=>g.menuGbCd===t.program&&g.scrnPath&&(g.scrnPath===m||g.scrnPath===p||p.endsWith(g.scrnPath)||m===g.scrnPath))},[a.pathname,y,t.program,s,d]),j=l.useMemo(()=>{if(!u)return[];const p=[],m=f=>{if(!f||!f.menuPrntId||f.menuPrntId==="-")return[];const I=d(f.menuPrntId);return I?[...m(I),I]:[]};return m(u).forEach(f=>{if(f.menuGbCd===t.mainMenu||f.menuGbCd===t.subMenu){let I;if(s&&f.menuId&&(I=s[f.menuId]),!I&&r&&f.scrnPath){const C=f.scrnPath.startsWith("/")?f.scrnPath:`/${f.scrnPath}`,x=Object.keys(r).find(k=>k===C||k===`/main${C}`);x&&(I=x.startsWith("/main")?x:`/main${x.startsWith("/")?x:`/${x}`}`)}p.push({title:f.menuNm,onClick:I?()=>c(I):void 0})}}),p.push({title:u.menuNm}),p},[u,t,c,d]);return e.jsxs("div",{style:{height:"100%",padding:"15px 20px"},children:[e.jsx(i.Breadcrumb,{separator:">",items:j,style:{marginBottom:"16px"}}),e.jsx("div",{children:n})]})},Ge=({config:n={}})=>{const t=n?.header?.menu,s=t?.visible!==!1,r=t?.routes,a=l.useMemo(()=>{if(!r)return;const c={},{flatMenuList:y}=M.useMenuModelStore.getState();return y.forEach(d=>{if(d.menuGbCd===t?.menuGubunCode?.program&&d.scrnPath){const u=d.scrnPath.startsWith("/")?d.scrnPath:`/${d.scrnPath}`,j=Object.keys(r).find(p=>{const m=p==="/"?"/":p.startsWith("/")?p:`/${p}`;return m===u||m===`/main${u}`||u===m.replace(/^\/main/,"")});if(j){const p=j==="/"?"/main":j.startsWith("/main")?j:`/main${j.startsWith("/")?j:`/${j}`}`;c[d.menuId]=p}}}),c},[r,t?.menuGubunCode?.program]);return e.jsxs(i.Layout,{className:"main-layout",children:[e.jsx(te,{config:n?.header,children:s&&e.jsx(ae,{menuGubunCode:t?.menuGubunCode,mode:t?.style?.mode||"horizontal",routeMap:a,style:{border:"none",backgroundColor:"transparent",minWidth:0,flex:1,...t?.style}})}),e.jsx("div",{className:"content-container",children:e.jsxs(ee,{config:n?.content,children:[e.jsx("div",{className:"view-container",children:e.jsx("div",{style:{position:"relative",width:"100%",height:"100%"},children:e.jsx(l.Suspense,{fallback:e.jsx("div",{children:"Loading..."}),children:e.jsx(R.Routes,{children:Object.entries(r||{}).map(([c,y])=>{const d=c==="/"?"":c.replace(/^\/main/,"").replace(/^\//,"")||"";return e.jsx(R.Route,{path:d,element:e.jsx(me,{menuGubunCode:t?.menuGubunCode,routeMap:a,routes:r,children:e.jsx(y,{})})},c)})})})})}),e.jsx(de,{})]})})]})};function He({config:n,ui:t,navigate:s}){const{loading:r,capsOn:a,prefills:c,onKeyDown:y,doLogin:d}=M.useLogin(n),u=j=>d(j,s);return l.useEffect(()=>{M.useSystemStore.getState().fetchSystemMap()},[]),e.jsx(e.Fragment,{children:t({onSubmit:u,loading:r,capsOn:a,onKeyDown:y,prefills:c})})}function Ue({onSubmit:n,loading:t,capsOn:s,onKeyDown:r,prefills:a,labels:c={id:"ID 혹은 사번",pw:"비밀번호",remember:"Remember me",login:"로그인"},header:y,footer:d}){const[u]=i.Form.useForm();return l.useEffect(()=>{a&&(a.id||a.pswr)&&u.setFieldsValue({id:a.id,pswr:a.pswr})},[a,u]),e.jsx("div",{className:"login-main",children:e.jsxs("div",{className:"login_wrap",children:[y||e.jsx("div",{className:"logo_box"}),e.jsx("div",{className:"login_title"}),e.jsx(i.Form,{form:u,onFinish:n,className:"login-form",children:e.jsxs(i.Flex,{vertical:!0,children:[e.jsx(i.Form.Item,{name:"id",rules:[{required:!0,message:"아이디를 입력해주세요."},{whitespace:!0,message:"아이디는 공백이 들어갈 수 없습니다."}],children:e.jsx(i.Input,{allowClear:!0,placeholder:c.id,onKeyDown:r})}),e.jsx(i.Form.Item,{name:"pswr",rules:[{required:!0,message:"비밀번호를 입력하세요."}],children:e.jsx(i.Input.Password,{allowClear:!0,placeholder:c.pw,onKeyDown:r})}),e.jsx(i.Form.Item,{name:"remember",valuePropName:"checked",children:e.jsx(i.Checkbox,{children:c.remember})}),e.jsx("div",{className:s?"caps-lock caps-lock-on":"caps-lock",children:s?"Caps Lock On":"Caps Lock Off"}),e.jsx(i.Form.Item,{children:e.jsx(i.Button,{type:"primary",htmlType:"submit",loading:t,block:!0,children:c.login})})]})}),d]})})}exports.AppWrapper=Ie;exports.BwgCoreLogin=He;exports.BwgPortal01=Ve;exports.BwgPortal02=Ge;exports.ConfigurableContent=ee;exports.ConfigurableHeader=te;exports.ConfigurableMenuTab=re;exports.ConfigurableSidebar=oe;exports.ContentContainer=ie;exports.ContentWrapper=me;exports.DefaultLoginView=Ue;exports.HeaderContainer=ae;exports.LandingContainer=le;exports.LoadingContainer=Se;exports.PopupContainer=ce;exports.ProtectWrapper=ue;exports.localPopupRegistry=se;
@@ -0,0 +1 @@
1
+ "use strict";const k=require("../stores/index.cjs"),r=require("react"),a=require("react/jsx-runtime"),R=require("antd"),P=require("../utils/index.cjs"),B=r.createContext(null),T=({children:e,serviceCodes:t={}})=>{P.setServiceCodeOverrides(t),r.useLayoutEffect(()=>{P.setServiceCodeOverrides(t)},[t]);const s={serviceCodes:t,getServiceCode:n=>t[n]&&t[n].trim()!==""?t[n]:P.DEFAULT_SERVICE_CODES[n]};return a.jsx(B.Provider,{value:s,children:e})},L=()=>{const e=r.useContext(B);if(!e)throw new Error("useServiceCode must be used within a ServiceCodeProvider");return e},U=e=>{const{getServiceCode:t}=L();return t(e)},_=()=>{const{getServiceCode:e}=L(),t={};for(const o of Object.keys(P.DEFAULT_SERVICE_CODES))t[o]=e(o);return t},G=()=>{const{getServiceCode:e}=L();console.log("🔧 bwg-core 서비스코드 설정:"),console.log("📋 Provider 설정 > 기본값 순서로 확인");for(const t of Object.keys(P.DEFAULT_SERVICE_CODES)){const o=e(t);console.log(` ${t}: ${o}`)}},F=r.createContext(null),q=({children:e,menuId:t})=>a.jsx(F.Provider,{value:{menuId:t},children:e}),W=()=>r.useContext(F),$=()=>{const{componentSize:e}=k.useUserStore();return r.useMemo(()=>{const o={0:12,1:14,2:16},s={0:"small",1:"middle",2:"large"};return{fontSize:o[e],componentSize:s[e]}},[e])},J=()=>{const{gridSize:e}=k.useUserStore();return r.useMemo(()=>{const o={0:12,1:13,2:14},s={0:"small",1:"middle",2:"large"},n={0:24,1:30,2:35},u={0:200,1:220,2:250};return{fontSize:o[e],componentSize:s[e],buttonSize:n[e],width:u[e]}},[e])},O=r.createContext(null),H=({children:e})=>{const t=r.useRef(null),C={searchBoxRef:t,getFormData:()=>t.current?.getFormData()||{},setFormData:d=>{t.current?.setFormData(d)},resetForm:()=>{t.current?.resetForm()},validateForm:async()=>await t.current?.validateForm()||{success:!1,error:null}};return a.jsx(O.Provider,{value:C,children:e})},Q=()=>{const e=r.useContext(O);if(!e)throw new Error("useSearchBox must be used within a SearchBoxProvider");return e},X=()=>{const{popups:e,activePopupId:t,setActivePopup:o,closePopup:s,openPopup:n,openCorePopup:u}=k.usePopupStore(),C=r.useCallback(async(f,m,c)=>{try{await n(f,m,c)}catch(i){throw console.error("팝업 열기 실패:",i),i}},[n]),d=r.useCallback((f,m)=>{try{u(f,m)}catch(c){throw console.error("로컬 팝업 열기 실패:",c),c}},[u]);return{popups:e,activePopupId:t,setActivePopup:o,closePopup:s,showPopup:C,openCorePopup:d,isPopup:e.length>0}},A=r.createContext(null),Y=()=>{const e=r.useContext(A);if(!e)throw new Error("useAuth must be used within AuthProvider");return e},Z=({children:e})=>{const[t,o]=r.useState(!1),[s,n]=r.useState(!1),u=async c=>{const i=(await c.text()).trim().toLowerCase();try{const l=JSON.parse(i);if(typeof l=="object"&&l&&(l.ok===!0||l.success===!0))return!0}catch{}return!!["true","ok","1","y"].includes(i)},C=async c=>{n(!0);try{const i=await fetch("/serviceEndpoint/sso_check.jsp",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"token="+encodeURIComponent(c)}),l=i.ok&&await u(i);return o(l),l}catch{return!1}finally{n(!1)}},d=async c=>{n(!0);try{const i=await fetch("/serviceEndpoint/sso_reauth.jsp",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"pin="+encodeURIComponent(c)});return i.ok&&await u(i)?(o(!0),!0):!1}catch{return!1}finally{n(!1)}},f=()=>{o(!1)},m=r.useMemo(()=>({authed:t,busy:s,verifyWithToken:C,reauthWithPin:d,logout:f}),[t,s]);return a.jsx(A.Provider,{value:m,children:e})},I=r.createContext(void 0),K=({children:e})=>{const{codeData:t,isLoading:o,error:s,lastUpdated:n,getCodeList:u,getCodeListByOption:C,getCodeName:d,getCodeColor:f,getCodeByOption:m,getAvailableGroupCodes:c,getGridLookup:i,fetchCommonCodes:l}=k.useCodeStore(),E={codeData:t,isLoading:o,error:s,lastUpdated:n,getCodeList:u,getCodeListByOption:C,getCodeName:d,getCodeColor:f,getCodeByOption:m,getAvailableGroupCodes:c,getGridLookup:i,refreshCodes:l};return a.jsx(I.Provider,{value:E,children:e})},v=()=>{const e=r.useContext(I);if(e===void 0)throw new Error("useCommonCode must be used within a CommonCodeProvider");return e},ee=()=>{const{getCodeList:e,isLoading:t,error:o}=v();return{getCodeList:e,isLoading:t,error:o}},te=()=>{const{getCodeName:e,isLoading:t,error:o}=v();return{getCodeName:e,isLoading:t,error:o}},oe=()=>{const{getCodeColor:e,isLoading:t,error:o}=v();return{getCodeColor:e,isLoading:t,error:o}},re=()=>{const{getCodeListByOption:e,isLoading:t,error:o}=v();return{getCodeListByOption:e,isLoading:t,error:o}},ne=()=>{const{getGridLookup:e,isLoading:t,error:o}=v();return{getGridLookup:e,isLoading:t,error:o}},D=r.createContext(null),se=()=>{const e=r.useContext(D);if(!e)throw new Error("useLock must be used within ScreenProtectProvider");return e},ce=({children:e,idleMs:t=1e4,onUnlock:o,persistLocked:s=!0,storageKey:n="inactivityLocked",eventTarget:u,overlayScope:C="global",overlayId:d="lock-overlay-root",overlayPosition:f="fixed"})=>{const m=s&&typeof window<"u"&&window.localStorage.getItem(n)==="1",[c,i]=r.useState(m),[l,E]=r.useState(t),y=Number.isFinite(l)&&l>0,w=r.useRef(null),V=()=>{try{s&&window.localStorage.setItem(n,"1")}catch{}i(!0)},j=async h=>{if(!(o&&!await o(h))){try{s&&window.localStorage.removeItem(n)}catch{}i(!1),y&&b()}},M=()=>{try{s&&window.localStorage.setItem(n,"1")}catch{}i(!0)},b=()=>{y&&(w.current&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>{M()},l))};r.useEffect(()=>{if(!y)return;const h=()=>{c||b()},S={passive:!0},g=["pointermove","pointerdown","keydown","wheel","touchstart"],x=u??window;return g.forEach(p=>x.addEventListener(p,h,S)),b(),()=>{w.current&&window.clearTimeout(w.current),g.forEach(p=>x.removeEventListener(p,h))}},[l,c,u,y]),r.useEffect(()=>{if(!c)return;const h=p=>{const z=document.getElementById(d);z&&z.contains(p.target)||(p.stopPropagation(),p.preventDefault())},S={capture:!0},g=["pointerdown","pointerup","pointermove","click","wheel","keydown","keyup","touchstart","touchmove"],x=C==="scoped"?u??window:window;return g.forEach(p=>x.addEventListener(p,h,S)),()=>g.forEach(p=>x.removeEventListener(p,h,S))},[c,C,d,u]);const N=r.useMemo(()=>({locked:c,lock:V,unlock:j,setIdleMs:E}),[c]);return a.jsxs(D.Provider,{value:N,children:[a.jsx("div",{style:{width:"100%",height:"100%"},...c?{inert:""}:{},...c?{"aria-hidden":!0}:{},children:e}),c&&a.jsx(ie,{onUnlock:j,overlayId:d,overlayPosition:f})]})},ie=({onUnlock:e,overlayId:t="lock-overlay-root",overlayPosition:o="fixed"})=>{const[s]=r.useState(4),[n,u]=r.useState("");return a.jsx("div",{id:t,"aria-modal":"true",role:"dialog","aria-label":"Locked screen",style:{position:o,inset:0,background:"rgba(12, 14, 18, 0.85)",backdropFilter:"blur(4px)",display:"grid",placeItems:"center",zIndex:9999},children:a.jsxs("div",{className:"lockscreen-form",style:{width:420,maxWidth:"92vw"},children:[a.jsx("div",{className:"lock-icon-wrap",children:a.jsx("span",{className:"lock-icon-box"})}),a.jsx("h2",{children:"잠금됨"}),a.jsx("p",{children:"PIN 번호를 입력하세요"}),a.jsx("div",{className:"lock-ipt-wrap",style:{display:"flex",justifyContent:"center"},children:a.jsx(R.Input.OTP,{mask:"*",autoFocus:!0,length:s,value:n,onChange:C=>{const d=(C??"").replace(/\D/g,"").slice(0,s);u(d),d.length===s&&e(d)}})})]})})};exports.AuthProvider=Z;exports.BwgViewProvider=q;exports.CommonCodeProvider=K;exports.ScreenProtectProvider=ce;exports.SearchBoxProvider=H;exports.ServiceCodeProvider=T;exports.useAllServiceCodes=_;exports.useAuth=Y;exports.useBwgView=W;exports.useCodeColor=oe;exports.useCodeList=ee;exports.useCodeListByOption=re;exports.useCodeName=te;exports.useCommonCode=v;exports.useGridLookup=ne;exports.useGridSizeConfig=J;exports.useLock=se;exports.useLogServiceCodeConfig=G;exports.usePopup=X;exports.useSearchBox=Q;exports.useServiceCode=L;exports.useServiceCodeValue=U;exports.useSizeConfig=$;
@@ -0,0 +1,446 @@
1
+ import { useUserStore as j, usePopupStore as J, useCodeStore as H } from "../stores/index.js";
2
+ import { useLayoutEffect as Q, createContext as C, useContext as v, useMemo as L, useRef as N, useCallback as O, useState as w, useEffect as A } from "react";
3
+ import { jsx as d, jsxs as V } from "react/jsx-runtime";
4
+ import { Input as X } from "antd";
5
+ import { setServiceCodeOverrides as D, DEFAULT_SERVICE_CODES as z } from "../utils/index.js";
6
+ const T = C(null), re = ({
7
+ children: e,
8
+ serviceCodes: t = {}
9
+ }) => {
10
+ D(t), Q(() => {
11
+ D(t);
12
+ }, [t]);
13
+ const n = {
14
+ serviceCodes: t,
15
+ getServiceCode: (r) => t[r] && t[r].trim() !== "" ? t[r] : z[r]
16
+ };
17
+ return /* @__PURE__ */ d(T.Provider, { value: n, children: e });
18
+ }, B = () => {
19
+ const e = v(T);
20
+ if (!e)
21
+ throw new Error("useServiceCode must be used within a ServiceCodeProvider");
22
+ return e;
23
+ }, ne = (e) => {
24
+ const { getServiceCode: t } = B();
25
+ return t(e);
26
+ }, se = () => {
27
+ const { getServiceCode: e } = B(), t = {};
28
+ for (const o of Object.keys(z))
29
+ t[o] = e(o);
30
+ return t;
31
+ }, ce = () => {
32
+ const { getServiceCode: e } = B();
33
+ console.log("🔧 bwg-core 서비스코드 설정:"), console.log("📋 Provider 설정 > 기본값 순서로 확인");
34
+ for (const t of Object.keys(z)) {
35
+ const o = e(t);
36
+ console.log(` ${t}: ${o}`);
37
+ }
38
+ }, M = C(null), ie = ({
39
+ children: e,
40
+ menuId: t
41
+ }) => /* @__PURE__ */ d(M.Provider, { value: { menuId: t }, children: e }), ae = () => v(M), ue = () => {
42
+ const { componentSize: e } = j();
43
+ return L(() => {
44
+ const o = {
45
+ 0: 12,
46
+ // 작게
47
+ 1: 14,
48
+ // 보통
49
+ 2: 16
50
+ // 크게
51
+ }, n = {
52
+ 0: "small",
53
+ 1: "middle",
54
+ 2: "large"
55
+ };
56
+ return {
57
+ fontSize: o[e],
58
+ componentSize: n[e]
59
+ };
60
+ }, [e]);
61
+ }, de = () => {
62
+ const { gridSize: e } = j();
63
+ return L(() => {
64
+ const o = {
65
+ 0: 12,
66
+ // 작게
67
+ 1: 13,
68
+ // 보통
69
+ 2: 14
70
+ // 크게
71
+ }, n = {
72
+ 0: "small",
73
+ 1: "middle",
74
+ 2: "large"
75
+ }, r = {
76
+ 0: 24,
77
+ // 작게
78
+ 1: 30,
79
+ // 보통
80
+ 2: 35
81
+ // 크게
82
+ }, i = {
83
+ 0: 200,
84
+ // 작게
85
+ 1: 220,
86
+ // 보통
87
+ 2: 250
88
+ // 크게
89
+ };
90
+ return {
91
+ fontSize: o[e],
92
+ componentSize: n[e],
93
+ buttonSize: r[e],
94
+ width: i[e]
95
+ };
96
+ }, [e]);
97
+ }, R = C(null), le = ({ children: e }) => {
98
+ const t = N(null), l = {
99
+ searchBoxRef: t,
100
+ getFormData: () => t.current?.getFormData() || {},
101
+ setFormData: (a) => {
102
+ t.current?.setFormData(a);
103
+ },
104
+ resetForm: () => {
105
+ t.current?.resetForm();
106
+ },
107
+ validateForm: async () => await t.current?.validateForm() || {
108
+ success: !1,
109
+ error: null
110
+ }
111
+ };
112
+ return /* @__PURE__ */ d(R.Provider, { value: l, children: e });
113
+ }, pe = () => {
114
+ const e = v(R);
115
+ if (!e)
116
+ throw new Error("useSearchBox must be used within a SearchBoxProvider");
117
+ return e;
118
+ }, me = () => {
119
+ const {
120
+ popups: e,
121
+ activePopupId: t,
122
+ setActivePopup: o,
123
+ closePopup: n,
124
+ openPopup: r,
125
+ openCorePopup: i
126
+ } = J(), l = O(
127
+ async (m, f, s) => {
128
+ try {
129
+ await r(m, f, s);
130
+ } catch (c) {
131
+ throw console.error("팝업 열기 실패:", c), c;
132
+ }
133
+ },
134
+ [r]
135
+ ), a = O(
136
+ (m, f) => {
137
+ try {
138
+ i(m, f);
139
+ } catch (s) {
140
+ throw console.error("로컬 팝업 열기 실패:", s), s;
141
+ }
142
+ },
143
+ [i]
144
+ );
145
+ return {
146
+ popups: e,
147
+ activePopupId: t,
148
+ setActivePopup: o,
149
+ closePopup: n,
150
+ showPopup: l,
151
+ openCorePopup: a,
152
+ isPopup: e.length > 0
153
+ };
154
+ }, G = C(null), fe = () => {
155
+ const e = v(G);
156
+ if (!e) throw new Error("useAuth must be used within AuthProvider");
157
+ return e;
158
+ }, he = ({ children: e }) => {
159
+ const [t, o] = w(!1), [n, r] = w(!1), i = async (s) => {
160
+ const c = (await s.text()).trim().toLowerCase();
161
+ try {
162
+ const u = JSON.parse(c);
163
+ if (typeof u == "object" && u && (u.ok === !0 || u.success === !0))
164
+ return !0;
165
+ } catch {
166
+ }
167
+ return !!["true", "ok", "1", "y"].includes(c);
168
+ }, l = async (s) => {
169
+ r(!0);
170
+ try {
171
+ const c = await fetch("/serviceEndpoint/sso_check.jsp", {
172
+ method: "POST",
173
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
174
+ body: "token=" + encodeURIComponent(s)
175
+ }), u = c.ok && await i(c);
176
+ return o(u), u;
177
+ } catch {
178
+ return !1;
179
+ } finally {
180
+ r(!1);
181
+ }
182
+ }, a = async (s) => {
183
+ r(!0);
184
+ try {
185
+ const c = await fetch("/serviceEndpoint/sso_reauth.jsp", {
186
+ method: "POST",
187
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
188
+ body: "pin=" + encodeURIComponent(s)
189
+ });
190
+ return c.ok && await i(c) ? (o(!0), !0) : !1;
191
+ } catch {
192
+ return !1;
193
+ } finally {
194
+ r(!1);
195
+ }
196
+ }, m = () => {
197
+ o(!1);
198
+ }, f = L(
199
+ () => ({ authed: t, busy: n, verifyWithToken: l, reauthWithPin: a, logout: m }),
200
+ [t, n]
201
+ );
202
+ return /* @__PURE__ */ d(G.Provider, { value: f, children: e });
203
+ }, U = C(
204
+ void 0
205
+ ), we = ({
206
+ children: e
207
+ }) => {
208
+ const {
209
+ codeData: t,
210
+ isLoading: o,
211
+ error: n,
212
+ lastUpdated: r,
213
+ getCodeList: i,
214
+ getCodeListByOption: l,
215
+ getCodeName: a,
216
+ getCodeColor: m,
217
+ getCodeByOption: f,
218
+ getAvailableGroupCodes: s,
219
+ getGridLookup: c,
220
+ fetchCommonCodes: u
221
+ } = H(), b = {
222
+ codeData: t,
223
+ isLoading: o,
224
+ error: n,
225
+ lastUpdated: r,
226
+ getCodeList: i,
227
+ getCodeListByOption: l,
228
+ getCodeName: a,
229
+ getCodeColor: m,
230
+ getCodeByOption: f,
231
+ getAvailableGroupCodes: s,
232
+ getGridLookup: c,
233
+ refreshCodes: u
234
+ };
235
+ return /* @__PURE__ */ d(U.Provider, { value: b, children: e });
236
+ }, x = () => {
237
+ const e = v(U);
238
+ if (e === void 0)
239
+ throw new Error("useCommonCode must be used within a CommonCodeProvider");
240
+ return e;
241
+ }, Ce = () => {
242
+ const { getCodeList: e, isLoading: t, error: o } = x();
243
+ return {
244
+ getCodeList: e,
245
+ isLoading: t,
246
+ error: o
247
+ };
248
+ }, ve = () => {
249
+ const { getCodeName: e, isLoading: t, error: o } = x();
250
+ return {
251
+ getCodeName: e,
252
+ isLoading: t,
253
+ error: o
254
+ };
255
+ }, ge = () => {
256
+ const { getCodeColor: e, isLoading: t, error: o } = x();
257
+ return {
258
+ getCodeColor: e,
259
+ isLoading: t,
260
+ error: o
261
+ };
262
+ }, Se = () => {
263
+ const { getCodeListByOption: e, isLoading: t, error: o } = x();
264
+ return {
265
+ getCodeListByOption: e,
266
+ isLoading: t,
267
+ error: o
268
+ };
269
+ }, ye = () => {
270
+ const { getGridLookup: e, isLoading: t, error: o } = x();
271
+ return {
272
+ getGridLookup: e,
273
+ isLoading: t,
274
+ error: o
275
+ };
276
+ }, _ = C(null), ke = () => {
277
+ const e = v(_);
278
+ if (!e)
279
+ throw new Error("useLock must be used within ScreenProtectProvider");
280
+ return e;
281
+ }, xe = ({
282
+ children: e,
283
+ idleMs: t = 1e4,
284
+ onUnlock: o,
285
+ persistLocked: n = !0,
286
+ storageKey: r = "inactivityLocked",
287
+ eventTarget: i,
288
+ overlayScope: l = "global",
289
+ overlayId: a = "lock-overlay-root",
290
+ overlayPosition: m = "fixed"
291
+ }) => {
292
+ const f = n && typeof window < "u" && window.localStorage.getItem(r) === "1", [s, c] = w(f), [u, b] = w(t), P = Number.isFinite(u) && u > 0, g = N(null), W = () => {
293
+ try {
294
+ n && window.localStorage.setItem(r, "1");
295
+ } catch {
296
+ }
297
+ c(!0);
298
+ }, F = async (h) => {
299
+ if (!(o && !await o(h))) {
300
+ try {
301
+ n && window.localStorage.removeItem(r);
302
+ } catch {
303
+ }
304
+ c(!1), P && E();
305
+ }
306
+ }, $ = () => {
307
+ try {
308
+ n && window.localStorage.setItem(r, "1");
309
+ } catch {
310
+ }
311
+ c(!0);
312
+ }, E = () => {
313
+ P && (g.current && window.clearTimeout(g.current), g.current = window.setTimeout(() => {
314
+ $();
315
+ }, u));
316
+ };
317
+ A(() => {
318
+ if (!P) return;
319
+ const h = () => {
320
+ s || E();
321
+ }, S = { passive: !0 }, y = [
322
+ "pointermove",
323
+ "pointerdown",
324
+ "keydown",
325
+ "wheel",
326
+ "touchstart"
327
+ ], k = i ?? window;
328
+ return y.forEach((p) => k.addEventListener(p, h, S)), E(), () => {
329
+ g.current && window.clearTimeout(g.current), y.forEach((p) => k.removeEventListener(p, h));
330
+ };
331
+ }, [u, s, i, P]), A(() => {
332
+ if (!s) return;
333
+ const h = (p) => {
334
+ const I = document.getElementById(a);
335
+ I && I.contains(p.target) || (p.stopPropagation(), p.preventDefault());
336
+ }, S = { capture: !0 }, y = [
337
+ "pointerdown",
338
+ "pointerup",
339
+ "pointermove",
340
+ "click",
341
+ "wheel",
342
+ "keydown",
343
+ "keyup",
344
+ "touchstart",
345
+ "touchmove"
346
+ ], k = l === "scoped" ? i ?? window : window;
347
+ return y.forEach((p) => k.addEventListener(p, h, S)), () => y.forEach((p) => k.removeEventListener(p, h, S));
348
+ }, [s, l, a, i]);
349
+ const q = L(
350
+ () => ({ locked: s, lock: W, unlock: F, setIdleMs: b }),
351
+ [s]
352
+ );
353
+ return /* @__PURE__ */ V(_.Provider, { value: q, children: [
354
+ /* @__PURE__ */ d(
355
+ "div",
356
+ {
357
+ style: { width: "100%", height: "100%" },
358
+ ...s ? { inert: "" } : {},
359
+ ...s ? { "aria-hidden": !0 } : {},
360
+ children: e
361
+ }
362
+ ),
363
+ s && /* @__PURE__ */ d(
364
+ Y,
365
+ {
366
+ onUnlock: F,
367
+ overlayId: a,
368
+ overlayPosition: m
369
+ }
370
+ )
371
+ ] });
372
+ }, Y = ({
373
+ onUnlock: e,
374
+ overlayId: t = "lock-overlay-root",
375
+ overlayPosition: o = "fixed"
376
+ }) => {
377
+ const [n] = w(4), [r, i] = w("");
378
+ return /* @__PURE__ */ d(
379
+ "div",
380
+ {
381
+ id: t,
382
+ "aria-modal": "true",
383
+ role: "dialog",
384
+ "aria-label": "Locked screen",
385
+ style: {
386
+ position: o,
387
+ inset: 0,
388
+ background: "rgba(12, 14, 18, 0.85)",
389
+ backdropFilter: "blur(4px)",
390
+ display: "grid",
391
+ placeItems: "center",
392
+ zIndex: 9999
393
+ },
394
+ children: /* @__PURE__ */ V("div", { className: "lockscreen-form", style: { width: 420, maxWidth: "92vw" }, children: [
395
+ /* @__PURE__ */ d("div", { className: "lock-icon-wrap", children: /* @__PURE__ */ d("span", { className: "lock-icon-box" }) }),
396
+ /* @__PURE__ */ d("h2", { children: "잠금됨" }),
397
+ /* @__PURE__ */ d("p", { children: "PIN 번호를 입력하세요" }),
398
+ /* @__PURE__ */ d(
399
+ "div",
400
+ {
401
+ className: "lock-ipt-wrap",
402
+ style: { display: "flex", justifyContent: "center" },
403
+ children: /* @__PURE__ */ d(
404
+ X.OTP,
405
+ {
406
+ mask: "*",
407
+ autoFocus: !0,
408
+ length: n,
409
+ value: r,
410
+ onChange: (l) => {
411
+ const a = (l ?? "").replace(/\D/g, "").slice(0, n);
412
+ i(a), a.length === n && e(a);
413
+ }
414
+ }
415
+ )
416
+ }
417
+ )
418
+ ] })
419
+ }
420
+ );
421
+ };
422
+ export {
423
+ he as A,
424
+ ie as B,
425
+ we as C,
426
+ le as S,
427
+ de as a,
428
+ ae as b,
429
+ ue as c,
430
+ me as d,
431
+ pe as e,
432
+ fe as f,
433
+ x as g,
434
+ Ce as h,
435
+ ve as i,
436
+ ge as j,
437
+ Se as k,
438
+ ye as l,
439
+ ke as m,
440
+ xe as n,
441
+ re as o,
442
+ B as p,
443
+ se as q,
444
+ ce as r,
445
+ ne as u
446
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"BwgDetail.d.ts","sourceRoot":"","sources":["../../../src/components/common/BwgDetail.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,QAAA,MAAM,SAAS,GAAI,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,4CAmCvD,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"BwgDetail.d.ts","sourceRoot":"","sources":["../../../src/components/common/BwgDetail.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,QAAA,MAAM,SAAS,GAAI,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,4CAsCvD,CAAC;AAEF,eAAe,SAAS,CAAC"}