{"version":3,"file":"CtaImageTicker.BlIt2bMS.mjs","names":["React.useRef","React.useState","React.useEffect","React.useLayoutEffect","__esmMin","le","init_ssg_sandbox_shims","window","_e","p","ce","init_npm_react_18_3_1","de","addPropertyControls","init_framer_CaDWdxiz","RenderTarget","useIsStaticRenderer","ControlType","loadThree","threePromise","module","clamp","min","max","value","smoothstep","t","edge0","edge1","wrap01","getImageSrc","image","tileLoopCount","n","pairCount","targetSlots","pathLengthPx","sideStepPx","copies","count","MAX_TILE_CARDS","circularDist","d","a","b","spreadCenterT","u","amount","denom","centerSpreadAmount","ratio","neededGapPx","uniformGapPx","peakPairScale","pairs","pair","peakPairTiltDeg","pointerTravelRate","samples","start","i","end","dt","whenIdle","w","resolve","supportsCanvasFilter","canvasFilterSupport","context","roundedRect","r","radius","width","height","x","y","createCardTexture","aspect","canvas","THREE","radiusRatio","imageAspect","drawWidth","drawHeight","drawX","drawY","useFilter","greyscale","fallback","texture","StaticTickerPreview","previewPairs","previewTop","bottomY","arcHeight","offsetY","index","isBefore","explicitBefore","source","includeImages","curveAmount","featuredWeight","scale","focusScale","tangentTilt","cardWidth","cardHeight","cardRadius","CtaImageTicker","props","DEFAULT_PAIRS","speed","spacing","arcWidth","centerDepth","flipDuration","perspective","collisionGap","pauseOnHover","rootRef","canvasRef","visibilityRef","hoverRef","wakeRef","rendererRef","textureCacheRef","imageCacheRef","readyRef","isStatic","isFramerCanvas","size","setSize","webglReady","setWebglReady","webglFailed","setWebglFailed","assetEligible","setAssetEligible","threeReady","setThreeReady","cancelled","idleId","timeoutId","useStableLayoutEffect","root","update","current","rect","observer","entry","prepareObserver","disposed","frameId","lastTime","disposables","decodedImageCache","textureCache","reducedMotion","documentHidden","renderer","error","scene","camera","visibleHeight","visibleWidth","worldPerPixel","responsiveScale","halfSpan","bottomScreenY","risePx","topScreenY","screenYToWorld","screenY","pathPoints","curve","sideScale","peakCenterScale","tiltRad","sideWidth","peakWidth","peakHeight","loop","uniformArcStepPx","neededCenterPx","spreadAmount","centerFactor","centerSpacingT","featuredIndex","flipWindow","staticAnchor","flipStart","flipEnd","autoplayRate","cards","clock","render","focusScaleDelta","featuredSigma","invFeaturedSigmaSq","rotXScale","updateCards","card","point","tangent","flipProgress","outgoingOpacity","dist","sinPiT","neighborBand","tick","time","pauseForHover","blend","wake","onDocumentVisibilityChange","getDecodedImage","cached","pending","oldestKey","detachPointer","onPointerMove","endPointer","onPointerDown","event","now","adx","ady","dx","wasDragging","setup","widthPx","heightPx","geometry","getCardTexture","key","sources","afterSource","beforeSource","resolvedAssets","beforeImage","afterImage","beforeTexture","afterTexture","asset","beforeMaterial","afterMaterial","beforeMesh","afterMesh","group","resource","init_CtaImageTicker","init_jsx_runtime"],"sources":["https:/framerusercontent.com/modules/6TKJGqWAC5EtfvDDmq9r/2amc4VBztRGu7exvJWy3/CtaImageTicker.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";// three.js is loaded on demand (browser idle time, or when the ticker nears the viewport)\n// so it stays off the initial page load. Pinned browser ESM keeps the component self-contained.\nlet THREE=null;let threePromise=null;function loadThree(){if(!threePromise){// @ts-ignore Remote ESM module has no local type declarations.\nthreePromise=import(\"https://esm.sh/three@0.180.0\").then(module=>{THREE=module;return module;});threePromise.catch(()=>{threePromise=null;});}return threePromise;}// User request: implement conservative performance optimizations while preserving visual appearance, timing, path geometry, flip behavior, collisions, property controls/defaults, hover behavior, canvas/SSR, and responsiveness.\nconst useStableLayoutEffect=typeof window===\"undefined\"?React.useEffect:React.useLayoutEffect;const DEFAULT_PAIRS=[{beforeImage:\"https://framerusercontent.com/images/NcDZn13KP2A5xjNdqcT2AaMs5Zk.jpg\",afterImage:\"https://framerusercontent.com/images/2f8BJ9NnM7QtHfmnhKpnLW0K24.png\",alt:\"Portrait before and after editing\",rotation:-7,scale:92},{afterImage:\"https://framerusercontent.com/images/614XVaNWTbwCVEtO68Prsln9FKA.png\",alt:\"Landscape before and after editing\",rotation:5,scale:84},{afterImage:\"https://framerusercontent.com/images/LBmxlSxIkiQbnmMPfU1tnS72qDE.png\",alt:\"Editorial photograph before and after editing\",rotation:-4,scale:112},{afterImage:\"https://framerusercontent.com/images/vUPsVDdmvmh3zzYMMYCIS4hfxeo.png\",alt:\"Interior before and after editing\",rotation:6,scale:90},{afterImage:\"https://framerusercontent.com/images/9rxrLcXfkMPrmPDeyHGKNNkV7Y.png\",alt:\"Gallery before and after editing\",rotation:-3,scale:82}];const MAX_TILE_CARDS=24;function clamp(value,min,max){return Math.max(min,Math.min(max,value));}function smoothstep(edge0,edge1,value){const t=clamp((value-edge0)/Math.max(1e-4,edge1-edge0),0,1);return t*t*(3-2*t);}function wrap01(value){return(value%1+1)%1;}function getImageSrc(image){if(!image)return\"\";if(typeof image===\"string\")return image.trim();return image.src?.trim()??\"\";}function tileLoopCount(pairCount,pathLengthPx,sideStepPx){const n=Math.max(1,pairCount);const step=Math.max(1,sideStepPx);const targetSlots=Math.ceil(pathLengthPx/step);const copies=Math.max(1,Math.ceil(targetSlots/n));const count=Math.min(MAX_TILE_CARDS,copies*n);return{count,copies,spacingT:1/count};}function circularDist(a,b){const d=Math.abs(wrap01(a)-wrap01(b));return Math.min(d,1-d);}function spreadCenterT(u,amount){const t=wrap01(u);if(amount<=0)return t;const denom=1+amount/2;return(t+amount*(t/2-Math.sin(2*Math.PI*t)/(4*Math.PI)))/denom;}function centerSpreadAmount(uniformGapPx,neededGapPx){const ratio=neededGapPx/Math.max(1,uniformGapPx);if(ratio<=1)return 0;if(ratio>=1.92)return 6;return clamp(2*(ratio-1)/(2-ratio),0,6);}function peakPairScale(pairs){return pairs.reduce((max,pair)=>Math.max(max,clamp(pair.scale??100,55,140)/100),1);}function peakPairTiltDeg(pairs){return pairs.reduce((max,pair)=>Math.max(max,Math.abs(pair.rotation??0)),0);}function pointerTravelRate(samples,now,pathLengthPx){if(samples.length<2)return 0;const windowMs=100;let start=samples[0];for(let i=samples.length-1;i>=0;i-=1){start=samples[i];if(now-samples[i].t>=windowMs)break;}const end=samples[samples.length-1];const dt=(end.t-start.t)/1e3;if(dt<.016)return 0;return(end.x-start.x)/dt/Math.max(1,pathLengthPx);}// Resolves in a browser idle slice so heavy setup work never lands in a scroll frame.\nfunction whenIdle(){return new Promise(resolve=>{const w=window;if(typeof w.requestIdleCallback===\"function\"){w.requestIdleCallback(()=>resolve(),{timeout:150});}else{setTimeout(resolve,16);}});}let canvasFilterSupport=null;function supportsCanvasFilter(){if(canvasFilterSupport===null){try{const context=document.createElement(\"canvas\").getContext(\"2d\");if(context)context.filter=\"grayscale(1)\";canvasFilterSupport=!!context&&context.filter===\"grayscale(1)\";}catch{canvasFilterSupport=false;}}return canvasFilterSupport;}function roundedRect(context,x,y,width,height,radius){const r=Math.min(radius,width/2,height/2);context.beginPath();context.moveTo(x+r,y);context.arcTo(x+width,y,x+width,y+height,r);context.arcTo(x+width,y+height,x,y+height,r);context.arcTo(x,y+height,x,y,r);context.arcTo(x,y,x+width,y,r);context.closePath();}async function createCardTexture(image,aspect,radiusRatio,greyscale){const width=512;const height=Math.max(256,Math.round(width/Math.max(.5,aspect)));const canvas=document.createElement(\"canvas\");canvas.width=width;canvas.height=height;// willReadFrequently keeps the canvas in CPU memory, so uploading it to WebGL\n// doesn't force a synchronous GPU readback (a common source of scroll jank).\nconst context=canvas.getContext(\"2d\",{willReadFrequently:true});if(!context)return new THREE.CanvasTexture(canvas);context.clearRect(0,0,width,height);roundedRect(context,3,3,width-6,height-6,width*radiusRatio);context.save();context.clip();context.fillStyle=\"#242424\";context.fillRect(0,0,width,height);if(image){const imageAspect=image.naturalWidth/Math.max(1,image.naturalHeight);let drawWidth=width;let drawHeight=height;let drawX=0;let drawY=0;if(imageAspect>aspect){drawWidth=height*imageAspect;drawX=(width-drawWidth)/2;}else{drawHeight=width/Math.max(.01,imageAspect);drawY=(height-drawHeight)/2;}const useFilter=greyscale&&supportsCanvasFilter();if(useFilter){context.filter=\"grayscale(1)\";}context.drawImage(image,drawX,drawY,drawWidth,drawHeight);context.filter=\"none\";if(greyscale&&!useFilter){// Older Safari: desaturate with a blend mode instead of ctx.filter.\ncontext.globalCompositeOperation=\"saturation\";context.fillStyle=\"#808080\";context.fillRect(0,0,width,height);context.globalCompositeOperation=\"source-over\";}}else{const fallback=context.createLinearGradient(0,0,width,height);fallback.addColorStop(0,\"#343434\");fallback.addColorStop(1,\"#161616\");context.fillStyle=fallback;context.fillRect(0,0,width,height);}context.restore();roundedRect(context,3,3,width-6,height-6,width*radiusRatio);context.strokeStyle=\"rgba(255,255,255,.94)\";context.lineWidth=5;context.stroke();const texture=new THREE.CanvasTexture(canvas);texture.colorSpace=THREE.SRGBColorSpace;texture.minFilter=THREE.LinearFilter;texture.magFilter=THREE.LinearFilter;texture.generateMipmaps=false;texture.needsUpdate=true;return texture;}function StaticTickerPreview({pairs,cardWidth,cardHeight,cardRadius,arcHeight,bottomY,offsetY,focusScale,includeImages}){const previewPairs=pairs.slice(0,Math.min(7,pairs.length));const previewTop=bottomY-arcHeight;return /*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,overflow:\"hidden\",perspective:1e3,pointerEvents:\"none\",transform:offsetY?`translateY(${offsetY}px)`:undefined},children:previewPairs.map((pair,index)=>{const count=Math.max(1,previewPairs.length-1);const uniformT=previewPairs.length===1?.5:index/count;const t=spreadCenterT(uniformT,1.35);const isBefore=t<.5;const explicitBefore=getImageSrc(pair.beforeImage);const source=isBefore?explicitBefore||getImageSrc(pair.afterImage):getImageSrc(pair.afterImage);if(includeImages&&!source)return null;const curveAmount=Math.pow(Math.sin(Math.PI*t),1.5);const y=previewTop+arcHeight*curveAmount;const x=-4+t*108;const featuredWeight=Math.exp(-.5*(circularDist(t,.5)/.08)**2);const itemScale=clamp(pair.scale??100,55,140)/100;const scale=itemScale*(1+(focusScale-1)*featuredWeight)*(1-.14*(1-featuredWeight)*Math.pow(Math.sin(Math.PI*t),2));const tangentTilt=(.5-t)*22;return /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:`${x}%`,top:`${y}%`,width:`min(${cardWidth}px, 28%)`,aspectRatio:`${cardWidth} / ${cardHeight}`,transform:`translate3d(-50%, -50%, 0) rotate(${(pair.rotation??0)+tangentTilt}deg) scale(${scale})`,transformOrigin:\"50% 50%\",opacity:1,borderRadius:cardRadius,border:\"2px solid rgba(255,255,255,.92)\",overflow:\"hidden\",backgroundColor:\"#242424\"},children:includeImages&&source?/*#__PURE__*/_jsx(\"img\",{src:source,alt:\"\",loading:\"lazy\",decoding:\"async\",draggable:false,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",objectPosition:\"center\",display:\"block\",filter:isBefore?\"grayscale(1)\":\"none\"}}):/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",background:\"linear-gradient(135deg, rgba(61,61,61,0.9) 0%, rgba(31,31,31,0.95) 100%)\"}})},index);})});}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function CtaImageTicker(props){const suppliedPairs=(props.pairs?.length?props.pairs:DEFAULT_PAIRS).slice(0,12);const pairs=suppliedPairs.map((pair,index)=>{const fallback=DEFAULT_PAIRS[index%DEFAULT_PAIRS.length];return{...fallback,...pair,afterImage:getImageSrc(pair.afterImage)?pair.afterImage:fallback.afterImage,alt:pair.alt?.trim()?pair.alt:fallback.alt};});const speed=clamp(props.speed??48,8,160);const spacing=clamp(props.spacing??62,0,180);const cardWidth=clamp(props.cardWidth??220,100,380);const cardHeight=clamp(props.cardHeight??176,90,320);const cardRadius=clamp(props.cardRadius??30,0,90);const arcWidth=clamp(props.arcWidth??132,80,180);const arcHeight=clamp(props.arcHeight??70,35,110);const bottomY=clamp(props.bottomY??86,55,105);const offsetY=clamp(props.offsetY??0,-400,400);const centerDepth=clamp(props.centerDepth??72,0,180)/100;const flipDuration=clamp(props.flipDuration??16,6,32)/100;const perspective=clamp(props.perspective??38,22,70);const focusScale=clamp(props.focusScale??118,100,155)/100;const collisionGap=clamp(props.collisionGap??12,0,48);const pauseOnHover=props.pauseOnHover??false;const rootRef=React.useRef(null);const canvasRef=React.useRef(null);const visibilityRef=React.useRef(false);const hoverRef=React.useRef(false);const wakeRef=React.useRef(()=>undefined);// Renderer, uploaded textures and decoded images survive rebuilds (resize, prop changes)\n// so a rebuild only recreates lightweight scene objects. Released on unmount.\nconst rendererRef=React.useRef(null);const textureCacheRef=React.useRef(new Map);const imageCacheRef=React.useRef(new Map);const readyRef=React.useRef(false);const isStatic=useIsStaticRenderer();const isFramerCanvas=RenderTarget.current()===RenderTarget.canvas;const[size,setSize]=React.useState(null);const[webglReady,setWebglReady]=React.useState(false);const[webglFailed,setWebglFailed]=React.useState(false);const[assetEligible,setAssetEligible]=React.useState(()=>isStatic||isFramerCanvas);const[threeReady,setThreeReady]=React.useState(()=>THREE!==null);React.useEffect(()=>{if(isFramerCanvas||threeReady||typeof window===\"undefined\")return;let cancelled=false;let idleId;let timeoutId;const start=()=>{loadThree().then(()=>{if(!cancelled)setThreeReady(true);},()=>{if(!cancelled)setWebglFailed(true);});};if(assetEligible)start();else if(typeof window.requestIdleCallback===\"function\"){idleId=window.requestIdleCallback(start,{timeout:4e3});}else timeoutId=window.setTimeout(start,2500);return()=>{cancelled=true;if(idleId!==undefined)window.cancelIdleCallback?.(idleId);if(timeoutId!==undefined)window.clearTimeout(timeoutId);};},[assetEligible,isFramerCanvas,threeReady]);useStableLayoutEffect(()=>{const root=rootRef.current;if(!root)return;const update=(width,height)=>{if(width<=0||height<=0)return;setSize(current=>{if(current&&Math.abs(current.width-width)<.5&&Math.abs(current.height-height)<.5)return current;return{width,height};});};const rect=root.getBoundingClientRect();update(rect.width,rect.height);if(typeof ResizeObserver===\"undefined\")return;const observer=new ResizeObserver(([entry])=>update(entry.contentRect.width,entry.contentRect.height));observer.observe(root);return()=>observer.disconnect();},[]);React.useEffect(()=>{const root=rootRef.current;if(isStatic||isFramerCanvas||!root||typeof IntersectionObserver===\"undefined\"){visibilityRef.current=true;setAssetEligible(true);wakeRef.current();return;}const observer=new IntersectionObserver(([entry])=>{visibilityRef.current=entry?.isIntersecting??true;if(visibilityRef.current){setAssetEligible(current=>current||true);wakeRef.current();}},{rootMargin:\"200px 0px\"});// Start preparing well before the ticker scrolls into view, so its setup\n// (spread over idle time) is finished by the time it's visible.\nconst prepareObserver=new IntersectionObserver(([entry])=>{if(entry?.isIntersecting)setAssetEligible(current=>current||true);},{rootMargin:\"1200px 0px\"});observer.observe(root);prepareObserver.observe(root);return()=>{observer.disconnect();prepareObserver.disconnect();};},[isFramerCanvas,isStatic]);React.useEffect(()=>{if(isFramerCanvas||!assetEligible||!threeReady||!size||!canvasRef.current||typeof window===\"undefined\")return;if(!readyRef.current)setWebglReady(false);setWebglFailed(false);if(isStatic)visibilityRef.current=true;let disposed=false;let frameId=null;let lastTime=performance.now();const disposables=[];const MAX_DECODED_IMAGE_CACHE=32;const decodedImageCache=imageCacheRef.current;const textureCache=textureCacheRef.current;const reducedMotion=window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;let documentHidden=typeof document!==\"undefined\"?document.hidden:false;let renderer=rendererRef.current;if(!renderer){try{// \"default\" avoids forcing a GPU switch on dual-GPU laptops (a visible hitch).\nrenderer=new THREE.WebGLRenderer({canvas:canvasRef.current,alpha:true,antialias:true,powerPreference:\"default\",premultipliedAlpha:true});}catch(error){console.warn(\"[CTA sequence] WebGL unavailable; using static fallback\",error);setWebglFailed(true);return;}rendererRef.current=renderer;}renderer.setPixelRatio(Math.min(window.devicePixelRatio||1,1.5));renderer.setSize(size.width,size.height,false);renderer.setClearColor(0,0);renderer.outputColorSpace=THREE.SRGBColorSpace;const scene=new THREE.Scene;const cameraZ=12;const camera=new THREE.PerspectiveCamera(perspective,size.width/size.height,.1,100);camera.position.set(0,0,cameraZ);camera.lookAt(0,0,0);const visibleHeight=2*Math.tan(THREE.MathUtils.degToRad(camera.fov/2))*cameraZ;const visibleWidth=visibleHeight*camera.aspect;const worldPerPixel=visibleWidth/size.width;const responsiveScale=clamp(size.width/900,.64,1);const halfSpan=visibleWidth*arcWidth/200;const bottomScreenY=size.height*bottomY/100+offsetY;const risePx=size.height*arcHeight/100;const topScreenY=bottomScreenY-risePx;const screenYToWorld=screenY=>-(screenY/size.height-.5)*visibleHeight;const pathPoints=[new THREE.Vector3(-halfSpan,screenYToWorld(topScreenY),-.28),new THREE.Vector3(-halfSpan*.72,screenYToWorld(topScreenY+risePx*.13),-.16),new THREE.Vector3(-halfSpan*.39,screenYToWorld(topScreenY+risePx*.53),centerDepth*.28),new THREE.Vector3(-halfSpan*.14,screenYToWorld(topScreenY+risePx*.9),centerDepth*.82),new THREE.Vector3(0,screenYToWorld(bottomScreenY),centerDepth),new THREE.Vector3(halfSpan*.14,screenYToWorld(topScreenY+risePx*.9),centerDepth*.82),new THREE.Vector3(halfSpan*.39,screenYToWorld(topScreenY+risePx*.53),centerDepth*.28),new THREE.Vector3(halfSpan*.72,screenYToWorld(topScreenY+risePx*.13),-.16),new THREE.Vector3(halfSpan,screenYToWorld(topScreenY),-.28)];const curve=new THREE.CatmullRomCurve3(pathPoints,false,\"catmullrom\",.16);const pathLengthWorld=curve.getLength();const pathLengthPx=pathLengthWorld/Math.max(1e-4,worldPerPixel);const sideScale=peakPairScale(pairs);const peakCenterScale=sideScale*focusScale;const tiltRad=THREE.MathUtils.degToRad(peakPairTiltDeg(pairs)+10);const sideWidth=cardWidth*responsiveScale*sideScale;const peakWidth=cardWidth*responsiveScale*peakCenterScale;const peakHeight=cardHeight*responsiveScale*peakCenterScale;// Spacing control = gap between card edges on straight sections; not full slot size.\nconst sideStepPx=sideWidth+spacing;const loop=tileLoopCount(pairs.length,pathLengthPx,sideStepPx);const uniformArcStepPx=pathLengthPx*loop.spacingT;const neededCenterPx=peakWidth*Math.cos(tiltRad)+peakHeight*Math.sin(tiltRad)+collisionGap;const spreadAmount=centerSpreadAmount(Math.max(uniformArcStepPx,sideStepPx*.75),neededCenterPx);const centerFactor=(1+spreadAmount)/(1+spreadAmount/2);const centerSpacingT=loop.spacingT*centerFactor;const featuredIndex=Math.min(2,Math.max(0,pairs.length-1));const flipWindow=Math.min(flipDuration,centerSpacingT*.7);const staticAnchor=.5+flipWindow*.62;const flipStart=.5-flipWindow/2;const flipEnd=.5+flipWindow/2;const autoplayRate=reducedMotion?0:speed/Math.max(1,pathLengthPx);const cards=[];const clock={travel:0,rate:autoplayRate,dragging:false,armed:false,pointerId:-1,startX:0,startY:0,lastX:0,samples:[]};const render=()=>renderer.render(scene,camera);const focusScaleDelta=focusScale-1;const featuredSigma=Math.max(.034,centerSpacingT*.38);const invFeaturedSigmaSq=1/(featuredSigma*featuredSigma);const rotXScale=THREE.MathUtils.degToRad(-4);const opacityFadeStart=.94;const updateCards=()=>{for(let index=0;index<cards.length;index+=1){const card=cards[index];const uniformT=wrap01(card.startT+clock.travel);const t=spreadCenterT(uniformT,spreadAmount);const point=curve.getPointAt(t,card.point);const tangent=curve.getTangentAt(t,card.tangent).normalize();const flipProgress=smoothstep(flipStart,flipEnd,t);const outgoingOpacity=1-smoothstep(opacityFadeStart,1,t);const dist=circularDist(t,.5);const featuredWeight=Math.exp(-.5*dist*dist*invFeaturedSigmaSq);const sinPiT=Math.sin(Math.PI*t);const neighborBand=sinPiT*sinPiT;const scale=Math.max(.62,card.itemScale*(1+focusScaleDelta*featuredWeight)*(1-.2*neighborBand*(1-featuredWeight)));card.group.position.copy(point);card.group.rotation.y=Math.PI*flipProgress;card.group.rotation.x=sinPiT*rotXScale;card.group.rotation.z=card.baseRotation+Math.atan2(tangent.y,tangent.x)*.2;card.group.scale.setScalar(scale);if(card.lastAfterOpacity!==outgoingOpacity){card.afterMaterial.opacity=outgoingOpacity;card.lastAfterOpacity=outgoingOpacity;}}};const tick=time=>{frameId=null;if(disposed)return;const dt=Math.min(48,Math.max(0,time-lastTime))/1e3;lastTime=time;const pauseForHover=pauseOnHover&&hoverRef.current&&!clock.dragging;if(!clock.dragging){if(reducedMotion||pauseForHover){clock.rate*=Math.exp(-7*dt);if(Math.abs(clock.rate)<4e-4)clock.rate=0;}else if(!isStatic){const blend=1-Math.exp(-3.2*dt);clock.rate+=(autoplayRate-clock.rate)*blend;}if(clock.rate!==0){clock.travel=wrap01(clock.travel+clock.rate*dt);}}updateCards();render();const keepAlive=!isStatic&&visibilityRef.current&&!documentHidden&&(clock.dragging||Math.abs(clock.rate)>3e-4||!reducedMotion&&!pauseForHover);if(keepAlive)frameId=requestAnimationFrame(tick);};const wake=()=>{if(disposed||frameId!==null)return;if(!isStatic&&documentHidden)return;lastTime=performance.now();frameId=requestAnimationFrame(tick);};wakeRef.current=wake;const root=rootRef.current;const onDocumentVisibilityChange=()=>{if(typeof document===\"undefined\")return;documentHidden=document.hidden;if(documentHidden){if(frameId!==null){cancelAnimationFrame(frameId);frameId=null;}return;}if(!disposed&&!isStatic&&visibilityRef.current){wake();}};if(typeof document!==\"undefined\"){document.addEventListener(\"visibilitychange\",onDocumentVisibilityChange);}const getDecodedImage=source=>{if(!source)return Promise.resolve(null);const cached=decodedImageCache.get(source);if(cached)return cached;const pending=(async()=>{try{const image=new Image;image.crossOrigin=\"anonymous\";image.decoding=\"async\";image.src=source;await image.decode();if(!image.naturalWidth||!image.naturalHeight){decodedImageCache.delete(source);return null;}return image;}catch{decodedImageCache.delete(source);return null;}})();decodedImageCache.set(source,pending);if(decodedImageCache.size>MAX_DECODED_IMAGE_CACHE){const oldestKey=decodedImageCache.keys().next().value;if(typeof oldestKey===\"string\"&&oldestKey!==source){decodedImageCache.delete(oldestKey);}}return pending;};const detachPointer=()=>{window.removeEventListener(\"pointermove\",onPointerMove);window.removeEventListener(\"pointerup\",endPointer);window.removeEventListener(\"pointercancel\",endPointer);};const onPointerDown=event=>{if(isStatic||event.button!==0)return;clock.armed=true;clock.dragging=false;clock.pointerId=event.pointerId;clock.startX=event.clientX;clock.startY=event.clientY;clock.lastX=event.clientX;clock.samples=[{t:performance.now(),x:event.clientX}];window.addEventListener(\"pointermove\",onPointerMove);window.addEventListener(\"pointerup\",endPointer);window.addEventListener(\"pointercancel\",endPointer);};const onPointerMove=event=>{if(clock.pointerId!==-1&&event.pointerId!==clock.pointerId)return;if(!clock.armed&&!clock.dragging)return;const now=performance.now();if(clock.armed&&!clock.dragging){const adx=Math.abs(event.clientX-clock.startX);const ady=Math.abs(event.clientY-clock.startY);if(adx<6&&ady<6)return;if(ady>adx){clock.armed=false;detachPointer();return;}clock.dragging=true;clock.rate=0;clock.lastX=event.clientX;if(root){try{root.setPointerCapture(event.pointerId);}catch{/* ignore */}root.style.cursor=\"grabbing\";}wake();}if(!clock.dragging)return;const dx=event.clientX-clock.lastX;clock.lastX=event.clientX;clock.travel=wrap01(clock.travel+dx/Math.max(1,pathLengthPx));clock.samples.push({t:now,x:event.clientX});if(clock.samples.length>8)clock.samples.shift();};const endPointer=event=>{if(clock.pointerId!==-1&&event.pointerId!==clock.pointerId)return;const wasDragging=clock.dragging;if(wasDragging){clock.rate=pointerTravelRate(clock.samples,performance.now(),pathLengthPx);}clock.armed=false;clock.dragging=false;clock.pointerId=-1;clock.samples=[];if(root){root.style.cursor=\"grab\";try{root.releasePointerCapture(event.pointerId);}catch{/* ignore */}}detachPointer();if(wasDragging)wake();};if(root&&!isStatic){root.addEventListener(\"pointerdown\",onPointerDown);}async function setup(){const widthPx=cardWidth*responsiveScale;const heightPx=cardHeight*responsiveScale;const aspect=widthPx/Math.max(1,heightPx);const radiusRatio=cardRadius/Math.max(1,cardWidth);const geometry=new THREE.PlaneGeometry(widthPx*worldPerPixel,heightPx*worldPerPixel);disposables.push(geometry);// Each texture is drawn and uploaded to the GPU in its own idle slice,\n// instead of all at once during the first rendered frame.\nconst getCardTexture=async(source,image,greyscale)=>{const key=`${source}|${greyscale?1:0}|${aspect.toFixed(4)}|${radiusRatio.toFixed(4)}|${image?1:0}`;const cached=textureCache.get(key);if(cached)return cached;await whenIdle();if(disposed)return null;const texture=await createCardTexture(image,aspect,radiusRatio,greyscale);renderer.initTexture?.(texture);textureCache.set(key,texture);return texture;};const sources=pairs.map(pair=>{const afterSource=getImageSrc(pair.afterImage);const beforeSource=getImageSrc(pair.beforeImage)||afterSource;return{beforeSource,afterSource};});// Kick off every download/decode up front so they run in parallel.\nsources.forEach(({beforeSource,afterSource})=>{getDecodedImage(beforeSource);getDecodedImage(afterSource);});const resolvedAssets=[];for(let index=0;index<pairs.length;index+=1){const pair=pairs[index];const{beforeSource,afterSource}=sources[index];const[beforeImage,afterImage]=await Promise.all([getDecodedImage(beforeSource),getDecodedImage(afterSource)]);if(disposed)return;const beforeTexture=await getCardTexture(beforeSource,beforeImage,true);if(disposed||!beforeTexture)return;const afterTexture=await getCardTexture(afterSource,afterImage,false);if(disposed||!afterTexture)return;resolvedAssets.push({beforeTexture,afterTexture,itemScale:clamp(pair.scale??100,55,140)/100,baseRotation:THREE.MathUtils.degToRad(pair.rotation??0)});}if(disposed)return;if(resolvedAssets.length===0){if(!disposed){setWebglFailed(true);setWebglReady(false);}return;}for(let index=0;index<loop.count;index+=1){const asset=resolvedAssets[index%resolvedAssets.length];const beforeMaterial=new THREE.MeshBasicMaterial({map:asset.beforeTexture,transparent:true,depthTest:true,depthWrite:true,alphaTest:.015,side:THREE.FrontSide});const afterMaterial=new THREE.MeshBasicMaterial({map:asset.afterTexture,transparent:true,depthTest:true,depthWrite:true,alphaTest:.015,side:THREE.FrontSide});const beforeMesh=new THREE.Mesh(geometry,beforeMaterial);const afterMesh=new THREE.Mesh(geometry,afterMaterial);beforeMesh.position.z=.006;afterMesh.position.z=-.006;afterMesh.rotation.y=Math.PI;const group=new THREE.Group;group.rotation.order=\"YXZ\";group.add(beforeMesh,afterMesh);scene.add(group);cards.push({group,beforeMaterial,afterMaterial,startT:wrap01(staticAnchor+(index-featuredIndex)*loop.spacingT),baseRotation:asset.baseRotation,itemScale:asset.itemScale,point:new THREE.Vector3,tangent:new THREE.Vector3,lastAfterOpacity:Number.NaN});disposables.push(beforeMaterial,afterMaterial);}// Compile shaders off the critical path (parallel compile where supported).\nawait whenIdle();if(disposed)return;if(typeof renderer.compileAsync===\"function\"){await renderer.compileAsync(scene,camera);}else{renderer.compile?.(scene,camera);}if(disposed)return;updateCards();render();readyRef.current=true;if(!disposed)setWebglReady(true);wake();}setup().catch(error=>{console.warn(\"[CTA sequence] Unable to initialize scene\",error);if(!disposed){setWebglFailed(true);setWebglReady(false);}});return()=>{disposed=true;wakeRef.current=()=>undefined;if(frameId!==null)cancelAnimationFrame(frameId);if(typeof document!==\"undefined\"){document.removeEventListener(\"visibilitychange\",onDocumentVisibilityChange);}if(root&&!isStatic){root.removeEventListener(\"pointerdown\",onPointerDown);root.style.cursor=\"grab\";}detachPointer();// Geometry/materials only; renderer, textures and images are reused by the next build.\ndisposables.forEach(resource=>resource?.dispose?.());};},[size,assetEligible,threeReady,isFramerCanvas,speed,spacing,cardWidth,cardHeight,cardRadius,arcWidth,arcHeight,bottomY,offsetY,centerDepth,flipDuration,perspective,focusScale,collisionGap,pauseOnHover,isStatic,pairs.map(pair=>[getImageSrc(pair.beforeImage),getImageSrc(pair.afterImage),pair.rotation,pair.scale].join(\"|\")).join(\"~\")]);React.useEffect(()=>()=>{textureCacheRef.current.forEach(texture=>texture?.dispose?.());textureCacheRef.current.clear();imageCacheRef.current.clear();const renderer=rendererRef.current;rendererRef.current=null;readyRef.current=false;if(renderer){renderer.dispose();renderer.forceContextLoss?.();}},[]);return /*#__PURE__*/_jsxs(\"figure\",{ref:rootRef,\"aria-label\":\"Before photographs transform into edited photographs\",onMouseEnter:()=>{hoverRef.current=true;},onMouseLeave:()=>{hoverRef.current=false;wakeRef.current();},style:{position:\"relative\",width:\"100%\",height:\"100%\",minHeight:320,margin:0,overflow:\"hidden\",isolation:\"isolate\",background:\"transparent\",touchAction:\"pan-y\",cursor:isFramerCanvas||isStatic?\"default\":\"grab\",userSelect:\"none\"},children:[isFramerCanvas||webglFailed||!assetEligible?/*#__PURE__*/_jsx(StaticTickerPreview,{pairs:pairs,cardWidth:cardWidth,cardHeight:cardHeight,cardRadius:cardRadius,arcHeight:arcHeight,bottomY:bottomY,offsetY:offsetY,focusScale:focusScale,includeImages:isFramerCanvas||webglFailed}):null,!isFramerCanvas?/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",display:\"block\",opacity:webglReady?1:0,transition:\"opacity 220ms cubic-bezier(0.23, 1, 0.32, 1)\",pointerEvents:\"none\"}}):null,/*#__PURE__*/_jsx(\"figcaption\",{style:{position:\"absolute\",width:1,height:1,overflow:\"hidden\",clip:\"rect(0 0 0 0)\"},children:\"Before photographs flip into their edited results. Drag left or right to move the sequence.\"})]});}addPropertyControls(CtaImageTicker,{pairs:{type:ControlType.Array,title:\"Image Pairs\",maxCount:12,control:{type:ControlType.Object,controls:{beforeImage:{type:ControlType.ResponsiveImage,title:\"Before\"},afterImage:{type:ControlType.ResponsiveImage,title:\"After\"},alt:{type:ControlType.String,title:\"Alt Text\",defaultValue:\"Before and after photograph\"},rotation:{type:ControlType.Number,title:\"Rotation\",min:-18,max:18,step:1,defaultValue:0,unit:\"deg\"},scale:{type:ControlType.Number,title:\"Scale\",min:55,max:140,step:1,defaultValue:100,unit:\"%\"}}},defaultValue:DEFAULT_PAIRS},speed:{type:ControlType.Number,title:\"Speed\",min:8,max:160,step:1,defaultValue:48,unit:\"px/s\"},spacing:{type:ControlType.Number,title:\"Spacing\",min:0,max:180,step:1,defaultValue:62,unit:\"px\",description:\"Gap between card edges along the path (not including card width).\"},cardWidth:{type:ControlType.Number,title:\"Card Width\",min:100,max:380,step:2,defaultValue:220,unit:\"px\"},cardHeight:{type:ControlType.Number,title:\"Card Height\",min:90,max:320,step:2,defaultValue:176,unit:\"px\"},cardRadius:{type:ControlType.Number,title:\"Card Radius\",min:0,max:90,step:1,defaultValue:30,unit:\"px\"},arcWidth:{type:ControlType.Number,title:\"Arc Width\",min:80,max:180,step:2,defaultValue:132,unit:\"%\"},arcHeight:{type:ControlType.Number,title:\"Arc Height\",min:35,max:110,step:1,defaultValue:70,unit:\"%\"},bottomY:{type:ControlType.Number,title:\"Flip Point Y\",min:55,max:105,step:1,defaultValue:86,unit:\"%\"},offsetY:{type:ControlType.Number,title:\"Offset Y\",min:-400,max:400,step:1,defaultValue:0,unit:\"px\",description:\"Shift the path and cards vertically. Negative moves them up so the center card’s bottom edge stays in view.\"},centerDepth:{type:ControlType.Number,title:\"Center Depth\",min:0,max:180,step:2,defaultValue:72,unit:\"%\"},flipDuration:{type:ControlType.Number,title:\"Flip Duration\",min:6,max:32,step:1,defaultValue:16,unit:\"%\"},perspective:{type:ControlType.Number,title:\"Perspective\",min:22,max:70,step:1,defaultValue:38,unit:\"deg\"},focusScale:{type:ControlType.Number,title:\"Center Scale\",min:100,max:155,step:1,defaultValue:118,unit:\"%\"},collisionGap:{type:ControlType.Number,title:\"Collision Gap\",min:0,max:48,step:1,defaultValue:12,unit:\"px\"},pauseOnHover:{type:ControlType.Boolean,title:\"Pause on Hover\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CtaImageTicker\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CtaImageTicker.map"],"mappings":"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"}