{"version":3,"file":"CursorPath.fpXf1HZX.mjs","names":["React.useRef","React.useState","React.useId","React.useMemo"],"sources":["https:/framerusercontent.com/modules/hfcgjHHveFTY6Ft6LJOG/ILnLgSRwjLEz68vc8ecR/CursorPath.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";function parsePath(path){const out=[];String(path||\"\").split(\";\").map(s=>s.trim()).filter(Boolean).forEach(seg=>{const m=seg.match(/(-?[\\d.]+)\\s*,\\s*(-?[\\d.]+)\\s*@\\s*(-?[\\d.]+)/);if(m)out.push({x:parseFloat(m[1]),y:parseFloat(m[2]),t:parseFloat(m[3])});});return out.sort((a,b)=>a.t-b.t);}function posAt(pts,t){if(!pts.length)return{x:0,y:0};if(t<=pts[0].t)return pts[0];for(let i=1;i<pts.length;i++){if(t<=pts[i].t){const a=pts[i-1];const b=pts[i];const span=b.t-a.t;const k=span<=0?1:(t-a.t)/span;return{x:a.x+(b.x-a.x)*k,y:a.y+(b.y-a.y)*k};}}return pts[pts.length-1];}function reducedMotion(){try{return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;}catch(e){return false;}}function onCanvas(){try{return RenderTarget.current()===RenderTarget.canvas;}catch(e){return false;}}// Library-only hover replay: on /library pages, hovering the card that contains this primitive replays its arrival.\nconst CARD_WIDTHS=[554,1109,369,342,592];function hoverReplay(el,restart){try{if(!el||typeof window===\"undefined\"||!window.location.pathname.startsWith(\"/library\"))return;let node=el;for(let i=0;i<16&&node;i++){const w=Math.round(node.getBoundingClientRect().width);if(CARD_WIDTHS.some(c=>Math.abs(c-w)<=2)){const key=\"__ssHoverReplay\";const list=node[key]=node[key]||[];if(list.length===0)node.addEventListener(\"mouseenter\",()=>list.forEach(f=>f()),{passive:true});list.push(restart);return;}node=node.parentElement;}}catch(e){}}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 240\n * @framerIntrinsicHeight 160\n */export default function CursorPath(props){const{path=\"160,120 @0.6; 46,46 @1.4; 46,46 @1.8; 146,46 @3.0; 146,46 @3.4; 190,130 @4.6\",clickAt=1.6,period=8,delay=0,replay=true,fade=.4,size=14,press=.88,threshold=.4,ink=\"#1E1F26\",paper=\"#FFFFFF\"}=props;const ref=React.useRef(null);const canvas=onCanvas();const[on,setOn]=React.useState(false);const[reduced,setReduced]=React.useState(false);const uid=React.useId().replace(/[^a-zA-Z0-9]/g,\"\");const name=`ssCursor${uid}`;React.useEffect(()=>{if(canvas)return;if(reducedMotion()){setReduced(true);return;}let io=null;const el=ref.current;if(!el||typeof IntersectionObserver===\"undefined\"){setOn(true);return;}io=new IntersectionObserver(entries=>{for(const en of entries){if(en.isIntersecting){setOn(true);hoverReplay(el,()=>{setOn(false);requestAnimationFrame(()=>setOn(true));});if(io)io.disconnect();break;}}},{threshold});io.observe(el);return()=>{if(io)io.disconnect();};},[threshold,canvas]);const pts=React.useMemo(()=>parsePath(path),[path]);const css=React.useMemo(()=>{if(!pts.length||period<=0)return\"\";const P=t=>Math.max(0,Math.min(100,t/period*100));const frames=[];const tf=(p,s=1)=>`transform:translate(${p.x}px,${p.y}px) scale(${s})`;const first=pts[0];const last=pts[pts.length-1];frames.push({t:0,css:`opacity:0;${tf(first)}`});frames.push({t:first.t,css:`opacity:0;${tf(first)}`});frames.push({t:first.t+fade,css:`opacity:1;${tf(first)}`});for(let i=1;i<pts.length;i++)frames.push({t:pts[i].t,css:`opacity:1;${tf(pts[i])}`});if(clickAt>first.t&&clickAt<last.t){const c=posAt(pts,clickAt);frames.push({t:clickAt,css:`opacity:1;${tf(c,1)}`});frames.push({t:clickAt+.12,css:`opacity:1;${tf(c,press)}`});frames.push({t:clickAt+.28,css:`opacity:1;${tf(c,1)}`});}frames.push({t:last.t+fade,css:`opacity:0;${tf(last)}`});frames.push({t:period,css:`opacity:0;${tf(last)}`});frames.sort((a,b)=>a.t-b.t);const seen=new Set;const body=frames.map(f=>({p:P(f.t).toFixed(3),css:f.css})).filter(f=>{const key=f.p;if(seen.has(key))return false;seen.add(key);return true;}).map(f=>`${f.p}%{${f.css}}`).join(\"\");return`@keyframes ${name}{${body}}`;},[pts,period,fade,clickAt,press,name]);const staticPos=pts.length?posAt(pts,clickAt>0?clickAt:pts[0].t):{x:0,y:0};const still=canvas||reduced;const animation=!still&&on?`${name} ${period}s cubic-bezier(.45,0,.55,1) ${delay}s ${replay?\"infinite\":\"1 forwards\"}`:\"none\";return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{position:\"relative\",width:\"100%\",height:\"100%\",pointerEvents:\"none\",overflow:\"visible\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:0,width:size,height:Math.round(size*(18/14)),opacity:still?.9:0,transform:still?`translate(${staticPos.x}px,${staticPos.y}px)`:undefined,animation,filter:\"drop-shadow(0 2px 3px rgba(0,0,0,.3))\",willChange:\"transform, opacity\"},children:/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 14 18\",width:size,height:Math.round(size*(18/14)),fill:paper,stroke:ink,strokeWidth:\"1.2\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M1 1l11 8.5-5 .7 3 6-2 1-3-6-4 3.8z\"})})}),css&&/*#__PURE__*/_jsx(\"style\",{children:css})]});}addPropertyControls(CursorPath,{path:{type:ControlType.String,title:\"Path\",displayTextArea:true,defaultValue:\"160,120 @0.6; 46,46 @1.4; 46,46 @1.8; 146,46 @3.0; 146,46 @3.4; 190,130 @4.6\",description:\"x,y @seconds; separated by semicolons. Pixels from the top-left of this layer.\"},clickAt:{type:ControlType.Number,title:\"Click at\",defaultValue:1.6,min:0,max:60,step:.1,unit:\"s\"},period:{type:ControlType.Number,title:\"Period\",defaultValue:8,min:1,max:60,step:.5,unit:\"s\"},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:20,step:.1,unit:\"s\"},replay:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true,enabledTitle:\"Loop\",disabledTitle:\"Once\"},fade:{type:ControlType.Number,title:\"Fade\",defaultValue:.4,min:.1,max:2,step:.1,unit:\"s\"},size:{type:ControlType.Number,title:\"Size\",defaultValue:14,min:8,max:40,step:1,unit:\"px\"},press:{type:ControlType.Number,title:\"Press scale\",defaultValue:.88,min:.5,max:1,step:.02},threshold:{type:ControlType.Number,title:\"Threshold\",defaultValue:.4,min:0,max:1,step:.1},ink:{type:ControlType.Color,title:\"Outline\",defaultValue:\"#1E1F26\"},paper:{type:ControlType.Color,title:\"Fill\",defaultValue:\"#FFFFFF\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CursorPath\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicHeight\":\"160\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"240\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CursorPath.map"],"mappings":"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"}