{"version":3,"file":"InfiniteScroll.BPXJQLPf.mjs","names":["useState","useRef","e","useCallback","useMemo"],"sources":["https:/framerusercontent.com/modules/5Tv8wzZTypLX27Or0rbx/KlkNwQf0GRjn5iGgSImQ/InfiniteScroll.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import React,{useState,useRef,useEffect,useCallback,useMemo}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * @author KrutikMaru\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 300\n * @framerIntrinsicHeight 300\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function InfiniteScroll(props){const{elements=[],gridSize=200,blockGap=16,dragSmoothness=.18,background=\"#F5F5F5\",style={},scrollSpeed=.15}=props;const[isDragging,setIsDragging]=useState(false);const[offset,setOffset]=useState({x:0,y:0});const[targetOffset,setTargetOffset]=useState({x:0,y:0});const[velocity,setVelocity]=useState({x:0,y:0});const[isBlurred,setIsBlurred]=useState(false);const dragStart=useRef({x:0,y:0});const dragOrigin=useRef({x:0,y:0});const lastDragTime=useRef(Date.now());const lastDragPos=useRef({x:0,y:0});const animationFrame=useRef(null);const containerRef=useRef(null);const isClickRef=useRef(true);const clickTargetRef=useRef(null);// Animation loop state\nconst animatingRef=useRef(false);// Smoothly animate offset towards targetOffset\nuseEffect(()=>{let running=true;function animate(){setOffset(prev=>{const dx=targetOffset.x-prev.x;const dy=targetOffset.y-prev.y;const next={x:prev.x+dx*dragSmoothness,y:prev.y+dy*dragSmoothness};if(Math.abs(dx)>.5||Math.abs(dy)>.5){if(running)animationFrame.current=requestAnimationFrame(animate);}else{animatingRef.current=false;return{...targetOffset};}return next;});}if(isDragging||Math.abs(targetOffset.x-offset.x)>.5||Math.abs(targetOffset.y-offset.y)>.5){animatingRef.current=true;animationFrame.current=requestAnimationFrame(animate);}return()=>{running=false;if(animationFrame.current)cancelAnimationFrame(animationFrame.current);};},[targetOffset,dragSmoothness,isDragging,offset]);// Drag logic\nconst onPointerDown=e=>{if(e.button!==0)return;setIsDragging(true);isClickRef.current=true;clickTargetRef.current=e.target;setTargetOffset(offset)// Sync to prevent jump\n;dragStart.current={x:e.clientX,y:e.clientY};dragOrigin.current={...offset};lastDragTime.current=Date.now();lastDragPos.current={x:e.clientX,y:e.clientY};if(containerRef.current)containerRef.current.setPointerCapture(e.pointerId);};const onPointerMove=e=>{if(!isDragging)return;const dx=Math.abs(e.clientX-dragStart.current.x);const dy=Math.abs(e.clientY-dragStart.current.y);// If movement exceeds 5px, it's a drag, not a click\nif(dx>5||dy>5){isClickRef.current=false;}const now=Date.now();setTargetOffset({x:dragOrigin.current.x+(e.clientX-dragStart.current.x),y:dragOrigin.current.y+(e.clientY-dragStart.current.y)});// Calculate velocity\nconst dt=now-lastDragTime.current;if(dt>0){const vX=(e.clientX-lastDragPos.current.x)/dt*1e3;const vY=(e.clientY-lastDragPos.current.y)/dt*1e3;setVelocity({x:vX,y:vY});// Blur if fast\nif(Math.abs(vX)>800||Math.abs(vY)>800){setIsBlurred(true);}else{setIsBlurred(false);}lastDragTime.current=now;lastDragPos.current={x:e.clientX,y:e.clientY};}};const onPointerUp=e=>{if(!isDragging)return;setIsDragging(false);if(containerRef.current)containerRef.current.releasePointerCapture(e.pointerId);// If it's a click, trigger the link\nif(isClickRef.current){const target=clickTargetRef.current;const link=target.closest(\"a\");if(link){link.click()// Programmatically trigger link navigation\n;}isClickRef.current=true;clickTargetRef.current=null;return;}// Drag coasting\nconst maxVelocity=1200// px/s\n;const clampedVX=Math.max(-maxVelocity,Math.min(maxVelocity,velocity.x));const clampedVY=Math.max(-maxVelocity,Math.min(maxVelocity,velocity.y));const coastFactor=.35;setTargetOffset(prev=>({x:prev.x+clampedVX*coastFactor,y:prev.y+clampedVY*coastFactor}));if(isBlurred){setTimeout(()=>setIsBlurred(false),200);}setVelocity({x:0,y:0});};// Dynamically measure container size for responsive grid\nconst[containerSize,setContainerSize]=useState({width:800,height:600});useEffect(()=>{if(!containerRef.current)return;const node=containerRef.current;function updateSize(){const rect=node.getBoundingClientRect();setContainerSize({width:rect.width,height:rect.height});}updateSize();let resizeObserver=null;if(typeof ResizeObserver!==\"undefined\"){resizeObserver=new ResizeObserver(updateSize);resizeObserver.observe(node);}else{window.addEventListener(\"resize\",updateSize);}return()=>{if(resizeObserver)resizeObserver.disconnect();else window.removeEventListener(\"resize\",updateSize);};},[]);const width=containerSize.width;const height=containerSize.height;const cellSize=gridSize+blockGap;const RENDER_BUFFER=4;// Use offset for visible grid\nconst startGridX=Math.floor(-offset.x/cellSize)-RENDER_BUFFER;const startGridY=Math.floor(-offset.y/cellSize)-RENDER_BUFFER;const gridCols=Math.ceil(width/cellSize)+RENDER_BUFFER*2;const gridRows=Math.ceil(height/cellSize)+RENDER_BUFFER*2;// Deterministic random element for each cell\nconst getElement=useCallback((gridX,gridY)=>{if(elements.length===0)return null;const idx=Math.abs((gridX*92821+gridY*12347)%elements.length);return elements[idx];},[elements]);// Render grid cells\nconst cells=useMemo(()=>{const arr=[];for(let row=0;row<gridRows;row++){for(let col=0;col<gridCols;col++){const gridX=startGridX+col;const gridY=startGridY+row;const element=getElement(gridX,gridY);if(!element)continue;arr.push(/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:gridX*cellSize+offset.x,top:gridY*cellSize+offset.y,width:gridSize,height:gridSize,boxSizing:\"border-box\",overflow:\"hidden\",borderRadius:12,background:\"transparent\",boxShadow:\"0 2px 8px rgba(0,0,0,0.04)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",pointerEvents:\"auto\",userDrag:\"none\"},onDragStart:e=>e.preventDefault(),children:/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",pointerEvents:\"auto\",userDrag:\"none\"},children:/*#__PURE__*/React.cloneElement(element,{style:{width:\"100%\",height:\"100%\",pointerEvents:\"auto\",userDrag:\"none\"},draggable:false})})},gridX+\",\"+gridY));}}return arr;},[gridRows,gridCols,startGridX,startGridY,cellSize,gridSize,offset,getElement,isDragging]);// Intro screen if no elements connected\nconst showIntro=elements.length===0;if(showIntro){return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",color:\"#96F\",background:\"rgba(136, 85, 255, 0.1)\",zIndex:10,pointerEvents:\"none\",textAlign:\"center\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:28,marginBottom:14},children:\"😸\"}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:12,fontWeight:600,marginBottom:6},children:\"Infinite Scroll\"}),/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:11,margin:0,opacity:.7,lineHeight:1.5,maxWidth:200,textAlign:\"center\"},children:[\"Connect elements to get started.\",/*#__PURE__*/_jsx(\"br\",{}),/*#__PURE__*/_jsxs(\"span\",{style:{fontWeight:500},children:[\"Component by\",\" \",/*#__PURE__*/_jsx(\"a\",{href:\"https://www.linkedin.com/in/krutik-maru/\",style:{color:\"#96F\",fontWeight:600,textDecoration:\"underline\",pointerEvents:\"auto\"},children:\"Krutik Maru\"})]})]})]});}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\",background:background,touchAction:\"none\",cursor:isDragging?\"grabbing\":\"grab\",userSelect:\"none\",filter:isBlurred?\"blur(6px)\":undefined,transition:isBlurred?\"filter 0.2s\":\"filter 0.4s\"},onPointerDown:onPointerDown,onPointerMove:onPointerMove,onPointerUp:onPointerUp,onWheel:e=>{const maxDelta=120// px per event\n;const dx=Math.max(-maxDelta,Math.min(maxDelta,e.deltaX));const dy=Math.max(-maxDelta,Math.min(maxDelta,e.deltaY));const factor=scrollSpeed;setTargetOffset(prev=>({x:prev.x-dx*factor,y:prev.y-dy*factor}));if(!animatingRef.current){animatingRef.current=true;setOffset(o=>({...o}));}if(Math.abs(dx)>60||Math.abs(dy)>60){setIsBlurred(true);setTimeout(()=>setIsBlurred(false),200);}},tabIndex:0,\"aria-label\":\"Infinite grid plane\",role:\"region\",children:cells});}addPropertyControls(InfiniteScroll,{elements:{type:ControlType.Array,title:\"Elements\",control:{type:ControlType.ComponentInstance},maxCount:50,defaultValue:[]},gridSize:{type:ControlType.Number,title:\"Grid Size\",defaultValue:200,min:60,max:400,step:1,unit:\"px\"},blockGap:{type:ControlType.Number,title:\"Block Gap\",defaultValue:16,min:0,max:64,step:1,unit:\"px\"},dragSmoothness:{type:ControlType.Number,title:\"Drag Smoothness\",defaultValue:.18,min:.05,max:.5,step:.01},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"rgba(255,255,255,0)\"},scrollSpeed:{type:ControlType.Number,title:\"Scroll Speed\",defaultValue:.15,min:.01,max:.5,step:.01,description:\"Component by [Krutik Maru](https://www.linkedin.com/in/krutik-maru/)\\n——————————\\nVersion release 1.0\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"InfiniteScroll\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"300\",\"framerIntrinsicHeight\":\"300\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./InfiniteScroll.map"],"mappings":"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"}