{"version":3,"file":"InteractiveLine.DQ_3i3Ky.mjs","names":["useRef","Matter"],"sources":["https:/framerusercontent.com/modules/OZcOfno6Glt6nSSJeh8i/XmCcH7PHZsTppw8HHfmG/InteractiveLine.js"],"sourcesContent":["function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useId,useRef}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{Matter}from\"https://framerusercontent.com/modules/RSJpycBYqeWLwStQ4ICt/Ql2qB4my3p5dZPWanLxj/MatterBundle.js\";import{useSharedBreakpoint}from\"https://framerusercontent.com/modules/ObKMoF4jKHWke4zPwE5T/l3LiRZ8GpNaP9C1FGcMM/useSharedBreakpoint.js\";/**\n * @framerDisableUnlink\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function InteractiveLine({points=10,cursorSize=35,lineColor=\"#000000\",lineWidth=1,stiffness=.057,damping=.05,orientation=\"horizontal\"}){const id=useId();const containerRef=useRef(null);const interactionRef=useRef(null);const svgRef=useRef(null);const pathRef=useRef(null);const engineRef=useRef(null);const runnerRef=useRef(null);const isRunningRef=useRef(false);const cursorRef=useRef(null);const pointsRef=useRef([]);const rafRef=useRef(null);const isInteractingRef=useRef(false);const rectRef=useRef(null);const breakpoint=useSharedBreakpoint();const isStaticRenderer=useIsStaticRenderer();const isMobile=breakpoint===\"mobile\";class LinePoint{constructor(x,y){_define_property(this,\"body\",void 0);_define_property(this,\"anchor\",void 0);_define_property(this,\"originConstraint\",void 0);_define_property(this,\"neighbourConstraint\",null);this.body=Matter.Bodies.circle(x,y,2,{collisionFilter:{mask:1,category:2},frictionAir:.03});this.anchor=Matter.Bodies.circle(x,y,1,{isStatic:true});}}const initEngine=()=>{engineRef.current=Matter.Engine.create({enableSleeping:false});engineRef.current.gravity.x=0;engineRef.current.gravity.y=0;};const initRunner=()=>{runnerRef.current=Matter.Runner.create({isFixed:true});isRunningRef.current=false;};const startRunner=()=>{if(!runnerRef.current||!engineRef.current)return;if(isRunningRef.current)return;Matter.Runner.run(runnerRef.current,engineRef.current);isRunningRef.current=true;};const stopRunner=()=>{if(!runnerRef.current)return;if(!isRunningRef.current)return;Matter.Runner.stop(runnerRef.current);isRunningRef.current=false;};const initCursor=()=>{cursorRef.current=Matter.Bodies.circle(-1e3,-1e3,cursorSize,{isStatic:true,collisionFilter:{category:1}});Matter.Composite.add(engineRef.current.world,cursorRef.current);};const createLine=()=>{if(!interactionRef.current)return;// Use offsetWidth/offsetHeight - works even when element is outside viewport\nconst width=interactionRef.current.offsetWidth;const height=interactionRef.current.offsetHeight;// Clear cached rect so it gets recalculated on next interaction\nrectRef.current=null;const linePoints=[];const numPoints=Math.max(5,points);for(let i=0;i<numPoints;i++){let x;let y;if(orientation===\"horizontal\"){// Ensure first point is at 0 and last at width\nx=numPoints===1?width/2:i/(numPoints-1)*width;y=height/2;}else{x=width/2;// Ensure first point is at 0 and last at height\ny=numPoints===1?height/2:i/(numPoints-1)*height;}linePoints.push(new LinePoint(x,y));}for(let i=0;i<linePoints.length;i++){const p=linePoints[i];p.originConstraint=Matter.Constraint.create({bodyA:p.body,bodyB:p.anchor,stiffness,damping});if(i<linePoints.length-1){p.neighbourConstraint=Matter.Constraint.create({bodyA:p.body,bodyB:linePoints[i+1].body,stiffness:.8,damping:.5});}}Matter.Composite.add(engineRef.current.world,linePoints.map(p=>p.body));Matter.Composite.add(engineRef.current.world,linePoints.map(p=>p.originConstraint));Matter.Composite.add(engineRef.current.world,linePoints.filter(p=>p.neighbourConstraint).map(p=>p.neighbourConstraint));pointsRef.current=linePoints;};const updatePath=()=>{if(!pathRef.current||pointsRef.current.length===0)return;const pts=pointsRef.current.map(p=>({x:p.body.position.x,y:p.body.position.y}));let d=`M ${pts[0].x} ${pts[0].y}`;for(let i=1;i<pts.length;i++){const curr=pts[i];if(i<pts.length-1){const next=pts[i+1];d+=` Q ${curr.x} ${curr.y}, ${(curr.x+next.x)/2} ${(curr.y+next.y)/2}`;}else{d+=` L ${curr.x} ${curr.y}`;}}pathRef.current.setAttribute(\"d\",d);};const animate=()=>{updatePath();const moving=pointsRef.current.some(p=>{const v=p.body.velocity;const pos=p.body.position;const anc=p.anchor.position;return Math.abs(v.x)>.01||Math.abs(v.y)>.01||Math.abs(pos.x-anc.x)>.1||Math.abs(pos.y-anc.y)>.1;});if(isInteractingRef.current||moving){rafRef.current=requestAnimationFrame(animate);}else{rafRef.current=null;stopRunner();}};const handleResize=()=>{if(!engineRef.current)return;Matter.World.clear(engineRef.current.world,false);pointsRef.current=[];createLine();initCursor();updatePath();if(isInteractingRef.current&&!rafRef.current){startRunner();animate();}};// --- init physics\nuseEffect(()=>{if(typeof window===\"undefined\")return;if(!interactionRef.current)return;if(isStaticRenderer)return;if(!breakpoint)return;if(isMobile)return;const cleanup=()=>{if(rafRef.current)cancelAnimationFrame(rafRef.current);stopRunner();if(engineRef.current){Matter.World.clear(engineRef.current.world,false);Matter.Engine.clear(engineRef.current);}pointsRef.current=[];cursorRef.current=null;isRunningRef.current=false;rafRef.current=null;isInteractingRef.current=false;};const init=()=>{initEngine();initRunner();const waitForLayout=()=>{const el=interactionRef.current;// Use offsetWidth/offsetHeight - works even outside viewport\nif(el.offsetWidth<2||el.offsetHeight<2){requestAnimationFrame(waitForLayout);return;}createLine();initCursor();updatePath();};waitForLayout();};let resizeTimer=null;const resizeObserver=new ResizeObserver(()=>{if(resizeTimer)clearTimeout(resizeTimer);resizeTimer=setTimeout(handleResize,140);});if(containerRef.current)resizeObserver.observe(containerRef.current);// Also listen to window resize for elements that might be outside viewport\nconst onWindowResize=()=>{if(resizeTimer)clearTimeout(resizeTimer);resizeTimer=setTimeout(handleResize,140);};window.addEventListener(\"resize\",onWindowResize);// Invalidate rect cache on scroll so it gets recalculated\nconst onScroll=()=>{rectRef.current=null;};window.addEventListener(\"scroll\",onScroll,{passive:true});cleanup();init();return()=>{resizeObserver.disconnect();window.removeEventListener(\"resize\",onWindowResize);window.removeEventListener(\"scroll\",onScroll);if(resizeTimer)clearTimeout(resizeTimer);cleanup();};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[points,cursorSize,stiffness,damping,orientation,isStaticRenderer,breakpoint,isMobile]);// --- pointer listener (works inside Framer iframe too)\nuseEffect(()=>{if(typeof window===\"undefined\")return;if(isStaticRenderer)return;if(!breakpoint)return;if(isMobile)return;const doc=containerRef.current?.ownerDocument;if(!doc)return;const onMove=e=>{if(!interactionRef.current||!cursorRef.current)return;// Always get fresh rect on first interaction, then cache it\nif(!rectRef.current){rectRef.current=interactionRef.current.getBoundingClientRect();}const rect=rectRef.current;const inside=e.clientX>=rect.left&&e.clientX<=rect.right&&e.clientY>=rect.top&&e.clientY<=rect.bottom;if(!inside){isInteractingRef.current=false;Matter.Body.setPosition(cursorRef.current,{x:-1e3,y:-1e3});if(!rafRef.current){startRunner();animate();}return;}isInteractingRef.current=true;startRunner();Matter.Body.setPosition(cursorRef.current,{x:e.clientX-rect.left,y:e.clientY-rect.top});if(!rafRef.current)animate();};doc.addEventListener(\"pointermove\",onMove,{passive:true});return()=>doc.removeEventListener(\"pointermove\",onMove);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isStaticRenderer,breakpoint,isMobile]);const interactionSize=cursorSize*2+20;// --- static/mobile fallback (no physics, just a simple line)\nif(!breakpoint||isMobile||isStaticRenderer){return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:orientation===\"horizontal\"?\"100%\":\"1px\",height:orientation===\"horizontal\"?\"1px\":\"100%\",backgroundColor:lineColor,position:\"relative\"}});}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:orientation===\"horizontal\"?\"100%\":\"1px\",height:orientation===\"horizontal\"?\"1px\":\"100%\",position:\"relative\",overflow:\"visible\"},children:/*#__PURE__*/_jsx(\"div\",{ref:interactionRef,style:{position:\"absolute\",...orientation===\"horizontal\"?{top:`-${interactionSize/2-.5}px`,left:0,width:\"100%\",height:`${interactionSize}px`}:{left:`-${interactionSize/2-.5}px`,top:0,height:\"100%\",width:`${interactionSize}px`},pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"svg\",{ref:svgRef,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"path\",{ref:pathRef,d:\"\",stroke:lineColor,strokeWidth:lineWidth,fill:\"none\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})})});}InteractiveLine.displayName=\"Component — Interactive Line\";addPropertyControls(InteractiveLine,{points:{type:ControlType.Number,title:\"Points\",defaultValue:10,min:5,max:100,step:1},cursorSize:{type:ControlType.Number,title:\"Cursor Size\",defaultValue:35,min:10,max:200,step:1},lineColor:{type:ControlType.Color,title:\"Line Color\",defaultValue:\"#000000\"},lineWidth:{type:ControlType.Number,title:\"Line Width\",defaultValue:1,min:1,max:10},stiffness:{type:ControlType.Number,title:\"Stiffness\",defaultValue:.07,min:.01,max:1,step:.01},damping:{type:ControlType.Number,title:\"Damping\",defaultValue:.05,min:.01,max:1,step:.01},orientation:{type:ControlType.SegmentedEnum,title:\"Orientation\",options:[\"horizontal\",\"vertical\"],optionTitles:[\"Horizontal\",\"Vertical\"],defaultValue:\"horizontal\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"InteractiveLine\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}