{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/xkQcW1CrKrcmzUTIKNPH/Ka7LPr7qGMfcXJJB0yMV/fkjHG1SJt.js", "ssg:https://framerusercontent.com/modules/quIQjXeusVKZRk3V2tVC/5hoALzyXyTieiXjYdtoX/InteractiveASCII_Prod.js", "ssg:https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js"],
  "sourcesContent": ["// Generated by Framer (ee31e22)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"FS;Quicksand-medium\",\"FS;Quicksand-bold\"]);export const fonts=[{explicitInter:true,fonts:[{family:\"Quicksand\",source:\"fontshare\",style:\"normal\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/QC5OFCRYAHBMZHRLIIU45N62WI6ZBEN5/OI42VSRCFEX355ZZEYTLHHM57N7YCI5P/MVH72LSEZWMSCRJ44KJGHTCWVLPDHZP3.woff2\",weight:\"500\"},{family:\"Quicksand\",source:\"fontshare\",style:\"normal\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/P7QWZTESTWCXKHLCEKK2U7KFAUDHILAR/EYHZLELF37GOBRYPDSZCVDTZXAG3CXMB/RJNZ7OVQ2KGPV7DIFWD6QAYSZME3RCOR.woff2\",weight:\"700\"}]}];export const css=['.framer-owfXp .framer-styles-preset-1y9oj5s:not(.rich-text-wrapper), .framer-owfXp .framer-styles-preset-1y9oj5s.rich-text-wrapper h3 { --framer-font-family: \"Quicksand\", \"Quicksand Placeholder\", sans-serif; --framer-font-family-bold: \"Quicksand\", \"Quicksand Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 28px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-letter-spacing: -0.01em; --framer-line-height: 120%; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: var(--token-f195ea74-7512-4096-8d91-0e7c7e10d0ab, #d5dbe6); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-owfXp .framer-styles-preset-1y9oj5s:not(.rich-text-wrapper), .framer-owfXp .framer-styles-preset-1y9oj5s.rich-text-wrapper h3 { --framer-font-family: \"Quicksand\", \"Quicksand Placeholder\", sans-serif; --framer-font-family-bold: \"Quicksand\", \"Quicksand Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 22px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-letter-spacing: -0.01em; --framer-line-height: 120%; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: var(--token-f195ea74-7512-4096-8d91-0e7c7e10d0ab, #d5dbe6); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-owfXp .framer-styles-preset-1y9oj5s:not(.rich-text-wrapper), .framer-owfXp .framer-styles-preset-1y9oj5s.rich-text-wrapper h3 { --framer-font-family: \"Quicksand\", \"Quicksand Placeholder\", sans-serif; --framer-font-family-bold: \"Quicksand\", \"Quicksand Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 18px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-letter-spacing: -0.01em; --framer-line-height: 120%; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: var(--token-f195ea74-7512-4096-8d91-0e7c7e10d0ab, #d5dbe6); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-owfXp\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "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:\"\u2588\u2593\u2592\u2591 \",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\u2013Steinberg 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\"}}}", "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"],
  "mappings": "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",
  "names": ["init_ssg_sandbox_shims", "fontStore", "fonts", "css", "className", "init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "cssVariableRegex", "useColors", "colors", "isCanvas", "RenderTarget", "isOptimizing", "darkMode", "useDarkMode", "styleValues", "setStyleValues", "ye", "extractStyleValues", "extractCSSVariableName", "ue", "div", "observer", "variableNames", "se", "color", "extractDefaultValue", "values", "i", "variableName", "colorValues", "result", "lightVars", "darkVars", "style", "vars", "parseVariables", "light", "dark", "extractColorStyles", "varName", "lightSection", "darkSection", "styles", "rules", "styleRules", "rule", "subrule", "isDarkMedia", "css", "isDark", "isLight", "isPreview", "isDarkMode", "setIsDarkMode", "mutations", "mutation", "theme", "mediaQuery", "handleChange", "e", "cssString", "match", "section", "declaration", "name", "value", "cssVar", "parts", "_define_property", "obj", "key", "value", "characterSets", "DEFAULT_IMAGE", "DEFAULT_FONT", "InteractiveASCII", "props", "cursor", "backgroundColor", "color", "font", "sizing", "style", "glow", "staticEffect", "isCanvas", "RenderTarget", "image", "sizeMode", "isSolidColor", "ditheringMode", "text", "setText", "ye", "canvasRef", "pe", "ctxRef", "maskCanvasRef", "maskCtxRef", "ref", "textRef", "glowRef", "staticIntervalRef", "cursorX", "cursorY", "cursorInitialized", "cursorInitializedRef", "useFollowCursor", "lastValuesRef", "color1Value", "color2Value", "useColors", "color1Color", "color2Color", "se", "Color", "colorInterpolatorRef", "createColorInterpolator", "rngSeedRef", "img", "setImg", "cursorImg", "setCursorImg", "ue", "loadImage", "ascii", "grayValues", "generateASCII", "asciiWidth", "asciiHeight", "measureFontAspectRatio", "imageData", "data", "i", "gray", "point1", "point2", "percent", "mapRange", "interpolatedColor", "r", "g", "b", "a", "idx", "error", "needsUpdate", "unsubscribeX", "unsubscribeY", "intervalId", "currentValues", "updateScale", "containerWidth", "containerHeight", "textWidth", "textHeight", "scale", "width", "height", "widthScale", "heightScale", "transform", "resizeObserver", "textStyle", "u", "p", "addPropertyControls", "ControlType", "temp", "clamp", "min", "max", "generateGrayValues", "canvas", "ctx", "containerRef", "cursorStyle", "cursorWidth", "cursorInvert", "brightness", "contrastValue", "blurValue", "invertEnabled", "contrastFactor", "fontAspectRatio", "mappedX", "mappedY", "gradient", "cursorHeight", "lum", "adjusted", "ditherAlgorithm", "charset", "customCharacterSet", "whiteMode", "ignoreWhite", "nLevels", "grayOriginal", "y", "line", "x", "computedLevel", "newPixel", "diffusion", "rng", "SeededRandom", "randomValue", "noise", "noisyValue", "bayer", "matrixSize", "t", "valueWithDither", "smoothing", "movementTransition", "hasSpring", "mouseX", "useMotionValue", "mouseY", "springX", "useSpring", "springY", "previousScrollXRef", "previousScrollYRef", "initialized", "setInitialized", "isInitializedRef", "handleMouseMove", "event", "rect", "xPercent", "yPercent", "handleScroll", "scrollX", "scrollY", "deltaX", "deltaY", "deltaXPercent", "deltaYPercent", "fromLow", "fromHigh", "toLow", "toHigh", "percentage", "mode", "color1", "color2", "seed"]
}
