{"version":3,"file":"LoadingScreen.B4e1QtyJ.mjs","names":["React.useState","React.useRef","React.useCallback"],"sources":["https:/framerusercontent.com/modules/xuHmZQySyWyiBCfVL436/0rACC0M3qFNcyEkNYlYp/LoadingScreen.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";export function LoadingScreen(props){const{backgroundColor,textColor,steps,displayStepMode,fontFamily,fontSize,minDurationMs,maxTimeoutMs,showOncePerSession,sessionKey,zIndex,hAlign,vAlign,showPercent,customText,logoUrl,borderRadius,padding,overlayBlend,startAt,stallWatchMs,accelerateAt}=props;const[progress,setProgress]=React.useState(0)// 0~100의 실제 진행률(부동소수)\n;const[isVisible,setIsVisible]=React.useState(true);const[opacity,setOpacity]=React.useState(1);const[completeRequested,setCompleteRequested]=React.useState(false);const rafRef=React.useRef(null);const bumpRafRef=React.useRef(null);const doneRef=React.useRef(false);const startTimeRef=React.useRef(null);const targetRef=React.useRef(0)// 애니메이션 목표치(가끔씩 \"툭\" 올림)\n;const lastBumpRef=React.useRef(0);const hideTimerRef=React.useRef(null);const maxTimerRef=React.useRef(null);const stallTimerRef=React.useRef(null)// ★ 정체 워치독\n;const lastProgressRef=React.useRef(0);const canUseDOM=typeof window!==\"undefined\"&&typeof document!==\"undefined\";// 세션당 1회 숨김\nReact.useEffect(()=>{if(!canUseDOM)return;if(showOncePerSession){try{if(sessionStorage.getItem(sessionKey)===\"hidden\"){setIsVisible(false);}}catch{}}},[showOncePerSession,sessionKey,canUseDOM]);// 내부 타깃을 0~99 사이에서 단조 증가시킴\nconst nextTarget=React.useCallback(current=>{const remaining=Math.max(1,99-current);const step=Math.ceil(remaining/Math.max(2,steps));const jitter=Math.floor(Math.random()*Math.max(1,step));return Math.min(99,current+step+jitter);},[steps]);// 진행률 보간(rAF). completeRequested면 가속\nconst animate=React.useCallback(ts=>{if(startTimeRef.current==null)startTimeRef.current=ts;setProgress(prev=>{const target=targetRef.current;const base=Math.max(.25,(100-prev)*.015);const boost=completeRequested?Math.max(.35,(100-prev)*.04)// 완료 신호 후 가속\n:0;const speed=base+boost;const next=prev+speed;return Math.min(next,target);});if(!doneRef.current){rafRef.current=requestAnimationFrame(animate);}},[completeRequested]);// 타깃을 주기적으로 \"툭\" 올림 (99 미만에서만)\nconst maybeBumpTarget=React.useCallback(ts=>{if(doneRef.current)return;if(ts-lastBumpRef.current>350){lastBumpRef.current=ts;if(targetRef.current<99){targetRef.current=nextTarget(targetRef.current);}}bumpRafRef.current=requestAnimationFrame(maybeBumpTarget);},[nextTarget]);// ★ 정체(스톨) 워치독: 일정 시간 동안 진행률이 거의 안 오르면 안전 종료 신호\nconst startStallWatchdog=React.useCallback(()=>{if(!canUseDOM)return;lastProgressRef.current=progress;stallTimerRef.current=window.setInterval(()=>{const diff=progress-lastProgressRef.current;lastProgressRef.current=progress;// 95% 이상에서 진행이 미미하고 completeRequested가 아직 아니면 강제 완료 신호\nif(progress>=95&&diff<.2&&!completeRequested){signalReady();}},Math.max(1e3,stallWatchMs));},[canUseDOM,progress,stallWatchMs,completeRequested]);// 실제 페이드아웃(100%가 그려진 \"다음 프레임\"에 시작)\nconst startFadeOut=React.useCallback(()=>{if(!canUseDOM||doneRef.current)return;doneRef.current=true;const now=performance.now();const shownFor=now-(startTimeRef.current||now);const wait=Math.max(0,minDurationMs-shownFor);hideTimerRef.current=window.setTimeout(()=>{const fadeMs=500;const start=performance.now();const tick=()=>{const t=(performance.now()-start)/fadeMs;if(t<1){setOpacity(1-t);requestAnimationFrame(tick);}else{setOpacity(0);setIsVisible(false);try{if(showOncePerSession)sessionStorage.setItem(sessionKey,\"hidden\");}catch{}}};requestAnimationFrame(tick);},wait);},[canUseDOM,minDurationMs,showOncePerSession,sessionKey]);// “끝낼 준비”만 알림(타깃=100). 너무 느리면 임계점 넘긴 뒤 스냅하도록 watcher가 마무리.\nconst signalReady=React.useCallback(()=>{if(!canUseDOM)return;setCompleteRequested(true);// 완료 시에는 타깃을 바로 100으로 올리고, 현재값이 너무 낮으면 가속을 유도\ntargetRef.current=100;if(progress<accelerateAt){// 완료 직후 96% 미만이면 한 번 튀어올라 체감 속도를 만듦\nsetProgress(p=>Math.max(p,accelerateAt));}},[canUseDOM,progress,accelerateAt]);// 초기화 + 준비 신호 수집\nReact.useEffect(()=>{if(!canUseDOM||!isVisible)return;const startVal=Math.max(0,Math.min(90,startAt||0));setProgress(startVal);targetRef.current=startVal;rafRef.current=requestAnimationFrame(animate);bumpRafRef.current=requestAnimationFrame(maybeBumpTarget);startStallWatchdog();// 어떤 경우에도 종료되도록 하드 타임아웃\nmaxTimerRef.current=window.setTimeout(()=>{signalReady();},maxTimeoutMs);let loadResolved=false;let fontResolved=false;const tryFinish=()=>{if(loadResolved&&fontResolved)signalReady();};// load\nconst onLoadReady=()=>{loadResolved=true;tryFinish();};if(document.readyState===\"complete\"){onLoadReady();}else{window.addEventListener(\"load\",onLoadReady,{once:true});}// bfcache 복원\nconst onPageShow=e=>{if(e.persisted){loadResolved=true;tryFinish();}};window.addEventListener(\"pageshow\",onPageShow);// 폰트 로드\nconst onFontsReady=()=>{fontResolved=true;tryFinish();};if(document.fonts&&document.fonts.ready){document.fonts.ready.then(onFontsReady).catch(()=>{fontResolved=true;tryFinish();});}else{fontResolved=true;tryFinish();}return()=>{if(rafRef.current)cancelAnimationFrame(rafRef.current);if(bumpRafRef.current)cancelAnimationFrame(bumpRafRef.current);window.removeEventListener(\"load\",onLoadReady);window.removeEventListener(\"pageshow\",onPageShow);if(hideTimerRef.current)clearTimeout(hideTimerRef.current);if(maxTimerRef.current)clearTimeout(maxTimerRef.current);if(stallTimerRef.current)clearInterval(stallTimerRef.current);};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[canUseDOM,isVisible,maxTimeoutMs,animate,maybeBumpTarget]);// ★ watcher: 100%를 \"보여준 뒤\" 페이드\nReact.useEffect(()=>{if(!completeRequested)return;if(progress>=99.9){requestAnimationFrame(()=>{setProgress(100)// 1) 다음 프레임에 100으로 스냅\n;requestAnimationFrame(()=>{startFadeOut()// 2) 그리고 그 다음 프레임에 페이드 시작\n;});});}},[completeRequested,progress,startFadeOut]);if(!isVisible)return null;// === 표기 퍼센트 양자화(숫자 간격 조절) ===\nconst quantum=(()=>{switch(displayStepMode){case\"2\":return 2;case\"5\":return 5;case\"10\":return 10;default:return 1;}})();// 100은 마지막에만 노출: 완료 전에는 99% 최대\nconst displayed=(()=>{if(completeRequested&&progress>=99.9)return 100;const q=Math.max(1,quantum);const quantized=Math.floor(progress/q)*q;return Math.min(99,quantized)// 완료 전엔 99까지만\n;})();const justify=hAlign===\"left\"?\"flex-start\":hAlign===\"right\"?\"flex-end\":\"center\";const align=vAlign===\"top\"?\"flex-start\":vAlign===\"bottom\"?\"flex-end\":\"center\";return /*#__PURE__*/_jsx(\"div\",{role:\"status\",\"aria-live\":\"polite\",style:{position:\"fixed\",inset:0,display:\"flex\",justifyContent:justify,alignItems:align,zIndex,backgroundColor,mixBlendMode:overlayBlend===\"normal\"?\"normal\":overlayBlend,opacity,transition:\"opacity 0.2s linear\",pointerEvents:\"auto\",padding},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:12,alignItems:\"center\",background:\"transparent\",borderRadius},children:[logoUrl?/*#__PURE__*/_jsx(\"img\",{src:logoUrl,alt:\"\",style:{width:fontSize*1.2,height:fontSize*1.2,objectFit:\"contain\"}}):null,/*#__PURE__*/_jsxs(\"div\",{style:{color:textColor,fontSize,fontFamily:fontFamily?.fontFamily,fontWeight:700,letterSpacing:.2,lineHeight:1,userSelect:\"none\",whiteSpace:\"nowrap\"},children:[customText?`${customText} `:\"\",showPercent?`${displayed}%`:null]})]})});}// === Property Controls ===\naddPropertyControls(LoadingScreen,{backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#FFFFFF\"},steps:{type:ControlType.Number,title:\"Step Density\",defaultValue:4,min:2,max:12,step:1},displayStepMode:{type:ControlType.Enum,title:\"Display Step\",options:[\"1\",\"2\",\"5\",\"10\"],optionTitles:[\"1%\",\"2%\",\"5%\",\"10%\"],defaultValue:\"1\"},fontFamily:{type:ControlType.Font,title:\"Font\",defaultValue:\"Inter\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:36,min:10,max:120,step:1},minDurationMs:{type:ControlType.Number,title:\"Min Show (ms)\",defaultValue:800,min:0,max:1e4,step:50},maxTimeoutMs:{type:ControlType.Number,title:\"Hard Timeout (ms)\",defaultValue:8e3,min:1e3,max:3e4,step:250},stallWatchMs:{type:ControlType.Number,title:\"Stall Watch (ms)\",defaultValue:1500,min:500,max:1e4,step:100},accelerateAt:{type:ControlType.Number,title:\"Boost At %\",defaultValue:96,min:80,max:99,step:1},showOncePerSession:{type:ControlType.Boolean,title:\"Once per Session\",defaultValue:false},sessionKey:{type:ControlType.String,title:\"Session Key\",defaultValue:\"loading-overlay\"},zIndex:{type:ControlType.Number,title:\"z-index\",defaultValue:9999,min:1,max:2147483647,step:1},hAlign:{type:ControlType.Enum,title:\"H Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"left\"},vAlign:{type:ControlType.Enum,title:\"V Align\",options:[\"top\",\"center\",\"bottom\"],optionTitles:[\"Top\",\"Center\",\"Bottom\"],defaultValue:\"bottom\"},showPercent:{type:ControlType.Boolean,title:\"Show %\",defaultValue:true},customText:{type:ControlType.String,title:\"Prefix Text\",defaultValue:\"\"},logoUrl:{type:ControlType.String,title:\"Logo URL\",defaultValue:\"\"},borderRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:0,min:0,max:64,step:1},padding:{type:ControlType.Number,title:\"Padding\",defaultValue:24,min:0,max:128,step:2},overlayBlend:{type:ControlType.Enum,title:\"Blend\",options:[\"normal\",\"multiply\",\"screen\",\"overlay\"],optionTitles:[\"Normal\",\"Multiply\",\"Screen\",\"Overlay\"],defaultValue:\"normal\"},startAt:{type:ControlType.Number,title:\"Start %\",defaultValue:0,min:0,max:90,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"LoadingScreen\":{\"type\":\"reactComponent\",\"name\":\"LoadingScreen\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LoadingScreen.map"],"mappings":"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"}