{"version":3,"file":"StatCounterNR.Dc9eqv_G.mjs","names":["useRef","useState","startTransition"],"sources":["https:/framerusercontent.com/modules/bazlEMvc8Sj5NP97bIDC/hU5T86MvvXvtJH9PWi1n/StatCounterNR.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useRef,useState,useEffect,startTransition}from\"react\";// @framerSupportedLayoutWidth any-prefer-fixed\n// @framerSupportedLayoutHeight auto\nexport default function StatCounterNR(props){const{stats,duration,columns,theme,numberFont,labelFont,numberSize,labelSize,italic,bgFill,bgColor,numColor,labelColor,accentColor,dividers,decimals,gap,paddingY}=props;const presets={Light:{bg:\"#F6F2EB\",num:\"#0C0C0B\",label:\"#7A6E5A\",acc:\"#E8604A\"},Dark:{bg:\"#1A0E48\",num:\"#F6F2EB\",label:\"rgba(246,242,235,0.6)\",acc:\"#E8604A\"},Custom:{bg:bgColor,num:numColor,label:labelColor,acc:accentColor}};const c=presets[theme]||presets.Light;const background=bgFill?c.bg:\"transparent\";const isStatic=useIsStaticRenderer();const ref=useRef(null);const numRefs=useRef([]);const[fontReady,setFontReady]=useState(isStatic);const[width,setWidth]=useState(1200);const visible=stats.slice(0,columns);const fmt=(v,p)=>{const val=(Number(v)||0)*p;const fixed=val.toFixed(decimals);const[intPart,dec]=fixed.split(\".\");const withCommas=intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g,\",\");return dec?`${withCommas}.${dec}`:withCommas;};// rAF가 최신 값을 참조하도록 (루프 재시작 없이)\nconst dataRef=useRef({visible,decimals});dataRef.current={visible,decimals};// 폰트 로드\nuseEffect(()=>{const id=\"nr-stat-fonts\";if(typeof document!==\"undefined\"&&!document.getElementById(id)){const link=document.createElement(\"link\");link.id=id;link.rel=\"stylesheet\";link.href=\"https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital@0;1&family=DM+Mono&family=DM+Sans&display=swap\";document.head.appendChild(link);}if(isStatic)return;const done=()=>startTransition(()=>setFontReady(true));if(document.fonts?.ready)document.fonts.ready.then(done);else done();},[isStatic]);// 컨테이너 폭 측정 (반응형)\nuseEffect(()=>{const el=ref.current;if(!el)return;const measure=()=>{const w=el.offsetWidth;if(w>0)startTransition(()=>setWidth(w));};measure();const ro=new ResizeObserver(measure);ro.observe(el);return()=>ro.disconnect();},[]);// 카운트업 — DOM에 직접 쓰기 (프레임마다 리렌더 X)\nuseEffect(()=>{const write=p=>{const{visible}=dataRef.current;visible.forEach((s,i)=>{const node=numRefs.current[i];if(node)node.textContent=fmt(s.value,p);});};if(isStatic){write(1);return;}const el=ref.current;if(!el)return;let raf,start=null,started=false;const tick=now=>{if(start===null)start=now;const t=Math.min((now-start)/(duration*1e3),1);write(1-Math.pow(1-t,3))// ease-out cubic\n;if(t<1)raf=requestAnimationFrame(tick);};write(0);const io=new IntersectionObserver(entries=>{if(entries[0].isIntersecting&&!started){started=true;raf=requestAnimationFrame(tick);io.disconnect();}},{threshold:.4});io.observe(el);return()=>{io.disconnect();cancelAnimationFrame(raf);};},[isStatic,duration,decimals]);// 반응형 계산\nlet cols=columns;if(width<480)cols=1;else if(width<768)cols=Math.min(2,columns);else if(width<1024)cols=Math.min(columns,3);const scale=Math.max(.5,Math.min(1,width/1e3));const numSize=Math.round(numberSize*scale);const unitSize=Math.round(numSize*.45);return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{width:\"100%\",background:background,boxSizing:\"border-box\",display:\"grid\",gridTemplateColumns:`repeat(${cols}, 1fr)`,rowGap:cols<columns?32:0,padding:`${paddingY}px 0`},children:visible.map((s,i)=>/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:gap,padding:\"0 24px\",borderLeft:dividers&&cols>1&&i%cols!==0?\"1px solid #D4CFC6\":\"none\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{fontFamily:`'${numberFont}', serif`,fontStyle:italic?\"italic\":\"normal\",fontSize:numSize,lineHeight:1,color:c.num,display:\"flex\",alignItems:\"baseline\",minWidth:\"max-content\",opacity:fontReady?1:0,transition:\"opacity 0.2s ease\"},children:[s.prefix?/*#__PURE__*/_jsx(\"span\",{style:{color:c.acc,fontSize:unitSize,marginRight:2},children:s.prefix}):null,/*#__PURE__*/_jsx(\"span\",{ref:el=>numRefs.current[i]=el,children:fmt(s.value,isStatic?1:0)}),s.suffix?/*#__PURE__*/_jsx(\"span\",{style:{color:c.acc,fontSize:unitSize,marginLeft:2},children:s.suffix}):null]}),/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:`'${labelFont}', monospace`,fontSize:labelSize,letterSpacing:\"0.14em\",textTransform:\"uppercase\",color:c.label,textAlign:\"center\",minWidth:\"max-content\"},children:s.label})]},i))});}StatCounterNR.defaultProps={stats:[{value:1400,prefix:\"\",suffix:\"+\",label:\"Users\"},{value:98,prefix:\"\",suffix:\"%\",label:\"Satisfaction\"},{value:24,prefix:\"\",suffix:\"/7\",label:\"Support\"},{value:12,prefix:\"$\",suffix:\"M\",label:\"Funding\"}],duration:2,columns:4,theme:\"Light\",numberFont:\"Cormorant Garamond\",labelFont:\"DM Mono\",numberSize:88,labelSize:13,italic:false,bgFill:true,bgColor:\"#F6F2EB\",numColor:\"#0C0C0B\",labelColor:\"#7A6E5A\",accentColor:\"#E8604A\",dividers:true,decimals:0,gap:10,paddingY:64};addPropertyControls(StatCounterNR,{stats:{type:ControlType.Array,title:\"Stats\",control:{type:ControlType.Object,controls:{value:{type:ControlType.Number,title:\"Value\",displayStepper:false},prefix:{type:ControlType.String,title:\"Prefix\"},suffix:{type:ControlType.String,title:\"Suffix\"},label:{type:ControlType.String,title:\"Label\"}}}},columns:{type:ControlType.Number,title:\"Columns\",min:1,max:6,step:1,displayStepper:true},duration:{type:ControlType.Number,title:\"Duration\",min:.5,max:6,step:.5,unit:\"s\"},decimals:{type:ControlType.Number,title:\"Decimals\",min:0,max:2,step:1,displayStepper:true},theme:{type:ControlType.Enum,title:\"Theme\",options:[\"Light\",\"Dark\",\"Custom\"],displaySegmentedControl:true},bgFill:{type:ControlType.Boolean,title:\"Background Fill\",defaultValue:true},numberFont:{type:ControlType.Enum,title:\"Number Font\",options:[\"Cormorant Garamond\",\"DM Sans\",\"DM Mono\"]},labelFont:{type:ControlType.Enum,title:\"Label Font\",options:[\"DM Mono\",\"DM Sans\",\"Cormorant Garamond\"]},italic:{type:ControlType.Boolean,title:\"Number Italic\"},numberSize:{type:ControlType.Number,title:\"Number Size\",min:24,max:160,step:2,unit:\"px\"},labelSize:{type:ControlType.Number,title:\"Label Size\",min:8,max:20,step:1,unit:\"px\"},dividers:{type:ControlType.Boolean,title:\"Dividers\"},gap:{type:ControlType.Number,title:\"Gap\",min:0,max:40,step:2,unit:\"px\"},paddingY:{type:ControlType.Number,title:\"Padding Y\",min:0,max:120,step:4,unit:\"px\"},bgColor:{type:ControlType.Color,title:\"BG (Custom)\"},numColor:{type:ControlType.Color,title:\"Number (Custom)\"},labelColor:{type:ControlType.Color,title:\"Label (Custom)\"},accentColor:{type:ControlType.Color,title:\"Accent (Custom)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"StatCounterNR\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./StatCounterNR.map"],"mappings":"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"}