{"version":3,"file":"PixelatedImageHover.Cc19707u.mjs","names":["React.useRef","React.useState","inCanvas","_Fragment"],"sources":["https:/framerusercontent.com/modules/1IgWKY1nFvcHAU5p5xw1/rEQi9QCNBhaIEC6qWfOh/PixelatedImageHover.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,motion}from\"framer\";import styled from\"styled-components\";const Container=styled.div`\n  position: relative;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  border-radius: ${props=>props.style?.borderRadius||\"0px\"};\n`;const ImageCanvas=styled(motion.canvas)`\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  pointer-events: none;\n  opacity: 1;\n`;const LoadingContainer=styled.div`\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background-color: transparent;\n  z-index: 2;\n  transition: opacity 0.3s ease, visibility 0.3s ease;\n  opacity: ${props=>props.isLoading?1:0};\n  visibility: ${props=>props.isLoading?\"visible\":\"hidden\"};\n`;// Preload LCP images\nconst useImagePreloader=(imageSrc,srcSet,disableLazyLoad)=>{const[isPreloaded,setIsPreloaded]=React.useState(false);React.useEffect(()=>{if(!imageSrc||!disableLazyLoad){return;}const preloadImage=()=>{// Preload main image\nconst img=new Image;img.crossOrigin=\"anonymous\";img.src=imageSrc;img.onload=()=>{setIsPreloaded(true);};// Preload srcSet images if available\nif(srcSet){const srcSetUrls=srcSet.split(\",\").map(s=>s.trim().split(\" \")[0]);srcSetUrls.forEach(url=>{const srcSetImg=new Image;srcSetImg.crossOrigin=\"anonymous\";srcSetImg.src=url;});}};preloadImage();},[imageSrc,srcSet,disableLazyLoad]);return isPreloaded;};/**\n * @framerDisableUnlink\n */export function PixelatedImageHover(props){const canvasRef=React.useRef(null);const containerRef=React.useRef(null);const imageRef=React.useRef(null);const resizeTimeoutRef=React.useRef(null);const[isSmallScreen,setIsSmallScreen]=React.useState(false);const[isImageLoaded,setIsImageLoaded]=React.useState(false);const[isLoading,setIsLoading]=React.useState(true);const[originalImageLoaded,setOriginalImageLoaded]=React.useState(false);const[isHovering,setIsHovering]=React.useState(false);const[isVisible,setIsVisible]=React.useState(false);const[isPixelated,setIsPixelated]=React.useState(false);// Use our custom preloader hook\nconst isPreloaded=useImagePreloader(props.image?.src,props.image?.srcSet,props.disableLazyLoad);const isInCanvas=()=>{try{return typeof window!==\"undefined\"&&(window.FramerRuntimeState?.type===\"canvas\"||window.top!==window.self);}catch(e){return false;}};React.useEffect(()=>{const observer=new IntersectionObserver(entries=>{const[entry]=entries;setIsVisible(entry.isIntersecting);},{root:null,rootMargin:\"200px\",threshold:.1});if(containerRef.current){observer.observe(containerRef.current);}return()=>{if(containerRef.current){observer.unobserve(containerRef.current);}};},[]);React.useEffect(()=>{const checkScreenSize=()=>{setIsSmallScreen(window.innerWidth<=768);};checkScreenSize();window.addEventListener(\"resize\",checkScreenSize);return()=>{window.removeEventListener(\"resize\",checkScreenSize);};},[]);const applyPixelation=(ctx,img)=>{if(!canvasRef.current||!containerRef.current||isPixelated)return Promise.resolve();const canvas=canvasRef.current;const container=containerRef.current;const containerWidth=container.clientWidth||100;const containerHeight=container.clientHeight||100;canvas.width=containerWidth;canvas.height=containerHeight;return new Promise(resolve=>{ctx.drawImage(img,0,0,containerWidth,containerHeight);if(!props.enableHoverEffect){resolve();return;}const cols=Math.ceil(containerWidth/props.pixelSize);const rows=Math.ceil(containerHeight/props.pixelSize);const actualPixelWidth=containerWidth/cols;const actualPixelHeight=containerHeight/rows;try{const imageData=ctx.getImageData(0,0,containerWidth,containerHeight);const data=imageData.data;let currentRow=0;const processNextBatch=()=>{const endRow=Math.min(currentRow+5,rows);for(let y=currentRow;y<endRow;y++){const yPos=y*actualPixelHeight;for(let x=0;x<cols;x++){const xPos=x*actualPixelWidth;const sampleX=Math.min(Math.floor(xPos+actualPixelWidth/2),containerWidth-1);const sampleY=Math.min(Math.floor(yPos+actualPixelHeight/2),containerHeight-1);const sampleIndex=(sampleY*containerWidth+sampleX)*4;for(let dy=0;dy<actualPixelHeight&&yPos+dy<containerHeight;dy++){for(let dx=0;dx<actualPixelWidth&&xPos+dx<containerWidth;dx++){const pixelX=Math.floor(xPos+dx);const pixelY=Math.floor(yPos+dy);const index=(pixelY*containerWidth+pixelX)*4;if(index+3<data.length){data[index]=data[sampleIndex];data[index+1]=data[sampleIndex+1];data[index+2]=data[sampleIndex+2];data[index+3]=data[sampleIndex+3];}}}}}currentRow=endRow;if(currentRow<rows){setTimeout(()=>{requestAnimationFrame(processNextBatch);},0);}else{ctx.putImageData(imageData,0,0);setIsPixelated(true);resolve();}};processNextBatch();}catch(error){console.warn(\"Error applying pixelation:\",error.message);resolve();}});};React.useEffect(()=>{if(!props.image?.src){setIsLoading(false);return;}setIsLoading(true);setIsImageLoaded(false);setOriginalImageLoaded(false);setIsPixelated(false);const inCanvas=isInCanvas();const img=new Image;img.crossOrigin=\"anonymous\";img.src=inCanvas?`${props.image.src}${props.image.src.includes(\"?\")?\"&\":\"?\"}cacheBust=${Date.now()}`:props.image.src;img.onload=()=>{imageRef.current=img;setOriginalImageLoaded(true);setTimeout(()=>{requestAnimationFrame(async()=>{const ctx=canvasRef.current?.getContext(\"2d\",{willReadFrequently:true});if(ctx){await applyPixelation(ctx,img);setIsImageLoaded(true);setIsLoading(false);}else{setIsLoading(false);}});},100);};img.onerror=()=>{console.warn(\"Error loading image\");setIsLoading(false);};},[props.image?.src]);React.useEffect(()=>{if(!containerRef.current||!imageRef.current)return;const handleResize=async()=>{if(!imageRef.current||!canvasRef.current)return;const ctx=canvasRef.current.getContext(\"2d\",{willReadFrequently:true});if(!ctx)return;setIsLoading(true);try{await applyPixelation(ctx,imageRef.current);}catch(error){console.warn(\"Error during resize:\",error);}finally{setIsLoading(false);}};const resizeObserver=new ResizeObserver(()=>{if(resizeTimeoutRef.current){clearTimeout(resizeTimeoutRef.current);}resizeTimeoutRef.current=setTimeout(handleResize,200);});resizeObserver.observe(containerRef.current);return()=>{if(resizeTimeoutRef.current){clearTimeout(resizeTimeoutRef.current);}resizeObserver.disconnect();};},[props.pixelSize,props.enableHoverEffect,isImageLoaded]);const inCanvas=isInCanvas();const handleTouchStart=()=>{if(isSmallScreen&&props.enableHoverEffect){setIsHovering(true);}};const handleTouchEnd=()=>{if(isSmallScreen&&props.enableHoverEffect){setTimeout(()=>{setIsHovering(false);},500);}};const handleMouseEnter=()=>{if(props.enableHoverEffect){setIsHovering(true);}};const handleMouseLeave=()=>{if(props.enableHoverEffect){setIsHovering(false);}};const containerStyle={borderRadius:`${props.borderRadius}px`};// Add a hidden div for preloading\nconst preloadElement=props.disableLazyLoad&&props.image?.src&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",width:0,height:0,overflow:\"hidden\",visibility:\"hidden\"},\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"img\",{src:props.image.src,alt:\"\",srcSet:props.image.srcSet||\"\",sizes:props.image.sizes||\"(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw\",onLoad:()=>console.log(\"Preload complete\")})});const mainContent=/*#__PURE__*/_jsxs(Container,{ref:containerRef,onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,onTouchStart:handleTouchStart,onTouchEnd:handleTouchEnd,style:containerStyle,children:[preloadElement,props.image?.src&&/*#__PURE__*/_jsxs(_Fragment,{children:[inCanvas&&/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",position:\"absolute\",borderRadius:`${props.borderRadius}px`,backgroundImage:`url(${props.image.src})`,backgroundSize:\"cover\",backgroundPosition:\"center\",backgroundRepeat:\"no-repeat\"}}),!inCanvas&&(isVisible||props.disableLazyLoad)&&/*#__PURE__*/_jsx(\"img\",{alt:props.image.alt||\"\",src:props.image.src,srcSet:props.image.srcSet||\"\",sizes:props.image.sizes||\"(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw\",loading:props.disableLazyLoad?\"eager\":\"lazy\",fetchPriority:props.disableLazyLoad?\"high\":\"low\",decoding:\"async\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",position:\"absolute\",display:\"block\",borderRadius:`${props.borderRadius}px`,objectPosition:\"center center\",opacity:originalImageLoaded?1:0,transition:\"opacity 0.3s ease\"},onLoad:()=>setOriginalImageLoaded(true)}),/*#__PURE__*/_jsx(ImageCanvas,{ref:canvasRef,initial:{opacity:props.reverseEffect?1:0},animate:{opacity:props.reverseEffect?isHovering&&props.enableHoverEffect?0:1:isHovering&&props.enableHoverEffect?1:0},transition:props.transition,style:{display:\"block\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(LoadingContainer,{isLoading:isLoading,children:/*#__PURE__*/_jsx(\"img\",{src:\"https://framerusercontent.com/images/JNUgg30rpy6aXXroiU7fB506g.gif\",loading:\"lazy\",alt:\"Loading\",style:{width:\"50px\",height:\"50px\"}})})]})]});// Wrap in link if useLink is enabled and a link is provided\nif(props.useLink&&props.link){return /*#__PURE__*/_jsxs(\"a\",{href:props.link,target:props.newTab?\"_blank\":\"_self\",style:{display:\"block\",width:\"100%\",height:\"100%\",textDecoration:\"none\"},onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,onTouchStart:handleTouchStart,onTouchEnd:handleTouchEnd,\"aria-label\":\"link towards page\",children:[preloadElement,/*#__PURE__*/_jsx(Container,{ref:containerRef,style:containerStyle,children:props.image?.src&&/*#__PURE__*/_jsxs(_Fragment,{children:[inCanvas&&/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",position:\"absolute\",borderRadius:`${props.borderRadius}px`,backgroundImage:`url(${props.image.src})`,backgroundSize:\"cover\",backgroundPosition:\"center\",backgroundRepeat:\"no-repeat\"}}),!inCanvas&&(isVisible||props.disableLazyLoad)&&/*#__PURE__*/_jsx(\"img\",{alt:props.image.alt||\"\",src:props.image.src,srcSet:props.image.srcSet||\"\",sizes:props.image.sizes||\"(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw\",loading:props.disableLazyLoad?\"eager\":\"lazy\",fetchPriority:props.disableLazyLoad?\"high\":\"low\",decoding:\"async\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",position:\"absolute\",display:\"block\",borderRadius:`${props.borderRadius}px`,objectPosition:\"center center\",opacity:originalImageLoaded?1:0,transition:\"opacity 0.3s ease\"},onLoad:()=>setOriginalImageLoaded(true)}),/*#__PURE__*/_jsx(ImageCanvas,{ref:canvasRef,initial:{opacity:props.reverseEffect?1:0},animate:{opacity:props.reverseEffect?isHovering&&props.enableHoverEffect?0:1:isHovering&&props.enableHoverEffect?1:0},transition:props.transition,style:{display:\"block\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(LoadingContainer,{isLoading:isLoading,children:/*#__PURE__*/_jsx(\"img\",{src:\"https://framerusercontent.com/images/JNUgg30rpy6aXXroiU7fB506g.gif\",loading:\"lazy\",alt:\"Loading\",style:{width:\"50px\",height:\"50px\"}})})]})})]});}return mainContent;}addPropertyControls(PixelatedImageHover,{enableHoverEffect:{type:ControlType.Boolean,title:\"Enable Hover Effect\",defaultValue:true},reverseEffect:{type:ControlType.Boolean,title:\"Reverse Effect\",defaultValue:false,hidden:({enableHoverEffect})=>!enableHoverEffect},pixelSize:{type:ControlType.Number,title:\"Pixel Size\",min:40,max:120,step:10,defaultValue:80,displayStepper:true,hidden:({enableHoverEffect})=>!enableHoverEffect},borderRadius:{type:ControlType.Number,title:\"Border Radius\",min:0,max:100,step:1,defaultValue:0,displayStepper:true},disableLazyLoad:{type:ControlType.Boolean,title:\"Disable Lazy Loading\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\"Only enable this for images above the fold (LCP)\"},useLink:{type:ControlType.Boolean,title:\"Use Link\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},link:{type:ControlType.Link,title:\"Link URL\",defaultValue:\"\",hidden:({useLink})=>!useLink},newTab:{type:ControlType.Boolean,title:\"New Tab\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\",hidden:({useLink})=>!useLink},transition:{type:ControlType.Transition,title:\"Transition\",defaultValue:{type:\"spring\",stiffness:800,damping:60}},image:{type:ControlType.ResponsiveImage,title:\"Image\",description:\"Discover more Framer resources at [Pixco](https://pixcodrops.com/resources)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"PixelatedImageHover\":{\"type\":\"reactComponent\",\"name\":\"PixelatedImageHover\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PixelatedImageHover.map"],"mappings":"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"}