{"version":3,"file":"ASCII.C2WpgCFF.mjs","names":["React.useRef","React.useMemo","React.useCallback"],"sources":["https:/framerusercontent.com/modules/QAiQrwWURrlYG0orVVxe/WcbRNIv5d6lgSvDfJ8qV/ASCII.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{ControlType}from\"framer\";export default function ASCIIBackground(props){const{characters=\"■□▢▣▤▥▦▧▨▩▪▫▬▭▮▯\",fontSize=12,color=\"#ffffff\",backgroundColor=\"#000000\",speedFactor=100,density=.5,image,...rest}=props;const canvasRef=React.useRef(null);const animationRef=React.useRef(null);const frameCount=React.useRef(0);const lastTimestamp=React.useRef(0);const charSet=React.useMemo(()=>characters.split(\"\"),[characters]);const initCanvas=React.useCallback(()=>{if(!canvasRef.current)return;const canvas=canvasRef.current;const ctx=canvas.getContext(\"2d\");if(!ctx)return;canvas.width=canvas.offsetWidth;canvas.height=canvas.offsetHeight;ctx.fillStyle=backgroundColor;ctx.fillRect(0,0,canvas.width,canvas.height);},[backgroundColor]);const drawFrame=React.useCallback(timestamp=>{if(!canvasRef.current)return;const canvas=canvasRef.current;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const effectiveDelay=1e3/speedFactor;const delta=timestamp-lastTimestamp.current;if(delta<effectiveDelay){animationRef.current=requestAnimationFrame(drawFrame);return;}lastTimestamp.current=timestamp;const cols=Math.floor(canvas.width/fontSize);const rows=Math.floor(canvas.height/fontSize);ctx.fillStyle=backgroundColor;ctx.fillRect(0,0,canvas.width,canvas.height);ctx.fillStyle=color;ctx.font=`${fontSize}px monospace`;frameCount.current+=1;for(let y=0;y<rows;y++){for(let x=0;x<cols;x++){if(Math.random()<density){const char=charSet[(frameCount.current+x+y)%charSet.length];ctx.fillText(char,x*fontSize,y*fontSize);}}}animationRef.current=requestAnimationFrame(drawFrame);},[charSet,color,backgroundColor,fontSize,speedFactor,density]);React.useEffect(()=>{initCanvas();animationRef.current=requestAnimationFrame(drawFrame);return()=>{if(animationRef.current){cancelAnimationFrame(animationRef.current);}};},[initCanvas,drawFrame]);React.useEffect(()=>{const handleResize=()=>initCanvas();window.addEventListener(\"resize\",handleResize);return()=>window.removeEventListener(\"resize\",handleResize);},[initCanvas]);return /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",width:\"100%\",height:\"100%\",overflow:\"hidden\",WebkitMaskImage:image?`url(${image})`:undefined,WebkitMaskRepeat:\"no-repeat\",WebkitMaskSize:\"cover\",maskImage:image?`url(${image})`:undefined,maskRepeat:\"no-repeat\",maskSize:\"cover\",...rest},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\"}})});}// Property Controls\nASCIIBackground.propertyControls={characters:{type:ControlType.String,title:\"Characters\",defaultValue:\"■□▢▣▤▥▦▧▨▩▪▫▬▭▮▯\"},fontSize:{type:ControlType.Number,title:\"Font Size\",min:8,max:32,step:1,defaultValue:12},color:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#ffffff\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},speedFactor:{type:ControlType.Number,title:\"Speed\",min:1,max:1e3,step:10,defaultValue:100},density:{type:ControlType.Number,title:\"Density\",min:.1,max:1,step:.1,defaultValue:.5},image:{type:ControlType.Image,title:\"Mask Image\"}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ASCIIBackground\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ASCII.map"],"mappings":"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"}