{"version":3,"file":"Countdown.BGVyDmth.mjs","names":["useRef","useState","useMemo","p"],"sources":["https:/framerusercontent.com/modules/vUXSZSwsh6YejFtGCLv3/eCgMbkpchO1nMfJgvqsR/Countdown.js"],"sourcesContent":["// Usuário pediu: criar um countdown de dias, horas, minutos, segundos e milisegundos; número em cima e texto abaixo; possível alterar fonte e cor; colocar um separador (linha) entre eles com cor e tamanho alteráveis.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useEffect,useMemo,useRef,useState,startTransition}from\"react\";import{useInView}from\"framer-motion\";/**\n * @framerIntrinsicWidth 520\n * @framerIntrinsicHeight 120\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function Countdown(props){const{target,showMilliseconds,millisecondsFps,showLabels,numberColor,labelColor,numberFont,labelFont,labels,gap,unitWidth,separatorEnabled,separatorColor,separatorWidth,separatorHeight,separatorRadius}=props;const isStatic=useIsStaticRenderer();const rootRef=useRef(null);const inView=useInView(rootRef,{margin:\"200px 0px 200px 0px\",amount:.01});const[values,setValues]=useState(()=>{return computeRemainingSafe(target);});const units=useMemo(()=>{const base=[\"days\",\"hours\",\"minutes\",\"seconds\"];return showMilliseconds?[...base,\"milliseconds\"]:base;},[showMilliseconds]);useEffect(()=>{// Recompute immediately when target changes\nstartTransition(()=>setValues(computeRemainingSafe(target)));},[target]);useEffect(()=>{if(isStatic)return;if(!inView)return;if(typeof window===\"undefined\")return;let alive=true;const fps=clampNumber(millisecondsFps,1,240);const intervalMs=showMilliseconds?Math.max(10,Math.round(1e3/fps)):250;const id=window.setInterval(()=>{if(!alive)return;const next=computeRemainingSafe(target);startTransition(()=>setValues(next));},intervalMs);return()=>{alive=false;window.clearInterval(id);};},[isStatic,inView,target,showMilliseconds,millisecondsFps]);return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap,overflow:\"hidden\",...props.style},role:\"timer\",\"aria-live\":\"off\",children:units.map((unit,idx)=>{const isLast=idx===units.length-1;const numberText=formatUnitValue(unit,values[unit]);return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",display:\"flex\",alignItems:\"center\",gap,height:\"100%\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",lineHeight:1,minWidth:\"max-content\",width:unitWidth,flex:\"0 0 auto\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",color:numberColor,whiteSpace:\"nowrap\",fontVariantNumeric:\"tabular-nums\",...numberFont},\"aria-label\":`${labels[unit]}: ${values[unit]}`,children:numberText}),showLabels&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",marginTop:6,color:labelColor,whiteSpace:\"nowrap\",fontVariantNumeric:\"tabular-nums\",...labelFont},children:labels[unit]})]}),separatorEnabled&&!isLast&&/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"relative\",width:separatorWidth,height:separatorHeight,borderRadius:separatorRadius,background:separatorColor,flex:\"0 0 auto\"}})]},unit);})});}function clampNumber(n,min,max){if(!Number.isFinite(n))return min;return Math.min(max,Math.max(min,n));}function computeRemainingSafe(targetJson){if(typeof targetJson!==\"string\"||!targetJson){return{days:0,hours:0,minutes:0,seconds:0,milliseconds:0};}// Parse the ISO string from Framer and interpret it as São Paulo time (UTC-3)\nconst targetDate=new Date(targetJson);// Get the UTC timestamp\nconst targetUtc=targetDate.getTime();// São Paulo is UTC-3, so we need to add 3 hours (in milliseconds) to convert from UTC to local SP time\n// When Framer shows \"7:59\", it stores it as UTC, but user means 7:59 in São Paulo\nconst saoPauloOffset=-3*60*60*1e3// -3 hours in milliseconds\n;const targetMs=targetUtc-saoPauloOffset;if(!Number.isFinite(targetMs)){return{days:0,hours:0,minutes:0,seconds:0,milliseconds:0};}const nowMs=Date.now();let diff=targetMs-nowMs;if(!Number.isFinite(diff)||diff<=0)diff=0;const ms=diff%1e3;const cs=Math.floor(ms/10);const totalSeconds=Math.floor(diff/1e3);const seconds=totalSeconds%60;const totalMinutes=Math.floor(totalSeconds/60);const minutes=totalMinutes%60;const totalHours=Math.floor(totalMinutes/60);const hours=totalHours%24;const days=Math.floor(totalHours/24);return{days,hours,minutes,seconds,milliseconds:cs};}function pad2(n){const v=Math.max(0,Math.floor(n));return v<10?`0${v}`:`${v}`;}function formatUnitValue(unit,value){if(unit===\"days\")return`${Math.max(0,Math.floor(value))}`;if(unit===\"milliseconds\")return pad2(value);return pad2(value);}addPropertyControls(Countdown,{target:{type:ControlType.Date,title:\"Data alvo\",displayTime:true,defaultValue:new Date(Date.now()+3*24*60*60*1e3).toJSON()},showMilliseconds:{type:ControlType.Boolean,title:\"Milissegundos\",defaultValue:true,enabledTitle:\"Mostrar\",disabledTitle:\"Ocultar\"},millisecondsFps:{type:ControlType.Number,title:\"FPS (ms)\",defaultValue:60,min:1,max:120,step:1,hidden:p=>!p.showMilliseconds},showLabels:{type:ControlType.Boolean,title:\"Texto abaixo\",defaultValue:true,enabledTitle:\"Mostrar\",disabledTitle:\"Ocultar\"},numberColor:{type:ControlType.Color,title:\"Cor n\\xfamero\",defaultValue:\"#000000\"},labelColor:{type:ControlType.Color,title:\"Cor texto\",defaultValue:\"#000000\",hidden:p=>!p.showLabels},numberFont:{type:ControlType.Font,title:\"Fonte n\\xfamero\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"40px\",variant:\"Bold\",letterSpacing:\"-0.04em\",lineHeight:\"1em\",textAlign:\"center\"}},labelFont:{type:ControlType.Font,title:\"Fonte texto\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"14px\",variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1em\",textAlign:\"center\"},hidden:p=>!p.showLabels},labels:{type:ControlType.Object,title:\"Textos\",icon:\"object\",controls:{days:{type:ControlType.String,title:\"Dias\",defaultValue:\"Dias\"},hours:{type:ControlType.String,title:\"Horas\",defaultValue:\"Horas\"},minutes:{type:ControlType.String,title:\"Min\",defaultValue:\"Min\"},seconds:{type:ControlType.String,title:\"Seg\",defaultValue:\"Seg\"},milliseconds:{type:ControlType.String,title:\"Ms\",defaultValue:\"Ms\"}},defaultValue:{days:\"Dias\",hours:\"Horas\",minutes:\"Min\",seconds:\"Seg\",milliseconds:\"Ms\"},hidden:p=>!p.showLabels},gap:{type:ControlType.Number,title:\"Espa\\xe7o\",defaultValue:14,min:0,max:80,step:1,unit:\"px\"},unitWidth:{type:ControlType.Number,title:\"Largura bloco\",defaultValue:84,min:30,max:240,step:1,unit:\"px\"},separatorEnabled:{type:ControlType.Boolean,title:\"Separador\",defaultValue:true,enabledTitle:\"Mostrar\",disabledTitle:\"Ocultar\"},separatorColor:{type:ControlType.Color,title:\"Cor linha\",defaultValue:\"#EEEEEE\",hidden:p=>!p.separatorEnabled},separatorWidth:{type:ControlType.Number,title:\"Largura\",defaultValue:2,min:1,max:24,step:1,unit:\"px\",hidden:p=>!p.separatorEnabled},separatorHeight:{type:ControlType.Number,title:\"Altura\",defaultValue:54,min:8,max:300,step:1,unit:\"px\",hidden:p=>!p.separatorEnabled},separatorRadius:{type:ControlType.Number,title:\"Raio\",defaultValue:999,min:0,max:999,step:1,unit:\"px\",hidden:p=>!p.separatorEnabled}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Countdown\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"120\",\"framerIntrinsicWidth\":\"520\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Countdown.map"],"mappings":"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"}