{"version":3,"file":"Examples.C2vYGCVE.mjs","names":["useState","useRef","useMemo","useState","__esmMin","window","z","pe","te","init_ssg_sandbox_shims","init_npm_react_18_3_1","_e","de","init_jsx_runtime","K","J","c","ce","init_framer_motion_DhsWWWsN","useInView","useIsStaticRenderer","useObserveData","Data","init_framer_CaDWdxiz","createStore","dataStore","state1","setDataStore","newState","storeState","storeSetters","setStoreState","setter","useStore","state","setState","init_createStore","init_store_js__1_0","centerContent","init_Utils","init_utils_js__0_9","extractTextContent","node","parseNumericText","match","text","token","sanitized","numberValue","decimals","hasGrouping","formatNumberValue","value","replaceFirstTextNode","replaced","walk","current","nextText","children","CountUpOnView","localRef","isStatic","inView","sourceText","props","parsed","animatedValue","setAnimatedValue","hasAnimated","setHasAnimated","startTime","rafId","tick","elapsed","now","progress","eased","nextValue","displayText","shown","nextChildren","Component","ref","init_Examples"],"sources":["https:/framerusercontent.com/modules/vj7bFUjvEQFgEzNBkdoG/vf3CKm378wlVcBk7IhSU/createStore.js","https:/framer.com/m/framer/store.js@^1.0.0","https:/framerusercontent.com/modules/28rXvpPsrum7FH6cMELS/1jCAazZw1EGHjrG5Nu5D/Utils.js","https:/framer.com/m/framer/utils.js@^0.9.0","https:/framerusercontent.com/modules/INEEYJG6QwDwGQfXxkBs/eKM68Xbo9F5xnNhgrqjH/Examples.js"],"sourcesContent":["import{useState,useEffect}from\"react\";import{Data,useObserveData}from\"framer\";export function createStore(state1){// Use Data so that a Preview reload resets the state\nconst dataStore=Data({state:Object.freeze({...state1})});// Create a set function that updates the state\nconst setDataStore=newState=>{// If the state is an object, make sure we copy it\nif(typeof newState===\"function\"){newState=newState(dataStore.state);}dataStore.state=Object.freeze({...dataStore.state,...newState});};// Store the initial state, copy the object if it's an object\nlet storeState=typeof state1===\"object\"?Object.freeze({...state1}):state1;// Keep a list of all the listeners, in the form of React hook setters\nconst storeSetters=new Set();// Create a set function that updates all the listeners / setters\nconst setStoreState=newState=>{// If the state is an object, make sure we copy it\nif(typeof newState===\"function\"){newState=newState(storeState);}storeState=typeof newState===\"object\"?Object.freeze({...storeState,...newState}):newState;// Update all the listeners / setters with the new value\nstoreSetters.forEach(setter=>setter(storeState));};// Create the actual hook based on everything above\nfunction useStore(){// Create the hook we are going to use as a listener\nconst[state,setState]=useState(storeState);// If we unmount the component using this hook, we need to remove the listener\n// @ts-ignore\nuseEffect(()=>{// But right now, we need to add the listener\nstoreSetters.add(setState);return()=>storeSetters.delete(setState);},[]);// If Data context exists, use Data, otherwise use vanilla React state\nif(useObserveData()===true){useObserveData();return[dataStore.state,setDataStore];}else{// Return the state and a function to update the central store\nreturn[state,setStoreState];}}return useStore;}\nexport const __FramerMetadata__ = {\"exports\":{\"createStore\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./createStore.map","/*\n * createStore (framer/store@1.0.1)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/vj7bFUjvEQFgEzNBkdoG/vf3CKm378wlVcBk7IhSU/createStore.js\"\n","export const centerContent = {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n};\nexport const autoSizingText = {\n    width: \"max-content\",\n    wordBreak: \"break-word\",\n    overflowWrap: \"break-word\",\n    overflow: \"hidden\",\n    whiteSpace: \"pre-wrap\",\n    flexShrink: 0\n};\nexport const defaultContainerStyles = {\n    ...centerContent,\n    overflow: \"hidden\"\n};\nexport const containerStyles = defaultContainerStyles;\nexport const randomColor = ()=>\"#\" + Math.floor(Math.random() * 16777215).toString(16)\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"centerContent\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"autoSizingText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultContainerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomColor\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./Utils.map","/*\n * Utils (framer/utils@0.9.0)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/28rXvpPsrum7FH6cMELS/1jCAazZw1EGHjrG5Nu5D/Utils.js\"\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{cloneElement,forwardRef,isValidElement,startTransition,useEffect,useMemo,useRef,useState}from\"react\";import{useIsStaticRenderer}from\"framer\";import{useInView}from\"framer-motion\";import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";import{randomColor}from\"https://framer.com/m/framer/utils.js@^0.9.0\";// Learn more: https://www.framer.com/developers/overrides/\nconst useStore=createStore({background:\"#0099FF\"});export function withRotate(Component){return props=>{return /*#__PURE__*/_jsx(Component,{...props,animate:{rotate:90},transition:{duration:2}});};}export function withHover(Component){return props=>{return /*#__PURE__*/_jsx(Component,{...props,whileHover:{scale:1.05}});};}export function withRandomColor(Component){return props=>{const[store,setStore]=useStore();return /*#__PURE__*/_jsx(Component,{...props,animate:{background:store.background},onClick:()=>{setStore({background:randomColor()});}});};}function extractTextContent(node){if(typeof node===\"string\"||typeof node===\"number\")return String(node);if(Array.isArray(node))return node.map(extractTextContent).join(\"\");if(/*#__PURE__*/isValidElement(node))return extractTextContent(node.props?.children);return\"\";}function parseNumericText(text){const match=text.match(/-?\\d[\\d,]*(?:\\.\\d+)?/);if(!match)return null;const token=match[0];const sanitized=token.replace(/,/g,\"\");const numberValue=Number.parseFloat(sanitized);if(!Number.isFinite(numberValue))return null;const decimals=sanitized.includes(\".\")?sanitized.split(\".\")[1].length:0;const hasGrouping=token.includes(\",\");return{raw:text,prefix:text.slice(0,match.index??0),numberValue,suffix:text.slice((match.index??0)+token.length),decimals,hasGrouping};}function formatNumberValue(value,decimals,hasGrouping){if(hasGrouping){return value.toLocaleString(undefined,{minimumFractionDigits:decimals,maximumFractionDigits:decimals});}return value.toFixed(decimals);}function replaceFirstTextNode(node,nextText){let replaced=false;const walk=current=>{if(replaced)return current;if(typeof current===\"string\"||typeof current===\"number\"){replaced=true;return nextText;}if(Array.isArray(current)){return current.map(walk);}if(/*#__PURE__*/isValidElement(current)){const children=current.props?.children;if(children===undefined)return current;return /*#__PURE__*/cloneElement(current,{},walk(children));}return current;};return walk(node);}export function CountUpOnView(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);const isStatic=useIsStaticRenderer();const inView=useInView(localRef,{once:true,amount:.35});const sourceText=useMemo(()=>extractTextContent(props.children??props.text??\"\"),[props.children,props.text]);const parsed=useMemo(()=>parseNumericText(sourceText),[sourceText]);const[animatedValue,setAnimatedValue]=useState(0);const[hasAnimated,setHasAnimated]=useState(false);useEffect(()=>{if(!parsed||hasAnimated||!inView||isStatic)return;const duration=900;const startTime=performance.now();let rafId=0;const tick=now=>{const elapsed=now-startTime;const progress=Math.min(elapsed/duration,1);const eased=1-Math.pow(1-progress,3);const nextValue=parsed.numberValue*eased;startTransition(()=>setAnimatedValue(nextValue));if(progress<1){rafId=window.requestAnimationFrame(tick);}else{startTransition(()=>setHasAnimated(true));}};if(typeof window!==\"undefined\"){rafId=window.requestAnimationFrame(tick);}return()=>{if(typeof window!==\"undefined\"){window.cancelAnimationFrame(rafId);}};},[parsed,hasAnimated,inView,isStatic]);const displayText=useMemo(()=>{if(!parsed)return sourceText;if(isStatic)return parsed.raw;const shown=hasAnimated?parsed.numberValue:animatedValue;return`${parsed.prefix}${formatNumberValue(shown,parsed.decimals,parsed.hasGrouping)}${parsed.suffix}`;},[animatedValue,hasAnimated,isStatic,parsed,sourceText]);const nextChildren=useMemo(()=>{if(!props.children||!parsed)return props.children;return replaceFirstTextNode(props.children,displayText);},[displayText,parsed,props.children]);const mergedRef=node=>{localRef.current=node;if(typeof ref===\"function\")ref(node);else if(ref&&\"current\"in ref)ref.current=node;};return /*#__PURE__*/_jsx(Component,{ref:mergedRef,...props,text:parsed?displayText:props.text,children:parsed?nextChildren:props.children});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withRandomColor\":{\"type\":\"reactHoc\",\"name\":\"withRandomColor\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withRotate\":{\"type\":\"reactHoc\",\"name\":\"withRotate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CountUpOnView\":{\"type\":\"reactHoc\",\"name\":\"CountUpOnView\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHover\":{\"type\":\"reactHoc\",\"name\":\"withHover\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Examples.map"],"mappings":"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"}