{"version":3,"file":"DynamicText.BOrMIO-L.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/avwkNBBzsEKtjP5XxbM4/6D4z3LnoxpKTHeYCatOI/DynamicText.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{motion}from\"framer-motion\";import{useEffect,useRef,useState}from\"react\";// Roboto Flex with variable wght (100-1000) and wdth (25-151) axes.\nconst FONT_HREF=\"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wdth,wght@8..144,25..151,100..1000&display=swap\";const FONT_LINK_ID=\"fluid-line-roboto-flex\";function useFontReady(){const[ready,setReady]=useState(false);useEffect(()=>{let alive=true;const confirmFont=()=>{if(!alive)return;const done=()=>{if(alive)setReady(true);};if(document.fonts&&document.fonts.load){// We must ask for the font at a NON-DEFAULT stretch so the\n// variable face is preloaded. Asking just for the family at\n// weight 400 stretch 100% could resolve against a static\n// face that Framer registers elsewhere on the site.\ndocument.fonts.load(\"italic 16px 'Roboto Flex'\").then(done,done);}else{done();}};let link=document.getElementById(FONT_LINK_ID);if(!link){link=document.createElement(\"link\");link.id=FONT_LINK_ID;link.rel=\"stylesheet\";link.href=FONT_HREF;document.head.appendChild(link);}if(link.sheet){confirmFont();return()=>{alive=false;};}const onLoad=()=>confirmFont();link.addEventListener(\"load\",onLoad);link.addEventListener(\"error\",onLoad);const fallback=setTimeout(confirmFont,1500);return()=>{alive=false;clearTimeout(fallback);link.removeEventListener(\"load\",onLoad);link.removeEventListener(\"error\",onLoad);};},[]);return ready;}export default function FluidLine(props){const fontReady=useFontReady();const containerRef=useRef(null);const lineRef=useRef(null);const[weight,setWeight]=useState(600);const[wdth,setWdth]=useState(100);const[arrowStroke,setArrowStroke]=useState(12);const[hovered,setHovered]=useState(false);useEffect(()=>{if(!fontReady)return;let frame=null;let alive=true;const timers=[];const fit=()=>{if(!alive||!containerRef.current||!lineRef.current)return;const vw=window.innerWidth;const t=Math.max(0,Math.min(1,(vw-props.minViewport)/(props.maxViewport-props.minViewport)));const newWeight=Math.round(props.minWeight+(props.maxWeight-props.minWeight)*t);const wt=(newWeight-props.minWeight)/(props.maxWeight-props.minWeight);const newStroke=+(props.minStroke+wt*(props.maxStroke-props.minStroke)).toFixed(1);const target=containerRef.current.offsetWidth;if(target<1)return;// ROOT-CAUSE FIX:\n//\n// Framer registers competing STATIC \"Roboto Flex\" font faces\n// (stretch:100%, weights 400/500/700) on pages that use the\n// typeface. After client-side navigation through such a page,\n// those static faces persist in document.fonts and compete with\n// our variable face during font *selection*.\n//\n// `font-variation-settings` is a POST-selection axis control -\n// it has no effect if the browser picks a static face. The\n// browser's font-selection algorithm uses font-style /\n// font-weight / font-stretch as CSS properties. When we leave\n// those at their defaults (normal / 400 / 100%), a static face\n// matches all three criteria exactly and is preferred over the\n// variable face whose ranges merely cover the same values.\n//\n// Setting `font-stretch` to the wdth percentage and\n// `font-weight` to the requested weight forces the browser to\n// pick the variable face (only it covers stretch values other\n// than 100% and weight values other than the static ones), so\n// the wdth axis actually applies.\nconst line=lineRef.current;let w=100;for(let i=0;i<12;i++){line.style.fontStretch=`${w}%`;line.style.fontWeight=String(newWeight);line.style.fontVariationSettings=`'wght' ${newWeight}, 'wdth' ${w}`;void line.offsetWidth;const current=line.offsetWidth;if(current===0)break;const ratio=target/current;if(Math.abs(ratio-1)<.002)break;w=Math.max(25,Math.min(151,w*ratio));}setWeight(newWeight);setArrowStroke(newStroke);setWdth(Math.round(w*10)/10);};const schedule=()=>{if(frame)cancelAnimationFrame(frame);frame=requestAnimationFrame(fit);};schedule();// Re-fit a few times across the view-transition window so a transient\n// layout state during a client-side navigation can't lock in a wrong\n// result. With the font-selection fix above, even an early fit will\n// already be hitting the variable face - these are belt-and-braces.\nconst RETRY_DELAYS=[60,200,600,1200,2200];RETRY_DELAYS.forEach(d=>timers.push(setTimeout(schedule,d)));window.addEventListener(\"resize\",schedule);const ro=new ResizeObserver(schedule);ro.observe(containerRef.current);// Re-fit whenever document.fonts changes: Framer may register new\n// faces mid-session as the user navigates to other pages. Even\n// though the font-stretch fix prevents wrong selection, fitting\n// after the registration change keeps measurements honest.\nlet onFontsChange=null;if(document.fonts&&document.fonts.addEventListener){onFontsChange=()=>schedule();document.fonts.addEventListener(\"loadingdone\",onFontsChange);}const onPageReveal=()=>schedule();window.addEventListener(\"pagereveal\",onPageReveal);const onPageShow=()=>schedule();window.addEventListener(\"pageshow\",onPageShow);return()=>{alive=false;window.removeEventListener(\"resize\",schedule);window.removeEventListener(\"pagereveal\",onPageReveal);window.removeEventListener(\"pageshow\",onPageShow);if(onFontsChange&&document.fonts){document.fonts.removeEventListener(\"loadingdone\",onFontsChange);}ro.disconnect();if(frame)cancelAnimationFrame(frame);timers.forEach(clearTimeout);};},[fontReady,props.text,props.showArrow,props.minFontSize,props.vwFontSize,props.maxFontSize,props.minViewport,props.maxViewport,props.minWeight,props.maxWeight,props.minStroke,props.maxStroke,props.arrowSize,props.arrowGap,props.arrowOffset]);const fontSize=`clamp(${props.minFontSize}px, ${props.vwFontSize}vw, ${props.maxFontSize}px)`;const displayColor=hovered?props.hoverColor:props.color;const letters=Array.from(props.text);const lineVariants={initial:{},animate:{transition:{staggerChildren:props.stagger,delayChildren:props.delay}},exit:{transition:{staggerChildren:props.stagger*.6,staggerDirection:1}}};const itemVariants={initial:{y:\"-1em\"},animate:{y:\"0em\",transition:{duration:props.duration,ease:[.22,1,.36,1]}},exit:{y:\"-1em\",transition:{duration:props.duration*.6,ease:[.7,0,.84,0]}}};return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\"},children:/*#__PURE__*/_jsxs(motion.span,{ref:lineRef,variants:lineVariants,initial:\"initial\",animate:fontReady?\"animate\":\"initial\",exit:\"exit\",onHoverStart:()=>setHovered(true),onHoverEnd:()=>setHovered(false),onTapStart:()=>setHovered(true),onTap:()=>setHovered(false),onTapCancel:()=>setHovered(false),style:{display:\"inline-block\",overflow:\"hidden\",whiteSpace:\"nowrap\",textTransform:\"uppercase\",lineHeight:props.lineHeight,fontSize:fontSize,color:displayColor,fontFamily:\"'Roboto Flex', system-ui, sans-serif\",// font-stretch and font-weight as CSS properties (NOT just\n// inside font-variation-settings) are what force the\n// browser to pick the variable face during font selection.\n// See the long comment in the fit effect above.\nfontStretch:`${wdth}%`,fontWeight:weight,fontVariationSettings:`'wght' ${weight}, 'wdth' ${wdth}`,verticalAlign:\"top\",transition:\"color 0.2s ease\"},children:[letters.map((letter,i)=>/*#__PURE__*/_jsx(motion.span,{variants:itemVariants,style:{display:\"inline-block\",paddingRight:\"0.04em\",marginRight:\"-0.04em\"},children:letter===\" \"?\"\\xa0\":letter},`letter-${i}`)),props.showArrow&&/*#__PURE__*/_jsx(motion.span,{variants:itemVariants,style:{display:\"inline-block\",height:`${props.arrowSize}em`,width:`${props.arrowSize}em`,marginLeft:`${props.arrowGap}em`,verticalAlign:`${props.arrowOffset}em`},children:/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 71 71\",xmlns:\"http://www.w3.org/2000/svg\",fill:\"none\",style:{width:\"100%\",height:\"100%\",display:\"block\",overflow:\"visible\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M 10 61 L 61 10 M 10 10 L 61 10 L 61 61\",stroke:\"currentColor\",strokeLinecap:\"butt\",strokeLinejoin:\"miter\",strokeWidth:arrowStroke})})})]})});}FluidLine.defaultProps={text:\"SOUNDS LIKE\",showArrow:false,color:\"#0a0a0a\",hoverColor:\"#888888\",minFontSize:56,vwFontSize:20,maxFontSize:260,lineHeight:.85,minViewport:320,maxViewport:1920,minWeight:300,maxWeight:950,minStroke:6,maxStroke:18,arrowSize:.5,arrowGap:.08,arrowOffset:0,duration:.55,stagger:.035,delay:0};addPropertyControls(FluidLine,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"SOUNDS LIKE\"},showArrow:{type:ControlType.Boolean,title:\"Arrow\",defaultValue:false},color:{type:ControlType.Color,title:\"Colour\",defaultValue:\"#0a0a0a\"},hoverColor:{type:ControlType.Color,title:\"Hover Colour\",defaultValue:\"#888888\"},minFontSize:{type:ControlType.Number,title:\"Min Font px\",defaultValue:56,min:8,max:500,step:1},vwFontSize:{type:ControlType.Number,title:\"Font vw\",defaultValue:20,min:1,max:50,step:.5},maxFontSize:{type:ControlType.Number,title:\"Max Font px\",defaultValue:260,min:8,max:1e3,step:1},lineHeight:{type:ControlType.Number,title:\"Line Height\",defaultValue:.85,min:.5,max:2,step:.01},minViewport:{type:ControlType.Number,title:\"Min Viewport\",defaultValue:320,min:100,max:2e3},maxViewport:{type:ControlType.Number,title:\"Max Viewport\",defaultValue:1920,min:200,max:4e3},minWeight:{type:ControlType.Number,title:\"Min Weight\",defaultValue:300,min:100,max:1e3},maxWeight:{type:ControlType.Number,title:\"Max Weight\",defaultValue:950,min:100,max:1e3},minStroke:{type:ControlType.Number,title:\"Min Stroke\",defaultValue:6,min:1,max:50,step:.5},maxStroke:{type:ControlType.Number,title:\"Max Stroke\",defaultValue:18,min:1,max:50,step:.5},arrowSize:{type:ControlType.Number,title:\"Arrow Size\",defaultValue:.5,min:.1,max:2,step:.05},arrowGap:{type:ControlType.Number,title:\"Arrow Gap\",defaultValue:.08,min:-.5,max:1,step:.02},arrowOffset:{type:ControlType.Number,title:\"Arrow Offset\",defaultValue:0,min:-1,max:1,step:.01},duration:{type:ControlType.Number,title:\"Anim Duration\",defaultValue:.55,min:.1,max:3,step:.05},stagger:{type:ControlType.Number,title:\"Anim Stagger\",defaultValue:.035,min:0,max:.3,step:.005},delay:{type:ControlType.Number,title:\"Anim Delay\",defaultValue:0,min:0,max:5,step:.05}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FluidLine\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DynamicText.map"],"mappings":"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"}