{"version":3,"file":"RollingTextHover_Prod.Xs6QI3oh.mjs","names":["useRef","useState","useMemo","c"],"sources":["https:/framerusercontent.com/modules/FiiQ0BKlVUNzxXjo8hFs/wUGodkCBoGgkaR4i1Uvt/RollingTextHover_Prod.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion,useReducedMotion}from\"framer-motion\";// Framer resolves the Font control to family/weight/style on Canvas; other\n// render paths can hand over the raw default (variant only), so the variant is\n// mapped to a weight and the sans-serif default family is filled in here.\nconst VARIANT_WEIGHTS={Thin:100,\"Extra Light\":200,Light:300,Regular:400,Medium:500,Semibold:600,Bold:700,\"Extra Bold\":800,Black:900};function normalizeFont(font){const value={...FALLBACK_FONT,...font??{}};const{variant,...styleFont}=value;const resolved={...styleFont};if(typeof variant===\"string\"&&font&&font.fontWeight===undefined){const base=variant.replace(/ Italic$/,\"\");if(variant===\"Italic\"||variant===\"Regular Italic\"){resolved.fontWeight=400;}else if(VARIANT_WEIGHTS[base]!==undefined){resolved.fontWeight=VARIANT_WEIGHTS[base];}if(/Italic$/.test(variant)&&font.fontStyle===undefined){resolved.fontStyle=\"italic\";}}return resolved;}const DEFAULT_TEXT=\"Rolling Text\";const DEFAULT_COLOR=\"#FFFFFF\";// Framer's Font control default takes a variant; the family comes from\n// `defaultFontType` (sans-serif = Inter). The runtime fallback resolves the same\n// look when no font object is supplied.\nconst DEFAULT_FONT={fontSize:44,lineHeight:\"1.2em\",letterSpacing:\"0px\"};const FALLBACK_FONT={...DEFAULT_FONT,fontFamily:\"Inter\",fontWeight:500,fontStyle:\"normal\"};const DEFAULT_TRANSITION={type:\"tween\",ease:[.91,.1,.27,.96],duration:.7};// Reduced motion removes the interpolation entirely: poses settle at once.\nconst REDUCED_TRANSITION={type:\"tween\",duration:0,delay:0};function cssLength(value,fallback){if(typeof value===\"number\")return`${value}px`;if(typeof value===\"string\"&&value.trim())return value;return fallback;}// Color controls may deliver a plain string, a CSS token string\n// (`var(--token-…)` / `light-dark()`), or an object with value or light/dark\n// branches. The DOM resolves token strings itself, so only objects are unwrapped.\nfunction resolveColor(raw,fallback){if(typeof raw===\"string\")return raw.trim()?raw:fallback;if(raw&&typeof raw===\"object\"){if(typeof raw.value===\"string\"&&raw.value)return raw.value;if(typeof raw.light===\"string\"&&typeof raw.dark===\"string\"){return`light-dark(${raw.light}, ${raw.dark})`;}if(typeof raw.light===\"string\"&&raw.light)return raw.light;}return fallback;}function applyTransform(text,transform){if(transform===\"uppercase\")return text.toUpperCase();if(transform===\"lowercase\")return text.toLowerCase();if(transform===\"capitalize\"){// Word starts are found on the whole string before it is split into\n// per-character spans, so this matches native `text-transform`.\nreturn text.replace(/(^|\\s)(\\S)/g,(_m,lead,ch)=>lead+ch.toUpperCase());}return text;}/**\n * @framerIntrinsicWidth 248\n * @framerIntrinsicHeight 53\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function RollingText({style,text=DEFAULT_TEXT,font=FALLBACK_FONT,color=DEFAULT_COLOR,textTransform=\"none\",tag=\"p\",wrap=\"auto\",balance,truncate=false,lines=1,trigger=\"toggle\",toggle=false,start=\"top\",replay=false,delay=0,transition=DEFAULT_TRANSITION,stagger=30,reverse=false,userSelect=false,padding=\"0px\"}){const rootRef=useRef(null);const frameRef=useRef(null);const reducedMotion=useReducedMotion()===true;// Canvas, export and thumbnails show the settled text; only Preview and the\n// published site run the appear / layer-in-view roll.\nconst restricted=RenderTarget.hasRestrictions();const[fired,setFired]=useState(false);const resolvedFont=normalizeFont(font);const fontSizeStr=cssLength(resolvedFont.fontSize,\"44px\");const fontSizeNum=parseFloat(fontSizeStr)||44;const rawLineHeight=resolvedFont.lineHeight;let lineHeightPx=fontSizeNum*1.2;if(typeof rawLineHeight===\"number\"){lineHeightPx=fontSizeNum*rawLineHeight;}else if(typeof rawLineHeight===\"string\"){const value=parseFloat(rawLineHeight);if(!isNaN(value)){lineHeightPx=rawLineHeight.includes(\"px\")?value:fontSizeNum*value;}}const lineHeight=`${lineHeightPx}px`;const letterSpacing=cssLength(resolvedFont.letterSpacing,\"0px\");const textColor=resolveColor(color,DEFAULT_COLOR);const{textAlign,letterSpacing:_letterSpacing,lineHeight:_lineHeight,fontSize:_fontSize,...blockFont}=resolvedFont;const displayText=applyTransform(text??\"\",textTransform);const baseDuration=typeof transition?.duration===\"number\"?transition.duration:.5;const totalChars=Array.from(displayText).length;const staggerStep=totalChars>0?baseDuration/totalChars*(stagger/100):0;// Tokens are words or single whitespace characters; whitespace stays a\n// real text node so the block wraps between words like a native text layer.\n// (`white-space` stays normal: pre-wrap breaks Chrome's line-clamp ellipsis.)\nconst tokens=useMemo(()=>{const out=[];let index=0;for(const part of displayText.split(/(\\s)/)){if(!part)continue;const chars=Array.from(part);out.push({word:!/\\s/.test(part),chars,index});index+=chars.length;}return out;},[displayText]);useEffect(()=>{if(restricted||trigger!==\"inView\")return;const root=rootRef.current;if(!root)return;let triggered=false;const evaluate=()=>{frameRef.current=null;const rect=root.getBoundingClientRect();const viewportHeight=window.innerHeight;const point=start===\"top\"?rect.top:start===\"center\"?rect.top+rect.height/2:rect.bottom;const reached=point<=viewportHeight&&rect.bottom>0;const fullyOutside=rect.bottom<=0||rect.top>=viewportHeight;if(reached&&!triggered){triggered=true;setFired(true);}else if(fullyOutside&&replay&&triggered){triggered=false;setFired(false);}};// Reduced motion evaluates synchronously; otherwise scroll samples are\n// coalesced to one frame.\nconst schedule=reducedMotion?evaluate:()=>{if(frameRef.current===null){frameRef.current=window.requestAnimationFrame(evaluate);}};evaluate();window.addEventListener(\"scroll\",schedule,{passive:true,capture:true});window.addEventListener(\"resize\",schedule);return()=>{if(frameRef.current!==null){window.cancelAnimationFrame(frameRef.current);frameRef.current=null;}window.removeEventListener(\"scroll\",schedule,true);window.removeEventListener(\"resize\",schedule);};},[restricted,trigger,start,replay,reducedMotion]);useEffect(()=>{if(restricted||trigger!==\"appear\")return;setFired(false);// Commit the hidden pose first, then roll in on the next frame.\nconst frame=window.requestAnimationFrame(()=>setFired(true));return()=>window.cancelAnimationFrame(frame);},[restricted,trigger]);const rolled=toggle===true||toggle===\"rolled\";const revealed=trigger===\"toggle\"||restricted||fired;const pose=trigger===\"toggle\"&&rolled?\"up\":revealed?\"rest\":\"down\";// Toggle mounts in its state without rolling; appear / layer in view mount\n// hidden below the line so there is no completed-frame flash.\nconst initialPose=trigger===\"toggle\"||restricted?false:\"down\";// The hidden pose is never watched (text sits below its clipped line), so a\n// Replay reset snaps instead of running a roll nobody can see.\nconst timing=reducedMotion||pose===\"down\"?{startDelay:0,step:0,override:REDUCED_TRANSITION}:{startDelay:delay,step:staggerStep,override:undefined};const Tag=tag;const MotionSpan=motion.span;// Framer injects 100% on constrained axes. Fit Content omits that signal,\n// so its root and text block must expose their intrinsic single-line width.\nconst constrainedWidth=style?.width===\"100%\";const resolvedUserSelect=userSelect===true||userSelect===\"auto\"?\"auto\":\"none\";const blockStyle={...blockFont,fontSize:fontSizeStr,lineHeight,letterSpacing:0,color:textColor,margin:0,padding:0,textAlign:textAlign??\"center\",whiteSpace:constrainedWidth?\"normal\":\"nowrap\",width:constrainedWidth?\"100%\":\"max-content\",overflowWrap:\"normal\",wordBreak:\"normal\",userSelect:resolvedUserSelect,WebkitUserSelect:resolvedUserSelect};// Instances saved before 1.2 carry the removed Balance boolean: true → balance, false → auto\nconst textWrap=wrap===\"auto\"&&balance===true?\"balance\":wrap;blockStyle.textWrap=textWrap;if(truncate){blockStyle.display=\"-webkit-box\";blockStyle.WebkitBoxOrient=\"vertical\";blockStyle.WebkitLineClamp=Math.max(1,Math.round(lines));blockStyle.overflow=\"hidden\";}const cellStyle={display:\"inline-block\",verticalAlign:\"top\",height:lineHeight,overflow:\"hidden\",letterSpacing:0};const glyphStyle={display:\"block\",lineHeight,letterSpacing,// No backface-visibility here: it promotes each glyph to its own layer,\n// which Chrome's line clamp cannot hide behind the ellipsis.\ntextShadow:`0 ${lineHeight} 0 ${textColor}`};const variants={down:{y:lineHeightPx},rest:{y:0},up:{y:-lineHeightPx}};return /*#__PURE__*/_jsx(\"div\",{\"data-build\":\"rolling-text-hover-prod-20260930-01\",ref:rootRef,style:{position:\"relative\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",width:constrainedWidth?\"100%\":\"max-content\",minHeight:\"100%\",padding,boxSizing:\"border-box\"},children:/*#__PURE__*/_jsxs(Tag,{style:blockStyle,children:[/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",width:1,height:1,margin:-1,padding:0,overflow:\"hidden\",clip:\"rect(0 0 0 0)\",whiteSpace:\"nowrap\",border:0},children:displayText}),/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",children:tokens.map((token,t)=>{// Keys carry the trigger so a trigger change remounts the\n// glyphs in the right initial pose instead of tweening\n// from the previous mode's state.\nconst key=`${trigger}-${t}`;if(!token.word){if(token.chars[0]===\"\\n\")return /*#__PURE__*/_jsx(\"br\",{},key);return /*#__PURE__*/_jsx(\"span\",{style:{letterSpacing},children:token.chars.join(\"\")},key);}return(// Inline (not inline-block) so a line clamp can still\n// truncate inside the word with a native ellipsis;\n// nowrap keeps the word from breaking between cells.\n/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline\",whiteSpace:\"nowrap\",letterSpacing:0},children:token.chars.map((char,c)=>{const charIndex=token.index+c;const order=reverse?totalChars-1-charIndex:charIndex;return /*#__PURE__*/_jsx(\"span\",{style:cellStyle,children:/*#__PURE__*/_jsx(MotionSpan,{variants:variants,initial:initialPose,animate:pose,transition:{...transition,delay:timing.startDelay+timing.step*order,...timing.override},style:glyphStyle,children:char})},c);})},key));})})]})});}RollingText.displayName=\"Rolling Text\";addPropertyControls(RollingText,{text:{type:ControlType.String,title:\"Text\",defaultValue:DEFAULT_TEXT},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{...DEFAULT_FONT,variant:\"Medium\"}},color:{type:ControlType.Color,title:\"Color\",defaultValue:DEFAULT_COLOR},textTransform:{type:ControlType.Enum,title:\"Transform\",options:[\"none\",\"capitalize\",\"lowercase\",\"uppercase\"],optionTitles:[\"None\",\"Capitalize\",\"Lowercase\",\"Uppercase\"],defaultValue:\"none\"},tag:{type:ControlType.Enum,title:\"Tag\",options:[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"p\",\"span\",\"div\",\"label\",\"blockquote\"],optionTitles:[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"p\",\"span\",\"div\",\"label\",\"blockquote\"],defaultValue:\"p\"},wrap:{type:ControlType.Enum,title:\"Wrap\",options:[\"auto\",\"balance\",\"pretty\"],optionTitles:[\"Auto\",\"Balance\",\"Pretty\"],defaultValue:\"auto\"},truncate:{type:ControlType.Boolean,title:\"Truncate\",enabledTitle:\"Yes\",disabledTitle:\"No\",defaultValue:false},lines:{type:ControlType.Number,title:\"Lines\",min:1,step:1,unit:\"L\",displayStepper:true,defaultValue:1,hidden:props=>!props.truncate},trigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"appear\",\"inView\",\"toggle\"],optionTitles:[\"On appear\",\"Layer in view\",\"Toggle\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\",defaultValue:\"toggle\"},toggle:{type:ControlType.Boolean,title:\"State\",enabledTitle:\"Rolled\",disabledTitle:\"Default\",defaultValue:false,hidden:props=>props.trigger!==\"toggle\"},start:{type:ControlType.Enum,title:\"Start\",options:[\"top\",\"center\",\"bottom\"],optionTitles:[\"Top\",\"Center\",\"Bottom\"],displaySegmentedControl:true,defaultValue:\"top\",hidden:props=>props.trigger!==\"inView\"},replay:{type:ControlType.Boolean,title:\"Replay\",enabledTitle:\"Yes\",disabledTitle:\"No\",defaultValue:false,hidden:props=>props.trigger!==\"inView\"},delay:{type:ControlType.Number,title:\"Delay\",min:0,max:10,step:.1,unit:\"s\",displayStepper:true,defaultValue:0},transition:{type:ControlType.Transition,title:\"Transition\",defaultValue:DEFAULT_TRANSITION},stagger:{type:ControlType.Number,title:\"Stagger\",min:0,max:100,step:1,unit:\"%\",defaultValue:30},reverse:{type:ControlType.Boolean,title:\"Reverse\",enabledTitle:\"Reverse\",disabledTitle:\"Forward\",defaultValue:false},userSelect:{type:ControlType.Boolean,title:\"User select\",enabledTitle:\"Auto\",disabledTitle:\"None\",defaultValue:false},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"0px\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RollingText\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicHeight\":\"53\",\"framerIntrinsicWidth\":\"248\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RollingTextHover_Prod.map"],"mappings":"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"}