{"version":3,"file":"ElasticFrame.Dkjs41JS.mjs","names":["useId","useState","useRef","Matter","p"],"sources":["https:/framerusercontent.com/modules/q50gRtAafSO03cIJAPvB/yGJqQS3gPy4LKyN0mvCG/ElasticFrame.js"],"sourcesContent":["/* ElasticFrame.tsx (video url priority over upload) */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,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useId,useRef,useState}from\"react\";import{ControlType,addPropertyControls,RenderTarget}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 * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 240\n * @framerDisableUnlink\n */export default function ElasticFrame(props){const{image,videoFile,videoUrl,debug,subdivisions,cursorSize,borderBuffer,renderMode}=props;const isOnFramerCanvas=RenderTarget.hasRestrictions();const breakpoint=useSharedBreakpoint();const instanceId=useId();const clipId=`clip-${instanceId.replace(/[:]/g,\"\")}`;// --- debug (mesh)\nconst[debugMesh,setDebugMesh]=useState({bodies:[],anchors:[],links:[]});const lastDebugTickRef=useRef(0);// --- media\nconst urlSrc=normalizeUrl(videoUrl);const fileSrc=resolveFileSrc(videoFile);// Priority: URL > uploaded file\nconst videoSrc=urlSrc||fileSrc;const imageSrc=image?.src||\"\";const mediaMode=videoSrc?\"video\":imageSrc?\"image\":\"none\";// --- render mode resolution\n// Smart: interactive on desktop, static on tablet/mobile\n// Static: always static\n// Interactive: always interactive (except Framer canvas)\nconst wantsStatic=renderMode===\"static\"||renderMode===\"smart\"&&breakpoint===\"mobile\";const wantsInteractive=renderMode===\"interactive\"||renderMode===\"smart\";// Refs\nconst containerRef=useRef(null);const svgRef=useRef(null);const pathRef=useRef(null);const engineRef=useRef(null);const runnerRef=useRef(null);const runnerActiveRef=useRef(false);const cursorRef=useRef(null);const pointsRef=useRef([]);const animationFrameIdRef=useRef(null);const isInteractingRef=useRef(false);const resizeObserverRef=useRef(null);// ---- sizing\nconst getContainerDims=()=>{if(!containerRef.current)return{width:0,height:0};const r=containerRef.current.getBoundingClientRect();return{width:r.width-borderBuffer*2,height:r.height-borderBuffer*2};};const getPhysicsDims=()=>{const{width,height}=getContainerDims();return{width:width+borderBuffer*2,height:height+borderBuffer*2};};// ---- engine\nconst 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});runnerActiveRef.current=false;};const startRunner=()=>{if(!runnerRef.current||!engineRef.current)return;if(runnerActiveRef.current)return;Matter.Runner.run(runnerRef.current,engineRef.current);runnerActiveRef.current=true;};const stopRunner=()=>{if(!runnerRef.current)return;if(!runnerActiveRef.current)return;Matter.Runner.stop(runnerRef.current);runnerActiveRef.current=false;};const initCursor=()=>{cursorRef.current=Matter.Bodies.circle(0,0,cursorSize,{isStatic:true,collisionFilter:{category:1}});Matter.Composite.add(engineRef.current.world,cursorRef.current);};// ---- points\nclass Point{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\",void 0);this.body=Matter.Bodies.circle(x,y,1,{collisionFilter:{mask:1,category:2},friction:.1,frictionAir:.02});this.anchor=Matter.Bodies.circle(x,y,1,{isStatic:true});}}const createBox=()=>{const{width:W,height:H}=getContainerDims();const X=borderBuffer,Y=borderBuffer;const ptsTop=Math.max(3,Math.ceil(W/subdivisions)+1);const ptsRight=Math.max(3,Math.ceil(H/subdivisions)+1);const ptsBottom=ptsTop;const ptsLeft=ptsRight;const points=[];for(let i=0;i<=ptsTop-1;i++)points.push(new Point(X+i*W/(ptsTop-1),Y));for(let i=1;i<=ptsRight-1;i++)points.push(new Point(X+W,Y+i*H/(ptsRight-1)));for(let i=1;i<=ptsBottom-1;i++)points.push(new Point(X+W-i*W/(ptsBottom-1),Y+H));for(let i=1;i<ptsLeft;i++)points.push(new Point(X,Y+H-i*H/(ptsLeft-1)));for(let i=0;i<points.length;i++){const p=points[i];p.originConstraint=Matter.Constraint.create({bodyA:p.body,bodyB:p.anchor,stiffness:.03,damping:.1,render:{lineWidth:1,strokeStyle:\"rgba(255,255,255,0.25)\"}});const next=i===points.length-1?points[0].body:points[i+1].body;p.neighbourConstraint=Matter.Constraint.create({bodyA:p.body,bodyB:next,stiffness:1,damping:1,render:{lineWidth:1,strokeStyle:\"rgba(255,255,255,0.25)\"}});}Matter.Composite.add(engineRef.current.world,points.map(p=>p.body));Matter.Composite.add(engineRef.current.world,points.map(p=>p.originConstraint));Matter.Composite.add(engineRef.current.world,points.map(p=>p.neighbourConstraint));pointsRef.current=points;};// ---- debug mesh update (throttled)\nconst updateDebugMesh=()=>{if(!debug)return;if(pointsRef.current.length===0)return;const now=performance.now();// ~12 fps\nif(now-lastDebugTickRef.current<80)return;lastDebugTickRef.current=now;const pts=pointsRef.current;const bodies=pts.map(p=>({x:p.body.position.x,y:p.body.position.y}));const anchors=pts.map(p=>({x:p.anchor.position.x,y:p.anchor.position.y}));const links=[];for(let i=0;i<pts.length;i++){const p=pts[i];const next=pts[i===pts.length-1?0:i+1];// body -> anchor\nlinks.push({x1:p.body.position.x,y1:p.body.position.y,x2:p.anchor.position.x,y2:p.anchor.position.y});// body -> next body (loop)\nlinks.push({x1:p.body.position.x,y1:p.body.position.y,x2:next.body.position.x,y2:next.body.position.y});}setDebugMesh({bodies,anchors,links});};// ---- path\nconst 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}));const d=catmullRomClosedPath(pts,.5);pathRef.current.setAttribute(\"d\",d);updateDebugMesh();};// ---- events\nconst onMouseMove=e=>{if(!cursorRef.current||!containerRef.current)return;isInteractingRef.current=true;startRunner();const rect=containerRef.current.getBoundingClientRect();Matter.Body.setPosition(cursorRef.current,{x:e.clientX-rect.left,y:e.clientY-rect.top});if(animationFrameIdRef.current===null)animate();};const onMouseLeave=()=>{isInteractingRef.current=false;if(cursorRef.current)Matter.Body.setPosition(cursorRef.current,{x:-1e4,y:-1e4});startRunner();if(animationFrameIdRef.current===null)animate();};// ---- loop\nconst 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){animationFrameIdRef.current=requestAnimationFrame(animate);}else{animationFrameIdRef.current=null;stopRunner();}};// ---- resize\nconst handleResize=()=>{if(!svgRef.current||!pathRef.current)return;if(engineRef.current){Matter.World.clear(engineRef.current.world,false);pointsRef.current=[];}const{width,height}=getPhysicsDims();svgRef.current.setAttribute(\"width\",String(width));svgRef.current.setAttribute(\"height\",String(height));if(engineRef.current){createBox();initCursor();if(cursorRef.current&&!isInteractingRef.current){Matter.Body.setPosition(cursorRef.current,{x:-1e4,y:-1e4});}}updatePath();if(isInteractingRef.current&&animationFrameIdRef.current===null){startRunner();animate();}};// ---- mount\nuseEffect(()=>{// Skip physics entirely if: no media, static mode, canvas, or breakpoint not ready\nif(mediaMode===\"none\")return;if(!breakpoint)return;if(isOnFramerCanvas)return;if(!wantsInteractive)return;if(wantsStatic)return;const cleanup=()=>{if(animationFrameIdRef.current)cancelAnimationFrame(animationFrameIdRef.current);animationFrameIdRef.current=null;if(runnerRef.current){stopRunner();runnerRef.current=null;}if(engineRef.current){Matter.World.clear(engineRef.current.world,false);Matter.Engine.clear(engineRef.current);engineRef.current=null;}pointsRef.current=[];setDebugMesh({bodies:[],anchors:[],links:[]});};const init=()=>{if(!containerRef.current||!svgRef.current||!pathRef.current)return;const{width,height}=getContainerDims();if(width===0||height===0)return;initEngine();initRunner();createBox();initCursor();if(cursorRef.current){Matter.Body.setPosition(cursorRef.current,{x:-1e4,y:-1e4});}const{width:W,height:H}=getPhysicsDims();svgRef.current.setAttribute(\"width\",String(W));svgRef.current.setAttribute(\"height\",String(H));updatePath();};let t;resizeObserverRef.current=new ResizeObserver(()=>{clearTimeout(t);t=setTimeout(handleResize,120);});if(containerRef.current)resizeObserverRef.current.observe(containerRef.current);cleanup();init();return()=>{clearTimeout(t);resizeObserverRef.current?.disconnect();cleanup();};},[videoSrc,imageSrc,subdivisions,cursorSize,borderBuffer,breakpoint,isOnFramerCanvas,renderMode,wantsStatic,wantsInteractive,mediaMode]);/* ---------- RENDER ---------- */// 0) No media -> placeholder\nif(mediaMode===\"none\"){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",display:\"grid\",placeItems:\"center\",fontSize:12,color:\"#777\",textAlign:\"center\",padding:12},children:\"Add an image or upload a video, or paste a video URL.\"});}// Helper: plain media (no effects)\nconst PlainMedia=()=>{if(mediaMode===\"video\"){const isPreview=isOnFramerCanvas;return /*#__PURE__*/_jsx(\"video\",{draggable:\"false\",src:videoSrc,poster:imageSrc||undefined,autoPlay:!isPreview,loop:!isPreview,muted:true,playsInline:true,controls:false,crossOrigin:\"anonymous\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",objectPosition:\"center\",display:\"block\"}});}return /*#__PURE__*/_jsx(\"img\",{draggable:\"false\",src:imageSrc,alt:image?.alt??\"Image\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\",objectPosition:`${image?.positionX} ${image?.positionY}`}});};// 1) Static render (Render Mode: Static OR Smart on tablet/mobile) -> always plain media\nif(!breakpoint||wantsStatic){return /*#__PURE__*/_jsx(PlainMedia,{});}// 2) Framer canvas -> plain media (avoid physics in canvas)\nif(isOnFramerCanvas){return /*#__PURE__*/_jsx(PlainMedia,{});}// 3) Effects version (interactive)\nconst{width:viewW,height:viewH}=getPhysicsDims();return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"visible\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:containerRef,onMouseMove:onMouseMove,onMouseLeave:onMouseLeave,style:{position:\"absolute\",top:-borderBuffer,left:-borderBuffer,width:`calc(100% + ${borderBuffer*2}px)`,height:`calc(100% + ${borderBuffer*2}px)`,pointerEvents:\"auto\",zIndex:10,overflow:\"visible\"}}),/*#__PURE__*/_jsx(\"svg\",{ref:svgRef,style:{position:\"absolute\",top:-borderBuffer,left:-borderBuffer,width:`calc(100% + ${borderBuffer*2}px)`,height:`calc(100% + ${borderBuffer*2}px)`,pointerEvents:\"none\",overflow:\"visible\"},\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsx(\"clipPath\",{id:clipId,clipPathUnits:\"userSpaceOnUse\",children:/*#__PURE__*/_jsx(\"path\",{ref:pathRef,d:\"\"})})})}),debug&&/*#__PURE__*/_jsxs(\"svg\",{style:{position:\"absolute\",top:-borderBuffer,left:-borderBuffer,width:`calc(100% + ${borderBuffer*2}px)`,height:`calc(100% + ${borderBuffer*2}px)`,pointerEvents:\"none\",overflow:\"visible\",zIndex:9999},viewBox:`0 0 ${viewW} ${viewH}`,\"aria-hidden\":true,children:[debugMesh.links.map((l,i)=>/*#__PURE__*/_jsx(\"line\",{x1:l.x1,y1:l.y1,x2:l.x2,y2:l.y2,stroke:\"rgba(255,0,0,0.35)\",strokeWidth:1,vectorEffect:\"non-scaling-stroke\"},`l-${i}`)),debugMesh.anchors.map((p,i)=>/*#__PURE__*/_jsx(\"circle\",{cx:p.x,cy:p.y,r:2.5,fill:\"rgba(255,0,0,0.9)\"},`a-${i}`)),debugMesh.bodies.map((p,i)=>/*#__PURE__*/_jsx(\"circle\",{cx:p.x,cy:p.y,r:3,fill:\"rgba(255,0,0,0.95)\"},`b-${i}`))]}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:-borderBuffer,left:-borderBuffer,width:`calc(100% + ${borderBuffer*2}px)`,height:`calc(100% + ${borderBuffer*2}px)`,clipPath:`url(#${clipId})`,WebkitClipPath:`url(#${clipId})`,overflow:\"hidden\",pointerEvents:\"none\"},children:mediaMode===\"video\"?/*#__PURE__*/_jsx(\"video\",{src:videoSrc,poster:imageSrc||undefined,autoPlay:!isOnFramerCanvas,loop:!isOnFramerCanvas,muted:true,playsInline:true,controls:false,crossOrigin:\"anonymous\",\"aria-hidden\":\"true\",tabIndex:-1,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",objectPosition:`${image?.positionX} ${image?.positionY}`,display:\"block\"}}):/*#__PURE__*/_jsx(\"img\",{src:imageSrc,alt:image?.alt??\"Image\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\",objectPosition:`${image?.positionX} ${image?.positionY}`}})})]});}ElasticFrame.displayName=\"Component — Elastic Frame\";addPropertyControls(ElasticFrame,{image:{type:ControlType.ResponsiveImage,title:\"Image (poster)\"},videoUrl:{type:ControlType.String,title:\"Video URL\",placeholder:\"https://.../video.mp4\",defaultValue:\"\"},videoFile:{type:ControlType.File,title:\"Video (upload)\",allowedFileTypes:[\"mp4\",\"webm\",\"ogg\",\"mov\"]},subdivisions:{type:ControlType.Number,title:\"Subdivisions\",min:6,max:80,step:1,defaultValue:25,displayStepper:true},cursorSize:{type:ControlType.Number,title:\"Cursor\",min:10,max:140,step:1,defaultValue:50,displayStepper:true},borderBuffer:{type:ControlType.Number,title:\"Border\",min:0,max:200,step:1,defaultValue:60,description:\"Interaction overflow\",displayStepper:true},debug:{type:ControlType.Boolean,title:\"Debug\",defaultValue:false},renderMode:{type:ControlType.Enum,title:\"Render Mode\",options:[\"smart\",\"static\",\"interactive\"],optionTitles:[\"Smart\",\"Static\",\"Interactive\"],defaultValue:\"smart\",description:\"Controls how the component renders across devices. Smart enables interaction on desktop and automatically falls back to a static render on tablet and mobile. Static always disables interaction. Interactive always enables it.\"}});/* ---------- Utils ---------- */// Normalize a potentially empty/whitespace URL\nfunction normalizeUrl(input){const v=(input??\"\").trim();return v.length?v:\"\";}// Robustly resolve file src from Framer File control (string | object | array)\nfunction resolveFileSrc(input){if(!input)return\"\";if(typeof input===\"string\")return input;if(Array.isArray(input)){for(const item of input){const s=resolveFileSrc(item);if(s)return s;}return\"\";}return input.url||input.src||input.file||\"\";}// Catmull-Rom closed path -> SVG cubic path\nfunction catmullRomClosedPath(points,tension=.5){if(points.length<3){const d=\"M \"+points.map((p,i)=>`${i===0?\"\":\"L \"}${p.x} ${p.y}`).join(\" \")+\" Z\";return d;}const pts=[...points];pts.unshift(points[points.length-1]);pts.push(points[0],points[1]);let d=`M ${points[0].x} ${points[0].y}`;for(let i=1;i<pts.length-2;i++){const p0=pts[i-1],p1=pts[i],p2=pts[i+1],p3=pts[i+2];const cp1x=p1.x+(p2.x-p0.x)/6*tension;const cp1y=p1.y+(p2.y-p0.y)/6*tension;const cp2x=p2.x-(p3.x-p1.x)/6*tension;const cp2y=p2.y-(p3.y-p1.y)/6*tension;d+=` C ${cp1x} ${cp1y}, ${cp2x} ${cp2y}, ${p2.x} ${p2.y}`;}d+=\" Z\";return d;}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ElasticFrame\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"400\",\"framerDisableUnlink\":\"\",\"framerIntrinsicHeight\":\"240\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ElasticFrame.map"],"mappings":"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"}