{"version":3,"file":"TickerPath_Prod.ZSTvdGP4.mjs","names":["useRef","React","useCallback"],"sources":["https:/framerusercontent.com/modules/bMoRFmipBzJ9ZZyOMr87/3P9PoWlAA2GgYJwNqnO3/TickerPath_Prod.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import React,{useCallback,useEffect,useRef}from\"react\";import{motion,useAnimationFrame,useMotionValue,useScroll,useSpring,useTransform,useVelocity}from\"framer-motion\";import{ControlType,addPropertyControls,RenderTarget}from\"framer\";import{ComponentMessage}from\"https://framer.com/m/Utils-FINc.js\";var OnScroll;// import { ComponentMessage } from \"../../utils/ComponentMessage\";\n// -------------------------------------------------------------- //\n// INTERFACES\n// -------------------------------------------------------------- //\n(function(OnScroll){OnScroll[\"NoChange\"]=\"No change\";OnScroll[\"SpeedUp\"]=\"Speed up\";})(OnScroll||(OnScroll={}));var Direction;(function(Direction){Direction[\"Normal\"]=\"normal\";Direction[\"Reverse\"]=\"reverse\";})(Direction||(Direction={}));var Path;(function(Path){Path[\"Preset\"]=\"preset\";Path[\"Custom\"]=\"custom\";})(Path||(Path={}));var Preset;(function(Preset){Preset[\"Spiral\"]=\"spiral\";Preset[\"Loop\"]=\"loop\";Preset[\"Wave\"]=\"wave\";Preset[\"Curly\"]=\"curly\";Preset[\"Stripes\"]=\"stripes\";})(Preset||(Preset={}));// -------------------------------------------------------------- //\n// CONSTANTS\n// -------------------------------------------------------------- //\nconst fuSvg=`\n<svg\n  width=\"550\"\n  height=\"550\"\n  viewBox=\"0 0 550 550\"\n  fill=\"none\"\n  xmlns=\"http://www.w3.org/2000/svg\"\n>\n  <g clip-path=\"url(#clip0_967_124)\">\n    <path\n      d=\"M553.75 2.5 L553.75 267.5 A10 10 0 0 1 546.971 274.314 L281.971 539.814 A10 10 0 0 1 275.157 542.593 L10 543 A10 10 0 0 1 0 533 L1.25 285 A10 10 0 0 1 4.036 277.5 L131.616 146.616 A10 10 0 0 1 141.616 146.616 L141.25 405 A10 10 0 0 1 131.25 415 L405 413.75 A10 10 0 0 1 413.75 403.75 L413.75 150 A10 10 0 0 1 416.536 142.5 L541.615 11.61612 A10 10 0 0 1 553.75 2.5\"\n      fill=\"white\"\n    />\n  </g>\n  <defs>\n    <clipPath id=\"clip0_967_124\">\n      <rect width=\"24\" height=\"24\" fill=\"white\" />\n    </clipPath>\n  </defs>\n</svg>\n`;const imgs=[/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/b9909337-7a53-48bc-9672-33fbd0f040a1?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/ecdc9dd7-2862-4c28-abb1-dcc0947390f3?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/79de41ec-baa4-4ac0-a9a4-c090005ca640?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/1a18b312-21cd-4484-bce5-9fb7ed1c5e01?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/d765f64f-7a66-462f-8b2d-3d7bc8d7db55?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/6b9f08ea-f0c5-471f-a620-71221ff1fb65?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/40a09525-4b00-4666-86f0-3c45f5d77605?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/14f05ab6-b4d0-4605-9007-8a2190a249d0?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/d05009a2-a2f8-4a4c-a0de-e1b0379dddb8?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/ba646e35-efc2-494a-961b-b40f597e6fc9?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/e899f9c3-ed48-4899-8c16-fbd5a60705da?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/24e83c11-c607-45cd-88fb-5059960b56a0?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"img\",{src:\"https://cdn.cosmos.so/cd346bce-f415-4ea7-8060-99c5f7c1741a?format=jpeg\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}})];// -------------------------------------------------------------- //\n// FRAMER PROPERTY CONTROLS\n// -------------------------------------------------------------- //\naddPropertyControls(TickerPath,{content:{type:ControlType.Array,title:\"Content\",defaultValue:[],control:{type:ControlType.ComponentInstance}},repeat:{type:ControlType.Number,title:\"Amount\",defaultValue:2,min:1,max:100,step:1,displayStepper:true},scale:{type:ControlType.Object,controls:{scale:{type:ControlType.Number,title:\"Scale\",defaultValue:1,min:.1,max:5,step:.1,unit:\"x\"},hover:{type:ControlType.Number,title:\"Hover\",defaultValue:1.5,min:.1,max:5,step:.1,unit:\"x\"}}},path:{type:ControlType.Enum,title:\"Path\",defaultValue:\"preset\",options:[\"preset\",\"custom\"],optionTitles:[\"Preset\",\"Custom\"],displaySegmentedControl:true},preset:{type:ControlType.Enum,title:\" \",defaultValue:\"spiral\",options:[\"spiral\",\"loop\",\"wave\",\"curly\",\"stripes\"],optionTitles:[\"Spiral\",\"Loop\",\"Wave\",\"Curly\",\"Stripes\"],// displaySegmentedControl: true,\nhidden:props=>props.path!==\"preset\"},svg:{title:\" \",type:ControlType.String,defaultValue:fuSvg,description:\"Must be an SVG with a path element\",hidden:props=>props.path!==\"custom\"},fade:{type:ControlType.Boolean,title:\"Fade\",defaultValue:true},direction:{type:ControlType.Enum,title:\"Direction\",defaultValue:\"normal\",options:[\"normal\",\"reverse\"],optionIcons:[\"direction-left\",\"direction-right\"],displaySegmentedControl:true},speed:{title:\"Speed\",type:ControlType.Object,controls:{speed:{title:\"Speed\",type:ControlType.Number,defaultValue:5,min:0,max:10,step:.1},hover:{title:\"Hover\",type:ControlType.Number,defaultValue:.3,min:0,max:1,step:.1,unit:\"x\"},onScroll:{title:\"On Scroll\",type:ControlType.Enum,options:[\"No change\",\"Speed up\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"}}},drag:{type:ControlType.Object,controls:{draggable:{type:ControlType.Boolean,title:\"Draggable\",defaultValue:false},dragSensitivity:{type:ControlType.Number,title:\"Sensitivity\",defaultValue:5,min:1,max:10,step:.5,hidden:props=>!props.draggable},grabCursor:{type:ControlType.Boolean,title:\"Grab Cursor\",defaultValue:false,hidden:props=>!props.draggable}},description:\"More components at [Framer University](https://frameruni.link/cc).\"}});// -------------------------------------------------------------- //\n// DEFAULT PROPS\n// -------------------------------------------------------------- //\nTickerPath.defaultProps={content:imgs,repeat:2,scale:{scale:1,hover:1.5},path:\"preset\",preset:\"spiral\",svg:fuSvg,speed:{speed:5,hover:.5,onScroll:\"No change\"},fade:true,direction:\"normal\",drag:{draggable:false,dragSensitivity:.2,grabCursor:false}};// -------------------------------------------------------------- //\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 TickerPath(props){const childrenToRender=props.content.length>0?props.content:imgs;const slowdownOnHover=props.speed.hover<1;const slowDownFactor=props.speed.hover;const containerRef=useRef(null);const transformedSensitivity=useTransform(useMotionValue(props.drag.dragSensitivity),[1,10],[.005,.1]);const presetSvgLookup={[\"spiral\"]:spiralSvg,[\"loop\"]:loopSvg,[\"wave\"]:waveSvg,[\"curly\"]:curlySvg,[\"stripes\"]:stripesSvg};const svgToRender=props.path===\"preset\"?presetSvgLookup[props.preset]:props.svg;// Make all images within container non-draggable\nuseEffect(()=>{const container=document.getElementById(\"ticker-path-container\");if(container){const images=container.getElementsByTagName(\"img\");Array.from(images).forEach(img=>{img.draggable=false;});}},[props.content])// Re-run when content changes\n;// Process children directly without transformation\nconst processedChildren=React.useMemo(()=>childrenToRender,[childrenToRender]);// State to store the extracted path\nconst[extractedPath,setExtractedPath]=React.useState(\"\");// Function to update path based on container size\nconst updatePath=React.useCallback(()=>{if(svgToRender&&containerRef.current){const containerWidth=containerRef.current.offsetWidth;const containerHeight=containerRef.current.offsetHeight;extractPathsFromSvgString(svgToRender,containerWidth,containerHeight).then(path=>{if(path){setExtractedPath(path);}}).catch(error=>{console.error(\"Failed to extract paths from SVG:\",error);});}},[props.path,props.preset,props.svg]);// Effect to handle SVG URL changes and container resizing\nReact.useEffect(()=>{updatePath();// Set up ResizeObserver to watch for container size changes\nconst resizeObserver=new ResizeObserver(()=>{updatePath();});if(containerRef.current){resizeObserver.observe(containerRef.current);}// Cleanup observer on unmount\nreturn()=>{resizeObserver.disconnect();};},[updatePath,props.content]);if(props.content.length===0){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\"},children:/*#__PURE__*/_jsx(ComponentMessage,{title:\"Ticker Path\",subtitle:\"Set up the component by connecting frames to the component or selecting the content from the component properties.\"})});}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\"},id:\"ticker-path-container\",children:/*#__PURE__*/_jsx(MarqueeAlongSvgPath,{path:extractedPath,baseVelocity:props.speed.speed,direction:props.direction,slowdownOnHover:slowdownOnHover,slowDownFactor:slowDownFactor,useScrollVelocity:props.speed.onScroll===\"Speed up\",repeat:props.repeat,draggable:props.drag.draggable,dragSensitivity:transformedSensitivity.get(),grabCursor:props.drag.grabCursor,fade:props.fade,children:React.Children.map(processedChildren,(child,i)=>/*#__PURE__*/_jsx(motion.div,{style:{height:\"100%\",width:\"56px\",userSelect:\"none\",scale:props.scale.scale},whileHover:{scale:props.scale.scale*props.scale.hover,transition:{duration:.3,ease:\"easeInOut\"}},children:child},i))})});}// -------------------------------------------------------------- //\n// SUBCOMPONENT\n// -------------------------------------------------------------- //\n// Custom wrap function\nconst wrap=(min,max,value)=>{const range=max-min;return((value-min)%range+range)%range+min;};const MarqueeAlongSvgPath=({children,style,// Path defaults\npath,// pathId,\n// preserveAspectRatio = \"xMidYMid meet\",\n// showPath = false,\n// // SVG defaults\n// width = \"100%\",\n// height = \"100%\",\n// viewBox = \"0 0 100 100\",\n// Marquee defaults\nbaseVelocity=5,direction=\"normal\",easing,slowdownOnHover=false,slowDownFactor=.3,slowDownSpringConfig={damping:50,stiffness:400},// Scroll defaults\nuseScrollVelocity=false,scrollAwareDirection=true,scrollSpringConfig={damping:50,stiffness:400},// Items repetition\nrepeat=3,// Drag defaults\ndraggable=false,dragSensitivity=.2,dragVelocityDecay=.7,dragAwareDirection=false,grabCursor=false,// Z-index defaults\nenableRollingZIndex=true,zIndexBase=1,zIndexRange=10,cssVariableInterpolation=[],fade=true})=>{const container=useRef(null);const baseOffset=useMotionValue(0);// Create an array of items outside of the render function\nconst items=React.useMemo(()=>{const childrenArray=React.Children.toArray(children);return childrenArray.flatMap((child,childIndex)=>Array.from({length:repeat},(_,repeatIndex)=>{const itemIndex=repeatIndex*childrenArray.length+childIndex;const key=`${childIndex}-${repeatIndex}`;return{child,childIndex,repeatIndex,itemIndex,key};}));},[children,repeat]);// Function to calculate z-index based on offset distance\nconst calculateZIndex=useCallback(offsetDistance=>{if(!enableRollingZIndex){return undefined;}// Simple progress-based z-index\nconst normalizedDistance=offsetDistance/100;return Math.floor(zIndexBase+normalizedDistance*zIndexRange);},[enableRollingZIndex,zIndexBase,zIndexRange]);// Scroll tracking\nconst{scrollY}=useScroll({container:container.current});const scrollVelocity=useVelocity(scrollY);const smoothVelocity=useSpring(scrollVelocity,scrollSpringConfig);// Hover and drag state tracking\nconst isHovered=useRef(false);const isDragging=useRef(false);const dragVelocity=useRef(0);// Direction factor for changing direction based on scroll or drag\nconst directionFactor=useRef(direction===\"normal\"?1:-1);// Motion values for animation\nconst hoverFactorValue=useMotionValue(1);const defaultVelocity=useMotionValue(1);const smoothHoverFactor=useSpring(hoverFactorValue,slowDownSpringConfig);// Transform scroll velocity into a factor that affects marquee speed\nconst velocityFactor=useTransform(useScrollVelocity?smoothVelocity:defaultVelocity,[0,1e3],[0,5],{clamp:false});// Animation frame handler\nuseAnimationFrame((_,delta)=>{if(isDragging.current&&draggable){baseOffset.set(baseOffset.get()+dragVelocity.current);// Add decay to dragVelocity\ndragVelocity.current*=.9;// Stop completely if velocity is very small\nif(Math.abs(dragVelocity.current)<.01){dragVelocity.current=0;}return;}// Update hover factor\nif(isHovered.current){hoverFactorValue.set(slowdownOnHover?slowDownFactor:1);}else{hoverFactorValue.set(1);}// Calculate regular movement\nlet moveBy=directionFactor.current*baseVelocity*(delta/1e3)*smoothHoverFactor.get();// Adjust movement based on scroll velocity if scrollAwareDirection is enabled\nif(scrollAwareDirection&&!isDragging.current){if(velocityFactor.get()<0){directionFactor.current=-1;}else if(velocityFactor.get()>0){directionFactor.current=1;}}moveBy+=directionFactor.current*moveBy*velocityFactor.get();if(draggable){moveBy+=dragVelocity.current;// Update direction based on drag direction if dragAwareDirection is true\nif(dragAwareDirection&&Math.abs(dragVelocity.current)>.1){directionFactor.current=Math.sign(dragVelocity.current);}// Gradually decay drag velocity back to zero\nif(!isDragging.current&&Math.abs(dragVelocity.current)>.01){dragVelocity.current*=dragVelocityDecay;}else if(!isDragging.current){dragVelocity.current=0;}}baseOffset.set(baseOffset.get()+moveBy);});// Pointer event handlers for dragging\nconst lastPointerPosition=useRef({x:0,y:0});const handlePointerDown=e=>{if(!draggable)return;e.currentTarget.setPointerCapture(e.pointerId);if(grabCursor){e.currentTarget.style.cursor=\"grabbing\";}isDragging.current=true;lastPointerPosition.current={x:e.clientX,y:e.clientY};// Add global pointer event listeners\nwindow.addEventListener(\"pointerup\",handleGlobalPointerUp);window.addEventListener(\"pointercancel\",handleGlobalPointerUp);window.addEventListener(\"blur\",handleGlobalPointerUp);// Pause automatic animation by setting velocity to 0\ndragVelocity.current=0;};const handlePointerMove=e=>{if(!draggable||!isDragging.current)return;const currentPosition={x:e.clientX,y:e.clientY};// Calculate movement delta - simplified for path movement\nconst deltaX=currentPosition.x-lastPointerPosition.current.x;const deltaY=currentPosition.y-lastPointerPosition.current.y;// For path following, we use a simple magnitude of movement\nconst delta=Math.sqrt(deltaX*deltaX+deltaY*deltaY);const projectedDelta=deltaX>0?delta:-delta;// Update drag velocity based on the projected movement\ndragVelocity.current=projectedDelta*dragSensitivity;// Update last position\nlastPointerPosition.current=currentPosition;};const handleGlobalPointerUp=useCallback(e=>{if(!isDragging.current)return;isDragging.current=false;dragVelocity.current=0;// Remove global event listeners\nwindow.removeEventListener(\"pointerup\",handleGlobalPointerUp);window.removeEventListener(\"pointercancel\",handleGlobalPointerUp);window.removeEventListener(\"blur\",handleGlobalPointerUp);// Update cursor if needed\nif(grabCursor&&container.current){container.current.style.cursor=\"grab\";}},[grabCursor]);const handlePointerUp=e=>{if(!draggable)return;e.currentTarget.releasePointerCapture(e.pointerId);handleGlobalPointerUp();};// Clean up event listeners on unmount\nuseEffect(()=>{return()=>{window.removeEventListener(\"pointerup\",handleGlobalPointerUp);window.removeEventListener(\"pointercancel\",handleGlobalPointerUp);window.removeEventListener(\"blur\",handleGlobalPointerUp);};},[handleGlobalPointerUp]);// Handlers for individual item hover state, now passed down\nconst handleItemMouseEnter=useCallback(()=>{isHovered.current=true;},[]);const handleItemMouseLeave=useCallback(()=>{isHovered.current=false;},[]);return /*#__PURE__*/_jsx(\"div\",{ref:container,onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp,onPointerCancel:handlePointerUp,style:{position:\"relative\",...style},children:items.map(({child,repeatIndex,itemIndex,key})=>/*#__PURE__*/_jsx(MarqueeItem,{itemKey:key,child:child,itemIndex:itemIndex,totalItems:items.length,repeatIndex:repeatIndex,baseOffset:baseOffset,path:path,easing:easing,enableRollingZIndex:enableRollingZIndex,calculateZIndex:calculateZIndex,draggable:draggable,grabCursor:grabCursor,cssVariableInterpolation:cssVariableInterpolation,onMouseEnter:handleItemMouseEnter,onMouseLeave:handleItemMouseLeave,fade:fade},key))});};const MarqueeItem=({child,itemIndex,totalItems,repeatIndex,baseOffset,path,easing,enableRollingZIndex,calculateZIndex,draggable,grabCursor,cssVariableInterpolation,itemKey,onMouseEnter,onMouseLeave,fade})=>{// Create a unique offset transform for this item\nconst itemOffset=useTransform(baseOffset,v=>{const position=itemIndex*100/totalItems;const wrappedValue=wrap(0,100,v+position);return`${easing?easing(wrappedValue/100)*100:wrappedValue}%`;});// Create a motion value for the current offset distance\nconst currentOffsetDistance=useMotionValue(0);// Create opacity transform based on offset distance\nconst opacity=useTransform(currentOffsetDistance,[0,10,90,100],[0,1,1,0]// Output range (opacity values)\n);const isOnFramerCanvas=RenderTarget.hasRestrictions();const finalOpacity=fade?opacity:1;// Update z-index when offset distance changes\nconst zIndex=useTransform(currentOffsetDistance,value=>calculateZIndex(value));// Update current offset distance value when animation runs\nuseEffect(()=>{const unsubscribe=itemOffset.on(\"change\",value=>{const match=value.match(/^([\\d.]+)%$/);if(match&&match[1]){currentOffsetDistance.set(parseFloat(match[1]));}});return unsubscribe;},[itemOffset,currentOffsetDistance]);// Calculate CSS variables based on the offset distance\nconst cssVariables=Object.fromEntries((cssVariableInterpolation||[]).map(({property,from,to})=>[property,useTransform(currentOffsetDistance,[0,100],[from,to])]));return /*#__PURE__*/_jsx(motion.div,{style:{offsetPath:`path('${path}')`,offsetDistance:itemOffset,opacity:isOnFramerCanvas?1:finalOpacity,zIndex:enableRollingZIndex?zIndex:undefined,position:\"absolute\",top:\"0\",left:\"0\",cursor:draggable&&grabCursor?\"grab\":\"default\",...cssVariables},\"aria-hidden\":repeatIndex>0,onMouseEnter:onMouseEnter,onMouseLeave:onMouseLeave,children:child},itemKey);};// -------------------------------------------------------------- //\n// UTILITY FUNCTIONS\n// -------------------------------------------------------------- //\n// New function to scale AND translate SVG path data\nconst scaleAndTranslateSvgPath=(pathString,scale,offsetX,offsetY)=>{if(!pathString||scale<=0)return\"\"// Added scale check\n;const commandRegex=/([MmLlHhVvCcSsQqTtAaZz])([^MmLlHhVvCcSsQqTtAaZz]*)/g;let currentX=0;let currentY=0;let startX=0// Keep track of subpath start for Z\n;let startY=0;const transformedPath=pathString.replace(commandRegex,(_match,command,params)=>{const numbers=params.trim().split(/[\\s,]+/).filter(n=>n!==\"\").map(Number)// Added type :string\n;// Handle Z command specifically as it has no parameters\nif(command.toUpperCase()===\"Z\"){// Move current point back to subpath start for internal tracking\ncurrentX=startX;currentY=startY;return command// Return 'Z' or 'z' as is\n;}// If no numbers and not Z, it's likely an error or empty command, return original\nif(numbers.length===0)return command;const transformedParams=[];const transformX=x=>x*scale+offsetX;const transformY=y=>y*scale+offsetY;const scaleValue=val=>val*scale// Scale delta or radius\n;// Helper to update current point based on original coordinates\nconst updateCurrentPoint=(x,y,isRelative)=>{if(isRelative){currentX+=x;currentY+=y;}else{currentX=x;currentY=y;}};switch(command){// Absolute commands\ncase\"M\":transformedParams.push(transformX(numbers[0]),transformY(numbers[1]));updateCurrentPoint(numbers[0],numbers[1],false);startX=currentX;startY=currentY// New subpath start\n;for(let i=2;i<numbers.length;i+=2){// Implicit LineTos\ntransformedParams.push(transformX(numbers[i]),transformY(numbers[i+1]));updateCurrentPoint(numbers[i],numbers[i+1],false);}break;case\"L\":for(let i=0;i<numbers.length;i+=2){transformedParams.push(transformX(numbers[i]),transformY(numbers[i+1]));updateCurrentPoint(numbers[i],numbers[i+1],false);}break;case\"H\":for(let i=0;i<numbers.length;i++){transformedParams.push(transformX(numbers[i]));updateCurrentPoint(numbers[i],currentY,false)// Y stays the same\n;}break;case\"V\":for(let i=0;i<numbers.length;i++){transformedParams.push(transformY(numbers[i]));updateCurrentPoint(currentX,numbers[i],false)// X stays the same\n;}break;case\"C\":for(let i=0;i<numbers.length;i+=6){transformedParams.push(transformX(numbers[i]),transformY(numbers[i+1]),transformX(numbers[i+2]),transformY(numbers[i+3]),transformX(numbers[i+4]),transformY(numbers[i+5]));updateCurrentPoint(numbers[i+4],numbers[i+5],false);}break;case\"S\":for(let i=0;i<numbers.length;i+=4){transformedParams.push(transformX(numbers[i]),transformY(numbers[i+1]),transformX(numbers[i+2]),transformY(numbers[i+3]));updateCurrentPoint(numbers[i+2],numbers[i+3],false);}break;case\"Q\":for(let i=0;i<numbers.length;i+=4){transformedParams.push(transformX(numbers[i]),transformY(numbers[i+1]),transformX(numbers[i+2]),transformY(numbers[i+3]));updateCurrentPoint(numbers[i+2],numbers[i+3],false);}break;case\"T\":for(let i=0;i<numbers.length;i+=2){transformedParams.push(transformX(numbers[i]),transformY(numbers[i+1]));updateCurrentPoint(numbers[i],numbers[i+1],false);}break;case\"A\":for(let i=0;i<numbers.length;i+=7){// Scale radii rx, ry\ntransformedParams.push(scaleValue(numbers[i]),scaleValue(numbers[i+1]),numbers[i+2],numbers[i+3],numbers[i+4],transformX(numbers[i+5]),transformY(numbers[i+6]))// x, y\n;updateCurrentPoint(numbers[i+5],numbers[i+6],false);}break;// Relative commands\ncase\"m\":transformedParams.push(scaleValue(numbers[0]),scaleValue(numbers[1]));updateCurrentPoint(numbers[0],numbers[1],true);startX=currentX;startY=currentY// New subpath start based on relative move\n;for(let i=2;i<numbers.length;i+=2){// Implicit linetos\ntransformedParams.push(scaleValue(numbers[i]),scaleValue(numbers[i+1]));updateCurrentPoint(numbers[i],numbers[i+1],true);}break;case\"l\":for(let i=0;i<numbers.length;i+=2){transformedParams.push(scaleValue(numbers[i]),scaleValue(numbers[i+1]));updateCurrentPoint(numbers[i],numbers[i+1],true);}break;case\"h\":for(let i=0;i<numbers.length;i++){transformedParams.push(scaleValue(numbers[i]));updateCurrentPoint(numbers[i],0,true)// dy = 0\n;}break;case\"v\":for(let i=0;i<numbers.length;i++){transformedParams.push(scaleValue(numbers[i]));updateCurrentPoint(0,numbers[i],true)// dx = 0\n;}break;case\"c\":for(let i=0;i<numbers.length;i+=6){transformedParams.push(scaleValue(numbers[i]),scaleValue(numbers[i+1]),scaleValue(numbers[i+2]),scaleValue(numbers[i+3]),scaleValue(numbers[i+4]),scaleValue(numbers[i+5]));updateCurrentPoint(numbers[i+4],numbers[i+5],true);}break;case\"s\":for(let i=0;i<numbers.length;i+=4){transformedParams.push(scaleValue(numbers[i]),scaleValue(numbers[i+1]),scaleValue(numbers[i+2]),scaleValue(numbers[i+3]));updateCurrentPoint(numbers[i+2],numbers[i+3],true);}break;case\"q\":for(let i=0;i<numbers.length;i+=4){transformedParams.push(scaleValue(numbers[i]),scaleValue(numbers[i+1]),scaleValue(numbers[i+2]),scaleValue(numbers[i+3]));updateCurrentPoint(numbers[i+2],numbers[i+3],true);}break;case\"t\":for(let i=0;i<numbers.length;i+=2){transformedParams.push(scaleValue(numbers[i]),scaleValue(numbers[i+1]));updateCurrentPoint(numbers[i],numbers[i+1],true);}break;case\"a\":for(let i=0;i<numbers.length;i+=7){// Scale radii and final dx/dy\ntransformedParams.push(scaleValue(numbers[i]),scaleValue(numbers[i+1]),numbers[i+2],numbers[i+3],numbers[i+4],scaleValue(numbers[i+5]),scaleValue(numbers[i+6]))// dx, dy\n;updateCurrentPoint(numbers[i+5],numbers[i+6],true);}break;}// Join parameters for the current command\n// Use space as separator, handle potential extra spaces if params is empty (though unlikely now)\nreturn command+(transformedParams.length>0?\" \"+transformedParams.join(\" \"):\"\");});return transformedPath;};const extractPathsFromSvgString=async(svgString,containerWidth,containerHeight)=>{try{if(!svgString){console.warn(\"SVG string is empty.\");return\"\";}if(containerWidth<=0||containerHeight<=0){console.warn(\"Container dimensions are invalid.\");return\"\"// Cannot scale to zero or negative size\n;}const parser=new DOMParser;const svgDoc=parser.parseFromString(svgString,\"image/svg+xml\");const parserError=svgDoc.querySelector(\"parsererror\");if(parserError){console.error(\"SVG parsing error:\",parserError);throw new Error(\"Invalid SVG format\");}const pathElements=svgDoc.querySelectorAll(\"path\");const paths=Array.from(pathElements).map(path=>path.getAttribute(\"d\")).filter(d=>d!==null);if(paths.length===0){throw new Error(\"No paths found in SVG\");}// Get SVG dimensions\nconst svgElement=svgDoc.querySelector(\"svg\");const viewBox=svgElement?.getAttribute(\"viewBox\")?.split(\" \").map(Number);const svgWidth=parseFloat(svgElement?.getAttribute(\"width\")||\"100\");const svgHeight=parseFloat(svgElement?.getAttribute(\"height\")||\"100\");// Get original dimensions based on viewBox (preferred) or width/height\nlet originalWidth;let originalHeight;let viewBoxMinX=0;let viewBoxMinY=0;if(viewBox&&viewBox.length===4){viewBoxMinX=viewBox[0];viewBoxMinY=viewBox[1];originalWidth=viewBox[2];originalHeight=viewBox[3];}else{// Fallback to width/height, assuming viewBox starts at 0,0 if not specified\noriginalWidth=svgWidth;originalHeight=svgHeight;}if(originalWidth<=0||originalHeight<=0){console.error(\"Invalid original SVG dimensions (width/height or viewBox width/height must be positive).\");throw new Error(\"Invalid SVG dimensions\");}// Calculate scaling factors to fit container while maintaining aspect ratio ('meet')\nconst scaleX=containerWidth/originalWidth;const scaleY=containerHeight/originalHeight;const scale=Math.min(scaleX,scaleY)// Use the smaller scale factor to fit\n;// Calculate the dimensions of the scaled SVG content\nconst scaledWidth=originalWidth*scale;const scaledHeight=originalHeight*scale;// Calculate the translation offset needed to center the scaled content ('xMidYMid')\n// We also need to account for the viewBox minX/minY offset\nconst offsetX=(containerWidth-scaledWidth)/2-viewBoxMinX*scale;const offsetY=(containerHeight-scaledHeight)/2-viewBoxMinY*scale;// Scale, translate, and join all paths\nconst transformedPaths=paths.map(path=>scaleAndTranslateSvgPath(path,scale,offsetX,offsetY));const finalPath=transformedPaths.join(\" \");return finalPath;}catch(error){console.error(\"Error extracting paths from SVG:\",error);return\"\";}};// -------------------------------------------------------------- //\n// SVG PRESETS\n// -------------------------------------------------------------- //\nconst spiralSvg=`\n<svg width=\"554\" height=\"504\" viewBox=\"0 0 554 504\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M552.252 227.051C548.029 306.06 512.971 378.902 455.545 430.344C400.585 479.577 327.738 506.39 252.252 502.051C181.842 498.004 114.56 466.734 66.6361 412.667C22.0061 362.315 -2.09651 295.787 2.25209 227.051C6.32059 162.744 35.3062 101.999 84.3141 59.1129C130.089 19.0564 190.301 -2.3067 252.252 2.0509C309.676 6.09001 364.17 32.2761 402.512 76.7909C437.912 117.89 456.63 171.763 452.252 227.051C448.208 278.129 424.467 326.176 384.835 359.634C348.269 390.502 300.695 406.437 252.252 402.051C207.796 398.026 166.087 376.909 137.347 341.956C111.016 309.933 97.8551 268.651 102.252 227.051C106.263 189.106 124.83 153.774 155.025 129.824C182.472 108.054 217.447 97.6339 252.252 102.051C283.787 106.053 312.708 122.137 331.802 147.501C349.184 170.594 356.655 199.315 352.252 227.051C348.202 252.565 334.364 274.9 314.124 288.923C295.634 301.733 273.22 306.492 252.252 302.051C233.275 298.032 217.287 286.766 208.058 271.245C199.787 257.335 197.75 241.215 202.252 227.051C206.273 214.401 215.087 204.843 225.735 200.534C235.225 196.695 245.107 197.508 252.252 202.051C258.669 206.132 261.767 212.558 261.091 218.212\" stroke=\"white\" stroke-width=\"1\"/>\n</svg>\n`;const loopSvg=`\n<svg width=\"871\" height=\"295\" viewBox=\"0 0 871 295\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M1.08594 231.344C352.809 387.946 512.017 209.267 529.76 135.148C543.975 75.7694 504.152 0.618567 446.536 0.61853C388.986 0.618494 339.625 59.6711 355.081 135.148C372.658 220.984 539.76 378.328 869.94 231.344\" stroke=\"white\"/>\n</svg>\n`;const waveSvg=`\n<svg width=\"1255\" height=\"233\" viewBox=\"0 0 1255 233\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M1.20703 116.533C105.589 -36.9698 209.971 -36.9698 314.353 116.533C418.736 270.036 523.118 270.036 627.5 116.533C731.882 -36.9698 836.264 -36.9698 940.646 116.533C1045.03 270.036 1149.41 270.036 1253.79 116.533\" stroke=\"white\"/>\n</svg>\n`;const curlySvg=`\n<svg width=\"864\" height=\"839\" viewBox=\"0 0 864 839\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M1.23828 418.527C862.941 -138.096 -429.613 -138.096 432.09 418.527C1293.79 975.151 1.23828 979.368 862.941 418.527\" stroke=\"white\"/>\n</svg>\n`;const stripesSvg=`\n<svg width=\"1823\" height=\"756\" viewBox=\"0 0 1823 756\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M755.676 0.524414L1.20703 754.994M534.32 754.994L1288.79 0.524414M1821.9 0.52448L1067.43 754.994\" stroke=\"white\"/>\n</svg>\n`;TickerPath.displayName=\"Ticker Path\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TickerPath\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"400\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"200\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TickerPath_Prod.map"],"mappings":"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"}