{"version":3,"file":"TextReveal.DOAGT8kf.mjs","names":["useRef","useState","useMemo"],"sources":["https:/framerusercontent.com/modules/vYJl9sIpB7KdPpal1YTt/do2aCgWlC94F6Ukj0RIk/TextReveal.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect,useState,useMemo}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{motion}from\"framer-motion\";/**\n * TextReveal - Mixed typography hero component\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function TextReveal(props){const{text=\"Creating *digital experiences* that [img] connect people. (Portfolio 2024)\",images=[],font={fontSize:48,lineHeight:1.2,letterSpacing:\"-0.02em\",variant:\"Regular\",textAlign:\"left\"},accentFont={fontSize:48,lineHeight:1.2,letterSpacing:\"-0.02em\",variant:\"Italic\",textAlign:\"left\"},color=\"#000000\",accentColor=\"#000000\",labelBg=\"#000000\",labelColor=\"#FFFFFF\",labelSize=.4,fitText=true,minFontSize=24,maxFontSize=96,imageScale=1.2,imageRadius=8,effectYOffset=20,style={}}=props;const containerRef=useRef(null);const[fontSize,setFontSize]=useState(parseInt(font?.fontSize)||48);const accentScale=useMemo(()=>{const mainSize=parseInt(font?.fontSize)||48;const accentSize=parseInt(accentFont?.fontSize)||48;if(!mainSize)return 1;return accentSize/mainSize;},[font?.fontSize,accentFont?.fontSize]);// Parse content\nconst segments=useMemo(()=>{// Split by *emphasis*, (label), or [img]\nconst regex=/(\\*[^*]+\\*|\\([^)]+\\)|(?:\\[img\\]))/g;const parts=(text||\"\").split(regex);let imgIndex=0;return parts.map(part=>{if(!part)return null;if(part.startsWith(\"*\")&&part.endsWith(\"*\")){return{type:\"emphasis\",content:part.slice(1,-1)};}if(part.startsWith(\"(\")&&part.endsWith(\")\")){return{type:\"label\",content:part.slice(1,-1)};}if(part===\"[img]\"){const img=images.length>0?images[imgIndex%images.length]:null;imgIndex++;return{type:\"image\",content:img};}return{type:\"text\",content:part};}).filter(Boolean);},[text,images]);// Split into words for animation\nconst words=useMemo(()=>{const allWords=[];segments.forEach(segment=>{if(segment.type===\"text\"||segment.type===\"emphasis\"){const parts=segment.content.split(/(\\s+)/);parts.forEach(part=>{if(!part)return;if(part.match(/^\\s+$/)){allWords.push({type:\"space\",content:part});}else{allWords.push({...segment,content:part});}});}else{allWords.push(segment);}});return allWords;},[segments]);// Responsive font sizing\nuseEffect(()=>{if(!fitText){setFontSize(parseInt(font?.fontSize)||48);return;}const handleResize=()=>{if(!containerRef.current)return;const containerWidth=containerRef.current.offsetWidth;// Base calculation on a standard desktop width (e.g. 1200px)\nconst baseWidth=1200;const baseSize=parseInt(font?.fontSize)||48;const scaled=baseSize*(containerWidth/baseWidth);setFontSize(Math.max(minFontSize,Math.min(maxFontSize,scaled)));};handleResize();const observer=new ResizeObserver(handleResize);if(containerRef.current)observer.observe(containerRef.current);return()=>observer.disconnect();},[fitText,font?.fontSize,minFontSize,maxFontSize]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,display:\"flex\",flexDirection:\"column\",width:style.width||\"100%\",height:\"auto\",position:\"relative\"},children:/*#__PURE__*/_jsx(\"p\",{style:{...font,color:color,fontSize:fontSize,margin:0,padding:0,width:\"100%\",overflowWrap:\"break-word\",fontFamily:font.fontFamily,fontWeight:font.fontWeight,fontStyle:font.fontStyle},children:words.map((word,i)=>{if(word.type===\"space\"){return /*#__PURE__*/_jsx(\"span\",{children:word.content},i);}const isImage=word.type===\"image\";const isLabel=word.type===\"label\";const isEmphasis=word.type===\"emphasis\";const animProps={initial:{opacity:0,y:effectYOffset,filter:\"blur(8px)\"},whileInView:{opacity:1,y:0,filter:\"blur(0px)\"},viewport:{margin:\"0px 0px -20% 0px\",once:false},transition:{duration:.8,ease:\"easeOut\"},style:{display:\"inline-block\"}};if(isEmphasis){return /*#__PURE__*/_jsx(motion.span,{...animProps,style:{...animProps.style,...accentFont,fontSize:`${accentScale}em`,color:accentColor},children:word.content},i);}if(isLabel){return /*#__PURE__*/_jsx(motion.span,{...animProps,style:{...animProps.style,display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",verticalAlign:\"middle\",backgroundColor:labelBg,color:labelColor,borderRadius:999,padding:\"0.1em 0.6em\",fontSize:`${labelSize}em`,fontWeight:600,textTransform:\"uppercase\",letterSpacing:\"0.05em\",margin:\"0 0.2em\",position:\"relative\",top:\"-0.15em\",fontFamily:font.fontFamily,lineHeight:1},children:word.content},i);}if(isImage){const src=typeof word.content===\"string\"?word.content:word.content?.src;if(!src)return null;return /*#__PURE__*/_jsx(motion.span,{...animProps,style:{...animProps.style,verticalAlign:\"baseline\",height:\"0.8em\",width:\"auto\",margin:\"0 0.15em\",position:\"relative\"},children:/*#__PURE__*/_jsx(\"img\",{src:src,alt:\"\",style:{display:\"block\",height:\"100%\",width:\"auto\",borderRadius:imageRadius,objectFit:\"cover\",transform:`scale(${imageScale})`,transformOrigin:\"center bottom\"}})},i);}return /*#__PURE__*/_jsx(motion.span,{...animProps,children:word.content},i);})})});}addPropertyControls(TextReveal,{text:{type:ControlType.String,title:\"Content\",defaultValue:\"Creating *digital experiences* that [img] connect people. (Portfolio 2024)\",displayTextArea:true,description:\"Use *text* for emphasis, [img] for images, (text) for labels\"},images:{type:ControlType.Array,title:\"Images\",control:{type:ControlType.ResponsiveImage},defaultValue:[{src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\"},{src:\"https://framerusercontent.com/images/aNsAT3jCvt4zglbWCUoFe33Q.jpg\"}]},font:{type:ControlType.Font,title:\"Main Font\",controls:\"extended\",defaultValue:{fontSize:64,lineHeight:1.1,letterSpacing:\"-0.03em\",variant:\"Regular\",fontFamily:\"Inter\"}},accentFont:{type:ControlType.Font,title:\"Accent Font\",controls:\"extended\",defaultValue:{fontSize:64,lineHeight:1.1,letterSpacing:\"-0.02em\",variant:\"Italic\",fontFamily:\"Playfair Display\"}},color:{type:ControlType.Color,title:\"Main Color\",defaultValue:\"#000000\"},accentColor:{type:ControlType.Color,title:\"Accent Color\",defaultValue:\"#000000\"},labelBg:{type:ControlType.Color,title:\"Label Bg\",defaultValue:\"#000000\"},labelColor:{type:ControlType.Color,title:\"Label Text\",defaultValue:\"#FFFFFF\"},labelSize:{type:ControlType.Number,title:\"Label Size\",defaultValue:.4,min:.1,max:1.5,step:.05,displayStepper:true},fitText:{type:ControlType.Boolean,title:\"Responsive\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},minFontSize:{type:ControlType.Number,title:\"Min Size\",defaultValue:24,min:12,max:100,hidden:({fitText})=>!fitText},maxFontSize:{type:ControlType.Number,title:\"Max Size\",defaultValue:96,min:24,max:200,hidden:({fitText})=>!fitText},imageScale:{type:ControlType.Number,title:\"Img Scale\",defaultValue:1.2,min:.5,max:2,step:.1},imageRadius:{type:ControlType.Number,title:\"Img Radius\",defaultValue:8,min:0,max:50},effectYOffset:{type:ControlType.Number,title:\"Effect Y\",defaultValue:20,min:-200,max:200,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextReveal\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextReveal.map"],"mappings":"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"}