{"version":3,"file":"RandomTextReveal.B3SFnvm3.mjs","names":["React.useRef","React.useState","React.useMemo"],"sources":["https:/framerusercontent.com/modules/w7bhVG3hMFdTprPkbowI/nXjGnjuI4szZBdaqh8rY/RandomTextReveal.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{motion,useAnimation}from\"framer-motion\";// @ts-ignore - In Framer runtime this module exists; we suppress type resolution locally\nimport{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";// Static maps/constants that don't depend on props\nconst TRIGGER_THRESHOLD_MAP={top:.1,center:.5,bottom:.9};// Change from named export to default export\nexport default function RandomTextReveal({text,color=\"#000000\",font={fontSize:\"20px\",fontWeight:400,letterSpacing:\"0em\",lineHeight:\"1.2em\",textAlign:\"left\",fontFamily:\"inherit\",fontStyle:\"normal\",textDecoration:\"none\",variant:\"Regular\"},splitBy=\"character\",trigger=\"top\",replay=false,opacityFrom=0,opacityTo=1,minDelay=0,maxDelay=1,easeType=\"easeInOut\",// Add new props for looping banner\nloop=false,speed=50}){const controls=useAnimation();const containerRef=React.useRef(null);const[isVisible,setIsVisible]=React.useState(false);const isStatic=useIsStaticRenderer();// If loop is enabled, render a looping banner\nif(loop){// Use a simple CSS animation for infinite horizontal scroll\nconst bannerText=text||\"Random Delay Text\";const fontSize=font.fontSize||\"20px\";const animationDuration=speed>0?`${speed}s`:\"50s\";return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",overflow:\"hidden\",position:\"relative\",background:\"transparent\",display:\"flex\",alignItems:\"center\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"inline-block\",whiteSpace:\"nowrap\",animation:`scrollBanner ${animationDuration} linear infinite`,color,fontSize:font.fontSize,fontWeight:font.fontWeight,letterSpacing:font.letterSpacing,lineHeight:font.lineHeight,fontFamily:font.fontFamily,fontStyle:font.fontStyle,textDecoration:font.textDecoration},children:[bannerText,\" \\xa0 \",bannerText,\" \\xa0 \",bannerText,\" \\xa0 \",bannerText]}),/*#__PURE__*/_jsx(\"style\",{children:`\n                    @keyframes scrollBanner {\n                        0% { transform: translateX(0); }\n                        100% { transform: translateX(-50%); }\n                    }\n                `})]});}React.useEffect(()=>{// In Framer editor canvas, always show content and skip observers/animations\nif(isStatic){controls.start(\"visible\");return;}if(!containerRef.current)return;const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){setIsVisible(true);if(!replay)observer.disconnect();}else if(replay){setIsVisible(false);}},{threshold:TRIGGER_THRESHOLD_MAP[trigger]});observer.observe(containerRef.current);return()=>observer.disconnect();},[isStatic,controls,trigger,replay]);React.useEffect(()=>{if(isStatic)return;if(isVisible){controls.start(\"visible\");}else if(replay){controls.start(\"hidden\");}},[isStatic,isVisible,controls,replay]);const tokens=React.useMemo(()=>{if(splitBy===\"word\"){return text.split(/(\\s+)/);}return text.split(\"\");},[text,splitBy]);const randomDelays=React.useMemo(()=>tokens.map(()=>Math.random()*(maxDelay-minDelay)+minDelay),[tokens,minDelay,maxDelay]);const clampedOpacityFrom=React.useMemo(()=>Math.max(0,Math.min(1,opacityFrom)),[opacityFrom]);const clampedOpacityTo=React.useMemo(()=>Math.max(0,Math.min(1,opacityTo)),[opacityTo]);const letterVariants=React.useMemo(()=>({hidden:{opacity:clampedOpacityFrom},visible:custom=>({opacity:clampedOpacityTo,transition:{delay:custom,duration:.3,ease:easeType}})}),[easeType,clampedOpacityFrom,clampedOpacityTo]);const justifyMap={left:\"flex-start\",center:\"center\",right:\"flex-end\",justify:\"space-between\"};const alignContentMap={left:\"flex-start\",center:\"center\",right:\"flex-end\",justify:\"space-between\"};return /*#__PURE__*/_jsx(motion.div,{ref:containerRef,initial:isStatic?\"visible\":\"hidden\",animate:controls,style:{display:\"flex\",width:\"100%\",color,fontSize:font.fontSize,fontWeight:font.fontWeight,letterSpacing:font.letterSpacing,lineHeight:font.lineHeight,fontFamily:font.fontFamily,fontStyle:font.fontStyle,textDecoration:font.textDecoration,userSelect:\"none\",flexWrap:\"wrap\",justifyContent:justifyMap[font.textAlign],alignContent:alignContentMap[font.textAlign]},children:tokens.map((char,i)=>/*#__PURE__*/_jsx(motion.span,{custom:randomDelays[i],variants:letterVariants,style:{marginRight:splitBy===\"character\"&&char===\" \"?parseFloat(font.fontSize)/3:0},children:char},i))});}addPropertyControls(RandomTextReveal,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Random Delay Text\",multiline:true},splitBy:{type:ControlType.Enum,title:\"Split By\",options:[\"character\",\"word\"],optionTitles:[\"Character\",\"Word\"],defaultValue:\"character\"},trigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"top\",\"center\",\"bottom\"],optionTitles:[\"Top (≥10%)\",\"Center (≥50%)\",\"Bottom (≥90%)\"],defaultValue:\"top\"},replay:{type:ControlType.Boolean,title:\"Replay\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},opacityFrom:{type:ControlType.Number,title:\"Opacity From\",defaultValue:0,min:0,max:1,step:.01},opacityTo:{type:ControlType.Number,title:\"Opacity To\",defaultValue:1,min:0,max:1,step:.01},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontSize:\"20px\",fontWeight:400,letterSpacing:\"0em\",lineHeight:\"1.2em\",textAlign:\"left\",fontFamily:\"inherit\",fontStyle:\"normal\",textDecoration:\"none\",variant:\"Regular\"},controls:\"extended\",defaultFontType:\"sans-serif\"},minDelay:{type:ControlType.Number,title:\"Min Delay (s)\",defaultValue:0,min:0,max:2,step:.01},maxDelay:{type:ControlType.Number,title:\"Max Delay (s)\",defaultValue:1,min:0,max:5,step:.01},easeType:{type:ControlType.Enum,title:\"Easing\",options:[\"linear\",\"easeIn\",\"easeOut\",\"easeInOut\",\"circIn\",\"circOut\",\"circInOut\",\"backIn\",\"backOut\",\"backInOut\"],defaultValue:\"easeInOut\"},loop:{type:ControlType.Boolean,title:\"Loop Banner\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},speed:{type:ControlType.Number,title:\"Loop Speed (s)\",defaultValue:50,min:5,max:120,step:1,hidden:props=>!props.loop}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RandomTextReveal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RandomTextReveal.map"],"mappings":"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"}