{"version":3,"file":"AvoidLayoutJumping_Prod.CaNIiNWn.mjs","names":["useState","useRef","_Fragment","useRef"],"sources":["https:/framerusercontent.com/modules/cUEs6mh7NPsCs9zUdI1V/YOrS5dbUJ4P8odVWhsD1/Stagger.js","https:/framerusercontent.com/modules/h8ioHyt4BUxuvVCE1Q10/aTM6mEMGlM19JjX8exDe/AvoidLayoutJumping_Prod.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useState,useRef,useLayoutEffect,createElement}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useAnimationControls,useInView}from\"framer-motion\";const easingPresets={smooth:[.44,0,.34,.98],snappy:[.68,0,0,1],bounce:[.34,1.56,.64,1],ease:[.25,.1,.25,1],linear:[0,0,1,1]};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function TextStagger(props){const{text,delay,duration,font,color,uppercase,tag=\"p\",distance=70,easing=\"smooth\",fade=false,style}=props;const[hasAnimated,setHasAnimated]=useState(false);const isStatic=useIsStaticRenderer();const[wrappedLines,setWrappedLines]=useState([]);const measureRef=useRef(null);const controls=useAnimationControls();const containerRef=useRef(null);const inView=useInView(containerRef);const fontFamily=font?.fontFamily||\"'BDO Grotesk', 'Inter', 'Helvetica Neue', Arial, sans-serif\";const lineHeight=font?.lineHeight||1.2;const textAlign=font?.textAlign||\"left\";const textTransform=uppercase?\"uppercase\":\"none\";const easingCurve=easingPresets[easing]||easingPresets.smooth;const hasManualBreaks=text?.includes(\"//\");const manualLines=hasManualBreaks?(text||\"\").split(\"//\").map(line=>line.trim()):[];useLayoutEffect(()=>{if(hasManualBreaks)return;if(!measureRef.current||typeof window===\"undefined\")return;const measureLines=()=>{const element=measureRef.current;if(!element)return;const range=document.createRange();const textNode=element.firstChild;if(!textNode||textNode.nodeType!==Node.TEXT_NODE)return;const lines=[];const fullText=text||\"\";let currentLine=\"\";let lastBottom=-1;for(let i=0;i<fullText.length;i++){range.setStart(textNode,0);range.setEnd(textNode,i+1);const rect=range.getBoundingClientRect();if(lastBottom===-1){lastBottom=rect.bottom;}if(rect.bottom>lastBottom+2){lines.push(currentLine);currentLine=fullText[i];lastBottom=rect.bottom;}else{currentLine+=fullText[i];}}if(currentLine)lines.push(currentLine);setWrappedLines(lines.length>0?lines:[fullText]);};measureLines();window.addEventListener(\"resize\",measureLines);return()=>window.removeEventListener(\"resize\",measureLines);},[text,font,style,hasManualBreaks]);const lines=hasManualBreaks?manualLines:wrappedLines;useEffect(()=>{if(!isStatic&&inView&&!hasAnimated){controls.start(i=>({y:0,...fade&&{opacity:1},transition:{delay:i*delay,duration,ease:easingCurve}}));setHasAnimated(true);}},[controls,delay,duration,isStatic,hasAnimated,inView,easingCurve,fade]);const initialState=isStatic?{y:0,...fade&&{opacity:1}}:{y:distance,...fade&&{opacity:0}};const resetStyles={margin:0,padding:0};const containerContent=lines.map((line,i)=>/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",overflow:\"hidden\",width:\"100%\",marginBottom:0,lineHeight,textAlign},children:/*#__PURE__*/_jsx(motion.span,{custom:i,initial:initialState,animate:isStatic?undefined:controls,style:{display:\"inline-block\",whiteSpace:\"pre-wrap\",...font,fontFamily,color,textTransform,clipPath:\"inset(0 0 0 0)\",willChange:\"transform\",lineHeight},children:line||\" \"})},i));return /*#__PURE__*/_jsxs(_Fragment,{children:[!hasManualBreaks&&/*#__PURE__*/_jsx(\"div\",{ref:measureRef,style:{position:\"absolute\",visibility:\"hidden\",pointerEvents:\"none\",whiteSpace:\"pre-wrap\",textTransform,textAlign,...font,fontFamily,width:style?.width||\"100%\"},\"aria-hidden\":\"true\",children:text}),/*#__PURE__*/createElement(tag,{ref:containerRef,style:{...resetStyles,...style,position:\"relative\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",color,textTransform,textAlign,...font,fontFamily}},containerContent)]});}addPropertyControls(TextStagger,{text:{type:ControlType.String,title:\"Content\",defaultValue:\"Editable\\nStaggered\\nText\",displayTextArea:true,placeholder:\"Use // for line break\"},tag:{type:ControlType.Enum,title:\"Tag\",options:[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"p\",\"span\",\"div\"],optionTitles:[\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\",\"Paragraph\",\"Span\",\"Div\"],defaultValue:\"p\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:40,lineHeight:\"1em\",letterSpacing:\"-0.02em\",variant:\"Regular\",textAlign:\"left\"}},uppercase:{type:ControlType.Boolean,title:\"Uppercase\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},distance:{type:ControlType.Number,title:\"Distance\",defaultValue:70,min:10,max:300,step:5,unit:\"px\"},delay:{type:ControlType.Number,title:\"Stagger\",defaultValue:.08,min:.01,max:1,step:.01,unit:\"s\"},duration:{type:ControlType.Number,title:\"Speed\",defaultValue:.5,min:.05,max:2,step:.01,unit:\"s\"},easing:{type:ControlType.Enum,title:\"Easing\",options:[\"smooth\",\"snappy\",\"bounce\",\"ease\",\"linear\"],optionTitles:[\"Smooth\",\"Snappy\",\"Bounce\",\"Ease\",\"Linear\"],defaultValue:\"smooth\"},fade:{type:ControlType.Boolean,title:\"Fade In\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextStagger\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Stagger.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef}from\"react\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n */export default function AvoidLayoutJumping({direction,style}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const ref=useRef(null);const rafId=useRef();const vertical=direction===\"vertical\"||direction===\"both\";const horizontal=direction===\"horizontal\"||direction===\"both\";useEffect(()=>{if(isCanvas)return;const parent=ref.current?.parentElement?.parentElement;if(!parent)return;const container=parent.parentElement;if(!container)return;const updateSize=()=>{const rect=parent.getBoundingClientRect();if(horizontal){container.style.width=`${rect.width}px`;}if(vertical){container.style.height=`${rect.height}px`;}rafId.current=requestAnimationFrame(updateSize);};// Start the RAF loop\nrafId.current=requestAnimationFrame(updateSize);return()=>{if(rafId.current){cancelAnimationFrame(rafId.current);}if(container){if(horizontal){container.style.width=\"\";}if(vertical){container.style.height=\"\";}}};},[direction]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...style}});}AvoidLayoutJumping.displayName=\"Layout Jump Preventer\";addPropertyControls(AvoidLayoutJumping,{direction:{type:ControlType.Enum,defaultValue:\"vertical\",options:[\"vertical\",\"horizontal\",\"both\"],optionTitles:[\"Vertical\",\"Horizontal\",\"Both\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\",// @ts-ignore\noptionIcons:[\"direction-vertical\",\"direction-horizontal\",\"direction-all\"],description:\"More components at [Framer University](https://frameruni.link/cc).\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AvoidLayoutJumping\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AvoidLayoutJumping_Prod.map"],"mappings":"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"}