{"version":3,"file":"NormalizeGuideArtwork.D11xzXcp.mjs","names":["useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/y0XpE2OdXyAeukMaFwFY/LMKoG2gIlJ3qyqIQZXxN/NormalizeGuideArtwork.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useRef}from\"react\";const REFERENCE_SRC=\"https://framerusercontent.com/images/qRfVWXpFmC6y1OQbNlabocSpKIY.png\";const ALPHA_THRESHOLD=12;const MAX_SAMPLE_SIZE=256;const alphaBoundsPromiseCache=new Map;function getAlphaBoundsForImage(src){if(typeof window===\"undefined\"||!src){return Promise.resolve(null);}const existing=alphaBoundsPromiseCache.get(src);if(existing)return existing;const promise=new Promise(resolve=>{const image=new Image;image.crossOrigin=\"anonymous\";image.decoding=\"async\";image.onload=()=>{try{const naturalWidth=image.naturalWidth||image.width;const naturalHeight=image.naturalHeight||image.height;if(!naturalWidth||!naturalHeight){resolve(null);return;}const downsampleScale=Math.min(1,MAX_SAMPLE_SIZE/Math.max(naturalWidth,naturalHeight));const sampledWidth=Math.max(1,Math.round(naturalWidth*downsampleScale));const sampledHeight=Math.max(1,Math.round(naturalHeight*downsampleScale));const canvas=document.createElement(\"canvas\");canvas.width=sampledWidth;canvas.height=sampledHeight;const context=canvas.getContext(\"2d\",{willReadFrequently:true});if(!context){resolve(null);return;}context.clearRect(0,0,sampledWidth,sampledHeight);context.drawImage(image,0,0,sampledWidth,sampledHeight);const data=context.getImageData(0,0,sampledWidth,sampledHeight).data;let minX=sampledWidth;let minY=sampledHeight;let maxX=-1;let maxY=-1;for(let y=0;y<sampledHeight;y++){for(let x=0;x<sampledWidth;x++){const alpha=data[(y*sampledWidth+x)*4+3];if(alpha>=ALPHA_THRESHOLD){if(x<minX)minX=x;if(y<minY)minY=y;if(x>maxX)maxX=x;if(y>maxY)maxY=y;}}}if(maxX<minX||maxY<minY){resolve(null);return;}const scaleBackX=naturalWidth/sampledWidth;const scaleBackY=naturalHeight/sampledHeight;const fullMinX=minX*scaleBackX;const fullMinY=minY*scaleBackY;const fullMaxX=(maxX+1)*scaleBackX;const fullMaxY=(maxY+1)*scaleBackY;resolve({width:naturalWidth,height:naturalHeight,minX:fullMinX,minY:fullMinY,maxX:fullMaxX,maxY:fullMaxY,opaqueWidth:Math.max(1,fullMaxX-fullMinX),opaqueHeight:Math.max(1,fullMaxY-fullMinY)});}catch(_error){resolve(null);}};image.onerror=()=>resolve(null);image.src=src;});alphaBoundsPromiseCache.set(src,promise);return promise;}function findImmediateBackgroundImg(root){const candidates=[];const rootRect=root.getBoundingClientRect();for(const child of Array.from(root.children)){const childEl=child;if(childEl.tagName===\"IMG\"){candidates.push(childEl);continue;}for(const grandChild of Array.from(childEl.children)){if(grandChild.tagName===\"IMG\"){candidates.push(grandChild);}}}if(!candidates.length)return null;let best=null;let bestScore=-1;for(const img of candidates){const rect=img.getBoundingClientRect();const overlapWidth=Math.max(0,Math.min(rect.right,rootRect.right)-Math.max(rect.left,rootRect.left));const overlapHeight=Math.max(0,Math.min(rect.bottom,rootRect.bottom)-Math.max(rect.top,rootRect.top));const overlapArea=overlapWidth*overlapHeight;const score=overlapArea;if(score>bestScore){best=img;bestScore=score;}}return best;}function resetImageStyle(img){const original=img.__normalizeGuideArtworkOriginalStyle;if(!original)return;img.style.objectFit=original.objectFit||\"\";img.style.objectPosition=original.objectPosition||\"\";img.style.transform=original.transform||\"\";img.style.transformOrigin=original.transformOrigin||\"\";img.style.willChange=original.willChange||\"\";delete img.__normalizeGuideArtworkOriginalStyle;}function storeOriginalImageStyle(img){if(img.__normalizeGuideArtworkOriginalStyle)return;img.__normalizeGuideArtworkOriginalStyle={objectFit:img.style.objectFit,objectPosition:img.style.objectPosition,transform:img.style.transform,transformOrigin:img.style.transformOrigin,willChange:img.style.willChange};}export function withNormalizedGuideArtwork(Component){return /*#__PURE__*/forwardRef((props,forwardedRef)=>{const rootRef=useRef(null);const activeImgRef=useRef(null);const isMountedRef=useRef(false);const normalizeRunIdRef=useRef(0);const isWritingStylesRef=useRef(false);const setRefs=useCallback(node=>{rootRef.current=node;if(typeof forwardedRef===\"function\"){forwardedRef(node);}else if(forwardedRef&&typeof forwardedRef===\"object\"&&\"current\"in forwardedRef){forwardedRef.current=node;}},[forwardedRef]);const normalize=useCallback(async()=>{if(typeof window===\"undefined\")return;const runId=++normalizeRunIdRef.current;const root=rootRef.current;if(!root)return;const img=findImmediateBackgroundImg(root);if(!img||!img.src)return;if(activeImgRef.current&&activeImgRef.current!==img){resetImageStyle(activeImgRef.current);activeImgRef.current=null;}storeOriginalImageStyle(img);activeImgRef.current=img;const sourceAtStart=img.currentSrc||img.src;const frameWidth=root.clientWidth;const frameHeight=root.clientHeight;if(!frameWidth||!frameHeight)return;const[referenceBounds,sourceBounds]=await Promise.all([getAlphaBoundsForImage(REFERENCE_SRC),getAlphaBoundsForImage(sourceAtStart)]);if(!isMountedRef.current)return;if(runId!==normalizeRunIdRef.current)return;if(activeImgRef.current!==img)return;const latestSource=img.currentSrc||img.src;if(latestSource!==sourceAtStart)return;const writeStyle=(name,value)=>{if(img.style[name]===value)return;isWritingStylesRef.current=true;img.style[name]=value;isWritingStylesRef.current=false;};writeStyle(\"objectFit\",\"contain\");writeStyle(\"objectPosition\",\"center center\");writeStyle(\"transformOrigin\",\"center center\");writeStyle(\"willChange\",\"transform\");if(!referenceBounds||!sourceBounds){writeStyle(\"transform\",\"translate(0px, 0px) scale(1)\");return;}const refContainScale=Math.min(frameWidth/referenceBounds.width,frameHeight/referenceBounds.height);const targetOpaqueHeight=referenceBounds.opaqueHeight*refContainScale;const sourceContainScale=Math.min(frameWidth/sourceBounds.width,frameHeight/sourceBounds.height);const baseOpaqueHeight=sourceBounds.opaqueHeight*sourceContainScale;const baseOpaqueWidth=sourceBounds.opaqueWidth*sourceContainScale;if(baseOpaqueHeight<=0||baseOpaqueWidth<=0){img.style.transform=\"translate(0px, 0px) scale(1)\";return;}const desiredScale=targetOpaqueHeight/baseOpaqueHeight;const maxScaleToFitWidth=frameWidth/baseOpaqueWidth;const maxScaleToFitHeight=frameHeight/baseOpaqueHeight;const safeScale=Math.max(.01,Math.min(desiredScale,maxScaleToFitWidth,maxScaleToFitHeight));const renderedWidth=sourceBounds.width*sourceContainScale;const renderedHeight=sourceBounds.height*sourceContainScale;const renderLeft=(frameWidth-renderedWidth)/2;const renderTop=(frameHeight-renderedHeight)/2;const opaqueCenterX=renderLeft+(sourceBounds.minX+sourceBounds.maxX)/2/sourceBounds.width*renderedWidth;const opaqueCenterY=renderTop+(sourceBounds.minY+sourceBounds.maxY)/2/sourceBounds.height*renderedHeight;const centerOffsetX=opaqueCenterX-frameWidth/2;const centerOffsetY=opaqueCenterY-frameHeight/2;const translateX=-(centerOffsetX*safeScale);const translateY=-(centerOffsetY*safeScale);writeStyle(\"transform\",`translate(${translateX}px, ${translateY}px) scale(${safeScale})`);},[]);useEffect(()=>{if(typeof window===\"undefined\")return;isMountedRef.current=true;let raf=0;const scheduleNormalize=()=>{if(raf)window.cancelAnimationFrame(raf);raf=window.requestAnimationFrame(()=>{void normalize();});};scheduleNormalize();const root=rootRef.current;if(!root){return()=>{if(raf)window.cancelAnimationFrame(raf);};}const resizeObserver=new ResizeObserver(()=>scheduleNormalize());resizeObserver.observe(root);const mutationObserver=new MutationObserver(mutations=>{if(isWritingStylesRef.current)return;const onlySelfStyleMutations=mutations.every(mutation=>{return mutation.type===\"attributes\"&&mutation.attributeName===\"style\"&&mutation.target===activeImgRef.current;});if(onlySelfStyleMutations)return;scheduleNormalize();});mutationObserver.observe(root,{attributes:true,childList:true,subtree:true,attributeFilter:[\"src\",\"srcset\",\"style\",\"class\"]});const onWindowResize=()=>scheduleNormalize();window.addEventListener(\"resize\",onWindowResize);return()=>{isMountedRef.current=false;normalizeRunIdRef.current+=1;if(raf)window.cancelAnimationFrame(raf);window.removeEventListener(\"resize\",onWindowResize);resizeObserver.disconnect();mutationObserver.disconnect();if(activeImgRef.current){resetImageStyle(activeImgRef.current);}};},[normalize]);return /*#__PURE__*/_jsx(Component,{ref:setRefs,...props});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withNormalizedGuideArtwork\":{\"type\":\"reactHoc\",\"name\":\"withNormalizedGuideArtwork\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NormalizeGuideArtwork.map"],"mappings":"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"}