{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/P8F7KWVh7BHQeoHsQU6E/P7w6XCq9Ey7fbnkxjNXK/ArrowPointsToCTA_Prod.js", "ssg:https://framer.com/m/Utils-FINc.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{ControlType,addPropertyControls,RenderTarget}from\"framer\";import{useEffect,useRef,useState}from\"react\";import{useInView}from\"framer-motion\";import React from\"react\";import{ComponentMessage}from\"https://framer.com/m/Utils-FINc.js\";// Global mouse position tracking\nif(typeof window!==\"undefined\"){window.addEventListener(\"mousemove\",e=>{window.mouseX=e.clientX;window.mouseY=e.clientY;});}var ArrowType;// ------------------------------------------------------------ //\n// INTERFACES\n// ------------------------------------------------------------ //\n(function(ArrowType){ArrowType[\"SOLID\"]=\"solid\";ArrowType[\"DASHED\"]=\"dashed\";ArrowType[\"DOTTED\"]=\"dotted\";})(ArrowType||(ArrowType={}));var ArrowLineCap;(function(ArrowLineCap){ArrowLineCap[\"SQUARE\"]=\"square\";ArrowLineCap[\"ROUND\"]=\"round\";})(ArrowLineCap||(ArrowLineCap={}));// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\naddPropertyControls(ArrowPointsToCta,{button:{type:ControlType.ComponentInstance},buttonWidth:{type:ControlType.Enum,title:\"Width\",options:[\"default\",\"fill\"],optionTitles:[\"Default\",\"Fill\"],defaultValue:\"default\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},arrow:{type:ControlType.Object,controls:{thickness:{type:ControlType.Number,defaultValue:1,unit:\"px\",min:1,max:20,step:1},color:{type:ControlType.Color},type:{type:ControlType.Enum,options:Object.values(ArrowType),optionTitles:[\"Solid\",\"Dashed\",\"Dotted\"],defaultValue:\"dashed\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},gapBetweenDashes:{type:ControlType.Number,title:\"Gap\",defaultValue:10,unit:\"px\",min:1,max:50,step:1,hidden:props=>props.type===\"solid\"},lineCap:{type:ControlType.Enum,options:Object.values(ArrowLineCap),optionTitles:[\"Square\",\"Round\"],defaultValue:\"round\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},tipLength:{type:ControlType.Number,defaultValue:10,unit:\"px\",min:5,max:50,step:1},preview:{type:ControlType.Boolean,defaultValue:true}},description:\"More components at [Framer University](https://frameruni.link/cc).\"}});// ------------------------------------------------------------ //\n// DEFAULT PROPS\n// ------------------------------------------------------------ //\nArrowPointsToCta.defaultProps={button:undefined,buttonWidth:\"default\",arrow:{thickness:1,color:\"rgb(153, 153, 153)\",type:\"dashed\",gapBetweenDashes:10,lineCap:\"round\",tipLength:10,preview:true}};// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\n/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n * @framerDisableUnlink\n */export default function ArrowPointsToCta(props){const isOnFramerCanvas=RenderTarget.hasRestrictions();const haveNativeButton=props.button!==undefined&&props.button?.length>0;// Refs for DOM elements and animation\nconst canvasRef=useRef(null);const targetRef=useRef(null);const wrapperRef=useRef(null);const mouseRef=useRef({x:null,y:null});const animationFrameRef=useRef(null);const rgbColor=parseFramerColor(props.arrow.color);const targetInView=useInView(targetRef);// Effect for canvas updates\nuseEffect(()=>{updateCanvas({canvasRef:canvasRef,targetRef:targetRef});// Debounce utility\nconst debounce=(fn,delay)=>{let timeoutId;return(...args)=>{clearTimeout(timeoutId);timeoutId=setTimeout(()=>fn(...args),delay);};};// Debounced resize handler\nconst debouncedResize=debounce(()=>{updateCanvas({canvasRef:canvasRef,targetRef:targetRef});},150)// 150ms delay\n;window.addEventListener(\"resize\",debouncedResize);// Cleanup\nreturn()=>{window.removeEventListener(\"resize\",debouncedResize);};},[haveNativeButton]);// Effect for preview arrow on Framer canvas\nuseEffect(()=>{if(isOnFramerCanvas&&props.arrow.preview){const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;// Draw the preview arrow\ndrawPreviewArrow({ctx,canvas,framerProps:props,rgbColor});}else{return;}return()=>{// clear arrow from canvas\nconst canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;ctx.clearRect(0,0,canvas.width,canvas.height);};},[isOnFramerCanvas,props,rgbColor]);// Use mouse events\nuseMouseEvents({isOnFramerCanvas,canvasRef,targetRef,wrapperRef,mouseRef,animationFrameRef,targetInView,framerProps:props,rgbColor});if(!haveNativeButton){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\"},children:/*#__PURE__*/_jsx(ComponentMessage,{title:\"Arrow Points to CTA\",subtitle:\"Set up the component by connecting button to the component or selecting the button from the component properties.\"})});}return /*#__PURE__*/_jsxs(\"div\",{ref:wrapperRef,style:{width:\"100%\",height:\"100%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:targetRef,style:{overflow:\"visible\",width:props.buttonWidth===\"default\"?\"fit-content\":\"100%\",display:\"flex\"},children:/*#__PURE__*/_jsx(_Fragment,{children:React.Children.map(props.button,child=>{return /*#__PURE__*/React.cloneElement(child,{// @ts-expect-error this is Framer layer\nstyle:{// @ts-expect-error this is Framer layer\n...child.props.style,width:props.buttonWidth===\"fill\"?\"100%\":child.props.width}});})})}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"absolute\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\",pointerEvents:\"none\",zIndex:2147483647}})]});}// ------------------------------------------------------------ //\n// MOUSE EVENTS MAIN FUNCTION\n// ------------------------------------------------------------ //\nconst useMouseEvents=({isOnFramerCanvas,canvasRef,targetRef,wrapperRef,mouseRef,animationFrameRef,targetInView,framerProps,rgbColor})=>{const opacityRef=useRef(0);const lastTargetInView=useRef(targetInView);const breakpoint=useBreakpoint();useEffect(()=>{if(isOnFramerCanvas||breakpoint===\"mobile\")return;const canvas=canvasRef.current;const target=targetRef.current;if(!canvas||!target)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;// Function to update mouse position\nconst updateMousePosition=e=>{mouseRef.current={x:e.clientX,y:e.clientY};};// Only add mousemove listener when target is in view\nlet handleMouseMove=null;if(targetInView){handleMouseMove=updateMousePosition;window.addEventListener(\"mousemove\",handleMouseMove);// If target just came into view, update mouse position immediately\nif(!lastTargetInView.current){updateMousePosition({clientX:window.mouseX||0,clientY:window.mouseY||0});}}// Update last target in view state\nlastTargetInView.current=targetInView;// Start animation\nanimate({ctx,target,wrapperRef,canvas,mouseRef,animationFrameRef,targetInView,opacityRef,framerProps,rgbColor});return()=>{if(handleMouseMove){window.removeEventListener(\"mousemove\",handleMouseMove);}if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);}};},[isOnFramerCanvas,targetInView,breakpoint]);};// ------------------------------------------------------------ //\n// DRAW ARRROW + ANIMATION\n// ------------------------------------------------------------ //\nconst drawArrow=({ctx,target,canvas,mouseRef,currentOpacity,framerProps,rgbColor})=>{if(!ctx||!target||!canvas)return;const{x:mouseX,y:mouseY}=mouseRef.current;if(!mouseX||!mouseY)return;// Get target position and dimensions\nconst targetRect=target.getBoundingClientRect();// Check if mouse is over the button\nif(mouseX>=targetRect.left&&mouseX<=targetRect.right&&mouseY>=targetRect.top&&mouseY<=targetRect.bottom){return;// Don't draw arrow if mouse is over button\n}// Get canvas position and convert mouse coordinates to be relative to canvas\nconst canvasRect=canvas.getBoundingClientRect();// Convert mouse position to be relative to canvas\nconst x0=mouseX-canvasRect.left;const y0=mouseY-canvasRect.top;// Get target position relative to canvas\nconst cx=targetRect.left-canvasRect.left+targetRect.width/2;const cy=targetRect.top-canvasRect.top+targetRect.height/2;// Add target size\nconst a=Math.atan2(cy-y0,cx-x0);const x1=cx-Math.cos(a)*(targetRect.width/2+20);const y1=cy-Math.sin(a)*(targetRect.height/2+20);const midX=(x0+x1)/2;const midY=(y0+y1)/2;const offset=Math.min(200,Math.hypot(x1-x0,y1-y0)*.5);const t=Math.max(-1,Math.min(1,(y0-y1)/200));const controlX=midX;const controlY=midY+offset*t;// Calculate vertical and horizontal distances from button\nconst verticalDistance=mouseY<targetRect.top?targetRect.top-mouseY:mouseY>targetRect.bottom?mouseY-targetRect.bottom:0;const horizontalDistance=mouseX<targetRect.left?targetRect.left-mouseX:mouseX>targetRect.right?mouseX-targetRect.right:0;// Use the maximum of vertical and horizontal distance for opacity calculation\nconst distance=Math.max(verticalDistance,horizontalDistance);// Calculate opacity with a smoother falloff\nconst minDistance=100// Minimum distance for full opacity\n;const maxDistance=200// Maximum distance where opacity starts\n;const distanceOpacity=Math.min(.75,Math.max(0,(distance-minDistance)/(maxDistance-minDistance)));// Use the animated opacity value\nconst opacity=distanceOpacity*currentOpacity;ctx.strokeStyle=`rgba(${rgbColor.rgbObject.r},${rgbColor.rgbObject.g},${rgbColor.rgbObject.b},${opacity})`;ctx.lineWidth=framerProps.arrow.thickness;const lineDash=framerProps.arrow.type===\"dashed\"?[10+framerProps.arrow.thickness,framerProps.arrow.gapBetweenDashes]:framerProps.arrow.type===\"dotted\"?[framerProps.arrow.thickness,framerProps.arrow.gapBetweenDashes]:framerProps.arrow.type===\"solid\"?[]:[10,framerProps.arrow.gapBetweenDashes];// Draw curve\nctx.lineCap=framerProps.arrow.lineCap;ctx.save();ctx.beginPath();ctx.moveTo(x0,y0);// Calculate where to end the line - slightly before the tip\nconst angle=Math.atan2(y1-controlY,x1-controlX);const headLength=framerProps.arrow.tipLength;const gapSize=headLength*-.3// The gap between line and arrowhead\n;const lineEndX=x1+gapSize*Math.cos(angle);const lineEndY=y1+gapSize*Math.sin(angle);ctx.quadraticCurveTo(controlX,controlY,lineEndX,lineEndY);ctx.setLineDash(lineDash);ctx.stroke();ctx.restore();// Draw arrowhead\nctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x1-headLength*Math.cos(angle-Math.PI/6),y1-headLength*Math.sin(angle-Math.PI/6));ctx.moveTo(x1,y1);ctx.lineTo(x1-headLength*Math.cos(angle+Math.PI/6),y1-headLength*Math.sin(angle+Math.PI/6));ctx.stroke();};const animate=({ctx,target,wrapperRef,canvas,mouseRef,animationFrameRef,targetInView,opacityRef,framerProps,rgbColor})=>{if(!ctx||!canvas)return;// Animate opacity\nconst targetOpacity=targetInView?1:0;const opacityDiff=targetOpacity-opacityRef.current;// Animation timing\nconst duration=100// 300ms\n;const step=16// 16ms per frame (approximately 60fps)\n;if(Math.abs(opacityDiff)>.001){// Calculate how much to move this frame\nconst stepPercentage=step/duration;const newOpacity=opacityRef.current+opacityDiff*stepPercentage;// Ensure we don't overshoot\nif(targetInView){opacityRef.current=Math.min(1,newOpacity);}else{opacityRef.current=Math.max(0,newOpacity);}}ctx.clearRect(0,0,canvas.width,canvas.height);// Only draw and calculate arrow if target is in view or opacity > 0\nif(opacityRef.current>0){drawArrow({ctx,target,canvas,mouseRef,currentOpacity:opacityRef.current,framerProps,rgbColor});}// Continue animation if opacity is changing or target is in view\nif(Math.abs(opacityDiff)>.001||targetInView&&opacityRef.current>0){animationFrameRef.current=requestAnimationFrame(()=>animate({ctx,target,wrapperRef,canvas,mouseRef,animationFrameRef,targetInView,opacityRef,framerProps,rgbColor}));}};// ------------------------------------------------------------ //\n// PREVIEW ARROW\n// ------------------------------------------------------------ //\nconst drawPreviewArrow=({ctx,canvas,framerProps,rgbColor})=>{if(!ctx||!canvas)return;// Clear the canvas\nctx.clearRect(0,0,canvas.width,canvas.height);// Calculate center point (end point of the arrow)\nconst centerX=canvas.width/2;const centerY=canvas.height/2-50;// Calculate start point (200px to the left)\nconst startX=centerX;const startY=centerY-200;// Set arrow style\nctx.strokeStyle=rgbColor.rgbString;ctx.lineWidth=framerProps.arrow.thickness;// Set line style based on arrow type\nconst lineDash=framerProps.arrow.type===\"dashed\"?[10+framerProps.arrow.thickness,framerProps.arrow.gapBetweenDashes]:framerProps.arrow.type===\"dotted\"?[framerProps.arrow.thickness,framerProps.arrow.gapBetweenDashes]:framerProps.arrow.type===\"solid\"?[]:[10,framerProps.arrow.gapBetweenDashes];// Draw the line\nctx.beginPath();ctx.setLineDash(lineDash);ctx.moveTo(startX,startY);ctx.lineTo(centerX,centerY);ctx.stroke();// Draw the arrowhead\nconst headLength=framerProps.arrow.tipLength;const angle=Math.PI/2// Horizontal line, so angle is 0\n;// Set line cap style to round for rounded ends\nctx.lineCap=framerProps.arrow.lineCap;ctx.beginPath();ctx.setLineDash([])// Arrow head should be solid\n;ctx.moveTo(centerX,centerY);ctx.lineTo(centerX-headLength*Math.cos(angle-Math.PI/6),centerY-headLength*Math.sin(angle-Math.PI/6));ctx.moveTo(centerX,centerY);ctx.lineTo(centerX-headLength*Math.cos(angle+Math.PI/6),centerY-headLength*Math.sin(angle+Math.PI/6));ctx.stroke();};// ------------------------------------------------------------ //\n// HELPERS\n// ------------------------------------------------------------ //\n// Add separate function for canvas rendering\nconst updateCanvas=({canvasRef,targetRef})=>{if(!canvasRef||!targetRef||window===undefined)return;const canvas=canvasRef.current;const target=targetRef.current;if(!canvas||!target)return;const targetDimensions=target.getBoundingClientRect();canvas.width=window.innerWidth;canvas.height=window.innerHeight*2+targetDimensions.height;};const parseFramerColor=color=>{// Try to match rgb/rgba pattern inside var() or directly\nconst rgbMatch=color.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);const rgbaMatch=color.match(/rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([\\d.]+)\\)/);if(rgbaMatch){// If RGBA format\nconst[_,r,g,b,a]=rgbaMatch;return{rgbString:`rgba(${r}, ${g}, ${b}, ${a})`,rgbObject:{r:parseInt(r),g:parseInt(g),b:parseInt(b),a:parseFloat(a)}};}else if(rgbMatch){// If RGB format\nconst[_,r,g,b]=rgbMatch;return{rgbString:`rgba(${r}, ${g}, ${b}, 1)`,rgbObject:{r:parseInt(r),g:parseInt(g),b:parseInt(b),a:1}};}// Fallback to black if parsing fails\nconsole.warn(\"Could not parse color:\",color);return{rgbString:\"rgba(0, 0, 0, 1)\",rgbObject:{r:0,g:0,b:0,a:1}};};function useBreakpoint(){// const [isMobile, setIsMobile] = useState(false);\nconst[breakpoint,setBreakpoint]=useState(null);useEffect(()=>{const checkBreakpoint=()=>{if(window.innerWidth<=809){setBreakpoint(\"mobile\");}else if(window.innerWidth<=1199){setBreakpoint(\"tablet\");}else{setBreakpoint(\"desktop\");}};checkBreakpoint();window.addEventListener(\"resize\",checkBreakpoint);return()=>window.removeEventListener(\"resize\",checkBreakpoint);},[]);return breakpoint;}ArrowPointsToCta.displayName=\"Button Pointer\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ArrowPointsToCta\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"200\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ArrowPointsToCTA_Prod.map", "import{jsx as _jsx}from\"react/jsx-runtime\";import{cloneElement}from\"react\";import UtilsComponentMessage from\"https://framer.com/m/Utils-Component-Message-ZVoG.js@cRfVFRl0izzBulKFjOAe\";export const ComponentMessage=({title,subtitle,style})=>{return /*#__PURE__*/_jsx(UtilsComponentMessage,{yeAnKbEUZ:title,WuF2iG84P:subtitle,style:{width:\"100%\",height:\"100%\",...style}});};/* \n    This function is also used many times to make sure components work even if we set a color style like \"Accent\" on their color properties. We can make this into a utility function.\n*/export const extractRGBColorFromString=str=>{const rgbRegex=/(rgba|rgb)\\(.*?\\)/g;const match=str.match(rgbRegex);return match?match[0]:str;};/*\n    This function makes a connected layer use the sizing of the component it is inside,\n    preventing it from being larger or smaller than the component's size.\n    Use this on layers connected with ControlType.ComponentInstance.\n*/export function styleLayer(layer,style={}){layer=Array.isArray(layer)?layer[0]:layer;let newLayer=layer;const{width,height,...otherStyle}=style;if(layer&&layer.props&&style&&(width||height)){if(typeof layer.type===\"function\"&&typeof layer.props.children===\"object\"){newLayer=/*#__PURE__*/cloneElement(layer,{children:{...layer.props.children,props:{...layer.props.children.props,style:{...layer.props.children.props.style,...width&&{width},...height&&{height},...otherStyle}}}});}else{newLayer=/*#__PURE__*/cloneElement(layer,{style:{...layer.props.style,...width&&{width},...height&&{height},...otherStyle}});}}return newLayer;}\nexport const __FramerMetadata__ = {\"exports\":{\"ComponentMessage\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"extractRGBColorFromString\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"styleLayer\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Utils.map"],
  "mappings": "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",
  "names": ["init_ssg_sandbox_shims", "init_ssg_sandbox_shims", "ComponentMessage", "title", "subtitle", "style", "p", "Utils_Component_Message_ZVoG_default", "e", "ArrowType", "ArrowLineCap", "addPropertyControls", "ArrowPointsToCta", "ControlType", "props", "isOnFramerCanvas", "RenderTarget", "haveNativeButton", "canvasRef", "pe", "targetRef", "wrapperRef", "mouseRef", "animationFrameRef", "rgbColor", "parseFramerColor", "targetInView", "useInView", "ue", "updateCanvas", "debouncedResize", "fn", "delay", "timeoutId", "args", "canvas", "ctx", "drawPreviewArrow", "useMouseEvents", "u", "p", "l", "child", "ComponentMessage", "framerProps", "opacityRef", "lastTargetInView", "breakpoint", "useBreakpoint", "target", "updateMousePosition", "handleMouseMove", "animate", "drawArrow", "currentOpacity", "mouseX", "mouseY", "targetRect", "canvasRect", "x0", "y0", "cx", "cy", "a", "x1", "y1", "midX", "midY", "offset", "t", "controlX", "controlY", "verticalDistance", "horizontalDistance", "distance", "minDistance", "opacity", "lineDash", "angle", "headLength", "gapSize", "lineEndX", "lineEndY", "opacityDiff", "duration", "step", "stepPercentage", "newOpacity", "centerX", "centerY", "startX", "startY", "targetDimensions", "color", "rgbMatch", "rgbaMatch", "_", "r", "g", "b", "setBreakpoint", "ye", "checkBreakpoint"]
}
