{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/bjUTEQt5uFu8cIOVtWXD/1JUDrjekvVZ3bNFl775A/FramerIcon.js", "ssg:https://framerusercontent.com/modules/FiiQ0BKlVUNzxXjo8hFs/BDeIULpeB9kBv3zq3U1w/RollingTextHover_Prod.js"],
  "sourcesContent": ["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";const DEFAULT_COLOR=\"#1570EF\";const DEFAULT_SVG=`<svg viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"m13.076 12.21 3.098 3.098a1.25 1.25 0 0 0 1.768 0l3.424-3.424a1.25 1.25 0 0 0 0-1.768l-3.424-3.424a1.25 1.25 0 0 0-1.768 0L13.076 9.79l4.902.903c.341.063.341.552 0 .614l-4.902.903Zm-3.206.786-3.178 3.178a1.25 1.25 0 0 0 0 1.768l3.424 3.424a1.25 1.25 0 0 0 1.768 0l3.424-3.424a1.25 1.25 0 0 0 0-1.768l-3.043-3.043-.878 4.768c-.063.34-.552.34-.615 0l-.902-4.903ZM6.692 4.058a1.25 1.25 0 0 0 0 1.768l3.177 3.178.903-4.903c.063-.34.552-.34.615 0l.878 4.768 3.043-3.043a1.25 1.25 0 0 0 0-1.768L11.884.634a1.25 1.25 0 0 0-1.768 0L6.692 4.058ZM.634 10.116a1.25 1.25 0 0 0 0 1.768l3.424 3.424a1.25 1.25 0 0 0 1.768 0l3.123-3.122-4.768-.879c-.341-.063-.341-.552 0-.614l4.768-.879-3.123-3.122a1.25 1.25 0 0 0-1.768 0L.634 10.116Z\" fill=\"#1570EF\"/></svg>`;const DEFAULT_STROKE_WIDTH=1.5;/*\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n *\n * @framerIntrinsicHeight 24\n * @framerIntrinsicWidth 24\n */export default function FramerIcons(props){const customizedSvg=getCustomizedSVG(props.svg,props.color,props.strokeWidth);return /*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{display:\"flex\",maxWidth:\"100%\",maxHeight:\"100%\",alignItems:\"center\",justifyContent:\"center\",...props.style},dangerouslySetInnerHTML:{__html:customizedSvg}});}addPropertyControls(FramerIcons,{svg:{title:\"SVG\",type:ControlType.String,defaultValue:DEFAULT_SVG},strokeWidth:{type:ControlType.Number,step:.25,min:.5,max:2,defaultValue:DEFAULT_STROKE_WIDTH,hidden:props=>hideStrokeWidth(props.svg)},color:{type:ControlType.Color,defaultValue:DEFAULT_COLOR,description:\"By [FramerIcons](https://www.framericons.com?utm=FramerIconComponent)\"}});// hide if no stroke-width or all stroke-widths are 0\nfunction hideStrokeWidth(svg){const strokeWidthMatch=svg.match(/stroke-width=\"([^\"]+)\"/g);return!strokeWidthMatch||strokeWidthMatch.every(match=>match===\"0\");}function getCustomizedSVG(svg,color=DEFAULT_COLOR,strokeWidth=DEFAULT_STROKE_WIDTH){let svgAttributes=svg.match(/<svg[^>]*>/)?.[0];if(!svgAttributes){svg=DEFAULT_SVG;svgAttributes=svg.match(/<svg[^>]*>/)?.[0];}const width=svgAttributes.match(/width=\"([^\"]*)\"/)?.[1];const height=svgAttributes.match(/height=\"([^\"]*)\"/)?.[1];const viewBox=svgAttributes.match(/viewBox=\"([^\"]*)\"/)?.[1]?.split(\" \");const viewBoxWidth=viewBox?.[2];const viewBoxHeight=viewBox?.[3];if(width&&height){svg=svg.replace(/width=\"([^\"]*)\"/,`width=\"100%\"`);svg=svg.replace(/height=\"([^\"]*)\"/,`height=\"100%\"`);}else{svg=svg.replace(/<svg/,`<svg width=\"100%\" height=\"100%\"`);}let hasElementsWithValidColors=false;if(svg.includes('fill=\"')||svg.includes('stroke=\"')){svg=svg.replace(/(fill|stroke)=\"([^\"]+)\"/g,(match,attr,value)=>{if(value===\"none\"||value===\"transparent\"){return match;}// For iconsax -> Crypto -> Bulk\nif(value===\"white\"){return\"\";}hasElementsWithValidColors=true;return`${attr}=\"${color}\"`;});}if(!hasElementsWithValidColors){svg=svg.replace(/<(path|circle|rect|line|polygon|polyline) /g,match=>`<${match.slice(1)} fill=\"${color}\" `);}svg=svg.replace(/stroke-width=\"([^\"]+)\"/g,(match,value)=>{if(value===\"0\"){return match;}return`stroke-width=\"${strokeWidth}\"`;});return svg;}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerIcons\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicWidth\":\"24\",\"framerDisableUnlink\":\"*\",\"framerIntrinsicHeight\":\"24\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FramerIcon.map", "import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{motion}from\"framer-motion\";// --- Helper Functions ---\nconst uuidv4=()=>{return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,c=>{const r=Math.random()*16|0;const v=c===\"x\"?r:r&3|8;return v.toString(16);});};// --- Component ---\n/**\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 50\n * @framerDisableUnlink\n */export default function RollingText({text,transition,stagger,reverse,font,color,textTransform,tag,padding}){const[isHovered,setIsHovered]=useState(false);const innerClassName=`rolling-text-inner-${uuidv4()}`;const Tag=tag;const fontSizeStr=font?.fontSize??\"16px\";const letterSpacingStr=font?.letterSpacing??\"0px\";const rawLineHeight=font?.lineHeight;const fontFamily=font?.fontFamily??\"Inter\";const fontSizeNum=parseInt(fontSizeStr,10)||16;let absoluteLineHeightPx;if(typeof rawLineHeight===\"number\"){absoluteLineHeightPx=fontSizeNum*rawLineHeight;}else if(typeof rawLineHeight===\"string\"&&rawLineHeight.includes(\"em\")){const emValue=parseFloat(rawLineHeight)||1.2;absoluteLineHeightPx=fontSizeNum*emValue;}else if(typeof rawLineHeight===\"string\"){const pxValue=parseFloat(rawLineHeight);absoluteLineHeightPx=isNaN(pxValue)?rawLineHeight:`${pxValue}px`;}else{absoluteLineHeightPx=fontSizeNum*1.2;}const absoluteLineHeightStr=typeof absoluteLineHeightPx===\"number\"?`${absoluteLineHeightPx}px`:absoluteLineHeightPx;const yOffset=`-${absoluteLineHeightStr}`;const styles=`\n    .${innerClassName} {\n      --font-size: ${fontSizeStr};\n      --text: ${color};\n      --line-height-abs: ${absoluteLineHeightStr};\n      box-sizing: border-box; margin: 0; padding: 0; vertical-align: top;\n      display: flex; overflow: hidden; width: max-content;\n      font-family: ${fontFamily}; font-size: ${fontSizeStr};\n      text-transform: ${textTransform}; user-select: none;\n      text-shadow: 0 var(--line-height-abs) 0 var(--text);\n    }\n    .${innerClassName} span {\n      display: block; -webkit-backface-visibility: hidden; backface-visibility: hidden;\n      white-space: pre; flex-shrink: 0;\n      font-family: inherit; font-weight: inherit; font-style: inherit;\n      font-size: inherit; letter-spacing: inherit;\n      line-height: ${rawLineHeight??1.2};\n      color: var(--text);\n    }\n  `;const wrapperStyle={display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:\"100%\",height:\"100%\",overflow:\"hidden\",padding:padding,boxSizing:\"border-box\"};const spanVariants={initial:{y:\"0%\"},hover:{y:yOffset}};const baseDuration=typeof transition?.duration===\"number\"?transition.duration:.5;// Convert stagger percentage (0-100) to a factor (0-1)\nconst staggerFactor=stagger/100;return /*#__PURE__*/_jsxs(\"div\",{style:wrapperStyle,onMouseEnter:()=>setIsHovered(true),onMouseLeave:()=>setIsHovered(false),children:[/*#__PURE__*/_jsx(Tag,{className:innerClassName,children:[...text].map((str,index)=>{const charIndex=reverse?text.length-1-index:index;// Apply staggerFactor to the delay calculation\nconst delay=text.length>0?baseDuration/text.length*charIndex*staggerFactor// Multiply by factor\n:0;const motionSpanStyle={display:\"block\",...font};return /*#__PURE__*/_jsx(motion.span,{variants:spanVariants,initial:\"initial\",animate:isHovered?\"hover\":\"initial\",transition:{...transition,delay:delay},style:motionSpanStyle,children:str===\" \"?\"\\xa0\":str},index);})}),/*#__PURE__*/_jsx(\"style\",{children:styles})]});}// --- Component Display Name ---\nRollingText.displayName=\"Rolling Text\";// --- Default Properties ---\nconst defaultFont={fontFamily:\"Inter\",fontWeight:\"400\",fontSize:\"16px\",fontStyle:\"normal\",letterSpacing:\"0px\",lineHeight:1.2};const defaultTransition={type:\"spring\",duration:.4,bounce:0};// --- Framer Property Controls ---\naddPropertyControls(RollingText,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Rolling Text\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultValue:defaultFont},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#808080\"},transition:{type:ControlType.Transition,title:\"Transition\",defaultValue:defaultTransition},// Added Stagger control\nstagger:{title:\"Stagger\",type:ControlType.Number,min:0,max:100,step:1,defaultValue:35,unit:\"%\"},padding:{title:\"Padding\",type:ControlType.Padding,defaultValue:\"0px\"},reverse:{type:ControlType.Boolean,title:\"Reverse\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},textTransform:{title:\"Transform\",type:ControlType.Enum,defaultValue:\"none\",options:[\"none\",\"uppercase\",\"lowercase\",\"capitalize\"],optionTitles:[\"None\",\"Uppercase\",\"Lowercase\",\"Capitalize\"]},tag:{type:ControlType.Enum,title:\"Tag\",options:[\"p\",\"span\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"],optionTitles:[\"p\",\"span\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"],defaultValue:\"p\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RollingText\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"50\",\"framerDisableUnlink\":\"\",\"framerIntrinsicWidth\":\"200\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RollingTextHover_Prod.map"],
  "mappings": "8GAA+F,IAAMA,EAAc,UAAgBC,EAAY,m2BAAy2BC,EAAqB,IAQ3/B,SAARC,EAA6BC,EAAM,CAAC,IAAMC,EAAcC,EAAiBF,EAAM,IAAIA,EAAM,MAAMA,EAAM,WAAW,EAAE,OAAoB,EAAK,MAAM,CAAC,cAAc,OAAO,MAAM,CAAC,QAAQ,OAAO,SAAS,OAAO,UAAU,OAAO,WAAW,SAAS,eAAe,SAAS,GAAGA,EAAM,KAAK,EAAE,wBAAwB,CAAC,OAAOC,CAAa,CAAC,CAAC,CAAE,CAACE,EAAoBJ,EAAY,CAAC,IAAI,CAAC,MAAM,MAAM,KAAKK,EAAY,OAAO,aAAaP,CAAW,EAAE,YAAY,CAAC,KAAKO,EAAY,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,aAAaN,EAAqB,OAAOE,GAAOK,EAAgBL,EAAM,GAAG,CAAC,EAAE,MAAM,CAAC,KAAKI,EAAY,MAAM,aAAaR,EAAc,YAAY,uEAAuE,CAAC,CAAC,EAC/sB,SAASS,EAAgBC,EAAI,CAAC,IAAMC,EAAiBD,EAAI,MAAM,yBAAyB,EAAE,MAAM,CAACC,GAAkBA,EAAiB,MAAMC,GAAOA,IAAQ,GAAG,CAAE,CAAC,SAASN,EAAiBI,EAAIG,EAAMb,EAAcc,EAAYZ,EAAqB,CAAC,IAAIa,EAAcL,EAAI,MAAM,YAAY,IAAI,CAAC,EAAMK,IAAeL,EAAIT,EAAYc,EAAcL,EAAI,MAAM,YAAY,IAAI,CAAC,GAAG,IAAMM,EAAMD,EAAc,MAAM,iBAAiB,IAAI,CAAC,EAAQE,EAAOF,EAAc,MAAM,kBAAkB,IAAI,CAAC,EAAQG,EAAQH,EAAc,MAAM,mBAAmB,IAAI,CAAC,GAAG,MAAM,GAAG,EAAQI,EAAaD,IAAU,CAAC,EAAQE,EAAcF,IAAU,CAAC,EAAKF,GAAOC,GAAQP,EAAIA,EAAI,QAAQ,kBAAkB,cAAc,EAAEA,EAAIA,EAAI,QAAQ,mBAAmB,eAAe,GAAQA,EAAIA,EAAI,QAAQ,OAAO,iCAAiC,EAAG,IAAIW,EAA2B,GAAM,OAAGX,EAAI,SAAS,QAAQ,GAAGA,EAAI,SAAS,UAAU,KAAGA,EAAIA,EAAI,QAAQ,2BAA2B,CAACE,EAAMU,EAAKC,IAAYA,IAAQ,QAAQA,IAAQ,cAAsBX,EAC7+BW,IAAQ,QAAe,IAAIF,EAA2B,GAAW,GAAGC,CAAI,KAAKT,CAAK,IAAK,GAAOQ,IAA4BX,EAAIA,EAAI,QAAQ,8CAA8CE,GAAO,IAAIA,EAAM,MAAM,CAAC,CAAC,UAAUC,CAAK,IAAI,GAAGH,EAAIA,EAAI,QAAQ,0BAA0B,CAACE,EAAMW,IAAYA,IAAQ,IAAYX,EAAa,iBAAiBE,CAAW,GAAK,EAASJ,CAAI,CCTtX,IAAMc,EAAO,IAAW,uCAAuC,QAAQ,QAAQC,GAAG,CAAC,IAAMC,EAAE,KAAK,OAAO,EAAE,GAAG,EAA0B,OAAhBD,IAAI,IAAIC,EAAEA,EAAE,EAAE,GAAW,SAAS,EAAE,CAAE,CAAC,EAK3I,SAARC,EAA6B,CAAC,KAAAC,EAAK,WAAAC,EAAW,QAAAC,EAAQ,QAAAC,EAAQ,KAAAC,EAAK,MAAAC,EAAM,cAAAC,EAAc,IAAAC,EAAI,QAAAC,CAAO,EAAE,CAAC,GAAK,CAACC,EAAUC,CAAY,EAAEC,EAAS,EAAK,EAAQC,EAAe,sBAAsBhB,EAAO,CAAC,GAASiB,EAAIN,EAAUO,EAAYV,GAAM,UAAU,OAAaW,EAAiBX,GAAM,eAAe,MAAYY,EAAcZ,GAAM,WAAiBa,EAAWb,GAAM,YAAY,QAAcc,EAAY,SAASJ,EAAY,EAAE,GAAG,GAAOK,EAAqB,GAAG,OAAOH,GAAgB,SAAUG,EAAqBD,EAAYF,UAAuB,OAAOA,GAAgB,UAAUA,EAAc,SAAS,IAAI,EAAE,CAAC,IAAMI,EAAQ,WAAWJ,CAAa,GAAG,IAAIG,EAAqBD,EAAYE,CAAQ,SAAS,OAAOJ,GAAgB,SAAS,CAAC,IAAMK,EAAQ,WAAWL,CAAa,EAAEG,EAAqB,MAAME,CAAO,EAAEL,EAAc,GAAGK,CAAO,IAAK,MAAMF,EAAqBD,EAAY,IAAK,IAAMI,EAAsB,OAAOH,GAAuB,SAAS,GAAGA,CAAoB,KAAKA,EAA2BI,EAAQ,IAAID,CAAqB,GAASE,EAAO;AAAA,OACxiCZ,CAAc;AAAA,qBACAE,CAAW;AAAA,gBAChBT,CAAK;AAAA,2BACMiB,CAAqB;AAAA;AAAA;AAAA,qBAG3BL,CAAU,gBAAgBH,CAAW;AAAA,wBAClCR,CAAa;AAAA;AAAA;AAAA,OAG9BM,CAAc;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKAI,GAAe,GAAG;AAAA;AAAA;AAAA,IAG7BS,EAAa,CAAC,QAAQ,OAAO,WAAW,SAAS,eAAe,SAAS,MAAM,OAAO,OAAO,OAAO,SAAS,SAAS,QAAQjB,EAAQ,UAAU,YAAY,EAAQkB,EAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAEH,CAAO,CAAC,EAAQI,EAAa,OAAO1B,GAAY,UAAW,SAASA,EAAW,SAAS,GACxS2B,EAAc1B,EAAQ,IAAI,OAAoB2B,EAAM,MAAM,CAAC,MAAMJ,EAAa,aAAa,IAAIf,EAAa,EAAI,EAAE,aAAa,IAAIA,EAAa,EAAK,EAAE,SAAS,CAAc,EAAKG,EAAI,CAAC,UAAUD,EAAe,SAAS,CAAC,GAAGZ,CAAI,EAAE,IAAI,CAAC8B,EAAIC,IAAQ,CAAC,IAAMC,EAAU7B,EAAQH,EAAK,OAAO,EAAE+B,EAAMA,EAClSE,EAAMjC,EAAK,OAAO,EAAE2B,EAAa3B,EAAK,OAAOgC,EAAUJ,EAC5D,EAAQM,EAAgB,CAAC,QAAQ,QAAQ,GAAG9B,CAAI,EAAE,OAAoB,EAAK+B,EAAO,KAAK,CAAC,SAAST,EAAa,QAAQ,UAAU,QAAQjB,EAAU,QAAQ,UAAU,WAAW,CAAC,GAAGR,EAAW,MAAMgC,CAAK,EAAE,MAAMC,EAAgB,SAASJ,IAAM,IAAI,OAAOA,CAAG,EAAEC,CAAK,CAAE,CAAC,CAAC,CAAC,EAAe,EAAK,QAAQ,CAAC,SAASP,CAAM,CAAC,CAAC,CAAC,CAAC,CAAE,CAC7TzB,EAAY,YAAY,eACxB,IAAMqC,EAAY,CAAC,WAAW,QAAQ,WAAW,MAAM,SAAS,OAAO,UAAU,SAAS,cAAc,MAAM,WAAW,GAAG,EAAQC,EAAkB,CAAC,KAAK,SAAS,SAAS,GAAG,OAAO,CAAC,EACzLC,EAAoBvC,EAAY,CAAC,KAAK,CAAC,KAAKwC,EAAY,OAAO,MAAM,OAAO,aAAa,cAAc,EAAE,KAAK,CAAC,KAAKA,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,aAAaH,CAAW,EAAE,MAAM,CAAC,KAAKG,EAAY,MAAM,MAAM,QAAQ,aAAa,SAAS,EAAE,WAAW,CAAC,KAAKA,EAAY,WAAW,MAAM,aAAa,aAAaF,CAAiB,EAC7V,QAAQ,CAAC,MAAM,UAAU,KAAKE,EAAY,OAAO,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,aAAa,GAAG,KAAK,GAAG,EAAE,QAAQ,CAAC,MAAM,UAAU,KAAKA,EAAY,QAAQ,aAAa,KAAK,EAAE,QAAQ,CAAC,KAAKA,EAAY,QAAQ,MAAM,UAAU,aAAa,GAAM,aAAa,MAAM,cAAc,IAAI,EAAE,cAAc,CAAC,MAAM,YAAY,KAAKA,EAAY,KAAK,aAAa,OAAO,QAAQ,CAAC,OAAO,YAAY,YAAY,YAAY,EAAE,aAAa,CAAC,OAAO,YAAY,YAAY,YAAY,CAAC,EAAE,IAAI,CAAC,KAAKA,EAAY,KAAK,MAAM,MAAM,QAAQ,CAAC,IAAI,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,aAAa,CAAC,IAAI,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,aAAa,IAAI,YAAY,oEAAoE,CAAC,CAAC",
  "names": ["DEFAULT_COLOR", "DEFAULT_SVG", "DEFAULT_STROKE_WIDTH", "FramerIcons", "props", "customizedSvg", "getCustomizedSVG", "addPropertyControls", "ControlType", "hideStrokeWidth", "svg", "strokeWidthMatch", "match", "color", "strokeWidth", "svgAttributes", "width", "height", "viewBox", "viewBoxWidth", "viewBoxHeight", "hasElementsWithValidColors", "attr", "value", "uuidv4", "c", "r", "RollingText", "text", "transition", "stagger", "reverse", "font", "color", "textTransform", "tag", "padding", "isHovered", "setIsHovered", "ye", "innerClassName", "Tag", "fontSizeStr", "letterSpacingStr", "rawLineHeight", "fontFamily", "fontSizeNum", "absoluteLineHeightPx", "emValue", "pxValue", "absoluteLineHeightStr", "yOffset", "styles", "wrapperStyle", "spanVariants", "baseDuration", "staggerFactor", "u", "str", "index", "charIndex", "delay", "motionSpanStyle", "motion", "defaultFont", "defaultTransition", "addPropertyControls", "ControlType"]
}
