@bwg-ui/core 1.1.12 → 1.1.14
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/{TabContainer-Dx2PVShz.cjs → ViewContainer-DQl7Mb0U.cjs} +3 -3
- package/dist/chunks/ViewContainer-DQl7Mb0U.cjs.map +1 -0
- package/dist/chunks/{TabContainer-B7-6AQXV.js → ViewContainer-v1V83KBq.js} +40 -41
- package/dist/chunks/ViewContainer-v1V83KBq.js.map +1 -0
- package/dist/components/common/index.cjs +1 -1
- package/dist/components/common/index.d.ts +1 -1
- package/dist/components/common/index.js +12 -12
- package/dist/components/layout/PrivateProtectedOverlay.d.ts +8 -0
- package/dist/components/layout/PrivateProtectedOverlay.d.ts.map +1 -0
- package/dist/components/layout/{TabContainer.d.ts → ViewContainer.d.ts} +2 -3
- package/dist/components/layout/ViewContainer.d.ts.map +1 -0
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.d.ts +1 -1
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +4 -4
- package/dist/index.cjs +1 -1
- package/dist/index.js +47 -47
- package/package.json +1 -1
- package/dist/chunks/TabContainer-B7-6AQXV.js.map +0 -1
- package/dist/chunks/TabContainer-Dx2PVShz.cjs.map +0 -1
- package/dist/components/layout/TabContainer.d.ts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const t=require("./jsx-runtime-CeSfJrVB.cjs"),u=require("./AuthContext-CXng9fj0.cjs"),E=require("./ScreenProtectContext-CVuXrJm6.cjs"),i=require("antd"),m=require("react-router-dom"),w=require("./envUtils-CduTHoHu.cjs"),n=require("react"),v=require("@ant-design/icons");class g extends n.Component{constructor(
|
|
1
|
+
"use strict";const t=require("./jsx-runtime-CeSfJrVB.cjs"),u=require("./AuthContext-CXng9fj0.cjs"),E=require("./ScreenProtectContext-CVuXrJm6.cjs"),i=require("antd"),m=require("react-router-dom"),w=require("./envUtils-CduTHoHu.cjs"),n=require("react"),v=require("@ant-design/icons");class g extends n.Component{constructor(r){super(r),this.resetError=()=>{this.setState({hasError:!1,error:void 0,errorInfo:void 0})},this.state={hasError:!1}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,s){console.error("ErrorBound caught an error:",r,s),this.setState({error:r,errorInfo:s})}render(){return this.state.hasError?this.props.fallback?this.props.fallback:t.jsxRuntimeExports.jsxs("div",{style:{padding:"40px 20px",textAlign:"center",backgroundColor:"#fafafa",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"},children:[t.jsxRuntimeExports.jsx(i.Result,{status:"error",title:"컴포넌트 로딩 중 오류가 발생했습니다",subTitle:this.state.error?`오류 내용: ${this.state.error.message}`:"알 수 없는 오류가 발생했습니다",extra:[t.jsxRuntimeExports.jsx(i.Button,{type:"primary",icon:t.jsxRuntimeExports.jsx(v.ReloadOutlined,{}),onClick:this.resetError,style:{marginRight:8},children:"다시 시도"},"retry")]}),this.state.error&&t.jsxRuntimeExports.jsxs("details",{style:{marginTop:"20px",textAlign:"left",maxWidth:"600px",backgroundColor:"#fff",padding:"16px",borderRadius:"6px",border:"1px solid #d9d9d9"},children:[t.jsxRuntimeExports.jsx("summary",{style:{cursor:"pointer",fontWeight:"bold"},children:"오류 상세 정보"}),t.jsxRuntimeExports.jsx("pre",{style:{marginTop:"8px",fontSize:"12px",color:"#666",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:this.state.error.stack})]})]}):this.props.children}}const x="bwg-dot-line-wave-v4";function R(){if(typeof document>"u"||document.getElementById(x))return;const e=document.createElement("style");e.id=x,e.textContent=`
|
|
2
2
|
.bwg-dotline {
|
|
3
3
|
display: inline-flex;
|
|
4
4
|
align-items: center;
|
|
@@ -32,5 +32,5 @@
|
|
|
32
32
|
@media (prefers-reduced-motion: reduce) {
|
|
33
33
|
.bwg-dotline .dot { animation: none; }
|
|
34
34
|
}
|
|
35
|
-
`,document.head.appendChild(
|
|
36
|
-
//# sourceMappingURL=
|
|
35
|
+
`,document.head.appendChild(e)}const C=({colors:e=["#DAD3FF","#B3A6FF","#9380FF","#816BFA"],count:r,size:s=12,gap:c=10,amp:h=16,speedMs:p=900,direction:f="ltr",phase:y=.7})=>{n.useEffect(()=>{R()},[]);const a=r??e.length,j=Array.from({length:a}),b={"--bwg-size":`${s}px`,"--bwg-gap":`${c}px`,"--bwg-amp":`${h}px`,"--bwg-speed":`${p}ms`},d=p/a*y;return t.jsxRuntimeExports.jsx("span",{className:"bwg-dotline",role:"img","aria-label":"loading",style:b,children:j.map((P,o)=>t.jsxRuntimeExports.jsx("span",{className:"dot",style:{backgroundColor:e[o%e.length],animationDelay:f==="ltr"?`${o*d}ms`:`${(a-1-o)*d}ms`}},o))})},l=({spin:e=null,text:r="인증중..."})=>{const{busy:s}=u.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(i.Spin,{indicator:t.jsxRuntimeExports.jsx(C,{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},D=()=>{const{reauthWithPin:e}=u.useAuth();return t.jsxRuntimeExports.jsx(E.ScreenProtectProvider,{idleMs:30*6e4,onUnlock:async r=>w.isLocal?!0:!!r&&await e(r),children:t.jsxRuntimeExports.jsx(i.ConfigProvider,{getPopupContainer:()=>document.getElementById("app-shell")||document.body,children:t.jsxRuntimeExports.jsxs("div",{id:"app-shell",children:[t.jsxRuntimeExports.jsx(l,{}),t.jsxRuntimeExports.jsx(m.Outlet,{})]})})})},F=()=>t.jsxRuntimeExports.jsxs("div",{children:[t.jsxRuntimeExports.jsx(l,{}),t.jsxRuntimeExports.jsx(m.Outlet,{})]}),k=({isActive:e,instance:r,params:s})=>t.jsxRuntimeExports.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",visibility:e?"visible":"hidden",opacity:e?1:0,transition:"opacity 0.2s ease-in-out",pointerEvents:e?"auto":"none"},children:t.jsxRuntimeExports.jsx(g,{children:t.jsxRuntimeExports.jsx(n.Suspense,{fallback:null,children:r&&n.createElement(r,{params:s})})})}),S=n.memo(k);exports.ErrorBound=g;exports.ProgressOverlay=l;exports.ProtectedLayout=D;exports.PublicLayout=F;exports.ViewContainer=S;
|
|
36
|
+
//# sourceMappingURL=ViewContainer-DQl7Mb0U.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewContainer-DQl7Mb0U.cjs","sources":["../../src/components/layout/ErrorBound.tsx","../../src/components/layout/ProgressOverlay.tsx","../../src/components/layout/ProtectLayout.tsx","../../src/components/layout/PublicLayout.tsx","../../src/components/layout/ViewContainer.tsx"],"sourcesContent":["import React, { Component, ErrorInfo, ReactNode } from 'react';\r\nimport { Result, Button } from 'antd';\r\nimport { ReloadOutlined, HomeOutlined } from '@ant-design/icons';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\ninterface Props {\r\n children: ReactNode;\r\n fallback?: ReactNode;\r\n}\r\n\r\ninterface State {\r\n hasError: boolean;\r\n error?: Error;\r\n errorInfo?: ErrorInfo;\r\n}\r\n\r\n// 에러 페이지 컴포넌트\r\nexport const ErrorPage: React.FC<{\r\n error?: Error;\r\n resetError?: () => void;\r\n onGoHome?: () => void;\r\n}> = ({ error, resetError, onGoHome }) => {\r\n const navigate = useNavigate();\r\n\r\n const handleGoHome = () => {\r\n if (onGoHome) {\r\n onGoHome();\r\n } else {\r\n // 기본 홈 이동 로직\r\n navigate('/');\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n padding: '40px 20px',\r\n textAlign: 'center',\r\n backgroundColor: '#fafafa',\r\n minHeight: '400px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }}\r\n >\r\n <Result\r\n status=\"error\"\r\n title=\"컴포넌트 로딩 중 오류가 발생했습니다\"\r\n subTitle={\r\n error\r\n ? `오류 내용: ${error.message}`\r\n : '알 수 없는 오류가 발생했습니다'\r\n }\r\n extra={[\r\n <Button\r\n key=\"retry\"\r\n type=\"primary\"\r\n icon={<ReloadOutlined />}\r\n onClick={resetError}\r\n style={{ marginRight: 8 }}\r\n >\r\n 다시 시도\r\n </Button>,\r\n <Button key=\"home\" icon={<HomeOutlined />} onClick={handleGoHome}>\r\n 홈으로\r\n </Button>,\r\n ]}\r\n />\r\n {error && (\r\n <details\r\n style={{\r\n marginTop: '20px',\r\n textAlign: 'left',\r\n maxWidth: '600px',\r\n backgroundColor: '#fff',\r\n padding: '16px',\r\n borderRadius: '6px',\r\n border: '1px solid #d9d9d9',\r\n }}\r\n >\r\n <summary style={{ cursor: 'pointer', fontWeight: 'bold' }}>\r\n 오류 상세 정보\r\n </summary>\r\n <pre\r\n style={{\r\n marginTop: '8px',\r\n fontSize: '12px',\r\n color: '#666',\r\n whiteSpace: 'pre-wrap',\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n {error.stack}\r\n </pre>\r\n </details>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n// 에러 경계 클래스 컴포넌트\r\nexport class ErrorBound extends Component<Props, State> {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n static getDerivedStateFromError(error: Error): State {\r\n return { hasError: true, error };\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\r\n console.error('ErrorBound caught an error:', error, errorInfo);\r\n this.setState({\r\n error,\r\n errorInfo,\r\n });\r\n }\r\n\r\n resetError = () => {\r\n this.setState({ hasError: false, error: undefined, errorInfo: undefined });\r\n };\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n if (this.props.fallback) {\r\n return this.props.fallback;\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n padding: '40px 20px',\r\n textAlign: 'center',\r\n backgroundColor: '#fafafa',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }}\r\n >\r\n <Result\r\n status=\"error\"\r\n title=\"컴포넌트 로딩 중 오류가 발생했습니다\"\r\n subTitle={\r\n this.state.error\r\n ? `오류 내용: ${this.state.error.message}`\r\n : '알 수 없는 오류가 발생했습니다'\r\n }\r\n extra={[\r\n <Button\r\n key=\"retry\"\r\n type=\"primary\"\r\n icon={<ReloadOutlined />}\r\n onClick={this.resetError}\r\n style={{ marginRight: 8 }}\r\n >\r\n 다시 시도\r\n </Button>,\r\n ]}\r\n />\r\n {this.state.error && (\r\n <details\r\n style={{\r\n marginTop: '20px',\r\n textAlign: 'left',\r\n maxWidth: '600px',\r\n backgroundColor: '#fff',\r\n padding: '16px',\r\n borderRadius: '6px',\r\n border: '1px solid #d9d9d9',\r\n }}\r\n >\r\n <summary style={{ cursor: 'pointer', fontWeight: 'bold' }}>\r\n 오류 상세 정보\r\n </summary>\r\n <pre\r\n style={{\r\n marginTop: '8px',\r\n fontSize: '12px',\r\n color: '#666',\r\n whiteSpace: 'pre-wrap',\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n {this.state.error.stack}\r\n </pre>\r\n </details>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\n// 함수형 컴포넌트용 에러 경계 훅\r\nexport const useErrorHandler = () => {\r\n const [error, setError] = React.useState<Error | null>(null);\r\n\r\n const handleError = React.useCallback((error: Error) => {\r\n console.error('useErrorHandler caught an error:', error);\r\n setError(error);\r\n }, []);\r\n\r\n const resetError = React.useCallback(() => {\r\n setError(null);\r\n }, []);\r\n\r\n return { error, handleError, resetError };\r\n};\r\n","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;","import React, { memo, Suspense } from \"react\";\r\nimport { ErrorBound } from \"./ErrorBound\";\r\n\r\nconst ViewContainer = ({\r\n isActive,\r\n instance,\r\n params,\r\n }: {\r\n isActive: boolean;\r\n instance?: React.ComponentType;\r\n params?: Record<string, any>;\r\n }) => {\r\n return <div\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n visibility: isActive ? 'visible' : 'hidden',\r\n opacity: isActive ? 1 : 0,\r\n transition: 'opacity 0.2s ease-in-out',\r\n pointerEvents: isActive ? 'auto' : 'none',\r\n }}\r\n>\r\n <ErrorBound>\r\n <Suspense \r\n fallback={null}\r\n >\r\n {instance && React.createElement(instance, { params } as any)}\r\n </Suspense>\r\n </ErrorBound>\r\n</div>;\r\n};\r\n\r\nexport default memo(ViewContainer);"],"names":["ErrorBound","Component","props","error","errorInfo","jsxs","jsx","Result","Button","ReloadOutlined","DOTLINE_STYLE_ID","ensureDotLineWaveStylesV4","style","DotLineSmoothIndicator","colors","count","size","gap","amp","speedMs","direction","phase","useEffect","n","dots","baseStyle","perDotDelay","_","i","ProgressOverlay","spin","text","busy","useAuth","Spin","ProtectedLayout","reauthWithPin","ScreenProtectProvider","pin","isLocal","ConfigProvider","Outlet","PublicLayout","ViewContainer","isActive","instance","params","Suspense","React","ViewContainer$1","memo"],"mappings":"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"}
|
|
@@ -7,17 +7,17 @@ import { i as E } from "./envUtils-C9Gf5aek.js";
|
|
|
7
7
|
import C, { Component as D, useEffect as F, memo as k, Suspense as S } from "react";
|
|
8
8
|
import { ReloadOutlined as B } from "@ant-design/icons";
|
|
9
9
|
class P extends D {
|
|
10
|
-
constructor(
|
|
11
|
-
super(
|
|
10
|
+
constructor(r) {
|
|
11
|
+
super(r), this.resetError = () => {
|
|
12
12
|
this.setState({ hasError: !1, error: void 0, errorInfo: void 0 });
|
|
13
13
|
}, this.state = { hasError: !1 };
|
|
14
14
|
}
|
|
15
|
-
static getDerivedStateFromError(
|
|
16
|
-
return { hasError: !0, error:
|
|
15
|
+
static getDerivedStateFromError(r) {
|
|
16
|
+
return { hasError: !0, error: r };
|
|
17
17
|
}
|
|
18
|
-
componentDidCatch(
|
|
19
|
-
console.error("ErrorBound caught an error:",
|
|
20
|
-
error:
|
|
18
|
+
componentDidCatch(r, a) {
|
|
19
|
+
console.error("ErrorBound caught an error:", r, a), this.setState({
|
|
20
|
+
error: r,
|
|
21
21
|
errorInfo: a
|
|
22
22
|
});
|
|
23
23
|
}
|
|
@@ -92,10 +92,10 @@ class P extends D {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
const c = "bwg-dot-line-wave-v4";
|
|
95
|
-
function
|
|
95
|
+
function A() {
|
|
96
96
|
if (typeof document > "u" || document.getElementById(c)) return;
|
|
97
|
-
const
|
|
98
|
-
|
|
97
|
+
const t = document.createElement("style");
|
|
98
|
+
t.id = c, t.textContent = `
|
|
99
99
|
.bwg-dotline {
|
|
100
100
|
display: inline-flex;
|
|
101
101
|
align-items: center;
|
|
@@ -129,41 +129,41 @@ function T() {
|
|
|
129
129
|
@media (prefers-reduced-motion: reduce) {
|
|
130
130
|
.bwg-dotline .dot { animation: none; }
|
|
131
131
|
}
|
|
132
|
-
`, document.head.appendChild(
|
|
132
|
+
`, document.head.appendChild(t);
|
|
133
133
|
}
|
|
134
|
-
const
|
|
135
|
-
colors:
|
|
136
|
-
count:
|
|
134
|
+
const I = ({
|
|
135
|
+
colors: t = ["#DAD3FF", "#B3A6FF", "#9380FF", "#816BFA"],
|
|
136
|
+
count: r,
|
|
137
137
|
size: a = 12,
|
|
138
|
-
gap:
|
|
138
|
+
gap: o = 10,
|
|
139
139
|
amp: u = 16,
|
|
140
140
|
speedMs: i = 900,
|
|
141
141
|
direction: g = "ltr",
|
|
142
142
|
phase: h = 0.7
|
|
143
143
|
}) => {
|
|
144
144
|
F(() => {
|
|
145
|
-
|
|
145
|
+
A();
|
|
146
146
|
}, []);
|
|
147
|
-
const
|
|
147
|
+
const n = r ?? t.length, x = Array.from({ length: n }), f = {
|
|
148
148
|
"--bwg-size": `${a}px`,
|
|
149
|
-
"--bwg-gap": `${
|
|
149
|
+
"--bwg-gap": `${o}px`,
|
|
150
150
|
"--bwg-amp": `${u}px`,
|
|
151
151
|
"--bwg-speed": `${i}ms`
|
|
152
|
-
}, l = i /
|
|
153
|
-
return /* @__PURE__ */ e.jsx("span", { className: "bwg-dotline", role: "img", "aria-label": "loading", style: f, children: x.map((
|
|
152
|
+
}, l = i / n * h;
|
|
153
|
+
return /* @__PURE__ */ e.jsx("span", { className: "bwg-dotline", role: "img", "aria-label": "loading", style: f, children: x.map((z, s) => /* @__PURE__ */ e.jsx(
|
|
154
154
|
"span",
|
|
155
155
|
{
|
|
156
156
|
className: "dot",
|
|
157
157
|
style: {
|
|
158
|
-
backgroundColor:
|
|
159
|
-
animationDelay: g === "ltr" ? `${
|
|
158
|
+
backgroundColor: t[s % t.length],
|
|
159
|
+
animationDelay: g === "ltr" ? `${s * l}ms` : `${(n - 1 - s) * l}ms`
|
|
160
160
|
}
|
|
161
161
|
},
|
|
162
|
-
|
|
162
|
+
s
|
|
163
163
|
)) });
|
|
164
|
-
}, m = ({ spin:
|
|
164
|
+
}, m = ({ spin: t = null, text: r = "인증중..." }) => {
|
|
165
165
|
const { busy: a } = d();
|
|
166
|
-
return
|
|
166
|
+
return t ?? a ? /* @__PURE__ */ e.jsxs(
|
|
167
167
|
"div",
|
|
168
168
|
{
|
|
169
169
|
style: {
|
|
@@ -190,7 +190,7 @@ const A = ({
|
|
|
190
190
|
v,
|
|
191
191
|
{
|
|
192
192
|
indicator: /* @__PURE__ */ e.jsx(
|
|
193
|
-
|
|
193
|
+
I,
|
|
194
194
|
{
|
|
195
195
|
colors: ["#DAD3FF", "#B3A6FF", "#9380FF", "#816BFA"],
|
|
196
196
|
size: 12,
|
|
@@ -203,24 +203,23 @@ const A = ({
|
|
|
203
203
|
)
|
|
204
204
|
}
|
|
205
205
|
),
|
|
206
|
-
/* @__PURE__ */ e.jsx("span", { className: "bwg-spin-txt", style: { marginTop: "15px" }, children:
|
|
206
|
+
/* @__PURE__ */ e.jsx("span", { className: "bwg-spin-txt", style: { marginTop: "15px" }, children: r })
|
|
207
207
|
]
|
|
208
208
|
}
|
|
209
209
|
) : null;
|
|
210
|
-
},
|
|
211
|
-
const { reauthWithPin:
|
|
212
|
-
return /* @__PURE__ */ e.jsx(b, { idleMs: 30 * 6e4, onUnlock: async (
|
|
210
|
+
}, M = () => {
|
|
211
|
+
const { reauthWithPin: t } = d();
|
|
212
|
+
return /* @__PURE__ */ e.jsx(b, { idleMs: 30 * 6e4, onUnlock: async (r) => E ? !0 : !!r && await t(r), children: /* @__PURE__ */ e.jsx(j, { getPopupContainer: () => document.getElementById("app-shell") || document.body, children: /* @__PURE__ */ e.jsxs("div", { id: "app-shell", children: [
|
|
213
213
|
/* @__PURE__ */ e.jsx(m, {}),
|
|
214
214
|
/* @__PURE__ */ e.jsx(p, {})
|
|
215
215
|
] }) }) });
|
|
216
|
-
},
|
|
216
|
+
}, U = () => /* @__PURE__ */ e.jsxs("div", { children: [
|
|
217
217
|
/* @__PURE__ */ e.jsx(m, {}),
|
|
218
218
|
/* @__PURE__ */ e.jsx(p, {})
|
|
219
|
-
] }),
|
|
220
|
-
tab: r,
|
|
219
|
+
] }), $ = ({
|
|
221
220
|
isActive: t,
|
|
222
|
-
instance:
|
|
223
|
-
params:
|
|
221
|
+
instance: r,
|
|
222
|
+
params: a
|
|
224
223
|
}) => /* @__PURE__ */ e.jsx(
|
|
225
224
|
"div",
|
|
226
225
|
{
|
|
@@ -239,16 +238,16 @@ const A = ({
|
|
|
239
238
|
S,
|
|
240
239
|
{
|
|
241
240
|
fallback: null,
|
|
242
|
-
children:
|
|
241
|
+
children: r && C.createElement(r, { params: a })
|
|
243
242
|
}
|
|
244
243
|
) })
|
|
245
244
|
}
|
|
246
|
-
), Y = k(
|
|
245
|
+
), Y = k($);
|
|
247
246
|
export {
|
|
248
247
|
P as E,
|
|
249
248
|
m as P,
|
|
250
|
-
Y as
|
|
251
|
-
|
|
252
|
-
|
|
249
|
+
Y as V,
|
|
250
|
+
M as a,
|
|
251
|
+
U as b
|
|
253
252
|
};
|
|
254
|
-
//# sourceMappingURL=
|
|
253
|
+
//# sourceMappingURL=ViewContainer-v1V83KBq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewContainer-v1V83KBq.js","sources":["../../src/components/layout/ErrorBound.tsx","../../src/components/layout/ProgressOverlay.tsx","../../src/components/layout/ProtectLayout.tsx","../../src/components/layout/PublicLayout.tsx","../../src/components/layout/ViewContainer.tsx"],"sourcesContent":["import React, { Component, ErrorInfo, ReactNode } from 'react';\r\nimport { Result, Button } from 'antd';\r\nimport { ReloadOutlined, HomeOutlined } from '@ant-design/icons';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\ninterface Props {\r\n children: ReactNode;\r\n fallback?: ReactNode;\r\n}\r\n\r\ninterface State {\r\n hasError: boolean;\r\n error?: Error;\r\n errorInfo?: ErrorInfo;\r\n}\r\n\r\n// 에러 페이지 컴포넌트\r\nexport const ErrorPage: React.FC<{\r\n error?: Error;\r\n resetError?: () => void;\r\n onGoHome?: () => void;\r\n}> = ({ error, resetError, onGoHome }) => {\r\n const navigate = useNavigate();\r\n\r\n const handleGoHome = () => {\r\n if (onGoHome) {\r\n onGoHome();\r\n } else {\r\n // 기본 홈 이동 로직\r\n navigate('/');\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n padding: '40px 20px',\r\n textAlign: 'center',\r\n backgroundColor: '#fafafa',\r\n minHeight: '400px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }}\r\n >\r\n <Result\r\n status=\"error\"\r\n title=\"컴포넌트 로딩 중 오류가 발생했습니다\"\r\n subTitle={\r\n error\r\n ? `오류 내용: ${error.message}`\r\n : '알 수 없는 오류가 발생했습니다'\r\n }\r\n extra={[\r\n <Button\r\n key=\"retry\"\r\n type=\"primary\"\r\n icon={<ReloadOutlined />}\r\n onClick={resetError}\r\n style={{ marginRight: 8 }}\r\n >\r\n 다시 시도\r\n </Button>,\r\n <Button key=\"home\" icon={<HomeOutlined />} onClick={handleGoHome}>\r\n 홈으로\r\n </Button>,\r\n ]}\r\n />\r\n {error && (\r\n <details\r\n style={{\r\n marginTop: '20px',\r\n textAlign: 'left',\r\n maxWidth: '600px',\r\n backgroundColor: '#fff',\r\n padding: '16px',\r\n borderRadius: '6px',\r\n border: '1px solid #d9d9d9',\r\n }}\r\n >\r\n <summary style={{ cursor: 'pointer', fontWeight: 'bold' }}>\r\n 오류 상세 정보\r\n </summary>\r\n <pre\r\n style={{\r\n marginTop: '8px',\r\n fontSize: '12px',\r\n color: '#666',\r\n whiteSpace: 'pre-wrap',\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n {error.stack}\r\n </pre>\r\n </details>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n// 에러 경계 클래스 컴포넌트\r\nexport class ErrorBound extends Component<Props, State> {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n static getDerivedStateFromError(error: Error): State {\r\n return { hasError: true, error };\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\r\n console.error('ErrorBound caught an error:', error, errorInfo);\r\n this.setState({\r\n error,\r\n errorInfo,\r\n });\r\n }\r\n\r\n resetError = () => {\r\n this.setState({ hasError: false, error: undefined, errorInfo: undefined });\r\n };\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n if (this.props.fallback) {\r\n return this.props.fallback;\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n padding: '40px 20px',\r\n textAlign: 'center',\r\n backgroundColor: '#fafafa',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }}\r\n >\r\n <Result\r\n status=\"error\"\r\n title=\"컴포넌트 로딩 중 오류가 발생했습니다\"\r\n subTitle={\r\n this.state.error\r\n ? `오류 내용: ${this.state.error.message}`\r\n : '알 수 없는 오류가 발생했습니다'\r\n }\r\n extra={[\r\n <Button\r\n key=\"retry\"\r\n type=\"primary\"\r\n icon={<ReloadOutlined />}\r\n onClick={this.resetError}\r\n style={{ marginRight: 8 }}\r\n >\r\n 다시 시도\r\n </Button>,\r\n ]}\r\n />\r\n {this.state.error && (\r\n <details\r\n style={{\r\n marginTop: '20px',\r\n textAlign: 'left',\r\n maxWidth: '600px',\r\n backgroundColor: '#fff',\r\n padding: '16px',\r\n borderRadius: '6px',\r\n border: '1px solid #d9d9d9',\r\n }}\r\n >\r\n <summary style={{ cursor: 'pointer', fontWeight: 'bold' }}>\r\n 오류 상세 정보\r\n </summary>\r\n <pre\r\n style={{\r\n marginTop: '8px',\r\n fontSize: '12px',\r\n color: '#666',\r\n whiteSpace: 'pre-wrap',\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n {this.state.error.stack}\r\n </pre>\r\n </details>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\n// 함수형 컴포넌트용 에러 경계 훅\r\nexport const useErrorHandler = () => {\r\n const [error, setError] = React.useState<Error | null>(null);\r\n\r\n const handleError = React.useCallback((error: Error) => {\r\n console.error('useErrorHandler caught an error:', error);\r\n setError(error);\r\n }, []);\r\n\r\n const resetError = React.useCallback(() => {\r\n setError(null);\r\n }, []);\r\n\r\n return { error, handleError, resetError };\r\n};\r\n","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;","import React, { memo, Suspense } from \"react\";\r\nimport { ErrorBound } from \"./ErrorBound\";\r\n\r\nconst ViewContainer = ({\r\n isActive,\r\n instance,\r\n params,\r\n }: {\r\n isActive: boolean;\r\n instance?: React.ComponentType;\r\n params?: Record<string, any>;\r\n }) => {\r\n return <div\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n visibility: isActive ? 'visible' : 'hidden',\r\n opacity: isActive ? 1 : 0,\r\n transition: 'opacity 0.2s ease-in-out',\r\n pointerEvents: isActive ? 'auto' : 'none',\r\n }}\r\n>\r\n <ErrorBound>\r\n <Suspense \r\n fallback={null}\r\n >\r\n {instance && React.createElement(instance, { params } as any)}\r\n </Suspense>\r\n </ErrorBound>\r\n</div>;\r\n};\r\n\r\nexport default memo(ViewContainer);"],"names":["ErrorBound","Component","props","error","errorInfo","jsxs","jsx","Result","Button","ReloadOutlined","DOTLINE_STYLE_ID","ensureDotLineWaveStylesV4","style","DotLineSmoothIndicator","colors","count","size","gap","amp","speedMs","direction","phase","useEffect","dots","baseStyle","perDotDelay","_","i","ProgressOverlay","spin","text","busy","useAuth","Spin","ProtectedLayout","reauthWithPin","ScreenProtectProvider","pin","isLocal","ConfigProvider","Outlet","PublicLayout","ViewContainer","isActive","instance","params","Suspense","React","ViewContainer$1","memo"],"mappings":";;;;;;;;AAsGO,MAAMA,UAAmBC,EAAwB;AAAA,EACtD,YAAYC,GAAc;AACxB,UAAMA,CAAK,GAgBb,KAAA,aAAa,MAAM;AACjB,WAAK,SAAS,EAAE,UAAU,IAAO,OAAO,QAAW,WAAW,QAAW;AAAA,IAC3E,GAjBE,KAAK,QAAQ,EAAE,UAAU,GAAA;AAAA,EAC3B;AAAA,EAEA,OAAO,yBAAyBC,GAAqB;AACnD,WAAO,EAAE,UAAU,IAAM,OAAAA,EAAA;AAAA,EAC3B;AAAA,EAEA,kBAAkBA,GAAcC,GAAsB;AACpD,YAAQ,MAAM,+BAA+BD,GAAOC,CAAS,GAC7D,KAAK,SAAS;AAAA,MACZ,OAAAD;AAAA,MACA,WAAAC;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EAMA,SAAS;AACP,WAAI,KAAK,MAAM,WACT,KAAK,MAAM,WACN,KAAK,MAAM,WAIlBC,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,SAAS;AAAA,UACT,WAAW;AAAA,UACX,iBAAiB;AAAA,UACjB,SAAS;AAAA,UACT,eAAe;AAAA,UACf,gBAAgB;AAAA,UAChB,YAAY;AAAA,QAAA;AAAA,QAGd,UAAA;AAAA,UAAAC,gBAAAA,EAAAA;AAAAA,YAACC;AAAA,YAAA;AAAA,cACC,QAAO;AAAA,cACP,OAAM;AAAA,cACN,UACE,KAAK,MAAM,QACP,UAAU,KAAK,MAAM,MAAM,OAAO,KAClC;AAAA,cAEN,OAAO;AAAA,gBACLD,gBAAAA,EAAAA;AAAAA,kBAACE;AAAA,kBAAA;AAAA,oBAEC,MAAK;AAAA,oBACL,4BAAOC,GAAA,EAAe;AAAA,oBACtB,SAAS,KAAK;AAAA,oBACd,OAAO,EAAE,aAAa,EAAA;AAAA,oBACvB,UAAA;AAAA,kBAAA;AAAA,kBALK;AAAA,gBAAA;AAAA,cAON;AAAA,YACF;AAAA,UAAA;AAAA,UAED,KAAK,MAAM,SACVJ,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,WAAW;AAAA,gBACX,WAAW;AAAA,gBACX,UAAU;AAAA,gBACV,iBAAiB;AAAA,gBACjB,SAAS;AAAA,gBACT,cAAc;AAAA,gBACd,QAAQ;AAAA,cAAA;AAAA,cAGV,UAAA;AAAA,gBAAAC,gBAAAA,EAAAA,IAAC,WAAA,EAAQ,OAAO,EAAE,QAAQ,WAAW,YAAY,OAAA,GAAU,UAAA,WAAA,CAE3D;AAAA,gBACAA,gBAAAA,EAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,OAAO;AAAA,sBACL,WAAW;AAAA,sBACX,UAAU;AAAA,sBACV,OAAO;AAAA,sBACP,YAAY;AAAA,sBACZ,WAAW;AAAA,oBAAA;AAAA,oBAGZ,UAAA,KAAK,MAAM,MAAM;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACpB;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA,IAMD,KAAK,MAAM;AAAA,EACpB;AACF;AChMA,MAAMI,IAAmB;AACzB,SAASC,IAA4B;AAEnC,MADI,OAAO,WAAa,OACpB,SAAS,eAAeD,CAAgB,EAAG;AAE/C,QAAME,IAAQ,SAAS,cAAc,OAAO;AAC5C,EAAAA,EAAM,KAAKF,GACXE,EAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAmCpB,SAAS,KAAK,YAAYA,CAAK;AACjC;AAGA,MAAMC,IASD,CAAC;AAAA,EACJ,QAAAC,IAAS,CAAC,WAAW,WAAW,WAAW,SAAS;AAAA,EACpD,OAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,KAAAC,IAAM;AAAA,EACN,KAAAC,IAAM;AAAA,EACN,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,OAAAC,IAAQ;AACV,MAAM;AACJ,EAAAC,EAAU,MAAM;AAAE,IAAAX,EAAA;AAAA,EAA6B,GAAG,CAAA,CAAE;AAEpD,QAAM,IAAII,KAASD,EAAO,QACpBS,IAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,GAC/BC,IAAY;AAAA,IACf,cAAsB,GAAGR,CAAI;AAAA,IAC7B,aAAqB,GAAGC,CAAG;AAAA,IAC3B,aAAqB,GAAGC,CAAG;AAAA,IAC3B,eAAuB,GAAGC,CAAO;AAAA,EAAA,GAG9BM,IAAeN,IAAU,IAAKE;AAEpC,SACEf,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,eAAc,MAAK,OAAM,cAAW,WAAU,OAAOkB,GAClE,UAAAD,EAAK,IAAI,CAACG,GAAGC,MACZrB,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAU;AAAA,MACV,OAAO;AAAA,QACL,iBAAiBQ,EAAOa,IAAIb,EAAO,MAAM;AAAA,QACzC,gBACEM,MAAc,QACV,GAAIO,IAAIF,CAAY,OACpB,IAAK,IAAI,IAAIE,KAAKF,CAAY;AAAA,MAAA;AAAA,IACtC;AAAA,IARKE;AAAA,EAAA,CAUR,GACH;AAEJ,GAOMC,IAAqE,CAAC,EAAC,MAAAC,IAAO,MAAM,MAAAC,IAAO,eAAe;AAC5G,QAAM,EAAE,MAAAC,EAAA,IAASC,EAAA;AAEnB,SADgBH,KAAQE,IAGpB1B,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,SAAS;AAAA,QACT,eAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,KAAK;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,MAET,aAAU;AAAA,MACX,aAAU;AAAA,MACV,MAAK;AAAA,MAEP,UAAA;AAAA,QAAAC,gBAAAA,EAAAA;AAAAA,UAAC2B;AAAA,UAAA;AAAA,YACC,WACE3B,gBAAAA,EAAAA;AAAAA,cAACO;AAAA,cAAA;AAAA,gBACC,QAAQ,CAAC,WAAW,WAAW,WAAW,SAAS;AAAA,gBACnD,MAAM;AAAA,gBACN,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,SAAS;AAAA,gBACT,OAAO;AAAA,gBACP,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,QAGFP,gBAAAA,EAAAA,IAAC,UAAK,WAAU,gBAAe,OAAO,EAAC,WAAU,OAAA,GAAU,UAAAwB,EAAA,CAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IApCpD;AAuClB,GCzIII,IAAkB,MAAM;AAC1B,QAAM,EAAE,eAAAC,EAAA,IAAkBH,EAAA;AAG1B,+BACGI,GAAA,EAAsB,QAAQ,KAAK,KAAQ,UAAU,OAAOC,MACxDC,IAEM,KAEF,CAAC,CAACD,KAAQ,MAAMF,EAAcE,CAAG,GAGxC,UAAA/B,gBAAAA,MAACiC,GAAA,EAAe,mBAAmB,MAAM,SAAS,eAAe,WAAW,KAAK,SAAS,MACxF,UAAAlC,gBAAAA,EAAAA,KAAC,OAAA,EAAI,IAAG,aACN,UAAA;AAAA,IAAAC,gBAAAA,EAAAA,IAACsB,GAAA,EAAgB;AAAA,0BAChBY,GAAA,CAAA,CAAO;AAAA,EAAA,EAAA,CACV,GACF,GACF;AAEJ,GCzBIC,IAAe,6BAEd,OAAA,EACC,UAAA;AAAA,EAAAnC,gBAAAA,EAAAA,IAACsB,GAAA,EAAgB;AAAA,wBAChBY,GAAA,CAAA,CAAO;AAAA,GACV,GCTAE,IAAgB,CAAC;AAAA,EACnB,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AACF,MAKavC,gBAAAA,EAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACd,OAAO;AAAA,MACL,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAYqC,IAAW,YAAY;AAAA,MACnC,SAASA,IAAW,IAAI;AAAA,MACxB,YAAY;AAAA,MACZ,eAAeA,IAAW,SAAS;AAAA,IAAA;AAAA,IAGrC,gCAAC3C,GAAA,EACC,UAAAM,gBAAAA,EAAAA;AAAAA,MAACwC;AAAA,MAAA;AAAA,QACC,UAAU;AAAA,QAET,eAAYC,EAAM,cAAcH,GAAU,EAAE,QAAAC,GAAe;AAAA,MAAA;AAAA,IAAA,EAC9D,CACF;AAAA,EAAA;AAAA,GAIFG,IAAeC,EAAKP,CAAa;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/SSOHandler-rq0OGrpX.cjs"),r=require("../../chunks/BwgSpace-b0hmM1Ht.cjs"),o=require("../../chunks/realFormat-Cha7OTd9.cjs");exports.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/SSOHandler-rq0OGrpX.cjs"),r=require("../../chunks/BwgSpace-b0hmM1Ht.cjs"),o=require("../../chunks/realFormat-Cha7OTd9.cjs");exports.BwgButtonGroup=e.BwgButtonGroup;exports.BwgCmptArea=e.BwgCmptArea;exports.BwgCol=e.BwgCol;exports.BwgConfigProvider=e.BwgConfigProvider;exports.BwgDetail=e.BwgDetail;exports.BwgDrawer=e.BwgDrawer;exports.BwgEditor=e.EditorBoxRef;exports.BwgGrid=e.BwgGrid;exports.BwgInfoArea=e.BwgInfoArea;exports.BwgPopup=e.BwgPopup;exports.BwgRow=e.BwgRow;exports.BwgTable=e.BwgTable;exports.BwgTabs=e.BwgTabs;exports.BwgTitleBox=e.BwgTitleBox;exports.BwgView=e.BwgView;exports.ContentBox=e.ContentBox;exports.ContentLayOut=e.ContentLayOut;exports.GlobalConfigProvider=e.GlobalConfigProvider;exports.QuickServiceToggle=e.QuickServiceToggle;exports.SSOHandler=e.SSOHandler;exports.SearchBox=e.SearchBox;exports.createBwgGridRenderer=e.createBwgGridRenderer;exports.BwgSpace=r.BwgSpace;exports.realFormat=o.realFormat;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -8,7 +8,7 @@ export { default as BwgEditor } from './BwgEditor';
|
|
|
8
8
|
export { default as BwgGrid } from './BwgGrid';
|
|
9
9
|
export { default as BwgInfoArea } from './BwgInfoArea';
|
|
10
10
|
export { default as BwgPopup } from './BwgPopup';
|
|
11
|
-
export { default as
|
|
11
|
+
export { default as BwgRow } from './BwgRow';
|
|
12
12
|
export { default as BwgSpace } from './BwgSpace';
|
|
13
13
|
export { default as BwgTable } from './BwgTable';
|
|
14
14
|
export { default as BwgTabs } from './BwgTabs';
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { B as r, a as o, b as s, c as B, d as g, e as w, E as t, f as i, g as n, h as l, i as p, j as d, k as f, l as C, m as c, C as m, n as x, G as S, Q as u, o as G, S as b, p as T } from "../../chunks/SSOHandler-CZHPiuEh.js";
|
|
2
2
|
import { B as P } from "../../chunks/BwgSpace-CnLM4qcg.js";
|
|
3
3
|
import { r as k } from "../../chunks/realFormat-DRGLFabQ.js";
|
|
4
4
|
export {
|
|
5
|
-
r as
|
|
6
|
-
o as
|
|
7
|
-
s as
|
|
8
|
-
B as
|
|
9
|
-
g as
|
|
10
|
-
w as
|
|
11
|
-
t as
|
|
12
|
-
i as
|
|
13
|
-
n as
|
|
14
|
-
l as
|
|
15
|
-
p as
|
|
5
|
+
r as BwgButtonGroup,
|
|
6
|
+
o as BwgCmptArea,
|
|
7
|
+
s as BwgCol,
|
|
8
|
+
B as BwgConfigProvider,
|
|
9
|
+
g as BwgDetail,
|
|
10
|
+
w as BwgDrawer,
|
|
11
|
+
t as BwgEditor,
|
|
12
|
+
i as BwgGrid,
|
|
13
|
+
n as BwgInfoArea,
|
|
14
|
+
l as BwgPopup,
|
|
15
|
+
p as BwgRow,
|
|
16
16
|
P as BwgSpace,
|
|
17
17
|
d as BwgTable,
|
|
18
18
|
f as BwgTabs,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrivateProtectedOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/layout/PrivateProtectedOverlay.tsx"],"names":[],"mappings":"AAgCA,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAkCA,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
declare const _default: React.MemoExoticComponent<({
|
|
3
|
-
tab: any;
|
|
2
|
+
declare const _default: React.MemoExoticComponent<({ isActive, instance, params, }: {
|
|
4
3
|
isActive: boolean;
|
|
5
4
|
instance?: React.ComponentType;
|
|
6
5
|
params?: Record<string, any>;
|
|
7
6
|
}) => import("react/jsx-runtime").JSX.Element>;
|
|
8
7
|
export default _default;
|
|
9
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=ViewContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewContainer.d.ts","sourceRoot":"","sources":["../../../src/components/layout/ViewContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyB,MAAM,OAAO,CAAC;oFAOzC;IACD,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAwBH,wBAAmC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/ViewContainer-DQl7Mb0U.cjs"),r=require("../../chunks/LoadingOverlay-NX9Mo_6n.cjs");exports.ErrorBound=e.ErrorBound;exports.ProgressOverlay=e.ProgressOverlay;exports.ProtectedLayout=e.ProtectedLayout;exports.PublicLayout=e.PublicLayout;exports.ViewContainer=e.ViewContainer;exports.LoadingOverlay=r.LoadingOverlay;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -3,5 +3,5 @@ export { default as LoadingOverlay } from './LoadingOverlay';
|
|
|
3
3
|
export { default as ProgressOverlay } from './ProgressOverlay';
|
|
4
4
|
export { default as ProtectedLayout } from './ProtectLayout';
|
|
5
5
|
export { default as PublicLayout } from './PublicLayout';
|
|
6
|
-
export { default as
|
|
6
|
+
export { default as ViewContainer } from './ViewContainer';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { E as o, P as e, a as s, b as t,
|
|
2
|
-
import { L as
|
|
1
|
+
import { E as o, P as e, a as s, b as t, V as i } from "../../chunks/ViewContainer-v1V83KBq.js";
|
|
2
|
+
import { L as u } from "../../chunks/LoadingOverlay-CAO6_FuF.js";
|
|
3
3
|
export {
|
|
4
4
|
o as ErrorBound,
|
|
5
|
-
|
|
5
|
+
u as LoadingOverlay,
|
|
6
6
|
e as ProgressOverlay,
|
|
7
7
|
s as ProtectedLayout,
|
|
8
8
|
t as PublicLayout,
|
|
9
|
-
|
|
9
|
+
i as ViewContainer
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./stores/index.cjs"),t=require("./chunks/SSOHandler-rq0OGrpX.cjs"),m=require("./chunks/BwgSpace-b0hmM1Ht.cjs"),p=require("./chunks/realFormat-Cha7OTd9.cjs"),a=require("./chunks/BwgLargeUploader-CgrJUwFW.cjs"),S=require("./chunks/LoadingOverlay-NX9Mo_6n.cjs"),g=require("./chunks/TabContainer-Dx2PVShz.cjs"),e=require("./chunks/commonUtils-BH6QwGUb.cjs"),r=require("./chunks/apiUtils-Cbg6NQLv.cjs"),o=require("./chunks/FileUtils-D73GVmB8.cjs"),l=require("./chunks/envUtils-CduTHoHu.cjs"),u=require("./chunks/codeStore-BGLhSpAM.cjs"),C=require("./chunks/popupStore-DnWLaQ70.cjs"),w=require("./chunks/favoriteStore-3YceyayF.cjs"),c=require("./chunks/AuthContext-CXng9fj0.cjs"),s=require("./chunks/usePopup-C8FrbrDD.cjs"),d=require("./chunks/ScreenProtectContext-CVuXrJm6.cjs"),i=require("./chunks/SearchBoxContext-Cpr9xa1S.cjs");exports.useCode=n.useCode;exports.useFavorite=n.useFavorite;exports.useMenuModel=n.useMenuModel;exports.useMenuView=n.useMenuView;exports.usePopupState=n.usePopupState;exports.useUser=n.useUser;exports.BWgRow=t.BwgRow;exports.BwgButtonGroup=t.BwgButtonGroup;exports.BwgCmptArea=t.BwgCmptArea;exports.BwgCol=t.BwgCol;exports.BwgConfigProvider=t.BwgConfigProvider;exports.BwgDetail=t.BwgDetail;exports.BwgDrawer=t.BwgDrawer;exports.BwgEditor=t.EditorBoxRef;exports.BwgGrid=t.BwgGrid;exports.BwgInfoArea=t.BwgInfoArea;exports.BwgPopup=t.BwgPopup;exports.BwgTable=t.BwgTable;exports.BwgTabs=t.BwgTabs;exports.BwgTitleBox=t.BwgTitleBox;exports.BwgView=t.BwgView;exports.ContentBox=t.ContentBox;exports.ContentLayOut=t.ContentLayOut;exports.GlobalConfigProvider=t.GlobalConfigProvider;exports.QuickServiceToggle=t.QuickServiceToggle;exports.SSOHandler=t.SSOHandler;exports.SearchBox=t.SearchBox;exports.createBwgGridRenderer=t.createBwgGridRenderer;exports.BwgSpace=m.BwgSpace;exports.realFormat=p.realFormat;exports.BwgButton=a.BwgButton;exports.BwgCheck=a.BwgCheck;exports.BwgCheckList=a.BwgCheckList;exports.BwgDatePicker=a.BwgDatePicker;exports.BwgForm=a.BwgForm;exports.BwgFormItem=a.BwgFormItem;exports.BwgInput=a.BwgInput;exports.BwgLargeUploader=a.BwgLargeUploader;exports.BwgMaskedInput=a.BwgMaskedInput;exports.BwgMaskedPicker=a.BwgMaskedPicker;exports.BwgMultiSelect=a.BwgMultiSelect;exports.BwgNumber=a.BwgNumber;exports.BwgRadio=a.BwgRadio;exports.BwgRangePicker=a.BwgRangePicker;exports.BwgSearch=a.BwgSearch;exports.BwgSelect=a.BwgSelect;exports.BwgTextArea=a.BwgTextArea;exports.BwgUploader=a.BwgUploader;exports.LoadingOverlay=S.LoadingOverlay;exports.ErrorBound=g.ErrorBound;exports.ProgressOverlay=g.ProgressOverlay;exports.ProtectedLayout=g.ProtectedLayout;exports.PublicLayout=g.PublicLayout;exports.TabContainer=g.TabContainer;exports.average=e.average;exports.calculateAge=e.calculateAge;exports.chunk=e.chunk;exports.clamp=e.clamp;exports.clearLocalStorage=e.clearLocalStorage;exports.clearSessionStorage=e.clearSessionStorage;exports.copyToClipboard=e.copyToClipboard;exports.count=e.count;exports.debounce=e.debounce;exports.deepClone=e.deepClone;exports.delay=e.delay;exports.difference=e.difference;exports.downloadFile=e.downloadFile;exports.duplicates=e.duplicates;exports.entries=e.entries;exports.find=e.find;exports.findLast=e.findLast;exports.flattenArray=e.flattenArray;exports.flattenDeep=e.flattenDeep;exports.formatDate=e.formatDate;exports.formatDateKST=e.formatDateKST;exports.formatDateKorean=e.formatDateKorean;exports.formatDateTimeKorean=e.formatDateTimeKorean;exports.formatTimeKorean=e.formatTimeKorean;exports.generateRandomColor=e.generateRandomColor;exports.getAllKeys=e.getAllKeys;exports.getCurrentDate=e.getCurrentDate;exports.getCurrentDateString=e.getCurrentDateString;exports.getDateDiff=e.getDateDiff;exports.getDateRange=e.getDateRange;exports.getDateRangeForPicker=e.getDateRangeForPicker;exports.getDeviceType=e.getDeviceType;exports.getLocalStorage=e.getLocalStorage;exports.getMonthEnd=e.getMonthEnd;exports.getMonthStart=e.getMonthStart;exports.getRelativeTime=e.getRelativeTime;exports.getSessionStorage=e.getSessionStorage;exports.getWeekEnd=e.getWeekEnd;exports.getWeekStart=e.getWeekStart;exports.groupBy=e.groupBy;exports.has=e.has;exports.includes=e.includes;exports.intersection=e.intersection;exports.isArray=e.isArray;exports.isBoolean=e.isBoolean;exports.isDesktop=e.isDesktop;exports.isEqual=e.isEqual;exports.isFunction=e.isFunction;exports.isInViewport=e.isInViewport;exports.isMobile=e.isMobile;exports.isNull=e.isNull;exports.isNullOrUndefined=e.isNullOrUndefined;exports.isNumber=e.isNumber;exports.isObject=e.isObject;exports.isString=e.isString;exports.isTablet=e.isTablet;exports.isThisMonth=e.isThisMonth;exports.isThisWeek=e.isThisWeek;exports.isToday=e.isToday;exports.isUndefined=e.isUndefined;exports.isValidDate=e.isValidDate;exports.keys=e.keys;exports.lastIndexOf=e.lastIndexOf;exports.map=e.map;exports.max=e.max;exports.merge=e.merge;exports.min=e.min;exports.omit=e.omit;exports.pick=e.pick;exports.random=e.random;exports.randomChoice=e.randomChoice;exports.randomFromArray=e.randomFromArray;exports.randomInt=e.randomInt;exports.randomMultiple=e.randomMultiple;exports.range=e.range;exports.remove=e.remove;exports.removeAt=e.removeAt;exports.removeEmptyStrings=e.removeEmptyStrings;exports.removeLocalStorage=e.removeLocalStorage;exports.removeNullValues=e.removeNullValues;exports.removeSessionStorage=e.removeSessionStorage;exports.removeWhere=e.removeWhere;exports.round=e.round;exports.scrollToElement=e.scrollToElement;exports.scrollToTop=e.scrollToTop;exports.set=e.set;exports.setLocalStorage=e.setLocalStorage;exports.setSessionStorage=e.setSessionStorage;exports.shuffle=e.shuffle;exports.size=e.size;exports.sortBy=e.sortBy;exports.sortNumbers=e.sortNumbers;exports.sum=e.sum;exports.throttle=e.throttle;exports.union=e.union;exports.unique=e.unique;exports.uniqueBy=e.uniqueBy;exports.values=e.values;exports.apiDelete=r.apiDelete;exports.apiGet=r.apiGet;exports.apiPatch=r.apiPatch;exports.apiPost=r.apiPost;exports.apiPut=r.apiPut;exports.base64Decode=r.base64Decode;exports.base64Encode=r.base64Encode;exports.br2nl=r.br2nl;exports.bxmDecrypt=r.bxmDecrypt;exports.bxmEncrypt=r.bxmEncrypt;exports.callService=r.callService;exports.capitalize=r.capitalize;exports.capitalizeWords=r.capitalizeWords;exports.center=r.center;exports.closeNotification=r.closeNotification;exports.countChar=r.countChar;exports.countWords=r.countWords;exports.destroyNotifications=r.destroyNotifications;exports.encryptSha256=r.encryptSha256;exports.extractNumbers=r.extractNumbers;exports.findPattern=r.findPattern;exports.formatPhoneNumber=r.formatPhoneNumber;exports.generateAlphanumericUID=r.generateAlphanumericUID;exports.generateCustomUID=r.generateCustomUID;exports.generateGUID=r.generateGUID;exports.generateGUIDWithoutHyphens=r.generateGUIDWithoutHyphens;exports.generateLongUID=r.generateLongUID;exports.generateNumericUID=r.generateNumericUID;exports.generateRandomString=r.generateRandomString;exports.generateShortUID=r.generateShortUID;exports.generateTimestampUID=r.generateTimestampUID;exports.generateUID=r.generateUID;exports.getAllServiceCodes=r.getAllServiceCodes;exports.getClientIp=r.getClientIp;exports.getCrprCd=r.getCrprCd;exports.getDepartmentInfo=r.getDepartmentInfo;exports.getDisplayName=r.getDisplayName;exports.getDprtCd=r.getDprtCd;exports.getDprtNm=r.getDprtNm;exports.getEmplNo=r.getEmplNo;exports.getGuid=r.getGuid;exports.getRoleList=r.getRoleList;exports.getServiceCode=r.getServiceCode;exports.getUserDvsn=r.getUserDvsn;exports.getUserId=r.getUserId;exports.getUserInfo=r.getUserInfo;exports.getUserNm=r.getUserNm;exports.hasAllRoles=r.hasAllRoles;exports.hasAnyRole=r.hasAnyRole;exports.hasRole=r.hasRole;exports.hasUserInfo=r.hasUserInfo;exports.isEmpty=r.isEmpty;exports.isLoggedIn=r.isLoggedIn;exports.isSafeEmpty=r.isSafeEmpty;exports.isValidEmail=r.isValidEmail;exports.isValidUrl=r.isValidUrl;exports.md5Hash=r.md5Hash;exports.nl2br=r.nl2br;exports.notificationService=r.notificationService;exports.padLeft=r.padLeft;exports.padRight=r.padRight;exports.removeHtmlTags=r.removeHtmlTags;exports.removeSpecialChars=r.removeSpecialChars;exports.reverse=r.reverse;exports.setClientIp=r.setClientIp;exports.setServiceCodeOverrides=r.setServiceCodeOverrides;exports.sha256Hash=r.sha256Hash;exports.showError=r.showError;exports.showInfo=r.showInfo;exports.showSuccess=r.showSuccess;exports.showWarning=r.showWarning;exports.simpleDecrypt=r.simpleDecrypt;exports.simpleEncrypt=r.simpleEncrypt;exports.toCamelCase=r.toCamelCase;exports.toKebabCase=r.toKebabCase;exports.toSnakeCase=r.toSnakeCase;exports.truncate=r.truncate;exports.useLoadingStore=r.useLoadingStore;exports.useMenuModelStore=r.useMenuModelStore;exports.useMenuViewStore=r.useMenuViewStore;exports.useUserStore=r.useUserStore;exports.verifyClientIp=r.verifyClientIp;exports.THEME_COOKIE_NAME=o.THEME_COOKIE_NAME;exports.closeAllMessages=o.closeAllMessages;exports.closeMessage=o.closeMessage;exports.convertImageFormat=o.convertImageFormat;exports.deleteCookie=o.deleteCookie;exports.downloadByFileKey=o.downloadByFileKey;exports.generateSrcSet=o.generateSrcSet;exports.getAvatarImage=o.getAvatarImage;exports.getBackgroundImage=o.getBackgroundImage;exports.getCookie=o.getCookie;exports.getDefaultBackgroundImage=o.getDefaultBackgroundImage;exports.getIconImage=o.getIconImage;exports.getLogoImage=o.getLogoImage;exports.getOptimizedImageUrl=o.getOptimizedImageUrl;exports.handleImageError=o.handleImageError;exports.preloadImage=o.preloadImage;exports.resizeImage=o.resizeImage;exports.setCookie=o.setCookie;exports.showApiError=o.showApiError;exports.showDuplicateError=o.showDuplicateError;exports.showLoading=o.showLoading;exports.showRequiredError=o.showRequiredError;exports.showSaveError=o.showSaveError;exports.showSaveSuccess=o.showSaveSuccess;exports.useImageLoader=o.useImageLoader;exports.getEnvCode=l.getEnvCode;exports.isDev=l.isDev;exports.isLocal=l.isLocal;exports.isProd=l.isProd;exports.useCodeStore=u.useCodeStore;exports.useColorStore=u.useColorStore;exports.useOptionStore=u.useOptionStore;exports.usePopupStore=C.usePopupStore;exports.useFavoriteStore=w.useFavoriteStore;exports.AuthProvider=c.AuthProvider;exports.useAuth=c.useAuth;exports.CommonCodeProvider=s.CommonCodeProvider;exports.UtilsProvider=s.UtilsProvider;exports.useApiUtils=s.useApiUtils;exports.useArrayUtils=s.useArrayUtils;exports.useCodeColor=s.useCodeColor;exports.useCodeList=s.useCodeList;exports.useCodeListByOption=s.useCodeListByOption;exports.useCodeName=s.useCodeName;exports.useCommonCode=s.useCommonCode;exports.useCommonUtils=s.useCommonUtils;exports.useDateUtils=s.useDateUtils;exports.useGridLookup=s.useGridLookup;exports.usePopup=s.usePopup;exports.usePopupContext=s.usePopupContext;exports.useStringUtils=s.useStringUtils;exports.useUtils=s.useUtils;exports.ScreenProtectProvider=d.ScreenProtectProvider;exports.useLock=d.useLock;exports.SearchBoxProvider=i.SearchBoxProvider;exports.ServiceCodeProvider=i.ServiceCodeProvider;exports.useAllServiceCodes=i.useAllServiceCodes;exports.useLogServiceCodeConfig=i.useLogServiceCodeConfig;exports.useSearchBox=i.useSearchBox;exports.useServiceCode=i.useServiceCode;exports.useServiceCodeValue=i.useServiceCodeValue;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./stores/index.cjs"),t=require("./chunks/SSOHandler-rq0OGrpX.cjs"),m=require("./chunks/BwgSpace-b0hmM1Ht.cjs"),p=require("./chunks/realFormat-Cha7OTd9.cjs"),a=require("./chunks/BwgLargeUploader-CgrJUwFW.cjs"),S=require("./chunks/LoadingOverlay-NX9Mo_6n.cjs"),g=require("./chunks/ViewContainer-DQl7Mb0U.cjs"),e=require("./chunks/commonUtils-BH6QwGUb.cjs"),r=require("./chunks/apiUtils-Cbg6NQLv.cjs"),o=require("./chunks/FileUtils-D73GVmB8.cjs"),l=require("./chunks/envUtils-CduTHoHu.cjs"),u=require("./chunks/codeStore-BGLhSpAM.cjs"),C=require("./chunks/popupStore-DnWLaQ70.cjs"),w=require("./chunks/favoriteStore-3YceyayF.cjs"),c=require("./chunks/AuthContext-CXng9fj0.cjs"),i=require("./chunks/usePopup-C8FrbrDD.cjs"),d=require("./chunks/ScreenProtectContext-CVuXrJm6.cjs"),s=require("./chunks/SearchBoxContext-Cpr9xa1S.cjs");exports.useCode=n.useCode;exports.useFavorite=n.useFavorite;exports.useMenuModel=n.useMenuModel;exports.useMenuView=n.useMenuView;exports.usePopupState=n.usePopupState;exports.useUser=n.useUser;exports.BwgButtonGroup=t.BwgButtonGroup;exports.BwgCmptArea=t.BwgCmptArea;exports.BwgCol=t.BwgCol;exports.BwgConfigProvider=t.BwgConfigProvider;exports.BwgDetail=t.BwgDetail;exports.BwgDrawer=t.BwgDrawer;exports.BwgEditor=t.EditorBoxRef;exports.BwgGrid=t.BwgGrid;exports.BwgInfoArea=t.BwgInfoArea;exports.BwgPopup=t.BwgPopup;exports.BwgRow=t.BwgRow;exports.BwgTable=t.BwgTable;exports.BwgTabs=t.BwgTabs;exports.BwgTitleBox=t.BwgTitleBox;exports.BwgView=t.BwgView;exports.ContentBox=t.ContentBox;exports.ContentLayOut=t.ContentLayOut;exports.GlobalConfigProvider=t.GlobalConfigProvider;exports.QuickServiceToggle=t.QuickServiceToggle;exports.SSOHandler=t.SSOHandler;exports.SearchBox=t.SearchBox;exports.createBwgGridRenderer=t.createBwgGridRenderer;exports.BwgSpace=m.BwgSpace;exports.realFormat=p.realFormat;exports.BwgButton=a.BwgButton;exports.BwgCheck=a.BwgCheck;exports.BwgCheckList=a.BwgCheckList;exports.BwgDatePicker=a.BwgDatePicker;exports.BwgForm=a.BwgForm;exports.BwgFormItem=a.BwgFormItem;exports.BwgInput=a.BwgInput;exports.BwgLargeUploader=a.BwgLargeUploader;exports.BwgMaskedInput=a.BwgMaskedInput;exports.BwgMaskedPicker=a.BwgMaskedPicker;exports.BwgMultiSelect=a.BwgMultiSelect;exports.BwgNumber=a.BwgNumber;exports.BwgRadio=a.BwgRadio;exports.BwgRangePicker=a.BwgRangePicker;exports.BwgSearch=a.BwgSearch;exports.BwgSelect=a.BwgSelect;exports.BwgTextArea=a.BwgTextArea;exports.BwgUploader=a.BwgUploader;exports.LoadingOverlay=S.LoadingOverlay;exports.ErrorBound=g.ErrorBound;exports.ProgressOverlay=g.ProgressOverlay;exports.ProtectedLayout=g.ProtectedLayout;exports.PublicLayout=g.PublicLayout;exports.ViewContainer=g.ViewContainer;exports.average=e.average;exports.calculateAge=e.calculateAge;exports.chunk=e.chunk;exports.clamp=e.clamp;exports.clearLocalStorage=e.clearLocalStorage;exports.clearSessionStorage=e.clearSessionStorage;exports.copyToClipboard=e.copyToClipboard;exports.count=e.count;exports.debounce=e.debounce;exports.deepClone=e.deepClone;exports.delay=e.delay;exports.difference=e.difference;exports.downloadFile=e.downloadFile;exports.duplicates=e.duplicates;exports.entries=e.entries;exports.find=e.find;exports.findLast=e.findLast;exports.flattenArray=e.flattenArray;exports.flattenDeep=e.flattenDeep;exports.formatDate=e.formatDate;exports.formatDateKST=e.formatDateKST;exports.formatDateKorean=e.formatDateKorean;exports.formatDateTimeKorean=e.formatDateTimeKorean;exports.formatTimeKorean=e.formatTimeKorean;exports.generateRandomColor=e.generateRandomColor;exports.getAllKeys=e.getAllKeys;exports.getCurrentDate=e.getCurrentDate;exports.getCurrentDateString=e.getCurrentDateString;exports.getDateDiff=e.getDateDiff;exports.getDateRange=e.getDateRange;exports.getDateRangeForPicker=e.getDateRangeForPicker;exports.getDeviceType=e.getDeviceType;exports.getLocalStorage=e.getLocalStorage;exports.getMonthEnd=e.getMonthEnd;exports.getMonthStart=e.getMonthStart;exports.getRelativeTime=e.getRelativeTime;exports.getSessionStorage=e.getSessionStorage;exports.getWeekEnd=e.getWeekEnd;exports.getWeekStart=e.getWeekStart;exports.groupBy=e.groupBy;exports.has=e.has;exports.includes=e.includes;exports.intersection=e.intersection;exports.isArray=e.isArray;exports.isBoolean=e.isBoolean;exports.isDesktop=e.isDesktop;exports.isEqual=e.isEqual;exports.isFunction=e.isFunction;exports.isInViewport=e.isInViewport;exports.isMobile=e.isMobile;exports.isNull=e.isNull;exports.isNullOrUndefined=e.isNullOrUndefined;exports.isNumber=e.isNumber;exports.isObject=e.isObject;exports.isString=e.isString;exports.isTablet=e.isTablet;exports.isThisMonth=e.isThisMonth;exports.isThisWeek=e.isThisWeek;exports.isToday=e.isToday;exports.isUndefined=e.isUndefined;exports.isValidDate=e.isValidDate;exports.keys=e.keys;exports.lastIndexOf=e.lastIndexOf;exports.map=e.map;exports.max=e.max;exports.merge=e.merge;exports.min=e.min;exports.omit=e.omit;exports.pick=e.pick;exports.random=e.random;exports.randomChoice=e.randomChoice;exports.randomFromArray=e.randomFromArray;exports.randomInt=e.randomInt;exports.randomMultiple=e.randomMultiple;exports.range=e.range;exports.remove=e.remove;exports.removeAt=e.removeAt;exports.removeEmptyStrings=e.removeEmptyStrings;exports.removeLocalStorage=e.removeLocalStorage;exports.removeNullValues=e.removeNullValues;exports.removeSessionStorage=e.removeSessionStorage;exports.removeWhere=e.removeWhere;exports.round=e.round;exports.scrollToElement=e.scrollToElement;exports.scrollToTop=e.scrollToTop;exports.set=e.set;exports.setLocalStorage=e.setLocalStorage;exports.setSessionStorage=e.setSessionStorage;exports.shuffle=e.shuffle;exports.size=e.size;exports.sortBy=e.sortBy;exports.sortNumbers=e.sortNumbers;exports.sum=e.sum;exports.throttle=e.throttle;exports.union=e.union;exports.unique=e.unique;exports.uniqueBy=e.uniqueBy;exports.values=e.values;exports.apiDelete=r.apiDelete;exports.apiGet=r.apiGet;exports.apiPatch=r.apiPatch;exports.apiPost=r.apiPost;exports.apiPut=r.apiPut;exports.base64Decode=r.base64Decode;exports.base64Encode=r.base64Encode;exports.br2nl=r.br2nl;exports.bxmDecrypt=r.bxmDecrypt;exports.bxmEncrypt=r.bxmEncrypt;exports.callService=r.callService;exports.capitalize=r.capitalize;exports.capitalizeWords=r.capitalizeWords;exports.center=r.center;exports.closeNotification=r.closeNotification;exports.countChar=r.countChar;exports.countWords=r.countWords;exports.destroyNotifications=r.destroyNotifications;exports.encryptSha256=r.encryptSha256;exports.extractNumbers=r.extractNumbers;exports.findPattern=r.findPattern;exports.formatPhoneNumber=r.formatPhoneNumber;exports.generateAlphanumericUID=r.generateAlphanumericUID;exports.generateCustomUID=r.generateCustomUID;exports.generateGUID=r.generateGUID;exports.generateGUIDWithoutHyphens=r.generateGUIDWithoutHyphens;exports.generateLongUID=r.generateLongUID;exports.generateNumericUID=r.generateNumericUID;exports.generateRandomString=r.generateRandomString;exports.generateShortUID=r.generateShortUID;exports.generateTimestampUID=r.generateTimestampUID;exports.generateUID=r.generateUID;exports.getAllServiceCodes=r.getAllServiceCodes;exports.getClientIp=r.getClientIp;exports.getCrprCd=r.getCrprCd;exports.getDepartmentInfo=r.getDepartmentInfo;exports.getDisplayName=r.getDisplayName;exports.getDprtCd=r.getDprtCd;exports.getDprtNm=r.getDprtNm;exports.getEmplNo=r.getEmplNo;exports.getGuid=r.getGuid;exports.getRoleList=r.getRoleList;exports.getServiceCode=r.getServiceCode;exports.getUserDvsn=r.getUserDvsn;exports.getUserId=r.getUserId;exports.getUserInfo=r.getUserInfo;exports.getUserNm=r.getUserNm;exports.hasAllRoles=r.hasAllRoles;exports.hasAnyRole=r.hasAnyRole;exports.hasRole=r.hasRole;exports.hasUserInfo=r.hasUserInfo;exports.isEmpty=r.isEmpty;exports.isLoggedIn=r.isLoggedIn;exports.isSafeEmpty=r.isSafeEmpty;exports.isValidEmail=r.isValidEmail;exports.isValidUrl=r.isValidUrl;exports.md5Hash=r.md5Hash;exports.nl2br=r.nl2br;exports.notificationService=r.notificationService;exports.padLeft=r.padLeft;exports.padRight=r.padRight;exports.removeHtmlTags=r.removeHtmlTags;exports.removeSpecialChars=r.removeSpecialChars;exports.reverse=r.reverse;exports.setClientIp=r.setClientIp;exports.setServiceCodeOverrides=r.setServiceCodeOverrides;exports.sha256Hash=r.sha256Hash;exports.showError=r.showError;exports.showInfo=r.showInfo;exports.showSuccess=r.showSuccess;exports.showWarning=r.showWarning;exports.simpleDecrypt=r.simpleDecrypt;exports.simpleEncrypt=r.simpleEncrypt;exports.toCamelCase=r.toCamelCase;exports.toKebabCase=r.toKebabCase;exports.toSnakeCase=r.toSnakeCase;exports.truncate=r.truncate;exports.useLoadingStore=r.useLoadingStore;exports.useMenuModelStore=r.useMenuModelStore;exports.useMenuViewStore=r.useMenuViewStore;exports.useUserStore=r.useUserStore;exports.verifyClientIp=r.verifyClientIp;exports.THEME_COOKIE_NAME=o.THEME_COOKIE_NAME;exports.closeAllMessages=o.closeAllMessages;exports.closeMessage=o.closeMessage;exports.convertImageFormat=o.convertImageFormat;exports.deleteCookie=o.deleteCookie;exports.downloadByFileKey=o.downloadByFileKey;exports.generateSrcSet=o.generateSrcSet;exports.getAvatarImage=o.getAvatarImage;exports.getBackgroundImage=o.getBackgroundImage;exports.getCookie=o.getCookie;exports.getDefaultBackgroundImage=o.getDefaultBackgroundImage;exports.getIconImage=o.getIconImage;exports.getLogoImage=o.getLogoImage;exports.getOptimizedImageUrl=o.getOptimizedImageUrl;exports.handleImageError=o.handleImageError;exports.preloadImage=o.preloadImage;exports.resizeImage=o.resizeImage;exports.setCookie=o.setCookie;exports.showApiError=o.showApiError;exports.showDuplicateError=o.showDuplicateError;exports.showLoading=o.showLoading;exports.showRequiredError=o.showRequiredError;exports.showSaveError=o.showSaveError;exports.showSaveSuccess=o.showSaveSuccess;exports.useImageLoader=o.useImageLoader;exports.getEnvCode=l.getEnvCode;exports.isDev=l.isDev;exports.isLocal=l.isLocal;exports.isProd=l.isProd;exports.useCodeStore=u.useCodeStore;exports.useColorStore=u.useColorStore;exports.useOptionStore=u.useOptionStore;exports.usePopupStore=C.usePopupStore;exports.useFavoriteStore=w.useFavoriteStore;exports.AuthProvider=c.AuthProvider;exports.useAuth=c.useAuth;exports.CommonCodeProvider=i.CommonCodeProvider;exports.UtilsProvider=i.UtilsProvider;exports.useApiUtils=i.useApiUtils;exports.useArrayUtils=i.useArrayUtils;exports.useCodeColor=i.useCodeColor;exports.useCodeList=i.useCodeList;exports.useCodeListByOption=i.useCodeListByOption;exports.useCodeName=i.useCodeName;exports.useCommonCode=i.useCommonCode;exports.useCommonUtils=i.useCommonUtils;exports.useDateUtils=i.useDateUtils;exports.useGridLookup=i.useGridLookup;exports.usePopup=i.usePopup;exports.usePopupContext=i.usePopupContext;exports.useStringUtils=i.useStringUtils;exports.useUtils=i.useUtils;exports.ScreenProtectProvider=d.ScreenProtectProvider;exports.useLock=d.useLock;exports.SearchBoxProvider=s.SearchBoxProvider;exports.ServiceCodeProvider=s.ServiceCodeProvider;exports.useAllServiceCodes=s.useAllServiceCodes;exports.useLogServiceCodeConfig=s.useLogServiceCodeConfig;exports.useSearchBox=s.useSearchBox;exports.useServiceCode=s.useServiceCode;exports.useServiceCodeValue=s.useServiceCodeValue;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
|
@@ -1,41 +1,40 @@
|
|
|
1
1
|
import { useCode as s, useFavorite as o, useMenuModel as r, useMenuView as t, usePopupState as i, useUser as n } from "./stores/index.js";
|
|
2
|
-
import {
|
|
2
|
+
import { B as l, a as u, b as m, c as d, d as c, e as p, E as S, f, g as C, h as w, i as B, j as h, k as v, l as D, m as I, C as y, n as b, G as x, Q as k, o as U, S as E, p as P } from "./chunks/SSOHandler-CZHPiuEh.js";
|
|
3
3
|
import { B as A } from "./chunks/BwgSpace-CnLM4qcg.js";
|
|
4
4
|
import { r as M } from "./chunks/realFormat-DRGLFabQ.js";
|
|
5
|
-
import { o as R, j as O, k as F, g as G, a as V, B as
|
|
5
|
+
import { o as R, j as O, k as F, g as G, a as V, B as q, f as K, q as W, d as j, e as H, n as z, m as Q, i as _, h as J, c as X, b as Y, l as Z, p as $ } from "./chunks/BwgLargeUploader-Nx2-wiD8.js";
|
|
6
6
|
import { L as ea } from "./chunks/LoadingOverlay-CAO6_FuF.js";
|
|
7
|
-
import { E as oa, P as ra, a as ta, b as ia,
|
|
8
|
-
import { Y as la, t as ua, J as ma, a9 as da, aa as ca, ab as pa, ac as Sa, _ as fa, ad as Ca, u as
|
|
9
|
-
import { Q as as, R as es, S as ss, T as os, U as rs, b as ts, a as is, c as ns, d as gs, e as ls, V as us, f as ms, g as ds, h as cs, ae as ps, i as Ss, j as fs, af as Cs, k as
|
|
10
|
-
import { T as Po, n as Lo, m as Ao, c as To, j as Mo, x as No, g as Ro, a as Oo, b as Fo, k as Go, d as Vo, e as
|
|
7
|
+
import { E as oa, P as ra, a as ta, b as ia, V as na } from "./chunks/ViewContainer-v1V83KBq.js";
|
|
8
|
+
import { Y as la, t as ua, J as ma, a9 as da, aa as ca, ab as pa, ac as Sa, _ as fa, ad as Ca, u as wa, ae as Ba, K as ha, af as va, L as Da, v as Ia, a0 as ya, a1 as ba, a6 as xa, a7 as ka, f as Ua, a as Ea, b as Pa, c as La, d as Aa, ag as Ta, w as Ma, g as Na, e as Ra, h as Oa, i as Fa, j as Ga, ah as Va, ai as qa, k as Ka, l as Wa, m as ja, aj as Ha, n as za, o as Qa, M as _a, x as Ja, a5 as Xa, N as Ya, ak as Za, al as $a, am as ae, y as ee, an as se, ao as oe, ap as re, aq as te, ar as ie, as as ne, at as ge, au as le, av as ue, p as me, q as de, r as ce, aw as pe, s as Se, z as fe, $ as Ce, A as we, W as Be, B as he, X as ve, C as De, D as Ie, ax as ye, ay as be, T as xe, az as ke, U as Ue, a8 as Ee, a2 as Pe, a3 as Le, E as Ae, aA as Te, F as Me, aB as Ne, a4 as Re, aC as Oe, aD as Fe, aE as Ge, G as Ve, aF as qe, aG as Ke, O as We, H as je, P as He, V as ze, Z as Qe, aH as _e, Q as Je, R as Xe, S as Ye, I as Ze } from "./chunks/commonUtils-Bb16Yqjk.js";
|
|
9
|
+
import { Q as as, R as es, S as ss, T as os, U as rs, b as ts, a as is, c as ns, d as gs, e as ls, V as us, f as ms, g as ds, h as cs, ae as ps, i as Ss, j as fs, af as Cs, k as ws, l as Bs, m as hs, n as vs, o as Ds, p as Is, q as ys, r as bs, s as xs, t as ks, u as Us, v as Es, w as Ps, x as Ls, al as As, W as Ts, _ as Ms, $ as Ns, a0 as Rs, a1 as Os, a2 as Fs, a3 as Gs, X as Vs, a4 as qs, am as Ks, a5 as Ws, a6 as js, a7 as Hs, a8 as zs, a9 as Qs, aa as _s, ab as Js, ac as Xs, y as Ys, ad as Zs, z as $s, A as ao, B as eo, C as so, D as oo, ag as ro, E as to, F as io, G as no, H as go, I as lo, Y as uo, an as mo, J as co, ah as po, ai as So, aj as fo, ak as Co, K as wo, L as Bo, M as ho, N as vo, O as Do, P as Io, ao as yo, ap as bo, aq as xo, ar as ko, Z as Uo } from "./chunks/apiUtils-C45AWfu-.js";
|
|
10
|
+
import { T as Po, n as Lo, m as Ao, c as To, j as Mo, x as No, g as Ro, a as Oo, b as Fo, k as Go, d as Vo, e as qo, f as Ko, h as Wo, i as jo, p as Ho, r as zo, s as Qo, o as _o, v as Jo, l as Xo, w as Yo, t as Zo, q as $o, u as ar } from "./chunks/FileUtils-Bbz3AvQn.js";
|
|
11
11
|
import { g as sr, a as or, i as rr, b as tr } from "./chunks/envUtils-C9Gf5aek.js";
|
|
12
12
|
import { u as nr, b as gr, a as lr } from "./chunks/codeStore-BzT5wSd9.js";
|
|
13
13
|
import { u as mr } from "./chunks/popupStore-DmFbkkjd.js";
|
|
14
14
|
import { u as cr } from "./chunks/favoriteStore-C9utQ6sm.js";
|
|
15
15
|
import { A as Sr, u as fr } from "./chunks/AuthContext-Ei2P-z4d.js";
|
|
16
|
-
import { C as
|
|
16
|
+
import { C as wr, U as Br, k as hr, i as vr, c as Dr, a as Ir, d as yr, b as br, u as xr, j as kr, g as Ur, e as Er, m as Pr, l as Lr, h as Ar, f as Tr } from "./chunks/usePopup-pfh-ajfP.js";
|
|
17
17
|
import { S as Nr, u as Rr } from "./chunks/ScreenProtectContext-3my4PHFa.js";
|
|
18
|
-
import { S as Fr, a as Gr, d as Vr, e as
|
|
18
|
+
import { S as Fr, a as Gr, d as Vr, e as qr, u as Kr, b as Wr, c as jr } from "./chunks/SearchBoxContext-BxtHF9BO.js";
|
|
19
19
|
export {
|
|
20
20
|
Sr as AuthProvider,
|
|
21
|
-
l as BWgRow,
|
|
22
21
|
R as BwgButton,
|
|
23
|
-
|
|
22
|
+
l as BwgButtonGroup,
|
|
24
23
|
O as BwgCheck,
|
|
25
24
|
F as BwgCheckList,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
u as BwgCmptArea,
|
|
26
|
+
m as BwgCol,
|
|
27
|
+
d as BwgConfigProvider,
|
|
29
28
|
G as BwgDatePicker,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
c as BwgDetail,
|
|
30
|
+
p as BwgDrawer,
|
|
31
|
+
S as BwgEditor,
|
|
33
32
|
V as BwgForm,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
q as BwgFormItem,
|
|
34
|
+
f as BwgGrid,
|
|
35
|
+
C as BwgInfoArea,
|
|
36
|
+
K as BwgInput,
|
|
37
|
+
W as BwgLargeUploader,
|
|
39
38
|
j as BwgMaskedInput,
|
|
40
39
|
H as BwgMaskedPicker,
|
|
41
40
|
z as BwgMultiSelect,
|
|
@@ -43,6 +42,7 @@ export {
|
|
|
43
42
|
w as BwgPopup,
|
|
44
43
|
_ as BwgRadio,
|
|
45
44
|
J as BwgRangePicker,
|
|
45
|
+
B as BwgRow,
|
|
46
46
|
X as BwgSearch,
|
|
47
47
|
Y as BwgSelect,
|
|
48
48
|
A as BwgSpace,
|
|
@@ -52,7 +52,7 @@ export {
|
|
|
52
52
|
D as BwgTitleBox,
|
|
53
53
|
$ as BwgUploader,
|
|
54
54
|
I as BwgView,
|
|
55
|
-
|
|
55
|
+
wr as CommonCodeProvider,
|
|
56
56
|
y as ContentBox,
|
|
57
57
|
b as ContentLayOut,
|
|
58
58
|
oa as ErrorBound,
|
|
@@ -68,8 +68,8 @@ export {
|
|
|
68
68
|
Fr as SearchBoxProvider,
|
|
69
69
|
Gr as ServiceCodeProvider,
|
|
70
70
|
Po as THEME_COOKIE_NAME,
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
Br as UtilsProvider,
|
|
72
|
+
na as ViewContainer,
|
|
73
73
|
as as apiDelete,
|
|
74
74
|
es as apiGet,
|
|
75
75
|
ss as apiPatch,
|
|
@@ -100,17 +100,17 @@ export {
|
|
|
100
100
|
fs as countWords,
|
|
101
101
|
P as createBwgGridRenderer,
|
|
102
102
|
Ca as debounce,
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
wa as deepClone,
|
|
104
|
+
Ba as delay,
|
|
105
105
|
Mo as deleteCookie,
|
|
106
106
|
Cs as destroyNotifications,
|
|
107
107
|
ha as difference,
|
|
108
108
|
No as downloadByFileKey,
|
|
109
109
|
va as downloadFile,
|
|
110
110
|
Da as duplicates,
|
|
111
|
-
|
|
111
|
+
ws as encryptSha256,
|
|
112
112
|
Ia as entries,
|
|
113
|
-
|
|
113
|
+
Bs as extractNumbers,
|
|
114
114
|
ya as find,
|
|
115
115
|
ba as findLast,
|
|
116
116
|
hs as findPattern,
|
|
@@ -155,17 +155,17 @@ export {
|
|
|
155
155
|
Gs as getEmplNo,
|
|
156
156
|
sr as getEnvCode,
|
|
157
157
|
Vs as getGuid,
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
158
|
+
qo as getIconImage,
|
|
159
|
+
qa as getLocalStorage,
|
|
160
|
+
Ko as getLogoImage,
|
|
161
|
+
Ka as getMonthEnd,
|
|
162
|
+
Wa as getMonthStart,
|
|
163
|
+
Wo as getOptimizedImageUrl,
|
|
164
164
|
ja as getRelativeTime,
|
|
165
|
-
|
|
166
|
-
|
|
165
|
+
qs as getRoleList,
|
|
166
|
+
Ks as getServiceCode,
|
|
167
167
|
Ha as getSessionStorage,
|
|
168
|
-
|
|
168
|
+
Ws as getUserDvsn,
|
|
169
169
|
js as getUserId,
|
|
170
170
|
Hs as getUserInfo,
|
|
171
171
|
zs as getUserNm,
|
|
@@ -208,8 +208,8 @@ export {
|
|
|
208
208
|
eo as isValidUrl,
|
|
209
209
|
fe as keys,
|
|
210
210
|
Ce as lastIndexOf,
|
|
211
|
-
|
|
212
|
-
|
|
211
|
+
we as map,
|
|
212
|
+
Be as max,
|
|
213
213
|
so as md5Hash,
|
|
214
214
|
he as merge,
|
|
215
215
|
ve as min,
|
|
@@ -244,9 +244,9 @@ export {
|
|
|
244
244
|
Ve as set,
|
|
245
245
|
uo as setClientIp,
|
|
246
246
|
Qo as setCookie,
|
|
247
|
-
|
|
247
|
+
qe as setLocalStorage,
|
|
248
248
|
mo as setServiceCodeOverrides,
|
|
249
|
-
|
|
249
|
+
Ke as setSessionStorage,
|
|
250
250
|
co as sha256Hash,
|
|
251
251
|
_o as showApiError,
|
|
252
252
|
Jo as showDuplicateError,
|
|
@@ -258,9 +258,9 @@ export {
|
|
|
258
258
|
$o as showSaveSuccess,
|
|
259
259
|
fo as showSuccess,
|
|
260
260
|
Co as showWarning,
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
261
|
+
We as shuffle,
|
|
262
|
+
wo as simpleDecrypt,
|
|
263
|
+
Bo as simpleEncrypt,
|
|
264
264
|
je as size,
|
|
265
265
|
He as sortBy,
|
|
266
266
|
ze as sortNumbers,
|
|
@@ -293,7 +293,7 @@ export {
|
|
|
293
293
|
ar as useImageLoader,
|
|
294
294
|
yo as useLoadingStore,
|
|
295
295
|
Rr as useLock,
|
|
296
|
-
|
|
296
|
+
qr as useLogServiceCodeConfig,
|
|
297
297
|
r as useMenuModel,
|
|
298
298
|
bo as useMenuModelStore,
|
|
299
299
|
t as useMenuView,
|
|
@@ -303,8 +303,8 @@ export {
|
|
|
303
303
|
Lr as usePopupContext,
|
|
304
304
|
i as usePopupState,
|
|
305
305
|
mr as usePopupStore,
|
|
306
|
-
|
|
307
|
-
|
|
306
|
+
Kr as useSearchBox,
|
|
307
|
+
Wr as useServiceCode,
|
|
308
308
|
jr as useServiceCodeValue,
|
|
309
309
|
Ar as useStringUtils,
|
|
310
310
|
n as useUser,
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabContainer-B7-6AQXV.js","sources":["../../src/components/layout/ErrorBound.tsx","../../src/components/layout/ProgressOverlay.tsx","../../src/components/layout/ProtectLayout.tsx","../../src/components/layout/PublicLayout.tsx","../../src/components/layout/TabContainer.tsx"],"sourcesContent":["import React, { Component, ErrorInfo, ReactNode } from 'react';\r\nimport { Result, Button } from 'antd';\r\nimport { ReloadOutlined, HomeOutlined } from '@ant-design/icons';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\ninterface Props {\r\n children: ReactNode;\r\n fallback?: ReactNode;\r\n}\r\n\r\ninterface State {\r\n hasError: boolean;\r\n error?: Error;\r\n errorInfo?: ErrorInfo;\r\n}\r\n\r\n// 에러 페이지 컴포넌트\r\nexport const ErrorPage: React.FC<{\r\n error?: Error;\r\n resetError?: () => void;\r\n onGoHome?: () => void;\r\n}> = ({ error, resetError, onGoHome }) => {\r\n const navigate = useNavigate();\r\n\r\n const handleGoHome = () => {\r\n if (onGoHome) {\r\n onGoHome();\r\n } else {\r\n // 기본 홈 이동 로직\r\n navigate('/');\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n padding: '40px 20px',\r\n textAlign: 'center',\r\n backgroundColor: '#fafafa',\r\n minHeight: '400px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }}\r\n >\r\n <Result\r\n status=\"error\"\r\n title=\"컴포넌트 로딩 중 오류가 발생했습니다\"\r\n subTitle={\r\n error\r\n ? `오류 내용: ${error.message}`\r\n : '알 수 없는 오류가 발생했습니다'\r\n }\r\n extra={[\r\n <Button\r\n key=\"retry\"\r\n type=\"primary\"\r\n icon={<ReloadOutlined />}\r\n onClick={resetError}\r\n style={{ marginRight: 8 }}\r\n >\r\n 다시 시도\r\n </Button>,\r\n <Button key=\"home\" icon={<HomeOutlined />} onClick={handleGoHome}>\r\n 홈으로\r\n </Button>,\r\n ]}\r\n />\r\n {error && (\r\n <details\r\n style={{\r\n marginTop: '20px',\r\n textAlign: 'left',\r\n maxWidth: '600px',\r\n backgroundColor: '#fff',\r\n padding: '16px',\r\n borderRadius: '6px',\r\n border: '1px solid #d9d9d9',\r\n }}\r\n >\r\n <summary style={{ cursor: 'pointer', fontWeight: 'bold' }}>\r\n 오류 상세 정보\r\n </summary>\r\n <pre\r\n style={{\r\n marginTop: '8px',\r\n fontSize: '12px',\r\n color: '#666',\r\n whiteSpace: 'pre-wrap',\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n {error.stack}\r\n </pre>\r\n </details>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n// 에러 경계 클래스 컴포넌트\r\nexport class ErrorBound extends Component<Props, State> {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n static getDerivedStateFromError(error: Error): State {\r\n return { hasError: true, error };\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\r\n console.error('ErrorBound caught an error:', error, errorInfo);\r\n this.setState({\r\n error,\r\n errorInfo,\r\n });\r\n }\r\n\r\n resetError = () => {\r\n this.setState({ hasError: false, error: undefined, errorInfo: undefined });\r\n };\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n if (this.props.fallback) {\r\n return this.props.fallback;\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n padding: '40px 20px',\r\n textAlign: 'center',\r\n backgroundColor: '#fafafa',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }}\r\n >\r\n <Result\r\n status=\"error\"\r\n title=\"컴포넌트 로딩 중 오류가 발생했습니다\"\r\n subTitle={\r\n this.state.error\r\n ? `오류 내용: ${this.state.error.message}`\r\n : '알 수 없는 오류가 발생했습니다'\r\n }\r\n extra={[\r\n <Button\r\n key=\"retry\"\r\n type=\"primary\"\r\n icon={<ReloadOutlined />}\r\n onClick={this.resetError}\r\n style={{ marginRight: 8 }}\r\n >\r\n 다시 시도\r\n </Button>,\r\n ]}\r\n />\r\n {this.state.error && (\r\n <details\r\n style={{\r\n marginTop: '20px',\r\n textAlign: 'left',\r\n maxWidth: '600px',\r\n backgroundColor: '#fff',\r\n padding: '16px',\r\n borderRadius: '6px',\r\n border: '1px solid #d9d9d9',\r\n }}\r\n >\r\n <summary style={{ cursor: 'pointer', fontWeight: 'bold' }}>\r\n 오류 상세 정보\r\n </summary>\r\n <pre\r\n style={{\r\n marginTop: '8px',\r\n fontSize: '12px',\r\n color: '#666',\r\n whiteSpace: 'pre-wrap',\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n {this.state.error.stack}\r\n </pre>\r\n </details>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\n// 함수형 컴포넌트용 에러 경계 훅\r\nexport const useErrorHandler = () => {\r\n const [error, setError] = React.useState<Error | null>(null);\r\n\r\n const handleError = React.useCallback((error: Error) => {\r\n console.error('useErrorHandler caught an error:', error);\r\n setError(error);\r\n }, []);\r\n\r\n const resetError = React.useCallback(() => {\r\n setError(null);\r\n }, []);\r\n\r\n return { error, handleError, resetError };\r\n};\r\n","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;","import React, { memo, Suspense } from \"react\";\r\nimport { ErrorBound } from \"./ErrorBound\";\r\n\r\nconst TabContainer = ({\r\n tab,\r\n isActive,\r\n instance,\r\n params,\r\n }: {\r\n tab: any;\r\n isActive: boolean;\r\n instance?: React.ComponentType;\r\n params?: Record<string, any>;\r\n }) => {\r\n return <div\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n visibility: isActive ? 'visible' : 'hidden',\r\n opacity: isActive ? 1 : 0,\r\n transition: 'opacity 0.2s ease-in-out',\r\n pointerEvents: isActive ? 'auto' : 'none',\r\n }}\r\n>\r\n <ErrorBound>\r\n <Suspense \r\n fallback={null}\r\n >\r\n {instance && React.createElement(instance, { params } as any)}\r\n </Suspense>\r\n </ErrorBound>\r\n</div>;\r\n};\r\n\r\nexport default memo(TabContainer);"],"names":["ErrorBound","Component","props","error","errorInfo","jsxs","jsx","Result","Button","ReloadOutlined","DOTLINE_STYLE_ID","ensureDotLineWaveStylesV4","style","DotLineSmoothIndicator","colors","count","size","gap","amp","speedMs","direction","phase","useEffect","n","dots","baseStyle","perDotDelay","_","i","ProgressOverlay","spin","text","busy","useAuth","Spin","ProtectedLayout","reauthWithPin","ScreenProtectProvider","pin","isLocal","ConfigProvider","Outlet","PublicLayout","TabContainer","tab","isActive","instance","params","Suspense","React","TabContainer$1","memo"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabContainer-Dx2PVShz.cjs","sources":["../../src/components/layout/ErrorBound.tsx","../../src/components/layout/ProgressOverlay.tsx","../../src/components/layout/ProtectLayout.tsx","../../src/components/layout/PublicLayout.tsx","../../src/components/layout/TabContainer.tsx"],"sourcesContent":["import React, { Component, ErrorInfo, ReactNode } from 'react';\r\nimport { Result, Button } from 'antd';\r\nimport { ReloadOutlined, HomeOutlined } from '@ant-design/icons';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\ninterface Props {\r\n children: ReactNode;\r\n fallback?: ReactNode;\r\n}\r\n\r\ninterface State {\r\n hasError: boolean;\r\n error?: Error;\r\n errorInfo?: ErrorInfo;\r\n}\r\n\r\n// 에러 페이지 컴포넌트\r\nexport const ErrorPage: React.FC<{\r\n error?: Error;\r\n resetError?: () => void;\r\n onGoHome?: () => void;\r\n}> = ({ error, resetError, onGoHome }) => {\r\n const navigate = useNavigate();\r\n\r\n const handleGoHome = () => {\r\n if (onGoHome) {\r\n onGoHome();\r\n } else {\r\n // 기본 홈 이동 로직\r\n navigate('/');\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n padding: '40px 20px',\r\n textAlign: 'center',\r\n backgroundColor: '#fafafa',\r\n minHeight: '400px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }}\r\n >\r\n <Result\r\n status=\"error\"\r\n title=\"컴포넌트 로딩 중 오류가 발생했습니다\"\r\n subTitle={\r\n error\r\n ? `오류 내용: ${error.message}`\r\n : '알 수 없는 오류가 발생했습니다'\r\n }\r\n extra={[\r\n <Button\r\n key=\"retry\"\r\n type=\"primary\"\r\n icon={<ReloadOutlined />}\r\n onClick={resetError}\r\n style={{ marginRight: 8 }}\r\n >\r\n 다시 시도\r\n </Button>,\r\n <Button key=\"home\" icon={<HomeOutlined />} onClick={handleGoHome}>\r\n 홈으로\r\n </Button>,\r\n ]}\r\n />\r\n {error && (\r\n <details\r\n style={{\r\n marginTop: '20px',\r\n textAlign: 'left',\r\n maxWidth: '600px',\r\n backgroundColor: '#fff',\r\n padding: '16px',\r\n borderRadius: '6px',\r\n border: '1px solid #d9d9d9',\r\n }}\r\n >\r\n <summary style={{ cursor: 'pointer', fontWeight: 'bold' }}>\r\n 오류 상세 정보\r\n </summary>\r\n <pre\r\n style={{\r\n marginTop: '8px',\r\n fontSize: '12px',\r\n color: '#666',\r\n whiteSpace: 'pre-wrap',\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n {error.stack}\r\n </pre>\r\n </details>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n// 에러 경계 클래스 컴포넌트\r\nexport class ErrorBound extends Component<Props, State> {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n static getDerivedStateFromError(error: Error): State {\r\n return { hasError: true, error };\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\r\n console.error('ErrorBound caught an error:', error, errorInfo);\r\n this.setState({\r\n error,\r\n errorInfo,\r\n });\r\n }\r\n\r\n resetError = () => {\r\n this.setState({ hasError: false, error: undefined, errorInfo: undefined });\r\n };\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n if (this.props.fallback) {\r\n return this.props.fallback;\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n padding: '40px 20px',\r\n textAlign: 'center',\r\n backgroundColor: '#fafafa',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }}\r\n >\r\n <Result\r\n status=\"error\"\r\n title=\"컴포넌트 로딩 중 오류가 발생했습니다\"\r\n subTitle={\r\n this.state.error\r\n ? `오류 내용: ${this.state.error.message}`\r\n : '알 수 없는 오류가 발생했습니다'\r\n }\r\n extra={[\r\n <Button\r\n key=\"retry\"\r\n type=\"primary\"\r\n icon={<ReloadOutlined />}\r\n onClick={this.resetError}\r\n style={{ marginRight: 8 }}\r\n >\r\n 다시 시도\r\n </Button>,\r\n ]}\r\n />\r\n {this.state.error && (\r\n <details\r\n style={{\r\n marginTop: '20px',\r\n textAlign: 'left',\r\n maxWidth: '600px',\r\n backgroundColor: '#fff',\r\n padding: '16px',\r\n borderRadius: '6px',\r\n border: '1px solid #d9d9d9',\r\n }}\r\n >\r\n <summary style={{ cursor: 'pointer', fontWeight: 'bold' }}>\r\n 오류 상세 정보\r\n </summary>\r\n <pre\r\n style={{\r\n marginTop: '8px',\r\n fontSize: '12px',\r\n color: '#666',\r\n whiteSpace: 'pre-wrap',\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n {this.state.error.stack}\r\n </pre>\r\n </details>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\n// 함수형 컴포넌트용 에러 경계 훅\r\nexport const useErrorHandler = () => {\r\n const [error, setError] = React.useState<Error | null>(null);\r\n\r\n const handleError = React.useCallback((error: Error) => {\r\n console.error('useErrorHandler caught an error:', error);\r\n setError(error);\r\n }, []);\r\n\r\n const resetError = React.useCallback(() => {\r\n setError(null);\r\n }, []);\r\n\r\n return { error, handleError, resetError };\r\n};\r\n","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;","import React, { memo, Suspense } from \"react\";\r\nimport { ErrorBound } from \"./ErrorBound\";\r\n\r\nconst TabContainer = ({\r\n tab,\r\n isActive,\r\n instance,\r\n params,\r\n }: {\r\n tab: any;\r\n isActive: boolean;\r\n instance?: React.ComponentType;\r\n params?: Record<string, any>;\r\n }) => {\r\n return <div\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n visibility: isActive ? 'visible' : 'hidden',\r\n opacity: isActive ? 1 : 0,\r\n transition: 'opacity 0.2s ease-in-out',\r\n pointerEvents: isActive ? 'auto' : 'none',\r\n }}\r\n>\r\n <ErrorBound>\r\n <Suspense \r\n fallback={null}\r\n >\r\n {instance && React.createElement(instance, { params } as any)}\r\n </Suspense>\r\n </ErrorBound>\r\n</div>;\r\n};\r\n\r\nexport default memo(TabContainer);"],"names":["ErrorBound","Component","props","error","errorInfo","jsxs","jsx","Result","Button","ReloadOutlined","DOTLINE_STYLE_ID","ensureDotLineWaveStylesV4","style","DotLineSmoothIndicator","colors","count","size","gap","amp","speedMs","direction","phase","useEffect","n","dots","baseStyle","perDotDelay","_","i","ProgressOverlay","spin","text","busy","useAuth","Spin","ProtectedLayout","reauthWithPin","ScreenProtectProvider","pin","isLocal","ConfigProvider","Outlet","PublicLayout","TabContainer","tab","isActive","instance","params","Suspense","React","TabContainer$1","memo"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabContainer.d.ts","sourceRoot":"","sources":["../../../src/components/layout/TabContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyB,MAAM,OAAO,CAAC;yFAQzC;IACD,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAwBH,wBAAkC"}
|