{"version":3,"file":"withAuthNavigation.CYECSWBA.mjs","names":["__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/rWuhEapYDFZpEY5HxCQX/P7lDZCf0C2rh7RPUa9Uf/withAuthNavigation.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{Data}from\"framer\";// 개발 모드 설정 (true: 모의 인증 사용, false: 실제 API 사용)\nconst DEV_MODE=false;// ✅ 공통 브라우저 가드\nconst isBrowser=typeof window!==\"undefined\"&&typeof document!==\"undefined\";// 모달 창 관련 변수 (전역 변수로 관리)\nlet modalVisible=false;let modalElement=null;// 공유 데이터 저장소 생성\nconst sharedData=Data({isAuthenticated:false,isCheckingAuth:true,targetUrl:\"/course-inquiry\",modalTitle:\"로그인이 필요한 서비스입니다\",modalDescription:\"해당 서비스를 이용하려면 로그인이 필요합니다. 로그인 페이지로 이동하시겠습니까?\",cancelText:\"취소\",loginText:\"로그인\"});// -------------------------------------------------\n// 유틸: SSR 안전한 경로/URL 도우미\n// -------------------------------------------------\nconst getPathname=()=>isBrowser?window.location.pathname:\"/\";const getHref=()=>isBrowser?window.location.href:\"\";// -------------------------------------------------\n// 통신\n// -------------------------------------------------\nexport async function flexFetch(endpoint,options){try{const BASE_URL=\"https://estbootcamp.co.kr\";const response=await fetch(`${BASE_URL}${endpoint}`,options);if(response.ok){return response;}}catch{// no-op, fallback 시도\n}// fallback\nconst BASE_URL_DEV=\"https://camptest.ai-companion.info\";const response_dev=await fetch(`${BASE_URL_DEV}${endpoint}`,options);return response_dev;}/**\n * 인증 상태 확인\n * @returns {Promise<boolean>} 인증 상태\n */const isAuthenticated=async()=>{if(DEV_MODE){// ✅ SSR-세이프: 브라우저에서만 localStorage 접근\nif(!isBrowser)return false;const token=window.localStorage.getItem(\"auth_token\");return!!token;}try{const response=await flexFetch(`/api/auth/session`,{method:\"GET\",credentials:\"include\",headers:{\"Content-Type\":\"application/json\"}});if(!response?.ok)return false;const data=await response.json();return!!(data&&data.user!==undefined);}catch(error){console.error(\"인증 상태 확인 오류:\",error);return false;}};const fetchUser=async()=>{try{const response=await flexFetch(`/api/auth/session`,{method:\"GET\",credentials:\"include\",headers:{\"Content-Type\":\"application/json\"}});if(!response?.ok)return null;const data=await response.json();return data?.user??null;}catch(error){console.error(\"인증 상태 확인 오류:\",error);return null;}};const sendFromVisit=async(userId,title)=>{try{const body={title,userId:userId||\"Undefined\",data:\"sample\",data2:undefined};await flexFetch(`/api/webhook/form-visit`,{method:\"POST\",credentials:\"include\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(body)});}catch(error){console.error(\"formVisit 등록 오류:\",error);}};/**\n * 로그인 페이지로 리다이렉트 (브라우저에서만)\n */const redirectToLogin=returnUrl=>{if(!isBrowser)return;const loginUrl=\"/login\";if(returnUrl){window.location.href=`${loginUrl}?returnUrl=${encodeURIComponent(returnUrl)}`;}else{window.location.href=loginUrl;}};/**\n * 알림 모달 생성 (브라우저에서만)\n */const createModal=options=>{if(!isBrowser)return;// 이미 모달 있으면 제거\ncloseModal();// 모달 요소 생성\nconst root=document.createElement(\"div\");root.style.position=\"fixed\";root.style.top=\"0\";root.style.left=\"0\";root.style.right=\"0\";root.style.bottom=\"0\";root.style.backgroundColor=\"rgba(0, 0, 0, 0.5)\";root.style.display=\"flex\";root.style.alignItems=\"center\";root.style.justifyContent=\"center\";root.style.zIndex=\"9999\";root.style.fontFamily='system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif';// 배경 클릭 시 닫기\nroot.addEventListener(\"click\",e=>{if(e.target===root){closeModal();options.onCancel&&options.onCancel();}});const card=document.createElement(\"div\");card.style.backgroundColor=\"white\";card.style.borderRadius=\"8px\";card.style.width=\"90%\";card.style.maxWidth=\"400px\";card.style.padding=\"24px\";card.style.boxShadow=\"0 4px 12px rgba(0,0,0,0.15)\";const title=document.createElement(\"h3\");title.textContent=options.title||\"알림\";title.style.margin=\"0 0 8px 0\";title.style.fontSize=\"18px\";title.style.fontWeight=\"600\";title.style.color=\"#111827\";const desc=document.createElement(\"p\");desc.textContent=options.description||\"\";desc.style.margin=\"0 0 24px 0\";desc.style.fontSize=\"14px\";desc.style.color=\"#6B7280\";const buttons=document.createElement(\"div\");buttons.style.display=\"flex\";buttons.style.justifyContent=\"flex-end\";buttons.style.gap=\"12px\";const cancel=document.createElement(\"button\");cancel.textContent=options.cancelText||\"취소\";cancel.style.padding=\"8px 16px\";cancel.style.backgroundColor=\"#F3F4F6\";cancel.style.color=\"#374151\";cancel.style.border=\"none\";cancel.style.borderRadius=\"6px\";cancel.style.fontSize=\"14px\";cancel.style.fontWeight=\"500\";cancel.style.cursor=\"pointer\";cancel.addEventListener(\"click\",()=>{closeModal();options.onCancel&&options.onCancel();});const login=document.createElement(\"button\");login.textContent=options.loginText||\"로그인\";login.style.padding=\"8px 16px\";login.style.backgroundColor=\"#4F46E5\";login.style.color=\"white\";login.style.border=\"none\";login.style.borderRadius=\"6px\";login.style.fontSize=\"14px\";login.style.fontWeight=\"500\";login.style.cursor=\"pointer\";login.addEventListener(\"click\",()=>{closeModal();options.onLogin&&options.onLogin();});buttons.appendChild(cancel);buttons.appendChild(login);card.appendChild(title);card.appendChild(desc);card.appendChild(buttons);root.appendChild(card);document.body.appendChild(root);modalElement=root;modalVisible=true;};/**\n * 모달 닫기 (브라우저에서만)\n */const closeModal=()=>{if(!isBrowser)return;if(modalElement&&document.body.contains(modalElement)){document.body.removeChild(modalElement);modalElement=null;modalVisible=false;}};/**\n * 개발 모드에서 인증 토글 (브라우저에서만)\n */const toggleAuthInDevMode=()=>{if(!DEV_MODE||!isBrowser)return;const currentToken=window.localStorage.getItem(\"auth_token\");if(currentToken){window.localStorage.removeItem(\"auth_token\");// alert도 브라우저 한정\nwindow.alert(\"개발 모드: 인증 상태가 해제되었습니다.\");}else{window.localStorage.setItem(\"auth_token\",\"dev-token-\"+Date.now());window.alert(\"개발 모드: 인증 상태가 설정되었습니다.\");}};/**\n * 버튼 클릭 핸들러: 인증 상태에 따라 다른 동작 수행\n *  - ✅ 렌더 중 전역 접근 금지\n *  - ✅ 모달/리다이렉트는 브라우저에서만 실행\n */const handleAuthNavigation=async options=>{if(!isBrowser)return;// 서버에서는 noop\nif(modalVisible)return;const authenticated=await isAuthenticated();if(authenticated){const user=await fetchUser();await sendFromVisit(user?.id??null,options.title);// 필요 시 이동 (현재 주석 유지)\n// window.location.href = options.targetUrl\n}else{createModal({title:options.modalTitle,description:options.modalDescription,cancelText:options.cancelText,loginText:options.loginText,onCancel:()=>{// no-op\n},onLogin:()=>{if(DEV_MODE){// 개발 모드에서는 굳이 이동 안 함 (주석 그대로 유지)\n// window.location.href = \"/login\"\n}else{// ✅ SSR-safe: window 사용부는 이미 브라우저에서만 실행\nredirectToLogin(getPathname());}}});}};// -------------------------------------------------\n// 초기 인증 체크 (브라우저에서만)\n// -------------------------------------------------\nif(isBrowser){(async()=>{sharedData.isCheckingAuth=true;sharedData.isAuthenticated=await isAuthenticated();sharedData.isCheckingAuth=false;})();}// -------------------------------------------------\n// Framer Overrides\n// -------------------------------------------------\nexport function setTargetURL(props){return{onMount(){sharedData.targetUrl=props.url||\"/course-inquiry\";}};}export function setModalTitle(props){return{onMount(){sharedData.modalTitle=props.title||\"로그인이 필요한 서비스입니다\";}};}export function setModalDescription(props){return{onMount(){sharedData.modalDescription=props.description||\"해당 서비스를 이용하려면 로그인이 필요합니다. 로그인 페이지로 이동하시겠습니까?\";}};}export function setCancelText(props){return{onMount(){sharedData.cancelText=props.text||\"취소\";}};}export function setLoginText(props){return{onMount(){sharedData.loginText=props.text||\"로그인\";}};}// -------------------------------------------------\n// 경로 파서 (SSR-세이프: 인자로 받은 문자열만 처리)\n// -------------------------------------------------\nfunction parseFirstPath(input){const regex=/^\\/([^\\/?]+)|(?:^|\\/)([^\\/?]+)/;const match=input.match(regex);return(match?.[1]||match?.[2]||\"\").trim();}function parseLastSegment(input){const regex=/_(\\w+)$/;const match=input.match(regex);return match?match[1]:\"\";}function buildTargetUrl(segment){const fragment=(segment||\"\").toLowerCase();return`/page/${fragment}-apply`;}/**\n * ✅ SSR-세이프: 렌더 시점엔 window를 읽지 않고,\n *    클릭 시점(onTap)에서만 window/location을 사용\n */export function AuthProtectedApplyAction(props){return{whileTap:{scale:.95},onTap(event){event.stopPropagation();// ✅ 브라우저에서만 경로 계산\nconst pathName=getPathname()// SSR에선 \"/\" 반환 → 안전\n;const firstPath=parseFirstPath(pathName);const segment=parseLastSegment(firstPath);const targetUrl=segment?buildTargetUrl(segment):`/page/main-apply`;const title=targetUrl.replace(\"/page/\",\"\");handleAuthNavigation({title,targetUrl,modalTitle:sharedData.modalTitle,modalDescription:sharedData.modalDescription,cancelText:sharedData.cancelText,loginText:sharedData.loginText});},onContextMenu(event){if(!DEV_MODE)return;event.stopPropagation();event.preventDefault();toggleAuthInDevMode();}};}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withsetTargetURL(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...setTargetURL(props)});};}withsetTargetURL.displayName=\"setTargetURL\";export function withsetModalTitle(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...setModalTitle(props)});};}withsetModalTitle.displayName=\"setModalTitle\";export function withsetModalDescription(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...setModalDescription(props)});};}withsetModalDescription.displayName=\"setModalDescription\";export function withsetCancelText(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...setCancelText(props)});};}withsetCancelText.displayName=\"setCancelText\";export function withsetLoginText(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...setLoginText(props)});};}withsetLoginText.displayName=\"setLoginText\";export function withAuthProtectedApplyAction(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...AuthProtectedApplyAction(props)});};}withAuthProtectedApplyAction.displayName=\"AuthProtectedApplyAction\";\nexport const __FramerMetadata__ = {\"exports\":{\"withsetModalDescription\":{\"type\":\"reactHoc\",\"name\":\"withsetModalDescription\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setTargetURL\":{\"type\":\"override\",\"name\":\"setTargetURL\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setCancelText\":{\"type\":\"override\",\"name\":\"setCancelText\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setModalTitle\":{\"type\":\"override\",\"name\":\"setModalTitle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withsetLoginText\":{\"type\":\"reactHoc\",\"name\":\"withsetLoginText\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withsetTargetURL\":{\"type\":\"reactHoc\",\"name\":\"withsetTargetURL\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withsetCancelText\":{\"type\":\"reactHoc\",\"name\":\"withsetCancelText\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAuthProtectedApplyAction\":{\"type\":\"reactHoc\",\"name\":\"withAuthProtectedApplyAction\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withsetModalTitle\":{\"type\":\"reactHoc\",\"name\":\"withsetModalTitle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setModalDescription\":{\"type\":\"override\",\"name\":\"setModalDescription\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"flexFetch\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AuthProtectedApplyAction\":{\"type\":\"override\",\"name\":\"AuthProtectedApplyAction\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setLoginText\":{\"type\":\"override\",\"name\":\"setLoginText\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./withAuthNavigation.map"],"mappings":"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"}