{"version":3,"file":"Counter.PmRFjsjQ.mjs","names":["useRef","p"],"sources":["https:/framerusercontent.com/modules/myZCncZG2nooQucVfIZ7/TDujqgkYOvCYyJ5KRup0/Counter.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{useInView,useMotionValue,useSpring}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";export default function Counter({decimal,value,decimalValue,direction,stiffness,damping,prefix,prefixText,suffix,suffixText,color,fontStyle,rootMargin,fontWeight}){const initialValue=0;const targetValue=decimal?decimalValue:value;// 관찰은 block 성격의 래퍼에!\nconst wrapRef=useRef(null);const numRef=useRef(null);// 시작/목표 값\nconst motionValue=useMotionValue(direction===\"down\"?targetValue:initialValue);const springValue=useSpring(motionValue,{damping,stiffness});// 모바일에서 안정적인 트리거를 위해 약간 여유(rootMargin)와 래퍼 사용\nconst inView=useInView(wrapRef,{once:true,margin:rootMargin});// inView 시에만 목표로 스프링 이동\nuseEffect(()=>{if(!inView)return;motionValue.set(direction===\"down\"?initialValue:targetValue);},[inView,direction,targetValue,motionValue]);// 숫자 표시 업데이트 (Intl에는 숫자만!)\nuseEffect(()=>{const unsub=springValue.on(\"change\",latest=>{if(!numRef.current)return;const formatted=new Intl.NumberFormat(\"en-US\",{minimumFractionDigits:decimal?2:0,maximumFractionDigits:decimal?2:0}).format(latest)// latest는 number\n;numRef.current.textContent=formatted;});return()=>unsub();},[springValue,decimal]);// 🔹 변수 폰트 weight 적용\nconst textStyle={...fontStyle||{},color,// CSS font-weight는 1–1000까지의 숫자를 받을 수 있고,\n// 변수 폰트의 wght 축에 매핑됨.\n// (Pretendard Variable 같은 wght 축 폰트에 유효)\nfontWeight:fontWeight};return /*#__PURE__*/_jsxs(\"span\",{ref:wrapRef,style:{display:\"inline-block\",lineHeight:1},children:[prefix?/*#__PURE__*/_jsx(\"span\",{style:textStyle,children:prefixText}):null,/*#__PURE__*/_jsx(\"span\",{ref:numRef,style:textStyle,children:initialValue}),suffix?/*#__PURE__*/_jsx(\"span\",{style:textStyle,children:suffixText}):null]});}Counter.defaultProps={decimal:false,value:500,decimalValue:100,direction:\"up\",stiffness:300,damping:100,prefix:false,prefixText:\"\",suffix:false,suffixText:\"\",color:\"#000000\",fontStyle:{},rootMargin:\"0px 0px -15% 0px\",fontWeight:400};addPropertyControls(Counter,{decimal:{title:\"Decimal\",type:ControlType.Boolean,enabledTitle:\"Yes\",disabledTitle:\"No\"},value:{title:\"Value\",type:ControlType.Number,min:0,max:1e6,hidden:p=>p.decimal===true},decimalValue:{title:\"Value\",type:ControlType.Number,min:0,max:1e3,step:.01,hidden:p=>p.decimal===false},prefix:{title:\"Prefix\",type:ControlType.Boolean,enabledTitle:\"Yes\",disabledTitle:\"No\"},prefixText:{title:\"Prefix Value\",type:ControlType.String,hidden:p=>p.prefix===false},suffix:{title:\"Suffix\",type:ControlType.Boolean,enabledTitle:\"Yes\",disabledTitle:\"No\"},suffixText:{title:\"Suffix Value\",type:ControlType.String,hidden:p=>p.suffix===false},direction:{title:\"Direction\",type:ControlType.Enum,options:[\"up\",\"down\"]},stiffness:{title:\"Stiffness\",type:ControlType.Number,min:1,max:1e3},damping:{title:\"Damping\",type:ControlType.Number,min:0,max:100},color:{title:\"Color\",type:ControlType.Color},fontStyle:{title:\"Font Style\",type:\"font\",controls:\"extended\"},rootMargin:{title:\"Root Margin\",type:ControlType.String},// 🔹 추가: 1~900 사이 weight 컨트롤\nfontWeight:{title:\"Weight\",type:ControlType.Number,min:1,max:900,step:1,displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Counter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Counter.map"],"mappings":"yPAA+M,SAAwB,EAAQ,CAAC,UAAQ,QAAM,eAAa,YAAU,YAAU,UAAQ,SAAO,aAAW,SAAO,aAAW,QAAM,YAAU,aAAW,cAAY,CAAC,IAA2B,EAAY,EAAQ,EAAa,EACza,EAAQA,EAAO,KAAK,CAAO,EAAOA,EAAO,KAAK,CAC9C,EAAY,EAAe,IAAY,OAAO,EAAY,EAAa,CAAO,EAAY,EAAU,EAAY,CAAC,UAAQ,YAAU,CAAC,CACpI,EAAO,EAAU,EAAQ,CAAC,KAAK,GAAK,OAAO,EAAW,CAAC,CAC7D,MAAc,CAAK,GAAc,EAAY,IAAI,IAAY,OAAO,EAAa,EAAY,EAAG,CAAC,EAAO,EAAU,EAAY,EAAY,CAAC,CAC3I,MAAc,CAAC,IAAM,EAAM,EAAY,GAAG,SAAS,GAAQ,CAAC,GAAG,CAAC,EAAO,QAAQ,OAAO,IAAM,EAAU,IAAI,KAAK,aAAa,QAAQ,CAAC,sBAAsB,EAAQ,EAAE,EAAE,sBAAsB,EAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAO,CACxN,EAAO,QAAQ,YAAY,GAAY,CAAC,UAAU,GAAO,EAAG,CAAC,EAAY,EAAQ,CAAC,CACnF,IAAM,EAAU,CAAC,GAAG,GAAW,EAAE,CAAC,QAGvB,aAAW,CAAC,OAAoB,EAAM,OAAO,CAAC,IAAI,EAAQ,MAAM,CAAC,QAAQ,eAAe,WAAW,EAAE,CAAC,SAAS,CAAC,EAAoB,EAAK,OAAO,CAAC,MAAM,EAAU,SAAS,EAAW,CAAC,CAAC,KAAkB,EAAK,OAAO,CAAC,IAAI,EAAO,MAAM,EAAU,SAAS,EAAa,CAAC,CAAC,EAAoB,EAAK,OAAO,CAAC,MAAM,EAAU,SAAS,EAAW,CAAC,CAAC,KAAK,CAAC,CAAC,kBAVzS,IAAoC,IAA8D,IAAoD,CAUqJ,EAAQ,aAAa,CAAC,QAAQ,GAAM,MAAM,IAAI,aAAa,IAAI,UAAU,KAAK,UAAU,IAAI,QAAQ,IAAI,OAAO,GAAM,WAAW,GAAG,OAAO,GAAM,WAAW,GAAG,MAAM,UAAU,UAAU,EAAE,CAAC,WAAW,mBAAmB,WAAW,IAAI,CAAC,EAAoB,EAAQ,CAAC,QAAQ,CAAC,MAAM,UAAU,KAAK,EAAY,QAAQ,aAAa,MAAM,cAAc,KAAK,CAAC,MAAM,CAAC,MAAM,QAAQ,KAAK,EAAY,OAAO,IAAI,EAAE,IAAI,IAAI,OAAO,GAAGC,EAAE,UAAU,GAAK,CAAC,aAAa,CAAC,MAAM,QAAQ,KAAK,EAAY,OAAO,IAAI,EAAE,IAAI,IAAI,KAAK,IAAI,OAAO,GAAGA,EAAE,UAAU,GAAM,CAAC,OAAO,CAAC,MAAM,SAAS,KAAK,EAAY,QAAQ,aAAa,MAAM,cAAc,KAAK,CAAC,WAAW,CAAC,MAAM,eAAe,KAAK,EAAY,OAAO,OAAO,GAAGA,EAAE,SAAS,GAAM,CAAC,OAAO,CAAC,MAAM,SAAS,KAAK,EAAY,QAAQ,aAAa,MAAM,cAAc,KAAK,CAAC,WAAW,CAAC,MAAM,eAAe,KAAK,EAAY,OAAO,OAAO,GAAGA,EAAE,SAAS,GAAM,CAAC,UAAU,CAAC,MAAM,YAAY,KAAK,EAAY,KAAK,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,YAAY,KAAK,EAAY,OAAO,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,UAAU,KAAK,EAAY,OAAO,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,QAAQ,KAAK,EAAY,MAAM,CAAC,UAAU,CAAC,MAAM,aAAa,KAAK,OAAO,SAAS,WAAW,CAAC,WAAW,CAAC,MAAM,cAAc,KAAK,EAAY,OAAO,CAC5kD,WAAW,CAAC,MAAM,SAAS,KAAK,EAAY,OAAO,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,eAAe,GAAK,CAAC,CAAC"}