{"version":3,"file":"LineBetweenPoints.CU-L1NqB.mjs","names":["React.forwardRef","useRef","useState","_Fragment"],"sources":["https:/framerusercontent.com/modules/Oe74qjD353KYgpYBTfO4/kKNw5hUozgbkPXJOmU6F/hqKc9RA03.js","https:/framerusercontent.com/modules/WFeUY9hLyGYENhFcclhN/UUKV84ig510egq6aogkx/LineBetweenPoints.js"],"sourcesContent":["// Generated by Framer (6ca5d98)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,useSVGTemplate,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const Base=/*#__PURE__*/forwardRef(function(props,ref){return /*#__PURE__*/_jsx(\"svg\",{...props,ref:ref,children:props.children});});const MotionSVG=motion.create(Base);const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(MotionSVG,{...rest,layoutId:layoutId,ref:ref,children:children}):/*#__PURE__*/_jsx(\"svg\",{...rest,ref:ref,children:children});});const svg='<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 0 1.238 L 0 12.488 C 8.591 8.291 12.409 16.459 21 12.261 L 21 1.011 C 12.409 5.209 8.591 -2.959 0 1.238 Z M 10.5 9 C 9.257 9 8.25 7.993 8.25 6.75 C 8.25 5.507 9.257 4.5 10.5 4.5 C 11.743 4.5 12.75 5.507 12.75 6.75 C 12.75 7.993 11.743 9 10.5 9 Z\" fill-opacity=\"var(--1m6trwb, 0)\" fill=\"var(--21h8s6, rgb(0, 0, 0))\" height=\"13.49980803904471px\" id=\"MMpbaZYMI\" transform=\"translate(1.5 5.25)\" width=\"21px\"/><path d=\"M 21 12.261 C 12.409 16.459 8.591 8.291 0 12.488 L 0 1.238 C 8.591 -2.959 12.409 5.209 21 1.011 Z\" fill=\"transparent\" height=\"13.499808039044709px\" id=\"Ev5IwXLVx\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(1.5 5.25)\" width=\"21px\"/><path d=\"M 0 2.25 C 0 1.007 1.007 0 2.25 0 C 3.493 0 4.5 1.007 4.5 2.25 C 4.5 3.493 3.493 4.5 2.25 4.5 C 1.007 4.5 0 3.493 0 2.25 Z\" fill=\"transparent\" height=\"4.5px\" id=\"WU8V3C5z1\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(9.75 9.75)\" width=\"4.5px\"/><path d=\"M 0 0 L 0 4.5\" fill=\"transparent\" height=\"4.5px\" id=\"WzT7hSez7\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(4.5 9)\" width=\"1px\"/><path d=\"M 0 0 L 0 4.5\" fill=\"transparent\" height=\"4.5px\" id=\"mIpN_pvvr\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(19.5 10.5)\" width=\"1px\"/></svg>';const getProps=({alpha,color,height,id,width,width1,...props})=>{return{...props,ezTt3ayMo:color??props.ezTt3ayMo??\"rgb(0, 0, 0)\",lschgej4H:width1??props.lschgej4H??1.5,qxTvv_EBh:alpha??props.qxTvv_EBh};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,ezTt3ayMo,lschgej4H,qxTvv_EBh,...restProps}=getProps(props);const href=useSVGTemplate(\"2758010082\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-mz98p\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--1m6trwb\":qxTvv_EBh,\"--21h8s6\":ezTt3ayMo,\"--pgex8v\":lschgej4H,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-mz98p { -webkit-mask: ${mask}; aspect-ratio: 1; display: block; mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"ezTt3ayMo\":\"color\",\"lschgej4H\":\"width1\",\"qxTvv_EBh\":\"alpha\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Money Wavy\",\"color\":{\"type\":\"variable\",\"value\":\"21h8s6\"},\"set\":{\"localId\":\"vectorSet/NGVKdicsm\",\"id\":\"NGVKdicsm\",\"moduleId\":\"omX0gWFPqDwhaiWwf6ab\"}}\n * @framerDisableUnlink true\n */const Icon=withCSS(Component,css,\"framer-mz98p\");Icon.displayName=\"Money Wavy\";export default Icon;addPropertyControls(Icon,{ezTt3ayMo:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},lschgej4H:{defaultValue:1.5,displayStepper:true,hidden:false,max:6,min:0,step:.5,title:\"Width\",type:ControlType.Number},qxTvv_EBh:{defaultValue:0,displayStepper:true,hidden:false,max:1,min:0,step:.1,title:\"Alpha\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"true\",\"framerIntrinsicHeight\":\"24\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"24\",\"framerVector\":\"{\\\"name\\\":\\\"Money Wavy\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"21h8s6\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/NGVKdicsm\\\",\\\"id\\\":\\\"NGVKdicsm\\\",\\\"moduleId\\\":\\\"omX0gWFPqDwhaiWwf6ab\\\"}}\",\"framerImmutableVariables\":\"true\",\"framerVariables\":\"{\\\"ezTt3ayMo\\\":\\\"color\\\",\\\"lschgej4H\\\":\\\"width1\\\",\\\"qxTvv_EBh\\\":\\\"alpha\\\"}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useRef,useEffect,useState}from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const glob=typeof window!==\"undefined\"?window:globalThis;const STORE_KEY=\"__framerScrollLineTracer_v1__\";if(!glob[STORE_KEY])glob[STORE_KEY]={nodes:new Map};const store=glob[STORE_KEY];const clamp=(n,lo=0,hi=1)=>Math.max(lo,Math.min(hi,n));// nine-point anchor resolution against a bounding rect\nfunction anchorXY(rect,anchor){const[vy,hx]=anchor.split(\"-\");const x=hx===\"left\"?rect.left:hx===\"right\"?rect.right:rect.left+rect.width/2;const y=vy===\"top\"?rect.top:vy===\"bottom\"?rect.bottom:rect.top+rect.height/2;return{x,y};}function dashPattern(style,width){if(style===\"dashed\")return`${width*3} ${width*2}`;if(style===\"dotted\")return`0.01 ${width*2.4}`// round-capped dots\n;return undefined// solid\n;}export default function ScrollLineTracer(props){const{pairId,role,anchor,sectionId,color,lineWidth,lineStyle,curve,reverse,showDots,dotSize,zIndex,scrubStart,scrubEnd,smoothing,previewProgress,showOnCanvas}=props;const nodeRef=useRef(null);const[mounted,setMounted]=useState(false);const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isStart=role===\"start\";// overlay element refs (mutated directly in the rAF loop — no per-frame React renders)\nconst pathRef=useRef(null);const maskRef=useRef(null);const dotStartRef=useRef(null);const dotEndRef=useRef(null);const progRef=useRef(0);const lastDRef=useRef(\"\");// register / update this instance in the shared store\nuseEffect(()=>{setMounted(true);const key=`${pairId}:${role}`;const entry={node:nodeRef.current,anchor};store.nodes.set(key,entry);return()=>{if(store.nodes.get(key)===entry)store.nodes.delete(key);};},[pairId,role,anchor]);// draw loop — Start only\nuseEffect(()=>{if(!isStart||!mounted)return;if(isCanvas&&!showOnCanvas)return;let raf=0;// top -> 0, middle -> 0.5, bottom -> 1 (fraction of viewport height)\nconst frac=v=>v===\"top\"?0:v===\"bottom\"?1:.5;const computeProgress=()=>{if(isCanvas)return clamp(previewProgress);if(!sectionId)return 1;const el=document.getElementById(sectionId);if(!el)return 1;const rect=el.getBoundingClientRect();const vh=window.innerHeight||1;const startEdge=vh*frac(scrubStart);const endEdge=vh*frac(scrubEnd);const denom=rect.height+(startEdge-endEdge);const traveled=startEdge-rect.top;// A short section + inverted scrub can make denom <= 0, which used\n// to hard-force progress to 0 (a silently dead line). Fall back to\n// the full enter->exit span (always positive) so it still sweeps.\nconst range=denom>0?denom:rect.height+vh;return clamp(range>0?traveled/range:0);};const loop=()=>{const a=store.nodes.get(`${pairId}:start`);const b=store.nodes.get(`${pairId}:end`);const path=pathRef.current;const mask=maskRef.current;if(a?.node&&b?.node&&path&&mask){const p1=anchorXY(a.node.getBoundingClientRect(),a.anchor);const p2=anchorXY(b.node.getBoundingClientRect(),b.anchor);// reveal origin/terminus follow the draw direction\nconst q1=reverse?p2:p1;const q2=reverse?p1:p2;// build path (straight, or a quadratic bow when curve != 0)\nlet d;if(curve){const mx=(q1.x+q2.x)/2;const my=(q1.y+q2.y)/2;const dx=q2.x-q1.x;const dy=q2.y-q1.y;const len=Math.hypot(dx,dy)||1;const nx=-dy/len;const ny=dx/len;d=`M ${q1.x} ${q1.y} Q ${mx+nx*curve} ${my+ny*curve} ${q2.x} ${q2.y}`;}else{d=`M ${q1.x} ${q1.y} L ${q2.x} ${q2.y}`;}if(d!==lastDRef.current){path.setAttribute(\"d\",d);mask.setAttribute(\"d\",d);lastDRef.current=d;}// progress -> smoothed -> trim-path offset (HotspotOverlay reveal)\nconst target=computeProgress();const alpha=1-clamp(smoothing,0,.95);progRef.current+=(target-progRef.current)*alpha;const prog=clamp(progRef.current);const pathLen=mask.getTotalLength()||1;mask.setAttribute(\"stroke-dasharray\",`${pathLen} ${pathLen}`);mask.setAttribute(\"stroke-dashoffset\",String(pathLen*(1-prog)));// endpoint dots\nif(dotStartRef.current){dotStartRef.current.setAttribute(\"cx\",String(q1.x));dotStartRef.current.setAttribute(\"cy\",String(q1.y));dotStartRef.current.setAttribute(\"opacity\",prog>.001?\"1\":\"0\");}if(dotEndRef.current){dotEndRef.current.setAttribute(\"cx\",String(q2.x));dotEndRef.current.setAttribute(\"cy\",String(q2.y));dotEndRef.current.setAttribute(\"opacity\",prog>.985?\"1\":\"0\");}}raf=requestAnimationFrame(loop);};raf=requestAnimationFrame(loop);return()=>cancelAnimationFrame(raf);},[isStart,mounted,pairId,sectionId,curve,reverse,smoothing,scrubStart,scrubEnd,previewProgress,isCanvas,showOnCanvas]);const maskId=`slt-mask-${pairId}`;// full-viewport overlay, portalled to <body> so fixed positioning isn't\n// captured by a transformed Framer ancestor. Start instance only.\nconst overlay=isStart&&mounted&&typeof document!==\"undefined\"&&(!isCanvas||showOnCanvas)?/*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"svg\",{style:{position:\"fixed\",top:0,left:0,width:\"100vw\",height:\"100vh\",overflow:\"visible\",pointerEvents:\"none\",zIndex},children:[/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsx(\"mask\",{id:maskId,children:/*#__PURE__*/_jsx(\"path\",{ref:maskRef,fill:\"none\",stroke:\"#fff\",strokeWidth:Math.max(lineWidth*3,lineWidth+8),strokeLinecap:\"round\",strokeLinejoin:\"round\"})})}),/*#__PURE__*/_jsx(\"path\",{ref:pathRef,fill:\"none\",stroke:color,strokeWidth:lineWidth,strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeDasharray:dashPattern(lineStyle,lineWidth),mask:`url(#${maskId})`}),showDots&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"circle\",{ref:dotStartRef,r:dotSize,fill:color,opacity:0}),/*#__PURE__*/_jsx(\"circle\",{ref:dotEndRef,r:dotSize,fill:color,opacity:0})]})]}),document.body):null;return /*#__PURE__*/_jsxs(\"div\",{ref:nodeRef,style:{width:\"100%\",height:\"100%\",position:\"relative\"},children:[isCanvas&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\",padding:\"3px 8px\",borderRadius:999,fontSize:11,fontWeight:600,whiteSpace:\"nowrap\",color:\"#fff\",background:isStart?\"#2563eb\":\"#111\",fontFamily:\"ui-sans-serif, system-ui, -apple-system, sans-serif\"},children:[isStart?\"① Start\":\"② End\",\" \\xb7 \",pairId]}),overlay]});}ScrollLineTracer.defaultProps={pairId:\"pair-1\",role:\"start\",anchor:\"middle-center\",sectionId:\"\",color:\"#111111\",lineWidth:2,lineStyle:\"dashed\",curve:0,reverse:false,showDots:true,dotSize:4,zIndex:10,scrubStart:\"bottom\",scrubEnd:\"top\",smoothing:.2,previewProgress:.6,showOnCanvas:true};const ANCHORS=[\"top-left\",\"top-center\",\"top-right\",\"middle-left\",\"middle-center\",\"middle-right\",\"bottom-left\",\"bottom-center\",\"bottom-right\"];const startOnly=p=>p.role!==\"start\";addPropertyControls(ScrollLineTracer,{pairId:{type:ControlType.String,title:\"Pair ID\",defaultValue:\"pair-1\",description:\"Both instances of a line must share this.\"},role:{type:ControlType.Enum,title:\"Role\",options:[\"start\",\"end\"],optionTitles:[\"① Start\",\"② End\"],defaultValue:\"start\",displaySegmentedControl:true},anchor:{type:ControlType.Enum,title:\"Anchor\",options:ANCHORS,optionTitles:ANCHORS,defaultValue:\"middle-center\",description:\"Which point of this frame the line attaches to.\"},sectionId:{type:ControlType.String,title:\"Section ID\",placeholder:\"scroll-section\",hidden:startOnly,description:\"Element ID that drives the scrub. Empty = fully drawn.\"},color:{type:ControlType.Color,title:\"Color\",hidden:startOnly},lineWidth:{type:ControlType.Number,title:\"Width\",min:.5,max:40,step:.5,hidden:startOnly},lineStyle:{type:ControlType.Enum,title:\"Style\",options:[\"solid\",\"dashed\",\"dotted\"],optionTitles:[\"Solid\",\"Dashed\",\"Dotted\"],displaySegmentedControl:true,hidden:startOnly},curve:{type:ControlType.Number,title:\"Curve\",min:-600,max:600,step:5,hidden:startOnly,description:\"Bow the line. 0 = straight.\"},reverse:{type:ControlType.Boolean,title:\"Direction\",enabledTitle:\"Reverse\",disabledTitle:\"Forward\",hidden:startOnly},showDots:{type:ControlType.Boolean,title:\"End dots\",hidden:startOnly},dotSize:{type:ControlType.Number,title:\"Dot size\",min:1,max:24,step:1,hidden:p=>startOnly(p)||!p.showDots},zIndex:{type:ControlType.Number,title:\"z-index\",min:0,max:9999,step:1,hidden:startOnly},scrubStart:{type:ControlType.Enum,title:\"Scrub start\",options:[\"top\",\"middle\",\"bottom\"],optionTitles:[\"Top\",\"Middle\",\"Bottom\"],displaySegmentedControl:true,hidden:startOnly,description:\"Viewport line where drawing begins.\"},scrubEnd:{type:ControlType.Enum,title:\"Scrub end\",options:[\"top\",\"middle\",\"bottom\"],optionTitles:[\"Top\",\"Middle\",\"Bottom\"],displaySegmentedControl:true,hidden:startOnly,description:\"Viewport line where drawing completes.\"},smoothing:{type:ControlType.Number,title:\"Smoothing\",min:0,max:.95,step:.05,hidden:startOnly,description:\"Eases the scrub. 0 = snap to scroll.\"},showOnCanvas:{type:ControlType.Boolean,title:\"Canvas test\",enabledTitle:\"Show\",disabledTitle:\"Hide\",hidden:startOnly,description:\"Draw the line on the canvas without previewing.\"},previewProgress:{type:ControlType.Number,title:\"Test amount\",min:0,max:1,step:.05,hidden:p=>startOnly(p)||!p.showOnCanvas,description:\"How far the canvas test line is drawn.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ScrollLineTracer\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LineBetweenPoints.map"],"mappings":"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"}