{"version":3,"file":"PixelRevealEngine.DnHMQdno.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/f8BgcJWqGsZmjKlhNTk7/Gluj0TEjUEaVY5CJSGqj/PixelRevealEngine.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{motion,useAnimation,useInView}from\"framer-motion\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";function getDelay(r,c,ROWS,COLS,pattern,speed){const maxDist=Math.sqrt((ROWS-1)**2+(COLS-1)**2);let dist=0;switch(pattern){case\"topLeft\":dist=Math.sqrt(r*r+c*c);break;case\"topRight\":dist=Math.sqrt(r*r+(COLS-1-c)**2);break;case\"bottomLeft\":dist=Math.sqrt((ROWS-1-r)**2+c*c);break;case\"bottomRight\":dist=Math.sqrt((ROWS-1-r)**2+(COLS-1-c)**2);break;case\"center\":dist=Math.sqrt((r-ROWS/2)**2+(c-COLS/2)**2);break;case\"random\":dist=Math.random()*maxDist;break;case\"leftToRight\":dist=c;break;case\"rightToLeft\":dist=COLS-1-c;break;case\"topToBottom\":dist=r;break;case\"bottomToTop\":dist=ROWS-1-r;break;default:dist=Math.sqrt(r*r+c*c);}return dist/maxDist*speed;}export default function PixelRevealEngine({pixelColor,fillType,imageUrl,imageFit,cols,rows,animationSpeed,animationPattern,style}){const containerRef=useRef(null);const controls=useAnimation();const hasRun=useRef(false);const isStatic=useIsStaticRenderer();const isInView=useInView(containerRef,{once:true,margin:\"0px 0px -50px 0px\"});useEffect(()=>{if(isStatic)return;if(isInView&&!hasRun.current){hasRun.current=true;controls.set({opacity:0});controls.start(i=>({opacity:1,transition:{delay:i.delay,duration:.03}}));}},[isInView,controls,isStatic]);const isImage=fillType===\"image\"&&imageUrl;const imgSrc=typeof imageUrl===\"string\"?imageUrl:imageUrl?.src;const imgSrcSet=typeof imageUrl===\"string\"?undefined:imageUrl?.srcSet;const imgAlt=typeof imageUrl===\"string\"?\"\":imageUrl?.alt;const cells=[];for(let r=0;r<rows;r++){for(let c=0;c<cols;c++){const delay=getDelay(r,c,rows,cols,animationPattern,animationSpeed);cells.push(/*#__PURE__*/_jsx(motion.div,{custom:{delay},initial:{opacity:isStatic?1:0},animate:isStatic?undefined:controls,style:{position:\"absolute\",left:`${c/cols*100}%`,top:`${r/rows*100}%`,width:`calc(${100/cols}% + 1px)`,height:`calc(${100/rows}% + 1px)`,overflow:\"hidden\",backgroundColor:!isImage?pixelColor:\"transparent\"},children:isImage&&imgSrc&&/*#__PURE__*/_jsx(\"img\",{src:imgSrc,srcSet:imgSrcSet,alt:imgAlt,style:{position:\"absolute\",width:\"100cqw\",height:\"100cqh\",left:`calc(${-(c/cols)*100}cqw)`,top:`calc(${-(r/rows)*100}cqh)`,objectFit:imageFit===\"fill\"?\"fill\":imageFit,objectPosition:\"center\"}})},`${r}-${c}`));}}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{// Base dimensions so it fills parent if no style is passed\nwidth:\"100%\",height:\"100%\",// Spread Framer's style prop last to ensure width/height overrides apply\n...style,zIndex:999,pointerEvents:\"none\",overflow:\"hidden\",containerType:\"size\"},children:cells});}PixelRevealEngine.defaultProps={style:{width:500,height:500}};addPropertyControls(PixelRevealEngine,{fillType:{type:ControlType.Enum,title:\"Fill Type\",defaultValue:\"color\",options:[\"color\",\"image\"],optionTitles:[\"Color\",\"Image\"]},pixelColor:{type:ControlType.Color,title:\"Pixel Color\",defaultValue:\"#FF5C00\",hidden:props=>props.fillType===\"image\"},imageUrl:{type:ControlType.ResponsiveImage,title:\"Pixel Image\",hidden:props=>props.fillType===\"color\"},imageFit:{type:ControlType.Enum,title:\"Image Fit\",defaultValue:\"cover\",options:[\"cover\",\"contain\",\"fill\"],optionTitles:[\"Cover\",\"Contain\",\"Stretch\"],hidden:props=>props.fillType===\"color\"},cols:{type:ControlType.Number,title:\"Columns\",defaultValue:30,min:5,max:80,step:1,displayStepper:true},rows:{type:ControlType.Number,title:\"Rows\",defaultValue:22,min:5,max:60,step:1,displayStepper:true},animationSpeed:{type:ControlType.Number,title:\"Speed (s)\",defaultValue:.8,min:.1,max:3,step:.1,displayStepper:true},animationPattern:{type:ControlType.Enum,title:\"Pattern\",defaultValue:\"topLeft\",options:[\"topLeft\",\"topRight\",\"bottomLeft\",\"bottomRight\",\"center\",\"leftToRight\",\"rightToLeft\",\"topToBottom\",\"bottomToTop\",\"random\"],optionTitles:[\"Top Left\",\"Top Right\",\"Bottom Left\",\"Bottom Right\",\"Center Out\",\"Left to Right\",\"Right to Left\",\"Top to Bottom\",\"Bottom to Top\",\"Random\"]}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PixelRevealEngine\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PixelRevealEngine.map"],"mappings":"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"}