@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.
- package/dist/chunks/AuthContext-CXng9fj0.cjs +2 -0
- package/dist/chunks/AuthContext-CXng9fj0.cjs.map +1 -0
- package/dist/chunks/AuthContext-Ei2P-z4d.js +53 -0
- package/dist/chunks/AuthContext-Ei2P-z4d.js.map +1 -0
- package/dist/chunks/BwgLargeUploader-CaH2F8x6.cjs +3 -0
- package/dist/chunks/BwgLargeUploader-CaH2F8x6.cjs.map +1 -0
- package/dist/chunks/BwgLargeUploader-CwaZ2WwY.js +3316 -0
- package/dist/chunks/BwgLargeUploader-CwaZ2WwY.js.map +1 -0
- package/dist/chunks/BwgSpace-CnLM4qcg.js +1 -0
- package/dist/chunks/BwgSpace-CnLM4qcg.js.map +1 -0
- package/dist/chunks/BwgSpace-b0hmM1Ht.cjs +1 -0
- package/dist/chunks/BwgSpace-b0hmM1Ht.cjs.map +1 -0
- package/dist/chunks/FileUtils-CmK-zHC5.cjs +2 -0
- package/dist/chunks/FileUtils-CmK-zHC5.cjs.map +1 -0
- package/dist/chunks/FileUtils-DsA-Sw37.js +141 -0
- package/dist/chunks/FileUtils-DsA-Sw37.js.map +1 -0
- package/dist/chunks/PublicLayout-BiTPwkVq.cjs +36 -0
- package/dist/chunks/PublicLayout-BiTPwkVq.cjs.map +1 -0
- package/dist/chunks/PublicLayout-g9WMtoZ0.js +139 -0
- package/dist/chunks/PublicLayout-g9WMtoZ0.js.map +1 -0
- package/dist/chunks/SSOHandler-CpCGcq5k.cjs +184 -0
- package/dist/chunks/SSOHandler-CpCGcq5k.cjs.map +1 -0
- package/dist/chunks/{QuickServiceToggle-y7esp1kp.js → SSOHandler-CvYiloZ5.js} +14832 -14630
- package/dist/chunks/SSOHandler-CvYiloZ5.js.map +1 -0
- package/dist/chunks/ScreenProtectContext-ofv2QgMp.cjs +2 -0
- package/dist/chunks/ScreenProtectContext-ofv2QgMp.cjs.map +1 -0
- package/dist/chunks/ScreenProtectContext-zByHldrr.js +115 -0
- package/dist/chunks/ScreenProtectContext-zByHldrr.js.map +1 -0
- package/dist/chunks/{ServiceCodeContext-CDZMr3Mm.js → SearchBoxContext-CzDzVCVm.js} +40 -39
- package/dist/chunks/SearchBoxContext-CzDzVCVm.js.map +1 -0
- package/dist/chunks/SearchBoxContext-mcPWk862.cjs +2 -0
- package/dist/chunks/SearchBoxContext-mcPWk862.cjs.map +1 -0
- package/dist/chunks/{UtilsContext-B16Gh9LL.cjs → UtilsContext-B6P_aohP.cjs} +2 -1
- package/dist/chunks/UtilsContext-B6P_aohP.cjs.map +1 -0
- package/dist/chunks/{UtilsContext-BbfZYiMR.js → UtilsContext-B9uAvAVF.js} +10 -9
- package/dist/chunks/UtilsContext-B9uAvAVF.js.map +1 -0
- package/dist/chunks/_commonjsHelpers-C6fGbg64.js +1 -0
- package/dist/chunks/_commonjsHelpers-C6fGbg64.js.map +1 -0
- package/dist/chunks/_commonjsHelpers-DwGv2jUC.cjs +1 -0
- package/dist/chunks/_commonjsHelpers-DwGv2jUC.cjs.map +1 -0
- package/dist/chunks/{codeStore-Dt6j826J.cjs → codeStore-BG8S_mdS.cjs} +2 -1
- package/dist/chunks/codeStore-BG8S_mdS.cjs.map +1 -0
- package/dist/chunks/{codeStore-bxk_q1sl.js → codeStore-rU4v3QIA.js} +2 -1
- package/dist/chunks/codeStore-rU4v3QIA.js.map +1 -0
- package/dist/chunks/commonUtils-BV6WFv-z.js +1 -0
- package/dist/chunks/commonUtils-BV6WFv-z.js.map +1 -0
- package/dist/chunks/commonUtils-L9Jgc5y-.cjs +1 -0
- package/dist/chunks/commonUtils-L9Jgc5y-.cjs.map +1 -0
- package/dist/chunks/envUtils-C9Gf5aek.js +30 -0
- package/dist/chunks/envUtils-C9Gf5aek.js.map +1 -0
- package/dist/chunks/envUtils-CduTHoHu.cjs +2 -0
- package/dist/chunks/envUtils-CduTHoHu.cjs.map +1 -0
- package/dist/chunks/jsx-runtime-CeSfJrVB.cjs +1 -0
- package/dist/chunks/jsx-runtime-CeSfJrVB.cjs.map +1 -0
- package/dist/chunks/jsx-runtime-Dpn_P65e.js +1 -0
- package/dist/chunks/jsx-runtime-Dpn_P65e.js.map +1 -0
- package/dist/chunks/menuStore-CBvENehP.cjs +2 -0
- package/dist/chunks/menuStore-CBvENehP.cjs.map +1 -0
- package/dist/chunks/{favoriteStore-CguRSEcH.js → menuStore-CvQrMo35.js} +137 -123
- package/dist/chunks/menuStore-CvQrMo35.js.map +1 -0
- package/dist/chunks/{popupStore-CVD8SPTa.cjs → popupStore--hKZUZcO.cjs} +2 -1
- package/dist/chunks/popupStore--hKZUZcO.cjs.map +1 -0
- package/dist/chunks/{popupStore-Dp_fqtim.js → popupStore-BFIHOcoZ.js} +2 -1
- package/dist/chunks/popupStore-BFIHOcoZ.js.map +1 -0
- package/dist/chunks/realFormat-Cha7OTd9.cjs +1 -0
- package/dist/chunks/realFormat-Cha7OTd9.cjs.map +1 -0
- package/dist/chunks/realFormat-DRGLFabQ.js +1 -0
- package/dist/chunks/realFormat-DRGLFabQ.js.map +1 -0
- package/dist/chunks/serviceConfig-Cc8jfw_Y.cjs +3 -0
- package/dist/chunks/serviceConfig-Cc8jfw_Y.cjs.map +1 -0
- package/dist/chunks/{serviceConfig-BJBsdee_.js → serviceConfig-lAlRNVIw.js} +177 -206
- package/dist/chunks/serviceConfig-lAlRNVIw.js.map +1 -0
- package/dist/components/common/BwgButtonGroup.d.ts +1 -0
- package/dist/components/common/BwgButtonGroup.d.ts.map +1 -0
- package/dist/components/common/BwgCmptArea.d.ts +85 -6
- package/dist/components/common/BwgCmptArea.d.ts.map +1 -0
- package/dist/components/common/BwgCol.d.ts +20 -0
- package/dist/components/common/BwgCol.d.ts.map +1 -0
- package/dist/components/common/BwgConfigProvider.d.ts +3 -1
- package/dist/components/common/BwgConfigProvider.d.ts.map +1 -0
- package/dist/components/common/BwgDrawer.d.ts +1 -0
- package/dist/components/common/BwgDrawer.d.ts.map +1 -0
- package/dist/components/common/BwgGrid.d.ts +10 -4
- package/dist/components/common/BwgGrid.d.ts.map +1 -0
- package/dist/components/common/BwgInfoArea.d.ts +3 -1
- package/dist/components/common/BwgInfoArea.d.ts.map +1 -0
- package/dist/components/common/BwgPopup.d.ts +1 -0
- package/dist/components/common/BwgPopup.d.ts.map +1 -0
- package/dist/components/common/BwgRow.d.ts +20 -0
- package/dist/components/common/BwgRow.d.ts.map +1 -0
- package/dist/components/common/BwgSpace.d.ts +1 -0
- package/dist/components/common/BwgSpace.d.ts.map +1 -0
- package/dist/components/common/BwgTable.d.ts +1 -0
- package/dist/components/common/BwgTable.d.ts.map +1 -0
- package/dist/components/common/BwgTabs.d.ts +1 -0
- package/dist/components/common/BwgTabs.d.ts.map +1 -0
- package/dist/components/common/BwgTitleBox.d.ts +6 -1
- package/dist/components/common/BwgTitleBox.d.ts.map +1 -0
- package/dist/components/common/BwgView.d.ts +3 -13
- package/dist/components/common/BwgView.d.ts.map +1 -0
- package/dist/components/common/ContentBox.d.ts +1 -0
- package/dist/components/common/ContentBox.d.ts.map +1 -0
- package/dist/components/common/ContentLayOut.d.ts +1 -0
- package/dist/components/common/ContentLayOut.d.ts.map +1 -0
- package/dist/components/common/GlobalConfigProvider.d.ts +1 -0
- package/dist/components/common/GlobalConfigProvider.d.ts.map +1 -0
- package/dist/components/common/QuickServiceToggle.d.ts +1 -0
- package/dist/components/common/QuickServiceToggle.d.ts.map +1 -0
- package/dist/components/common/SSOHandler.d.ts +3 -0
- package/dist/components/common/SSOHandler.d.ts.map +1 -0
- package/dist/components/common/SearchBox.d.ts +60 -7
- package/dist/components/common/SearchBox.d.ts.map +1 -0
- package/dist/components/common/index.cjs +2 -1
- package/dist/components/common/index.cjs.map +1 -0
- package/dist/components/common/index.d.ts +20 -16
- package/dist/components/common/index.d.ts.map +1 -0
- package/dist/components/common/index.js +21 -17
- package/dist/components/common/index.js.map +1 -0
- package/dist/components/core/BwgButton.d.ts +1 -0
- package/dist/components/core/BwgButton.d.ts.map +1 -0
- package/dist/components/core/BwgCheck.d.ts +1 -0
- package/dist/components/core/BwgCheck.d.ts.map +1 -0
- package/dist/components/core/BwgCheckList.d.ts +1 -0
- package/dist/components/core/BwgCheckList.d.ts.map +1 -0
- package/dist/components/core/BwgDatePicker.d.ts +1 -0
- package/dist/components/core/BwgDatePicker.d.ts.map +1 -0
- package/dist/components/core/BwgForm.d.ts +1 -0
- package/dist/components/core/BwgForm.d.ts.map +1 -0
- package/dist/components/core/BwgFormItem.d.ts +1 -0
- package/dist/components/core/BwgFormItem.d.ts.map +1 -0
- package/dist/components/core/BwgInput.d.ts +1 -0
- package/dist/components/core/BwgInput.d.ts.map +1 -0
- package/dist/components/core/BwgLargeUploader.d.ts +5 -1
- package/dist/components/core/BwgLargeUploader.d.ts.map +1 -0
- package/dist/components/core/BwgMaskedInput.d.ts +1 -0
- package/dist/components/core/BwgMaskedInput.d.ts.map +1 -0
- package/dist/components/core/BwgMaskedPicker.d.ts +1 -0
- package/dist/components/core/BwgMaskedPicker.d.ts.map +1 -0
- package/dist/components/core/BwgMultiSelect.d.ts +1 -0
- package/dist/components/core/BwgMultiSelect.d.ts.map +1 -0
- package/dist/components/core/BwgNumber.d.ts +1 -0
- package/dist/components/core/BwgNumber.d.ts.map +1 -0
- package/dist/components/core/BwgRadio.d.ts +1 -0
- package/dist/components/core/BwgRadio.d.ts.map +1 -0
- package/dist/components/core/BwgRangePicker.d.ts +1 -0
- package/dist/components/core/BwgRangePicker.d.ts.map +1 -0
- package/dist/components/core/BwgSearch.d.ts +5 -0
- package/dist/components/core/BwgSearch.d.ts.map +1 -0
- package/dist/components/core/BwgSelect.d.ts +1 -0
- package/dist/components/core/BwgSelect.d.ts.map +1 -0
- package/dist/components/core/BwgTextArea.d.ts +1 -0
- package/dist/components/core/BwgTextArea.d.ts.map +1 -0
- package/dist/components/core/BwgUploader.d.ts +31 -7
- package/dist/components/core/BwgUploader.d.ts.map +1 -0
- package/dist/components/core/index.cjs +2 -1
- package/dist/components/core/index.cjs.map +1 -0
- package/dist/components/core/index.d.ts +1 -0
- package/dist/components/core/index.d.ts.map +1 -0
- package/dist/components/core/index.js +2 -1
- package/dist/components/core/index.js.map +1 -0
- package/dist/components/guide/BwgComponentGuide.d.ts +1 -0
- package/dist/components/guide/BwgComponentGuide.d.ts.map +1 -0
- package/dist/components/guide/BwgDeveloperGuide.d.ts +1 -0
- package/dist/components/guide/BwgDeveloperGuide.d.ts.map +1 -0
- package/dist/components/guide/index.cjs +1 -0
- package/dist/components/guide/index.cjs.map +1 -0
- package/dist/components/guide/index.d.ts +1 -0
- package/dist/components/guide/index.d.ts.map +1 -0
- package/dist/components/guide/index.js +1 -0
- package/dist/components/guide/index.js.map +1 -0
- package/dist/components/layout/ProgressOverlay.d.ts +11 -0
- package/dist/components/layout/ProgressOverlay.d.ts.map +1 -0
- package/dist/components/layout/ProtectLayout.d.ts +7 -0
- package/dist/components/layout/ProtectLayout.d.ts.map +1 -0
- package/dist/components/layout/PublicLayout.d.ts +7 -0
- package/dist/components/layout/PublicLayout.d.ts.map +1 -0
- package/dist/components/layout/index.cjs +2 -0
- package/dist/components/layout/index.cjs.map +1 -0
- package/dist/components/layout/index.d.ts +4 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/index.js +7 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +305 -289
- package/dist/index.js.map +1 -0
- package/dist/provider/contexts/AuthContext.d.ts +13 -0
- package/dist/provider/contexts/AuthContext.d.ts.map +1 -0
- package/dist/provider/contexts/CommonCodeContext.d.ts +6 -5
- package/dist/provider/contexts/CommonCodeContext.d.ts.map +1 -0
- package/dist/provider/contexts/ScreenProtectContext.d.ts +22 -0
- package/dist/provider/contexts/ScreenProtectContext.d.ts.map +1 -0
- package/dist/provider/contexts/SearchBoxContext.d.ts +1 -0
- package/dist/provider/contexts/SearchBoxContext.d.ts.map +1 -0
- package/dist/provider/contexts/ServiceCodeContext.d.ts +1 -0
- package/dist/provider/contexts/ServiceCodeContext.d.ts.map +1 -0
- package/dist/provider/contexts/UtilsContext.d.ts +1 -0
- package/dist/provider/contexts/UtilsContext.d.ts.map +1 -0
- package/dist/provider/contexts/index.d.ts +3 -0
- package/dist/provider/contexts/index.d.ts.map +1 -0
- package/dist/provider/hooks/index.d.ts +1 -0
- package/dist/provider/hooks/index.d.ts.map +1 -0
- package/dist/provider/hooks/usePopup.d.ts +2 -1
- package/dist/provider/hooks/usePopup.d.ts.map +1 -0
- package/dist/provider/hooks/useViewState.d.ts +1 -0
- package/dist/provider/hooks/useViewState.d.ts.map +1 -0
- package/dist/provider/index.cjs +2 -1
- package/dist/provider/index.cjs.map +1 -0
- package/dist/provider/index.d.ts +1 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/index.js +26 -19
- package/dist/provider/index.js.map +1 -0
- package/dist/public/realgrid/css/realgrid-style-custom.css +643 -0
- package/dist/public/realgrid/css/realgrid-style.css +1902 -0
- package/dist/public/realgrid/images/ico_c.png +0 -0
- package/dist/public/realgrid/images/ico_d.png +0 -0
- package/dist/public/realgrid/images/ico_jp.png +0 -0
- package/dist/public/realgrid/images/ico_mp.png +0 -0
- package/dist/public/realgrid/images/ico_n.png +0 -0
- package/dist/public/realgrid/images/ico_nd.png +0 -0
- package/dist/public/realgrid/images/ico_p.png +0 -0
- package/dist/public/realgrid/images/ico_r.png +0 -0
- package/dist/public/realgrid/images/ico_sp.png +0 -0
- package/dist/public/realgrid/images/ico_u.png +0 -0
- package/dist/public/realgrid/images/ico_wt.png +0 -0
- package/dist/stores/codeStore.d.ts +4 -3
- package/dist/stores/codeStore.d.ts.map +1 -0
- package/dist/stores/favoriteStore.d.ts +1 -0
- package/dist/stores/favoriteStore.d.ts.map +1 -0
- package/dist/stores/index.cjs +2 -1
- package/dist/stores/index.cjs.map +1 -0
- package/dist/stores/index.d.ts +1 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/index.js +6 -5
- package/dist/stores/index.js.map +1 -0
- package/dist/stores/menuStore.d.ts +1 -0
- package/dist/stores/menuStore.d.ts.map +1 -0
- package/dist/stores/popupStore.d.ts +1 -0
- package/dist/stores/popupStore.d.ts.map +1 -0
- package/dist/stores/userStore.d.ts +4 -3
- package/dist/stores/userStore.d.ts.map +1 -0
- package/dist/styles/assets/images/backgrounds/krx_login_bg.png +0 -0
- package/dist/styles/assets/images/contents/icon/ico-lockscreen.svg +44 -0
- package/dist/styles/assets/images/logos/krx-logo-full.svg +35 -0
- package/dist/styles/components.css +130 -17
- package/dist/styles/global.css +19 -0
- package/dist/styles/layout.css +108 -35
- package/dist/styles/login.css +39 -33
- package/dist/styles/variables.css +221 -5
- package/dist/types/global.d.ts +2 -0
- package/dist/utils/FileUtils.d.ts +8 -0
- package/dist/utils/FileUtils.d.ts.map +1 -0
- package/dist/utils/apiUtils.d.ts +1 -0
- package/dist/utils/apiUtils.d.ts.map +1 -0
- package/dist/utils/arrayUtils.d.ts +1 -0
- package/dist/utils/arrayUtils.d.ts.map +1 -0
- package/dist/utils/commonUtils.d.ts +1 -0
- package/dist/utils/commonUtils.d.ts.map +1 -0
- package/dist/utils/cookieUtils.d.ts +1 -0
- package/dist/utils/cookieUtils.d.ts.map +1 -0
- package/dist/utils/dateUtils.d.ts +1 -0
- package/dist/utils/dateUtils.d.ts.map +1 -0
- package/dist/utils/envUtils.d.ts +9 -0
- package/dist/utils/envUtils.d.ts.map +1 -0
- package/dist/utils/imageUtils.d.ts +1 -0
- package/dist/utils/imageUtils.d.ts.map +1 -0
- package/dist/utils/index.cjs +2 -1
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +106 -103
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/messageUtils.d.ts +1 -0
- package/dist/utils/messageUtils.d.ts.map +1 -0
- package/dist/utils/notificationUtils.d.ts +1 -0
- package/dist/utils/notificationUtils.d.ts.map +1 -0
- package/dist/utils/objectUtils.d.ts +1 -0
- package/dist/utils/objectUtils.d.ts.map +1 -0
- package/dist/utils/realFormat.d.ts +1 -0
- package/dist/utils/realFormat.d.ts.map +1 -0
- package/dist/utils/serviceConfig.d.ts +1 -0
- package/dist/utils/serviceConfig.d.ts.map +1 -0
- package/dist/utils/stringUtils.d.ts +1 -0
- package/dist/utils/stringUtils.d.ts.map +1 -0
- package/dist/utils/userUtils.d.ts +2 -1
- package/dist/utils/userUtils.d.ts.map +1 -0
- package/package.json +40 -37
- package/dist/chunks/BwgLargeUploader-ByN1XWV4.js +0 -809
- package/dist/chunks/BwgLargeUploader-CU0-MVk4.cjs +0 -1
- package/dist/chunks/QuickServiceToggle-CiCuWfCF.cjs +0 -183
- package/dist/chunks/ServiceCodeContext--ZnMtjzD.cjs +0 -1
- package/dist/chunks/favoriteStore-TgeeY32l.cjs +0 -1
- package/dist/chunks/messageUtils-9DXOwada.js +0 -117
- package/dist/chunks/messageUtils-RjJD_ArW.cjs +0 -1
- package/dist/chunks/serviceConfig-Cr2P4yr4.cjs +0 -2
- package/dist/public/styles/assets/images/contents/icon/ico-business-trip.svg +0 -21
- package/dist/public/styles/assets/images/contents/icon/ico-holiday.svg +0 -23
- package/dist/public/styles/assets/images/contents/icon/ico-menu-help.svg +0 -5
- package/dist/public/styles/assets/images/contents/icon/ico-overtime.svg +0 -17
- package/dist/public/styles/assets/images/contents/icon/ico-quick-tab-move.svg +0 -8
- package/dist/public/styles/assets/images/contents/icon/quick tab-text.svg +0 -4
- package/dist/public/styles/assets/images/contents/icon/quick-tab-text.svg +0 -4
- package/dist/public/test.txt +0 -0
- package/dist/styles/assets/images/contents/icon/quick tab-text.svg +0 -4
- package/dist/test.txt +0 -0
- package/public/styles/assets/images/contents/icon/ico-business-trip.svg +0 -21
- package/public/styles/assets/images/contents/icon/ico-holiday.svg +0 -23
- package/public/styles/assets/images/contents/icon/ico-menu-help.svg +0 -5
- package/public/styles/assets/images/contents/icon/ico-overtime.svg +0 -17
- package/public/styles/assets/images/contents/icon/ico-quick-tab-move.svg +0 -8
- package/public/styles/assets/images/contents/icon/quick tab-text.svg +0 -4
- package/public/styles/assets/images/contents/icon/quick-tab-text.svg +0 -4
- package/public/test.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BwgSpace-CnLM4qcg.js","sources":["../../src/components/common/BwgSpace.tsx"],"sourcesContent":["import { ReactNode } from 'react';\r\n\r\n/**\r\n * BwgSpace : 공간컴포넌트\r\n * 추후 style => className 변경 예정\r\n * @param children 하위 컴포넌트\r\n * @returns\r\n */\r\nconst BwgSpace = ({ children }: { children: ReactNode }) => {\r\n return (\r\n <div\r\n style={{\r\n height: '100%',\r\n padding: '20px 30px 26px',\r\n }}\r\n >\r\n <div\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n border: '1px solid #ddd',\r\n borderRadius: '15px',\r\n background: '#fff',\r\n }}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default BwgSpace;\r\n"],"names":["BwgSpace","children","jsx"],"mappings":";AAQA,MAAMA,IAAW,CAAC,EAAE,UAAAC,QAEhBC,gBAAAA,EAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,IAAA;AAAA,IAGX,UAAAA,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,YAAY;AAAA,QAAA;AAAA,QAGb,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,EACH;AAAA;"}
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
"use strict";const e=require("./jsx-runtime-CeSfJrVB.cjs"),t=({children:s})=>e.jsxRuntimeExports.jsx("div",{style:{height:"100%",padding:"20px 30px 26px"},children:e.jsxRuntimeExports.jsx("div",{style:{width:"100%",height:"100%",border:"1px solid #ddd",borderRadius:"15px",background:"#fff"},children:s})});exports.BwgSpace=t;
|
|
2
|
+
//# sourceMappingURL=BwgSpace-b0hmM1Ht.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BwgSpace-b0hmM1Ht.cjs","sources":["../../src/components/common/BwgSpace.tsx"],"sourcesContent":["import { ReactNode } from 'react';\r\n\r\n/**\r\n * BwgSpace : 공간컴포넌트\r\n * 추후 style => className 변경 예정\r\n * @param children 하위 컴포넌트\r\n * @returns\r\n */\r\nconst BwgSpace = ({ children }: { children: ReactNode }) => {\r\n return (\r\n <div\r\n style={{\r\n height: '100%',\r\n padding: '20px 30px 26px',\r\n }}\r\n >\r\n <div\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n border: '1px solid #ddd',\r\n borderRadius: '15px',\r\n background: '#fff',\r\n }}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default BwgSpace;\r\n"],"names":["BwgSpace","children","jsx"],"mappings":"2DAQMA,EAAW,CAAC,CAAE,SAAAC,KAEhBC,EAAAA,kBAAAA,IAAC,MAAA,CACC,MAAO,CACL,OAAQ,OACR,QAAS,gBAAA,EAGX,SAAAA,EAAAA,kBAAAA,IAAC,MAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,OAAQ,iBACR,aAAc,OACd,WAAY,MAAA,EAGb,SAAAD,CAAA,CAAA,CACH,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const i=require("react"),n=require("antd"),g=require("./serviceConfig-Cc8jfw_Y.cjs");var a=typeof document<"u"?document.currentScript:null;const h=e=>{try{return new URL(Object.assign({})[`../assets/images/backgrounds/${e}`],typeof document>"u"?require("url").pathToFileURL(__filename).href:a&&a.tagName.toUpperCase()==="SCRIPT"&&a.src||new URL("chunks/FileUtils-CmK-zHC5.cjs",document.baseURI).href).href}catch{return l()}},l=()=>"https://images.unsplash.com/photo-1578662996442-48f60103fc96?w=1920&h=1080&fit=crop&crop=center",d=e=>{try{return new URL(Object.assign({})[`../assets/images/logos/${e}`],typeof document>"u"?require("url").pathToFileURL(__filename).href:a&&a.tagName.toUpperCase()==="SCRIPT"&&a.src||new URL("chunks/FileUtils-CmK-zHC5.cjs",document.baseURI).href).href}catch{return"/images/default-logo.png"}},f=(e,t="common")=>{try{return new URL(Object.assign({})[`../assets/images/icons/${t}/${e}`],typeof document>"u"?require("url").pathToFileURL(__filename).href:a&&a.tagName.toUpperCase()==="SCRIPT"&&a.src||new URL("chunks/FileUtils-CmK-zHC5.cjs",document.baseURI).href).href}catch{return`/images/icons/${t}/default.svg`}},w=e=>{try{return new URL(Object.assign({})[`../assets/images/avatars/${e}`],typeof document>"u"?require("url").pathToFileURL(__filename).href:a&&a.tagName.toUpperCase()==="SCRIPT"&&a.src||new URL("chunks/FileUtils-CmK-zHC5.cjs",document.baseURI).href).href}catch{return"/images/avatars/default.png"}},u=e=>new Promise((t,r)=>{const s=new Image;s.onload=()=>t(),s.onerror=()=>r(new Error(`Failed to load image: ${e}`)),s.src=e}),m=(e,t,r)=>{const s=new URL(e);return s.searchParams.set("w",t.toString()),s.searchParams.set("h",r.toString()),s.toString()},p=(e,t)=>{const r=new URL(e);return r.searchParams.set("fm",t),r.toString()},I=(e,t)=>t.map(r=>`${m(e,r,r)} ${r}w`).join(", "),U=(e,t={})=>{const r=new URL(e);return t.width&&r.searchParams.set("w",t.width.toString()),t.height&&r.searchParams.set("h",t.height.toString()),t.format&&r.searchParams.set("fm",t.format),t.quality&&r.searchParams.set("q",t.quality.toString()),r.toString()},S=e=>{const t=e.target;t.src="/images/placeholder.png",t.alt="이미지를 불러올 수 없습니다"},R=e=>{const[t,r]=i.useState(!0),[s,o]=i.useState(!1);return i.useEffect(()=>{r(!0),o(!1),u(e).then(()=>r(!1)).catch(()=>{o(!0),r(!1)})},[e]),{isLoading:t,hasError:s}},C=(e,t,r=30)=>{const s=new Date;s.setTime(s.getTime()+r*24*60*60*1e3),document.cookie=`${e}=${t};expires=${s.toUTCString()};path=/`},E=e=>{const t=e+"=",r=document.cookie.split(";");for(let s=0;s<r.length;s++){let o=r[s];for(;o.charAt(0)===" ";)o=o.substring(1,o.length);if(o.indexOf(t)===0)return o.substring(t.length,o.length)}return null},L=e=>{document.cookie=`${e}=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/`},y="krx_ui_theme",_=(e,t=3)=>{n.message.success({content:e,duration:t})},c=(e,t=5)=>{n.message.error({content:e,duration:t})},k=(e="처리중...")=>n.message.loading({content:e,duration:0}),$=e=>{n.message.destroy(e)},F=()=>{n.message.destroy()},P=(e,t="처리 중 오류가 발생했습니다.")=>{const r=e?.response?.data?.message||e?.message||t;c(r)},T=(e="저장")=>{_(`${e}이 완료되었습니다.`)},b=(e="저장")=>{c(`${e} 중 오류가 발생했습니다.`)},v=e=>{c(`이미 사용중인 ${e}입니다.`)},q=e=>{c(`${e}을(를) 입력해주세요.`)};async function O(e){try{return await g.callService("SCMFILE00101",{crprCd:g.getUserInfo().crprCd,sysCd:__SYS_CD__,fileKey:e}).then(r=>{let s;if(r.sub&&(s=r.sub[0]),console.log(r),console.log(s),!s.lgclFileNm)throw console.error("논리파일명이 없습니다."),new Error("논리 파일명 누락");if(!s.filePath)throw console.error("파일 경로가 없습니다."),new Error("파일 경로 누락");const o=`api/download?filePath=${encodeURIComponent(s.filePath)}&logicalName=${encodeURIComponent(s.lgclFileNm)}`;return window.open(o,"_blank"),{success:!0,message:"파일 다운로드 요청 성공"}})}catch(t){throw console.error("downloadByFileKey 함수 실행 중 오류 발생:",t),t}}exports.THEME_COOKIE_NAME=y;exports.closeAllMessages=F;exports.closeMessage=$;exports.convertImageFormat=p;exports.deleteCookie=L;exports.downloadByFileKey=O;exports.generateSrcSet=I;exports.getAvatarImage=w;exports.getBackgroundImage=h;exports.getCookie=E;exports.getDefaultBackgroundImage=l;exports.getIconImage=f;exports.getLogoImage=d;exports.getOptimizedImageUrl=U;exports.handleImageError=S;exports.preloadImage=u;exports.resizeImage=m;exports.setCookie=C;exports.showApiError=P;exports.showDuplicateError=v;exports.showLoading=k;exports.showRequiredError=q;exports.showSaveError=b;exports.showSaveSuccess=T;exports.useImageLoader=R;
|
|
2
|
+
//# sourceMappingURL=FileUtils-CmK-zHC5.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUtils-CmK-zHC5.cjs","sources":["../../src/utils/imageUtils.ts","../../src/utils/cookieUtils.ts","../../src/utils/messageUtils.ts","../../src/utils/FileUtils.ts"],"sourcesContent":["import React from 'react'\r\n\r\n/**\r\n * 이미지 관리 유틸리티 함수들\r\n */\r\n\r\n// 이미지 타입 정의\r\nexport interface ImageConfig {\r\n src: string\r\n alt: string\r\n width?: number\r\n height?: number\r\n className?: string\r\n}\r\n\r\n// 배경 이미지 설정 함수\r\nexport const getBackgroundImage = (imageName: string): string => {\r\n // 로컬 이미지가 있는 경우 로컬 이미지 사용\r\n try {\r\n return new URL(`../assets/images/backgrounds/${imageName}`, import.meta.url).href\r\n } catch {\r\n // 로컬 이미지가 없는 경우 기본 이미지 반환\r\n return getDefaultBackgroundImage()\r\n }\r\n}\r\n\r\n// 기본 배경 이미지 (제주도 바다)\r\nexport const getDefaultBackgroundImage = (): string => {\r\n return 'https://images.unsplash.com/photo-1578662996442-48f60103fc96?w=1920&h=1080&fit=crop&crop=center'\r\n}\r\n\r\n// 로고 이미지 가져오기\r\nexport const getLogoImage = (logoName: string): string => {\r\n try {\r\n return new URL(`../assets/images/logos/${logoName}`, import.meta.url).href\r\n } catch {\r\n return '/images/default-logo.png'\r\n }\r\n}\r\n\r\n// 아이콘 이미지 가져오기\r\nexport const getIconImage = (iconName: string, category: string = 'common'): string => {\r\n try {\r\n return new URL(`../assets/images/icons/${category}/${iconName}`, import.meta.url).href\r\n } catch {\r\n return `/images/icons/${category}/default.svg`\r\n }\r\n}\r\n\r\n// 아바타 이미지 가져오기\r\nexport const getAvatarImage = (avatarName: string): string => {\r\n try {\r\n return new URL(`../assets/images/avatars/${avatarName}`, import.meta.url).href\r\n } catch {\r\n return '/images/avatars/default.png'\r\n }\r\n}\r\n\r\n// 이미지 로딩 상태 관리\r\nexport const preloadImage = (src: string): Promise<void> => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image()\r\n img.onload = () => resolve()\r\n img.onerror = () => reject(new Error(`Failed to load image: ${src}`))\r\n img.src = src\r\n })\r\n}\r\n\r\n// 이미지 크기 조정 함수\r\nexport const resizeImage = (src: string, width: number, height: number): string => {\r\n // URL에 크기 파라미터 추가\r\n const url = new URL(src)\r\n url.searchParams.set('w', width.toString())\r\n url.searchParams.set('h', height.toString())\r\n return url.toString()\r\n}\r\n\r\n// 이미지 포맷 변환 함수\r\nexport const convertImageFormat = (src: string, format: 'webp' | 'jpg' | 'png'): string => {\r\n const url = new URL(src)\r\n url.searchParams.set('fm', format)\r\n return url.toString()\r\n}\r\n\r\n// 반응형 이미지 srcset 생성\r\nexport const generateSrcSet = (baseSrc: string, sizes: number[]): string => {\r\n return sizes\r\n .map(size => `${resizeImage(baseSrc, size, size)} ${size}w`)\r\n .join(', ')\r\n}\r\n\r\n// 이미지 최적화 설정\r\nexport const getOptimizedImageUrl = (\r\n src: string, \r\n options: {\r\n width?: number\r\n height?: number\r\n format?: 'webp' | 'jpg' | 'png'\r\n quality?: number\r\n } = {}\r\n): string => {\r\n const url = new URL(src)\r\n \r\n if (options.width) url.searchParams.set('w', options.width.toString())\r\n if (options.height) url.searchParams.set('h', options.height.toString())\r\n if (options.format) url.searchParams.set('fm', options.format)\r\n if (options.quality) url.searchParams.set('q', options.quality.toString())\r\n \r\n return url.toString()\r\n}\r\n\r\n// 이미지 에러 처리\r\nexport const handleImageError = (event: React.SyntheticEvent<HTMLImageElement, Event>): void => {\r\n const img = event.target as HTMLImageElement\r\n img.src = '/images/placeholder.png'\r\n img.alt = '이미지를 불러올 수 없습니다'\r\n}\r\n\r\n// 이미지 로딩 상태 훅\r\nexport const useImageLoader = (src: string) => {\r\n const [isLoading, setIsLoading] = React.useState(true)\r\n const [hasError, setHasError] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n setIsLoading(true)\r\n setHasError(false)\r\n\r\n preloadImage(src)\r\n .then(() => setIsLoading(false))\r\n .catch(() => {\r\n setHasError(true)\r\n setIsLoading(false)\r\n })\r\n }, [src])\r\n\r\n return { isLoading, hasError }\r\n} ","// 쿠키 설정\r\nexport const setCookie = (name: string, value: string, days: number = 30) => {\r\n const expires = new Date();\r\n expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000);\r\n document.cookie = `${name}=${value};expires=${expires.toUTCString()};path=/`;\r\n};\r\n\r\n// 쿠키 가져오기\r\nexport const getCookie = (name: string): string | null => {\r\n const nameEQ = name + '=';\r\n const ca = document.cookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\r\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\r\n }\r\n return null;\r\n};\r\n\r\n// 쿠키 삭제\r\nexport const deleteCookie = (name: string) => {\r\n document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/`;\r\n};\r\n\r\n// 테마 관련 쿠키 상수\r\nexport const THEME_COOKIE_NAME = 'krx_ui_theme';\r\n","import { message } from 'antd';\r\n\r\n/**\r\n * 성공 메시지 표시\r\n * @param content 메시지 내용\r\n * @param duration 표시 시간 (초)\r\n */\r\nexport const showSuccess = (content: string, duration: number = 3) => {\r\n message.success({\r\n content,\r\n duration,\r\n });\r\n};\r\n\r\n/**\r\n * 오류 메시지 표시\r\n * @param content 메시지 내용\r\n * @param duration 표시 시간 (초)\r\n */\r\nexport const showError = (content: string, duration: number = 5) => {\r\n message.error({\r\n content,\r\n duration,\r\n });\r\n};\r\n\r\n/**\r\n * 경고 메시지 표시\r\n * @param content 메시지 내용\r\n * @param duration 표시 시간 (초)\r\n */\r\nexport const showWarning = (content: string, duration: number = 4) => {\r\n message.warning({\r\n content,\r\n duration,\r\n });\r\n};\r\n\r\n/**\r\n * 정보 메시지 표시\r\n * @param content 메시지 내용\r\n * @param duration 표시 시간 (초)\r\n */\r\nexport const showInfo = (content: string, duration: number = 3) => {\r\n message.info({\r\n content,\r\n duration,\r\n });\r\n};\r\n\r\n/**\r\n * 로딩 메시지 표시\r\n * @param content 메시지 내용\r\n * @returns 메시지 키 (닫을 때 사용)\r\n */\r\nexport const showLoading = (content: string = '처리중...') => {\r\n return message.loading({\r\n content,\r\n duration: 0, // 수동으로 닫을 때까지 유지\r\n });\r\n};\r\n\r\n/**\r\n * 메시지 닫기\r\n * @param key 메시지 키\r\n */\r\nexport const closeMessage = (key: string) => {\r\n message.destroy(key);\r\n};\r\n\r\n/**\r\n * 모든 메시지 닫기\r\n */\r\nexport const closeAllMessages = () => {\r\n message.destroy();\r\n};\r\n\r\n/**\r\n * API 오류 메시지 표시 (공통)\r\n * @param error 오류 객체\r\n * @param defaultMessage 기본 오류 메시지\r\n */\r\nexport const showApiError = (\r\n error: any,\r\n defaultMessage: string = '처리 중 오류가 발생했습니다.'\r\n) => {\r\n const errorMessage =\r\n error?.response?.data?.message || error?.message || defaultMessage;\r\n showError(errorMessage);\r\n};\r\n\r\n/**\r\n * 저장 성공 메시지 표시\r\n * @param type 저장 타입 ('등록', '수정', '삭제' 등)\r\n */\r\nexport const showSaveSuccess = (type: string = '저장') => {\r\n showSuccess(`${type}이 완료되었습니다.`);\r\n};\r\n\r\n/**\r\n * 저장 실패 메시지 표시\r\n * @param type 저장 타입 ('등록', '수정', '삭제' 등)\r\n */\r\nexport const showSaveError = (type: string = '저장') => {\r\n showError(`${type} 중 오류가 발생했습니다.`);\r\n};\r\n\r\n/**\r\n * 중복 체크 실패 메시지 표시\r\n * @param fieldName 필드명\r\n */\r\nexport const showDuplicateError = (fieldName: string) => {\r\n showError(`이미 사용중인 ${fieldName}입니다.`);\r\n};\r\n\r\n/**\r\n * 필수 입력 항목 메시지 표시\r\n * @param fieldName 필드명\r\n */\r\nexport const showRequiredError = (fieldName: string) => {\r\n showError(`${fieldName}을(를) 입력해주세요.`);\r\n};\r\n","import { callService } from \"./apiUtils\";\r\nimport { getUserInfo } from \"./userUtils\";\r\n\r\n/**\r\n * 파일 키를 사용하여 파일 상세 정보를 조회하고, 해당 정보를 바탕으로 다운로드를 시작하는 유틸리티 함수입니다.\r\n *\r\n * @param fileKey - 조회할 파일의 키 (fileGrpKey)\r\n * @returns API 호출 결과 또는 오류\r\n */\r\nexport async function downloadByFileKey(fileKey: string): Promise<any> {\r\n try {\r\n // 1. fileKey를 매개변수로 파일 상세 정보 조회 서비스 호출\r\n const fileDetailsResponse = await callService(\"SCMFILE00101\", {\r\n crprCd: getUserInfo().crprCd,\r\n sysCd: __SYS_CD__,\r\n fileKey,\r\n }).then((res) => {\r\n let response;\r\n if (res.sub) {\r\n response = res.sub[0];\r\n }\r\n console.log(res);\r\n console.log(response);\r\n if (!response.lgclFileNm) {\r\n console.error(\"논리파일명이 없습니다.\");\r\n throw new Error(\"논리 파일명 누락\");\r\n }\r\n if (!response.filePath) {\r\n console.error(\"파일 경로가 없습니다.\");\r\n throw new Error(\"파일 경로 누락\");\r\n }\r\n\r\n // download api 호출\r\n const downloadUrl = `api/download?filePath=${encodeURIComponent(\r\n response.filePath\r\n )}&logicalName=${encodeURIComponent(response.lgclFileNm)}`;\r\n window.open(downloadUrl, \"_blank\"); // 새 탭에서 열어 다운로드 트리거\r\n\r\n return { success: true, message: \"파일 다운로드 요청 성공\" }; // 다운로드 요청 성공을 나타내는 객체 반환\r\n });\r\n\r\n return fileDetailsResponse; // .then() 블록의 결과 반환\r\n } catch (error) {\r\n console.error(\"downloadByFileKey 함수 실행 중 오류 발생:\", error);\r\n throw error;\r\n }\r\n}\r\n"],"names":["getBackgroundImage","imageName","_documentCurrentScript","getDefaultBackgroundImage","getLogoImage","logoName","getIconImage","iconName","category","getAvatarImage","avatarName","preloadImage","src","resolve","reject","img","resizeImage","width","height","url","convertImageFormat","format","generateSrcSet","baseSrc","sizes","size","getOptimizedImageUrl","options","handleImageError","event","useImageLoader","isLoading","setIsLoading","React","hasError","setHasError","setCookie","name","value","days","expires","getCookie","nameEQ","ca","i","c","deleteCookie","THEME_COOKIE_NAME","showSuccess","content","duration","message","showError","showLoading","closeMessage","key","closeAllMessages","showApiError","error","defaultMessage","errorMessage","showSaveSuccess","type","showSaveError","showDuplicateError","fieldName","showRequiredError","downloadByFileKey","fileKey","callService","getUserInfo","res","response","downloadUrl"],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import c from "react";
|
|
2
|
+
import { message as o } from "antd";
|
|
3
|
+
import { V as i, a7 as g } from "./serviceConfig-lAlRNVIw.js";
|
|
4
|
+
const p = (e) => {
|
|
5
|
+
try {
|
|
6
|
+
return new URL((/* @__PURE__ */ Object.assign({}))[`../assets/images/backgrounds/${e}`], import.meta.url).href;
|
|
7
|
+
} catch {
|
|
8
|
+
return l();
|
|
9
|
+
}
|
|
10
|
+
}, l = () => "https://images.unsplash.com/photo-1578662996442-48f60103fc96?w=1920&h=1080&fit=crop&crop=center", S = (e) => {
|
|
11
|
+
try {
|
|
12
|
+
return new URL((/* @__PURE__ */ Object.assign({}))[`../assets/images/logos/${e}`], import.meta.url).href;
|
|
13
|
+
} catch {
|
|
14
|
+
return "/images/default-logo.png";
|
|
15
|
+
}
|
|
16
|
+
}, I = (e, s = "common") => {
|
|
17
|
+
try {
|
|
18
|
+
return new URL((/* @__PURE__ */ Object.assign({}))[`../assets/images/icons/${s}/${e}`], import.meta.url).href;
|
|
19
|
+
} catch {
|
|
20
|
+
return `/images/icons/${s}/default.svg`;
|
|
21
|
+
}
|
|
22
|
+
}, $ = (e) => {
|
|
23
|
+
try {
|
|
24
|
+
return new URL((/* @__PURE__ */ Object.assign({}))[`../assets/images/avatars/${e}`], import.meta.url).href;
|
|
25
|
+
} catch {
|
|
26
|
+
return "/images/avatars/default.png";
|
|
27
|
+
}
|
|
28
|
+
}, m = (e) => new Promise((s, t) => {
|
|
29
|
+
const r = new Image();
|
|
30
|
+
r.onload = () => s(), r.onerror = () => t(new Error(`Failed to load image: ${e}`)), r.src = e;
|
|
31
|
+
}), u = (e, s, t) => {
|
|
32
|
+
const r = new URL(e);
|
|
33
|
+
return r.searchParams.set("w", s.toString()), r.searchParams.set("h", t.toString()), r.toString();
|
|
34
|
+
}, E = (e, s) => {
|
|
35
|
+
const t = new URL(e);
|
|
36
|
+
return t.searchParams.set("fm", s), t.toString();
|
|
37
|
+
}, y = (e, s) => s.map((t) => `${u(e, t, t)} ${t}w`).join(", "), U = (e, s = {}) => {
|
|
38
|
+
const t = new URL(e);
|
|
39
|
+
return s.width && t.searchParams.set("w", s.width.toString()), s.height && t.searchParams.set("h", s.height.toString()), s.format && t.searchParams.set("fm", s.format), s.quality && t.searchParams.set("q", s.quality.toString()), t.toString();
|
|
40
|
+
}, C = (e) => {
|
|
41
|
+
const s = e.target;
|
|
42
|
+
s.src = "/images/placeholder.png", s.alt = "이미지를 불러올 수 없습니다";
|
|
43
|
+
}, L = (e) => {
|
|
44
|
+
const [s, t] = c.useState(!0), [r, a] = c.useState(!1);
|
|
45
|
+
return c.useEffect(() => {
|
|
46
|
+
t(!0), a(!1), m(e).then(() => t(!1)).catch(() => {
|
|
47
|
+
a(!0), t(!1);
|
|
48
|
+
});
|
|
49
|
+
}, [e]), { isLoading: s, hasError: r };
|
|
50
|
+
}, R = (e, s, t = 30) => {
|
|
51
|
+
const r = /* @__PURE__ */ new Date();
|
|
52
|
+
r.setTime(r.getTime() + t * 24 * 60 * 60 * 1e3), document.cookie = `${e}=${s};expires=${r.toUTCString()};path=/`;
|
|
53
|
+
}, k = (e) => {
|
|
54
|
+
const s = e + "=", t = document.cookie.split(";");
|
|
55
|
+
for (let r = 0; r < t.length; r++) {
|
|
56
|
+
let a = t[r];
|
|
57
|
+
for (; a.charAt(0) === " "; ) a = a.substring(1, a.length);
|
|
58
|
+
if (a.indexOf(s) === 0) return a.substring(s.length, a.length);
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}, _ = (e) => {
|
|
62
|
+
document.cookie = `${e}=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/`;
|
|
63
|
+
}, b = "krx_ui_theme", h = (e, s = 3) => {
|
|
64
|
+
o.success({
|
|
65
|
+
content: e,
|
|
66
|
+
duration: s
|
|
67
|
+
});
|
|
68
|
+
}, n = (e, s = 5) => {
|
|
69
|
+
o.error({
|
|
70
|
+
content: e,
|
|
71
|
+
duration: s
|
|
72
|
+
});
|
|
73
|
+
}, P = (e = "처리중...") => o.loading({
|
|
74
|
+
content: e,
|
|
75
|
+
duration: 0
|
|
76
|
+
// 수동으로 닫을 때까지 유지
|
|
77
|
+
}), v = (e) => {
|
|
78
|
+
o.destroy(e);
|
|
79
|
+
}, O = () => {
|
|
80
|
+
o.destroy();
|
|
81
|
+
}, x = (e, s = "처리 중 오류가 발생했습니다.") => {
|
|
82
|
+
const t = e?.response?.data?.message || e?.message || s;
|
|
83
|
+
n(t);
|
|
84
|
+
}, F = (e = "저장") => {
|
|
85
|
+
h(`${e}이 완료되었습니다.`);
|
|
86
|
+
}, T = (e = "저장") => {
|
|
87
|
+
n(`${e} 중 오류가 발생했습니다.`);
|
|
88
|
+
}, j = (e) => {
|
|
89
|
+
n(`이미 사용중인 ${e}입니다.`);
|
|
90
|
+
}, D = (e) => {
|
|
91
|
+
n(`${e}을(를) 입력해주세요.`);
|
|
92
|
+
};
|
|
93
|
+
async function M(e) {
|
|
94
|
+
try {
|
|
95
|
+
return await i("SCMFILE00101", {
|
|
96
|
+
crprCd: g().crprCd,
|
|
97
|
+
sysCd: __SYS_CD__,
|
|
98
|
+
fileKey: e
|
|
99
|
+
}).then((t) => {
|
|
100
|
+
let r;
|
|
101
|
+
if (t.sub && (r = t.sub[0]), console.log(t), console.log(r), !r.lgclFileNm)
|
|
102
|
+
throw console.error("논리파일명이 없습니다."), new Error("논리 파일명 누락");
|
|
103
|
+
if (!r.filePath)
|
|
104
|
+
throw console.error("파일 경로가 없습니다."), new Error("파일 경로 누락");
|
|
105
|
+
const a = `api/download?filePath=${encodeURIComponent(
|
|
106
|
+
r.filePath
|
|
107
|
+
)}&logicalName=${encodeURIComponent(r.lgclFileNm)}`;
|
|
108
|
+
return window.open(a, "_blank"), { success: !0, message: "파일 다운로드 요청 성공" };
|
|
109
|
+
});
|
|
110
|
+
} catch (s) {
|
|
111
|
+
throw console.error("downloadByFileKey 함수 실행 중 오류 발생:", s), s;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export {
|
|
115
|
+
b as T,
|
|
116
|
+
$ as a,
|
|
117
|
+
p as b,
|
|
118
|
+
E as c,
|
|
119
|
+
l as d,
|
|
120
|
+
I as e,
|
|
121
|
+
S as f,
|
|
122
|
+
y as g,
|
|
123
|
+
U as h,
|
|
124
|
+
C as i,
|
|
125
|
+
_ as j,
|
|
126
|
+
k,
|
|
127
|
+
P as l,
|
|
128
|
+
v as m,
|
|
129
|
+
O as n,
|
|
130
|
+
x as o,
|
|
131
|
+
m as p,
|
|
132
|
+
F as q,
|
|
133
|
+
u as r,
|
|
134
|
+
R as s,
|
|
135
|
+
T as t,
|
|
136
|
+
L as u,
|
|
137
|
+
j as v,
|
|
138
|
+
D as w,
|
|
139
|
+
M as x
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=FileUtils-DsA-Sw37.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUtils-DsA-Sw37.js","sources":["../../src/utils/imageUtils.ts","../../src/utils/cookieUtils.ts","../../src/utils/messageUtils.ts","../../src/utils/FileUtils.ts"],"sourcesContent":["import React from 'react'\r\n\r\n/**\r\n * 이미지 관리 유틸리티 함수들\r\n */\r\n\r\n// 이미지 타입 정의\r\nexport interface ImageConfig {\r\n src: string\r\n alt: string\r\n width?: number\r\n height?: number\r\n className?: string\r\n}\r\n\r\n// 배경 이미지 설정 함수\r\nexport const getBackgroundImage = (imageName: string): string => {\r\n // 로컬 이미지가 있는 경우 로컬 이미지 사용\r\n try {\r\n return new URL(`../assets/images/backgrounds/${imageName}`, import.meta.url).href\r\n } catch {\r\n // 로컬 이미지가 없는 경우 기본 이미지 반환\r\n return getDefaultBackgroundImage()\r\n }\r\n}\r\n\r\n// 기본 배경 이미지 (제주도 바다)\r\nexport const getDefaultBackgroundImage = (): string => {\r\n return 'https://images.unsplash.com/photo-1578662996442-48f60103fc96?w=1920&h=1080&fit=crop&crop=center'\r\n}\r\n\r\n// 로고 이미지 가져오기\r\nexport const getLogoImage = (logoName: string): string => {\r\n try {\r\n return new URL(`../assets/images/logos/${logoName}`, import.meta.url).href\r\n } catch {\r\n return '/images/default-logo.png'\r\n }\r\n}\r\n\r\n// 아이콘 이미지 가져오기\r\nexport const getIconImage = (iconName: string, category: string = 'common'): string => {\r\n try {\r\n return new URL(`../assets/images/icons/${category}/${iconName}`, import.meta.url).href\r\n } catch {\r\n return `/images/icons/${category}/default.svg`\r\n }\r\n}\r\n\r\n// 아바타 이미지 가져오기\r\nexport const getAvatarImage = (avatarName: string): string => {\r\n try {\r\n return new URL(`../assets/images/avatars/${avatarName}`, import.meta.url).href\r\n } catch {\r\n return '/images/avatars/default.png'\r\n }\r\n}\r\n\r\n// 이미지 로딩 상태 관리\r\nexport const preloadImage = (src: string): Promise<void> => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image()\r\n img.onload = () => resolve()\r\n img.onerror = () => reject(new Error(`Failed to load image: ${src}`))\r\n img.src = src\r\n })\r\n}\r\n\r\n// 이미지 크기 조정 함수\r\nexport const resizeImage = (src: string, width: number, height: number): string => {\r\n // URL에 크기 파라미터 추가\r\n const url = new URL(src)\r\n url.searchParams.set('w', width.toString())\r\n url.searchParams.set('h', height.toString())\r\n return url.toString()\r\n}\r\n\r\n// 이미지 포맷 변환 함수\r\nexport const convertImageFormat = (src: string, format: 'webp' | 'jpg' | 'png'): string => {\r\n const url = new URL(src)\r\n url.searchParams.set('fm', format)\r\n return url.toString()\r\n}\r\n\r\n// 반응형 이미지 srcset 생성\r\nexport const generateSrcSet = (baseSrc: string, sizes: number[]): string => {\r\n return sizes\r\n .map(size => `${resizeImage(baseSrc, size, size)} ${size}w`)\r\n .join(', ')\r\n}\r\n\r\n// 이미지 최적화 설정\r\nexport const getOptimizedImageUrl = (\r\n src: string, \r\n options: {\r\n width?: number\r\n height?: number\r\n format?: 'webp' | 'jpg' | 'png'\r\n quality?: number\r\n } = {}\r\n): string => {\r\n const url = new URL(src)\r\n \r\n if (options.width) url.searchParams.set('w', options.width.toString())\r\n if (options.height) url.searchParams.set('h', options.height.toString())\r\n if (options.format) url.searchParams.set('fm', options.format)\r\n if (options.quality) url.searchParams.set('q', options.quality.toString())\r\n \r\n return url.toString()\r\n}\r\n\r\n// 이미지 에러 처리\r\nexport const handleImageError = (event: React.SyntheticEvent<HTMLImageElement, Event>): void => {\r\n const img = event.target as HTMLImageElement\r\n img.src = '/images/placeholder.png'\r\n img.alt = '이미지를 불러올 수 없습니다'\r\n}\r\n\r\n// 이미지 로딩 상태 훅\r\nexport const useImageLoader = (src: string) => {\r\n const [isLoading, setIsLoading] = React.useState(true)\r\n const [hasError, setHasError] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n setIsLoading(true)\r\n setHasError(false)\r\n\r\n preloadImage(src)\r\n .then(() => setIsLoading(false))\r\n .catch(() => {\r\n setHasError(true)\r\n setIsLoading(false)\r\n })\r\n }, [src])\r\n\r\n return { isLoading, hasError }\r\n} ","// 쿠키 설정\r\nexport const setCookie = (name: string, value: string, days: number = 30) => {\r\n const expires = new Date();\r\n expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000);\r\n document.cookie = `${name}=${value};expires=${expires.toUTCString()};path=/`;\r\n};\r\n\r\n// 쿠키 가져오기\r\nexport const getCookie = (name: string): string | null => {\r\n const nameEQ = name + '=';\r\n const ca = document.cookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\r\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\r\n }\r\n return null;\r\n};\r\n\r\n// 쿠키 삭제\r\nexport const deleteCookie = (name: string) => {\r\n document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/`;\r\n};\r\n\r\n// 테마 관련 쿠키 상수\r\nexport const THEME_COOKIE_NAME = 'krx_ui_theme';\r\n","import { message } from 'antd';\r\n\r\n/**\r\n * 성공 메시지 표시\r\n * @param content 메시지 내용\r\n * @param duration 표시 시간 (초)\r\n */\r\nexport const showSuccess = (content: string, duration: number = 3) => {\r\n message.success({\r\n content,\r\n duration,\r\n });\r\n};\r\n\r\n/**\r\n * 오류 메시지 표시\r\n * @param content 메시지 내용\r\n * @param duration 표시 시간 (초)\r\n */\r\nexport const showError = (content: string, duration: number = 5) => {\r\n message.error({\r\n content,\r\n duration,\r\n });\r\n};\r\n\r\n/**\r\n * 경고 메시지 표시\r\n * @param content 메시지 내용\r\n * @param duration 표시 시간 (초)\r\n */\r\nexport const showWarning = (content: string, duration: number = 4) => {\r\n message.warning({\r\n content,\r\n duration,\r\n });\r\n};\r\n\r\n/**\r\n * 정보 메시지 표시\r\n * @param content 메시지 내용\r\n * @param duration 표시 시간 (초)\r\n */\r\nexport const showInfo = (content: string, duration: number = 3) => {\r\n message.info({\r\n content,\r\n duration,\r\n });\r\n};\r\n\r\n/**\r\n * 로딩 메시지 표시\r\n * @param content 메시지 내용\r\n * @returns 메시지 키 (닫을 때 사용)\r\n */\r\nexport const showLoading = (content: string = '처리중...') => {\r\n return message.loading({\r\n content,\r\n duration: 0, // 수동으로 닫을 때까지 유지\r\n });\r\n};\r\n\r\n/**\r\n * 메시지 닫기\r\n * @param key 메시지 키\r\n */\r\nexport const closeMessage = (key: string) => {\r\n message.destroy(key);\r\n};\r\n\r\n/**\r\n * 모든 메시지 닫기\r\n */\r\nexport const closeAllMessages = () => {\r\n message.destroy();\r\n};\r\n\r\n/**\r\n * API 오류 메시지 표시 (공통)\r\n * @param error 오류 객체\r\n * @param defaultMessage 기본 오류 메시지\r\n */\r\nexport const showApiError = (\r\n error: any,\r\n defaultMessage: string = '처리 중 오류가 발생했습니다.'\r\n) => {\r\n const errorMessage =\r\n error?.response?.data?.message || error?.message || defaultMessage;\r\n showError(errorMessage);\r\n};\r\n\r\n/**\r\n * 저장 성공 메시지 표시\r\n * @param type 저장 타입 ('등록', '수정', '삭제' 등)\r\n */\r\nexport const showSaveSuccess = (type: string = '저장') => {\r\n showSuccess(`${type}이 완료되었습니다.`);\r\n};\r\n\r\n/**\r\n * 저장 실패 메시지 표시\r\n * @param type 저장 타입 ('등록', '수정', '삭제' 등)\r\n */\r\nexport const showSaveError = (type: string = '저장') => {\r\n showError(`${type} 중 오류가 발생했습니다.`);\r\n};\r\n\r\n/**\r\n * 중복 체크 실패 메시지 표시\r\n * @param fieldName 필드명\r\n */\r\nexport const showDuplicateError = (fieldName: string) => {\r\n showError(`이미 사용중인 ${fieldName}입니다.`);\r\n};\r\n\r\n/**\r\n * 필수 입력 항목 메시지 표시\r\n * @param fieldName 필드명\r\n */\r\nexport const showRequiredError = (fieldName: string) => {\r\n showError(`${fieldName}을(를) 입력해주세요.`);\r\n};\r\n","import { callService } from \"./apiUtils\";\r\nimport { getUserInfo } from \"./userUtils\";\r\n\r\n/**\r\n * 파일 키를 사용하여 파일 상세 정보를 조회하고, 해당 정보를 바탕으로 다운로드를 시작하는 유틸리티 함수입니다.\r\n *\r\n * @param fileKey - 조회할 파일의 키 (fileGrpKey)\r\n * @returns API 호출 결과 또는 오류\r\n */\r\nexport async function downloadByFileKey(fileKey: string): Promise<any> {\r\n try {\r\n // 1. fileKey를 매개변수로 파일 상세 정보 조회 서비스 호출\r\n const fileDetailsResponse = await callService(\"SCMFILE00101\", {\r\n crprCd: getUserInfo().crprCd,\r\n sysCd: __SYS_CD__,\r\n fileKey,\r\n }).then((res) => {\r\n let response;\r\n if (res.sub) {\r\n response = res.sub[0];\r\n }\r\n console.log(res);\r\n console.log(response);\r\n if (!response.lgclFileNm) {\r\n console.error(\"논리파일명이 없습니다.\");\r\n throw new Error(\"논리 파일명 누락\");\r\n }\r\n if (!response.filePath) {\r\n console.error(\"파일 경로가 없습니다.\");\r\n throw new Error(\"파일 경로 누락\");\r\n }\r\n\r\n // download api 호출\r\n const downloadUrl = `api/download?filePath=${encodeURIComponent(\r\n response.filePath\r\n )}&logicalName=${encodeURIComponent(response.lgclFileNm)}`;\r\n window.open(downloadUrl, \"_blank\"); // 새 탭에서 열어 다운로드 트리거\r\n\r\n return { success: true, message: \"파일 다운로드 요청 성공\" }; // 다운로드 요청 성공을 나타내는 객체 반환\r\n });\r\n\r\n return fileDetailsResponse; // .then() 블록의 결과 반환\r\n } catch (error) {\r\n console.error(\"downloadByFileKey 함수 실행 중 오류 발생:\", error);\r\n throw error;\r\n }\r\n}\r\n"],"names":["getBackgroundImage","imageName","getDefaultBackgroundImage","getLogoImage","logoName","getIconImage","iconName","category","getAvatarImage","avatarName","preloadImage","src","resolve","reject","img","resizeImage","width","height","url","convertImageFormat","format","generateSrcSet","baseSrc","sizes","size","getOptimizedImageUrl","options","handleImageError","event","useImageLoader","isLoading","setIsLoading","React","hasError","setHasError","setCookie","name","value","days","expires","getCookie","nameEQ","ca","i","c","deleteCookie","THEME_COOKIE_NAME","showSuccess","content","duration","message","showError","showLoading","closeMessage","key","closeAllMessages","showApiError","error","defaultMessage","errorMessage","showSaveSuccess","type","showSaveError","showDuplicateError","fieldName","showRequiredError","downloadByFileKey","fileKey","callService","getUserInfo","res","response","downloadUrl"],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";const t=require("./jsx-runtime-CeSfJrVB.cjs"),d=require("./AuthContext-CXng9fj0.cjs"),f=require("./ScreenProtectContext-ofv2QgMp.cjs"),u=require("antd"),x=require("react-router-dom"),w=require("./envUtils-CduTHoHu.cjs"),j=require("react"),p="bwg-dot-line-wave-v4";function v(){if(typeof document>"u"||document.getElementById(p))return;const e=document.createElement("style");e.id=p,e.textContent=`
|
|
2
|
+
.bwg-dotline {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
gap: var(--bwg-gap, 12px);
|
|
6
|
+
height: calc(var(--bwg-size, 12px) + 2 * var(--bwg-amp, 12px));
|
|
7
|
+
line-height: 0;
|
|
8
|
+
}
|
|
9
|
+
.bwg-dotline .dot {
|
|
10
|
+
width: var(--bwg-size, 12px);
|
|
11
|
+
height: var(--bwg-size, 12px);
|
|
12
|
+
border-radius: 50%;
|
|
13
|
+
background: currentColor;
|
|
14
|
+
will-change: transform, opacity;
|
|
15
|
+
filter: drop-shadow(0 1px 2px rgba(0,0,0,.12));
|
|
16
|
+
animation: bwg-dotline-sine var(--bwg-speed, 780ms) linear infinite;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* sin(θ) 근사: 0, 45, 90, 135, 180, 225, 270, 315, 360deg */
|
|
20
|
+
@keyframes bwg-dotline-sine {
|
|
21
|
+
0% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
|
|
22
|
+
12.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }
|
|
23
|
+
25% { transform: translate3d(0, calc(-1 * var(--bwg-amp, 12px)), 0) scale(1.06); opacity: 1; }
|
|
24
|
+
37.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }
|
|
25
|
+
50% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
|
|
26
|
+
62.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }
|
|
27
|
+
75% { transform: translate3d(0, calc( 1 * var(--bwg-amp, 12px)), 0) scale(.96); opacity: .76; }
|
|
28
|
+
87.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }
|
|
29
|
+
100% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@media (prefers-reduced-motion: reduce) {
|
|
33
|
+
.bwg-dotline .dot { animation: none; }
|
|
34
|
+
}
|
|
35
|
+
`,document.head.appendChild(e)}const E=({colors:e=["#DAD3FF","#B3A6FF","#9380FF","#816BFA"],count:r,size:s=12,gap:i=10,amp:m=16,speedMs:l=900,direction:g="ltr",phase:y=.7})=>{j.useEffect(()=>{v()},[]);const a=r??e.length,b=Array.from({length:a}),h={"--bwg-size":`${s}px`,"--bwg-gap":`${i}px`,"--bwg-amp":`${m}px`,"--bwg-speed":`${l}ms`},c=l/a*y;return t.jsxRuntimeExports.jsx("span",{className:"bwg-dotline",role:"img","aria-label":"loading",style:h,children:b.map((D,n)=>t.jsxRuntimeExports.jsx("span",{className:"dot",style:{backgroundColor:e[n%e.length],animationDelay:g==="ltr"?`${n*c}ms`:`${(a-1-n)*c}ms`}},n))})},o=({spin:e=null,text:r="인증중..."})=>{const{busy:s}=d.useAuth();return e??s?t.jsxRuntimeExports.jsxs("div",{style:{position:"fixed",height:"100vh",left:0,right:0,top:0,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:8,padding:"8px 12px",background:"rgba(0,0,0,0.6)",color:"#fff",zIndex:1e4},"aria-live":"polite","aria-busy":"true",role:"status",children:[t.jsxRuntimeExports.jsx(u.Spin,{indicator:t.jsxRuntimeExports.jsx(E,{colors:["#DAD3FF","#B3A6FF","#9380FF","#816BFA"],size:12,gap:10,amp:16,speedMs:900,phase:.75,direction:"ltr"})}),t.jsxRuntimeExports.jsx("span",{className:"bwg-spin-txt",style:{marginTop:"15px"},children:r})]}):null},R=()=>{const{reauthWithPin:e}=d.useAuth();return t.jsxRuntimeExports.jsx(f.ScreenProtectProvider,{idleMs:30*6e4,onUnlock:async r=>w.isLocal?!0:!!r&&await e(r),children:t.jsxRuntimeExports.jsx(u.ConfigProvider,{getPopupContainer:()=>document.getElementById("app-shell")||document.body,children:t.jsxRuntimeExports.jsxs("div",{id:"app-shell",children:[t.jsxRuntimeExports.jsx(o,{}),t.jsxRuntimeExports.jsx(x.Outlet,{})]})})})},F=()=>t.jsxRuntimeExports.jsxs("div",{children:[t.jsxRuntimeExports.jsx(o,{}),t.jsxRuntimeExports.jsx(x.Outlet,{})]});exports.ProgressOverlay=o;exports.ProtectedLayout=R;exports.PublicLayout=F;
|
|
36
|
+
//# sourceMappingURL=PublicLayout-BiTPwkVq.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PublicLayout-BiTPwkVq.cjs","sources":["../../src/components/layout/ProgressOverlay.tsx","../../src/components/layout/ProtectLayout.tsx","../../src/components/layout/PublicLayout.tsx"],"sourcesContent":["import { useAuth } from \"@/provider/contexts/AuthContext\";\r\nimport { Spin } from \"antd\";\r\nimport React, { useEffect } from 'react';\r\n\r\nconst DOTLINE_STYLE_ID = 'bwg-dot-line-wave-v4';\r\nfunction ensureDotLineWaveStylesV4() {\r\n if (typeof document === 'undefined') return;\r\n if (document.getElementById(DOTLINE_STYLE_ID)) return;\r\n\r\n const style = document.createElement('style');\r\n style.id = DOTLINE_STYLE_ID;\r\n style.textContent = `\r\n .bwg-dotline {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--bwg-gap, 12px);\r\n height: calc(var(--bwg-size, 12px) + 2 * var(--bwg-amp, 12px));\r\n line-height: 0;\r\n }\r\n .bwg-dotline .dot {\r\n width: var(--bwg-size, 12px);\r\n height: var(--bwg-size, 12px);\r\n border-radius: 50%;\r\n background: currentColor;\r\n will-change: transform, opacity;\r\n filter: drop-shadow(0 1px 2px rgba(0,0,0,.12));\r\n animation: bwg-dotline-sine var(--bwg-speed, 780ms) linear infinite;\r\n }\r\n\r\n /* sin(θ) 근사: 0, 45, 90, 135, 180, 225, 270, 315, 360deg */\r\n @keyframes bwg-dotline-sine {\r\n 0% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }\r\n 12.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }\r\n 25% { transform: translate3d(0, calc(-1 * var(--bwg-amp, 12px)), 0) scale(1.06); opacity: 1; }\r\n 37.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }\r\n 50% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }\r\n 62.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }\r\n 75% { transform: translate3d(0, calc( 1 * var(--bwg-amp, 12px)), 0) scale(.96); opacity: .76; }\r\n 87.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }\r\n 100% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .bwg-dotline .dot { animation: none; }\r\n }\r\n `;\r\n document.head.appendChild(style);\r\n}\r\n\r\n/* 직선 도트 파동 인디케이터 */\r\nconst DotLineSmoothIndicator: React.FC<{\r\n colors?: string[]; // 각 점 색\r\n count?: number; // 점 개수 (기본: colors 길이)\r\n size?: number; // 점 지름\r\n gap?: number; // 점 간격\r\n amp?: number; // 진폭(px)\r\n speedMs?: number; // 한 주기(ms)\r\n direction?: 'ltr' | 'rtl'; // 파동 진행 방향\r\n phase?: number; // 점 간 지연 비율(0~1) — 낮출수록 부드러움\r\n}> = ({\r\n colors = ['#DAD3FF', '#B3A6FF', '#9380FF', '#816BFA'],\r\n count,\r\n size = 12,\r\n gap = 10,\r\n amp = 16,\r\n speedMs = 900,\r\n direction = 'ltr',\r\n phase = 0.7,\r\n}) => {\r\n useEffect(() => { ensureDotLineWaveStylesV4(); }, []);\r\n\r\n const n = count ?? colors.length;\r\n const dots = Array.from({ length: n });\r\n const baseStyle = {\r\n ['--bwg-size' as any]: `${size}px`,\r\n ['--bwg-gap' as any]: `${gap}px`,\r\n ['--bwg-amp' as any]: `${amp}px`,\r\n ['--bwg-speed' as any]: `${speedMs}ms`,\r\n } as React.CSSProperties;\r\n\r\n const perDotDelay = (speedMs / n) * phase;\r\n\r\n return (\r\n <span className=\"bwg-dotline\" role=\"img\" aria-label=\"loading\" style={baseStyle}>\r\n {dots.map((_, i) => (\r\n <span\r\n key={i}\r\n className=\"dot\"\r\n style={{\r\n backgroundColor: colors[i % colors.length],\r\n animationDelay:\r\n direction === 'ltr'\r\n ? `${(i * perDotDelay)}ms`\r\n : `${((n - 1 - i) * perDotDelay)}ms`,\r\n }}\r\n />\r\n ))}\r\n </span>\r\n );\r\n};\r\n\r\n\r\n/**\r\n * 진행 중 표시\r\n * @returns ProgressOverlay\r\n */\r\nconst ProgressOverlay: React.FC<{spin?: boolean | null; text?: string }> = ({spin = null, text = '인증중...',}) => {\r\n const { busy } = useAuth();\r\n const show = (spin ?? busy);\r\n if (!show) return null;\r\n return (\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n height: \"100vh\",\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n display: \"flex\",\r\n flexDirection:'column',\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n padding: \"8px 12px\",\r\n background: \"rgba(0,0,0,0.6)\",\r\n color: \"#fff\",\r\n zIndex: 10000,\r\n }}\r\n aria-live=\"polite\"\r\n aria-busy=\"true\"\r\n role=\"status\"\r\n >\r\n <Spin\r\n indicator={\r\n <DotLineSmoothIndicator\r\n colors={['#DAD3FF', '#B3A6FF', '#9380FF', '#816BFA']}\r\n size={12}\r\n gap={10}\r\n amp={16}\r\n speedMs={900}\r\n phase={0.75} \r\n direction=\"ltr\"\r\n />\r\n }\r\n />\r\n <span className=\"bwg-spin-txt\" style={{marginTop:\"15px\"}}>{text}</span>\r\n </div>\r\n );\r\n };\r\n\r\nexport default ProgressOverlay;","import { useAuth } from \"@/provider/contexts/AuthContext\";\r\nimport { ScreenProtectProvider } from \"@/provider/contexts/ScreenProtectContext\";\r\nimport { isLocal } from \"@/utils\";\r\nimport { ConfigProvider } from \"antd\";\r\nimport { Outlet } from \"react-router-dom\";\r\nimport ProgressOverlay from \"./ProgressOverlay\";\r\n\r\n/**\r\n * 보호 레이아웃\r\n * @returns ProtectedLayout\r\n */\r\nconst ProtectedLayout = () => {\r\n const { reauthWithPin } = useAuth();\r\n // NOTE: 인증 여부 체크는 각 페이지(/main)의 스토어 가드에 위임합니다.\r\n // 필요하다면 여기서도 RequireAuth로 감싸세요.\r\n return (\r\n <ScreenProtectProvider idleMs={30 * 60_000} onUnlock={async (pin) => {\r\n if(isLocal) {\r\n // 로컬에서는 항상 true\r\n return true;\r\n }\r\n return !!pin && (await reauthWithPin(pin));\r\n }}>\r\n {/* Ensure AntD portals mount inside protected shell if you need it */}\r\n <ConfigProvider getPopupContainer={() => document.getElementById(\"app-shell\") || document.body}>\r\n <div id=\"app-shell\">\r\n <ProgressOverlay />\r\n <Outlet />\r\n </div>\r\n </ConfigProvider>\r\n </ScreenProtectProvider>\r\n );\r\n }\r\n\r\n export default ProtectedLayout;","import { Outlet } from \"react-router-dom\";\r\nimport ProgressOverlay from \"./ProgressOverlay\";\r\n\r\n/**\r\n * 공개 레이아웃\r\n * @returns PublicLayout\r\n */\r\nconst PublicLayout = () => {\r\n return (\r\n <div>\r\n <ProgressOverlay />\r\n <Outlet />\r\n </div>\r\n );\r\n}\r\n\r\nexport default PublicLayout;"],"names":["DOTLINE_STYLE_ID","ensureDotLineWaveStylesV4","style","DotLineSmoothIndicator","colors","count","size","gap","amp","speedMs","direction","phase","useEffect","n","dots","baseStyle","perDotDelay","jsx","_","i","ProgressOverlay","spin","text","busy","useAuth","jsxs","Spin","ProtectedLayout","reauthWithPin","ScreenProtectProvider","pin","isLocal","ConfigProvider","Outlet","PublicLayout"],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { j as e } from "./jsx-runtime-Dpn_P65e.js";
|
|
2
|
+
import { u as p } from "./AuthContext-Ei2P-z4d.js";
|
|
3
|
+
import { S as y } from "./ScreenProtectContext-zByHldrr.js";
|
|
4
|
+
import { Spin as h, ConfigProvider as w } from "antd";
|
|
5
|
+
import { Outlet as d } from "react-router-dom";
|
|
6
|
+
import { i as v } from "./envUtils-C9Gf5aek.js";
|
|
7
|
+
import { useEffect as j } from "react";
|
|
8
|
+
const c = "bwg-dot-line-wave-v4";
|
|
9
|
+
function F() {
|
|
10
|
+
if (typeof document > "u" || document.getElementById(c)) return;
|
|
11
|
+
const t = document.createElement("style");
|
|
12
|
+
t.id = c, t.textContent = `
|
|
13
|
+
.bwg-dotline {
|
|
14
|
+
display: inline-flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
gap: var(--bwg-gap, 12px);
|
|
17
|
+
height: calc(var(--bwg-size, 12px) + 2 * var(--bwg-amp, 12px));
|
|
18
|
+
line-height: 0;
|
|
19
|
+
}
|
|
20
|
+
.bwg-dotline .dot {
|
|
21
|
+
width: var(--bwg-size, 12px);
|
|
22
|
+
height: var(--bwg-size, 12px);
|
|
23
|
+
border-radius: 50%;
|
|
24
|
+
background: currentColor;
|
|
25
|
+
will-change: transform, opacity;
|
|
26
|
+
filter: drop-shadow(0 1px 2px rgba(0,0,0,.12));
|
|
27
|
+
animation: bwg-dotline-sine var(--bwg-speed, 780ms) linear infinite;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* sin(θ) 근사: 0, 45, 90, 135, 180, 225, 270, 315, 360deg */
|
|
31
|
+
@keyframes bwg-dotline-sine {
|
|
32
|
+
0% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
|
|
33
|
+
12.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }
|
|
34
|
+
25% { transform: translate3d(0, calc(-1 * var(--bwg-amp, 12px)), 0) scale(1.06); opacity: 1; }
|
|
35
|
+
37.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }
|
|
36
|
+
50% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
|
|
37
|
+
62.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }
|
|
38
|
+
75% { transform: translate3d(0, calc( 1 * var(--bwg-amp, 12px)), 0) scale(.96); opacity: .76; }
|
|
39
|
+
87.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }
|
|
40
|
+
100% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@media (prefers-reduced-motion: reduce) {
|
|
44
|
+
.bwg-dotline .dot { animation: none; }
|
|
45
|
+
}
|
|
46
|
+
`, document.head.appendChild(t);
|
|
47
|
+
}
|
|
48
|
+
const D = ({
|
|
49
|
+
colors: t = ["#DAD3FF", "#B3A6FF", "#9380FF", "#816BFA"],
|
|
50
|
+
count: a,
|
|
51
|
+
size: n = 12,
|
|
52
|
+
gap: o = 10,
|
|
53
|
+
amp: g = 16,
|
|
54
|
+
speedMs: i = 900,
|
|
55
|
+
direction: u = "ltr",
|
|
56
|
+
phase: x = 0.7
|
|
57
|
+
}) => {
|
|
58
|
+
j(() => {
|
|
59
|
+
F();
|
|
60
|
+
}, []);
|
|
61
|
+
const s = a ?? t.length, f = Array.from({ length: s }), b = {
|
|
62
|
+
"--bwg-size": `${n}px`,
|
|
63
|
+
"--bwg-gap": `${o}px`,
|
|
64
|
+
"--bwg-amp": `${g}px`,
|
|
65
|
+
"--bwg-speed": `${i}ms`
|
|
66
|
+
}, l = i / s * x;
|
|
67
|
+
return /* @__PURE__ */ e.jsx("span", { className: "bwg-dotline", role: "img", "aria-label": "loading", style: b, children: f.map((P, r) => /* @__PURE__ */ e.jsx(
|
|
68
|
+
"span",
|
|
69
|
+
{
|
|
70
|
+
className: "dot",
|
|
71
|
+
style: {
|
|
72
|
+
backgroundColor: t[r % t.length],
|
|
73
|
+
animationDelay: u === "ltr" ? `${r * l}ms` : `${(s - 1 - r) * l}ms`
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
r
|
|
77
|
+
)) });
|
|
78
|
+
}, m = ({ spin: t = null, text: a = "인증중..." }) => {
|
|
79
|
+
const { busy: n } = p();
|
|
80
|
+
return t ?? n ? /* @__PURE__ */ e.jsxs(
|
|
81
|
+
"div",
|
|
82
|
+
{
|
|
83
|
+
style: {
|
|
84
|
+
position: "fixed",
|
|
85
|
+
height: "100vh",
|
|
86
|
+
left: 0,
|
|
87
|
+
right: 0,
|
|
88
|
+
top: 0,
|
|
89
|
+
display: "flex",
|
|
90
|
+
flexDirection: "column",
|
|
91
|
+
justifyContent: "center",
|
|
92
|
+
alignItems: "center",
|
|
93
|
+
gap: 8,
|
|
94
|
+
padding: "8px 12px",
|
|
95
|
+
background: "rgba(0,0,0,0.6)",
|
|
96
|
+
color: "#fff",
|
|
97
|
+
zIndex: 1e4
|
|
98
|
+
},
|
|
99
|
+
"aria-live": "polite",
|
|
100
|
+
"aria-busy": "true",
|
|
101
|
+
role: "status",
|
|
102
|
+
children: [
|
|
103
|
+
/* @__PURE__ */ e.jsx(
|
|
104
|
+
h,
|
|
105
|
+
{
|
|
106
|
+
indicator: /* @__PURE__ */ e.jsx(
|
|
107
|
+
D,
|
|
108
|
+
{
|
|
109
|
+
colors: ["#DAD3FF", "#B3A6FF", "#9380FF", "#816BFA"],
|
|
110
|
+
size: 12,
|
|
111
|
+
gap: 10,
|
|
112
|
+
amp: 16,
|
|
113
|
+
speedMs: 900,
|
|
114
|
+
phase: 0.75,
|
|
115
|
+
direction: "ltr"
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
}
|
|
119
|
+
),
|
|
120
|
+
/* @__PURE__ */ e.jsx("span", { className: "bwg-spin-txt", style: { marginTop: "15px" }, children: a })
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
) : null;
|
|
124
|
+
}, B = () => {
|
|
125
|
+
const { reauthWithPin: t } = p();
|
|
126
|
+
return /* @__PURE__ */ e.jsx(y, { idleMs: 30 * 6e4, onUnlock: async (a) => v ? !0 : !!a && await t(a), children: /* @__PURE__ */ e.jsx(w, { getPopupContainer: () => document.getElementById("app-shell") || document.body, children: /* @__PURE__ */ e.jsxs("div", { id: "app-shell", children: [
|
|
127
|
+
/* @__PURE__ */ e.jsx(m, {}),
|
|
128
|
+
/* @__PURE__ */ e.jsx(d, {})
|
|
129
|
+
] }) }) });
|
|
130
|
+
}, $ = () => /* @__PURE__ */ e.jsxs("div", { children: [
|
|
131
|
+
/* @__PURE__ */ e.jsx(m, {}),
|
|
132
|
+
/* @__PURE__ */ e.jsx(d, {})
|
|
133
|
+
] });
|
|
134
|
+
export {
|
|
135
|
+
m as P,
|
|
136
|
+
B as a,
|
|
137
|
+
$ as b
|
|
138
|
+
};
|
|
139
|
+
//# sourceMappingURL=PublicLayout-g9WMtoZ0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PublicLayout-g9WMtoZ0.js","sources":["../../src/components/layout/ProgressOverlay.tsx","../../src/components/layout/ProtectLayout.tsx","../../src/components/layout/PublicLayout.tsx"],"sourcesContent":["import { useAuth } from \"@/provider/contexts/AuthContext\";\r\nimport { Spin } from \"antd\";\r\nimport React, { useEffect } from 'react';\r\n\r\nconst DOTLINE_STYLE_ID = 'bwg-dot-line-wave-v4';\r\nfunction ensureDotLineWaveStylesV4() {\r\n if (typeof document === 'undefined') return;\r\n if (document.getElementById(DOTLINE_STYLE_ID)) return;\r\n\r\n const style = document.createElement('style');\r\n style.id = DOTLINE_STYLE_ID;\r\n style.textContent = `\r\n .bwg-dotline {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--bwg-gap, 12px);\r\n height: calc(var(--bwg-size, 12px) + 2 * var(--bwg-amp, 12px));\r\n line-height: 0;\r\n }\r\n .bwg-dotline .dot {\r\n width: var(--bwg-size, 12px);\r\n height: var(--bwg-size, 12px);\r\n border-radius: 50%;\r\n background: currentColor;\r\n will-change: transform, opacity;\r\n filter: drop-shadow(0 1px 2px rgba(0,0,0,.12));\r\n animation: bwg-dotline-sine var(--bwg-speed, 780ms) linear infinite;\r\n }\r\n\r\n /* sin(θ) 근사: 0, 45, 90, 135, 180, 225, 270, 315, 360deg */\r\n @keyframes bwg-dotline-sine {\r\n 0% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }\r\n 12.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }\r\n 25% { transform: translate3d(0, calc(-1 * var(--bwg-amp, 12px)), 0) scale(1.06); opacity: 1; }\r\n 37.5%{ transform: translate3d(0, calc(-0.7071 * var(--bwg-amp, 12px)), 0) scale(1.03); opacity: .92; }\r\n 50% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }\r\n 62.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }\r\n 75% { transform: translate3d(0, calc( 1 * var(--bwg-amp, 12px)), 0) scale(.96); opacity: .76; }\r\n 87.5%{ transform: translate3d(0, calc( 0.7071 * var(--bwg-amp, 12px)), 0) scale(.97); opacity: .78; }\r\n 100% { transform: translate3d(0, 0, 0) scale(.98); opacity: .80; }\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .bwg-dotline .dot { animation: none; }\r\n }\r\n `;\r\n document.head.appendChild(style);\r\n}\r\n\r\n/* 직선 도트 파동 인디케이터 */\r\nconst DotLineSmoothIndicator: React.FC<{\r\n colors?: string[]; // 각 점 색\r\n count?: number; // 점 개수 (기본: colors 길이)\r\n size?: number; // 점 지름\r\n gap?: number; // 점 간격\r\n amp?: number; // 진폭(px)\r\n speedMs?: number; // 한 주기(ms)\r\n direction?: 'ltr' | 'rtl'; // 파동 진행 방향\r\n phase?: number; // 점 간 지연 비율(0~1) — 낮출수록 부드러움\r\n}> = ({\r\n colors = ['#DAD3FF', '#B3A6FF', '#9380FF', '#816BFA'],\r\n count,\r\n size = 12,\r\n gap = 10,\r\n amp = 16,\r\n speedMs = 900,\r\n direction = 'ltr',\r\n phase = 0.7,\r\n}) => {\r\n useEffect(() => { ensureDotLineWaveStylesV4(); }, []);\r\n\r\n const n = count ?? colors.length;\r\n const dots = Array.from({ length: n });\r\n const baseStyle = {\r\n ['--bwg-size' as any]: `${size}px`,\r\n ['--bwg-gap' as any]: `${gap}px`,\r\n ['--bwg-amp' as any]: `${amp}px`,\r\n ['--bwg-speed' as any]: `${speedMs}ms`,\r\n } as React.CSSProperties;\r\n\r\n const perDotDelay = (speedMs / n) * phase;\r\n\r\n return (\r\n <span className=\"bwg-dotline\" role=\"img\" aria-label=\"loading\" style={baseStyle}>\r\n {dots.map((_, i) => (\r\n <span\r\n key={i}\r\n className=\"dot\"\r\n style={{\r\n backgroundColor: colors[i % colors.length],\r\n animationDelay:\r\n direction === 'ltr'\r\n ? `${(i * perDotDelay)}ms`\r\n : `${((n - 1 - i) * perDotDelay)}ms`,\r\n }}\r\n />\r\n ))}\r\n </span>\r\n );\r\n};\r\n\r\n\r\n/**\r\n * 진행 중 표시\r\n * @returns ProgressOverlay\r\n */\r\nconst ProgressOverlay: React.FC<{spin?: boolean | null; text?: string }> = ({spin = null, text = '인증중...',}) => {\r\n const { busy } = useAuth();\r\n const show = (spin ?? busy);\r\n if (!show) return null;\r\n return (\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n height: \"100vh\",\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n display: \"flex\",\r\n flexDirection:'column',\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n padding: \"8px 12px\",\r\n background: \"rgba(0,0,0,0.6)\",\r\n color: \"#fff\",\r\n zIndex: 10000,\r\n }}\r\n aria-live=\"polite\"\r\n aria-busy=\"true\"\r\n role=\"status\"\r\n >\r\n <Spin\r\n indicator={\r\n <DotLineSmoothIndicator\r\n colors={['#DAD3FF', '#B3A6FF', '#9380FF', '#816BFA']}\r\n size={12}\r\n gap={10}\r\n amp={16}\r\n speedMs={900}\r\n phase={0.75} \r\n direction=\"ltr\"\r\n />\r\n }\r\n />\r\n <span className=\"bwg-spin-txt\" style={{marginTop:\"15px\"}}>{text}</span>\r\n </div>\r\n );\r\n };\r\n\r\nexport default ProgressOverlay;","import { useAuth } from \"@/provider/contexts/AuthContext\";\r\nimport { ScreenProtectProvider } from \"@/provider/contexts/ScreenProtectContext\";\r\nimport { isLocal } from \"@/utils\";\r\nimport { ConfigProvider } from \"antd\";\r\nimport { Outlet } from \"react-router-dom\";\r\nimport ProgressOverlay from \"./ProgressOverlay\";\r\n\r\n/**\r\n * 보호 레이아웃\r\n * @returns ProtectedLayout\r\n */\r\nconst ProtectedLayout = () => {\r\n const { reauthWithPin } = useAuth();\r\n // NOTE: 인증 여부 체크는 각 페이지(/main)의 스토어 가드에 위임합니다.\r\n // 필요하다면 여기서도 RequireAuth로 감싸세요.\r\n return (\r\n <ScreenProtectProvider idleMs={30 * 60_000} onUnlock={async (pin) => {\r\n if(isLocal) {\r\n // 로컬에서는 항상 true\r\n return true;\r\n }\r\n return !!pin && (await reauthWithPin(pin));\r\n }}>\r\n {/* Ensure AntD portals mount inside protected shell if you need it */}\r\n <ConfigProvider getPopupContainer={() => document.getElementById(\"app-shell\") || document.body}>\r\n <div id=\"app-shell\">\r\n <ProgressOverlay />\r\n <Outlet />\r\n </div>\r\n </ConfigProvider>\r\n </ScreenProtectProvider>\r\n );\r\n }\r\n\r\n export default ProtectedLayout;","import { Outlet } from \"react-router-dom\";\r\nimport ProgressOverlay from \"./ProgressOverlay\";\r\n\r\n/**\r\n * 공개 레이아웃\r\n * @returns PublicLayout\r\n */\r\nconst PublicLayout = () => {\r\n return (\r\n <div>\r\n <ProgressOverlay />\r\n <Outlet />\r\n </div>\r\n );\r\n}\r\n\r\nexport default PublicLayout;"],"names":["DOTLINE_STYLE_ID","ensureDotLineWaveStylesV4","style","DotLineSmoothIndicator","colors","count","size","gap","amp","speedMs","direction","phase","useEffect","n","dots","baseStyle","perDotDelay","jsx","_","i","ProgressOverlay","spin","text","busy","useAuth","jsxs","Spin","ProtectedLayout","reauthWithPin","ScreenProtectProvider","pin","isLocal","ConfigProvider","Outlet","PublicLayout"],"mappings":"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"}
|