{"version":3,"file":"ProcessArc.DASDRfjC.mjs","names":["useRef","useState","useMemo","__esmMin","_e","pe","p","c","init_jsx_runtime","ce","init_npm_react_18_3_1","de","useTransform","useMotionValueEvent","useReducedMotion","useSpring","useScroll","init_framer_motion_DhsWWWsN","motion","addPropertyControls","useIsStaticRenderer","ControlType","init_framer_B1b760uK","layerNames","list","name","layerSelector","clamp","max","min","value","sampleArc","rx","arc","ry","cx","mirror","box","cy","tLimit","tTop","tBottom","points","lengths","total","index","samples","t","x","point","px","py","y","length","ProcessArc","isStatic","reducedMotion","rootRef","setBox","arcLeft","arcTop","arcWidth","arcHeight","start","end","progress","scrollYProgress","lineOpacity","markerNames","markers","pointNames","resolveSteps","root","firstMarker","scope","origin","marker","pointName","MARKER_ATTR","POINT_ATTR","fraction","rect","hit","steps","paint","step","active","el","ACTIVE_ATTR","measure","width","height","observer","rootStyle","style","svgStyle","color","stepsCss","init_ProcessArc"],"sources":["https:/framerusercontent.com/modules/NINvMfmA0LSSvSutCKwZ/oin5RjU9MYAEYHvfGaKF/ProcessArc.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useMotionValueEvent,useReducedMotion,useScroll,useSpring,useTransform}from\"framer-motion\";import{useEffect,useMemo,useRef,useState}from\"react\";const MARKER_ATTR=\"data-imp-arc-marker\";const POINT_ATTR=\"data-imp-arc-point\";const ACTIVE_ATTR=\"data-imp-arc-active\";// States for the step markers and texts. The attributes are only set once\n// JavaScript runs, so without it the steps keep their normal look.\nconst stepsCss=color=>`\n[${MARKER_ATTR}] { transition: background-color .5s cubic-bezier(.22,1,.36,1); }\n[${MARKER_ATTR}]::after { transition: border-color .5s cubic-bezier(.22,1,.36,1); }\n[${MARKER_ATTR}] p { transition: color .5s cubic-bezier(.22,1,.36,1); }\n[${MARKER_ATTR}]:not([${ACTIVE_ATTR}]) { --border-color: rgba(17, 17, 17, .22) !important; }\n[${MARKER_ATTR}]:not([${ACTIVE_ATTR}]) p { --framer-text-color: rgba(17, 17, 17, .45) !important; }\n[${MARKER_ATTR}][${ACTIVE_ATTR}] { background-color: ${color} !important; --border-color: ${color} !important; }\n[${MARKER_ATTR}][${ACTIVE_ATTR}] p { --framer-text-color: #fff !important; }\n[${POINT_ATTR}] { transition: opacity .6s cubic-bezier(.22,1,.36,1); }\n[${POINT_ATTR}]:not([${ACTIVE_ATTR}]) { opacity: .35 !important; }\n`;function layerNames(list){return list.split(\",\").map(name=>name.trim()).filter(Boolean);}function layerSelector(name){return`[data-framer-name=\"${name.replace(/[\"\\\\]/g,\"\\\\$&\")}\"]`;}function clamp(value,min,max){return Math.min(max,Math.max(min,value));}// The visible stretch of the ellipse outline (right-hand side, inside the box; the\n// left-hand side when mirrored), sampled from top to bottom with the cumulative length\n// at every point.\nfunction sampleArc(box,arc,mirror=false,samples=160){// Framer draws a 1px border inside the frame, so its centre line sits 0.5px in.\nconst rx=arc.width/2-.5;const ry=arc.height/2-.5;// A mirrored arc is sampled as its reflection, then flipped back.\nconst left=mirror?box.width-(arc.left+arc.width):arc.left;const cx=left+arc.width/2;const cy=arc.top+arc.height/2;const tLimit=Math.acos(clamp(-cx/rx,-1,1));const tTop=Math.max(-tLimit,Math.asin(clamp(-cy/ry,-1,1)));const tBottom=Math.min(tLimit,Math.asin(clamp((box.height-cy)/ry,-1,1)));const points=[];const lengths=[];let total=0;for(let index=0;index<=samples;index++){const t=tTop+(tBottom-tTop)*index/samples;const x=cx+rx*Math.cos(t);const point=[mirror?box.width-x:x,cy+ry*Math.sin(t)];if(index>0){const[px,py]=points[index-1];total+=Math.hypot(point[0]-px,point[1]-py);}points.push(point);lengths.push(total);}const d=points.map(([x,y],index)=>`${index?\"L\":\"M\"}${x.toFixed(2)} ${y.toFixed(2)}`).join(\" \");return{d,points,fractions:lengths.map(length=>length/(total||1))};}/**\n * Process Arc — draws a progress line along the process arc as the visitor\n * scrolls, and lights up each step when the line reaches its marker.\n * Place it over the arc layer, in the arc's parent; the height of its box is where\n * the line stops. Use \"Curve: Left\" for an arc that bulges to the left.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 640\n * @framerIntrinsicHeight 820\n */export default function ProcessArc({arcLeft=-220,arcTop=0,arcWidth=377,arcHeight=760,color=\"#111111\",strokeWidth=1.5,markers=\"Point 01 marker, Point 02 marker, Point 03 marker, Point 04 marker\",points=\"Point 01, Point 02, Point 03, Point 04\",start=75,end=45,mirror=false,style}){const isStatic=useIsStaticRenderer();const reducedMotion=useReducedMotion();const rootRef=useRef(null);const[box,setBox]=useState({width:640,height:820});const arc=useMemo(()=>sampleArc(box,{left:arcLeft,top:arcTop,width:arcWidth,height:arcHeight},mirror),[box.width,box.height,arcLeft,arcTop,arcWidth,arcHeight,mirror]);const{scrollYProgress}=useScroll({target:rootRef,offset:[`start ${start/100}`,`end ${end/100}`]});const progress=useSpring(scrollYProgress,{stiffness:220,damping:34,mass:.5,restDelta:5e-4});// Hide the zero-length stroke before the line starts.\nconst lineOpacity=useTransform(progress,[0,.01],[0,1]);const markerNames=layerNames(markers);const pointNames=layerNames(points);// Finds the step layers around this component (Framer wraps it in a container,\n// so look a few levels up) and where the line reaches each marker.\nconst resolveSteps=()=>{const root=rootRef.current;if(!root||!markerNames.length)return[];const firstMarker=layerSelector(markerNames[0]);let scope=root.parentElement;while(scope&&!scope.querySelector(firstMarker))scope=scope.parentElement;if(!scope)return[];const origin=root.getBoundingClientRect();return markerNames.map((name,index)=>{const marker=scope.querySelector(layerSelector(name));const pointName=pointNames[index];const point=pointName?scope.querySelector(layerSelector(pointName)):null;marker?.setAttribute(MARKER_ATTR,\"\");point?.setAttribute(POINT_ATTR,\"\");let fraction=1;if(marker){const rect=marker.getBoundingClientRect();const y=rect.top+rect.height/2-origin.top;const hit=arc.points.findIndex(([,py])=>py>=y);fraction=hit<0?1:arc.fractions[hit];}return{marker,point,fraction};});};const steps=useRef([]);const paint=value=>{if(steps.current.some(step=>step.marker&&!step.marker.isConnected))steps.current=resolveSteps();for(const{marker,point,fraction}of steps.current){const active=reducedMotion||value>=fraction-.004;for(const el of[marker,point]){if(!el||el.hasAttribute(ACTIVE_ATTR)===active)continue;if(active)el.setAttribute(ACTIVE_ATTR,\"\");else el.removeAttribute(ACTIVE_ATTR);}}};useEffect(()=>{const root=rootRef.current;if(isStatic||!root)return;const measure=()=>{const{width,height}=root.getBoundingClientRect();if(width&&height)setBox({width,height});};measure();const observer=new ResizeObserver(measure);observer.observe(root);return()=>{observer.disconnect();for(const{marker,point}of steps.current){for(const el of[marker,point]){el?.removeAttribute(MARKER_ATTR);el?.removeAttribute(POINT_ATTR);el?.removeAttribute(ACTIVE_ATTR);}}};},[isStatic]);// Re-measure the markers whenever the arc geometry changes.\nuseEffect(()=>{if(isStatic)return;steps.current=resolveSteps();paint(progress.get());},[isStatic,arc,markers,points,reducedMotion]);useMotionValueEvent(progress,\"change\",paint);const rootStyle={...style,position:\"relative\",width:\"100%\",height:\"100%\",pointerEvents:\"none\"};const svgStyle={position:\"absolute\",top:0,left:0,width:\"100%\",height:\"100%\",overflow:\"visible\"};if(isStatic){return /*#__PURE__*/_jsx(\"div\",{style:rootStyle,children:/*#__PURE__*/_jsx(\"svg\",{style:svgStyle,\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:arc.d,fill:\"none\",stroke:color,strokeWidth:strokeWidth})})});}return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:rootStyle,children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:stepsCss(color)}}),/*#__PURE__*/_jsx(\"svg\",{style:svgStyle,\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(motion.path,{d:arc.d,fill:\"none\",stroke:color,strokeWidth:strokeWidth,style:reducedMotion?{pathLength:1}:{pathLength:progress,opacity:lineOpacity}})})]});}addPropertyControls(ProcessArc,{color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#111111\"},strokeWidth:{type:ControlType.Number,title:\"Stroke\",defaultValue:1.5,min:.5,max:4,step:.5,unit:\"px\"},start:{type:ControlType.Number,title:\"Start At\",description:\"Line starts when the arc top reaches this % of the screen height.\",defaultValue:75,min:0,max:100,unit:\"%\"},end:{type:ControlType.Number,title:\"End At\",description:\"Line is complete when the arc bottom reaches this % of the screen height.\",defaultValue:45,min:0,max:100,unit:\"%\"},markers:{type:ControlType.String,title:\"Markers\",description:\"Layer names of the step circles, in order.\",defaultValue:\"Point 01 marker, Point 02 marker, Point 03 marker, Point 04 marker\",displayTextArea:true},points:{type:ControlType.String,title:\"Steps\",description:\"Layer names of the step texts, in the same order.\",defaultValue:\"Point 01, Point 02, Point 03, Point 04\",displayTextArea:true},mirror:{type:ControlType.Boolean,title:\"Curve\",description:\"Which side of the ellipse is drawn: the right side bulges right, the left side bulges left.\",defaultValue:false,enabledTitle:\"Left\",disabledTitle:\"Right\"},arcLeft:{type:ControlType.Number,title:\"Arc X\",defaultValue:-220,displayStepper:true},arcTop:{type:ControlType.Number,title:\"Arc Y\",defaultValue:0,displayStepper:true},arcWidth:{type:ControlType.Number,title:\"Arc Width\",defaultValue:377,min:1,displayStepper:true},arcHeight:{type:ControlType.Number,title:\"Arc Height\",defaultValue:760,min:1,displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProcessArc\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"640\",\"framerIntrinsicHeight\":\"820\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProcessArc.map"],"mappings":"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"}