@bwg-ui/core 1.0.0 → 1.1.2

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 (315) hide show
  1. package/dist/chunks/AuthContext-CXng9fj0.cjs +2 -0
  2. package/dist/chunks/AuthContext-CXng9fj0.cjs.map +1 -0
  3. package/dist/chunks/AuthContext-Ei2P-z4d.js +53 -0
  4. package/dist/chunks/AuthContext-Ei2P-z4d.js.map +1 -0
  5. package/dist/chunks/BwgLargeUploader-CaH2F8x6.cjs +3 -0
  6. package/dist/chunks/BwgLargeUploader-CaH2F8x6.cjs.map +1 -0
  7. package/dist/chunks/BwgLargeUploader-CwaZ2WwY.js +3316 -0
  8. package/dist/chunks/BwgLargeUploader-CwaZ2WwY.js.map +1 -0
  9. package/dist/chunks/BwgSpace-CnLM4qcg.js +1 -0
  10. package/dist/chunks/BwgSpace-CnLM4qcg.js.map +1 -0
  11. package/dist/chunks/BwgSpace-b0hmM1Ht.cjs +1 -0
  12. package/dist/chunks/BwgSpace-b0hmM1Ht.cjs.map +1 -0
  13. package/dist/chunks/FileUtils-CmK-zHC5.cjs +2 -0
  14. package/dist/chunks/FileUtils-CmK-zHC5.cjs.map +1 -0
  15. package/dist/chunks/FileUtils-DsA-Sw37.js +141 -0
  16. package/dist/chunks/FileUtils-DsA-Sw37.js.map +1 -0
  17. package/dist/chunks/PublicLayout-BiTPwkVq.cjs +36 -0
  18. package/dist/chunks/PublicLayout-BiTPwkVq.cjs.map +1 -0
  19. package/dist/chunks/PublicLayout-g9WMtoZ0.js +139 -0
  20. package/dist/chunks/PublicLayout-g9WMtoZ0.js.map +1 -0
  21. package/dist/chunks/SSOHandler-CpCGcq5k.cjs +184 -0
  22. package/dist/chunks/SSOHandler-CpCGcq5k.cjs.map +1 -0
  23. package/dist/chunks/{QuickServiceToggle-y7esp1kp.js → SSOHandler-CvYiloZ5.js} +14832 -14630
  24. package/dist/chunks/SSOHandler-CvYiloZ5.js.map +1 -0
  25. package/dist/chunks/ScreenProtectContext-ofv2QgMp.cjs +2 -0
  26. package/dist/chunks/ScreenProtectContext-ofv2QgMp.cjs.map +1 -0
  27. package/dist/chunks/ScreenProtectContext-zByHldrr.js +115 -0
  28. package/dist/chunks/ScreenProtectContext-zByHldrr.js.map +1 -0
  29. package/dist/chunks/{ServiceCodeContext-CDZMr3Mm.js → SearchBoxContext-CzDzVCVm.js} +40 -39
  30. package/dist/chunks/SearchBoxContext-CzDzVCVm.js.map +1 -0
  31. package/dist/chunks/SearchBoxContext-mcPWk862.cjs +2 -0
  32. package/dist/chunks/SearchBoxContext-mcPWk862.cjs.map +1 -0
  33. package/dist/chunks/{UtilsContext-B16Gh9LL.cjs → UtilsContext-B6P_aohP.cjs} +2 -1
  34. package/dist/chunks/UtilsContext-B6P_aohP.cjs.map +1 -0
  35. package/dist/chunks/{UtilsContext-BbfZYiMR.js → UtilsContext-B9uAvAVF.js} +10 -9
  36. package/dist/chunks/UtilsContext-B9uAvAVF.js.map +1 -0
  37. package/dist/chunks/_commonjsHelpers-C6fGbg64.js +1 -0
  38. package/dist/chunks/_commonjsHelpers-C6fGbg64.js.map +1 -0
  39. package/dist/chunks/_commonjsHelpers-DwGv2jUC.cjs +1 -0
  40. package/dist/chunks/_commonjsHelpers-DwGv2jUC.cjs.map +1 -0
  41. package/dist/chunks/{codeStore-Dt6j826J.cjs → codeStore-BG8S_mdS.cjs} +2 -1
  42. package/dist/chunks/codeStore-BG8S_mdS.cjs.map +1 -0
  43. package/dist/chunks/{codeStore-bxk_q1sl.js → codeStore-rU4v3QIA.js} +2 -1
  44. package/dist/chunks/codeStore-rU4v3QIA.js.map +1 -0
  45. package/dist/chunks/commonUtils-BV6WFv-z.js +1 -0
  46. package/dist/chunks/commonUtils-BV6WFv-z.js.map +1 -0
  47. package/dist/chunks/commonUtils-L9Jgc5y-.cjs +1 -0
  48. package/dist/chunks/commonUtils-L9Jgc5y-.cjs.map +1 -0
  49. package/dist/chunks/envUtils-C9Gf5aek.js +30 -0
  50. package/dist/chunks/envUtils-C9Gf5aek.js.map +1 -0
  51. package/dist/chunks/envUtils-CduTHoHu.cjs +2 -0
  52. package/dist/chunks/envUtils-CduTHoHu.cjs.map +1 -0
  53. package/dist/chunks/jsx-runtime-CeSfJrVB.cjs +1 -0
  54. package/dist/chunks/jsx-runtime-CeSfJrVB.cjs.map +1 -0
  55. package/dist/chunks/jsx-runtime-Dpn_P65e.js +1 -0
  56. package/dist/chunks/jsx-runtime-Dpn_P65e.js.map +1 -0
  57. package/dist/chunks/menuStore-CBvENehP.cjs +2 -0
  58. package/dist/chunks/menuStore-CBvENehP.cjs.map +1 -0
  59. package/dist/chunks/{favoriteStore-CguRSEcH.js → menuStore-CvQrMo35.js} +137 -123
  60. package/dist/chunks/menuStore-CvQrMo35.js.map +1 -0
  61. package/dist/chunks/{popupStore-CVD8SPTa.cjs → popupStore--hKZUZcO.cjs} +2 -1
  62. package/dist/chunks/popupStore--hKZUZcO.cjs.map +1 -0
  63. package/dist/chunks/{popupStore-Dp_fqtim.js → popupStore-BFIHOcoZ.js} +2 -1
  64. package/dist/chunks/popupStore-BFIHOcoZ.js.map +1 -0
  65. package/dist/chunks/realFormat-Cha7OTd9.cjs +1 -0
  66. package/dist/chunks/realFormat-Cha7OTd9.cjs.map +1 -0
  67. package/dist/chunks/realFormat-DRGLFabQ.js +1 -0
  68. package/dist/chunks/realFormat-DRGLFabQ.js.map +1 -0
  69. package/dist/chunks/serviceConfig-Cc8jfw_Y.cjs +3 -0
  70. package/dist/chunks/serviceConfig-Cc8jfw_Y.cjs.map +1 -0
  71. package/dist/chunks/{serviceConfig-BJBsdee_.js → serviceConfig-lAlRNVIw.js} +177 -206
  72. package/dist/chunks/serviceConfig-lAlRNVIw.js.map +1 -0
  73. package/dist/components/common/BwgButtonGroup.d.ts +1 -0
  74. package/dist/components/common/BwgButtonGroup.d.ts.map +1 -0
  75. package/dist/components/common/BwgCmptArea.d.ts +85 -6
  76. package/dist/components/common/BwgCmptArea.d.ts.map +1 -0
  77. package/dist/components/common/BwgCol.d.ts +20 -0
  78. package/dist/components/common/BwgCol.d.ts.map +1 -0
  79. package/dist/components/common/BwgConfigProvider.d.ts +3 -1
  80. package/dist/components/common/BwgConfigProvider.d.ts.map +1 -0
  81. package/dist/components/common/BwgDrawer.d.ts +1 -0
  82. package/dist/components/common/BwgDrawer.d.ts.map +1 -0
  83. package/dist/components/common/BwgGrid.d.ts +10 -4
  84. package/dist/components/common/BwgGrid.d.ts.map +1 -0
  85. package/dist/components/common/BwgInfoArea.d.ts +3 -1
  86. package/dist/components/common/BwgInfoArea.d.ts.map +1 -0
  87. package/dist/components/common/BwgPopup.d.ts +1 -0
  88. package/dist/components/common/BwgPopup.d.ts.map +1 -0
  89. package/dist/components/common/BwgRow.d.ts +20 -0
  90. package/dist/components/common/BwgRow.d.ts.map +1 -0
  91. package/dist/components/common/BwgSpace.d.ts +1 -0
  92. package/dist/components/common/BwgSpace.d.ts.map +1 -0
  93. package/dist/components/common/BwgTable.d.ts +1 -0
  94. package/dist/components/common/BwgTable.d.ts.map +1 -0
  95. package/dist/components/common/BwgTabs.d.ts +1 -0
  96. package/dist/components/common/BwgTabs.d.ts.map +1 -0
  97. package/dist/components/common/BwgTitleBox.d.ts +6 -1
  98. package/dist/components/common/BwgTitleBox.d.ts.map +1 -0
  99. package/dist/components/common/BwgView.d.ts +3 -13
  100. package/dist/components/common/BwgView.d.ts.map +1 -0
  101. package/dist/components/common/ContentBox.d.ts +1 -0
  102. package/dist/components/common/ContentBox.d.ts.map +1 -0
  103. package/dist/components/common/ContentLayOut.d.ts +1 -0
  104. package/dist/components/common/ContentLayOut.d.ts.map +1 -0
  105. package/dist/components/common/GlobalConfigProvider.d.ts +1 -0
  106. package/dist/components/common/GlobalConfigProvider.d.ts.map +1 -0
  107. package/dist/components/common/QuickServiceToggle.d.ts +1 -0
  108. package/dist/components/common/QuickServiceToggle.d.ts.map +1 -0
  109. package/dist/components/common/SSOHandler.d.ts +3 -0
  110. package/dist/components/common/SSOHandler.d.ts.map +1 -0
  111. package/dist/components/common/SearchBox.d.ts +60 -7
  112. package/dist/components/common/SearchBox.d.ts.map +1 -0
  113. package/dist/components/common/index.cjs +2 -1
  114. package/dist/components/common/index.cjs.map +1 -0
  115. package/dist/components/common/index.d.ts +20 -16
  116. package/dist/components/common/index.d.ts.map +1 -0
  117. package/dist/components/common/index.js +21 -17
  118. package/dist/components/common/index.js.map +1 -0
  119. package/dist/components/core/BwgButton.d.ts +1 -0
  120. package/dist/components/core/BwgButton.d.ts.map +1 -0
  121. package/dist/components/core/BwgCheck.d.ts +1 -0
  122. package/dist/components/core/BwgCheck.d.ts.map +1 -0
  123. package/dist/components/core/BwgCheckList.d.ts +1 -0
  124. package/dist/components/core/BwgCheckList.d.ts.map +1 -0
  125. package/dist/components/core/BwgDatePicker.d.ts +1 -0
  126. package/dist/components/core/BwgDatePicker.d.ts.map +1 -0
  127. package/dist/components/core/BwgForm.d.ts +1 -0
  128. package/dist/components/core/BwgForm.d.ts.map +1 -0
  129. package/dist/components/core/BwgFormItem.d.ts +1 -0
  130. package/dist/components/core/BwgFormItem.d.ts.map +1 -0
  131. package/dist/components/core/BwgInput.d.ts +1 -0
  132. package/dist/components/core/BwgInput.d.ts.map +1 -0
  133. package/dist/components/core/BwgLargeUploader.d.ts +5 -1
  134. package/dist/components/core/BwgLargeUploader.d.ts.map +1 -0
  135. package/dist/components/core/BwgMaskedInput.d.ts +1 -0
  136. package/dist/components/core/BwgMaskedInput.d.ts.map +1 -0
  137. package/dist/components/core/BwgMaskedPicker.d.ts +1 -0
  138. package/dist/components/core/BwgMaskedPicker.d.ts.map +1 -0
  139. package/dist/components/core/BwgMultiSelect.d.ts +1 -0
  140. package/dist/components/core/BwgMultiSelect.d.ts.map +1 -0
  141. package/dist/components/core/BwgNumber.d.ts +1 -0
  142. package/dist/components/core/BwgNumber.d.ts.map +1 -0
  143. package/dist/components/core/BwgRadio.d.ts +1 -0
  144. package/dist/components/core/BwgRadio.d.ts.map +1 -0
  145. package/dist/components/core/BwgRangePicker.d.ts +1 -0
  146. package/dist/components/core/BwgRangePicker.d.ts.map +1 -0
  147. package/dist/components/core/BwgSearch.d.ts +5 -0
  148. package/dist/components/core/BwgSearch.d.ts.map +1 -0
  149. package/dist/components/core/BwgSelect.d.ts +1 -0
  150. package/dist/components/core/BwgSelect.d.ts.map +1 -0
  151. package/dist/components/core/BwgTextArea.d.ts +1 -0
  152. package/dist/components/core/BwgTextArea.d.ts.map +1 -0
  153. package/dist/components/core/BwgUploader.d.ts +31 -7
  154. package/dist/components/core/BwgUploader.d.ts.map +1 -0
  155. package/dist/components/core/index.cjs +2 -1
  156. package/dist/components/core/index.cjs.map +1 -0
  157. package/dist/components/core/index.d.ts +1 -0
  158. package/dist/components/core/index.d.ts.map +1 -0
  159. package/dist/components/core/index.js +2 -1
  160. package/dist/components/core/index.js.map +1 -0
  161. package/dist/components/guide/BwgComponentGuide.d.ts +1 -0
  162. package/dist/components/guide/BwgComponentGuide.d.ts.map +1 -0
  163. package/dist/components/guide/BwgDeveloperGuide.d.ts +1 -0
  164. package/dist/components/guide/BwgDeveloperGuide.d.ts.map +1 -0
  165. package/dist/components/guide/index.cjs +1 -0
  166. package/dist/components/guide/index.cjs.map +1 -0
  167. package/dist/components/guide/index.d.ts +1 -0
  168. package/dist/components/guide/index.d.ts.map +1 -0
  169. package/dist/components/guide/index.js +1 -0
  170. package/dist/components/guide/index.js.map +1 -0
  171. package/dist/components/layout/ProgressOverlay.d.ts +11 -0
  172. package/dist/components/layout/ProgressOverlay.d.ts.map +1 -0
  173. package/dist/components/layout/ProtectLayout.d.ts +7 -0
  174. package/dist/components/layout/ProtectLayout.d.ts.map +1 -0
  175. package/dist/components/layout/PublicLayout.d.ts +7 -0
  176. package/dist/components/layout/PublicLayout.d.ts.map +1 -0
  177. package/dist/components/layout/index.cjs +2 -0
  178. package/dist/components/layout/index.cjs.map +1 -0
  179. package/dist/components/layout/index.d.ts +4 -0
  180. package/dist/components/layout/index.d.ts.map +1 -0
  181. package/dist/components/layout/index.js +7 -0
  182. package/dist/components/layout/index.js.map +1 -0
  183. package/dist/index.cjs +2 -1
  184. package/dist/index.cjs.map +1 -0
  185. package/dist/index.d.ts +2 -0
  186. package/dist/index.d.ts.map +1 -0
  187. package/dist/index.js +305 -289
  188. package/dist/index.js.map +1 -0
  189. package/dist/provider/contexts/AuthContext.d.ts +13 -0
  190. package/dist/provider/contexts/AuthContext.d.ts.map +1 -0
  191. package/dist/provider/contexts/CommonCodeContext.d.ts +6 -5
  192. package/dist/provider/contexts/CommonCodeContext.d.ts.map +1 -0
  193. package/dist/provider/contexts/ScreenProtectContext.d.ts +22 -0
  194. package/dist/provider/contexts/ScreenProtectContext.d.ts.map +1 -0
  195. package/dist/provider/contexts/SearchBoxContext.d.ts +1 -0
  196. package/dist/provider/contexts/SearchBoxContext.d.ts.map +1 -0
  197. package/dist/provider/contexts/ServiceCodeContext.d.ts +1 -0
  198. package/dist/provider/contexts/ServiceCodeContext.d.ts.map +1 -0
  199. package/dist/provider/contexts/UtilsContext.d.ts +1 -0
  200. package/dist/provider/contexts/UtilsContext.d.ts.map +1 -0
  201. package/dist/provider/contexts/index.d.ts +3 -0
  202. package/dist/provider/contexts/index.d.ts.map +1 -0
  203. package/dist/provider/hooks/index.d.ts +1 -0
  204. package/dist/provider/hooks/index.d.ts.map +1 -0
  205. package/dist/provider/hooks/usePopup.d.ts +2 -1
  206. package/dist/provider/hooks/usePopup.d.ts.map +1 -0
  207. package/dist/provider/hooks/useViewState.d.ts +1 -0
  208. package/dist/provider/hooks/useViewState.d.ts.map +1 -0
  209. package/dist/provider/index.cjs +2 -1
  210. package/dist/provider/index.cjs.map +1 -0
  211. package/dist/provider/index.d.ts +1 -0
  212. package/dist/provider/index.d.ts.map +1 -0
  213. package/dist/provider/index.js +26 -19
  214. package/dist/provider/index.js.map +1 -0
  215. package/dist/public/realgrid/css/realgrid-style-custom.css +643 -0
  216. package/dist/public/realgrid/css/realgrid-style.css +1902 -0
  217. package/dist/public/realgrid/images/ico_c.png +0 -0
  218. package/dist/public/realgrid/images/ico_d.png +0 -0
  219. package/dist/public/realgrid/images/ico_jp.png +0 -0
  220. package/dist/public/realgrid/images/ico_mp.png +0 -0
  221. package/dist/public/realgrid/images/ico_n.png +0 -0
  222. package/dist/public/realgrid/images/ico_nd.png +0 -0
  223. package/dist/public/realgrid/images/ico_p.png +0 -0
  224. package/dist/public/realgrid/images/ico_r.png +0 -0
  225. package/dist/public/realgrid/images/ico_sp.png +0 -0
  226. package/dist/public/realgrid/images/ico_u.png +0 -0
  227. package/dist/public/realgrid/images/ico_wt.png +0 -0
  228. package/dist/stores/codeStore.d.ts +4 -3
  229. package/dist/stores/codeStore.d.ts.map +1 -0
  230. package/dist/stores/favoriteStore.d.ts +1 -0
  231. package/dist/stores/favoriteStore.d.ts.map +1 -0
  232. package/dist/stores/index.cjs +2 -1
  233. package/dist/stores/index.cjs.map +1 -0
  234. package/dist/stores/index.d.ts +1 -0
  235. package/dist/stores/index.d.ts.map +1 -0
  236. package/dist/stores/index.js +6 -5
  237. package/dist/stores/index.js.map +1 -0
  238. package/dist/stores/menuStore.d.ts +1 -0
  239. package/dist/stores/menuStore.d.ts.map +1 -0
  240. package/dist/stores/popupStore.d.ts +1 -0
  241. package/dist/stores/popupStore.d.ts.map +1 -0
  242. package/dist/stores/userStore.d.ts +4 -3
  243. package/dist/stores/userStore.d.ts.map +1 -0
  244. package/dist/styles/assets/images/backgrounds/krx_login_bg.png +0 -0
  245. package/dist/styles/assets/images/contents/icon/ico-lockscreen.svg +44 -0
  246. package/dist/styles/assets/images/logos/krx-logo-full.svg +35 -0
  247. package/dist/styles/components.css +130 -17
  248. package/dist/styles/global.css +19 -0
  249. package/dist/styles/layout.css +108 -35
  250. package/dist/styles/login.css +39 -33
  251. package/dist/styles/variables.css +221 -5
  252. package/dist/types/global.d.ts +2 -0
  253. package/dist/utils/FileUtils.d.ts +8 -0
  254. package/dist/utils/FileUtils.d.ts.map +1 -0
  255. package/dist/utils/apiUtils.d.ts +1 -0
  256. package/dist/utils/apiUtils.d.ts.map +1 -0
  257. package/dist/utils/arrayUtils.d.ts +1 -0
  258. package/dist/utils/arrayUtils.d.ts.map +1 -0
  259. package/dist/utils/commonUtils.d.ts +1 -0
  260. package/dist/utils/commonUtils.d.ts.map +1 -0
  261. package/dist/utils/cookieUtils.d.ts +1 -0
  262. package/dist/utils/cookieUtils.d.ts.map +1 -0
  263. package/dist/utils/dateUtils.d.ts +1 -0
  264. package/dist/utils/dateUtils.d.ts.map +1 -0
  265. package/dist/utils/envUtils.d.ts +9 -0
  266. package/dist/utils/envUtils.d.ts.map +1 -0
  267. package/dist/utils/imageUtils.d.ts +1 -0
  268. package/dist/utils/imageUtils.d.ts.map +1 -0
  269. package/dist/utils/index.cjs +2 -1
  270. package/dist/utils/index.cjs.map +1 -0
  271. package/dist/utils/index.d.ts +2 -0
  272. package/dist/utils/index.d.ts.map +1 -0
  273. package/dist/utils/index.js +106 -103
  274. package/dist/utils/index.js.map +1 -0
  275. package/dist/utils/messageUtils.d.ts +1 -0
  276. package/dist/utils/messageUtils.d.ts.map +1 -0
  277. package/dist/utils/notificationUtils.d.ts +1 -0
  278. package/dist/utils/notificationUtils.d.ts.map +1 -0
  279. package/dist/utils/objectUtils.d.ts +1 -0
  280. package/dist/utils/objectUtils.d.ts.map +1 -0
  281. package/dist/utils/realFormat.d.ts +1 -0
  282. package/dist/utils/realFormat.d.ts.map +1 -0
  283. package/dist/utils/serviceConfig.d.ts +1 -0
  284. package/dist/utils/serviceConfig.d.ts.map +1 -0
  285. package/dist/utils/stringUtils.d.ts +1 -0
  286. package/dist/utils/stringUtils.d.ts.map +1 -0
  287. package/dist/utils/userUtils.d.ts +2 -1
  288. package/dist/utils/userUtils.d.ts.map +1 -0
  289. package/package.json +40 -37
  290. package/dist/chunks/BwgLargeUploader-ByN1XWV4.js +0 -809
  291. package/dist/chunks/BwgLargeUploader-CU0-MVk4.cjs +0 -1
  292. package/dist/chunks/QuickServiceToggle-CiCuWfCF.cjs +0 -183
  293. package/dist/chunks/ServiceCodeContext--ZnMtjzD.cjs +0 -1
  294. package/dist/chunks/favoriteStore-TgeeY32l.cjs +0 -1
  295. package/dist/chunks/messageUtils-9DXOwada.js +0 -117
  296. package/dist/chunks/messageUtils-RjJD_ArW.cjs +0 -1
  297. package/dist/chunks/serviceConfig-Cr2P4yr4.cjs +0 -2
  298. package/dist/public/styles/assets/images/contents/icon/ico-business-trip.svg +0 -21
  299. package/dist/public/styles/assets/images/contents/icon/ico-holiday.svg +0 -23
  300. package/dist/public/styles/assets/images/contents/icon/ico-menu-help.svg +0 -5
  301. package/dist/public/styles/assets/images/contents/icon/ico-overtime.svg +0 -17
  302. package/dist/public/styles/assets/images/contents/icon/ico-quick-tab-move.svg +0 -8
  303. package/dist/public/styles/assets/images/contents/icon/quick tab-text.svg +0 -4
  304. package/dist/public/styles/assets/images/contents/icon/quick-tab-text.svg +0 -4
  305. package/dist/public/test.txt +0 -0
  306. package/dist/styles/assets/images/contents/icon/quick tab-text.svg +0 -4
  307. package/dist/test.txt +0 -0
  308. package/public/styles/assets/images/contents/icon/ico-business-trip.svg +0 -21
  309. package/public/styles/assets/images/contents/icon/ico-holiday.svg +0 -23
  310. package/public/styles/assets/images/contents/icon/ico-menu-help.svg +0 -5
  311. package/public/styles/assets/images/contents/icon/ico-overtime.svg +0 -17
  312. package/public/styles/assets/images/contents/icon/ico-quick-tab-move.svg +0 -8
  313. package/public/styles/assets/images/contents/icon/quick tab-text.svg +0 -4
  314. package/public/styles/assets/images/contents/icon/quick-tab-text.svg +0 -4
  315. package/public/test.txt +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";const o=require("./jsx-runtime-CeSfJrVB.cjs"),L=require("antd"),n=require("react"),k=n.createContext(null),I=()=>{const s=n.useContext(k);if(!s)throw new Error("useLock must be used within ScreenProtectProvider");return s},P=({children:s,idleMs:a=1e4,onUnlock:x,persistLocked:c=!0,storageKey:i="inactivityLocked"})=>{const m=c&&typeof window<"u"&&window.localStorage.getItem(i)==="1",[e,p]=n.useState(m),[f,j]=n.useState(a),u=n.useRef(null),E=n.useRef(null),y=()=>{try{c&&window.localStorage.setItem(i,"1")}catch{}p(!0)},v=async r=>{if(!(x&&!await x(r))){try{c&&window.localStorage.removeItem(i)}catch{}p(!1),w()}},R=()=>{try{c&&window.localStorage.setItem(i,"1")}catch{}p(!0)},w=()=>{u.current&&window.clearTimeout(u.current),u.current=window.setTimeout(()=>{R()},f)};n.useEffect(()=>{const r=()=>{e||w()},l={passive:!0},d=["pointermove","pointerdown","keydown","wheel","touchstart"];return d.forEach(t=>window.addEventListener(t,r,l)),w(),()=>{u.current&&window.clearTimeout(u.current),d.forEach(t=>window.removeEventListener(t,r))}},[f,e]),n.useEffect(()=>{if(!e)return;const r=t=>{const h=document.getElementById("lock-overlay-root");h&&h.contains(t.target)||(t.stopPropagation(),t.preventDefault())},l={capture:!0},d=["pointerdown","pointerup","pointermove","click","wheel","keydown","keyup","touchstart","touchmove"];return d.forEach(t=>window.addEventListener(t,r,l)),()=>d.forEach(t=>window.removeEventListener(t,r,l))},[e]);const g=n.useMemo(()=>({locked:e,lock:y,unlock:v,setIdleMs:j}),[e]);return o.jsxRuntimeExports.jsxs(k.Provider,{value:g,children:[o.jsxRuntimeExports.jsx("div",{ref:E,...e?{inert:""}:{},...e?{"aria-hidden":!0}:{},children:s}),e&&o.jsxRuntimeExports.jsx(S,{onUnlock:v})]})},S=({onUnlock:s})=>{const[a,x]=n.useState(4),[c,i]=n.useState("");return o.jsxRuntimeExports.jsx("div",{id:"lock-overlay-root","aria-modal":"true",role:"dialog","aria-label":"Locked screen",style:{position:"fixed",inset:0,background:"rgba(12, 14, 18, 0.85)",backdropFilter:"blur(4px)",display:"grid",placeItems:"center",zIndex:9999},children:o.jsxRuntimeExports.jsxs("div",{className:"lockscreen-form",style:{width:420,maxWidth:"92vw"},children:[o.jsxRuntimeExports.jsx("div",{className:"lock-icon-wrap",children:o.jsxRuntimeExports.jsx("span",{className:"lock-icon-box"})}),o.jsxRuntimeExports.jsx("h2",{children:" 잠금됨"}),o.jsxRuntimeExports.jsx("p",{children:"PIN 번호를 입력하세요"}),o.jsxRuntimeExports.jsx("div",{className:"lock-ipt-wrap",style:{display:"flex",justifyContent:"center"},children:o.jsxRuntimeExports.jsx(L.Input.OTP,{mask:"*",autoFocus:!0,length:a,value:c,onChange:m=>{const e=(m??"").replace(/\D/g,"").slice(0,a);i(e),e.length===a&&s(e)}})})]})})};exports.ScreenProtectProvider=P;exports.useLock=I;
2
+ //# sourceMappingURL=ScreenProtectContext-ofv2QgMp.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenProtectContext-ofv2QgMp.cjs","sources":["../../src/provider/contexts/ScreenProtectContext.tsx"],"sourcesContent":["import { UnlockTwoTone } from \"@ant-design/icons\";\r\nimport { Input } from \"antd\";\r\nimport React, { createContext, useContext, useEffect, useMemo, useRef, useState } from \"react\";\r\n\r\n/**\r\n * ScreenProtectProvider + SlideToUnlock demo\r\n * - Idle timeout: 10s (changeable via buttons)\r\n * - Click \"Lock now\" to force-lock\r\n */\r\n\r\n// ===================== Lock Context =====================\r\ntype LockContextValue = {\r\n locked: boolean;\r\n lock: () => void;\r\n unlock: () => void;\r\n setIdleMs: (ms: number) => void;\r\n};\r\n\r\nconst LockContext = createContext<LockContextValue | null>(null);\r\n\r\nexport const useLock = () => {\r\n const ctx = useContext(LockContext);\r\n if (!ctx) throw new Error(\"useLock must be used within ScreenProtectProvider\");\r\n return ctx;\r\n};\r\n\r\n// ===================== Provider =====================\r\nexport const ScreenProtectProvider: React.FC<{\r\n children: React.ReactNode;\r\n idleMs?: number;\r\n onUnlock?: (pin?: string) => Promise<boolean> | boolean;\r\n persistLocked?: boolean;\r\n storageKey?: string;\r\n }> = ({ children, idleMs = 10_000, onUnlock, persistLocked = true, storageKey = \"inactivityLocked\" }) => {\r\n const initialLocked = persistLocked && typeof window !== \"undefined\" && window.localStorage.getItem(storageKey) === \"1\";\r\n const [locked, setLocked] = useState(initialLocked);\r\n const [idle, setIdle] = useState(idleMs);\r\n const timerRef = useRef<number | null>(null);\r\n const appRef = useRef<HTMLDivElement | null>(null);\r\n \r\n const lock = () => {\r\n try { if (persistLocked) window.localStorage.setItem(storageKey, \"1\"); } catch {}\r\n setLocked(true);\r\n };\r\n\r\n const unlock = async (pin?: string) => {\r\n if (onUnlock) {\r\n const ok = await onUnlock(pin);\r\n if (!ok) return;\r\n }\r\n try { if (persistLocked) window.localStorage.removeItem(storageKey); } catch {}\r\n setLocked(false);\r\n resetTimer();\r\n };\r\n\r\n const doLock = () => {\r\n try { if (persistLocked) window.localStorage.setItem(storageKey, \"1\"); } catch {}\r\n setLocked(true);\r\n };\r\n\r\n // 3) 타이머 콜백에서도 setLocked(true) 대신 doLock() 호출\r\n const resetTimer = () => {\r\n if (timerRef.current) window.clearTimeout(timerRef.current);\r\n timerRef.current = window.setTimeout(() => {\r\n doLock(); // ← 여기!\r\n }, idle);\r\n };\r\n \r\n useEffect(() => {\r\n const onActivity = () => {\r\n if (!locked) resetTimer();\r\n };\r\n const opts = { passive: true } as AddEventListenerOptions;\r\n const events = [\"pointermove\", \"pointerdown\", \"keydown\", \"wheel\", \"touchstart\"];\r\n events.forEach((e) => window.addEventListener(e, onActivity, opts));\r\n resetTimer();\r\n return () => {\r\n if (timerRef.current) window.clearTimeout(timerRef.current);\r\n events.forEach((e) => window.removeEventListener(e, onActivity));\r\n };\r\n }, [idle, locked]);\r\n \r\n // Global capture-phase guard while locked: block events outside overlay\r\n useEffect(() => {\r\n if (!locked) return;\r\n const stop = (e: Event) => {\r\n const overlay = document.getElementById(\"lock-overlay-root\");\r\n if (overlay && overlay.contains(e.target as Node)) return;\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n const opts = { capture: true } as AddEventListenerOptions;\r\n const evs = [\r\n \"pointerdown\",\"pointerup\",\"pointermove\",\"click\",\"wheel\",\"keydown\",\"keyup\",\"touchstart\",\"touchmove\"\r\n ];\r\n evs.forEach((t) => window.addEventListener(t, stop, opts));\r\n return () => evs.forEach((t) => window.removeEventListener(t, stop, opts));\r\n }, [locked]);\r\n \r\n\r\n const value = useMemo(() => ({ locked, lock, unlock, setIdleMs: setIdle }), [locked]);\r\n \r\n return (\r\n <LockContext.Provider value={value}>\r\n <div\r\n ref={appRef}\r\n {...(locked ? ({ inert: \"\" } as any) : {})}\r\n {...(locked ? { \"aria-hidden\": true } : {})}\r\n >\r\n {children}\r\n </div>\r\n {locked && <LockOverlay onUnlock={unlock} />}\r\n </LockContext.Provider>\r\n );\r\n };\r\n\r\nconst LockOverlay: React.FC<{ onUnlock: (pin?: string) => void }> = ({ onUnlock }) => {\r\n const [pinLen, setPinLen] = useState(4); // TODO: later update via service call\r\n const [val, setVal] = useState(\"\");\r\n return (\r\n <div\r\n id=\"lock-overlay-root\" aria-modal=\"true\"\r\n role=\"dialog\"\r\n aria-label=\"Locked screen\"\r\n style={{\r\n position: \"fixed\",\r\n inset: 0,\r\n background: \"rgba(12, 14, 18, 0.85)\",\r\n backdropFilter: \"blur(4px)\",\r\n display: \"grid\",\r\n placeItems: \"center\",\r\n zIndex: 9999,\r\n }}\r\n >\r\n <div className=\"lockscreen-form\" style={{ width: 420, maxWidth: \"92vw\" }}>\r\n <div className=\"lock-icon-wrap\">\r\n <span className=\"lock-icon-box\"></span>\r\n </div>\r\n <h2> 잠금됨</h2>\r\n <p>\r\n PIN 번호를 입력하세요\r\n </p>\r\n <div className=\"lock-ipt-wrap\" style={{ display: \"flex\", justifyContent: \"center\" }}>\r\n <Input.OTP\r\n mask={\"*\"}\r\n autoFocus\r\n length={pinLen}\r\n value={val}\r\n onChange={(v) => {\r\n const next = (v ?? \"\").replace(/\\D/g, \"\").slice(0, pinLen);\r\n setVal(next);\r\n if (next.length === pinLen) {\r\n onUnlock(next);\r\n }\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n };"],"names":["LockContext","createContext","useLock","ctx","useContext","ScreenProtectProvider","children","idleMs","onUnlock","persistLocked","storageKey","initialLocked","locked","setLocked","useState","idle","setIdle","timerRef","useRef","appRef","lock","unlock","pin","resetTimer","doLock","useEffect","onActivity","opts","events","e","stop","overlay","evs","value","useMemo","jsxs","jsx","LockOverlay","pinLen","setPinLen","val","setVal","Input","v","next"],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import { j as o } from "./jsx-runtime-Dpn_P65e.js";
2
+ import { Input as S } from "antd";
3
+ import { useContext as b, createContext as C, useState as u, useRef as k, useEffect as y, useMemo as N } from "react";
4
+ const j = C(null), M = () => {
5
+ const r = b(j);
6
+ if (!r) throw new Error("useLock must be used within ScreenProtectProvider");
7
+ return r;
8
+ }, O = ({ children: r, idleMs: s = 1e4, onUnlock: w, persistLocked: c = !0, storageKey: i = "inactivityLocked" }) => {
9
+ const m = c && typeof window < "u" && window.localStorage.getItem(i) === "1", [e, p] = u(m), [v, g] = u(s), a = k(null), E = k(null), L = () => {
10
+ try {
11
+ c && window.localStorage.setItem(i, "1");
12
+ } catch {
13
+ }
14
+ p(!0);
15
+ }, h = async (n) => {
16
+ if (!(w && !await w(n))) {
17
+ try {
18
+ c && window.localStorage.removeItem(i);
19
+ } catch {
20
+ }
21
+ p(!1), f();
22
+ }
23
+ }, I = () => {
24
+ try {
25
+ c && window.localStorage.setItem(i, "1");
26
+ } catch {
27
+ }
28
+ p(!0);
29
+ }, f = () => {
30
+ a.current && window.clearTimeout(a.current), a.current = window.setTimeout(() => {
31
+ I();
32
+ }, v);
33
+ };
34
+ y(() => {
35
+ const n = () => {
36
+ e || f();
37
+ }, l = { passive: !0 }, d = ["pointermove", "pointerdown", "keydown", "wheel", "touchstart"];
38
+ return d.forEach((t) => window.addEventListener(t, n, l)), f(), () => {
39
+ a.current && window.clearTimeout(a.current), d.forEach((t) => window.removeEventListener(t, n));
40
+ };
41
+ }, [v, e]), y(() => {
42
+ if (!e) return;
43
+ const n = (t) => {
44
+ const x = document.getElementById("lock-overlay-root");
45
+ x && x.contains(t.target) || (t.stopPropagation(), t.preventDefault());
46
+ }, l = { capture: !0 }, d = [
47
+ "pointerdown",
48
+ "pointerup",
49
+ "pointermove",
50
+ "click",
51
+ "wheel",
52
+ "keydown",
53
+ "keyup",
54
+ "touchstart",
55
+ "touchmove"
56
+ ];
57
+ return d.forEach((t) => window.addEventListener(t, n, l)), () => d.forEach((t) => window.removeEventListener(t, n, l));
58
+ }, [e]);
59
+ const P = N(() => ({ locked: e, lock: L, unlock: h, setIdleMs: g }), [e]);
60
+ return /* @__PURE__ */ o.jsxs(j.Provider, { value: P, children: [
61
+ /* @__PURE__ */ o.jsx(
62
+ "div",
63
+ {
64
+ ref: E,
65
+ ...e ? { inert: "" } : {},
66
+ ...e ? { "aria-hidden": !0 } : {},
67
+ children: r
68
+ }
69
+ ),
70
+ e && /* @__PURE__ */ o.jsx(T, { onUnlock: h })
71
+ ] });
72
+ }, T = ({ onUnlock: r }) => {
73
+ const [s, w] = u(4), [c, i] = u("");
74
+ return /* @__PURE__ */ o.jsx(
75
+ "div",
76
+ {
77
+ id: "lock-overlay-root",
78
+ "aria-modal": "true",
79
+ role: "dialog",
80
+ "aria-label": "Locked screen",
81
+ style: {
82
+ position: "fixed",
83
+ inset: 0,
84
+ background: "rgba(12, 14, 18, 0.85)",
85
+ backdropFilter: "blur(4px)",
86
+ display: "grid",
87
+ placeItems: "center",
88
+ zIndex: 9999
89
+ },
90
+ children: /* @__PURE__ */ o.jsxs("div", { className: "lockscreen-form", style: { width: 420, maxWidth: "92vw" }, children: [
91
+ /* @__PURE__ */ o.jsx("div", { className: "lock-icon-wrap", children: /* @__PURE__ */ o.jsx("span", { className: "lock-icon-box" }) }),
92
+ /* @__PURE__ */ o.jsx("h2", { children: " 잠금됨" }),
93
+ /* @__PURE__ */ o.jsx("p", { children: "PIN 번호를 입력하세요" }),
94
+ /* @__PURE__ */ o.jsx("div", { className: "lock-ipt-wrap", style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ o.jsx(
95
+ S.OTP,
96
+ {
97
+ mask: "*",
98
+ autoFocus: !0,
99
+ length: s,
100
+ value: c,
101
+ onChange: (m) => {
102
+ const e = (m ?? "").replace(/\D/g, "").slice(0, s);
103
+ i(e), e.length === s && r(e);
104
+ }
105
+ }
106
+ ) })
107
+ ] })
108
+ }
109
+ );
110
+ };
111
+ export {
112
+ O as S,
113
+ M as u
114
+ };
115
+ //# sourceMappingURL=ScreenProtectContext-zByHldrr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenProtectContext-zByHldrr.js","sources":["../../src/provider/contexts/ScreenProtectContext.tsx"],"sourcesContent":["import { UnlockTwoTone } from \"@ant-design/icons\";\r\nimport { Input } from \"antd\";\r\nimport React, { createContext, useContext, useEffect, useMemo, useRef, useState } from \"react\";\r\n\r\n/**\r\n * ScreenProtectProvider + SlideToUnlock demo\r\n * - Idle timeout: 10s (changeable via buttons)\r\n * - Click \"Lock now\" to force-lock\r\n */\r\n\r\n// ===================== Lock Context =====================\r\ntype LockContextValue = {\r\n locked: boolean;\r\n lock: () => void;\r\n unlock: () => void;\r\n setIdleMs: (ms: number) => void;\r\n};\r\n\r\nconst LockContext = createContext<LockContextValue | null>(null);\r\n\r\nexport const useLock = () => {\r\n const ctx = useContext(LockContext);\r\n if (!ctx) throw new Error(\"useLock must be used within ScreenProtectProvider\");\r\n return ctx;\r\n};\r\n\r\n// ===================== Provider =====================\r\nexport const ScreenProtectProvider: React.FC<{\r\n children: React.ReactNode;\r\n idleMs?: number;\r\n onUnlock?: (pin?: string) => Promise<boolean> | boolean;\r\n persistLocked?: boolean;\r\n storageKey?: string;\r\n }> = ({ children, idleMs = 10_000, onUnlock, persistLocked = true, storageKey = \"inactivityLocked\" }) => {\r\n const initialLocked = persistLocked && typeof window !== \"undefined\" && window.localStorage.getItem(storageKey) === \"1\";\r\n const [locked, setLocked] = useState(initialLocked);\r\n const [idle, setIdle] = useState(idleMs);\r\n const timerRef = useRef<number | null>(null);\r\n const appRef = useRef<HTMLDivElement | null>(null);\r\n \r\n const lock = () => {\r\n try { if (persistLocked) window.localStorage.setItem(storageKey, \"1\"); } catch {}\r\n setLocked(true);\r\n };\r\n\r\n const unlock = async (pin?: string) => {\r\n if (onUnlock) {\r\n const ok = await onUnlock(pin);\r\n if (!ok) return;\r\n }\r\n try { if (persistLocked) window.localStorage.removeItem(storageKey); } catch {}\r\n setLocked(false);\r\n resetTimer();\r\n };\r\n\r\n const doLock = () => {\r\n try { if (persistLocked) window.localStorage.setItem(storageKey, \"1\"); } catch {}\r\n setLocked(true);\r\n };\r\n\r\n // 3) 타이머 콜백에서도 setLocked(true) 대신 doLock() 호출\r\n const resetTimer = () => {\r\n if (timerRef.current) window.clearTimeout(timerRef.current);\r\n timerRef.current = window.setTimeout(() => {\r\n doLock(); // ← 여기!\r\n }, idle);\r\n };\r\n \r\n useEffect(() => {\r\n const onActivity = () => {\r\n if (!locked) resetTimer();\r\n };\r\n const opts = { passive: true } as AddEventListenerOptions;\r\n const events = [\"pointermove\", \"pointerdown\", \"keydown\", \"wheel\", \"touchstart\"];\r\n events.forEach((e) => window.addEventListener(e, onActivity, opts));\r\n resetTimer();\r\n return () => {\r\n if (timerRef.current) window.clearTimeout(timerRef.current);\r\n events.forEach((e) => window.removeEventListener(e, onActivity));\r\n };\r\n }, [idle, locked]);\r\n \r\n // Global capture-phase guard while locked: block events outside overlay\r\n useEffect(() => {\r\n if (!locked) return;\r\n const stop = (e: Event) => {\r\n const overlay = document.getElementById(\"lock-overlay-root\");\r\n if (overlay && overlay.contains(e.target as Node)) return;\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n const opts = { capture: true } as AddEventListenerOptions;\r\n const evs = [\r\n \"pointerdown\",\"pointerup\",\"pointermove\",\"click\",\"wheel\",\"keydown\",\"keyup\",\"touchstart\",\"touchmove\"\r\n ];\r\n evs.forEach((t) => window.addEventListener(t, stop, opts));\r\n return () => evs.forEach((t) => window.removeEventListener(t, stop, opts));\r\n }, [locked]);\r\n \r\n\r\n const value = useMemo(() => ({ locked, lock, unlock, setIdleMs: setIdle }), [locked]);\r\n \r\n return (\r\n <LockContext.Provider value={value}>\r\n <div\r\n ref={appRef}\r\n {...(locked ? ({ inert: \"\" } as any) : {})}\r\n {...(locked ? { \"aria-hidden\": true } : {})}\r\n >\r\n {children}\r\n </div>\r\n {locked && <LockOverlay onUnlock={unlock} />}\r\n </LockContext.Provider>\r\n );\r\n };\r\n\r\nconst LockOverlay: React.FC<{ onUnlock: (pin?: string) => void }> = ({ onUnlock }) => {\r\n const [pinLen, setPinLen] = useState(4); // TODO: later update via service call\r\n const [val, setVal] = useState(\"\");\r\n return (\r\n <div\r\n id=\"lock-overlay-root\" aria-modal=\"true\"\r\n role=\"dialog\"\r\n aria-label=\"Locked screen\"\r\n style={{\r\n position: \"fixed\",\r\n inset: 0,\r\n background: \"rgba(12, 14, 18, 0.85)\",\r\n backdropFilter: \"blur(4px)\",\r\n display: \"grid\",\r\n placeItems: \"center\",\r\n zIndex: 9999,\r\n }}\r\n >\r\n <div className=\"lockscreen-form\" style={{ width: 420, maxWidth: \"92vw\" }}>\r\n <div className=\"lock-icon-wrap\">\r\n <span className=\"lock-icon-box\"></span>\r\n </div>\r\n <h2> 잠금됨</h2>\r\n <p>\r\n PIN 번호를 입력하세요\r\n </p>\r\n <div className=\"lock-ipt-wrap\" style={{ display: \"flex\", justifyContent: \"center\" }}>\r\n <Input.OTP\r\n mask={\"*\"}\r\n autoFocus\r\n length={pinLen}\r\n value={val}\r\n onChange={(v) => {\r\n const next = (v ?? \"\").replace(/\\D/g, \"\").slice(0, pinLen);\r\n setVal(next);\r\n if (next.length === pinLen) {\r\n onUnlock(next);\r\n }\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n };"],"names":["LockContext","createContext","useLock","ctx","useContext","ScreenProtectProvider","children","idleMs","onUnlock","persistLocked","storageKey","initialLocked","locked","setLocked","useState","idle","setIdle","timerRef","useRef","appRef","lock","unlock","pin","resetTimer","doLock","useEffect","onActivity","opts","events","e","stop","overlay","evs","value","useMemo","jsxs","jsx","LockOverlay","pinLen","setPinLen","val","setVal","Input","v","next"],"mappings":"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"}
@@ -1,30 +1,7 @@
1
1
  import { j as u } from "./jsx-runtime-Dpn_P65e.js";
2
- import { useRef as m, createContext as i, useContext as S, useEffect as x } from "react";
3
- import { an as f } from "./serviceConfig-BJBsdee_.js";
4
- const l = i(null), h = ({
5
- children: o
6
- }) => {
7
- const e = m(null), v = {
8
- searchBoxRef: e,
9
- getFormData: () => e.current?.getFormData() || {},
10
- setFormData: (C) => {
11
- e.current?.setFormData(C);
12
- },
13
- resetForm: () => {
14
- e.current?.resetForm();
15
- },
16
- validateForm: async () => await e.current?.validateForm() || {
17
- success: !1,
18
- error: null
19
- }
20
- };
21
- return /* @__PURE__ */ u.jsx(l.Provider, { value: v, children: o });
22
- }, E = () => {
23
- const o = S(l);
24
- if (!o)
25
- throw new Error("useSearchBox must be used within a SearchBoxProvider");
26
- return o;
27
- }, s = {
2
+ import { useEffect as m, createContext as i, useContext as S, useRef as x } from "react";
3
+ import { an as f } from "./serviceConfig-lAlRNVIw.js";
4
+ const s = {
28
5
  // 권한 관련
29
6
  AUTH_BTNS: "SCMSIGN00202",
30
7
  // 버튼 권한 조회
@@ -38,11 +15,11 @@ const l = i(null), h = ({
38
15
  // 즐겨찾기 관련
39
16
  AUTH_BMRK: "SCMBMRK00101"
40
17
  // 즐겨찾기 관리
41
- }, d = i(null), B = ({
18
+ }, l = i(null), h = ({
42
19
  children: o,
43
20
  serviceCodes: e = {}
44
21
  }) => {
45
- x(() => {
22
+ m(() => {
46
23
  f(e);
47
24
  }, [e]);
48
25
  const a = {
@@ -54,34 +31,58 @@ const l = i(null), h = ({
54
31
  return console.log(`🔧 기본값 사용: ${r} = ${n}`), n;
55
32
  }
56
33
  };
57
- return /* @__PURE__ */ u.jsx(d.Provider, { value: a, children: o });
34
+ return /* @__PURE__ */ u.jsx(l.Provider, { value: a, children: o });
58
35
  }, c = () => {
59
- const o = S(d);
36
+ const o = S(l);
60
37
  if (!o)
61
38
  throw new Error("useServiceCode must be used within a ServiceCodeProvider");
62
39
  return o;
63
- }, D = (o) => {
40
+ }, E = (o) => {
64
41
  const { getServiceCode: e } = c();
65
42
  return e(o);
66
- }, w = () => {
43
+ }, B = () => {
67
44
  const { getServiceCode: o } = c(), e = {};
68
45
  for (const t of Object.keys(s))
69
46
  e[t] = o(t);
70
47
  return e;
71
- }, M = () => {
48
+ }, D = () => {
72
49
  const { getServiceCode: o } = c();
73
50
  console.log("🔧 bwg-core 서비스코드 설정:"), console.log("📋 Provider 설정 > 기본값 순서로 확인");
74
51
  for (const e of Object.keys(s)) {
75
52
  const t = o(e);
76
53
  console.log(` ${e}: ${t}`);
77
54
  }
55
+ }, d = i(null), w = ({
56
+ children: o
57
+ }) => {
58
+ const e = x(null), v = {
59
+ searchBoxRef: e,
60
+ getFormData: () => e.current?.getFormData() || {},
61
+ setFormData: (C) => {
62
+ e.current?.setFormData(C);
63
+ },
64
+ resetForm: () => {
65
+ e.current?.resetForm();
66
+ },
67
+ validateForm: async () => await e.current?.validateForm() || {
68
+ success: !1,
69
+ error: null
70
+ }
71
+ };
72
+ return /* @__PURE__ */ u.jsx(d.Provider, { value: v, children: o });
73
+ }, M = () => {
74
+ const o = S(d);
75
+ if (!o)
76
+ throw new Error("useSearchBox must be used within a SearchBoxProvider");
77
+ return o;
78
78
  };
79
79
  export {
80
- h as S,
81
- B as a,
80
+ w as S,
81
+ h as a,
82
82
  c as b,
83
- D as c,
84
- w as d,
85
- M as e,
86
- E as u
83
+ E as c,
84
+ B as d,
85
+ D as e,
86
+ M as u
87
87
  };
88
+ //# sourceMappingURL=SearchBoxContext-CzDzVCVm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchBoxContext-CzDzVCVm.js","sources":["../../src/provider/contexts/ServiceCodeContext.tsx","../../src/provider/contexts/SearchBoxContext.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode, useEffect } from 'react';\r\nimport { ServiceCodeKey, setServiceCodeOverrides } from '../../utils/serviceConfig';\r\n\r\n// 서비스코드 설정을 위한 Context 타입\r\ninterface ServiceCodeContextType {\r\n serviceCodes: Partial<Record<ServiceCodeKey, string>>;\r\n getServiceCode: (key: ServiceCodeKey) => string;\r\n}\r\n\r\n// 기본 서비스코드 정의\r\nconst DEFAULT_SERVICE_CODES = {\r\n // 권한 관련\r\n AUTH_BTNS: 'SCMSIGN00202', // 버튼 권한 조회\r\n AUTH_MENU: 'SCMSIGN00201', // 메뉴 권한 조회\r\n SRCH_CODE: 'SCMSIGN00301', // 코드 조회\r\n \r\n // 팝업 관련\r\n SRCH_POPU: 'SCMPOPU00101', // 팝업 조회\r\n \r\n // 즐겨찾기 관련\r\n AUTH_BMRK: 'SCMBMRK00101', // 즐겨찾기 관리\r\n} as const;\r\n\r\n// Context 생성\r\nconst ServiceCodeContext = createContext<ServiceCodeContextType | null>(null);\r\n\r\n// Provider Props 타입\r\ninterface ServiceCodeProviderProps {\r\n children: ReactNode;\r\n /**\r\n * 서비스코드 오버라이드 설정\r\n * 외부 프로젝트에서 기본 서비스코드를 재정의할 수 있습니다.\r\n * \r\n * @example\r\n * ```tsx\r\n * <ServiceCodeProvider\r\n * serviceCodes={{\r\n * AUTH_BTNS: 'CUSTOM_AUTH_BTNS_CODE',\r\n * AUTH_MENU: 'CUSTOM_AUTH_MENU_CODE',\r\n * SRCH_CODE: 'CUSTOM_SRCH_CODE',\r\n * SRCH_POPU: 'CUSTOM_SRCH_POPU_CODE',\r\n * AUTH_BMRK: 'CUSTOM_AUTH_BMRK_CODE',\r\n * }}\r\n * >\r\n * {children}\r\n * </ServiceCodeProvider>\r\n * ```\r\n * \r\n * @description\r\n * - AUTH_BTNS: 버튼 권한 조회 서비스코드\r\n * - AUTH_MENU: 메뉴 권한 조회 서비스코드 \r\n * - SRCH_CODE: 코드 조회 서비스코드\r\n * - SRCH_POPU: 팝업 조회 서비스코드\r\n * - AUTH_BMRK: 즐겨찾기 관리 서비스코드\r\n * \r\n * 설정하지 않은 서비스코드는 기본값을 사용합니다.\r\n */\r\n serviceCodes?: Partial<Record<ServiceCodeKey, string>>;\r\n}\r\n\r\n/**\r\n * 서비스코드 Provider 컴포넌트\r\n * 외부 프로젝트에서 서비스코드를 설정할 수 있도록 함\r\n * \r\n * @example\r\n * ```tsx\r\n * import { ServiceCodeProvider } from '@bwg/core/provider';\r\n * \r\n * function App() {\r\n * return (\r\n * <ServiceCodeProvider\r\n * serviceCodes={{\r\n * AUTH_BTNS: 'CUSTOM_AUTH_BTNS_CODE',\r\n * AUTH_MENU: 'CUSTOM_AUTH_MENU_CODE',\r\n * }}\r\n * >\r\n * <YourApp />\r\n * </ServiceCodeProvider>\r\n * );\r\n * }\r\n * ```\r\n */\r\nexport const ServiceCodeProvider: React.FC<ServiceCodeProviderProps> = ({\r\n children,\r\n serviceCodes = {},\r\n}) => {\r\n // serviceCodes가 변경될 때마다 serviceConfig.ts의 오버라이드를 업데이트\r\n useEffect(() => {\r\n setServiceCodeOverrides(serviceCodes);\r\n }, [serviceCodes]);\r\n\r\n // 서비스코드 가져오기 함수\r\n const getServiceCode = (key: ServiceCodeKey): string => {\r\n // 1. Provider에서 설정된 값 우선 확인\r\n if (serviceCodes[key] && serviceCodes[key]!.trim() !== '') {\r\n console.log(`🔧 Provider 설정 사용: ${key} = ${serviceCodes[key]}`);\r\n return serviceCodes[key]!;\r\n }\r\n\r\n // 2. 기본값 사용\r\n const defaultValue = DEFAULT_SERVICE_CODES[key];\r\n console.log(`🔧 기본값 사용: ${key} = ${defaultValue}`);\r\n return defaultValue;\r\n };\r\n\r\n const contextValue: ServiceCodeContextType = {\r\n serviceCodes,\r\n getServiceCode,\r\n };\r\n\r\n return (\r\n <ServiceCodeContext.Provider value={contextValue}>\r\n {children}\r\n </ServiceCodeContext.Provider>\r\n );\r\n};\r\n\r\n/**\r\n * 서비스코드 Context를 사용하는 Hook\r\n * \r\n * @example\r\n * ```tsx\r\n * const { getServiceCode, serviceCodes } = useServiceCode();\r\n * const authBtnsCode = getServiceCode('AUTH_BTNS');\r\n * ```\r\n */\r\nexport const useServiceCode = (): ServiceCodeContextType => {\r\n const context = useContext(ServiceCodeContext);\r\n if (!context) {\r\n throw new Error('useServiceCode must be used within a ServiceCodeProvider');\r\n }\r\n return context;\r\n};\r\n\r\n/**\r\n * 특정 서비스코드를 가져오는 Hook\r\n * \r\n * @param key - 서비스코드 키\r\n * @returns 실제 서비스코드 값\r\n * \r\n * @example\r\n * ```tsx\r\n * const authBtnsCode = useServiceCodeValue('AUTH_BTNS');\r\n * const authMenuCode = useServiceCodeValue('AUTH_MENU');\r\n * ```\r\n */\r\nexport const useServiceCodeValue = (key: ServiceCodeKey): string => {\r\n const { getServiceCode } = useServiceCode();\r\n return getServiceCode(key);\r\n};\r\n\r\n/**\r\n * 모든 서비스코드를 가져오는 Hook\r\n * \r\n * @returns 모든 서비스코드 객체\r\n * \r\n * @example\r\n * ```tsx\r\n * const allServiceCodes = useAllServiceCodes();\r\n * console.log(allServiceCodes.AUTH_BTNS); // 'SCMSIGN00202' 또는 커스텀 값\r\n * ```\r\n */\r\nexport const useAllServiceCodes = (): Record<ServiceCodeKey, string> => {\r\n const { getServiceCode } = useServiceCode();\r\n const result = {} as Record<ServiceCodeKey, string>;\r\n \r\n for (const key of Object.keys(DEFAULT_SERVICE_CODES) as ServiceCodeKey[]) {\r\n result[key] = getServiceCode(key);\r\n }\r\n \r\n return result;\r\n};\r\n\r\n/**\r\n * 서비스코드 설정을 로그로 출력하는 Hook\r\n * 개발 시 현재 설정된 서비스코드를 확인할 수 있습니다.\r\n * \r\n * @example\r\n * ```tsx\r\n * useLogServiceCodeConfig();\r\n * // 콘솔에 현재 설정된 모든 서비스코드가 출력됩니다.\r\n * ```\r\n */\r\nexport const useLogServiceCodeConfig = (): void => {\r\n const { getServiceCode } = useServiceCode();\r\n \r\n console.log('🔧 bwg-core 서비스코드 설정:');\r\n console.log('📋 Provider 설정 > 기본값 순서로 확인');\r\n \r\n for (const key of Object.keys(DEFAULT_SERVICE_CODES) as ServiceCodeKey[]) {\r\n const value = getServiceCode(key);\r\n console.log(` ${key}: ${value}`);\r\n }\r\n};\r\n\r\n// 타입 내보내기\r\nexport type { ServiceCodeKey };\r\n","import React, { createContext, useContext, useRef, ReactNode } from 'react';\r\nimport { SearchBoxRef } from '../../components/common/SearchBox';\r\n\r\n// SearchBox Context 타입\r\ninterface SearchBoxContextType {\r\n searchBoxRef: React.RefObject<SearchBoxRef> | null;\r\n getFormData: () => any;\r\n setFormData: (data: any) => void;\r\n resetForm: () => void;\r\n validateForm: () => Promise<any>;\r\n}\r\n\r\n// Context 생성\r\nconst SearchBoxContext = createContext<SearchBoxContextType | null>(null);\r\n\r\n// Provider Props\r\ninterface SearchBoxProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\n// Provider 컴포넌트\r\nexport const SearchBoxProvider: React.FC<SearchBoxProviderProps> = ({\r\n children,\r\n}) => {\r\n const searchBoxRef = useRef<SearchBoxRef>(null);\r\n\r\n const getFormData = () => {\r\n return searchBoxRef.current?.getFormData() || {};\r\n };\r\n\r\n const setFormData = (data: any) => {\r\n searchBoxRef.current?.setFormData(data);\r\n };\r\n\r\n const resetForm = () => {\r\n searchBoxRef.current?.resetForm();\r\n };\r\n\r\n const validateForm = async () => {\r\n return (\r\n (await searchBoxRef.current?.validateForm()) || {\r\n success: false,\r\n error: null,\r\n }\r\n );\r\n };\r\n\r\n const value: SearchBoxContextType = {\r\n searchBoxRef,\r\n getFormData,\r\n setFormData,\r\n resetForm,\r\n validateForm,\r\n };\r\n\r\n return (\r\n <SearchBoxContext.Provider value={value}>\r\n {children}\r\n </SearchBoxContext.Provider>\r\n );\r\n};\r\n\r\n// Hook\r\nexport const useSearchBox = () => {\r\n const context = useContext(SearchBoxContext);\r\n if (!context) {\r\n throw new Error('useSearchBox must be used within a SearchBoxProvider');\r\n }\r\n return context;\r\n};\r\n"],"names":["DEFAULT_SERVICE_CODES","ServiceCodeContext","createContext","ServiceCodeProvider","children","serviceCodes","useEffect","setServiceCodeOverrides","contextValue","key","defaultValue","useServiceCode","context","useContext","useServiceCodeValue","getServiceCode","useAllServiceCodes","result","useLogServiceCodeConfig","value","SearchBoxContext","SearchBoxProvider","searchBoxRef","useRef","data","jsx","useSearchBox"],"mappings":";;;AAUA,MAAMA,IAAwB;AAAA;AAAA,EAE5B,WAAW;AAAA;AAAA,EACX,WAAW;AAAA;AAAA,EACX,WAAW;AAAA;AAAA;AAAA,EAGX,WAAW;AAAA;AAAA;AAAA,EAGX,WAAW;AAAA;AACb,GAGMC,IAAqBC,EAA6C,IAAI,GA0D/DC,IAA0D,CAAC;AAAA,EACtE,UAAAC;AAAA,EACA,cAAAC,IAAe,CAAA;AACjB,MAAM;AAEJ,EAAAC,EAAU,MAAM;AACd,IAAAC,EAAwBF,CAAY;AAAA,EACtC,GAAG,CAACA,CAAY,CAAC;AAgBjB,QAAMG,IAAuC;AAAA,IAC3C,cAAAH;AAAA,IACA,gBAfqB,CAACI,MAAgC;AAEtD,UAAIJ,EAAaI,CAAG,KAAKJ,EAAaI,CAAG,EAAG,KAAA,MAAW;AACrD,uBAAQ,IAAI,sBAAsBA,CAAG,MAAMJ,EAAaI,CAAG,CAAC,EAAE,GACvDJ,EAAaI,CAAG;AAIzB,YAAMC,IAAeV,EAAsBS,CAAG;AAC9C,qBAAQ,IAAI,cAAcA,CAAG,MAAMC,CAAY,EAAE,GAC1CA;AAAA,IACT;AAAA,EAIE;AAGF,+BACGT,EAAmB,UAAnB,EAA4B,OAAOO,GACjC,UAAAJ,GACH;AAEJ,GAWaO,IAAiB,MAA8B;AAC1D,QAAMC,IAAUC,EAAWZ,CAAkB;AAC7C,MAAI,CAACW;AACH,UAAM,IAAI,MAAM,0DAA0D;AAE5E,SAAOA;AACT,GAcaE,IAAsB,CAACL,MAAgC;AAClE,QAAM,EAAE,gBAAAM,EAAA,IAAmBJ,EAAA;AAC3B,SAAOI,EAAeN,CAAG;AAC3B,GAaaO,IAAqB,MAAsC;AACtE,QAAM,EAAE,gBAAAD,EAAA,IAAmBJ,EAAA,GACrBM,IAAS,CAAA;AAEf,aAAWR,KAAO,OAAO,KAAKT,CAAqB;AACjD,IAAAiB,EAAOR,CAAG,IAAIM,EAAeN,CAAG;AAGlC,SAAOQ;AACT,GAYaC,IAA0B,MAAY;AACjD,QAAM,EAAE,gBAAAH,EAAA,IAAmBJ,EAAA;AAE3B,UAAQ,IAAI,uBAAuB,GACnC,QAAQ,IAAI,6BAA6B;AAEzC,aAAWF,KAAO,OAAO,KAAKT,CAAqB,GAAuB;AACxE,UAAMmB,IAAQJ,EAAeN,CAAG;AAChC,YAAQ,IAAI,KAAKA,CAAG,KAAKU,CAAK,EAAE;AAAA,EAClC;AACF,GCpLMC,IAAmBlB,EAA2C,IAAI,GAQ3DmB,IAAsD,CAAC;AAAA,EAClE,UAAAjB;AACF,MAAM;AACJ,QAAMkB,IAAeC,EAAqB,IAAI,GAuBxCJ,IAA8B;AAAA,IAClC,cAAAG;AAAA,IACA,aAvBkB,MACXA,EAAa,SAAS,YAAA,KAAiB,CAAA;AAAA,IAuB9C,aApBkB,CAACE,MAAc;AACjC,MAAAF,EAAa,SAAS,YAAYE,CAAI;AAAA,IACxC;AAAA,IAmBE,WAjBgB,MAAM;AACtB,MAAAF,EAAa,SAAS,UAAA;AAAA,IACxB;AAAA,IAgBE,cAdmB,YAEhB,MAAMA,EAAa,SAAS,kBAAmB;AAAA,MAC9C,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,EAUX;AAGF,SACEG,gBAAAA,EAAAA,IAACL,EAAiB,UAAjB,EAA0B,OAAAD,GACxB,UAAAf,EAAA,CACH;AAEJ,GAGasB,IAAe,MAAM;AAChC,QAAMd,IAAUC,EAAWO,CAAgB;AAC3C,MAAI,CAACR;AACH,UAAM,IAAI,MAAM,sDAAsD;AAExE,SAAOA;AACT;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const a=require("./jsx-runtime-CeSfJrVB.cjs"),c=require("react"),d=require("./serviceConfig-Cc8jfw_Y.cjs"),u={AUTH_BTNS:"SCMSIGN00202",AUTH_MENU:"SCMSIGN00201",SRCH_CODE:"SCMSIGN00301",SRCH_POPU:"SCMPOPU00101",AUTH_BMRK:"SCMBMRK00101"},S=c.createContext(null),x=({children:o,serviceCodes:e={}})=>{c.useEffect(()=>{d.setServiceCodeOverrides(e)},[e]);const i={serviceCodes:e,getServiceCode:r=>{if(e[r]&&e[r].trim()!=="")return console.log(`🔧 Provider 설정 사용: ${r} = ${e[r]}`),e[r];const s=u[r];return console.log(`🔧 기본값 사용: ${r} = ${s}`),s}};return a.jsxRuntimeExports.jsx(S.Provider,{value:i,children:o})},n=()=>{const o=c.useContext(S);if(!o)throw new Error("useServiceCode must be used within a ServiceCodeProvider");return o},g=o=>{const{getServiceCode:e}=n();return e(o)},m=()=>{const{getServiceCode:o}=n(),e={};for(const t of Object.keys(u))e[t]=o(t);return e},f=()=>{const{getServiceCode:o}=n();console.log("🔧 bwg-core 서비스코드 설정:"),console.log("📋 Provider 설정 > 기본값 순서로 확인");for(const e of Object.keys(u)){const t=o(e);console.log(` ${e}: ${t}`)}},l=c.createContext(null),P=({children:o})=>{const e=c.useRef(null),C={searchBoxRef:e,getFormData:()=>e.current?.getFormData()||{},setFormData:v=>{e.current?.setFormData(v)},resetForm:()=>{e.current?.resetForm()},validateForm:async()=>await e.current?.validateForm()||{success:!1,error:null}};return a.jsxRuntimeExports.jsx(l.Provider,{value:C,children:o})},F=()=>{const o=c.useContext(l);if(!o)throw new Error("useSearchBox must be used within a SearchBoxProvider");return o};exports.SearchBoxProvider=P;exports.ServiceCodeProvider=x;exports.useAllServiceCodes=m;exports.useLogServiceCodeConfig=f;exports.useSearchBox=F;exports.useServiceCode=n;exports.useServiceCodeValue=g;
2
+ //# sourceMappingURL=SearchBoxContext-mcPWk862.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchBoxContext-mcPWk862.cjs","sources":["../../src/provider/contexts/ServiceCodeContext.tsx","../../src/provider/contexts/SearchBoxContext.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode, useEffect } from 'react';\r\nimport { ServiceCodeKey, setServiceCodeOverrides } from '../../utils/serviceConfig';\r\n\r\n// 서비스코드 설정을 위한 Context 타입\r\ninterface ServiceCodeContextType {\r\n serviceCodes: Partial<Record<ServiceCodeKey, string>>;\r\n getServiceCode: (key: ServiceCodeKey) => string;\r\n}\r\n\r\n// 기본 서비스코드 정의\r\nconst DEFAULT_SERVICE_CODES = {\r\n // 권한 관련\r\n AUTH_BTNS: 'SCMSIGN00202', // 버튼 권한 조회\r\n AUTH_MENU: 'SCMSIGN00201', // 메뉴 권한 조회\r\n SRCH_CODE: 'SCMSIGN00301', // 코드 조회\r\n \r\n // 팝업 관련\r\n SRCH_POPU: 'SCMPOPU00101', // 팝업 조회\r\n \r\n // 즐겨찾기 관련\r\n AUTH_BMRK: 'SCMBMRK00101', // 즐겨찾기 관리\r\n} as const;\r\n\r\n// Context 생성\r\nconst ServiceCodeContext = createContext<ServiceCodeContextType | null>(null);\r\n\r\n// Provider Props 타입\r\ninterface ServiceCodeProviderProps {\r\n children: ReactNode;\r\n /**\r\n * 서비스코드 오버라이드 설정\r\n * 외부 프로젝트에서 기본 서비스코드를 재정의할 수 있습니다.\r\n * \r\n * @example\r\n * ```tsx\r\n * <ServiceCodeProvider\r\n * serviceCodes={{\r\n * AUTH_BTNS: 'CUSTOM_AUTH_BTNS_CODE',\r\n * AUTH_MENU: 'CUSTOM_AUTH_MENU_CODE',\r\n * SRCH_CODE: 'CUSTOM_SRCH_CODE',\r\n * SRCH_POPU: 'CUSTOM_SRCH_POPU_CODE',\r\n * AUTH_BMRK: 'CUSTOM_AUTH_BMRK_CODE',\r\n * }}\r\n * >\r\n * {children}\r\n * </ServiceCodeProvider>\r\n * ```\r\n * \r\n * @description\r\n * - AUTH_BTNS: 버튼 권한 조회 서비스코드\r\n * - AUTH_MENU: 메뉴 권한 조회 서비스코드 \r\n * - SRCH_CODE: 코드 조회 서비스코드\r\n * - SRCH_POPU: 팝업 조회 서비스코드\r\n * - AUTH_BMRK: 즐겨찾기 관리 서비스코드\r\n * \r\n * 설정하지 않은 서비스코드는 기본값을 사용합니다.\r\n */\r\n serviceCodes?: Partial<Record<ServiceCodeKey, string>>;\r\n}\r\n\r\n/**\r\n * 서비스코드 Provider 컴포넌트\r\n * 외부 프로젝트에서 서비스코드를 설정할 수 있도록 함\r\n * \r\n * @example\r\n * ```tsx\r\n * import { ServiceCodeProvider } from '@bwg/core/provider';\r\n * \r\n * function App() {\r\n * return (\r\n * <ServiceCodeProvider\r\n * serviceCodes={{\r\n * AUTH_BTNS: 'CUSTOM_AUTH_BTNS_CODE',\r\n * AUTH_MENU: 'CUSTOM_AUTH_MENU_CODE',\r\n * }}\r\n * >\r\n * <YourApp />\r\n * </ServiceCodeProvider>\r\n * );\r\n * }\r\n * ```\r\n */\r\nexport const ServiceCodeProvider: React.FC<ServiceCodeProviderProps> = ({\r\n children,\r\n serviceCodes = {},\r\n}) => {\r\n // serviceCodes가 변경될 때마다 serviceConfig.ts의 오버라이드를 업데이트\r\n useEffect(() => {\r\n setServiceCodeOverrides(serviceCodes);\r\n }, [serviceCodes]);\r\n\r\n // 서비스코드 가져오기 함수\r\n const getServiceCode = (key: ServiceCodeKey): string => {\r\n // 1. Provider에서 설정된 값 우선 확인\r\n if (serviceCodes[key] && serviceCodes[key]!.trim() !== '') {\r\n console.log(`🔧 Provider 설정 사용: ${key} = ${serviceCodes[key]}`);\r\n return serviceCodes[key]!;\r\n }\r\n\r\n // 2. 기본값 사용\r\n const defaultValue = DEFAULT_SERVICE_CODES[key];\r\n console.log(`🔧 기본값 사용: ${key} = ${defaultValue}`);\r\n return defaultValue;\r\n };\r\n\r\n const contextValue: ServiceCodeContextType = {\r\n serviceCodes,\r\n getServiceCode,\r\n };\r\n\r\n return (\r\n <ServiceCodeContext.Provider value={contextValue}>\r\n {children}\r\n </ServiceCodeContext.Provider>\r\n );\r\n};\r\n\r\n/**\r\n * 서비스코드 Context를 사용하는 Hook\r\n * \r\n * @example\r\n * ```tsx\r\n * const { getServiceCode, serviceCodes } = useServiceCode();\r\n * const authBtnsCode = getServiceCode('AUTH_BTNS');\r\n * ```\r\n */\r\nexport const useServiceCode = (): ServiceCodeContextType => {\r\n const context = useContext(ServiceCodeContext);\r\n if (!context) {\r\n throw new Error('useServiceCode must be used within a ServiceCodeProvider');\r\n }\r\n return context;\r\n};\r\n\r\n/**\r\n * 특정 서비스코드를 가져오는 Hook\r\n * \r\n * @param key - 서비스코드 키\r\n * @returns 실제 서비스코드 값\r\n * \r\n * @example\r\n * ```tsx\r\n * const authBtnsCode = useServiceCodeValue('AUTH_BTNS');\r\n * const authMenuCode = useServiceCodeValue('AUTH_MENU');\r\n * ```\r\n */\r\nexport const useServiceCodeValue = (key: ServiceCodeKey): string => {\r\n const { getServiceCode } = useServiceCode();\r\n return getServiceCode(key);\r\n};\r\n\r\n/**\r\n * 모든 서비스코드를 가져오는 Hook\r\n * \r\n * @returns 모든 서비스코드 객체\r\n * \r\n * @example\r\n * ```tsx\r\n * const allServiceCodes = useAllServiceCodes();\r\n * console.log(allServiceCodes.AUTH_BTNS); // 'SCMSIGN00202' 또는 커스텀 값\r\n * ```\r\n */\r\nexport const useAllServiceCodes = (): Record<ServiceCodeKey, string> => {\r\n const { getServiceCode } = useServiceCode();\r\n const result = {} as Record<ServiceCodeKey, string>;\r\n \r\n for (const key of Object.keys(DEFAULT_SERVICE_CODES) as ServiceCodeKey[]) {\r\n result[key] = getServiceCode(key);\r\n }\r\n \r\n return result;\r\n};\r\n\r\n/**\r\n * 서비스코드 설정을 로그로 출력하는 Hook\r\n * 개발 시 현재 설정된 서비스코드를 확인할 수 있습니다.\r\n * \r\n * @example\r\n * ```tsx\r\n * useLogServiceCodeConfig();\r\n * // 콘솔에 현재 설정된 모든 서비스코드가 출력됩니다.\r\n * ```\r\n */\r\nexport const useLogServiceCodeConfig = (): void => {\r\n const { getServiceCode } = useServiceCode();\r\n \r\n console.log('🔧 bwg-core 서비스코드 설정:');\r\n console.log('📋 Provider 설정 > 기본값 순서로 확인');\r\n \r\n for (const key of Object.keys(DEFAULT_SERVICE_CODES) as ServiceCodeKey[]) {\r\n const value = getServiceCode(key);\r\n console.log(` ${key}: ${value}`);\r\n }\r\n};\r\n\r\n// 타입 내보내기\r\nexport type { ServiceCodeKey };\r\n","import React, { createContext, useContext, useRef, ReactNode } from 'react';\r\nimport { SearchBoxRef } from '../../components/common/SearchBox';\r\n\r\n// SearchBox Context 타입\r\ninterface SearchBoxContextType {\r\n searchBoxRef: React.RefObject<SearchBoxRef> | null;\r\n getFormData: () => any;\r\n setFormData: (data: any) => void;\r\n resetForm: () => void;\r\n validateForm: () => Promise<any>;\r\n}\r\n\r\n// Context 생성\r\nconst SearchBoxContext = createContext<SearchBoxContextType | null>(null);\r\n\r\n// Provider Props\r\ninterface SearchBoxProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\n// Provider 컴포넌트\r\nexport const SearchBoxProvider: React.FC<SearchBoxProviderProps> = ({\r\n children,\r\n}) => {\r\n const searchBoxRef = useRef<SearchBoxRef>(null);\r\n\r\n const getFormData = () => {\r\n return searchBoxRef.current?.getFormData() || {};\r\n };\r\n\r\n const setFormData = (data: any) => {\r\n searchBoxRef.current?.setFormData(data);\r\n };\r\n\r\n const resetForm = () => {\r\n searchBoxRef.current?.resetForm();\r\n };\r\n\r\n const validateForm = async () => {\r\n return (\r\n (await searchBoxRef.current?.validateForm()) || {\r\n success: false,\r\n error: null,\r\n }\r\n );\r\n };\r\n\r\n const value: SearchBoxContextType = {\r\n searchBoxRef,\r\n getFormData,\r\n setFormData,\r\n resetForm,\r\n validateForm,\r\n };\r\n\r\n return (\r\n <SearchBoxContext.Provider value={value}>\r\n {children}\r\n </SearchBoxContext.Provider>\r\n );\r\n};\r\n\r\n// Hook\r\nexport const useSearchBox = () => {\r\n const context = useContext(SearchBoxContext);\r\n if (!context) {\r\n throw new Error('useSearchBox must be used within a SearchBoxProvider');\r\n }\r\n return context;\r\n};\r\n"],"names":["DEFAULT_SERVICE_CODES","ServiceCodeContext","createContext","ServiceCodeProvider","children","serviceCodes","useEffect","setServiceCodeOverrides","contextValue","key","defaultValue","useServiceCode","context","useContext","useServiceCodeValue","getServiceCode","useAllServiceCodes","result","useLogServiceCodeConfig","value","SearchBoxContext","SearchBoxProvider","searchBoxRef","useRef","data","jsx","useSearchBox"],"mappings":"wHAUMA,EAAwB,CAE5B,UAAW,eACX,UAAW,eACX,UAAW,eAGX,UAAW,eAGX,UAAW,cACb,EAGMC,EAAqBC,EAAAA,cAA6C,IAAI,EA0D/DC,EAA0D,CAAC,CACtE,SAAAC,EACA,aAAAC,EAAe,CAAA,CACjB,IAAM,CAEJC,EAAAA,UAAU,IAAM,CACdC,EAAAA,wBAAwBF,CAAY,CACtC,EAAG,CAACA,CAAY,CAAC,EAgBjB,MAAMG,EAAuC,CAC3C,aAAAH,EACA,eAfsBI,GAAgC,CAEtD,GAAIJ,EAAaI,CAAG,GAAKJ,EAAaI,CAAG,EAAG,KAAA,IAAW,GACrD,eAAQ,IAAI,sBAAsBA,CAAG,MAAMJ,EAAaI,CAAG,CAAC,EAAE,EACvDJ,EAAaI,CAAG,EAIzB,MAAMC,EAAeV,EAAsBS,CAAG,EAC9C,eAAQ,IAAI,cAAcA,CAAG,MAAMC,CAAY,EAAE,EAC1CA,CACT,CAIE,EAGF,+BACGT,EAAmB,SAAnB,CAA4B,MAAOO,EACjC,SAAAJ,EACH,CAEJ,EAWaO,EAAiB,IAA8B,CAC1D,MAAMC,EAAUC,EAAAA,WAAWZ,CAAkB,EAC7C,GAAI,CAACW,EACH,MAAM,IAAI,MAAM,0DAA0D,EAE5E,OAAOA,CACT,EAcaE,EAAuBL,GAAgC,CAClE,KAAM,CAAE,eAAAM,CAAA,EAAmBJ,EAAA,EAC3B,OAAOI,EAAeN,CAAG,CAC3B,EAaaO,EAAqB,IAAsC,CACtE,KAAM,CAAE,eAAAD,CAAA,EAAmBJ,EAAA,EACrBM,EAAS,CAAA,EAEf,UAAWR,KAAO,OAAO,KAAKT,CAAqB,EACjDiB,EAAOR,CAAG,EAAIM,EAAeN,CAAG,EAGlC,OAAOQ,CACT,EAYaC,EAA0B,IAAY,CACjD,KAAM,CAAE,eAAAH,CAAA,EAAmBJ,EAAA,EAE3B,QAAQ,IAAI,uBAAuB,EACnC,QAAQ,IAAI,6BAA6B,EAEzC,UAAWF,KAAO,OAAO,KAAKT,CAAqB,EAAuB,CACxE,MAAMmB,EAAQJ,EAAeN,CAAG,EAChC,QAAQ,IAAI,KAAKA,CAAG,KAAKU,CAAK,EAAE,CAClC,CACF,ECpLMC,EAAmBlB,EAAAA,cAA2C,IAAI,EAQ3DmB,EAAsD,CAAC,CAClE,SAAAjB,CACF,IAAM,CACJ,MAAMkB,EAAeC,EAAAA,OAAqB,IAAI,EAuBxCJ,EAA8B,CAClC,aAAAG,EACA,YAvBkB,IACXA,EAAa,SAAS,YAAA,GAAiB,CAAA,EAuB9C,YApBmBE,GAAc,CACjCF,EAAa,SAAS,YAAYE,CAAI,CACxC,EAmBE,UAjBgB,IAAM,CACtBF,EAAa,SAAS,UAAA,CACxB,EAgBE,aAdmB,SAEhB,MAAMA,EAAa,SAAS,gBAAmB,CAC9C,QAAS,GACT,MAAO,IAAA,CAUX,EAGF,OACEG,EAAAA,kBAAAA,IAACL,EAAiB,SAAjB,CAA0B,MAAAD,EACxB,SAAAf,CAAA,CACH,CAEJ,EAGasB,EAAe,IAAM,CAChC,MAAMd,EAAUC,EAAAA,WAAWO,CAAgB,EAC3C,GAAI,CAACR,EACH,MAAM,IAAI,MAAM,sDAAsD,EAExE,OAAOA,CACT"}
@@ -1 +1,2 @@
1
- "use strict";const u=require("react"),b=require("./popupStore-CVD8SPTa.cjs"),y=require("./jsx-runtime-CeSfJrVB.cjs"),L=require("./codeStore-Dt6j826J.cjs"),o=require("./commonUtils-L9Jgc5y-.cjs"),i=require("./serviceConfig-Cr2P4yr4.cjs"),x=()=>!1,E=()=>{const{popups:e,activePopupId:r,setActivePopup:s,closePopup:m,openPopup:c}=b.usePopupStore(),l=u.useCallback(async(d,g,C)=>{try{await c(d,g,C)}catch(p){throw console.error("팝업 열기 실패:",p),p}},[c]);return{popups:e,activePopupId:r,setActivePopup:s,closePopup:m,showPopup:l,isPopup:e.length>0}},D=u.createContext(void 0),S=({children:e})=>{const{codeData:r,isLoading:s,error:m,lastUpdated:c,getCodeList:l,getCodeListByOption:d,getCodeName:g,getCodeColor:C,getCodeByOption:p,getAvailableGroupCodes:U,getGridLookup:f,fetchCommonCodes:P}=L.useCodeStore(),v={codeData:r,isLoading:s,error:m,lastUpdated:c,getCodeList:l,getCodeListByOption:d,getCodeName:g,getCodeColor:C,getCodeByOption:p,getAvailableGroupCodes:U,getGridLookup:f,refreshCodes:P};return y.jsxRuntimeExports.jsx(D.Provider,{value:v,children:e})},a=()=>{const e=u.useContext(D);if(e===void 0)throw new Error("useCommonCode must be used within a CommonCodeProvider");return e},A=()=>{const{getCodeList:e,isLoading:r,error:s}=a();return{getCodeList:e,isLoading:r,error:s}},I=()=>{const{getCodeName:e,isLoading:r,error:s}=a();return{getCodeName:e,isLoading:r,error:s}},N=()=>{const{getCodeColor:e,isLoading:r,error:s}=a();return{getCodeColor:e,isLoading:r,error:s}},T=()=>{const{getCodeListByOption:e,isLoading:r,error:s}=a();return{getCodeListByOption:e,isLoading:r,error:s}},G=()=>{const{getGridLookup:e,isLoading:r,error:s}=a();return{getGridLookup:e,isLoading:r,error:s}},k={...o.dateUtils,...i.stringUtils,isEmptyArray:o.isEmptyArray,isNotEmptyArray:o.isNotEmptyArray,unique:o.unique,shuffle:o.shuffle,sortBy:o.sortBy,max:o.max,min:o.min,average:o.average,sum:o.sum,randomFromArray:o.randomFromArray,flattenArray:o.flattenArray,...o.objectUtils,debounce:o.debounce,throttle:o.throttle,setLocalStorage:o.setLocalStorage,getLocalStorage:o.getLocalStorage,formatNumber:o.formatNumber,formatCurrency:o.formatCurrency,copyToClipboard:o.copyToClipboard,isMobile:o.isMobile,isDesktop:o.isDesktop,callService:i.callService,apiGet:i.apiGet,apiPost:i.apiPost,apiPut:i.apiPut,apiDelete:i.apiDelete,apiPatch:i.apiPatch},h=u.createContext(void 0),q=({children:e})=>y.jsxRuntimeExports.jsx(h.Provider,{value:{utils:k},children:e}),n=()=>{const e=u.useContext(h);if(e===void 0)throw new Error("useUtils must be used within a UtilsProvider");return e.utils},t=(e,r,s)=>e&&typeof e[r]=="function"?e[r]:s||(()=>{}),w=()=>{const e=n();return{formatDate:t(e,"formatDate"),formatDateKorean:t(e,"formatDateKorean"),getCurrentDate:t(e,"getCurrentDate"),getCurrentDateString:t(e,"getCurrentDateString"),getRelativeTime:t(e,"getRelativeTime"),isToday:t(e,"isToday"),isThisWeek:t(e,"isThisWeek"),isThisMonth:t(e,"isThisMonth"),getDateDiff:t(e,"getDateDiff"),calculateAge:t(e,"calculateAge")}},B=()=>{const e=n();return{isEmpty:t(e,"isEmpty"),isNotEmpty:t(e,"isNotEmpty"),truncate:t(e,"truncate"),capitalize:t(e,"capitalize"),formatPhoneNumber:t(e,"formatPhoneNumber"),isValidEmail:t(e,"isValidEmail"),removeHtmlTags:t(e,"removeHtmlTags"),generateUID:t(e,"generateUID"),generateShortUID:t(e,"generateShortUID"),generateLongUID:t(e,"generateLongUID"),generateNumericUID:t(e,"generateNumericUID"),generateAlphanumericUID:t(e,"generateAlphanumericUID"),generateGUID:t(e,"generateGUID"),generateGUIDWithoutHyphens:t(e,"generateGUIDWithoutHyphens"),generateTimestampUID:t(e,"generateTimestampUID"),generateCustomUID:t(e,"generateCustomUID"),encryptSha256:t(e,"encryptSha256"),bxmEncrypt:t(e,"bxmEncrypt"),bxmDecrypt:t(e,"bxmDecrypt"),simpleEncrypt:t(e,"simpleEncrypt"),simpleDecrypt:t(e,"simpleDecrypt"),md5Hash:t(e,"md5Hash"),sha256Hash:t(e,"sha256Hash"),base64Encode:t(e,"base64Encode"),base64Decode:t(e,"base64Decode")}},H=()=>{const e=n();return{isEmptyArray:t(e,"isEmptyArray"),isNotEmptyArray:t(e,"isNotEmptyArray"),unique:t(e,"unique"),shuffle:t(e,"shuffle"),sortBy:t(e,"sortBy"),max:t(e,"max"),min:t(e,"min"),average:t(e,"average"),sum:t(e,"sum")}},M=()=>{const e=n();return{debounce:t(e,"debounce"),throttle:t(e,"throttle"),setLocalStorage:t(e,"setLocalStorage"),getLocalStorage:t(e,"getLocalStorage"),formatNumber:t(e,"formatNumber"),formatCurrency:t(e,"formatCurrency"),copyToClipboard:t(e,"copyToClipboard"),isMobile:t(e,"isMobile"),isDesktop:t(e,"isDesktop")}},R=()=>{const e=n();return{callService:t(e,"callService"),apiGet:t(e,"apiGet"),apiPost:t(e,"apiPost"),apiPut:t(e,"apiPut"),apiDelete:t(e,"apiDelete"),apiPatch:t(e,"apiPatch")}};exports.CommonCodeProvider=S;exports.UtilsProvider=q;exports.useApiUtils=R;exports.useArrayUtils=H;exports.useCodeColor=N;exports.useCodeList=A;exports.useCodeListByOption=T;exports.useCodeName=I;exports.useCommonCode=a;exports.useCommonUtils=M;exports.useDateUtils=w;exports.useGridLookup=G;exports.usePopup=E;exports.usePopupContext=x;exports.useStringUtils=B;exports.useUtils=n;
1
+ "use strict";const u=require("react"),b=require("./popupStore--hKZUZcO.cjs"),y=require("./jsx-runtime-CeSfJrVB.cjs"),L=require("./codeStore-BG8S_mdS.cjs"),o=require("./commonUtils-L9Jgc5y-.cjs"),i=require("./serviceConfig-Cc8jfw_Y.cjs"),x=()=>!1,E=()=>{const{popups:e,activePopupId:r,setActivePopup:s,closePopup:m,openPopup:c}=b.usePopupStore(),l=u.useCallback(async(d,g,C)=>{try{await c(d,g,C)}catch(p){throw console.error("팝업 열기 실패:",p),p}},[c]);return{popups:e,activePopupId:r,setActivePopup:s,closePopup:m,showPopup:l,isPopup:e.length>0}},D=u.createContext(void 0),S=({children:e})=>{const{codeData:r,isLoading:s,error:m,lastUpdated:c,getCodeList:l,getCodeListByOption:d,getCodeName:g,getCodeColor:C,getCodeByOption:p,getAvailableGroupCodes:U,getGridLookup:f,fetchCommonCodes:P}=L.useCodeStore(),v={codeData:r,isLoading:s,error:m,lastUpdated:c,getCodeList:l,getCodeListByOption:d,getCodeName:g,getCodeColor:C,getCodeByOption:p,getAvailableGroupCodes:U,getGridLookup:f,refreshCodes:P};return y.jsxRuntimeExports.jsx(D.Provider,{value:v,children:e})},a=()=>{const e=u.useContext(D);if(e===void 0)throw new Error("useCommonCode must be used within a CommonCodeProvider");return e},A=()=>{const{getCodeList:e,isLoading:r,error:s}=a();return{getCodeList:e,isLoading:r,error:s}},I=()=>{const{getCodeName:e,isLoading:r,error:s}=a();return{getCodeName:e,isLoading:r,error:s}},N=()=>{const{getCodeColor:e,isLoading:r,error:s}=a();return{getCodeColor:e,isLoading:r,error:s}},T=()=>{const{getCodeListByOption:e,isLoading:r,error:s}=a();return{getCodeListByOption:e,isLoading:r,error:s}},G=()=>{const{getGridLookup:e,isLoading:r,error:s}=a();return{getGridLookup:e,isLoading:r,error:s}},k={...o.dateUtils,...i.stringUtils,isEmptyArray:o.isEmptyArray,isNotEmptyArray:o.isNotEmptyArray,unique:o.unique,shuffle:o.shuffle,sortBy:o.sortBy,max:o.max,min:o.min,average:o.average,sum:o.sum,randomFromArray:o.randomFromArray,flattenArray:o.flattenArray,...o.objectUtils,debounce:o.debounce,throttle:o.throttle,setLocalStorage:o.setLocalStorage,getLocalStorage:o.getLocalStorage,formatNumber:o.formatNumber,formatCurrency:o.formatCurrency,copyToClipboard:o.copyToClipboard,isMobile:o.isMobile,isDesktop:o.isDesktop,callService:i.callService,apiGet:i.apiGet,apiPost:i.apiPost,apiPut:i.apiPut,apiDelete:i.apiDelete,apiPatch:i.apiPatch},h=u.createContext(void 0),q=({children:e})=>y.jsxRuntimeExports.jsx(h.Provider,{value:{utils:k},children:e}),n=()=>{const e=u.useContext(h);if(e===void 0)throw new Error("useUtils must be used within a UtilsProvider");return e.utils},t=(e,r,s)=>e&&typeof e[r]=="function"?e[r]:s||(()=>{}),w=()=>{const e=n();return{formatDate:t(e,"formatDate"),formatDateKorean:t(e,"formatDateKorean"),getCurrentDate:t(e,"getCurrentDate"),getCurrentDateString:t(e,"getCurrentDateString"),getRelativeTime:t(e,"getRelativeTime"),isToday:t(e,"isToday"),isThisWeek:t(e,"isThisWeek"),isThisMonth:t(e,"isThisMonth"),getDateDiff:t(e,"getDateDiff"),calculateAge:t(e,"calculateAge")}},B=()=>{const e=n();return{isEmpty:t(e,"isEmpty"),isNotEmpty:t(e,"isNotEmpty"),truncate:t(e,"truncate"),capitalize:t(e,"capitalize"),formatPhoneNumber:t(e,"formatPhoneNumber"),isValidEmail:t(e,"isValidEmail"),removeHtmlTags:t(e,"removeHtmlTags"),generateUID:t(e,"generateUID"),generateShortUID:t(e,"generateShortUID"),generateLongUID:t(e,"generateLongUID"),generateNumericUID:t(e,"generateNumericUID"),generateAlphanumericUID:t(e,"generateAlphanumericUID"),generateGUID:t(e,"generateGUID"),generateGUIDWithoutHyphens:t(e,"generateGUIDWithoutHyphens"),generateTimestampUID:t(e,"generateTimestampUID"),generateCustomUID:t(e,"generateCustomUID"),encryptSha256:t(e,"encryptSha256"),bxmEncrypt:t(e,"bxmEncrypt"),bxmDecrypt:t(e,"bxmDecrypt"),simpleEncrypt:t(e,"simpleEncrypt"),simpleDecrypt:t(e,"simpleDecrypt"),md5Hash:t(e,"md5Hash"),sha256Hash:t(e,"sha256Hash"),base64Encode:t(e,"base64Encode"),base64Decode:t(e,"base64Decode")}},H=()=>{const e=n();return{isEmptyArray:t(e,"isEmptyArray"),isNotEmptyArray:t(e,"isNotEmptyArray"),unique:t(e,"unique"),shuffle:t(e,"shuffle"),sortBy:t(e,"sortBy"),max:t(e,"max"),min:t(e,"min"),average:t(e,"average"),sum:t(e,"sum")}},M=()=>{const e=n();return{debounce:t(e,"debounce"),throttle:t(e,"throttle"),setLocalStorage:t(e,"setLocalStorage"),getLocalStorage:t(e,"getLocalStorage"),formatNumber:t(e,"formatNumber"),formatCurrency:t(e,"formatCurrency"),copyToClipboard:t(e,"copyToClipboard"),isMobile:t(e,"isMobile"),isDesktop:t(e,"isDesktop")}},R=()=>{const e=n();return{callService:t(e,"callService"),apiGet:t(e,"apiGet"),apiPost:t(e,"apiPost"),apiPut:t(e,"apiPut"),apiDelete:t(e,"apiDelete"),apiPatch:t(e,"apiPatch")}};exports.CommonCodeProvider=S;exports.UtilsProvider=q;exports.useApiUtils=R;exports.useArrayUtils=H;exports.useCodeColor=N;exports.useCodeList=A;exports.useCodeListByOption=T;exports.useCodeName=I;exports.useCommonCode=a;exports.useCommonUtils=M;exports.useDateUtils=w;exports.useGridLookup=G;exports.usePopup=E;exports.usePopupContext=x;exports.useStringUtils=B;exports.useUtils=n;
2
+ //# sourceMappingURL=UtilsContext-B6P_aohP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UtilsContext-B6P_aohP.cjs","sources":["../../src/provider/hooks/usePopup.ts","../../src/provider/contexts/CommonCodeContext.tsx","../../src/provider/contexts/UtilsContext.tsx"],"sourcesContent":["import { useCallback } from 'react';\r\nimport { usePopupStore, type PopupConfig } from '../../stores/popupStore';\r\n\r\n/**\r\n * 팝업 컨텍스트를 감지하는 훅\r\n * 팝업 내부에서 사용하면 true, 일반 페이지에서는 false 반환\r\n */\r\nexport const usePopupContext = (): boolean => {\r\n // 팝업 내부에서만 true를 반환하도록 수정\r\n // 현재는 팝업이 열려있으면 모든 컴포넌트가 팝업으로 인식되는 문제가 있음\r\n // 임시로 false 반환 (수동으로 isPopup prop 사용 권장)\r\n return false;\r\n};\r\n\r\n/**\r\n * 팝업 데이터와 이벤트를 관리하는 훅\r\n */\r\nexport const usePopup = () => {\r\n const { popups, activePopupId, setActivePopup, closePopup, openPopup } =\r\n usePopupStore();\r\n\r\n // 팝업 열기 함수\r\n const showPopup = useCallback(\r\n async (popupCode: string, popParams?: any, config?: PopupConfig) => {\r\n try {\r\n await openPopup(popupCode, popParams, config);\r\n } catch (error) {\r\n console.error('팝업 열기 실패:', error);\r\n throw error;\r\n }\r\n },\r\n [openPopup]\r\n );\r\n\r\n return {\r\n popups,\r\n activePopupId,\r\n setActivePopup,\r\n closePopup,\r\n showPopup,\r\n isPopup: popups.length > 0,\r\n };\r\n};\r\n","import { useCodeStore, type CommonCodeContextType } from '../../stores/codeStore';\r\nimport { createContext, useContext, ReactNode } from 'react';\r\n\r\n// 공통코드 컨텍스트 생성\r\nconst CommonCodeContext = createContext<CommonCodeContextType | undefined>(\r\n undefined\r\n);\r\n\r\n// 공통코드 컨텍스트 프로바이더 컴포넌트\r\ninterface CommonCodeProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport const CommonCodeProvider: React.FC<CommonCodeProviderProps> = ({\r\n children,\r\n}) => {\r\n const {\r\n codeData,\r\n isLoading,\r\n error,\r\n lastUpdated,\r\n getCodeList,\r\n getCodeListByOption,\r\n getCodeName,\r\n getCodeColor,\r\n getCodeByOption,\r\n getAvailableGroupCodes,\r\n getGridLookup,\r\n fetchCommonCodes,\r\n } = useCodeStore();\r\n\r\n const contextValue: CommonCodeContextType = {\r\n codeData,\r\n isLoading,\r\n error,\r\n lastUpdated,\r\n getCodeList,\r\n getCodeListByOption,\r\n getCodeName,\r\n getCodeColor,\r\n getCodeByOption,\r\n getAvailableGroupCodes,\r\n getGridLookup,\r\n refreshCodes: fetchCommonCodes,\r\n };\r\n\r\n return (\r\n <CommonCodeContext.Provider value={contextValue}>\r\n {children}\r\n </CommonCodeContext.Provider>\r\n );\r\n};\r\n\r\n// 공통코드 컨텍스트 사용 훅\r\nexport const useCommonCode = (): CommonCodeContextType => {\r\n const context = useContext(CommonCodeContext);\r\n if (context === undefined) {\r\n throw new Error('useCommonCode must be used within a CommonCodeProvider');\r\n }\r\n return context;\r\n};\r\n\r\n// 편의 훅들 (Fast Refresh 호환성을 위해 매개변수 없는 함수로 변경)\r\nexport const useCodeList = () => {\r\n const { getCodeList, isLoading, error } = useCommonCode();\r\n return {\r\n getCodeList,\r\n isLoading,\r\n error,\r\n };\r\n};\r\n\r\nexport const useCodeName = () => {\r\n const { getCodeName, isLoading, error } = useCommonCode();\r\n return {\r\n getCodeName,\r\n isLoading,\r\n error,\r\n };\r\n};\r\n\r\nexport const useCodeColor = () => {\r\n const { getCodeColor, isLoading, error } = useCommonCode();\r\n return {\r\n getCodeColor,\r\n isLoading,\r\n error,\r\n };\r\n};\r\n\r\nexport const useCodeListByOption = () => {\r\n const { getCodeListByOption, isLoading, error } = useCommonCode();\r\n return {\r\n getCodeListByOption,\r\n isLoading,\r\n error,\r\n };\r\n};\r\n\r\nexport const useGridLookup = () => {\r\n const { getGridLookup, isLoading, error } = useCommonCode();\r\n return {\r\n getGridLookup,\r\n isLoading,\r\n error,\r\n };\r\n};\r\n","import React, { createContext, useContext } from \"react\";\r\nimport type { ReactNode } from \"react\";\r\nimport * as dateUtils from \"../../utils/dateUtils\";\r\nimport * as stringUtils from \"../../utils/stringUtils\";\r\nimport * as arrayUtils from \"../../utils/arrayUtils\";\r\nimport * as objectUtils from \"../../utils/objectUtils\";\r\nimport * as commonUtils from \"../../utils/commonUtils\";\r\nimport * as apiUtils from \"../../utils/apiUtils\";\r\n\r\n// 모든 유틸리티 함수들을 하나의 객체로 결합 (충돌하는 함수명은 별칭 사용)\r\nconst utils = {\r\n // 날짜 유틸리티\r\n ...dateUtils,\r\n // 문자열 유틸리티\r\n ...stringUtils,\r\n // 배열 유틸리티 (충돌하는 함수명은 별칭 사용)\r\n isEmptyArray: arrayUtils.isEmptyArray,\r\n isNotEmptyArray: arrayUtils.isNotEmptyArray,\r\n unique: arrayUtils.unique,\r\n shuffle: arrayUtils.shuffle,\r\n sortBy: arrayUtils.sortBy,\r\n max: arrayUtils.max,\r\n min: arrayUtils.min,\r\n average: arrayUtils.average,\r\n sum: arrayUtils.sum,\r\n randomFromArray: arrayUtils.randomFromArray,\r\n flattenArray: arrayUtils.flattenArray,\r\n // 객체 유틸리티\r\n ...objectUtils,\r\n // 일반 유틸리티 (충돌하는 함수명은 별칭 사용)\r\n debounce: commonUtils.debounce,\r\n throttle: commonUtils.throttle,\r\n setLocalStorage: commonUtils.setLocalStorage,\r\n getLocalStorage: commonUtils.getLocalStorage,\r\n formatNumber: commonUtils.formatNumber,\r\n formatCurrency: commonUtils.formatCurrency,\r\n copyToClipboard: commonUtils.copyToClipboard,\r\n isMobile: commonUtils.isMobile,\r\n isDesktop: commonUtils.isDesktop,\r\n // API 유틸리티\r\n callService: apiUtils.callService,\r\n apiGet: apiUtils.apiGet,\r\n apiPost: apiUtils.apiPost,\r\n apiPut: apiUtils.apiPut,\r\n apiDelete: apiUtils.apiDelete,\r\n apiPatch: apiUtils.apiPatch,\r\n};\r\n\r\n// Context 타입 정의\r\ninterface UtilsContextType {\r\n utils: typeof utils;\r\n}\r\n\r\n// Context 생성\r\nconst UtilsContext = createContext<UtilsContextType | undefined>(undefined);\r\n\r\n// Provider 컴포넌트\r\ninterface UtilsProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport const UtilsProvider: React.FC<UtilsProviderProps> = ({ children }) => {\r\n return (\r\n <UtilsContext.Provider value={{ utils }}>{children}</UtilsContext.Provider>\r\n );\r\n};\r\n\r\n// Hook for using utils\r\nexport const useUtils = () => {\r\n const context = useContext(UtilsContext);\r\n if (context === undefined) {\r\n throw new Error(\"useUtils must be used within a UtilsProvider\");\r\n }\r\n return context.utils;\r\n};\r\n\r\n// 안전한 함수 가져오기 헬퍼\r\nconst safeGet = (obj: any, key: string, fallback?: any) => {\r\n return obj && typeof obj[key] === \"function\"\r\n ? obj[key]\r\n : fallback || (() => {});\r\n};\r\n\r\n// 개별 유틸리티 훅들 (선택사항)\r\nexport const useDateUtils = () => {\r\n const utils = useUtils();\r\n return {\r\n formatDate: safeGet(utils, \"formatDate\"),\r\n formatDateKorean: safeGet(utils, \"formatDateKorean\"),\r\n getCurrentDate: safeGet(utils, \"getCurrentDate\"),\r\n getCurrentDateString: safeGet(utils, \"getCurrentDateString\"),\r\n getRelativeTime: safeGet(utils, \"getRelativeTime\"),\r\n isToday: safeGet(utils, \"isToday\"),\r\n isThisWeek: safeGet(utils, \"isThisWeek\"),\r\n isThisMonth: safeGet(utils, \"isThisMonth\"),\r\n getDateDiff: safeGet(utils, \"getDateDiff\"),\r\n calculateAge: safeGet(utils, \"calculateAge\"),\r\n };\r\n};\r\n\r\nexport const useStringUtils = () => {\r\n const utils = useUtils();\r\n return {\r\n isEmpty: safeGet(utils, \"isEmpty\"),\r\n isNotEmpty: safeGet(utils, \"isNotEmpty\"),\r\n truncate: safeGet(utils, \"truncate\"),\r\n capitalize: safeGet(utils, \"capitalize\"),\r\n formatPhoneNumber: safeGet(utils, \"formatPhoneNumber\"),\r\n isValidEmail: safeGet(utils, \"isValidEmail\"),\r\n removeHtmlTags: safeGet(utils, \"removeHtmlTags\"),\r\n // UID 생성 함수들\r\n generateUID: safeGet(utils, \"generateUID\"),\r\n generateShortUID: safeGet(utils, \"generateShortUID\"),\r\n generateLongUID: safeGet(utils, \"generateLongUID\"),\r\n generateNumericUID: safeGet(utils, \"generateNumericUID\"),\r\n generateAlphanumericUID: safeGet(utils, \"generateAlphanumericUID\"),\r\n generateGUID: safeGet(utils, \"generateGUID\"),\r\n generateGUIDWithoutHyphens: safeGet(utils, \"generateGUIDWithoutHyphens\"),\r\n generateTimestampUID: safeGet(utils, \"generateTimestampUID\"),\r\n generateCustomUID: safeGet(utils, \"generateCustomUID\"),\r\n // 암호화 관련 함수들\r\n encryptSha256: safeGet(utils, \"encryptSha256\"),\r\n bxmEncrypt: safeGet(utils, \"bxmEncrypt\"),\r\n bxmDecrypt: safeGet(utils, \"bxmDecrypt\"),\r\n simpleEncrypt: safeGet(utils, \"simpleEncrypt\"),\r\n simpleDecrypt: safeGet(utils, \"simpleDecrypt\"),\r\n md5Hash: safeGet(utils, \"md5Hash\"),\r\n sha256Hash: safeGet(utils, \"sha256Hash\"),\r\n base64Encode: safeGet(utils, \"base64Encode\"),\r\n base64Decode: safeGet(utils, \"base64Decode\"),\r\n };\r\n};\r\n\r\nexport const useArrayUtils = () => {\r\n const utils = useUtils();\r\n return {\r\n isEmptyArray: safeGet(utils, \"isEmptyArray\"),\r\n isNotEmptyArray: safeGet(utils, \"isNotEmptyArray\"),\r\n unique: safeGet(utils, \"unique\"),\r\n shuffle: safeGet(utils, \"shuffle\"),\r\n sortBy: safeGet(utils, \"sortBy\"),\r\n max: safeGet(utils, \"max\"),\r\n min: safeGet(utils, \"min\"),\r\n average: safeGet(utils, \"average\"),\r\n sum: safeGet(utils, \"sum\"),\r\n };\r\n};\r\n\r\nexport const useCommonUtils = () => {\r\n const utils = useUtils();\r\n return {\r\n debounce: safeGet(utils, \"debounce\"),\r\n throttle: safeGet(utils, \"throttle\"),\r\n setLocalStorage: safeGet(utils, \"setLocalStorage\"),\r\n getLocalStorage: safeGet(utils, \"getLocalStorage\"),\r\n formatNumber: safeGet(utils, \"formatNumber\"),\r\n formatCurrency: safeGet(utils, \"formatCurrency\"),\r\n copyToClipboard: safeGet(utils, \"copyToClipboard\"),\r\n isMobile: safeGet(utils, \"isMobile\"),\r\n isDesktop: safeGet(utils, \"isDesktop\"),\r\n };\r\n};\r\n\r\nexport const useApiUtils = () => {\r\n const utils = useUtils();\r\n return {\r\n callService: safeGet(utils, \"callService\"),\r\n apiGet: safeGet(utils, \"apiGet\"),\r\n apiPost: safeGet(utils, \"apiPost\"),\r\n apiPut: safeGet(utils, \"apiPut\"),\r\n apiDelete: safeGet(utils, \"apiDelete\"),\r\n apiPatch: safeGet(utils, \"apiPatch\"),\r\n };\r\n};\r\n"],"names":["usePopupContext","usePopup","popups","activePopupId","setActivePopup","closePopup","openPopup","usePopupStore","showPopup","useCallback","popupCode","popParams","config","error","CommonCodeContext","createContext","CommonCodeProvider","children","codeData","isLoading","lastUpdated","getCodeList","getCodeListByOption","getCodeName","getCodeColor","getCodeByOption","getAvailableGroupCodes","getGridLookup","fetchCommonCodes","useCodeStore","contextValue","useCommonCode","context","useContext","useCodeList","useCodeName","useCodeColor","useCodeListByOption","useGridLookup","utils","dateUtils","stringUtils","arrayUtils.isEmptyArray","arrayUtils.isNotEmptyArray","arrayUtils.unique","arrayUtils.shuffle","arrayUtils.sortBy","arrayUtils.max","arrayUtils.min","arrayUtils.average","arrayUtils.sum","arrayUtils.randomFromArray","arrayUtils.flattenArray","objectUtils","commonUtils.debounce","commonUtils.throttle","commonUtils.setLocalStorage","commonUtils.getLocalStorage","commonUtils.formatNumber","commonUtils.formatCurrency","commonUtils.copyToClipboard","commonUtils.isMobile","commonUtils.isDesktop","apiUtils.callService","apiUtils.apiGet","apiUtils.apiPost","apiUtils.apiPut","apiUtils.apiDelete","apiUtils.apiPatch","UtilsContext","UtilsProvider","jsx","useUtils","safeGet","obj","key","fallback","useDateUtils","useStringUtils","useArrayUtils","useCommonUtils","useApiUtils"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { useCallback as P, createContext as g, useContext as d } from "react";
2
- import { u as v } from "./popupStore-Dp_fqtim.js";
2
+ import { u as v } from "./popupStore-BFIHOcoZ.js";
3
3
  import { j as y } from "./jsx-runtime-Dpn_P65e.js";
4
- import { u as L } from "./codeStore-bxk_q1sl.js";
5
- import { am as E, ap as S, ac as x, aI as A, aJ as I, ai as N, aF as T, aH as G, ad as k, aK as w, a6 as H, T as B, Z as M, Y as O, X as R, W, P as j, O as q, R as V, aL as F, aM as K, aN as z } from "./commonUtils-BV6WFv-z.js";
6
- import { S as J, Q, U as X, T as Y, R as Z, V as _, au as $ } from "./serviceConfig-BJBsdee_.js";
4
+ import { u as L } from "./codeStore-rU4v3QIA.js";
5
+ import { am as E, ap as S, ac as x, aI as A, aJ as I, ai as N, aF as T, aH as G, ad as k, aK as w, a6 as H, T as B, Z as M, Y as q, X as O, W as R, P as W, O as j, R as V, aL as F, aM as K, aN as z } from "./commonUtils-BV6WFv-z.js";
6
+ import { S as J, Q, U as X, T as Y, R as Z, V as _, aq as $ } from "./serviceConfig-lAlRNVIw.js";
7
7
  const ne = () => !1, ue = () => {
8
8
  const { popups: e, activePopupId: o, setActivePopup: a, closePopup: u, openPopup: i } = v(), c = P(
9
9
  async (m, p, l) => {
@@ -105,11 +105,11 @@ const ne = () => !1, ue = () => {
105
105
  isEmptyArray: K,
106
106
  isNotEmptyArray: F,
107
107
  unique: V,
108
- shuffle: q,
109
- sortBy: j,
110
- max: W,
111
- min: R,
112
- average: O,
108
+ shuffle: j,
109
+ sortBy: W,
110
+ max: R,
111
+ min: O,
112
+ average: q,
113
113
  sum: M,
114
114
  randomFromArray: B,
115
115
  flattenArray: H,
@@ -238,3 +238,4 @@ export {
238
238
  ue as m,
239
239
  r as u
240
240
  };
241
+ //# sourceMappingURL=UtilsContext-B9uAvAVF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UtilsContext-B9uAvAVF.js","sources":["../../src/provider/hooks/usePopup.ts","../../src/provider/contexts/CommonCodeContext.tsx","../../src/provider/contexts/UtilsContext.tsx"],"sourcesContent":["import { useCallback } from 'react';\r\nimport { usePopupStore, type PopupConfig } from '../../stores/popupStore';\r\n\r\n/**\r\n * 팝업 컨텍스트를 감지하는 훅\r\n * 팝업 내부에서 사용하면 true, 일반 페이지에서는 false 반환\r\n */\r\nexport const usePopupContext = (): boolean => {\r\n // 팝업 내부에서만 true를 반환하도록 수정\r\n // 현재는 팝업이 열려있으면 모든 컴포넌트가 팝업으로 인식되는 문제가 있음\r\n // 임시로 false 반환 (수동으로 isPopup prop 사용 권장)\r\n return false;\r\n};\r\n\r\n/**\r\n * 팝업 데이터와 이벤트를 관리하는 훅\r\n */\r\nexport const usePopup = () => {\r\n const { popups, activePopupId, setActivePopup, closePopup, openPopup } =\r\n usePopupStore();\r\n\r\n // 팝업 열기 함수\r\n const showPopup = useCallback(\r\n async (popupCode: string, popParams?: any, config?: PopupConfig) => {\r\n try {\r\n await openPopup(popupCode, popParams, config);\r\n } catch (error) {\r\n console.error('팝업 열기 실패:', error);\r\n throw error;\r\n }\r\n },\r\n [openPopup]\r\n );\r\n\r\n return {\r\n popups,\r\n activePopupId,\r\n setActivePopup,\r\n closePopup,\r\n showPopup,\r\n isPopup: popups.length > 0,\r\n };\r\n};\r\n","import { useCodeStore, type CommonCodeContextType } from '../../stores/codeStore';\r\nimport { createContext, useContext, ReactNode } from 'react';\r\n\r\n// 공통코드 컨텍스트 생성\r\nconst CommonCodeContext = createContext<CommonCodeContextType | undefined>(\r\n undefined\r\n);\r\n\r\n// 공통코드 컨텍스트 프로바이더 컴포넌트\r\ninterface CommonCodeProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport const CommonCodeProvider: React.FC<CommonCodeProviderProps> = ({\r\n children,\r\n}) => {\r\n const {\r\n codeData,\r\n isLoading,\r\n error,\r\n lastUpdated,\r\n getCodeList,\r\n getCodeListByOption,\r\n getCodeName,\r\n getCodeColor,\r\n getCodeByOption,\r\n getAvailableGroupCodes,\r\n getGridLookup,\r\n fetchCommonCodes,\r\n } = useCodeStore();\r\n\r\n const contextValue: CommonCodeContextType = {\r\n codeData,\r\n isLoading,\r\n error,\r\n lastUpdated,\r\n getCodeList,\r\n getCodeListByOption,\r\n getCodeName,\r\n getCodeColor,\r\n getCodeByOption,\r\n getAvailableGroupCodes,\r\n getGridLookup,\r\n refreshCodes: fetchCommonCodes,\r\n };\r\n\r\n return (\r\n <CommonCodeContext.Provider value={contextValue}>\r\n {children}\r\n </CommonCodeContext.Provider>\r\n );\r\n};\r\n\r\n// 공통코드 컨텍스트 사용 훅\r\nexport const useCommonCode = (): CommonCodeContextType => {\r\n const context = useContext(CommonCodeContext);\r\n if (context === undefined) {\r\n throw new Error('useCommonCode must be used within a CommonCodeProvider');\r\n }\r\n return context;\r\n};\r\n\r\n// 편의 훅들 (Fast Refresh 호환성을 위해 매개변수 없는 함수로 변경)\r\nexport const useCodeList = () => {\r\n const { getCodeList, isLoading, error } = useCommonCode();\r\n return {\r\n getCodeList,\r\n isLoading,\r\n error,\r\n };\r\n};\r\n\r\nexport const useCodeName = () => {\r\n const { getCodeName, isLoading, error } = useCommonCode();\r\n return {\r\n getCodeName,\r\n isLoading,\r\n error,\r\n };\r\n};\r\n\r\nexport const useCodeColor = () => {\r\n const { getCodeColor, isLoading, error } = useCommonCode();\r\n return {\r\n getCodeColor,\r\n isLoading,\r\n error,\r\n };\r\n};\r\n\r\nexport const useCodeListByOption = () => {\r\n const { getCodeListByOption, isLoading, error } = useCommonCode();\r\n return {\r\n getCodeListByOption,\r\n isLoading,\r\n error,\r\n };\r\n};\r\n\r\nexport const useGridLookup = () => {\r\n const { getGridLookup, isLoading, error } = useCommonCode();\r\n return {\r\n getGridLookup,\r\n isLoading,\r\n error,\r\n };\r\n};\r\n","import React, { createContext, useContext } from \"react\";\r\nimport type { ReactNode } from \"react\";\r\nimport * as dateUtils from \"../../utils/dateUtils\";\r\nimport * as stringUtils from \"../../utils/stringUtils\";\r\nimport * as arrayUtils from \"../../utils/arrayUtils\";\r\nimport * as objectUtils from \"../../utils/objectUtils\";\r\nimport * as commonUtils from \"../../utils/commonUtils\";\r\nimport * as apiUtils from \"../../utils/apiUtils\";\r\n\r\n// 모든 유틸리티 함수들을 하나의 객체로 결합 (충돌하는 함수명은 별칭 사용)\r\nconst utils = {\r\n // 날짜 유틸리티\r\n ...dateUtils,\r\n // 문자열 유틸리티\r\n ...stringUtils,\r\n // 배열 유틸리티 (충돌하는 함수명은 별칭 사용)\r\n isEmptyArray: arrayUtils.isEmptyArray,\r\n isNotEmptyArray: arrayUtils.isNotEmptyArray,\r\n unique: arrayUtils.unique,\r\n shuffle: arrayUtils.shuffle,\r\n sortBy: arrayUtils.sortBy,\r\n max: arrayUtils.max,\r\n min: arrayUtils.min,\r\n average: arrayUtils.average,\r\n sum: arrayUtils.sum,\r\n randomFromArray: arrayUtils.randomFromArray,\r\n flattenArray: arrayUtils.flattenArray,\r\n // 객체 유틸리티\r\n ...objectUtils,\r\n // 일반 유틸리티 (충돌하는 함수명은 별칭 사용)\r\n debounce: commonUtils.debounce,\r\n throttle: commonUtils.throttle,\r\n setLocalStorage: commonUtils.setLocalStorage,\r\n getLocalStorage: commonUtils.getLocalStorage,\r\n formatNumber: commonUtils.formatNumber,\r\n formatCurrency: commonUtils.formatCurrency,\r\n copyToClipboard: commonUtils.copyToClipboard,\r\n isMobile: commonUtils.isMobile,\r\n isDesktop: commonUtils.isDesktop,\r\n // API 유틸리티\r\n callService: apiUtils.callService,\r\n apiGet: apiUtils.apiGet,\r\n apiPost: apiUtils.apiPost,\r\n apiPut: apiUtils.apiPut,\r\n apiDelete: apiUtils.apiDelete,\r\n apiPatch: apiUtils.apiPatch,\r\n};\r\n\r\n// Context 타입 정의\r\ninterface UtilsContextType {\r\n utils: typeof utils;\r\n}\r\n\r\n// Context 생성\r\nconst UtilsContext = createContext<UtilsContextType | undefined>(undefined);\r\n\r\n// Provider 컴포넌트\r\ninterface UtilsProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport const UtilsProvider: React.FC<UtilsProviderProps> = ({ children }) => {\r\n return (\r\n <UtilsContext.Provider value={{ utils }}>{children}</UtilsContext.Provider>\r\n );\r\n};\r\n\r\n// Hook for using utils\r\nexport const useUtils = () => {\r\n const context = useContext(UtilsContext);\r\n if (context === undefined) {\r\n throw new Error(\"useUtils must be used within a UtilsProvider\");\r\n }\r\n return context.utils;\r\n};\r\n\r\n// 안전한 함수 가져오기 헬퍼\r\nconst safeGet = (obj: any, key: string, fallback?: any) => {\r\n return obj && typeof obj[key] === \"function\"\r\n ? obj[key]\r\n : fallback || (() => {});\r\n};\r\n\r\n// 개별 유틸리티 훅들 (선택사항)\r\nexport const useDateUtils = () => {\r\n const utils = useUtils();\r\n return {\r\n formatDate: safeGet(utils, \"formatDate\"),\r\n formatDateKorean: safeGet(utils, \"formatDateKorean\"),\r\n getCurrentDate: safeGet(utils, \"getCurrentDate\"),\r\n getCurrentDateString: safeGet(utils, \"getCurrentDateString\"),\r\n getRelativeTime: safeGet(utils, \"getRelativeTime\"),\r\n isToday: safeGet(utils, \"isToday\"),\r\n isThisWeek: safeGet(utils, \"isThisWeek\"),\r\n isThisMonth: safeGet(utils, \"isThisMonth\"),\r\n getDateDiff: safeGet(utils, \"getDateDiff\"),\r\n calculateAge: safeGet(utils, \"calculateAge\"),\r\n };\r\n};\r\n\r\nexport const useStringUtils = () => {\r\n const utils = useUtils();\r\n return {\r\n isEmpty: safeGet(utils, \"isEmpty\"),\r\n isNotEmpty: safeGet(utils, \"isNotEmpty\"),\r\n truncate: safeGet(utils, \"truncate\"),\r\n capitalize: safeGet(utils, \"capitalize\"),\r\n formatPhoneNumber: safeGet(utils, \"formatPhoneNumber\"),\r\n isValidEmail: safeGet(utils, \"isValidEmail\"),\r\n removeHtmlTags: safeGet(utils, \"removeHtmlTags\"),\r\n // UID 생성 함수들\r\n generateUID: safeGet(utils, \"generateUID\"),\r\n generateShortUID: safeGet(utils, \"generateShortUID\"),\r\n generateLongUID: safeGet(utils, \"generateLongUID\"),\r\n generateNumericUID: safeGet(utils, \"generateNumericUID\"),\r\n generateAlphanumericUID: safeGet(utils, \"generateAlphanumericUID\"),\r\n generateGUID: safeGet(utils, \"generateGUID\"),\r\n generateGUIDWithoutHyphens: safeGet(utils, \"generateGUIDWithoutHyphens\"),\r\n generateTimestampUID: safeGet(utils, \"generateTimestampUID\"),\r\n generateCustomUID: safeGet(utils, \"generateCustomUID\"),\r\n // 암호화 관련 함수들\r\n encryptSha256: safeGet(utils, \"encryptSha256\"),\r\n bxmEncrypt: safeGet(utils, \"bxmEncrypt\"),\r\n bxmDecrypt: safeGet(utils, \"bxmDecrypt\"),\r\n simpleEncrypt: safeGet(utils, \"simpleEncrypt\"),\r\n simpleDecrypt: safeGet(utils, \"simpleDecrypt\"),\r\n md5Hash: safeGet(utils, \"md5Hash\"),\r\n sha256Hash: safeGet(utils, \"sha256Hash\"),\r\n base64Encode: safeGet(utils, \"base64Encode\"),\r\n base64Decode: safeGet(utils, \"base64Decode\"),\r\n };\r\n};\r\n\r\nexport const useArrayUtils = () => {\r\n const utils = useUtils();\r\n return {\r\n isEmptyArray: safeGet(utils, \"isEmptyArray\"),\r\n isNotEmptyArray: safeGet(utils, \"isNotEmptyArray\"),\r\n unique: safeGet(utils, \"unique\"),\r\n shuffle: safeGet(utils, \"shuffle\"),\r\n sortBy: safeGet(utils, \"sortBy\"),\r\n max: safeGet(utils, \"max\"),\r\n min: safeGet(utils, \"min\"),\r\n average: safeGet(utils, \"average\"),\r\n sum: safeGet(utils, \"sum\"),\r\n };\r\n};\r\n\r\nexport const useCommonUtils = () => {\r\n const utils = useUtils();\r\n return {\r\n debounce: safeGet(utils, \"debounce\"),\r\n throttle: safeGet(utils, \"throttle\"),\r\n setLocalStorage: safeGet(utils, \"setLocalStorage\"),\r\n getLocalStorage: safeGet(utils, \"getLocalStorage\"),\r\n formatNumber: safeGet(utils, \"formatNumber\"),\r\n formatCurrency: safeGet(utils, \"formatCurrency\"),\r\n copyToClipboard: safeGet(utils, \"copyToClipboard\"),\r\n isMobile: safeGet(utils, \"isMobile\"),\r\n isDesktop: safeGet(utils, \"isDesktop\"),\r\n };\r\n};\r\n\r\nexport const useApiUtils = () => {\r\n const utils = useUtils();\r\n return {\r\n callService: safeGet(utils, \"callService\"),\r\n apiGet: safeGet(utils, \"apiGet\"),\r\n apiPost: safeGet(utils, \"apiPost\"),\r\n apiPut: safeGet(utils, \"apiPut\"),\r\n apiDelete: safeGet(utils, \"apiDelete\"),\r\n apiPatch: safeGet(utils, \"apiPatch\"),\r\n };\r\n};\r\n"],"names":["usePopupContext","usePopup","popups","activePopupId","setActivePopup","closePopup","openPopup","usePopupStore","showPopup","useCallback","popupCode","popParams","config","error","CommonCodeContext","createContext","CommonCodeProvider","children","codeData","isLoading","lastUpdated","getCodeList","getCodeListByOption","getCodeName","getCodeColor","getCodeByOption","getAvailableGroupCodes","getGridLookup","fetchCommonCodes","useCodeStore","contextValue","useCommonCode","context","useContext","useCodeList","useCodeName","useCodeColor","useCodeListByOption","useGridLookup","utils","dateUtils","stringUtils","arrayUtils.isEmptyArray","arrayUtils.isNotEmptyArray","arrayUtils.unique","arrayUtils.shuffle","arrayUtils.sortBy","arrayUtils.max","arrayUtils.min","arrayUtils.average","arrayUtils.sum","arrayUtils.randomFromArray","arrayUtils.flattenArray","objectUtils","commonUtils.debounce","commonUtils.throttle","commonUtils.setLocalStorage","commonUtils.getLocalStorage","commonUtils.formatNumber","commonUtils.formatCurrency","commonUtils.copyToClipboard","commonUtils.isMobile","commonUtils.isDesktop","apiUtils.callService","apiUtils.apiGet","apiUtils.apiPost","apiUtils.apiPut","apiUtils.apiDelete","apiUtils.apiPatch","UtilsContext","UtilsProvider","jsx","useUtils","safeGet","obj","key","fallback","useDateUtils","useStringUtils","useArrayUtils","useCommonUtils","useApiUtils"],"mappings":"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"}
@@ -4,3 +4,4 @@ function e(t) {
4
4
  export {
5
5
  e as g
6
6
  };
7
+ //# sourceMappingURL=_commonjsHelpers-C6fGbg64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_commonjsHelpers-C6fGbg64.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1 +1,2 @@
1
1
  "use strict";function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}exports.getDefaultExportFromCjs=e;
2
+ //# sourceMappingURL=_commonjsHelpers-DwGv2jUC.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_commonjsHelpers-DwGv2jUC.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1 +1,2 @@
1
- "use strict";const D=require("zustand"),S=require("./serviceConfig-Cr2P4yr4.cjs"),O={CACHE_SIZE_LIMIT:1e3},t={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 s=Array.from(this.cacheHits.entries());s.sort((e,c)=>e[1]-c[1]),s.slice(0,Math.floor(s.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(s){return this.loadedGroups.has(s)},markGroupLoaded(s){this.loadedGroups.add(s)}},_=s=>{console.log("대규모 데이터 변환 시작:",s);const p={};if(s&&s.code&&Array.isArray(s.code)){const e=s.code,c=s.opt||[],o=new Map;c.forEach(a=>{a.cmmnCd&&a.enblYn==="Y"&&(o.has(a.cmmnCd)||o.set(a.cmmnCd,[]),o.get(a.cmmnCd).push(a))}),e.forEach(a=>{if(a&&a.cmmnCdGrp&&a.cmmnCd&&a.enblYn==="Y"){const n=a.cmmnCdGrp;p[n]||(p[n]={});const d=(o.get(a.cmmnCd)||[]).reduce((i,l)=>(l.optnCd&&l.optnNm&&(i[l.optnCd]=l.optnNm),i),{});p[n][a.cmmnCd]={codeValue:a.cmmnCd,codeNm:a.cmmnCdNm,groupCode:a.cmmnCdGrp,commonCode:a.cmmnCd,labelColor:a.cmmnCdClr,systemCodeYn:a.syscdYn,sortOrder:parseInt(a.sortOrd)||1,enabled:a.enblYn==="Y",options:Object.keys(d).length>0?d:null,originalData:a}}})}return console.log("대규모 데이터 변환 완료:",p),p},r=D.create()(S.persist((s,p)=>({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set,fetchData:async()=>{s({isLoading:!0,error:null});try{console.log("대규모 공통코드 데이터 가져오기 시작: SCMSIGN00301");const e=await S.callService(S.getServiceCode("SRCH_CODE"),{crprCd:"100"});console.log("대규모 공통코드 응답:",e),console.log("대규모 공통코드목록:",e.code),console.log("대규모 공통코드옵션션목록:",e.opt);const c=_(e);t.clearCache();const o=new Set(Object.keys(c));o.forEach(a=>{t.markGroupLoaded(a)}),s({codeData:c,isLoading:!1,error:null,lastUpdated:new Date,loadedGroups:o}),console.log("대규모 공통코드 데이터 가져오기 완료")}catch(e){console.error("대규모 공통코드 데이터 가져오기 실패:",e),s({isLoading:!1,error:e instanceof Error?e.message:"대규모 공통코드 데이터 가져오기 실패"})}},loadSpecificGroup:async e=>{const{codeData:c,loadedGroups:o}=p();if(!c||o.has(e))return;const a=new Set(o).add(e);s({loadedGroups:a}),t.markGroupLoaded(e)},setData:e=>{t.clearCache();const c=new Set(Object.keys(e));c.forEach(o=>{t.markGroupLoaded(o)}),s({codeData:e,lastUpdated:new Date,loadedGroups:c})},clearData:()=>{t.clearCache(),s({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set})},getLoadedGroups:()=>Array.from(p().loadedGroups)}),{name:"large-data-storage",partialize:s=>({codeData:s.codeData,lastUpdated:s.lastUpdated,loadedGroups:Array.from(s.loadedGroups)})})),b=D.create()(S.persist((s,p)=>({get codeData(){return r.getState().codeData},get isLoading(){return r.getState().isLoading},get error(){return r.getState().error},get lastUpdated(){return r.getState().lastUpdated},fetchCommonCodes:async()=>{await r.getState().fetchData()},getCodeList:(e,c)=>{const{enabledOnly:o=!0,systemCodeOnly:a=!1,sortByOrder:n=!1,excludeParentCode:u=!1}=c||{},d=`simpleCodeList_${e}_${o}_${a}_${n}_${u}`;if(t.optionCache.has(d)){const h=t.cacheHits.get(d)||0;return t.cacheHits.set(d,h+1),t.optionCache.get(d)}const i=r.getState().codeData;if(!i)return[];if(!t.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const l=[],f=i[e];f&&Object.values(f).forEach(h=>{if(!(o&&!h.enabled)&&!(a&&h.systemCodeYn!=="Y"))if(u){const m=e.length,H=h.codeValue.substring(m);H.length>0&&l.push({...h,codeValue:H})}else l.push(h)});let g;n?g=l.sort((h,m)=>h.sortOrder!==m.sortOrder?h.sortOrder-m.sortOrder:h.codeValue.localeCompare(m.codeValue)):g=l.sort((h,m)=>h.codeValue.localeCompare(m.codeValue));const C=g.map(h=>({label:h.codeNm,value:h.codeValue,tagColor:h.labelColor}));return t.optionCache.size>=O.CACHE_SIZE_LIMIT&&t.cleanupCache(),t.optionCache.set(d,C),t.cacheHits.set(d,1),C},getCodeName:e=>{if(t.nameCache.has(e)){const o=t.cacheHits.get(`name_${e}`)||0;return t.cacheHits.set(`name_${e}`,o+1),t.nameCache.get(e)}const c=r.getState().codeData;if(!c)return null;for(const o of Object.values(c))for(const a of Object.values(o))if(a.codeValue===e)return t.nameCache.set(e,a.codeNm),t.cacheHits.set(`name_${e}`,1),a.codeNm;return null},getCodeColor:e=>{if(t.colorCache.has(e)){const o=t.cacheHits.get(`color_${e}`)||0;return t.cacheHits.set(`color_${e}`,o+1),t.colorCache.get(e)}const c=r.getState().codeData;if(!c)return null;for(const o of Object.values(c))for(const a of Object.values(o))if(a.codeValue===e)return t.colorCache.set(e,a.labelColor||""),t.cacheHits.set(`color_${e}`,1),a.labelColor;return null},getGridLookup:e=>{const c=`gridLookup_${e}`;if(t.optionCache.has(c)){const i=t.cacheHits.get(c)||0;return t.cacheHits.set(c,i+1),t.optionCache.get(c)}const o=r.getState().codeData;if(!o)return{labels:[],values:[],lookupDisplay:!0};const a=o[e];if(!a)return{labels:[],values:[],lookupDisplay:!0};const n=[],u=[];Object.values(a).filter(i=>i.enabled).sort((i,l)=>i.sortOrder-l.sortOrder).forEach(i=>{n.push(i.codeNm),u.push(i.codeValue)});const d={labels:n,values:u,lookupDisplay:!0};return t.optionCache.set(c,d),t.cacheHits.set(c,1),d},getCodeByOption:(e,c,o)=>{const a=`codeByOption_${e}_${c}_${o}`;if(t.codeCache.has(a)){const l=t.cacheHits.get(a)||0;return t.cacheHits.set(a,l+1),t.codeCache.get(a)}const n=r.getState().codeData;if(!n)return[];const u=[],d=n[e];d&&Object.values(d).forEach(l=>{l.enabled&&l.options&&l.options[c]===o&&u.push({...l,codeNm:l.options[c]||l.codeNm})});const i=u.sort((l,f)=>l.codeValue.localeCompare(f.codeValue));return t.codeCache.size>=O.CACHE_SIZE_LIMIT&&t.cleanupCache(),t.codeCache.set(a,i),t.cacheHits.set(a,1),i},getCodeListByOption:(e,c,o)=>{const{enabledOnly:a=!0,systemCodeOnly:n=!1,sortByOrder:u=!1}=o||{},d=`codeListByOption_${e}_${c}_${a}_${n}_${u}`;if(t.codeCache.has(d)){const C=t.cacheHits.get(d)||0;return t.cacheHits.set(d,C+1),t.codeCache.get(d)}const i=r.getState().codeData;if(!i)return[];if(!t.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const l=[],f=i[e];f&&Object.values(f).forEach(C=>{a&&!C.enabled||n&&C.systemCodeYn!=="Y"||C.options&&C.options[c]&&l.push({label:C.options[c],value:C.commonCode,tagColor:C.labelColor})});let g;return u?g=l.sort((C,h)=>C.value.localeCompare(h.value)):g=l.sort((C,h)=>C.value.localeCompare(h.value)),t.codeCache.size>=O.CACHE_SIZE_LIMIT&&t.cleanupCache(),t.codeCache.set(d,g),t.cacheHits.set(d,1),g},getAvailableGroupCodes:()=>{const e="available_group_codes";if(t.nameCache.has(e)){const a=t.cacheHits.get(e)||0;return t.cacheHits.set(e,a+1),JSON.parse(t.nameCache.get(e))}const c=r.getState().codeData;if(!c)return[];const o=Object.keys(c).sort();return t.nameCache.set(e,JSON.stringify(o)),t.cacheHits.set(e,1),o},clearCodes:()=>{r.getState().clearData()}}),{name:"code-storage",partialize:s=>({})})),y=D.create()(S.persist((s,p)=>({get codeData(){return r.getState().codeData},get isLoading(){return r.getState().isLoading},get error(){return r.getState().error},get lastUpdated(){return r.getState().lastUpdated},fetchCommonCodes:async()=>{await r.getState().fetchData()},getOptionValue:(e,c)=>{const o=`option_${e}_${c}`;if(t.optionCache.has(o)){const u=t.cacheHits.get(o)||0;return t.cacheHits.set(o,u+1),t.optionCache.get(o)}const a=r.getState().codeData;if(!a)return null;const n=a[e];if(n&&n[c]){const u=n[c].options;return t.optionCache.set(o,u),t.cacheHits.set(o,1),u}return null},getOptionByKey:(e,c,o)=>{const a=`option_${e}_${c}_${o}`;if(t.optionCache.has(a)){const d=t.cacheHits.get(a)||0;return t.cacheHits.set(a,d+1),t.optionCache.get(a)}const n=p().getOptionValue(e,c),u=n?n[o]:null;return t.optionCache.set(a,u),t.cacheHits.set(a,1),u},clearCodes:()=>{r.getState().clearData()}}),{name:"option-storage",partialize:s=>({})})),L=D.create()(S.persist((s,p)=>({get codeData(){return r.getState().codeData},get isLoading(){return r.getState().isLoading},get error(){return r.getState().error},get lastUpdated(){return r.getState().lastUpdated},fetchCommonCodes:async()=>{await r.getState().fetchData()},getColorCode:e=>{if(t.colorCache.has(e)){const o=t.cacheHits.get(`color_${e}`)||0;return t.cacheHits.set(`color_${e}`,o+1),t.colorCache.get(e)}const c=r.getState().codeData;if(!c)return null;for(const o of Object.values(c))for(const a of Object.values(o))if(a.codeValue===e)return t.colorCache.set(e,a.labelColor||""),t.cacheHits.set(`color_${e}`,1),a.labelColor;return null},getColorMapping:()=>{const e="color_mapping";if(t.optionCache.has(e)){const a=t.cacheHits.get(e)||0;return t.cacheHits.set(e,a+1),t.optionCache.get(e)}const c=r.getState().codeData;if(!c)return[];const o=[];return Object.values(c).forEach(a=>{Object.values(a).forEach(n=>{n.labelColor&&o.push({code:n.codeValue,color:n.labelColor})})}),t.optionCache.set(e,o),t.cacheHits.set(e,1),o},clearCodes:()=>{r.getState().clearData()}}),{name:"color-storage",partialize:s=>({})}));exports.useCodeStore=b;exports.useColorStore=L;exports.useOptionStore=y;
1
+ "use strict";const D=require("zustand"),S=require("./serviceConfig-Cc8jfw_Y.cjs"),O={CACHE_SIZE_LIMIT:1e3},t={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 s=Array.from(this.cacheHits.entries());s.sort((e,c)=>e[1]-c[1]),s.slice(0,Math.floor(s.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(s){return this.loadedGroups.has(s)},markGroupLoaded(s){this.loadedGroups.add(s)}},_=s=>{console.log("대규모 데이터 변환 시작:",s);const p={};if(s&&s.code&&Array.isArray(s.code)){const e=s.code,c=s.opt||[],o=new Map;c.forEach(a=>{a.cmmnCd&&a.enblYn==="Y"&&(o.has(a.cmmnCd)||o.set(a.cmmnCd,[]),o.get(a.cmmnCd).push(a))}),e.forEach(a=>{if(a&&a.cmmnCdGrp&&a.cmmnCd&&a.enblYn==="Y"){const n=a.cmmnCdGrp;p[n]||(p[n]={});const d=(o.get(a.cmmnCd)||[]).reduce((i,l)=>(l.optnCd&&l.optnNm&&(i[l.optnCd]=l.optnNm),i),{});p[n][a.cmmnCd]={codeValue:a.cmmnCd,codeNm:a.cmmnCdNm,groupCode:a.cmmnCdGrp,commonCode:a.cmmnCd,labelColor:a.cmmnCdClr,systemCodeYn:a.syscdYn,sortOrder:parseInt(a.sortOrd)||1,enabled:a.enblYn==="Y",options:Object.keys(d).length>0?d:null,originalData:a}}})}return console.log("대규모 데이터 변환 완료:",p),p},r=D.create()(S.persist((s,p)=>({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set,fetchData:async()=>{s({isLoading:!0,error:null});try{console.log("대규모 공통코드 데이터 가져오기 시작: SCMSIGN00301");const e=await S.callService(S.getServiceCode("SRCH_CODE"),{crprCd:"100"});console.log("대규모 공통코드 응답:",e),console.log("대규모 공통코드목록:",e.code),console.log("대규모 공통코드옵션션목록:",e.opt);const c=_(e);t.clearCache();const o=new Set(Object.keys(c));o.forEach(a=>{t.markGroupLoaded(a)}),s({codeData:c,isLoading:!1,error:null,lastUpdated:new Date,loadedGroups:o}),console.log("대규모 공통코드 데이터 가져오기 완료")}catch(e){console.error("대규모 공통코드 데이터 가져오기 실패:",e),s({isLoading:!1,error:e instanceof Error?e.message:"대규모 공통코드 데이터 가져오기 실패"})}},loadSpecificGroup:async e=>{const{codeData:c,loadedGroups:o}=p();if(!c||o.has(e))return;const a=new Set(o).add(e);s({loadedGroups:a}),t.markGroupLoaded(e)},setData:e=>{t.clearCache();const c=new Set(Object.keys(e));c.forEach(o=>{t.markGroupLoaded(o)}),s({codeData:e,lastUpdated:new Date,loadedGroups:c})},clearData:()=>{t.clearCache(),s({codeData:null,isLoading:!1,error:null,lastUpdated:null,loadedGroups:new Set})},getLoadedGroups:()=>Array.from(p().loadedGroups)}),{name:"large-data-storage",partialize:s=>({codeData:s.codeData,lastUpdated:s.lastUpdated,loadedGroups:Array.from(s.loadedGroups)})})),b=D.create()(S.persist((s,p)=>({get codeData(){return r.getState().codeData},get isLoading(){return r.getState().isLoading},get error(){return r.getState().error},get lastUpdated(){return r.getState().lastUpdated},fetchCommonCodes:async()=>{await r.getState().fetchData()},getCodeList:(e,c)=>{const{enabledOnly:o=!0,systemCodeOnly:a=!1,sortByOrder:n=!1,excludeParentCode:u=!1}=c||{},d=`simpleCodeList_${e}_${o}_${a}_${n}_${u}`;if(t.optionCache.has(d)){const h=t.cacheHits.get(d)||0;return t.cacheHits.set(d,h+1),t.optionCache.get(d)}const i=r.getState().codeData;if(!i)return[];if(!t.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const l=[],f=i[e];f&&Object.values(f).forEach(h=>{if(!(o&&!h.enabled)&&!(a&&h.systemCodeYn!=="Y"))if(u){const m=e.length,H=h.codeValue.substring(m);H.length>0&&l.push({...h,codeValue:H})}else l.push(h)});let g;n?g=l.sort((h,m)=>h.sortOrder!==m.sortOrder?h.sortOrder-m.sortOrder:h.codeValue.localeCompare(m.codeValue)):g=l.sort((h,m)=>h.codeValue.localeCompare(m.codeValue));const C=g.map(h=>({label:h.codeNm,value:h.codeValue,tagColor:h.labelColor}));return t.optionCache.size>=O.CACHE_SIZE_LIMIT&&t.cleanupCache(),t.optionCache.set(d,C),t.cacheHits.set(d,1),C},getCodeName:e=>{if(t.nameCache.has(e)){const o=t.cacheHits.get(`name_${e}`)||0;return t.cacheHits.set(`name_${e}`,o+1),t.nameCache.get(e)}const c=r.getState().codeData;if(!c)return null;for(const o of Object.values(c))for(const a of Object.values(o))if(a.codeValue===e)return t.nameCache.set(e,a.codeNm),t.cacheHits.set(`name_${e}`,1),a.codeNm;return null},getCodeColor:e=>{if(t.colorCache.has(e)){const o=t.cacheHits.get(`color_${e}`)||0;return t.cacheHits.set(`color_${e}`,o+1),t.colorCache.get(e)}const c=r.getState().codeData;if(!c)return null;for(const o of Object.values(c))for(const a of Object.values(o))if(a.codeValue===e)return t.colorCache.set(e,a.labelColor||""),t.cacheHits.set(`color_${e}`,1),a.labelColor;return null},getGridLookup:e=>{const c=`gridLookup_${e}`;if(t.optionCache.has(c)){const i=t.cacheHits.get(c)||0;return t.cacheHits.set(c,i+1),t.optionCache.get(c)}const o=r.getState().codeData;if(!o)return{labels:[],values:[],lookupDisplay:!0};const a=o[e];if(!a)return{labels:[],values:[],lookupDisplay:!0};const n=[],u=[];Object.values(a).filter(i=>i.enabled).sort((i,l)=>i.sortOrder-l.sortOrder).forEach(i=>{n.push(i.codeNm),u.push(i.codeValue)});const d={labels:n,values:u,lookupDisplay:!0};return t.optionCache.set(c,d),t.cacheHits.set(c,1),d},getCodeByOption:(e,c,o)=>{const a=`codeByOption_${e}_${c}_${o}`;if(t.codeCache.has(a)){const l=t.cacheHits.get(a)||0;return t.cacheHits.set(a,l+1),t.codeCache.get(a)}const n=r.getState().codeData;if(!n)return[];const u=[],d=n[e];d&&Object.values(d).forEach(l=>{l.enabled&&l.options&&l.options[c]===o&&u.push({...l,codeNm:l.options[c]||l.codeNm})});const i=u.sort((l,f)=>l.codeValue.localeCompare(f.codeValue));return t.codeCache.size>=O.CACHE_SIZE_LIMIT&&t.cleanupCache(),t.codeCache.set(a,i),t.cacheHits.set(a,1),i},getCodeListByOption:(e,c,o)=>{const{enabledOnly:a=!0,systemCodeOnly:n=!1,sortByOrder:u=!1}=o||{},d=`codeListByOption_${e}_${c}_${a}_${n}_${u}`;if(t.codeCache.has(d)){const C=t.cacheHits.get(d)||0;return t.cacheHits.set(d,C+1),t.codeCache.get(d)}const i=r.getState().codeData;if(!i)return[];if(!t.isGroupLoaded(e)&&!i[e])return console.warn(`그룹 ${e}가 아직 로드되지 않았습니다.`),[];const l=[],f=i[e];f&&Object.values(f).forEach(C=>{a&&!C.enabled||n&&C.systemCodeYn!=="Y"||C.options&&C.options[c]&&l.push({label:C.options[c],value:C.commonCode,tagColor:C.labelColor})});let g;return u?g=l.sort((C,h)=>C.value.localeCompare(h.value)):g=l.sort((C,h)=>C.value.localeCompare(h.value)),t.codeCache.size>=O.CACHE_SIZE_LIMIT&&t.cleanupCache(),t.codeCache.set(d,g),t.cacheHits.set(d,1),g},getAvailableGroupCodes:()=>{const e="available_group_codes";if(t.nameCache.has(e)){const a=t.cacheHits.get(e)||0;return t.cacheHits.set(e,a+1),JSON.parse(t.nameCache.get(e))}const c=r.getState().codeData;if(!c)return[];const o=Object.keys(c).sort();return t.nameCache.set(e,JSON.stringify(o)),t.cacheHits.set(e,1),o},clearCodes:()=>{r.getState().clearData()}}),{name:"code-storage",partialize:s=>({})})),y=D.create()(S.persist((s,p)=>({get codeData(){return r.getState().codeData},get isLoading(){return r.getState().isLoading},get error(){return r.getState().error},get lastUpdated(){return r.getState().lastUpdated},fetchCommonCodes:async()=>{await r.getState().fetchData()},getOptionValue:(e,c)=>{const o=`option_${e}_${c}`;if(t.optionCache.has(o)){const u=t.cacheHits.get(o)||0;return t.cacheHits.set(o,u+1),t.optionCache.get(o)}const a=r.getState().codeData;if(!a)return null;const n=a[e];if(n&&n[c]){const u=n[c].options;return t.optionCache.set(o,u),t.cacheHits.set(o,1),u}return null},getOptionByKey:(e,c,o)=>{const a=`option_${e}_${c}_${o}`;if(t.optionCache.has(a)){const d=t.cacheHits.get(a)||0;return t.cacheHits.set(a,d+1),t.optionCache.get(a)}const n=p().getOptionValue(e,c),u=n?n[o]:null;return t.optionCache.set(a,u),t.cacheHits.set(a,1),u},clearCodes:()=>{r.getState().clearData()}}),{name:"option-storage",partialize:s=>({})})),L=D.create()(S.persist((s,p)=>({get codeData(){return r.getState().codeData},get isLoading(){return r.getState().isLoading},get error(){return r.getState().error},get lastUpdated(){return r.getState().lastUpdated},fetchCommonCodes:async()=>{await r.getState().fetchData()},getColorCode:e=>{if(t.colorCache.has(e)){const o=t.cacheHits.get(`color_${e}`)||0;return t.cacheHits.set(`color_${e}`,o+1),t.colorCache.get(e)}const c=r.getState().codeData;if(!c)return null;for(const o of Object.values(c))for(const a of Object.values(o))if(a.codeValue===e)return t.colorCache.set(e,a.labelColor||""),t.cacheHits.set(`color_${e}`,1),a.labelColor;return null},getColorMapping:()=>{const e="color_mapping";if(t.optionCache.has(e)){const a=t.cacheHits.get(e)||0;return t.cacheHits.set(e,a+1),t.optionCache.get(e)}const c=r.getState().codeData;if(!c)return[];const o=[];return Object.values(c).forEach(a=>{Object.values(a).forEach(n=>{n.labelColor&&o.push({code:n.codeValue,color:n.labelColor})})}),t.optionCache.set(e,o),t.cacheHits.set(e,1),o},clearCodes:()=>{r.getState().clearData()}}),{name:"color-storage",partialize:s=>({})}));exports.useCodeStore=b;exports.useColorStore=L;exports.useOptionStore=y;
2
+ //# sourceMappingURL=codeStore-BG8S_mdS.cjs.map