{"version":3,"file":"TextPath.CQL2eYPk.mjs","names":["useState","useId","useRef","useMemo"],"sources":["https:/framerusercontent.com/modules/LJOLpqVmY62JDqmCt7Au/TbwjBJC0nC8DTFFIzoBr/TextPath.js"],"sourcesContent":["// Text animation along a curved path with customizable styling and speed\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState,startTransition,useMemo,useId,useRef}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function TextPath(props){const{text=\"and booking travel \",textCase=\"none\",font,color=\"#D3FF33\",speed=5,scaleToViewport=true,viewBox=\"0 0 1000 1000\",preserveAspectRatio=\"xMidYMid meet\",backgroundColor=\"transparent\",padding=0,paddingTop=0,paddingBottom=0,svgFile=\"\",pathIndex=0}=props;const[offset,setOffset]=useState(0);const[repeatCount,setRepeatCount]=useState(40);const[cycleLength,setCycleLength]=useState(1);const[customPathData,setCustomPathData]=useState(\"\");const isStatic=useIsStaticRenderer();const pathId=useId();const pathRef=useRef(null);const measureTextRef=useRef(null);const defaultPathData=\"M-100,100 C100,250 300,-50 500,100 S900,-50 1100,100\";const pathData=useMemo(()=>{return customPathData&&customPathData.trim().length>0?customPathData:defaultPathData;},[customPathData]);const baseText=useMemo(()=>{const raw=(text??\"\").trim();const t=raw.length>0?raw:\" \";const cased=textCase===\"upper\"?t.toUpperCase():textCase===\"lower\"?t.toLowerCase():t;return cased+\" \";},[text,textCase]);const repeatedText=useMemo(()=>{const count=Math.max(1,Math.min(200,repeatCount));return baseText.repeat(count);},[baseText,repeatCount]);// Use the Font control object directly (Framer resolves variant -> fontWeight/fontStyle)\nconst fontStyles=useMemo(()=>{const fallback={fontSize:\"40px\",fontWeight:700,letterSpacing:\"2px\",lineHeight:\"1em\",fontFamily:\"Inter, sans-serif\"};if(!font)return fallback;return{...fallback,...font};},[font]);useEffect(()=>{if(typeof window===\"undefined\")return;let cancelled=false;const loadSvg=async()=>{if(!svgFile||svgFile.trim().length===0){startTransition(()=>setCustomPathData(\"\"));return;}try{const res=await fetch(svgFile);const svgText=await res.text();const doc=new DOMParser().parseFromString(svgText,\"image/svg+xml\");const paths=Array.from(doc.querySelectorAll(\"path\"));const idx=Math.max(0,Math.min(paths.length-1,Math.floor(pathIndex)));const d=paths[idx]?.getAttribute(\"d\")??\"\";if(!cancelled){startTransition(()=>setCustomPathData(d||\"\"));}}catch(e){if(!cancelled){startTransition(()=>setCustomPathData(\"\"));}}};loadSvg();return()=>{cancelled=true;};},[svgFile,pathIndex]);useEffect(()=>{if(isStatic)return;if(typeof window===\"undefined\")return;if(!pathRef.current||!measureTextRef.current)return;const pathLength=pathRef.current.getTotalLength?.()??0;const baseTextLength=measureTextRef.current.getComputedTextLength?.()??0;if(!isFinite(pathLength)||pathLength<=0||!isFinite(baseTextLength)||baseTextLength<=0)return;const nextRepeatCount=Math.max(3,Math.min(200,Math.ceil(pathLength/baseTextLength)+3));startTransition(()=>{setRepeatCount(nextRepeatCount);setCycleLength(baseTextLength);});},[baseText,fontStyles,isStatic,viewBox,preserveAspectRatio,pathData]);useEffect(()=>{if(isStatic)return;if(typeof window===\"undefined\")return;if(!isFinite(cycleLength)||cycleLength<=0)return;let animationFrame=0;let lastTime=window.performance?.now?.()??Date.now();const animate=time=>{const delta=time-lastTime;lastTime=time;const distance=speed*delta/100;startTransition(()=>{setOffset(prev=>(prev+distance)%cycleLength);});animationFrame=window.requestAnimationFrame(animate);};animationFrame=window.requestAnimationFrame(animate);return()=>window.cancelAnimationFrame(animationFrame);},[speed,cycleLength,isStatic]);const effectiveStrokeWidth=useMemo(()=>{const top=Math.max(0,paddingTop);const bottom=Math.max(0,paddingBottom);const hasAsymmetric=top>0||bottom>0;if(hasAsymmetric)return top+bottom;return Math.max(0,padding);},[padding,paddingTop,paddingBottom]);const strokeShiftY=useMemo(()=>{const top=Math.max(0,paddingTop);const bottom=Math.max(0,paddingBottom);const hasAsymmetric=top>0||bottom>0;if(!hasAsymmetric)return 0;return(bottom-top)/2;},[paddingTop,paddingBottom]);return /*#__PURE__*/_jsx(\"div\",{style:{...containerStyle},children:/*#__PURE__*/_jsxs(\"svg\",{viewBox:viewBox,preserveAspectRatio:scaleToViewport?\"xMidYMid slice\":preserveAspectRatio,style:{width:\"100%\",height:\"100%\",overflow:scaleToViewport?\"hidden\":\"visible\"},children:[/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsx(\"path\",{ref:pathRef,id:pathId,d:pathData})}),effectiveStrokeWidth>0&&backgroundColor!==\"transparent\"&&/*#__PURE__*/_jsx(\"use\",{href:`#${pathId}`,fill:\"none\",stroke:backgroundColor,strokeWidth:effectiveStrokeWidth,strokeLinecap:\"round\",strokeLinejoin:\"round\",transform:strokeShiftY!==0?`translate(0 ${strokeShiftY})`:undefined}),/*#__PURE__*/_jsx(\"text\",{ref:measureTextRef,style:{...fontStyles,opacity:0,pointerEvents:\"none\"},x:-9999,y:-9999,\"aria-hidden\":\"true\",children:baseText}),/*#__PURE__*/_jsx(\"text\",{fill:color,style:fontStyles,children:/*#__PURE__*/_jsx(\"textPath\",{href:`#${pathId}`,startOffset:`${-offset}px`,dy:\"0.35em\",children:repeatedText})})]})});}const containerStyle={width:\"100%\",height:\"100%\",display:\"flex\",placeItems:\"center\",placeContent:\"center\",backgroundColor:\"transparent\",overflow:\"visible\",position:\"relative\"};addPropertyControls(TextPath,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"and booking travel \"},textCase:{type:ControlType.Enum,title:\"Case\",options:[\"none\",\"upper\",\"lower\"],optionTitles:[\"As typed\",\"UPPER\",\"lower\"],defaultValue:\"none\"},scaleToViewport:{type:ControlType.Boolean,title:\"Scale\",defaultValue:true,enabledTitle:\"Cover\",disabledTitle:\"Custom\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"40px\",variant:\"Bold\",letterSpacing:\"2px\",lineHeight:\"1em\"}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#D3FF33\"},speed:{type:ControlType.Number,title:\"Speed\",min:0,max:50,defaultValue:5},viewBox:{type:ControlType.String,title:\"viewBox\",defaultValue:\"0 0 1000 1000\"},svgFile:{type:ControlType.File,title:\"SVG File\",allowedFileTypes:[\"svg\"]},pathIndex:{type:ControlType.Number,title:\"Path Index\",defaultValue:0,min:0,max:20,step:1,hidden:({svgFile})=>!svgFile||svgFile.length===0},backgroundColor:{type:ControlType.Color,title:\"Path Stroke\",defaultValue:\"transparent\"},padding:{type:ControlType.Number,title:\"Stroke Width\",defaultValue:0,min:0,max:200,step:1,unit:\"\"},paddingTop:{type:ControlType.Number,title:\"Stroke Top\",defaultValue:0,min:0,max:200,step:1,unit:\"\"},paddingBottom:{type:ControlType.Number,title:\"Stroke Bottom\",defaultValue:0,min:0,max:200,step:1,unit:\"\"},preserveAspectRatio:{type:ControlType.Enum,title:\"Aspect\",options:[\"none\",\"xMinYMin meet\",\"xMidYMin meet\",\"xMaxYMin meet\",\"xMinYMid meet\",\"xMidYMid meet\",\"xMaxYMid meet\",\"xMinYMax meet\",\"xMidYMax meet\",\"xMaxYMax meet\",\"xMinYMin slice\",\"xMidYMin slice\",\"xMaxYMin slice\",\"xMinYMid slice\",\"xMidYMid slice\",\"xMaxYMid slice\",\"xMinYMax slice\",\"xMidYMax slice\",\"xMaxYMax slice\"],defaultValue:\"xMidYMid meet\",hidden:({scaleToViewport})=>scaleToViewport}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextPath\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextPath.map"],"mappings":"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"}