{"version":3,"file":"AnimatedCounter.CU7lLKdE.mjs","names":["useState","useMemo","useState","useRef","useMemo","useRef","useState"],"sources":["https:/framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js","https:/framerusercontent.com/modules/quIQjXeusVKZRk3V2tVC/5hoALzyXyTieiXjYdtoX/InteractiveASCII_Prod.js","https:/framerusercontent.com/modules/sIxZFVxIOBdfeANYhkj2/lGu9VayhxpYD2v9lbKlh/AnimatedCounter.js"],"sourcesContent":["import{RenderTarget}from\"framer\";import{useEffect,useState,useMemo}from\"react\";const cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;export function useColors(...colors){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isOptimizing=typeof window===\"undefined\";const darkMode=useDarkMode();const[styleValues,setStyleValues]=useState(()=>extractStyleValues(colors.map(extractCSSVariableName)));useEffect(()=>{if(!isCanvas)return;const div=document.body.querySelector(\"main > div\");if(!div)return;const observer=new MutationObserver(()=>{setStyleValues(extractStyleValues(colors.map(extractCSSVariableName)));});observer.observe(div,{attributes:true,attributeFilter:[\"style\"]});return()=>observer.disconnect();},colors);const variableNames=useMemo(()=>colors.map(extractCSSVariableName),[colors]);if(isOptimizing){return colors.map(color=>extractDefaultValue(color));}let values=[];for(let i=0;i<colors.length;i++){const color=colors[i];// Return original value if not a string\nif(typeof color!==\"string\"){values.push(color);continue;}const variableName=variableNames[i];const colorValues=styleValues[variableName];if(variableName&&colorValues){values.push(darkMode?colorValues.dark||colorValues.light||color:colorValues.light||color);}else{values.push(color);}}return values;}////////////////////\nfunction extractStyleValues(variableNames){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const result={};let lightVars={};let darkVars={};if(isCanvas&&typeof document!==\"undefined\"){const div=document.body.querySelector(\"main > div\");if(div){const style=div.getAttribute(\"style\");if(style){const vars=parseVariables(style);lightVars=vars;darkVars=vars;}}}else{const{light,dark}=extractColorStyles();lightVars=parseVariables(light);darkVars=parseVariables(dark);}// Include all variables\nconst allVarNames=new Set([...Object.keys(lightVars),...Object.keys(darkVars)]);allVarNames.forEach(varName=>{result[varName]={light:lightVars[varName]||\"\",dark:darkVars[varName]||\"\"};});return result;}function extractColorStyles(){let lightSection=\"\";let darkSection=\"\";if(typeof document!==\"undefined\"){const styles=document.head.querySelectorAll(\"style[data-framer-css], style[data-framer-css-ssr], style[data-framer-css-ssr-minified]\");for(const style of styles){const rules=style.sheet?.cssRules;if(!rules)continue;const styleRules=[];for(const rule of rules){if(rule instanceof CSSStyleRule){styleRules.push([rule,false]);}else if(rule instanceof CSSMediaRule){if(rule.conditionText===\"(prefers-color-scheme: dark)\"){for(const subrule of rule.cssRules){if(subrule instanceof CSSStyleRule){styleRules.push([subrule,true]);}}}}}for(const[rule,isDarkMedia]of styleRules){const css=rule.cssText;const hasVars=css.includes(\"--token-\");if(!hasVars)continue;const isDark=isDarkMedia?rule.selectorText===\"body\":rule.selectorText==='body[data-framer-theme=\"dark\"]';const isLight=!isDarkMedia&&rule.selectorText===\"body\";if(!isDark&&!isLight)continue;if(isDark){if(!darkSection){darkSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}else{if(!lightSection){lightSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}if(darkSection&&lightSection)break;}if(darkSection&&lightSection)break;}}return{light:lightSection,dark:darkSection};}export function useDarkMode(){const isPreview=typeof window!==\"undefined\"&&window.location.origin.endsWith(\"framercanvas.com\");const[isDarkMode,setIsDarkMode]=useState(()=>{if(typeof window===\"undefined\"){return false;}else if(isPreview&&typeof document!==\"undefined\"){return document.body.getAttribute(\"data-framer-theme\")===\"dark\";}else{return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;}});useEffect(()=>{if(isPreview){const observer=new MutationObserver(mutations=>{mutations.forEach(mutation=>{if(mutation.attributeName===\"data-framer-theme\"){const theme=document.body.getAttribute(\"data-framer-theme\");setIsDarkMode(theme===\"dark\");}});});observer.observe(document.body,{attributes:true,attributeFilter:[\"data-framer-theme\"]});return()=>observer.disconnect();}else{const mediaQuery=window.matchMedia(\"(prefers-color-scheme: dark)\");const handleChange=e=>{setIsDarkMode(e.matches);};// Update initial value\nif(mediaQuery.matches!==isDarkMode){setIsDarkMode(mediaQuery.matches);}mediaQuery.addListener(handleChange);return()=>mediaQuery.removeListener(handleChange);}},[isPreview]);return isDarkMode;}function extractCSSVariableName(cssString){if(!cssString||!cssString.startsWith(\"var(\")){return\"\";}const match=cssVariableRegex.exec(cssString);if(match){const variableName=match[1];return variableName||\"\";}return\"\";}function parseVariables(section){const vars={};if(!section)return vars;const declarations=section.split(\";\").filter(Boolean);declarations.forEach(declaration=>{const[name,value]=declaration.split(\":\").map(s=>s.trim());if(name&&value){vars[name]=value;}});return vars;}function extractDefaultValue(cssVar){// Check if the string starts with \"var(\"\nif(!cssVar||!cssVar.startsWith(\"var(\")){return cssVar// Return the original value if it doesn't start with \"var(\"\n;}// Remove \"var(\" from the beginning and \")\" from the end\nconst content=cssVar.slice(4,-1);// Split the content by comma\nconst parts=content.split(\",\");// If there's more than one part, the second part is the default value\nif(parts.length>1){// Trim any whitespace from the default value\nreturn parts.slice(1).join(\",\").trim();}// If there's no comma, return an empty string or null\nreturn\"\";}\nexport const __FramerMetadata__ = {\"exports\":{\"useDarkMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useColors\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useColors.map","function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,Color}from\"framer\";import{useEffect,useState,useRef,useMemo}from\"react\";import{useMotionValue,useSpring}from\"framer-motion\";import{useColors}from\"https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js\";const characterSets={detailed:\"$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\\\|()1{}[]?-_+~<>i!lI;:,\\\"^`'.\",standard:\"@%#*+=-:.\",blocks:\"█▓▒░ \",binary:\"01\",hex:\"0123456789ABCDEF\"};const DEFAULT_IMAGE={src:\"https://framerusercontent.com/images/rMjuVOUhT39Hdz1kbwue16ZOySE.png\",srcSet:\"https://framerusercontent.com/images/rMjuVOUhT39Hdz1kbwue16ZOySE.png?scale-down-to=512 512w,https://framerusercontent.com/images/rMjuVOUhT39Hdz1kbwue16ZOySE.png 710w\"};const DEFAULT_FONT={fontFamily:'\"Fragment Mono\", monospace',fontSize:\"12px\",fontStyle:\"normal\",fontWeight:400,letterSpacing:\"0em\",lineHeight:\"1em\"};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 400\n */export default function InteractiveASCII(props){const{cursor,backgroundColor,color,font,sizing,style,glow,staticEffect}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const image=props.image||DEFAULT_IMAGE;const sizeMode=style?.width&&style?.height?\"both\":style?.width?\"width\":style?.height?\"height\":\"none\";const isSolidColor=color.mode===\"color\";const ditheringMode=staticEffect?\"noise\":props.ditheringMode;const[text,setText]=useState(\"\");const canvasRef=useRef(null);const ctxRef=useRef(null);const maskCanvasRef=useRef(null);const maskCtxRef=useRef(null);const ref=useRef(null);const textRef=useRef(null);const glowRef=useRef(null);const staticIntervalRef=useRef(null);const{x:cursorX,y:cursorY,initialized:cursorInitialized,initializedRef:cursorInitializedRef}=useFollowCursor(cursor?.smoothing||0,textRef);const lastValuesRef=useRef({cursorX:0,cursorY:0,cursorInitialized,outputWidth:props.outputWidth,characterSet:props.characterSet,customCharacterSet:props.customCharacterSet,ditheringMode,invertColors:props.invertColors,whiteMode:props.whiteMode,blur:props.blur,brightness:props.brightness,contrast:props.contrast,cursorStyle:cursor?.style,cursorInvert:cursor?.invert,cursorWidth:cursor?.width,font});const[color1Value,color2Value]=useColors(isSolidColor?\"#FFF\":color.color1,isSolidColor?\"#FFF\":color.color2);const[color1Color,color2Color]=useMemo(()=>[new Color(color1Value),new Color(color2Value)],[color1Value,color2Value]);const colorInterpolatorRef=useRef(()=>createColorInterpolator(color.mode,color1Color,color2Color));const rngSeedRef=useRef(Math.random());const[img,setImg]=useState(null);const[cursorImg,setCursorImg]=useState(null);useEffect(()=>{if(image?.src){const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>{setImg(img);};img.src=image.src;return()=>{img.onload=null;};}else{setImg(null);}},[image]);useEffect(()=>{if(cursor?.style===\"image\"&&cursor?.image?.src){const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>{setCursorImg(img);};img.src=cursor.image.src;return()=>{img.onload=null;};}else{setCursorImg(null);}},[cursor?.style,cursor?.image]);useEffect(()=>{colorInterpolatorRef.current=createColorInterpolator(color.mode,color1Color,color2Color);},[color1Color,color2Color,color.mode]);useEffect(()=>{lastValuesRef.current={...lastValuesRef.current,outputWidth:props.outputWidth,characterSet:props.characterSet,customCharacterSet:props.customCharacterSet,ditheringMode,invertColors:props.invertColors,whiteMode:props.whiteMode,blur:props.blur,brightness:props.brightness,contrast:props.contrast,font,cursorStyle:cursor?.style,cursorInvert:cursor?.invert,cursorWidth:cursor?.width};},[props.outputWidth,props.characterSet,props.customCharacterSet,ditheringMode,props.invertColors,props.whiteMode,props.blur,props.brightness,props.contrast,font,cursor?.style,cursor?.invert,cursor?.width]);useEffect(()=>{// Initialize canvas and context\nif(!canvasRef.current){canvasRef.current=document.createElement(\"canvas\");ctxRef.current=canvasRef.current.getContext(\"2d\",{willReadFrequently:true});}if(!maskCanvasRef.current){maskCanvasRef.current=document.createElement(\"canvas\");maskCtxRef.current=maskCanvasRef.current.getContext(\"2d\",{willReadFrequently:true});}if(img&&ctxRef.current&&maskCtxRef.current){const loadImage=async()=>{try{const{ascii,grayValues}=generateASCII(img,lastValuesRef.current,canvasRef.current,ctxRef.current,cursorX,cursorY,cursorInitializedRef,textRef,cursorImg,rngSeedRef);setText(ascii);// Update the mask with gradient colors\nif(!isSolidColor){const{outputWidth:asciiWidth}=lastValuesRef.current;const asciiHeight=Math.round(img.height/img.width*asciiWidth*measureFontAspectRatio(font));maskCanvasRef.current.width=asciiWidth;maskCanvasRef.current.height=asciiHeight;const imageData=maskCtxRef.current.getImageData(0,0,asciiWidth,asciiHeight);const data=imageData.data;for(let i=0;i<grayValues.length;i++){const gray=grayValues[i];const point1=color.mode===\"gradient\"?color.color1Point/100:color.threshold/100;const point2=color.mode===\"gradient\"?color.color2Point/100:1;let percent;if(point1===point2){// If points are equal, pick color based on which side of the point the gray value falls\npercent=gray/255<point1?0:1;}else{percent=Math.min(Math.max(mapRange(gray/255,Math.min(point1,point2),Math.max(point1,point2),0,1),0),1);}let interpolatedColor=percent<=point1?color1Color:percent>=point2?color2Color:colorInterpolatorRef.current(percent);const{r,g,b,a}=Color.toRgb(interpolatedColor);const idx=i*4;data[idx]=isNaN(r)?0:r;data[idx+1]=isNaN(g)?0:g;data[idx+2]=isNaN(b)?0:b;data[idx+3]=typeof a===\"number\"?isNaN(a)?0:a*255:255;}maskCtxRef.current.putImageData(imageData,0,0);}}catch(error){console.error(\"Error generating ASCII:\",error);}};let needsUpdate=false;// Subscribe to motion value changes\nconst unsubscribeX=cursorX.on(\"change\",()=>{needsUpdate=true;});const unsubscribeY=cursorY.on(\"change\",()=>{needsUpdate=true;});// Set up interval to check for changes\nconst intervalId=setInterval(()=>{if(needsUpdate){const currentValues={...lastValuesRef.current,cursorInitialized:cursorInitializedRef.current,cursorX:cursorX.get(),cursorY:cursorY.get()};// Check if any values have changed\nconst hasChanged=Object.entries(currentValues).some(([key,value])=>lastValuesRef.current[key]!==value);if(hasChanged){loadImage();lastValuesRef.current=currentValues;}needsUpdate=false;}},24);// Set up static effect interval if enabled\nif(staticEffect&&staticEffect.interval>0&&!(isCanvas&&staticEffect.preview===false)){// Clear any existing interval\nif(staticIntervalRef.current){clearInterval(staticIntervalRef.current);}// Create new interval for static effect\nstaticIntervalRef.current=setInterval(()=>{rngSeedRef.current=Math.random();loadImage();},staticEffect.interval*1e3);}else if(staticIntervalRef.current){// Clear interval if static effect is disabled\nclearInterval(staticIntervalRef.current);staticIntervalRef.current=null;}// Initial load\nloadImage();return()=>{clearInterval(intervalId);if(staticIntervalRef.current){clearInterval(staticIntervalRef.current);staticIntervalRef.current=null;}unsubscribeX();unsubscribeY();};}return()=>{if(canvasRef.current){canvasRef.current.remove();}if(maskCanvasRef.current){maskCanvasRef.current.remove();}if(staticIntervalRef.current){clearInterval(staticIntervalRef.current);staticIntervalRef.current=null;}};},[img,props,cursorX,cursorY,cursorImg,staticEffect]);useEffect(()=>{// Scale text to fit container width\nif(ref.current&&textRef.current){const updateScale=()=>{const containerWidth=ref.current?.offsetWidth;const containerHeight=ref.current?.offsetHeight;const textWidth=textRef.current?.scrollWidth;const textHeight=textRef.current?.scrollHeight;if(textWidth&&textHeight){let scale=1;let width=style?.width||\"auto\";let height=style?.height||\"auto\";switch(sizeMode){case\"width\":scale=containerWidth/textWidth;height=style?.height||`${textHeight*scale}px`;break;case\"height\":scale=containerHeight/textHeight;width=style?.width||`${textWidth*scale}px`;break;case\"both\":const widthScale=containerWidth/textWidth;const heightScale=containerHeight/textHeight;scale=sizing===\"fit\"?Math.min(widthScale,heightScale):Math.max(widthScale,heightScale);break;case\"none\":scale=1;break;}const translate=sizeMode===\"none\"?\"\":`translate(-50%, -50%)`;const transform=`${translate} scale(${scale})`;textRef.current.style.transform=transform;if(glowRef.current){glowRef.current.style.transform=transform;}ref.current.style.width=width;ref.current.style.height=height;}};const resizeObserver=new ResizeObserver(updateScale);resizeObserver.observe(ref.current);resizeObserver.observe(textRef.current);// Initial scale\nupdateScale();return()=>{resizeObserver.disconnect();};}},[text,sizeMode,sizing]);const textStyle={width:\"fit-content\",height:\"fit-content\",color:color.mode===\"color\"?color.color:\"transparent\",userSelect:\"none\",whiteSpace:\"pre\",textAlign:\"center\",transformOrigin:\"center\",fontVariantNumeric:\"tabular-nums\",...sizeMode!==\"none\"?{position:\"absolute\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\"}:{},...!isSolidColor?{backgroundImage:`url(${maskCanvasRef.current?.toDataURL()})`,backgroundRepeat:\"no-repeat\",backgroundSize:\"100% 100%\",imageRendering:\"pixelated\",backgroundClip:\"text\",WebkitBackgroundClip:\"text\"}:{},...font};return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{position:\"relative\",overflow:\"hidden\",backgroundColor,borderRadius:props.radius,...style},children:[glow?.blur>0&&glow?.opacity>0&&/*#__PURE__*/_jsx(\"div\",{ref:glowRef,style:{position:\"absolute\",filter:`blur(${glow.blur}px)`,...textStyle,opacity:glow.opacity},\"aria-hidden\":\"true\",children:text}),/*#__PURE__*/_jsx(\"div\",{ref:textRef,style:{...textStyle},\"aria-label\":image?.alt,children:text})]});}InteractiveASCII.displayName=\"Interactive ASCII\";addPropertyControls(InteractiveASCII,{cursor:{type:ControlType.Object,icon:\"effect\",optional:true,defaultValue:{size:20,smoothing:0},controls:{style:{type:ControlType.Enum,defaultValue:\"gradient\",options:[\"gradient\",\"circle\",\"image\"],optionTitles:[\"Gradient\",\"Circle\",\"Image\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},image:{type:ControlType.ResponsiveImage,hidden:props=>props.style!==\"image\"},width:{type:ControlType.Number,defaultValue:20,min:1,max:500,step:1,description:\"Measured in characters\"},invert:{type:ControlType.Boolean,defaultValue:false},smoothing:{type:ControlType.Number,defaultValue:0,min:0,max:100,step:1}}},image:{type:ControlType.ResponsiveImage,__defaultAssetReference:\"data:framer/asset-reference,rMjuVOUhT39Hdz1kbwue16ZOySE.png?originalFilename=image.png&preferredSize=auto\"},sizing:{type:ControlType.Enum,defaultValue:\"fit\",options:[\"fit\",\"fill\"],optionTitles:[\"Fit\",\"Fill\"],displaySegmentedControl:true},font:{type:\"font\",defaultFontType:\"monospace\",displayTextAlignment:false,controls:\"extended\",defaultValue:{fontSize:12,lineHeight:1}},color:{type:ControlType.Object,controls:{mode:{type:ControlType.Enum,options:[\"color\",\"gradient\",\"glow\"],optionTitles:[\"Color\",\"Gradient\",\"Glow\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},color:{type:ControlType.Color,defaultValue:\"#fff\",hidden:props=>props.mode!==\"color\"},color1:{type:ControlType.Color,defaultValue:\"#fff\",title:\"Color 1\",hidden:props=>props.mode!==\"gradient\"&&props.mode!==\"glow\"},color1Point:{type:ControlType.Number,defaultValue:0,min:0,max:100,step:1,unit:\"%\",title:\"Position\",hidden:props=>props.mode!==\"gradient\"},color2:{type:ControlType.Color,defaultValue:\"#000\",title:\"Color 2\",hidden:props=>props.mode!==\"gradient\"&&props.mode!==\"glow\"},color2Point:{type:ControlType.Number,defaultValue:100,min:0,max:100,step:1,unit:\"%\",title:\"Position\",hidden:props=>props.mode!==\"gradient\"},threshold:{type:ControlType.Number,defaultValue:50,min:0,max:100,step:1,unit:\"%\",hidden:props=>props.mode!==\"glow\"}}},glow:{type:ControlType.Object,optional:true,icon:\"effect\",controls:{blur:{type:ControlType.Number,defaultValue:8,min:1,max:30,step:1},opacity:{type:ControlType.Number,defaultValue:1,min:0,max:1,step:.01}}},staticEffect:{type:ControlType.Object,optional:true,icon:\"effect\",title:\"Static\",controls:{preview:{type:ControlType.Boolean,defaultValue:true,description:\"Show effect in editor\"},interval:{type:ControlType.Number,defaultValue:.1,min:.05,max:1,step:.01,unit:\"s\",description:\"Makes the text change continuously like a static/noise effect\"}}},backgroundColor:{type:ControlType.Color,defaultValue:\"#000\",optional:true,title:\"Background\"},outputWidth:{type:ControlType.Number,defaultValue:100,min:20,max:500,step:1,title:\"Width\"},characterSet:{type:ControlType.Enum,defaultValue:\"detailed\",options:[\"detailed\",\"standard\",\"blocks\",\"binary\",\"hex\",\"custom\"],optionTitles:[`Detailed (${characterSets.detailed})`,`Standard (${characterSets.standard})`,`Blocks (${characterSets.blocks})`,`Binary (${characterSets.binary})`,`Hex (${characterSets.hex})`,\"Custom\"],title:\"Characters\"},customCharacterSet:{type:ControlType.String,defaultValue:\"@%#*+=-:.\",placeholder:\"Character set\",title:\"Custom\",hidden:props=>props.characterSet!==\"custom\"},ditheringMode:{type:ControlType.Enum,defaultValue:\"none\",options:[\"none\",\"floyd\",\"atkinson\",\"ordered\"],optionTitles:[\"None\",\"Floyd-Steinberg\",\"Atkinson\",\"Ordered\"],title:\"Dithering\",hidden:props=>!!props.staticEffect},invertColors:{type:ControlType.Boolean,defaultValue:false,title:\"Invert\"},whiteMode:{type:ControlType.Enum,defaultValue:\"ignore\",options:[\"keep\",\"ignore\"],optionTitles:[\"Keep\",\"Ignore\"],displaySegmentedControl:true,title:\"White\"},blur:{type:ControlType.Number,defaultValue:0,min:0,max:10,step:1,displayStepper:true},brightness:{type:ControlType.Number,defaultValue:0,min:-100,max:100},contrast:{type:ControlType.Number,defaultValue:0,min:-100,max:100},radius:{type:ControlType.BorderRadius,defaultValue:\"0px\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});// Helper Functions\n// Measure font aspect ratio by creating a temporary element\nfunction measureFontAspectRatio(font){font=font||DEFAULT_FONT;const temp=document.createElement(\"div\");temp.style.position=\"absolute\";temp.style.visibility=\"hidden\";temp.style.whiteSpace=\"nowrap\";temp.style.fontFamily=font.fontFamily;temp.style.fontWeight=font.fontWeight;temp.style.fontSize=font.fontSize;temp.style.lineHeight=font.lineHeight;temp.style.letterSpacing=font.letterSpacing;temp.textContent=\"W\";document.body.appendChild(temp);const width=temp.offsetWidth;const height=temp.offsetHeight;document.body.removeChild(temp);return width/height;}// Clamp a value between min and max.\nfunction clamp(value,min,max){return Math.max(min,Math.min(max,value));}// ASCII Art Generation Functions\n// Generate grayscale 0-255 values from an image.\nfunction generateGrayValues(img,props,canvas,ctx,cursorX,cursorY,cursorInitializedRef,containerRef,cursorImg){const{cursorStyle,cursorWidth,cursorInvert,outputWidth:asciiWidth,brightness,contrast:contrastValue,blur:blurValue,invertColors:invertEnabled,font}=props;const contrastFactor=259*(contrastValue+255)/(255*(259-contrastValue));const fontAspectRatio=measureFontAspectRatio(font);const asciiHeight=Math.round(img.height/img.width*asciiWidth*fontAspectRatio);canvas.width=asciiWidth;canvas.height=asciiHeight;ctx.filter=blurValue>0?`blur(${blurValue}px)`:\"none\";ctx.drawImage(img,0,0,asciiWidth,asciiHeight);if(cursorWidth&&cursorInitializedRef.current){// Map cursor coordinates from component space to ASCII grid space\nconst mappedX=cursorX.get()*asciiWidth;const mappedY=cursorY.get()*(asciiHeight/fontAspectRatio);ctx.save();ctx.scale(1,fontAspectRatio);switch(cursorStyle){case\"gradient\":{// Create a radial gradient for the cursor effect\nconst gradient=ctx.createRadialGradient(mappedX,mappedY,0,mappedX,mappedY,cursorWidth/2);if(cursorInvert){gradient.addColorStop(0,\"rgba(255, 255, 255, 1)\");gradient.addColorStop(1,\"rgba(255, 255, 255, 0)\");}else{gradient.addColorStop(0,\"rgba(0, 0, 0, 1)\");gradient.addColorStop(1,\"rgba(0, 0, 0, 0)\");}ctx.fillStyle=gradient;ctx.fillRect(0,0,asciiWidth,asciiHeight/fontAspectRatio);break;}case\"circle\":{ctx.fillStyle=cursorInvert?\"rgba(255, 255, 255, 1)\":\"rgba(0, 0, 0, 1)\";ctx.beginPath();ctx.arc(mappedX,mappedY,cursorWidth/2,0,Math.PI*2);ctx.fill();break;}case\"image\":{if(cursorImg){// Calculate the size of the cursor image in ASCII grid space\nconst cursorHeight=cursorImg.height/cursorImg.width*cursorWidth;// Draw the cursor image centered at the cursor position\nctx.save();if(cursorInvert){ctx.filter=\"invert(1)\";}ctx.drawImage(cursorImg,mappedX-cursorWidth/2,mappedY-cursorHeight/2,cursorWidth,cursorHeight);ctx.restore();}break;}}ctx.restore();}const imageData=ctx.getImageData(0,0,asciiWidth,asciiHeight);const data=imageData.data;const gray=[];for(let i=0;i<data.length;i+=4){let lum=.299*data[i]+.587*data[i+1]+.114*data[i+2];if(invertEnabled)lum=255-lum;let adjusted=clamp(contrastFactor*(lum-128)+128+brightness,0,255);gray.push(adjusted);}return{gray,asciiHeight};}// Generate standard ASCII art (non-DOG modes).\nfunction generateASCII(img,props,canvas,ctx,cursorX,cursorY,cursorInitializedRef,containerRef,cursorImg,rngSeedRef){const{outputWidth:asciiWidth,ditheringMode:ditherAlgorithm,characterSet:charset,customCharacterSet,whiteMode}=props;const ignoreWhite=whiteMode===\"ignore\";const gradient=charset===\"custom\"?customCharacterSet||\"0 \":characterSets[charset];const nLevels=gradient.length;const{gray:grayOriginal,asciiHeight}=generateGrayValues(img,props,canvas,ctx,cursorX,cursorY,cursorInitializedRef,containerRef,cursorImg);const gray=[...grayOriginal];let ascii=\"\";if(ditherAlgorithm!==\"none\"){if(ditherAlgorithm===\"floyd\"){// Floyd–Steinberg dithering\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}let computedLevel=Math.round(gray[idx]/255*(nLevels-1));line+=gradient.charAt(computedLevel);const newPixel=computedLevel/(nLevels-1)*255;const error=gray[idx]-newPixel;if(x+1<asciiWidth){gray[idx+1]=clamp(gray[idx+1]+error*(7/16),0,255);}if(x-1>=0&&y+1<asciiHeight){gray[idx-1+asciiWidth]=clamp(gray[idx-1+asciiWidth]+error*(3/16),0,255);}if(y+1<asciiHeight){gray[idx+asciiWidth]=clamp(gray[idx+asciiWidth]+error*(5/16),0,255);}if(x+1<asciiWidth&&y+1<asciiHeight){gray[idx+asciiWidth+1]=clamp(gray[idx+asciiWidth+1]+error*(1/16),0,255);}}ascii+=line+\"\\n\";}}else if(ditherAlgorithm===\"atkinson\"){// Atkinson dithering\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}let computedLevel=Math.round(gray[idx]/255*(nLevels-1));line+=gradient.charAt(computedLevel);const newPixel=computedLevel/(nLevels-1)*255;const error=gray[idx]-newPixel;const diffusion=error/8;if(x+1<asciiWidth){gray[idx+1]=clamp(gray[idx+1]+diffusion,0,255);}if(x+2<asciiWidth){gray[idx+2]=clamp(gray[idx+2]+diffusion,0,255);}if(y+1<asciiHeight){if(x-1>=0){gray[idx-1+asciiWidth]=clamp(gray[idx-1+asciiWidth]+diffusion,0,255);}gray[idx+asciiWidth]=clamp(gray[idx+asciiWidth]+diffusion,0,255);if(x+1<asciiWidth){gray[idx+asciiWidth+1]=clamp(gray[idx+asciiWidth+1]+diffusion,0,255);}}if(y+2<asciiHeight){gray[idx+2*asciiWidth]=clamp(gray[idx+2*asciiWidth]+diffusion,0,255);}}ascii+=line+\"\\n\";}}else if(ditherAlgorithm===\"noise\"){const rng=new SeededRandom(rngSeedRef.current);// Noise dithering\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;const randomValue=rng.next();if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}const noise=(randomValue-.4)*(255/nLevels);const noisyValue=clamp(gray[idx]+noise,0,255);let computedLevel=Math.round(noisyValue/255*(nLevels-1));line+=gradient.charAt(computedLevel);}ascii+=line+\"\\n\";}}else if(ditherAlgorithm===\"ordered\"){// Ordered dithering using a 4x4 Bayer matrix.\nconst bayer=[[0,8,2,10],[12,4,14,6],[3,11,1,9],[15,7,13,5]];const matrixSize=4;for(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}const p=gray[idx]/255;const t=(bayer[y%matrixSize][x%matrixSize]+.5)/(matrixSize*matrixSize);let valueWithDither=p+t-.5;valueWithDither=Math.min(Math.max(valueWithDither,0),1);let computedLevel=Math.floor(valueWithDither*nLevels);if(computedLevel>=nLevels)computedLevel=nLevels-1;line+=gradient.charAt(computedLevel);}ascii+=line+\"\\n\";}}}else{// Simple mapping without dithering.\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}const computedLevel=Math.round(gray[idx]/255*(nLevels-1));line+=gradient.charAt(computedLevel);}ascii+=line+\"\\n\";}}return{ascii,grayValues:gray};}function useFollowCursor(smoothing=0,containerRef){const movementTransition={damping:100,stiffness:mapRange(smoothing,0,100,2e3,50)};const hasSpring=smoothing!==0;const mouseX=useMotionValue(0);const mouseY=useMotionValue(0);const springX=useSpring(mouseX,movementTransition);const springY=useSpring(mouseY,movementTransition);const previousScrollXRef=useRef(0);const previousScrollYRef=useRef(0);const[initialized,setInitialized]=useState(false);const isInitializedRef=useRef(false);useEffect(()=>{const handleMouseMove=event=>{if(!containerRef.current)return;const rect=containerRef.current.getBoundingClientRect();const x=event.clientX-rect.left;const y=event.clientY-rect.top;// Convert to percentages, handling edge cases to prevent infinite values\nconst xPercent=rect.width===0?0:x/rect.width;const yPercent=rect.height===0?0:y/rect.height;mouseX.set(xPercent);mouseY.set(yPercent);if(!isInitializedRef.current){springX.jump(xPercent);springY.jump(yPercent);isInitializedRef.current=true;setInitialized(true);}};const handleScroll=()=>{if(!containerRef.current||!isInitializedRef.current)return;const rect=containerRef.current.getBoundingClientRect();const scrollX=window.scrollX||window.pageXOffset||document.documentElement.scrollLeft;const scrollY=window.scrollY||window.pageYOffset||document.documentElement.scrollTop;// Calculate scroll delta\nconst deltaX=scrollX-previousScrollXRef.current;const deltaY=scrollY-previousScrollYRef.current;// Update previous scroll positions\npreviousScrollXRef.current=scrollX;previousScrollYRef.current=scrollY;// Convert scroll delta to percentage, handling edge cases\nconst deltaXPercent=rect.width===0?0:deltaX/rect.width;const deltaYPercent=rect.height===0?0:deltaY/rect.height;// Update position using scroll delta percentages\nmouseX.set(mouseX.get()+deltaXPercent);mouseY.set(mouseY.get()+deltaYPercent);};window.addEventListener(\"mousemove\",handleMouseMove);window.addEventListener(\"scroll\",handleScroll);return()=>{window.removeEventListener(\"mousemove\",handleMouseMove);window.removeEventListener(\"scroll\",handleScroll);};},[containerRef]);return{initialized,initializedRef:isInitializedRef,x:hasSpring?springX:mouseX,y:hasSpring?springY:mouseY};}function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}function createColorInterpolator(mode,color1,color2){if(mode===\"glow\"){return Color.interpolate(color2,new Color(color2.r,color2.g,color2.b,0));}return Color.interpolate(color1,color2);}class SeededRandom{next(){this.seed=this.seed*16807%2147483647;return(this.seed-1)/2147483646;}constructor(seed){_define_property(this,\"seed\",void 0);this.seed=seed%2147483647;if(this.seed<=0)this.seed+=2147483646;}}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"InteractiveASCII\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"400\",\"framerIntrinsicHeight\":\"400\",\"framerDisableUnlink\":\"*\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","/*\n * Animated Counter by framer.today\n * v1.0.1\n *\n * hi@framer.today\n * _joerl on 𝕏\n *\n * Full terms here ↴\n * https://framer.today/license\n *\n */import{jsx as _jsx}from\"react/jsx-runtime\";import{animate,motion,useInView}from\"framer-motion\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * @framerDisableUnlink\n */export default function AnimatedCounter(props){const{from,to,duration,decimalPlaces,decimalSeparator,font:{fontFamily,fontWeight,fontSize,lineHeight,letterSpacing,textAlign},color,playOnLoad,once,animationType}=props;const ref=useRef(null);const isCanvas=RenderTarget.current()===RenderTarget.canvas;const ariaLabel=`Counter ends at ${to}`;// Pass 'once' to useInView\nconst isInView=useInView(ref,{once});const[hasAnimated,setHasAnimated]=useState(false);const[displayValue,setDisplayValue]=useState(()=>formatNumber(from));function formatNumber(value){let formattedNumber=value.toFixed(decimalPlaces).replace(\".\",decimalSeparator);return formattedNumber;}useEffect(()=>{// Determine if animation should play\nif(!isCanvas&&(playOnLoad||isInView)&&!hasAnimated){const animationControl=animate(from,to,{duration,ease:animationType===\"smooth\"?\"easeInOut\":\"linear\",onUpdate:latest=>{setDisplayValue(formatNumber(latest));},onComplete:()=>{if(once){setHasAnimated(true);}}});return()=>animationControl.stop();}},[from,to,duration,decimalPlaces,decimalSeparator,playOnLoad,isInView,animationType,once,hasAnimated]);return /*#__PURE__*/_jsx(motion.div,{ref:ref,initial:{opacity:isCanvas?1:0},whileInView:{opacity:1},style:{fontFamily,fontWeight,fontSize,lineHeight,letterSpacing,textAlign,color,fontVariantNumeric:\"tabular-nums\",userSelect:\"none\"},\"aria-label\":ariaLabel,children:isCanvas?formatNumber(to):displayValue});}AnimatedCounter.defaultProps={from:0,to:24,duration:5,decimalPlaces:0,decimalSeparator:\".\",font:{fontFamily:\"Manrope\",fontWeight:\"400\",fontSize:40,lineHeight:\"1.5em\",letterSpacing:\"normal\",textAlign:\"left\"},color:\"#FFF\",playOnLoad:true,once:true,animationType:\"smooth\"};addPropertyControls(AnimatedCounter,{from:{type:ControlType.Number,title:\"From\",defaultValue:0,min:0,step:.1,displayStepper:true},to:{type:ControlType.Number,title:\"To\",defaultValue:16,min:0,step:.1,displayStepper:true},animationType:{type:ControlType.Enum,title:\"Animation Type\",defaultValue:\"smooth\",options:[\"smooth\",\"linear\"],optionTitles:[\"Smooth\",\"Linear\"]},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:2.5,min:0,step:.1,displayStepper:true},decimalPlaces:{type:ControlType.Number,displayStepper:true,title:\"Decimal Places\",defaultValue:0,min:0,max:2,step:1},decimalSeparator:{type:ControlType.Enum,title:\"↳ Separator\",defaultValue:\".\",options:[\".\",\",\"],optionTitles:[\".\",\",\"],hidden:({decimalPlaces})=>decimalPlaces===0},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultValue:{fontFamily:\"Manrope\",fontWeight:\"400\",fontSize:64,lineHeight:\"1.5em\",letterSpacing:\"Medium\",textAlign:\"left\"},displayFontSize:true,displayTextAlignment:false,defaultFontType:\"monospace\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#FFF\"},once:{type:ControlType.Boolean,title:\"Once\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},playOnLoad:{type:ControlType.Boolean,title:\"Play on Load\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:`\n        \n        *from framer.today*\n [License](https://framer.today/license)\n    `}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedCounter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedCounter.map"],"mappings":"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"}