{"version":3,"file":"AnimatedPatternBackground_Prod.CxpUPucE.mjs","names":["useState","useMemo","useState","useRef","useMemo","useRef","useState","__esmMin","navigator","init_npm_react_18_3_1","pe","window","ce","init_jsx_runtime","_e","de","init_ssg_sandbox_shims","useInView","animate","init_framer_motion_DhsWWWsN","addPropertyControls","RenderTarget","ControlType","Color","init_framer_B1b760uK","useColors","colors","isCanvas","isOptimizing","darkMode","useDarkMode","styleValues","setStyleValues","extractStyleValues","extractCSSVariableName","div","observer","variableNames","extractDefaultValue","color","values","i","variableName","colorValues","result","lightVars","darkVars","style","vars","parseVariables","extractColorStyles","light","dark","varName","lightSection","darkSection","styles","rules","styleRules","rule","subrule","isDarkMedia","css","isDark","isLight","isPreview","isDarkMode","setIsDarkMode","mutations","mutation","theme","mediaQuery","handleChange","cssString","match","cssVariableRegex","section","name","value","declaration","s","cssVar","parts","init_useColors","PixelTrail","props","isMousePressed","setIsMousePressed","tiles","setTiles","dimensions","setDimensions","hoveredTiles","setHoveredTiles","tileColors","setTileColors","canvasRef","containerRef","gridRef","prevPositionRef","timeoutRefs","animationRefs","mousePositionRef","hoveredTilesRef","backgroundColorValue","trailColorValue","backgroundColor","trailColor","finalTrailColor","finalBackgroundColor","trailRGBA","ensureRGBA","backgroundRGBA","isTrailTransparent","isBackgroundTransparent","updateHoveredTiles","newTiles","updater","cols","width","tileSize","rows","height","resizeObserver","entry","entries","newCols","newRows","key","canvas","ctx","x","y","clearAnimation","index","startResetTimer","onComplete","prev","newColors","shouldAnimate","transition","animation","latest","delay","transitionDelay","getPointsOnLine","points","dx","x1","x0","dy","y1","y0","sx","sy","err","e2","isMouseInBounds","mouseX","mouseY","onMove","trigger","rect","relativeX","relativeY","handleMouseUp","currentX","currentY","prevX","prevY","validPoints","currentIndex","next","handleGlobalMouseMove","isInside","clientX","clientY","innerWidth","innerHeight","handleMouseLeave","handleGlobalMouseDown","handleScroll","handleMouseEnter","container","init_PixelTrail_Prod","AnimatedPatternBackground","playing","preview","characterSetValue","characterSet","customCharacterSet","characterSets","colorValue","color1Value","color2Value","colorInterpolatorRef","ref","contextRef","startTimeRef","timeRef","previousTimeRef","animationFrameRef","resizeObserverRef","isInView","getDesignParams","PATTERNS","pattern","frequencyA","frequencyB","centerASpeed","centerBSpeed","createSmoothEaseFunction","mapRange","easing","designParamsRef","forceUpdate","renderCanvas","invert","scale","font","styleType","pixelSize","resizeCanvas","pixelRatio","containerElement","canvasAspect","duotoneThreshold","colorThreshold","colorInterpolator","renderPixels","time","colorMode","fontSizeValue","parseCssDimension","DEFAULT_FONT","lineHeightValue","calculateRelativeLineHeight","fontFamily","fontWeight","lineHeight","letterSpacing","fontSize","aspectRatio","measureFontAspectRatio","charHeight","charWidth","m","aMod","map","bMod","coord","st","centerA","mulN","vec2","centerB","A","mode","dist","B","smoothEasing","char","designPixelSize","actualPixelSize","gridWidth","gridHeight","imageData","data","patternA","patternB","intensity","a","colorColor","color1Color","color2Color","tempCanvas","tempCtx","updateTime","intervalId","interval","radius","v","n","b","start1","stop1","stop2","start2","temp","smoothing","t","power","fromLow","fromHigh","toLow","toHigh","getCssUnit","init_AnimatedPatternBackground_Prod","defaultValue","unit"],"sources":["https:/framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js","https:/framerusercontent.com/modules/P7CERvZDMOoPtAW3iQjh/ExcinTcV8f84Hc9Vmljm/PixelTrail_Prod.js","https:/framerusercontent.com/modules/QBu9EbwNJGzum10QxSoW/fhkEBhTU2qq8MJYui0H8/AnimatedPatternBackground_Prod.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","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useState,useRef,useMemo}from\"react\";import{animate}from\"framer-motion\";import{useColors}from\"https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 400\n */export default function PixelTrail(props){const{tileSize,trigger,delay,transition}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isOptimizing=typeof window===\"undefined\";const[isMousePressed,setIsMousePressed]=useState(false);const[tiles,setTiles]=useState([]);const[dimensions,setDimensions]=useState({width:0,height:0});const[hoveredTiles,setHoveredTiles]=useState(new Set);const[tileColors,setTileColors]=useState({});const canvasRef=useRef(null);const containerRef=useRef(null);const gridRef=useRef({cols:0,rows:0});const prevPositionRef=useRef(null);const timeoutRefs=useRef({});const animationRefs=useRef({});const mousePositionRef=useRef(null);const hoveredTilesRef=useRef(new Set);const[backgroundColorValue,trailColorValue]=useColors(props.backgroundColor,props.trailColor);const[backgroundColor,trailColor]=useMemo(()=>{let finalTrailColor=trailColorValue;let finalBackgroundColor=backgroundColorValue;// Convert colors to RGBA if they're RGB\nconst trailRGBA=ensureRGBA(trailColorValue);const backgroundRGBA=ensureRGBA(backgroundColorValue);// Check for transparency\nconst isTrailTransparent=trailRGBA?.endsWith(\", 0)\")||!trailRGBA;const isBackgroundTransparent=backgroundRGBA?.endsWith(\", 0)\")||!backgroundRGBA;if(isTrailTransparent&&!isBackgroundTransparent){// Extract RGB from backgroundColor and make it fully opaque\nconst rgb=backgroundRGBA.substring(0,backgroundRGBA.lastIndexOf(\",\"));finalTrailColor=`${rgb}, 0)`;}else if(isBackgroundTransparent&&!isTrailTransparent){// Extract RGB from trailColor and make it fully transparent\nconst rgb=trailRGBA.substring(0,trailRGBA.lastIndexOf(\",\"));finalBackgroundColor=`${rgb}, 0)`;}return[finalBackgroundColor,finalTrailColor];},[backgroundColorValue,trailColorValue]);const updateHoveredTiles=updater=>{const newTiles=typeof updater===\"function\"?updater(hoveredTilesRef.current):updater;hoveredTilesRef.current=newTiles;setHoveredTiles(newTiles);};// Setup canvas and tile grid\nuseEffect(()=>{if(!containerRef.current)return;const{width,height}=containerRef.current.getBoundingClientRect();setDimensions({width,height});const cols=Math.ceil(width/tileSize);const rows=Math.ceil(height/tileSize);gridRef.current={cols,rows};// Initialize array with all false values\nsetTiles(new Array(cols*rows).fill(false));},[tileSize]);// Add resize observer\nuseEffect(()=>{if(!containerRef.current)return;const resizeObserver=new ResizeObserver(entries=>{for(const entry of entries){const{width,height}=entry.contentRect;setDimensions({width,height});const newCols=Math.ceil(width/tileSize);const newRows=Math.ceil(height/tileSize);// Only clear data if grid dimensions have changed\nif(newCols!==gridRef.current.cols||newRows!==gridRef.current.rows){gridRef.current={cols:newCols,rows:newRows};setTiles(new Array(newCols*newRows).fill(false));updateHoveredTiles(new Set);setTileColors({});// Stop all animations when resizing\nObject.keys(timeoutRefs.current).forEach(key=>{clearTimeout(timeoutRefs.current[Number(key)]);delete timeoutRefs.current[Number(key)];});Object.keys(animationRefs.current).forEach(key=>{animationRefs.current[Number(key)]?.stop();delete animationRefs.current[Number(key)];});}}});resizeObserver.observe(containerRef.current);return()=>resizeObserver.disconnect();},[tileSize]);// Draw the grid\nuseEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;// Set canvas size to match grid dimensions (1px per tile)\ncanvas.width=gridRef.current.cols;canvas.height=gridRef.current.rows;// Set canvas CSS size to match actual display dimensions\ncanvas.style.width=`${dimensions.width}px`;canvas.style.height=`${dimensions.height}px`;const{cols}=gridRef.current;for(let i=0;i<tiles.length;i++){const x=i%cols;const y=Math.floor(i/cols);ctx.fillStyle=tileColors[i]||backgroundColor;ctx.fillRect(x,y,1,1);}},[tiles,dimensions,backgroundColor,tileColors]);const clearAnimation=index=>{if(timeoutRefs.current[index]){clearTimeout(timeoutRefs.current[index]);delete timeoutRefs.current[index];}if(animationRefs.current[index]){animationRefs.current[index].stop();delete animationRefs.current[index];}};const startResetTimer=index=>{// Don't reset tiles if in drawing mode\nif(props.mode===\"drawing\"){return;}// Clear existing timeout and animation if they exist\nclearAnimation(index);const onComplete=()=>{setTiles(prev=>{const newTiles=[...prev];newTiles[index]=false;return newTiles;});setTileColors(prev=>{const newColors={...prev};delete newColors[index];return newColors;});delete timeoutRefs.current[index];delete animationRefs.current[index];};let shouldAnimate=true;if(typeof transition.duration===\"number\"&&transition.duration<=0){shouldAnimate=false;}if(shouldAnimate){setTileColors(prev=>({...prev,[index]:trailColor}));timeoutRefs.current[index]=window.setTimeout(()=>{const animation=animate(trailColor,backgroundColor,{...transition,onUpdate:latest=>{const color=latest===\"rgba(NaN, NaN, NaN, NaN)\"?trailColor:latest;setTileColors(prev=>({...prev,[index]:color}));},onComplete});animationRefs.current[index]=animation;},delay*1e3);}else{const transitionDelay=transition.delay||0;timeoutRefs.current[index]=window.setTimeout(onComplete,(delay+transitionDelay)*1e3);}};const getPointsOnLine=(x0,y0,x1,y1)=>{const points=[];const dx=Math.abs(x1-x0);const dy=Math.abs(y1-y0);const sx=x0<x1?1:-1;const sy=y0<y1?1:-1;let err=dx-dy;for(let i=0;i<500;i++){points.push(y0*gridRef.current.cols+x0);if(x0===x1&&y0===y1){break;}const e2=2*err;if(e2>-dy){err-=dy;x0+=sx;}if(e2<dx){err+=dx;y0+=sy;}}return points;};const isMouseInBounds=(mouseX,mouseY)=>{return mouseX>=0&&mouseX<=dimensions.width&&mouseY>=0&&mouseY<=dimensions.height;};const onMove=(x,y)=>{if(navigator.maxTouchPoints)return;if(trigger===\"hover\"||trigger===\"click\"&&isMousePressed){const canvas=canvasRef.current;if(!canvas)return;// Get canvas bounding box\nconst rect=canvas.getBoundingClientRect();// Calculate relative position\nconst relativeX=x-rect.left;const relativeY=y-rect.top;// Check if mouse is within bounds using relative point\nif(!isMouseInBounds(relativeX,relativeY)){handleMouseUp();return;}const currentX=Math.floor(relativeX/tileSize);const currentY=Math.floor(relativeY/tileSize);// Ensure currentX and currentY are within grid bounds\nif(currentX<0||currentX>=gridRef.current.cols||currentY<0||currentY>=gridRef.current.rows){return;}if(prevPositionRef.current){const{x:prevX,y:prevY}=prevPositionRef.current;const points=getPointsOnLine(prevX,prevY,currentX,currentY);const validPoints=points.filter(index=>index>=0&&index<tiles.length);setTiles(prev=>{const newTiles=[...prev];for(const index of validPoints){newTiles[index]=true;}return newTiles;});updateHoveredTiles(prev=>new Set([...prev,...validPoints]));setTileColors(prev=>{const newColors={...prev};for(const index of validPoints){newColors[index]=trailColor;}return newColors;});}prevPositionRef.current={x:currentX,y:currentY};// Check which tiles are no longer being hovered\nconst currentIndex=currentY*gridRef.current.cols+currentX;hoveredTilesRef.current.forEach(index=>{if(index!==currentIndex&&!getPointsOnLine(prevPositionRef.current?.x||currentX,prevPositionRef.current?.y||currentY,currentX,currentY).includes(index)){updateHoveredTiles(prev=>{const next=new Set(prev);next.delete(index);return next;});startResetTimer(index);}});}};const handleMouseUp=()=>{if(navigator.maxTouchPoints)return;setIsMousePressed(false);prevPositionRef.current=null;// Only reset tiles if not in drawing mode\nif(props.mode!==\"drawing\"){hoveredTilesRef.current.forEach(index=>{startResetTimer(index);});}updateHoveredTiles(new Set);};// Update mouse event handlers to use global events\nuseEffect(()=>{const handleGlobalMouseMove=e=>{if(navigator.maxTouchPoints)return;const{clientX,clientY}=e;const{innerWidth,innerHeight}=window;let isInside=false;if(clientX>=0&&clientY>=0&&clientX<=innerWidth&&clientY<=innerHeight){isInside=true;}else{isInside=false;}if(isInside){mousePositionRef.current=[e.clientX,e.clientY];onMove(e.clientX,e.clientY);}else{handleMouseLeave();}};const handleGlobalMouseDown=e=>{if(navigator.maxTouchPoints)return;if(trigger===\"click\"){const canvas=canvasRef.current;if(!canvas)return;// Get canvas bounding box\nconst rect=canvas.getBoundingClientRect();// Calculate relative position\nconst relativeX=e.clientX-rect.left;const relativeY=e.clientY-rect.top;if(!isMouseInBounds(relativeX,relativeY))return;setIsMousePressed(true);const x=Math.floor(relativeX/tileSize);const y=Math.floor(relativeY/tileSize);const index=y*gridRef.current.cols+x;if(index>=tiles.length)return;updateHoveredTiles(prev=>new Set(prev).add(index));setTiles(prev=>{const newTiles=[...prev];newTiles[index]=true;return newTiles;});setTileColors(prev=>({...prev,[index]:trailColor}));}};const handleScroll=()=>{if(navigator.maxTouchPoints)return;if(mousePositionRef.current){const[mouseX,mouseY]=mousePositionRef.current;onMove(mouseX,mouseY);}};const handleMouseLeave=e=>{if(navigator.maxTouchPoints)return;if(!e||!isMouseInBounds(e.clientX,e.clientY)){prevPositionRef.current=null;hoveredTilesRef.current.forEach(startResetTimer);updateHoveredTiles(new Set);}};const handleMouseEnter=e=>{if(navigator.maxTouchPoints)return;if(!isMouseInBounds(prevPositionRef.current?.x,prevPositionRef.current?.y)){prevPositionRef.current=null// Reset the previous position on re-enter\n;}};const container=containerRef.current;if(container){container.addEventListener(\"mouseenter\",handleMouseEnter);container.addEventListener(\"mouseleave\",handleMouseLeave);}window.addEventListener(\"mousemove\",handleGlobalMouseMove);window.addEventListener(\"mouseup\",handleMouseUp);window.addEventListener(\"mousedown\",handleGlobalMouseDown);window.addEventListener(\"scroll\",handleScroll);window.addEventListener(\"mouseleave\",handleMouseLeave);return()=>{if(container){container.removeEventListener(\"mouseenter\",handleMouseEnter);container.removeEventListener(\"mouseleave\",handleMouseLeave);}window.removeEventListener(\"mousemove\",handleGlobalMouseMove);window.removeEventListener(\"mouseup\",handleMouseUp);window.removeEventListener(\"mousedown\",handleGlobalMouseDown);window.removeEventListener(\"scroll\",handleScroll);window.removeEventListener(\"mouseleave\",handleMouseLeave);};},[trigger,tileSize,tiles.length,trailColor,isMousePressed]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...props.style,position:\"relative\",overflow:\"hidden\"},children:isCanvas||isOptimizing?/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:0,left:0,width:\"100%\",height:\"100%\",backgroundColor:props.backgroundColor}}):/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"absolute\",top:0,left:0,imageRendering:\"pixelated\"}})});}PixelTrail.displayName=\"Pixel Trail\";addPropertyControls(PixelTrail,{backgroundColor:{type:ControlType.Color,defaultValue:\"#000\",optional:true,title:\"Background\"},trailColor:{type:ControlType.Color,defaultValue:\"#FFF\",optional:true,title:\"Trail\"},tileSize:{type:ControlType.Number,defaultValue:50,min:5,step:1,title:\"Size\"},trigger:{type:ControlType.Enum,defaultValue:\"hover\",options:[\"hover\",\"click\"],optionTitles:[\"Hover\",\"Click\"],displaySegmentedControl:true},mode:{type:ControlType.Enum,defaultValue:\"trail\",options:[\"trail\",\"drawing\"],optionTitles:[\"Trail\",\"Drawing\"],displaySegmentedControl:true},delay:{type:ControlType.Number,defaultValue:1,min:0,step:.1,hidden:props=>props.mode!==\"trail\"},transition:{type:ControlType.Transition,defaultValue:{type:\"spring\",duration:.5,bounce:0},hidden:props=>props.mode!==\"trail\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});const ensureRGBA=color=>{if(!color)return color;if(color.startsWith(\"rgb(\")){return color.replace(\"rgb(\",\"rgba(\").replace(\")\",\", 1)\");}return color;};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PixelTrail\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicWidth\":\"400\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"*\",\"framerIntrinsicHeight\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,Color}from\"framer\";import{useEffect,useState,useRef}from\"react\";import{useColors}from\"https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js\";import{useInView}from\"framer-motion\";const characterSets={standard:\" ..._-:=+abcXW@#\",detailed:\" $@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\\\|()1{}[]?-_+~<>i!lI;:,\\\"^`'.\",binary:\" 01\",hex:\" 0123456789ABCDEF\"};const DEFAULT_FONT={fontFamily:'\"Fragment Mono\", monospace',fontSize:\"12px\",fontStyle:\"normal\",fontWeight:400,letterSpacing:\"0em\",lineHeight:\"1em\"};const PATTERNS={\"1\":0,\"2\":1,\"3\":2};/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 400\n */export default function AnimatedPatternBackground({preview,styleType,font,characterSet,customCharacterSet,invert,color,frequencyA,frequencyB,centerASpeed,centerBSpeed,pattern,easing,scale,backgroundColor,radius,style,interval,pixelSize}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const playing=isCanvas?preview:true;const characterSetValue=characterSet==\"custom\"?customCharacterSet:characterSets[characterSet];const[colorValue,color1Value,color2Value]=useColors(color.color,color.color1,color.color2);const colorInterpolatorRef=useRef(()=>Color.interpolate(new Color(color1Value),new Color(color2Value)));const ref=useRef(null);const canvasRef=useRef(null);const contextRef=useRef(null);const startTimeRef=useRef(0);const timeRef=useRef(0);const previousTimeRef=useRef(-1)// Track if time has changed\n;const animationFrameRef=useRef(null);const resizeObserverRef=useRef(null);const isInView=useInView(ref,{once:false,amount:\"some\"});function getDesignParams(){return{mode:PATTERNS[pattern]??0,frequencyA:frequencyA/100,frequencyB:frequencyB/100,centerASpeed:centerASpeed/50,centerBSpeed:centerBSpeed/50,invert,smoothEasing:createSmoothEaseFunction(mapRange(easing,0,100,-1,1)),characterSet:characterSetValue,scale,colorMode:color.mode,colorThreshold:color.threshold,colorValue,color1Value,color2Value,pixelSize,styleType,font,colorColor:new Color(colorValue),color1Color:new Color(color1Value),color2Color:new Color(color2Value)};}const designParamsRef=useRef(getDesignParams);const[,forceUpdate]=useState({});useEffect(()=>{colorInterpolatorRef.current=Color.interpolate(new Color(color1Value),new Color(color2Value));},[color1Value,color2Value]);// Update design params when props change\nuseEffect(()=>{designParamsRef.current=getDesignParams();// Force a render when customization values change, without changing the time\nif(canvasRef.current&&contextRef.current){renderCanvas(contextRef.current,canvasRef.current,timeRef.current);}},[pattern,frequencyA,frequencyB,centerASpeed,centerBSpeed,invert,easing,characterSetValue,color.mode,color.threshold,colorValue,color1Value,color2Value,scale,font,styleType,pixelSize]);// Initialize canvas\nuseEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;contextRef.current=canvas.getContext(\"2d\",{alpha:true});startTimeRef.current=performance.now();const resizeCanvas=()=>{const pixelRatio=window.devicePixelRatio||1;canvas.width=canvas.clientWidth*pixelRatio;canvas.height=canvas.clientHeight*pixelRatio;// Re-render after resize with current time value\nif(contextRef.current){renderCanvas(contextRef.current,canvas,timeRef.current);}};// Initialize ResizeObserver to detect container size changes\nconst containerElement=ref.current;if(containerElement){resizeObserverRef.current=new ResizeObserver(()=>{resizeCanvas();});resizeObserverRef.current.observe(containerElement);}resizeCanvas();return()=>{if(resizeObserverRef.current){resizeObserverRef.current.disconnect();}};},[]);// Separate rendering function that can be called with a specific time value\nconst renderCanvas=(ctx,canvas,time)=>{const{scale,colorMode,colorThreshold,colorValue,color1Value,color2Value,font,mode,frequencyA,frequencyB,centerASpeed,centerBSpeed,invert,smoothEasing,characterSet,styleType}=designParamsRef.current;const cols=canvas.width;const rows=canvas.height;const pixelRatio=window.devicePixelRatio||1;const canvasAspect=canvas.width/canvas.height;const duotoneThreshold=colorThreshold/100;const colorInterpolator=colorInterpolatorRef.current;// Clear the canvas before drawing new content\nctx.clearRect(0,0,canvas.width,canvas.height);// If pixel mode, use the pixel rendering method\nif(styleType===\"pixel\"){renderPixels(ctx,canvas,time);return;}// Set text rendering properties\nctx.textBaseline=\"top\";ctx.textAlign=\"left\";if(colorMode===\"color\"){ctx.fillStyle=colorValue;}// Parse font size first as we need it for px-to-em conversions\nconst fontSizeValue=parseCssDimension(font.fontSize,parseCssDimension(DEFAULT_FONT.fontSize,12));// Simplified line height calculation\nconst lineHeightValue=calculateRelativeLineHeight(font.lineHeight||DEFAULT_FONT.lineHeight,fontSizeValue);// Use font settings from the font property with DEFAULT_FONT as fallback\nconst fontFamily=font.fontFamily||DEFAULT_FONT.fontFamily;const fontWeight=font.fontWeight||DEFAULT_FONT.fontWeight;const lineHeight=lineHeightValue;const letterSpacing=parseCssDimension(font.letterSpacing,parseCssDimension(DEFAULT_FONT.letterSpacing,0));const fontSize=fontSizeValue*scale*pixelRatio;// Set the font with all properties\nctx.font=`${fontWeight} ${fontSize}px ${fontFamily}`;ctx.imageSmoothingEnabled=false;// Calculate character size with proper spacing using measureFontAspectRatio\nconst aspectRatio=measureFontAspectRatio({fontFamily,fontWeight,fontSize,lineHeight,letterSpacing});const charHeight=fontSize*lineHeightValue;const charWidth=charHeight*aspectRatio;const m=Math.min(cols,rows);const aMod=map(Math.cos(time*frequencyA),-1,1,6,60);const bMod=map(Math.cos(time*frequencyB),-1,1,6,60);// Render ASCII art\nfor(let y=0;y<rows;y+=charHeight){for(let x=0;x<cols;x+=charWidth){const coord=[Math.floor(x),Math.floor(y)];const st=[2*(coord[0]-cols/2)/m,2*(coord[1]-rows/2)/m];st[0]*=canvasAspect;const centerA=mulN(vec2(Math.cos(time*3*centerASpeed),Math.sin(time*7*centerASpeed)),.5);const centerB=mulN(vec2(Math.cos(time*5*centerBSpeed),Math.sin(time*4*centerBSpeed)),.5);const A=mode%2===0?Math.atan2(centerA[1]-st[1],centerA[0]-st[0]):dist(st,centerA);const B=mode===0?Math.atan2(centerB[1]-st[1],centerB[0]-st[0]):dist(st,centerB);const a=Math.cos(A*aMod);const b=Math.cos(B*bMod);let i=smoothEasing((a*b+1)/2);if(invert){i=1-i;}const char=characterSet[Math.floor(i*characterSet.length)];if(colorMode===\"duotone\"){ctx.fillStyle=i<duotoneThreshold?color1Value:color2Value;}else if(colorMode===\"gradient\"){ctx.fillStyle=colorInterpolator(i).toValue();}ctx.fillText(char,coord[0],coord[1]);}}};// New function to render pixels using putImageData\nconst renderPixels=(ctx,canvas,time)=>{const{colorMode,colorThreshold,colorColor,color1Color,color2Color,mode,frequencyA,frequencyB,centerASpeed,centerBSpeed,invert,smoothEasing,pixelSize:designPixelSize}=designParamsRef.current;const pixelRatio=window.devicePixelRatio||1;const actualPixelSize=designPixelSize*pixelRatio;// Calculate the pixel grid dimensions based on the component size and pixel size\nconst gridWidth=Math.ceil(canvas.width/actualPixelSize);const gridHeight=Math.ceil(canvas.height/actualPixelSize);// Create an ImageData object for the pixel grid\nconst imageData=ctx.createImageData(gridWidth,gridHeight);const data=imageData.data;const canvasAspect=gridWidth/gridHeight;const m=Math.min(gridWidth,gridHeight);const aMod=map(Math.cos(time*frequencyA),-1,1,6,60);const bMod=map(Math.cos(time*frequencyB),-1,1,6,60);const duotoneThreshold=colorThreshold/100;const colorInterpolator=colorInterpolatorRef.current;// Fill the pixel data array\nfor(let y=0;y<gridHeight;y++){for(let x=0;x<gridWidth;x++){const index=(y*gridWidth+x)*4;// Calculate normalized coordinates\nconst st=[2*(x-gridWidth/2)/m,2*(y-gridHeight/2)/m];st[0]*=canvasAspect;const centerA=mulN(vec2(Math.cos(time*3*centerASpeed),Math.sin(time*7*centerASpeed)),.5);const centerB=mulN(vec2(Math.cos(time*5*centerBSpeed),Math.sin(time*4*centerBSpeed)),.5);const patternA=mode%2===0?Math.atan2(centerA[1]-st[1],centerA[0]-st[0]):dist(st,centerA);const patternB=mode===0?Math.atan2(centerB[1]-st[1],centerB[0]-st[0]):dist(st,centerB);const cosA=Math.cos(patternA*aMod);const cosB=Math.cos(patternB*bMod);let intensity=smoothEasing((cosA*cosB+1)/2);if(invert){intensity=1-intensity;}// Set pixel color based on color mode\nlet color;let a=intensity;if(colorMode===\"color\"){color=colorColor;a=invert?1-intensity:intensity;}else if(colorMode===\"duotone\"){color=intensity<duotoneThreshold?color1Color:color2Color;a=color.a;}else if(colorMode===\"gradient\"){color=colorInterpolator(intensity);a=color.a;}data[index]=Math.round(color.r);data[index+1]=Math.round(color.g);data[index+2]=Math.round(color.b);data[index+3]=Math.round(a*255);}}// Create a temporary canvas for the pixel grid\nconst tempCanvas=document.createElement(\"canvas\");tempCanvas.width=gridWidth;tempCanvas.height=gridHeight;const tempCtx=tempCanvas.getContext(\"2d\");// Put the image data on the temporary canvas\nif(tempCtx){tempCtx.putImageData(imageData,0,0);// Scale up the temporary canvas to the full size\nctx.imageSmoothingEnabled=false// Keep pixels sharp\n;ctx.drawImage(tempCanvas,0,0,gridWidth,gridHeight,0,0,canvas.width,canvas.height);}};// Main animation loop\nuseEffect(()=>{const canvas=canvasRef.current;const ctx=contextRef.current;if(!canvas||!ctx)return;// Animation frame function that checks if time has changed\nconst animate=()=>{if(previousTimeRef.current!==timeRef.current){renderCanvas(ctx,canvas,timeRef.current);previousTimeRef.current=timeRef.current;}animationFrameRef.current=requestAnimationFrame(animate);};// Interval function that updates the time value\nconst updateTime=()=>{timeRef.current=(performance.now()-startTimeRef.current)*.1*1e-4;};let intervalId;if(isInView){// Start animation frame loop\nanimationFrameRef.current=requestAnimationFrame(animate);// Only set up the interval if playing is true and component is in view\nif(playing){// Update time immediately for first render\nupdateTime();intervalId=setInterval(updateTime,interval*1e3);}}return()=>{if(intervalId!==undefined){clearInterval(intervalId);}if(animationFrameRef.current!==null){cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}};},[interval,playing,isInView]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...style,backgroundColor,borderRadius:radius,overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{...style}})});}AnimatedPatternBackground.displayName=\"Animated Pattern Background\";addPropertyControls(AnimatedPatternBackground,{preview:{type:ControlType.Boolean,defaultValue:true,description:\"Play in editor\"},styleType:{type:ControlType.Enum,defaultValue:\"ascii\",options:[\"ascii\",\"pixel\"],optionTitles:[\"ASCII\",\"Pixel\"],displaySegmentedControl:true,title:\"Style\"},pixelSize:{type:ControlType.Number,defaultValue:20,min:5,step:1,hidden:props=>props.styleType!==\"pixel\"},font:{type:\"font\",defaultFontType:\"monospace\",displayTextAlignment:false,controls:\"extended\",defaultValue:{fontSize:12,lineHeight:1},hidden:props=>props.styleType!==\"ascii\"},characterSet:{type:ControlType.Enum,defaultValue:\"standard\",options:[\"standard\",\"detailed\",\"binary\",\"hex\",\"custom\"],optionTitles:[`Standard (${characterSets.standard})`,`Detailed (${characterSets.detailed})`,`Binary (${characterSets.binary})`,`Hex (${characterSets.hex})`,\"Custom\"],title:\"Characters\",hidden:props=>props.styleType!==\"ascii\"},customCharacterSet:{type:ControlType.String,defaultValue:\"        FramerUniversity\",placeholder:\"Character set\",title:\"Custom\",hidden:props=>props.characterSet!==\"custom\"||props.styleType!==\"ascii\"},scale:{type:ControlType.Number,defaultValue:1,min:.5,max:5,step:.1,hidden:props=>props.styleType!==\"ascii\"},color:{type:ControlType.Object,controls:{mode:{type:ControlType.Enum,options:[\"color\",\"gradient\",\"duotone\"],optionTitles:[\"Color\",\"Gradient\",\"Duotone\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},color:{type:ControlType.Color,defaultValue:\"#FFFFFF\",hidden:props=>props.mode!==\"color\"},color1:{type:ControlType.Color,defaultValue:\"#0059FF\",hidden:props=>props.mode!==\"gradient\"&&props.mode!==\"duotone\"},color2:{type:ControlType.Color,defaultValue:\"#FFFFFF\",hidden:props=>props.mode!==\"gradient\"&&props.mode!==\"duotone\"},threshold:{type:ControlType.Number,defaultValue:50,min:0,max:100,step:1,unit:\"%\",hidden:props=>props.mode!==\"duotone\"}}},pattern:{type:ControlType.Enum,defaultValue:\"1\",options:[\"1\",\"2\",\"3\"],displaySegmentedControl:true},easing:{type:ControlType.Number,defaultValue:50,min:0,max:100,step:1},invert:{type:ControlType.Boolean,defaultValue:false},frequencyA:{type:ControlType.Number,defaultValue:40,min:0,max:100,step:1,title:\"Morph 1\"},frequencyB:{type:ControlType.Number,defaultValue:60,min:0,max:100,step:1,title:\"Morph 2\"},centerASpeed:{type:ControlType.Number,defaultValue:25,min:0,max:100,step:1,title:\"Speed 1\"},centerBSpeed:{type:ControlType.Number,defaultValue:25,min:0,max:100,step:1,title:\"Speed 2\"},interval:{type:ControlType.Number,defaultValue:.1,min:.01,max:10,step:.01,unit:\"s\"},backgroundColor:{type:ControlType.Color,defaultValue:\"#000000\",optional:true,title:\"Background\"},radius:{type:ControlType.BorderRadius,defaultValue:\"0px\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});function vec2(x,y){return[x,y];}function mulN(v,n){return[v[0]*n,v[1]*n];}function dist(a,b){const dx=b[0]-a[0];const dy=b[1]-a[1];return Math.sqrt(dx*dx+dy*dy);}function map(value,start1,stop1,start2,stop2){return(value-start1)/(stop1-start1)*(stop2-start2)+start2;}// 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;}// Helper function to parse CSS dimension values\nconst parseCssDimension=(value,defaultValue)=>{if(!value)return defaultValue;// Extract numeric part from values like \"12px\", \"1.2em\", etc.\nconst match=String(value).match(/^([\\d.]+)([a-z%]*)$/i);if(!match)return defaultValue;const numValue=parseFloat(match[1]);return numValue;};// Extract unit from CSS value\nconst getCssUnit=value=>{if(!value)return\"\";const match=String(value).match(/^([\\d.]+)([a-z%]*)$/i);return match?match[2].toLowerCase():\"\";};// Calculate relative line height (as a multiplier of font size)\nconst calculateRelativeLineHeight=(lineHeight,fontSizeValue)=>{if(!lineHeight)return 1// Default to 1 if no line height provided\n;const unit=getCssUnit(lineHeight);const value=parseCssDimension(lineHeight,1);// Handle different units in one consolidated function\nswitch(unit){case\"%\":return value/100;case\"px\":return value/fontSizeValue;default:return value// For em and unitless values, use as is\n;}};function createSmoothEaseFunction(smoothing){if(smoothing===0){return t=>t;}else{smoothing=Math.max(-1,Math.min(1,smoothing));// Calculate the power based on the smoothing value\nconst power=1+Math.abs(smoothing)*2;if(smoothing>0){return t=>{// Ensure t is between 0 and 1\nt=Math.max(0,Math.min(1,t));return Math.pow(t,power);};}else{return t=>{// Ensure t is between 0 and 1\nt=Math.max(0,Math.min(1,t));return 1-Math.pow(1-t,power);};}}}function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedPatternBackground\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicWidth\":\"600\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"400\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedPatternBackground_Prod.map"],"mappings":"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"}