{"version":3,"file":"FetchRoundedText.BVisupcn.mjs","names":["useState","useMemo","__esmMin","pe","init_ssg_sandbox_shims","te","init_npm_react_18_3_1","window","init_jsx_runtime","ce","_e","useIsStaticRenderer","addPropertyControls","RenderTarget","ControlType","init_framer_BWFVvmND","FetchRoundedText","props","isStatic","isThumbnail","fetchState","setFetchState","url","controller","res","text","displayedRaw","content","formatted","safeDecimals","decimals","raw","num","suffix","factor","rounded","roundingMode","scaled","locale","useGrouping","statusText","loadingText","errorText","isFixedWidth","style","isFixedHeight","textColor","font","init_FetchRoundedText"],"sources":["https:/framerusercontent.com/modules/jex36yfU7NdobElf706r/HYoasKEINbYjRaAlamWg/FetchRoundedText.js"],"sourcesContent":["// Instructions: Create a Framer text component that fetches a long decimal, lets the user round it as desired, and append a suffix after the data.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";import{startTransition,useEffect,useMemo,useState}from\"react\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function FetchRoundedText(props){const{url,content,decimals,roundingMode,locale,useGrouping,suffix,loadingText,errorText,textColor,font,style}=props;const isStatic=useIsStaticRenderer();const isThumbnail=RenderTarget.current()===RenderTarget.thumbnail;const[fetchState,setFetchState]=useState({status:\"idle\"});useEffect(()=>{if(isThumbnail)return;if(typeof window===\"undefined\")return;if(!url||!url.trim()){startTransition(()=>setFetchState({status:\"idle\"}));return;}const controller=new AbortController;startTransition(()=>setFetchState({status:\"loading\"}));(async()=>{try{const res=await fetch(url,{method:\"GET\",signal:controller.signal});if(!res.ok)throw new Error(`HTTP ${res.status}`);const text=await res.text();startTransition(()=>setFetchState({status:\"success\",rawText:text}));}catch(e){if(e?.name===\"AbortError\")return;startTransition(()=>setFetchState({status:\"error\",message:e?.message?String(e.message):\"Fetch failed\"}));}})();return()=>controller.abort();},[url,isThumbnail]);const displayedRaw=useMemo(()=>{if(isThumbnail||isStatic)return content;if(fetchState.status===\"success\")return fetchState.rawText;if(fetchState.status===\"error\")return content;if(fetchState.status===\"loading\")return\"\";return content;},[fetchState,isStatic,isThumbnail,content]);const formatted=useMemo(()=>{const safeDecimals=Number.isFinite(decimals)?Math.max(0,Math.min(20,Math.round(decimals))):0;const raw=(displayedRaw??\"\").trim();if(!raw)return\"\";const num=Number.parseFloat(raw);if(!Number.isFinite(num)){// If server returns non-numeric text, show it as-is (plus suffix).\nreturn raw+(suffix||\"\");}const factor=Math.pow(10,safeDecimals);let rounded=num;if(safeDecimals===0){if(roundingMode===\"floor\")rounded=Math.floor(num);else if(roundingMode===\"ceil\")rounded=Math.ceil(num);else rounded=Math.round(num);}else{const scaled=num*factor;if(roundingMode===\"floor\")rounded=Math.floor(scaled)/factor;else if(roundingMode===\"ceil\")rounded=Math.ceil(scaled)/factor;else rounded=Math.round(scaled)/factor;}const nf=new Intl.NumberFormat(locale||undefined,{minimumFractionDigits:safeDecimals,maximumFractionDigits:safeDecimals,useGrouping});return nf.format(rounded)+(suffix||\"\");},[displayedRaw,decimals,roundingMode,locale,useGrouping,suffix]);const statusText=useMemo(()=>{if(isThumbnail)return formatted;if(!isStatic&&fetchState.status===\"loading\")return loadingText;if(!isStatic&&fetchState.status===\"error\")return errorText;return formatted;},[isStatic,isThumbnail,fetchState.status,formatted,loadingText,errorText]);const isFixedWidth=!!style&&style.width===\"100%\";const isFixedHeight=!!style&&style.height===\"100%\";return /*#__PURE__*/_jsx(\"span\",{style:{position:\"relative\",display:\"inline-block\",color:textColor,...isFixedWidth?{width:\"100%\"}:{width:\"max-content\",minWidth:\"max-content\"},...isFixedHeight?{height:\"100%\"}:undefined,whiteSpace:\"pre-wrap\",overflow:\"hidden\",textOverflow:\"ellipsis\",...font,...style},\"aria-live\":isStatic||isThumbnail?\"off\":\"polite\",children:statusText});}addPropertyControls(FetchRoundedText,{url:{type:ControlType.String,title:\"URL\",defaultValue:\"\",placeholder:\"https://example.com/value.txt\"},content:{type:ControlType.String,title:\"Content\",defaultValue:\"12345.6789012345\",placeholder:\"Fallback text / default value\",displayTextArea:true},decimals:{type:ControlType.Number,title:\"Decimals\",defaultValue:2,min:0,max:20,step:1},roundingMode:{type:ControlType.Enum,title:\"Rounding\",defaultValue:\"round\",options:[\"round\",\"floor\",\"ceil\"],optionTitles:[\"Round\",\"Floor\",\"Ceil\"],displaySegmentedControl:true},locale:{type:ControlType.String,title:\"Locale\",defaultValue:\"en-US\",placeholder:\"en-US\"},useGrouping:{type:ControlType.Boolean,title:\"Grouping\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",placeholder:\"e.g. %\"},loadingText:{type:ControlType.String,title:\"Loading\",defaultValue:\"Loading…\"},errorText:{type:ControlType.String,title:\"Error\",defaultValue:\"—\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#000000\"},font:{type:ControlType.Font,title:\"Text Style\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:15,variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:1.3}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FetchRoundedText\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FetchRoundedText.map"],"mappings":"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"}